/* ============ 炮兵开源情报系统 - 多页滚动版式 v7.4.1 ============ */
/* v7.4.1: ① 顶栏状态行合并（OSINT 在线+时间同行）并保证靠右；② 地图高度 400→420px；
           ③ 「全球炮兵部署态势」卡高度 400→460px；④ 移除 .dep-search / .dep-note / .go-evt 样式（对应控件已删） */
/* v7.4: 地图高度固定+顶栏品牌区美化+KPI数据态势卡美化 */
/* v7: 移除「火力输出排名」卡；新增第4屏「炮兵技术/发展动态」 */
/* v6: 第1屏地图宽度缩至60%，右侧为「部署态势表」；地图数量分级图例样式 */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:#0a1122;color:#c9d8f0;font:13px/1.6 "Microsoft YaHei","PingFang SC",sans-serif}
.app{min-height:100vh}
b{font-weight:600}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:#1e3a66;border-radius:4px}
::-webkit-scrollbar-track{background:#0d1830}

/* ---------- 固定顶栏（v7.4.1: 状态行合并、margin-left:auto 保证靠右） ---------- */
.topbar{position:sticky;top:0;z-index:100;display:flex;align-items:center;gap:24px;
  padding:10px 22px;background:linear-gradient(180deg,rgba(17,30,58,.96),rgba(10,17,34,.94));
  backdrop-filter:blur(6px);border-bottom:1px solid #1b3054;box-shadow:0 2px 14px rgba(0,0,0,.45)}
.topbar::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent 5%,rgba(255,176,46,.55) 35%,rgba(47,123,255,.55) 70%,transparent 95%)}
.brand{display:flex;align-items:center;gap:14px;min-width:300px;padding-right:22px;border-right:1px solid #1b3054}
.logo{width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-size:22px;color:#ffcf7d;
  background:radial-gradient(circle at 30% 25%,rgba(255,176,46,.35),rgba(255,176,46,0) 62%),linear-gradient(135deg,#17335f,#0d1c3a);
  border:1px solid #2f5590;text-shadow:0 0 12px rgba(255,176,46,.9);
  box-shadow:0 0 14px rgba(255,176,46,.35),inset 0 0 10px rgba(47,123,255,.30);
  animation:logopulse 3.2s ease-in-out infinite}
@keyframes logopulse{50%{box-shadow:0 0 26px rgba(255,176,46,.6),inset 0 0 16px rgba(47,123,255,.45)}}
.brand h1{font-size:18px;letter-spacing:2px;white-space:nowrap;
  background:linear-gradient(90deg,#ffd894,#ffb02e 35%,#7db6ff 72%,#ffd894);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  background-size:220% auto;animation:h1shine 7s linear infinite}
@keyframes h1shine{to{background-position:220% center}}
.brand .sub{font-size:10px;color:#6b86b8;white-space:nowrap;letter-spacing:.5px}
.nav{display:flex;gap:4px;flex:1;justify-content:center}
.nav a{padding:7px 16px;border-radius:6px;color:#8fa8d4;font-size:13px;text-decoration:none;
  border:1px solid transparent;transition:.2s;cursor:pointer}
.nav a:hover{color:#eaf2ff;background:rgba(47,123,255,.12)}
.nav a.on{color:#ffd27a;background:rgba(255,176,46,.10);border-color:rgba(255,176,46,.35)}
/* v7.4.1: 状态行（OSINT 在线 + 时间合并一行）整体靠右 */
.top-right{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:11px;color:#6b86b8;white-space:nowrap}
.status-line{display:flex;align-items:center;gap:4px}
.status-line b{font-family:Consolas,monospace;font-weight:600;color:#9fc2ff;margin-left:6px;letter-spacing:.5px}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#5fe8a4;margin-right:5px;
  box-shadow:0 0 8px #5fe8a4;animation:blink 2s infinite}
@keyframes blink{50%{opacity:.4}}

/* ---------- 分区 ---------- */
.section{padding:20px 22px 8px;max-width:1720px;margin:0 auto}
.sec-title{display:flex;align-items:center;gap:10px;margin:6px 0 12px;font-size:16px;color:#eaf2ff;flex-wrap:wrap}
.sec-title i{width:4px;height:18px;border-radius:2px;background:linear-gradient(#ffb02e,#ff7a2e)}
.sec-title .cnt{font-size:11px;color:#6b86b8;font-weight:400}
.sec-title .filters{margin-left:auto;display:flex;align-items:center;gap:8px}
.filters input{background:#0d1a33;border:1px solid #24406e;border-radius:6px;color:#d8e6ff;
  padding:6px 10px;font-size:12px;width:190px;outline:none}
.filters input:focus{border-color:#2f7bff}
.filters select{background:#0d1a33;border:1px solid #24406e;border-radius:6px;color:#d8e6ff;
  padding:6px 8px;font-size:12px;outline:none;cursor:pointer}
.filters button{background:linear-gradient(135deg,#2f7bff,#1a5cd6);border:none;border-radius:6px;
  color:#fff;padding:6px 16px;font-size:12px;cursor:pointer;transition:.2s}
.filters button:hover{filter:brightness(1.15)}

/* ---------- KPI 数据态势（v7.4 美化） ---------- */
.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:14px}
.kpi{position:relative;overflow:hidden;border:1px solid rgba(47,123,255,.20);border-radius:12px;
  padding:16px 18px 14px;
  background:radial-gradient(140% 120% at 100% 0%,rgba(47,123,255,.18),rgba(47,123,255,0) 55%),
    linear-gradient(160deg,#13234b,#0b1428);
  box-shadow:inset 0 1px 0 rgba(159,194,255,.06);transition:transform .25s,border-color .25s,box-shadow .25s}
.kpi::after{content:'';position:absolute;left:0;top:0;width:3px;height:100%;background:linear-gradient(#ffb02e,#ff7a2e)}
.kpi:nth-child(2)::after{background:linear-gradient(#18c2ff,#2f7bff)}
.kpi:nth-child(3)::after{background:linear-gradient(#5fe8a4,#18c2ff)}
.kpi:nth-child(4)::after{background:linear-gradient(#c07bff,#7b5cff)}
.kpi:nth-child(5)::after{background:linear-gradient(#ff9a3d,#ff5d5d)}
.kpi:hover{transform:translateY(-3px);border-color:rgba(255,176,46,.45);box-shadow:0 10px 26px rgba(0,0,0,.38)}
.kpi .num{font-size:28px;font-weight:800;color:#ffd27a;font-family:Consolas,monospace;letter-spacing:1px;
  background:linear-gradient(180deg,#ffe9c0,#ffb02e);-webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent}
.kpi .lbl{font-size:11px;color:#7f9ac9;margin-top:3px;letter-spacing:1.5px}

/* ---------- 卡片 / 布局 ---------- */
.card{background:linear-gradient(160deg,#101f3d,#0c1730);border:1px solid #1b3054;border-radius:10px;
  padding:14px 16px;margin-bottom:14px;display:flex;flex-direction:column;min-width:0}
.card h3{font-size:14px;color:#eaf2ff;margin-bottom:10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.card h3 .tip{font-size:10px;color:#6b86b8;font-weight:400}
.row{display:grid;grid-template-columns:1fr 360px;gap:14px;align-items:stretch}
/* 第1屏：地图固定占 60% 宽，右侧为「部署态势表」 */
.row-map{display:grid;grid-template-columns:60% minmax(0,1fr);gap:14px;align-items:stretch}
.col-right{display:flex;flex-direction:column;gap:14px;min-width:0}
.col-right .card{margin-bottom:0}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.chart{width:100%}
.grow{flex:1;overflow:auto}

/* 第1屏布局：地图必须固定高度 —— 世界地图为 2:1 等比投影，
 * 高度不定（被 flex 拉伸）时画布按高度缩放会导致地图缩成小条。
 * v7.4.1: 地图高度 420px */
.main-map .chart{flex:none;height:420px}
/* v7.4.1: 「全球炮兵部署态势」卡整体固定 460px（标题占自然高度，列表区 flex:1 撑满剩余并滚动） */
.dep-table{min-width:0;height:460px}
/* 列表在 460px 卡片内 flex 撑满剩余高度，超出滚动 */
.dep-list{flex:1;min-height:0;overflow:auto}
.num-td{font-family:Consolas,monospace;color:#ffd27a}

/* 地图数量分级图例（与 js dotColor 分档一致，交战中=红） */
.map-legend{display:flex;align-items:center;flex-wrap:wrap;font-size:10px;color:#8fa8d4;font-weight:400}
.map-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin:0 3px 0 10px;flex:none}

/* ---------- 表格 ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:12px}
.tbl th{position:sticky;top:0;background:#12234a;color:#9fc2ff;font-weight:600;text-align:left;
  padding:9px 10px;border-bottom:1px solid #24406e;white-space:nowrap;z-index:2}
.tbl td{padding:8px 10px;border-bottom:1px solid #142848;color:#c9d8f0;white-space:nowrap}
.tbl tbody tr{cursor:pointer;transition:.15s}
.tbl tbody tr:hover{background:rgba(47,123,255,.08)}
.tag-country{color:#ffd27a;font-weight:600}
.badge{display:inline-block;padding:2px 9px;border-radius:10px;font-size:11px}
.badge.hot{background:rgba(255,93,93,.16);color:#ff8a8a;border:1px solid rgba(255,93,93,.4)}
.badge.warn{background:rgba(255,176,46,.14);color:#ffd27a;border:1px solid rgba(255,176,46,.4)}
.badge.green{background:rgba(95,232,164,.12);color:#5fe8a4;border:1px solid rgba(95,232,164,.35)}
.badge.r2{background:rgba(159,182,221,.14);color:#9fb6dd;border:1px solid rgba(159,182,221,.4)}

/* ---------- 情报动态 / 技术发展动态 ---------- */
.event-item{padding:10px 6px;border-bottom:1px solid #142848;cursor:pointer;transition:.15s}
.event-item:hover{background:rgba(47,123,255,.07)}
.event-item .t{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#e2ecff}
.event-item .d{font-size:11px;color:#6b86b8;margin-top:4px;padding-left:2px}

/* 情报动态 / 技术动态右侧：统计图卡 */
.side-evt .chart{flex-shrink:0}
.evt-note{margin-top:auto;padding-top:10px;border-top:1px dashed #1b3054;font-size:11px;color:#6b86b8;text-align:center}
.evt-note b{color:#ffd27a}

/* ---------- 展开更多 / 页脚 ---------- */
.more-bar{text-align:center;padding-top:10px;border-top:1px dashed #1b3054}
.btn-more{background:transparent;border:1px solid #24406e;border-radius:6px;color:#8fa8d4;
  padding:7px 26px;font-size:12px;cursor:pointer;transition:.2s}
.btn-more:hover{color:#ffd27a;border-color:#ffb02e;background:rgba(255,176,46,.06)}
.footer{text-align:center;color:#4a608c;font-size:11px;padding:22px 0 30px;border-top:1px solid #142848;margin-top:10px}

/* ---------- 弹窗 ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(4,8,18,.72);display:none;z-index:200;
  align-items:center;justify-content:center;backdrop-filter:blur(3px)}
.modal-mask.show{display:flex}
.modal{width:min(560px,92vw);max-height:80vh;overflow:auto;background:linear-gradient(160deg,#101f3d,#0b1526);
  border:1px solid #2a4d85;border-radius:12px;padding:20px 24px;position:relative;box-shadow:0 12px 48px rgba(0,0,0,.6)}
.modal h4{font-size:16px;color:#ffd27a;margin-bottom:14px;padding-right:30px}
.modal .close{position:absolute;right:14px;top:12px;color:#6b86b8;cursor:pointer;font-size:16px}
.modal .close:hover{color:#ff8a8a}
.kv{display:grid;grid-template-columns:110px 1fr;gap:8px 12px;font-size:12.5px}
.kv b{color:#6b86b8;font-weight:400}
.kv span{color:#e2ecff;word-break:break-all}

/* ---------- 响应式 ---------- */
@media (max-width:1400px){
  .row-map{grid-template-columns:60% minmax(0,1fr)}
  .main-map .chart{height:380px}
}
@media (max-width:1200px){
  .row-map,.row{grid-template-columns:1fr}
  .main-map .chart{height:320px}
  .dep-table{height:460px}
  .kpis{grid-template-columns:repeat(3,1fr)}
  .grid3{grid-template-columns:1fr}
  .nav{display:none}
}