:root {
      --panel: rgba(8, 25, 45, .86);
      --text: #dff6ff;
      --muted: #8fb7cf;
      --green: #39e88f;
      --red: #ff5b6a;
      --blue: #42b7ff;
      --yellow: #ffd35a
    }

    * {
      box-sizing: border-box
    }

    body {
      margin: 0;
      background: radial-gradient(circle at 50% 30%, #143a5b, #06111f 72%);
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", Arial, sans-serif;
      color: var(--text);
      overflow: hidden
    }

    #app {
      height: 100vh;
      position: relative;
      background: linear-gradient(180deg, rgba(0, 0, 0, .08), rgba(0, 0, 0, .48))
    }

    .top {
      height: 70px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0 24px;
      background: linear-gradient(180deg, rgba(6, 21, 38, .96), rgba(6, 21, 38, .28));
      border-bottom: 1px solid rgba(71, 183, 255, .25)
    }

    .logo {
      width: 34px;
      height: 34px;
      border-radius: 10px;
      background: linear-gradient(135deg, #3ee8ff, #0a61d8);
      box-shadow: 0 0 20px #098cff
    }

    .brand {
      display: flex;
      gap: 8px;
      align-items: center;
      min-width: 250px
    }

    .title {
      text-align: center;
      font-size: 28px;
      font-weight: 900;
      letter-spacing: 2px;
      text-shadow: 0 0 16px #25a7ff
    }

    .sub {
      font-size: 13px;
      color: #9fd5f5;
      text-align: center;
      margin-top: 3px
    }

    .clock {
      color: #bfe6ff;
      font-size: 13px
    }

    .nav {
      display: flex;
      gap: 10px;
      min-width: 250px;
      justify-content: flex-end
    }

    .btn {
      border: 1px solid rgba(86, 190, 255, .45);
      border-radius: 18px;
      padding: 8px 13px;
      background: rgba(10, 40, 70, .55);
      color: #dff6ff;
      cursor: pointer
    }

    .main {
      position: absolute;
      inset: 70px 0 0 0;
      display: grid;
      grid-template-columns: 330px 1fr 360px;
      gap: 8px;
      padding: 12px
    }

    .panel {
      background: var(--panel);
      border: 1px solid rgba(56, 170, 255, .45);
      box-shadow: inset 0 0 30px rgba(33, 153, 255, .08), 0 0 20px rgba(0, 0, 0, .25);
      border-radius: 8px;
      padding: 13px;
      backdrop-filter: blur(8px)
    }

    .left,
    .right {
      display: flex;
      flex-direction: column;
      gap: 8px;
      z-index: 3;
      overflow: hidden
    }

    .p-title {
      font-size: 15px;
      font-weight: 800;
      color: #c8f1ff;
      margin-bottom: 10px;
      border-left: 3px solid var(--blue);
      padding-left: 8px
    }

    .kpis {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 9px
    }

    .kpi {
      background: rgba(16, 50, 82, .55);
      border: 1px solid rgba(80, 180, 255, .25);
      padding: 10px;
      border-radius: 7px
    }

    .kpi b {
      font-size: 24px;
      display: block;
      margin: 2px 0
    }

    .kpi span {
      font-size: 12px;
      color: var(--muted)
    }

    input,
    select {
      background: #0d2036;
      border: 1px solid #315a84;
      color: #fff;
      border-radius: 7px;
      padding: 8px;
      outline: none;
      width: 100%
    }

    button {
      background: #1e88ff;
      border: 0;
      color: #fff;
      border-radius: 7px;
      padding: 8px 10px;
      font-weight: 700;
      cursor: pointer
    }

    button.gray {
      background: #334155
    }

    button.red {
      background: #a91d2d
    }

    button.yellow {
      background: #946200
    }

    .inputrow {
      display: grid;
      grid-template-columns: 1fr 82px;
      gap: 8px;
      margin: 7px 0
    }

    .btnrow {
      display: flex;
      gap: 8px;
      margin: 8px 0;
      flex-wrap: wrap
    }

    .status {
      font-size: 12px;
      color: #a9bed8;
      word-break: break-all;
      line-height: 1.45
    }

    .mapWrap {
      position: relative;
      border-radius: 10px;
      overflow: hidden;
      border: 1px solid rgba(80, 190, 255, .28);
      background: #0a1020;
      box-shadow: 0 0 40px rgba(31, 151, 255, .16)
    }

    #map {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      z-index: 1
    }

    .gridOverlay {
      position: absolute;
      inset: 0;
      background-image: linear-gradient(rgba(74, 180, 255, .07) 1px, transparent 1px), linear-gradient(90deg, rgba(74, 180, 255, .07) 1px, transparent 1px);
      background-size: 48px 48px;
      pointer-events: none;
      z-index: 2
    }

    .mapTop {
      position: absolute;
      top: 12px;
      left: 50%;
      transform: translateX(-50%);
      display: flex;
      gap: 10px;
      z-index: 4
    }

    .chip {
      background: rgba(5, 22, 38, .82);
      border: 1px solid rgba(82, 190, 255, .45);
      padding: 8px 12px;
      border-radius: 20px;
      font-size: 12px;
      white-space: nowrap
    }

    .toolbar {
      position: absolute;
      bottom: 16px;
      left: 50%;
      transform: translateX(-50%);
      display: flex;
      gap: 8px;
      background: rgba(5, 20, 35, .80);
      border: 1px solid rgba(68, 180, 255, .35);
      border-radius: 12px;
      padding: 10px 14px;
      z-index: 4
    }

    .tool {
      text-align: center;
      color: #bfeaff;
      font-size: 12px;
      cursor: pointer
    }

    .tool div {
      font-size: 18px;
      margin-bottom: 3px
    }

    .legend {
      position: absolute;
      bottom: 16px;
      left: 16px;
      display: flex;
      gap: 10px;
      flex-wrap: wrap;
      background: rgba(5, 20, 35, .72);
      padding: 9px;
      border-radius: 8px;
      z-index: 4;
      font-size: 12px
    }

    .dot {
      display: inline-block;
      width: 10px;
      height: 10px;
      border-radius: 50%;
      margin-right: 5px
    }

    .drone {
      background: #43baff
    }

    .offlineDot {
      background: #9ca3af
    }

    .zone {
      background: #ff5b6a
    }

    .track {
      background: #39e88f
    }

    .list {
      overflow: auto;
      max-height: 330px
    }

    .listItem {
      display: grid;
      grid-template-columns: 34px 1fr auto;
      gap: 8px;
      align-items: center;
      padding: 9px 0;
      border-bottom: 1px solid rgba(100, 190, 255, .15);
      font-size: 12px
    }

    .uavIcon {
      font-size: 23px
    }

    .tag {
      border-radius: 5px;
      padding: 3px 7px;
      font-size: 12px
    }

    .tag.green {
      background: rgba(57, 232, 143, .18);
      color: #58ffae
    }

    .tag.gray {
      background: rgba(156, 163, 175, .18);
      color: #d1d5db
    }

    .uas {
      color: #bfeaff;
      word-break: break-all;
      font-size: 12px
    }

    .muted {
      color: var(--muted)
    }

    .alertItem {
      border-left: 3px solid var(--red);
      padding: 8px 9px;
      background: rgba(255, 91, 106, .08);
      margin: 7px 0;
      border-radius: 5px;
      font-size: 12px
    }

    .recordItem {
      padding: 8px 0;
      border-bottom: 1px solid rgba(100, 190, 255, .12);
      font-size: 12px;
      cursor: pointer
    }

    .recordItem:hover {
      color: #fff;
      background: rgba(66, 183, 255, .08)
    }

    .toolsSmall {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 6px
    }

    .zoneActions {
      display: flex;
      gap: 6px;
      margin-top: 6px
    }

    .smallBtn {
      padding: 4px 7px;
      font-size: 11px;
      border-radius: 5px
    }

    @media(max-width:1100px) {
      .main {
        grid-template-columns: 320px 1fr
      }

      .right {
        display: none
      }

      .title {
        font-size: 22px
      }

      .brand,
      .nav {
        min-width: auto
      }
    }


/* V2.4：小屏滚动优化 */
.left,
.right {
  min-height: 0;
  overflow-y: auto;
  padding-right: 4px;
}

.left .panel,
.right .panel {
  flex-shrink: 0;
}

.left .panel[style*="flex:1"],
.right .panel[style*="flex:1"] {
  min-height: 220px;
  display: flex;
  flex-direction: column;
}

.left .panel[style*="flex:1"] .list,
.right .panel[style*="flex:1"] .list {
  flex: 1;
  max-height: none !important;
  min-height: 120px;
}

.list {
  scrollbar-width: thin;
}

.list::-webkit-scrollbar,
.left::-webkit-scrollbar,
.right::-webkit-scrollbar {
  width: 8px;
}

.list::-webkit-scrollbar-thumb,
.left::-webkit-scrollbar-thumb,
.right::-webkit-scrollbar-thumb {
  background: rgba(80, 190, 255, .38);
  border-radius: 8px;
}

.historyTimeRow {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: 8px;
}

.historyTimeRow label {
  color: var(--muted);
  font-size: 12px;
  display: grid;
  gap: 4px;
}

@media(max-height:760px) {
  .top {
    height: 62px;
  }

  .main {
    inset: 62px 0 0 0;
  }

  .panel {
    padding: 10px;
  }

  .p-title {
    margin-bottom: 7px;
  }

  .btnrow {
    margin: 6px 0;
  }
}

/* V2.5-V3.1：模块折叠、侧栏隐藏、科技态势面板、地图/实景切换、告警增强 */
.main.left-hidden {
  grid-template-columns: 0 1fr 360px;
}

.main.right-hidden {
  grid-template-columns: 330px 1fr 0;
}

.main.left-hidden.right-hidden {
  grid-template-columns: 0 1fr 0;
}

.main.left-hidden .left,
.main.right-hidden .right {
  display: none;
}

/* 左右侧栏隐藏按钮：改为小型悬浮胶囊，避免贴边后显示异常 */
.sideToggle {
  position: absolute;
  top: 50%;
  width: 34px;
  height: 46px;
  transform: translateY(-50%);
  border: 1px solid rgba(90, 200, 255, .42);
  border-radius: 18px;
  background: rgba(5, 20, 38, .72);
  color: #c8f1ff;
  z-index: 8;
  box-shadow: 0 0 18px rgba(66, 183, 255, .22);
  padding: 0;
  font-size: 24px;
  line-height: 1;
  display: grid;
  place-items: center;
  backdrop-filter: blur(8px);
}

.sideToggle:hover {
  background: rgba(15, 60, 96, .88);
  border-color: rgba(120, 220, 255, .75);
}

.leftToggle { left: 10px; }
.rightToggle { right: 10px; }

.panel {
  position: relative;
}

.panel.collapsed {
  padding-bottom: 9px;
}

.panel.collapsed > *:not(.p-title) {
  display: none !important;
}

.p-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.panelCollapseBtn {
  width: 24px;
  height: 24px;
  padding: 0;
  border-radius: 8px;
  background: rgba(20, 60, 100, .72);
  border: 1px solid rgba(90, 200, 255, .32);
  color: #bfeaff;
  font-size: 13px;
  line-height: 1;
  flex: 0 0 auto;
}

.hudPanel {
  position: absolute;
  top: 12px;
  left: 50%;
  width: min(620px, calc(100% - 84px));
  transform: translateX(-50%);
  z-index: 4;
  padding: 10px 14px 12px;
  border-radius: 14px;
  border: 1px solid rgba(94, 205, 255, .32);
  background:
    linear-gradient(135deg, rgba(9, 30, 54, .92), rgba(20, 45, 75, .76)),
    radial-gradient(circle at 50% 0%, rgba(66, 183, 255, .25), transparent 55%);
  box-shadow: 0 18px 40px rgba(0, 0, 0, .28), inset 0 0 28px rgba(120, 210, 255, .08);
  backdrop-filter: blur(10px);
  overflow: hidden;
}

.hudPanel::before,
.hudPanel::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.hudPanel::before {
  background-image: linear-gradient(90deg, transparent, rgba(111, 221, 255, .14), transparent);
  transform: translateX(-100%);
  animation: hudScan 4s linear infinite;
}

.hudPanel::after {
  border-radius: 14px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .04), inset 0 -20px 60px rgba(37, 167, 255, .07);
}

@keyframes hudScan {
  0% { transform: translateX(-100%); }
  55%, 100% { transform: translateX(100%); }
}

.hudHeader {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #6ee7ff;
  font-weight: 900;
  letter-spacing: 1px;
  text-shadow: 0 0 12px rgba(50, 190, 255, .8);
  margin-bottom: 8px;
}

.hudHeader em {
  margin-left: 10px;
  color: rgba(190, 230, 255, .62);
  font-size: 11px;
  font-style: normal;
  font-weight: 600;
  letter-spacing: 2px;
}

.hudIcon {
  width: 18px;
  height: 18px;
  display: inline-grid;
  place-items: center;
  border-radius: 50%;
  border: 1px solid rgba(80, 220, 255, .65);
  box-shadow: 0 0 12px rgba(68, 210, 255, .45);
}

.hudGrid {
  display: grid;
  grid-template-columns: 1fr 1px .68fr;
  gap: 8px;
  align-items: stretch;
}

.hudGroup {
  display: grid;
  grid-template-columns: repeat(4, minmax(54px, 1fr));
  gap: 8px;
}

.hudGroup:last-child {
  grid-template-columns: repeat(3, minmax(58px, 1fr));
}

.hudGroupTitle {
  grid-column: 1 / -1;
  color: #c8f1ff;
  font-size: 12px;
  font-weight: 800;
}

.hudDivider {
  background: linear-gradient(transparent, rgba(116, 210, 255, .38), transparent);
}

.hudMetric {
  min-height: 42px;
  padding: 6px 8px;
  border-radius: 12px;
  background: rgba(3, 18, 35, .34);
  border: 1px solid rgba(92, 210, 255, .14);
}

.hudMetric span {
  display: block;
  color: #a9bed8;
  font-size: 10px;
  margin-bottom: 3px;
}

.hudMetric b {
  display: block;
  color: #35f59c;
  font-size: 18px;
  line-height: 1;
  text-shadow: 0 0 12px rgba(57, 232, 143, .72);
}

.hudMetric.danger b {
  color: #ff6675;
  text-shadow: 0 0 12px rgba(255, 91, 106, .75);
}

.hudMetric.ok b {
  color: #35f59c;
  text-shadow: 0 0 12px rgba(57, 232, 143, .72);
}

.hudMetric.offline b {
  color: #ff6675;
  text-shadow: 0 0 12px rgba(255, 91, 106, .75);
}

.mapLayerSwitch {
  position: absolute;
  right: 16px;
  bottom: 16px;
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 74px;
  padding: 9px 12px;
  border-radius: 13px;
  background: rgba(5, 20, 35, .82);
  border: 1px solid rgba(68, 180, 255, .45);
  color: #dff6ff;
  box-shadow: 0 0 18px rgba(31, 151, 255, .22);
}

.mapLayerSwitch span {
  font-size: 17px;
}

.mapLayerSwitch em {
  font-size: 12px;
  font-style: normal;
}

@media(max-width:1250px) {
  .hudPanel {
    width: min(540px, calc(100% - 56px));
  }
  .hudGrid {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .hudDivider {
    display: none;
  }
}

@media(max-height:760px) {
  .hudPanel {
    padding: 10px 14px;
  }
  .hudHeader {
    margin-bottom: 8px;
  }
  .hudMetric {
    min-height: 46px;
    padding: 6px 8px;
  }
  .hudMetric b {
    font-size: 18px;
  }
}


/* V2.7：左侧收起修复、品牌化设备管理 */
.main {
  transition: grid-template-columns .22s ease;
}

/* 只收起左侧，右侧保持不动；保留 44px 边栏，避免 Grid 布局错乱 */
.main.left-collapsed {
  grid-template-columns: 44px 1fr 360px !important;
}

.main.left-collapsed .left {
  visibility: hidden;
  pointer-events: none;
  overflow: hidden;
  padding: 0;
}

/* 兼容旧类名：不再使用 display:none 的隐藏方式 */
.main.left-hidden {
  grid-template-columns: 44px 1fr 360px !important;
}

.main.left-hidden .left {
  visibility: hidden !important;
  display: flex !important;
  pointer-events: none;
  overflow: hidden;
  padding: 0;
}

/* 本版只保留左侧收起按钮，右侧按钮禁用隐藏 */
.rightToggle {
  display: none !important;
}

.sideToggle.leftToggle {
  left: 10px;
  width: 38px;
  height: 52px;
  border-radius: 14px;
  font-size: 19px;
  background: linear-gradient(180deg, rgba(6, 28, 52, .92), rgba(8, 44, 78, .74));
  border: 1px solid rgba(96, 208, 255, .58);
  box-shadow: 0 0 18px rgba(66, 183, 255, .26), inset 0 0 18px rgba(66, 183, 255, .08);
}

.main.left-collapsed .sideToggle.leftToggle,
.main.left-hidden .sideToggle.leftToggle {
  left: 8px;
}

.mapWrap {
  min-width: 0;
}

@media(max-width:1100px) {
  .main.left-collapsed,
  .main.left-hidden {
    grid-template-columns: 44px 1fr !important;
  }
}


/* V2.8：恢复小箭头风格，并补回右侧收起按钮 */
.main {
  transition: grid-template-columns .22s ease;
}

.main.left-collapsed {
  grid-template-columns: 44px 1fr 360px !important;
}

.main.right-collapsed {
  grid-template-columns: 330px 1fr 44px !important;
}

.main.left-collapsed.right-collapsed {
  grid-template-columns: 44px 1fr 44px !important;
}

.main.left-collapsed .left,
.main.right-collapsed .right,
.main.left-hidden .left,
.main.right-hidden .right {
  visibility: hidden !important;
  display: flex !important;
  pointer-events: none;
  overflow: hidden;
  padding: 0;
}

.main.left-hidden {
  grid-template-columns: 44px 1fr 360px !important;
}

.main.right-hidden {
  grid-template-columns: 330px 1fr 44px !important;
}

.main.left-hidden.right-hidden {
  grid-template-columns: 44px 1fr 44px !important;
}

.sideToggle,
.sideToggle.leftToggle,
.sideToggle.rightToggle {
  position: absolute;
  top: 50%;
  width: 32px;
  height: 42px;
  transform: translateY(-50%);
  border: 1px solid rgba(90, 200, 255, .42);
  border-radius: 16px;
  background: rgba(5, 20, 38, .72);
  color: #c8f1ff;
  z-index: 8;
  box-shadow: 0 0 16px rgba(66, 183, 255, .20);
  padding: 0;
  font-size: 24px;
  line-height: 1;
  display: grid !important;
  place-items: center;
  backdrop-filter: blur(8px);
}

.sideToggle:hover,
.sideToggle.leftToggle:hover,
.sideToggle.rightToggle:hover {
  background: rgba(15, 60, 96, .88);
  border-color: rgba(120, 220, 255, .75);
}

.sideToggle.leftToggle { left: 10px; }
.sideToggle.rightToggle { right: 10px; }

.main.left-collapsed .sideToggle.leftToggle,
.main.left-hidden .sideToggle.leftToggle {
  left: 7px;
}

.main.right-collapsed .sideToggle.rightToggle,
.main.right-hidden .sideToggle.rightToggle {
  right: 7px;
}

.mapWrap {
  min-width: 0;
}

@media(max-width:1100px) {
  .main.left-collapsed,
  .main.left-hidden {
    grid-template-columns: 44px 1fr !important;
  }
}


/* V3.0：地图源选择器 */
.mapSourceBox {
  position: absolute;
  right: 16px;
  bottom: 16px;
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 132px;
  padding: 8px 10px;
  border-radius: 13px;
  background: rgba(5, 20, 35, .86);
  border: 1px solid rgba(68, 180, 255, .45);
  color: #dff6ff;
  box-shadow: 0 0 18px rgba(31, 151, 255, .22);
  backdrop-filter: blur(8px);
}

.mapSourceBox span {
  font-size: 17px;
  line-height: 1;
}

.mapSourceBox select {
  width: 104px;
  padding: 4px 6px;
  border-radius: 8px;
  font-size: 12px;
  background: rgba(13, 32, 54, .9);
  border: 1px solid rgba(80, 180, 255, .38);
  color: #dff6ff;
}


/* V3.0：地图源标注开关 */
.mapSourceBox {
  gap: 8px;
}
.labelToggle,
.cacheToggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: #bfeaff;
  font-size: 12px;
  white-space: nowrap;
  user-select: none;
}
.labelToggle input,
.cacheToggle input {
  width: auto;
  margin: 0;
  accent-color: #42b7ff;
}
.cacheToggle input {
  accent-color: #36e690;
}
.labelToggle input:disabled + span,
.labelToggle:has(input:disabled) {
  opacity: .55;
}


/* V3.1：防控区闯入告警增强 */
.pilotDot {
  background: #ffd35a;
  box-shadow: 0 0 10px rgba(255, 211, 90, .8);
}

.alarmSettingRow {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid rgba(100, 190, 255, .14);
  font-size: 12px;
  color: #bfeaff;
}

.alarmSettingRow label {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
}

.alarmSettingRow input[type="checkbox"] {
  width: auto;
}

#alarmOverlay {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  display: none;
}

#alarmOverlay.active {
  display: block;
}

#alarmOverlay.active.alarm {
  animation: alarmFlash 1s infinite;
}

#alarmOverlay.active.warning {
  animation: warningFlash 1s infinite;
}

#alarmOverlay .alarmText {
  position: absolute;
  top: 88px;
  left: 50%;
  transform: translateX(-50%);
  padding: 12px 30px;
  border-radius: 999px;
  border: 1px solid rgba(255, 91, 106, .9);
  background: linear-gradient(90deg, rgba(120, 0, 0, .72), rgba(255, 91, 106, .42), rgba(120, 0, 0, .72));
  color: #fff;
  font-size: 22px;
  font-weight: 900;
  letter-spacing: 4px;
  text-shadow: 0 0 12px rgba(255, 255, 255, .7), 0 0 22px rgba(255, 0, 0, .9);
  box-shadow: 0 0 26px rgba(255, 0, 0, .55);
}

