/* voice.css — PWA-specific layout on top of /assets/style.css */
.voice-body{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}
.voice-splash{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center;gap:1rem}
.voice-splash h1{margin:.4rem 0 0;font-size:2.6rem;letter-spacing:-.02em}
.voice-splash h1 b{color:var(--accent)}
.voice-splash .eyebrow{margin:0 0 1.2rem}
.voice-splash .btn{margin:.5rem 0;min-width:200px}
.voice-sub{color:var(--muted);font-size:.85rem;max-width:320px;margin:0}

.voice-app{flex:1;display:flex;flex-direction:column;max-width:640px;width:100%;margin:0 auto;padding:1rem 1.2rem 2rem;gap:1rem}
.voice-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem 0;border-bottom:1px solid var(--border)}
.voice-top nav{display:flex;gap:.8rem}
.voice-top nav a{color:var(--muted);font-size:.88rem}
.voice-top nav a:hover{color:var(--accent);text-decoration:none}

.voice-hud{display:flex;align-items:center;gap:.8rem;padding:.5rem 0}
.voice-status{font-family:var(--mono);color:var(--accent);font-size:.95rem;flex:0 0 auto}
.voice-meter{flex:1;height:6px;background:var(--card);border:1px solid var(--border);border-radius:999px;overflow:hidden}
.voice-meter span{display:block;height:100%;width:0;background:var(--accent);transition:width .08s linear}

.voice-picker{display:grid;grid-template-columns:auto 1fr;gap:.4rem .6rem;align-items:center;font-size:.88rem;color:var(--muted)}
.voice-picker select{background:var(--card);color:var(--fg);border:1px solid var(--border);border-radius:6px;padding:.35rem .5rem;font-family:var(--mono);font-size:.85rem}
.voice-picker select:focus{outline:none;border-color:var(--accent)}

.voice-transcript{flex:1;min-height:180px;max-height:50vh;overflow-y:auto;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:1rem}
.voice-transcript p{margin:.4rem 0;font-size:.97rem}
.voice-transcript .msg-user{color:var(--fg)}
.voice-transcript .msg-user::before{content:"you · ";color:var(--accent);font-family:var(--mono);font-size:.75em;letter-spacing:.08em;text-transform:uppercase}
.voice-transcript .msg-asst{color:var(--fg)}
.voice-transcript .msg-asst::before{content:"halo · ";color:var(--accent);font-family:var(--mono);font-size:.75em;letter-spacing:.08em;text-transform:uppercase}
.voice-placeholder{color:var(--muted);font-style:italic}

.voice-controls{display:flex;flex-direction:column;align-items:center;gap:.6rem;padding:1rem 0 env(safe-area-inset-bottom)}
.voice-orb{width:112px;height:112px;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(0,212,255,.35),rgba(0,212,255,.08) 60%,rgba(0,212,255,0));border:2px solid var(--accent);color:var(--accent);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;touch-action:none;user-select:none;-webkit-user-select:none}
.voice-orb:active,.voice-orb.rec{transform:scale(1.06);box-shadow:0 0 0 8px rgba(0,212,255,.18),0 0 32px rgba(0,212,255,.45)}
.voice-orb.rec{animation:orb-pulse 1.2s ease-in-out infinite}
@keyframes orb-pulse{0%,100%{box-shadow:0 0 0 8px rgba(0,212,255,.18),0 0 32px rgba(0,212,255,.45)}50%{box-shadow:0 0 0 14px rgba(0,212,255,.08),0 0 44px rgba(0,212,255,.65)}}
.voice-hint{color:var(--muted);font-size:.8rem;margin:0;text-align:center}
