:root{--ink: #0a0f0d;--ink-2: #121a16;--ink-3: #1b2620;--line: #26342d;--pearl: #f2f5f1;--mute: #8fa398;--mint: #5ce1b0;--gold: #f5c451;--bad: #ff7b72;--brand: #5ce1b0;--r: 18px;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--ink);color:var(--pearl)}body{font-family:Bricolage Grotesque,system-ui,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;background:radial-gradient(900px 500px at 50% -10%,#12261d 0%,var(--ink) 60%) no-repeat,var(--ink);min-height:100vh}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--mint);outline-offset:3px}h1,h2,p{margin:0}.shell{max-width:460px;margin:0 auto;padding:28px 16px 64px;display:grid;gap:18px}.shell.narrow{padding-top:14vh}.hero{font-size:clamp(34px,9vw,46px);line-height:1.02;font-weight:800;letter-spacing:-.03em}.hero.sm{font-size:30px}.lede{color:var(--mute);max-width:36ch}.muted{color:var(--mute);font-size:14px}.err{color:var(--bad);font-size:14px}.hint{text-align:center;color:var(--mute)}.hint b{color:var(--gold)}.panel{background:var(--ink-2);border:1px solid var(--line);border-radius:var(--r);padding:18px;display:grid;gap:12px}.panel h2{font-size:17px;font-weight:600}.form{gap:14px}label{display:grid;gap:6px;font-size:14px;color:var(--mute)}label small{color:var(--mute);opacity:.7}input:not([type=checkbox]):not([type=color]){font:inherit;color:var(--pearl);background:var(--ink);border:1px solid var(--line);border-radius:12px;padding:12px 14px;width:100%}input[type=color]{width:64px;height:40px;border:1px solid var(--line);border-radius:10px;background:var(--ink);padding:3px}input:focus{outline:2px solid var(--mint);border-color:transparent}.btn{border:1px solid var(--line);background:var(--ink-3);border-radius:12px;padding:11px 16px;font-weight:600}.btn:hover{border-color:var(--mint)}.btn.primary{background:var(--mint);color:var(--ink);border-color:var(--mint)}.btn:disabled{opacity:.5;cursor:default}.link{background:none;border:0;color:var(--mint);padding:0;font-weight:600}.link.danger{color:var(--bad)}.actions{display:flex;flex-wrap:wrap;gap:10px}.hello{display:flex;justify-content:space-between;align-items:baseline;font-size:15px;color:var(--mute)}.scene{perspective:1400px;width:100%;container-type:inline-size;filter:drop-shadow(0 24px 40px rgb(0 0 0 / .55))}.card{display:block;position:relative;width:100%;aspect-ratio:1.586;padding:0;border:0;background:none;transform-style:preserve-3d;transition:transform .8s cubic-bezier(.2,.8,.2,1)}.card.flipped{transform:rotateY(180deg)}.face{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:20px;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;display:flex;flex-direction:column;justify-content:space-between;padding:20px 22px;text-align:left;color:#07110c}.front{background:radial-gradient(120% 90% at 100% 0%,color-mix(in srgb,var(--brand) 55%,white) 0%,transparent 55%),linear-gradient(145deg,var(--brand) 0%,color-mix(in srgb,var(--brand) 55%,#04100a) 100%)}.back{transform:rotateY(180deg);background:linear-gradient(160deg,#1c2a23,#0e1612);color:var(--pearl);padding:0}.sheen{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(115deg,transparent 35%,rgb(255 255 255 / .28) 48%,transparent 60%);transform:translate(-120%);animation:sheen 5s 1s ease-in-out infinite;pointer-events:none}@keyframes sheen{0%,70%,to{transform:translate(-120%)}85%{transform:translate(120%)}}.row{display:flex;justify-content:space-between;align-items:center;gap:12px}.biz{font-weight:800;font-size:20px;letter-spacing:-.02em}.chip{width:40px;height:30px;border-radius:7px;background:linear-gradient(135deg,#f7e2a0,#c79a3a);box-shadow:inset 0 0 0 1px #0003}.count{display:flex;align-items:baseline;gap:8px}.count b{font-size:clamp(44px,14vw,60px);line-height:.9;font-weight:800;letter-spacing:-.04em}.count i{font-style:normal;font-weight:600;opacity:.75}.slots{display:flex;flex-wrap:wrap;gap:5px}.slot{width:20px;height:20px;fill:#00000024}.slot.on{fill:#07110c}.slot.burst{animation:pop .9s .25s cubic-bezier(.2,1.6,.4,1) both;transform-origin:center}@keyframes pop{0%{transform:scale(.2) rotate(-90deg);fill:var(--gold)}60%{transform:scale(1.9) rotate(20deg);fill:var(--gold)}to{transform:scale(1)}}.holder{font-weight:600;font-size:15px}.num{font-family:DM Mono,monospace;font-size:13px;letter-spacing:.14em;opacity:.8}.stamp{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;align-content:center;gap:4px;background:#07110cdb;animation:stampIn 2.8s ease both}.stamp svg{width:92px;height:92px}.stamp .ring{fill:none;stroke:var(--mint);stroke-width:6;stroke-dasharray:290;stroke-dashoffset:290;animation:draw .6s .1s ease forwards;transform:rotate(-90deg);transform-origin:60px 60px}.stamp .tick{fill:none;stroke:var(--gold);stroke-width:9;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:80;stroke-dashoffset:80;animation:draw .4s .55s ease forwards}.stamp em{font-style:normal;font-weight:800;font-size:22px;color:var(--pearl)}@keyframes draw{to{stroke-dashoffset:0}}@keyframes stampIn{0%{opacity:0}8%,80%{opacity:1}to{opacity:0}}.stripe{height:15%;margin-top:6%;background:#050806;flex:none}.back-body{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 5cqw;flex:1;min-height:0}.log{display:grid;gap:3px;align-content:center;font-size:13px;flex:1;min-width:0}.log b{font-size:14px;margin-bottom:2px}.entry{display:flex;justify-content:space-between;gap:10px;font-family:DM Mono,monospace;font-size:12px;border-bottom:1px dashed var(--line);padding-bottom:2px}.entry span{color:var(--mint)}.empty{color:var(--mute);font-style:normal;font-size:12px}.qr{display:grid;gap:3px;justify-items:center;background:#fff;padding:4px;border-radius:10px;flex:none}.qr svg{width:min(36cqw,132px);height:auto;display:block}.qr small{font-family:DM Mono,monospace;color:var(--ink);font-size:11px;letter-spacing:.1em}.promos{list-style:none;margin:0;padding:0;display:grid;gap:10px}.promos li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;flex-wrap:wrap}.promos li div{display:grid}.promos li div>span{color:var(--mute);font-size:14px}.promos em{font-style:normal;font-weight:700;color:var(--gold)}.promos li.ok{border-color:color-mix(in srgb,var(--mint) 55%,transparent)}.promos li.off{opacity:.55}.admin{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.side{background:var(--ink-2);border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100vh}.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:20px;letter-spacing:-.02em;margin:0 8px 20px}.logo svg{width:26px;fill:var(--mint)}.side button{text-align:left;background:none;border:0;padding:10px 12px;border-radius:10px;color:var(--mute);font-weight:600}.side button:hover{background:var(--ink-3);color:var(--pearl)}.side button.on{background:var(--ink-3);color:var(--mint)}.side .exit{margin-top:auto}.content{padding:28px clamp(16px,4vw,44px) 64px;display:grid;gap:18px;align-content:start;max-width:980px;width:100%}.h1{font-size:30px;font-weight:800;letter-spacing:-.03em}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}.stats div{background:var(--ink-2);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:grid}.stats b{font-size:38px;line-height:1;letter-spacing:-.04em;font-weight:800}.stats div:nth-child(2) b{color:var(--gold)}.stats span{color:var(--mute);font-size:14px;margin-top:6px}.chart{width:100%;height:auto}.chart .bar{fill:var(--mint)}.chart .bar.zero{fill:var(--line)}.chart text{fill:var(--mute);font-size:11px;font-family:DM Mono,monospace}.chart .val{fill:var(--pearl)}.feed{list-style:none;margin:0;padding:0;display:grid}.feed li{display:grid;grid-template-columns:1fr auto auto;gap:14px;padding:10px 0;border-top:1px solid var(--line)}.feed li:first-child{border-top:0}.feed time{color:var(--mute);font-size:13px}.plus{color:var(--mint);font-weight:700}.minus{color:var(--bad);font-weight:700}.search{max-width:420px}.table{padding:6px 18px;gap:0}.trow{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:16px;padding:14px 0;border-top:1px solid var(--line)}.trow:first-child{border-top:0}.who{display:grid}.who span,.trow time{color:var(--mute);font-size:13px}.stepper{display:flex;align-items:center;gap:10px}.stepper b{min-width:52px;text-align:center;color:var(--gold)}.stepper button{width:34px;height:34px;border-radius:10px;border:1px solid var(--line);background:var(--ink-3);font-size:18px;line-height:1}.stepper button:hover:not(:disabled){border-color:var(--mint)}.stepper button:disabled{opacity:.4;cursor:default}.grid{grid-template-columns:1fr 1fr}.grid h2,.grid .wide,.grid .actions,.grid p{grid-column:1 / -1}.check{display:flex;align-items:center;gap:10px;color:var(--pearl)}.seg{display:inline-flex;background:var(--ink-2);border:1px solid var(--line);border-radius:12px;padding:4px;gap:4px;justify-self:start;flex-wrap:wrap}.seg button{background:none;border:0;padding:8px 14px;border-radius:9px;font-weight:600;color:var(--mute)}.seg button.on{background:var(--mint);color:var(--ink)}.reader{width:100%;max-width:420px;margin:0 auto;border-radius:14px;overflow:hidden;background:var(--ink);min-height:120px}.inline{grid-template-columns:1fr auto;align-items:end}.nfc{display:grid;place-items:center;gap:14px;padding:18px 0;text-align:center;color:var(--mute)}.pulse{width:84px;height:84px;border-radius:50%;border:2px solid var(--line)}.pulse.live{border-color:var(--mint);animation:ping 1.6s ease-out infinite}@keyframes ping{0%{box-shadow:0 0 #5ce1b080}to{box-shadow:0 0 0 36px #5ce1b000}}.result{display:flex;gap:16px;align-items:center;padding:16px;border-radius:var(--r);border:1px solid var(--line);background:var(--ink-2)}.result.good{border-color:var(--mint)}.result.bad{border-color:var(--bad)}.result div{display:grid;gap:4px}.result span{color:var(--mute)}.result svg{width:64px;flex:none}.result .ring{fill:none;stroke:var(--mint);stroke-width:6;stroke-dasharray:290;stroke-dashoffset:290;animation:draw .6s ease forwards;transform:rotate(-90deg);transform-origin:60px 60px}.result .tick{fill:none;stroke:var(--gold);stroke-width:9;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:80;stroke-dashoffset:80;animation:draw .4s .4s ease forwards}@media (max-width: 760px){.admin{grid-template-columns:1fr}.side{flex-direction:row;flex-wrap:wrap;height:auto;position:static;border-right:0;border-bottom:1px solid var(--line)}.logo{width:100%;margin-bottom:4px}.side .exit{margin-top:0;margin-left:auto}.trow{grid-template-columns:1fr auto}.trow time{display:none}.grid,.inline{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){.card{transition:none}.sheen,.pulse.live,.slot.burst{animation:none}.stamp{animation-duration:3s}.stamp .ring,.stamp .tick,.result .ring,.result .tick{animation-duration:.01s}}.card.ready:not(.flipped){animation:shake .18s linear infinite,danger .6s ease-in-out infinite alternate}.card.ready .face.front{background:radial-gradient(circle at 30% 20%,#ff5a4a,#b3000f 70%);color:#fff}.card.ready .face.front:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 28px 6px #ffd600bf;animation:flick .35s steps(2) infinite}.redeem{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18% 5cqw 14%;z-index:2}.redeem-txt{display:grid;gap:6px;text-align:left}.redeem-txt b{font-size:clamp(15px,5.2cqw,22px);line-height:1.15;text-shadow:0 2px 8px rgb(0 0 0 / .45)}.redeem-txt i{font-style:normal;font-size:clamp(11px,3.2cqw,14px);color:#ffe27a}.redeem-qr{background:#fff;padding:4px;border-radius:10px;flex:none;line-height:0}.redeem-qr svg{width:min(34cqw,128px);height:auto;display:block}@keyframes shake{0%{transform:translate(0) rotate(0)}25%{transform:translate(-2px,1px) rotate(-.6deg)}50%{transform:translate(2px,-1px) rotate(.6deg)}75%{transform:translate(-1px,-2px) rotate(-.4deg)}to{transform:translate(1px,2px) rotate(.4deg)}}@keyframes danger{0%{filter:drop-shadow(0 0 10px #ff1a1a)}to{filter:drop-shadow(0 0 22px #ffd400)}}@keyframes flick{0%{box-shadow:inset 0 0 28px 6px #ffd600d9}to{box-shadow:inset 0 0 28px 6px #ff0000e6}}@media (prefers-reduced-motion: reduce){.card.ready{animation:danger 1.2s ease-in-out infinite alternate}.card.ready .face.front:after{animation:none}}.plans{border:0;padding:0;margin:0;display:grid;gap:8px}.plans legend{font-weight:700;margin-bottom:6px}.plan{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:12px;cursor:pointer}.plan.on{border-color:var(--mint);background:#5ce1b014}.plan span{display:grid}.plan small{color:var(--mute)}.upgrade h2{margin-top:0}.sheet-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0009;display:flex;align-items:flex-end;justify-content:center;padding:16px;animation:sheet-fade .2s ease-out}.sheet{width:100%;max-width:420px;background:var(--ink-2);border:1px solid var(--line);border-radius:22px;padding:24px 20px 18px;display:grid;gap:12px;justify-items:center;text-align:center;animation:sheet-up .28s ease-out}.sheet img{border-radius:16px}.sheet ol{text-align:left;margin:0;padding-left:22px;display:grid;gap:6px}.sheet .btn{width:100%}@keyframes sheet-fade{0%{opacity:0}}@keyframes sheet-up{0%{transform:translateY(40px);opacity:0}}.biz{display:flex;align-items:center;gap:8px;min-width:0}.biz-logo{width:30px;height:30px;border-radius:8px;object-fit:contain;background:#fff;padding:2px;flex:none}.reg-logo{width:84px;height:84px;object-fit:contain;border-radius:20px;background:#fff;padding:6px}.logo img{width:28px;height:28px;object-fit:contain;border-radius:7px;background:#fff;padding:2px}.mycards{list-style:none;margin:0;padding:0;display:grid;gap:12px}.minicard{display:flex;align-items:center;gap:14px;padding:16px;border-radius:var(--r);text-decoration:none;color:var(--ink);background:linear-gradient(135deg,var(--brand),color-mix(in srgb,var(--brand) 60%,#000))}.minicard img,.minicard .ph{width:48px;height:48px;border-radius:12px;background:#fff;object-fit:contain;padding:3px;flex:none;display:grid;place-items:center;font-size:24px;color:var(--ink)}.minicard span{display:grid;flex:1;min-width:0}.minicard b{font-size:18px;color:#fff}.minicard small{color:#fffc}.minicard em{font-style:normal;font-weight:800;color:#fff;white-space:nowrap}.biz-editor{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;align-items:start}.biz-preview{display:grid;gap:10px;position:sticky;top:16px}@media (max-width: 900px){.biz-editor{grid-template-columns:1fr}.biz-preview{position:static}}.biz-row .who b{display:flex;align-items:center;gap:8px}.row-logo{width:26px;height:26px;object-fit:contain;border-radius:6px;background:#fff;padding:1px}.row-dot{width:14px;height:14px;border-radius:50%;display:inline-block}.poster-wrap{display:grid;gap:16px;justify-items:start}.poster{width:min(100%,520px);background:#fff;color:#111;border-radius:22px;padding:32px 28px;display:grid;gap:14px;justify-items:center;text-align:center;border-top:14px solid var(--brand)}.poster-logo{width:110px;height:110px;object-fit:contain}.poster h2{font-size:30px;line-height:1.1;letter-spacing:-.02em}.poster-lede{font-size:20px;font-weight:700;color:#222}.poster-qr{width:min(100%,340px);padding:10px;border:3px solid var(--brand);border-radius:18px}.poster-steps{font-size:15px;color:#444}.poster-url{color:#777;font-family:DM Mono,monospace;word-break:break-all}@media print{@page{margin:12mm}html,body{background:#fff!important}.no-print,.side,.poster-wrap>.actions{display:none!important}.admin{display:block}.content{padding:0!important}.poster{width:100%;max-width:none;border-radius:0;box-shadow:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}.poster-qr{width:70%}}
