/* ADG Platform v2 — 样式 (从 index.html 原样提取, 零修改) */
:root{
  --navy:#1E293B;--white:#FFFFFF;--gray:#F8FAFC;
  --blue:#1D4ED8;--green:#16A34A;--orange:#EA580C;--red:#DC2626;--slate:#64748B;
  --sidebar-bg:#F9FAFB;--sidebar-border:#E5E7EB;
  --blue-10:rgba(29,78,216,.08);--blue-22:rgba(29,78,216,.20);
  --navy-06:rgba(30,41,59,.06);--s18:rgba(100,116,139,.18);--s09:rgba(100,116,139,.09);
  --sw:220px;--hh:56px;--sh:42px;--r:10px;--rs:6px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Noto Sans CJK SC","Microsoft YaHei","PingFang SC",sans-serif;
  --mono:"SF Mono","Courier New",monospace;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--font);background:var(--gray);color:var(--navy);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}
button{font-family:inherit;cursor:pointer;border:none;background:none}

/* LOGIN */
#pg-login{position:fixed;inset:0;background:var(--navy);display:flex;align-items:center;justify-content:center;z-index:1000}
.lcard{background:var(--white);border-radius:12px;padding:48px 44px;width:380px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.llogo{display:flex;align-items:center;gap:10px;margin-bottom:36px}
.lmark{width:36px;height:36px;background:var(--blue);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:500;font-size:13px}
.ltxt{font-size:15px;font-weight:500}.lsub{font-size:11px;color:var(--slate);margin-top:1px}
.llbl{font-size:11px;font-weight:500;letter-spacing:.6px;text-transform:uppercase;color:var(--slate);margin-bottom:6px;display:block}
.linp{width:100%;padding:10px 14px;border:1px solid var(--s18);border-radius:var(--rs);font-family:var(--font);font-size:15px;color:var(--navy);background:var(--gray);margin-bottom:16px;outline:none;transition:border-color .15s}
.linp:focus{border-color:var(--blue);background:var(--white)}
.lbtn{width:100%;padding:11px;background:var(--navy);color:var(--white);border-radius:var(--rs);font-size:15px;font-weight:500;margin-top:8px;transition:background .15s}
.lbtn:hover{background:#1E40AF}
.lerr{font-size:12px;color:#c0392b;margin-top:8px;display:none}

/* APP */
#pg-app{display:none;height:100vh;overflow:hidden}

/* SIDEBAR */
.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sw);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);display:flex;flex-direction:column;z-index:100}
.slogo{padding:0 20px;height:var(--hh);display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--sidebar-border);flex-shrink:0}
.smark{width:28px;height:28px;background:var(--blue);border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff}
.stxt{font-size:13px;font-weight:600;color:var(--navy)}.ssub{font-size:10px;color:var(--slate)}
.snav{flex:1;padding:12px 8px;overflow-y:auto}
.sgrp{margin-bottom:20px}
.sgrplbl{font-size:11px;font-weight:600;letter-spacing:.7px;text-transform:uppercase;color:var(--slate);padding:0 10px;margin-bottom:4px}
.ni{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:var(--rs);color:var(--slate);font-size:13px;cursor:pointer;transition:all .15s;margin-bottom:1px;border-left:2px solid transparent}
.ni:hover{background:rgba(29,78,216,.06);color:var(--navy)}
.ni.on{background:rgba(29,78,216,.08);color:var(--blue);border-left-color:var(--blue);font-weight:600}
.ni svg{width:15px;height:15px;flex-shrink:0;opacity:.6}
.ni.on svg{opacity:1}
.nbadge{margin-left:auto;font-size:10px;font-family:var(--mono);background:rgba(29,78,216,.1);color:var(--blue);padding:1px 6px;border-radius:10px}
.sbot{padding:10px 8px;border-top:1px solid var(--sidebar-border);flex-shrink:0}
.usr{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--rs);cursor:pointer;transition:background .15s}
.usr:hover{background:rgba(29,78,216,.06)}
.uavt{width:28px;height:28px;border-radius:50%;background:rgba(29,78,216,.1);color:var(--blue);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600}
.unm{font-size:13px;color:var(--navy);font-weight:500}.uro{font-size:11px;color:var(--slate)}

