@font-face{font-family:VT323;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/vt323-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:VT323;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/vt323-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:VT323;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/vt323-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--phosphor: #7dff9a;--phosphor-dim: #2f9a4a;--bg: #031008;--font: "VT323", "Courier New", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;background:#000;color:var(--phosphor);font-family:var(--font)}.stage{color:var(--phosphor);height:100%;display:flex;align-items:center;justify-content:center;gap:24px;padding:16px}.stage--tv{padding:0}.crt{position:relative;aspect-ratio:4 / 3;height:min(100%,calc((100vw - 300px)*.75));max-width:100%;background:var(--bg);overflow:hidden;border-radius:4%/5%;box-shadow:0 0 0 10px #111,0 0 60px #7dff9a26 inset;container-type:size}.stage--tv .crt{height:min(100vh,75vw);border-radius:0;box-shadow:none}.crt__content{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;padding:4cqh 5cqw;font-size:4.2cqh}.crt--fx .crt__content{text-shadow:0 0 6px rgba(125,255,154,.8);animation:flicker .12s infinite;filter:contrast(1.1) saturate(1.2)}.crt--fx{transform:perspective(1400px) rotateX(0)}.crt__scanlines,.crt__vignette{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;display:none}.crt--fx .crt__scanlines,.crt--fx .crt__vignette{display:block}.crt__scanlines{background:repeating-linear-gradient(to bottom,rgba(0,0,0,.28) 0 1px,transparent 1px 3px);mix-blend-mode:multiply}.crt__vignette{background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.75) 100%)}@keyframes flicker{0%,to{opacity:1}50%{opacity:.97}}.hud{display:flex;justify-content:space-between;letter-spacing:.1em;color:var(--phosphor-dim)}.badge--speaking,.badge--listening{color:var(--phosphor)}.badge--error{color:#ff6a5a}.badge--thinking{animation:blink .8s steps(2) infinite}@keyframes blink{50%{opacity:.2}}.face-wrap{flex:1;min-height:0;display:flex;justify-content:center;align-items:center}.face-canvas{height:100%;aspect-ratio:4 / 3;image-rendering:pixelated}.log{height:22%;overflow:hidden;line-height:1.1}.log p{margin:0}.log__user{color:var(--phosphor-dim)}.log__system{color:var(--phosphor-dim);font-size:.8em}.cursor{display:inline-block;width:.6em;height:1em;background:var(--phosphor);animation:blink 1s steps(2) infinite;vertical-align:text-bottom}.panel{width:260px;display:flex;flex-direction:column;gap:12px;font-size:20px}.panel h1{margin:0;font-weight:400;font-size:32px}.panel .muted{margin:0;color:var(--phosphor-dim)}.panel button{font:inherit;color:var(--phosphor);background:transparent;border:1px solid var(--phosphor-dim);padding:8px 12px;cursor:pointer;text-align:left}.panel button:hover{background:#7dff9a1f}.panel label{cursor:pointer}.panel button:disabled{opacity:.4;cursor:default}.panel button.primary{border-color:var(--phosphor)}.panel .warn{margin:0;color:#ffb454;font-size:18px}.panel .backend{font-size:18px;line-height:1.1}.backend--ready{color:var(--phosphor)}.backend--offline,.backend--nokey{color:#ffb454}.mode{border:1px solid var(--phosphor-dim);padding:8px 12px;display:flex;flex-direction:column;line-height:1.1}.mode b{font-weight:400;font-size:26px;letter-spacing:.1em}.mode span{font-size:17px;color:var(--phosphor-dim)}.mode--realtime{border-color:#ffb454;color:#ffb454;box-shadow:0 0 12px #ffb45440}.mode--realtime span{color:#b9843b}.seg{display:flex}.seg button{flex:1;text-align:center!important}.seg button.on{background:var(--phosphor);color:var(--bg)}.tag--realtime,.mic{color:#ffb454}.mic:not(.mic--off){animation:blink 1.2s steps(2) infinite}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (prefers-reduced-motion: reduce){.crt--fx .crt__content,.badge--thinking,.cursor,.mic:not(.mic--off){animation:none}}@media (max-width: 900px){.stage{flex-direction:column}.crt{height:auto;width:100%}.panel{width:100%}}.micpanel{border:1px solid var(--phosphor-dim);padding:8px 10px;display:flex;flex-direction:column;gap:6px;font-size:18px}.mic__head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.mic__head b{font-weight:400;letter-spacing:.08em}.mic__status{color:var(--phosphor-dim);text-align:right;line-height:1}.mic__status.ok{color:var(--phosphor)}.mic__status.bad,.mic__warn{color:#ff8a6a}.mic__note{margin:0;color:var(--phosphor-dim);line-height:1.05;word-break:break-word}.mic__warn{margin:0;line-height:1.05;font-size:17px}.micpanel select{font:inherit;font-size:17px;color:var(--phosphor);background:var(--bg);border:1px solid var(--phosphor-dim);padding:4px;width:100%}.meter{display:grid;grid-template-columns:repeat(16,1fr);gap:2px;height:14px}.meter i{background:#0b2a14}.meter i.on{background:var(--phosphor)}.meter i.hot.on{background:#ffb454}.mic--off{color:#ff8a6a;animation:none}.faces{display:flex;flex-direction:column;gap:6px;font-size:18px}.faces b{font-weight:400;letter-spacing:.08em}.faces small{color:var(--phosphor-dim)}.seg--wrap{flex-wrap:wrap;gap:4px}.seg--wrap button{flex:1 1 40%;padding:4px 6px;font-size:16px}.faces .seg button{padding:4px 6px}.swatch{display:inline-block;width:100%;height:12px}.fx{display:flex;flex-direction:column;gap:6px;font-size:18px}.fx b{font-weight:400;letter-spacing:.08em}.fx small{color:var(--phosphor-dim)}.fx input[type=range]{width:100%;accent-color:var(--phosphor)}.fx label{display:flex;align-items:center;gap:8px}.fx select{background:var(--bg);color:var(--phosphor);border:1px solid var(--phosphor);font:inherit}.fx input.talk{width:100%;background:var(--bg);color:var(--phosphor);border:1px solid var(--phosphor);font:inherit;padding:6px 8px}.fx input.talk::placeholder{color:var(--phosphor-dim)}
