:root{
  --bg:#F2F4F9; --surface:#FFFFFF; --surface-2:#E9EDF5; --ink:#161F38; --muted:#586179; --line:#C9D0E0;
  --navy:#1B3360; --gold:#BF950F; --gold-soft:#FBF1D8; --link:#1F4E9C;
  --ok:#1C7A49; --bad:#B42318; --bad-soft:#FDE8E6; --ok-soft:#E3F4EA; --warn-soft:#FFF3D6; --warn:#9A6700;
  --btn:#1B3360; --on-btn:#FFFFFF; --shadow:0 1px 2px rgba(22,31,56,.06),0 8px 28px rgba(22,31,56,.10);
  --f-display:"DM Sans","Segoe UI",system-ui,-apple-system,Arial,sans-serif;
  --f-body:"Public Sans","Segoe UI",system-ui,-apple-system,Arial,sans-serif;
  --f-mono:"DM Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0D1324; --surface:#151D33; --surface-2:#1D2744; --ink:#E8ECF6; --muted:#A4AEC8; --line:#33406A;
  --gold-soft:#2B2410; --link:#8DB0F2; --ok:#52C784; --bad:#F2796D; --bad-soft:#3A1A17; --ok-soft:#12301F; --warn-soft:#2E2610; --warn:#E5B63F;
  --btn:#E3B93C; --on-btn:#1A2240; --shadow:0 1px 2px rgba(0,0,0,.35),0 8px 28px rgba(0,0,0,.35); color-scheme:dark}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--ink);font:400 16px/1.55 var(--f-body);-webkit-font-smoothing:antialiased}
.band{background:var(--navy);padding-top:env(safe-area-inset-top,0px);border-bottom:3px solid var(--gold)}
.band-in{max-width:980px;margin:0 auto;display:flex;align-items:center;gap:14px;height:58px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.band img{height:26px;width:auto;display:block}
.band-sub{font:500 .7rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:#E7C766;border-left:1px solid rgba(255,255,255,.3);padding-left:14px}
.stage{flex:1;display:flex;flex-direction:column;align-items:center;padding:28px max(16px,env(safe-area-inset-left,0px)) 28px max(16px,env(safe-area-inset-right,0px));gap:18px}
.card{width:100%;max-width:460px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:26px 24px 24px}
h1{font:700 1.5rem/1.2 var(--f-display);margin:0 0 6px;letter-spacing:-.01em;text-wrap:balance}
h2{font:700 1.05rem/1.3 var(--f-display);margin:18px 0 6px}
p{margin:0 0 12px}
.muted{color:var(--muted)}
.lead{color:var(--muted);margin-bottom:18px}
.kicker{font:500 .72rem/1.2 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
label{display:block;font:600 .9rem/1.3 var(--f-display);margin:14px 0 5px}
input[type=email],input[type=password],input[type=text],input[type=tel]{width:100%;height:46px;padding:0 12px;border:1.5px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit}
input:focus{outline:3px solid var(--gold);outline-offset:1px;border-color:var(--navy)}
.pw{position:relative}
.pw input{padding-right:78px}
.pw button{position:absolute;right:6px;top:6px;height:34px;padding:0 10px;border:0;border-radius:8px;background:var(--surface-2);color:var(--ink);font:600 .8rem var(--f-display);cursor:pointer}
.code{font:500 1.6rem/1 var(--f-mono);letter-spacing:.35em;text-align:center}
button.primary{width:100%;height:48px;margin-top:18px;border:0;border-radius:10px;background:var(--btn);color:var(--on-btn);font:700 1rem var(--f-display);cursor:pointer}
button.primary:hover:not(:disabled){filter:brightness(1.1)}
button.primary:disabled{opacity:.55;cursor:default}
button.link{border:0;background:none;color:var(--link);font:inherit;text-decoration:underline;cursor:pointer;padding:6px 0}
button.ghost{height:40px;padding:0 14px;border:1.5px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:600 .9rem var(--f-display);cursor:pointer}
button.ghost:hover{background:var(--surface-2)}
.row{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.msg{margin-top:14px;padding:11px 13px;border-radius:10px;border-left:4px solid var(--bad);background:var(--bad-soft);font-size:.94rem}
.msg.ok{border-color:var(--ok);background:var(--ok-soft)}
.msg.warn{border-color:var(--warn);background:var(--warn-soft)}
.msg:empty{display:none}
.rules{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:4px;font-size:.88rem}
.rules li{display:flex;gap:8px;align-items:flex-start;color:var(--muted)}
.rules li::before{content:"";flex:0 0 14px;height:14px;margin-top:3px;border-radius:50%;border:2px solid var(--line)}
.rules li.on{color:var(--ink)}
.rules li.on::before{background:var(--ok);border-color:var(--ok)}
.steps{display:flex;gap:6px;margin:0 0 16px;padding:0;list-style:none}
.steps li{flex:1;height:5px;border-radius:3px;background:var(--surface-2)}
.steps li.on{background:var(--gold)}
.qrbox{display:flex;flex-direction:column;align-items:center;gap:10px;margin:14px 0}
.qrbox svg{width:200px;height:200px;border:1px solid var(--line);border-radius:8px;background:#fff}
.key{font:500 .95rem/1.5 var(--f-mono);letter-spacing:.06em;word-break:break-all;text-align:center;background:var(--surface-2);padding:8px 10px;border-radius:8px;user-select:all}
.codes{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;padding:14px;border:1.5px dashed var(--line);border-radius:10px;background:var(--surface-2);font:500 1rem/1.2 var(--f-mono);letter-spacing:.08em}
.codes span{padding:4px 2px;text-align:center;user-select:all}
.check{display:flex;gap:10px;align-items:flex-start;margin-top:14px;font-weight:500}
.check input{width:20px;height:20px;margin-top:2px;accent-color:var(--navy)}
.who{font-weight:600}
.foot{max-width:460px;text-align:center;color:var(--muted);font-size:.82rem;margin:0}
.noscript{padding:16px;text-align:center}
@media (max-width:420px){.card{padding:22px 16px 20px}.codes{grid-template-columns:1fr}}
@media print{
  body *{visibility:hidden}
  #printable,#printable *{visibility:visible}
  #printable{position:absolute;left:0;top:0;width:100%;padding:24px}
  .band,.foot{display:none}
}
