.ops-chrome{border-bottom:1px solid var(--cc-border-soft);background:linear-gradient(180deg, var(--cc-bg-chrome-from), var(--cc-bg-chrome-to));flex:none;align-items:center;gap:.75rem;min-width:0;height:52px;padding:0 .85rem;display:flex}.ops-chrome .ops-brand{font-family:var(--cc-font-display);letter-spacing:.08em;white-space:nowrap;color:var(--cc-text);flex:none;font-size:14px;text-decoration:none}.ops-chrome .ops-brand span{color:var(--cc-accent)}.ops-chrome .ops-brand:hover{color:var(--cc-text);text-decoration:none}.ops-chrome .ops-tabs{scrollbar-width:none;flex:auto;align-items:stretch;gap:.1rem;min-width:0;display:flex;overflow-x:auto}.ops-chrome .ops-tabs::-webkit-scrollbar{display:none}.ops-chrome .ops-tabs a,.ops-chrome .ops-tabs span.ops-tab-disabled{height:52px;color:var(--cc-text-muted);white-space:nowrap;box-sizing:border-box;border-bottom:2px solid #0000;flex:none;align-items:center;padding:0 .65rem;font-size:12px;text-decoration:none;display:inline-flex}.ops-chrome .ops-tabs a:hover{color:var(--cc-text);text-decoration:none}.ops-chrome .ops-tabs a.active{color:var(--cc-accent);border-bottom-color:var(--cc-accent)}.ops-chrome .ops-tabs span.ops-tab-disabled{opacity:.4;cursor:not-allowed}.ops-chrome .ops-trailing{flex:none;align-items:center;gap:.45rem;min-width:0;margin-left:auto;display:flex}.ops-chrome .ops-trailing .pill{border:1px solid var(--cc-line,var(--cc-border-soft));border-radius:var(--cc-radius,2px);background:var(--cc-accent-dim,#1ee3ff14);color:var(--cc-accent);white-space:nowrap;padding:.2rem .55rem;font-size:11px}.ops-chrome .ops-trailing .cc-select{min-width:8rem;height:30px;font-size:12px}.ops-user-menu{flex:none;position:relative}.ops-user-menu>summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}.ops-user-menu>summary::-webkit-details-marker{display:none}.ops-user-trigger{border:1px solid var(--cc-border-soft);border-radius:var(--cc-radius);background:var(--cc-bg-panel-solid);max-width:11rem;height:32px;color:var(--cc-text);align-items:center;gap:.4rem;padding:0 .4rem 0 .2rem;display:inline-flex}.ops-user-trigger:hover{border-color:var(--cc-border)}.ops-user-menu[open] .ops-user-trigger{border-color:var(--cc-accent)}.ops-avatar{background:var(--cc-accent-dim);border:1px solid var(--cc-border-soft);border-radius:50%;flex:none;place-items:center;width:24px;height:24px;display:grid;overflow:hidden}.ops-avatar img{object-fit:cover;width:100%;height:100%;display:block}.ops-avatar-fallback{letter-spacing:.02em;color:var(--cc-accent);font-size:10px;font-weight:600;line-height:1}.ops-user-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}.ops-user-panel{z-index:30;background:var(--cc-bg-panel-solid);border:1px solid var(--cc-border);min-width:10.5rem;box-shadow:0 8px 24px var(--cc-shadow);flex-direction:column;gap:.2rem;padding:.3rem;display:flex;position:absolute;top:calc(100% + 4px);right:0}.ops-user-panel button{text-align:left;width:100%;color:var(--cc-text);font:inherit;cursor:pointer;background:0 0;border:0;padding:.45rem .55rem;font-size:12px;display:block}.ops-user-panel button:hover{background:var(--cc-accent-wash);color:var(--cc-accent)}.ops-user-panel .ops-user-logout{border-top:1px solid var(--cc-border-soft);color:var(--cc-text-muted);margin-top:.1rem;padding-top:.55rem}.ops-user-panel .ops-user-logout:hover{color:var(--cc-danger);background:color-mix(in srgb, var(--cc-danger) 8%, transparent)}@media (width<=900px){.ops-chrome{flex-wrap:wrap;row-gap:.25rem;height:auto;min-height:52px;padding:.35rem .65rem}.ops-chrome .ops-tabs{border-top:1px solid var(--cc-border-soft);flex:100%;order:3}.ops-chrome .ops-tabs a,.ops-chrome .ops-tabs span.ops-tab-disabled{height:40px}.ops-chrome .ops-trailing{margin-left:auto}}.map-veh-lab{text-align:center;min-width:4.6rem;line-height:1.25}.map-veh-lab .p{color:#e8f4ff;white-space:nowrap;font-size:11px;font-weight:600}.map-veh-lab .s{color:#1ee3ff;font-family:var(--cc-font-mono,ui-monospace, monospace);white-space:nowrap;font-size:10px}.tianditu-map--dark .tdt-label,.tianditu-map--dark .tdt-label-content{color:#e8f4ff!important;box-shadow:none!important;white-space:nowrap!important;background:#04101aeb!important;border-color:#1ee3ff!important;padding:2px 6px!important}.dash{--dash-pad-x:.75rem;--dash-gap:.5rem;--panel-pad-x:.65rem;--panel-pad-y:.5rem;--cell-gap:.35rem;--cell-pad:.4rem .45rem;--label-size:10px;--num-size:clamp(16px, 1.3vw, 22px);box-sizing:border-box;background:radial-gradient(900px 420px at 50% 0%, #1ee3ff14, transparent 55%), var(--cc-bg-deep);flex-direction:column;width:100%;height:100dvh;display:flex;overflow:hidden}.dash *,.dash :before,.dash :after{box-sizing:border-box}.dash-hero{padding:.55rem var(--dash-pad-x);border-bottom:1px solid var(--cc-border-soft);background:linear-gradient(180deg, var(--cc-bg-chrome-from), var(--cc-bg-chrome-to));flex:none;grid-template-columns:minmax(8.5rem,1fr) auto minmax(8.5rem,1fr);align-items:center;column-gap:.75rem;min-height:3.25rem;display:grid}.dash-hero-start,.dash-hero-end{align-items:center;gap:.45rem;min-width:0;display:flex}.dash-hero-start{justify-content:flex-start}.dash-hero-end{justify-content:flex-end}.dash-goto-ops{height:28px;color:var(--cc-text-muted);letter-spacing:.02em;white-space:nowrap;opacity:.85;background:0 0;border:0;align-items:center;padding:0 .15rem;font-size:12px;text-decoration:none;display:inline-flex}.dash-goto-ops:hover{color:var(--cc-accent);opacity:1;text-decoration:none}.dash-hero .cc-select{min-width:8rem;height:30px;font-size:12px}.dash-title{font-family:var(--cc-font-display);letter-spacing:.12em;text-align:center;text-shadow:0 0 24px #1ee3ff59;white-space:nowrap;margin:0;font-size:clamp(18px,2.1vw,26px);line-height:1.2}@media (width<=720px){.dash-hero{padding:.5rem var(--dash-pad-x);grid-template-columns:1fr;row-gap:.4rem}.dash-title{white-space:normal;order:-1}.dash-hero-start,.dash-hero-end{justify-content:space-between}}.dash-title small{letter-spacing:.06em;color:var(--cc-text-muted);font-size:11px;font-family:var(--cc-font-sans);margin-top:.12rem;font-weight:400;display:block}.dash-head{align-items:center;column-gap:var(--dash-gap);padding:.4rem var(--dash-pad-x) .3rem;flex:none;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);min-height:3.1rem;display:grid}.dash-head-side{align-items:center;gap:.4rem;min-width:0;display:flex}.dash-head-side.right{justify-content:flex-end}.dash .pill{border:1px solid var(--cc-line);border-radius:var(--cc-radius);background:var(--cc-accent-dim);color:var(--cc-accent);white-space:nowrap;padding:.2rem .55rem;font-size:11px}.nav-mini{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.25rem;display:flex}.nav-mini a{border:1px solid var(--cc-border-soft);color:var(--cc-text-muted);white-space:nowrap;padding:.28rem .42rem;font-size:11px;line-height:1;text-decoration:none}.nav-mini a:hover{color:var(--cc-accent);border-color:var(--cc-line);text-decoration:none}.nav-mini a.disabled{opacity:.45;pointer-events:none}.nav-mini-btn{border:1px solid var(--cc-border-soft);color:var(--cc-text-muted);cursor:pointer;white-space:nowrap;font-size:11px;line-height:1;font:inherit;background:0 0;padding:.28rem .42rem}.nav-mini-btn:hover{color:var(--cc-accent);border-color:var(--cc-line)}.dash-error{margin:0 var(--dash-pad-x) var(--dash-gap);color:var(--cc-danger);flex:none;font-size:12px}.top-kpis{gap:var(--dash-gap);padding:0 var(--dash-pad-x) var(--dash-gap);flex:none;grid-template-columns:1fr 1fr 2.2fr 1.4fr;align-items:stretch;display:grid}.top-card{background:var(--cc-bg-panel);border:1px solid var(--cc-border-soft);flex-direction:column;justify-content:space-between;min-height:5.4rem;padding:.5rem .65rem .45rem;display:flex;position:relative}.top-card.hero{padding-left:.85rem;padding-right:.85rem}.top-card.hero .metric{justify-content:center}.top-card.hero .mahjong .tile{min-width:1.55rem;font-size:clamp(22px,2.2vw,30px)}.top-card:before{content:"";background:var(--cc-accent);opacity:.7;width:2px;position:absolute;top:0;bottom:0;left:0}.top-card .lab{font-size:var(--label-size);color:var(--cc-text-muted);letter-spacing:.04em;line-height:1.2}.top-card .metric{flex:1;align-items:center;min-height:2.4rem;margin:.2rem 0;display:flex}.top-card .sub{color:var(--cc-text-muted);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:10px;line-height:1.3;overflow:hidden}.top-card .sub a{color:var(--cc-accent)}.top-card .big-num{font-family:var(--cc-font-num);font-variant-numeric:tabular-nums;color:var(--cc-accent);font-size:28px;line-height:1}.top-card.warn .big-num{color:var(--cc-warn)}.top-card.danger .big-num{color:var(--cc-danger)}.top-card.ok .big-num{color:var(--cc-ok)}.mahjong{align-items:stretch;gap:.15rem;display:inline-flex}.mahjong .tile{background:linear-gradient(180deg, var(--cc-bg-elevated), var(--cc-bg-panel-solid));border:1px solid var(--cc-accent);min-width:1.4rem;font-family:var(--cc-font-display);color:var(--cc-accent);text-align:center;border-radius:2px;padding:.15rem .22rem;font-size:clamp(20px,2vw,28px);line-height:1.1;box-shadow:inset 0 0 12px #1ee3ff1f,0 0 10px #1ee3ff26}.mahjong .unit{color:var(--cc-text-muted);align-self:flex-end;margin-bottom:.15rem;margin-left:.2rem;font-size:11px;line-height:1}.mahjong.sm .tile{min-width:1.2rem;font-size:clamp(18px,1.7vw,24px)}.dash-body{gap:var(--dash-gap);width:100%;min-height:0;padding:0 var(--dash-pad-x) var(--dash-pad-x);flex:auto;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(210px,21%) minmax(0,1fr) minmax(210px,21%);align-items:stretch;display:grid}.col{gap:var(--dash-gap);flex-direction:column;min-width:0;height:100%;min-height:0;display:flex}.dash .cc-panel{flex-direction:column;min-height:0;display:flex;overflow:hidden}.dash .panel-title{height:2rem;padding:0 var(--panel-pad-x);letter-spacing:.04em;border-bottom:1px solid var(--cc-border-soft);white-space:nowrap;flex:none;justify-content:space-between;align-items:center;gap:.5rem;font-size:12px;display:flex}.dash .panel-title .sub{color:var(--cc-text-muted);text-overflow:ellipsis;font-size:10px;font-weight:400;overflow:hidden}.dash .panel-title a.sub{color:var(--cc-text-muted)}.dash .panel-title a.sub:hover{color:var(--cc-accent)}.dash .panel-body{min-height:0;padding:var(--panel-pad-y) var(--panel-pad-x);flex-direction:column;flex:auto;display:flex}.col-left>.cc-panel:first-child{flex:1.65 1 0}.col-left>.cc-panel:nth-child(2){flex:1 1 0}.col-right>.cc-panel:first-child,.col-right>.cc-panel:nth-child(2){flex:none}.col-right>.cc-panel:nth-child(3){flex:1 1 0}.metric-cell.ok .num,.metric-cell.ok .v{color:var(--cc-ok)}.delta{font-family:var(--cc-font-mono);align-items:center;gap:.15rem;margin-left:.25rem;font-size:10px;display:inline-flex}.delta.up{color:var(--cc-ok)}.delta.flat{color:var(--cc-text-muted)}.score-row{flex-direction:column;gap:.35rem;margin-bottom:.45rem;display:flex}.score-line{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel);justify-content:space-between;align-items:baseline;gap:.5rem;padding:.35rem .45rem;font-size:11px;display:flex}.score-line .lab{color:var(--cc-text-muted)}.score-line .val{font-family:var(--cc-font-num);font-variant-numeric:tabular-nums;color:var(--cc-accent);letter-spacing:.01em;font-size:16px;font-weight:500}.feed-pos{border-top:1px dashed var(--cc-border-soft);flex-direction:column;flex:auto;min-height:0;margin:0;padding:.35rem 0 0;display:flex;overflow:auto}.feed-pos .feed-hd{color:var(--cc-text-muted);letter-spacing:.04em;flex:none;margin-bottom:.2rem;font-size:10px}.metric-grid{gap:var(--cell-gap);flex:auto;grid-template-columns:1fr 1fr;align-content:stretch;min-height:0;display:grid}.work-cols{gap:var(--cell-gap);flex:auto;grid-template-columns:1fr 1fr;min-height:0;display:grid}.work-col{gap:var(--cell-gap);flex-direction:column;min-width:0;min-height:0;display:flex}.work-col .metric-cell{flex:1 1 0}.metric-cell{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel);padding:var(--cell-pad);flex-direction:column;justify-content:center;min-width:0;min-height:0;display:flex}.metric-cell .muted,.metric-cell .lab{font-size:var(--label-size);color:var(--cc-text-muted);letter-spacing:.03em;white-space:nowrap;text-overflow:ellipsis;line-height:1.2;overflow:hidden}.metric-cell .v,.metric-cell .num{font-family:var(--cc-font-num);font-size:var(--num-size);font-variant-numeric:tabular-nums;color:var(--cc-accent);letter-spacing:.01em;white-space:nowrap;text-overflow:ellipsis;margin-top:.18rem;font-weight:500;line-height:1.1;overflow:hidden}.metric-cell.center{text-align:center;align-items:center}.line-chart{border:1px solid var(--cc-border-soft);background:linear-gradient(var(--cc-accent-wash) 1px, transparent 1px), var(--cc-bg-panel);background-size:100% 18px;flex:auto;min-height:72px;position:relative;overflow:hidden}.line-chart svg{width:100%;height:calc(100% - 1rem);display:block}.line-chart .axis{color:var(--cc-text-muted);justify-content:space-between;padding:0 .35rem;font-size:9px;line-height:1;display:flex;position:absolute;bottom:.1rem;left:0;right:0}.line-chart-empty{color:var(--cc-text-muted);pointer-events:none;justify-content:center;align-items:center;font-size:11px;display:flex;position:absolute;inset:0 0 1rem}.map-area{flex:1 1 0;min-height:0;overflow:hidden}.map-area .map-stage{border:0;border-top:1px solid var(--cc-border-soft);flex:auto;height:auto;min-height:0!important}.map-stage{background:var(--cc-bg-deep);flex:1;min-height:0;position:relative;overflow:hidden}.monitor-map{width:100%;height:100%;min-height:180px}.monitor-map-fallback{text-align:center;color:var(--cc-text-muted);font-size:var(--cc-fs-sm);background:var(--cc-bg-panel);pointer-events:none;z-index:1;place-items:center;padding:1rem;display:grid;position:absolute;inset:0}.tianditu-map--dark{background:radial-gradient(ellipse at center, color-mix(in srgb, var(--cc-bg-mid) 55%, transparent) 0%, var(--cc-bg-deep) 70%), var(--cc-bg-deep)}[data-theme=dark] .tianditu-map--dark img[src*="tianditu.gov.cn"],[data-theme=dark] .tianditu-map--dark img[src*=tianditu\.com],[data-theme=dark] .tianditu-map--dark canvas{filter:invert(90%)hue-rotate(180deg)brightness(.88)contrast(.95)saturate(.4)}.map-float{z-index:5;gap:.3rem;display:flex;position:absolute}.map-float.tr{top:.55rem;right:.55rem}.map-float.bc{background:var(--cc-bg-elevated);border:1px solid var(--cc-border-soft);color:var(--cc-text-muted);gap:.75rem;padding:.3rem .65rem;font-size:11px;bottom:.55rem;left:50%;transform:translate(-50%)}.map-float .seg{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel-solid);color:var(--cc-text-muted);cursor:pointer;font:inherit;padding:.25rem .55rem}.map-float .seg.on{color:var(--cc-accent);border-color:var(--cc-accent);background:var(--cc-accent-dim)}.map-popup{z-index:3;background:var(--cc-bg-elevated);border:1px solid var(--cc-line);width:220px;padding:.55rem .65rem;font-size:11px;line-height:1.55;position:absolute;top:28%;left:58%;box-shadow:0 8px 24px #00000059}.map-popup h4{color:var(--cc-accent);margin:0 0 .3rem;font-size:12px}.map-popup .jump-row{flex-wrap:wrap;gap:.3rem;margin-top:.35rem;display:flex}.list-panel{flex-direction:column;flex:0 0 28%;min-height:148px;display:flex}.list-panel .panel-body{padding-top:.25rem;overflow:auto}.list-panel .cc-table th,.list-panel .cc-table td{height:auto;padding:.35rem .45rem;font-size:11px}.list-panel .cc-table tbody tr{cursor:pointer}.list-panel .cc-table tbody tr.active td{background:var(--cc-accent-dim);color:var(--cc-accent)}.feed-row{border-bottom:1px dashed var(--cc-border-soft);grid-template-columns:2.4rem minmax(0,1fr);align-items:start;column-gap:.4rem;padding:.32rem 0;font-size:11px;line-height:1.35;display:grid}.feed-row:last-child{border-bottom:0}.feed-row time{color:var(--cc-text-muted);font-family:var(--cc-font-mono);text-align:right;padding-top:.05rem;font-size:10px;line-height:1.35}.dash-empty{color:var(--cc-text-muted);margin:0;padding:.35rem 0;font-size:12px}@media (width<=1100px){.dash{height:auto;min-height:100%;overflow:visible}.top-kpis{grid-template-columns:1fr 1fr}.dash-body{grid-template-rows:auto;grid-template-columns:1fr;height:auto}.col{height:auto}.list-panel{flex:none;max-height:280px}.map-area{min-height:320px}.dash-head{text-align:center;grid-template-columns:1fr;row-gap:.35rem}.dash-head-side{justify-content:center!important}}.monitor-stream-status{align-items:center;gap:.65rem;min-width:0;font-size:11px;line-height:1.35;display:flex}.monitor-stream-status--header{flex-wrap:wrap;justify-content:flex-end}.monitor-stream-status--bar,.monitor-stream-status--detail{border-bottom:1px solid var(--cc-border-soft);background:#08182ca6;flex-wrap:wrap;justify-content:space-between;width:100%;padding:.28rem .45rem}.monitor-stream-status--detail{border:1px solid var(--cc-border-soft);border-bottom:1px solid var(--cc-border-soft);background:#08182c8c;margin-bottom:.55rem}.monitor-stream-status.is-live.monitor-stream-status--bar,.monitor-stream-status.is-live.monitor-stream-status--detail{border-bottom-color:#3dffa838}.monitor-stream-status.is-stalled.monitor-stream-status--bar,.monitor-stream-status.is-stalled.monitor-stream-status--detail{background:#30240859;border-bottom-color:#ffc43d73}.monitor-stream-pill{border:1px solid var(--cc-border-soft);border-radius:var(--cc-radius,2px);background:var(--cc-bg-panel);color:var(--cc-text);font-family:var(--cc-font-mono);white-space:nowrap;padding:.18rem .5rem;font-size:11px}.monitor-stream-pill.tone-ok{color:var(--cc-ok);border-color:#3dffa873}.monitor-stream-pill.tone-warn{color:var(--cc-warn);border-color:#ffc43d8c}.monitor-stream-pill.tone-err{color:#ff8a8a;border-color:#ff6b6b8c}.monitor-stream-pill.tone-muted{color:var(--cc-text-muted)}.monitor-stream-item{align-items:baseline;gap:.35rem;min-width:0;display:flex}.monitor-stream-k{color:var(--cc-text-muted);letter-spacing:.04em;flex:none}.monitor-stream-v{min-width:0;color:var(--cc-text);overflow-wrap:anywhere;flex:auto}.monitor-stream-v.mono{font-family:var(--cc-font-mono);letter-spacing:.02em;font-size:10px}.monitor-stream-v.tone-ok{color:var(--cc-ok)}.monitor-stream-v.tone-warn{color:var(--cc-warn)}.monitor-stream-v.tone-err{color:#ff8a8a}.monitor-stream-v.tone-muted{color:var(--cc-text-muted)}.monitor-stream-item--muted .monitor-stream-k,.monitor-stream-item--muted .monitor-stream-v{color:var(--cc-text-muted);font-size:10px}.vd{--gap:.4rem;--vd-rail-col:minmax(0, 1fr);--vd-center-col:minmax(0, 1.22fr);--vd-cols:var(--vd-rail-col) var(--vd-center-col) var(--vd-rail-col);background:radial-gradient(900px 420px at 50% 0%, #1ee3ff0f, transparent 55%), var(--cc-bg-deep);height:100%;min-height:0;color:var(--cc-text);font-family:var(--cc-font-sans);flex-direction:column;font-size:13px;display:flex;position:relative;overflow:hidden}.vd *{box-sizing:border-box}.vh{border-bottom:1px solid var(--cc-border-soft);background:linear-gradient(180deg, #0a1e38f2, var(--cc-bg-elevated));flex:none;align-items:center;gap:.75rem;height:44px;padding:0 .75rem;display:flex}.vh .brand{font-family:var(--cc-font-display);letter-spacing:.08em;white-space:nowrap;font-size:13px}.vh .brand span{color:var(--cc-accent)}.vh-tabs{flex:1;gap:.1rem;min-width:0;display:flex}.vh-tabs a{color:var(--cc-text-muted);border-bottom:2px solid #0000;padding:.28rem .5rem;font-size:12px;text-decoration:none}.vh-tabs a:hover{color:var(--cc-text);text-decoration:none}.vh-tabs a.active{color:var(--cc-accent);border-bottom-color:var(--cc-accent)}.vh-meta{align-items:center;gap:.35rem;margin-left:auto;display:flex}.vd .plate-title{font-family:var(--cc-font-display);letter-spacing:.06em;color:var(--cc-accent);font-size:14px}.vd .pill{border:1px solid var(--cc-border);border-radius:var(--cc-radius);background:var(--cc-accent-dim);color:var(--cc-accent);padding:.15rem .45rem;font-size:11px}.vd-main{gap:var(--gap);min-height:0;padding:var(--gap);flex-direction:column;flex:auto;padding-bottom:0;display:flex;position:relative}.vd-stage{z-index:1;flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex;position:relative}.cam-rails{grid-template-columns:var(--vd-cols);gap:var(--gap);flex:auto;min-height:0;display:grid;position:relative}.cam-hero{flex-direction:column;min-width:0;height:100%;min-height:0;display:flex;position:relative}.cam-rail-slot{min-width:0;height:100%;min-height:0}.cam-rail-slot .cam-rail{height:100%}.cam-rail{min-width:0;min-height:0}.cam-rail .webrtc-player__video,.cam-hero-main .webrtc-player__video{object-fit:contain;object-position:center;background:#050c16}.cam-rail.is-expandable{cursor:zoom-in}.cam-rail-slot.is-host-expanded{z-index:30;width:auto;position:absolute;inset:0}.cam-rail.is-expanded{cursor:zoom-out;z-index:30;border-color:var(--cc-border);width:auto;height:auto;margin:0;position:absolute;inset:6% 10%;box-shadow:0 10px 32px #0000008c}.cam-rail-scrim{z-index:25;cursor:zoom-out;background:#040c169e;border:0;margin:0;padding:0;position:absolute;inset:0}.cam-hero-canvas{flex:auto;min-height:0;position:relative;overflow:hidden}.vd-tile.cam-hero-main{min-height:0;position:absolute;inset:0}.vd-tile{border:1px solid var(--cc-border-soft);background:radial-gradient(circle at 35% 30%,#285a7852,#0000 55%),#071828;min-height:0;position:relative;overflow:hidden}.vd-workspace{grid-template-columns:var(--vd-cols);gap:var(--gap);flex:0 0 364px;min-width:0;min-height:0;display:grid;overflow:hidden}.vd-map-stack,.vd-center-stack,.vd-right-stack{gap:var(--gap);flex-direction:column;min-width:0;min-height:0;display:flex}.vector-map-panel{border:1px solid var(--cc-border-soft);background:#071828;flex:0 0 158px;min-width:0;min-height:0;position:relative;overflow:hidden}[data-theme=light] .vector-map-panel{background:#fff}.vector-map-canvas{position:absolute;inset:0}.vector-map-canvas canvas{display:block}.vector-map-toolbar,.vector-map-error{z-index:2;position:absolute}.vector-map-toolbar{flex-direction:column;gap:.2rem;display:flex;top:.35rem;right:.35rem}.vector-map-toolbar>button{border:1px solid var(--cc-border);background:var(--cc-bg-elevated);width:1.65rem;height:1.65rem;color:var(--cc-accent);cursor:pointer;padding:0;font-size:1rem;line-height:1}.vector-map-toolbar>button:hover,.vector-map-toolbar>button:focus-visible{border-color:var(--cc-accent)}.vector-map-layer-list{border:1px solid var(--cc-border);background:var(--cc-bg-panel-solid);width:max-content;color:var(--cc-text);flex-direction:column;gap:.4rem;padding:.55rem .7rem;font-size:11px;display:flex;position:absolute;top:0;right:calc(100% + .3rem)}.vector-map-layer-list label{cursor:pointer;align-items:center;gap:.4rem;display:flex}.vector-map-layer-list input{accent-color:var(--cc-accent);margin:0}.vector-map-error{background:var(--cc-bg-elevated);color:var(--cc-warn);padding:.35rem .5rem;top:50%;left:50%;transform:translate(-50%,-50%)}.vd-workspace.has-expanded-vector-map .vector-map-panel{flex:auto}.vd-workspace.has-expanded-vector-map .dock-side-id{flex:none}.vd-workspace.has-expanded-vector-map .dock-side-id>.dock-side-line{display:none}.vd-workspace.has-expanded-vector-map .dock-side-plate-row{flex-wrap:nowrap;align-items:center}.vd-aux-cams{flex-direction:column;flex:0 0 158px;gap:.3rem;min-width:0;height:auto;min-height:0;display:flex}.vd-aux-cam{border-color:var(--cc-border);flex:1 1 0;min-height:0}.vd-aux-cam .webrtc-player__video{object-fit:contain}.steer-model{border:1px solid var(--cc-border);background:var(--cc-bg-elevated);flex:none;align-items:center;gap:.45rem;width:12.6rem;min-width:12.6rem;max-width:12.6rem;height:100%;min-height:0;max-height:158px;padding:.25rem .4rem;display:flex;overflow:hidden}.steer-model-dial{flex:0 0 132px;width:132px;height:132px;position:relative;overflow:hidden}.steer-model-svg{width:100%;height:100%;display:block}.steer-model-meta{flex-direction:column;flex:0 0 4.6rem;justify-content:center;gap:.28rem;width:4.6rem;min-width:4.6rem;display:flex}.steer-spiral-track{fill:none;stroke:#78a0be2e}.steer-spiral-t1{stroke:var(--cc-ok)}.steer-spiral-t2{stroke:var(--cc-warn)}.steer-spiral-t3{stroke:var(--cc-danger)}.steer-rim,.steer-spoke{stroke:var(--cc-accent);fill:none}.steer-rim-inner{stroke:#1ee3ff59}.steer-hub{fill:var(--cc-bg-panel-solid);stroke:var(--cc-border-soft);stroke-width:1.25px}.steer-top-pip{fill:var(--cc-accent)}.steer-model-read{flex-direction:column;align-items:flex-start;gap:.05rem;min-width:0;display:flex}.steer-model-dir{letter-spacing:.08em;color:var(--cc-text-muted);white-space:nowrap;align-items:baseline;gap:.28rem;font-size:11px;display:flex}.steer-model-dir-face{width:1.2em;color:var(--cc-text);display:inline-block}.steer-model-deg{width:100%;font-family:var(--cc-font-mono);letter-spacing:0;font-variant-numeric:tabular-nums;color:var(--cc-accent);align-items:baseline;font-size:clamp(1.45rem,2.4vw,1.9rem);font-weight:700;line-height:1.05;display:flex}.steer-model-deg-n{text-align:left;min-width:3ch;display:inline-block}.steer-model-deg-u{color:var(--cc-text-muted);flex:none;font-size:.55em;font-weight:500}.steer-model.is-t2 .steer-model-deg{color:var(--cc-warn)}.steer-model.is-t3 .steer-model-deg,.steer-model.is-over .steer-model-deg{color:var(--cc-danger)}.steer-model-over{letter-spacing:.08em;min-height:1.15em;color:var(--cc-danger);visibility:hidden;font-size:10px}.steer-model-over.is-on{visibility:visible}.heading-compass{align-items:center;gap:.45rem;min-width:0;height:auto;min-height:0;max-height:none;padding:0;display:flex;overflow:hidden}.heading-compass-dial{flex:0 0 108px;width:108px;height:108px;overflow:hidden}.heading-compass-svg{width:100%;height:100%;display:block}.heading-ring-track{stroke:#78a0be47}.heading-ring-inner{stroke:#1ee3ff29}.heading-tick{stroke:#78a0be73;stroke-width:1.5px}.heading-tick.is-major{stroke:var(--cc-accent);stroke-width:2px}.heading-cardinal{fill:var(--cc-text-muted);font-size:28px;font-family:var(--cc-font-sans)}.heading-cardinal.is-north{fill:var(--cc-accent);font-weight:600}.heading-chevron-halo{fill:var(--cc-bg-panel-solid);stroke:var(--cc-bg-panel-solid);stroke-width:6px}.heading-chevron{fill:var(--cc-accent);stroke:var(--cc-text);stroke-width:1.5px}.heading-unknown{fill:var(--cc-bg-panel-solid);stroke:var(--cc-text-dim);stroke-width:2px}.heading-compass-meta{flex-direction:column;justify-content:center;gap:.05rem;min-width:2.6rem;display:flex}.heading-compass-lab{letter-spacing:.08em;color:var(--cc-text-muted);font-size:10px}.heading-compass-face{font-family:var(--cc-font-display);color:var(--cc-accent);font-size:clamp(1.25rem,2vw,1.55rem);font-weight:650;line-height:1.05}.heading-compass.is-missing .heading-compass-face{color:var(--cc-text-dim)}.heading-compass-deg{font-family:var(--cc-font-mono);font-variant-numeric:tabular-nums;color:var(--cc-accent);font-size:13px}.hud-side-lead{flex-direction:column;justify-content:center;gap:.2rem;min-width:0;min-height:0;padding:.1rem .55rem .1rem .2rem;display:flex}.hud-hero{border-left:1px solid var(--cc-border-soft);border-right:1px solid var(--cc-border-soft);justify-content:center;align-items:stretch;min-width:0;min-height:0;display:flex}.hud-hero .hud-item{flex-direction:column;flex:1 1 0;justify-content:center;min-width:4.8rem;max-width:9.5rem;padding:.04rem .35rem .08rem;display:flex}.hud-hero .hud-hero-speed{flex:1.2 1 0;max-width:11rem}.hud-hero .lab{font-size:10px}.hud-hero .hud-item .val{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:.08rem;font-size:clamp(1.85rem,3.2vw,2.55rem);font-weight:700;line-height:.95}.hud-hero .hud-hero-speed .val{font-size:clamp(2.15rem,4vw,3.05rem)}.hud-hero .hud-hero-gear .val{font-size:clamp(2.05rem,3.6vw,2.85rem)}.hud-hero .hud-item .val .u{letter-spacing:.04em;vertical-align:.35em;margin-left:.12em;font-size:.34em;font-weight:500;display:inline-block}.hud-hero .steer-model{background:0 0;border:0;flex:0 0 12.6rem;width:12.6rem;min-width:12.6rem;max-width:12.6rem;max-height:126px;padding:0 .2rem 0 .1rem}.hud-hero .steer-model-dial{flex:0 0 108px;width:108px;height:108px}.hud-hero .steer-model-deg{font-size:clamp(1.55rem,2.6vw,2.05rem)}.hud-aux{grid-template-columns:1fr 1fr;align-content:center;min-width:0;min-height:0;padding:.1rem .2rem;display:grid}.hud-aux .hud-item{text-align:center;border-right:0;flex:none;min-width:0;padding:.12rem .35rem}.hud-aux .hud-item:nth-child(odd){border-right:1px solid var(--cc-border-soft)}.hud-aux .hud-item .val{font-variant-numeric:tabular-nums;font-size:clamp(15px,1.25vw,18px);font-weight:650}.hud-aux .hud-item .val.mode{font-size:clamp(13px,1.1vw,15px);font-weight:650}.vd-tile .tag{z-index:2;border:1px solid var(--cc-border-soft);background:#00000073;padding:.1rem .4rem;font-size:11px;position:absolute;top:.35rem;left:.4rem}.vd-tile .live{z-index:2;color:var(--cc-ok);font-size:10px;position:absolute;top:.35rem;right:.4rem}.vd-tile .live.off{color:var(--cc-text-muted)}.vd-tile.viz{background:radial-gradient(ellipse at 50% 60%, #1ee3ff14, transparent 50%), linear-gradient(180deg, var(--cc-bg-panel-solid), var(--cc-bg-deep))}.vd-tile .fake{color:#b4d2e647;letter-spacing:.12em;place-items:center;font-size:12px;display:grid;position:absolute;inset:0}.m-link{z-index:1;background:linear-gradient(90deg, #3b82f6, var(--cc-accent));transform-origin:0;opacity:.75;height:2px;position:absolute}.m-mark{z-index:2;position:absolute;transform:translate(-50%,-50%)}.m-mark .ring{border:2px solid var(--cc-accent);background:var(--cc-bg-elevated);width:11px;height:11px;transform:rotate(45deg);box-shadow:0 0 8px #1ee3ff66}.m-mark.self .ring{border-color:#3b82f6;width:13px;height:13px;box-shadow:0 0 10px #3b82f68c}.m-mark .lab{white-space:nowrap;border:1px solid var(--cc-border-soft);background:#00000080;padding:.05rem .25rem;font-size:10px;position:absolute;top:-9px;left:9px}.err-list{flex:auto;min-height:0;padding:.3rem .45rem;font-size:11px;line-height:1.45;overflow:auto}.err-row{border-bottom:1px dashed #78a0be38;padding:.28rem 0}.err-row:last-child{border-bottom:0}.err-row .code{font-family:var(--cc-font-mono);color:#b4d2e6bf;font-size:10px}.err-row .msg{margin-top:.06rem}.webrtc-player{position:absolute;inset:0}.webrtc-player__video{object-fit:contain;background:var(--cc-bg-deep);width:100%;height:100%}.webrtc-player__overlay{color:#b4d2e659;letter-spacing:.12em;pointer-events:none;text-align:center;background:var(--cc-bg-panel);z-index:3;place-items:center;padding:.5rem;font-size:12px;display:grid;position:absolute;inset:0}.webrtc-player__overlay-body{flex-direction:column;align-items:center;gap:.55rem;max-width:90%;display:flex}.webrtc-player__overlay[data-status=error]{color:var(--cc-danger);letter-spacing:.04em;font-size:11px}.webrtc-player__overlay[data-status=connecting]{color:var(--cc-accent)}.webrtc-player__retry{pointer-events:auto;border:1px solid var(--cc-accent);height:26px;color:var(--cc-accent);font:inherit;letter-spacing:.08em;cursor:pointer;background:#1ee3ff1f;padding:0 .75rem;font-size:11px}.webrtc-player__retry:hover:not(:disabled){background:#1ee3ff38}.webrtc-player__retry:disabled{opacity:.5;cursor:not-allowed}.hud-strip{border:1px solid var(--cc-border);background:var(--cc-bg-elevated);flex-direction:column;flex:0 0 158px;width:100%;min-width:0;display:flex}.hud-alerts{letter-spacing:.04em;flex-wrap:wrap;align-items:baseline;gap:.2rem .4rem;min-height:0;padding:0 .15rem;font-size:11px;display:flex}.hud-alerts-lab{color:var(--cc-warn);flex:none}.hud-alerts-level{font-family:var(--cc-font-mono);color:var(--cc-text);flex:none}.hud-alerts-msg{color:var(--cc-text-muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.hud-strip.is-ok .hud-alerts-lab,.hud-strip.is-ok .hud-alerts-level{color:var(--cc-ok)}.hud-strip .inner{flex:auto;grid-template-columns:minmax(9.5rem,.78fr) minmax(0,1.7fr) minmax(7.6rem,.82fr);align-items:stretch;gap:0;min-height:0;padding:.2rem .3rem;display:grid;overflow:hidden}.hud-item{text-align:center;border-right:1px solid var(--cc-border-soft);flex:4.5rem;min-width:4.2rem;padding:.1rem .45rem}.hud-item:last-child{border-right:0}.hud-item .lab{color:var(--cc-text-muted);letter-spacing:.04em;font-size:10px}.hud-item .val{font-family:var(--cc-font-display);color:var(--cc-accent);white-space:nowrap;margin-top:.08rem;font-size:clamp(13px,1.1vw,16px);line-height:1.15}.hud-item .val .u{color:var(--cc-text-muted);font-size:.5em;font-family:var(--cc-font-sans);margin-left:.1rem}.hud-item .val.mode{font-size:clamp(12px,1vw,15px)}.hud-item .val.mode.manual{color:var(--cc-warn)}.hud-item .val.mode.teleop{color:#5eb8ff}.hud-item .val.mode.auto{color:var(--cc-ok)}.vd-center-stack .hud-strip .inner{grid-template-columns:minmax(0,.62fr) minmax(0,2.2fr) minmax(0,.83fr);height:100%}.vd-center-stack .hud-side-lead,.vd-center-stack .hud-aux{min-width:0;overflow:hidden}.vd-center-stack .hud-hero{min-width:0}.vd-center-stack .hud-hero .hud-item{min-width:0;padding-inline:.18rem}.vd-center-stack .hud-hero .hud-hero-gear{flex-grow:.65}.vd-center-stack .hud-hero .hud-item .val{font-size:clamp(1.1rem,1.5vw,1.5rem)}.vd-center-stack .hud-hero .hud-hero-speed .val{font-size:clamp(1.4rem,2vw,1.9rem)}.vd-center-stack .hud-hero-speed .val .u{font-size:.42em}.vd-center-stack .hud-hero .steer-model{flex:0 0 clamp(112px,7vw,124px);width:auto;min-width:0;max-width:none;padding-inline:.15rem}.vd-center-stack .hud-hero .steer-model-dial{flex-basis:clamp(44px,2.8vw,52px);width:clamp(44px,2.8vw,52px);height:clamp(44px,2.8vw,52px)}.vd-center-stack .hud-hero .steer-model-meta{flex:auto;width:auto;min-width:3.2rem}.vd-center-stack .hud-hero .steer-model-deg{font-size:clamp(1.05rem,1.35vw,1.4rem)}.vd-center-stack .hud-aux .hud-item{flex-basis:0;min-width:0;padding-inline:.18rem}.vd-center-stack .heading-compass-dial{flex-basis:clamp(48px,3vw,58px);width:clamp(48px,3vw,58px);height:clamp(48px,3vw,58px)}.vd-center-stack .heading-compass-meta{min-width:0}.vd-center-stack .heading-compass-face{white-space:nowrap;font-size:16px}.vd-drawer{top:var(--gap);right:var(--gap);bottom:var(--gap);z-index:20;border:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);width:min(312px,92vw);min-height:0;transform:translateX(calc(100% + var(--gap) + 8px));opacity:0;pointer-events:none;flex-direction:column;transition:transform .2s,opacity .18s;display:flex;position:absolute;box-shadow:-8px 0 28px #00000059}.vd-drawer.open{opacity:1;pointer-events:auto;transform:translate(0)}.vd-drawer-head{border-bottom:1px solid var(--cc-border-soft);letter-spacing:.06em;color:var(--cc-accent);font-size:12px;font-family:var(--cc-font-display);flex:none;justify-content:space-between;align-items:center;padding:.45rem .65rem;display:flex}.vd-drawer-close{border:1px solid var(--cc-border-soft);color:var(--cc-text-muted);font:inherit;cursor:pointer;background:0 0;padding:.15rem .45rem;font-size:11px}.vd-drawer-close:hover{color:var(--cc-accent);border-color:var(--cc-accent)}.vd-drawer-body{gap:var(--gap);min-height:0;padding:var(--gap);flex-direction:column;flex:auto;display:flex;overflow:hidden}.vd-drawer-backdrop{z-index:15;cursor:pointer;background:#00081047;border:0;margin:0;padding:0;position:absolute;inset:0}.vd-drawer .cc-panel{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel);flex-direction:column;min-height:0;display:flex;overflow:hidden}.vd-drawer .panel-body{flex:auto;min-height:0;padding:.55rem .65rem;overflow:auto}.vd-drawer .panel-title{border-bottom:1px solid var(--cc-border-soft);color:var(--cc-text-muted);letter-spacing:.04em;flex:none;justify-content:space-between;align-items:center;padding:.4rem .65rem;font-size:12px;display:flex}.vd-drawer .panel-title .sub{color:var(--cc-accent);font-size:11px}.vd-drawer .side-info{flex:0 0 248px;height:248px}.vd-drawer .side-info .tab-pane{box-sizing:border-box;height:216px;overflow:auto}.vd-drawer .side-mid{flex-direction:column;flex:1.2 1 0;min-height:160px;display:flex;overflow:hidden}.vd-drawer .grow{flex:1.4 1 0;min-height:0}.vd .tabs{border-bottom:1px solid var(--cc-border-soft);flex:none;display:flex}.vd .tabs button{height:32px;color:var(--cc-text-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:1;font-size:12px}.vd .tabs button.on{color:var(--cc-accent);border-bottom-color:var(--cc-accent);background:#1ee3ff0d}.vd .tab-pane{flex:auto;min-height:0;padding:.55rem .65rem;display:none;overflow:auto}.vd .tab-pane.on{display:block}.vd .tab-pane.oplog-pane{flex-direction:column;flex:auto;min-height:0;padding:0;display:none;overflow:hidden}.vd .tab-pane.oplog-pane.on{display:flex}.id-row{align-items:center;gap:.4rem;margin-bottom:.45rem;display:flex}.id-row .id{font-family:var(--cc-font-display);color:var(--cc-accent);letter-spacing:.04em;font-size:16px}.vd .badge{color:var(--cc-ok);border:1px solid #3dffa866;padding:.1rem .35rem;font-size:10px}.vd .kv{grid-template-columns:4.5rem 1fr;gap:.22rem .35rem;font-size:11px;line-height:1.4;display:grid}.vd .kv .k{color:var(--cc-text-muted)}.vd .kv .v{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.vd .kv .v.mono{font-family:var(--cc-font-mono);letter-spacing:.02em;font-size:11px}.vd .ver-empty{min-height:6rem;color:var(--cc-text-muted);letter-spacing:.06em;place-items:center;padding:1rem .65rem;font-size:12px;display:grid}.vd .kv .v.ok{color:var(--cc-ok)}.vd .kv .v.warn{color:var(--cc-warn)}.mile-row{grid-template-columns:1fr 1fr;gap:.35rem;margin-top:.5rem;display:grid}.mile{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel);text-align:center;padding:.35rem .4rem}.mile .lab{color:var(--cc-text-muted);font-size:10px}.mile .num{font-family:var(--cc-font-display);color:var(--cc-accent);margin-top:.1rem;font-size:15px;line-height:1.1}.mile .num .u{color:var(--cc-text-muted);font-size:.55em;font-family:var(--cc-font-sans);margin-left:.1rem}.stat-list{flex-direction:column;gap:.35rem;display:flex}.stat-line{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel);justify-content:space-between;align-items:center;gap:.4rem;padding:.32rem .4rem;font-size:12px;display:flex}.stat-line .lab{color:var(--cc-text-muted);font-size:11px}.stat-line .val{font-family:var(--cc-font-mono);color:var(--cc-accent)}.stat-line.vd-alert-list{align-items:flex-start}.stat-line.vd-alert-list .val{text-align:right;max-width:70%;font-family:inherit}.stat-line.vd-alert-list ul{margin:0;padding:0;list-style:none}.stat-line.vd-alert-list li{line-height:1.45}.stat-line .val.ok{color:var(--cc-ok)}.oplog-filter{flex-wrap:wrap;flex:none;align-items:center;gap:.3rem;padding:.4rem .55rem .25rem;font-size:11px;display:flex}.oplog-filter-lab{color:var(--cc-text-muted);margin-right:.1rem}.oplog-filter .chip{border:1px solid var(--cc-accent);color:var(--cc-accent);cursor:pointer;font-size:10px;font:inherit;background:#1ee3ff14;padding:.12rem .4rem}.oplog-filter .chip.on{color:#fff;background:#1ee3ff38}.oplog-error{color:#ff8fa3;background:#ff5c7a14;border:1px solid #ff5c7a59;flex:none;margin:0 .55rem .25rem;padding:.35rem .45rem;font-size:11px;line-height:1.35}.oplog-head,.oplog-row{grid-template-columns:4.2rem minmax(3.2rem,.7fr) minmax(0,1.4fr);align-items:start;gap:.35rem;font-size:11px;display:grid}.oplog-head{color:var(--cc-text-muted);border-bottom:1px solid var(--cc-border-soft);flex:none;padding:.3rem .55rem}.oplog-list{flex:auto;min-height:0;padding:.1rem .55rem .45rem;overflow:auto}.oplog-row{border-bottom:1px dashed var(--cc-border-soft);padding:.32rem 0;line-height:1.35}.oplog-row:last-child{border-bottom:0}.oplog-row .t{font-family:var(--cc-font-mono);color:var(--cc-text-muted);font-size:10px}.oplog-row .who{color:var(--cc-text);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.oplog-row .act{color:var(--cc-accent);overflow-wrap:anywhere;word-break:break-word;min-width:0}.oplog-empty{color:var(--cc-text-muted);text-align:center;padding:.75rem .2rem;font-size:11px}.dock-side{border:1px solid var(--cc-border);background:var(--cc-bg-elevated);text-align:left;flex-direction:column;flex:auto;justify-content:flex-start;gap:.22rem;min-width:0;min-height:0;padding:.5rem .65rem;display:flex}.dock-side-id{overflow:visible}.dock-side-plate-row{flex-wrap:wrap;align-items:flex-start;gap:.4rem;min-width:0;display:flex}.dock-side-plate{font-family:var(--cc-font-display);letter-spacing:.06em;color:var(--cc-accent);white-space:normal;word-break:break-word;font-size:clamp(15px,1.35vw,18px);line-height:1.25}.dock-side-badge{border:1px solid var(--cc-border-soft);color:var(--cc-text-muted);letter-spacing:.04em;flex:none;padding:.08rem .32rem;font-size:10px}.dock-side-badge.on{color:var(--cc-ok);border-color:#3dffa873}.dock-side-info-btn{border:1px solid var(--cc-border-soft);width:22px;height:22px;color:var(--cc-text-muted);cursor:pointer;background:0 0;flex:none;place-items:center;margin-left:auto;padding:0;transition:border-color .16s,color .16s,background .16s;display:inline-grid}.dock-side-info-btn:hover,.dock-side-info-btn[aria-pressed=true]{color:var(--cc-accent);background:#1ee3ff14;border-color:#1ee3ff8c}.dock-side-line{align-items:baseline;gap:.4rem;min-width:0;font-size:11px;line-height:1.4;display:flex}.dock-side-line .k{color:var(--cc-text-muted);flex:0 0 2.2em}.dock-side-id .dock-side-line .k{text-align:left;flex:0 0 4.5em;min-width:4.5em;max-width:4.5em}.dock-side-id .dock-side-line .v{text-align:left}.dock-side-line .v{min-width:0;color:var(--cc-text);white-space:normal;overflow-wrap:anywhere;word-break:break-word;flex:auto}.dock-side-id .dock-side-line .v.mono{font-family:var(--cc-font-mono);letter-spacing:.02em;white-space:normal;overflow-wrap:anywhere;word-break:break-word;font-size:10px}.dock-side-line .v.mono{font-family:var(--cc-font-mono);font-size:10px}.dock-side-line .v.teleop{color:#5eb8ff}.dock-side-line .v.warn{color:var(--cc-warn)}.dock-side-line .v.muted{color:var(--cc-text-muted)}.vd-link-strip .v{letter-spacing:.02em;font-size:10px}.vd-link-strip.ok .v{color:var(--cc-ok)}.vd-link-strip.warn .v{color:var(--cc-warn)}.vd-link-health{border:1px solid var(--cc-border-soft);background:#08182c8c;margin-bottom:.65rem;padding:.55rem .6rem;font-size:11px}.vd-link-health.is-ok{border-color:#3dffa840}.vd-link-health.is-warn{border-color:#ffc43d73}.vd-link-health-title{letter-spacing:.08em;text-transform:uppercase;color:var(--cc-text-muted);margin-bottom:.25rem;font-size:10px}.vd-link-health-summary{color:var(--cc-text);margin:0 0 .45rem;line-height:1.45}.vd-link-health-grid{flex-direction:column;gap:.28rem;display:flex}.vd-link-health-row{align-items:baseline;gap:.35rem;min-width:0;display:flex}.vd-link-health-row .k{color:var(--cc-text-muted);flex:0 0 4.8em}.vd-link-health-row .v{min-width:0;color:var(--cc-text);overflow-wrap:anywhere;flex:auto}.vd-link-health-row .v.ok{color:var(--cc-ok)}.vd-link-health-row .v.warn{color:var(--cc-warn)}.vd-link-health-note{color:var(--cc-warn);margin:.4rem 0 0;font-size:10px;line-height:1.4}.dock-side-ops .dock-side-line .k{flex:0 0 4.5em}.dock-side-ops .dock-side-line .v.ok{color:var(--cc-ok)}.dock-cluster{border:1px solid var(--cc-border);background:var(--cc-bg-elevated);flex-direction:column;flex:auto;justify-content:flex-start;align-items:stretch;gap:.55rem;min-width:0;min-height:0;padding:.5rem .45rem;display:flex;overflow:auto}.dock-primary{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;min-width:0;min-height:52px;display:flex}.traffic-signal{border:1px solid var(--cc-border);background:var(--cc-bg-elevated);width:100%;position:relative}.traffic-signal-main,.traffic-signal-group,.traffic-signal-colors{align-items:center;display:flex}.traffic-signal-main{grid-template-columns:repeat(3,minmax(0,1fr));justify-items:center;gap:.65rem;min-height:58px;padding:.45rem .65rem;display:grid}.traffic-signal-label{color:var(--cc-text);white-space:nowrap;font-size:13px;font-weight:600}.traffic-signal-group{gap:.4rem}.traffic-signal-colors{gap:3px}.traffic-color,.traffic-send{border:1px solid var(--cc-border-soft);min-width:2.7rem;height:38px;color:var(--cc-text-muted);font:inherit;cursor:pointer;background:0 0;justify-content:center;padding:0 .65rem;font-size:13px}.traffic-color.red.selected{border-color:var(--cc-danger);color:var(--cc-danger);background:color-mix(in srgb, var(--cc-danger) 12%, var(--cc-bg-panel))}.traffic-color.green.selected{border-color:var(--cc-ok);color:var(--cc-ok);background:color-mix(in srgb, var(--cc-ok) 12%, var(--cc-bg-panel))}.traffic-color.yellow.selected{border-color:var(--cc-warn);color:var(--cc-warn);background:color-mix(in srgb, var(--cc-warn) 12%, var(--cc-bg-panel))}.traffic-color:disabled,.traffic-send:disabled{opacity:.4;cursor:not-allowed}.traffic-send-wrap{display:inline-flex}.traffic-send{border-color:var(--cc-border-strong);min-width:4rem;height:42px;color:var(--cc-accent);background:var(--cc-bg-elevated);grid-column:1/-1}.traffic-send:disabled{opacity:.45;cursor:not-allowed}.dock-btn.traffic-toggle{min-width:7.5rem}@media (width<=720px){.traffic-signal-main{grid-template-columns:1fr}.traffic-color{min-width:2.4rem;padding:0 .45rem}}.dock-brake{flex-wrap:wrap;align-items:center;gap:.45rem;min-width:0;display:inline-flex}.dock-btn{border:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);min-width:4.2rem;height:48px;color:var(--cc-text-muted);font:inherit;letter-spacing:.06em;white-space:nowrap;cursor:pointer;padding:0 .85rem;font-size:14px;transition:border-color .16s,color .16s,background .16s,box-shadow .16s}.dock-btn.on{border-color:var(--cc-accent);color:var(--cc-accent);background:var(--cc-accent-dim)}.dock-btn:disabled{opacity:.4;cursor:not-allowed}.dock-btn.estop{letter-spacing:.08em;min-width:4.6rem;box-shadow:none;border-width:1px;font-weight:600}.dock-btn.estop.hard{border-color:color-mix(in srgb, var(--cc-danger) 42%, transparent);background:var(--cc-bg-elevated);color:var(--cc-danger)}.dock-btn.estop.soft{border-color:color-mix(in srgb, var(--cc-warn) 42%, transparent);background:var(--cc-bg-elevated);color:var(--cc-warn)}.dock-btn.estop.release{border-color:var(--cc-border-strong);background:var(--cc-bg-elevated);color:var(--cc-text-muted)}.dock-btn.estop.hard.holding{border-color:var(--cc-danger);background:color-mix(in srgb, var(--cc-danger) 22%, var(--cc-bg-elevated));color:var(--cc-text);box-shadow:0 0 12px color-mix(in srgb, var(--cc-danger) 22%, transparent)}.dock-btn.estop.soft.holding{border-color:var(--cc-warn);background:color-mix(in srgb, var(--cc-warn) 20%, var(--cc-bg-elevated));color:var(--cc-text);box-shadow:0 0 10px color-mix(in srgb, var(--cc-warn) 20%, transparent)}.dock-btn.estop:disabled{box-shadow:none}.dock-btn.estop:active:not(:disabled){transform:translateY(1px)}.dock-btn.estop.holding{outline:1px solid var(--cc-text);outline-offset:1px;animation:1.2s ease-in-out infinite brake-hold-pulse}@keyframes brake-hold-pulse{0%,to{filter:brightness()}50%{filter:brightness(1.18)}}.brake-hold-chip,.steer-hold-chip,.brake-error-chip{letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;border:1px solid #0000;max-width:10rem;padding:.15rem .4rem;font-size:10px;line-height:1.3;overflow:hidden}.brake-hold-chip{color:#ffb86c;background:#ffb86c1a;border-color:#ffb86c59}.steer-hold-chip{color:#7ee0ff;background:#1ee3ff1a;border-color:#7ee0ff59;max-width:14rem}.teleop-occupy-chip{letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;border:1px solid #0000;max-width:16rem;padding:.15rem .4rem;font-size:10px;line-height:1.3;overflow:hidden}.teleop-occupy-chip.self{color:#7ee0ff;background:#1ee3ff1a;border-color:#7ee0ff59}.teleop-occupy-chip.other{color:#ffb86c;background:#ffb86c1a;border-color:#ffb86c59}.dock-btn.rc-preempt{color:#ffb86c;border-color:#ffb86c73;min-width:5.6rem}.brake-error-chip{color:#ff8fa3;background:#ff5c7a1a;border-color:#ff8fa359}.dock-btn.rc-switch{min-width:5.6rem}.dock-btn.rc-switch.on{box-shadow:0 0 12px var(--cc-accent-glow)}.dock-teleop{border-top:1px solid var(--cc-border-soft);flex-wrap:nowrap;justify-content:center;align-items:flex-end;gap:.55rem .75rem;width:100%;min-width:0;padding-top:.35rem;display:flex;overflow:hidden}.ctrl-group{flex-direction:column;align-items:center;gap:.2rem;display:flex}.ctrl-group .cap{height:14px;color:var(--cc-text-muted);letter-spacing:.06em;text-align:center;white-space:nowrap;font-size:10px;line-height:14px}.ctrl-group.compact .body{justify-content:center;align-items:center;gap:.4rem;height:72px;display:flex}.ctrl-group.steer-cmd .body{flex-direction:row;align-items:center;gap:.35rem;height:72px}.ctrl-group.steer-cmd .steer-hold-chip{text-align:center;box-sizing:border-box;max-width:6.4rem;min-height:0}.ctrl-group.steer-cmd .steer-hold-chip.is-zero{color:var(--cc-text-dim);background:0 0;border-color:#0000}.dock-aux{flex:none;position:relative}.dock-aux .body{height:72px}.dock-btn.aux-toggle{min-width:5.2rem;height:48px}.dock-aux-panel{z-index:8;border:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);box-shadow:0 8px 28px var(--cc-shadow);gap:.75rem;padding:.55rem .65rem;display:flex;position:absolute;bottom:calc(100% + .45rem);left:50%;transform:translate(-50%)}.dock-aux-section{flex-direction:column;gap:.3rem;display:flex}.dock-aux-label{color:var(--cc-text-muted);letter-spacing:.06em;text-align:center;font-size:10px}.dpad{grid-template-rows:22px 22px 22px;grid-template-columns:34px 34px 34px;gap:3px;display:grid}.dpad button{border:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);color:var(--cc-text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none;font-size:13px}.dpad button:first-child{grid-area:1/2}.dpad button:nth-child(2){grid-area:2/1}.dpad button:nth-child(3){grid-area:2/2}.dpad button:nth-child(4){grid-area:2/3}.dpad button:nth-child(5){grid-area:3/2}.dpad button.pressed,.dpad button:active{color:var(--cc-accent);border-color:var(--cc-accent);background:color-mix(in srgb, var(--cc-accent) 18%, var(--cc-bg-elevated));box-shadow:0 0 12px var(--cc-accent-glow)}.pedals{align-items:stretch;gap:.35rem;height:100%;display:flex}.pedal{border:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);width:48px;height:100%;color:var(--cc-text-muted);font:inherit;letter-spacing:.06em;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:.15rem;font-size:11px;display:flex}.pedal.throttle.pressed,.pedal.throttle:active{color:var(--cc-ok);border-color:var(--cc-ok);background:color-mix(in srgb, var(--cc-ok) 14%, var(--cc-bg-elevated))}.pedal.brake.pressed,.pedal.brake:active{color:var(--cc-danger);border-color:var(--cc-danger);background:color-mix(in srgb, var(--cc-danger) 16%, var(--cc-bg-elevated))}.pedal.hard.pressed,.pedal.hard:active{color:var(--cc-text);border-color:var(--cc-danger);background:color-mix(in srgb, var(--cc-danger) 28%, var(--cc-bg-elevated));box-shadow:0 0 10px color-mix(in srgb, var(--cc-danger) 30%, transparent)}.accel-cap{cursor:pointer;flex-direction:column;justify-content:center;gap:.28rem;width:92px;height:100%;display:flex}.accel-cap-readout{color:var(--cc-text-dim);letter-spacing:.04em;justify-content:space-between;align-items:baseline;font-size:10px;display:flex}.accel-cap-readout strong{color:var(--cc-accent);font-variant-numeric:tabular-nums;font-size:13px}.accel-cap input[type=range]{width:100%;height:14px;accent-color:var(--cc-accent);cursor:pointer;background:0 0;margin:0}.accel-cap input[type=range]:focus-visible{outline:1px solid var(--cc-accent);outline-offset:2px}.gear-pad{grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;gap:3px;width:78px;height:100%;display:grid}.gear-pad button{border:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);color:var(--cc-text-muted);font:inherit;font-family:var(--cc-font-display);cursor:pointer;font-size:14px}.gear-pad button.on{color:var(--cc-accent);border-color:var(--cc-accent);background:color-mix(in srgb, var(--cc-accent) 14%, var(--cc-bg-elevated))}.light-pad{grid-template-rows:auto auto auto;grid-template-columns:1fr 1fr;gap:4px;width:118px;display:grid}.light-pad.port{grid-template-rows:auto auto;width:118px}.light-pad button{border:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);min-height:28px;color:var(--cc-text-muted);font:inherit;cursor:pointer;font-size:11px;line-height:1.2}.light-pad button[data-light=hazard]{grid-column:1/-1}.light-pad button.on{color:var(--cc-warn);border-color:color-mix(in srgb, var(--cc-warn) 75%, transparent);background:color-mix(in srgb, var(--cc-warn) 14%, var(--cc-bg-elevated))}.light-pad button[data-light=hazardRoof].on{color:var(--cc-warn);border-color:color-mix(in srgb, var(--cc-warn) 80%, transparent);background:color-mix(in srgb, var(--cc-warn) 16%, var(--cc-bg-elevated))}.light-pad button[data-light=alignRed].on{color:var(--cc-danger);border-color:color-mix(in srgb, var(--cc-danger) 80%, transparent);background:color-mix(in srgb, var(--cc-danger) 16%, var(--cc-bg-elevated))}.light-pad button[data-light=alignBlue].on{color:var(--cc-info);border-color:color-mix(in srgb, var(--cc-info) 80%, transparent);background:color-mix(in srgb, var(--cc-info) 16%, var(--cc-bg-elevated))}.vd-toasts{z-index:40;pointer-events:none;flex-direction:column;align-items:stretch;gap:.4rem;width:min(22rem,100% - 1.1rem);display:flex;position:absolute;top:.55rem;right:.55rem}.vd-toast{border:1px solid var(--cc-border-soft);background:color-mix(in srgb, var(--cc-bg-elevated) 92%, transparent);padding:.5rem .7rem;box-shadow:0 8px 24px #0006}.vd-toast-title{font-family:var(--cc-font-display);letter-spacing:.06em;font-size:12px;line-height:1.3}.vd-toast-text{color:var(--cc-text);margin-top:.18rem;font-size:12px;line-height:1.45}.vd-toast.is-warn{border-color:color-mix(in srgb, var(--cc-warn) 55%, transparent)}.vd-toast.is-warn .vd-toast-title{color:var(--cc-warn)}.vd-toast.is-err{border-color:color-mix(in srgb, var(--cc-danger) 55%, transparent)}.vd-toast.is-err .vd-toast-title{color:var(--cc-danger)}.vd-toast.is-info{border-color:color-mix(in srgb, var(--cc-accent) 45%, transparent)}.vd-toast.is-info .vd-toast-title{color:var(--cc-accent)}@media (width<=1100px){.vd{height:auto;min-height:100%;overflow:visible}.cam-rails{min-height:220px}.dock-aux-panel{left:auto;right:0;transform:none}}@media (width<=720px){.vd-workspace{flex-direction:column;flex:none;display:flex;overflow:visible}.vector-map-panel{flex-basis:180px}.vd-workspace.has-expanded-vector-map .vector-map-panel{flex:0 0 300px}.dock-side,.dock-cluster{flex:none}.vd-center-stack .hud-strip{flex-basis:auto;min-height:158px}.vd-center-stack .hud-strip .inner{grid-template-columns:1fr;height:auto}.vd-aux-cams{flex-basis:180px}.steer-model{min-height:132px}.heading-compass,.hud-hero .steer-model{max-height:none}.hud-side-lead{order:2;padding:.15rem .2rem}.hud-hero{border-left:0;border-right:0;border-bottom:1px solid var(--cc-border-soft);order:1}.hud-aux{border-top:1px solid var(--cc-border-soft);order:3}.hud-item{min-width:3.6rem;padding:.08rem .25rem}.dock-side{padding:.3rem .4rem}.dock-side-ops .dock-side-line .k{flex-basis:3.6em}.dock-btn{min-width:3.6rem;height:44px;font-size:13px}}.fleet{--pad:.65rem;--gap:.5rem;box-sizing:border-box;background:radial-gradient(900px 420px at 50% 0%, #1ee3ff12, transparent 55%), var(--cc-bg-deep);flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.fleet *,.fleet :before,.fleet :after{box-sizing:border-box}.fleet-head{border-bottom:1px solid var(--cc-border-soft);background:linear-gradient(180deg, #0a1e38f2, var(--cc-bg-elevated));flex:none;align-items:center;gap:1rem;height:52px;padding:0 .85rem;display:flex}.fleet-head .brand{font-family:var(--cc-font-display);letter-spacing:.08em;white-space:nowrap;font-size:14px}.fleet-head .brand span{color:var(--cc-accent)}.fleet-tabs{flex:1;gap:.15rem;min-width:0;display:flex}.fleet-tabs a{color:var(--cc-text-muted);border-bottom:2px solid #0000;padding:.4rem .7rem;font-size:12px;text-decoration:none}.fleet-tabs a:hover{color:var(--cc-text);text-decoration:none}.fleet-tabs a.active{color:var(--cc-accent);border-bottom-color:var(--cc-accent)}.fleet-tabs a.disabled,.fleet-tabs span.disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.fleet-head .meta{align-items:center;gap:.45rem;margin-left:auto;display:flex}.fleet .pill{border:1px solid var(--cc-line);border-radius:var(--cc-radius);background:var(--cc-accent-dim);color:var(--cc-accent);white-space:nowrap;padding:.2rem .55rem;font-size:11px}.fleet-body{gap:var(--gap);min-height:0;padding:var(--pad);flex:auto;grid-template-columns:260px minmax(0,1fr);display:grid}.fleet .side{gap:var(--gap);flex-direction:column;min-height:0;display:flex}.fleet .side .cc-panel{flex-direction:column;flex:auto;min-height:0;display:flex}.fleet .side .panel-title{letter-spacing:.06em;border-bottom:1px solid var(--cc-border-soft);color:var(--cc-text-muted);flex:none;padding:.45rem .65rem;font-size:12px}.fleet .side .panel-body{flex:1;padding:.55rem .65rem;overflow:auto}.fleet .cc-btn.is-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.fleet .proj{margin-bottom:.45rem}.fleet .proj-hd{border:1px solid var(--cc-border-soft);cursor:pointer;text-align:left;width:100%;color:inherit;font-size:12px;font:inherit;background:#1ee3ff0f;align-items:center;gap:.4rem;padding:.4rem .45rem;display:flex}.fleet .proj-hd:hover{border-color:var(--cc-line)}.fleet .proj-hd.active{border-color:var(--cc-accent);color:var(--cc-accent)}.fleet .proj-hd .chev{width:.9rem;color:var(--cc-text-muted);flex:none;font-size:10px}.fleet .proj.collapsed .proj-hd .chev{transform:rotate(-90deg)}.fleet .proj-hd .name{flex:1;min-width:0}.fleet .proj-hd .cnt{font-family:var(--cc-font-mono,var(--cc-mono), monospace);color:var(--cc-text-muted);font-size:11px}.fleet .proj-all{margin-bottom:.45rem}.fleet .proj-list{margin-top:.25rem}.fleet .proj.collapsed .proj-list{display:none}.fleet .veh-mini{border-bottom:1px dashed var(--cc-border-soft);color:inherit;grid-template-columns:1fr auto auto;align-items:center;gap:.35rem;padding:.32rem .4rem;font-size:11px;text-decoration:none;display:grid}.fleet .veh-mini:hover{background:#1ee3ff0a;text-decoration:none}.fleet .search-box{width:100%;margin-bottom:.5rem}.fleet .main-col{gap:var(--gap);flex-direction:column;min-width:0;min-height:0;display:flex}.fleet .toolbar{flex-wrap:wrap;flex:none;align-items:center;gap:.45rem;display:flex}.fleet .status-tabs{flex-wrap:wrap;gap:.3rem;display:flex}.fleet .status-tab{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel-solid);height:32px;color:var(--cc-text-muted);font:inherit;cursor:pointer;align-items:center;gap:.35rem;padding:0 .75rem;font-size:12px;display:inline-flex}.fleet .status-tab:hover{border-color:var(--cc-border);color:var(--cc-text);background:var(--cc-bg-elevated)}.fleet .status-tab.active{color:var(--cc-accent);border-color:var(--cc-accent);background:var(--cc-accent-dim)}.fleet .status-tab .n{font-family:var(--cc-font-mono,monospace);text-align:center;border:1px solid var(--cc-border-soft);background:var(--cc-bg-table-head);min-width:1.2rem;color:inherit;padding:.05rem .3rem;font-size:11px}.fleet .status-tab.platoon.active{color:var(--cc-info);border-color:var(--cc-info);background:color-mix(in srgb, var(--cc-info) 12%, var(--cc-bg-panel-solid))}.fleet .status-tab.online.active{color:var(--cc-ok);border-color:var(--cc-ok)}.fleet .status-tab.abnormal.active{color:var(--cc-danger);border-color:var(--cc-danger)}.fleet .toolbar .grow{flex:1}.fleet .toolbar .cc-input{min-width:10rem;height:32px}.fleet .scope-chip{color:var(--cc-text-muted);border:1px solid var(--cc-border-soft);white-space:nowrap;padding:.2rem .5rem;font-size:11px}.fleet .scope-chip strong{color:var(--cc-accent);font-weight:500}.fleet .board{flex-direction:column;flex:auto;gap:.85rem;min-height:0;display:flex;overflow:auto}.fleet .group-hd{border-bottom:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);z-index:2;align-items:center;gap:.5rem;margin-bottom:.45rem;padding:.15rem .1rem;display:flex;position:sticky;top:0}.fleet .group-hd h2{letter-spacing:.08em;margin:0;font-size:13px;font-weight:500}.fleet .section-hint{align-items:center;display:inline-flex;position:relative}.fleet .section-hint-btn{border:1px solid var(--cc-border-soft);width:16px;height:16px;color:var(--cc-text-muted);font-size:11px;font-family:var(--cc-font-mono,monospace);cursor:help;background:0 0;border-radius:50%;padding:0;line-height:1}.fleet .section-hint-btn:hover,.fleet .section-hint-btn:focus-visible{border-color:var(--cc-accent);color:var(--cc-accent);outline:none}.fleet .section-hint-pop{z-index:4;border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel-solid,var(--cc-bg-elevated));width:max-content;max-width:16rem;color:var(--cc-text-muted);white-space:normal;pointer-events:none;padding:.35rem .5rem;font-size:11px;line-height:1.45;display:none;position:absolute;top:50%;left:calc(100% + .4rem);transform:translateY(-50%)}.fleet .section-hint:hover .section-hint-pop,.fleet .section-hint:focus-within .section-hint-pop{display:block}.fleet .group-hd.platoon h2{color:#5eb8ff}.fleet .group-hd.online h2{color:var(--cc-ok)}.fleet .group-hd.abnormal h2{color:var(--cc-danger)}.fleet .card-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.55rem;display:grid}.fleet .vcard{border:1px solid var(--cc-border-soft);color:inherit;background:#08182cbf;flex-direction:column;gap:.4rem;padding:.55rem .65rem .55rem .75rem;text-decoration:none;display:flex;position:relative;overflow:hidden}.fleet .vcard .plate{font-family:var(--cc-font-sans);letter-spacing:.04em;font-size:15px;font-weight:600}.fleet .vcard .metrics{color:var(--cc-text-muted);flex-wrap:wrap;gap:.45rem .75rem;font-size:11px;display:flex}.fleet .vcard .metrics strong{font-family:var(--cc-font-mono,monospace);color:var(--cc-text);margin-left:.2rem;font-weight:500}.fleet .vcard.alert{--unit-accent:var(--cc-danger);border-color:#ff6b7a80;box-shadow:inset 0 0 0 1px #ff6b7a1a}.fleet .vcard.alert:before{content:"";background:var(--cc-danger);width:3px;position:absolute;top:0;bottom:0;left:0}.fleet .vcard .msg{color:var(--cc-danger);font-size:11px}.fleet .prow-list{flex-direction:column;gap:.75rem;display:flex}.fleet .board-section .prow-list+.solo-grid{margin-top:.75rem}.fleet .prow,.fleet .solo-card{--unit-accent:var(--cc-accent);--unit-border:#1ee3ff6b;--unit-border-hover:#1ee3ffa6;--unit-glow:#1ee3ff14;--unit-fill-a:#0c2440b8;--unit-fill-b:var(--cc-bg-elevated)}.fleet .prow.tone-convoy,.fleet .solo-card.tone-convoy{--unit-accent:var(--cc-accent);--unit-border:color-mix(in srgb, var(--cc-accent) 45%, transparent);--unit-border-hover:color-mix(in srgb, var(--cc-accent) 70%, transparent);--unit-glow:var(--cc-accent-dim);--unit-fill-a:color-mix(in srgb, var(--cc-accent) 10%, var(--cc-bg-panel-solid));--unit-fill-b:var(--cc-bg-elevated)}.fleet .solo-card.tone-online{--unit-accent:var(--cc-ok);--unit-border:color-mix(in srgb, var(--cc-ok) 45%, transparent);--unit-border-hover:color-mix(in srgb, var(--cc-ok) 70%, transparent);--unit-glow:color-mix(in srgb, var(--cc-ok) 10%, transparent);--unit-fill-a:color-mix(in srgb, var(--cc-ok) 10%, var(--cc-bg-panel-solid));--unit-fill-b:var(--cc-bg-elevated)}.fleet .prow.tone-offline,.fleet .solo-card.tone-offline{--unit-accent:var(--cc-offline);--unit-border:color-mix(in srgb, var(--cc-offline) 45%, transparent);--unit-border-hover:color-mix(in srgb, var(--cc-offline) 65%, transparent);--unit-glow:color-mix(in srgb, var(--cc-offline) 8%, transparent);--unit-fill-a:color-mix(in srgb, var(--cc-offline) 8%, var(--cc-bg-panel-solid));--unit-fill-b:var(--cc-bg-elevated)}.fleet .prow.tone-warn,.fleet .solo-card.tone-warn{--unit-accent:var(--cc-warn);--unit-border:color-mix(in srgb, var(--cc-warn) 50%, transparent);--unit-border-hover:color-mix(in srgb, var(--cc-warn) 75%, transparent);--unit-glow:color-mix(in srgb, var(--cc-warn) 10%, transparent);--unit-fill-a:color-mix(in srgb, var(--cc-warn) 10%, var(--cc-bg-panel-solid));--unit-fill-b:var(--cc-bg-elevated)}.fleet .prow.tone-alert,.fleet .solo-card.tone-alert{--unit-accent:var(--cc-danger);--unit-border:color-mix(in srgb, var(--cc-danger) 55%, transparent);--unit-border-hover:color-mix(in srgb, var(--cc-danger) 80%, transparent);--unit-glow:color-mix(in srgb, var(--cc-danger) 12%, transparent);--unit-fill-a:color-mix(in srgb, var(--cc-danger) 10%, var(--cc-bg-panel-solid));--unit-fill-b:var(--cc-bg-elevated)}.fleet .prow{border:1px solid var(--unit-border);box-shadow:inset 0 0 0 1px var(--unit-glow), 0 0 0 1px var(--cc-shadow);background:linear-gradient(180deg, var(--unit-fill-a), var(--unit-fill-b));flex-direction:column;animation:.35s both fleet-prow-in;display:flex;position:relative;overflow:hidden}.fleet .prow:before{content:"";background:var(--unit-accent);opacity:.95;width:3px;position:absolute;top:0;bottom:0;left:0}.fleet .solo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.fleet .solo-card{border:1px solid var(--unit-border);min-width:0;min-height:156px;box-shadow:inset 0 0 0 1px var(--unit-glow), 0 0 0 1px #00000047;background:linear-gradient(165deg, var(--unit-fill-a), var(--unit-fill-b));color:inherit;cursor:pointer;flex-direction:column;gap:.45rem;padding:.7rem .75rem .7rem .85rem;text-decoration:none;transition:border-color .18s,background .18s,transform .18s;animation:.35s both fleet-prow-in;display:flex;position:relative;overflow:hidden}.fleet .solo-card:before{content:"";background:var(--unit-accent);opacity:.95;width:3px;position:absolute;top:0;bottom:0;left:0}.fleet .solo-card:focus-visible{outline:1px solid var(--unit-accent);outline-offset:1px}.fleet .solo-card.tone-offline{opacity:.9}.fleet .solo-top{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.fleet .solo-plate-row{flex:1;align-items:center;gap:.5rem;min-width:0;display:flex}.fleet .online-dot{border-radius:50%;flex:none;width:8px;height:8px;box-shadow:0 0 0 2px #00000059}.fleet .online-dot.on{background:var(--cc-ok);box-shadow:0 0 0 2px #00000059,0 0 8px #3dffa88c}.fleet .online-dot.off{background:#6b7785;box-shadow:0 0 0 2px #00000059}.fleet .solo-plate{font-family:var(--cc-font-sans);letter-spacing:.04em;color:var(--cc-text);font-size:17px;font-weight:600;line-height:1.2}.fleet .solo-proj{color:var(--cc-text-muted);flex-wrap:wrap;align-items:center;gap:.35rem;font-size:11px;display:flex}.fleet .solo-proj .sep{opacity:.4}.fleet .solo-metrics{grid-template-columns:1.05fr .95fr 1fr;gap:.35rem;margin-top:.1rem;display:grid}.fleet .solo-metrics .m{background:var(--cc-bg-panel);border:1px solid color-mix(in srgb, var(--unit-accent) 22%, transparent);text-align:center;flex-direction:column;justify-content:center;gap:.2rem;min-width:0;padding:.45rem .3rem;display:flex}.fleet .solo-metrics .lab{color:var(--cc-text-muted);letter-spacing:.04em;white-space:nowrap;font-size:10px}.fleet .solo-metrics .lab .u{opacity:.85;letter-spacing:0;margin-left:.15rem}.fleet .solo-metrics .val{font-family:var(--cc-font-num);font-variant-numeric:tabular-nums;color:var(--unit-accent);white-space:nowrap;font-size:clamp(16px,1.3vw,21px);font-weight:500;line-height:1.15}.fleet .solo-metrics .val .u{color:var(--cc-text-muted);font-size:.55em;font-family:var(--cc-font-body,inherit);margin-left:.1rem}.fleet .solo-metrics .val.soc{justify-content:center;align-items:center;display:inline-flex}.fleet .solo-metrics .val.mode{font-family:var(--cc-font-sans);letter-spacing:.02em;font-size:clamp(12px,1vw,14px);font-weight:500}.fleet .solo-metrics .val.mode.manual{color:var(--cc-warn)}.fleet .solo-metrics .val.mode.teleop{color:#5eb8ff}.fleet .solo-metrics .val.mode.auto{color:var(--unit-accent)}.fleet .solo-alert{background:#280c1259;border:1px dashed #ff5c7a59;min-height:2.2rem;padding:.35rem .4rem;font-size:11px;line-height:1.45}.fleet .solo-alert .lbl{color:var(--cc-text-muted);letter-spacing:.04em;margin-bottom:.1rem;font-size:10px;display:block}.fleet .solo-alert .msg{color:var(--cc-danger)}.fleet .solo-alert.warn-block{background:#28200c59;border-color:#ffc85759}.fleet .solo-alert.warn-block .msg{color:var(--cc-warn)}.fleet .mode-chip{letter-spacing:.04em;font-size:10px;font-family:var(--cc-font-mono,monospace);border:1px solid #0000;flex-shrink:0;padding:.12rem .45rem}.fleet .mode-chip.mode-convoy{color:var(--cc-accent);background:#1ee3ff1a;border-color:#1ee3ff66}.fleet .mode-chip.mode-solo{color:var(--unit-accent,var(--cc-ok));border-color:color-mix(in srgb, var(--unit-accent,var(--cc-ok)) 50%, transparent);background:color-mix(in srgb, var(--unit-accent,var(--cc-ok)) 12%, transparent)}.fleet .mode-chip.mode-solo.mode-offline{color:var(--cc-text-muted);border-color:var(--cc-border-soft);background:color-mix(in srgb, var(--cc-offline,#6b7c8f) 14%, transparent)}.fleet .prow-hd{border-bottom:1px solid var(--cc-border-soft);background:#0000002e;align-items:center;gap:.65rem;min-height:2.4rem;padding:.45rem .7rem .45rem .85rem;display:flex}.fleet .prow-hd .pid{font-family:var(--cc-font-display);letter-spacing:.06em;color:var(--cc-accent);font-size:13px}.fleet .prow-hd .st{border:1px solid var(--cc-border-soft);letter-spacing:.06em;font-size:10px;font-family:var(--cc-font-mono,monospace);padding:.1rem .4rem}.fleet .prow-hd .formation-badge{letter-spacing:.06em;color:var(--cc-accent);background:#1ee3ff14;border:1px solid #1ee3ff59;padding:.12rem .4rem;font-size:10px}.fleet .unit.unit-empty{opacity:1;border-style:dashed;border-color:color-mix(in srgb, var(--cc-accent) 40%, transparent);background:color-mix(in srgb, var(--cc-accent) 6%, transparent);justify-content:center;min-height:7.2rem}.fleet .unit.unit-empty .u-plate{color:var(--cc-text-muted);font-size:13px;font-weight:500}.fleet .unit.unit-empty .u-wait{letter-spacing:.04em;color:var(--cc-accent);font-size:11px}.fleet .prow-hd .meta{color:var(--cc-text-muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;overflow:hidden}.fleet .prow-hd .platoon-config{border:1px solid color-mix(in srgb, var(--cc-accent) 32%, transparent);background:color-mix(in srgb, var(--cc-accent) 8%, transparent);min-width:0;color:var(--cc-text-muted);font-family:var(--cc-font-mono,monospace);white-space:nowrap;padding:.14rem .42rem;font-size:10px;line-height:1.25}.fleet .prow-hd .platoon-config:first-letter{color:var(--cc-accent)}.fleet .prow-hd .grow{flex:1}.fleet .prow-hd .acts{flex-shrink:0;gap:.3rem;display:flex}.fleet .prow-hd .acts .cc-btn{height:26px;padding:0 .55rem;font-size:11px;line-height:24px;text-decoration:none}.fleet .prow-hd .acts .cc-btn:disabled,.fleet .prow-hd .acts .cc-btn.is-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.fleet .convoy{flex-wrap:wrap;align-items:stretch;gap:0;min-height:5.2rem;padding:.75rem .85rem .55rem;display:flex}.fleet .convoy-slot{flex:1 1 0;align-items:stretch;min-width:14rem;display:flex}.fleet .convoy-slot .unit{flex:1 1 0}.fleet .unit{min-width:0;color:inherit;border:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);flex-direction:column;gap:.35rem;padding:.45rem .55rem;text-decoration:none;display:flex;position:relative}.fleet .unit.lead{border-color:#1ee3ff73}.fleet .unit .u-role{letter-spacing:.08em;background:var(--cc-bg-deep);border:1px solid var(--cc-border-soft);color:var(--cc-accent);font-size:9px;font-family:var(--cc-font-mono,monospace);padding:.05rem .35rem;position:absolute;top:-.45rem;left:.45rem}.fleet .unit .u-plate{font-family:var(--cc-font-sans);letter-spacing:.04em;margin-top:.15rem;font-size:15px;font-weight:600}.fleet .unit .solo-metrics{margin-top:.2rem}.fleet .unit .solo-metrics .m{padding:.35rem .22rem}.fleet .unit .solo-metrics .val{font-size:clamp(14px,1.1vw,18px)}.fleet .unit .solo-metrics .val.mode{font-size:clamp(11px,.9vw,13px)}.fleet .gap-bridge{flex-direction:column;justify-content:center;align-items:center;width:7.5rem;padding:0 .35rem;display:flex}.fleet .gap-bridge .gap-val{background:var(--cc-bg-elevated);font-family:var(--cc-font-num);color:var(--cc-accent);border:1px solid #1ee3ff59;padding:.2rem .45rem;font-size:12px;font-weight:500}.fleet .gap-bridge .gap-sub{color:var(--cc-text-muted);margin-top:.25rem;font-size:10px}.fleet .board-empty{text-align:center;color:var(--cc-text-muted);border:1px dashed var(--cc-border-soft);padding:2rem 1rem;font-size:12px}.fleet .platoon-create-entry{flex:none}.platoon-drawer-layer{z-index:60;justify-content:flex-end;display:flex;position:fixed;inset:0}.platoon-drawer-backdrop{background:color-mix(in srgb, var(--cc-bg-deep) 48%, transparent);cursor:default;border:0;position:absolute;inset:0}.platoon-drawer{z-index:1;border-left:1px solid var(--cc-border);background:var(--cc-bg-panel-solid);width:min(446px,100vw);height:100%;box-shadow:-10px 0 28px color-mix(in srgb, var(--cc-bg-deep) 45%, transparent);flex-direction:column;animation:.2s ease-out both platoon-drawer-in;display:flex;position:relative}.platoon-drawer-head{border-bottom:1px solid var(--cc-border-soft);background:color-mix(in srgb, var(--cc-bg-elevated) 88%, var(--cc-accent));justify-content:space-between;align-items:center;gap:.8rem;min-height:52px;padding:.65rem .85rem;display:flex}.platoon-drawer-head>div{gap:.18rem;min-width:0;display:grid}.platoon-drawer-head strong{color:var(--cc-text);font-family:var(--cc-font-display);letter-spacing:.07em;font-size:14px;font-weight:500}.platoon-drawer-close{width:28px;min-width:28px;height:28px;padding:0;font-size:18px;line-height:1}.platoon-channel{color:var(--cc-text-muted);font-family:var(--cc-font-mono,monospace);font-size:10px}.platoon-drawer-body{flex-direction:column;flex:auto;gap:.7rem;min-height:0;padding:.85rem;display:flex;overflow:auto}.platoon-drawer-foot{border-top:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);justify-content:flex-end;gap:.5rem;padding:.75rem .9rem;display:flex}.platoon-progress-steps{grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin:.1rem 0 .45rem;display:grid}.platoon-progress-steps span{color:var(--cc-text-muted);text-align:center;padding-top:1.15rem;font-size:10px;line-height:1.2;position:relative}.platoon-progress-steps span:before{background:var(--cc-border-soft);content:"";height:1px;position:absolute;top:.2rem;left:0;right:0}.platoon-progress-steps span:after{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel-solid);content:"";border-radius:50%;width:.48rem;height:.48rem;position:absolute;top:0;left:calc(50% - .28rem)}.platoon-progress-steps span:first-child:before{left:50%}.platoon-progress-steps span:last-child:before{right:50%}.platoon-progress-steps span.done,.platoon-progress-steps span.current{color:var(--cc-accent)}.platoon-progress-steps span.done:before,.platoon-progress-steps span.done:after{border-color:var(--cc-accent);background:var(--cc-accent)}.platoon-progress-steps span.current{color:var(--cc-text);font-weight:600}.platoon-progress-steps span.current:after{border-color:var(--cc-accent);box-shadow:0 0 0 3px var(--cc-accent-dim)}.platoon-drawer-intro,.platoon-muted,.platoon-inline-error,.platoon-empty{margin:0;font-size:12px;line-height:1.6}.platoon-drawer-intro{color:var(--cc-text)}.platoon-muted,.platoon-empty{color:var(--cc-text-muted)}.platoon-inline-error{color:var(--cc-danger)}.platoon-vehicle-list{gap:.45rem;display:grid}.platoon-vehicle-option{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel);width:100%;color:var(--cc-text);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--cc-ease), background var(--cc-ease);justify-content:space-between;align-items:center;gap:.7rem;padding:.65rem .7rem;display:flex}.platoon-vehicle-option:hover,.platoon-vehicle-option.selected{border-color:var(--cc-accent);background:var(--cc-accent-dim)}.platoon-vehicle-option.unavailable,.platoon-vehicle-option.unavailable:hover{border-color:var(--cc-border-soft);background:var(--cc-bg-panel);color:var(--cc-text-muted);cursor:not-allowed;opacity:.68}.platoon-vehicle-option.unavailable .platoon-vehicle-meta{color:var(--cc-danger)}.platoon-vehicle-main{gap:.16rem;min-width:0;display:grid}.platoon-vehicle-main strong{font-family:var(--cc-font-sans);letter-spacing:.05em;font-size:15px}.platoon-vehicle-main small,.platoon-vehicle-meta{color:var(--cc-text-muted);font-size:11px}.platoon-vehicle-meta{font-family:var(--cc-font-mono,monospace);white-space:nowrap;flex:none}.platoon-selection-summary,.platoon-overview-block,.platoon-config-overview,.platoon-member-overview{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel)}.platoon-selection-summary{justify-content:space-between;align-items:center;gap:.8rem;padding:.6rem .7rem;display:flex}.platoon-selection-summary span,.platoon-overview-block span,.platoon-config-overview span{color:var(--cc-text-muted);font-size:11px}.platoon-selection-summary strong,.platoon-overview-block strong,.platoon-config-overview strong{color:var(--cc-text);font-size:12px;font-weight:550}.platoon-state-ok,.platoon-state-readonly,.platoon-notice,.platoon-warning{border:1px solid color-mix(in srgb, var(--cc-ok) 42%, transparent);background:color-mix(in srgb, var(--cc-ok) 10%, transparent);color:var(--cc-ok);padding:.5rem .6rem;font-size:12px;line-height:1.45}.platoon-state-readonly,.platoon-notice{border-color:color-mix(in srgb, var(--cc-accent) 35%, transparent);background:color-mix(in srgb, var(--cc-accent) 8%, transparent);color:var(--cc-text-muted)}.platoon-warning{border-color:color-mix(in srgb, var(--cc-danger) 45%, transparent);background:color-mix(in srgb, var(--cc-danger) 10%, transparent);color:var(--cc-danger)}.platoon-overview-block{grid-template-columns:1fr auto;gap:.5rem .8rem;padding:.7rem;display:grid}.platoon-member-overview{display:grid;overflow:hidden}.platoon-member-overview h3{border-bottom:1px solid var(--cc-border-soft);color:var(--cc-accent);margin:0;padding:.55rem .7rem;font-size:12px;font-weight:500}.platoon-member-overview>div{border-bottom:1px solid var(--cc-border-soft);grid-template-columns:4.5rem 1fr auto;align-items:center;gap:.45rem;padding:.55rem .7rem;display:grid}.platoon-member-overview>div:last-child{border-bottom:0}.platoon-member-overview span,.platoon-member-overview small{color:var(--cc-text-muted);font-size:11px}.platoon-member-overview strong{color:var(--cc-text);font-size:12px;font-weight:550}.platoon-member-overview small{font-family:var(--cc-font-mono,monospace);text-align:right}.platoon-config-overview{grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.platoon-config-overview h3{background:color-mix(in srgb, var(--cc-accent) 8%, var(--cc-bg-elevated));color:var(--cc-accent);grid-column:1/-1;margin:0;padding:.55rem .7rem;font-size:12px;font-weight:500}.platoon-config-overview>div{background:var(--cc-bg-panel);gap:.18rem;min-width:0;padding:.55rem .7rem;display:grid}.platoon-field{color:var(--cc-text);grid-template-columns:1fr auto;align-items:center;gap:.35rem .6rem;font-size:12px;display:grid}.platoon-field span{color:var(--cc-text-muted);font-size:11px}.platoon-field input{grid-column:1/-1;width:100%}.platoon-progress{justify-items:start;gap:.55rem;padding:1rem .1rem;display:grid}.platoon-progress strong{color:var(--cc-text);font-size:13px}.platoon-progress p{color:var(--cc-text-muted);margin:0;font-size:12px;line-height:1.55}.platoon-spinner{border:2px solid color-mix(in srgb, var(--cc-accent) 25%, transparent);border-top-color:var(--cc-accent);border-radius:50%;width:19px;height:19px;animation:.8s linear infinite platoon-spin}@keyframes platoon-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes platoon-spin{to{transform:rotate(360deg)}}.fleet .fleet-error{color:var(--cc-danger);margin:0;padding:.35rem .85rem;font-size:12px}@keyframes fleet-prow-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.fleet .prow{animation:none}}@media (width<=1100px){.fleet .convoy{flex-direction:column;gap:.55rem}.fleet .convoy-slot{flex-direction:column;min-width:0}.fleet .gap-bridge{flex-direction:row;gap:.5rem;width:100%}.fleet .solo-grid{grid-template-columns:1fr}}@media (width>=1400px){.fleet .solo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=960px){.fleet{height:auto;min-height:100%;overflow:visible}.fleet-body{grid-template-columns:1fr}}.platoon-app{--pad:.65rem;--gap:.5rem;background:radial-gradient(900px 420px at 50% 0%, color-mix(in srgb, var(--cc-accent) 8%, transparent), transparent 55%), var(--cc-bg-deep);height:100%;min-height:0;color:var(--cc-text);flex-direction:column;font-size:13px;display:flex;position:relative;overflow:hidden}.platoon-app .banner-overlay{z-index:30;pointer-events:none;position:absolute;top:0;left:0;right:0}.platoon-app *{box-sizing:border-box}.platoon-app .pb{gap:var(--gap);min-height:0;padding:var(--pad);flex:auto;grid-template-columns:280px minmax(0,1fr) 300px;display:grid}.platoon-app .col{gap:var(--gap);flex-direction:column;min-width:0;min-height:0;display:flex}.platoon-app .col .cc-panel{flex-direction:column;min-height:0;display:flex;overflow:hidden}.platoon-app .col .panel-body{flex:1;min-height:0;overflow:auto}.platoon-app .grow{flex:auto}.platoon-app .panel-title{letter-spacing:.04em;border-bottom:1px solid var(--cc-border-soft);flex:none;justify-content:space-between;align-items:center;gap:.5rem;min-height:2rem;padding:.45rem .65rem;font-size:12px;display:flex}.platoon-app .list-head{white-space:normal;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:.4rem;height:auto;padding:.5rem .65rem .35rem}.platoon-app .list-scope{align-items:center;gap:.4rem;min-width:0;margin:0;display:flex}.platoon-app .list-scope-lab{color:var(--cc-text-muted);letter-spacing:.04em;flex:none;font-size:11px}.platoon-app .list-scope-select{flex:auto;width:100%;min-width:0;max-width:none}.platoon-app .list-head-row{justify-content:space-between;align-items:center;gap:.35rem;min-width:0;display:flex}.platoon-app .list-head-row .list-tabs{min-width:0;margin-right:0}.platoon-app .sum-line{color:var(--cc-text-muted);white-space:nowrap;flex-wrap:wrap;justify-content:flex-end;gap:.45rem;margin:0;font-size:11px;display:flex}.platoon-app .sum-line strong{color:var(--cc-accent);font-weight:500}.platoon-app .plist{flex-direction:column;gap:.4rem;display:flex}.platoon-app .pcard,.platoon-detail-page .pcard{text-align:left;border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel);width:100%;color:inherit;font:inherit;cursor:pointer;padding:.55rem .6rem;position:relative}.platoon-app .pcard:before{content:"";background:var(--cc-info,var(--cc-accent));opacity:.5;width:2px;position:absolute;top:0;bottom:0;left:0}.platoon-app .pcard:hover,.platoon-detail-page .pcard:hover{border-color:var(--cc-line)}.platoon-app .pcard.active,.platoon-detail-page .pcard.active{border-color:var(--cc-accent);background:var(--cc-accent-dim)}.platoon-app .pcard .row1,.platoon-detail-page .pcard .row1{justify-content:space-between;align-items:center;gap:.35rem;margin-bottom:.25rem;display:flex}.platoon-app .pcard .id,.platoon-detail-page .pcard .id{font-family:var(--cc-font-mono,var(--cc-font-sans));color:var(--cc-accent);font-size:12px}.platoon-app .pcard .badge-pair{flex-wrap:wrap;justify-content:flex-end;gap:.25rem;display:inline-flex}.platoon-app .pcard .st,.platoon-detail-page .pcard .st{border:1px solid var(--cc-border-soft);letter-spacing:.04em;white-space:nowrap;padding:.1rem .35rem;font-size:10px}.platoon-app .pcard .st.room.active-room{color:var(--cc-info,var(--cc-accent));border-color:color-mix(in srgb, var(--cc-info,var(--cc-accent)) 45%, transparent)}.platoon-app .pcard .st.moving{color:var(--cc-ok);border-color:#3dffa866}.platoon-app .pcard .st.forming,.platoon-detail-page .pcard .st.forming{color:var(--cc-info,var(--cc-accent));border-color:color-mix(in srgb, var(--cc-info,var(--cc-accent)) 40%, transparent)}.platoon-app .pcard .st.ready,.platoon-detail-page .pcard .st.ready{color:var(--cc-accent)}.platoon-app .pcard .st.abnormal{color:var(--cc-danger);border-color:#ff5c7a73}.platoon-app .pcard .st.closed{color:var(--cc-text-muted)}.platoon-app .pcard .meta,.platoon-detail-page .pcard .meta{color:var(--cc-text-muted);font-size:11px;line-height:1.45}.platoon-app .pcard .meta b{color:var(--cc-text);font-weight:500}.platoon-app .map-panel{flex:1.4 1 0;min-height:0;padding:0;overflow:hidden}.platoon-app .map-panel .panel-title{flex:none;padding:.45rem .65rem}.platoon-app .map-panel .map-stage{flex:1;min-height:0;position:relative}.platoon-app .map-panel .monitor-map{height:100%;min-height:220px}.platoon-app .map-tools{z-index:5;flex-direction:column;gap:.3rem;display:flex;position:absolute;top:.55rem;right:.55rem}.platoon-app .map-tools button{border:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);height:28px;color:var(--cc-text-muted);font:inherit;cursor:pointer;padding:0 .55rem;font-size:11px}.platoon-app .map-tools button.on{color:var(--cc-accent);border-color:var(--cc-accent);background:var(--cc-accent-dim)}.platoon-app .viz-panel{flex:none}.platoon-app .platoon-schematic{flex-wrap:wrap;justify-content:center;align-items:center;gap:0;padding:.5rem .65rem;display:flex}.platoon-app .viz-ops{border:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);flex-direction:column;justify-content:center;min-width:4.6rem;margin-right:.75rem;padding:.2rem .5rem;display:flex}.platoon-app .viz-ops .muted{color:var(--cc-text-muted);font-size:10px}.platoon-app .viz-ops .v{color:var(--cc-text);margin-top:.1rem;font-size:13px}.platoon-app .viz-ops.moving .v{color:var(--cc-ok)}.platoon-app .viz-ops.forming .v{color:var(--cc-info,var(--cc-accent))}.platoon-app .viz-ops.ready .v{color:var(--cc-accent)}.platoon-app .viz-ops.abnormal .v{color:var(--cc-danger)}.platoon-app .viz-ops.closed .v{color:var(--cc-text-muted)}.platoon-app .platoon-truck{border:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);text-align:center;justify-content:center;align-items:center;width:min(140px,28%);min-width:100px;height:52px;padding:.25rem;font-size:11px;line-height:1.35;display:flex}.platoon-app .platoon-truck.lead{border-color:var(--cc-info,var(--cc-accent));color:var(--cc-info,var(--cc-accent))}.platoon-app .platoon-gap{text-align:center;width:min(100px,22%);min-width:72px;color:var(--cc-accent);font-size:12px}.platoon-app .platoon-gap .muted{color:var(--cc-text-muted);font-size:10px}.platoon-app .viz-note{color:var(--cc-text-muted);margin:.45rem 0 0;font-size:10px}.platoon-app .viz-empty,.platoon-app .detail-empty{text-align:center;color:var(--cc-text-muted);padding:1rem;font-size:12px}.platoon-app .kpi-grid{grid-template-columns:1fr 1fr;gap:.35rem;display:grid}.platoon-app .kpi{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel);padding:.4rem .45rem}.platoon-app .kpi .lab{color:var(--cc-text-muted);font-size:10px}.platoon-app .kpi .val{color:var(--cc-accent);word-break:break-all;margin-top:.15rem;font-size:16px;line-height:1.15}.platoon-app .kpi .val.ok{color:var(--cc-ok)}.platoon-app .kpi .val.warn{color:var(--cc-warn)}.platoon-app .kpi .val.sm{font-size:12px}.platoon-app .member{border-bottom:1px dashed var(--cc-border-soft);padding:.45rem 0;font-size:12px;line-height:1.5}.platoon-app .member:last-child{border-bottom:0}.platoon-app .member .role{border:1px solid var(--cc-border-soft);margin-right:.3rem;padding:.05rem .3rem;font-size:10px;display:inline-block}.platoon-app .member .role.lead{color:var(--cc-info,var(--cc-accent))}.platoon-app .member .role.follow{color:var(--cc-accent)}.platoon-app .member .sub{color:var(--cc-text-muted);font-size:11px}.platoon-app .evt{border-bottom:1px dashed var(--cc-border-soft);grid-template-columns:3.2rem 1fr;gap:.35rem;padding:.35rem 0;font-size:11px;display:grid}.platoon-app .evt time{color:var(--cc-text-muted);font-family:var(--cc-font-mono,var(--cc-font-sans));font-size:10px}.platoon-app .fleet-error,.platoon-app .banner-err{color:var(--cc-danger);background:#ff5c7a14;border-bottom:1px solid #ff5c7a40;margin:0;padding:.4rem .75rem;font-size:12px}.platoon-app .banner-overlay .banner-err,.platoon-app .banner-overlay .banner-warn{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 4px 14px #00000047}.platoon-app .detail-actions{gap:.4rem;margin-top:.65rem;display:flex}.platoon-detail-page{background:var(--cc-bg-deep);flex-direction:column;gap:.4rem;height:100%;min-height:0;padding:.5rem .65rem .45rem;display:flex;overflow:hidden}.platoon-detail-page .pd-head{flex-wrap:wrap;flex:none;align-items:center;gap:.55rem;display:flex}.platoon-detail-page .pd-title{letter-spacing:.02em;margin:0;font-size:16px;font-weight:600}.platoon-detail-page .pd-head .pill.muted{color:var(--cc-text-muted);border-color:var(--cc-border-soft)}.platoon-detail-page .pd-body{flex-direction:column;flex:1;gap:.4rem;min-height:0;display:flex}.platoon-detail-page .pd-stage{flex:1;grid-template-columns:minmax(0,1fr) 280px;gap:.4rem;min-height:0;display:grid}.platoon-detail-page .pd-map{flex-direction:column;flex:1;min-height:0;padding:0;display:flex;position:relative;overflow:hidden}.platoon-detail-page .pd-map-body{flex-direction:column;flex:1;min-height:0;padding:0;display:flex;position:relative}.platoon-detail-page .pd-map .map-stage,.platoon-detail-page .pd-map .monitor-map{height:100%;min-height:280px}.platoon-detail-page .pd-legend{z-index:5;flex-wrap:wrap;gap:.35rem;display:flex;position:absolute;top:.55rem;left:.55rem}.platoon-detail-page .pd-legend-item{appearance:none;font:inherit;border:1px solid var(--cc-border-soft);color:var(--cc-text);cursor:pointer;background:#04101ae0;padding:.15rem .45rem;font-size:11px}.platoon-detail-page .pd-legend-item.on{background:color-mix(in srgb, var(--cc-accent) 16%, #04101a)}.platoon-detail-page .pd-legend-item.lead{color:var(--cc-accent);border-color:color-mix(in srgb, var(--cc-accent) 45%, transparent)}.platoon-detail-page .pd-legend-item.follow{color:var(--cc-ok);border-color:color-mix(in srgb, var(--cc-ok) 40%, transparent)}.platoon-detail-page .pd-map-note{z-index:4;pointer-events:none;color:var(--cc-text-muted);background:color-mix(in srgb, var(--cc-bg-deep) 35%, transparent);place-items:center;font-size:13px;display:grid;position:absolute;inset:0}.platoon-detail-page .pd-tele{flex-direction:column;min-height:0;padding:0;display:flex;overflow:hidden}.platoon-detail-page .pd-tele .panel-title{letter-spacing:.04em;border-bottom:1px solid var(--cc-border-soft);color:var(--cc-text-muted);flex:none;padding:.4rem .55rem;font-size:12px}.platoon-detail-page .pd-tele-body{flex-direction:column;flex:1;gap:.45rem;min-height:0;padding:.45rem;display:flex;overflow:auto}.platoon-detail-page .pd-tele-grid{grid-template-columns:1fr 1fr;gap:.35rem;display:grid}.platoon-detail-page .pd-tele-cell{border:1px solid var(--cc-border-soft);background:color-mix(in srgb, var(--cc-bg-deep) 45%, transparent);min-width:0;padding:.35rem .4rem}.platoon-detail-page .pd-tele-cell .lab{color:var(--cc-text-muted);font-size:10px}.platoon-detail-page .pd-tele-cell .val{font-family:var(--cc-font-mono);color:var(--cc-text);text-overflow:ellipsis;white-space:nowrap;margin-top:.1rem;font-size:13px;overflow:hidden}.platoon-detail-page .pd-veh{appearance:none;text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;border:1px solid var(--cc-border-soft);background:color-mix(in srgb, var(--cc-bg-panel) 80%, transparent);padding:.4rem;display:block}.platoon-detail-page .pd-veh h4{align-items:baseline;gap:.35rem;margin:0 0 .35rem;font-size:12px;font-weight:600;display:flex}.platoon-detail-page .pd-veh h4 span{color:var(--cc-text-muted);font-weight:500}.platoon-detail-page .pd-veh.lead h4{color:var(--cc-accent)}.platoon-detail-page .pd-veh.follow h4{color:var(--cc-ok)}.platoon-detail-page .pd-veh.on{border-color:color-mix(in srgb, var(--cc-accent) 50%, var(--cc-border-soft))}.platoon-detail-page .pd-tele-empty{color:var(--cc-text-muted);margin:.4rem 0 0;font-size:12px}.platoon-detail-page .pd-player{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel);flex:none;align-items:center;gap:.45rem;padding:.4rem .5rem;display:flex}.platoon-detail-page .pd-seek{min-width:8rem;height:4px;accent-color:var(--cc-accent);cursor:pointer;flex:1}.platoon-detail-page .pd-clock{font-family:var(--cc-font-mono,ui-monospace, monospace);color:var(--cc-accent);white-space:nowrap;text-align:right;min-width:8.5rem;font-size:12px}.platoon-detail-page .pd-rate{width:4.6rem;height:28px;padding:0 .3rem;font-size:12px}.platoon-detail-page .point-meta{color:var(--cc-text-muted);margin-top:.35rem;font-size:12px}.platoon-app .list-tabs{gap:.15rem;margin-right:.5rem;display:inline-flex}.platoon-app .list-tabs button{height:26px;color:var(--cc-text-muted);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-bottom-width:2px;padding:0 .55rem;font-size:12px}.platoon-app .list-tabs button:hover{color:var(--cc-text)}.platoon-app .list-tabs button.active{color:var(--cc-accent);border-bottom-color:var(--cc-accent)}.platoon-app .empty-switch{margin-top:.55rem}.platoon-app .banner-warn{color:var(--cc-warn,#e8b84a);background:color-mix(in srgb, var(--cc-warn,#e8b84a) 18%, var(--cc-bg-deep,#0b1220));border-bottom:1px solid var(--cc-border-soft);margin:0;padding:.4rem .75rem;font-size:12px}.platoon-ledger{background:radial-gradient(900px 420px at 50% 0%, color-mix(in srgb, var(--cc-accent) 8%, transparent), transparent 55%), var(--cc-bg-deep);height:100%;min-height:0;color:var(--cc-text);flex-direction:column;gap:.5rem;padding:.65rem;display:flex;overflow:hidden}.platoon-ledger .ledger-filters{background:var(--cc-bg-panel);border:1px solid var(--cc-border-soft);flex-wrap:wrap;align-items:flex-end;gap:.5rem;padding:.55rem .65rem;display:flex}.platoon-ledger .ledger-filters .cc-label{color:var(--cc-text-muted);flex-direction:column;gap:.2rem;font-size:11px;display:flex}.platoon-ledger .ledger-filters .cc-select,.platoon-ledger .ledger-filters .cc-input{min-width:8.5rem;height:32px}.platoon-ledger .ledger-count{color:var(--cc-text-muted);margin-left:auto;font-size:12px}.platoon-ledger .ledger-body{flex:1;grid-template-columns:minmax(0,1.4fr) minmax(240px,.8fr);gap:.5rem;min-height:0;display:grid}.platoon-ledger .ledger-list,.platoon-ledger .ledger-detail{flex-direction:column;min-height:0;display:flex;overflow:hidden}.platoon-ledger .ledger-list .panel-body,.platoon-ledger .ledger-detail .panel-body{flex:1;min-height:0;overflow:auto}.platoon-ledger .ledger-table{border-collapse:collapse;width:100%;font-size:12px}.platoon-ledger .ledger-table th,.platoon-ledger .ledger-table td{border-bottom:1px solid var(--cc-border-soft);text-align:left;white-space:nowrap;padding:.4rem .45rem}.platoon-ledger .ledger-table th{color:var(--cc-text-muted);background:var(--cc-bg-panel);font-weight:500;position:sticky;top:0}.platoon-ledger .ledger-table tbody tr{cursor:pointer}.platoon-ledger .ledger-table tbody tr:hover{background:color-mix(in srgb, var(--cc-accent) 6%, transparent)}.platoon-ledger .ledger-table tbody tr.active{background:var(--cc-accent-dim)}.platoon-ledger .ledger-table .empty{text-align:center;color:var(--cc-text-muted);padding:1.5rem}.platoon-ledger .mono{font-family:var(--cc-font-mono,monospace)}.platoon-ledger .accent{color:var(--cc-accent);font-size:13px}.platoon-ledger .muted.sm{color:var(--cc-text-muted);margin:.25rem 0 .75rem;font-size:11px}.platoon-ledger .ledger-dl{grid-template-columns:1fr 1fr;gap:.45rem .75rem;margin:0 0 .85rem;display:grid}.platoon-ledger .ledger-dl dt{color:var(--cc-text-muted);font-size:10px}.platoon-ledger .ledger-dl dd{margin:.1rem 0 0;font-size:13px}@media (width<=1100px){.platoon-app{height:auto;min-height:100%;overflow:visible}.platoon-app .pb,.platoon-detail-page .pd-stage{grid-template-columns:1fr}.platoon-detail-page .pd-tele{max-height:38vh}.platoon-detail-page .pd-player{flex-wrap:wrap}.platoon-ledger .ledger-body{grid-template-columns:1fr}}.mr{--pad:.65rem;--gap:.5rem;background:radial-gradient(900px 420px at 50% 0%, #1ee3ff12, transparent 55%), var(--cc-bg-deep);flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.mr *{box-sizing:border-box}.mr .mh{border-bottom:1px solid var(--cc-border-soft);background:linear-gradient(180deg, #0a1e38f2, var(--cc-bg-elevated));flex:none;align-items:center;gap:1rem;height:52px;padding:0 .85rem;display:flex}.mr .mh .brand{font-family:var(--cc-font-display,var(--cc-display));letter-spacing:.08em;white-space:nowrap;font-size:14px}.mr .mh .brand span{color:var(--cc-accent)}.mr .mh-tabs{flex:1;gap:.15rem;min-width:0;display:flex}.mr .mh-tabs a{color:var(--cc-text-muted);border-bottom:2px solid #0000;padding:.4rem .7rem;font-size:12px;text-decoration:none}.mr .mh-tabs a:hover{color:var(--cc-text);text-decoration:none}.mr .mh-tabs a.active{color:var(--cc-accent);border-bottom-color:var(--cc-accent)}.mr .mh-meta{align-items:center;gap:.45rem;margin-left:auto;display:flex}.mr .pill{border:1px solid var(--cc-border-soft);color:var(--cc-text-muted);white-space:nowrap;padding:.15rem .45rem;font-size:11px}.mr .mb{gap:var(--gap);min-height:0;padding:var(--pad);flex-direction:column;flex:auto;display:flex}.mr .filters{background:var(--cc-bg-panel);border:1px solid var(--cc-border-soft);flex-wrap:wrap;flex:none;align-items:flex-end;gap:.5rem;padding:.55rem .65rem;display:flex}.mr .filters .cc-label{min-width:0}.mr .filters .cc-select,.mr .filters .cc-input{min-width:8.2rem;height:32px}.mr .filters .cc-btn{height:32px}.mr .filters .hint{color:var(--cc-text-muted);margin-left:auto;font-size:11px}.mr .filters .hint strong{color:var(--cc-accent);font-weight:500}.mr .workspace{gap:var(--gap);flex:auto;grid-template-columns:minmax(320px,.95fr) minmax(0,1.35fr);min-height:0;display:grid}.mr .list-col,.mr .play-col{gap:var(--gap);flex-direction:column;min-width:0;min-height:0;display:flex}.mr .cc-panel.flex{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.mr .panel-title{border-bottom:1px solid var(--cc-border-soft);flex:none;align-items:baseline;gap:.5rem;padding:.55rem .7rem;font-size:13px;display:flex}.mr .panel-title .sub{color:var(--cc-text-muted);font-size:11px;font-weight:400}.mr .cc-panel.flex .panel-body{flex:1;min-height:0;overflow:auto}.mr .cc-panel.flex .panel-body.nopad{padding:0}.mr .day-strip{border-bottom:1px solid var(--cc-border-soft);flex:none;padding:.45rem .55rem .55rem}.mr .day-strip .cap{color:var(--cc-text-muted);justify-content:space-between;align-items:center;margin-bottom:.35rem;font-size:11px;display:flex}.mr .day-strip .cap strong{color:var(--cc-accent);font-weight:500}.mr .ruler{border:1px solid var(--cc-border-soft);background:repeating-linear-gradient(90deg, transparent, transparent calc(100% / 24 - 1px), #1ee3ff14 calc(100% / 24 - 1px), #1ee3ff14 calc(100% / 24)), var(--cc-bg-panel);cursor:pointer;height:36px;position:relative}.mr .ruler .tick{color:#a0bed273;pointer-events:none;font-size:9px;position:absolute;top:2px;transform:translate(-50%)}.mr .ruler .seg{cursor:pointer;background:#1ee3ff59;border:1px solid #1ee3ff8c;height:14px;position:absolute;top:16px}.mr .ruler .seg:hover,.mr .ruler .seg.on{background:#1ee3ff8c;box-shadow:0 0 8px #1ee3ff59}.mr .ruler .playhead{background:var(--cc-warn);pointer-events:none;width:2px;display:none;position:absolute;top:0;bottom:0;transform:translate(-50%);box-shadow:0 0 6px #ffb84d99}.mr .ruler .playhead.on{display:block}.mr .seg-table{font-size:12px}.mr .seg-table th,.mr .seg-table td{white-space:nowrap;height:auto;padding:.4rem .5rem}.mr .seg-table tr{cursor:pointer}.mr .seg-table tr.is-active td{background:#1ee3ff14}.mr .ch{border:1px solid var(--cc-border-soft);letter-spacing:.03em;color:var(--cc-accent);padding:.08rem .3rem;font-size:10px}.mr .mono{font-family:var(--cc-font-mono,var(--cc-mono))}.mr .empty{text-align:center;color:var(--cc-text-muted);padding:1.5rem;font-size:12px}.mr .page-error{color:var(--cc-danger,#ff6b6b);background:#ff505014;border:1px solid #ff505040;margin:0;padding:.45rem .65rem;font-size:12px}.mr .player{border:1px solid var(--cc-border-soft);background:var(--cc-bg-panel-solid);flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.mr .player-stage{background:radial-gradient(circle at 40% 35%, var(--cc-fog-a), transparent 55%), var(--cc-bg-deep);flex:auto;place-items:center;min-height:220px;display:grid;position:relative}.mr .player-video{object-fit:contain;background:#000;width:100%;height:100%}.mr .player-stage .fake{color:var(--cc-text-dim);letter-spacing:.14em;text-align:center;font-size:13px;line-height:1.7}.mr .player-stage .fake .sub{letter-spacing:.06em;color:var(--cc-text-muted);font-size:11px;font-family:var(--cc-font-mono,var(--cc-mono));margin-top:.35rem;display:block}.mr .player-stage .badge{z-index:1;border:1px solid var(--cc-border-soft);background:#00000073;padding:.12rem .4rem;font-size:11px;position:absolute;top:.45rem;left:.55rem}.mr .player-stage .liveish{z-index:1;color:var(--cc-accent);font-size:10px;position:absolute;top:.45rem;right:.55rem}.mr .ch-tabs{border-top:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);flex:none;gap:0;display:flex}.mr .ch-tabs button{border:0;border-right:1px solid var(--cc-border-soft);height:34px;color:var(--cc-text-muted);font:inherit;cursor:pointer;background:0 0;flex:1;font-size:12px}.mr .ch-tabs button:last-child{border-right:0}.mr .ch-tabs button:hover:not(:disabled){color:var(--cc-text)}.mr .ch-tabs button.on{color:var(--cc-accent);box-shadow:inset 0 -2px 0 var(--cc-accent);background:#1ee3ff14}.mr .ch-tabs button:disabled{opacity:.35;cursor:not-allowed}.mr .transport{border-top:1px solid var(--cc-border-soft);background:var(--cc-bg-elevated);flex-direction:column;flex:none;gap:.35rem;padding:.5rem .65rem .6rem;display:flex}.mr .scrub{border:1px solid var(--cc-border-soft);cursor:pointer;background:#08182ce6;height:8px;position:relative}.mr .scrub .fill{background:linear-gradient(90deg, #1ee3ff80, var(--cc-accent));width:0%;height:100%}.mr .transport-row{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.mr .transport-row .time{font-family:var(--cc-font-mono,var(--cc-mono));color:var(--cc-accent);min-width:9rem;font-size:12px}.mr .transport-row .cc-btn{min-width:2.4rem;height:30px}.mr .speed-group{border:1px solid var(--cc-border-soft);display:inline-flex}.mr .speed-group button{border:0;border-right:1px solid var(--cc-border-soft);height:30px;color:var(--cc-text-muted);font:inherit;cursor:pointer;background:0 0;padding:0 .45rem;font-size:11px}.mr .speed-group button:last-child{border-right:0}.mr .speed-group button.on{color:var(--cc-accent);background:#1ee3ff1a}.mr .speed-group button:disabled{opacity:.4;cursor:not-allowed}.mr .transport-row .spacer{flex:1}.mr .denied{color:var(--cc-text-muted);flex:1;place-items:center;padding:2rem;font-size:14px;display:grid}@media (width<=1100px){.mr{height:auto;min-height:100%;overflow:visible}.mr .workspace{grid-template-columns:1fr}.mr .player-stage{min-height:280px}}.alert-history-page .alert-history-meta{color:var(--cc-text-muted);align-self:center;font-size:12px}.alert-history-page .alert-history-filters{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.alert-history-page .alert-history-filters .cc-select,.alert-history-page .alert-history-filters .cc-input{min-width:140px}.alert-history-page .alert-history-search{flex:180px;min-width:200px}.alert-history-page .alert-history-pager{color:var(--cc-text-muted);justify-content:flex-end;align-items:center;gap:.55rem;font-size:12px;display:flex}.alert-history-page .mono{font-family:var(--cc-font-mono,monospace)}.alert-history-page .sev-fatal{color:var(--cc-danger);font-weight:600}.alert-history-page .sev-error{color:var(--cc-warn);font-weight:600}.alert-history-page .sev-warning{color:var(--cc-info,var(--cc-accent));font-weight:600}:root,[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--cc-bg-deep:#030b1a;--cc-bg-mid:#04111f;--cc-bg-panel:#061222b8;--cc-bg-panel-solid:#071526;--cc-bg-elevated:#0a1c30e0;--cc-bg-input:#020a16e0;--cc-bg-table-head:#081c30bf;--cc-bg-body-end:#02060f;--cc-bg-overlay:#020812c2;--cc-bg-chrome-from:#0a1e38f2;--cc-bg-chrome-to:#040e1ce6;--cc-bg-topbar:#030c18f7;--cc-fog-a:#1ee3ff12;--cc-fog-b:#0aa8c80d;--cc-grid-line:#1ee3ff08;--cc-shadow:#00000073;--cc-line:1px;--cc-border:#1ee3ff47;--cc-border-soft:#78a0be24;--cc-border-strong:#1ee3ff73;--cc-text:#e6f4ff;--cc-text-muted:#7f9bb5;--cc-text-dim:#5a738c;--cc-accent:#1ee3ff;--cc-accent-strong:#0aa8c8;--cc-accent-dim:#1ee3ff1a;--cc-accent-glow:#1ee3ff59;--cc-accent-fill:#1ee3ff2e;--cc-accent-wash:#1ee3ff0a;--cc-danger:#ff6b7a;--cc-ok:#3ddea8;--cc-warn:#f0c14a;--cc-info:#4aa3ff;--cc-offline:#6b7c8f;--cc-font-sans:"Noto Sans SC", "Source Han Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, "Segoe UI", sans-serif;--cc-font-display:var(--cc-font-sans);--cc-font-mono:var(--cc-font-sans);--cc-font-num:var(--cc-font-sans);--cc-fs-xs:.72rem;--cc-fs-sm:.82rem;--cc-fs-md:.9rem;--cc-fs-lg:1.05rem;--cc-fs-xl:1.35rem;--cc-fs-hero:clamp(1.45rem, 3.2vw, 1.85rem);--cc-lh-tight:1.25;--cc-lh-body:1.5;--cc-radius:2px;--cc-control-h:36px;--cc-control-h-sm:30px;--cc-row-h:40px;--cc-space-1:.25rem;--cc-space-2:.5rem;--cc-space-3:.75rem;--cc-space-4:1rem;--cc-space-6:1.5rem;--cc-space-8:2rem;--cc-ease:.16s ease;--cc-glow-tab:0 0 8px var(--cc-accent-glow);--cc-focus-ring:0 0 0 1px #1ee3ff47;--cc-datav-a:#1ee3ff;--cc-datav-b:#0a6b8a;--cc-datav-bg:#040e1ce0}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--cc-bg-deep:#f0f0ec;--cc-bg-mid:#f7f7f4;--cc-bg-panel:#ffffffe6;--cc-bg-panel-solid:#fff;--cc-bg-elevated:#fffffff7;--cc-bg-input:#fff;--cc-bg-table-head:#f0f0ecf5;--cc-bg-body-end:#ebebe6;--cc-bg-overlay:#f7f7f4d6;--cc-bg-chrome-from:#f7f7f4fa;--cc-bg-chrome-to:#f0f0ecf5;--cc-bg-topbar:#f7f7f4f7;--cc-fog-a:#14120c09;--cc-fog-b:#0a8ca00a;--cc-grid-line:#14120c0b;--cc-shadow:#14120c14;--cc-border:#14120c29;--cc-border-soft:#14120c17;--cc-border-strong:#14120c3d;--cc-text:#14120b;--cc-text-muted:#5c5b56;--cc-text-dim:#8a8984;--cc-accent:#0a8fa8;--cc-accent-strong:#087a90;--cc-accent-dim:#0a8fa81a;--cc-accent-glow:#0a8fa838;--cc-accent-fill:#0a8fa824;--cc-accent-wash:#0a8fa80d;--cc-danger:#d63b4e;--cc-ok:#1a9a6e;--cc-warn:#b8860b;--cc-info:#2b7fd6;--cc-offline:#7a7974;--cc-glow-tab:0 0 0 transparent;--cc-focus-ring:0 0 0 1px #0a8fa866;--cc-datav-a:#0a8fa8;--cc-datav-b:#0a6b8a;--cc-datav-bg:#f7f7f4f5}.cc-label{gap:var(--cc-space-2);color:var(--cc-text-muted);font-size:var(--cc-fs-sm);letter-spacing:.03em;flex-direction:column;display:flex}.cc-input,.cc-select,.cc-control{height:var(--cc-control-h);border:var(--cc-line) solid var(--cc-border-soft);border-radius:var(--cc-radius);background:var(--cc-bg-input);color:var(--cc-text);transition:border-color var(--cc-ease), box-shadow var(--cc-ease);outline:none;padding:0 .75rem}.cc-select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--cc-text-muted) 50%), linear-gradient(135deg, var(--cc-text-muted) 50%, transparent 50%);background-position:calc(100% - 14px) 55%,calc(100% - 9px) 55%;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:1.6rem}.cc-input:hover,.cc-select:hover{border-color:var(--cc-border)}.cc-input:focus,.cc-select:focus{border-color:var(--cc-accent);box-shadow:var(--cc-focus-ring)}.cc-input:disabled,.cc-select:disabled{opacity:.55;cursor:not-allowed}.cc-btn{height:var(--cc-control-h);border:var(--cc-line) solid var(--cc-border);border-radius:var(--cc-radius);color:var(--cc-text-muted);font-family:var(--cc-font-display);font-size:var(--cc-fs-sm);letter-spacing:.1em;cursor:pointer;transition:color var(--cc-ease), border-color var(--cc-ease), background var(--cc-ease);background:0 0;justify-content:center;align-items:center;padding:0 1rem;display:inline-flex}.cc-btn:hover:not(:disabled){color:var(--cc-text);border-color:var(--cc-accent);background:var(--cc-accent-dim)}.cc-btn:disabled{opacity:.6;cursor:wait}.cc-btn-primary{border-color:var(--cc-accent);background:var(--cc-accent-dim);color:var(--cc-text)}.cc-btn-primary:hover:not(:disabled){background:var(--cc-accent-fill)}.cc-btn-danger{border-color:color-mix(in srgb, var(--cc-danger) 55%, transparent);background:color-mix(in srgb, var(--cc-danger) 22%, transparent);color:var(--cc-text)}.cc-btn-danger:hover:not(:disabled){background:color-mix(in srgb, var(--cc-danger) 34%, transparent)}.theme-toggle{min-width:var(--cc-control-h-sm,30px);letter-spacing:0;justify-content:center;align-items:center;padding-inline:.45rem;font-size:.95em;line-height:1;display:inline-flex}.theme-toggle.cc-btn:not(.cc-btn-sm){min-width:var(--cc-control-h,36px)}.cc-btn-ghost{background:0 0;border-color:#0000}.cc-btn-sm{height:var(--cc-control-h-sm);font-size:var(--cc-fs-xs);letter-spacing:.06em;padding:0 .65rem}.cc-panel{background:var(--cc-bg-panel);border:var(--cc-line) solid var(--cc-border-soft);border-radius:var(--cc-radius);position:relative}.cc-panel:before,.cc-panel:after{content:"";pointer-events:none;width:10px;height:10px;position:absolute}.cc-panel:before{border-top:var(--cc-line) solid var(--cc-accent);border-left:var(--cc-line) solid var(--cc-accent);box-shadow:-1px -1px 6px var(--cc-accent-glow);top:-1px;left:-1px}.cc-panel:after{border-right:var(--cc-line) solid var(--cc-accent);border-bottom:var(--cc-line) solid var(--cc-accent);box-shadow:1px 1px 6px var(--cc-accent-glow);bottom:-1px;right:-1px}.cc-table-wrap{border:var(--cc-line) solid var(--cc-border-soft);background:var(--cc-bg-panel);overflow:auto}.cc-table{border-collapse:collapse;width:100%;font-size:var(--cc-fs-md)}.cc-table th,.cc-table td{min-height:var(--cc-row-h);border-bottom:var(--cc-line) solid var(--cc-border-soft);text-align:left;vertical-align:middle;height:auto;padding:.55rem .75rem}.cc-table th{z-index:1;height:var(--cc-row-h);background:var(--cc-bg-table-head);color:var(--cc-accent);font-family:var(--cc-font-display);font-weight:500;font-size:var(--cc-fs-xs);letter-spacing:.08em;white-space:nowrap;padding-top:0;padding-bottom:0;position:sticky;top:0}.cc-table tbody tr:hover td{background:var(--cc-accent-wash)}.cc-status-ok{color:var(--cc-ok);font-family:var(--cc-font-mono);font-size:var(--cc-fs-sm)}.cc-status-off{color:var(--cc-offline);font-family:var(--cc-font-mono);font-size:var(--cc-fs-sm)}.cc-status-warn{color:var(--cc-warn);font-family:var(--cc-font-mono);font-size:var(--cc-fs-sm)}.cc-toolbar{align-items:flex-end;gap:var(--cc-space-3);padding:var(--cc-space-3) 0;border-bottom:var(--cc-line) solid var(--cc-border-soft);flex-wrap:wrap;display:flex}.cc-toolbar-meta{color:var(--cc-text-dim);font-family:var(--cc-font-mono);font-size:var(--cc-fs-xs);margin-left:auto;padding-bottom:.4rem}.cc-modal-backdrop{z-index:40;padding:var(--cc-space-4);background:var(--cc-bg-overlay);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);place-items:center;display:grid;position:fixed;inset:0}.cc-modal{flex-direction:column;width:min(480px,100%);max-height:min(90vh,640px);display:flex;overflow:hidden}.cc-modal-body{gap:var(--cc-space-3);padding:var(--cc-space-6);scrollbar-gutter:stable;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.cc-modal-header{justify-content:space-between;align-items:center;gap:var(--cc-space-3);display:flex}.cc-modal-header h2{font-family:var(--cc-font-display);font-size:var(--cc-fs-lg);letter-spacing:.08em;margin:0}.cc-modal-actions{justify-content:flex-end;gap:var(--cc-space-3);padding-top:var(--cc-space-2);margin-top:auto;display:flex}.cc-confirm-backdrop{z-index:60}.cc-confirm-dialog{width:min(420px,100%);max-height:none}.cc-confirm-message{color:var(--cc-text-muted);font-size:var(--cc-fs-md);line-height:var(--cc-lh-body);white-space:pre-line;margin:0}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{font-family:var(--cc-font-sans);font-size:var(--cc-fs-md);line-height:var(--cc-lh-body);background:radial-gradient(900px 480px at 12% -8%, var(--cc-fog-a), transparent 55%), radial-gradient(700px 420px at 90% 0%, var(--cc-fog-b), transparent 50%), linear-gradient(180deg, var(--cc-bg-mid) 0%, var(--cc-bg-deep) 48%, var(--cc-bg-body-end) 100%);color:var(--cc-text)}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.app-shell{flex-direction:column;height:100vh;min-height:100vh;display:flex;overflow:hidden}.app-topbar{z-index:20;background:linear-gradient(180deg, var(--cc-bg-topbar) 0%, color-mix(in srgb, var(--cc-bg-topbar) 90%, transparent) 85%, transparent 100%);border-bottom:var(--cc-line) solid var(--cc-border-soft);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);flex-shrink:0;padding:.7rem clamp(1rem,3vw,2rem) 0;position:sticky;top:0}.app-topbar-inner{grid-template-columns:minmax(160px,auto) 1fr auto;align-items:end;gap:clamp(.75rem,2vw,2rem);padding-bottom:.2rem;display:grid}.app-topbar-rule{height:var(--cc-line);background:linear-gradient(90deg, transparent 0%, var(--cc-border) 18%, var(--cc-accent) 50%, var(--cc-border) 82%, transparent 100%);box-shadow:0 0 10px var(--cc-accent-glow);opacity:.85;margin-top:.35rem}.brand-block{flex-direction:column;gap:.1rem;min-width:0;display:flex}.brand-kicker{font-family:var(--cc-font-display);font-size:var(--cc-fs-xs);letter-spacing:.22em;color:var(--cc-accent);margin:0}.brand{font-family:var(--cc-font-display);letter-spacing:.06em;font-size:clamp(.95rem,1.6vw,1.15rem);font-weight:600;line-height:var(--cc-lh-tight);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-tabs{flex-wrap:wrap;justify-content:center;align-items:center;gap:.1rem;min-width:0;display:flex}.app-tabs a{color:var(--cc-text-muted);letter-spacing:.06em;font-size:var(--cc-fs-md);transition:color var(--cc-ease);padding:.5rem 1rem .65rem;position:relative}.app-tabs a:after{content:"";height:2px;transition:background var(--cc-ease), box-shadow var(--cc-ease);background:0 0;position:absolute;bottom:.12rem;left:.9rem;right:.9rem}.app-tabs a:hover{color:var(--cc-text)}.app-tabs a.active{color:var(--cc-accent)}.app-tabs a.active:after{background:var(--cc-accent);box-shadow:var(--cc-glow-tab)}.nav-user{align-items:center;gap:var(--cc-space-3);justify-self:end;display:flex}.nav-user-name{font-size:var(--cc-fs-sm);color:var(--cc-text-muted);font-family:var(--cc-font-mono);text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}.app-main{width:100%;min-width:0;min-height:0;padding:var(--cc-space-6) clamp(1rem, 3vw, 2rem) var(--cc-space-8);flex-direction:column;flex:1;display:flex;overflow:hidden}.app-shell--monitor{background:var(--cc-bg-deep)}.app-main--flush{padding:0}.page-header h1{margin:0 0 var(--cc-space-2);font-family:var(--cc-font-display);font-size:var(--cc-fs-xl);letter-spacing:.04em;line-height:var(--cc-lh-tight)}.page-header p{color:var(--cc-text-muted);font-size:var(--cc-fs-sm);margin:0}.auth-shell{min-height:100vh;padding:var(--cc-space-6);place-items:center;display:grid;position:relative;overflow:hidden}.auth-theme-bar{top:var(--cc-space-4);right:var(--cc-space-4);z-index:2;position:absolute}.auth-grid{background-image:linear-gradient(var(--cc-grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--cc-grid-line) 1px, transparent 1px);pointer-events:none;background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(70% 60% at 50% 45%,#000 35%,#0000 80%);mask-image:radial-gradient(70% 60% at 50% 45%,#000 35%,#0000 80%)}.auth-scanline{background:linear-gradient(180deg, transparent 0%, var(--cc-accent-wash) 50%, transparent 100%);pointer-events:none;background-size:100% 220%;animation:10s linear infinite auth-scan;position:absolute;inset:0}@keyframes auth-scan{0%{background-position:0 -40%}to{background-position:0 140%}}.auth-panel{z-index:1;width:min(420px,100%);height:min(580px,92vh);animation:.48s ease-out both auth-enter;position:relative}.auth-panel-change{height:min(680px,94vh)}@keyframes auth-enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.auth-panel>div,.auth-panel .dv-border-box-8{width:100%;height:100%}.auth-panel-inner{box-sizing:border-box;flex-direction:column;height:100%;padding:clamp(1.35rem,3.5vw,1.85rem) clamp(1.5rem,4vw,2rem);display:flex;overflow:hidden}.auth-brand{align-items:center;gap:var(--cc-space-2);margin-bottom:var(--cc-space-4);flex-direction:column;flex-shrink:0;display:flex}.auth-brand .dv-decoration-5{margin-top:.15rem;height:18px!important}.auth-logo{object-fit:contain;object-position:center;width:min(240px,82%);height:auto;max-height:56px;display:block}.auth-brand-mark{font-family:var(--cc-font-display);font-size:var(--cc-fs-xs);letter-spacing:.28em;color:var(--cc-accent);margin:0}.auth-brand h1{font-family:var(--cc-font-display);letter-spacing:.12em;color:var(--cc-text);text-align:center;margin:0;font-size:clamp(1.15rem,2.8vw,1.45rem);font-weight:600}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.auth-subtitle,.auth-footer p{color:var(--cc-text-muted);font-size:var(--cc-fs-sm);margin:0}.auth-form{gap:var(--cc-space-3);flex-direction:column;flex:auto;justify-content:flex-start;min-height:0;display:flex}.auth-fields{gap:var(--cc-space-3);flex-direction:column;flex-shrink:0;display:flex}.auth-form label{font-size:var(--cc-fs-sm);color:var(--cc-text-muted);letter-spacing:.04em;flex-direction:column;gap:.35rem;display:flex}.auth-form input{box-sizing:border-box;width:100%;height:var(--cc-control-h);border:var(--cc-line) solid var(--cc-border-soft);background:var(--cc-bg-input);color:var(--cc-text);border-radius:var(--cc-radius);transition:border-color var(--cc-ease), box-shadow var(--cc-ease);outline:none;padding:0 .85rem}.auth-form input:focus{border-color:var(--cc-accent);box-shadow:var(--cc-focus-ring)}.auth-form input:disabled{opacity:.65}.auth-form-status{min-height:0;font-size:var(--cc-fs-sm);margin:0;line-height:1.35}.auth-form-status:empty,.auth-form-status:not(.is-error):not(.is-info){height:0;min-height:0;margin:0;padding:0;overflow:hidden}.auth-form-status.is-error,.auth-form-status.is-info{height:auto;min-height:1.25em;overflow:visible}.auth-form-status.is-error{color:var(--cc-danger)}.auth-form-status.is-info{color:var(--cc-accent)}.auth-actions{align-items:stretch;gap:var(--cc-space-2);margin-top:var(--cc-space-2);flex-direction:column;flex-shrink:0;padding-top:0;display:flex}.auth-form button[type=submit]{height:calc(var(--cc-control-h) + 4px);border:var(--cc-line) solid var(--cc-accent);border-radius:var(--cc-radius);background:linear-gradient(180deg, var(--cc-accent-fill), color-mix(in srgb, var(--cc-datav-b) 55%, transparent));color:var(--cc-text);font-family:var(--cc-font-display);font-size:var(--cc-fs-md);letter-spacing:.16em;cursor:pointer;transition:filter var(--cc-ease), transform var(--cc-ease);margin:0;padding:0 1rem}.auth-form button[type=submit]:hover:not(:disabled){filter:brightness(1.06)}.auth-form button[type=submit]:active:not(:disabled){transform:translateY(1px)}.auth-form button[type=submit]:disabled{opacity:.7;cursor:wait}.auth-switch{text-align:center;margin:0}.auth-text-btn{color:var(--cc-text-muted);font-size:var(--cc-fs-sm);letter-spacing:.04em;cursor:pointer;text-underline-offset:.2em;background:0 0;border:0;padding:.15rem 0;text-decoration:underline}.auth-text-btn:hover{color:var(--cc-accent)}.auth-code-row{gap:var(--cc-space-2);align-items:stretch;display:flex}.auth-code-row input{flex:1;min-width:0}.auth-code-btn{min-width:7.5rem;height:var(--cc-control-h);border:var(--cc-line) solid var(--cc-border-soft);border-radius:var(--cc-radius);background:color-mix(in srgb, var(--cc-bg-input) 80%, var(--cc-accent-fill));color:var(--cc-text);font-size:var(--cc-fs-sm);letter-spacing:.04em;cursor:pointer;white-space:nowrap;transition:border-color var(--cc-ease), filter var(--cc-ease);flex:none;padding:0 .75rem}.auth-code-btn:hover:not(:disabled){border-color:var(--cc-accent);filter:brightness(1.05)}.auth-code-btn:disabled{opacity:.65;cursor:not-allowed}.auth-captcha-row{grid-template-columns:minmax(0,1fr) 118px;align-items:stretch;gap:.55rem;display:grid}.auth-captcha-row input{min-width:0}.auth-captcha-img-btn{width:118px;height:var(--cc-control-h);border:var(--cc-line) solid var(--cc-border-soft);border-radius:var(--cc-radius);background:color-mix(in srgb, var(--cc-bg-input) 70%, #0c1c30);color:var(--cc-text-muted);font-size:var(--cc-fs-xs);cursor:pointer;flex-shrink:0;place-items:center;padding:0;display:grid;overflow:hidden}.auth-captcha-img-btn img{object-fit:cover;pointer-events:none;width:100%;height:100%;display:block}.auth-captcha-img-btn:hover:not(:disabled){border-color:var(--cc-accent)}.auth-captcha-img-btn:disabled{opacity:.7;cursor:wait}.auth-footer{gap:var(--cc-space-2);padding-top:var(--cc-space-3);flex-direction:column;flex-shrink:0;margin-top:auto;display:flex}.auth-footer p{font-family:var(--cc-font-mono);font-size:var(--cc-fs-xs);letter-spacing:.02em;text-align:center;color:var(--cc-text-dim)}.ops-module-page{background:var(--cc-bg-deep);flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.system-admin{min-height:0;margin:calc(-1 * var(--cc-space-4)) calc(-1 * clamp(1rem, 3vw, 2rem)) 0;flex:1;grid-template-columns:200px minmax(0,1fr);align-items:stretch;gap:0;display:grid;overflow:hidden}.system-admin--under-ops{margin:0}.admin-sidebar{gap:var(--cc-space-3);padding:var(--cc-space-4) .75rem var(--cc-space-6);background:linear-gradient(180deg, color-mix(in srgb, var(--cc-bg-panel) 92%, var(--cc-bg-deep)) 0%, var(--cc-bg-elevated) 100%);border-right:var(--cc-line) solid var(--cc-border-soft);flex-direction:column;display:flex}.admin-sidebar-head{border-bottom:var(--cc-line) solid color-mix(in srgb, var(--cc-border) 70%, transparent);flex-direction:column;gap:.15rem;padding:0 .65rem .55rem;display:flex}.admin-sidebar-kicker{font-family:var(--cc-font-display);font-size:var(--cc-fs-xs);letter-spacing:.18em;color:var(--cc-accent)}.admin-sidebar-title{font-family:var(--cc-font-display);font-size:var(--cc-fs-md);letter-spacing:.08em;color:var(--cc-text);margin:0;font-weight:600}.admin-subnav{flex-direction:column;gap:.2rem;display:flex}.admin-subnav a{color:var(--cc-text-muted);font-size:var(--cc-fs-sm);letter-spacing:.04em;border-radius:var(--cc-radius);transition:color var(--cc-ease), background var(--cc-ease);align-items:center;gap:.65rem;padding:.65rem .75rem;display:flex;position:relative}.admin-subnav-mark{width:3px;height:1em;transition:background var(--cc-ease), box-shadow var(--cc-ease);background:0 0;border-radius:1px;flex:none}.admin-subnav a:hover{color:var(--cc-text);background:color-mix(in srgb, var(--cc-accent) 6%, transparent)}.admin-subnav a.active{color:var(--cc-accent);background:color-mix(in srgb, var(--cc-accent) 12%, transparent)}.admin-subnav a.active .admin-subnav-mark{background:var(--cc-accent);box-shadow:0 0 8px var(--cc-accent-glow)}.admin-content{min-width:0;min-height:0;padding:var(--cc-space-4) clamp(1rem, 2.5vw, 1.75rem) var(--cc-space-6);flex-direction:column;display:flex;overflow:hidden}.admin-users-page{gap:var(--cc-space-4);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.admin-users-page>.cc-table-wrap{flex:1;min-height:0;overflow:auto}.admin-users-page>:not(.cc-table-wrap){flex-shrink:0}.cc-modal-wide{width:min(720px,94vw)}.cc-modal-map{width:min(960px,96vw);max-height:min(92vh,900px);overflow:hidden}.cc-modal-map .cc-modal-body{scrollbar-gutter:stable;overflow:hidden auto}.cc-modal-map .cc-modal-actions{z-index:2;margin-top:var(--cc-space-2);padding-top:var(--cc-space-3);background:linear-gradient(180deg, transparent, var(--cc-bg-elevated) 28%);padding-bottom:2px;position:sticky;bottom:0}.china-region-cascader{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;display:grid}@media (width<=720px){.china-region-cascader{grid-template-columns:1fr}}.project-fence-map{flex-direction:column;gap:.5rem;display:flex}.project-fence-map-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.project-fence-map-canvas{border:1px solid var(--cc-border);background:var(--cc-bg-panel);border-radius:4px;width:100%;height:min(280px,32vh);min-height:220px;overflow:hidden}.cc-label-inline{flex-direction:row;align-items:center;gap:.5rem}.role-picker,.perm-picker{flex-direction:column;gap:.45rem;display:flex}.role-picker-label,.perm-picker-head{justify-content:space-between;align-items:center;gap:var(--cc-space-3);color:var(--cc-text-muted);font-size:var(--cc-fs-xs);display:flex}.perm-picker-head .cc-input{max-width:220px}.role-picker-list,.perm-picker-list{border:1px solid var(--cc-border);background:color-mix(in srgb, var(--cc-panel) 70%, transparent);flex-direction:column;gap:.25rem;max-height:220px;padding:.4rem .5rem;display:flex;overflow:auto}.role-picker-item,.perm-picker-item{font-size:var(--cc-fs-sm);color:var(--cc-text);cursor:pointer;align-items:center;gap:.45rem;display:flex}.perm-code{font-family:var(--cc-font-sans);font-size:var(--cc-fs-xs);color:var(--cc-accent)}.perm-name{color:var(--cc-text-muted)}.admin-page-header{justify-content:space-between;align-items:flex-end;gap:var(--cc-space-4);display:flex}.admin-page-actions{justify-content:flex-end;align-items:center;gap:var(--cc-space-2);flex-wrap:wrap;display:flex}.admin-filter{color:var(--cc-text-muted);font-size:var(--cc-fs-xs);flex-direction:column;gap:.3rem;display:flex}.admin-filter .cc-input,.admin-filter .cc-select{min-width:160px}.admin-user-avatar{object-fit:cover;border:1px solid var(--cc-border-soft);border-radius:50%;width:28px;height:28px;display:block}.admin-status-switch{cursor:pointer;-webkit-user-select:none;user-select:none;font-size:var(--cc-fs-sm);color:var(--cc-text-muted);align-items:center;gap:.4rem;display:inline-flex}.admin-status-switch input{opacity:0;width:0;height:0;position:absolute}.admin-status-track{background:var(--cc-border-soft);border:1px solid var(--cc-border-soft);width:34px;height:18px;transition:background var(--cc-ease), border-color var(--cc-ease);border-radius:999px;position:relative}.admin-status-track:after{content:"";background:var(--cc-bg-panel-solid);width:14px;height:14px;box-shadow:0 1px 2px var(--cc-shadow);transition:transform var(--cc-ease);border-radius:50%;position:absolute;top:1px;left:1px}.admin-status-switch.is-on{color:var(--cc-ok)}.admin-status-switch.is-on .admin-status-track{background:color-mix(in srgb, var(--cc-ok) 55%, var(--cc-bg-panel-solid));border-color:color-mix(in srgb, var(--cc-ok) 45%, transparent)}.admin-status-switch.is-on .admin-status-track:after{transform:translate(16px)}.admin-status-switch.is-disabled{opacity:.45;cursor:not-allowed}.admin-status-text{min-width:2rem}.admin-reset-hint{margin:0 0 var(--cc-space-3);font-size:var(--cc-fs-sm);color:var(--cc-text-muted);line-height:var(--cc-lh-body)}.admin-reset-mode{margin:0 0 var(--cc-space-3);gap:var(--cc-space-4);color:var(--cc-text);font-size:var(--cc-fs-sm);border:0;align-items:center;padding:0;display:flex}.admin-reset-mode legend{margin:0 var(--cc-space-3) 0 0;padding:0;font-weight:600}.admin-reset-mode label{cursor:pointer;align-items:center;gap:.4rem;display:inline-flex}.admin-slip-fields{margin:0 0 var(--cc-space-3);gap:var(--cc-space-2);display:grid}.admin-slip-fields dt{font-size:var(--cc-fs-xs);color:var(--cc-text-muted)}.admin-slip-fields dd{font-family:var(--cc-font-mono);color:var(--cc-text);margin:.15rem 0 0}.admin-slip-secret{align-items:center;gap:var(--cc-space-2);display:flex}.admin-slip-secret code{font-size:var(--cc-fs-md);letter-spacing:.04em}.admin-slip-copy-hint{margin:0 0 var(--cc-space-2);font-size:var(--cc-fs-sm);color:var(--cc-accent)}.auth-recover-hint{text-align:center;color:var(--cc-text-muted);font-size:var(--cc-fs-sm);letter-spacing:.04em;margin:.75rem 0 0}.admin-avatar-field{align-items:flex-start;gap:var(--cc-space-3);display:flex}.admin-avatar-preview{border:1px solid var(--cc-border-soft);background:var(--cc-bg-table-head);width:56px;height:56px;color:var(--cc-text-dim);font-size:var(--cc-fs-xs);border-radius:50%;flex:none;place-items:center;display:grid;overflow:hidden}.admin-avatar-preview img{object-fit:cover;width:100%;height:100%}.admin-avatar-actions{flex-direction:column;flex:auto;gap:.35rem;min-width:0;display:flex}.admin-avatar-hint{font-size:var(--cc-fs-xs);color:var(--cc-text-dim);margin:0}.admin-avatar-clear{font-size:var(--cc-fs-sm);color:var(--cc-text-muted);cursor:pointer;align-items:center;gap:.35rem;display:inline-flex}.admin-empty{color:var(--cc-text-muted);text-align:center!important;padding:2rem .75rem!important}.admin-actions{white-space:normal;flex-wrap:wrap;align-items:center;gap:.35rem;max-width:15.5rem;display:flex}.cc-table td.admin-actions{vertical-align:middle;min-width:11.5rem;padding-top:.65rem;padding-bottom:.65rem;line-height:1.35}.cc-action-menu{display:inline-block;position:relative}.cc-action-menu>summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}.cc-action-menu>summary::-webkit-details-marker{display:none}.cc-action-menu-panel{z-index:5;background:var(--cc-bg-panel-solid);border:1px solid var(--cc-border);min-width:9.5rem;box-shadow:0 8px 24px var(--cc-shadow);flex-direction:column;gap:.25rem;padding:.35rem;display:flex;position:absolute;top:calc(100% + 4px);right:0}.cc-action-menu-panel .cc-btn{justify-content:flex-start;width:100%}@media (width<=800px){.system-admin{grid-template-columns:1fr;min-height:0;margin:0}.admin-sidebar{border-right:none;border-bottom:var(--cc-line) solid var(--cc-border-soft);padding:.65rem 0 .85rem}.admin-sidebar-head{padding:0 .25rem .45rem}.admin-subnav{flex-flow:row;gap:.15rem;overflow-x:auto}.admin-subnav a{flex:none;padding:.5rem .75rem}.admin-content{padding:var(--cc-space-4) 0 0}.admin-page-header{flex-direction:column;align-items:stretch}.cc-toolbar-meta{margin-left:0}.app-topbar-inner{grid-template-columns:1fr auto;grid-template-areas:"brand user""tabs tabs";align-items:center}.brand-block{grid-area:brand}.nav-user{grid-area:user}.app-tabs{flex-wrap:nowrap;grid-area:tabs;justify-content:flex-start;padding-bottom:.15rem;overflow-x:auto}.app-tabs a{font-size:var(--cc-fs-sm);flex:none;padding:.45rem .75rem .6rem}.app-main{padding-top:var(--cc-space-4)}}@media (prefers-reduced-motion:reduce){.auth-scanline,.auth-panel{animation:none}}
