/* 数据大屏模板化重构：卫星地图全屏铺底，数据卡悬浮在地图两侧 */
#app.dashboard-mode #sidebar { width:0; min-width:0; overflow:hidden; border:0; }
#app.dashboard-mode #content { width:100vw; }
#tab-dashboard { position:relative; background:#070b0d; }
.dashboard-shell { position:relative; min-width:1180px; min-height:700px; padding:0; gap:0; overflow:hidden; background:#08100d; }
.dashboard-topbar { position:absolute; z-index:60; inset:0 0 auto; height:50px; min-height:50px; grid-template-columns:1fr auto; border:0; border-radius:0; padding:0 16px; background:rgba(3,6,8,.96); box-shadow:0 1px 0 rgba(255,255,255,.08); }
.dashboard-title { font-size:calc(18px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); letter-spacing:.6px; color:#e8edf2; text-shadow:none; }
.dashboard-title::before { content:"◆"; display:inline-grid; place-items:center; width:25px; height:25px; margin-right:8px; border-radius:7px; background:linear-gradient(135deg,#0877ff,#24a7ff); color:#fff; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); box-shadow:0 0 14px rgba(14,165,233,.35); }
.dashboard-region { display:none; }
.dashboard-clock { color:#d5dce3; font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); gap:9px; }
.dashboard-action { padding:6px 11px; border:1px solid #303a42; border-radius:4px; background:#171d21; color:#cdd6dd; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.dashboard-action:hover { border-color:#198ddd; color:#55b9ff; }
.dashboard-main { position:absolute; inset:50px 0 0; display:block; }
.dashboard-map-card { position:absolute; z-index:1; inset:0; border:0; border-radius:0; }
#dashboard-map { min-height:100%; }
.dashboard-map-card::after { content:""; position:absolute; pointer-events:none; inset:0; background:linear-gradient(90deg,rgba(0,0,0,.23),transparent 25%,transparent 75%,rgba(0,0,0,.23)); }
.dashboard-map-head { left:430px; right:430px; top:auto; bottom:9px; justify-content:center; }
.dashboard-map-label { display:none; }
.dashboard-map-legend { color:#cbd5df; border-color:rgba(255,255,255,.16); background:rgba(8,13,16,.76); font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.dashboard-period-filter { position:absolute; z-index:30; top:9px; left:50%; transform:translateX(-50%); display:flex; align-items:center; gap:2px; padding:4px; border-radius:22px; background:rgba(20,23,24,.82); box-shadow:0 4px 18px rgba(0,0,0,.32); backdrop-filter:blur(8px); }
.dashboard-period-filter button { min-width:70px; padding:8px 14px; border:0; border-radius:17px; background:transparent; color:#9ca3a8; font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); cursor:pointer; }
.dashboard-period-filter button.active { background:#53575a; color:#fff; }.dashboard-period-filter button:disabled { opacity:.42; cursor:not-allowed; }
.dashboard-period-date { margin-left:3px; padding:8px 15px; border-left:1px solid #555; color:#d4d8da; font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); white-space:nowrap; }
.dashboard-spatial-controls { position:absolute; z-index:31; top:56px; left:50%; display:flex; align-items:center; gap:10px; padding:6px 10px; border:1px solid rgba(255,255,255,.13); border-radius:6px; background:rgba(8,13,16,.84); color:#cbd5e1; font-size:11px; transform:translateX(-50%); backdrop-filter:blur(7px); box-shadow:0 5px 16px rgba(0,0,0,.25); }
.dashboard-heat-opacity { display:flex; align-items:center; gap:6px; white-space:nowrap; }.dashboard-heat-opacity input { width:92px; accent-color:#22d3ee; }
.dashboard-spatial-status { min-width:108px; color:#7dd3fc; white-space:nowrap; }.dashboard-spatial-status.error { color:#fca5a5; }
.dashboard-heat-panel { position:absolute; z-index:32; left:12px; bottom:54px; width:330px; padding:13px; border:1px solid rgba(125,211,252,.28); border-radius:9px; background:rgba(4,10,20,.9); color:#dbeafe; backdrop-filter:blur(9px); box-shadow:0 10px 28px rgba(0,0,0,.38); }
.dashboard-heat-switch { display:grid; grid-template-columns:1fr 1fr; gap:6px; margin-bottom:11px; }
.dashboard-heat-switch button { min-height:38px; padding:7px 8px; border:1px solid rgba(125,211,252,.2); border-radius:6px; background:rgba(30,41,59,.72); color:#94a3b8; font-size:12px; line-height:1.25; cursor:pointer; transition:border-color .16s ease,background .16s ease,color .16s ease; }
.dashboard-heat-switch button:hover,.dashboard-heat-switch button:focus-visible { border-color:#38bdf8; color:#e0f2fe; outline:none; }
.dashboard-heat-switch button.active,.dashboard-heat-switch button[aria-selected="true"] { border-color:#0ea5e9; background:linear-gradient(135deg,rgba(3,105,161,.8),rgba(8,145,178,.62)); color:#fff; box-shadow:0 0 12px rgba(14,165,233,.18) inset; }
.dashboard-heat-scale { min-height:186px; padding:12px 13px; border:1px solid rgba(125,211,252,.16); border-radius:6px; background:rgba(15,23,42,.76); color:#dbeafe; font:13px/1.35 Consolas,"SFMono-Regular",monospace; pointer-events:none; }
.dashboard-heat-scale[hidden] { display:none; }.dashboard-heat-scale-title { margin-bottom:9px; color:#bfdbfe; font-family:inherit; font-size:16px; font-weight:700; letter-spacing:.04em; }.dashboard-heat-scale-row { display:flex; align-items:center; gap:8px; min-height:17px; white-space:nowrap; }.dashboard-heat-scale-color { width:20px; height:14px; flex:0 0 20px; border-radius:2px; }.dashboard-heat-scale-meta { margin-top:9px; padding-top:8px; border-top:1px solid rgba(148,163,184,.2); color:#94a3b8; font-size:12px; }
.dashboard-takeoff-bubble { display:grid; place-items:center; border:2px solid rgba(255,237,213,.9); border-radius:50%; color:#fff7ed; font:800 12px/1 Arial,sans-serif; box-shadow:0 0 0 3px rgba(249,115,22,.18),0 4px 14px rgba(127,29,29,.55); cursor:pointer; }
.dashboard-takeoff-single { width:34px; height:34px; display:grid; place-items:center; border:2px solid #fed7aa; border-radius:50%; background:#ff8c00; box-shadow:0 0 0 3px rgba(255,140,0,.18),0 4px 12px rgba(124,45,18,.5); cursor:pointer; }.dashboard-takeoff-single img { width:25px; height:25px; object-fit:contain; }
.dashboard-spatial-popup { min-width:260px; max-width:390px; color:#dbeafe; }.dashboard-spatial-popup h4 { margin:0 0 8px; color:#fff; font-size:14px; }.dashboard-spatial-popup p { margin:4px 0; color:#a5b4c7; line-height:1.45; }.dashboard-takeoff-list { display:grid; gap:6px; max-height:220px; overflow:auto; margin-top:8px; }.dashboard-takeoff-detail { padding:7px 8px; border:1px solid #334155; border-radius:5px; background:#101827; }.dashboard-takeoff-detail b { display:block; color:#fed7aa; }.dashboard-takeoff-detail span { display:block; margin-top:3px; color:#94a3b8; font-size:11px; }
.dashboard-kpis { position:absolute; z-index:25; top:101px; left:50%; width:min(780px,calc(100% - 720px)); transform:translateX(-50%); grid-template-columns:repeat(4,1fr); gap:5px; pointer-events:auto; }
.dashboard-kpi { min-height:63px; padding:9px 12px; border-color:rgba(255,255,255,.12); border-radius:5px; background:rgba(14,20,22,.77); box-shadow:0 8px 16px rgba(0,0,0,.18); backdrop-filter:blur(7px); }
.dashboard-kpi::after { display:none; }.dashboard-kpi.warn,.dashboard-kpi.danger { border-color:rgba(255,255,255,.12); }
.dashboard-kpi-label { color:#b8c0c5; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dashboard-kpi-value { margin-top:5px; font-size:calc(24px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); color:#f6f8f9; }.dashboard-kpi-unit { color:#9ba3a8; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dashboard-kpi-sub { display:none; }
.dashboard-kpi:not(.dashboard-kpi-clickable) { pointer-events:none; }
.dashboard-kpi-clickable { cursor:pointer; transition:transform .16s ease,border-color .16s ease,background .16s ease; }
.dashboard-kpi-clickable:hover,.dashboard-kpi-clickable:focus-visible { transform:translateY(-2px); border-color:rgba(56,189,248,.72); background:rgba(12,35,49,.93); outline:none; box-shadow:0 0 0 1px rgba(56,189,248,.2),0 10px 22px rgba(0,0,0,.28); }
.dashboard-kpi-clickable::before { content:"查看明细"; position:absolute; right:8px; bottom:6px; color:#38bdf8; font-size:calc(9px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); opacity:0; transition:opacity .16s ease; }
.dashboard-kpi-clickable:hover::before,.dashboard-kpi-clickable:focus-visible::before { opacity:1; }
.dashboard-left,.dashboard-right { position:absolute; z-index:20; top:9px; bottom:9px; width:332px; display:grid; gap:8px; }
.dashboard-left { left:8px; grid-template-rows:1fr .9fr; bottom:218px; }.dashboard-right { right:8px; grid-template-rows:.8fr 1.2fr; bottom:262px; }
.dash-card { border-color:rgba(255,255,255,.1); border-radius:7px; background:linear-gradient(135deg,rgba(18,23,21,.89),rgba(17,22,24,.91)); box-shadow:0 9px 28px rgba(0,0,0,.24); backdrop-filter:blur(8px); }
.dash-card-title { height:46px; padding:0 15px; border-bottom-color:rgba(255,255,255,.08); color:#e4e9ec; font-size:calc(15px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); letter-spacing:0; }
.dash-card-title::before { width:2px; height:14px; margin-right:8px; background:#22a3ff; box-shadow:none; }
.dash-muted { color:#899298; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dash-panel-body { height:calc(100% - 46px); padding:12px 15px; }
.dashboard-bottom { position:absolute; z-index:20; inset:0; display:block; pointer-events:none; }
.dashboard-bottom > .dash-card { position:absolute; pointer-events:auto; }
.dashboard-bottom > .dash-card:nth-child(1) { left:8px; bottom:9px; width:332px; height:201px; }
.dashboard-bottom > .dash-card:nth-child(2) { right:8px; bottom:9px; width:360px; height:245px; }
.dashboard-bottom > .dash-card:nth-child(3) { right:376px; bottom:9px; width:255px; height:155px; }
.dashboard-bottom > .dash-card:nth-child(4) { left:348px; bottom:9px; width:245px; height:145px; }
.dash-bar-track { background:#343b3a; }.dash-bar-fill { background:linear-gradient(90deg,#088bff,#27d9ca); box-shadow:none; }
.dashboard-alarm-item { background:rgba(48,53,51,.5); font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dashboard-alarm-time { font-size:calc(10px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dash-mini-metric { background:rgba(39,44,43,.5); border-color:rgba(255,255,255,.06); }.dash-mini-metric strong { color:#f4f7f8; font-size:calc(22px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dash-mini-metric span { font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.dashboard-bottom > .dash-card:nth-child(2) .dash-mini-metric strong { font-size:calc(29px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dashboard-bottom > .dash-card:nth-child(2) .dash-mini-metric span { font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); color:#aeb7bd; }
.dashboard-system-row { padding:6px 7px; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dashboard-donut { box-shadow:none; }.dashboard-donut-text { font-size:calc(21px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dashboard-donut-text small { font-size:calc(10px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.identity-line { font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dash-chart-legend { font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dash-bar-row { grid-template-columns:105px 1fr 34px; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.dashboard-trend-title { justify-content:flex-start; gap:0; padding-right:10px; }
.dashboard-trend-title .dashboard-trend-periods { margin-left:auto; }
.dashboard-trend-periods { display:flex; align-items:center; gap:3px; }
.dashboard-trend-periods button { min-width:40px; height:28px; padding:0 8px; border:1px solid #344550; border-radius:4px; background:#111b21; color:#87959e; font-size:11px; line-height:26px; cursor:pointer; transition:border-color .15s ease,background .15s ease,color .15s ease,opacity .15s ease; }
.dashboard-trend-periods button:hover { border-color:#258fd0; color:#bfe9ff; }
.dashboard-trend-periods button.active,.dashboard-trend-periods button[aria-pressed="true"] { border-color:#1d9fe9; background:#0b4264; color:#d9f5ff; box-shadow:0 0 9px rgba(34,163,255,.18) inset; }
.dashboard-trend-periods button:focus-visible { outline:2px solid #38bdf8; outline-offset:2px; }
.dashboard-trend-periods[aria-busy="true"] button.active { cursor:progress; opacity:.72; }
.dashboard-trend-panel { display:flex; flex-direction:column; padding-top:8px; }
.dashboard-trend-meta { min-height:22px; display:flex; align-items:center; justify-content:space-between; gap:8px; }
.dashboard-trend-meta .dash-chart-legend { min-width:0; gap:10px; }
.dashboard-trend-chart { position:relative; flex:1; min-height:0; }
#dashboard-trend-svg { display:block; width:100%; height:100%; overflow:visible; touch-action:none; }
.dashboard-trend-hit { fill:transparent; cursor:crosshair; }
.dashboard-trend-hit:focus { outline:none; }
.dashboard-trend-tooltip { position:absolute; z-index:8; min-width:142px; max-width:190px; padding:8px 9px; border:1px solid rgba(56,189,248,.5); border-radius:6px; background:rgba(3,12,21,.96); color:#cbd5e1; font-size:10px; line-height:1.55; box-shadow:0 8px 24px rgba(0,0,0,.38),0 0 13px rgba(14,165,233,.12); pointer-events:none; transform:translate(-50%,-100%); }
.dashboard-trend-tooltip[hidden] { display:none; }
.dashboard-trend-tooltip b,.dashboard-trend-tooltip span { display:block; }
.dashboard-trend-tooltip b { margin-bottom:3px; color:#e6f7ff; font-size:11px; }
.dashboard-trend-tooltip strong { color:#67e8f9; font-size:12px; }
.dashboard-trend-tooltip .alarm strong { color:#fca5a5; }
.dashboard-trend-tooltip .future { color:#94a3b8; }
@media(max-width:1500px){.dashboard-trend-periods button{min-width:36px;height:26px;padding:0 5px;line-height:24px}.dashboard-trend-title{padding-left:10px}.dashboard-trend-title>span{font-size:13px}}
@media(max-width:1500px){.dashboard-left,.dashboard-right{width:295px}.dashboard-bottom>.dash-card:nth-child(1){width:295px}.dashboard-bottom>.dash-card:nth-child(2){width:315px}.dashboard-bottom>.dash-card:nth-child(3){right:331px;width:230px}.dashboard-bottom>.dash-card:nth-child(4){left:310px}.dashboard-kpis{width:620px}.dashboard-map-head{left:315px;right:315px}.dashboard-heat-panel{width:306px}}

/* 数据大屏布局优化：语义化左右轨道，内容高度随数据自适应 */
.dashboard-shell {
  --dashboard-left-rail:clamp(380px,27vw,480px);
  --dashboard-right-rail:clamp(315px,21vw,370px);
}
.dashboard-main .dash-card-title {
  height:42px;
  min-height:42px;
  padding:0 12px;
}
.dashboard-main .dash-panel-body { height:auto; padding:9px 12px; }
.dashboard-left,.dashboard-right {
  top:8px;
  bottom:8px;
  width:auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.dashboard-left { left:8px; width:var(--dashboard-left-rail); }
.dashboard-right { right:8px; width:var(--dashboard-right-rail); }
.dashboard-kpis {
  left:calc(var(--dashboard-left-rail) + 16px);
  right:calc(var(--dashboard-right-rail) + 16px);
  width:auto;
  transform:none;
  gap:5px;
}
.dashboard-map-head {
  left:calc(var(--dashboard-left-rail) + 16px);
  right:calc(var(--dashboard-right-rail) + 16px);
}
.dashboard-card-trend,.dashboard-card-realtime { display:flex; flex-direction:column; }
.dashboard-card-trend {
  flex:1 1 245px;
  min-height:230px;
  max-height:310px;
}
.dashboard-card-trend .dash-card-title {
  color:#eef9ff;
  font-size:calc(17px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
}
.dashboard-card-trend .dashboard-trend-title > span {
  flex:0 1 auto;
  min-width:0;
  overflow:hidden;
  color:#f3fbff;
  font-size:calc(16px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
  text-overflow:ellipsis;
  white-space:nowrap;
}
.dashboard-card-trend .dashboard-trend-panel {
  flex:1 1 auto;
  min-height:0;
  padding:6px 11px 7px;
}
.dashboard-card-trend .dashboard-trend-meta { min-height:20px; }
.dashboard-card-trend .dash-chart-legend {
  font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
}
.dashboard-card-trend .dashboard-trend-chart { min-height:0; }
.dashboard-trend-periods button {
  min-width:36px;
  height:24px;
  padding:0 6px;
  font-size:11px;
  line-height:22px;
}
.dashboard-card-identity,.dashboard-card-system,.dashboard-card-device,.dashboard-flight-card {
  flex:0 0 auto;
}
.dashboard-card-identity .dashboard-identity {
  grid-template-columns:88px minmax(0,1fr);
  gap:10px;
  padding-top:8px;
  padding-bottom:8px;
}
.dashboard-card-identity .dashboard-donut { width:82px; height:82px; }
.dashboard-card-identity .dashboard-donut::after { width:55px; height:55px; }
.dashboard-card-identity .identity-lines { gap:6px; }
.dashboard-card-system .dashboard-system { gap:0; padding-top:5px; padding-bottom:5px; }
.dashboard-card-system .dashboard-system-row {
  min-height:25px;
  padding:4px 6px;
  font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
}
.dashboard-card-realtime {
  order:1;
  flex:1 1 360px;
  min-height:300px;
  max-height:none;
}
.dashboard-card-realtime .dash-card-title {
  color:#f1f9ff;
  font-size:calc(19px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
}
.dashboard-card-realtime .dash-panel-body { flex:1 1 auto; min-height:0; padding:8px; overflow:hidden; }
.dashboard-card-realtime .dashboard-alarm-list {
  display:flex;
  flex-direction:column;
  gap:8px;
  overflow:auto;
  scrollbar-width:thin;
  scrollbar-color:#345066 transparent;
}
.dashboard-card-realtime .dashboard-alarm-item {
  display:block;
  flex:0 0 auto;
  min-height:132px;
  padding:9px 10px;
  border-left-width:3px;
  font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
}
.dashboard-alarm-head {
  display:grid;
  grid-template-columns:34px minmax(0,1fr) auto;
  align-items:center;
  gap:8px;
  margin-bottom:8px;
}
.dashboard-card-realtime .dashboard-alarm-main {
  color:#f1f5f9;
  font-size:calc(14px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
  font-weight:700;
}
.dashboard-alarm-details {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:6px 10px;
}
.dashboard-alarm-detail {
  min-width:0;
  color:#d5e2ee;
  line-height:1.35;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.dashboard-alarm-detail em {
  margin-right:5px;
  color:#7f98ad;
  font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
  font-style:normal;
}
.dashboard-card-realtime .dashboard-alarm-time {
  color:#9db0c1;
  font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
}
.dashboard-click-card {
  cursor:pointer;
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.dashboard-click-card:hover,.dashboard-click-card:focus-visible {
  border-color:rgba(56,189,248,.72);
  box-shadow:0 0 0 1px rgba(56,189,248,.18),0 12px 30px rgba(0,0,0,.3);
  outline:none;
  transform:translateY(-1px);
}
.dashboard-alarm-title-actions { display:flex; align-items:center; gap:9px; }
.dashboard-alarm-list-link {
  padding:3px 8px;
  border:1px solid rgba(56,189,248,.48);
  border-radius:6px;
  color:#7dd3fc;
  background:rgba(14,116,144,.18);
  font-size:calc(12px + var(--utm-text-delta, 0px));
  cursor:pointer;
}
.dashboard-alarm-list-link:hover,.dashboard-alarm-list-link:focus-visible { color:#fff; border-color:#38bdf8; outline:none; }
.dashboard-alarm-item[role="button"] { cursor:pointer; transition:border-color .16s ease,background .16s ease; }
.dashboard-alarm-item[role="button"]:hover,.dashboard-alarm-item[role="button"]:focus-visible { border-color:#38bdf8; background:rgba(14,116,144,.2); outline:none; }
.dashboard-card-alarm-analysis { order:2; flex:0 0 190px; min-height:180px; }
.dashboard-card-alarm-analysis .dash-card-title { font-size:calc(17px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.dashboard-card-alarm-analysis .dash-panel-body { flex:1 1 auto; min-height:0; padding:7px 10px; }
.dashboard-card-alarm-analysis .dash-bars { height:100%; gap:5px; align-content:center; }
.dashboard-card-alarm-analysis .dash-bar-row {
  grid-template-columns:105px minmax(0,1fr) 34px;
  gap:8px;
  font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
}
.dashboard-card-alarm-analysis .dash-bar-track { height:8px; }
.dashboard-card-alarm-analysis .dash-bar-value { font-size:calc(14px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.dashboard-card-device .dash-panel-body { padding:7px 9px 9px; }
.dashboard-card-device .dash-metric-grid {
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:5px;
  height:auto;
}
.dashboard-card-device .dash-mini-metric { min-width:0; padding:7px 5px; text-align:center; }
.dashboard-card-device .dash-mini-metric strong {
  font-size:calc(19px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
}
.dashboard-card-device .dash-mini-metric span {
  font-size:calc(10px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
  line-height:1.25;
  white-space:normal;
}
.dashboard-flight-card {
  position:static;
  order:3;
  width:auto;
  height:166px;
  min-height:150px;
}
.dashboard-flight-card .dash-panel-body { flex:1 1 auto; min-height:0; padding:0; }
.dashboard-flight-card .dash-metric-grid {
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0;
  height:100%;
}
.dashboard-flight-card .dash-mini-metric { min-width:0; min-height:0; padding:6px 8px; border-radius:0; }
.dashboard-flight-card .dash-mini-metric strong {
  font-size:calc(21px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px));
}
.dashboard-flight-card .dash-mini-metric span {
  overflow:visible;
  line-height:1.25;
  text-overflow:clip;
  white-space:normal;
}
.dashboard-trend-tooltip {
  min-width:152px;
  font-size:11px;
}
.dashboard-trend-tooltip b { font-size:12px; }
.dashboard-clock { min-width:0; white-space:nowrap; }
@media(max-height:780px) {
  .dashboard-card-trend { min-height:220px; max-height:270px; }
  .dashboard-card-identity .dashboard-donut { width:74px; height:74px; }
  .dashboard-card-identity .dashboard-donut::after { width:49px; height:49px; }
  .dashboard-card-system .dashboard-system-row { min-height:23px; padding:3px 5px; }
  .dashboard-card-realtime { flex-basis:300px; min-height:270px; }
  .dashboard-card-alarm-analysis { flex-basis:170px; min-height:165px; }
  .dashboard-flight-card { height:130px; min-height:120px; }
}

/* 数据大屏时间选择与指标详情 */
.dashboard-period-filter button:not(:disabled):hover { color:#fff; background:rgba(255,255,255,.1); }
.dashboard-period-date { min-width:190px; text-align:center; }
.dashboard-date-card { width:min(430px,calc(100vw - 32px)); padding:0; border:1px solid #334155; border-radius:12px; background:#0f172a; box-shadow:0 24px 70px rgba(0,0,0,.55); overflow:hidden; }
.dashboard-date-body { display:grid; grid-template-columns:1fr 1fr; gap:14px; padding:22px; }
.dashboard-date-body label { display:grid; gap:7px; color:#94a3b8; font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.dashboard-date-body input { width:100%; padding:10px 11px; border:1px solid #334155; border-radius:7px; background:#111c31; color:#e2e8f0; color-scheme:dark; }
.dashboard-date-actions { display:flex; justify-content:flex-end; gap:10px; padding:0 22px 20px; }
.dashboard-detail-modal { z-index:14500; padding:18px; }
.dashboard-child-modal { z-index:16000; }
.flight-track-modal.dashboard-child-modal { z-index:17000; }
.takeoff-distribution-modal.dashboard-child-modal { z-index:17000; }
.alarm-pilot-map-modal.dashboard-child-modal { z-index:18000; }
.dashboard-detail-card { width:min(1500px,96vw); height:min(860px,92vh); display:flex; flex-direction:column; border:1px solid #334155; border-radius:12px; background:#0b1220; box-shadow:0 30px 90px rgba(0,0,0,.66); overflow:hidden; }
.dashboard-detail-header { flex:0 0 auto; display:flex; align-items:center; justify-content:space-between; gap:18px; padding:15px 18px; border-bottom:1px solid #263246; background:#111a2b; }
.dashboard-detail-heading h3 { margin:0; color:#f8fafc; font-size:calc(19px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dashboard-detail-heading p { margin:5px 0 0; color:#94a3b8; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.dashboard-detail-toolbar { flex:0 0 auto; display:flex; flex-wrap:wrap; align-items:center; gap:9px; padding:11px 18px; border-bottom:1px solid #243047; background:#0e1728; }
.dashboard-detail-toolbar select { min-width:145px; padding:8px 10px; border:1px solid #334155; border-radius:6px; background:#111c31; color:#dbeafe; }
.dashboard-detail-toolbar .dashboard-detail-count { margin-right:auto; color:#94a3b8; font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.dashboard-detail-table-wrap { flex:1 1 auto; min-height:0; overflow:auto; }
.dashboard-detail-table { width:100%; min-width:1100px; border-collapse:separate; border-spacing:0; color:#dbeafe; font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.dashboard-detail-table th { position:sticky; z-index:2; top:0; padding:11px 10px; text-align:left; white-space:nowrap; background:#162238; color:#93c5fd; border-bottom:1px solid #334155; }
.dashboard-detail-table td { max-width:280px; padding:10px; border-bottom:1px solid rgba(51,65,85,.55); vertical-align:middle; }
.dashboard-detail-table tbody tr:hover td { background:rgba(30,64,93,.35); }
.dashboard-detail-table td.dashboard-cell-wrap { white-space:normal; line-height:1.45; }.dashboard-detail-table td:not(.dashboard-cell-wrap) { white-space:nowrap; }
.dashboard-detail-pager { flex:0 0 auto; display:flex; align-items:center; justify-content:flex-end; gap:9px; padding:10px 18px; border-top:1px solid #263246; background:#0e1728; color:#94a3b8; }
.dashboard-status { display:inline-flex; align-items:center; padding:3px 8px; border-radius:999px; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight:700; }
.dashboard-status.verified,.dashboard-status.resolved { background:rgba(34,197,94,.16); color:#86efac; }
.dashboard-status.unverified,.dashboard-status.high,.dashboard-status.active { background:rgba(239,68,68,.16); color:#fca5a5; }
.dashboard-status.pending,.dashboard-status.medium,.dashboard-status.processing { background:rgba(245,158,11,.17); color:#fcd34d; }
.dashboard-status.low { background:rgba(56,189,248,.16); color:#7dd3fc; }
.dashboard-detail-loading { display:grid; place-items:center; min-height:260px; color:#94a3b8; }
.dashboard-record-modal { z-index:15500; }.dashboard-record-card { width:min(680px,92vw); max-height:82vh; overflow:auto; border:1px solid #334155; border-radius:12px; background:#0f172a; box-shadow:0 24px 80px rgba(0,0,0,.6); }
.alarm-full-detail-modal { z-index:15600; }
.alarm-full-detail-card { width:min(1120px,94vw); max-height:92vh; overflow:auto; }
.alarm-full-detail-content { padding:0 18px 18px; }
.dashboard-record-grid { display:grid; grid-template-columns:150px 1fr; gap:0; padding:8px 18px 20px; }.dashboard-record-grid span,.dashboard-record-grid b { padding:10px 8px; border-bottom:1px solid rgba(51,65,85,.55); font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }.dashboard-record-grid span { color:#94a3b8; }.dashboard-record-grid b { color:#e2e8f0; font-weight:600; word-break:break-word; }
@media(max-width:760px){.dashboard-date-body{grid-template-columns:1fr}.dashboard-detail-card{width:98vw;height:94vh}.dashboard-detail-header{padding:12px}.dashboard-detail-toolbar{padding:9px 12px}.dashboard-record-grid{grid-template-columns:1fr}.dashboard-record-grid span{padding-bottom:2px;border-bottom:0}.dashboard-record-grid b{padding-top:2px}}

#tab-devices { flex-direction:column; background:#0f172a; overflow:auto; }
.devices-header { padding:20px 24px 14px; border-bottom:1px solid #263244; background:#111827; }
.devices-header h2 { font-size:calc(20px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); color:#f3f4f6; }
.devices-header p { margin-top:5px; color:#8391a6; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.devices-content { padding:18px 24px 30px; }
.device-summary { display:grid; grid-template-columns:repeat(4,minmax(140px,1fr)); gap:12px; margin-bottom:16px; }
.device-summary-card,.source-card { border:1px solid #334155; border-radius:9px; background:#172033; }
.device-summary-card { padding:13px 15px; }
.device-summary-card strong { display:block; color:#60a5fa; font-size:calc(22px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.device-summary-card span { color:#94a3b8; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.device-section { margin-top:16px; }
.device-section-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:9px; }
.device-section-head h3 { color:#dbeafe; font-size:calc(14px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.device-sync-state { display:flex; align-items:center; gap:8px; margin:8px 0 14px; color:#94a3b8; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.device-sync-dot { width:7px; height:7px; border-radius:50%; background:#f59e0b; box-shadow:0 0 8px currentColor; }
.device-sync-state.connected .device-sync-dot { background:#22c55e; }
.device-sync-state.reconnecting .device-sync-dot { background:#f59e0b; }
.source-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(310px,1fr)); gap:12px; }
.source-card { padding:13px 14px; min-width:0; }
.source-card-head { display:flex; justify-content:space-between; gap:10px; align-items:center; margin-bottom:9px; }
.source-card-title { color:#f1f5f9; font-size:calc(14px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight:700; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.device-status { padding:2px 7px; border-radius:9px; font-size:calc(10px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); background:#374151; color:#cbd5e1; }
.device-status.online { background:#064e3b; color:#6ee7b7; }
.device-status.offline { background:#4c1d1d; color:#fca5a5; }
.source-meta { display:grid; grid-template-columns:82px minmax(0,1fr); gap:5px 8px; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.source-meta b { color:#7f8da3; font-weight:500; }
.source-meta span { color:#dbe5f1; overflow-wrap:anywhere; }
.source-actions { display:flex; gap:7px; margin-top:11px; }
.ccs-editor { display:none; padding:14px; margin-bottom:14px; border:1px solid #3b82f6; border-radius:9px; background:#111c30; }
.ccs-editor.open { display:block; }
.sikong-channel-note { color:#7f8da3; font-size:calc(10px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:1.5; }
.sikong-metric { color:#93c5fd !important; font-weight:600; }
.ccs-editor-grid { display:grid; grid-template-columns:repeat(3,minmax(150px,1fr)); gap:10px; }
.ccs-editor-grid .full { grid-column:1/-1; }
@media(max-width:900px){.device-summary,.ccs-editor-grid{grid-template-columns:1fr}.source-grid{grid-template-columns:1fr}}

