/* ============================================================
   浙江省农业农村招商引资数字化驾驶舱 · 大屏样式
   基准分辨率 1920×1080，由 dashboard.js 自动等比缩放
   ============================================================ */
:root{
  --bg0:#050d1f; --bg1:#0a1f3d; --panel:rgba(10,34,72,.72);
  --line:rgba(59,130,246,.22); --line2:rgba(59,130,246,.45);
  --txt:#d7e5fb; --txt2:#7f9cc4; --txt3:#4d6d99;
  --g:#3b82f6; --g2:#7db2ff; --cyan:#38bdf8; --gold:#fbbf24; --orange:#fb923c; --purple:#a78bfa;
  --glow:0 0 18px rgba(59,130,246,.28);
  font-size:16px;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;overflow:hidden;background:#030a18}
body{
  font-family:"Source Han Sans SC","Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--txt);
  background:
    radial-gradient(1200px 620px at 50% -10%,rgba(59,130,246,.16),transparent 60%),
    radial-gradient(900px 500px at 8% 100%,rgba(56,189,248,.08),transparent 60%),
    linear-gradient(180deg,#050d1f 0%,#081b38 50%,#040a18 100%);
}
#stage{position:fixed;left:50%;top:50%;width:1920px;height:1080px;transform-origin:0 0;overflow:hidden}

/* ---------------- 顶部标题栏 ---------------- */
.dc-header{
  height:88px;position:relative;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(180deg,rgba(59,130,246,.14),transparent);
  border-bottom:1px solid var(--line);
}
.dc-header::after{
  content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;
  background:linear-gradient(90deg,transparent,var(--g),transparent);box-shadow:var(--glow);
}
.dc-title{font-size:38px;font-weight:900;letter-spacing:6px;
  background:linear-gradient(180deg,#ffffff,#6ea8ff);-webkit-background-clip:text;background-clip:text;color:transparent;
  text-shadow:0 0 26px rgba(59,130,246,.35)}
.dc-title span{font-size:20px;letter-spacing:2px;opacity:.85}
.dc-side{position:absolute;top:24px;display:flex;align-items:center;gap:18px;font-size:14px;color:var(--txt2)}
.dc-side.left{left:28px}
.dc-side.right{right:28px}
.dc-badge{border:1px solid var(--line2);border-radius:6px;padding:5px 14px;background:rgba(59,130,246,.08);color:var(--g2);font-size:13px;letter-spacing:1px}
.dc-clock{font-size:16px;color:var(--txt);font-variant-numeric:tabular-nums;letter-spacing:1px}
.dc-side a{color:var(--txt2);border:1px dashed var(--line2);border-radius:6px;padding:5px 14px;font-size:13px}
.dc-side a:hover{color:var(--g2);border-color:var(--g)}

/* ---------------- 主体栅格 ---------------- */
.dc-body{height:calc(1080px - 88px);display:grid;grid-template-columns:452px 1fr 452px;gap:18px;padding:18px 22px 20px}
.col{display:flex;flex-direction:column;gap:18px;min-height:0}

/* ---------------- 面板 ---------------- */
.panel{
  position:relative;flex:1;min-height:0;padding:14px 18px 16px;
  background:linear-gradient(180deg,rgba(13,44,90,.72),rgba(6,25,60,.62));
  border:1px solid var(--line);border-radius:4px;backdrop-filter:blur(2px);
}
.panel::before,.panel::after{content:'';position:absolute;width:14px;height:14px;border:2px solid var(--g);opacity:.75}
.panel::before{left:-1px;top:-1px;border-right:none;border-bottom:none}
.panel::after{right:-1px;bottom:-1px;border-left:none;border-top:none}
.p-head{display:flex;align-items:center;gap:10px;height:30px;margin-bottom:10px}
.p-head .bar{width:4px;height:16px;background:var(--g);box-shadow:var(--glow)}
.p-head h3{font-size:18px;font-weight:800;letter-spacing:1.5px;color:#eaf2ff}
.p-head .en{font-size:11px;color:var(--txt3);letter-spacing:1px;margin-top:3px}
.p-head .extra{margin-left:auto;font-size:12px;color:var(--txt3)}
.p-body{height:calc(100% - 40px);overflow:hidden}

/* ---------------- KPI 卡片 ---------------- */
.kpi-row{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-bottom:18px}
.kpi{
  position:relative;padding:14px 16px;border-radius:4px;overflow:hidden;
  background:linear-gradient(160deg,rgba(59,130,246,.16),rgba(6,25,60,.55));
  border:1px solid var(--line);
}
.kpi::after{content:'';position:absolute;right:-30px;top:-30px;width:90px;height:90px;border-radius:50%;background:radial-gradient(circle,rgba(59,130,246,.28),transparent 70%)}
.kpi .lab{font-size:13px;color:var(--txt2);letter-spacing:1px}
.kpi .val{font-size:32px;font-weight:900;color:#fff;line-height:1.15;font-variant-numeric:tabular-nums;text-shadow:0 0 18px rgba(59,130,246,.5)}
.kpi .val small{font-size:14px;font-weight:600;color:var(--g2);margin-left:3px}
.kpi .sub{font-size:12px;color:var(--txt3);margin-top:2px}
.kpi .sub i{font-style:normal;color:var(--g2)}
.kpi .sub .down{color:var(--orange)}

/* ---------------- 横向条形榜 ---------------- */
.bar-item{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:14px}
.bar-item .nm{width:92px;color:var(--txt2);text-align:right;flex:0 0 92px}
.bar-item .tr{flex:1;height:12px;background:rgba(59,130,246,.10);border-radius:2px;overflow:hidden;position:relative}
.bar-item .fl{height:100%;border-radius:2px;background:linear-gradient(90deg,rgba(59,130,246,.35),var(--g));box-shadow:0 0 12px rgba(59,130,246,.45);position:relative}
.bar-item .fl::after{content:'';position:absolute;right:0;top:0;bottom:0;width:3px;background:#eaf2ff;box-shadow:0 0 10px #fff}
.bar-item .vl{width:52px;text-align:right;font-weight:800;color:var(--g2);font-variant-numeric:tabular-nums}
.bar-item .pct{width:58px;text-align:right;font-size:12px;color:var(--txt3)}

/* ---------------- 环形图 ---------------- */
.donut-wrap{display:flex;align-items:center;gap:16px;height:100%}
.donut-legend{flex:1;font-size:13.5px}
.donut-legend .lg{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px dashed rgba(59,130,246,.12)}
.donut-legend .lg:last-child{border-bottom:none}
.donut-legend .dot{width:9px;height:9px;border-radius:2px}
.donut-legend .lg .n{color:var(--txt2);flex:1}
.donut-legend .lg .v{font-weight:800;color:#eaf2ff;font-variant-numeric:tabular-nums}

/* ---------------- 漏斗 ---------------- */
.fn-row{display:flex;align-items:center;gap:10px;padding:9px 0}
.fn-row .fn-l{width:80px;text-align:right;font-size:13.5px;color:var(--txt2);flex:0 0 80px}
.fn-row .fn-b{height:26px;border-radius:3px;display:flex;align-items:center;justify-content:flex-end;padding-right:10px;
  font-size:13px;font-weight:800;color:#04122b;background:linear-gradient(90deg,rgba(59,130,246,.45),var(--g));box-shadow:0 0 14px rgba(59,130,246,.25)}
.fn-row .fn-v{width:70px;text-align:right;font-weight:800;color:#eaf2ff;font-variant-numeric:tabular-nums}
.fn-row .fn-r{width:56px;text-align:right;font-size:12px;color:var(--gold)}

/* ---------------- 地市热力 ---------------- */
.city-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;height:100%;align-content:start}
.city-cell{
  border-radius:4px;padding:12px 8px;text-align:center;cursor:pointer;transition:.18s;
  border:1px solid rgba(59,130,246,.28);background:linear-gradient(180deg,rgba(59,130,246,.10),rgba(59,130,246,.02));
}
.city-cell:hover{transform:translateY(-2px);border-color:var(--g);box-shadow:0 0 16px rgba(59,130,246,.3)}
.city-cell.on{border-color:var(--gold);box-shadow:0 0 18px rgba(251,191,36,.35)}
.city-cell .cn{font-size:17px;font-weight:800;color:#eaf2ff;letter-spacing:1px}
.city-cell .cv{font-size:12px;color:var(--txt2);margin-top:3px}
.city-cell .cb{display:inline-block;margin-top:6px;font-size:11px;color:#04122b;background:var(--g);border-radius:2px;padding:1px 8px;font-weight:800}

/* ---------------- 滚动列表 ---------------- */
.scroll-list{height:100%;overflow:hidden;position:relative}
.scroll-list ol{position:absolute;width:100%;animation:roll 26s linear infinite}
.scroll-list:hover ol{animation-play-state:paused}
@keyframes roll{0%{transform:translateY(0)}100%{transform:translateY(-50%)}}
.scroll-list li{list-style:none;display:flex;gap:10px;align-items:center;padding:9px 0;border-bottom:1px dashed rgba(59,130,246,.12);font-size:13.5px}
.scroll-list li .idx{width:22px;height:22px;flex:0 0 22px;border-radius:3px;background:rgba(59,130,246,.14);color:var(--g2);font-size:12px;display:flex;align-items:center;justify-content:center;font-weight:800}
.scroll-list li .tx{flex:1;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scroll-list li .mt{font-size:12px;color:var(--txt3);flex:0 0 auto}
.scroll-list li .tagx{font-size:11px;padding:1px 7px;border-radius:2px;flex:0 0 auto}

/* ---------------- 底部播报 ---------------- */
.dc-ticker{height:44px;display:flex;align-items:center;gap:14px;padding:0 22px;
  border-top:1px solid var(--line);background:rgba(6,25,60,.6);font-size:14px;color:var(--txt2)}
.dc-ticker .tk-l{flex:0 0 auto;color:var(--gold);font-weight:800;letter-spacing:1px}
.dc-ticker .tk-w{flex:1;overflow:hidden;white-space:nowrap}
.dc-ticker .tk-w span{display:inline-block;padding-left:100%;animation:tk 34s linear infinite}
@keyframes tk{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}

/* ---------------- 通用小组件 ---------------- */
.mini-stat{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.mini-stat .ms{background:rgba(59,130,246,.08);border:1px solid var(--line);border-radius:3px;padding:8px 12px}
.mini-stat .ms .l{font-size:12px;color:var(--txt3)}
.mini-stat .ms .v{font-size:20px;font-weight:900;color:var(--g2);font-variant-numeric:tabular-nums}
.legend-line{display:flex;gap:16px;font-size:12px;color:var(--txt3);padding:4px 0}
.legend-line i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px}
.note{font-size:11.5px;color:var(--txt3);margin-top:6px}

/* 网格背景纹理 */
.grid-bg{position:absolute;inset:0;pointer-events:none;opacity:.22;
  background-image:linear-gradient(rgba(59,130,246,.10) 1px,transparent 1px),linear-gradient(90deg,rgba(59,130,246,.10) 1px,transparent 1px);
  background-size:44px 44px}
