:root,[data-brand=bean]{--brand:#f26b1d;--brand-strong:#d4550c;--brand-ink:#fff;--brand-soft:#fff1e7;--accent:#f26b1d;--ink:#1f1a17;--muted:#6b625c;--line:#ecdfd6;--bg:#fff;--panel:#fff;--page:#fbf7f4;--wordmark-font:"Trebuchet MS", "Avenir Next", system-ui, sans-serif}[data-brand=both]{--brand:#f26b1d;--brand-strong:#6f4e37;--brand-ink:#fff;--brand-soft:#f7efe8;--accent:#6f4e37;--ink:#1f1a17;--muted:#6b625c;--line:#e8dcd2;--bg:#fff;--panel:#fff;--page:#faf6f2;--wordmark-font:"Trebuchet MS", "Avenir Next", system-ui, sans-serif}[data-brand=junction]{--brand:#141414;--brand-strong:#000;--brand-ink:#fff;--brand-soft:#f4ede6;--accent:#6f4e37;--ink:#141414;--muted:#6a5d53;--line:#e4d8cd;--bg:#fff;--panel:#fff;--page:#f8f4f0;--wordmark-font:Georgia, "Times New Roman", serif}:root{--ok:#1f8a4c;--ok-soft:#e5f5ec;--bad:#b42318;--bad-soft:#fdecea;--warn:#a15c07;--warn-soft:#fff4e0}*{box-sizing:border-box}html,body{margin:0}body{color:var(--ink);background:var(--page);-webkit-text-size-adjust:100%;min-height:100vh;font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent)}h1,h2,h3{margin:0 0 .5rem;line-height:1.2}.hidden{display:none!important}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.wrap{max-width:720px;margin:0 auto;padding:16px}.stack>*+*{margin-top:12px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row.spread{justify-content:space-between}.grow{flex:1;min-width:0}.topbar{z-index:10;background:var(--brand);color:var(--brand-ink);border-bottom:4px solid var(--accent);align-items:center;gap:12px;padding:12px 16px;display:flex;position:sticky;top:0}[data-brand=bean] .topbar{border-bottom-color:var(--brand-strong)}.topbar .wordmark{font-family:var(--wordmark-font);letter-spacing:.2px;font-size:1.15rem;font-weight:700}.topbar .spacer{flex:1}.topbar button,.topbar select{color:var(--brand-ink);font:inherit;background:0 0;border:1px solid #ffffff8c;border-radius:999px;padding:6px 12px;font-size:.85rem}.topbar select option{color:#000}.topbar button{white-space:nowrap}.topbar .wordmark{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.topbar select{min-width:0;max-width:46vw}.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:16px}label{margin-bottom:4px;font-size:.9rem;font-weight:600;display:block}.field{margin-bottom:14px}.hint{color:var(--muted);font-size:.8rem;font-weight:400}input,select,textarea{width:100%;font:inherit;color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:10px;min-height:46px;padding:11px 12px}textarea{resize:vertical;min-height:96px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:#0000}.grid2{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (max-width:480px){.grid2{grid-template-columns:1fr}}.btn{font:inherit;border:1px solid var(--line);min-height:46px;color:var(--ink);cursor:pointer;background:#fff;border-radius:12px;justify-content:center;align-items:center;gap:6px;padding:12px 16px;font-weight:600;text-decoration:none;display:inline-flex}.btn.primary{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}.btn.accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.danger{color:var(--bad);background:#fff;border-color:#f1c4bf}.btn.big{border-radius:14px;width:100%;min-height:58px;padding:16px;font-size:1.1rem}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.sm{border-radius:10px;min-height:36px;padding:6px 12px;font-size:.9rem}.tabs{gap:6px;padding-bottom:2px;display:flex;overflow-x:auto}.tabs button{font:inherit;border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:999px;flex:none;padding:8px 14px;font-size:.9rem}.tabs button.on{background:var(--accent);border-color:var(--accent);color:#fff}.badge{letter-spacing:.4px;text-transform:uppercase;background:var(--brand-soft);color:var(--accent);border-radius:999px;padding:3px 8px;font-size:.75rem;font-weight:700;display:inline-block}.badge.active{background:var(--ok-soft);color:var(--ok)}.badge.redeemed{color:#444;background:#ececec}.badge.void,.badge.expired{background:var(--bad-soft);color:var(--bad)}.badge.unassigned{color:var(--muted);border:1px dashed var(--line);background:#fff}.badge.not_yet_valid{background:var(--warn-soft);color:var(--warn)}.notice{border-radius:12px;padding:12px 14px;font-weight:600}.notice.ok{background:var(--ok-soft);color:var(--ok)}.notice.bad{background:var(--bad-soft);color:var(--bad)}.notice.warn{background:var(--warn-soft);color:var(--warn)}.stats{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.stat{border:1px solid var(--line);text-align:center;background:#fff;border-radius:12px;padding:10px}.stat b{font-size:1.4rem;display:block}.stat span{color:var(--muted);font-size:.75rem}.list{flex-direction:column;gap:8px;display:flex}.item{border:1px solid var(--line);cursor:pointer;text-align:left;font:inherit;color:inherit;background:#fff;border-radius:14px;align-items:center;gap:12px;width:100%;padding:12px 14px;display:flex}.item .dot{border-radius:6px;flex:none;align-self:stretch;width:10px}.item .dot.bean{background:#f26b1d}.item .dot.junction{background:linear-gradient(#141414 50%,#6f4e37 50%)}.item .title{font-weight:700}.item .sub{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.sheet-bg{z-index:30;background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--page);width:100%;max-width:720px;max-height:92vh;padding:16px 16px calc(24px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;overflow-y:auto}@media (min-width:760px){.sheet-bg{align-items:center}.sheet{border-radius:20px}}.sheet .grab{background:var(--line);border-radius:3px;width:44px;height:5px;margin:0 auto 12px}.toast{left:50%;bottom:calc(20px + env(safe-area-inset-bottom));color:#fff;z-index:50;background:#1f1a17;border-radius:999px;max-width:calc(100% - 32px);padding:10px 16px;font-size:.9rem;position:fixed;transform:translate(-50%)}.ticket{background:var(--bg);border:1px solid var(--line);border-radius:22px;position:relative;overflow:hidden;box-shadow:0 10px 30px #0000001a}.ticket .head{background:var(--brand);color:var(--brand-ink);padding:18px 20px 22px;position:relative}.ticket[data-brand=junction] .head,.ticket[data-brand=both] .head{border-bottom:6px solid var(--accent)}.ticket[data-brand=both] .head{background:linear-gradient(100deg,#f26b1d 0 50%,#141414 50% 100%)}.ticket .logos{align-items:center;gap:10px;margin-top:4px;display:flex}.ticket .logos img{object-fit:contain;background:#fff;border-radius:10px;max-width:140px;height:44px;padding:4px 8px}.ticket .clock{opacity:.9;float:right;font:600 .8rem/1 ui-monospace,Menlo,monospace}.ticket .head .wordmark{font-family:var(--wordmark-font);font-size:1.35rem;font-weight:700}.ticket .head .cat{letter-spacing:1.5px;text-transform:uppercase;opacity:.85;font-size:.75rem}.ticket .body{padding:20px}.ticket .to{color:var(--muted);font-size:.9rem}.ticket .to b{color:var(--ink)}.ticket .offer{font-family:var(--wordmark-font);color:var(--accent);word-wrap:break-word;margin:6px 0 4px;font-size:2rem;font-weight:800;line-height:1.1}.ticket .vtitle{font-size:1.05rem;font-weight:700}.ticket .desc{white-space:pre-wrap;margin-top:8px}.ticket .perf{border-top:2px dashed var(--line);height:0;margin:0 18px;position:relative}.ticket .perf:before,.ticket .perf:after{content:"";background:var(--page);border:1px solid var(--line);border-radius:50%;width:24px;height:24px;position:absolute;top:-13px}.ticket .perf:before{left:-31px}.ticket .perf:after{right:-31px}.ticket .redeem{text-align:center;padding:20px;position:relative}.mt{margin-top:6px}.ticket .qr{width:220px;max-width:70vw;height:220px;max-height:70vw;image-rendering:pixelated;margin:0 auto 10px;display:block}.ticket .code{letter-spacing:1.5px;font:700 1.25rem/1.2 ui-monospace,SF Mono,Menlo,Consolas,monospace}.ticket .dates{color:var(--muted);margin-top:8px;font-size:.85rem}.ticket details{padding:0 20px 20px}.ticket summary{cursor:pointer;padding:10px 0;font-weight:600}.ticket .terms{white-space:pre-wrap;color:var(--muted);font-size:.85rem}.stamp{pointer-events:none;background:#ffffffb8;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.stamp span{border:5px solid var(--bad);color:var(--bad);letter-spacing:3px;text-transform:uppercase;text-align:center;background:#ffffffd9;border-radius:12px;padding:8px 18px;font:900 2.2rem/1 system-ui,sans-serif;transform:rotate(-14deg)}.stamp small{letter-spacing:.5px;margin-top:6px;font-size:.8rem;font-weight:700;display:block}.ticket.used .qr{filter:grayscale()opacity(.25)}.scanner{aspect-ratio:1;background:#000;border-radius:18px;position:relative;overflow:hidden}.scanner video{object-fit:cover;width:100%;height:100%;display:block}.scanner .frame{border:3px solid #ffffffe6;border-radius:18px;position:absolute;inset:15%;box-shadow:0 0 0 999px #00000059}.result-big{text-align:center;border-radius:16px;padding:18px;font-size:1.6rem;font-weight:800}.result-big.ok{background:var(--ok);color:#fff}.result-big.bad{background:var(--bad);color:#fff}.audit{font-size:.85rem}.audit div{border-bottom:1px solid var(--line);padding:8px 0}.preview-wrap{background:var(--page);border-radius:16px;padding:12px}.item .dot.both{background:linear-gradient(#f26b1d 50%,#6f4e37 50%)}.seg{grid-auto-columns:1fr;grid-auto-flow:column;gap:6px;display:grid}.seg button{font:inherit;border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:10px;padding:10px 6px;font-size:.9rem}.seg button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.table{border-collapse:collapse;width:100%;font-size:.85rem}.table th,.table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:8px 6px}.table th{color:var(--muted);font-weight:600}.scroll-x{overflow-x:auto}.pill-row{flex-wrap:wrap;gap:6px;display:flex}.pill{font:inherit;border:1px solid var(--line);cursor:pointer;color:var(--ink);background:#fff;border-radius:999px;padding:6px 12px;font-size:.85rem}.logo-box{border:1px dashed var(--line);background:#fff;border-radius:12px;justify-content:center;align-items:center;height:72px;display:flex}.logo-box img{max-width:80%;max-height:60px}.flag{color:var(--warn);font-weight:600}