#alarmOverlay.warning .alarmText {
  border-color: rgba(255, 211, 90, .95);
  background: linear-gradient(90deg, rgba(120, 78, 0, .72), rgba(255, 211, 90, .42), rgba(120, 78, 0, .72));
  text-shadow: 0 0 12px rgba(255, 255, 255, .65), 0 0 22px rgba(255, 211, 90, .95);
  box-shadow: 0 0 26px rgba(255, 211, 90, .55);
}

@keyframes alarmFlash {
  0% {
    box-shadow:
      inset 0 0 0 8px rgba(255, 24, 40, .86),
      inset 0 0 90px 28px rgba(255, 24, 40, .22);
    background: rgba(255, 0, 0, .02);
  }
  50% {
    box-shadow:
      inset 0 0 0 24px rgba(255, 24, 40, .22),
      inset 0 0 140px 46px rgba(255, 0, 0, .10);
    background: rgba(255, 0, 0, .08);
  }
  100% {
    box-shadow:
      inset 0 0 0 8px rgba(255, 24, 40, .86),
      inset 0 0 90px 28px rgba(255, 24, 40, .22);
    background: rgba(255, 0, 0, .02);
  }
}


@keyframes warningFlash {
  0% {
    box-shadow:
      inset 0 0 0 6px rgba(255, 211, 90, .82),
      inset 0 0 80px 24px rgba(255, 211, 90, .18);
    background: rgba(255, 211, 90, .015);
  }
  50% {
    box-shadow:
      inset 0 0 0 18px rgba(255, 211, 90, .20),
      inset 0 0 120px 38px rgba(255, 211, 90, .08);
    background: rgba(255, 211, 90, .06);
  }
  100% {
    box-shadow:
      inset 0 0 0 6px rgba(255, 211, 90, .82),
      inset 0 0 80px 24px rgba(255, 211, 90, .18);
    background: rgba(255, 211, 90, .015);
  }
}


/* V3.4：细节修复 - 状态不换行、告警弹窗缩小、控件错位、防控区尺寸显示 */
.hudMetric b {
  white-space: nowrap;
  word-break: keep-all;
}

#hudStatus {
  font-size: 16px;
  letter-spacing: 0;
}

.hudGroup:last-child .hudMetric {
  min-width: 0;
}

#alarmOverlay .alarmText {
  top: 76px;
  padding: 8px 22px;
  font-size: 18px;
  letter-spacing: 2px;
  max-width: min(430px, 72vw);
  text-align: center;
}

.legend {
  bottom: 72px;
  left: 16px;
}

.leaflet-bottom.leaflet-left {
  bottom: 16px;
}

.zoneSize {
  display: inline-block;
  margin-top: 3px;
  color: #9fd5f5;
  font-size: 12px;
}

@media(max-height:760px) {
  #alarmOverlay .alarmText {
    top: 66px;
    font-size: 16px;
    padding: 7px 18px;
  }
}


/* V3.5：小屏幕地图控件专业适配（不改业务逻辑，只调整布局） */
.mapWrap {
  --map-control-gap: 12px;
}

.legend,
.toolbar,
.mapSourceBox {
  backdrop-filter: blur(10px);
}

.legend {
  align-items: center;
  border: 1px solid rgba(80, 190, 255, .24);
  box-shadow: 0 10px 26px rgba(0, 0, 0, .20);
}

.legend span {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
}

.legend em {
  font-style: normal;
}

.toolbar {
  align-items: center;
  box-shadow: 0 10px 26px rgba(0, 0, 0, .24);
}

.tool {
  min-width: 46px;
  padding: 2px 4px;
  border-radius: 8px;
  transition: background .18s ease, transform .18s ease;
}

.tool:hover {
  background: rgba(66, 183, 255, .16);
  transform: translateY(-1px);
}

.mapSourceBox {
  box-shadow: 0 10px 26px rgba(0, 0, 0, .24);
}

@media (max-width: 1500px), (max-height: 850px) {
  .legend {
    bottom: 106px !important;
    top: auto !important;
    left: 16px;
    gap: 8px;
    padding: 7px 10px;
    font-size: 11px;
    border-radius: 12px;
    max-width: min(360px, calc(100% - 28px));
    background: rgba(5, 20, 35, .76);
  }

  .legend .dot {
    width: 9px;
    height: 9px;
    margin-right: 4px;
  }

  .toolbar {
    bottom: 14px;
    left: 50%;
    gap: 4px;
    padding: 8px 10px;
    border-radius: 14px;
    background: rgba(5, 20, 35, .84);
  }

  .tool {
    min-width: 38px;
    font-size: 0;
    padding: 2px 5px;
  }

  .tool div {
    font-size: 22px;
    margin-bottom: 0;
    line-height: 1.05;
  }

  .mapSourceBox {
    right: 14px;
    bottom: 14px;
    gap: 8px;
    padding: 8px 10px;
    border-radius: 14px;
    background: rgba(5, 20, 35, .86);
  }

  .mapSourceBox select {
    width: 120px;
    font-size: 12px;
    padding: 5px 7px;
  }

  .labelToggle, .cacheToggle {
    gap: 4px;
    font-size: 12px;
  }

  .leaflet-bottom.leaflet-left {
    bottom: 54px;
  }

  .leaflet-control-zoom {
    border-radius: 10px;
    overflow: hidden;
  }
}

/* V3.12：新增业务模块工作区 */
.moduleWorkspace {
  position: absolute;
  inset: 12px;
  z-index: 9;
  display: none;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  border: 1px solid rgba(86, 190, 255, .42);
  border-radius: 12px;
  background:
    linear-gradient(135deg, rgba(5, 18, 34, .96), rgba(10, 40, 66, .94)),
    radial-gradient(circle at 100% 0%, rgba(57, 232, 143, .11), transparent 34%);
  box-shadow: 0 24px 80px rgba(0, 0, 0, .42), inset 0 0 32px rgba(66, 183, 255, .08);
  backdrop-filter: blur(12px);
  overflow: hidden;
}

.moduleWorkspace.active {
  display: flex;
}

.moduleHeader {
  display: grid;
  grid-template-columns: minmax(190px, 300px) 1fr;
  gap: 16px;
  align-items: center;
  padding: 16px 18px;
  border-bottom: 1px solid rgba(100, 190, 255, .18);
  background: rgba(3, 16, 31, .42);
}

.moduleTitle {
  font-size: 24px;
  font-weight: 900;
  color: #e8fbff;
  text-shadow: 0 0 14px rgba(66, 183, 255, .62);
}

.moduleSub {
  margin-top: 4px;
  color: #9fd5f5;
  font-size: 12px;
}

.moduleTabs {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  flex-wrap: wrap;
}

.moduleTabs button {
  padding: 8px 10px;
  border: 1px solid rgba(86, 190, 255, .22);
  background: rgba(13, 32, 54, .78);
  color: #dff6ff;
  white-space: nowrap;
}

.moduleTabs button.active {
  background: linear-gradient(135deg, #1e88ff, #13a48f);
  border-color: rgba(190, 246, 255, .62);
  box-shadow: 0 0 16px rgba(66, 183, 255, .28);
}

.moduleBody {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 16px 18px 20px;
}

.summaryGrid {
  display: grid;
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}

.summaryCard {
  min-height: 110px;
  padding: 14px;
  border: 1px solid rgba(80, 180, 255, .24);
  border-radius: 8px;
  background: rgba(16, 50, 82, .48);
  box-shadow: inset 0 0 24px rgba(66, 183, 255, .06);
}

.summaryCard span,
.summaryCard em {
  display: block;
  color: #9fd5f5;
  font-size: 12px;
  font-style: normal;
}

.summaryCard b {
  display: block;
  margin: 10px 0 8px;
  font-size: 30px;
  line-height: 1;
  color: #39e88f;
  text-shadow: 0 0 14px rgba(57, 232, 143, .62);
}

.moduleSplit {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.moduleSplit section,
.configGroup {
  min-width: 0;
  padding: 14px;
  border: 1px solid rgba(80, 180, 255, .2);
  border-radius: 8px;
  background: rgba(4, 19, 36, .46);
}

.moduleSplit h3,
.configGroup h3 {
  margin: 0 0 10px;
  font-size: 15px;
  color: #c8f1ff;
}

.filterBar,
.editPanel {
  display: grid;
  grid-template-columns: repeat(4, minmax(130px, 1fr)) auto;
  gap: 9px;
  align-items: end;
  margin-bottom: 12px;
  padding: 12px;
  border: 1px solid rgba(80, 180, 255, .18);
  border-radius: 8px;
  background: rgba(4, 19, 36, .38);
}

.filterBar.compact {
  grid-template-columns: minmax(180px, 320px) auto;
}

.filterBar label {
  display: grid;
  gap: 4px;
  color: #9fd5f5;
  font-size: 12px;
}

.editPanel {
  grid-template-columns: repeat(4, minmax(120px, 1fr));
}

.editPanel button {
  min-height: 36px;
}

.moduleResult {
  min-height: 160px;
}

.resultCount {
  margin: 4px 0 10px;
  color: #9fd5f5;
  font-size: 12px;
}

.dataTableWrap {
  max-width: 100%;
  overflow: auto;
  border: 1px solid rgba(80, 180, 255, .16);
  border-radius: 8px;
  background: rgba(3, 16, 31, .48);
}

.dataTable {
  width: 100%;
  min-width: 780px;
  border-collapse: collapse;
  font-size: 12px;
}

.dataTable th,
.dataTable td {
  padding: 10px 11px;
  border-bottom: 1px solid rgba(100, 190, 255, .12);
  text-align: left;
  vertical-align: top;
}

.dataTable th {
  position: sticky;
  top: 0;
  z-index: 1;
  color: #c8f1ff;
  background: rgba(9, 35, 60, .96);
}

.dataTable td {
  color: #dff6ff;
  word-break: break-word;
}

.dataTable tbody tr:hover {
  background: rgba(66, 183, 255, .08);
}

.moduleEmpty {
  min-height: 150px;
  display: grid;
  place-items: center;
  color: #8fb7cf;
  border: 1px dashed rgba(100, 190, 255, .22);
  border-radius: 8px;
  background: rgba(3, 16, 31, .28);
}

.stateTag {
  display: inline-flex;
  align-items: center;
  padding: 3px 7px;
  border-radius: 5px;
  font-size: 12px;
  white-space: nowrap;
}

.stateTag.ok {
  color: #58ffae;
  background: rgba(57, 232, 143, .16);
}

.stateTag.danger {
  color: #ff9aa4;
  background: rgba(255, 91, 106, .18);
}

.configGroup {
  margin-bottom: 12px;
}

.configRow {
  display: grid;
  grid-template-columns: minmax(160px, 260px) 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 9px 0;
  border-top: 1px solid rgba(100, 190, 255, .1);
}

.configRow label {
  color: #dff6ff;
  font-size: 13px;
}

.configRow label span {
  display: block;
  margin-top: 2px;
  color: #8fb7cf;
  font-size: 11px;
}

@media(max-width:1350px) {
  .moduleHeader,
  .moduleSplit {
    grid-template-columns: 1fr;
  }
  .moduleTabs {
    justify-content: flex-start;
  }
  .summaryGrid {
    grid-template-columns: repeat(2, minmax(150px, 1fr));
  }
  .filterBar,
  .editPanel {
    grid-template-columns: repeat(2, minmax(130px, 1fr));
  }
}

@media(max-width:760px) {
  .moduleWorkspace {
    inset: 8px;
  }
  .moduleHeader {
    padding: 12px;
  }
  .moduleBody {
    padding: 12px;
  }
  .summaryGrid,
  .filterBar,
  .editPanel,
  .configRow {
    grid-template-columns: 1fr;
  }
  .moduleTabs button {
    flex: 1 1 92px;
  }
}

/* 登录页 */
.loginPage {
  overflow: auto;
}

.loginShell {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 28px;
  background:
    radial-gradient(circle at 50% 18%, rgba(66, 183, 255, .22), transparent 34%),
    linear-gradient(180deg, rgba(4, 16, 31, .2), rgba(2, 10, 20, .66));
}

.loginBrand {
  position: fixed;
  top: 24px;
  left: 28px;
  display: flex;
  gap: 10px;
  align-items: center;
}

.loginBrand b {
  display: block;
  font-size: 18px;
  color: #e8fbff;
}

.loginBrand span {
  display: block;
  margin-top: 3px;
  color: #9fd5f5;
  font-size: 12px;
}

.loginBox {
  width: min(420px, 100%);
  padding: 28px;
  border: 1px solid rgba(86, 190, 255, .42);
  border-radius: 12px;
  background: rgba(8, 25, 45, .92);
  box-shadow: 0 24px 80px rgba(0, 0, 0, .36), inset 0 0 32px rgba(66, 183, 255, .08);
  backdrop-filter: blur(12px);
}

.loginBox h1 {
  margin: 0 0 22px;
  font-size: 28px;
  color: #e8fbff;
  text-shadow: 0 0 14px rgba(66, 183, 255, .62);
}

.loginBox label {
  display: grid;
  gap: 7px;
  margin-bottom: 14px;
  color: #bfe6ff;
  font-size: 13px;
}

.loginBox input {
  height: 42px;
}

.loginBox button {
  width: 100%;
  height: 42px;
  margin-top: 4px;
  font-size: 15px;
}

.loginMsg {
  min-height: 20px;
  margin-top: 12px;
  color: #ff9aa4;
  font-size: 13px;
  text-align: center;
}

.userBtn {
  max-width: 180px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 1280px), (max-height: 720px) {
  .legend {
    max-width: 230px;
    display: grid;
    grid-template-columns: repeat(3, auto);
    row-gap: 6px;
    column-gap: 8px;
  }

  .toolbar {
    gap: 2px;
    padding: 7px 8px;
  }

  .tool {
    min-width: 34px;
  }

  .tool div {
    font-size: 20px;
  }

  .mapSourceBox {
    padding: 7px 8px;
  }

  .mapSourceBox select {
    width: 106px;
  }

  .mapSourceBox > span {
    display: none;
  }
}

@media (max-width: 1150px) {
  .legend {
    top: auto !important;
    bottom: 108px !important;
    left: 12px;
    max-width: 170px;
    grid-template-columns: repeat(2, auto);
  }

  .mapSourceBox {
    right: 12px;
    bottom: 12px;
  }

  .toolbar {
    bottom: 70px;
  }
}


/* V3.6：图例恢复到底部，避开左下角缩放按钮 */
@media (max-width: 1500px), (max-height: 850px) {
  .legend {
    top: auto !important;
    bottom: 106px !important;
    left: 16px !important;
  }
}

@media (max-width: 1150px) {
  .legend {
    top: auto !important;
    bottom: 108px !important;
    left: 12px !important;
  }
}

/* V3.8：地图底部控件布局修复
   目标：+/- 缩放、图例、绘图工具栏、地图源控件四者互不重叠。
   不修改任何业务功能，只覆盖位置与尺寸。 */

/* 缩放按钮固定在左下角 */
.leaflet-bottom.leaflet-left {
  left: 18px !important;
  bottom: 22px !important;
  z-index: 700 !important;
}

.leaflet-control-zoom {
  margin: 0 !important;
  border-radius: 10px !important;
  overflow: hidden !important;
  box-shadow: 0 0 18px rgba(0, 0, 0, .28) !important;
}

/* 图例放在缩放按钮右侧，保持底部，不再跑到顶部 */
.legend {
  top: auto !important;
  left: 85px !important;
  bottom: 22px !important;
  right: auto !important;
  width: auto !important;
  max-width: 300px !important;
  display: grid !important;
  grid-template-columns: repeat(3, auto) !important;
  gap: 8px 12px !important;
  padding: 9px 12px !important;
  border-radius: 14px !important;
  background: rgba(5, 20, 35, .84) !important;
  border: 1px solid rgba(68, 180, 255, .35) !important;
  z-index: 650 !important;
  transform: none !important;
}

.legend span {
  display: inline-flex !important;
  align-items: center !important;
  white-space: nowrap !important;
  font-size: 12px !important;
  line-height: 1 !important;
}

.legend .dot,
.legend i.dot {
  flex: 0 0 auto !important;
  width: 10px !important;
  height: 10px !important;
  margin-right: 5px !important;
}

/* 绘图工具栏保持底部居中，宽度收紧，避免碰到左侧图例 */
.toolbar {
  top: auto !important;
  left: 50% !important;
  bottom: 24px !important;
  transform: translateX(-50%) !important;
  z-index: 660 !important;
  gap: 6px !important;
  padding: 8px 12px !important;
  border-radius: 15px !important;
  background: rgba(5, 20, 35, .86) !important;
}

.tool {
  min-width: 38px !important;
  font-size: 0 !important;
  padding: 2px 5px !important;
}

.tool div {
  font-size: 22px !important;
  margin-bottom: 0 !important;
  line-height: 1.05 !important;
}

/* 地图源控件固定右下角 */
.mapSourceBox,
.mapLayerSwitch {
  top: auto !important;
  right: 16px !important;
  bottom: 20px !important;
  left: auto !important;
  transform: none !important;
  z-index: 670 !important;
}

.mapSourceBox select {
  max-width: 150px !important;
}

/* 1366/1280 小屏进一步压缩 */
@media (max-width: 1500px), (max-height: 850px) {
  .leaflet-bottom.leaflet-left {
    left: 5px !important;
    bottom: 22px !important;
  }

  .legend {
    left: 46px !important;
    bottom: 22px !important;
    max-width: 240px !important;
    grid-template-columns: repeat(3, auto) !important;
    gap: 8px 10px !important;
  }

  .toolbar {
    bottom: 24px !important;
    padding: 8px 11px !important;
    gap: 5px !important;
  }

  .tool {
    min-width: 36px !important;
  }

  .mapSourceBox,
  .mapLayerSwitch {
    right: 14px !important;
    bottom: 20px !important;
  }
}

/* 更窄屏幕：图例上移一行，避免挤压中间工具栏 */
@media (max-width: 1200px) {
  .legend {
    left: 18px !important;
    bottom: 94px !important;
    max-width: 240px !important;
    grid-template-columns: repeat(3, auto) !important;
  }

  .toolbar {
    bottom: 24px !important;
  }

  .mapSourceBox,
  .mapLayerSwitch {
    right: 12px !important;
    bottom: 20px !important;
  }
}

/* 很小屏：地图源稍微上移，给工具栏留空间 */
@media (max-width: 980px) {
  .legend {
    left: 14px !important;
    bottom: 96px !important;
    max-width: 220px !important;
    grid-template-columns: repeat(2, auto) !important;
  }

  .toolbar {
    left: 50% !important;
    bottom: 20px !important;
    padding: 7px 8px !important;
  }

  .mapSourceBox,
  .mapLayerSwitch {
    right: 10px !important;
    bottom: 88px !important;
  }
}


/* V3.9：基于当前认可布局的小修复
   只处理：设备管理高度固定 + 最后一行滚动；红色告警改为柔和视野晕染。
   不修改地图底部控件布局：缩放、图例、绘图工具栏、地图源控件保持现状。 */

/* 设备管理面板固定高度，避免 RIDJSON 跳动把左侧整体撑大 */
.left > .panel:first-child {
  height: 220px !important;
  min-height: 220px !important;
  max-height: 220px !important;
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
}

/* 设备管理内部控件不被挤压 */
.left > .panel:first-child .p-title,
.left > .panel:first-child .inputrow,
.left > .panel:first-child .btnrow,
.left > .panel:first-child #status {
  flex: 0 0 auto !important;
}

/* 连接状态保持单行，避免长端口名把面板撑高 */
#status {
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* 最后一行数据独立滚动查看 */
#lastLine {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  max-height: 76px !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  margin-top: 4px !important;
  padding-right: 6px !important;
  word-break: break-all !important;
  line-height: 1.45 !important;
}

/* 设备管理滚动条样式 */
#lastLine::-webkit-scrollbar {
  width: 6px;
}

#lastLine::-webkit-scrollbar-thumb {
  background: rgba(80, 190, 255, .34);
  border-radius: 8px;
}

#lastLine {
  scrollbar-width: thin;
}

/* 小屏幕下设备面板略微压缩，保证下面模块还能显示 */
@media (max-width: 1500px), (max-height: 850px) {
  .left > .panel:first-child {
    height: 206px !important;
    min-height: 206px !important;
    max-height: 206px !important;
  }

  #lastLine {
    max-height: 62px !important;
  }
}

/* 红色告警：取消明显硬边框，改为“视野边缘发红”的柔和晕染 */
#alarmOverlay.active.alarm {
  display: block !important;
  animation: alarmVignetteSoft 1.15s ease-in-out infinite !important;
  box-shadow: none !important;
}

/* 黄色情况也柔化，不形成硬框 */
#alarmOverlay.active.warning {
  display: block !important;
  animation: warningVignetteSoft 1.15s ease-in-out infinite !important;
  box-shadow: none !important;
}

/* 使用多层径向渐变，只覆盖边缘约20%视野，中间保持清楚 */
@keyframes alarmVignetteSoft {
  0%, 100% {
    background:
      radial-gradient(ellipse at center,
        rgba(255, 0, 0, 0) 0%,
        rgba(255, 0, 0, 0) 58%,
        rgba(255, 35, 45, .10) 76%,
        rgba(255, 25, 35, .26) 100%),
      linear-gradient(90deg,
        rgba(255, 0, 0, .18) 0%,
        rgba(255, 0, 0, 0) 16%,
        rgba(255, 0, 0, 0) 84%,
        rgba(255, 0, 0, .18) 100%),
      linear-gradient(180deg,
        rgba(255, 0, 0, .16) 0%,
        rgba(255, 0, 0, 0) 18%,
        rgba(255, 0, 0, 0) 82%,
        rgba(255, 0, 0, .16) 100%);
    opacity: .95;
  }

  50% {
    background:
      radial-gradient(ellipse at center,
        rgba(255, 0, 0, 0) 0%,
        rgba(255, 0, 0, 0) 54%,
        rgba(255, 35, 45, .16) 74%,
        rgba(255, 20, 35, .40) 100%),
      linear-gradient(90deg,
        rgba(255, 0, 0, .28) 0%,
        rgba(255, 0, 0, 0) 20%,
        rgba(255, 0, 0, 0) 80%,
        rgba(255, 0, 0, .28) 100%),
      linear-gradient(180deg,
        rgba(255, 0, 0, .25) 0%,
        rgba(255, 0, 0, 0) 22%,
        rgba(255, 0, 0, 0) 78%,
        rgba(255, 0, 0, .25) 100%);
    opacity: 1;
  }
}

