@font-face{font-family:Geist;src:url('geist.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{--bg:#faf9f3;--ink:#1b1a17;--muted:#68675f;--line:#deddd6;--field:#fff;--yellow:#f7c23b;--focus:#936700;--bad:#a3261b;--btn-ink:#1b1a17;color-scheme:light}
@media (prefers-color-scheme:dark){:root{--bg:#1b1a17;--ink:#f7f5ef;--muted:#b4b2a8;--line:#3c3a32;--field:#26241f;--focus:#f7c23b;--bad:#ff9a8d;color-scheme:dark}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--ink);font:17px/1.55 Geist,system-ui,Arial,sans-serif}
main{max-width:480px;margin:0 auto;padding:max(24px,env(safe-area-inset-top)) 20px max(32px,env(safe-area-inset-bottom))}
.brand{padding:8px 0 40px}
.logo{width:180px;height:auto;display:block}
.logo-dark{display:none}
@media (prefers-color-scheme:dark){.logo-light{display:none}.logo-dark{display:block}}
h1{margin:0 0 12px;font-size:clamp(34px,9vw,44px);line-height:1.08;letter-spacing:-.045em;font-weight:600}
.lead{margin:0 0 32px;color:var(--muted)}
.lead b{color:var(--ink);font-weight:600;white-space:nowrap}
label{display:block;font-size:13px;font-weight:600;letter-spacing:.04em;margin:0 0 8px}
input{display:block;width:100%;min-height:68px;padding:12px 16px;font:600 clamp(22px,6.4vw,28px)/1.2 Geist,system-ui,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);background:var(--field);border:2px solid var(--line);border-radius:8px}
input::placeholder{color:var(--muted);opacity:.55;font-weight:500}
input:focus-visible,.btn:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
input[aria-invalid=true]{border-color:var(--bad)}
.hint{min-height:1.55em;margin:8px 0 0;font-size:15px;color:var(--muted)}
.msg{min-height:1.55em;margin:4px 0 20px;font-size:15px;font-weight:550;color:var(--bad)}
.btn{display:block;width:100%;min-height:60px;margin:0 0 14px;padding:14px 20px;font:600 18px/1.2 Geist,system-ui,sans-serif;color:var(--ink);background:transparent;border:2px solid var(--ink);border-radius:8px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.btn.primary{background:var(--yellow);border-color:var(--yellow);color:#1b1a17}
.btn:active{transform:translateY(1px)}
.btn[disabled]{opacity:.5;cursor:default}
#scanner{margin-top:8px}
#scanner[hidden]{display:none}
video{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;background:#000;border-radius:8px}
.foot{margin:36px 0 0;font-size:14px;color:var(--muted)}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
.link{text-align:center;text-decoration:none}
