  :root{
    --bg-deep:#06102a;
    --bg-mid:#0a1730;
    --panel-a:#122036;
    --panel-b:#0d1429;
    --panel-m1:#0d1733;
    --panel-m2:#081224;
    --text:#ffffff;
    --text-sub:#9ab0d9;
    --text-gray:#7e8fb5;
    --c-orange:#ff7a45;
    --c-yellow:#ffd83d;
    --c-purple:#b05bff;
    --c-orange2:#ff9f4d;
    --c-red:#ff5577;
    --c-green:#4ade80;
    --c-cyan:#4fd9ff;
    --c-pink:#ff8fa3;
    --line:rgba(255,255,255,.06);
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html,body{height:100%;}
  body{
    font-family:'Sarasa Gothic SC','Sarasa Term SC','Microsoft YaHei','PingFang SC','Noto Sans SC',sans-serif;
    background:radial-gradient(1200px 800px at 50% -10%, #102046 0%, var(--bg-deep) 60%, #04081c 100%);
    color:var(--text);
    overflow:hidden;
    -webkit-font-smoothing:antialiased;
  }
  .stage{position:fixed;top:0;left:0;right:0;bottom:0;overflow:hidden;}
  .artboard{
    position:fixed;top:50%;left:50%;width:1920px;height:1080px;
    transform-origin:center center;
    background:
      linear-gradient(180deg,#0a1430 0%,#06102a 100%);
    overflow:hidden;
  }
  /* subtle grid */
  .artboard::before{
    content:"";position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;
    background-image:
      linear-gradient(rgba(120,160,255,.04) 1px,transparent 1px),
      linear-gradient(90deg,rgba(120,160,255,.04) 1px,transparent 1px);
    background-size:48px 48px;
  }
  .card{position:absolute;}

  /* ---------- TOP BAR ---------- */
  .topbar{
    position:absolute;left:0;top:0;width:1920px;height:80px;
    background:rgba(15,26,51,.85);
    display:flex;align-items:center;
    border-bottom:1px solid rgba(120,160,255,.12);
    backdrop-filter:blur(6px);
  }
  .logo{
    position:absolute;left:32px;top:4px;width:56px;height:72px;border-radius:12px;
    background:#ffffff;
    border:1px solid rgba(120,160,255,0.20);
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 6px 20px rgba(0,0,0,0.40);
    overflow:hidden;
  }
  .logo img{width:100%;height:100%;object-fit:contain;display:block;}
  .titleblock{position:absolute;left:679px;top:18px;}
  .title{font-size:24px;font-weight:700;letter-spacing:.5px;}
  .subtitle{font-size:11px;color:var(--text-gray);margin-top:2px;letter-spacing:2px;}
  .statusblock{position:absolute;left:1654px;top:17px;display:flex;gap:24px;align-items:flex-start;}
  .online{display:flex;align-items:center;gap:8px;}
  .online .dot{width:10px;height:10px;border-radius:50%;background:var(--c-green);box-shadow:0 0 10px var(--c-green);}
  .online .glow{width:22px;height:22px;border-radius:50%;background:rgba(74,222,128,.25);}
  .online .txt{font-size:14px;font-weight:700;color:var(--c-green);}
  .timeblock{text-align:left;}
  .time{font-size:24px;font-weight:700;color:var(--c-cyan);letter-spacing:1px;}
  .date{font-size:12px;color:var(--text-gray);}

  /* ---------- KPI ROW（按排版格式：3 个固定指标并排） ---------- */
  .kpirow{position:absolute;left:32px;top:96px;width:1856px;height:118px;display:flex;gap:16px;}
  .kpi{
    position:relative;flex:1;height:118px;border-radius:10px;overflow:hidden;
    background:linear-gradient(135deg,var(--panel-a),var(--panel-b));
    border:1px solid rgba(120,160,255,.10);
    box-shadow:0 10px 30px rgba(0,0,0,.35);
  }
  .kpi .topline{position:absolute;left:0;top:0;width:100%;height:3px;}
  .kpi .body{position:absolute;left:0;top:3px;width:100%;height:115px;padding:14px 20px;}
  .kpi .head{display:flex;align-items:center;gap:8px;}
  .kpi .ico{width:22px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--accent) 18%,transparent);}
  .kpi .ico svg{width:14px;height:14px;}
  .kpi .ktitle{font-size:13px;color:var(--text-sub);font-weight:400;}
  .kpi .val{margin-top:4px;display:flex;align-items:baseline;gap:6px;}
  .kpi .num{font-size:36px;font-weight:700;line-height:1;color:var(--accent);}
  .kpi .unit{font-size:13px;color:var(--text-gray);}
  .kpi .bot{position:absolute;left:20px;bottom:12px;font-size:11px;font-weight:700;}

  /* ---------- 主内容：左右分栏 ---------- */
  .maincols{position:absolute;left:32px;top:230px;width:1856px;height:818px;display:flex;gap:16px;}

  /* 左栏：三段式（产工工程 / 模具设计 / 前期质量） */
  .leftcol{width:1040px;height:818px;display:flex;flex-direction:column;gap:12px;}

  /* 通用段容器 */
  .sec{
    position:relative;display:flex;flex-direction:column;
    border-radius:10px;overflow:hidden;
    background:linear-gradient(135deg,var(--panel-m1),var(--panel-m2));
    border:1px solid rgba(120,160,255,.10);
    box-shadow:0 10px 30px rgba(0,0,0,.35);
  }
  .sec-head{
    display:flex;align-items:center;gap:8px;
    height:34px;padding:0 16px;flex:none;
    background:rgba(255,255,255,.03);
    border-bottom:1px solid var(--line);
  }
  .sec-dot{width:8px;height:8px;border-radius:4px;}
  .sec-title{font-size:14px;font-weight:700;letter-spacing:1px;}
  .sec-tag{margin-left:auto;font-size:11px;color:var(--text-gray);}
  .sec-body{position:relative;flex:1;padding:10px 14px;overflow:hidden;display:flex;flex-direction:column;}

  /* ===== 段1：产工工程（汇总数字 + ECharts 双柱图） ===== */
  .sec-prod{flex:5.0;}
  .sec-prod .sum{padding:12px 18px;}
  .sec-prod .sum .sk{font-size:14px;}
  .sec-prod .sum .sv{font-size:30px;}
  .sumrow{flex:none;display:flex;gap:12px;margin-bottom:8px;}
  .sum{
    flex:1;display:flex;align-items:center;justify-content:space-between;
    padding:7px 14px;border-radius:8px;
    background:linear-gradient(135deg,var(--panel-a),var(--panel-b));
    border:1px solid rgba(120,160,255,.10);
  }
  .sum .sk{font-size:11px;color:var(--text-sub);}
  .sum .sv{font-size:22px;font-weight:700;line-height:1;}

  /* ===== ECharts 图表容器（三个模块通用） ===== */
  .echart{flex:1;width:100%;min-height:0;}

  /* ===== 段2：模具设计（工作量柱 + 完成率/负荷率 双折线） ===== */
  .sec-mold{flex:4.6;}
  .sec-mold .sum{padding:12px 18px;}
  .sec-mold .sum .sk{font-size:14px;}
  .sec-mold .sum .sv{font-size:30px;}

  /* ===== 段3：前期质量（生产/抽检柱 + 合格率折线，双轴） ===== */
  .sec-quality{flex:6.0;}
  .sec-quality .sum{padding:12px 18px;}
  .sec-quality .sum .sk{font-size:14px;}
  .sec-quality .sum .sv{font-size:30px;}

  /* ---------- 右栏：部门文件化工作（整块贯穿） ---------- */
  .rightcol{width:800px;height:818px;display:flex;}
  .sec-full{width:100%;height:100%;}
  .sec-full .sec-body{display:flex;flex-direction:column;gap:12px;padding:12px 14px;}
  .filec{
    position:relative;flex:1;border-radius:8px;overflow:hidden;
    display:flex;flex-direction:column;
    background:linear-gradient(135deg,var(--panel-a),var(--panel-b));
    border:1px solid rgba(120,160,255,.10);padding:10px 16px;
  }
  .filec .fh{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;}
  /* 右栏现为 卡片 + 项目文件上传数 两块：后者比例加大，表格区更舒展 */
  .filec-chart{flex:1.6;}
  /* 项目文件上传数透视表：行=项目 列=月份 末列/末行=总计（深色面板内紧凑表格） */
  .pft-wrap{flex:1;min-height:0;overflow:auto;margin-top:6px;}
  .pftable{width:100%;border-collapse:collapse;font-size:11px;table-layout:auto;}
  .pftable th,.pftable td{
    padding:4px 8px;text-align:right;white-space:nowrap;
    border:1px solid rgba(120,160,255,.12);color:#c7d5ee;
  }
  .pftable thead th{
    background:rgba(79,217,255,.08);color:var(--c-cyan);font-weight:700;
  }
  .pftable .pft-proj{text-align:left;font-weight:600;color:#eaf1ff;}
  .pftable .pft-sum{font-weight:700;color:var(--c-yellow);}
  .pftable thead .pft-sum{color:var(--c-cyan);}
  .pftable .pft-foot td{
    background:rgba(120,160,255,.06);font-weight:700;color:#eaf1ff;
  }
  .pftable tbody tr:hover td{background:rgba(79,217,255,.05);}
  .filec .fh .fdot{width:8px;height:8px;border-radius:4px;}
  .minigrid{display:flex;margin-top:10px;}
  .mini{margin-right:44px;}
  .mini .ml{font-size:10px;color:var(--text-gray);}
  .mini .mv{font-size:24px;font-weight:700;margin-top:2px;}
  .filec .foot{position:absolute;left:16px;bottom:12px;font-size:10px;color:var(--text-gray);}
  .apr{display:flex;margin-top:10px;}
  .apr .ac{margin-right:48px;}
  .apr .al{font-size:10px;color:var(--text-gray);}
  .apr .av{font-size:26px;font-weight:700;margin-top:2px;}
  .track{position:absolute;left:16px;bottom:34px;width:730px;height:8px;border-radius:4px;background:rgba(255,255,255,.06);overflow:hidden;}
  .track .fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--c-green),var(--c-cyan));}
  /* barlist 内容区：flex:1 拉伸铺满卡片，行与行均匀分布 */
  .barlist{flex:1;display:flex;flex-direction:column;justify-content:space-around;}
  .barlist .brow{display:flex;align-items:center;gap:10px;margin-top:4px;}
  .barlist .blab{font-size:11px;font-weight:700;width:60px;}
  .barlist .bbar{width:460px;height:8px;border-radius:4px;background:rgba(255,255,255,.06);overflow:hidden;}
  .barlist .bbar i{display:block;height:100%;border-radius:4px;}
  .barlist .bval{font-size:11px;font-weight:700;width:40px;}
  .ulist .urow{display:flex;align-items:center;gap:10px;margin-top:5px;}
  .ulist .uname{font-size:11px;font-weight:700;width:70px;}
  .ulist .ubar{width:430px;height:8px;border-radius:4px;background:rgba(255,255,255,.06);overflow:hidden;}
  .ulist .ubar i{display:block;height:100%;border-radius:4px;}
  .ulist .ucount{font-size:11px;font-weight:700;width:40px;}

  /* 工艺文件类数量（右栏卡片 · tech_doc_type，6 项分两行 3 列网格，无表头） */
  .dtype-grid{flex:1;display:flex;flex-direction:column;gap:10px;margin-top:6px;justify-content:space-around;}
  .dtype-row{display:flex;gap:12px;flex:1;}
  .dtype{
    flex:1;display:flex;align-items:center;justify-content:space-between;
    padding:14px 16px;border-radius:10px;min-width:0;
    background:rgba(255,255,255,.04);
    border:1px solid rgba(120,160,255,.10);
  }
  .dtype .dn{font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .dtype .dc{font-size:28px;font-weight:700;line-height:1;margin-left:8px;}
  .empty{color:var(--text-gray);font-size:12px;letter-spacing:2px;text-align:center;padding:24px 0;}
