:root{--blue:#56c8ff;--deep:#02060c;--glow:rgba(86,200,255,.55);--lvl:0;--ink:#d8f3ff;--mute:#7fa9c4}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:#8db3d8;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,sans-serif;overflow:hidden;overscroll-behavior:none}
button,input,select{font:inherit;color:inherit}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.bg{position:fixed;inset:0;z-index:0;background:radial-gradient(70% 45% at 50% 38%,rgba(235,248,255,.55),rgba(235,248,255,0) 70%),radial-gradient(circle at 45% 40%,rgba(255,255,255,.75) 0 1.3px,rgba(70,110,150,.28) 2.3px,rgba(0,0,0,0) 3.2px) 0 0/12px 12px,linear-gradient(180deg,#9cc0e0,#8db3d8 55%,#7ea6cf)}
.bg::after{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 40%,rgba(0,0,0,0) 55%,rgba(40,80,125,.35));pointer-events:none}
.app{position:relative;z-index:1;height:100%;max-width:520px;margin:0 auto;display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top) + 10px) 16px calc(env(safe-area-inset-bottom) + 12px)}
.top{display:flex;align-items:center;gap:10px;height:40px}
.brand{font-weight:600;letter-spacing:.42em;font-size:13px;color:#bfe9ff;display:flex;align-items:center;gap:10px;text-shadow:0 0 12px var(--glow)}
.brand .dot{width:7px;height:7px;border-radius:50%;background:var(--blue);box-shadow:0 0 10px var(--blue);animation:blink 2.4s infinite}
@keyframes blink{50%{opacity:.35}}
.clock{margin-left:auto;font-variant-numeric:tabular-nums;font-size:13px;color:var(--mute);letter-spacing:.08em}
.menu-btn{background:none;border:0;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;fill:#9fd6f5;cursor:pointer}
.menu-btn:focus-visible,.mic:focus-visible,.send:focus-visible,.face-hit:focus-visible,.wake-btn:focus-visible,.menu-card button:focus-visible,select:focus-visible{outline:2px solid #9fe3ff;outline-offset:3px}
.stage{position:relative;flex:1 1 auto;min-height:300px;display:grid;place-items:center}
@keyframes spin{to{transform:rotate(360deg)}}
.face-hit{position:absolute;left:50%;top:50%;width:min(70vw,300px);height:min(82vw,360px);transform:translate(-50%,-50%);border-radius:45%;background:none;border:0;cursor:pointer}
.state{position:absolute;bottom:4px;left:0;right:0;text-align:center;font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:#7fc6ea;opacity:.85}
.app.listening .state{color:#b8f4ff;text-shadow:0 0 10px var(--glow)}
.subs{min-height:118px;max-height:30vh;overflow-y:auto;padding:6px 6px 4px;text-align:center}
.subs p{margin:0 auto;max-width:34ch}
.you{font-size:14px;color:var(--mute);min-height:1.2em;margin-bottom:6px!important}
.you:not(:empty)::before{content:"You: ";opacity:.7}
.gid{font-size:18px;line-height:1.42;color:#e4f7ff;text-shadow:0 0 14px rgba(86,200,255,.45)}
.timer{align-self:center;display:flex;align-items:center;gap:8px;padding:6px 8px 6px 12px;margin-bottom:8px;border-radius:99px;background:rgba(86,200,255,.1);border:1px solid rgba(86,200,255,.35);fill:#9fe3ff;font-variant-numeric:tabular-nums;font-size:15px}
.timer[hidden]{display:none}
.timer button{background:rgba(255,255,255,.08);border:0;border-radius:50%;width:26px;height:26px;cursor:pointer;line-height:1}
.timer.done{animation:flash .8s infinite}
@keyframes flash{50%{background:rgba(86,200,255,.45)}}
.bar{display:flex;align-items:center;gap:8px}
.bar input{flex:1;min-width:0;height:48px;border-radius:24px;padding:0 16px;border:1px solid rgba(86,200,255,.3);background:rgba(10,40,66,.45);color:#e8f8ff;font-size:16px;outline:none}
.bar input::placeholder{color:#6f9cb8}
.bar input:focus{border-color:#7fd8ff;box-shadow:0 0 0 3px rgba(86,200,255,.18)}
.send{width:44px;height:44px;border-radius:50%;border:0;background:rgba(86,200,255,.14);fill:#9fe3ff;display:grid;place-items:center;cursor:pointer}
.mic{width:60px;height:60px;flex:none;border-radius:50%;border:1px solid rgba(160,230,255,.6);background:radial-gradient(circle at 50% 40%,#1d6fa6,#0a2f4d);fill:#e6f8ff;display:grid;place-items:center;box-shadow:0 0 22px rgba(86,200,255,.45);cursor:pointer}
.app.listening .mic{background:radial-gradient(circle at 50% 40%,#5fe0ff,#127bb3);animation:pulse 1s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 10px rgba(86,200,255,.12),0 0 30px rgba(86,200,255,.7)}}
.menu{position:fixed;inset:0;z-index:5;background:rgba(0,6,12,.7);display:grid;place-items:end center;padding:16px 16px calc(env(safe-area-inset-bottom) + 16px)}
.menu[hidden]{display:none}
.menu-card{width:100%;max-width:420px;background:#061a2b;border:1px solid rgba(86,200,255,.3);border-radius:22px;padding:18px;display:flex;flex-direction:column;gap:10px;box-shadow:0 0 40px rgba(86,200,255,.2)}
.menu-card h2{margin:0 0 4px;font-size:15px;letter-spacing:.2em;text-transform:uppercase;color:#a6e4ff}
.menu-card label{font-size:13px;color:var(--mute)}
.menu-card select,.menu-card button{height:46px;border-radius:12px;border:1px solid rgba(86,200,255,.25);background:rgba(86,200,255,.08);padding:0 12px;font-size:16px;cursor:pointer}
.menu-card .primary{background:#1a78b4;border-color:#5fc8ff}
.fine{font-size:12px;color:var(--mute);margin:2px 0}
.wake{position:fixed;inset:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px;background:radial-gradient(90% 60% at 50% 45%,rgba(8,40,66,.92),rgba(2,6,12,.97));transition:opacity .6s}
.wake.gone{opacity:0;pointer-events:none}
.plinth{width:220px;filter:drop-shadow(0 0 14px rgba(86,200,255,.6))}
.plinth .hand{animation:blink 2s infinite}
.wake-btn{border:1px solid rgba(160,230,255,.7);background:rgba(30,120,180,.35);color:#e8f8ff;border-radius:99px;padding:14px 22px;font-size:16px;letter-spacing:.04em;box-shadow:0 0 24px rgba(86,200,255,.4);cursor:pointer}
.wake-sub{margin:0;font-size:13px;color:var(--mute);text-align:center}
@media (min-height:760px){.subs{min-height:92px}}
@media (prefers-reduced-motion:reduce){.h-scan,.h-sweep{animation:none!important}}

/* ---- hologram face (generated frames + code effects) */
.holo{position:fixed;left:50%;top:0;z-index:0;width:min(100vw,560px);aspect-ratio:1080/1932;transform:translateX(-50%);pointer-events:none;
  -webkit-mask-image:radial-gradient(ellipse 72% 62% at 50% 40%,#000 62%,rgba(0,0,0,0) 100%);mask-image:radial-gradient(ellipse 72% 62% at 50% 40%,#000 62%,rgba(0,0,0,0) 100%)}
@media (min-aspect-ratio:1080/1932){.holo{width:auto;height:100vh;height:100dvh}}
.holo-in{position:absolute;inset:0;transform-origin:50% 42%;will-change:transform,opacity}
.holo img{position:absolute;display:block;user-select:none;-webkit-user-drag:none}
.h-base,.h-glow,.h-glitch{left:0;top:0;width:100%;height:100%}
.h-patch{height:auto;opacity:0;transition:opacity 45ms linear}
.h-glow{mix-blend-mode:screen;filter:blur(14px) brightness(1.35) saturate(1.2);opacity:.3}
.h-glitch{opacity:0;mix-blend-mode:screen;filter:hue-rotate(-12deg) brightness(1.25)}
.h-scan{position:absolute;inset:0;background:repeating-linear-gradient(180deg,rgba(255,255,255,.07) 0 1px,rgba(255,255,255,0) 1px 4px);mix-blend-mode:overlay;animation:scan 9s linear infinite;opacity:.8}
@keyframes scan{to{background-position:0 120px}}
.h-sweep{position:absolute;left:0;right:0;height:22%;top:-22%;background:linear-gradient(180deg,rgba(255,255,255,0),rgba(235,250,255,.16) 50%,rgba(255,255,255,0));mix-blend-mode:screen;animation:sweep 7.5s cubic-bezier(.4,0,.6,1) infinite}
@keyframes sweep{0%{top:-22%}70%,100%{top:100%}}
.holo[data-mode=listening] .holo-in{filter:brightness(1.08) saturate(1.15)}
.holo[data-mode=listening] .h-sweep{animation-duration:2.4s}
.holo[data-mode=thinking] .h-sweep{animation-duration:3.6s}
.fx{position:absolute;inset:-10px -16px;width:calc(100% + 32px);height:calc(100% + 20px);pointer-events:none}
.stage{min-height:340px}
.face-hit{width:100%;height:100%;border-radius:0}
/* readable chrome over the pale wall */
.brand{color:#fff;text-shadow:0 1px 8px rgba(20,60,105,.65),0 0 14px rgba(255,255,255,.5)}
.brand .dot{background:#fff;box-shadow:0 0 10px #fff,0 0 4px #5fc8ff}
.clock{color:#fff;text-shadow:0 1px 6px rgba(20,60,105,.7)}
.menu-btn{fill:#fff;filter:drop-shadow(0 1px 4px rgba(20,60,105,.7))}
.state{bottom:8px;left:50%;right:auto;transform:translateX(-50%);padding:6px 14px;border-radius:99px;background:rgba(14,52,88,.42);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#eaf8ff;white-space:nowrap;opacity:1}
.app.listening .state{color:#fff;background:rgba(30,130,200,.6)}
.subs{border-radius:20px;background:rgba(10,42,72,.5);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.22);margin-bottom:10px;padding:10px 12px}
.subs:has(p:empty+p:empty){background:rgba(10,42,72,.22)}
.you{color:#b9d9ef}
.gid{color:#fff;text-shadow:0 0 12px rgba(160,225,255,.5)}
.bar input{background:rgba(10,42,72,.55);border-color:rgba(255,255,255,.35);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.bar input::placeholder{color:#a9cbe3}
.send{background:rgba(10,42,72,.5);fill:#e6f8ff}
.subs{min-height:84px;display:flex;flex-direction:column;justify-content:center}
