.nova-stage{position:relative;display:flex;align-items:center;justify-content:center}.nova-stage svg{width:100%;height:100%;overflow:visible}.edge{filter:drop-shadow(0 0 5px #a060ff)}.edge-soft{filter:drop-shadow(0 0 3px #a060ff)}.brow{filter:drop-shadow(0 0 5px #c98bff)}.led{fill:#ffb43a}.eye{filter:drop-shadow(0 0 4px #ff9e1f)}.eyes{transform-box:fill-box;transform-origin:center}.nova-body{transform-box:fill-box;transform-origin:center;animation:nv-bob 4.2s ease-in-out infinite}#nv-aurashape{animation:nv-glow 3.4s ease-in-out infinite}.work-orbit{transform-box:fill-box;transform-origin:center;animation:nv-spin 7s linear infinite;opacity:0;transition:opacity .35s}.listen-rings,.think-dots,.wait-badge{opacity:0;transition:opacity .35s}.wait-badge{transform-box:fill-box;transform-origin:center}@keyframes nv-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}@keyframes nv-glow{0%,to{opacity:.4}50%{opacity:.82}}@keyframes nv-blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.08)}}@keyframes nv-scan{0%,to{transform:translate(-6px)}50%{transform:translate(6px)}}@keyframes nv-lookdown{0%,to{transform:translateY(0)}40%,70%{transform:translateY(5px)}}@keyframes nv-attend{0%,to{transform:translateY(0)}30%{transform:translateY(-7px)}45%{transform:translateY(0)}}@keyframes nv-ringout{0%{transform:scale(.5);opacity:.9}to{transform:scale(1.9);opacity:0}}@keyframes nv-dotseq{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-4px)}}@keyframes nv-spin{to{transform:rotate(360deg)}}@keyframes nv-badge{0%,to{transform:scale(1);opacity:.85}50%{transform:scale(1.18);opacity:1}}@keyframes nv-wave{0%,to{opacity:.32}50%{opacity:1}}@keyframes nv-shimmer{0%,to{opacity:.86}50%{opacity:1}}@keyframes nv-dim{0%,to{opacity:.5}50%{opacity:.8}}.think-dots circle{transform-box:fill-box;transform-origin:center}.think-dots circle:nth-child(1){animation:nv-dotseq 1.2s ease-in-out infinite}.think-dots circle:nth-child(2){animation:nv-dotseq 1.2s ease-in-out infinite .2s}.think-dots circle:nth-child(3){animation:nv-dotseq 1.2s ease-in-out infinite .4s}.nova-stage[data-state=idle] .eyes,.nova-stage[data-state=listening] .eyes,.nova-stage[data-state=awaiting] .eyes{animation:nv-blink 5s infinite}.nova-stage[data-state=thinking] .eyes{animation:nv-scan 2.3s ease-in-out infinite}.nova-stage[data-state=working] .eyes{animation:nv-lookdown 3.2s ease-in-out infinite}.nova-stage[data-state=idle] .led,.nova-stage[data-state=listening] .led,.nova-stage[data-state=awaiting] .led{animation:nv-shimmer 3.4s ease-in-out infinite}.nova-stage[data-state=speaking] .led{animation:nv-wave 1s linear infinite}.nova-stage[data-state=thinking] .led,.nova-stage[data-state=working] .led{animation:nv-dim 2.6s ease-in-out infinite}.nova-stage[data-state=speaking] #nv-aurashape{animation:nv-glow 1.1s ease-in-out infinite}.nova-stage[data-state=awaiting] .nova-body{animation:nv-attend 1.3s ease-in-out infinite}.nova-stage[data-state=listening] .listen-rings,.nova-stage[data-state=thinking] .think-dots,.nova-stage[data-state=working] .work-orbit{opacity:1}.nova-stage[data-state=awaiting] .wait-badge{opacity:1;animation:nv-badge 1s ease-in-out infinite}.nova-stage[data-state=listening] .listen-rings circle:nth-child(1){animation:nv-ringout 2.2s ease-out infinite}.nova-stage[data-state=listening] .listen-rings circle:nth-child(2){animation:nv-ringout 2.2s ease-out infinite 1.1s}.nova-stage[data-state=error] .led{fill:#ff6b6b;animation:nv-dim 1.3s ease-in-out infinite}.nova-stage[data-state=error] .eye{filter:drop-shadow(0 0 4px #ff5a5a)}.nova-stage[data-state=error] .brow{stroke:#ff8a8a}@media(prefers-reduced-motion:reduce){.nova-body,#nv-aurashape,.work-orbit,.wait-badge,.eyes,.led,.think-dots circle,.listen-rings circle{animation:none!important}}.app{display:flex;flex-direction:column;height:100dvh;max-width:600px;margin:0 auto;position:relative}.hero{position:relative;display:flex;flex-direction:column;align-items:center;padding:calc(var(--safe-top) + 6px) 0 6px;overflow:hidden;flex-shrink:0}.hero-bg{position:absolute;inset:-40% -20% auto -20%;height:360px;background:radial-gradient(60% 60% at 50% 35%,#7e52d859,#0d0a1800 70%);pointer-events:none}.hero[data-auto="1"] .hero-bg{background:radial-gradient(60% 60% at 50% 35%,#ffb43a2e,#7e52d84d,#0d0a1800 72%)}.hero-meta{display:flex;align-items:center;gap:12px;margin-top:-6px;z-index:1}.state-label{color:var(--text-dim);font-size:14px;letter-spacing:.02em}.status{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-faint)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--text-faint)}.status.ok .status-dot{background:var(--ok);box-shadow:0 0 8px var(--ok)}.status.warn .status-dot{background:var(--amber)}.status.err .status-dot{background:var(--danger)}.auto-banner{margin-top:6px;font-size:12px;color:#3a2600;background:var(--amber);padding:3px 12px;border-radius:999px;z-index:1}.approval{margin:6px 12px;padding:10px 12px;background:#ffb43a1f;border:1px solid rgba(255,180,58,.4);border-radius:var(--radius);display:flex;flex-direction:column;gap:8px}.approval-text{font-size:14px;color:var(--text)}.approval-actions{display:flex;gap:8px;justify-content:flex-end}.chat-area{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.chat{display:flex;flex-direction:column;gap:10px;padding:12px 14px 18px}.chat-empty{text-align:center;color:var(--text-faint);margin-top:18%}.chat-empty p{font-size:18px;color:var(--text-dim);margin:0 0 6px}.chat-empty span{font-size:13px}.bubble{max-width:82%;padding:10px 14px;border-radius:var(--radius);font-size:15px;line-height:1.5;word-wrap:break-word}.bubble.user{align-self:flex-end;background:var(--user-bubble);border-bottom-right-radius:5px}.bubble.assistant{align-self:flex-start;background:var(--nova-bubble);border:1px solid var(--line);border-bottom-left-radius:5px}.bubble-text{white-space:pre-wrap}.caret{display:inline-block;width:7px;height:15px;margin-left:2px;background:var(--violet);vertical-align:-2px;border-radius:1px;animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:0}}.voice-reply{display:flex;align-items:center;gap:8px;margin-top:6px}.voice-reply .voice-ico{font-size:14px}.voice-reply audio{height:34px;max-width:220px}.composer{display:flex;align-items:flex-end;gap:8px;padding:8px 12px calc(8px + var(--safe-bottom));border-top:1px solid var(--line);background:var(--bg-2);flex-shrink:0}.composer-input{flex:1;resize:none;background:var(--bg-panel);color:var(--text);border:1px solid var(--line);border-radius:var(--radius);padding:11px 14px;font-size:15px;max-height:120px;line-height:1.4}.composer-input:focus{outline:none;border-color:var(--line-strong)}.icon-btn{width:46px;height:46px;flex-shrink:0;border-radius:50%;border:1px solid var(--line-strong);background:var(--bg-panel);color:var(--violet-soft);font-size:18px;display:grid;place-items:center;transition:transform .1s}.icon-btn:active{transform:scale(.92)}.icon-btn.send{background:var(--violet-2);color:#fff;border:none}.icon-btn.cancel{color:var(--danger)}.icon-btn:disabled{opacity:.4}.composer.recording{align-items:center}.rec-meter{flex:1;display:flex;align-items:center;gap:10px;color:var(--text);font-variant-numeric:tabular-nums}.rec-dot{width:12px;height:12px;border-radius:50%;background:var(--danger);animation:blink 1s step-end infinite}.pulse{box-shadow:0 0 #a55cff99;animation:pulse 1.4s infinite}@keyframes pulse{70%{box-shadow:0 0 0 12px #a55cff00}to{box-shadow:0 0 #a55cff00}}.btn{padding:9px 16px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--bg-panel);color:var(--text);font-size:14px}.btn.allow{background:var(--violet-2);color:#fff;border:none}.btn.deny{background:transparent;color:var(--text-dim)}.btn:disabled{opacity:.5}.gate{position:absolute;top:0;right:0;bottom:0;left:0;background:#0d0a18eb;display:flex;align-items:center;justify-content:center;padding:24px;z-index:10}.gate-card{width:100%;max-width:340px;background:var(--bg-panel);border:1px solid var(--line-strong);border-radius:var(--radius);padding:24px;text-align:center}.gate-card h2{margin:0 0 4px}.gate-card p{color:var(--text-dim);font-size:14px;margin:0 0 16px}.gate-card input{width:100%;padding:11px 14px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-2);color:var(--text);font-size:15px;margin-bottom:12px}.gate-card input:focus{outline:none;border-color:var(--line-strong)}.gate-card .btn{width:100%}:root{--bg: #0d0a18;--bg-2: #161227;--bg-panel: #1b1630;--line: rgba(165, 124, 255, .18);--line-strong: rgba(165, 124, 255, .4);--violet: #b57bff;--violet-2: #a35cff;--violet-soft: #c9a8ff;--amber: #ffb43a;--text: #ece7fb;--text-dim: #b9a9e8;--text-faint: #7d6fa6;--user-bubble: #2a2150;--nova-bubble: #1f1b38;--danger: #ff6b6b;--ok: #6ce0a8;--radius: 16px;--radius-sm: 10px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,system-ui,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{font-family:inherit;cursor:pointer}input,textarea{font-family:inherit}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:8px}
