*{box-sizing:border-box}body{margin:0;background:#0b0f17;color:#e5e7eb;font:20px/1.4 system-ui,sans-serif;padding:12px 12px calc(12px + env(safe-area-inset-bottom))}
header{display:flex;justify-content:space-between;align-items:center}h1{margin:4px 0;font-size:30px}
button,.big{font:inherit;border:0;border-radius:16px;color:#fff;background:#1f2937;cursor:pointer}
.big{display:block;width:100%;padding:18px;font-size:22px;font-weight:600;text-align:center;text-decoration:none;margin:8px 0}
.small{padding:10px 14px;font-size:17px}.primary{background:#2563eb}.alt{background:#4f46e5}.pass{background:#15803d}.fail{background:#b91c1c}
nav{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}nav button{padding:20px 4px;font-size:22px;font-weight:700;border:3px solid transparent}
nav button.on{background:#2563eb;border-color:#93c5fd}#who{font-size:18px;color:#9ca3af;margin-bottom:6px}
#log{min-height:30vh;max-height:45vh;overflow:auto;background:#111827;border-radius:16px;padding:10px}
.m{padding:12px 14px;border-radius:14px;margin:8px 0;max-width:88%;white-space:pre-wrap}.me{background:#2563eb;margin-left:auto}.bot{background:#374151}
textarea{width:100%;font:inherit;font-size:22px;background:#111827;color:#fff;border:2px solid #374151;border-radius:14px;padding:12px;margin-top:10px}
.row{display:flex;gap:8px}.row>*{flex:1}#mic.rec{background:#dc2626}.note{color:#9ca3af;font-size:16px;margin:4px 0}
.step{background:#111827;border-radius:16px;padding:12px;margin:12px 0}h3{margin:0 0 6px}
.res{font-weight:700;font-size:20px}.res.ok{color:#4ade80}.res.bad{color:#f87171}
.meter{height:28px;background:#374151;border-radius:14px;overflow:hidden}#bar{height:100%;width:0;background:#4ade80;transition:width .05s}
li{margin:4px 0}li.bt{color:#fbbf24;font-weight:700}
.hf{background:#15803d;font-size:28px;padding:26px}.hf.on{background:#dc2626}
.state{text-align:center;font-weight:800;font-size:22px;padding:10px;border-radius:14px;margin:6px 0;background:#1f2937}
.state.listening{background:#065f46}.state.sending{background:#92400e}.state.thinking{background:#4338ca}.state.speaking{background:#7e22ce}
#interim{min-height:1.4em;font-style:italic;color:#d1d5db;font-size:19px}.inp{width:100%;font:inherit;font-size:22px;padding:12px;border-radius:14px;border:2px solid #374151;background:#111827;color:#fff}
