:root{--bg: #0f0f23;--bg-surface: #1a1a2e;--bg-bubble-user: #16213e;--bg-bubble-ai: rgba(255,255,255,.05);--text: #e2e8f0;--text-muted: #94a3b8;--accent: #7c3aed;--accent-glow: rgba(124,58,237,.35);--border: rgba(255,255,255,.06);--danger: #ef4444;--success: #22c55e;--radius: 1rem;--radius-sm: .5rem;--safe-bottom: env(safe-area-inset-bottom, 0px);color-scheme:dark}@media(prefers-color-scheme:light){:root{--bg: #f8fafc;--bg-surface: #ffffff;--bg-bubble-user: #dbeafe;--bg-bubble-ai: #f1f5f9;--text: #1e293b;--text-muted: #64748b;--border: rgba(0,0,0,.08);color-scheme:light}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;height:100dvh;max-width:48rem;margin:0 auto}.header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--border);background:var(--bg-surface);flex-shrink:0}.header__logo{font-size:1.125rem;font-weight:700;letter-spacing:-.02em;background:linear-gradient(135deg,var(--accent),#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.header__nav{display:flex;gap:.25rem;margin-left:auto}.nav-btn{padding:.375rem .75rem;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:.8125rem;font-weight:500;cursor:pointer;transition:all .15s}.nav-btn:hover{color:var(--text);background:#ffffff0d}.nav-btn--active{color:var(--text);background:#ffffff14}.header__auth{width:2rem;height:2rem;border-radius:50%;border:1.5px solid var(--text-muted);background:transparent;color:var(--text-muted);font-size:.75rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .15s}.header__auth:hover{border-color:var(--accent)}.header__auth--authed{border-color:var(--success);background:var(--success);color:#fff;font-weight:600}.page{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.page[hidden]{display:none}.messages{display:flex;flex-direction:column;gap:.5rem;padding:1rem;min-height:100%;position:relative}.messages:before{content:"";flex:1}.bubble{max-width:85%;padding:.625rem .875rem;border-radius:var(--radius);line-height:1.55;word-wrap:break-word;font-size:.9375rem;animation:bubble-in .2s ease-out}.bubble--user{align-self:flex-end;background:var(--bg-bubble-user);border-bottom-right-radius:.25rem}.bubble--ai{align-self:flex-start;background:var(--bg-bubble-ai);border-bottom-left-radius:.25rem}.bubble--error{align-self:flex-start;background:#ef44441f;color:var(--danger);font-size:.8125rem}.bubble--system{align-self:center;background:transparent;color:var(--text-muted);font-size:.8125rem;text-align:center;max-width:90%}@keyframes bubble-in{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}.welcome{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:2rem 1.5rem;pointer-events:none;animation:welcome-in .5s cubic-bezier(.16,1,.3,1) both}.welcome__inner{display:flex;flex-direction:column;align-items:center;gap:.75rem;text-align:center;pointer-events:auto}.welcome__title{font-size:clamp(2.5rem,10vw,4rem);font-weight:800;letter-spacing:-.04em;background:linear-gradient(135deg,var(--accent) 0%,#a78bfa 50%,#c4b5fd 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1;margin-bottom:.25rem}.welcome__subtitle{color:var(--text-muted);font-size:1rem;font-weight:400;margin-bottom:1rem}.welcome__chips{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;max-width:28rem}.welcome__chip{padding:.5rem 1rem;border-radius:2rem;border:1px solid var(--border);background:var(--bg-surface);color:var(--text);font-size:.875rem;cursor:pointer;transition:all .15s;white-space:nowrap}.welcome__chip:hover{border-color:var(--accent);background:var(--accent-glow);color:#c4b5fd}.welcome__chip:active{transform:scale(.96)}@keyframes welcome-in{0%{opacity:0;transform:translateY(1.5rem)}to{opacity:1;transform:translateY(0)}}.welcome--hiding{animation:welcome-out .25s ease-in both;pointer-events:none}@keyframes welcome-out{to{opacity:0;transform:scale(.97)}}.bubble--skeleton{display:flex;flex-direction:column;gap:.5rem;padding:.875rem 1rem;min-width:12rem}.skeleton-line{height:.875rem;border-radius:.5rem;background:linear-gradient(90deg,#ffffff0a,#ffffff1a,#ffffff0a 80%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}.skeleton-line--lg{width:80%}.skeleton-line--md{width:60%}.skeleton-line--sm{width:40%}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.bubble__tools{display:flex;flex-wrap:wrap;gap:.375rem;margin-bottom:.375rem;empty-cells:hide}.bubble__tools:empty{display:none}.tool-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem .2rem .45rem;border-radius:1rem;font-size:.7rem;font-weight:600;letter-spacing:.02em;transition:background .2s,color .2s;animation:badge-pop .18s cubic-bezier(.34,1.56,.64,1) both}@keyframes badge-pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.tool-badge--pending{background:#94a3b81f;color:var(--text-muted)}.tool-badge--pending .tool-badge__icon{display:inline-block;animation:spin 1s linear infinite}.tool-badge--ok{background:#22c55e26;color:#4ade80}.tool-badge--error{background:#ef444426;color:#f87171}.tool-badge__icon{font-size:.75rem;line-height:1}.tool-badge__name{font-family:ui-monospace,Cascadia Code,Fira Code,monospace;font-size:.7rem}@keyframes spin{to{transform:rotate(360deg)}}.typing{display:flex;gap:.3rem;padding:.75rem 1rem}.typing span{width:.4rem;height:.4rem;border-radius:50%;background:var(--text-muted);animation:typing-bounce 1.2s ease-in-out infinite}.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}@keyframes typing-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-.4rem)}}.cursor:after{content:"█";animation:cursor-blink .8s step-end infinite;color:var(--accent);margin-left:1px}@keyframes cursor-blink{50%{opacity:0}}.input-bar{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;padding-bottom:calc(.625rem + var(--safe-bottom));background:var(--bg-surface);border-top:1px solid var(--border);flex-shrink:0}.input-bar input{flex:1;padding:.625rem 1rem;border-radius:1.5rem;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:1rem;font-family:inherit;outline:none;transition:border-color .15s}.input-bar input:focus{border-color:var(--accent)}.input-bar input::placeholder{color:var(--text-muted)}.btn-icon{width:2.5rem;height:2.5rem;border-radius:50%;border:none;background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}.btn-icon svg{width:1.25rem;height:1.25rem}.btn-icon:hover{color:var(--text);background:#ffffff0d}.btn-icon:disabled{opacity:.3;cursor:default}.btn-send:not(:disabled){color:var(--accent)}.btn-send:not(:disabled):hover{background:var(--accent-glow)}.btn-mic--listening{color:var(--danger);background:#ef444426;animation:mic-pulse 1.5s ease-in-out infinite}.btn-mic--processing{color:var(--accent);animation:mic-spin .8s linear infinite}@keyframes mic-pulse{0%,to{box-shadow:0 0 #ef44444d}50%{box-shadow:0 0 0 .75rem #ef444400}}@keyframes mic-spin{to{transform:rotate(360deg)}}.app--listening{box-shadow:inset 0 0 30px var(--accent-glow)}.dialog{border:none;border-radius:var(--radius);background:var(--bg-surface);color:var(--text);padding:1.5rem;max-width:min(28rem,90vw);width:100%;box-shadow:0 25px 50px #00000080}.dialog::backdrop{background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog h3{font-size:1rem;margin-bottom:.75rem}.dialog p{color:var(--text-muted);font-size:.875rem;margin-bottom:1rem;line-height:1.6}.dialog__actions{display:flex;gap:.5rem;justify-content:flex-end}.dialog__btn{padding:.5rem 1.25rem;border-radius:var(--radius-sm);border:none;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s}.dialog__btn--cancel{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.dialog__btn--confirm{background:var(--accent);color:#fff}.dialog__btn--danger{background:var(--danger);color:#fff}.dialog--auth{text-align:center}.dialog--auth .auth-name{width:100%;padding:.75rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:1rem;margin-bottom:1rem;text-align:center;outline:none}.dialog--auth .auth-name:focus{border-color:var(--accent)}.confirm-preview{background:var(--bg);border-radius:var(--radius-sm);padding:.75rem;margin-bottom:1rem;font-size:.8125rem;line-height:1.6}.confirm-preview dt{color:var(--text-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.confirm-preview dd{margin-bottom:.5rem}.admin{padding:1rem;display:flex;flex-direction:column;gap:1.5rem}.admin-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.admin-card h3{font-size:.8125rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.75rem}.admin-table{width:100%;font-size:.875rem;border-collapse:collapse}.admin-table th{text-align:left;padding:.375rem .5rem;color:var(--text-muted);font-weight:500;border-bottom:1px solid var(--border)}.admin-table td{padding:.375rem .5rem;border-bottom:1px solid var(--border)}.admin-kv{display:grid;grid-template-columns:auto 1fr;gap:.25rem .75rem;font-size:.875rem}.admin-kv dt{color:var(--text-muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.badge{display:inline-block;padding:.125rem .5rem;border-radius:1rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.badge--admin{background:#7c3aed26;color:#a78bfa}.badge--adult{background:#22c55e26;color:#4ade80}.badge--kid{background:#fbbf2426;color:#fbbf24}.badge--teen{background:#38bdf826;color:#38bdf8}.badge--guest{background:#94a3b826;color:var(--text-muted)}
