/* Mikey Voice — phone-first, tight spacing, dark HUD. No sidebar, no drawer. */
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#020812; --panel:#06182b; --panel2:#082238;
  --line:rgba(90,200,255,.28); --cyan:#4fd2ff; --cyan2:#9be9ff; --blue:#0aa2ff;
  --text:#eaf7ff; --dim:#8fb8cc; --danger:#ff7a7a;
}
html,body{background:var(--bg)}
body{
  color:var(--text); min-height:100dvh;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:
    radial-gradient(420px 420px at 50% 118px, rgba(0,140,255,.20), transparent 65%),
    radial-gradient(700px 500px at 50% -120px, rgba(0,90,200,.14), transparent 60%),
    var(--bg);
}
.app{max-width:480px;margin:0 auto;padding:10px 12px 18px;display:flex;flex-direction:column;gap:10px}
.hidden{display:none!important}

/* header */
.top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.brand{display:flex;align-items:center;gap:9px}
.dot{width:11px;height:11px;border-radius:50%;background:var(--cyan);box-shadow:0 0 10px var(--cyan);flex:none}
.dot.listening{background:#35ffb0;box-shadow:0 0 12px #35ffb0}
.dot.speaking{background:#ffd166;box-shadow:0 0 12px #ffd166}
h1{font-size:21px;letter-spacing:4px;font-weight:700}
.sub{font-size:12px;color:var(--dim);margin-top:-1px}
.ghost-btn{background:transparent;border:1px solid var(--line);color:var(--cyan2);
  border-radius:999px;padding:8px 11px;font-size:13px;min-height:40px}
.ghost-btn:active{background:var(--panel2)}

.banner{background:#3a1214;border:1px solid #7a2d31;color:#ffd7d7;border-radius:10px;padding:9px 11px;font-size:14px;line-height:1.35}

/* mic */
.mic-zone{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0 0}
.mic-btn{position:relative;width:196px;height:196px;border-radius:50%;border:none;cursor:pointer;
  background:radial-gradient(circle at 50% 42%, #0b3556 0%, #06182b 58%, #030d1a 100%);
  box-shadow:0 0 34px rgba(0,160,255,.35), inset 0 0 26px rgba(0,160,255,.28);
  -webkit-tap-highlight-color:transparent}
.mic-btn:active{transform:scale(.985)}
.ring{position:absolute;border-radius:50%;pointer-events:none}
.ring-spin{inset:7px;border:2px solid transparent;border-top-color:var(--cyan);border-right-color:rgba(79,210,255,.45);
  animation:spin 7s linear infinite}
.ring-spin::after{content:"";position:absolute;inset:9px;border-radius:50%;border:2px solid transparent;
  border-bottom-color:rgba(140,225,255,.7);border-left-color:rgba(140,225,255,.3);animation:spinR 11s linear infinite}
.ring-pulse{inset:0;border:2px solid rgba(79,210,255,.5);animation:pulse 2.6s ease-out infinite}
.core{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes spinR{to{transform:rotate(-360deg)}}
@keyframes pulse{0%{transform:scale(.86);opacity:.9}70%{transform:scale(1.09);opacity:0}100%{transform:scale(1.09);opacity:0}}
.mic-btn.listening{box-shadow:0 0 52px rgba(0,255,180,.45), inset 0 0 30px rgba(0,255,180,.25)}
.mic-btn.listening .ring-pulse{border-color:rgba(53,255,176,.65);animation-duration:1.3s}
.mic-btn.listening .ring-spin{animation-duration:2.2s}
.mic-btn.speaking{box-shadow:0 0 52px rgba(255,209,102,.38), inset 0 0 30px rgba(255,209,102,.20)}
.status{font-size:17px;font-weight:600;letter-spacing:.3px;min-height:22px;text-align:center}
.timer-pill{background:var(--panel2);border:1px solid var(--line);border-radius:999px;padding:6px 8px 6px 13px;
  font-size:16px;font-weight:700;display:flex;align-items:center;gap:9px}
.timer-cancel{background:#123a58;color:var(--cyan2);border:1px solid var(--line);border-radius:999px;padding:6px 10px;font-size:13px;min-height:32px}

/* conversation */
.convo{display:flex;flex-direction:column;gap:7px}
.bubble{border-radius:12px;padding:8px 11px;line-height:1.4;font-size:16px}
.bubble .who{display:block;font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--dim);margin-bottom:2px}
.bubble.you{background:#0a2036;border:1px solid rgba(90,200,255,.16)}
.bubble.mikey{background:#07263f;border:1px solid var(--line)}

/* controls */
.controls{display:flex;gap:8px;align-items:stretch}
.btn{border-radius:12px;border:1px solid var(--line);background:var(--panel2);color:var(--text);
  font-size:16px;font-weight:600;padding:11px 13px;min-height:52px;cursor:pointer}
.btn:active{filter:brightness(1.25)}
.btn.stop{flex:none;color:#ffd7d7;border-color:rgba(255,122,122,.4);background:#2a1220}
.switch-row{flex:1;display:flex;align-items:center;justify-content:space-between;gap:8px;
  background:var(--panel);border:1px solid rgba(90,200,255,.16);border-radius:12px;padding:8px 11px;font-size:15px;font-weight:600}
.switch-row small{color:var(--dim);font-weight:400;font-size:12px}
.switch{position:relative;flex:none}
.switch input{position:absolute;opacity:0;width:52px;height:32px;margin:0;cursor:pointer}
.switch .track{display:block;width:52px;height:32px;border-radius:999px;background:#14334d;border:1px solid var(--line);position:relative;transition:background .15s}
.switch .track::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#9be9ff;transition:left .15s}
.switch input:checked + .track{background:#0a6ebd}
.switch input:checked + .track::after{left:23px;background:#fff}
.switch input:focus-visible + .track{outline:2px solid var(--cyan)}

.btn.test{width:100%;background:#0a3a5c;border-color:rgba(155,233,255,.55);font-size:17px}
.sound-note{font-size:13px;color:var(--dim);text-align:center;line-height:1.4;margin-top:-4px}
.btn.ask{width:100%;background:linear-gradient(180deg,#0b5f9e,#084a7d);border-color:rgba(155,233,255,.5);line-height:1.25}
.btn.ask small{font-weight:400;color:#cfeeff;font-size:12.5px}
.copy-note{text-align:center;color:#8ff5c0;font-size:14px;margin-top:-3px}

/* quick links */
.links h2,.help h2{font-size:13px;letter-spacing:2.5px;text-transform:uppercase;color:var(--dim);margin-bottom:7px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tile{display:block;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:13px 12px;
  color:var(--text);text-decoration:none;font-size:17px;font-weight:700;min-height:58px}
.tile em{display:block;font-style:normal;font-weight:400;font-size:12.5px;color:var(--cyan2);margin-top:1px}
.tile:active{background:var(--panel2)}
.say-hint{color:var(--dim);font-size:13px;margin-top:6px;text-align:center}

/* type fallback */
.type-row{display:flex;gap:8px}
.type-row input{flex:1;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;
  color:var(--text);font-size:16px;padding:11px 12px;min-height:52px}
.type-row input::placeholder{color:#5f8296}
.btn.send{flex:none;background:#0a6ebd}

/* help */
.help{background:var(--panel);border:1px solid rgba(90,200,255,.16);border-radius:12px;padding:11px 13px}
.help ul{list-style:none;display:flex;flex-direction:column;gap:6px;font-size:15.5px}
.help li::before{content:"› ";color:var(--cyan);font-weight:700}
.help small{color:var(--dim)}
.help .limit{margin-top:9px;font-size:13.5px;color:var(--dim);line-height:1.45;border-top:1px solid rgba(90,200,255,.14);padding-top:8px}

footer{text-align:center;color:var(--dim);font-size:12.5px;line-height:1.5;padding-top:2px}
footer #voiceName{color:var(--cyan2)}

@media (max-width:360px){ .mic-btn{width:172px;height:172px} h1{font-size:19px} }
@media (prefers-reduced-motion:reduce){ .ring-spin,.ring-spin::after,.ring-pulse{animation:none} }
