*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f8f6f0;--surface:#fff;--border:rgba(2,21,29,.25);--accent:#02151d;--accent-dark:#02151d;--text:#02151d;--text-muted:rgba(2,21,29,.7);--error:#b84040;--online:#1a7a4a;--offline:#b84040;--sidebar-w:220px;--glass:rgba(255,251,238,.92);--card-bg:#fff;--row-hover:rgba(2,21,29,.07);--brand-text-color:#02151d;--brand-hover-text-color:#c84a1a;--topbar-bg:#ecdabe;--topbar-text:#02151d;--topbar-active-bg:#02151d;--topbar-active-text:#ecdabe;--topbar-border:rgba(2,21,29,.25);--apple-status-bar:#f5f1eb}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-touch-callout:none;min-height:100vh;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Courier New,monospace;font-size:13px}.login-wrapper{background:linear-gradient(135deg,#f5f1eb 0%,#faf8f4 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:#fff;border:1px solid #e8dcc4;border-radius:16px;width:100%;max-width:360px;padding:3rem 2.5rem;box-shadow:0 4px 20px rgba(26,26,26,.08)}.login-header{text-align:center;margin-bottom:2.5rem}.login-header h1{color:#2a2a2a;font-size:1.5rem;font-weight:700}.login-logo{width:auto;max-width:100%;height:48px;margin:0 auto 1.5rem;display:block}.subtitle{color:#8b7355;margin-top:.5rem;font-size:.9rem;font-weight:500}.field{margin-bottom:1.25rem}.field label{color:#2a2a2a;letter-spacing:.02em;margin-bottom:.5rem;font-size:.85rem;font-weight:600;display:block}.field input{color:#2a2a2a;background:#fafaf9;border:1.5px solid #e8dcc4;border-radius:8px;width:100%;padding:.75rem .875rem;font-family:inherit;font-size:.95rem;transition:all .2s}.field input::placeholder{color:#c0a080}.field input:focus{background:#fff;border-color:#d15323;outline:none;box-shadow:0 0 0 3px rgba(209,83,35,.1)}.error-banner{color:#d15323;background:rgba(209,83,35,.08);border:1px solid rgba(209,83,35,.3);border-radius:8px;margin-bottom:1rem;padding:.75rem 1rem;font-size:.85rem;font-weight:500}.btn-login{color:#fff;cursor:pointer;letter-spacing:.05em;background:linear-gradient(135deg,#d15323 0%,#c84a1a 100%);border:none;border-radius:8px;width:100%;margin-top:1rem;padding:.875rem;font-size:.95rem;font-weight:700;transition:all .2s;box-shadow:0 2px 8px rgba(209,83,35,.15)}.btn-login:hover:not(:disabled){background:linear-gradient(135deg,#c84a1a 0%,#b63d14 100%);transform:translateY(-1px);box-shadow:0 4px 12px rgba(209,83,35,.25)}.btn-login:active:not(:disabled){transform:translateY(0)}.btn-login:disabled{opacity:.7;cursor:not-allowed}.dash-layout{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;padding:1.25rem 1rem;display:flex}.sidebar-brand{align-items:center;gap:.6rem;margin-bottom:2rem;display:flex}.brand-name{font-size:1rem;font-weight:bolder}.sidebar-nav{flex:1}.nav-item{color:var(--text-muted);border-radius:6px;margin-bottom:.2rem;padding:.55rem .75rem;font-size:.875rem;text-decoration:none;transition:background .1s,color .1s;display:block}.nav-item:hover,.nav-item.active{color:var(--accent);background:rgba(59,130,246,.12)}.sidebar-footer{border-top:1px solid var(--border);flex-direction:column;gap:.5rem;padding-top:1rem;display:flex}.current-user,.user-loading{color:var(--text-muted);font-size:.8rem}.btn-logout{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:12px;width:100%;padding:.4rem .75rem;font-size:.8rem;transition:border-color .15s,color .15s}.btn-logout:hover{border-color:var(--error);color:var(--error)}.dash-content{flex:1;padding:2rem}.dash-placeholder{height:60vh;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:.5rem;display:flex}.dash-placeholder h2{font-size:1.2rem;font-weight:600}.not-found{text-align:center;color:var(--text-muted);padding:4rem}.topbar-wrapper{background:var(--topbar-bg);border-bottom:1px solid var(--topbar-border);box-shadow:0 2px 8px rgba(0,0,0,.08)}.topbar{justify-content:space-between;align-items:center;gap:2rem;height:48px;padding:0 1.5rem;display:flex}.topbar-left{flex-shrink:0}.topbar-brand{color:var(--brand-text-color);font-size:1rem;font-weight:bolder;text-decoration:none;transition:color .15s}.topbar-brand:hover{color:var(--brand-hover-text-color)}.topbar-logo{width:auto;height:32px;display:block}.topbar-nav{flex:1;justify-content:center;align-items:center;gap:0;display:flex}.topbar-tab{letter-spacing:.06em;height:46px;color:var(--topbar-text);cursor:pointer;white-space:nowrap;background:0 0;border:none;justify-content:center;align-items:center;padding:0 1.2rem;font-size:.75rem;font-weight:700;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.topbar-tab:hover{background:rgba(26,26,26,.08)}.topbar-tab.active{background:var(--topbar-active-bg);color:var(--topbar-active-text)}.topbar-right{flex-shrink:0;align-items:center;gap:1rem;display:flex}.topbar-username{color:var(--topbar-text);font-size:.85rem;font-weight:500}.topbar-logout{background:var(--topbar-text);color:var(--topbar-bg);border:1px solid var(--topbar-text);letter-spacing:.05em;cursor:pointer;border-radius:4px;padding:.4rem .8rem;font-size:.7rem;font-weight:700;transition:background .15s,color .15s}.topbar-logout:hover{color:var(--topbar-text);background:0 0}.logout-form,.logout-form form{margin:0}.topbar-hamburger{cursor:pointer;background:0 0;border:none;flex-direction:column;gap:5px;padding:.4rem;display:none}.hamburger-line{background:var(--topbar-text);border-radius:2px;width:24px;height:2px;transition:all .3s}@media (width<=768px){.topbar{flex-wrap:wrap;height:auto;padding:.75rem 1rem}.topbar-hamburger{order:2;margin-left:auto;display:flex}.topbar-nav{flex-direction:column;order:3;justify-content:flex-start;gap:0;width:100%;max-height:0;transition:max-height .3s ease-out;overflow:hidden}.topbar-nav.open{max-height:400px}.topbar-tab{justify-content:flex-start;width:100%;height:auto;padding:.75rem 1rem}.topbar-right{border-top:1px solid var(--topbar-border);flex-direction:row;order:4;gap:.5rem;width:100%;padding-top:.5rem}}.view-container{flex-direction:column;min-height:100vh;display:flex}.view-content{background:var(--bg);color:var(--text);flex:1;padding:2rem}.view-content h2{color:var(--text);margin-bottom:1rem;font-size:1.75rem}.view-content p{color:var(--text-muted)}.session-timeout-overlay{z-index:9999;backdrop-filter:blur(4px);background:rgba(0,0,0,.7);justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}.session-timeout-modal{background:var(--surface);border:2px solid var(--error);text-align:center;border-radius:12px;max-width:400px;padding:2rem;animation:.3s ease-out slideIn;box-shadow:0 20px 60px rgba(0,0,0,.5)}.session-timeout-modal h2{color:var(--error);margin-bottom:1rem;font-size:1.5rem}.session-timeout-modal p{color:var(--text-muted);margin-bottom:1rem;font-size:.95rem}.countdown-timer{color:var(--error);font-variant-numeric:tabular-nums;margin:1.5rem 0;font-size:3rem;font-weight:700}.timeout-text{color:var(--text);margin:1rem 0;font-size:.85rem}.extend-session-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;margin-top:1.5rem;padding:.75rem 1.5rem;font-size:.95rem;font-weight:600;transition:all .2s}.extend-session-btn:hover{background:var(--accent-dark);transform:translateY(-2px);box-shadow:0 4px 12px rgba(59,130,246,.3)}.extend-session-btn:active{transform:translateY(0)}@keyframes slideIn{0%{opacity:0;transform:scale(.9)translateY(-50px)}to{opacity:1;transform:scale(1)translateY(0)}}.fleet-toolbar{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.fleet-toolbar h2{margin:0;font-size:1.1rem}.fleet-stats{color:var(--text);font-weight:600}.fleet-role{color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;font-size:.8rem}.fleet-cmd-status{color:var(--text-muted);margin-left:auto;font-size:.85rem}.fleet-list{flex-direction:column;gap:2px;display:flex}.fleet-row{background:var(--surface);border:1px solid var(--border);border-radius:6px;align-items:center;gap:.75rem;padding:.5rem .75rem;font-size:.9rem;display:flex}.fleet-row .dot{border-radius:50%;flex:none;width:9px;height:9px}.fleet-row .f-name{min-width:140px;font-weight:600}.fleet-row .f-group{color:var(--text-muted);min-width:90px}.fleet-row .f-mirror{color:#b45309;background:#fef3c7;border-radius:3px;padding:1px 4px;font-size:.65rem;font-weight:700}.fleet-row .f-genre{color:var(--text);min-width:90px}.fleet-row .f-batt,.fleet-row .f-vol{color:var(--text-muted);font-variant-numeric:tabular-nums}.fleet-row .f-cmds{gap:.35rem;margin-left:auto;display:flex}.btn.xs{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:4px;padding:.2rem .45rem;font-size:.7rem}.btn.xs:hover{background:var(--border)}.fleet-map{border:1px solid var(--border);z-index:0;border-radius:8px;width:100%;height:55vh;min-height:320px;margin-bottom:1rem}.rb-bus-icon{background:0 0;border:0}.rb-bus{justify-content:center;align-items:center;transition:transform .3s;display:flex}.fleet-row .f-name{cursor:pointer}.fleet-row .f-name:hover{text-decoration:underline}.fleet-batchbar{background:var(--surface);border:1px solid var(--border);border-radius:6px;flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.6rem;padding:.5rem .6rem;display:flex}.fleet-batchbar select{border:1px solid var(--border);color:var(--text);background:0 0;border-radius:4px;padding:.25rem .4rem}.fleet-batchbar .ba-all{color:var(--text-muted);font-size:.85rem}.fleet-batchbar .ba-count{color:var(--text-muted);font-size:.8rem}.btn.sm{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:5px;padding:.3rem .7rem;font-size:.8rem}.btn.sm:hover{background:var(--border)}.btn.sm.danger{color:#dc2626;border-color:#dc2626}.btn.sm.danger:hover{color:#fff;background:#dc2626}.fleet-confirm{color:#7c2d12;background:#fef3c7;border:1px solid #f59e0b;border-radius:6px;align-items:center;gap:.6rem;margin-bottom:.6rem;padding:.5rem .7rem;font-size:.9rem;display:flex}.fleet-progress{flex-direction:column;gap:2px;margin-bottom:.8rem;display:flex}.prog-row{background:var(--surface);border:1px solid var(--border);border-radius:5px;align-items:center;gap:.75rem;padding:.3rem .6rem;font-size:.8rem;display:flex}.prog-row .pg-dev{color:var(--text-muted);font-family:monospace}.prog-row .pg-cmd{font-weight:600}.prog-row .pg-st{color:var(--text)}.prog-row .pg-pct{font-variant-numeric:tabular-nums;color:var(--text-muted)}.prog-row .pg-err{color:#dc2626}.fleet-row .f-sel{margin:0}.device-panel{background:var(--surface);border-left:1px solid var(--border);z-index:500;width:320px;max-width:90vw;height:calc(100vh - 64px);padding:1rem;position:fixed;top:64px;right:0;overflow-y:auto;box-shadow:-4px 0 16px rgba(0,0,0,.12)}.dp-head{justify-content:space-between;align-items:center;margin-bottom:.8rem;display:flex}.dp-head strong{font-size:1rem}.dp-kv{border-bottom:1px solid var(--border);justify-content:space-between;gap:1rem;padding:.3rem 0;font-size:.85rem;display:flex}.dp-kv span:first-child{color:var(--text-muted)}.mono{font-family:monospace}.dp-spark{background:var(--bg,transparent);width:100%;height:36px;margin:.6rem 0}.dp-events-title{color:var(--text-muted);margin:.6rem 0 .3rem;font-size:.8rem;font-weight:600}.dp-events{flex-direction:column;gap:2px;display:flex}.dpe{background:var(--bg,transparent);border:1px solid var(--border);border-radius:4px;gap:.5rem;padding:.25rem .4rem;font-size:.78rem;display:flex}.dpe-cat{color:var(--text-muted);min-width:70px}.dpe-ty{font-weight:600}.fleet-eventlog{margin-top:1rem}.el-head{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.5rem;display:flex}.el-head select{border:1px solid var(--border);color:var(--text);background:0 0;border-radius:4px;padding:.25rem .4rem}.el-count{color:var(--text-muted);margin-left:auto;font-size:.8rem}.el-rows{flex-direction:column;gap:1px;max-height:40vh;display:flex;overflow-y:auto}.el-row{background:var(--surface);border:1px solid var(--border);border-radius:4px;align-items:center;gap:.75rem;padding:.3rem .5rem;font-size:.8rem;display:flex}.el-row .el-dev{color:var(--text-muted);min-width:70px}.el-row .el-cat{min-width:80px;color:var(--text-muted)}.el-row .el-ty{min-width:120px;font-weight:600}.el-row .el-sum{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.alert-btn{position:relative}.alert-badge{text-align:center;color:#fff;background:#dc2626;border-radius:8px;min-width:16px;height:16px;margin-left:.3rem;padding:0 4px;font-size:.65rem;font-weight:700;line-height:16px;display:inline-block}.alerts-drawer{background:var(--surface);border-left:1px solid var(--border);z-index:600;width:340px;max-width:92vw;height:calc(100vh - 64px);padding:1rem;position:fixed;top:64px;right:0;overflow-y:auto;box-shadow:-4px 0 16px rgba(0,0,0,.12)}.ad-head{align-items:center;gap:.6rem;margin-bottom:.8rem;display:flex}.ad-head strong{margin-right:auto;font-size:1rem}.ad-mute{color:var(--text-muted);font-size:.75rem}.ad-rows{flex-direction:column;gap:2px;display:flex}.ad-row{background:var(--bg,transparent);border:1px solid var(--border);border-left:3px solid #dc2626;border-radius:4px;align-items:baseline;gap:.5rem;padding:.35rem .5rem;font-size:.82rem;display:flex}.ad-dev{color:var(--text-muted);min-width:70px}.ad-msg{flex:1}.plan-toolbar{flex-wrap:wrap;align-items:center;gap:.8rem;margin-bottom:1rem;display:flex}.plan-toolbar h2{margin:0;font-size:1.1rem}.plan-search{border:1px solid var(--border);color:var(--text);background:0 0;border-radius:5px;padding:.3rem .5rem}.plan-toolbar select{border:1px solid var(--border);color:var(--text);background:0 0;border-radius:5px;padding:.3rem .4rem}.plan-count{color:var(--text-muted);margin-left:auto;font-size:.8rem}.plan-table{flex-direction:column;gap:1px;display:flex}.plan-row{background:var(--surface);border:1px solid var(--border);border-radius:4px;grid-template-columns:1.4fr 1fr 1.3fr 1.3fr 1.3fr 1fr;align-items:center;gap:.5rem;padding:.4rem .6rem;font-size:.85rem;display:grid}.plan-row.plan-head{color:var(--text-muted);background:0 0;border:0;font-weight:600}.plan-row .pl-name{font-weight:600}.plan-row .pl-group{color:var(--text-muted)}.plan-row .pl-file{white-space:nowrap;text-overflow:ellipsis;font-family:monospace;font-size:.78rem;overflow:hidden}.dp-addr{color:var(--text-muted);border-bottom:1px solid var(--border);padding:.4rem 0;font-size:.78rem;line-height:1.3}.view-container.fleet-vc{height:100vh;overflow:hidden}.fleet-vc .topbar-wrapper{flex-shrink:0}.fleet-screen{flex:1;min-height:0;position:relative;overflow:hidden}.fleet-map-full{z-index:0;position:absolute;inset:0}.fleet-screen .leaflet-container{background:#aad3df;width:100%;height:100%}.fleet-filterbar,.fleet-sidebar,.fleet-screen .fleet-progress,.fleet-screen .fleet-eventlog{background:var(--surface);background:color-mix(in srgb, var(--surface) 88%, transparent);backdrop-filter:blur(8px);border:1px solid var(--border);box-shadow:0 12px 40px rgba(0,0,0,.35)}.fleet-filterbar{z-index:1000;border-radius:10px;flex-wrap:wrap;align-items:center;gap:.5rem;max-width:calc(100% - 24px);padding:.4rem .6rem;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.fleet-filterbar .fb-search{border:1px solid var(--border);color:var(--text);background:rgba(255,255,255,.08);border-radius:5px;min-width:150px;padding:.25rem .5rem}.fleet-filterbar select{border:1px solid var(--border);color:var(--text);background:rgba(255,255,255,.08);border-radius:5px;padding:.25rem .4rem}.fleet-filterbar .fb-online{color:var(--text-muted);white-space:nowrap;font-size:.75rem}.fleet-filterbar .fb-stats{white-space:nowrap;color:var(--text);font-size:.78rem;font-weight:600}.fleet-filterbar .fb-role{text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);font-size:.68rem}.fleet-filterbar .fleet-cmd-status{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:.72rem;overflow:hidden}.fleet-sidebar{z-index:900;border-radius:12px;flex-direction:column;width:330px;max-width:calc(100% - 24px);display:flex;position:absolute;top:64px;bottom:12px;left:12px;overflow:hidden}.fs-head{border-bottom:1px solid var(--border);color:var(--text);flex-shrink:0;justify-content:space-between;align-items:center;padding:.55rem .8rem;display:flex}.fs-count{color:var(--text-muted);font-size:.76rem}.fs-batch{border-bottom:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:.4rem;padding:.45rem .7rem;display:flex}.fs-batch select{background:rgba(255,255,255,.08)}.fs-list{flex-direction:column;flex:1;gap:2px;padding:.4rem;display:flex;overflow-y:auto}.fs-list .fleet-row{border:1px solid var(--border);background:rgba(255,255,255,.05);border-radius:6px;align-items:center;gap:.4rem;padding:.35rem .45rem;font-size:.8rem;display:flex}.fs-list .fleet-row .dot{flex:none;width:8px;height:8px}.fs-list .fleet-row .f-name{white-space:nowrap;text-overflow:ellipsis;cursor:pointer;min-width:0;color:var(--text);flex:1;font-weight:600;overflow:hidden}.fs-list .fleet-row .f-group{display:none}.fs-list .fleet-row .f-genre{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:64px;overflow:hidden}.fs-list .fleet-row .f-batt{color:var(--text-muted);font-variant-numeric:tabular-nums}.fs-list .fleet-row .f-mirror{font-size:.6rem}.fs-list .fleet-row .f-cmds{gap:.15rem;display:flex}.fs-list .fleet-row .f-cmds .btn.xs{padding:.15rem .3rem;font-size:.62rem}.fleet-screen .fleet-confirm{z-index:1100;margin:0;position:absolute;top:60px;left:50%;transform:translate(-50%);box-shadow:0 12px 40px rgba(0,0,0,.35)}.fleet-screen .fleet-progress{z-index:850;border-radius:10px;width:340px;max-width:calc(100% - 24px);max-height:30vh;padding:.5rem;position:absolute;bottom:12px;left:12px;overflow-y:auto}.fleet-screen .fleet-eventlog{z-index:950;border-radius:10px;flex-direction:column;width:540px;max-width:calc(100% - 24px);max-height:42vh;margin:0;padding:.5rem;display:flex;position:absolute;bottom:12px;right:12px}.fleet-screen .fleet-eventlog .el-head{color:var(--text)}.fleet-screen .fleet-eventlog .el-rows{flex:1;max-height:none;overflow-y:auto}.fleet-screen .leaflet-top,.fleet-screen .leaflet-bottom{z-index:800}@media (width<=640px){.fleet-sidebar,.fleet-screen .fleet-eventlog{width:calc(100% - 24px)}}.fleet-filterbar,.fleet-sidebar,.fleet-screen .fleet-progress,.fleet-screen .fleet-eventlog{background:var(--glass);backdrop-filter:blur(8px);border:1px solid var(--border);color:var(--text);box-shadow:0 12px 40px rgba(0,0,0,.15)}.fleet-filterbar .fb-search,.fleet-filterbar select,.fs-batch select{color:var(--text);background:rgba(2,21,29,.05)}.fs-list .fleet-row{color:var(--text);background:rgba(2,21,29,.04)}.fs-list .fleet-row:hover{background:var(--row-hover)}.fleet-row .dot.online{background:var(--online);box-shadow:0 0 6px rgba(26,122,74,.5)}.fleet-row .dot.offline{background:var(--offline)}.fleet-screen .fleet-confirm{box-shadow:0 12px 40px rgba(0,0,0,.18)}.btn.xs,.btn.sm{color:var(--text);border-color:var(--border)}.btn.xs:hover,.btn.sm:hover{background:var(--row-hover)}.el-row,.prog-row,.ad-row,.dpe{color:var(--text);background:rgba(2,21,29,.03)}.device-panel,.alerts-drawer{background:var(--glass);backdrop-filter:blur(8px);color:var(--text)}.fleet-screen{height:calc(100vh - 49px)}.rbt-toolbar{flex-wrap:wrap;align-items:center;gap:.8rem;margin-bottom:1rem;display:flex}.rbt-toolbar h2{margin:0;font-size:1.1rem}.rbt-search{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:5px;padding:.3rem .5rem}.rbt-toolbar select{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:5px;padding:.3rem .4rem}.rbt-count{color:var(--text-muted);margin-left:auto;font-size:.8rem}.rbtable{border:1px solid var(--border);background:var(--surface);border-radius:8px;width:100%;font-size:.85rem;overflow:hidden}.rbt-head,.rbt-row{align-items:center;gap:.75rem;padding:.45rem .8rem;display:grid}.rbt-head{background:var(--topbar-bg);border-bottom:2px solid var(--border);color:var(--text);z-index:1;font-weight:700;position:sticky;top:0}.rbt-row{border-bottom:1px solid var(--border);white-space:nowrap}.rbt-row:last-child{border-bottom:none}.rbt-row:hover{background:var(--row-hover)}.rbt-row span,.rbt-head span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rbt-h{cursor:pointer;-webkit-user-select:none;user-select:none}.rbt-h:hover{color:var(--brand-hover-text-color)}.rbt-detail{color:var(--text-muted);font-family:ui-monospace,monospace;font-size:.78rem}.rbt-devices .rbt-head,.rbt-devices .rbt-row{grid-template-columns:.35fr 2fr 1.3fr 1.2fr .8fr 1fr 1.4fr}.rbt-plan .rbt-head,.rbt-plan .rbt-row{grid-template-columns:1fr 1.6fr 1.4fr 1.4fr 1.4fr 1.4fr}.rbt-events .rbt-head,.rbt-events .rbt-row{grid-template-columns:1.1fr 1fr 1fr .9fr 3fr}.rbtable .dot{border-radius:50%;width:9px;height:9px;display:inline-block}.rbtable .dot.online{background:var(--online)}.rbtable .dot.offline{background:var(--offline)}.bus-marker{background:0 0;border:0}.bus-svg-wrap{filter:drop-shadow(0 1px 2px rgba(0,0,0,.4));justify-content:center;align-items:center;width:24px;height:44px;transition:transform .3s;display:flex}.bus-svg-wrap svg{display:block;overflow:visible}.bus-label{border:1px solid var(--border);color:var(--text);white-space:nowrap;background:rgba(255,251,238,.9);border-radius:4px;padding:0 4px;font-size:.62rem;font-weight:700;box-shadow:0 1px 4px rgba(0,0,0,.2)}.bus-label:before{display:none}.leaflet-tooltip.bus-label{margin-top:-2px}.bus-trail{stroke:#0d4f2a}.bus-selected{animation:1.1s ease-in-out infinite rb-bus-pulse}@keyframes rb-bus-pulse{0%,to{filter:drop-shadow(0 0 rgba(13,79,42,.6))}50%{filter:drop-shadow(0 0 8px rgba(13,79,42,.95))}}.rbt-toolbar .rbt-search{min-width:160px}.rbt-toolbar .rbt-count{margin-left:auto}.rbt-toolbar .rbt-status{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:240px;font-size:.75rem;overflow:hidden}.rbt-batch{align-items:center;gap:.4rem;display:inline-flex}.evt-tag{color:#fff;letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;border-radius:10px;max-width:100%;padding:1px 7px;font-size:.68rem;font-weight:700;display:inline-block;overflow:hidden}.rbt-row .f-sel{margin:0}.rbt-head input[type=checkbox]{margin:0}.fleet-sidebar{top:12px;bottom:12px}.fs-list{padding:.3rem}.sidebar-group{margin-bottom:.35rem}.sidebar-group-header{border:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;background:rgba(2,21,29,.06);border-radius:6px;align-items:center;gap:.4rem;padding:.35rem .5rem;font-size:.78rem;font-weight:700;display:flex}.sidebar-group-header:hover{background:var(--row-hover)}.sidebar-group-header .group-name{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.sidebar-group-header .group-count{color:var(--text-muted);font-size:.72rem}.sidebar-group-header .group-arrow{transition:transform .15s;display:inline-block}.sidebar-group.collapsed .group-arrow{transform:rotate(-90deg)}.sidebar-group-body{flex-direction:column;gap:2px;padding:.25rem 0 .1rem .3rem;display:flex}.sidebar-group.collapsed .sidebar-group-body{display:none}