@keyframes warningVignetteSoft {
  0%, 100% {
    background:
      radial-gradient(ellipse at center,
        rgba(255, 211, 90, 0) 0%,
        rgba(255, 211, 90, 0) 60%,
        rgba(255, 211, 90, .10) 78%,
        rgba(255, 211, 90, .22) 100%);
  }

  50% {
    background:
      radial-gradient(ellipse at center,
        rgba(255, 211, 90, 0) 0%,
        rgba(255, 211, 90, 0) 56%,
        rgba(255, 211, 90, .16) 76%,
        rgba(255, 211, 90, .34) 100%);
  }
}

/* 告警文字保持可见，但更小更像提示，不抢占中心态势 */
#alarmOverlay .alarmText {
  top: 76px !important;
  padding: 8px 22px !important;
  font-size: 18px !important;
  letter-spacing: 2px !important;
  border-width: 1px !important;
  box-shadow: 0 0 28px rgba(255, 0, 0, .38) !important;
}


/* 历史轨迹聚合与回放控制 */
.replayControl{margin-top:8px;padding:8px;border:1px solid rgba(80,180,255,.25);border-radius:8px;background:rgba(4,18,35,.45)}
.replayControl>div{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-bottom:6px}
.replayControl input[type=range]{width:100%}
.recordItem.selected{border-color:rgba(255,211,90,.9);box-shadow:0 0 14px rgba(255,211,90,.28);background:rgba(255,211,90,.09)}
.recordItem .miniMeta{font-size:12px;color:#9cc6d8;line-height:1.55;margin-top:3px}
.recordItem .actionLine{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap}
.recordItem .actionLine button{padding:3px 8px;font-size:12px}


/* V3.10：右侧面板滚动与记录回放区优化
   目标：防控区和告警中心展开时，记录检索/回放仍可通过右侧总滚动条完整查看。 */
.main {
  min-height: 0 !important;
}

.right {
  max-height: calc(100vh - 94px) !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  padding-right: 8px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
}

.right > .panel {
  flex: 0 0 auto !important;
}

/* 上方两个模块内部列表自己滚动，避免把记录回放挤到只剩标题 */
#zoneList {
  max-height: 150px !important;
  min-height: 44px !important;
  overflow-y: auto !important;
}

#alertList {
  max-height: 140px !important;
  min-height: 44px !important;
  overflow-y: auto !important;
}

/* 记录回放模块保持完整高度；当右侧内容超出时，滚动的是整条右栏 */
.right > .panel.historyPanel {
  flex: 0 0 auto !important;
  min-height: 430px !important;
  overflow: visible !important;
}

.right > .panel.historyPanel #historyList {
  max-height: 230px !important;
  min-height: 160px !important;
  overflow-y: auto !important;
}

.right > .panel.historyPanel .btnrow {
  gap: 6px !important;
}

.right > .panel.historyPanel .btnrow button {
  padding: 7px 9px !important;
}

.historyTimeRow input[type="datetime-local"] {
  min-width: 0 !important;
  font-size: 12px !important;
}

@media (max-width: 1500px), (max-height: 850px) {
  .right {
    max-height: calc(100vh - 86px) !important;
  }
  #zoneList {
    max-height: 120px !important;
  }
  #alertList {
    max-height: 112px !important;
  }
  .right > .panel.historyPanel {
    min-height: 405px !important;
  }
  .right > .panel.historyPanel #historyList {
    max-height: 205px !important;
    min-height: 145px !important;
  }
}

