@font-face{font-family:Inter Tight;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/13ae3e01af63c0ce-s.3-5_uhe2g8vfj.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Tight;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/0ee4b8f05dcd9fee-s.27tgfqm6_tedn.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/9eba4caf7edd2921-s.2r0cv3f07u_0l.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter Tight;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/f6752bd2263820da-s.12_ze2_d4hpxy.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Tight;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/f285987c35230861-s.318-mahh4esyg.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Tight;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/b8d1f0a88dfecec3-s.0yot_wy8hf-md.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Tight;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/ab57efd000576a30-s.p.2q0khlq77_eaw.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Tight Fallback;src:local(Arial);ascent-override:100.51%;descent-override:25.03%;line-gap-override:0.0%;size-adjust:96.39%}._7WklCq_className{font-family:Inter Tight,Inter Tight Fallback;font-style:normal}._7WklCq_variable{--font-sans:"Inter Tight", "Inter Tight Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.3bz3aq452sydg.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/cc545e633e20c56d-s.2sb9jzhmrh7ny.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/71b036adf157cdcf-s.343obqi851wr5.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/89b21bb081cb7469-s.40kcwrf1wub16.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/3fe682a82f50d426-s.200l3jur7oygh.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/70bc3e132a0a741e-s.p.269kn9uafm0ti.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}._78ed6G_className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}._78ed6G_variable{--font-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--bg:#fff;--side:#fff;--panel:#fff;--panel-2:#f5f8fc;--field:#fff;--line:#e3e8ef;--line-2:#cbd3de;--fg:#0f1b2d;--dim:#5b6b7f;--faint:#8794a6;--accent:#2563c9;--accent-hover:#1e4fa3;--accent-ink:#fff;--accent-soft:#e8f0fc;--accent-edge:#2563c966;--focus:0 0 0 3px #2563c959;--ok:#2f9e6e;--ok-soft:#e6f4ee;--warn:#c98a1c;--warn-soft:#faf0dc;--bad:#c0504d;--bad-soft:#f8e8e7;--excused:#cbd3de;--shadow:0 1px 2px #0f1b2d0a;--shadow-raised:0 8px 24px #0f1b2d1f;--sans:var(--font-sans), system-ui, -apple-system, "Segoe UI", sans-serif;--mono:var(--font-mono), ui-monospace, Menlo, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);color:var(--fg);font:15px/1.5 var(--sans);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit}h1,h2,h3,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skip{z-index:50;background:var(--accent);color:var(--accent-ink);border-radius:8px;padding:8px 12px;position:absolute;top:8px;left:-999px}.skip:focus{left:8px}.muted{color:var(--dim)}.mono{font-family:var(--mono)}.shell{grid-template-columns:260px minmax(0,1fr);min-height:100vh;display:grid}.side{border-right:1px solid var(--line);background:var(--side);flex-direction:column;gap:10px;height:100vh;padding:18px 14px;display:flex;position:sticky;top:0}.side-brand{align-items:center;gap:10px;display:flex}.side-brand b{letter-spacing:-.01em;font-size:15px;display:block}.side-brand small{color:var(--dim);font-size:12.5px;display:block}.logo{background:var(--accent);width:34px;height:34px;color:var(--accent-ink);border-radius:9px;place-items:center;font-weight:700;display:grid}.side-role{font:500 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-top:14px;padding:0 8px}.side-nav{gap:2px;display:grid;overflow-y:auto}.side-nav a{min-height:40px;color:var(--dim);border-radius:8px;align-items:center;gap:10px;padding:0 10px;font-weight:500;text-decoration:none;display:flex}.side-nav a:hover{background:var(--panel-2);color:var(--fg)}.side-nav a.on{background:var(--accent-soft);color:var(--accent)}.side-me{border-top:1px solid var(--line);align-items:center;gap:10px;margin-top:auto;padding:10px 6px 0;display:flex}.side-me-name{flex:1;min-width:0}.side-me-name b,.side-me-name small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.side-me-name small{color:var(--dim);font-size:12px}.av{background:var(--line);border:1px solid var(--line);width:34px;height:34px;color:var(--dim);border-radius:50%;flex:none;place-items:center;font-size:12px;font-weight:600;display:inline-grid}.icon-btn{border:1px solid var(--line);cursor:pointer;width:36px;height:36px;color:var(--dim);background:0 0;border-radius:8px;place-items:center;display:inline-grid}.icon-btn:hover{color:var(--fg);border-color:var(--line-2)}.main{min-width:0;padding:28px clamp(16px,3vw,40px) 64px}@media (max-width:900px){.shell{grid-template-columns:minmax(0,1fr)}.side{z-index:20;border-right:0;border-bottom:1px solid var(--line);flex-flow:wrap;align-items:center;min-width:0;height:auto;padding:10px 12px;position:sticky;top:0}.side-role{display:none}.side-nav{scrollbar-width:none;order:3;gap:4px;width:100%;display:flex;overflow-x:auto}.side-nav a{flex:none;min-height:40px}.side-me{border:0;margin:0 0 0 auto;padding:0}.side-me-name{display:none}}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px 24px;margin-bottom:22px;display:flex}.page-head h1{letter-spacing:-.03em;font-size:clamp(24px,2.6vw,32px);font-weight:600}.page-head p{color:var(--dim);margin-top:4px}.page-actions{flex-wrap:wrap;gap:8px;display:flex}.grid{gap:14px;display:grid}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width:1100px){.g4,.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:680px){.g2,.g3,.g4{grid-template-columns:1fr}}.panel{border:1px solid var(--line);background:var(--panel);min-width:0;box-shadow:var(--shadow);border-radius:14px;padding:18px}.panel-h{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.panel-h h2{letter-spacing:-.01em;font-size:16px;font-weight:600}.panel-h a{color:var(--accent);font-size:13px;text-decoration:none}.stat small{color:var(--dim);font-size:12.5px;display:block}.stat b{letter-spacing:-.03em;margin-top:4px;font-size:28px;font-weight:600;display:block}.stack{gap:12px;display:grid}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.list{margin:0;padding:0;list-style:none}.list>li{border-top:1px solid var(--line);align-items:center;gap:12px;min-width:0;padding:11px 0;display:flex}.list>li:first-child{border-top:0}.list .grow{flex:1;min-width:0}.list .grow b,.list .grow small{display:block}.list .grow small{color:var(--dim);font-size:13px}.empty{border:1px dashed var(--line-2);color:var(--dim);text-align:center;border-radius:12px;padding:18px}.tag{font:500 11.5px var(--mono);letter-spacing:.04em;border:1px solid var(--line-2);color:var(--dim);white-space:nowrap;border-radius:6px;align-items:center;gap:6px;padding:3px 8px;display:inline-flex}.tag.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.tag.ok{color:var(--ok);background:var(--ok-soft);border-color:#0000}.tag.warn{color:var(--warn);background:var(--warn-soft);border-color:#0000}.tag.bad{color:var(--bad);background:var(--bad-soft);border-color:#0000}.tag.live:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px;animation:1.4s infinite blink}@keyframes blink{50%{opacity:.25}}@media (prefers-reduced-motion:reduce){.tag.live:before{animation:none}}.table-wrap{overflow-x:auto}table.t{border-collapse:collapse;width:100%;font-size:14px}.t th,.t td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:10px 8px}.t th{font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}.t td.num,.t th.num{text-align:right}.field{gap:6px;min-width:0;display:grid}.field>span{color:var(--dim);font-size:13px;font-weight:500}input:not([type=checkbox]):not([type=radio]),select,textarea{border:1px solid var(--line-2);background:var(--field);border-radius:8px;width:100%;min-height:40px;padding:8px 11px}textarea{resize:vertical;min-height:84px}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:var(--focus);outline:none}.form-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;gap:12px;display:grid}.btn{border:1px solid var(--line-2);background:var(--panel);cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 16px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--faint);background:var(--panel-2)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-sm{min-height:32px;padding:0 10px;font-size:13px}.btn-danger{color:var(--bad)}.btn:disabled{opacity:.6;cursor:default}.err{color:var(--bad);font-size:14px}.ok-msg{color:var(--ok);font-size:14px}details.add{border:1px dashed var(--line-2);border-radius:12px;padding:12px 14px}details.add[open]{background:var(--panel);border-style:solid}details.add>summary{cursor:pointer;color:var(--accent);align-items:center;gap:8px;min-height:28px;font-weight:600;list-style:none;display:flex}details.add>summary::-webkit-details-marker{display:none}details.add>form,details.add>div{margin-top:12px}.login{background:var(--panel-2);place-items:center;min-height:100vh;padding:24px 16px;display:grid}.login-card{border:1px solid var(--line);background:var(--panel);width:min(100%,420px);box-shadow:var(--shadow-raised);border-radius:18px;gap:14px;padding:28px;display:grid}.login-card h1{letter-spacing:-.03em;margin-top:10px;font-size:26px}.chat{border:1px solid var(--line);background:var(--panel);border-radius:14px;grid-template-columns:280px minmax(0,1fr);min-height:560px;display:grid;overflow:hidden}.chat-list{border-right:1px solid var(--line);max-height:72vh;overflow-y:auto}.chat-list a{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:12px 14px;text-decoration:none;display:flex}.chat-list a.on{background:var(--accent-soft)}.chat-list .grow{flex:1;min-width:0}.chat-list b,.chat-list small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.chat-list small{color:var(--dim);font-size:12.5px}.chat-pane{flex-direction:column;min-width:0;display:flex}.chat-top{border-bottom:1px solid var(--line);padding:12px 16px}.chat-msgs{flex-direction:column;flex:1;gap:8px;max-height:60vh;padding:16px;display:flex;overflow-y:auto}.bubble{background:var(--panel-2);border:1px solid var(--line);overflow-wrap:anywhere;border-radius:12px;max-width:78%;padding:9px 12px}.bubble.me{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);align-self:flex-end}.bubble small{opacity:.65;margin-top:4px;font-size:11px;display:block}.chat-send{border-top:1px solid var(--line);gap:8px;padding:12px;display:flex}@media (max-width:760px){.chat{grid-template-columns:1fr}.chat-list{border-right:0;border-bottom:1px solid var(--line);max-height:220px}}.map{border:1px solid var(--line);background:var(--panel-2);border-radius:14px;width:100%;height:420px;position:relative;overflow:hidden}.map-tall{height:min(70vh,620px)}.map-overlay{z-index:500;flex-wrap:wrap;gap:6px;display:flex;position:absolute;top:12px;left:12px}.map-overlay .tag{background:var(--panel);box-shadow:var(--shadow-raised)}.map-overlay .tag.ok{background:var(--ok-soft)}.bus-marker{background:var(--accent);width:34px;height:34px;color:var(--accent-ink);border:3px solid var(--panel);border-radius:50%;place-items:center;display:grid;box-shadow:0 0 0 8px #2563c938}.stop-marker{background:var(--panel);border:3px solid var(--accent);border-radius:50%;width:14px;height:14px}.leaflet-container{background:var(--panel-2)!important;font:inherit!important}.leaflet-control-attribution{color:var(--dim)!important;background:#ffffffd9!important}.leaflet-control-attribution a{color:var(--fg)!important}.bus-shell{border:1px solid var(--line-2);background:var(--panel-2);border-radius:26px 26px 14px 14px;gap:8px;padding:16px;display:inline-grid}.bus-front{border-bottom:1px dashed var(--line-2);font:500 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim);justify-content:space-between;padding:0 4px 8px;display:flex}.seat-row{grid-template-columns:28px repeat(2,minmax(64px,1fr)) 20px repeat(2,minmax(64px,1fr));align-items:stretch;gap:6px;display:grid}.seat-row>i{font:500 11px var(--mono);color:var(--faint);place-items:center;display:grid}.seat{border:1px solid var(--line);background:var(--panel);border-radius:8px;min-height:52px;padding:6px;font-size:11.5px;line-height:1.25;overflow:hidden}.seat b{font:500 10.5px var(--mono);color:var(--faint);display:block}.seat.taken{border-color:var(--accent-edge);background:var(--accent-soft)}.seat.onboard{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.seat.onboard b{color:#ffffffbf}.legend{color:var(--dim);flex-wrap:wrap;gap:14px;margin-top:10px;font-size:13px;display:flex}.legend i{vertical-align:-1px;border:1px solid var(--line-2);border-radius:3px;width:12px;height:12px;margin-right:6px;display:inline-block}.legend .l-on{background:var(--accent);border-color:var(--accent)}.legend .l-taken{border-color:var(--accent-edge);background:var(--accent-soft)}.att{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.att span{aspect-ratio:1;background:var(--panel-2);color:var(--faint);border-radius:6px;place-items:center;font-size:11px;display:grid}.att .present{background:var(--ok);color:#fff}.att .late{background:var(--warn);color:#fff}.att .absent{background:var(--bad);color:#fff}.att .excused{background:var(--excused);color:var(--fg)}.seg{border:1px solid var(--line-2);border-radius:8px;display:inline-flex;overflow:hidden}.seg label{position:relative}.seg input{opacity:0;position:absolute;inset:0}.seg span{min-height:32px;color:var(--dim);cursor:pointer;border-left:1px solid var(--line);align-items:center;padding:0 10px;font-size:12.5px;display:inline-flex}.seg label:first-child span{border-left:0}.seg input:checked+span{background:var(--accent);color:var(--accent-ink);font-weight:600}.seg input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}.copy{gap:8px;display:flex}.copy input{font-family:var(--mono);font-size:12.5px}.tp-check{width:40px;height:40px}.att.sa-week{margin-bottom:4px}.att.sa-week span{aspect-ratio:auto;font:500 10.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim);background:0 0}.att .sa-blank{background:0 0}.att .sa-today{outline:2px solid var(--fg);outline-offset:-2px}.legend .sa-l.present{background:var(--ok);border-color:var(--ok)}.legend .sa-l.late{background:var(--warn);border-color:#0000}.legend .sa-l.absent{background:var(--bad);border-color:#0000}.legend .sa-l.excused{background:var(--excused);border-color:#0000}.map .leaflet-tile-pane{filter:saturate(.75)}.map-overlay{justify-content:flex-end;left:auto;right:12px}.dev-access{border-top:1px dashed var(--line-2);gap:10px;padding-top:14px;display:grid}.dev-access>summary{width:100%;list-style:none}.dev-access>summary::-webkit-details-marker{display:none}.dev-roles{flex-wrap:wrap;gap:8px;display:flex}.dev-roles p{width:100%;margin:0}.dev-roles .btn{flex:30%}.dev-note{margin:0;font-size:12px}.dev-switch{border-top:1px dashed var(--line-2);margin-top:auto;padding:10px 6px 0}.dev-switch label{gap:4px;display:grid}.dev-switch span{font:500 10.5px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--warn)}.dev-switch select{border:1px solid var(--line-2);background:var(--field);border-radius:8px;min-height:36px;padding:0 8px}.dev-switch+.side-me{margin-top:0}@media (max-width:900px){.dev-switch{border:0;order:2;margin:0 0 0 auto;padding:0}.dev-switch span{display:none}.dev-switch+.side-me{margin:0 0 0 8px}}
