:root{--bg: #0b0d10;--fg: #e8eaed;--muted: #8b9199;--idle: #4a5159;--listening: #86a9c9;--thinking: #c9a227;--speaking: #e6dfd0;--error: #b4544a;--pad-top: max(1.5rem, env(safe-area-inset-top));--pad-right: max(1.5rem, env(safe-area-inset-right));--pad-bottom: max(1.5rem, env(safe-area-inset-bottom));--pad-left: max(1.5rem, env(safe-area-inset-left))}*{box-sizing:border-box}html{overscroll-behavior:none}body{margin:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,sans-serif;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}input,textarea{-webkit-user-select:text;user-select:text}.igor,.gate,.fatal{min-height:100vh;min-height:100dvh;padding:var(--pad-top) var(--pad-right) var(--pad-bottom) var(--pad-left);display:flex;flex-direction:column}.igor{align-items:center;justify-content:center;gap:clamp(.75rem,2.5vmin,1.5rem);text-align:center}.readout{display:flex;flex-direction:column;align-items:center;gap:clamp(.4rem,1.5vmin,.9rem);min-width:0}.orb{--tint: var(--idle);--spin: 42s;--voice: 0;width:clamp(4.5rem,22vmin,11rem);aspect-ratio:1;flex-shrink:0;perspective:62rem}.orb-stage{width:100%;height:100%;position:relative;transform-style:preserve-3d;transform:rotateX(-23.5deg)}.orb-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:1px solid var(--tint);transform-style:preserve-3d;transition:border-color .5s ease,opacity .5s ease}.orb-ring--equator{animation:spin-equator var(--spin) linear infinite}.orb-ring--meridian{opacity:.75;animation:spin-meridian calc(var(--spin) * 1.6) linear infinite}.orb-ring--colure{opacity:.5;animation:spin-colure calc(var(--spin) * 2.3) linear infinite reverse}.orb-core{position:absolute;top:38%;right:38%;bottom:38%;left:38%;border-radius:50%;background:var(--tint);opacity:.85;transition:background .5s ease,opacity .4s ease,transform .22s ease}@keyframes spin-equator{0%{transform:rotateY(0) rotateX(78deg)}to{transform:rotateY(360deg) rotateX(78deg)}}@keyframes spin-meridian{0%{transform:rotateX(0) rotateY(66deg)}to{transform:rotateX(360deg) rotateY(66deg)}}@keyframes spin-colure{0%{transform:rotate(0) rotateX(34deg)}to{transform:rotate(360deg) rotateX(34deg)}}.igor--listening .orb{--tint: var(--listening);--spin: 26s}.igor--listening .orb-stage{transform:rotateX(-23.5deg) scale(calc(1 + var(--voice) * .09));transition:transform 90ms ease-out}.igor--listening .orb-core{transform:scale(calc(.7 + var(--voice) * .55));opacity:calc(.55 + var(--voice) * .45)}.igor--thinking .orb{--tint: var(--thinking);--spin: 9s}.igor--thinking .orb-core{animation:core-work 1.9s ease-in-out infinite}.igor--speaking .orb{--tint: var(--speaking);--spin: 34s}.igor--speaking .orb-core{animation:core-speak 2.6s ease-in-out infinite}.igor--error .orb{--tint: var(--error)}.igor--error .orb-ring{animation-play-state:paused}@keyframes core-work{0%,to{transform:scale(.72);opacity:.55}50%{transform:scale(1.05);opacity:1}}@keyframes core-speak{0%,to{transform:scale(.9);opacity:.7}50%{transform:scale(1.12);opacity:1}}.state{margin:0;font-size:clamp(.75rem,1.8vmin,.95rem);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.transcript{margin:0;font-size:clamp(1rem,3vmin,1.5rem);color:var(--muted);max-width:34ch}.subtitle{margin:0;font-size:clamp(1.15rem,4.5vmin,2.25rem);line-height:1.35;max-width:30ch}.tool{margin:0;font-size:clamp(.75rem,1.7vmin,.9rem);font-family:ui-monospace,monospace;color:var(--muted)}.error{margin:0;font-size:clamp(.9rem,2vmin,1rem);color:var(--error)}.ptt{margin-top:clamp(.25rem,1.5vmin,1rem);min-height:3rem;padding:.85rem clamp(1.5rem,6vmin,2.5rem);font-size:clamp(.95rem,2.2vmin,1.05rem);color:var(--fg);background:transparent;border:1px solid var(--idle);border-radius:999px;cursor:pointer;touch-action:none}.ptt:active{background:var(--idle)}.controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.6rem}.wake-toggle{min-height:2.25rem;padding:.4rem 1rem;font-size:clamp(.75rem,1.7vmin,.85rem);color:var(--muted);background:transparent;border:1px solid var(--idle);border-radius:999px;cursor:pointer}.wake-toggle:active{color:var(--fg)}.wake-heard{margin:0;max-width:34ch;font-size:clamp(.7rem,1.6vmin,.8rem);font-family:ui-monospace,monospace;color:var(--idle);overflow-wrap:anywhere}.gate{align-items:center;justify-content:center;gap:1rem}.gate h1{margin:0;font-size:clamp(1.5rem,5vmin,2rem);letter-spacing:.2em;text-transform:uppercase}.gate-hint{margin:0;max-width:42ch;font-size:clamp(.9rem,2vmin,1rem);color:var(--muted);text-align:center;line-height:1.5}.gate form{display:flex;flex-direction:column;gap:.75rem;width:min(22rem,100%);margin-top:.5rem}.gate input{padding:.85rem 1rem;font-size:1rem;min-height:3rem;color:var(--fg);background:#14171b;border:1px solid var(--idle);border-radius:8px}.gate input:focus{outline:none;border-color:var(--listening)}.gate button{margin-top:.5rem;padding:.85rem 1rem;min-height:3rem;font-size:1rem;color:var(--fg);background:var(--idle);border:none;border-radius:8px;cursor:pointer}.gate button:disabled{opacity:.5}.fatal{justify-content:center;gap:1rem;max-width:60ch;margin:0 auto;line-height:1.6}.fatal h1{font-size:clamp(1.4rem,5vmin,2rem)}.fatal code{font-family:ui-monospace,monospace;background:#1a1d21;padding:.15em .4em;border-radius:4px;font-size:.9em;overflow-wrap:anywhere}@media(orientation:landscape)and (max-height:30rem){.igor{flex-direction:row;gap:clamp(1rem,4vw,2.5rem);text-align:left}.orb{width:clamp(4rem,26vmin,7rem)}.readout{flex:1;align-items:flex-start}.subtitle{font-size:clamp(1.05rem,5.5vmin,1.5rem);max-width:none}.transcript{font-size:clamp(.9rem,4vmin,1.1rem);max-width:none}.ptt{margin-top:0;flex-shrink:0}.fatal{justify-content:flex-start}}@media(max-width:22rem){:root{--pad-right: max(1rem, env(safe-area-inset-right));--pad-left: max(1rem, env(safe-area-inset-left))}}@media(min-width:64rem)and (min-height:40rem){.subtitle{font-size:2.5rem;max-width:26ch}.transcript{font-size:1.6rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
