:root{--chalk:#f6f7f5;--paper:#fff;--asphalt:#1e2421;--muted:#5b6560;--line:#d3d9d5;--green:#0e6a4a;--green-soft:#e3f0ea;--amber:#e3a21a;--amber-soft:#fbf1d9;--red:#b8352a;--red-soft:#f7e3e0;--blue:#2c5e8c;--blue-soft:#e2ebf4;--radius-s:4px;--radius-m:8px;--font:"Archivo", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--chalk);color:var(--asphalt);font:15px/1.5 var(--font);margin:0}body{-webkit-font-smoothing:antialiased}.num,td.num,.tid{font-variant-numeric:tabular-nums}.tid{letter-spacing:.01em;font-stretch:85%}a{color:var(--green)}:focus-visible{outline:3px solid var(--amber);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.shell{grid-template-columns:232px 1fr;min-height:100vh;display:grid}.side{background:var(--asphalt);color:#e8ecea;height:100vh;padding:20px 12px;position:sticky;top:0;overflow:auto}.brand{padding:0 10px 18px;font-size:19px;font-weight:700;font-stretch:80%;line-height:1.15}.brand small{color:#a9b4ae;margin-top:4px;font-size:12.5px;font-weight:400;font-stretch:100%;display:block}.nav a{color:#d4dbd7;border-radius:var(--radius-s);justify-content:space-between;align-items:center;padding:8px 10px;font-size:14.5px;text-decoration:none;display:flex}.nav a:hover{background:#2b332f}.nav a.on{background:var(--green);color:#fff}.nav .group{color:#8c9892;padding:14px 10px 4px;font-size:12.5px}.nav .count{background:var(--amber);color:var(--asphalt);border-radius:10px;padding:0 7px;font-size:12px;font-weight:600}.side .who{color:#a9b4ae;border-top:1px solid #39423d;margin-top:18px;padding:14px 10px 0;font-size:13px}.side .who button{margin-top:8px}main{min-width:0;padding:26px 32px 60px}.topbar{display:none}@media (width<=860px){.shell{grid-template-columns:1fr}.side{display:none}.side.open{z-index:30;height:100vh;display:block;position:fixed;inset:0}.topbar{background:var(--asphalt);color:#fff;z-index:20;justify-content:space-between;align-items:center;padding:10px 16px;display:flex;position:sticky;top:0}.topbar strong{font-stretch:80%}main{padding:18px 16px 48px}}h1{letter-spacing:-.01em;margin:0 0 4px;font-size:27px;font-weight:700;font-stretch:85%}h2{margin:28px 0 10px;font-size:18px;font-weight:650}.lede{color:var(--muted);max-width:70ch;margin:0 0 20px}.head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}button,.btn{font:inherit;border:1px solid var(--line);background:var(--paper);color:var(--asphalt);border-radius:var(--radius-s);cursor:pointer;align-items:center;gap:6px;min-height:36px;padding:7px 13px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}button:hover{border-color:var(--muted)}button.primary{background:var(--green);border-color:var(--green);color:#fff}button.danger{background:var(--paper);border-color:var(--red);color:var(--red)}button.ghost{color:inherit;background:0 0;border-color:#0000}button:disabled{opacity:.55;cursor:not-allowed}input,select,textarea{font:inherit;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--paper);color:var(--asphalt);width:100%;min-height:36px;padding:7px 10px;font-size:14.5px}textarea{min-height:80px}label.field{color:var(--muted);gap:4px;font-size:13.5px;display:grid}label.field>span{color:var(--asphalt);font-weight:600}.filters{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:14px;display:flex}.filters label.field{flex:150px;min-width:150px;max-width:240px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.tablewrap{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-m);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;background:#fafbfa;padding:10px 12px;font-size:13px;font-weight:600;position:sticky;top:0}td{vertical-align:top;border-bottom:1px solid #ebefec;padding:9px 12px}tr:last-child td{border-bottom:0}tbody tr.clickable{cursor:pointer}tbody tr.clickable:hover td{background:#f4f7f5}td.num,th.num{text-align:right}.empty{color:var(--muted);padding:28px 16px}.pager{color:var(--muted);justify-content:flex-end;align-items:center;gap:8px;margin-top:10px;font-size:13.5px;display:flex}.pill{white-space:nowrap;border:1px solid #0000;border-radius:10px;padding:1px 8px;font-size:12.5px;font-weight:600;display:inline-block}.pill.ok{background:var(--green-soft);color:var(--green)}.pill.warn{background:var(--amber-soft);color:#7a5200}.pill.bad{background:var(--red-soft);color:var(--red)}.pill.info{background:var(--blue-soft);color:var(--blue)}.pill.mute{color:var(--muted);background:#eef0ef}.seats{flex-wrap:wrap;gap:2px;max-width:220px;display:flex}.seats i{background:#e2e7e4;border:1px solid #cbd3ce;border-radius:2px 2px 1px 1px;width:9px;height:13px}.seats i.f{background:var(--amber);border-color:#b67f0c}.seats.full i.f{background:var(--green);border-color:#0a4f37}.seats-label{color:var(--muted);margin-top:3px;font-size:12.5px}.stats{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;display:grid}.stat{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-m);padding:14px 16px}.stat h3{color:var(--muted);margin:0 0 8px;font-size:14px;font-weight:600}.stat .big{font-size:26px;font-weight:700;font-stretch:85%}.stat dl{grid-template-columns:1fr auto;gap:2px 12px;margin:8px 0 0;font-size:13.5px;display:grid}.stat dt{color:var(--muted)}.stat dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.def{color:var(--muted);margin-top:8px;font-size:12.5px}.loading-board{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.bay{background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--amber);border-radius:var(--radius-s);padding:12px 14px}.bay.full{border-left-color:var(--green)}.bay .reg{font-size:17px;font-weight:700;font-stretch:85%}.bay .route{color:var(--muted);margin-bottom:6px;font-size:13.5px}.scrim{z-index:40;background:#1e242173;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{background:var(--chalk);width:min(620px,100%);height:100%;padding:22px 24px 40px;overflow:auto;box-shadow:-8px 0 24px #0000002e}.drawer header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.kv{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-m);grid-template-columns:170px 1fr;gap:6px 14px;padding:12px 14px;font-size:14px;display:grid}.kv dt{color:var(--muted)}.kv dd{overflow-wrap:anywhere;margin:0}@media (width<=520px){.kv{grid-template-columns:1fr}.kv dd{margin-bottom:6px}}.modal-scrim{z-index:50;background:#1e242180;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--paper);border-radius:var(--radius-m);gap:12px;width:min(460px,100%);padding:20px;display:grid}.modal h3{margin:0;font-size:18px}.modal p{color:var(--muted);margin:0}.error{background:var(--red-soft);color:var(--red);border-radius:var(--radius-s);padding:9px 12px;font-size:14px}.notice{background:var(--blue-soft);color:var(--blue);border-radius:var(--radius-s);padding:9px 12px;font-size:14px}.toast{background:var(--asphalt);color:#fff;border-radius:var(--radius-s);z-index:60;padding:10px 16px;font-size:14px;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.centre{place-items:center;min-height:100vh;padding:16px;display:grid}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-m);gap:14px;width:min(400px,100%);padding:26px;display:grid}.ticket{background:var(--paper);border-radius:var(--radius-m);border:1px solid var(--line);width:min(420px,100%);overflow:hidden}.ticket .stub{border-bottom:2px dashed var(--line);padding:18px 22px}.ticket .stub.valid{background:var(--green);color:#fff}.ticket .stub.invalid{background:var(--red);color:#fff}.ticket .body{padding:18px 22px}td .tid,td strong{white-space:nowrap}.drawer h1 .tid{margin-top:4px;font-size:21px;display:inline-block}td.nw{white-space:nowrap}
