:root{--brand:#401d68;--accent:#ffbf3f;--ink:#172640;--muted:#5d6f89;--surface:#fff;--line:#dbe3ef;--background:#f3f5f9}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:linear-gradient(145deg,#e9defb 0,#f5f6fa 42%,#eef3fa 100%);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,sans-serif}.portal-shell{width:min(680px,100%);min-height:100vh;margin:auto;padding:24px 18px 44px}.portal-header{display:flex;align-items:center;gap:12px;color:#fff;background:linear-gradient(135deg,var(--brand),#68308f);padding:18px;border-radius:20px 20px 10px 10px;box-shadow:0 14px 38px #32105b30}.brand-mark{display:grid;place-items:center;width:40px;height:40px;border-radius:13px;background:var(--accent);color:#351559;font-size:20px}.portal-header strong,.portal-header small{display:block}.portal-header small{margin-top:3px;opacity:.78;font-size:12px}.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:30px;box-shadow:0 16px 40px #263b5e14}.hero{margin-top:14px}.eyebrow{color:var(--brand);font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.hero h1{font-size:clamp(30px,7vw,44px);letter-spacing:-.04em;line-height:1.05;margin:10px 0 16px}.hero p:last-child{color:var(--muted);font-size:17px;line-height:1.55}@media(max-width:420px){.portal-shell{padding:12px}.card{padding:22px}}
.summary{margin:24px 0;border-top:1px solid var(--line)}.summary div{display:flex;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.summary dt{color:var(--muted)}.summary dd{margin:0;font-variant-numeric:tabular-nums;font-weight:700}.summary .total{font-size:19px}.expiry,.fine-print{font-size:14px;color:var(--muted)}button.primary{width:100%;border:0;border-radius:12px;padding:15px 18px;background:var(--brand);color:#fff;font:inherit;font-weight:800;cursor:pointer}button.primary:disabled{opacity:.65;cursor:wait}.outcome{margin-top:22px;padding:16px;border-radius:12px;background:#fff5db;color:#614700}.outcome.success{background:#e6f6ec;color:#164c2c}.outcome h2{margin:0 0 6px}
.receipt{margin-top:18px;padding:18px;border:1px solid var(--line);border-radius:12px;text-align:center}.receipt h2{margin:6px 0 12px}.receipt p:last-child{font-size:14px;color:var(--muted)}.receipt-qr{width:min(260px,100%);height:auto;background:#fff;padding:8px;border-radius:8px}
