/* ================= 全国产业招商大数据平台 大屏样式 ================= */
* { margin: 0; padding: 0; box-sizing: border-box; }
html, body { width: 100%; height: 100%; background: #04070f; overflow: hidden;
  font-family: "Microsoft YaHei", "PingFang SC", sans-serif; color: #d7e6ff; }

/* ---------- 舞台缩放 1920x1080 ---------- */
#stage { position: absolute; left: 50%; top: 50%; width: 1920px; height: 1080px;
  transform-origin: center center; background: #04070f;
  background-image: radial-gradient(ellipse 1200px 700px at 50% -10%, rgba(20, 80, 160, .35), transparent 60%),
                    radial-gradient(ellipse 900px 500px at 8% 110%, rgba(10, 100, 120, .18), transparent 60%),
                    radial-gradient(ellipse 900px 500px at 92% 110%, rgba(60, 40, 140, .18), transparent 60%); }
#stage::before { content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 0;
  background-image: linear-gradient(rgba(70, 130, 220, .045) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(70, 130, 220, .045) 1px, transparent 1px);
  background-size: 46px 46px; }

/* ---------- 省 / 市 / 区县 三级筛选条 ---------- */
.region-bar { display: flex; align-items: center; gap: 10px; padding: 7px 14px 4px; }
.region-bar .rb-lbl { font-size: 12.5px; color: rgba(150, 190, 235, .75); letter-spacing: 1.5px; }
.region-bar .rb-sel {
  background: rgba(10, 26, 58, .92); color: #cfe4ff; border: 1px solid rgba(80, 140, 220, .42);
  border-radius: 4px; padding: 5px 10px; font-size: 13px; min-width: 118px; outline: none; cursor: pointer;
}
.region-bar .rb-sel:hover { border-color: rgba(60, 200, 255, .75); }
.region-bar .rb-sel:disabled { opacity: .42; cursor: not-allowed; }
.region-bar .rb-res { margin-left: auto; font-size: 12.5px; color: #43e8ff; letter-spacing: .5px; }

/* ---------- 顶部 ---------- */
/* 页头用三列网格：中列为标题保留固定空间（宽度=标题内容），
   左右两组被约束在两侧 1fr 列内、可收缩，永远不会压到标题上
   （旧版标题绝对定位 + 登录后右侧功能条变宽，会把「数据更新时间」挤进标题造成字迹重叠） */
header { position: relative; z-index: 5; height: 84px; display: grid;
  grid-template-columns: minmax(0, auto) auto minmax(0, 1fr); align-items: center;
  padding: 0 28px;
  background: linear-gradient(180deg, rgba(10, 30, 66, .95), rgba(6, 16, 38, .55));
  border-bottom: 1px solid rgba(64, 128, 220, .35); }
header::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px;
  background: linear-gradient(90deg, transparent, #1e90ff 30%, #35f0ff 50%, #1e90ff 70%, transparent); }
.hd-left { display: flex; align-items: center; gap: 18px; min-width: 0; }
.hd-logo { width: 46px; height: 46px; position: relative;
  background: url("../img/logo.svg") center / contain no-repeat;
  filter: drop-shadow(0 0 9px rgba(201, 169, 110, .5)); }
/* 平台主标题：位于中列水平居中；padding-top 使整体下移，视觉上不贴顶 */
.hd-title { text-align: center; pointer-events: none; white-space: nowrap; padding-top: 14px; }
.hd-title h1 { font-size: 28px; letter-spacing: 4px; font-weight: 800;
  background: linear-gradient(180deg, #fff, #7fc4ff 70%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.hd-title p { font-size: 10px; letter-spacing: 3px; color: rgba(130, 180, 255, .5); margin-top: 2px; }

.hd-tabs { display: flex; gap: 10px; flex: 0 0 auto; }
.tab { padding: 10px 26px; font-size: 16px; letter-spacing: 2px; color: #8fb6e8; cursor: pointer;
  background: rgba(20, 48, 96, .4); border: 1px solid rgba(80, 150, 255, .3); border-radius: 22px; transition: .25s; }
.tab i { font-style: normal; margin-right: 6px; font-size: 12px; }
.tab:hover { color: #fff; border-color: #3aa0ff; }
.tab.active { color: #fff; background: linear-gradient(180deg, rgba(20, 110, 230, .85), rgba(10, 60, 160, .85));
  border-color: #3aa0ff; box-shadow: 0 0 14px rgba(30, 144, 255, .55), inset 0 0 12px rgba(120, 200, 255, .25); }

.hd-right { display: flex; align-items: center; gap: 12px; justify-content: flex-end; min-width: 0; }
.btn-report { flex: 0 0 auto; white-space: nowrap; padding: 10px 18px; font-size: 15px; letter-spacing: 1px; color: #06121f; font-weight: 700; cursor: pointer;
  background: linear-gradient(180deg, #43e8ff, #1290e8); border: none; border-radius: 20px;
  box-shadow: 0 0 16px rgba(40, 190, 255, .6); transition: .2s; }
.btn-report:hover { transform: translateY(-1px); box-shadow: 0 4px 22px rgba(40, 190, 255, .85); }
.hd-clock { text-align: right; line-height: 1.3; flex: 0 0 auto; }
.hd-clock span { display: block; }
#clockTime { font-size: 22px; font-weight: 700; color: #5fe0ff; font-family: "Consolas", monospace; letter-spacing: 2px; }
#clockDate { font-size: 12px; color: #7d9cc9; }

/* ---------- 视图布局 ---------- */
.view { position: absolute; inset: 84px 0 34px 0; z-index: 2; display: none; padding: 12px 14px; gap: 12px; }
.view.active { display: grid; grid-template-columns: 400px 1fr 500px; }

/* ---------- 底部版权 / 备案 ---------- */
#stageFoot { position: absolute; left: 0; right: 0; bottom: 0; height: 26px; z-index: 4;
  display: flex; align-items: center; justify-content: center; gap: 14px;
  font-size: 12px; letter-spacing: 1px; color: rgba(128, 172, 226, .62);
  background: linear-gradient(0deg, rgba(4, 12, 30, .92), rgba(4, 12, 30, 0));
  pointer-events: none; }
#stageFoot .ft-sep { color: rgba(128, 172, 226, .3); }
/* 页脚链接：#stageFoot 整体 pointer-events:none（避免遮挡画布交互），
   故此处单独放开，否则链接可见但点不动。 */
#stageFoot .ft-link, .auth-foot .ft-link {
  pointer-events: auto; cursor: pointer;
  color: rgba(150, 200, 245, .9); text-decoration: none;
  border-bottom: 1px dashed rgba(120, 175, 235, .5); transition: all .18s;
}
#stageFoot .ft-link:hover, .auth-foot .ft-link:hover {
  color: #6fe4ff; border-bottom-color: #6fe4ff; text-shadow: 0 0 8px rgba(90, 210, 255, .6);
}
.col { display: flex; flex-direction: column; gap: 10px; min-height: 0; min-width: 0; }
/* 右侧 4 个面板（政策/园区/用地/厂房）挤在窄列里偏挤：收窄列间距 + 面板内边距，腾出纵向空间 */
.col-right { gap: 8px; }
.col-right .panel { padding: 6px 9px 5px; }
.col-right .panel-hd { padding: 1px 4px 3px; font-size: 14px; }

.panel { position: relative; display: flex; flex-direction: column; min-height: 0; flex: 1;
  background: linear-gradient(180deg, rgba(11, 32, 68, .55), rgba(7, 18, 42, .45));
  border: 1px solid rgba(72, 128, 218, .35); border-radius: 8px; padding: 8px 10px 6px; }
.panel::before, .panel::after { content: ""; position: absolute; width: 14px; height: 14px; pointer-events: none; }
.panel::before { left: -1px; top: -1px; border-left: 2px solid #35c8ff; border-top: 2px solid #35c8ff; border-radius: 8px 0 0 0; }
.panel::after { right: -1px; bottom: -1px; border-right: 2px solid #35c8ff; border-bottom: 2px solid #35c8ff; border-radius: 0 0 8px 0; }
.panel-hd { font-size: 15px; font-weight: 700; letter-spacing: 2px; color: #bfe0ff; padding: 2px 4px 6px; display: flex; align-items: center; gap: 8px; }
.panel-hd .bar { width: 4px; height: 15px; border-radius: 2px; background: linear-gradient(180deg, #43e8ff, #1170e0); box-shadow: 0 0 8px rgba(60, 200, 255, .8); }
.panel-bd { flex: 1; min-height: 0; overflow: hidden; position: relative; }
.panel-grow { flex: 1.5; }
.chart { width: 100%; height: 100%; }

/* ---------- 面包屑 / KPI ---------- */
.crumbs { height: 34px; display: flex; align-items: center; gap: 8px; font-size: 15px; }
.crumb { color: #86b8f5; cursor: pointer; padding: 3px 12px; border-radius: 14px; background: rgba(20, 52, 105, .5); border: 1px solid rgba(80, 150, 255, .3); }
.crumb:hover { color: #fff; border-color: #3aa0ff; }
.crumb.cur { color: #ffe08a; background: rgba(60, 60, 10, .35); border-color: rgba(255, 200, 80, .45); cursor: default; }
.crumb-sep { color: #56729e; }
.crumb-tip { margin-left: auto; font-size: 12px; color: #56729e; }

.kpis { min-height: 78px; display: flex; flex-wrap: wrap; gap: 8px; }
.kpi { position: relative; flex: 1 1 19%; min-width: 138px; display: flex; flex-direction: column; justify-content: center; padding: 0 16px;
  background: linear-gradient(135deg, rgba(15, 42, 90, .7), rgba(9, 22, 50, .5));
  border: 1px solid rgba(72, 128, 218, .3); border-radius: 8px; overflow: hidden; }
.kpi::after { content: ""; position: absolute; right: -18px; top: -18px; width: 76px; height: 76px; border-radius: 50%;
  background: radial-gradient(circle, rgba(60, 170, 255, .22), transparent 70%); }
.kpi b { font-size: 24px; font-family: "Consolas", monospace; font-weight: 800; color: #57e6ff; }
.kpi b em { font-style: normal; font-size: 13px; color: #7d9cc9; margin-left: 4px; }
.kpi span { font-size: 13px; color: #9db8dd; margin-top: 3px; letter-spacing: 1px; }
.kpi.k2 b { color: #ffd166; } .kpi.k2::after { background: radial-gradient(circle, rgba(255, 200, 80, .2), transparent 70%); }
.kpi.k3 b { color: #7cffb2; } .kpi.k3::after { background: radial-gradient(circle, rgba(90, 255, 170, .18), transparent 70%); }
.kpi.k4 b { color: #ff9ecb; } .kpi.k4::after { background: radial-gradient(circle, rgba(255, 140, 200, .2), transparent 70%); }

/* ---------- 地图 ---------- */
.map-wrap { flex: 1.9; padding: 4px; }
.map-chart { width: 100%; height: 100%; }
.map-back { position: absolute; left: 14px; top: 12px; z-index: 6; padding: 6px 16px; font-size: 14px; cursor: pointer;
  color: #bfe4ff; background: rgba(12, 40, 86, .85); border: 1px solid rgba(90, 180, 255, .5); border-radius: 16px; }
.map-back:hover { background: rgba(24, 80, 160, .9); }
.map-legend { position: absolute; right: 14px; bottom: 10px; z-index: 6; display: flex; align-items: center; gap: 7px;
  font-size: 12px; color: #9db8dd; padding: 6px 12px; border-radius: 6px;
  background: rgba(8, 22, 48, .8); border: 1px solid rgba(72, 128, 218, .3); }
.map-legend b { color: #cfe6ff; font-weight: 700; margin-right: 2px; }
.map-legend em { font-style: normal; color: #6d89b5; }
.lg { width: 16px; height: 8px; border-radius: 2px; }
.lg1 { background: #0d3a70; } .lg2 { background: #1668b8; } .lg3 { background: #29a8e0; } .lg4 { background: #3ef0d8; }
.lg-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.lg-dot.park { background: #ffd166; box-shadow: 0 0 8px #ffd166; }
.lg-dot.up { background: #4d9bff; } .lg-dot.mid { background: #2ee6a8; } .lg-dot.down { background: #ff7eb6; }

/* ---------- 列表 / 表格 ---------- */
.roll-list { height: 100%; overflow: hidden; }
.roll-list ul { animation: rollUp 26s linear infinite; }
.roll-list:hover ul { animation-play-state: paused; }
@keyframes rollUp { from { transform: translateY(0); } to { transform: translateY(-50%); } }
.pol-item { padding: 6px 8px 6px 10px; border-left: 2px solid #1e90ff; background: rgba(18, 44, 92, .35);
  border-radius: 0 6px 6px 0; margin-bottom: 6px; }
.pol-item:hover { background: rgba(26, 62, 128, .55); }
.pol-item .t { font-size: 13px; color: #d9ecff; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pol-item .m { display: flex; gap: 8px; align-items: center; margin-top: 4px; font-size: 11px; color: #7d9cc9; }
.tag { padding: 1px 8px; border-radius: 9px; font-size: 11px; color: #9fdcff; background: rgba(20, 70, 140, .6); border: 1px solid rgba(70, 150, 255, .35); }
.tag.hot { color: #ffcf70; background: rgba(90, 65, 10, .45); border-color: rgba(255, 200, 90, .4); }

.tbl { width: 100%; height: 100%; border-collapse: collapse; font-size: 12px; display: block; overflow-y: auto; }
.tbl::-webkit-scrollbar { width: 4px; } .tbl::-webkit-scrollbar-thumb { background: rgba(80, 150, 255, .4); border-radius: 2px; }
.tbl thead th { position: sticky; top: 0; z-index: 2; color: #8fc0ff; font-weight: 700; text-align: left;
  padding: 4px 7px; background: rgba(14, 40, 86, .95); letter-spacing: 1px; }
.tbl tbody td { padding: 4px 7px; color: #c6ddf8; border-bottom: 1px dashed rgba(70, 120, 200, .18); }
.tbl tbody tr:hover { background: rgba(30, 70, 140, .3); }
.tbl .num { font-family: "Consolas", monospace; }
.tbl .hi { color: #ffd166; } .tbl .ok { color: #7cffb2; } .tbl .dim { color: #7d9cc9; }

/* ---------- 产业选择 chips ---------- */
.chips { display: flex; flex-wrap: wrap; gap: 8px; align-content: flex-start; padding: 4px 2px; }
.chip { padding: 8px 14px; font-size: 13.5px; color: #a8c8f0; cursor: pointer; border-radius: 18px;
  background: rgba(18, 44, 92, .5); border: 1px solid rgba(80, 150, 255, .3); transition: .2s;
  display: flex; align-items: center; gap: 6px; }
.chip i { width: 8px; height: 8px; border-radius: 50%; font-style: normal; }
.chip:hover { color: #fff; border-color: #3aa0ff; }
.chip.active { color: #fff; font-weight: 700; background: rgba(20, 90, 190, .75); border-color: #3aa0ff;
  box-shadow: 0 0 10px rgba(40, 150, 255, .55); }
.stage-chips .chip { font-size: 13.5px; padding: 8px 16px; }
.tbl td, .tbl th { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 220px; }

/* ---------- 产业端右侧子页签 / 厂房等新面板 ---------- */
.sub-tabs { display: flex; gap: 5px; }
.stab { font-size: 12.5px; font-weight: 600; letter-spacing: 0; padding: 3px 9px; border-radius: 12px; color: #8fb3da; cursor: pointer; border: 1px solid transparent; transition: .15s; }
.stab:hover { color: #d7ecff; }
.stab.active { color: #06121f; background: linear-gradient(180deg, #43e8ff, #1170e0); border-color: #43e8ff; box-shadow: 0 0 8px rgba(60, 200, 255, .5); }
.sub-tab-bd { position: relative; }
.sub-pane { display: none; position: absolute; inset: 0; }
.sub-pane.active { display: flex; flex-direction: column; }
.sub-pane.active > .chart { flex: 1; min-height: 0; }
.sub-pane.active > .tbl { flex: 1; min-height: 0; }
/* 规上工业企业画像面板 */
#paneIndustrial { padding: 8px 10px; gap: 7px; overflow-y: auto; }
#paneIndustrial .ip-bar { flex: 0 0 auto; display: flex; justify-content: space-between; align-items: center; }
#paneIndustrial .ip-scope { font-size: 14px; font-weight: 700; color: #57e6ff; letter-spacing: 1px; }
#paneIndustrial .ip-year { background: #0e2444; color: #cfe8ff; border: 1px solid #2a5a92; border-radius: 6px; font-size: 12px; padding: 3px 8px; outline: none; }
#paneIndustrial .kpis { flex: 0 0 auto; min-height: 0; }
#paneIndustrial .kpis .kpi { min-width: 92px; flex-basis: 31%; padding: 0 8px; }
#paneIndustrial .kpis .kpi b { font-size: 18px; }
#paneIndustrial .kpis .kpi span { font-size: 12px; margin-top: 2px; }
#paneIndustrial .ip-struct { flex: 1 1 auto; min-height: 120px; display: flex; flex-direction: column; }
#paneIndustrial .ip-struct-t { flex: 0 0 auto; font-size: 12px; color: #9db8dd; margin: 2px 0 4px; }
#paneIndustrial .ip-chart { flex: 1 1 auto; min-height: 0; width: 100%; }
#paneIndustrial .ip-note { flex: 0 0 auto; font-size: 11px; color: #6f8bb3; line-height: 1.5; }
#paneIndustrial .empty { padding: 18px 6px; text-align: center; color: #7d9cc9; font-size: 13px; line-height: 1.7; }
/* 产业链图谱：省/市/区县区域构成视图 */
#paneChain { padding: 8px 10px; gap: 6px; }
#paneChain .cr-note { font-size: 11px; color: #7d9cc9; text-align: right; }
.cr-list { flex: 0 0 auto; max-height: 46%; overflow-y: auto; display: flex; flex-direction: column; gap: 6px; padding-right: 2px; }
.cr-list::-webkit-scrollbar { width: 4px; } .cr-list::-webkit-scrollbar-thumb { background: rgba(80,150,255,.4); border-radius: 2px; }
.cr-item { border: 1px solid rgba(70,120,200,.25); border-radius: 8px; padding: 6px 9px; background: rgba(16,36,72,.35); }
.cr-item-hd { display: flex; justify-content: space-between; align-items: baseline; font-size: 12.5px; }
.cr-item-hd b { color: #dcebff; letter-spacing: .5px; }
.cr-item-hd .cr-tot { color: #57e6ff; font-family: Consolas, monospace; font-weight: 700; }
.cr-seg { display: flex; gap: 10px; margin-top: 3px; font-size: 11px; color: #9db8dd; }
.cr-seg i { font-style: normal; color: #7cffb2; } .cr-seg u { text-decoration: none; color: #ffd166; } .cr-seg s { text-decoration: none; color: #ff9ecb; }
.cr-ents { margin-top: 4px; font-size: 11px; color: #6f8bb3; line-height: 1.6; }
.cr-ents .src-l { color: #57e6ff; } .cr-ents .src-s { color: #b39ddb; }
/* 规上工业企业名录子页 */
#paneScaleEnt { padding: 8px 10px; gap: 6px; overflow-y: auto; }
#paneScaleEnt .se-search { background: #0e2444; color: #cfe8ff; border: 1px solid #2a5a92; border-radius: 6px;
  font-size: 12px; padding: 3px 9px; width: 190px; outline: none; }
#paneScaleEnt .se-search:focus { border-color: #43e8ff; }
#paneScaleEnt .kpis { flex: 0 0 auto; min-height: 0; }
#paneScaleEnt .kpis .kpi { min-width: 92px; flex-basis: 23%; padding: 0 8px; }
#paneScaleEnt .kpis .kpi b { font-size: 17px; }
#paneScaleEnt .kpis .kpi span { font-size: 11px; margin-top: 2px; }
.se-count { flex: 0 0 auto; font-size: 11.5px; color: #8fb3da; }
#paneScaleEnt .tbl { flex: 1 1 auto; }
#paneScaleEnt .ip-note { flex: 0 0 auto; font-size: 11px; color: #6f8bb3; line-height: 1.5; }
.kpi.k5 b { color: #b39ddb; } .kpi.k5::after { background: radial-gradient(circle, rgba(179,157,219,.2), transparent 70%); }
.board-filter { flex: 0 0 auto; display: flex; gap: 6px; padding: 2px 2px 6px; flex-wrap: wrap; }
.bf { font-size: 12px; padding: 3px 12px; border-radius: 12px; color: #9cc3ee; cursor: pointer; border: 1px solid rgba(120, 170, 255, .35); transition: .15s; }
.bf:hover { color: #fff; border-color: #35f0ff; }
.bf.active { color: #06121f; background: linear-gradient(180deg, #2ee6a8, #0e8f6a); border-color: #2ee6a8; font-weight: 700; }
.tag.fresh { color: #1a0e00; background: linear-gradient(180deg, #ffb347, #ff7a18); border: none; font-weight: 700; }
.chip-cnt { font-size: 10px; font-weight: 400; color: #7fb8ff; margin-left: 5px; letter-spacing: 0; }

/* ---------- 智能交互：顶部智能条（搜索 / 新鲜度 / 刷新） ---------- */
.smart-bar { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; }
.fresh { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis;
  font-size: 12px; color: #6fa5dd; letter-spacing: .5px; white-space: nowrap; }
.fresh b { color: #43e8ff; font-weight: 600; }
.fresh::before { content: ""; display: inline-block; width: 7px; height: 7px; margin-right: 6px; vertical-align: 1px;
  border-radius: 50%; background: #7cffb2; box-shadow: 0 0 8px #7cffb2; animation: freshPulse 2.4s ease-in-out infinite; }
.fresh.stale::before { background: #ffd166; box-shadow: 0 0 8px #ffd166; }
@keyframes freshPulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
.btn-refresh { flex: 0 0 34px; width: 34px; height: 34px; font-size: 17px; line-height: 1; cursor: pointer; color: #bfe0ff;
  background: rgba(18, 44, 92, .6); border: 1px solid rgba(80, 150, 255, .42); border-radius: 50%; transition: .2s; }
.btn-refresh:hover { color: #fff; border-color: #35f0ff; transform: rotate(180deg); }
.btn-refresh.busy { opacity: .55; pointer-events: none; }

.sbox { position: relative; flex: 0 1 300px; min-width: 118px; }
#searchInput { width: 100%; height: 34px; padding: 0 12px 0 32px; font-size: 13px; color: #e6f2ff; outline: none;
  background: rgba(10, 26, 58, .92) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%237d9cc9' stroke-width='2.4'><circle cx='10.5' cy='10.5' r='6.5'/><path d='M15.5 15.5 21 21'/></svg>") 10px center / 14px no-repeat;
  border: 1px solid rgba(80, 140, 220, .42); border-radius: 18px; transition: .2s; }
#searchInput::placeholder { color: #5f7ba8; }
#searchInput:focus { border-color: #35f0ff; box-shadow: 0 0 12px rgba(40, 190, 255, .4); }
.spanel { position: absolute; right: 0; top: 40px; width: 470px; max-height: 372px; overflow-y: auto; z-index: 20;
  background: rgba(8, 22, 48, .97); border: 1px solid rgba(80, 150, 255, .45); border-radius: 8px;
  box-shadow: 0 12px 40px rgba(0, 10, 40, .7); padding: 6px; }
.spanel::-webkit-scrollbar { width: 5px; } .spanel::-webkit-scrollbar-thumb { background: rgba(80, 150, 255, .45); border-radius: 3px; }
.sp-empty { padding: 26px; text-align: center; font-size: 13px; color: #6f8cb8; }
.sp-hint { padding: 8px 10px; font-size: 11.5px; color: #5f7ba8; border-bottom: 1px dashed rgba(70, 120, 200, .25); margin-bottom: 4px; }
.sp-group { font-size: 11.5px; color: #43e8ff; letter-spacing: 1px; padding: 7px 10px 3px; }
.sp-it { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 5px; cursor: pointer; }
.sp-it:hover { background: rgba(30, 78, 160, .6); }
.sp-it .k { flex: 0 0 auto; font-size: 11px; padding: 0 7px; border-radius: 9px; color: #9fdcff; background: rgba(20, 70, 140, .6); border: 1px solid rgba(70, 150, 255, .35); }
.sp-it .t { flex: 1; min-width: 0; font-size: 12.5px; color: #dcebff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sp-it .s { flex: 0 0 190px; font-size: 11px; color: #6f8cb8; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: right; }

/* ---------- 面板右上角导出按钮 ---------- */
.btn-export { margin-left: auto; padding: 2px 12px; font-size: 11.5px; letter-spacing: 0; color: #9fd0ff; cursor: pointer;
  background: rgba(20, 52, 105, .6); border: 1px solid rgba(80, 150, 255, .38); border-radius: 11px; transition: .18s; }
.btn-export:hover { color: #06121f; background: linear-gradient(180deg, #43e8ff, #1170e0); border-color: #43e8ff; }

/* ---------- 智能区域洞察（政府端中列） ---------- */
.panel-insight { flex: 0 0 286px; }
.panel-insight .panel-hd { flex: 0 0 auto; }
.insight { height: 100%; overflow-y: auto; display: flex; flex-direction: column; gap: 5px; padding: 2px 4px; }
.insight::-webkit-scrollbar { width: 4px; } .insight::-webkit-scrollbar-thumb { background: rgba(80, 150, 255, .4); border-radius: 2px; }
/* 预警/缺口子标题 */
.ins-sub { flex: 0 0 auto; color: #8fc0ff; font-size: 11px; letter-spacing: 1px; margin: 5px 0 1px; font-weight: 700; }
/* 招商机会预警行 */
.ins-alert { flex: 0 0 auto; display: flex; align-items: center; gap: 7px; font-size: 12px;
  padding: 3px 0; border-bottom: 1px dashed rgba(70, 120, 200, .14); }
.ins-alert .ia-prov { color: #ffd166; font-weight: 700; flex: 0 0 52px; }
.ins-alert .ia-idx { color: #7cffb2; font-size: 11px; flex: 0 0 auto; white-space: nowrap; }
.ins-alert .ia-res { color: #9fb8d8; flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 产业链缺口行 */
.ins-gap { flex: 0 0 auto; display: flex; align-items: center; gap: 7px; font-size: 12px;
  padding: 3px 0; border-bottom: 1px dashed rgba(70, 120, 200, .14); }
.ins-gap .ig-chain { color: #ff9ecb; font-weight: 700; flex: 0 0 96px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ins-gap .ig-miss { color: #ff6b6b; flex: 0 0 auto; font-size: 11px; white-space: nowrap; }
.ins-gap .ig-res { color: #9fb8d8; flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ins-hint { font-size: 12.5px; color: #6f8cb8; line-height: 1.6; }
/* flex 子项 + overflow:hidden 会让 min-height 归零（被下方内容压成 0 高），必须 flex:0 0 auto */
.ins-sum { flex: 0 0 auto; font-size: 12.5px; line-height: 1.5; color: #dcebff;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ins-sum b { color: #ffd166; font-weight: 700; }
.ins-row { flex: 0 0 auto; display: flex; align-items: center; gap: 10px; font-size: 12px; overflow: hidden; white-space: nowrap; }
.ins-lb { color: #8fb3da; letter-spacing: 1px; }
.ins-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.ins-chip { padding: 3px 10px; border-radius: 12px; font-size: 11.5px; color: #cfe6ff;
  background: rgba(20, 52, 105, .7); border: 1px solid rgba(80, 150, 255, .4); }
.ins-chip em { font-style: normal; color: #43e8ff; margin-left: 4px; font-family: Consolas, monospace; }
.ins-stats { flex: 0 0 auto; display: flex; gap: 7px; flex-wrap: nowrap; }
.ins-chips { display: flex; gap: 6px; overflow: hidden; }
.ins-stat { flex: 1 1 0; min-width: 0; padding: 2px 8px; border-radius: 6px; text-align: center;
  background: rgba(18, 44, 92, .45); border: 1px solid rgba(72, 128, 218, .3); overflow: hidden; }
.ins-stat b { display: block; font-size: 16px; line-height: 1.2; color: #57e6ff; font-family: Consolas, monospace; font-weight: 800;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ins-stat span { font-size: 11px; color: #8fb3da; white-space: nowrap; }
.ins-stat.s2 b { color: #ffd166; } .ins-stat.s3 b { color: #7cffb2; }
.ins-stat.s4 b { color: #b47cff; } .ins-stat.s5 b { color: #ff9ecb; }

/* 智能洞察 v2：全国对标行 + 省内重点城市推荐 */
.ins-bench { flex: 0 0 auto; font-size: 12px; color: #bcd6f5; padding: 4px 7px; border-radius: 6px;
  background: rgba(20, 52, 105, .42); border-left: 2px solid #43e8ff; line-height: 1.4; }
.ins-bench b { color: #ffd166; }
.ins-bench em { font-style: normal; }
.ins-bench em.up { color: #7cffb2; font-weight: 700; } .ins-bench em.down { color: #ff9ecb; font-weight: 700; }
.ins-chips.rec .ins-chip.rec-chip { color: #20260a; background: linear-gradient(180deg, #ffe08a, #ffb347);
  border-color: #ffd166; font-weight: 600; }
.ins-chips.rec .ins-chip.rec-chip em { color: #6a4a00; }
.ins-note { flex: 0 0 auto; font-size: 11px; color: #7fa6cf; line-height: 1.45; padding: 3px 7px;
  border-radius: 5px; background: rgba(20, 40, 80, .35); border-left: 2px solid rgba(120, 170, 255, .5); }

/* ---------- 报告弹窗 ---------- */
#reportModal { position: fixed; inset: 0; z-index: 100; display: none; align-items: center; justify-content: center;
  background: rgba(2, 6, 16, .82); backdrop-filter: blur(4px); }
#reportModal.open { display: flex; }
.report-box { width: 880px; max-height: 92vh; display: flex; flex-direction: column;
  background: #fff; border-radius: 10px; overflow: hidden; box-shadow: 0 10px 60px rgba(0, 20, 60, .6); }
.report-toolbar { display: flex; justify-content: space-between; align-items: center; padding: 12px 20px;
  background: linear-gradient(90deg, #0e3a78, #1268c0); color: #fff; }
.report-name { font-size: 17px; font-weight: 700; letter-spacing: 2px; }
.btn-mini { padding: 7px 16px; font-size: 13px; cursor: pointer; border-radius: 15px; border: 1px solid rgba(255,255,255,.5);
  background: rgba(255, 255, 255, .15); color: #fff; margin-left: 8px; }
.btn-mini:hover { background: rgba(255, 255, 255, .3); }
.report-body { padding: 30px 44px; overflow-y: auto; color: #22303f; font-size: 14px; line-height: 1.75; }
.report-body::-webkit-scrollbar { width: 6px; } .report-body::-webkit-scrollbar-thumb { background: #b9cee6; border-radius: 3px; }
.rp-history { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 10px 20px; background: #eef4fb; border-bottom: 1px solid #cddff2; }
.rp-h-label { font-size: 12px; color: #6a7a90; }
.rp-h-empty { font-size: 12px; color: #97a6ba; }
.rp-chip { padding: 4px 12px; font-size: 12px; cursor: pointer; border-radius: 14px; color: #1d4f8f;
  background: #fff; border: 1px solid #9cc0e8; transition: .15s; }
.rp-chip:hover { border-color: #1a5cb0; }
.rp-chip.active { color: #fff; background: linear-gradient(180deg, #1268c0, #0e3a78); border-color: #0e3a78; }

/* ---------- 报告文档样式（屏内 & 打印共用） ---------- */
.rp { font-family: "SimSun", "Songti SC", serif; }
.rp h1 { text-align: center; font-size: 23px; letter-spacing: 3px; color: #101d33; margin-bottom: 4px; }
.rp .rp-sub { text-align: center; font-size: 12px; color: #6a7a90; border-bottom: 2px solid #1a5cb0; padding-bottom: 12px; margin-bottom: 16px; }
.rp h2 { font-size: 16px; color: #14458c; margin: 18px 0 8px; padding-left: 10px; border-left: 4px solid #1a5cb0; }
.rp p { text-indent: 2em; margin: 6px 0; }
.rp table { width: 100%; border-collapse: collapse; margin: 10px 0 14px; font-size: 12.5px; font-family: "Microsoft YaHei", sans-serif; }
.rp th, .rp td { border: 1px solid #b9cee6; padding: 6px 8px; text-align: left; }
.rp th { background: #e8f1fb; color: #14458c; }
.rp .rp-kpi { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 12px 0 16px; }
.rp .rp-kpi div { border: 1px solid #cddff2; border-radius: 6px; padding: 10px; text-align: center; background: #f5f9fe; }
.rp .rp-kpi b { display: block; font-size: 20px; color: #14458c; font-family: "Consolas", monospace; }
.rp .rp-kpi span { font-size: 12px; color: #6a7a90; }
.rp .rp-foot { margin-top: 24px; padding-top: 10px; border-top: 1px solid #cddff2; font-size: 11px; color: #8a99ad; text-align: center; }

/* ---------- 打印 ---------- */
#printArea { display: none; }
@media print {
  @page { size: A4; margin: 16mm 14mm; }
  body { background: #fff; overflow: visible; }
  #stage, #reportModal { display: none !important; }
  #printArea { display: block !important; }
  #printArea .rp { font-size: 12.5px; }
  #printArea .report-body { padding: 0; overflow: visible; }
}
