:root{--bg: #050508;--ink: #f3eef8;--muted: #9a8fb0;--accent: #a855f7;--accent-deep: #6b21a8;--glow: rgba(168, 85, 247, .5);--panel: rgba(12, 8, 18, .78);--line: rgba(243, 238, 248, .08);--font: "Instrument Sans", system-ui, sans-serif;--display: "Syne", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;height:100%}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}.app{position:relative;min-height:100%;display:grid;grid-template-rows:auto 1fr auto;padding:1.25rem 1.25rem 1rem;overflow:hidden}.atmosphere{pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 70% 55% at 50% 18%,rgba(168,85,247,.22),transparent 55%),radial-gradient(ellipse 50% 40% at 85% 90%,rgba(76,29,149,.35),transparent 60%),radial-gradient(ellipse 40% 30% at 8% 80%,rgba(46,16,80,.45),transparent 55%),linear-gradient(180deg,#0c0614,#050508 55%,#030305);z-index:0}.brand,.stage,.composer{position:relative;z-index:1}.brand{text-align:center;padding:.5rem 0 .25rem}.brand h1{margin:0;font-family:var(--display);font-weight:700;font-size:clamp(2.4rem,6vw,3.6rem);letter-spacing:-.03em;background:linear-gradient(180deg,#f8f0ff 0%,var(--accent) 120%);-webkit-background-clip:text;background-clip:text;color:transparent}.brand-tag{margin:.45rem 0 0;color:var(--accent);font-size:.85rem;font-weight:600;letter-spacing:.04em}.brand p{margin:.35rem 0 0;color:var(--muted);font-size:.95rem}.stage{display:grid;grid-template-rows:auto 1fr;align-items:start;justify-items:center;gap:1rem;min-height:0;padding:.5rem 0}.orb-wrap{position:relative;width:min(220px,42vw);height:min(220px,42vw);display:grid;place-items:center}.orb-glow{position:absolute;top:-18%;right:-18%;bottom:-18%;left:-18%;border-radius:50%;background:radial-gradient(circle,var(--glow),transparent 68%);filter:blur(12px);animation:breathe 4.5s ease-in-out infinite}.orb-core{position:relative;width:72%;height:72%}.orb-sphere{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:radial-gradient(circle at 35% 28%,#e9d5ff,#a855f7 28%,#6b21a8 62%,#1a0a2e);box-shadow:0 0 40px #a855f766,inset 0 -20px 40px #00000073,inset 0 12px 24px #fff3;animation:breathe 4.5s ease-in-out infinite}.orb-shine{position:absolute;top:14%;left:22%;width:28%;height:18%;border-radius:50%;background:#fff6;filter:blur(4px);transform:rotate(-18deg)}.orb-ring{position:absolute;top:-12%;right:-12%;bottom:-12%;left:-12%;border-radius:50%;border:1px solid rgba(168,85,247,.3);animation:spin 18s linear infinite}.orb-ring-2{top:-22%;right:-22%;bottom:-22%;left:-22%;border-color:#a855f724;animation-duration:28s;animation-direction:reverse}.orb-listening .orb-glow{animation:listenPulse 1.4s ease-in-out infinite;background:radial-gradient(circle,rgba(168,85,247,.75),transparent 70%)}.orb-listening .orb-sphere{box-shadow:0 0 60px #a855f799,inset 0 -20px 40px #00000073,inset 0 12px 24px #fff3}.orb-thinking .orb-sphere{animation:shimmer 1.2s ease-in-out infinite}.orb-speaking .orb-glow{animation:speakWave .9s ease-in-out infinite}.orb-speaking .orb-ring{animation-duration:6s;border-color:#a855f799}@keyframes breathe{0%,to{transform:scale(1);opacity:.9}50%{transform:scale(1.04);opacity:1}}@keyframes listenPulse{0%,to{transform:scale(1);opacity:.7}50%{transform:scale(1.12);opacity:1}}@keyframes shimmer{0%,to{filter:brightness(1)}50%{filter:brightness(1.25)}}@keyframes speakWave{0%,to{transform:scale(1);opacity:.75}50%{transform:scale(1.18);opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}.chat-log{width:min(640px,100%);max-height:min(38vh,360px);overflow-y:auto;display:flex;flex-direction:column;gap:.65rem;padding:.25rem .35rem .75rem;scrollbar-width:thin;scrollbar-color:rgba(168,85,247,.35) transparent}.chat-empty{text-align:center;color:var(--muted);font-size:.9rem;margin:.5rem 0 0}.bubble{max-width:92%;padding:.75rem 1rem;border-radius:16px;line-height:1.45;font-size:.95rem;animation:fadeUp .35s ease}.bubble p{margin:0;white-space:pre-wrap}.bubble-user{align-self:flex-end;background:#a855f724;border:1px solid rgba(168,85,247,.28)}.bubble-assistant{align-self:flex-start;background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.bubble-voice-short{border-color:#a855f766}.bubble-tag{display:inline-block;font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:.35rem}.bubble-pending{width:fit-content;padding:.85rem 1.1rem}.dots{display:inline-flex;gap:.3rem}.dots i{width:6px;height:6px;border-radius:50%;background:var(--accent);display:block;animation:bounce 1s infinite ease-in-out}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-4px);opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.composer{width:min(640px,100%);margin:0 auto;padding-bottom:env(safe-area-inset-bottom,0)}.composer-row{display:flex;gap:.6rem;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:.4rem .45rem .4rem .4rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.composer input{flex:1;border:none;background:transparent;color:var(--ink);font-family:var(--font);font-size:1rem;outline:none;padding:.55rem .35rem}.composer input::placeholder{color:var(--muted)}.send,.mic{border:none;cursor:pointer;font-family:var(--font)}.send{background:var(--accent);color:#12041f;font-weight:600;border-radius:999px;padding:.65rem 1.1rem}.send:disabled{opacity:.45;cursor:not-allowed}.mic{width:44px;height:44px;border-radius:50%;background:#f3eef80f;display:grid;place-items:center;flex-shrink:0}.mic-icon{width:14px;height:20px;border-radius:8px;background:var(--muted);position:relative}.mic-icon:after{content:"";position:absolute;left:50%;bottom:-6px;width:12px;height:6px;border:2px solid var(--muted);border-top:none;border-radius:0 0 10px 10px;transform:translate(-50%)}.mic-on{background:#a855f740;box-shadow:0 0 0 3px #a855f733}.mic-on .mic-icon,.mic-on .mic-icon:after{background:var(--accent);border-color:var(--accent)}.hint{text-align:center;color:var(--muted);font-size:.75rem;margin:.55rem 0 0}.error-banner{color:#ffb4a2;background:#e07a5f1f;border:1px solid rgba(224,122,95,.25);border-radius:10px;padding:.5rem .75rem;font-size:.85rem;margin:0 0 .55rem}@media (max-width: 560px){.brand h1{font-size:2.2rem}.chat-log{max-height:34vh}.send{padding-inline:.85rem}}html,body{margin:0}
