:root{--bg: #eef2f6;--panel: #ffffff;--panel-2: #f5f8fb;--line: #d6dde6;--ink: #0b2230;--muted: #5b6b7a;--navy: #0b2230;--navy-2: #12354a;--teal: #2bb6b1;--teal-ink: #0f6b67;--cyan: #5ee6e0;--ok: #15803d;--ok-bg: #16a34a;--warn: #b45309;--warn-bg: #f59e0b;--bad: #b91c1c;--bad-bg: #dc2626;--radius: 12px;font-family:Inter,Helvetica Neue,Arial,sans-serif;color:var(--ink);background:var(--bg);color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-size:15px;line-height:1.4;overscroll-behavior:none;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:0;background:var(--panel-2);border-radius:10px;padding:10px 14px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--teal-ink);color:#fff}button.primary:not(:disabled):hover{background:#0c5c59}button.big{min-height:56px;font-size:18px;flex:1}button.soft{background:var(--panel-2);border:1px solid var(--line)}button.ghost{background:transparent;padding:8px;min-height:36px;color:var(--muted)}button.ghost:hover{color:var(--ink);background:var(--panel-2)}button.danger{background:#fee2e2;color:var(--bad)}button.ghost.danger{background:transparent}button.ghost.danger:hover{background:#fee2e2}input,select,textarea{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff;min-height:44px;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--teal);outline-offset:0;border-color:var(--teal)}h1,h2,h3{margin:0;letter-spacing:-.01em}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em}.empty{color:var(--muted);text-align:center;padding:28px 12px;margin:0}.error{color:var(--bad);margin:6px 0 0;font-weight:600}.warn{color:var(--warn);font-weight:600;margin:8px 0 0;font-size:14px}.hint{color:var(--muted);margin:0 0 12px}.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700;background:var(--panel-2)}.pill.active{background:#dcfce7;color:var(--ok)}.pill.suspended{background:#fef3c7;color:var(--warn)}.pill.void{background:#fee2e2;color:var(--bad)}.login{min-height:100%;display:grid;place-items:center;background:radial-gradient(1200px 600px at 50% -10%,#12354a,var(--navy) 70%);color:#fff;padding:24px}.login-box{width:360px;max-width:100%;text-align:center}.login-box.shake{animation:shake .4s}@keyframes shake{25%{transform:translate(-8px)}50%{transform:translate(8px)}75%{transform:translate(-4px)}}.login-brand{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:8px}.login-brand h1{font-size:28px;font-weight:500}.login-brand h1 b{color:var(--cyan);font-weight:800}.login-brand h1 span{display:block;font-size:14px;color:#b9c9d6;letter-spacing:.18em;text-transform:uppercase;font-weight:600;margin-top:2px}.login .hint{color:#b9c9d6}.dots{display:flex;justify-content:center;gap:12px;height:16px;margin:10px 0 20px}.dots i{width:14px;height:14px;border-radius:50%;border:2px solid #6b8597}.dots i.on{background:var(--cyan);border-color:var(--cyan)}.pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.pad button{min-height:68px;font-size:26px;font-weight:600;background:#ffffff14;color:#fff;border-radius:14px}.pad button:not(:disabled):hover{background:#ffffff29}.pad button.soft{background:#ffffff0a;color:#b9c9d6}.pad button.go{background:var(--teal);color:var(--navy);font-size:20px}.login .error{min-height:24px;color:#fca5a5;margin-top:14px}.login .dev{color:#6b8597;font-size:12px;margin:16px 0 0}.app{height:100%;display:flex;flex-direction:column}.topbar{background:var(--navy);color:#fff;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 16px;height:60px;flex:none}.brand{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:500}.brand b{color:var(--cyan);font-weight:800}.brand small{color:#b9c9d6;font-size:13px;padding-left:12px;border-left:1px solid #2a4a5e;font-weight:500}.tabs{display:flex;gap:4px}.tabs button{background:transparent;color:#b9c9d6;border-radius:10px;padding:10px 18px;font-size:15px}.tabs button:hover{background:#ffffff14;color:#fff}.tabs button.on{background:#5ee6e029;color:var(--cyan)}.who{display:flex;align-items:center;justify-content:flex-end;gap:10px}.who>span{text-align:right;line-height:1.15;font-weight:600;font-size:14px}.who small{display:block;color:#b9c9d6;font-weight:500;font-size:12px}.who .ghost{color:#b9c9d6}.who .ghost:hover{background:#ffffff14;color:#fff}.page{flex:1;min-height:0;overflow:hidden}.sell{height:100%;display:grid;grid-template-columns:1fr 400px}.tiles{padding:16px 20px;overflow:auto}.tiles h2{font-size:13px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:18px 0 10px}.visit{display:flex;align-items:center;gap:8px;color:var(--muted);font-weight:600;flex-wrap:wrap}.visit button{min-height:38px;padding:6px 14px;background:var(--panel);border:1px solid var(--line)}.visit button.on{background:var(--teal-ink);color:#fff;border-color:var(--teal-ink)}.visit input{width:auto;min-height:38px;padding:6px 10px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}.tile{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:2px;padding:16px;min-height:112px;border-radius:var(--radius);color:#fff;background:var(--teal-ink);box-shadow:0 1px 2px #0b22301a;transition:transform .08s}.tile:active{transform:scale(.97)}.tile .name{font-size:17px;font-weight:700}.tile .tier{font-size:13px;opacity:.85;font-weight:500}.tile .price{margin-top:auto;font-size:20px;font-weight:800}.c-teal{background:var(--teal-ink)}.c-sky{background:#0369a1}.c-sand{background:#92400e}.c-navy{background:var(--navy-2)}.c-gold{background:#a16207}.c-coral{background:#be123c}.cart{background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.cart header{padding:16px 18px 10px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:baseline}.cart header h2{font-size:18px}.cart header span{color:var(--muted);font-size:13px;font-weight:600}.cart ul{list-style:none;margin:0;padding:6px 0;overflow:auto;flex:1}.cart li{padding:10px 18px;border-bottom:1px solid var(--panel-2)}.line{display:grid;grid-template-columns:1fr auto 80px 32px;align-items:center;gap:10px}.line small{display:block;color:var(--muted);font-size:12px}.line .amt{text-align:right}.qty{display:flex;align-items:center;gap:4px}.qty button{min-height:34px;width:34px;padding:0;border-radius:8px}.qty b{min-width:26px;text-align:center;font-size:16px}.holder{display:grid;grid-template-columns:54px 1fr 1fr;gap:6px;margin-top:8px;align-items:center}.holder span{font-size:12px;color:var(--muted);font-weight:600;grid-row:span 2}.holder input{min-height:38px;padding:6px 10px;font-size:14px}.cart footer{padding:12px 18px 16px;border-top:1px solid var(--line);background:var(--panel-2)}.row{display:flex;justify-content:space-between;color:var(--muted);padding:2px 0}.row.total{color:var(--ink);font-size:22px;font-weight:800;padding-top:6px}.actions{display:flex;gap:10px;margin-top:12px;justify-content:flex-end}.modal-back{position:fixed;inset:0;background:#0b22308c;display:grid;place-items:center;padding:20px;z-index:10}.modal{background:var(--panel);border-radius:16px;width:480px;max-width:100%;max-height:100%;overflow:auto;padding:18px 22px 22px;box-shadow:0 20px 60px #0000004d}.modal.wide{width:760px}.modal header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.modal header h2{font-size:20px}.modal header .ghost{font-size:26px;line-height:1}.methods,.quick,.subtabs{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}.methods button,.subtabs button{flex:1;border:1px solid var(--line);background:var(--panel);min-height:50px;font-size:16px}.methods button.on,.subtabs button.on,.quick button.on{background:var(--navy);color:#fff;border-color:var(--navy)}.quick button{border:1px solid var(--line);background:var(--panel)}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:12px}.field input,.field select,.field textarea{font-size:16px;color:var(--ink);font-weight:500}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.change{font-size:22px;font-weight:800;color:var(--ok);margin:4px 0 0;text-align:center}.change.short{color:var(--bad)}.change.big{font-size:28px;background:#dcfce7;border-radius:12px;padding:12px}.checks{display:flex;flex-direction:column;gap:10px;justify-content:center;font-weight:600}.checks input{width:20px;height:20px;min-height:0;margin-right:8px;vertical-align:-4px}.swatches{display:flex;gap:8px}.swatch{width:36px;height:36px;min-height:0;padding:0;border-radius:50%;border:3px solid transparent}.swatch.on{border-color:var(--ink)}.codes{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin:10px 0 6px}.code-card{border:1px solid var(--line);border-radius:12px;padding:14px 10px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;background:#fff}.code-card.pass{border-color:var(--teal)}.code-card b{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:16px;letter-spacing:.08em;margin-top:6px}.code-card span{font-weight:600;font-size:14px}.code-card small{color:var(--muted);font-size:12px}.gate{height:100%;display:grid;grid-template-columns:1fr 340px}.verdict{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px;gap:10px;color:#fff;transition:background .15s}.verdict.idle{background:var(--navy)}.verdict.ok{background:var(--ok-bg)}.verdict.warn{background:var(--warn-bg)}.verdict.bad{background:var(--bad-bg)}.verdict h1{font-size:clamp(40px,7vw,76px);font-weight:800}.verdict p{font-size:20px;opacity:.9;margin:0}.subject{background:#ffffff26;border-radius:14px;padding:14px 24px;display:flex;flex-direction:column;gap:4px;margin-top:10px;font-size:18px}.subject b{font-size:24px}.subject code{opacity:.85;font-size:15px}.verdict input{width:360px;max-width:100%;margin-top:28px;text-align:center;font-size:26px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;min-height:64px;border:0;color:var(--ink)}.verdict .error{color:#fff;background:#00000040;padding:6px 12px;border-radius:8px}.recent{background:var(--panel);border-left:1px solid var(--line);overflow:auto;padding:16px 18px}.recent h2{font-size:13px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:10px}.recent ul{list-style:none;margin:0;padding:0}.recent li{display:grid;grid-template-columns:1fr auto;gap:2px 10px;border-bottom:1px solid var(--panel-2);border-left:4px solid var(--line);padding:9px 0 9px 10px}.recent li.ok{border-left-color:var(--ok-bg)}.recent li.warn{border-left-color:var(--warn-bg)}.recent li.bad{border-left-color:var(--bad-bg)}.recent li span{grid-column:1;color:var(--muted);font-size:13px}.recent li small{grid-row:1 / span 2;align-self:center;color:var(--muted)}.list{width:100%;border-collapse:collapse;background:var(--panel);border-radius:var(--radius);overflow:hidden;box-shadow:0 1px 2px #0b223014}.list th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:12px 14px;border-bottom:1px solid var(--line)}.list td{padding:12px 14px;border-bottom:1px solid var(--panel-2);vertical-align:middle}.list tbody tr{cursor:pointer}.list tbody tr:hover,.list tbody tr:focus{background:var(--panel-2);outline:0}.list tr.voided td{color:var(--muted);text-decoration:line-through}.list tr.voided td:last-child{text-decoration:none}.list td small{display:block;color:var(--muted);font-size:12px}.list .num{text-align:right}.passes{padding:18px 24px;overflow:auto;height:100%}.search{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:0 14px;margin-bottom:14px;color:var(--muted);max-width:640px}.search input{border:0;min-height:52px;font-size:17px;padding:0}.search input:focus{outline:0}.pass-detail{display:grid;grid-template-columns:200px 1fr;gap:20px;align-items:start}.modal h3{font-size:15px;margin:18px 0 8px}.modal h3 small{color:var(--muted);font-weight:500}.visits{list-style:none;margin:0;padding:0;max-height:200px;overflow:auto}.visits li{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--panel-2);font-weight:600}.visits small{color:var(--muted);font-weight:500}.today{padding:18px 24px;overflow:auto;height:100%}.today header{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}.today header h1{font-size:24px}.today header span{color:var(--muted);font-weight:600}.today section{margin-top:20px}.today h2,.manage h2{font-size:13px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:10px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat{background:var(--panel);border-radius:var(--radius);padding:16px 18px;box-shadow:0 1px 2px #0b223014;display:flex;flex-direction:column;gap:2px}.stat small{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.08em}.stat b{font-size:30px;font-weight:800;letter-spacing:-.02em}.stat span{color:var(--muted);font-size:13px}.bars{display:flex;gap:6px;align-items:flex-end;height:120px;background:var(--panel);border-radius:var(--radius);padding:14px 14px 8px;box-shadow:0 1px 2px #0b223014}.bar{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px}.bar i{display:block;width:100%;background:var(--teal);border-radius:4px 4px 0 0;min-height:2px}.bar small{color:var(--muted);font-size:11px}.manage{padding:18px 24px;overflow:auto;height:100%}.manage .subtabs{max-width:420px}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}@media(max-width:900px){.topbar{grid-template-columns:auto 1fr;height:auto;padding:8px 12px;gap:8px}.brand small{display:none}.who{grid-column:2}.tabs{grid-column:1 / -1;overflow:auto}.sell,.gate{grid-template-columns:1fr;grid-template-rows:1fr auto}.cart{border-left:0;border-top:1px solid var(--line);max-height:50vh}.recent{display:none}.stats{grid-template-columns:1fr 1fr}.pass-detail{grid-template-columns:1fr}}@media print{body *{visibility:hidden}.modal-back{position:static;background:none;padding:0}.modal,.modal *{visibility:visible}.modal{box-shadow:none;width:auto;padding:0}.modal header .ghost,.modal .actions{display:none}.code-card{break-inside:avoid}}
