/* Vendor app styles: portrait phone, dark, big touch targets (at least 56 px buttons), clear green / red / grey result badges. */
* { box-sizing: border-box; }
body { margin: 0; min-height: 100dvh; background: #0f172a; color: #f8fafc; font: 17px/1.4 system-ui, sans-serif; }
.top { display: flex; align-items: center; gap: 10px; padding: max(12px, env(safe-area-inset-top)) 16px 12px; background: #020617; }
.brand { font-weight: 800; } .who { margin-left: auto; opacity: .8; font-size: 15px; }
main { padding: 16px; max-width: 480px; margin: 0 auto; }
.screen { display: flex; flex-direction: column; gap: 14px; }
.screen[hidden] { display: none; }
h1, h2 { margin: 4px 0; }
label { display: flex; flex-direction: column; gap: 6px; font-weight: 600; }
input { font: inherit; font-size: 20px; padding: 14px; border-radius: 12px; border: 2px solid #334155; background: #1e293b; color: inherit; }
#code-input { text-transform: uppercase; letter-spacing: .08em; font-family: ui-monospace, monospace; }
.btn { min-height: 56px; border: 0; border-radius: 14px; font: 800 19px/1 system-ui, sans-serif; background: #334155; color: #fff; cursor: pointer; width: 100%; }
.btn.primary { background: #2563eb; } .btn.redeem { background: #16a34a; min-height: 72px; font-size: 24px; }
.btn:disabled { opacity: .5; }
.link { background: none; border: 0; color: #93c5fd; font: inherit; cursor: pointer; }
.error { color: #fca5a5; font-weight: 700; margin: 0; }
.cam { position: relative; aspect-ratio: 1; width: 100%; border-radius: 16px; overflow: hidden; background: #000; }
.cam video { width: 100%; height: 100%; object-fit: cover; }
.aim { position: absolute; inset: 15%; border: 4px solid rgba(255,255,255,.8); border-radius: 16px; }
.cam-msg { position: absolute; left: 0; right: 0; bottom: 8px; margin: 0; text-align: center; font-weight: 600; text-shadow: 0 1px 3px #000; padding: 0 12px; }
.code-form { display: flex; flex-direction: column; gap: 10px; }
.badge { align-self: flex-start; padding: 8px 16px; border-radius: 999px; font-weight: 900; font-size: 20px; background: #475569; }
.badge.ok { background: #16a34a; } .badge.bad { background: #dc2626; } .badge.done { background: #ca8a04; color: #111; }
.value { font-size: 22px; font-weight: 800; margin: 0; } .note { margin: 0; padding: 12px; border-radius: 12px; background: #1e293b; }
.meta { margin: 0; opacity: .85; } .code { margin: 0; font-family: ui-monospace, monospace; opacity: .7; }
.lang { margin-left: 10px; background: transparent; color: inherit; border: 1px solid rgba(255,255,255,.35); border-radius: 8px; font-size: 14px; padding: 4px 6px; } .lang option { color: #0f172a; }

label.showpw { display: flex; flex-direction: row; align-items: center; gap: 0.5rem; font-weight: 500; font-size: 0.95rem; cursor: pointer; }
label.showpw input { width: 1.2rem; height: 1.2rem; min-height: 0; margin: 0; }
select.org { font: inherit; font-size: 18px; padding: 12px; border-radius: 12px; border: 2px solid #334155; background: #1e293b; color: inherit; }
label[hidden] { display: none; }
