.screen{min-height:100dvh;padding:max(12px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));flex-direction:column;max-width:560px;margin:0 auto;display:flex}.topbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.brand{font-family:var(--brand);letter-spacing:-.03em;color:var(--teal);font-size:1.7rem;font-weight:800}.brand-sm{color:var(--foam);font-weight:800}.top-actions{gap:4px;display:flex}.icon-btn,.text-btn{color:var(--foam);background:0 0;border:0;border-radius:10px;padding:8px 10px}.icon-btn{font-size:1.25rem}.text-btn:disabled{opacity:.35}.status-card{background:#111827eb;border-radius:16px;margin-bottom:12px;padding:14px 16px}.status-title{font-size:1.05rem;font-weight:700}.mono{opacity:.9;margin-top:6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem}.hint{color:var(--teal);margin-top:6px;font-size:.85rem}.viewer{background:#000;border:3px solid #14b8a6bf;border-radius:20px;flex:1;min-height:280px;position:relative;overflow:hidden}.viewer.armed{border-color:var(--ok)}.reader{width:100%;height:100%;min-height:280px}.reader video{object-fit:cover!important;border-radius:0!important}.reader img{display:none!important}.frame{pointer-events:none;border:2px solid #ffffff59;border-radius:16px;place-items:center;display:grid;position:absolute;inset:18%}.frame-label{font-family:var(--brand);letter-spacing:.04em;color:#ffffff8c;text-shadow:0 2px 16px #00000073;font-size:clamp(2rem,8vw,3rem);font-weight:800}.step-banner{grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin-bottom:12px;display:grid}.step-chip{opacity:.45;background:#111827d9;border:1px solid #ffffff14;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:10px 12px;font-weight:700;display:flex}.step-chip.active{opacity:1;border-color:var(--teal);color:var(--teal)}.step-chip.done{opacity:.9;color:var(--ok);border-color:#22c55e8c}.step-num{width:1.55rem;height:1.55rem;color:var(--ink);background:currentColor;border-radius:999px;place-items:center;font-size:.85rem;font-weight:800;display:grid}.step-chip.active .step-num,.step-chip.done .step-num{color:#04110f;background:currentColor}.step-line{background:#fff3;width:28px;height:2px}.status-sub{opacity:.65;margin-top:4px;font-size:.85rem}.ok-line{color:var(--ok)}.cam-error{color:#fecaca;background:#000000bf;border-radius:10px;padding:10px 12px;font-size:.85rem;position:absolute;inset:auto 12px 12px}.feedback{text-align:center;border-radius:16px;gap:4px;margin-top:12px;padding:14px;display:grid}.feedback.match{border:1px solid var(--ok);color:var(--ok);background:#22c55e2e}.feedback.mismatch{border:1px solid var(--danger);color:var(--danger);background:#ef44442e}.bottom-dock{justify-items:center;gap:8px;margin-top:14px;display:grid}.dock-hint{opacity:.7;text-align:center;margin:0;font-size:.8rem}.scan-btn{background:var(--teal);width:100%;height:64px;color:var(--ink);letter-spacing:.08em;border:0;border-radius:16px;font-size:1.35rem;font-weight:800}.scan-btn:disabled{opacity:.9}.scan-btn.listening{background:var(--ok)}.format-pill{opacity:.65;margin:0;font-size:.78rem}.panel h2{margin:8px 0 6px;font-size:1.4rem}.muted{color:#e2e8f0ad;margin:0 0 16px}.rule{margin-top:24px;font-size:.92rem}.options{gap:10px;display:grid}.option{background:var(--panel);border:1px solid #0000;border-radius:12px;align-items:center;gap:10px;padding:14px 12px;display:flex}.option.on{border-color:var(--teal)}.empty{text-align:center;margin-top:40px}.log-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.log-list li{background:var(--panel);border-radius:14px;padding:12px 14px}.log-list time{color:var(--teal);margin-bottom:6px;font-size:.78rem;display:block}.bad{color:#fca5a5}@media (width>=700px){.screen{border-inline:1px solid #ffffff0d}}:root{--ink:#0b1220;--teal:#14b8a6;--teal-deep:#0f766e;--foam:#e2e8f0;--panel:#111827;--danger:#ef4444;--ok:#22c55e;--font:"Heebo", system-ui, sans-serif;--brand:"Syne", "Heebo", sans-serif;color:var(--foam);background:var(--ink);font-family:var(--font);font-synthesis:none;text-rendering:optimizelegibility;-webkit-tap-highlight-color:transparent;line-height:1.4}*{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}body{background:var(--ink);overscroll-behavior:none}button,input{font:inherit}