/* V3.13 设备接入面板优化 */
.accessPanel .accessTypeRow{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.accessPanel .accessTypeRow select{flex:1}
.accessPanel .deviceLimit{font-size:12px;color:var(--muted);white-space:nowrap;border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:5px 8px;background:rgba(255,255,255,.04)}
.accessPanel .accessBox{border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:8px;background:rgba(2,12,32,.35)}
.accessPanel .btnrow button{font-size:12px;padding:7px 8px}
#tcpDeviceList .dataTable td{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* V3.15 顶部按钮压缩：保证平台标题视觉居中 */
.top{position:relative;padding:0 24px!important;}
.titleBox{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;}
.nav{gap:8px!important;min-width:auto!important;max-width:46vw;}
.nav .btn{padding:6px 11px!important;border-radius:16px!important;font-size:14px!important;white-space:nowrap;line-height:1.2;}
.nav .userBtn{max-width:170px;overflow:hidden;text-overflow:ellipsis;}
@media (max-width:1500px){.nav .btn{padding:5px 9px!important;font-size:13px!important}.brand{min-width:210px!important}.title{font-size:26px!important}}

.mapCacheStatus{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:8px 0 0;color:#9fd5f5;font-size:13px}.cacheBadge{border:1px solid rgba(80,180,255,.35);border-radius:999px;padding:4px 10px;background:rgba(10,40,70,.45)}


/* V3.17：地图管理与底部控件细节优化 */
.moduleWorkspace {
  z-index: 2200 !important;
}
.moduleWorkspace.previewFade {
  opacity: .12 !important;
  pointer-events: none !important;
  transition: opacity .18s ease;
}
.mapSourceBox {
  z-index: 680 !important;
  gap: 5px !important;
  padding: 6px 8px !important;
  border-radius: 12px !important;
  min-width: auto !important;
}
.mapSourceBox > span {
  font-size: 13px !important;
}
.mapSourceBox select {
  width: 92px !important;
  max-width: 92px !important;
  font-size: 11px !important;
  padding: 4px 5px !important;
}
.labelToggle,
.cacheToggle {
  font-size: 11px !important;
  gap: 3px !important;
}
.labelToggle span,
.cacheToggle span {
  font-size: 11px !important;
  line-height: 1 !important;
}
.labelToggle input,
.cacheToggle input {
  width: 13px !important;
  height: 13px !important;
}
.compactMapGroup {
  padding: 12px 14px !important;
  margin-bottom: 12px !important;
}
.compactMapGroup h3 {
  margin-bottom: 8px !important;
}
.compactEditPanel {
  gap: 10px !important;
}
.compactEditPanel button,
.compactEditPanel select,
.compactEditPanel input {
  min-height: 36px !important;
}
.wideInput {
  min-width: min(520px, 100%) !important;
}
.mapHintLine {
  margin-top: 8px;
  padding: 8px 10px;
  border: 1px dashed rgba(70, 170, 230, .28);
  border-radius: 9px;
  color: #9fc9e6;
  font-size: 12px;
  line-height: 1.45;
  background: rgba(5, 20, 35, .34);
}
.compactMapResult {
  margin-top: 8px !important;
}
.compactMapResult .cacheBadge {
  font-size: 11px !important;
  padding: 4px 7px !important;
}
@media (max-width: 1500px), (max-height: 850px) {
  .mapSourceBox {
    right: 12px !important;
    bottom: 18px !important;
    gap: 4px !important;
    padding: 6px 7px !important;
  }
  .mapSourceBox select {
    width: 88px !important;
    font-size: 11px !important;
  }
  .labelToggle, .cacheToggle,
  .labelToggle span, .cacheToggle span {
    font-size: 11px !important;
  }
}


/* V3.23：态势卡片接入方式文字缩小，避免 USB/蓝牙/网口多字时溢出 */
#hudSerialMetric { overflow: hidden; }
#hudSerialMetric b, #hudSerial {
  font-size: 14px !important;
  letter-spacing: 0 !important;
  line-height: 1.08 !important;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
#hudStatus { font-size: 15px !important; }
.hudGroup:last-child .hudMetric { padding-left: 6px; padding-right: 6px; }

/* V3.28 自适应窗口布局与多用户/设备管理表单优化 */
.responsiveEdit{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;align-items:center}.responsiveEdit button{min-height:42px}.dataTableWrap{overflow:auto}.dataTable th,.dataTable td{white-space:normal;word-break:break-word}.resultCount{margin:10px 0;color:#bfefff}.stateTag.warn{background:rgba(255,211,90,.16);border-color:#ffd35a;color:#ffd35a}.stateTag.ok{background:rgba(57,232,143,.16);border-color:#39e88f;color:#39e88f}
@media (max-width: 1400px){.nav .btn{padding:8px 12px;font-size:14px}.titleBox{left:50%;transform:translateX(-50%)}.hudPanel{max-width:86%;}.hudMetric b{font-size:24px}.left,.right{width:310px}.mapSourceBox{transform:scale(.9);transform-origin:right bottom}}
@media (max-width: 1100px){.main{grid-template-columns:1fr}.left,.right{position:absolute;z-index:1200;width:min(360px,90vw);max-height:calc(100vh - 90px);overflow:auto;background:rgba(3,20,36,.94)}.left{left:8px;top:82px}.right{right:8px;top:82px}.mapWrap{grid-column:1}.hudPanel{left:16px;right:16px;max-width:none}.hudGrid{gap:12px}.moduleWorkspace.active{left:16px;right:16px;top:86px;bottom:16px}.moduleTabs{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));display:grid}.top{gap:8px}.brand{min-width:150px}.nav{gap:6px}.nav .btn{font-size:13px;padding:7px 10px}.title{font-size:24px}}
@media (max-width: 760px){.top{height:auto;min-height:72px;align-items:flex-start;padding-top:8px}.brand{display:none}.titleBox{position:static;transform:none;margin-left:8px}.nav{flex-wrap:wrap;justify-content:flex-end}.main{top:78px}.hudPanel{transform:scale(.86);transform-origin:top center;left:4px;right:4px}.legend{left:10px;bottom:78px}.toolbar{bottom:20px;left:50%;transform:translateX(-50%) scale(.85)}.mapSourceBox{right:10px;bottom:74px}.moduleWorkspace.active{top:78px}.filterBar,.editPanel{grid-template-columns:1fr!important}.dataTable{font-size:12px}.moduleTitle{font-size:24px}}

/* V3.29 设备台账/网络配置/GNSS诊断增强 */
.ledgerFilter{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;align-items:center}.tag.ok{background:rgba(57,232,143,.18);color:#58ffae;border:1px solid rgba(57,232,143,.35)}.tag.off{background:rgba(255,95,116,.16);color:#ff7b8c;border:1px solid rgba(255,95,116,.35)}.moduleResult .dataTable{min-width:1200px}.moduleResult .smallBtn{margin:2px}

/* V3.35 Cloud Commercial sidebar menu */
.sideMenu{padding:8px 0;background:rgba(6,18,32,.82);border:1px solid rgba(59,130,246,.22)}
.sideMenu .menuItem{height:34px;display:flex;align-items:center;gap:10px;padding:0 12px;color:#b8c7d9;border-radius:8px;margin:3px 8px;cursor:pointer;font-size:14px}
.sideMenu .menuItem:hover,.sideMenu .menuItem.active{background:rgba(59,130,246,.18);color:#eaf4ff}
.sideMenu .menuItem span{white-space:nowrap}


/* V3.35.1 Full Fix: 云平台商用显示优化 */
.sideMenu{max-height:calc(100vh - 100px);overflow-y:auto;scrollbar-width:thin;}
.sideMenu::-webkit-scrollbar{width:6px}.sideMenu::-webkit-scrollbar-thumb{background:rgba(90,170,255,.35);border-radius:999px}
.tag.off,.tag.red{background:rgba(255,95,116,.16);color:#ff7b8c;border:1px solid rgba(255,95,116,.35)}
.summaryCard.ok b,.summaryCard.ok em{color:#58ffae;text-shadow:0 0 12px rgba(57,232,143,.35)}
.summaryCard.danger b,.summaryCard.danger em{color:#ff7b8c;text-shadow:0 0 12px rgba(255,91,106,.35)}
.droneListItem{align-items:flex-start}.droneInfo{line-height:1.75}.miniIconBtn{margin-left:4px;padding:2px 6px;border-radius:6px;border:1px solid rgba(91,170,255,.45);background:rgba(40,120,220,.18);color:#d8ecff;cursor:pointer;font-size:11px}.miniIconBtn:hover{background:rgba(40,120,220,.35)}
.toastMsg{position:fixed;left:50%;top:78px;transform:translateX(-50%);z-index:9999;background:rgba(5,22,40,.94);border:1px solid rgba(91,170,255,.45);box-shadow:0 12px 35px rgba(0,0,0,.35);color:#dff3ff;padding:8px 14px;border-radius:10px;opacity:0;pointer-events:none;transition:.2s}.toastMsg.show{opacity:1}
.hudMetric.online b,.hudMetric.ok b{color:#35f59c}.hudMetric.offline b,.hudMetric.danger b{color:#ff6675}

/* V337 cloud station fixes */
.stationToggleBox{position:absolute;right:18px;top:92px;z-index:900;background:rgba(7,28,50,.82);border:1px solid rgba(80,170,255,.45);border-radius:10px;color:#d8f4ff;padding:8px 12px;font-size:13px;backdrop-filter:blur(8px);box-shadow:0 8px 24px rgba(0,0,0,.25)}
.stationToggleBox input{vertical-align:middle;margin-right:6px}.nowrap{white-space:nowrap}.moduleResult table td,.moduleResult table th{white-space:nowrap}.moduleResult{overflow:auto}


/* V338 空域管理版 */
.airSettingGrid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px;margin:12px 0}.airSettingGrid label{display:flex;flex-direction:column;gap:6px;font-weight:700;color:#1f2a37}.airSettingGrid select{height:38px;border:1px solid rgba(70,125,190,.35);border-radius:10px;padding:0 10px;background:#fff}.rankList{display:flex;flex-direction:column;gap:10px;padding:8px 4px}.rankItem{position:relative;display:grid;grid-template-columns:1fr 70px;align-items:center;gap:8px;padding:10px 12px;border:1px solid rgba(65,120,190,.18);border-radius:12px;overflow:hidden;background:rgba(255,255,255,.72)}.rankItem span,.rankItem b{position:relative;z-index:2}.rankItem i{position:absolute;left:0;bottom:0;height:3px;background:linear-gradient(90deg,#2f7dff,#63c7ff);border-radius:4px}.hourStats{display:flex;flex-direction:column;gap:8px;padding:8px 4px}.hourStats>div{display:grid;grid-template-columns:52px 1fr 48px;gap:8px;align-items:center}.hourStats em{height:10px;background:rgba(90,120,150,.16);border-radius:999px;overflow:hidden}.hourStats i{display:block;height:100%;background:linear-gradient(90deg,#2f7dff,#6ee7b7);border-radius:999px}.airspaceCards .summaryCard b{font-size:28px}@media(max-width:1200px){.airSettingGrid{grid-template-columns:1fr 1fr}}@media(max-width:760px){.airSettingGrid{grid-template-columns:1fr}}


/* V338.1 UI polish: readable settings, compact forms, bottom detector toggle */
.nav .gearBtn,.moduleTabs .gearTab{font-size:20px;min-width:46px;text-align:center;background:linear-gradient(135deg,rgba(27,145,255,.92),rgba(42,204,178,.9));}
.moduleTabs{align-items:center;gap:10px}.moduleTabs button{white-space:nowrap}.moduleTabs .gearTab{margin-left:auto;color:#fff;border-color:rgba(89,210,255,.55)}
.configGroup h3,.moduleBody h3{color:#e9fbff;font-weight:800;letter-spacing:.5px}.configGroup p,.compactIntro p{color:#bfe6ff;line-height:1.7;margin:8px 0 0}.muted{color:#9fc4df!important}
.settingsPanel{max-width:1100px}.settingRows{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:14px 18px;margin-top:14px}.settingRows label{display:grid;grid-template-columns:82px minmax(120px,1fr);align-items:center;gap:10px;color:#d9f3ff;font-weight:700}.settingRows label>span{color:#dff7ff;text-shadow:0 0 8px rgba(70,180,255,.22)}
.settingRows select,.settingRows input,.filterBar input,.filterBar select,.filterBar label input{height:42px;min-height:42px;border-radius:10px;border:1px solid rgba(75,166,236,.45);background:rgba(6,30,53,.92);color:#f0fbff;font-weight:700;padding:0 12px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.03)}
.settingRows select option{background:#08223a;color:#f0fbff}.numberUnit{display:flex;align-items:center;max-width:150px}.numberUnit input{width:92px;border-radius:10px 0 0 10px}.numberUnit em{height:42px;display:grid;place-items:center;padding:0 12px;background:rgba(39,126,214,.22);border:1px solid rgba(75,166,236,.45);border-left:0;border-radius:0 10px 10px 0;color:#cfefff;font-style:normal;font-weight:800}
.compactActions{margin-top:16px}.compactActions button{min-width:110px}.filterBar{grid-template-columns:minmax(180px,1fr) 190px 190px 160px 120px!important;gap:12px}.filterBar label{display:grid;gap:4px;color:#bfe6ff;font-weight:700}.summaryCard b{line-height:1.1}.summaryCard em{color:#bfe6ff}.dataTable td,.dataTable th{color:#ddf5ff}.moduleEmpty{color:#b7d9ee!important}.rankItem span,.rankItem b,.hourStats span,.hourStats b{color:#ddf5ff}
.stationToggleBox{right:260px!important;top:auto!important;bottom:26px!important;padding:7px 12px!important;display:flex;align-items:center;gap:6px;white-space:nowrap}.stationToggleBox label{display:flex;align-items:center;gap:6px;margin:0;color:#e9fbff;font-weight:800}.stationToggleBox input{margin:0!important}.stationToggleBox span{display:inline-block;min-width:3em}
@media (max-width: 1200px){.settingRows{grid-template-columns:repeat(2,minmax(220px,1fr))}.filterBar{grid-template-columns:1fr 1fr!important}.stationToggleBox{right:20px!important;bottom:96px!important}}
@media (max-width: 760px){.settingRows{grid-template-columns:1fr}.settingRows label{grid-template-columns:76px 1fr}.filterBar{grid-template-columns:1fr!important}.moduleTabs .gearTab{margin-left:0}}

/* V338.2 combined UI + heatmap refinement */
.refinedSettings{max-width:1180px;margin:0 auto}.compactSettingRows{grid-template-columns:repeat(3,minmax(220px,1fr));gap:12px}.compactSettingRows label{min-height:auto}.compactSettingRows label span{font-size:15px;color:#eaf8ff}.compactSettingRows label small,.settingRows label small{display:none}.settingHint{margin:12px 0 4px;color:#9fc7dc;font-size:14px}.slimResult{min-height:0!important;border:0!important;padding:0!important}.heatPointIcon{pointer-events:none}.compactIntro{padding:18px!important}.moduleSplit section{min-height:260px}.configGroup .muted{color:#9fc7dc}.moduleResult{min-height:0}
@media(max-width:900px){.compactSettingRows{grid-template-columns:1fr}}


/* V338.3 UI cleanup: 系统设置恢复基础配置与地图配置，齿轮样式统一，不再常亮 */
.nav .gearBtn,
.moduleTabs .gearTab{
  font-size:14px!important;
  min-width:auto!important;
  text-align:center!important;
  background:rgba(10,35,58,.72)!important;
  color:#dcefff!important;
  border:1px solid rgba(80,170,255,.35)!important;
  box-shadow:none!important;
}
.nav .gearBtn:hover,
.moduleTabs .gearTab:hover{
  background:rgba(28,95,150,.48)!important;
  border-color:rgba(89,210,255,.55)!important;
}
.moduleTabs button.active,
.moduleTabs .gearTab.active{
  background:linear-gradient(135deg,#258dff,#1fc0b2)!important;
  color:#fff!important;
  border-color:rgba(117,220,255,.65)!important;
}
.settingsLayout{display:flex;flex-direction:column;gap:14px;max-width:1280px;margin:0 auto}.sysCard{padding:16px 18px!important}.sysCard h3{margin:0 0 12px!important}.sysGrid{display:grid;gap:12px 16px}.sysGrid.oneCol{grid-template-columns:1fr}.sysGrid.twoCol{grid-template-columns:repeat(2,minmax(260px,1fr))}.sysGrid.threeCol{grid-template-columns:repeat(3,minmax(220px,1fr))}.sysGrid label{display:grid;grid-template-columns:116px minmax(140px,1fr);align-items:center;gap:10px;color:#e8f7ff;font-weight:800}.sysGrid label>span{color:#dff4ff}.sysGrid input,.sysGrid select{height:40px;min-height:40px;border-radius:10px;border:1px solid rgba(75,166,236,.45);background:rgba(6,30,53,.92);color:#f0fbff;font-weight:700;padding:0 12px}.sysGrid select option{background:#08223a;color:#f0fbff}.sysHint{margin-top:10px;color:#9fc7dc;font-size:13px}.sysActions{display:flex;gap:10px;flex-wrap:wrap;margin-top:2px}.sysActions button{min-width:120px}.settingsLayout .numberUnit{max-width:190px}.settingsLayout .numberUnit select{width:92px;border-radius:10px 0 0 10px}.settingsLayout .numberUnit input{width:92px;border-radius:10px 0 0 10px}.settingsLayout .numberUnit em{height:40px;display:grid;place-items:center;padding:0 12px;background:rgba(39,126,214,.22);border:1px solid rgba(75,166,236,.45);border-left:0;border-radius:0 10px 10px 0;color:#cfefff;font-style:normal;font-weight:800}.compactIntro p{max-width:850px}.moduleSplit section{min-height:auto!important}.compactMapGroup .mapHintLine,.sysHint{line-height:1.5}.filterBar{align-items:end}.configGroup{overflow:hidden}
@media(max-width:1100px){.sysGrid.twoCol,.sysGrid.threeCol{grid-template-columns:1fr 1fr}.sysGrid label{grid-template-columns:104px 1fr}}
@media(max-width:760px){.sysGrid.twoCol,.sysGrid.threeCol{grid-template-columns:1fr}.sysGrid label{grid-template-columns:96px 1fr}.sysActions button{flex:1}.nav .gearBtn,.moduleTabs .gearTab{font-size:13px!important}}

/* V339 登录验证码、侧边栏与侦测器列表优化 */
.loginBox .captchaRow{display:grid;grid-template-columns:1fr 116px;gap:8px;align-items:center}
.loginBox .captchaRow input{width:100%}
.loginBox .captchaRow button{height:42px;padding:0 10px;border-radius:10px;background:rgba(40,120,220,.28);border:1px solid rgba(91,170,255,.45);color:#dff3ff;font-weight:900;cursor:pointer}
.loginBox .captchaRow button:hover{background:rgba(40,120,220,.45)}
.topActions{min-width:220px;gap:8px}.topActions .gearBtn{min-width:40px;text-align:center;font-size:18px;line-height:18px}
.left{min-height:0}.left .sideMenu{flex:0 0 auto;max-height:260px;overflow-y:auto}.left .detectorPanel{flex:0 0 auto;max-height:220px;overflow:hidden;display:flex;flex-direction:column}.detectorList{overflow:auto;display:flex;flex-direction:column;gap:8px;padding-right:2px;min-height:42px}.detectorItem{display:grid;grid-template-columns:30px 1fr auto;gap:8px;align-items:start;padding:9px 8px;border-radius:10px;background:rgba(12,43,76,.48);border:1px solid rgba(80,170,255,.18);cursor:pointer}.detectorItem:hover{background:rgba(30,95,155,.34);border-color:rgba(80,170,255,.42)}.detectorIcon{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:rgba(55,135,255,.2);border:1px solid rgba(115,190,255,.35)}.detectorInfo{font-size:12px;line-height:1.65;color:#bfe4ff;min-width:0}.detectorInfo b{font-size:14px;color:#effcff}.detectorInfo span{word-break:break-all}.left>.panel[style*="flex:1"]{min-height:180px;flex:1 1 auto!important}.left>.panel[style*="flex:1"] .list{height:100%;overflow:auto}
@media (max-height: 760px){.left .sideMenu{max-height:220px}.left .detectorPanel{max-height:190px}.sideMenu .menuItem{height:30px;margin:2px 8px}}
@media (max-width: 1100px){.left{max-height:calc(100vh - 96px)!important;overflow:auto!important}.left .sideMenu{max-height:none}.left .detectorPanel{max-height:230px}.topActions{min-width:auto}.nav.topActions{flex-wrap:nowrap}}

/* V3.39.1 UI compact fix: table width, visible scrollbars, query layout, device hints, sidebar */
.main{grid-template-columns:300px 1fr 350px;gap:8px;padding:10px}
.left{min-width:0}.left .panel{padding:10px}.sideMenu .menuItem{height:31px;margin:2px 6px;padding:0 10px;font-size:14px}.left .sideMenu{max-height:238px}.left .detectorPanel{max-height:190px}.detectorItem{padding:7px 8px;grid-template-columns:26px 1fr auto}.detectorIcon{width:24px;height:24px}.detectorInfo{font-size:11.5px;line-height:1.55}.left>.panel[style*="flex:1"]{min-height:210px}
.moduleWorkspace.active{overflow:hidden}.moduleBody{overflow:auto}.moduleResult{max-height:calc(100vh - 270px);overflow:auto;padding-bottom:8px;scrollbar-gutter:stable both-edges}.moduleResult .dataTableWrap{max-height:calc(100vh - 315px);overflow:auto;border-radius:8px;scrollbar-gutter:stable both-edges}.dataTable{table-layout:fixed;width:100%;min-width:900px}.moduleResult .dataTable{min-width:900px}.dataTable th,.dataTable td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:9px 10px}.dataTable th{position:sticky;top:0;z-index:3}.dataTableWrap::-webkit-scrollbar,.moduleResult::-webkit-scrollbar{height:12px;width:12px}.dataTableWrap::-webkit-scrollbar-thumb,.moduleResult::-webkit-scrollbar-thumb{background:rgba(88,180,255,.55);border-radius:999px}.dataTableWrap::-webkit-scrollbar-track,.moduleResult::-webkit-scrollbar-track{background:rgba(6,28,50,.65);border-radius:999px}
/* common column compression */
.dataTable th:nth-child(1),.dataTable td:nth-child(1){width:150px}.dataTable th:nth-child(2),.dataTable td:nth-child(2){width:220px}.dataTable th:nth-child(3),.dataTable td:nth-child(3){width:160px}.dataTable th:nth-child(4),.dataTable td:nth-child(4){width:170px}.dataTable th:nth-child(5),.dataTable td:nth-child(5){width:80px}.dataTable th:nth-child(6),.dataTable td:nth-child(6){width:80px}.dataTable th:nth-child(7),.dataTable td:nth-child(7){width:80px}.dataTable th:nth-child(8),.dataTable td:nth-child(8){width:210px}
.filterBar{gap:10px!important}.filterBar.recordsFilter{grid-template-columns:minmax(220px,1fr) 200px 200px 150px 120px!important}.filterBar.alarmFilter{grid-template-columns:minmax(210px,1fr) 190px 200px 200px 120px 120px!important}.filterBar button{height:42px;min-width:100px}.filterBar label{min-width:0}.filterBar input,.filterBar select{min-width:0}
.deviceHint{margin-top:10px;padding:10px 14px;border:1px solid rgba(76,170,236,.26);border-radius:10px;background:linear-gradient(90deg,rgba(16,61,96,.42),rgba(9,35,60,.18));color:#ccefff;line-height:1.55;font-size:13px}.deviceHint b{color:#f4fbff}.configGroup{padding:14px!important}.configGroup h3{margin-bottom:10px!important}.responsiveEdit{gap:9px}.responsiveEdit input,.responsiveEdit select,.responsiveEdit button{height:38px;min-height:38px}
.rankItem{background:rgba(14,48,78,.68)!important;border-color:rgba(72,172,235,.28)!important;color:#e6f8ff!important;padding:9px 12px}.rankItem i{height:4px;background:linear-gradient(90deg,#2494ff,#64e6c2)!important}.rankItem span,.rankItem b{color:#e6f8ff!important}.summaryCard.normal{background:rgba(16,50,82,.58)}.airspaceCards .summaryCard.normal b{color:#62eaff;text-shadow:0 0 12px rgba(68,200,255,.3)}
@media(max-width:1400px){.main{grid-template-columns:285px 1fr 330px}.left .sideMenu{max-height:225px}.filterBar.recordsFilter{grid-template-columns:minmax(190px,1fr) 185px 185px 130px 115px!important}.filterBar.alarmFilter{grid-template-columns:minmax(170px,1fr) 170px 185px 185px 110px 110px!important}.moduleTabs{gap:7px}.moduleTabs button{padding:8px 9px}}
@media(max-width:1100px){.main{grid-template-columns:1fr}.left,.right{width:min(320px,88vw)!important}.filterBar.recordsFilter,.filterBar.alarmFilter{grid-template-columns:1fr 1fr!important}.moduleResult{max-height:calc(100vh - 330px)}.moduleResult .dataTableWrap{max-height:calc(100vh - 370px)}}
@media(max-width:760px){.filterBar.recordsFilter,.filterBar.alarmFilter{grid-template-columns:1fr!important}.main{padding:8px}.moduleResult .dataTable{min-width:760px}.left,.right{width:min(300px,92vw)!important}}

/* login input emergency fix */
.login-card,
.login-box,
.login-panel {
  position: relative !important;
  z-index: 10 !important;
}

.login-card input,
.login-box input,
.login-panel input,
input[name="username"],
#username,
input[name="password"],
#password {
  pointer-events: auto !important;
  user-select: text !important;
  position: relative !important;
  z-index: 999 !important;
}

/* ===== v338.4 UI精修：侧栏压缩、汇总表格、HUD防闪 ===== */
.main{grid-template-columns:290px 1fr 340px !important;}
.main.left-hidden{grid-template-columns:44px 1fr 340px !important;}
.main.right-hidden{grid-template-columns:290px 1fr 44px !important;}
.main.left-hidden.right-hidden{grid-template-columns:44px 1fr 44px !important;}
.left,.right{overflow:auto;scrollbar-gutter:stable;}
.left{gap:7px;}
.left .panel{padding:10px !important;}
.left .panel .list,.left .list{padding-right:2px;}
.listItem,.droneListItem{box-sizing:border-box;width:100%;margin-left:0;margin-right:0;}
.droneInfo{min-width:0;}
.droneInfo b,.droneInfo span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom;}
.left::-webkit-scrollbar,.right::-webkit-scrollbar{width:8px;height:8px}.left::-webkit-scrollbar-thumb,.right::-webkit-scrollbar-thumb{background:rgba(88,180,255,.5);border-radius:999px}.left::-webkit-scrollbar-track,.right::-webkit-scrollbar-track{background:rgba(6,28,50,.35)}

.moduleSplit{grid-template-columns:1fr 1fr;gap:14px;align-items:start;}
.moduleSplit section{overflow:hidden;}
.moduleSplit section .dataTableWrap{overflow:auto;max-height:330px;}
.moduleSplit section .dataTable{table-layout:fixed;width:100%;min-width:0;font-size:12px;}
.moduleSplit section .dataTable th,.moduleSplit section .dataTable td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-break:normal;padding:8px 8px;}
.moduleSplit section .dataTable th:nth-child(1),.moduleSplit section .dataTable td:nth-child(1){width:142px;}
.moduleSplit section .dataTable th:nth-child(2),.moduleSplit section .dataTable td:nth-child(2){width:210px;}
.moduleSplit section .dataTable th:nth-child(3),.moduleSplit section .dataTable td:nth-child(3){width:145px;}
.moduleSplit section .dataTable th:nth-child(n+4),.moduleSplit section .dataTable td:nth-child(n+4){width:120px;}
.dataTableWrap{scrollbar-gutter:stable both-edges;}
.dataTable th{z-index:4;}

.stationToggleBox{right:260px !important;bottom:18px !important;top:auto !important;display:flex !important;align-items:center !important;gap:6px !important;white-space:nowrap !important;height:28px !important;line-height:1 !important;padding:6px 10px !important;}


/* ==== BSRID v338.5 summary table compact patch START ==== */
/* 监控汇总：缩小空列，最近报警仅保留事件表达，RID不省略，增加复制按钮空间 */
.summaryPanel .dataTableWrap,
.moduleWorkspace .dataTableWrap,
.moduleResult .dataTableWrap{
  overflow:auto;
  scrollbar-gutter: stable both-edges;
}

/* 汇总页左右表格整体更紧凑 */
.summaryPanel .dataTable,
.moduleWorkspace .summaryTable,
.moduleWorkspace .dataTable{
  table-layout: fixed;
}

/* 最近报警/最近记录紧凑行高 */
.summaryPanel table th,
.summaryPanel table td,
.moduleWorkspace table th,
.moduleWorkspace table td{
  padding:7px 8px;
}

/* 让 RID 完整显示，不用省略号；必要时横向滚动 */
.summaryPanel td.summary-rid,
.summaryPanel td.ridCell,
.moduleWorkspace td.summary-rid,
.moduleWorkspace td.ridCell{
  white-space:nowrap !important;
  overflow:visible !important;
  text-overflow:clip !important;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

/* 复制按钮：小图标，不占空间 */
.ridCopyBtn,.copyRidBtn,.miniCopyBtn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  margin-left:6px;
  border:1px solid rgba(95,190,255,.45);
  border-radius:6px;
  background:rgba(45,140,255,.16);
  color:#bfeeff;
  cursor:pointer;
  font-size:12px;
  vertical-align:middle;
}
.ridCopyBtn:hover,.copyRidBtn:hover,.miniCopyBtn:hover{
  background:rgba(45,160,255,.32);
  color:#fff;
}

/* 监控汇总常见列宽：时间/RID/事件/机型/RSSI/坐标 */
.summary-time{width:145px;max-width:145px;}
.summary-rid{width:230px;max-width:260px;}
.summary-event{width:110px;max-width:120px;}
.summary-model{width:155px;max-width:170px;}
.summary-rssi{width:52px;max-width:58px;text-align:center;}
.summary-coord{width:155px;max-width:175px;}

/* 防止空列撑开 */
.summary-empty-col,
.summary-unused-col{
  display:none !important;
  width:0 !important;
  padding:0 !important;
}
/* ==== BSRID v338.5 summary table compact patch END ==== */


/* v338.6 table column width and ledger restore */
.dataTable{table-layout:fixed;width:100%}
.dataTable th.centerCol,.dataTable td.centerCol{text-align:center}
.dataTable th,.dataTable td{vertical-align:middle}
.miniIconBtn.ridCopyBtn{padding:1px 4px;margin-left:4px;font-size:12px;line-height:1;border-radius:5px}
.moduleSplit .dataTableWrap{overflow:auto}
.moduleSplit .dataTable{min-width:560px}
.ledgerFilter + .moduleResult .dataTable{min-width:2100px}
.tag.nowrap{white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;min-width:38px}
.smallBtn{white-space:nowrap}

/* V338.7 table and management refinements */
.dataTable{table-layout:auto!important;width:auto!important;min-width:0!important}
.dataTableWrap{overflow:auto!important}
.centerCol{text-align:center!important}
.ridCopyBtn{padding:2px 5px!important;margin-left:4px!important}
#userResult .dataTableWrap,#managedResult .dataTableWrap,#otaTaskResult .dataTableWrap{max-width:100%;}
#managedResult .dataTable td,#managedResult .dataTable th,#userResult .dataTable td,#userResult .dataTable th{padding:8px 8px!important}


/* v338.8 map follow/overview polish */
.droneListItem.tracking{border-color:rgba(80,220,255,.65)!important;background:rgba(20,95,145,.45)!important;box-shadow:0 0 14px rgba(54,185,255,.18)}
.miniIconBtn.followBtn{font-weight:700;padding:2px 7px}
.miniIconBtn.followBtn.active{background:rgba(42,185,255,.34);border-color:rgba(114,220,255,.75);color:#fff}


/* v338.9 air overview button */
.airOverviewBtn{position:absolute;right:18px;top:150px;z-index:905;background:rgba(7,28,50,.86);border:1px solid rgba(80,170,255,.48);border-radius:10px;color:#d8f4ff;padding:8px 12px;font-size:13px;font-weight:800;backdrop-filter:blur(8px);box-shadow:0 8px 24px rgba(0,0,0,.25);cursor:pointer;white-space:nowrap}
.airOverviewBtn:hover{background:rgba(16,72,118,.92);border-color:rgba(82,210,255,.75);color:#fff}
.droneListItem.tracking{border-color:rgba(82,210,255,.75)!important;box-shadow:0 0 0 1px rgba(82,210,255,.25) inset,0 0 18px rgba(82,210,255,.18)}
.followBtn.active{background:linear-gradient(135deg,#2f8cff,#21d4fd)!important;color:#fff!important;border-color:rgba(255,255,255,.35)!important}


/* v339.0 system log panel */
.systemLogCard .sysLogFilter{display:grid;grid-template-columns:120px 110px 1fr 100px 100px 110px;gap:10px;align-items:center;margin:8px 0 12px}
.systemLogCard .sysLogFilter input,.systemLogCard .sysLogFilter select{height:36px;border:1px solid rgba(79,160,230,.45);border-radius:8px;background:rgba(5,25,45,.72);color:#dff3ff;padding:0 10px;min-width:0}
.systemLogCard .moduleResult{max-height:360px;overflow:auto}.systemLogCard .dataTable{min-width:1080px}.centerCol{text-align:center!important}
@media(max-width:1100px){.systemLogCard .sysLogFilter{grid-template-columns:1fr 1fr}.systemLogCard .sysLogFilter button{min-height:36px}}

/* v339.1 registry/audio/integration */
.registryEditPanel{grid-template-columns:repeat(4,minmax(150px,1fr))}.registryEditPanel input,.registryEditPanel select{min-width:0}.systemLogCard{margin-top:16px}.sysActions{position:sticky;bottom:0;background:rgba(8,28,48,.96);padding:12px 0;z-index:4;border-top:1px solid rgba(80,170,255,.18)}

/* V339.4：无人机名单与机型解析维护页签 */
.registryTabs{display:flex;gap:10px;margin:0 0 14px}.registryTabs button{padding:10px 18px;border:1px solid #235778;border-radius:9px;background:#0b253a;color:#c9e7fa;font-weight:700}.registryTabs button.active{background:#18b8df;color:#052034;border-color:#48d9f0}.registryTabs button:hover{filter:brightness(1.1)}

/* V339.5 中央悬浮无人机登录页 */
.loginPage.loginV3395{min-height:100vh;overflow:hidden;background:#020b18;color:#eaf8ff;font-family:"Microsoft YaHei",Arial,sans-serif}
.loginV3395 .loginShell{position:relative;z-index:5;min-height:100vh;display:grid;place-items:center;padding:24px;background:transparent}
.loginScene{position:fixed;inset:0;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at 50% 2%,rgba(38,135,255,.25),transparent 30%),radial-gradient(ellipse at 50% 78%,rgba(11,83,152,.25),transparent 42%),linear-gradient(180deg,#061426 0%,#031022 50%,#010916 100%)}
.loginScene:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,194,255,.035) 1px,transparent 1px),linear-gradient(rgba(0,194,255,.025) 1px,transparent 1px);background-size:64px 64px;mask-image:linear-gradient(180deg,transparent 0%,#000 25%,#000 78%,transparent 100%);opacity:.75}
.sceneGrid{position:absolute;width:160vmax;height:110vmax;left:50%;bottom:-72vmax;transform:translateX(-50%) perspective(800px) rotateX(62deg);border-radius:50%;background:repeating-radial-gradient(ellipse at center,rgba(28,171,255,.29) 0 1px,transparent 2px 56px),repeating-conic-gradient(from 0deg,rgba(26,150,255,.16) 0 1deg,transparent 1.6deg 12deg);filter:drop-shadow(0 0 16px rgba(0,179,255,.22));opacity:.84}
.sceneHaze{position:absolute;border-radius:50%;filter:blur(50px);opacity:.68}.hazeOne{width:42vw;height:18vw;left:30%;top:12%;background:rgba(26,123,234,.22)}.hazeTwo{width:55vw;height:22vw;left:22%;bottom:4%;background:rgba(0,91,187,.16)}
.radar{position:absolute;left:50%;transform:translateX(-50%);border:1px solid rgba(55,200,255,.5);border-radius:50%;box-shadow:0 0 30px rgba(24,170,255,.18),inset 0 0 28px rgba(29,150,255,.12)}.radarOne{width:min(72vw,1080px);height:260px;top:152px;animation:radarPulse 5s ease-out infinite}.radarTwo{width:min(48vw,730px);height:150px;top:206px;border-color:rgba(85,219,255,.28);animation:radarPulse 5s 1.5s ease-out infinite}
.orbit{position:absolute;left:50%;top:165px;transform:translateX(-50%) rotateX(66deg);border:1px solid rgba(34,194,255,.34);border-radius:50%}.orbitOne{width:700px;height:210px;animation:orbitGlow 3.8s ease-in-out infinite}.orbitTwo{width:1020px;height:330px;opacity:.55;animation:orbitGlow 4.7s 1.2s ease-in-out infinite}
.mapContour{position:absolute;opacity:.26;filter:blur(.3px);background:repeating-radial-gradient(ellipse at 50% 100%,transparent 0 13px,rgba(36,174,255,.36) 14px 15px,transparent 16px 30px);border-radius:50%}.contourOne{width:80vw;height:38vh;left:10vw;bottom:-8vh;transform:rotate(-8deg)}.contourTwo{width:70vw;height:32vh;right:-20vw;bottom:4vh;transform:rotate(12deg)}
.scanBeam{position:absolute;top:132px;left:50%;width:360px;height:480px;transform:translateX(-50%);background:linear-gradient(180deg,rgba(53,197,255,.25),rgba(29,133,255,.08) 35%,transparent 85%);clip-path:polygon(46% 0,54% 0,100% 100%,0 100%);filter:blur(.1px);opacity:.72;animation:beamPulse 2.8s ease-in-out infinite}
.droneHero{position:absolute;z-index:2;top:92px;left:50%;width:174px;height:90px;transform:translateX(-50%);animation:droneFloat 4.8s ease-in-out infinite;filter:drop-shadow(0 0 16px rgba(39,199,255,.9))}
.droneBody{position:absolute;width:78px;height:34px;left:48px;top:25px;border-radius:40% 40% 48% 48%;background:linear-gradient(150deg,#d3f7ff,#56bfff 52%,#164981);border:1px solid rgba(200,250,255,.95);box-shadow:0 8px 18px rgba(0,0,0,.45),inset 0 4px 8px rgba(255,255,255,.32)}.droneBody i{position:absolute;left:21px;top:8px;width:36px;height:10px;border-radius:50%;background:#0b3769;box-shadow:0 0 10px #2ce5ff}.droneBody b{position:absolute;bottom:-10px;left:32px;width:14px;height:14px;border-radius:50%;background:#0e2a55;border:2px solid #4ddcff;box-shadow:0 0 13px #42e6ff}.droneCamera{position:absolute;left:76px;top:57px;width:22px;height:10px;border-radius:0 0 12px 12px;border:2px solid #87ebff;border-top:0;background:#092044;box-shadow:0 0 10px #2fd9ff}
.droneArm{position:absolute;top:37px;width:58px;height:6px;border-radius:5px;background:linear-gradient(90deg,#a4efff,#488bd3);box-shadow:0 0 8px rgba(74,214,255,.62)}.a1{left:5px;transform:rotate(-18deg)}.a2{right:5px;transform:rotate(18deg)}.a3{left:7px;top:50px;transform:rotate(18deg)}.a4{right:7px;top:50px;transform:rotate(-18deg)}
.droneProp{position:absolute;width:54px;height:14px;border-radius:50%;background:radial-gradient(ellipse,rgba(208,251,255,.75),rgba(64,211,255,.2) 37%,transparent 70%);filter:blur(.4px);animation:propSpin 1.1s linear infinite}.p1{left:0;top:16px}.p2{right:0;top:16px}.p3{left:0;bottom:4px}.p4{right:0;bottom:4px}
.hudStat{position:absolute;z-index:1;top:42%;width:180px;color:rgba(158,220,255,.58);font-size:11px;letter-spacing:.4px;line-height:1.8}.hudStat small{display:block;font-size:10px;letter-spacing:1.2px;color:rgba(104,205,255,.42)}.hudStat b{display:block;font-size:13px;color:rgba(99,222,255,.66)}.hudStat span{display:block;height:1px;margin:12px 0;background:linear-gradient(90deg,rgba(42,202,255,.55),transparent)}.hudStat em{display:block;margin:7px 0;font-style:normal}.hudStat strong{float:right;color:rgba(161,235,255,.85);font-size:14px}.statLeft{left:5vw}.statRight{right:5vw;text-align:right}.statRight span{background:linear-gradient(270deg,rgba(42,202,255,.55),transparent)}.bars{display:flex;justify-content:flex-end;gap:4px;height:34px;align-items:end}.bars i{display:block;width:7px;background:linear-gradient(#65e9ff,#1875fb);border-radius:3px 3px 0 0;animation:barWave 1.6s ease-in-out infinite}.bars i:nth-child(1){height:9px}.bars i:nth-child(2){height:14px;animation-delay:.1s}.bars i:nth-child(3){height:20px;animation-delay:.2s}.bars i:nth-child(4){height:25px;animation-delay:.3s}.bars i:nth-child(5){height:17px;animation-delay:.4s}.bars i:nth-child(6){height:30px;animation-delay:.5s}.bars i:nth-child(7){height:23px;animation-delay:.6s}
.loginV3395 .loginBrand{z-index:7;position:fixed;top:30px;left:42px;gap:12px}.loginV3395 .loginBrand .logo{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,#39e3ff,#1466ff);box-shadow:0 0 24px rgba(41,185,255,.65)}.loginV3395 .loginBrand b{font-size:25px;letter-spacing:.2px}.loginV3395 .loginBrand span{font-size:13px;letter-spacing:.45px}.loginSafe{position:fixed;z-index:7;right:42px;top:34px;border:1px solid rgba(50,185,255,.38);border-radius:20px;padding:8px 14px;color:#72dfff;font-size:13px;background:rgba(4,22,47,.52);box-shadow:0 0 18px rgba(24,144,255,.12)}.loginSafe time{margin-left:10px;color:#e5f8ff;font-variant-numeric:tabular-nums}
.loginV3395 .loginBox{position:relative;z-index:4;width:min(420px,calc(100vw - 36px));margin-top:36px;padding:42px 44px 28px;border:1px solid rgba(74,183,255,.54);border-radius:20px;background:linear-gradient(145deg,rgba(14,52,91,.93),rgba(5,24,48,.94));box-shadow:0 28px 80px rgba(0,0,0,.55),0 0 56px rgba(22,152,255,.18),inset 0 1px 1px rgba(190,246,255,.18);backdrop-filter:blur(18px)}
.loginV3395 .loginBox:before{content:"";position:absolute;left:21px;right:21px;top:0;height:1px;background:linear-gradient(90deg,transparent,#66e9ff,transparent);box-shadow:0 0 16px #29cfff}.loginV3395 .loginBox:after{content:"";position:absolute;inset:8px;border-radius:15px;border:1px solid rgba(111,210,255,.08);pointer-events:none}.loginV3395 .loginBox h1{position:relative;z-index:1;margin:0 0 30px;text-align:center;font-size:33px;letter-spacing:3px;color:#f1fcff;text-shadow:0 0 18px rgba(76,203,255,.76)}.loginTitleDeco{position:absolute;left:0;right:0;top:87px;display:flex;align-items:center;justify-content:center;gap:10px;color:#84cdf4;font-size:11px}.loginTitleDeco i{height:1px;width:36px;background:linear-gradient(90deg,transparent,#35cfff)}.loginTitleDeco i:last-child{background:linear-gradient(90deg,#35cfff,transparent)}
.loginDroneMini{position:absolute;top:-68px;left:50%;width:90px;height:54px;transform:translateX(-50%);filter:drop-shadow(0 0 14px #1ad5ff);animation:droneFloat 3.4s ease-in-out infinite}.loginDroneMini:before,.loginDroneMini:after{content:"";position:absolute;top:20px;width:33px;height:4px;border-radius:4px;background:#70eaff}.loginDroneMini:before{left:4px;transform:rotate(-20deg)}.loginDroneMini:after{right:4px;transform:rotate(20deg)}.loginDroneMini span{position:absolute;left:31px;top:15px;width:28px;height:18px;border-radius:50% 50% 42% 42%;background:linear-gradient(#d9faff,#53bffd);box-shadow:0 4px 10px rgba(0,0,0,.45)}.loginDroneMini i,.loginDroneMini b{position:absolute;top:11px;width:26px;height:8px;border-radius:50%;background:radial-gradient(ellipse,rgba(210,255,255,.92),rgba(43,211,255,.25) 45%,transparent 75%);animation:propSpin .8s linear infinite}.loginDroneMini i{left:0}.loginDroneMini b{right:0;animation-delay:.2s}
.loginV3395 .loginBox label{position:relative;z-index:1;display:grid;gap:8px;margin-bottom:17px;color:#d9f4ff;font-weight:700;font-size:13px}.loginV3395 .loginBox input{height:48px;padding:0 14px 0 42px;border:1px solid rgba(73,158,234,.52);border-radius:9px;background:rgba(2,18,43,.62);color:#f0fbff;box-shadow:inset 0 0 16px rgba(20,99,164,.12);transition:.2s}.loginV3395 .loginBox input::placeholder{color:#708da8}.loginV3395 .loginBox input:focus{border-color:#48d9ff;box-shadow:0 0 0 3px rgba(49,198,255,.1),inset 0 0 18px rgba(25,123,201,.16)}.inputIcon{position:absolute;left:14px;bottom:15px;width:17px;height:17px;opacity:.85}.userIcon:before{content:"";position:absolute;left:5px;top:0;width:7px;height:7px;border:1.5px solid #8edfff;border-radius:50%}.userIcon:after{content:"";position:absolute;left:1px;bottom:0;width:15px;height:8px;border:1.5px solid #8edfff;border-bottom:0;border-radius:9px 9px 0 0}.lockIcon:before{content:"";position:absolute;left:3px;top:6px;width:11px;height:9px;border:1.5px solid #8edfff;border-radius:2px}.lockIcon:after{content:"";position:absolute;left:5px;top:0;width:7px;height:8px;border:1.5px solid #8edfff;border-bottom:0;border-radius:8px 8px 0 0}
.loginV3395 .loginBox .captchaRow{grid-template-columns:1fr 138px;gap:10px}.loginV3395 .loginBox .captchaRow input{padding-left:14px}.loginV3395 .loginBox .captchaRow button{height:48px;margin:0;border-radius:9px;border:1px solid rgba(85,178,255,.56);background:linear-gradient(145deg,rgba(28,99,186,.62),rgba(12,45,100,.8));color:#e9fbff;font-size:17px;letter-spacing:1px;box-shadow:inset 0 1px 0 rgba(196,246,255,.14)}.loginV3395 .loginBox .captchaRow button:hover{background:linear-gradient(145deg,rgba(37,126,227,.76),rgba(12,57,126,.9))}
.loginV3395 .loginSubmit{position:relative;z-index:1;width:100%;height:52px;margin-top:6px;border-radius:9px;border:1px solid rgba(132,230,255,.56);background:linear-gradient(100deg,#24d0fa,#1877ff 66%);font-size:17px;letter-spacing:2px;box-shadow:0 10px 26px rgba(16,128,255,.32),inset 0 1px 0 rgba(255,255,255,.35);transition:.2s}.loginV3395 .loginSubmit:hover{transform:translateY(-1px);filter:brightness(1.1)}.loginV3395 .loginSubmit:disabled{opacity:.68;cursor:wait;transform:none}.loginV3395 .loginMsg{position:relative;z-index:1;min-height:20px;margin-top:10px;color:#ffabb5}.loginStatus{position:relative;z-index:1;display:flex;align-items:center;gap:7px;margin-top:8px;padding:10px 12px;border:1px solid rgba(83,166,236,.24);border-radius:13px;background:rgba(0,13,34,.5);color:#9bdaf7;font-size:12px}.statusShield{width:17px;height:17px;display:grid;place-items:center;border-radius:50%;background:rgba(18,203,176,.16);color:#57f0cf;font-size:12px}.loginStatus i{width:6px;height:6px;margin-left:auto;border-radius:50%;background:#227dfb;box-shadow:0 0 8px #208cff;animation:statusDot 1.1s ease-in-out infinite}.loginStatus i+ i{margin-left:0;animation-delay:.16s}.loginStatus i+ i+ i{animation-delay:.32s}.loginStatus i+ i+ i+ i{animation-delay:.48s}
@keyframes droneFloat{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-9px)}}@keyframes propSpin{0%{transform:scaleX(.8);opacity:.55}50%{transform:scaleX(1.2);opacity:1}100%{transform:scaleX(.8);opacity:.55}}@keyframes radarPulse{0%,100%{opacity:.26;transform:translateX(-50%) scale(.94)}48%{opacity:.86;transform:translateX(-50%) scale(1.02)}}@keyframes orbitGlow{0%,100%{opacity:.2;filter:drop-shadow(0 0 0 rgba(33,210,255,0))}50%{opacity:.86;filter:drop-shadow(0 0 12px rgba(33,210,255,.65))}}@keyframes beamPulse{0%,100%{opacity:.38}50%{opacity:.92}}@keyframes barWave{0%,100%{filter:brightness(.65);transform:scaleY(.72);transform-origin:bottom}50%{filter:brightness(1.35);transform:scaleY(1)}}@keyframes statusDot{0%,100%{opacity:.25;transform:scale(.78)}50%{opacity:1;transform:scale(1.18)}}
@media(max-width:980px){.hudStat{display:none}.loginSafe{right:22px;top:22px}.loginV3395 .loginBrand{left:22px;top:18px}.loginV3395 .loginBrand b{font-size:20px}.loginV3395 .loginBrand span{font-size:11px}.droneHero{top:82px;transform:translateX(-50%) scale(.85)}.radarOne{top:138px}.radarTwo{top:188px}.loginV3395 .loginBox{margin-top:80px}}
@media(max-width:620px){.loginSafe{display:none}.loginV3395 .loginBrand{left:18px;top:15px}.loginV3395 .loginBrand .logo{width:32px;height:32px}.loginV3395 .loginBrand b{font-size:18px}.loginV3395 .loginBrand span{display:none}.droneHero{top:82px;transform:translateX(-50%) scale(.72)}.loginV3395 .loginBox{margin-top:64px;padding:38px 22px 22px}.loginV3395 .loginBox h1{font-size:28px}.loginTitleDeco{top:81px;font-size:10px}.loginV3395 .loginBox .captchaRow{grid-template-columns:1fr 118px}.orbitTwo{width:720px}.sceneGrid{bottom:-58vmax}.loginStatus{font-size:11px}}


/* V339.6 三风格动态登录页：经典态势 / 山脉巡防 / 指挥舱HUD */
.loginPage.loginV3395 .mountainLayer{position:absolute;left:-5%;right:-5%;bottom:-4%;height:44%;opacity:.58;pointer-events:none;filter:drop-shadow(0 -15px 28px rgba(34,166,255,.13));}
.loginPage.loginV3395 .mountainFar{background:linear-gradient(180deg,transparent 0 20%,rgba(33,86,139,.12) 20%),linear-gradient(135deg,transparent 0 24%,#0b2d51 24.4% 42%,transparent 42.4%),linear-gradient(45deg,transparent 0 18%,#123b63 18.4% 36%,transparent 36.4%),linear-gradient(135deg,transparent 0 42%,#0e345b 42.4% 60%,transparent 60.4%),linear-gradient(45deg,transparent 0 55%,#12375e 55.4% 74%,transparent 74.4%);background-size:520px 100%,620px 100%,570px 100%,680px 100%,610px 100%;background-position:0 0,0 0,120px 25px,420px 0,730px 24px;background-repeat:repeat-x}
.loginPage.loginV3395 .mountainNear{height:32%;bottom:-2%;opacity:.8;background:linear-gradient(135deg,transparent 0 24%,#061a33 24.5% 48%,transparent 48.5%),linear-gradient(45deg,transparent 0 21%,#09213e 21.5% 47%,transparent 47.5%),linear-gradient(135deg,transparent 0 45%,#071d38 45.5% 68%,transparent 68.5%);background-size:700px 100%,650px 100%,740px 100%;background-position:0 0,300px 0,690px 0;background-repeat:repeat-x}
.loginPage.loginV3395 .mountainMist{position:absolute;inset:auto -10% 12% -10%;height:140px;background:radial-gradient(ellipse at 30% 50%,rgba(121,215,255,.12),transparent 42%),radial-gradient(ellipse at 75% 42%,rgba(87,176,255,.13),transparent 44%);filter:blur(18px);animation:mistDrift 12s ease-in-out infinite alternate}
.realDrone{width:100%;height:100%;overflow:visible}.droneHero{width:420px;height:200px;top:72px;filter:drop-shadow(0 0 20px rgba(35,198,255,.68))}.droneHero .propellers{transform-origin:center;animation:propRotor .26s linear infinite}.droneHero .droneArms{filter:drop-shadow(0 0 5px rgba(60,213,255,.45))}
@keyframes propRotor{0%{transform:scaleY(.62);opacity:.58}50%{transform:scaleY(1.28);opacity:1}100%{transform:scaleY(.62);opacity:.58}}@keyframes mistDrift{from{transform:translateX(-2%)}to{transform:translateX(3%)}}
.themeClassic .loginScene{background:radial-gradient(ellipse at 50% 2%,rgba(38,135,255,.25),transparent 30%),radial-gradient(ellipse at 50% 78%,rgba(11,83,152,.25),transparent 42%),linear-gradient(180deg,#061426 0%,#031022 50%,#010916 100%)}
.themeClassic .mountainLayer,.themeClassic .mountainMist{opacity:.35}
.themeMountain .loginScene{background:radial-gradient(ellipse at 21% 27%,rgba(35,152,255,.25),transparent 29%),radial-gradient(ellipse at 84% 10%,rgba(83,198,255,.18),transparent 30%),linear-gradient(180deg,#071c37 0%,#041127 48%,#020914 100%)}
.themeMountain .loginShell{place-items:center}.themeMountain .loginBox{margin-left:43vw!important;transform:translateX(0);background:linear-gradient(145deg,rgba(9,42,77,.91),rgba(3,19,42,.91))}.themeMountain .droneHero{left:27%;top:31%;transform:translateX(-50%) scale(1.22);animation:mountainDroneFloat 5s ease-in-out infinite}.themeMountain .radarOne{left:27%;top:52%;width:470px;height:175px}.themeMountain .radarTwo{left:27%;top:58%;width:720px;height:280px}.themeMountain .hudStat.statLeft{left:4.5%;top:47%}.themeMountain .hudStat.statRight{right:4.5%;top:53%}
@keyframes mountainDroneFloat{0%,100%{transform:translateX(-50%) translateY(0) rotate(-1deg)}50%{transform:translateX(-50%) translateY(-14px) rotate(1.2deg)}}
.themeCommand .loginScene{background:radial-gradient(ellipse at 50% 15%,rgba(0,225,214,.18),transparent 33%),linear-gradient(180deg,#041824 0%,#020f1d 56%,#010815 100%)}.themeCommand .sceneGrid{opacity:1;background-size:44px 44px}.themeCommand .mountainLayer{opacity:.23}.themeCommand .loginBox{border-color:rgba(71,238,220,.52)!important;background:linear-gradient(145deg,rgba(7,50,65,.93),rgba(3,22,40,.96))!important;box-shadow:0 28px 80px rgba(0,0,0,.55),0 0 56px rgba(19,222,204,.15),inset 0 1px 1px rgba(190,255,248,.18)!important}.themeCommand .loginSubmit{background:linear-gradient(100deg,#00cbbf,#167dff 72%)!important}.themeCommand .droneHero{top:62px;left:50%;transform:translateX(-50%) scale(.9)}.themeCommand .radarOne,.themeCommand .radarTwo{border-color:rgba(58,240,218,.45)}.themeCommand .loginSafe{color:#65f7db;border-color:rgba(70,244,218,.38)}.themeCommand .hudStat{color:#8bfff0}.themeCommand .loginBox:before{background:linear-gradient(90deg,transparent,#4effdc,transparent);box-shadow:0 0 16px #2de0ce}
@media(max-width:980px){.themeMountain .loginBox{margin-left:0!important}.themeMountain .droneHero{left:50%;top:75px;transform:translateX(-50%) scale(.78)}.themeMountain .radarOne{left:50%;top:138px}.themeMountain .radarTwo{left:50%;top:188px}}

/* V339.7：山脉巡防风使用真实山脉底图（来自登录页参考图的山脉景别），仅作为背景层，不影响原有登录和动画功能 */
.loginPage.loginV3395 .mountainPhoto{display:none;position:absolute;z-index:0;left:0;right:0;bottom:8%;height:min(58vh,620px);pointer-events:none;background-image:linear-gradient(180deg,rgba(2,13,30,.98) 0%,rgba(2,14,31,.20) 23%,rgba(2,12,27,.09) 56%,rgba(1,8,18,.78) 100%),linear-gradient(90deg,rgba(1,13,30,.42),transparent 24%,transparent 76%,rgba(1,13,30,.42)),url('/assets/login_mountain_backdrop.jpg?v=20260630_v3397');background-size:cover;background-position:center 48%;background-repeat:no-repeat;opacity:.96;filter:saturate(1.12) contrast(1.05);mask-image:linear-gradient(180deg,transparent 0%,#000 15%,#000 78%,transparent 100%)}
.themeMountain .mountainPhoto{display:block}.themeMountain .mountainFar,.themeMountain .mountainNear{opacity:.20}.themeMountain .mountainMist{z-index:1;opacity:.68}.themeMountain .sceneGrid{z-index:1;opacity:.44}.themeMountain .radar,.themeMountain .orbit,.themeMountain .scanBeam,.themeMountain .droneHero,.themeMountain .hudStat{z-index:2}.themeMountain .loginBox{z-index:6}.themeMountain .loginScene:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 76% 48%,rgba(4,27,57,.10),transparent 35%),linear-gradient(180deg,rgba(1,14,32,.18),transparent 32%,rgba(1,10,23,.28) 100%);z-index:3}
@media(max-width:980px){.themeMountain .mountainPhoto{bottom:4%;height:52vh;background-position:center 44%;opacity:.74}.themeMountain .mountainFar,.themeMountain .mountainNear{opacity:.12}}


/* V339.8：真实山脉巡防风。使用内置山脉场景底图，保留真实登录控件覆盖层。 */
.themeMountain.loginPage.loginV3395{background:#020a16}
.themeMountain .loginScene{
  background:
    linear-gradient(180deg,rgba(1,10,24,.06) 0%,rgba(1,9,20,.02) 48%,rgba(1,8,18,.24) 100%),
    url('/assets/login_mountain_real_reference.png?v=20260630_v3398') center center/cover no-repeat !important;
}
/* 参考底图已包含真实山脉、雷达与四旋翼；关闭旧的几何假山和重复 HUD。 */
.themeMountain .sceneGrid,
.themeMountain .mountainPhoto,
.themeMountain .mountainLayer,
.themeMountain .mountainMist,
.themeMountain .sceneHaze,
.themeMountain .radar,
.themeMountain .orbit,
.themeMountain .mapContour,
.themeMountain .scanBeam,
.themeMountain .droneHero,
.themeMountain .hudStat{display:none!important}
.themeMountain .loginScene:after{display:none!important}
/* 底图自带品牌与右上运行状态，避免再叠一套。 */
.themeMountain .loginBrand,.themeMountain .loginSafe{display:none!important}
.themeMountain .loginShell{place-items:center!important;padding:24px!important}
.themeMountain .loginBox{
  width:min(420px,calc(100vw - 36px))!important;
  margin:36px 0 0!important;
  transform:none!important;
  border-color:rgba(82,191,255,.58)!important;
  background:linear-gradient(145deg,rgba(12,55,99,.96),rgba(4,25,53,.97))!important;
  box-shadow:0 26px 76px rgba(0,0,0,.55),0 0 52px rgba(15,143,255,.22),inset 0 1px 1px rgba(202,247,255,.22)!important;
}
.themeMountain .loginBox:before{box-shadow:0 0 18px rgba(47,205,255,.92)!important}
.themeMountain .loginBox h1{font-size:33px!important}
.themeMountain .loginDroneMini{display:none!important}
@media(max-width:980px){
  .themeMountain .loginScene{background-position:center center!important}
  .themeMountain .loginBox{margin-top:76px!important}
  .themeMountain .loginBrand,.themeMountain .loginSafe{display:flex!important}
}

/* V339.9：用户提供的原始山脉无人机图登录页。底图为 assets/login_real_mountain_bg.png；无任何额外假无人机。 */
body.loginPage.loginRealMountain{margin:0;min-height:100vh;overflow:hidden;background:#020a16;color:#edf8ff;font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif}
.loginRealMountain *{box-sizing:border-box}
.realLoginScene{position:relative;min-height:100vh;overflow:hidden;isolation:isolate;background:#020a16}
.realLoginBg{position:absolute;z-index:-6;inset:0;background:url('/assets/login_real_mountain_bg.png?v=20260630_v3399') center center/cover no-repeat;transform:scale(1.015);animation:realBgBreathe 18s ease-in-out infinite alternate}
.realLoginShade{position:absolute;z-index:-5;inset:0;background:linear-gradient(90deg,rgba(0,7,22,.54) 0%,rgba(1,11,30,.28) 41%,rgba(0,8,24,.38) 100%),linear-gradient(180deg,rgba(0,7,20,.22) 0%,transparent 39%,rgba(0,5,17,.42) 100%);pointer-events:none}
.realLoginStars{position:absolute;z-index:-4;inset:0;opacity:.42;background-image:radial-gradient(circle at 14% 16%,#d7f6ff 0 1px,transparent 1.7px),radial-gradient(circle at 39% 12%,#6edcff 0 1px,transparent 1.5px),radial-gradient(circle at 59% 27%,#b7efff 0 1px,transparent 1.6px),radial-gradient(circle at 81% 12%,#6dcfff 0 1px,transparent 1.5px),radial-gradient(circle at 92% 31%,#d8f8ff 0 1px,transparent 1.6px);animation:realStarPulse 5.4s ease-in-out infinite alternate}
.realLoginRadar{position:absolute;z-index:-2;left:-14vw;top:11vh;width:min(64vw,930px);aspect-ratio:1;border-radius:50%;border:1px solid rgba(57,203,255,.20);box-shadow:inset 0 0 60px rgba(44,169,255,.05),0 0 22px rgba(24,159,255,.05);mask-image:linear-gradient(90deg,#000 0 58%,transparent 84%);pointer-events:none}.realLoginRadar:before,.realLoginRadar:after{content:"";position:absolute;border:1px solid rgba(62,203,255,.16);border-radius:50%;inset:12%;}.realLoginRadar:after{inset:27%;border-color:rgba(94,221,255,.23)}.radarA{animation:realRadar 7s ease-out infinite}.radarB{left:-7vw;top:20vh;width:min(43vw,650px);opacity:.64;animation:realRadar 7s 2.8s ease-out infinite}
.realLoginBeam{position:absolute;z-index:-1;left:-13vw;top:16vh;width:58vw;height:56vw;max-width:900px;max-height:900px;background:conic-gradient(from 27deg at 50% 50%,rgba(37,198,255,.16),rgba(36,172,255,.03) 14deg,transparent 25deg);clip-path:circle(50% at 50% 50%);mix-blend-mode:screen;opacity:.48;animation:realBeam 9s linear infinite;pointer-events:none}
.realLoginGrid{position:absolute;z-index:-1;left:-10%;right:-10%;bottom:-38vh;height:78vh;opacity:.25;background:linear-gradient(rgba(74,196,255,.32) 1px,transparent 1px),linear-gradient(90deg,rgba(74,196,255,.32) 1px,transparent 1px);background-size:58px 58px;transform:perspective(680px) rotateX(62deg);transform-origin:center bottom;mask-image:linear-gradient(180deg,transparent,#000 52%,transparent);pointer-events:none}
.realLoginParticles{position:absolute;z-index:2;inset:0;pointer-events:none}.realLoginParticles i{position:absolute;width:3px;height:3px;border-radius:50%;background:#72e7ff;box-shadow:0 0 10px #36cfff;opacity:.15;animation:realParticle 8s ease-in-out infinite}.realLoginParticles i:nth-child(1){left:13%;top:33%;animation-delay:0s}.realLoginParticles i:nth-child(2){left:21%;top:57%;animation-delay:-2s}.realLoginParticles i:nth-child(3){left:38%;top:19%;animation-delay:-5s}.realLoginParticles i:nth-child(4){left:50%;top:64%;animation-delay:-1s}.realLoginParticles i:nth-child(5){left:65%;top:24%;animation-delay:-4s}.realLoginParticles i:nth-child(6){left:73%;top:74%;animation-delay:-6s}.realLoginParticles i:nth-child(7){left:84%;top:41%;animation-delay:-3s}.realLoginParticles i:nth-child(8){left:93%;top:18%;animation-delay:-7s}.realLoginParticles i:nth-child(9){left:31%;top:79%;animation-delay:-2.5s}.realLoginParticles i:nth-child(10){left:58%;top:12%;animation-delay:-4.5s}
.realLoginHeader{position:absolute;z-index:4;top:28px;left:42px;right:42px;display:flex;align-items:center;justify-content:space-between}.realLoginBrand{display:flex;align-items:center;gap:12px}.realBrandMark{position:relative;width:40px;height:40px;border:1px solid rgba(127,225,255,.86);border-radius:12px;background:linear-gradient(145deg,rgba(38,173,255,.82),rgba(5,64,156,.72));box-shadow:0 0 20px rgba(53,193,255,.45),inset 0 0 14px rgba(233,252,255,.34)}.realBrandMark:before{content:"";position:absolute;inset:9px;border:2px solid #e9fbff;border-radius:6px;transform:rotate(30deg)}.realBrandMark i{position:absolute;left:9px;right:9px;top:18px;height:2px;background:#e6fbff;transform:rotate(-30deg)}.realBrandMark b{position:absolute;left:18px;top:9px;width:2px;height:22px;background:#e6fbff;transform:rotate(30deg)}.realLoginBrand strong{display:block;color:#eefaff;font-size:22px;letter-spacing:.5px;text-shadow:0 0 14px rgba(94,217,255,.46)}.realLoginBrand small{display:block;margin-top:3px;color:rgba(180,223,255,.69);font-size:10px;letter-spacing:1.2px}.realLoginOnline{display:flex;align-items:center;gap:8px;padding:7px 12px;border:1px solid rgba(102,201,255,.25);border-radius:16px;background:rgba(1,17,43,.34);color:rgba(208,241,255,.86);font-size:12px;backdrop-filter:blur(8px)}.realLoginOnline span{width:7px;height:7px;border-radius:50%;background:#46ecbc;box-shadow:0 0 10px #41f2c0;animation:realOnline 1.8s ease-in-out infinite}.realLoginOnline time{font-variant-numeric:tabular-nums;color:#74ddff}
.realLoginInfo{position:absolute;z-index:3;left:max(6vw,54px);top:50%;width:min(520px,39vw);transform:translateY(-44%);text-shadow:0 2px 16px rgba(0,12,34,.58)}.infoKicker{display:flex;align-items:center;gap:9px;margin-bottom:19px;color:#7fe1ff;font-size:11px;letter-spacing:1.5px}.infoKicker i{width:38px;height:1px;background:linear-gradient(90deg,#54d9ff,transparent)}.realLoginInfo h1{margin:0;color:#f4fcff;font-size:clamp(31px,3.1vw,53px);line-height:1.3;letter-spacing:2px;font-weight:650}.realLoginInfo h1 em{font-style:normal;color:#65dcff;text-shadow:0 0 22px rgba(43,198,255,.6)}.realLoginInfo p{margin:20px 0;color:rgba(220,241,255,.85);font-size:15px;letter-spacing:1.5px}.infoLine{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-left:2px solid #48d5ff;background:linear-gradient(90deg,rgba(24,145,223,.19),transparent);color:#c7ebff;font-size:12px}.infoLine span{color:#65f5ce;text-shadow:0 0 9px #45edc0}
.realLoginPanel{position:absolute;z-index:5;right:clamp(44px,10vw,170px);top:50%;width:min(416px,calc(100vw - 36px));padding:35px 38px 25px;transform:translateY(-48%);border:1px solid rgba(105,209,255,.52);border-radius:22px;background:linear-gradient(145deg,rgba(7,37,76,.81),rgba(3,19,47,.9));box-shadow:0 28px 90px rgba(0,0,0,.48),0 0 45px rgba(28,157,255,.16),inset 0 1px 0 rgba(218,249,255,.16);backdrop-filter:blur(18px);overflow:hidden}.realLoginPanel:before{content:"";position:absolute;inset:8px;border-radius:16px;border:1px solid rgba(128,219,255,.09);pointer-events:none}.panelTopLine{position:absolute;top:0;left:18%;right:18%;height:2px;background:linear-gradient(90deg,transparent,#50d9ff,transparent);box-shadow:0 0 15px #37cfff}.panelTitle{position:relative;display:flex;align-items:center;gap:12px}.panelShield{display:grid;place-items:center;width:41px;height:41px;border:1px solid rgba(113,222,255,.64);border-radius:12px;background:rgba(31,133,215,.22);color:#d8faff;font-size:27px;line-height:1;box-shadow:inset 0 0 13px rgba(67,193,255,.22)}.panelTitle small{color:#71d5ff;font-size:10px;letter-spacing:1.1px}.panelTitle h2{margin:2px 0 0;color:#f4fcff;font-size:27px;letter-spacing:3px}.panelSub{position:relative;margin:18px 0 24px;color:rgba(197,231,255,.7);font-size:12px}.realField{position:relative;display:block;margin:0 0 16px}.realField>span{display:block;margin-bottom:7px;color:#d9f4ff;font-size:12px;font-weight:700}.realField>div{position:relative}.realField input{width:100%;height:47px;padding:0 13px 0 42px;border:1px solid rgba(88,179,247,.42);border-radius:9px;outline:0;background:rgba(1,14,38,.56);color:#f1fbff;font-size:14px;box-shadow:inset 0 0 14px rgba(19,97,172,.10);transition:border-color .2s,box-shadow .2s}.realField input::placeholder{color:#7897b4}.realField input:focus{border-color:#4bd5ff;box-shadow:0 0 0 3px rgba(40,189,255,.12),inset 0 0 14px rgba(19,97,172,.14)}.fieldUser,.fieldLock,.fieldCaptcha{position:absolute;z-index:1;left:15px;top:50%;width:15px;height:15px;transform:translateY(-50%);border:1.5px solid #93dffc;opacity:.93}.fieldUser{border-radius:50% 50% 44% 44%;clip-path:polygon(22% 0,78% 0,100% 38%,85% 48%,85% 100%,15% 100%,15% 48%,0 38%)}.fieldLock{border-radius:3px;margin-top:3px}.fieldLock:before{content:"";position:absolute;left:3px;top:-8px;width:7px;height:8px;border:1.5px solid #93dffc;border-bottom:0;border-radius:8px 8px 0 0}.fieldCaptcha{border-radius:3px}.fieldCaptcha:before,.fieldCaptcha:after{content:"";position:absolute;left:3px;right:3px;height:1px;background:#93dffc}.fieldCaptcha:before{top:4px}.fieldCaptcha:after{bottom:4px}.realCaptcha input{padding-right:127px}.realCaptcha button{position:absolute;right:5px;top:5px;height:37px;min-width:113px;padding:0 8px;border:1px solid rgba(85,193,255,.44);border-radius:7px;background:rgba(26,129,211,.24);color:#dff6ff;font-size:12px;font-weight:700;cursor:pointer;transition:.2s}.realCaptcha button:hover{background:rgba(42,151,232,.48);border-color:#68dfff}.realLoginSubmit{position:relative;display:flex;align-items:center;justify-content:center;gap:15px;width:100%;height:49px;margin-top:7px;border:1px solid #61dcff;border-radius:9px;background:linear-gradient(100deg,#087bd8,#1aabf2 52%,#0871d0);color:#effcff;font-size:17px;font-weight:800;letter-spacing:7px;cursor:pointer;box-shadow:0 0 0 1px rgba(220,252,255,.2) inset,0 8px 22px rgba(0,115,255,.25);overflow:hidden;transition:transform .18s,filter .18s}.realLoginSubmit:before{content:"";position:absolute;top:0;bottom:0;left:-40%;width:30%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-25deg);animation:realButtonGlow 3.4s ease-in-out infinite}.realLoginSubmit:hover{transform:translateY(-1px);filter:brightness(1.13)}.realLoginSubmit:disabled{opacity:.7;cursor:wait;transform:none}.realLoginSubmit i{font-style:normal;font-size:19px;letter-spacing:0}.realLoginMsg{min-height:18px;margin-top:10px;text-align:center;color:#ffabb4;font-size:12px}.realLoginState{display:flex;align-items:center;gap:8px;padding-top:7px;color:rgba(164,220,249,.67);font-size:11px}.realLoginState b{width:7px;height:7px;border-radius:50%;background:#46edbf;box-shadow:0 0 8px #45efc1;animation:realOnline 1.8s ease-in-out infinite}.realLoginState i{width:4px;height:4px;margin-left:auto;border-radius:50%;background:#41cfff;box-shadow:0 0 6px #35c9ff;animation:realStateDot 1.2s ease-in-out infinite}.realLoginState i+i{margin-left:0;animation-delay:.18s}.realLoginState i+i+i{animation-delay:.36s}.realPanelFoot{margin-top:16px;padding-top:13px;border-top:1px solid rgba(104,194,255,.14);color:rgba(160,203,231,.48);font-size:10px;text-align:center}.realLoginFooter{position:absolute;z-index:3;bottom:21px;left:0;right:0;text-align:center;color:rgba(177,217,243,.55);font-size:11px;letter-spacing:.5px}
@keyframes realBgBreathe{from{transform:scale(1.015)}to{transform:scale(1.045)}}@keyframes realStarPulse{from{opacity:.24}to{opacity:.52}}@keyframes realRadar{0%{opacity:0;transform:scale(.74)}24%{opacity:.58}100%{opacity:0;transform:scale(1.08)}}@keyframes realBeam{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes realParticle{0%,100%{opacity:.12;transform:translate3d(0,0,0) scale(.8)}50%{opacity:.95;transform:translate3d(12px,-20px,0) scale(1.35)}}@keyframes realOnline{0%,100%{opacity:.45;transform:scale(.82)}50%{opacity:1;transform:scale(1.15)}}@keyframes realButtonGlow{0%,55%{left:-45%}78%,100%{left:125%}}@keyframes realStateDot{0%,100%{opacity:.25;transform:scale(.78)}50%{opacity:1;transform:scale(1.25)}}
@media(max-width:1000px){.realLoginHeader{top:20px;left:24px;right:24px}.realLoginInfo{left:36px;top:35%;width:47vw;transform:none}.realLoginPanel{right:32px}.realLoginRadar{left:-25vw}.realLoginFooter{bottom:14px}}
@media(max-width:720px){body.loginPage.loginRealMountain{overflow:auto}.realLoginScene{min-height:760px}.realLoginBg{background-position:center center}.realLoginHeader{left:18px;right:18px;top:15px}.realLoginBrand strong{font-size:18px}.realLoginBrand small{display:none}.realBrandMark{width:34px;height:34px}.realLoginOnline{font-size:10px;padding:6px 8px}.realLoginOnline time{display:none}.realLoginInfo{display:none}.realLoginPanel{position:relative;top:auto;right:auto;left:auto;width:calc(100% - 34px);margin:0 auto;padding:30px 25px 21px;transform:none}.realLoginScene{display:flex;align-items:center;padding:76px 0 52px}.realLoginGrid{opacity:.16}.realLoginRadar{left:-42vw;top:2vh;width:110vw}.realLoginFooter{bottom:14px;font-size:10px}.panelTitle h2{font-size:24px}.realCaptcha button{min-width:103px}.realCaptcha input{padding-right:113px}}

/* ===== V340 中央登录框动态态势风 ===== */
body.loginPage.loginCenterMountain{margin:0;min-height:100vh;overflow:hidden;background:#020a16;color:#eefaff;font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif}
.loginCenterMountain *{box-sizing:border-box}.centerLoginScene{position:relative;min-height:100vh;overflow:hidden;isolation:isolate;background:#020a16}.centerLoginBg{position:absolute;z-index:-8;inset:0;background:url('/assets/login_real_mountain_bg.png?v=20260630_v340') center center/cover no-repeat;transform:scale(1.01);animation:centerBgFloat 18s ease-in-out infinite alternate}.centerLoginShade{position:absolute;z-index:-7;inset:0;background:linear-gradient(90deg,rgba(0,7,22,.52),rgba(1,14,35,.13) 47%,rgba(0,7,22,.52)),linear-gradient(180deg,rgba(0,7,22,.2),transparent 36%,rgba(0,6,18,.5));pointer-events:none}.centerStarField{position:absolute;z-index:-6;inset:0;opacity:.6;background-image:radial-gradient(circle at 11% 14%,#c9f5ff 0 1px,transparent 1.7px),radial-gradient(circle at 28% 9%,#58d8ff 0 1px,transparent 1.5px),radial-gradient(circle at 44% 18%,#d5f8ff 0 1px,transparent 1.7px),radial-gradient(circle at 59% 11%,#73dcff 0 1px,transparent 1.4px),radial-gradient(circle at 77% 17%,#b7edff 0 1px,transparent 1.5px),radial-gradient(circle at 91% 8%,#51cfff 0 1px,transparent 1.5px);animation:centerStars 4.8s ease-in-out infinite alternate}.centerAtmosphere{position:absolute;z-index:-5;inset:0;background:radial-gradient(ellipse at 50% 32%,rgba(24,132,228,.24),transparent 30%),radial-gradient(ellipse at 50% 58%,rgba(0,91,186,.14),transparent 38%);pointer-events:none}.centerDroneFocus{position:absolute;z-index:-2;left:50%;top:14.4vh;width:min(46vw,720px);height:min(21vw,330px);transform:translateX(-50%);pointer-events:none}.centerDroneFocus:before{content:"";position:absolute;left:50%;bottom:0;width:96%;height:58%;transform:translateX(-50%);border-radius:50%;border:1px solid rgba(34,188,255,.64);box-shadow:0 0 22px rgba(20,181,255,.28),inset 0 0 42px rgba(9,115,221,.14);animation:focusPulse 3.6s ease-out infinite}.focusHalo{position:absolute;left:50%;bottom:8%;width:75%;aspect-ratio:2.5/1;transform:translateX(-50%);border:1px solid rgba(77,220,255,.5);border-radius:50%;box-shadow:0 0 18px rgba(41,200,255,.25);animation:focusRing 3.8s ease-out infinite}.focusHalo.haloTwo{width:50%;bottom:17%;animation-delay:1.7s}.centerDroneFocus span{position:absolute;left:50%;bottom:19%;width:8px;height:8px;transform:translateX(-50%);border-radius:50%;background:#76eaff;box-shadow:0 0 8px #43dfff,0 0 26px #22caff;animation:centerBeacon 1.8s ease-in-out infinite}.centerOrbit{position:absolute;z-index:-3;left:50%;bottom:-26vh;width:min(94vw,1420px);height:min(50vw,760px);transform:translateX(-50%);border:1px solid rgba(45,179,255,.25);border-radius:50%;box-shadow:inset 0 0 55px rgba(26,157,248,.07);mask-image:linear-gradient(180deg,transparent 0%,#000 42%,#000 100%);pointer-events:none}.centerOrbit:before,.centerOrbit:after{content:"";position:absolute;border:1px solid rgba(49,192,255,.19);border-radius:50%;inset:12%}.centerOrbit:after{inset:27%;border-color:rgba(98,224,255,.23)}.orbitOne{animation:orbitBreath 4.6s ease-in-out infinite}.orbitTwo{width:min(70vw,1050px);height:min(38vw,580px);bottom:-18vh;opacity:.78;animation:orbitBreath 5.2s 1.6s ease-in-out infinite}.centerRadarPulse{position:absolute;z-index:-2;left:50%;bottom:-15vh;width:min(48vw,760px);aspect-ratio:1;transform:translateX(-50%);border-radius:50%;border:1px solid rgba(74,218,255,.28);opacity:0;animation:centerRadar 5.8s ease-out infinite}.pulseTwo{animation-delay:2.9s}.centerFloorGrid{position:absolute;z-index:-1;left:-14%;right:-14%;bottom:-40vh;height:85vh;opacity:.28;background:linear-gradient(rgba(72,191,255,.28) 1px,transparent 1px),linear-gradient(90deg,rgba(72,191,255,.28) 1px,transparent 1px);background-size:48px 48px;transform:perspective(740px) rotateX(63deg);transform-origin:center bottom;mask-image:linear-gradient(180deg,transparent 9%,#000 54%,transparent);pointer-events:none}.centerParticles{position:absolute;z-index:2;inset:0;pointer-events:none}.centerParticles i{position:absolute;width:3px;height:3px;border-radius:50%;background:#69e1ff;box-shadow:0 0 10px #22cbff;opacity:.15;animation:centerParticle 8s ease-in-out infinite}.centerParticles i:nth-child(1){left:8%;top:30%;animation-delay:-1s}.centerParticles i:nth-child(2){left:15%;top:71%;animation-delay:-3s}.centerParticles i:nth-child(3){left:26%;top:20%;animation-delay:-5s}.centerParticles i:nth-child(4){left:35%;top:67%;animation-delay:-2s}.centerParticles i:nth-child(5){left:45%;top:10%;animation-delay:-4s}.centerParticles i:nth-child(6){left:57%;top:72%;animation-delay:-6s}.centerParticles i:nth-child(7){left:68%;top:23%;animation-delay:-.5s}.centerParticles i:nth-child(8){left:77%;top:62%;animation-delay:-5.5s}.centerParticles i:nth-child(9){left:86%;top:34%;animation-delay:-2.5s}.centerParticles i:nth-child(10){left:94%;top:70%;animation-delay:-4.5s}.centerParticles i:nth-child(11){left:20%;top:45%;animation-delay:-6.7s}.centerParticles i:nth-child(12){left:81%;top:15%;animation-delay:-1.7s}
.centerLoginHeader{position:absolute;z-index:7;left:clamp(28px,3.2vw,54px);right:clamp(28px,3.2vw,54px);top:clamp(22px,3vh,42px);display:flex;justify-content:space-between;align-items:center}.centerBrand{display:flex;align-items:center;gap:13px}.centerBrandMark{position:relative;display:block;width:46px;height:46px;border-radius:13px;background:linear-gradient(145deg,#1ed5ff,#0b55d2);box-shadow:0 0 22px rgba(34,196,255,.48),inset 0 1px 0 rgba(255,255,255,.46)}.centerBrandMark:before{content:"";position:absolute;inset:11px;border:2px solid #e7fbff;border-radius:6px;transform:rotate(30deg)}.centerBrandMark i{position:absolute;left:10px;right:10px;top:22px;height:2px;background:#e7fbff;transform:rotate(-30deg)}.centerBrandMark b{position:absolute;left:22px;top:10px;width:2px;height:25px;background:#e7fbff;transform:rotate(30deg)}.centerBrand strong{display:block;font-size:24px;letter-spacing:.4px;color:#f5fdff;text-shadow:0 0 16px rgba(80,213,255,.48)}.centerBrand small{display:block;margin-top:2px;color:#8dd5ff;font-size:10px;letter-spacing:1.25px}.centerSecure{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid rgba(82,194,255,.26);border-radius:5px;background:rgba(2,22,50,.26);color:#72e1ff;font-size:13px;backdrop-filter:blur(5px)}.centerSecure b{font-weight:700}.centerSecure time{padding-left:9px;border-left:1px solid rgba(108,210,255,.28);color:#f1fbff;font-variant-numeric:tabular-nums}.secureIcon{font-size:17px;color:#3edcff;animation:secureGlow 2s ease-in-out infinite}
.centerSideData{position:absolute;z-index:3;top:39%;width:clamp(146px,12vw,220px);color:#95ddff;text-shadow:0 0 12px rgba(4,42,88,.7)}.centerSideLeft{left:clamp(32px,4.2vw,78px)}.centerSideRight{right:clamp(32px,4.2vw,78px)}.sideCorner{position:absolute;top:-62px;width:100%;height:1px;background:linear-gradient(90deg,#26ceff,transparent);opacity:.72}.sideCorner:before{content:"";position:absolute;left:0;top:0;width:1px;height:38px;background:#26ceff}.centerSideRight .sideCorner{background:linear-gradient(90deg,transparent,#26ceff)}.centerSideRight .sideCorner:before{left:auto;right:0}.sideMetric,.statusWidget{position:relative;padding:13px 0;border-bottom:1px solid rgba(85,196,255,.2)}.sideMetric small,.statusWidget small,.signalWidget small{display:block;margin-bottom:6px;color:#5aa9d3;font-size:10px;letter-spacing:.3px}.sideMetric b,.statusWidget b{display:block;color:#a7e3ff;font-size:13px;font-weight:500}.sideMetric strong{display:block;color:#50cfff;font-size:27px;line-height:1;font-weight:700}.sideMetric em{font-style:normal;font-size:12px;margin-left:4px;color:#8fcff0}.sideMetric i{position:absolute;left:0;bottom:-1px;width:38%;height:1px;background:#31cbff;box-shadow:0 0 8px #24bfff;animation:metricLine 3.5s ease-in-out infinite}.statusWidget b{display:flex;align-items:center;gap:7px}.statusWidget b i{width:6px;height:6px;border-radius:50%;background:#4cf1bf;box-shadow:0 0 9px #3ce8b5;animation:stateBlink 1.9s ease-in-out infinite}.signalWidget{padding:13px 0 16px;border-bottom:1px solid rgba(85,196,255,.2)}.signalWidget div{height:35px;display:flex;align-items:end;gap:5px}.signalWidget i{display:block;width:5px;background:linear-gradient(180deg,#6eeaff,#1384e4);box-shadow:0 0 7px rgba(32,200,255,.54);transform-origin:bottom;animation:signalWave 1.9s ease-in-out infinite}.signalWidget i:nth-child(1){height:8px}.signalWidget i:nth-child(2){height:13px;animation-delay:-.3s}.signalWidget i:nth-child(3){height:18px;animation-delay:-.8s}.signalWidget i:nth-child(4){height:15px;animation-delay:-.4s}.signalWidget i:nth-child(5){height:23px;animation-delay:-1.2s}.signalWidget i:nth-child(6){height:18px;animation-delay:-.7s}.signalWidget i:nth-child(7){height:30px;animation-delay:-.2s}.signalWidget i:nth-child(8){height:24px;animation-delay:-1.4s}.signalWidget i:nth-child(9){height:34px;animation-delay:-1s}.centerLocator{position:absolute;left:42%;top:calc(100% + 70px);width:70px;height:86px}.centerLocator span{position:absolute;left:50%;bottom:0;width:4px;height:58px;background:linear-gradient(#4ce0ff,transparent);box-shadow:0 0 14px #35ccff;animation:locatorRise 2.6s ease-in-out infinite}.centerLocator i{position:absolute;left:calc(50% - 11px);bottom:52px;width:22px;height:22px;border:1px solid #2cd4ff;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 0 14px rgba(42,206,255,.55);animation:locatorFloat 2.6s ease-in-out infinite}.centerLocator b{position:absolute;left:calc(50% - 27px);bottom:-4px;width:54px;height:16px;border:1px solid rgba(55,215,255,.48);border-radius:50%;box-shadow:0 0 13px rgba(38,205,255,.34);animation:locatorRing 2.6s ease-in-out infinite}
.centerLoginPanel{position:absolute;z-index:6;left:50%;top:51.7%;width:min(430px,calc(100vw - 36px));padding:35px 42px 25px;transform:translate(-50%,-50%);border:1px solid rgba(92,207,255,.55);border-radius:18px;background:linear-gradient(145deg,rgba(9,45,91,.78),rgba(3,18,48,.88));box-shadow:0 28px 80px rgba(0,0,0,.46),0 0 48px rgba(25,160,255,.16),inset 0 1px 0 rgba(221,250,255,.15);backdrop-filter:blur(16px);overflow:hidden}.centerLoginPanel:before{content:"";position:absolute;inset:7px;border:1px solid rgba(128,218,255,.1);border-radius:12px;pointer-events:none}.centerPanelTop{position:absolute;top:0;left:22%;right:22%;height:2px;background:linear-gradient(90deg,transparent,#4addff,transparent);box-shadow:0 0 16px #28caff}.centerPanelCorners i{position:absolute;width:14px;height:14px;border-color:#46d9ff;border-style:solid;opacity:.86}.centerPanelCorners i:nth-child(1){left:9px;top:9px;border-width:1px 0 0 1px}.centerPanelCorners i:nth-child(2){right:9px;top:9px;border-width:1px 1px 0 0}.centerPanelCorners i:nth-child(3){left:9px;bottom:9px;border-width:0 0 1px 1px}.centerPanelCorners i:nth-child(4){right:9px;bottom:9px;border-width:0 1px 1px 0}.centerPanelHeading{position:relative;display:flex;align-items:center;justify-content:center;gap:17px;margin-top:2px}.centerPanelHeading span{width:48px;height:2px;background:linear-gradient(90deg,transparent,#2dcfff);box-shadow:0 0 8px #26c9ff}.centerPanelHeading span:last-child{transform:scaleX(-1)}.centerPanelHeading h2{margin:0;color:#f4fcff;font-size:28px;letter-spacing:4px;text-shadow:0 0 17px rgba(66,208,255,.55)}.centerPanelSub{position:relative;margin:12px 0 23px;text-align:center;color:rgba(183,226,255,.72);font-size:11px;letter-spacing:.65px}.centerField{position:relative;display:block;margin:0 0 15px}.centerField>span{display:block;margin-bottom:7px;color:#d7f4ff;font-size:12px;font-weight:700}.centerField>div{position:relative}.centerField input{width:100%;height:48px;padding:0 13px 0 42px;border:1px solid rgba(89,186,252,.43);border-radius:8px;outline:0;background:rgba(1,14,38,.58);color:#f2fbff;font-size:14px;box-shadow:inset 0 0 14px rgba(14,101,180,.1);transition:.2s}.centerField input::placeholder{color:#7797b4}.centerField input:focus{border-color:#4cd8ff;box-shadow:0 0 0 3px rgba(40,189,255,.12),inset 0 0 14px rgba(19,97,172,.16)}.centerCaptcha input{padding-right:126px}.centerCaptcha button{position:absolute;right:5px;top:5px;min-width:112px;height:38px;padding:0 8px;border:1px solid rgba(91,197,255,.42);border-radius:6px;background:rgba(24,132,214,.23);color:#dff6ff;font-size:13px;font-weight:700;cursor:pointer;transition:.2s}.centerCaptcha button:hover{background:rgba(35,150,230,.43);border-color:#72e3ff}.centerLoginSubmit{position:relative;display:flex;justify-content:center;align-items:center;width:100%;height:52px;margin-top:12px;border:1px solid #63e1ff;border-radius:8px;background:linear-gradient(100deg,#0787df,#18b8f8 52%,#0a6de0);color:#f4fdff;font-size:18px;font-weight:800;letter-spacing:7px;cursor:pointer;box-shadow:0 0 0 1px rgba(221,252,255,.2) inset,0 8px 24px rgba(0,115,255,.28);overflow:hidden;transition:.18s}.centerLoginSubmit:before{content:"";position:absolute;top:0;bottom:0;left:-38%;width:28%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);transform:skewX(-25deg);animation:centerButtonShine 3.5s ease-in-out infinite}.centerLoginSubmit:hover{transform:translateY(-1px);filter:brightness(1.1)}.centerLoginSubmit:disabled{opacity:.72;cursor:wait}.centerLoginMsg{min-height:18px;margin-top:8px;text-align:center;color:#ffb6ba;font-size:12px}.centerLoginState{display:flex;justify-content:center;align-items:center;gap:7px;color:#63dcff;font-size:12px}.centerLoginState b{width:8px;height:8px;border:1px solid #55e7ff;border-radius:50%;box-shadow:0 0 10px #45dbff;animation:stateBlink 2s ease-in-out infinite}.centerLoginFooter{position:absolute;z-index:3;bottom:18px;left:0;right:0;text-align:center;color:rgba(147,209,243,.58);font-size:11px;letter-spacing:.4px}
@keyframes centerBgFloat{to{transform:scale(1.045) translateY(-.4%)}}@keyframes centerStars{to{opacity:.95}}@keyframes focusPulse{0%{transform:translateX(-50%) scale(.84);opacity:.78}75%,100%{transform:translateX(-50%) scale(1.15);opacity:0}}@keyframes focusRing{0%{transform:translateX(-50%) scale(.83);opacity:.7}100%{transform:translateX(-50%) scale(1.18);opacity:0}}@keyframes centerBeacon{50%{transform:translateX(-50%) scale(1.7);filter:brightness(1.4)}}@keyframes orbitBreath{50%{opacity:.56;transform:translateX(-50%) scale(1.02)}}@keyframes centerRadar{0%{transform:translateX(-50%) scale(.22);opacity:.7}100%{transform:translateX(-50%) scale(1.15);opacity:0}}@keyframes centerParticle{50%{transform:translateY(-19px) scale(1.75);opacity:.9}}@keyframes secureGlow{50%{filter:brightness(1.55);text-shadow:0 0 13px #38d6ff}}@keyframes metricLine{50%{width:82%;opacity:.55}}@keyframes stateBlink{50%{opacity:.38;transform:scale(.78)}}@keyframes signalWave{50%{transform:scaleY(.45);filter:brightness(.7)}}@keyframes locatorRise{50%{height:70px;opacity:.45}}@keyframes locatorFloat{50%{transform:rotate(-45deg) translate(-4px,-4px)}}@keyframes locatorRing{50%{transform:scale(1.45);opacity:.2}}@keyframes centerButtonShine{0%,54%{left:-38%}72%,100%{left:120%}}
@media(max-width:1000px){.centerSideData{opacity:.62;transform:scale(.84)}.centerSideLeft{left:20px}.centerSideRight{right:20px}.centerLoginPanel{top:54%}.centerDroneFocus{top:11vh}}@media(max-width:760px){.centerSideData{display:none}.centerLoginHeader{left:20px;right:20px;top:18px}.centerBrand strong{font-size:19px}.centerBrandMark{width:38px;height:38px}.centerBrandMark:before{inset:9px}.centerBrandMark i{left:9px;right:9px;top:18px}.centerBrandMark b{left:18px;top:9px;height:21px}.centerSecure{padding:7px 8px;font-size:11px}.centerSecure time{display:none}.centerLoginPanel{top:55%;padding:29px 28px 22px}.centerPanelHeading h2{font-size:25px}.centerDroneFocus{width:82vw;top:13vh}.centerOrbit{width:130vw}.centerLoginFooter{font-size:10px;bottom:10px}}
@media(max-height:680px){.centerLoginPanel{top:57%;padding-top:24px;padding-bottom:18px;transform:translate(-50%,-50%) scale(.9)}.centerDroneFocus{top:8vh}.centerLoginFooter{bottom:8px}}
.realLoginScene{position:relative;min-height:100vh;overflow:hidden;isolation:isolate;background:#020a16}
.realLoginBg{position:absolute;z-index:-6;inset:0;background:url('/assets/login_real_mountain_bg.png?v=20260630_v3399') center center/cover no-repeat;transform:scale(1.015);animation:realBgBreathe 18s ease-in-out infinite alternate}
.realLoginShade{position:absolute;z-index:-5;inset:0;background:linear-gradient(90deg,rgba(0,7,22,.54) 0%,rgba(1,11,30,.28) 41%,rgba(0,8,24,.38) 100%),linear-gradient(180deg,rgba(0,7,20,.22) 0%,transparent 39%,rgba(0,5,17,.42) 100%);pointer-events:none}
.realLoginStars{position:absolute;z-index:-4;inset:0;opacity:.42;background-image:radial-gradient(circle at 14% 16%,#d7f6ff 0 1px,transparent 1.7px),radial-gradient(circle at 39% 12%,#6edcff 0 1px,transparent 1.5px),radial-gradient(circle at 59% 27%,#b7efff 0 1px,transparent 1.6px),radial-gradient(circle at 81% 12%,#6dcfff 0 1px,transparent 1.5px),radial-gradient(circle at 92% 31%,#d8f8ff 0 1px,transparent 1.6px);animation:realStarPulse 5.4s ease-in-out infinite alternate}
.realLoginRadar{position:absolute;z-index:-2;left:-14vw;top:11vh;width:min(64vw,930px);aspect-ratio:1;border-radius:50%;border:1px solid rgba(57,203,255,.20);box-shadow:inset 0 0 60px rgba(44,169,255,.05),0 0 22px rgba(24,159,255,.05);mask-image:linear-gradient(90deg,#000 0 58%,transparent 84%);pointer-events:none}.realLoginRadar:before,.realLoginRadar:after{content:"";position:absolute;border:1px solid rgba(62,203,255,.16);border-radius:50%;inset:12%;}.realLoginRadar:after{inset:27%;border-color:rgba(94,221,255,.23)}.radarA{animation:realRadar 7s ease-out infinite}.radarB{left:-7vw;top:20vh;width:min(43vw,650px);opacity:.64;animation:realRadar 7s 2.8s ease-out infinite}
.realLoginBeam{position:absolute;z-index:-1;left:-13vw;top:16vh;width:58vw;height:56vw;max-width:900px;max-height:900px;background:conic-gradient(from 27deg at 50% 50%,rgba(37,198,255,.16),rgba(36,172,255,.03) 14deg,transparent 25deg);clip-path:circle(50% at 50% 50%);mix-blend-mode:screen;opacity:.48;animation:realBeam 9s linear infinite;pointer-events:none}
.realLoginGrid{position:absolute;z-index:-1;left:-10%;right:-10%;bottom:-38vh;height:78vh;opacity:.25;background:linear-gradient(rgba(74,196,255,.32) 1px,transparent 1px),linear-gradient(90deg,rgba(74,196,255,.32) 1px,transparent 1px);background-size:58px 58px;transform:perspective(680px) rotateX(62deg);transform-origin:center bottom;mask-image:linear-gradient(180deg,transparent,#000 52%,transparent);pointer-events:none}
.realLoginParticles{position:absolute;z-index:2;inset:0;pointer-events:none}.realLoginParticles i{position:absolute;width:3px;height:3px;border-radius:50%;background:#72e7ff;box-shadow:0 0 10px #36cfff;opacity:.15;animation:realParticle 8s ease-in-out infinite}.realLoginParticles i:nth-child(1){left:13%;top:33%;animation-delay:0s}.realLoginParticles i:nth-child(2){left:21%;top:57%;animation-delay:-2s}.realLoginParticles i:nth-child(3){left:38%;top:19%;animation-delay:-5s}.realLoginParticles i:nth-child(4){left:50%;top:64%;animation-delay:-1s}.realLoginParticles i:nth-child(5){left:65%;top:24%;animation-delay:-4s}.realLoginParticles i:nth-child(6){left:73%;top:74%;animation-delay:-6s}.realLoginParticles i:nth-child(7){left:84%;top:41%;animation-delay:-3s}.realLoginParticles i:nth-child(8){left:93%;top:18%;animation-delay:-7s}.realLoginParticles i:nth-child(9){left:31%;top:79%;animation-delay:-2.5s}.realLoginParticles i:nth-child(10){left:58%;top:12%;animation-delay:-4.5s}
.realLoginHeader{position:absolute;z-index:4;top:28px;left:42px;right:42px;display:flex;align-items:center;justify-content:space-between}.realLoginBrand{display:flex;align-items:center;gap:12px}.realBrandMark{position:relative;width:40px;height:40px;border:1px solid rgba(127,225,255,.86);border-radius:12px;background:linear-gradient(145deg,rgba(38,173,255,.82),rgba(5,64,156,.72));box-shadow:0 0 20px rgba(53,193,255,.45),inset 0 0 14px rgba(233,252,255,.34)}.realBrandMark:before{content:"";position:absolute;inset:9px;border:2px solid #e9fbff;border-radius:6px;transform:rotate(30deg)}.realBrandMark i{position:absolute;left:9px;right:9px;top:18px;height:2px;background:#e6fbff;transform:rotate(-30deg)}.realBrandMark b{position:absolute;left:18px;top:9px;width:2px;height:22px;background:#e6fbff;transform:rotate(30deg)}.realLoginBrand strong{display:block;color:#eefaff;font-size:22px;letter-spacing:.5px;text-shadow:0 0 14px rgba(94,217,255,.46)}.realLoginBrand small{display:block;margin-top:3px;color:rgba(180,223,255,.69);font-size:10px;letter-spacing:1.2px}.realLoginOnline{display:flex;align-items:center;gap:8px;padding:7px 12px;border:1px solid rgba(102,201,255,.25);border-radius:16px;background:rgba(1,17,43,.34);color:rgba(208,241,255,.86);font-size:12px;backdrop-filter:blur(8px)}.realLoginOnline span{width:7px;height:7px;border-radius:50%;background:#46ecbc;box-shadow:0 0 10px #41f2c0;animation:realOnline 1.8s ease-in-out infinite}.realLoginOnline time{font-variant-numeric:tabular-nums;color:#74ddff}
.realLoginInfo{position:absolute;z-index:3;left:max(6vw,54px);top:50%;width:min(520px,39vw);transform:translateY(-44%);text-shadow:0 2px 16px rgba(0,12,34,.58)}.infoKicker{display:flex;align-items:center;gap:9px;margin-bottom:19px;color:#7fe1ff;font-size:11px;letter-spacing:1.5px}.infoKicker i{width:38px;height:1px;background:linear-gradient(90deg,#54d9ff,transparent)}.realLoginInfo h1{margin:0;color:#f4fcff;font-size:clamp(31px,3.1vw,53px);line-height:1.3;letter-spacing:2px;font-weight:650}.realLoginInfo h1 em{font-style:normal;color:#65dcff;text-shadow:0 0 22px rgba(43,198,255,.6)}.realLoginInfo p{margin:20px 0;color:rgba(220,241,255,.85);font-size:15px;letter-spacing:1.5px}.infoLine{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-left:2px solid #48d5ff;background:linear-gradient(90deg,rgba(24,145,223,.19),transparent);color:#c7ebff;font-size:12px}.infoLine span{color:#65f5ce;text-shadow:0 0 9px #45edc0}
.realLoginPanel{position:absolute;z-index:5;right:clamp(44px,10vw,170px);top:50%;width:min(416px,calc(100vw - 36px));padding:35px 38px 25px;transform:translateY(-48%);border:1px solid rgba(105,209,255,.52);border-radius:22px;background:linear-gradient(145deg,rgba(7,37,76,.81),rgba(3,19,47,.9));box-shadow:0 28px 90px rgba(0,0,0,.48),0 0 45px rgba(28,157,255,.16),inset 0 1px 0 rgba(218,249,255,.16);backdrop-filter:blur(18px);overflow:hidden}.realLoginPanel:before{content:"";position:absolute;inset:8px;border-radius:16px;border:1px solid rgba(128,219,255,.09);pointer-events:none}.panelTopLine{position:absolute;top:0;left:18%;right:18%;height:2px;background:linear-gradient(90deg,transparent,#50d9ff,transparent);box-shadow:0 0 15px #37cfff}.panelTitle{position:relative;display:flex;align-items:center;gap:12px}.panelShield{display:grid;place-items:center;width:41px;height:41px;border:1px solid rgba(113,222,255,.64);border-radius:12px;background:rgba(31,133,215,.22);color:#d8faff;font-size:27px;line-height:1;box-shadow:inset 0 0 13px rgba(67,193,255,.22)}.panelTitle small{color:#71d5ff;font-size:10px;letter-spacing:1.1px}.panelTitle h2{margin:2px 0 0;color:#f4fcff;font-size:27px;letter-spacing:3px}.panelSub{position:relative;margin:18px 0 24px;color:rgba(197,231,255,.7);font-size:12px}.realField{position:relative;display:block;margin:0 0 16px}.realField>span{display:block;margin-bottom:7px;color:#d9f4ff;font-size:12px;font-weight:700}.realField>div{position:relative}.realField input{width:100%;height:47px;padding:0 13px 0 42px;border:1px solid rgba(88,179,247,.42);border-radius:9px;outline:0;background:rgba(1,14,38,.56);color:#f1fbff;font-size:14px;box-shadow:inset 0 0 14px rgba(19,97,172,.10);transition:border-color .2s,box-shadow .2s}.realField input::placeholder{color:#7897b4}.realField input:focus{border-color:#4bd5ff;box-shadow:0 0 0 3px rgba(40,189,255,.12),inset 0 0 14px rgba(19,97,172,.14)}.fieldUser,.fieldLock,.fieldCaptcha{position:absolute;z-index:1;left:15px;top:50%;width:15px;height:15px;transform:translateY(-50%);border:1.5px solid #93dffc;opacity:.93}.fieldUser{border-radius:50% 50% 44% 44%;clip-path:polygon(22% 0,78% 0,100% 38%,85% 48%,85% 100%,15% 100%,15% 48%,0 38%)}.fieldLock{border-radius:3px;margin-top:3px}.fieldLock:before{content:"";position:absolute;left:3px;top:-8px;width:7px;height:8px;border:1.5px solid #93dffc;border-bottom:0;border-radius:8px 8px 0 0}.fieldCaptcha{border-radius:3px}.fieldCaptcha:before,.fieldCaptcha:after{content:"";position:absolute;left:3px;right:3px;height:1px;background:#93dffc}.fieldCaptcha:before{top:4px}.fieldCaptcha:after{bottom:4px}.realCaptcha input{padding-right:127px}.realCaptcha button{position:absolute;right:5px;top:5px;height:37px;min-width:113px;padding:0 8px;border:1px solid rgba(85,193,255,.44);border-radius:7px;background:rgba(26,129,211,.24);color:#dff6ff;font-size:12px;font-weight:700;cursor:pointer;transition:.2s}.realCaptcha button:hover{background:rgba(42,151,232,.48);border-color:#68dfff}.realLoginSubmit{position:relative;display:flex;align-items:center;justify-content:center;gap:15px;width:100%;height:49px;margin-top:7px;border:1px solid #61dcff;border-radius:9px;background:linear-gradient(100deg,#087bd8,#1aabf2 52%,#0871d0);color:#effcff;font-size:17px;font-weight:800;letter-spacing:7px;cursor:pointer;box-shadow:0 0 0 1px rgba(220,252,255,.2) inset,0 8px 22px rgba(0,115,255,.25);overflow:hidden;transition:transform .18s,filter .18s}.realLoginSubmit:before{content:"";position:absolute;top:0;bottom:0;left:-40%;width:30%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-25deg);animation:realButtonGlow 3.4s ease-in-out infinite}.realLoginSubmit:hover{transform:translateY(-1px);filter:brightness(1.13)}.realLoginSubmit:disabled{opacity:.7;cursor:wait;transform:none}.realLoginSubmit i{font-style:normal;font-size:19px;letter-spacing:0}.realLoginMsg{min-height:18px;margin-top:10px;text-align:center;color:#ffabb4;font-size:12px}.realLoginState{display:flex;align-items:center;gap:8px;padding-top:7px;color:rgba(164,220,249,.67);font-size:11px}.realLoginState b{width:7px;height:7px;border-radius:50%;background:#46edbf;box-shadow:0 0 8px #45efc1;animation:realOnline 1.8s ease-in-out infinite}.realLoginState i{width:4px;height:4px;margin-left:auto;border-radius:50%;background:#41cfff;box-shadow:0 0 6px #35c9ff;animation:realStateDot 1.2s ease-in-out infinite}.realLoginState i+i{margin-left:0;animation-delay:.18s}.realLoginState i+i+i{animation-delay:.36s}.realPanelFoot{margin-top:16px;padding-top:13px;border-top:1px solid rgba(104,194,255,.14);color:rgba(160,203,231,.48);font-size:10px;text-align:center}.realLoginFooter{position:absolute;z-index:3;bottom:21px;left:0;right:0;text-align:center;color:rgba(177,217,243,.55);font-size:11px;letter-spacing:.5px}
@keyframes realBgBreathe{from{transform:scale(1.015)}to{transform:scale(1.045)}}@keyframes realStarPulse{from{opacity:.24}to{opacity:.52}}@keyframes realRadar{0%{opacity:0;transform:scale(.74)}24%{opacity:.58}100%{opacity:0;transform:scale(1.08)}}@keyframes realBeam{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes realParticle{0%,100%{opacity:.12;transform:translate3d(0,0,0) scale(.8)}50%{opacity:.95;transform:translate3d(12px,-20px,0) scale(1.35)}}@keyframes realOnline{0%,100%{opacity:.45;transform:scale(.82)}50%{opacity:1;transform:scale(1.15)}}@keyframes realButtonGlow{0%,55%{left:-45%}78%,100%{left:125%}}@keyframes realStateDot{0%,100%{opacity:.25;transform:scale(.78)}50%{opacity:1;transform:scale(1.25)}}
@media(max-width:1000px){.realLoginHeader{top:20px;left:24px;right:24px}.realLoginInfo{left:36px;top:35%;width:47vw;transform:none}.realLoginPanel{right:32px}.realLoginRadar{left:-25vw}.realLoginFooter{bottom:14px}}
@media(max-width:720px){body.loginPage.loginRealMountain{overflow:auto}.realLoginScene{min-height:760px}.realLoginBg{background-position:center center}.realLoginHeader{left:18px;right:18px;top:15px}.realLoginBrand strong{font-size:18px}.realLoginBrand small{display:none}.realBrandMark{width:34px;height:34px}.realLoginOnline{font-size:10px;padding:6px 8px}.realLoginOnline time{display:none}.realLoginInfo{display:none}.realLoginPanel{position:relative;top:auto;right:auto;left:auto;width:calc(100% - 34px);margin:0 auto;padding:30px 25px 21px;transform:none}.realLoginScene{display:flex;align-items:center;padding:76px 0 52px}.realLoginGrid{opacity:.16}.realLoginRadar{left:-42vw;top:2vh;width:110vw}.realLoginFooter{bottom:14px;font-size:10px}.panelTitle h2{font-size:24px}.realCaptcha button{min-width:103px}.realCaptcha input{padding-right:113px}}


/* V340.2：登录页粒子增强 + 静止背景修复。背景图不再有缩放呼吸效果。 */
.realLoginBg,
.centerLoginBg{
  transform:none !important;
  animation:none !important;
}

/* 风格1（右侧登录框）：20颗更亮、更快的漂浮粒子 */
.realLoginParticles i{
  width:4px;
  height:4px;
  opacity:.24;
  animation-duration:4.8s;
}
.realLoginParticles i:nth-child(11){left:7%;top:18%;animation-delay:-1.2s}
.realLoginParticles i:nth-child(12){left:17%;top:82%;animation-delay:-3.8s}
.realLoginParticles i:nth-child(13){left:28%;top:43%;animation-delay:-5.6s}
.realLoginParticles i:nth-child(14){left:41%;top:88%;animation-delay:-2.1s}
.realLoginParticles i:nth-child(15){left:52%;top:31%;animation-delay:-6.3s}
.realLoginParticles i:nth-child(16){left:63%;top:81%;animation-delay:-4.7s}
.realLoginParticles i:nth-child(17){left:74%;top:14%;animation-delay:-7.1s}
.realLoginParticles i:nth-child(18){left:83%;top:57%;animation-delay:-2.9s}
.realLoginParticles i:nth-child(19){left:91%;top:84%;animation-delay:-5.1s}
.realLoginParticles i:nth-child(20){left:47%;top:8%;animation-delay:-.7s}

/* 风格2（中央登录框）：24颗更亮、更快的漂浮粒子 */
.centerParticles i{
  width:4px;
  height:4px;
  opacity:.24;
  animation-duration:4.8s;
}
.centerParticles i:nth-child(13){left:5%;top:12%;animation-delay:-2.4s}
.centerParticles i:nth-child(14){left:12%;top:48%;animation-delay:-4.2s}
.centerParticles i:nth-child(15){left:19%;top:87%;animation-delay:-6.5s}
.centerParticles i:nth-child(16){left:30%;top:38%;animation-delay:-1.6s}
.centerParticles i:nth-child(17){left:39%;top:82%;animation-delay:-5.8s}
.centerParticles i:nth-child(18){left:48%;top:27%;animation-delay:-3.1s}
.centerParticles i:nth-child(19){left:55%;top:91%;animation-delay:-7.2s}
.centerParticles i:nth-child(20){left:64%;top:47%;animation-delay:-2.8s}
.centerParticles i:nth-child(21){left:72%;top:84%;animation-delay:-5.4s}
.centerParticles i:nth-child(22){left:79%;top:28%;animation-delay:-1.1s}
.centerParticles i:nth-child(23){left:88%;top:55%;animation-delay:-6.1s}
.centerParticles i:nth-child(24){left:96%;top:20%;animation-delay:-3.7s}

@keyframes realParticle{
  0%,100%{opacity:.12;transform:translate3d(0,0,0) scale(.8)}
  50%{opacity:1;transform:translate3d(10px,-34px,0) scale(2)}
}
@keyframes centerParticle{
  0%,100%{opacity:.12;transform:translate3d(0,0,0) scale(.8)}
  50%{opacity:1;transform:translate3d(10px,-34px,0) scale(2)}
}

/* V340.3：BSRID 品牌 LOGO 应用 */
.logo.brandLogo{
  display:block;
  width:42px;
  height:42px;
  object-fit:contain;
  border-radius:0;
  background:transparent;
  box-shadow:0 0 18px rgba(35,193,255,.34);
  filter:drop-shadow(0 0 6px rgba(47,204,255,.38));
}
.realBrandMark,
.centerBrandMark{
  display:block;
  object-fit:contain;
  background:transparent !important;
  border:0 !important;
  border-radius:0 !important;
  box-shadow:0 0 18px rgba(52,202,255,.4) !important;
  filter:drop-shadow(0 0 5px rgba(56,207,255,.42));
}
.realBrandMark:before,.realBrandMark:after,.centerBrandMark:before,.centerBrandMark:after{content:none !important;display:none !important}
.realBrandMark i,.realBrandMark b,.centerBrandMark i,.centerBrandMark b{display:none !important}
.realBrandMark{width:48px;height:48px;padding:0}
.centerBrandMark{width:52px;height:52px;padding:0}
.panelShield{overflow:hidden;padding:4px;background:rgba(7,42,91,.46)}
.panelShield img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 5px rgba(70,213,255,.48))}
@media(max-width:720px){
  .logo.brandLogo{width:36px;height:36px}
  .realBrandMark{width:40px;height:40px}
  .centerBrandMark{width:43px;height:43px}
}


/* V340.5 台账导入与列表紧凑优化 */
.ledgerImportInline{display:flex;align-items:center;gap:10px;margin:10px 0 2px;padding:10px 12px;border:1px solid rgba(77,178,255,.28);border-radius:10px;background:rgba(5,36,66,.32)}
.ledgerImportLabel{font-weight:700;color:#d9f2ff;white-space:nowrap}
.ledgerImportInline input[type=file]{min-width:0;flex:1;max-width:420px;color:#cdeeff}
.ledgerImportInline button{min-width:92px}
.ledgerBatchActions{display:flex;gap:6px;align-items:center;white-space:nowrap}
#managedResult .dataTable{font-size:13px}
#managedResult .dataTable th,#managedResult .dataTable td{padding:8px 6px!important}
#managedResult .dataTable th:first-child,#managedResult .dataTable td:first-child{min-width:52px!important;width:52px!important;text-align:center}
@media(max-width:900px){.ledgerImportInline{flex-wrap:wrap}.ledgerImportInline input[type=file]{flex-basis:100%;max-width:none}}


/* V340.7 ICP备案号悬挂 */
.icpLink{color:inherit;text-decoration:none;white-space:nowrap}
.icpLink:hover{text-decoration:underline}
.realLoginFooter .icpLink,.centerLoginFooter .icpLink{color:#b9dcf5;opacity:.95}
.siteBeianFooter{position:fixed;left:50%;bottom:8px;transform:translateX(-50%);z-index:35;padding:4px 10px;border:1px solid rgba(61,157,226,.22);border-radius:999px;background:rgba(4,20,35,.42);backdrop-filter:blur(8px);font-size:12px;color:rgba(205,232,250,.78);line-height:1;pointer-events:auto}
.siteBeianFooter a{color:rgba(205,232,250,.86);text-decoration:none}
.siteBeianFooter a:hover{color:#fff;text-decoration:underline}
@media(max-width:900px){.siteBeianFooter{display:none}}

.ownerSelectMask{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:9999;display:flex;align-items:center;justify-content:center}.ownerSelectBox{width:360px;background:#10263d;color:#fff;padding:20px;border-radius:12px;border:1px solid #247cff}.ownerSelectBox select{width:100%;height:42px;margin:15px 0;background:#081827;color:#fff}.ownerSelectBox button{margin-right:10px;padding:8px 18px;border:0;border-radius:6px;background:#1680e8;color:white}.ownerSelectBox button:first-child{background:#666}


/* ==== BSRID V3.41.15 查询页终版修正 START ==== */
input[type="datetime-local"]{color-scheme:dark;}
input[type="datetime-local"]::-webkit-calendar-picker-indicator{filter:invert(1) brightness(1.8);opacity:.95;cursor:pointer;}
.filterBar.recordsFilter,.filterBar.alarmFilter{display:flex!important;flex-wrap:nowrap!important;align-items:flex-end!important;gap:10px!important;overflow-x:auto;overflow-y:hidden;padding-bottom:6px;scrollbar-gutter:stable;}
.filterBar.recordsFilter #recordKeyword{flex:0 0 300px;width:300px;}
.filterBar.alarmFilter #alarmKeyword{flex:0 0 260px;width:260px;}
.filterBar.recordsFilter label,.filterBar.alarmFilter label{flex:0 0 190px;min-width:190px;}
.filterBar.recordsFilter #recordOwnerFilter,.filterBar.alarmFilter #alarmOwnerFilter{flex:0 0 150px;width:150px;}
.filterBar.alarmFilter #alarmHandled{flex:0 0 150px;width:150px;}
.filterBar.recordsFilter button,.filterBar.alarmFilter button{flex:0 0 108px;width:108px;min-width:108px;}
.filterBar.recordsFilter::-webkit-scrollbar,.filterBar.alarmFilter::-webkit-scrollbar{height:10px;}
.filterBar.recordsFilter::-webkit-scrollbar-thumb,.filterBar.alarmFilter::-webkit-scrollbar-thumb{background:rgba(88,180,255,.55);border-radius:999px;}
.filterBar.recordsFilter::-webkit-scrollbar-track,.filterBar.alarmFilter::-webkit-scrollbar-track{background:rgba(6,28,50,.65);border-radius:999px;}
@media(max-width:1200px){.filterBar.recordsFilter,.filterBar.alarmFilter{flex-wrap:nowrap!important}.filterBar.recordsFilter #recordKeyword{flex-basis:240px;width:240px}.filterBar.alarmFilter #alarmKeyword{flex-basis:220px;width:220px}}
/* ==== BSRID V3.41.15 查询页终版修正 END ==== */


/* ==== BSRID V3.41.15 告警/查询/日期图标修正 START ==== */
input[type="datetime-local"], input[type="date"]{color-scheme:dark!important;}
input[type="datetime-local"]::-webkit-calendar-picker-indicator,
input[type="date"]::-webkit-calendar-picker-indicator{
  filter:invert(1) brightness(2.8) contrast(1.25) drop-shadow(0 0 2px rgba(255,255,255,.55))!important;
  opacity:1!important;
  cursor:pointer!important;
}
.filterBar.compactQueryBar{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:flex-end!important;gap:10px!important;overflow-x:auto!important;overflow-y:hidden!important;padding:12px 12px 8px!important;white-space:nowrap!important;}
.filterBar.compactQueryBar .queryKeyword{flex:0 0 270px!important;width:270px!important;min-width:230px!important;}
.filterBar.compactQueryBar label{flex:0 0 185px!important;min-width:185px!important;margin:0!important;}
.filterBar.compactQueryBar select{flex:0 0 138px!important;width:138px!important;min-width:138px!important;}
.filterBar.compactQueryBar button{flex:0 0 108px!important;width:108px!important;min-width:108px!important;margin:0!important;}
.filterBar.compactQueryBar::-webkit-scrollbar{height:9px!important;}
.filterBar.compactQueryBar::-webkit-scrollbar-thumb{background:rgba(77,178,255,.62)!important;border-radius:999px!important;}
.filterBar.compactQueryBar::-webkit-scrollbar-track{background:rgba(4,24,44,.7)!important;border-radius:999px!important;}
@media(max-width:1280px){.filterBar.compactQueryBar .queryKeyword{flex-basis:230px!important;width:230px!important}.filterBar.compactQueryBar label{flex-basis:175px!important;min-width:175px!important}.filterBar.compactQueryBar select{flex-basis:128px!important;min-width:128px!important}.filterBar.compactQueryBar button{flex-basis:100px!important;min-width:100px!important}}
/* ==== BSRID V3.41.15 告警/查询/日期图标修正 END ==== */

/* V3.41.18 设备台账、名单编辑与统计刷新优化 */
.deviceTypeShort{max-width:140px;min-width:118px!important;}
.ownerSelectInline{min-width:190px!important;}
.tableTopScroll{overflow-x:auto;overflow-y:hidden;height:14px;margin:6px 0 4px;border-radius:999px;background:rgba(6,28,50,.50);scrollbar-gutter:stable both-edges;}
.tableTopScroll::-webkit-scrollbar{height:12px;}
.tableTopScroll::-webkit-scrollbar-thumb{background:rgba(88,180,255,.62);border-radius:999px;}
.tableTopScroll::-webkit-scrollbar-track{background:rgba(6,28,50,.65);border-radius:999px;}
#managedResult .dataTableWrap{max-height:calc(100vh - 330px);}
#managedResult .dataTable th:first-child,#managedResult .dataTable td:first-child{position:sticky;left:0;z-index:4;background:#082944;box-shadow:8px 0 14px rgba(0,0,0,.18);}
#managedResult .dataTable th:first-child{z-index:6;}
.registryEditPanel .smallBtn,.registryEditPanel button{white-space:nowrap;}
/* v341.23: query fallback hint */
.queryHint{margin-left:10px;color:#ffd35a;font-size:12px;font-weight:500;}

/* V3.41.31 空域分析导出 */
.summaryExportBox{margin-top:14px;padding:14px;border:1px solid rgba(83,188,255,.26);border-radius:12px;background:rgba(5,23,44,.72);box-shadow:inset 0 0 18px rgba(24,130,220,.08)}
.summaryExportBox h3{margin:0 0 10px;color:#dff7ff;font-size:15px;font-weight:700}
.summaryExportBox .queryHint{margin:8px 0 0;color:#9edbff;font-size:12px}


/* V3.41.31: records/alarm table top horizontal scrollbar */
.moduleResult > .tableTopScroll{position:sticky;top:0;z-index:8;margin-top:0;margin-bottom:6px;}
#recordsResult .dataTableWrap,#alarmResult .dataTableWrap{overflow:auto;max-height:calc(100vh - 335px);}
#recordsResult .dataTable,#alarmResult .dataTable{min-width:1650px;}

/* V3.41.52 设备更多菜单与处置按钮修复 */
.miniActionSelect{height:30px;border:1px solid rgba(120,190,255,.32);border-radius:8px;background:rgba(15,47,78,.92);color:#e8f6ff;padding:0 6px;font-weight:700;max-width:78px;vertical-align:middle;outline:none}.miniActionSelect:hover{border-color:rgba(66,168,255,.76)}.deviceTrackStats{display:flex;gap:10px;flex-wrap:wrap}.deviceTrackStats span{padding:6px 10px;border-radius:8px;background:rgba(40,105,165,.25);border:1px solid rgba(88,180,255,.25)}

/* V3.41.52: managed-device real dropdown menu, not native select */
.managedMoreBtn{min-width:64px!important;padding-left:10px!important;padding-right:10px!important;}
.managedMoreMenu{position:fixed;z-index:99999;min-width:138px;padding:6px;border:1px solid rgba(88,180,255,.42);border-radius:10px;background:rgba(5,25,45,.98);box-shadow:0 12px 28px rgba(0,0,0,.38),0 0 0 1px rgba(255,255,255,.05);}
.managedMoreMenu button{display:block;width:100%;height:34px;margin:2px 0;border:0;border-radius:8px;background:rgba(30,93,150,.9);color:#e9f7ff;font-weight:800;text-align:left;padding:0 12px;cursor:pointer;}
.managedMoreMenu button:hover{background:rgba(42,135,220,.96);}
.managedMoreMenu button.danger{background:rgba(185,38,58,.92);color:#fff;}
.managedMoreMenu button.danger:hover{background:rgba(220,48,72,.98);}
.disposeBtn{font-weight:800;border-color:rgba(255,177,64,.55)!important;background:rgba(180,112,20,.24)!important;color:#ffe4a3!important;}
.disposeBtn:hover{background:rgba(230,140,24,.35)!important;}


/* V3.41.52: 侦测器弹窗可读性、导航按钮、设备操作按钮状态 */
.devicePopup{max-width:460px;min-width:260px;line-height:1.55;color:#263445;font-size:15px;word-break:break-word;overflow-wrap:anywhere;}
.devicePopup b{color:#102236;font-size:16px;}
.devicePopup .popupFirmware{max-width:430px;white-space:normal;word-break:break-all;overflow-wrap:anywhere;}
.devicePopupHint{margin-top:6px;color:#5d6f83;font-size:12px;border-top:1px solid rgba(40,90,130,.14);padding-top:5px;}
.leaflet-popup-content .miniIconBtn,.leaflet-popup-content .popupActionBtn{background:#1677ff!important;color:#fff!important;border:1px solid #0b5dd7!important;box-shadow:0 2px 8px rgba(20,90,180,.22);font-weight:800;}
.leaflet-popup-content .miniIconBtn:hover,.leaflet-popup-content .popupActionBtn:hover{background:#0b63d8!important;color:#fff!important;}
.cmdUpgradeBtn{background:#b97900!important;color:#fff!important;box-shadow:0 0 0 1px rgba(255,210,100,.16) inset;}
.cmdRebootBtn{background:#b62035!important;color:#fff!important;box-shadow:0 0 0 1px rgba(255,170,185,.16) inset;}
.disabledCmdBtn{background:#3f4c5f!important;color:#aebbd0!important;cursor:not-allowed!important;opacity:.78!important;}

/* V3.41.60：侦测器列表筛选与高度标签简化 */
.detectorTitleRow{display:flex;align-items:center;justify-content:space-between;gap:8px}
.detectorFilterBtns{display:inline-flex;gap:4px;align-items:center}
.detectorFilterBtns button{height:24px;padding:0 9px;border-radius:999px;border:1px solid rgba(91,170,255,.42);background:rgba(28,74,116,.72);color:#cfefff;font-size:12px;font-weight:800;cursor:pointer}
.detectorFilterBtns button.active{background:#1c8cff;color:#fff;border-color:#4fb7ff;box-shadow:0 0 10px rgba(40,150,255,.22)}
.detectorFilterBtns button:hover{filter:brightness(1.08)}

/* V3.41.63 远程重启/升级日志UI优化 */
#otaTaskResult{max-height:calc(100vh - 300px);overflow:auto;padding-bottom:14px;}
#otaTaskResult .tableTopScroll{position:sticky;top:0;z-index:30;margin:0 0 6px 0;background:rgba(4,24,44,.86);box-shadow:0 6px 16px rgba(0,0,0,.22);}
#otaTaskResult .dataTableWrap{max-height:calc(100vh - 355px);overflow:auto!important;border-radius:10px;padding-bottom:16px;}
#otaTaskResult .dataTable{table-layout:fixed!important;width:max-content!important;min-width:1540px!important;}
#otaTaskResult .dataTable th,#otaTaskResult .dataTable td{padding:7px 8px!important;vertical-align:top;}
#otaTaskResult .otaMessageCol{width:33vw!important;min-width:300px!important;max-width:520px!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;}
#otaTaskResult td.otaMessageCol,#otaTaskResult th.otaMessageCol{white-space:normal!important;}
#otaTaskResult .otaMsgCell{white-space:normal!important;line-height:1.45;word-break:break-word;overflow-wrap:anywhere;max-height:96px;overflow:auto;padding-right:4px;color:#d8f3ff;}
#otaTaskResult .otaMsgCell small{color:#ff7b7b;font-weight:700;white-space:normal!important;word-break:break-word;overflow-wrap:anywhere;}
#otaTaskResult .otaTaskToolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;position:sticky;top:0;z-index:31;background:rgba(5,25,45,.92);backdrop-filter:blur(4px);border:1px solid rgba(88,180,255,.22);border-radius:10px;margin-bottom:6px;}
#otaTaskResult .otaMsgCell::-webkit-scrollbar{width:8px;height:8px;}
#otaTaskResult .otaMsgCell::-webkit-scrollbar-thumb{background:rgba(88,180,255,.42);border-radius:999px;}
