:root{--bg-top: #241a5e;--bg-bottom: #0b0a1f;--panel: #1a1442;--accent: #ffc93c;--accent-soft: #7fd1e8;--correct: #4ade80;--wrong: #f87171;--ink: #ffffff;--ink-dim: rgba(255, 255, 255, .72);color-scheme:dark;font-family:ui-rounded,SF Pro Rounded,Segoe UI Rounded,Nunito,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:radial-gradient(120% 80% at 50% 0%,rgba(127,209,232,.18),transparent 60%),linear-gradient(180deg,var(--bg-top),var(--bg-bottom));color:var(--ink);-webkit-tap-highlight-color:transparent}.container{width:100%;max-width:420px;padding:2rem 1.5rem calc(2rem + env(safe-area-inset-bottom));text-align:center}.brand{display:block;width:150px;max-width:45%;height:auto;margin:0 auto 1.75rem;opacity:.9}.hero{margin-bottom:2rem}.indicator{display:inline-flex;align-items:center;gap:.5rem;padding:.4rem .85rem;margin-bottom:1.5rem;border-radius:999px;background:#1b1e26;font-size:.85rem;color:#b8bcc6}.indicator .dot{width:9px;height:9px;border-radius:50%;background:#7a7f8a}.indicator.ready{background:#16321f;color:#6fe08a}.indicator.ready .dot{background:#6fe08a;box-shadow:0 0 #6fe08a99;animation:pulse 2s infinite}.indicator.failed{background:#331a1a;color:#ff8a8a}.indicator.failed .dot{background:#ff8a8a}.indicator.connecting{background:#33290f;color:#f0c674}.spinner{width:11px;height:11px;border:2px solid rgba(240,198,116,.3);border-top-color:#f0c674;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{70%{box-shadow:0 0 0 7px #6fe08a00}}@media (prefers-reduced-motion: reduce){.spinner,.indicator.ready .dot{animation:none}}.hero h1{font-size:1.75rem;font-weight:800;margin:0 0 .35rem;letter-spacing:-.01em}.hero p{margin:0;font-size:1rem;color:var(--ink-dim)}button{font:inherit;border:none;cursor:pointer;color:inherit}.primary-button{width:100%;min-height:68px;padding:1rem 1.5rem;font-size:1.15rem;font-weight:800;border-radius:999px;background:linear-gradient(180deg,#ffd868,var(--accent));color:#2a1c00;box-shadow:0 8px #c9992a,0 14px 28px #0006;transition:transform .12s ease,box-shadow .12s ease}.primary-button:active:not(:disabled){transform:translateY(5px);box-shadow:0 3px #c9992a,0 8px 18px #0006}.primary-button:disabled{background:#2c2657;color:#ffffff73;box-shadow:none;cursor:not-allowed}.hold-stage{position:relative;width:260px;height:260px;margin:0 auto 1.25rem;display:grid;place-items:center}.ripple{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:200px;height:200px;border-radius:50%;border:2px solid var(--accent-soft);opacity:.35;transform:scale(calc(1 + var(--ripple, 0) * .28));transition:transform 80ms linear,opacity .16s linear,border-color .16s linear;pointer-events:none}.ripple.two{transform:scale(calc(1 + var(--ripple, 0) * .5));opacity:.18}.holding .ripple{border-color:var(--correct)}.hold-button{position:relative;width:200px;height:200px;border-radius:50%;font-size:1.15rem;font-weight:800;line-height:1.3;background:linear-gradient(160deg,#2f2a72,#1a1442);border:5px solid var(--accent-soft);box-shadow:0 10px 30px #00000080;touch-action:none;user-select:none;-webkit-user-select:none;transition:transform .12s ease,border-color .16s ease,background .16s ease}.hold-button .glyph{display:block;width:76px;height:76px;margin:0 auto .35rem;object-fit:contain;transition:transform .16s ease}.hold-button.holding .glyph{transform:scale(1.08)}.hold-button.holding{background:linear-gradient(160deg,#1d5c3c,#14402b);border-color:var(--correct);transform:scale(.96);animation:breathe 1.1s ease-in-out infinite alternate}@keyframes breathe{to{box-shadow:0 10px 30px #00000080,0 0 0 12px #4ade8029}}.hold-hint{margin:0 0 1.25rem;font-size:.95rem;color:var(--ink-dim)}.disconnect-link{background:transparent;color:var(--ink-dim);font-size:.9rem;font-weight:600;padding:.75rem 1rem;border-radius:999px}.status{margin-top:1.25rem;padding:.85rem 1.1rem;border-radius:20px;background:var(--panel);border:2px solid rgba(255,255,255,.08);color:var(--ink-dim);font-size:.98rem;font-weight:600}.status.recording{background:#4ade801f;border-color:#4ade8073;color:var(--correct)}.verdict{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;gap:.75rem;align-content:center;z-index:10;pointer-events:none;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:verdict-in .2s ease-out}.verdict.correct{background:#4ade8038}.verdict.incorrect{background:#f8717138}.verdict .mark{width:140px;height:140px;display:grid;place-items:center;font-size:4.5rem;border-radius:50%;background:var(--panel);box-shadow:0 16px 40px #0000008c;animation:pop .32s cubic-bezier(.34,1.56,.64,1)}.verdict.correct .mark{border:6px solid var(--correct)}.verdict.incorrect .mark{border:6px solid var(--wrong)}.verdict .label{font-size:1.4rem;font-weight:800}@keyframes pop{0%{transform:scale(.5)}to{transform:scale(1)}}@keyframes verdict-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.diag{width:100%;margin-top:1rem;border-collapse:collapse;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;color:#8a8f9a}.diag td{padding:.25rem .5rem;border-top:1px solid #1b1e26;text-align:left}.diag td:last-child{text-align:right;color:#b8bcc6;word-break:break-all}
