:root{--bg:#f6f7f9;--surface:#fff;--fg:#1a1d21;--muted:#6b7280;--line:#e3e6ea;--accent:#1f6feb;--danger:#c62828;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#14161a;--surface:#1d2025;--fg:#e8eaed;--muted:#9aa0a6;--line:#30343a;--accent:#5b9bff;--danger:#ff6b6b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);color:var(--fg);margin:0;font-family:system-ui,-apple-system,Segoe UI,Malgun Gothic,sans-serif;font-size:16px;line-height:1.6}h1,h2{margin:0 0 12px;line-height:1.3}h1{font-size:24px}h2{font-size:20px}input,select,button{font:inherit}input,select{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--fg);border-radius:8px;padding:10px 12px}button{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:0;border-radius:8px;padding:10px 16px}button:disabled{opacity:.6;cursor:default}button.ghost{color:var(--fg);border:1px solid var(--line);background:0 0;padding:6px 12px}button.danger{color:var(--danger)}.muted{color:var(--muted)}.small{font-size:14px}.error{color:var(--danger);margin:8px 0}.login{place-items:center;min-height:100dvh;padding:16px;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;gap:14px;width:100%;max-width:360px;padding:28px 24px;display:grid}.card h1,.card p{margin:0}.card label{gap:6px;font-size:14px;display:grid}.top{background:var(--surface);border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:10px 16px;display:flex}.top select{width:auto}.spacer{flex:1}.menu-btn{display:none}.menu-backdrop{z-index:50;background:#00000059;position:fixed;inset:0}.menu-panel{background:var(--surface);flex-direction:column;gap:4px;width:min(280px,80vw);padding:12px;display:flex;position:absolute;top:0;bottom:0;right:0;overflow-y:auto;box-shadow:-4px 0 16px #0003}.menu-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;padding-bottom:8px;display:flex}.menu-panel>button:not(.ghost){text-align:left;color:var(--fg);background:0 0;border-radius:8px;padding:14px 12px;font-size:17px}.menu-panel>button.on{background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent);font-weight:700}.menu-panel>.logout{margin-top:auto;color:var(--danger)!important;border-top:1px solid var(--line)!important;border-radius:0!important}.page{max-width:880px;margin:0 auto;padding:24px 16px}.list{border:1px solid var(--line);background:var(--surface);border-radius:10px;margin:0 0 16px;padding:0;list-style:none}.list li{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.list li:first-child{border-top:0}.actions{gap:6px;display:flex}.row-form{grid-template-columns:2fr 1fr 2fr auto auto;gap:8px;display:grid}@media (width<=640px){.top{gap:8px;padding:8px 12px}.top .small{display:none}.page{padding:12px 12px 32px}.tabs.main-tabs,.top .desktop-only{display:none}.menu-btn{padding:8px 12px;font-weight:600;display:inline-block}.tabs{scrollbar-width:none;-webkit-overflow-scrolling:touch;overflow-x:auto}.tabs button{flex-shrink:0;padding:10px 12px}.list li{flex-wrap:wrap;padding:12px}.list li .actions{margin-left:auto}.row-form{grid-template-columns:1fr 1fr}.row-form input:first-child{grid-column:1/-1}}h3{margin:16px 0 8px;font-size:17px}.box h3{margin-top:0}.tabs{border-bottom:1px solid var(--line);gap:4px;margin-bottom:16px;display:flex}.tabs button{color:var(--muted);background:0 0;border-bottom:2px solid #0000;border-radius:0}.tabs button.on{color:var(--fg);border-bottom-color:var(--accent);font-weight:600}.page:has(.stops){max-width:1280px}.stops{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:16px;display:grid}.map-wrap{position:sticky;top:16px}.map{border:1px solid var(--line);border-radius:12px;width:100%;height:calc(100dvh - 160px);min-height:420px}.panel{align-content:start;gap:10px;display:grid}.panel>h3{margin:8px 0 0}.search{gap:8px;display:flex}.box{border:1px solid var(--line);background:var(--surface);border-radius:10px;gap:8px;padding:14px;display:grid}.box p{margin:0}.list li{cursor:default}.panel .list li{cursor:pointer}.list li.active{background:color-mix(in srgb, var(--accent) 10%, transparent)}.results{max-height:260px;overflow:auto}.map-label{color:#1a1d21;white-space:nowrap;background:#fff;border:1px solid #c9ced6;border-radius:10px;padding:2px 8px;font-size:12px;line-height:1.6;box-shadow:0 1px 3px #00000026}.map-label.selected{color:#fff;background:#1f6feb;border-color:#1f6feb}.map-label.academy{background:#fff3c4;border-color:#e0b400;font-weight:700}.map-label.draft{color:#fff;background:#c62828;border-color:#c62828}@media (width<=900px){.stops{grid-template-columns:1fr}.map-wrap{position:static}.map{height:55dvh;min-height:320px}}.inline{vertical-align:middle;margin:0 8px;display:inline}.list-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.list-head h2,.list-head h3{margin:0}.vehicle-bar{margin-bottom:12px}.vehicle-chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.vehicle-chip{border:1px solid var(--line,#d5d9de);color:inherit;background:0 0;border-radius:16px;padding:4px 12px}.vehicle-chip.on{border-color:var(--accent,#1f6feb);background:color-mix(in srgb, var(--accent,#1f6feb) 12%, transparent);font-weight:600}.vehicle-chip:disabled{cursor:default;opacity:1}.vehicle-bar-head{align-items:baseline;gap:8px;display:flex}.vehicle-grid{grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:8px;display:grid}.vehicle-card{text-align:left;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:10px;justify-items:start;gap:2px;padding:10px 12px;transition:border-color .15s,background .15s;display:grid}.vehicle-card:hover:not(:disabled){border-color:var(--accent)}.vehicle-card:disabled{cursor:default;opacity:1}.vehicle-card.on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, var(--surface))}.vc-name{font-size:15px;font-weight:700;line-height:1.3}.vc-meta{color:var(--muted);font-size:12px}.vehicle-card.add{color:var(--muted);background:0 0;border-style:dashed;place-content:center;justify-items:center;font-size:14px}.vehicle-bar .row-form{grid-template-columns:2fr 1fr 2fr 1.4fr auto auto auto;margin-top:10px}.kpl{white-space:nowrap;align-items:center;gap:4px;display:flex}.kpl input{width:64px}@media (width<=640px){.vehicle-bar .row-form{grid-template-columns:1fr 1fr}}.list li.clickable{cursor:pointer}.list li.dim{opacity:.55}.pre{white-space:pre-line}.tel{color:var(--accent);margin-right:10px;text-decoration:none}.badge{background:var(--line);color:var(--fg);vertical-align:middle;border-radius:10px;margin-right:4px;padding:0 8px;font-size:12px;line-height:20px;display:inline-block}.badge.live{color:#fff;background:#2f9e44}.badge.published{background:color-mix(in srgb, var(--accent) 18%, transparent)}.badge.dir-to{color:#1f4fb0;background:#e7f0ff}.badge.dir-from{color:#9a4b00;background:#fff1e0}.badge.warn{color:#1a1d21;background:#f59f00}.student-form{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:16px}.student-form input:first-child,.student-form .actions{grid-column:1/-1}.today{max-width:560px;margin:0 auto}.today-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.board-count{color:var(--accent);white-space:nowrap;font-size:18px;font-weight:700}.today-days{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.today-stops{gap:10px;margin:0;padding:0;list-style:none;display:grid}.today-stops>li{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px}.today-stop{align-items:center;gap:8px;display:flex}.today-stop .seq{background:var(--fg);min-width:26px;height:26px;color:var(--surface);border-radius:13px;place-items:center;font-size:13px;font-weight:700;display:inline-grid}.today-stop .time{font-variant-numeric:tabular-nums;color:var(--muted)}.today-stop .map-link{margin-left:auto}.kid{background:color-mix(in srgb, var(--fg) 4%, transparent);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;padding:6px 8px;display:flex}.kid.boarded{background:color-mix(in srgb, var(--accent) 14%, transparent)}.kid.absent{background:color-mix(in srgb, var(--danger) 10%, transparent)}.kid.absent .kid-call strong{text-decoration:line-through}.off-count{color:var(--danger)}.board-buttons{flex-basis:100%;gap:6px;display:flex}.board-buttons button{border:1px solid var(--line);background:var(--surface);height:44px;color:var(--fg);border-radius:10px;flex:1;padding:0 10px;font-weight:600}.board-buttons .at{font-variant-numeric:tabular-nums;font-weight:400}.board-buttons .board-on.on{background:var(--accent);border-color:var(--accent);color:#fff}.board-buttons .board-off.on{background:var(--danger);border-color:var(--danger);color:#fff}.kid-call{min-width:0;color:inherit;flex:1;align-items:center;gap:4px;padding:8px 0;font-size:17px;text-decoration:none;display:flex}.kid-call .call{margin-left:auto;font-size:20px}.kid-call strong{white-space:nowrap}.kid-call .muted{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.call2{border:1px solid var(--line);color:inherit;border-radius:8px;padding:8px 10px;text-decoration:none}.kid-memo{flex-basis:100%}.staff-form{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:16px}.notice{color:var(--accent);margin:8px 0}.matrix-wrap{overflow-x:auto}.matrix{border-collapse:collapse;min-width:100%}.matrix th,.matrix td{border-bottom:1px solid var(--line,#ddd);text-align:center;white-space:nowrap;padding:8px 10px}.matrix tbody th{text-align:left}.matrix input[type=checkbox]{width:20px;height:20px}.course-form{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:16px}.course-form label{gap:4px;font-size:14px;display:grid}.course-form .actions{grid-column:1/-1}.course-form .wide{grid-column:1/-1;gap:4px;display:grid}.detour{color:#d9480f;margin-left:4px;font-weight:600}.options table{border-collapse:collapse;width:100%;margin:8px 0;font-size:14px}.options th,.options td{border-bottom:1px solid var(--line,#e3e6ea);text-align:left;padding:6px 4px}.options tbody tr{cursor:pointer}.options tbody tr.on{background:color-mix(in srgb, var(--accent,#1f6feb) 10%, transparent)}.fuel{flex-wrap:wrap;align-items:center;gap:6px 12px;display:flex}.fuel p{flex-basis:100%;margin:0}.fuel-price,.fleet-form label{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.fuel-price input,.fleet-form input{width:72px}.fleet summary{cursor:pointer;font-weight:600}.fleet-form{flex-wrap:wrap;align-items:center;gap:8px 12px;margin:8px 0;display:flex}.fleet table{border-collapse:collapse;width:100%;margin:6px 0}.fleet th,.fleet td{border-bottom:1px solid var(--line,#e3e6ea);text-align:left;padding:4px}.route .trip{margin:2px 0 6px}.assign li{align-items:flex-start}.assign-body{gap:6px;width:100%;display:grid}.assign-stop{cursor:pointer;align-items:center;gap:8px;display:flex}.assign-stop input{width:auto}.rider{flex-wrap:wrap;align-items:center;gap:8px;padding-left:26px;display:flex}.rider>span:first-child{min-width:64px}.days{gap:2px;display:inline-flex}.day{color:var(--muted);border:1px solid var(--line);background:0 0;border-radius:6px;padding:2px 7px;font-size:13px}.day.on{background:var(--accent);border-color:var(--accent);color:#fff}button.small{padding:2px 8px;font-size:13px}.assign select{width:calc(100% - 26px);max-width:320px;margin-left:26px}.page:has(.dispatch){max-width:1280px}.dispatch{grid-template-columns:minmax(0,1fr) 380px;align-items:start;gap:16px;display:grid}.route-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.dot{border-radius:50%;width:12px;height:12px}.route-stops{counter-reset:n;grid-template-columns:minmax(0,1fr);gap:2px;margin:0;padding-left:0;list-style:none;display:grid}.route-stops li{align-items:center;gap:4px;min-height:32px;display:flex}ol.route-stops li:before{counter-increment:n;content:counter(n) ".";text-align:right;width:20px;color:var(--muted);flex-shrink:0}ol.route-stops li.academy-row:before{counter-increment:none;content:""}.route-stops li.academy-row{font-weight:600}.run-tabs{gap:6px;margin:8px 0 12px;padding-bottom:2px;display:flex;overflow-x:auto}.run-tabs button{border:1px solid var(--line);background:var(--surface);color:var(--fg);border-radius:18px;flex-shrink:0;padding:6px 12px}.run-tabs button.on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent);font-weight:600}.route-stops .time{font-variant-numeric:tabular-nums;width:40px;color:var(--muted);flex-shrink:0}.route-stop-name{flex:1;align-items:baseline;gap:4px;min-width:0;display:flex}.route-stop-name .nm{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.route-stop-name .muted{flex-shrink:0}.route-stops li.draggable{cursor:grab;border-radius:4px}.route-stops li.draggable:hover{background:color-mix(in srgb, var(--accent) 8%, transparent)}.route-stops li.dragging{opacity:.4}.route-head .push{margin-left:auto}.pin{filter:grayscale();opacity:.35;cursor:pointer;background:0 0;border:0;flex-shrink:0;width:24px;padding:0}.pin.on{filter:none;opacity:1}.vehicle-pick{flex-shrink:0;width:64px;padding:2px;font-size:13px}.vehicle-pick.locked{border-color:var(--accent,#1f6feb);font-weight:600}.map-badge{color:#fff;text-align:center;border:2px solid #fff;border-radius:11px;min-width:22px;height:22px;padding:0 6px;font-size:12px;font-weight:700;line-height:22px;box-shadow:0 1px 3px #0000004d}@media (width<=900px){.dispatch{grid-template-columns:1fr}}@media (width<=640px){.student-form,.staff-form{grid-template-columns:1fr}}.timetable{display:none}@media print{@page{margin:12mm}body{background:#fff}body *{visibility:hidden}.timetable,.timetable *{visibility:visible;color:#000}.timetable{width:100%;display:block;position:absolute;inset:0 auto auto 0}.timetable-page{break-after:page}.timetable h2{margin:0 0 4px;font-size:18pt}.timetable table{border-collapse:collapse;width:100%;font-size:11pt}.timetable th,.timetable td{text-align:left;vertical-align:top;border:1px solid #555;padding:6px 8px}.timetable td:nth-child(-n+2){white-space:nowrap}@page{size:A4 landscape;margin:8mm 10mm}.sheet{break-after:page;font-size:8.5pt;line-height:1.3}.sheet:last-child{break-after:auto}.sheet-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.sheet-head h2{margin:0;font-size:15pt}.sheet-staff{margin:2px 0 6px;font-size:9pt}.sheet-cols{grid-template-columns:39fr 61fr;align-items:start;gap:8px;display:grid}.sheet .col-title{text-align:center;letter-spacing:6px;border:1px solid #555;margin-bottom:4px;padding:2px;font-size:11pt;font-weight:700}.sheet-run{break-inside:avoid;margin-bottom:6px}.sheet .run-title{text-align:center;margin:2px 0;font-weight:700}.sheet table{table-layout:auto;font-size:8.5pt}.sheet th,.sheet td{padding:2px 4px}.sheet th{-webkit-print-color-adjust:exact;print-color-adjust:exact;text-align:center;background:#eee!important}}
