/* Help bot: floating button, chat panel and guided tour. Palette: black, #217cff, white only. */ .sup-fab { position: fixed; right: 20px; bottom: 20px; z-index: 55; width: 52px; height: 52px; border-radius: 50%; border: 1px solid var(--blue-60); background: var(--blue); color: var(--white); font-size: 26px; line-height: 1; display: grid; place-items: center; cursor: pointer; box-shadow: var(--glow-md); transition: transform 0.15s ease; } .sup-fab:hover { transform: scale(1.06); } .sup-fab:focus-visible { outline: 2px solid var(--white); outline-offset: 3px; } .sup-bubble { position: fixed; right: 82px; bottom: 30px; z-index: 55; display: flex; align-items: center; gap: 4px; padding: 6px 8px 6px 14px; border-radius: 999px; background: var(--black); border: 1px solid var(--blue-35); box-shadow: var(--glow-sm); animation: sup-bob 3s ease-in-out infinite; } .sup-bubble-text { background: none; border: 0; color: var(--text); font: inherit; font-size: 13px; cursor: pointer; } .sup-bubble-x { background: none; border: 0; color: var(--text-3); font-size: 18px; line-height: 1; cursor: pointer; padding: 0 4px; } @keyframes sup-bob { 50% { transform: translateY(-4px); } } .sup-panel { position: fixed; right: 20px; bottom: 84px; z-index: 55; width: 380px; max-width: calc(100vw - 32px); height: min(560px, calc(100vh - 110px)); display: flex; flex-direction: column; background: var(--black); border: 1px solid var(--blue-35); border-radius: var(--radius); box-shadow: var(--glow-lg), 0 12px 40px rgba(0, 0, 0, 0.6); overflow: hidden; } .sup-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 12px 14px; border-bottom: 1px solid var(--line); } .sup-head > div:first-child { display: grid; gap: 2px; } .sup-head-actions { display: flex; align-items: center; gap: 10px; } .sup-body { flex: 1; overflow-y: auto; padding: 14px; display: grid; gap: 10px; align-content: start; } .sup-empty { display: grid; gap: 10px; padding: 16px; justify-items: start; } .sup-body .sup-empty { padding: 4px 0; } .sup-starters { display: grid; gap: 6px; width: 100%; } .sup-starter { text-align: left; padding: 8px 10px; border-radius: var(--radius-sm); border: 1px solid var(--line-strong); background: var(--surface); color: var(--text); font: inherit; font-size: 13px; cursor: pointer; } .sup-starter:hover { border-color: var(--blue-60); background: var(--blue-10); } .sup-msg { max-width: 92%; font-size: 14px; line-height: 1.5; } .sup-msg.user { justify-self: end; background: var(--blue-20); border: 1px solid var(--blue-35); border-radius: 12px 12px 2px 12px; padding: 8px 12px; } .sup-msg.user p { margin: 0; overflow-wrap: anywhere; } .sup-msg.assistant { justify-self: start; background: var(--surface-2); border: 1px solid var(--line); border-radius: 12px 12px 12px 2px; padding: 8px 12px; } .sup-guide, .sup-escalate { margin-top: 8px; display: block; } .sup-form { display: grid; gap: 8px; margin-top: 8px; } .sup-form label { display: grid; gap: 4px; font-size: 12px; color: var(--text-2); } .sup-note { margin: 8px 0 0; font-size: 12px; } .sup-note.ok { color: var(--white); } .sup-note.err { color: var(--white); border-left: 2px solid var(--blue); padding-left: 8px; } .sup-ask { display: flex; gap: 8px; padding: 10px 12px; border-top: 1px solid var(--line); } .sup-ask .input { flex: 1; min-width: 0; } .sup-typing { display: inline-flex; gap: 4px; padding: 4px 0; } .sup-typing i { width: 6px; height: 6px; border-radius: 50%; background: var(--blue); animation: sup-dot 0.9s infinite ease-in-out; } .sup-typing i:nth-child(2) { animation-delay: 0.15s; } .sup-typing i:nth-child(3) { animation-delay: 0.3s; } @keyframes sup-dot { 0%, 80%, 100% { opacity: 0.25; } 40% { opacity: 1; } } @media (max-width: 520px) { .sup-panel { right: 8px; left: 8px; bottom: 76px; width: auto; max-width: none; } .sup-bubble { display: none; } } @media (prefers-reduced-motion: reduce) { .sup-bubble, .sup-typing i { animation: none; } .sup-fab { transition: none; } }