:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f6f1;--ink:#1d1c18;--muted:#6f6a5f;--line:#d9d2c3;--surface:#fffdf8;--accent:#0f766e;--accent-dark:#115e59;--danger:#b91c1c;--ok:#15803d;--soft-teal:#dff3ef}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,textarea,select{font:inherit}.redeem-shell{perspective:2400px;background:linear-gradient(#ede7dc 1px, transparent 1px), linear-gradient(90deg, #ede7dc 1px, transparent 1px), var(--bg);background-size:44px 44px;place-items:center;min-height:100svh;padding:32px;display:grid}.redeem-stage{border:1px solid var(--line);transform-origin:50%;width:min(1120px,100%);min-height:640px;transform-style:preserve-3d;backface-visibility:hidden;will-change:transform, opacity;background:#fffdf8eb;border-radius:8px;grid-template-columns:minmax(360px,520px) minmax(360px,1fr);align-items:stretch;gap:24px;display:grid;overflow:hidden;box-shadow:0 24px 70px #1d1c181a}.redeem-stage.is-flip-out{pointer-events:none;animation:.24s cubic-bezier(.55,.08,.62,.92) forwards pageFlipOut}.redeem-stage.is-flip-in{pointer-events:none;animation:.28s cubic-bezier(.18,.82,.3,1) forwards pageFlipIn}.redeem-copy{flex-direction:column;justify-content:center;padding:46px;display:flex}.redeem-visual{border-left:1px solid var(--line);background:radial-gradient(circle at 50% 45%,#0f766e1c,#0000 38%),linear-gradient(135deg,#ffffffb3,#e8e2d66b);align-content:center;place-items:center;gap:26px;min-height:100%;padding:42px;display:grid;position:relative}.brand-row{color:var(--accent-dark);align-items:center;gap:10px;font-weight:800;display:flex}h1{letter-spacing:0;margin:18px 0 8px;font-size:clamp(34px,5vw,64px);line-height:.96}.lede{color:var(--muted);margin:0 0 30px;font-size:16px}.form-stack{gap:16px;display:grid}label{gap:8px;font-weight:800;display:grid}.field-help{color:var(--muted);font-size:12px;font-weight:700}input,textarea,select{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:6px;outline:none;padding:13px 14px;transition:border-color .18s,box-shadow .18s,transform .18s}input:focus,textarea:focus,select:focus{border-color:#0f766eb8;box-shadow:0 0 0 4px #0f766e1c}textarea{resize:vertical;min-height:138px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}button{cursor:pointer;border:0;border-radius:6px}button:disabled{opacity:.55;cursor:not-allowed}.primary{background:var(--accent);color:#fff;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 18px;font-weight:800;transition:transform .18s,box-shadow .18s,background .18s;display:inline-flex}.primary:hover:not(:disabled){background:var(--accent-dark);transform:translateY(-1px);box-shadow:0 10px 24px #0f766e33}.redeem-action{min-height:48px}.secondary-action{border:1px solid var(--line);min-height:44px;color:var(--accent-dark);cursor:pointer;background:#fff;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:800;text-decoration:none;display:inline-flex}.secondary-action:hover:not(:disabled){background:var(--soft-teal);border-color:#0f766e73}.token-actions{align-items:center;gap:10px;display:flex}.redeem-mode-switch{border:1px solid var(--line);background:#ffffff94;border-radius:8px;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:6px;display:grid}.redeem-mode-switch button,.batch-deck-head button{min-height:38px;color:var(--muted);background:0 0;font-weight:900}.redeem-mode-switch button.active,.batch-deck-head button.active{background:var(--accent);color:#fff;box-shadow:0 8px 20px #0f766e26}.cdk-pool{border:1px solid var(--line);background:#fffdf89e;border-radius:8px;gap:10px;padding:12px;display:grid}.pool-head{color:var(--accent-dark);justify-content:space-between;align-items:center;gap:12px;font-weight:800;display:flex}.pool-head strong{background:var(--soft-teal);border:1px solid #0f766e3d;border-radius:999px;place-items:center;min-width:28px;height:24px;font-size:12px;display:grid}.pool-add{grid-template-columns:1fr auto;align-items:stretch;gap:8px;display:grid}.pool-add textarea{min-height:58px;max-height:110px;font-size:12px}.pool-add-button{background:var(--ink);min-width:82px;color:var(--surface);justify-content:center;align-items:center;gap:6px;padding:0 14px;font-weight:800;display:inline-flex}.pool-add-button:hover:not(:disabled){background:var(--accent-dark)}.pool-notice{color:var(--muted);margin:-2px 0 0;font-size:12px;font-weight:800}.pool-stack{gap:8px;max-height:172px;padding-right:2px;display:grid;overflow:auto}.pool-ticket{background:linear-gradient(90deg,#0f766e14,#0000 38%),#fff;border:1px solid #d9d2c3eb;border-radius:8px;grid-template-columns:1fr 38px;align-items:stretch;min-height:42px;transition:transform .18s,border-color .18s,box-shadow .18s;display:grid;position:relative;overflow:hidden}.pool-ticket:before,.pool-ticket:after{content:"";background:var(--surface);border:1px solid var(--line);z-index:1;border-radius:999px;width:12px;height:12px;position:absolute;top:50%;transform:translateY(-50%)}.pool-ticket:before{left:-7px}.pool-ticket:after{right:-7px}.pool-ticket.active{border-color:#0f766eb8;box-shadow:0 8px 24px #0f766e1f}.pool-ticket.consuming{pointer-events:none;animation:.62s ease-in forwards ticket-consume}.pool-ticket.consuming .ticket-select:after{content:"";background:linear-gradient(110deg,#0000 0%,#15803d38 42%,#15803d61 50%,#0000 70%);animation:.46s ease-out forwards ticket-sweep;position:absolute;inset:0;transform:translate(-110%)}.ticket-select,.ticket-remove{color:var(--ink);background:0 0;border-radius:0;position:relative}.ticket-select{text-align:left;align-items:center;gap:8px;min-width:0;padding:0 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;font-weight:800;display:flex}.ticket-select span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ticket-remove{border-left:1px dashed var(--line);color:var(--muted);place-items:center;display:grid}.ticket-remove:hover:not(:disabled){color:var(--danger);background:#b91c1c14}.pool-empty{min-height:40px;color:var(--muted);border:1px dashed var(--line);border-radius:8px;place-items:center;font-size:13px;font-weight:800;display:grid}.mode-flip-shell,.mode-panel{gap:16px;display:grid}.batch-card.is-flip-out{pointer-events:none;animation:.24s cubic-bezier(.55,.08,.62,.92) forwards pageFlipOut}.batch-card.is-flip-in{pointer-events:none;animation:.28s cubic-bezier(.18,.82,.3,1) forwards pageFlipIn}.batch-deck{perspective:2400px}.batch-deck-head{color:var(--muted);grid-template-columns:1fr 18px 1fr;align-items:center;gap:8px;margin-bottom:10px;display:grid}.batch-card{border:1px solid var(--line);min-height:338px;transform-style:preserve-3d;transform-origin:50%;backface-visibility:hidden;will-change:transform, opacity;background:linear-gradient(135deg,#ffffffb8,#dff3ef38),#fffdf8;border-radius:8px;overflow:hidden}.batch-upload,.batch-redeem{align-content:center;gap:14px;min-height:338px;padding:18px;display:grid}.batch-upload{text-align:center;background:#ffffff8f;border:1px dashed #0f766e42;border-radius:8px;place-items:center;min-height:310px;margin:14px;transition:border-color .18s,background .18s,transform .18s}.batch-upload.dragging{background:#dff3efad;border-color:#0f766eb8;transform:translateY(-1px)}.batch-upload strong{font-size:20px}.batch-upload span{max-width:360px;color:var(--muted);font-size:13px;font-weight:800;line-height:1.5}.batch-upload-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.batch-manual{grid-template-columns:minmax(0,1fr) auto;align-items:stretch;gap:10px;width:min(420px,100%);display:grid}.batch-manual textarea{min-height:72px;max-height:120px;font-size:12px}.batch-manual .secondary-action{min-width:104px}.manual-stack{gap:8px;width:min(420px,100%);display:grid}.manual-stack-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.manual-stack-head span{color:var(--accent-dark);font-size:13px;font-weight:900}.manual-stack-head .secondary-action{min-height:34px;padding:0 12px;font-size:12px}.manual-stack-list{gap:6px;max-height:138px;display:grid;overflow:auto}.manual-token-row{border:1px solid var(--line);text-align:left;background:#fff;border-radius:8px;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:8px;min-height:38px;padding:7px 8px;display:grid}.manual-token-row strong{background:var(--soft-teal);width:24px;height:24px;color:var(--accent-dark);border-radius:999px;place-items:center;font-size:12px;display:grid}.manual-token-row span{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ink);font-size:12px;font-weight:900;overflow:hidden}.manual-token-row button{min-height:26px;color:var(--danger);background:#b91c1c14;padding:0 8px;font-size:12px;font-weight:900}.batch-scan{width:min(260px,100%);height:auto}.scan-frame{fill:#fff;stroke:var(--line);stroke-width:2px}.scan-line{stroke:var(--accent-dark);stroke-width:6px;stroke-linecap:round;opacity:.42}.scan-beam{stroke:var(--ok);stroke-width:4px;stroke-linecap:round;filter:drop-shadow(0 0 8px #15803d73);animation:1.45s ease-in-out infinite scan-slide}.scan-dot{fill:var(--accent);opacity:.45}.batch-scan.active .scan-dot{animation:.9s ease-in-out infinite dot-pulse}.batch-scan.active .scan-dot.b{animation-delay:.12s}.batch-scan.active .scan-dot.c{animation-delay:.24s}.batch-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.batch-summary div{border:1px solid var(--line);background:#fff;border-radius:8px;align-content:center;min-height:62px;padding:10px;display:grid}.batch-summary strong{font-size:24px}.batch-summary span{color:var(--muted);font-size:12px;font-weight:900}.batch-summary .danger strong{color:var(--danger)}.batch-list,.submitted-list{gap:8px;max-height:210px;display:grid;overflow:auto}.batch-row,.submitted-row{border:1px solid var(--line);background:#fff;border-radius:8px;align-items:center;gap:10px;min-height:48px;padding:9px 10px;display:grid}.batch-row{grid-template-columns:18px minmax(0,1fr) auto;animation:.24s ease-out both row-rise}.batch-row div{gap:3px;min-width:0;display:grid}.batch-row strong,.batch-row span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.batch-row span,.submitted-row em{color:var(--muted);font-size:12px;font-style:normal;font-weight:800}.batch-row button{min-height:30px;color:var(--danger);background:#b91c1c14;padding:0 10px;font-weight:900}.batch-empty{border:1px dashed var(--line);min-height:70px;color:var(--muted);border-radius:8px;place-items:center;font-weight:900;display:grid}.batch-progress{background:#dff3ef75;border:1px solid #0f766e38;border-radius:8px;grid-template-columns:76px 1fr;align-items:center;gap:12px;padding:12px;display:grid}.progress-ring{background:radial-gradient(circle at center, #fff 0 57%, transparent 58%), conic-gradient(var(--accent) var(--progress), #0f766e1f 0);border-radius:999px;place-items:center;width:70px;height:70px;display:grid}.progress-copy{gap:4px;display:grid}.progress-copy span{color:var(--muted);font-size:12px;font-weight:800}.submitted-list{grid-column:1/-1}.submitted-row{grid-template-columns:minmax(0,1fr) minmax(120px,.8fr) auto;font-size:12px}.submitted-row span,.submitted-row em{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.submitted-row.joined strong{color:var(--ok)}.submitted-row.failed strong{color:var(--danger)}.submitted-row.running strong{color:var(--accent-dark)}.batch-notice,.batch-issues{color:var(--muted);margin:8px 0 0;font-size:12px;font-weight:900;line-height:1.45}.batch-issues{color:var(--danger)}.status-line{min-height:44px;color:var(--muted);align-items:center;gap:10px;margin-top:18px;display:flex}.status-line.success{color:var(--ok)}.status-line.failed,.error{color:var(--danger)}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.redeem-svg{width:min(430px,100%);height:auto;overflow:visible}.svg-panel{fill:#fffdf8d1;stroke:var(--line);stroke-width:1.5px}.svg-cable{fill:none;stroke:#d8d0bf;stroke-width:8px;stroke-linecap:round}.svg-cable-active{fill:none;stroke:url(#tealStroke);stroke-width:8px;stroke-linecap:round;stroke-dasharray:52 180;opacity:0;animation:1.35s ease-in-out infinite cable-flow}.redeem-svg.submitting .svg-cable-active,.redeem-svg.processing .svg-cable-active,.redeem-svg.success .svg-cable-active{opacity:1}.credential-node rect,.benefit-node rect{fill:#fff;stroke:#cfc6b4;stroke-width:1.5px}.credential-node path,.benefit-node path{stroke:var(--accent-dark);stroke-width:5px;stroke-linecap:round}.orbit{transform-origin:180px 140px}.orbit circle:first-child{fill:none;stroke:#0f766e33;stroke-width:1.5px;stroke-dasharray:8 9}.orbit-dot{fill:var(--accent);filter:url(#softGlow);opacity:.72}.orbit.is-busy{animation:1.8s linear infinite orbit-spin}.redeem-packets circle{fill:var(--accent);opacity:0;animation:1.15s ease-in-out infinite packet-pop}.redeem-packets circle:nth-child(2){animation-delay:.14s}.redeem-packets circle:nth-child(3){animation-delay:.28s}.redeem-packets circle:nth-child(4){animation-delay:.42s}.success-mark circle{fill:#15803d1a;stroke:var(--ok);stroke-width:2px;transform-origin:180px 140px;animation:.75s ease-out both success-pulse}.success-mark path{fill:none;stroke:var(--ok);stroke-width:9px;stroke-linecap:round;stroke-linejoin:round}.success-mark path:not(.burst){stroke-dasharray:92;stroke-dashoffset:92px;animation:.52s ease-out .16s forwards draw-check}.success-mark .burst{stroke-width:4px;opacity:0;animation:.55s ease-out .32s forwards burst}.success-mark .b2{animation-delay:.36s}.success-mark .b3{animation-delay:.4s}.success-mark .b4{animation-delay:.44s}.success-mark .b5{animation-delay:.48s}.failed-mark circle{fill:#b91c1c14;stroke:var(--danger);stroke-width:2px}.failed-mark path{fill:none;stroke:var(--danger);stroke-width:8px;stroke-linecap:round}.step-rail{border:1px solid var(--line);background:var(--line);grid-template-columns:repeat(3,1fr);gap:1px;width:min(420px,100%);display:grid}.step-rail span{min-height:42px;color:var(--muted);background:#fffdf8d1;place-items:center;font-size:13px;font-weight:800;display:grid}.step-rail span.active{color:var(--accent-dark);background:var(--soft-teal)}.step-rail span.done{color:var(--ok)}@keyframes cable-flow{0%{stroke-dashoffset:210px}to{stroke-dashoffset:0}}@keyframes orbit-spin{to{transform:rotate(360deg)}}@keyframes packet-pop{0%,to{opacity:0;transform:translateY(7px)scale(.72)}35%,70%{opacity:1;transform:translateY(0)scale(1)}}@keyframes success-pulse{0%{opacity:0;transform:scale(.72)}60%{opacity:1;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes draw-check{to{stroke-dashoffset:0}}@keyframes burst{0%{opacity:0;transform:scale(.82)}55%{opacity:1}to{opacity:0;transform:scale(1.18)}}@keyframes ticket-sweep{to{transform:translate(110%)}}@keyframes ticket-consume{0%{opacity:1;max-height:48px;transform:translate(0)scale(1)}45%{opacity:1;max-height:48px;transform:translate(8px)scale(.985)}to{opacity:0;max-height:0;margin-bottom:-8px;transform:translate(28px)scale(.88)}}@keyframes scan-slide{0%,to{opacity:.34;transform:translateY(0)}50%{opacity:1;transform:translateY(68px)}}@keyframes dot-pulse{0%,to{opacity:.38;transform:translateY(0)}45%{opacity:1;transform:translateY(-4px)}}@keyframes row-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes pageFlipOut{0%{opacity:1;transform:perspective(2400px)rotateY(0)scale(1)}to{opacity:.2;transform:perspective(2400px)rotateY(88deg)scale(.985)}}@keyframes pageFlipIn{0%{opacity:.2;transform:perspective(2400px)rotateY(-88deg)scale(.985)}to{opacity:1;transform:perspective(2400px)rotateY(0)scale(1)}}.loading-shell{place-items:center;min-height:100svh;padding:24px;display:grid}.loading-panel{width:min(360px,100%);color:var(--muted);border:1px solid var(--line);background:#fffdf8f0;border-radius:8px;place-items:center;gap:14px;padding:28px;font-weight:800;display:grid;box-shadow:0 24px 60px #1d1c181f}@media (width<=900px){.redeem-shell{place-items:stretch stretch;padding:16px}.redeem-stage{grid-template-columns:1fr;min-height:auto}.redeem-copy{padding:28px}.redeem-visual{border-left:0;border-top:1px solid var(--line);padding:22px}.pool-add{grid-template-columns:1fr}.pool-add-button{min-height:40px}.token-actions,.batch-manual{grid-template-columns:1fr}.batch-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.submitted-row{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
