@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:#e4e2da;--line-2:#cfccc2;--field:#fff;--tint:#f4f0e3;--tint-on:#fbefc9;--yellow:#f7c23b;--focus:#936700;--bad:#a3261b;--btn-ink:#1b1a17;--shadow:0 1px 2px rgba(27,26,23,.04),0 2px 8px rgba(27,26,23,.04);--shadow-up:0 2px 4px rgba(27,26,23,.05),0 10px 24px rgba(27,26,23,.08);color-scheme:light}
@media (prefers-color-scheme:dark){:root{--bg:#1b1a17;--ink:#f7f5ef;--muted:#b4b2a8;--line:#36342d;--line-2:#4a473e;--field:#23211c;--tint:#2d2a23;--tint-on:#43391f;--focus:#f7c23b;--bad:#ff9a8d;--shadow:0 1px 2px rgba(0,0,0,.25);--shadow-up:0 2px 4px rgba(0,0,0,.3),0 10px 24px rgba(0,0,0,.35);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:1.5px solid var(--line-2);border-radius:12px;transition:border-color .15s,box-shadow .15s}
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:1.5px solid var(--ink);border-radius:12px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .15s,box-shadow .15s,background-color .15s}
.btn.primary{background:var(--yellow);border-color:var(--yellow);color:#1b1a17;box-shadow:0 1px 2px rgba(27,26,23,.08),0 4px 14px rgba(247,194,59,.28)}
@media (hover:hover){.btn.primary:hover{box-shadow:0 2px 4px rgba(27,26,23,.1),0 8px 22px rgba(247,194,59,.38)}}
.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:12px}
.foot{margin:36px 0 0;font-size:14px;color:var(--muted)}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
.link{text-align:center;text-decoration:none}
