:root{--paper:#f3f2ea;--card:#faf9f4;--ink:#1b1e24;--muted:#6b7066;--hairline:#d9d6c9;--green:#0f7a5c;--green-deep:#0c6a50;--green-tint:#0f7a5c14;--thread:#b23a48;--sans:"Public Sans",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--mono:"IBM Plex Mono","Cascadia Mono",Consolas,"SF Mono",ui-monospace,monospace;--container:1140px;--gutter:28px;--section-pad:clamp(88px,12vh,140px);--radius-card:12px;--radius-tile:10px;--shadow-card:0 24px 48px -12px rgba(27,30,36,0.16),0 4px 12px rgba(27,30,36,0.05);--shadow-soft:0 14px 32px rgba(27,30,36,0.07);--ease-out:cubic-bezier(0.22,0.61,0.36,1);--ease-stamp:cubic-bezier(0.34,1.4,0.5,1);--danger:var(--thread);--danger-tint:#b23a4814;--radius-input:8px;--field-h:52px}@font-face{font-family:Public Sans;src:url(/fonts/public-sans-latin-wght-normal.woff2) format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-latin-600-normal.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body,html{background:var(--paper)}body{margin:0;min-height:100dvh;font-family:var(--sans);font-size:17px;line-height:1.6;color:var(--ink);border-top:3px solid var(--thread);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img,svg{display:block;max-width:100%}h1,h2,h3{text-wrap:balance;margin:0}h1{font-size:clamp(30px,5vw,44px);font-weight:750;letter-spacing:-.03em;line-height:1.04}h2{font-size:clamp(22px,3vw,30px);font-weight:700;letter-spacing:-.02em}a{color:var(--green)}button{font-family:inherit}::selection{background:rgba(15,122,92,.18)}:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:2px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.eyebrow{display:flex;align-items:baseline;gap:14px;margin:0 0 18px;font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--green)}.eyebrow .idx{color:var(--muted);font-weight:400}.mrz{font-family:var(--mono);font-size:12px;letter-spacing:.18em;white-space:nowrap;overflow:hidden;text-overflow:clip;-webkit-user-select:none;-moz-user-select:none;user-select:none;line-height:1.8}.lede,.mrz{color:var(--muted)}.lede{font-size:17px;line-height:1.6;max-width:46ch}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-family:var(--sans);font-size:15px;font-weight:600;line-height:1;letter-spacing:.01em;text-decoration:none;padding:15px 26px;border-radius:var(--radius-input);border:1px solid var(--green);background:var(--green);color:#ffffff;transition:background .15s ease,border-color .15s ease,opacity .15s ease;cursor:pointer}.btn:hover{background:var(--green-deep);border-color:var(--green-deep)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.ghost{background:transparent;color:var(--green)}.btn.ghost:hover{background:var(--green-tint)}.btn.block{width:100%}.btn.lg{padding:17px 30px;font-size:16px}.tile{background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius-tile);padding:22px 20px 18px}.tile .k{display:block;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.14em;color:var(--green);margin-bottom:10px}.tile h3{font-size:16px;font-weight:650;letter-spacing:-.01em;margin-bottom:6px}.tile p{font-size:14px;line-height:1.55;color:var(--muted);margin:0}.app-shell{min-height:calc(100dvh - 3px);flex-direction:column;padding:clamp(16px,4vh,48px) 18px 64px}.app-shell,.brandbar{display:flex;align-items:center}.brandbar{justify-content:space-between;margin-bottom:20px}.brandbar,.doc{width:100%;max-width:480px}.doc{background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);padding:clamp(22px,5vw,34px);position:relative;overflow:hidden}.doc:before{content:attr(data-form);position:absolute;top:12px;right:16px;font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;color:var(--muted);opacity:.7;text-transform:uppercase}.doc-head{margin-bottom:22px}.doc-title{margin-bottom:10px}.stepper{display:flex;margin-bottom:22px;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap}.stepper,.stepper .node{align-items:center;gap:6px}.stepper .node{display:inline-flex}.stepper .dot{width:8px;height:8px;border-radius:999px;border:1px solid var(--hairline);background:transparent}.stepper .node.done .dot{background:var(--green);border-color:var(--green)}.stepper .node.active .dot{border-color:var(--green);box-shadow:0 0 0 3px var(--green-tint)}.stepper .node.active{color:var(--ink)}.stepper .dot.done{background:var(--green);border-color:var(--green)}.stepper .dot.active{border-color:var(--green);box-shadow:0 0 0 3px var(--green-tint)}.stepper .sep{flex:1 1;height:1px;min-width:8px;background:var(--hairline)}.field{margin-bottom:16px}.field-label,.field>label{display:block;font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.input,.select{width:100%;height:var(--field-h);padding:0 14px;font-family:var(--sans);font-size:16px;color:var(--ink);background:#fff;border:1px solid var(--hairline);border-radius:var(--radius-input);transition:border-color .15s ease,box-shadow .15s ease}.input:focus,.select:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--green-tint)}.input.err{border-color:var(--danger)}.otp{display:flex;gap:8px}.otp input{flex:1 1;height:58px;min-width:0;text-align:center;font-family:var(--mono);font-size:24px;font-weight:500;color:var(--ink);background:#fff;border:1px solid var(--hairline);border-radius:var(--radius-input)}.otp input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--green-tint)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;background:#fff;border:1px solid var(--hairline);border-radius:999px;font-size:13px;color:var(--ink)}.chip svg{color:var(--green)}.pill{display:inline-flex;align-items:center;gap:8px;padding:5px 12px;border-radius:999px;background:var(--green);color:#fff;font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase}.pill.muted{background:transparent;color:var(--muted);border:1px solid var(--hairline)}.pill.danger{background:var(--danger)}.stamp{display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;border:3px double var(--green);border-radius:8px;color:var(--green);font-family:var(--mono);font-weight:600;font-size:20px;letter-spacing:.18em;text-transform:uppercase;transform:rotate(-6deg)}@media (prefers-reduced-motion:no-preference){.stamp.seal{animation:seal .5s var(--ease-stamp) both}}@keyframes seal{0%{opacity:0;transform:rotate(-6deg) scale(1.6)}to{opacity:1;transform:rotate(-6deg) scale(1)}}.stage{position:relative;width:100%;border-radius:var(--radius-card);overflow:hidden;background:#0d0f12;border:1px solid var(--hairline)}.stage.doc-ratio{aspect-ratio:85.6/54}.stage.portrait-ratio{aspect-ratio:3/4}@media (min-width:720px){.stage.portrait-ratio{width:min(100%,380px,calc((100vh - 340px) * .75));margin-inline:auto}}.stage canvas,.stage img,.stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.stage .guide{position:absolute;inset:7% 5%;border:2px solid rgba(255,255,255,.85);border-radius:10px;box-shadow:0 0 0 100vmax rgba(6,8,10,.45);pointer-events:none}.stage.portrait-ratio .guide{inset:8% 14%;border-radius:50%}.stage .guide.ok{border-color:var(--green)}.stage .scanline{position:absolute;left:0;right:0;height:2px;background:var(--green);box-shadow:0 0 12px 1px rgba(15,122,92,.9);opacity:0}@media (prefers-reduced-motion:no-preference){.stage.scanning .scanline{opacity:1;animation:scan 1.7s var(--ease-out) infinite}}@keyframes scan{0%{top:6%;opacity:0}12%{opacity:1}88%{opacity:1}to{top:94%;opacity:0}}.stage .scanwash{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .35s var(--ease-out),background .45s linear}.stage[data-scan] .scanwash{opacity:1}.stage[data-scan=r] .scanwash{background:radial-gradient(ellipse at center,transparent 34%,rgba(224,49,68,.34) 100%)}.stage[data-scan=g] .scanwash{background:radial-gradient(ellipse at center,transparent 34%,rgba(21,178,120,.34) 100%)}.stage[data-scan=b] .scanwash{background:radial-gradient(ellipse at center,transparent 34%,rgba(43,108,224,.36) 100%)}.stage .scan-ring{position:absolute;inset:8% 14%;width:auto;height:auto;overflow:visible;pointer-events:none}.stage .scan-ring ellipse{fill:none;stroke:var(--green);stroke-width:3.5px;stroke-linecap:round;vector-effect:non-scaling-stroke;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset .22s linear;transform:rotate(-90deg);transform-origin:50% 50%;filter:drop-shadow(0 0 7px rgba(15,122,92,.85))}.stage .capture-flash{position:absolute;inset:0;pointer-events:none;background:#fff;opacity:0;animation:capture-flash .36s var(--ease-out)}@keyframes capture-flash{0%{opacity:.92}to{opacity:0}}@media (prefers-reduced-motion:reduce){.stage .capture-flash,.stage .scanwash{display:none}.stage .scan-ring ellipse{transition:none}}.stage .countdown{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}.stage .countdown span{font-family:var(--font-mono,ui-monospace,monospace);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:72px;font-weight:700;color:#fff;text-shadow:0 2px 18px rgba(0,0,0,.65)}@media (prefers-reduced-motion:no-preference){.stage .countdown span{animation:countdown-pop .32s var(--ease-out)}}@keyframes countdown-pop{0%{transform:scale(1.45);opacity:.2}to{transform:scale(1);opacity:1}}.stage .challenge-rail{position:absolute;top:12px;left:50%;transform:translateX(-50%);display:flex;gap:6px}.stage .challenge-rail span{width:32px;height:4px;border-radius:999px;background:rgba(255,255,255,.35);transition:background .2s var(--ease-out)}.stage .challenge-rail span[data-done=true]{background:var(--green);box-shadow:0 0 8px rgba(15,122,92,.7)}.stage .hint{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);padding:7px 14px;border-radius:999px;background:rgba(6,8,10,.7);color:#fff;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-align:center;white-space:nowrap}.shutter{width:66px;height:66px;border-radius:999px;background:#fff;border:4px solid var(--green);cursor:pointer;margin:18px auto 0;display:block;transition:transform .1s ease}.shutter:active{transform:scale(.93)}.shutter:disabled{opacity:.5;cursor:not-allowed}.receipt dl{margin:18px 0 0;display:grid;grid-template-columns:auto 1fr;grid-gap:10px 16px;gap:10px 16px;font-family:var(--mono);font-size:12px}.receipt dt{color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.receipt dd{margin:0;color:var(--ink);text-align:right;word-break:break-all}.qr-panel{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px}.qr-frame{padding:14px;background:#fff;border:1px solid var(--hairline);border-radius:var(--radius-card)}.qr-frame canvas,.qr-frame img{width:220px;height:220px}.bridge-rail{display:flex;gap:6px;align-items:center;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.stack{display:flex;flex-direction:column}.stack.gap-sm>*+*{margin-top:10px}.stack.gap-md>*+*{margin-top:16px}.stack.gap-lg>*+*{margin-top:24px}.row{display:flex;gap:12px}.row.wrap{flex-wrap:wrap}.center{text-align:center}.muted{color:var(--muted)}.mono{font-family:var(--mono)}.error-note{color:var(--danger);font-size:14px;margin:8px 0 0}.notice{padding:12px 14px;border-radius:var(--radius-input);border:1px solid var(--hairline);background:var(--card);font-size:14px;color:var(--muted)}.notice.warn{border-color:var(--danger);background:var(--danger-tint);color:var(--ink)}.spinner{width:34px;height:34px;border-radius:999px;border:3px solid var(--hairline);border-top-color:var(--green);margin:0 auto}@media (prefers-reduced-motion:no-preference){.spinner{animation:spin .8s linear infinite}}@keyframes spin{to{transform:rotate(1turn)}}.link-btn{background:none;border:0;color:var(--green);font-size:14px;cursor:pointer;padding:4px;font-family:var(--sans)}.link-btn:hover{text-decoration:underline}