*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:18px}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.lab{--bg:#07121f;--panel:#0d1e30;--soft:#12283d;--text:#edf8ff;--muted:#89a6bc;--edge:#294253;--accent:#64ffe0;--primary:#3de1c0;--ink:#052b28;background:var(--bg);color:var(--text)}.lab-technician{--bg:#f3f0fb;--panel:#fff;--soft:#f3effb;--text:#2b2240;--muted:#74678c;--edge:#e5ddef;--accent:#8359d4;--primary:#7951c7;--ink:#fff}.lab-school{--bg:#f4f7f5;--panel:#fff;--soft:#eaf3f6;--text:#244451;--muted:#667e87;--edge:#d8e5e8;--accent:#227f9a;--primary:#216c85;--ink:#fff}.lab-shell{max-width:1480px;margin:auto;padding:24px 32px}.lab-nav{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--edge);padding-bottom:18px}.lab a{color:inherit;text-decoration:none}.lab-nav>a:first-child{font-size:12px;color:var(--muted)}.lab-brand{font-size:21px;font-weight:850;display:flex;align-items:center;gap:0}.lab-brand>span{color:var(--accent)}.lab-brand b{font-size:10px;letter-spacing:.13em;margin-left:10px}.sim-pill{display:flex;align-items:center;gap:9px;font-size:9px;letter-spacing:.1em;color:var(--accent);padding:9px 12px;border:1px solid var(--edge);border-radius:99px}.sim-pill i{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent);animation:signal-pulse 2s infinite}.lab-hero{display:flex;align-items:center;justify-content:space-between;gap:35px;padding:34px 0 24px;position:relative}.lab-eyebrow{font-size:9px;font-weight:750;letter-spacing:.17em;color:var(--muted);text-transform:uppercase}.lab-hero h1{font-size:clamp(34px,4.5vw,64px);letter-spacing:-.055em;line-height:1.06;margin:14px 0}.lab-hero h1 em{font-style:normal;color:var(--accent)}.lab-hero p{font-size:14px;color:var(--muted);line-height:1.7;margin-bottom:0}.hero-machine{width:300px;flex-shrink:0}.hero-machine svg{width:100%;overflow:visible}.machine-grid{opacity:.45;stroke-width:1.3;stroke-dasharray:300;animation:grid-stream 9s linear infinite}.orbit-car{fill:#61f7d5;stroke:#051d35;stroke-width:2;animation:machine-float 4s ease-in-out infinite}.car-b{fill:#638dff;animation-delay:-2s}.machine-ping{transform-origin:180px 102px;animation:ping-expand 3s infinite}.orb-core{filter:drop-shadow(0 0 25px #b8a6fa88);animation:machine-float 4s ease-in-out infinite}.orb-orbit{transform-origin:180px 110px;animation:orb-rotate 20s linear infinite}.orbit-spark{animation:signal-pulse 3s infinite}.school-hero-bus{animation:bus-bounce 4s ease-in-out infinite}.school-road{animation:road-flow 4s linear infinite}.lab-tabs{display:flex;gap:25px;margin:0 0 22px;border-bottom:1px solid var(--edge);padding-bottom:15px;flex-wrap:wrap}.lab-tabs a{font-size:12px;font-weight:700;color:var(--muted)}.lab-tabs a:hover{color:var(--accent)}.lab-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--edge);border:1px solid var(--edge);border-radius:18px;overflow:hidden;margin-bottom:24px}.lab-stats>div{background:var(--panel);padding:18px 24px}.lab-stats span{display:block;font-size:9px;letter-spacing:.12em;color:var(--muted);font-weight:700}.lab-stats strong{font-size:25px;display:block;margin:8px 0;letter-spacing:-.025em}.lab-stats small{display:block;font-size:10px;color:var(--muted)}.lab-workspace{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:22px}.lab-map-card,.lab-tool-card{background:var(--panel);border:1px solid var(--edge);border-radius:22px;overflow:hidden;min-width:0}.lab-map-heading{padding:20px 22px;display:flex;justify-content:space-between;gap:14px;align-items:center}.lab-map-heading h2{margin:7px 0 0;font-size:23px;letter-spacing:-.03em}.map-quick{display:flex;gap:8px}.lab button,.lab select{font:inherit;background:var(--soft);color:var(--text);border:1px solid var(--edge);border-radius:10px;padding:11px 14px;font-size:11px;cursor:pointer;min-height:42px;transition:background .2s,border-color .2s,transform .2s}.lab button:hover{border-color:var(--accent);transform:translateY(-1px)}.lab button[aria-pressed=true]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--panel));color:var(--accent)}.lab button:disabled{opacity:.45;cursor:default;transform:none}.lab a:focus-visible,.lab button:focus-visible,.lab input:focus-visible,.lab select:focus-visible,.lab summary:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.lab select option{background:var(--panel);color:var(--text)}.map-stage{position:relative}#type-map{height:460px;background:var(--soft);width:100%;z-index:0}.lab-fleet #type-map .leaflet-tile-pane{filter:saturate(.65) brightness(.9)}.map-hud{position:absolute;left:17px;bottom:24px;z-index:500;border:1px solid #75e6d744;border-radius:10px;background:#071c29e8;color:#81f7dc;padding:10px 15px;backdrop-filter:blur(10px);pointer-events:none}.map-hud span{display:block;font-size:8px;letter-spacing:.15em}.map-hud b{display:block;font-size:10px;letter-spacing:.03em;margin-top:6px}.lab-school .map-hud{background:#fff9eeef;color:#6e5520;border-color:#e0c376}.lab-technician .map-hud{background:#faf7ffef;color:#6c4cab;border-color:#cabbef}#map-notice{padding:0 22px;font-size:10px;color:var(--muted);line-height:1.6}.map-controls{display:flex;gap:10px;align-items:end;flex-wrap:wrap;padding:5px 22px 18px}.map-controls label{display:flex;flex-direction:column;gap:6px;font-size:9px;color:var(--muted);font-weight:650}.map-controls #play-route{background:var(--primary);color:var(--ink);font-weight:750;border-color:transparent}.timeline-scrub{padding:17px 22px 22px;border-top:1px solid var(--edge);background:color-mix(in srgb,var(--soft) 50%,var(--panel))}.timeline-scrub label{display:flex;justify-content:space-between;gap:10px;font-size:11px;font-weight:650}.timeline-scrub label span{font-size:10px;color:var(--muted);font-weight:400}.timeline-scrub input{display:block;width:100%;margin:20px 0 11px;accent-color:var(--accent);cursor:ew-resize}.timeline-scrub>div{display:flex;justify-content:space-between;gap:10px;font-size:8px;color:var(--muted)}.timeline-scrub progress{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.lab-vehicle{position:relative;border-radius:15px;border:1px solid #ffffffd9;background:#fffffff5;box-shadow:0 5px 24px #0a264944}.lab-vehicle svg{width:100%;height:100%;position:relative}.vehicle-aura{position:absolute;inset:-9px;border:1px solid #56eece88;border-radius:22px;animation:vehicle-signal 2.5s infinite;pointer-events:none}.lab .leaflet-tooltip{border:0;background:#071826ec;color:white;font-family:inherit;font-size:10px;padding:6px 10px;box-shadow:0 3px 18px #0002;border-radius:8px}.lab .leaflet-tooltip-top:before{border-top-color:#071826ec}.lab-route-line{filter:drop-shadow(0 0 3px #00e3ba66)}.lab .leaflet-control-attribution{font-size:9px;background:#fffffff0;color:#16313f}.lab .leaflet-control-attribution a{color:#14546c}.lab .leaflet-control-zoom a{color:#1a3545;background:white}.lab-tool-card{padding:25px}.tool-head h2{font-size:26px;letter-spacing:-.04em;line-height:1.2;margin:12px 0 24px}.fleet-select{display:grid;gap:10px}.fleet-select button{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:13px}.fleet-select .is-selected{border-color:var(--accent);background:#113733}.vehicle-mini{width:32px;height:32px;display:grid;place-items:center;font-size:23px;border-radius:9px;background:#214449;color:#73fbd9}.fleet-select button:nth-child(2) .vehicle-mini{background:#25355a;color:#7a9aff}.fleet-select button:nth-child(3) .vehicle-mini{background:#483c27;color:#e9bf69}.fleet-select b{display:block;font-size:11px}.fleet-select small{display:block;font-size:9px;color:var(--muted);margin-top:4px}.fleet-select strong{margin-left:auto;color:var(--accent);font-size:13px}.telemetry-panel{margin:25px 0;padding-top:20px;border-top:1px solid var(--edge)}.telemetry-title{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:8px;color:var(--muted)}.telemetry-title b{font-size:14px;color:var(--accent)}.telemetry-panel svg{width:100%;height:90px;margin-top:18px}.chart-grid{fill:none;stroke:var(--edge);stroke-dasharray:4 5}.chart-line{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linejoin:round;filter:drop-shadow(0 0 4px #0ce6bb44)}.energy-row{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.energy-row b{color:var(--text)}.telemetry-panel meter{width:100%;height:11px;margin-top:10px;accent-color:var(--accent)}.tool-actions{display:flex;flex-wrap:wrap;gap:9px}.tool-actions button{flex:1;min-width:110px}.lab .lab-primary{display:inline-flex;align-items:center;justify-content:center;padding:15px 22px;min-height:48px;border-radius:13px;background:var(--primary);color:var(--ink);font-size:12px;font-weight:750;border:0;text-decoration:none}.lab-result{padding:14px;font-size:11px;line-height:1.7;border:1px solid var(--edge);border-radius:12px;margin-top:15px;background:var(--soft)}[hidden]{display:none!important}.lab-stage-strip{margin-top:22px;padding:22px 26px;background:var(--panel);border:1px solid var(--edge);border-radius:17px;display:flex;align-items:center;gap:35px}.lab-stage-strip>span{color:var(--accent);font-size:13px;font-weight:750;min-width:125px}.lab-stage-strip ol{display:flex;justify-content:space-between;gap:22px;width:100%;list-style:none;padding:0;margin:0}.lab-stage-strip li{display:flex;gap:8px;align-items:center;font-size:11px;color:var(--muted)}.lab-stage-strip li:before{content:'';width:7px;height:7px;background:var(--edge);border-radius:50%;flex-shrink:0}.lab-stage-strip .is-current{color:var(--accent);font-weight:700}.lab-stage-strip .is-current:before{background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 15%,transparent)}.lab-stage-strip .is-complete:before{background:var(--accent)}.lab-feed{display:grid;grid-template-columns:1fr 1.6fr;gap:45px;border-top:1px solid var(--edge);padding:28px 0 12px;margin-top:26px}.lab-feed h2{font-size:26px;letter-spacing:-.03em;margin-top:12px}.lab-feed ol{list-style:none;padding:0;margin:0}.lab-feed li{padding:12px 0;border-bottom:1px solid var(--edge);font-size:11px;color:var(--muted);line-height:1.6}.lab-feed li:first-child{color:var(--text)}.lab-footer{display:flex;align-items:center;justify-content:space-between;gap:40px;padding:25px 0}.lab-footer p{max-width:680px;font-size:10px;color:var(--muted);line-height:1.8}.lab-toast{position:fixed;right:22px;bottom:22px;max-width:390px;z-index:2000;background:var(--panel);border:1px solid var(--accent);border-radius:16px;box-shadow:0 15px 45px #001e3d33;display:flex;align-items:center;gap:15px;padding:20px;font-size:12px;line-height:1.7}.lab-toast button{font-size:19px;padding:4px 12px}.lab-technician .lab-workspace{grid-template-columns:350px minmax(0,1fr)}.lab-technician .lab-map-card{grid-column:2;grid-row:1}.lab-technician .lab-tool-card{grid-column:1;grid-row:1;border:0;background:linear-gradient(150deg,#fff,#eee7fb);box-shadow:0 15px 55px #8568b31c}.lab-technician .lab-stats{border:0;gap:12px;background:transparent}.lab-technician .lab-stats>div{border-radius:18px;box-shadow:0 8px 20px #8060b009}.network-diagram{display:flex;align-items:center;justify-content:space-between;padding:16px 0 5px;position:relative}.network-node{display:flex;flex-direction:column;align-items:center;position:relative;z-index:1}.network-node>span{background:#fff;border:1px solid #ddd1ef;width:50px;height:50px;border-radius:16px;display:grid;place-items:center;font-size:26px;color:#7756c2;box-shadow:0 5px 20px #8568b314}.network-node>b{font-size:9px;margin-top:10px}.network-node small{font-size:7px;margin-top:5px;color:var(--muted)}.packet-line{height:2px;flex:1;background:#d5c5ea;position:relative;align-self:start;margin-top:24px}.packet-line:after{content:'';position:absolute;width:6px;height:6px;border-radius:50%;background:#9b6eda;top:-2px;left:0;opacity:0}.is-scanning .packet-line:after,.is-healthy .packet-line:after{opacity:1;animation:packet-travel 1.2s linear infinite}.has-fault .router-node>span{border-color:#df9469;color:#b86b3d;background:#fff4eb}.has-fault .packet-last{background:#e5b49a}.connection-score{position:relative;width:150px;height:150px;margin:18px auto 25px}.connection-score svg{width:100%;height:100%;transform:rotate(-90deg)}.score-track{fill:none;stroke:#e0d7ef;stroke-width:5}.score-fill{fill:none;stroke:#8256cd;stroke-width:5;stroke-linecap:round;stroke-dasharray:302;stroke-dashoffset:302;transition:stroke-dashoffset .65s}.connection-score>div{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.connection-score strong{font-size:43px;color:var(--accent);letter-spacing:-.06em}.connection-score span{font-size:7px;letter-spacing:.13em;color:var(--muted);margin-top:7px}.scan-checks{list-style:none;padding:0;margin-top:22px}.scan-checks li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--edge);padding:12px 0;font-size:10px}.scan-checks span{color:var(--accent);font-weight:650}.scan-checks .scan-fault span{color:#b4622b}.tool-disclaimer{font-size:9px;color:var(--muted);line-height:1.7}.readiness{border-top:1px solid var(--edge);margin-top:20px;padding-top:18px}.readiness summary{font-size:11px;cursor:pointer}.readiness summary b{font-size:9px;float:right;color:var(--accent)}.readiness label{display:flex;gap:10px;font-size:10px;align-items:center;margin-top:15px}.readiness input{accent-color:var(--accent);width:17px;height:17px}.lab-school .lab-hero h1 em{color:#dc9425}.lab-school .lab-workspace{grid-template-columns:minmax(0,1fr) 340px}.lab-school .lab-stats{border:0;gap:12px;background:transparent}.lab-school .lab-stats>div{border-radius:18px;border:1px solid var(--edge)}.lab-school .lab-tool-card{background:#fffdf7;border-color:#e9dfc6}.lab-school .tool-head h2{color:#336478}.stop-selector{display:flex;flex-direction:column;font-size:10px;gap:9px;color:var(--muted)}.stop-selector select{background:white;border-color:#e1d8c3;color:#364a4e}.stop-countdown{background:#fff3d3;border:1px solid #efdfa9;border-radius:18px;padding:22px;position:relative;overflow:hidden;margin:20px 0}.stop-countdown>span{display:block;color:#98752c;font-size:8px;letter-spacing:.1em}.stop-countdown strong{display:block;font-size:36px;color:#695627;letter-spacing:-.05em;margin-top:10px}.stop-countdown small{font-size:9px;color:#98752c}.stop-orbit{position:absolute;right:-8px;top:15px;width:80px;height:80px;border:1px dashed #d8b448;border-radius:50%;display:grid;place-items:center;font-size:31px;color:#bc8b13;animation:bus-bounce 4s infinite}.bus-stops{list-style:none;padding:0;margin:25px 0;position:relative}.bus-stops:before{content:'';position:absolute;width:2px;left:12px;top:14px;bottom:24px;background:#d7e3e5}.bus-stops li{display:flex;align-items:center;gap:12px;padding:12px 0;font-size:10px;position:relative}.bus-stops i{font-style:normal;width:27px;height:27px;border:1px solid #d5e2e4;background:#fffdf7;border-radius:50%;display:grid;place-items:center;font-size:9px;flex-shrink:0}.bus-stops small{margin-left:auto;color:var(--muted);font-size:9px}.bus-stops .my-stop{font-weight:800;color:#ac7816}.bus-stops .my-stop i{background:#f4bc4b;color:#553704;border-color:#f4bc4b}.bus-stops .stop-passed i{background:#33788b;border-color:#33788b;color:white}.boarding-card{display:flex;align-items:center;gap:10px;border-top:1px solid #e1d8c3;margin-top:23px;padding-top:20px}.boarding-icon{font-size:35px;color:#336478}.boarding-card b{font-size:9px;display:block}.boarding-card small{font-size:7px;display:block;color:var(--muted);max-width:115px;line-height:1.6;margin-top:4px}.boarding-card button{font-size:9px;padding:8px;min-width:65px;margin-left:auto}.stop-pin span{display:grid;place-items:center;width:28px;height:28px;background:#fff;border:2px solid #d8a535;color:#6a501d;border-radius:50%;font-size:10px;font-weight:800;box-shadow:0 3px 15px #62491633}.stop-pin.selected-stop span{background:#ffc95d;border:3px solid white;box-shadow:0 0 0 4px #ffc95d66}.lab-school .lab-stage-strip{background:#e9f2f5}.lab-school .lab-map-card{box-shadow:0 16px 50px #2444510c}
@keyframes signal-pulse{50%{opacity:.45}}@keyframes grid-stream{to{stroke-dashoffset:-600}}@keyframes machine-float{50%{transform:translateY(-9px)}}@keyframes ping-expand{0%{transform:scale(.6);opacity:1}100%{transform:scale(2);opacity:0}}@keyframes orb-rotate{to{transform:rotate(360deg)}}@keyframes bus-bounce{50%{transform:translate(4px,-5px)}}@keyframes road-flow{to{stroke-dashoffset:-64}}@keyframes vehicle-signal{0%{transform:scale(.9);opacity:.7}100%{transform:scale(1.4);opacity:0}}@keyframes packet-travel{to{left:100%}}
@media(min-width:1600px){#type-map{height:520px}}@media(max-width:1050px){.lab-shell{padding:20px}.lab-workspace{grid-template-columns:minmax(0,1fr) 300px}.lab-technician .lab-workspace{grid-template-columns:300px minmax(0,1fr)}.lab-school .lab-workspace{grid-template-columns:minmax(0,1fr) 310px}.map-quick{flex-wrap:wrap}.lab-map-heading{align-items:start}.lab-stats>div{padding:18px}.lab-tool-card{padding:21px}}@media(max-width:760px){.lab-shell{padding:16px}.lab-nav{gap:10px}.lab-nav>a:first-child{font-size:10px}.lab-brand{font-size:19px}.lab-brand b{display:none}.sim-pill{font-size:7px;padding:8px;gap:6px}.lab-hero{padding:25px 0 18px;gap:0;align-items:start;overflow:hidden}.lab-hero>div:first-child{position:relative;z-index:1;width:100%}.lab-hero h1{font-size:39px;max-width:320px;line-height:1.12}.lab-hero p{font-size:12px;max-width:245px}.hero-machine{position:absolute;right:-35px;top:45px;width:145px;opacity:.23;pointer-events:none}.lab-eyebrow{font-size:8px}.lab-tabs{gap:18px;padding-bottom:13px}.lab-tabs a{font-size:10px}.lab-stats{grid-template-columns:1fr 1fr;border-radius:15px;margin-bottom:18px}.lab-stats>div{padding:15px}.lab-stats span{font-size:7px}.lab-stats strong{font-size:23px}.lab-stats small{font-size:8px;line-height:1.6}.lab-workspace,.lab-technician .lab-workspace,.lab-school .lab-workspace{grid-template-columns:1fr;gap:18px}.lab-technician .lab-map-card,.lab-technician .lab-tool-card{grid-column:auto;grid-row:auto}.lab-map-heading{padding:19px;display:block}.lab-map-heading h2{font-size:22px}.map-quick{margin-top:16px}.map-quick button{min-height:44px}.lab #type-map{height:370px}.map-controls{padding:6px 17px 17px}.map-controls label{flex:1;min-width:115px}.map-controls select{width:100%;min-height:46px}.map-controls button{min-height:46px}.map-hud{bottom:26px;left:13px;padding:9px 12px}.map-hud b{font-size:8px}.timeline-scrub{padding:17px}.timeline-scrub label{font-size:10px;flex-direction:column;gap:5px}.timeline-scrub>div{font-size:7px}.lab-tool-card{padding:25px}.lab-technician .lab-tool-card{padding:25px}.lab-stage-strip{display:block;padding:22px}.lab-stage-strip ol{margin-top:20px;display:grid;grid-template-columns:1fr 1fr;gap:20px}.lab-stage-strip li{font-size:10px}.lab-feed{grid-template-columns:1fr;gap:5px;padding-top:22px}.lab-feed h2{font-size:23px}.lab-footer{display:block;padding-top:15px}.lab-footer a{margin-top:15px;width:100%}.lab-toast{left:16px;right:16px;bottom:18px;width:auto;max-width:none;font-size:11px}.lab-technician .lab-stats,.lab-school .lab-stats{gap:8px}.stop-countdown strong{font-size:42px}.boarding-card b{font-size:11px}.boarding-card small{font-size:9px;max-width:170px}.boarding-card button{font-size:10px;padding:11px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
.lab-vehicle{transition:transform .12s linear}.is-healthy .packet-line{background:#80c6b6}.is-healthy .packet-line:after{background:#3b9c86}.is-healthy .router-node>span{color:#3b9c86;border-color:#80c6b6;background:#effaf6}@media(prefers-reduced-motion:reduce){.lab-vehicle{transition:none}}
.bus-cabin{margin-top:24px;padding:18px;border:1px solid #dedfce;border-radius:20px;background:#f1f6f3}.cabin-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:18px}.cabin-head b{font-size:10px}.cabin-head span{font-size:8px;color:#697c75}.seat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 8px}.lab .seat-grid button{background:white;border:1px solid #ceddd7;color:#60796e;font-size:9px;border-radius:8px 8px 14px 14px;min-height:35px;padding:5px;box-shadow:inset 0 -5px 0 #edf3ef}.seat-grid button:nth-child(4n+2){margin-right:6px}.seat-grid button:nth-child(4n+3){margin-left:6px}.lab .seat-grid .seat-occupied{background:#3d9285;color:white;border-color:#3d9285;box-shadow:inset 0 -5px 0 #2f7b70}.lab .seat-grid .seat-selected{background:#ffd675;color:#715723;border-color:#e5b54b;box-shadow:0 0 0 3px #ffdd9180}.bus-cabin>small{display:flex;align-items:center;gap:7px;font-size:8px;line-height:1.6;color:#697c75;margin-top:14px}.bus-cabin>small i{width:7px;height:7px;background:#3d9285;border-radius:2px}