/* MAIN */
.main{margin-left:var(--sw);height:100vh;display:flex;flex-direction:column;overflow:hidden}
.hdr{height:var(--hh);background:var(--white);border-bottom:1px solid var(--sidebar-border);display:flex;align-items:center;padding:0 28px;gap:16px;flex-shrink:0}
.htitle{font-size:16px;font-weight:600;color:var(--navy);flex:1}
.hmeta{font-size:12px;color:var(--slate);display:flex;align-items:center;gap:6px}
.hdot{width:6px;height:6px;border-radius:50%;background:var(--green)}
.hdiv{width:1px;height:18px;background:var(--s18)}
.hbtn{padding:6px 14px;border-radius:var(--rs);font-size:12px;font-weight:500;color:var(--navy);border:1px solid #D1D5DB;transition:all .15s}
.hbtn:hover{border-color:var(--blue);color:var(--blue);background:rgba(29,78,216,.04)}
.hbtn.pr{background:var(--blue);color:#fff;border-color:var(--blue);font-weight:600}
.hbtn.pr:hover{background:#1E40AF;color:#fff}
.hbtn.danger{border-color:rgba(185,28,28,.3);color:#b91c1c}
.hbtn.danger:hover{background:rgba(185,28,28,.06)}

/* SUB-NAV */
.subnav{height:var(--sh);background:var(--white);border-bottom:1px solid var(--sidebar-border);display:none;align-items:stretch;padding:0 20px;overflow-x:auto;flex-shrink:0;gap:0;scrollbar-width:none}
.subnav.show{display:flex}
.subnav::-webkit-scrollbar{display:none}
.stab{padding:0 14px;font-size:13px;color:var(--slate);cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;display:flex;align-items:center;transition:all .15s;flex-shrink:0}
.stab:hover{color:var(--navy)}
.stab.on{color:var(--blue);border-bottom-color:var(--blue);font-weight:600}

/* CONTENT */
.content{flex:1;overflow-y:auto;padding:24px 28px}

/* METRIC CARDS */
.mgrid{display:grid;grid-template-columns:1fr;gap:16px;margin-bottom:24px}
.mgrid > *{min-width:0}
@media(min-width:600px){.mgrid{grid-template-columns:repeat(2,1fr)}}
.mc{background:var(--white);border-radius:var(--r);padding:22px 24px;border:1px solid #E2E8F0;box-shadow:0 1px 3px rgba(0,0,0,.08);transition:box-shadow .2s}
.mc:hover{box-shadow:0 4px 12px rgba(0,0,0,.12);cursor:pointer}
.mlbl{font-size:12px;font-weight:500;letter-spacing:.3px;text-transform:uppercase;color:var(--slate);margin-bottom:8px}
.mval{font-family:var(--mono);font-size:26px;font-weight:700;color:var(--navy);line-height:1;margin-bottom:8px}
.mval.acc{color:var(--green)}
.msub{font-size:12px;color:var(--slate)}
.mrow{display:flex;align-items:center;justify-content:space-between;padding:6px 0}
.mrow+.mrow{border-top:0.5px solid var(--s09)}
.mkey{font-size:11px;color:var(--slate)}
.mnum{font-family:var(--mono);font-size:13px;font-weight:500;color:var(--navy)}
.mnum.acc{color:var(--green)}

/* SECTION */
.sechd{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.sectitle{font-size:13px;font-weight:500}

/* CARD */
.card{background:var(--white);border-radius:var(--r);border:1px solid #E2E8F0;box-shadow:0 1px 3px rgba(0,0,0,.08);overflow:hidden;margin-bottom:20px}
.card-p{padding:20px 24px}

/* ── DATA CARD GRID ─────────────────────────────── */
/* Auto-fill: fill as many columns as fit, min 280px each.
   Cards will naturally flow side-by-side on wide screens
   and stack vertically on narrow / mobile screens.       */
.cg{
  display:grid;
  grid-template-columns:1fr;          /* mobile default */
  gap:20px;
  margin-bottom:20px;
  align-items:start;
}
.cg > *{min-width:0}
/* ≥540px: 2 columns */
@media(min-width:540px){
  .cg{grid-template-columns:repeat(2,1fr)}
  .cg-wide{grid-template-columns:repeat(2,1fr)}
}
/* ≥860px: 3 columns */
@media(min-width:860px){
  .cg{grid-template-columns:repeat(3,1fr)}
  .cg-wide{grid-template-columns:repeat(2,1fr)}
}
/* ≥1100px: 4 cols for .cg, 3 for .cg-wide */
@media(min-width:1100px){
  .cg{grid-template-columns:repeat(4,1fr)}
  .cg-wide{grid-template-columns:repeat(3,1fr)}
}
.cg-1{grid-template-columns:1fr!important}

/* Data card shell */
.dc{
  background:var(--white);
  border-radius:var(--r);
  border:1px solid #E2E8F0;
  box-shadow:0 1px 3px rgba(0,0,0,.08);
  overflow:hidden;
  display:flex;
  flex-direction:column;
  align-self:start;
  min-width:0;
  transition:box-shadow .2s;
}
.dc:hover{box-shadow:0 4px 12px rgba(0,0,0,.1)}
/* Status left-border tints */
.dc{border-left:3px solid #FED7AA}
.dc.dc-done{border-left-color:var(--green)}
.dc.dc-done .dc-hd{background:#F0FDF4;border-bottom-color:#BBF7D0}
.dc.dc-done .dc-title{color:#14532D}
.dc.dc-done .dc-sub{color:#166534}
.dc.dc-active{border-left-color:var(--orange)}
.dc.dc-gray{border-left-color:#FED7AA}

/* Card header — light orange */
.dc-hd{
  padding:12px 16px;
  border-bottom:1px solid #FED7AA;
  background:#FFF7ED;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:8px;
  flex-shrink:0;
}
.dc-title{
  font-size:15px;
  font-weight:600;
  color:#7C2D12;
  line-height:1.3;
}
.dc-sub{
  font-size:12px;
  color:#9A3412;
  margin-top:3px;
  line-height:1.4;
  opacity:.75;
}
.dc-badge{flex-shrink:0;margin-top:2px}

/* Section divider inside card */
.dc-sec{
  padding:5px 16px 4px;
  background:#EFF6FF;
  font-size:11px;
  font-weight:500;
  color:var(--blue);
  letter-spacing:.4px;
  text-transform:uppercase;
  border-top:1px solid #DBEAFE;
  border-bottom:1px solid #DBEAFE;
}

/* Field rows */
.fr{display:flex;align-items:flex-start;padding:9px 16px;border-bottom:0.5px solid var(--s09);gap:12px;min-height:30px}
.fr:last-child{border-bottom:none}
.fk{font-size:12px;color:var(--slate);flex:0 0 108px;padding-top:2px;line-height:1.4;word-break:break-word}
.fv{font-size:13px;color:var(--navy);flex:1;min-width:0;max-width:100%;line-height:1.6;word-break:break-word;overflow-wrap:anywhere}

/* Value tiers */
.fv-hi{font-size:14px;font-weight:500;color:var(--blue)}
.fv-num{font-family:var(--mono);font-size:13px;font-weight:500;color:var(--navy)}
.fv-bold{font-size:13px;font-weight:500;color:var(--navy)}
.fv-code{font-family:var(--mono);font-size:12px;color:var(--navy)}
.fv-date{font-size:13px;color:var(--slate)}
.fv-na{font-size:12px;color:var(--slate);opacity:.6;font-style:italic}

/* Summary totals row inside a card */
.dc-total{padding:10px 16px;background:#F8FAFC;border-top:1px solid #E2E8F0;display:flex;justify-content:space-between;align-items:center}
.dc-total-label{font-size:12px;color:var(--slate)}
.dc-total-val{font-family:var(--mono);font-size:14px;font-weight:500;color:var(--navy)}
.dc-total-val.acc{color:var(--green)}

/* TABLE */
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--r)}
table{width:100%;border-collapse:collapse;font-size:13px;table-layout:auto}
thead th{
  padding:9px 14px;text-align:left;
  font-size:12px;font-weight:500;letter-spacing:.3px;text-transform:uppercase;
  color:var(--slate);background:var(--gray);
  border-bottom:2px solid var(--s18);
  white-space:nowrap;vertical-align:middle;
  position:relative;
}
thead th.th-num{text-align:right}
tbody tr{border-bottom:1px solid var(--s09);transition:background .08s}
tbody tr:last-child{border-bottom:none}
tbody tr:hover{background:rgba(29,78,216,.04)!important;cursor:pointer}
tbody tr:nth-child(even):not(.sec-hd){background:rgba(240,244,250,.5)}
tbody tr:nth-child(even):not(.sec-hd):hover{background:rgba(220,232,255,.3)!important}
tbody td{padding:12px 14px;vertical-align:middle;line-height:1.5;font-size:14px}
/* Section divider rows */
tr.sec-hd td{
  background:var(--blue-10);
  font-size:12px;font-weight:500;
  color:var(--blue);letter-spacing:.4px;text-transform:uppercase;
  padding:7px 14px;
  border-top:1px solid #DBEAFE;
  border-bottom:1px solid #DBEAFE;
}
/* Cell types */
.tc-text{font-size:14px;color:var(--navy);line-height:1.6;word-break:break-word;overflow-wrap:anywhere}
.tc-num{font-family:var(--mono);font-size:13px;color:var(--navy);text-align:right;white-space:nowrap}
.tc-code{font-family:var(--mono);font-size:12px;color:var(--navy);white-space:nowrap}
.tc-label{font-size:13px;font-weight:500;color:var(--navy);line-height:1.45;word-break:break-word;max-width:200px}
.tc-muted{font-size:13px;color:var(--slate);line-height:1.5;word-break:break-word}
.tc-na{font-size:12px;color:var(--slate);opacity:.65;font-style:italic}
/* Legacy aliases */
.td-b{font-weight:500;color:var(--navy);font-size:14px}
.td-m{font-family:var(--mono);font-size:13px;color:var(--navy)}
.td-s{color:var(--slate);font-size:13px}
.td-val{font-size:14px;line-height:1.6;word-break:break-word;overflow-wrap:anywhere;max-width:280px}
.td-field{font-size:13px;font-weight:500;color:var(--navy);word-break:break-word;line-height:1.45;max-width:200px}
.na{color:var(--slate);opacity:.65;font-style:italic;font-size:12px}
/* Status chips */
.chip{display:inline-block;padding:2px 8px;border-radius:5px;font-size:11px;font-weight:500;white-space:nowrap}
.chip-ok{background:var(--blue-10);color:var(--blue)}
.chip-warn{background:rgba(202,138,4,.1);color:#92650a}
.chip-err{background:rgba(185,28,28,.08);color:#b91c1c}
.chip-neu{background:var(--s09);color:var(--slate)}

/* PILLS */
.pill{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:10px;font-size:12px;font-weight:500;white-space:nowrap}
.pd{width:5px;height:5px;border-radius:50%}
.p-full{background:rgba(22,163,74,.12);color:#15803d;font-weight:600}.p-full .pd{background:#16a34a}
.p-done{background:rgba(29,78,216,.1);color:var(--blue)}.p-done .pd{background:var(--blue)}
.p-pend{background:rgba(234,88,12,.1);color:#c2410c}.p-pend .pd{background:var(--orange)}
.p-wait{background:var(--s09);color:var(--slate)}.p-wait .pd{background:var(--slate)}
.p-none{background:rgba(185,28,28,.08);color:#b91c1c}.p-none .pd{background:#dc2626}
.tag{display:inline-block;font-size:11px;font-weight:500;padding:2px 8px;border-radius:6px;background:rgba(29,78,216,.08);color:var(--blue);border:1px solid rgba(29,78,216,.2)}
.tag.w{background:rgba(234,88,12,.08);color:#c2410c;border-color:rgba(234,88,12,.2)}

/* PROGRESS */
.pw{display:flex;align-items:center;gap:8px;min-width:90px}
.pt{flex:1;height:4px;background:var(--s09);border-radius:2px;overflow:hidden;min-width:50px}
.pf{height:100%;background:var(--green);border-radius:2px}
.pp{font-family:var(--mono);font-size:12px;color:var(--slate);min-width:30px;text-align:right}

/* ── ADMIN PAGE ─────────────────────────────────── */
.admin-wrap{}
.admin-section{background:var(--white);border-radius:var(--r);border:1px solid #E2E8F0;box-shadow:0 1px 3px rgba(0,0,0,.08);overflow:hidden;margin-bottom:20px}
.admin-head{padding:16px 20px;border-bottom:1px solid var(--s18);display:flex;align-items:center;justify-content:space-between}
.admin-head-title{font-size:13px;font-weight:500}
.admin-head-sub{font-size:11px;color:var(--slate);margin-top:2px}
.admin-body{padding:20px}
.file-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:16px}
.frow{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:var(--rs);background:var(--gray);border:1px solid var(--s18);transition:border-color .15s}
.frow.loaded{border-color:var(--blue);background:var(--blue-10)}
.fic{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:500;flex-shrink:0;transition:all .15s}
.fic.ok{background:var(--blue-10);color:var(--blue)}
.fic.wt{background:var(--s09);color:var(--slate)}
.fnm{font-size:12px;font-weight:500;color:var(--navy)}
.fsb{font-size:11px;color:var(--slate);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:130px}
.udrop{border:1.5px dashed var(--s18);border-radius:var(--r);padding:32px;text-align:center;cursor:pointer;transition:all .2s;background:var(--white)}
.udrop.drag,.udrop:hover{border-color:var(--blue);background:var(--blue-10)}
.udrop-icon{margin:0 auto 10px;display:block;opacity:.5}
.udrop-title{font-size:14px;font-weight:500;color:var(--navy);margin-bottom:4px}
.udrop-sub{font-size:12px;color:var(--slate)}
.upload-actions{display:flex;gap:10px;margin-top:16px}
.progress-bar-wrap{display:none;margin-top:14px}
.progress-bar-wrap.show{display:block}
.progress-bar-bg{height:4px;background:var(--s09);border-radius:2px;overflow:hidden}
.progress-bar-fill{height:100%;background:var(--blue);border-radius:2px;transition:width .3s}
.progress-label{font-size:11px;color:var(--slate);margin-top:6px}
.data-meta-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.meta-item{padding:12px 14px;background:var(--gray);border-radius:var(--rs);border:1px solid var(--s18)}
.meta-key{font-size:11px;color:var(--slate);margin-bottom:4px}
.meta-val{font-size:13px;font-weight:500;color:var(--navy)}

/* EMPTY / NO DATA */
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--slate);text-align:center}
.empty svg{margin-bottom:16px;opacity:.3}
.empty-t{font-size:15px;font-weight:500;color:var(--navy);margin-bottom:6px}
.empty-s{font-size:13px;margin-bottom:20px}

/* RESPONSIVE */
@media(max-width:900px){
  .sidebar{transform:translateX(-220px);transition:transform .25s ease}
  .sidebar.open{transform:translateX(0);box-shadow:4px 0 24px rgba(0,0,0,.12)}
  .main{margin-left:0}
  .mh{display:none}
  .hambtn{display:flex!important}
  .file-grid{grid-template-columns:1fr}
}
@media(max-width:520px){.content{padding:16px}.hdr{padding:0 16px}}
.hambtn{display:none;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--rs);border:1px solid var(--s18);margin-right:4px}
.hamlines{display:flex;flex-direction:column;gap:4px}
.hamlines span{display:block;width:14px;height:1.5px;background:var(--navy);border-radius:1px}
.ovr{display:none;position:fixed;inset:0;background:rgba(10,22,40,.45);z-index:99}
.ovr.show{display:block}

/* CONFIRM MODAL */
.cmodal{display:none;position:fixed;inset:0;background:rgba(10,22,40,.5);z-index:500;align-items:center;justify-content:center}
.cmodal.show{display:flex}
.cbox{background:var(--white);border-radius:14px;padding:28px 32px;width:420px;max-width:92vw}
.cbox-title{font-size:15px;font-weight:500;margin-bottom:8px}
.cbox-sub{font-size:13px;color:var(--slate);margin-bottom:24px}
.cbox-act{display:flex;justify-content:flex-end;gap:10px}

/* ── 新增: 筛选栏 ── */
.filter-bar{display:flex;align-items:center;gap:8px;margin-left:auto;padding-right:8px}
.filter-bar select{padding:5px 24px 5px 10px;border:1px solid var(--s18);border-radius:var(--rs);font-family:var(--font);font-size:12px;color:var(--navy);background:var(--white);cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%2364748B' stroke-width='1.3' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;transition:border-color .15s}
.filter-bar select:hover{border-color:var(--blue)}
.filter-bar select:focus{border-color:var(--blue);box-shadow:0 0 0 2px rgba(29,78,216,.12)}
.filter-label{font-size:11px;color:var(--slate);white-space:nowrap}
