:root{
    --bg:#0a1424; --card:rgba(255,255,255,.045);
    --line:rgba(255,255,255,.09); --line2:rgba(255,255,255,.14);
    --txt:#e8f0fb; --muted:#8ba3c7; --dim:#5f7796;
    --a1:#2bb0e8; --a2:#23d5c5; --gold:#ffd479; --danger:#ff7b7b;
    --sh:0 8px 28px rgba(0,0,0,.35);
  }
  *{box-sizing:border-box}
  html,body{margin:0;padding:0}
  body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;
    background:var(--bg);color:var(--txt);line-height:1.6;font-size:14px;-webkit-font-smoothing:antialiased}
  body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
    background:radial-gradient(900px 420px at 12% -8%,rgba(43,176,232,.20),transparent 60%),
      radial-gradient(760px 380px at 88% -12%,rgba(35,213,197,.14),transparent 60%)}
  .shell{position:relative;z-index:1}

  header{position:relative;overflow:hidden;
    background:linear-gradient(120deg,#0b2340 0%,#113455 55%,#0d2b47 100%);
    border-bottom:1px solid rgba(255,255,255,.08)}
  header::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:44px;
    background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1200' height='44' viewBox='0 0 1200 44'><path d='M0,20 C150,44 300,0 450,16 C600,32 750,4 900,18 C1050,32 1150,12 1200,8 L1200,44 L0,44 Z' fill='rgba(255,255,255,.05)'/><path d='M0,28 C180,44 320,12 480,24 C640,36 780,14 940,26 C1080,36 1160,22 1200,18 L1200,44 L0,44 Z' fill='rgba(255,255,255,.04)'/></svg>") repeat-x center bottom/cover}
  .hwrap{max-width:1400px;margin:0 auto;padding:22px 26px 30px;display:flex;gap:22px;
    align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
  .brand{display:flex;gap:14px;align-items:center}
  .logo{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;flex:none;
    background:linear-gradient(135deg,var(--a1),var(--a2));box-shadow:0 6px 18px rgba(43,176,232,.35)}
  .logo svg{width:26px;height:26px}
  .brand h1{margin:0;font-size:21px;letter-spacing:.5px;font-weight:700}
  .brand p{margin:2px 0 0;font-size:12.5px;color:#a9c6e0}
  .kpis{display:flex;gap:8px;flex-wrap:nowrap;flex:1 1 100%;margin-top:2px}
  .kpi{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);
    border-radius:11px;padding:8px 10px;flex:1 1 0;min-width:0;text-align:center;backdrop-filter:blur(6px)}
  .kpi b{display:block;font-size:16px;font-weight:700;line-height:1.25;white-space:nowrap;
    background:linear-gradient(135deg,#fff,#9fe8ff);-webkit-background-clip:text;background-clip:text;color:transparent}
  .kpi span{display:block;font-size:11px;color:#a9c6e0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  @media(max-width:1000px){.kpis{flex-wrap:wrap}.kpi{flex:1 1 96px}}

  .wrap{max-width:1400px;margin:0 auto;padding:20px 26px 70px;display:grid;
    grid-template-columns:290px 1fr;gap:20px;align-items:start}
  @media(max-width:1000px){.wrap{grid-template-columns:1fr}}
  .card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh)}
  .side{position:sticky;top:16px;display:flex;flex-direction:column;gap:14px}
  .card-hd{padding:13px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px}
  .card-hd h3{margin:0;font-size:13.5px;font-weight:600;letter-spacing:.4px}
  .dot{width:7px;height:7px;border-radius:50%;background:linear-gradient(135deg,var(--a1),var(--a2))}

  .nav{padding:8px}
  .nav-i{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;
    cursor:pointer;color:var(--muted);font-size:13.5px;transition:.16s;border:1px solid transparent}
  .nav-i:hover{background:rgba(255,255,255,.05);color:var(--txt)}
  .nav-i.on{background:linear-gradient(135deg,rgba(43,176,232,.22),rgba(35,213,197,.12));
    border-color:rgba(43,176,232,.35);color:#fff;font-weight:600}
  .nav-i .ic{width:18px;height:18px;flex:none;opacity:.9}
  .nav-grp{font-size:11px;color:var(--dim);padding:8px 12px 4px;letter-spacing:.6px}

  .fbody{padding:14px 16px;display:flex;flex-direction:column;gap:12px}
  .fl label{display:block;font-size:11.5px;color:var(--muted);margin-bottom:5px;letter-spacing:.3px}
  .fl input,.fl select{width:100%;background:rgba(8,18,32,.62);border:1px solid var(--line);
    color:var(--txt);padding:9px 11px;border-radius:9px;font-size:13px;outline:none;transition:.16s;font-family:inherit}
  .fl input:focus,.fl select:focus{border-color:var(--a1);box-shadow:0 0 0 3px rgba(43,176,232,.14)}
  .fl select{appearance:none;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4.5L6 8.5L10 4.5' stroke='%238ba3c7' stroke-width='1.6' fill='none' stroke-linecap='round'/></svg>");
    background-repeat:no-repeat;background-position:right 11px center;padding-right:28px}
  .fl select option{background:#0d1c30;color:var(--txt)}
  .note{background:rgba(255,212,121,.08);border:1px solid rgba(255,212,121,.28);border-radius:9px;
    padding:8px 10px;font-size:11.5px;line-height:1.6;color:#ffe3ae}
  .btns{display:flex;gap:9px;margin-top:2px}
  button{cursor:pointer;font-family:inherit;font-size:13px;border-radius:9px;border:none;transition:.16s}
  .btn-p{flex:1;background:linear-gradient(135deg,var(--a1),var(--a2));color:#04202d;font-weight:700;
    padding:10px 14px;box-shadow:0 4px 14px rgba(43,176,232,.28)}
  .btn-p:hover{filter:brightness(1.08);transform:translateY(-1px)}
  .btn-g{background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--muted);padding:10px 14px}
  .btn-g:hover{color:var(--txt);border-color:var(--line2)}

  .main{display:flex;flex-direction:column;gap:14px;min-width:0}
  .toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 16px}
  .hits{font-size:13px;color:var(--muted)}
  .hits b{color:var(--txt);font-size:15px}
  .spacer{flex:1}
  .tb-sel{background:rgba(8,18,32,.62);border:1px solid var(--line);color:var(--txt);
    padding:7px 26px 7px 11px;border-radius:8px;font-size:12.5px;appearance:none;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4.5L6 8.5L10 4.5' stroke='%238ba3c7' stroke-width='1.6' fill='none' stroke-linecap='round'/></svg>");
    background-repeat:no-repeat;background-position:right 9px center;outline:none}
  .tb-sel option{background:#0d1c30}

  .chips{padding:0 16px 12px;display:flex;gap:7px;flex-wrap:wrap}
  .chips:empty{display:none}
  .achip{background:rgba(43,176,232,.14);border:1px solid rgba(43,176,232,.35);color:#bfe8fb;
    padding:4px 9px;border-radius:8px;font-size:11.5px;display:inline-flex;gap:6px;align-items:center;cursor:pointer}
  .achip:hover{background:rgba(255,123,123,.16);border-color:rgba(255,123,123,.4);color:#ffc9c9}
  .achip i{font-style:normal;opacity:.7}
  .achip em{font-style:normal;color:#fff;font-weight:600}

  .tblwrap{overflow:auto;border-radius:14px}
  table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
  th{position:sticky;top:0;z-index:2;background:#12233c;color:var(--muted);font-weight:600;
    font-size:12px;text-align:left;padding:11px 13px;border-bottom:1px solid var(--line2);white-space:nowrap}
  td{padding:11px 13px;border-bottom:1px solid rgba(255,255,255,.055);vertical-align:middle}
  tbody tr{cursor:pointer;transition:background .14s}
  tbody tr:hover{background:rgba(43,176,232,.09)}
  tbody tr:last-child td{border-bottom:none}
  .nm{display:flex;align-items:center;gap:7px;flex-wrap:nowrap;white-space:nowrap}
  .nm a{color:var(--txt);text-decoration:none;font-weight:600;white-space:nowrap}
  tbody tr:hover .nm a{color:#7fd8ff}
  td.cap{white-space:nowrap}
  .tag{font-size:10.5px;padding:1px 7px;border-radius:6px;border:1px solid rgba(35,213,197,.4);
    color:#8ff0e4;background:rgba(35,213,197,.1);white-space:nowrap}
  .tag.q{border-color:rgba(139,163,199,.3);color:var(--muted);background:rgba(255,255,255,.04)}
  .tag.o{border-color:rgba(255,212,121,.45);color:var(--gold);background:rgba(255,212,121,.1)}
  .tag.g2{border-color:rgba(139,180,255,.4);color:#bcd4ff;background:rgba(139,180,255,.1)}
  .badge{font-size:10.5px;padding:2px 8px;border-radius:20px;font-weight:700;white-space:nowrap}
  .b-aaa{background:linear-gradient(135deg,#ffd479,#ffb547);color:#4a3300}
  .b-bad{background:linear-gradient(135deg,#ff8a8a,#f2555a);color:#4d0000}
  .b-ev{background:rgba(35,213,197,.18);color:#8ff0e4;border:1px solid rgba(35,213,197,.35)}
  .b-mid{background:rgba(43,176,232,.18);color:#9dd9f7;border:1px solid rgba(43,176,232,.38)}
  .b-na{background:rgba(255,255,255,.06);color:var(--dim)}
  .b-t3{background:rgba(139,180,255,.16);color:#bcd4ff;border:1px solid rgba(139,180,255,.32)}
  .b-ok{background:rgba(35,213,197,.14);color:#8ff0e4;border:1px solid rgba(35,213,197,.3)}
  .b-out{background:rgba(255,255,255,.06);color:var(--muted);border:1px solid var(--line)}
  .muted{color:var(--muted)}
  .dim{color:var(--dim)}

  .ph{padding:60px 20px;text-align:center;color:var(--dim)}
  .ph svg{width:74px;height:74px;opacity:.35;margin-bottom:12px}
  .skel{padding:20px}
  .skel i{display:block;height:12px;border-radius:6px;margin-bottom:10px;
    background:linear-gradient(90deg,rgba(255,255,255,.05),rgba(255,255,255,.11),rgba(255,255,255,.05));
    background-size:200% 100%;animation:sk 1.2s infinite}
  @keyframes sk{0%{background-position:200% 0}100%{background-position:-200% 0}}

  .pager{display:flex;align-items:center;gap:7px;justify-content:center;padding:14px;flex-wrap:wrap}
  .pbtn{min-width:32px;height:32px;padding:0 9px;background:rgba(255,255,255,.05);
    border:1px solid var(--line);color:var(--muted);border-radius:8px;font-size:12.5px}
  .pbtn:hover:not(:disabled){color:var(--txt);border-color:var(--line2)}
  .pbtn.on{background:linear-gradient(135deg,var(--a1),var(--a2));color:#04202d;font-weight:700;border-color:transparent}
  .pbtn:disabled{opacity:.35;cursor:not-allowed}

  .mask{position:fixed;inset:0;background:rgba(4,10,20,.62);backdrop-filter:blur(3px);
    opacity:0;visibility:hidden;transition:.22s;z-index:40}
  .mask.on{opacity:1;visibility:visible}
  .drawer{position:fixed;top:0;right:0;height:100%;width:620px;max-width:94vw;z-index:41;
    background:linear-gradient(180deg,#0f2138,#0b1a2c);border-left:1px solid var(--line);
    box-shadow:-18px 0 48px rgba(0,0,0,.5);transform:translateX(102%);transition:transform .26s cubic-bezier(.4,0,.2,1);
    display:flex;flex-direction:column}
  .drawer.on{transform:translateX(0)}
  .d-hd{padding:20px 22px;border-bottom:1px solid var(--line);position:relative}
  .d-hd h2{margin:0;font-size:17px;padding-right:34px;line-height:1.4}
  .d-hd .sub{margin-top:6px;display:flex;gap:7px;flex-wrap:wrap}
  .d-close{position:absolute;top:16px;right:18px;width:28px;height:28px;border-radius:8px;
    background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--muted);font-size:17px;line-height:1}
  .d-close:hover{color:#fff;border-color:var(--line2)}
  .d-bd{padding:8px 22px 26px;overflow:auto}
  .sec{margin-top:16px}
  .sec-t{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--a2);
    letter-spacing:1px;margin-bottom:8px;font-weight:700}
  .sec-t::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(35,213,197,.35),transparent)}
  .sec-t.t3{color:#bcd4ff}
  .sec-t.t3::after{background:linear-gradient(90deg,rgba(139,180,255,.35),transparent)}
  .kv{display:grid;grid-template-columns:112px 1fr;gap:9px 12px;font-size:13px}
  .kv .k{color:var(--muted);font-size:12.5px}
  .kv .v{word-break:break-all}
  .pill{display:inline-block;background:rgba(43,176,232,.13);border:1px solid rgba(43,176,232,.3);
    color:#bfe8fb;padding:2px 9px;border-radius:7px;font-size:11.5px;margin:0 5px 5px 0}
  .pill.g{background:rgba(35,213,197,.12);border-color:rgba(35,213,197,.3);color:#8ff0e4}
  .scope{background:rgba(8,18,32,.55);border:1px solid var(--line);border-radius:10px;
    padding:11px 13px;font-size:12.5px;color:#c3d5ea;line-height:1.75;max-height:170px;overflow:auto}
  .qt{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:4px}
  .qt th{position:static;background:rgba(8,18,32,.6);padding:7px 9px;font-size:11.5px;border-bottom:1px solid var(--line)}
  .qt td{padding:7px 9px;border-bottom:1px solid rgba(255,255,255,.05)}
  .lst{font-size:12.5px}
  .lst div{padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05);line-height:1.6}
  .lst div:last-child{border-bottom:none}
  .lst .t{color:var(--txt);font-weight:600}
  .lst .s{color:var(--muted);font-size:11.5px}
  .warn{background:rgba(255,123,123,.1);border:1px solid rgba(255,123,123,.3);border-radius:9px;
    padding:9px 12px;font-size:12.5px;color:#ffc9c9;line-height:1.65}
  .good{background:rgba(35,213,197,.08);border:1px solid rgba(35,213,197,.25);border-radius:9px;
    padding:9px 12px;font-size:12.5px;color:#bff2ec;line-height:1.65}
  .t3box{background:rgba(139,180,255,.07);border:1px solid rgba(139,180,255,.22);border-radius:10px;
    padding:11px 13px;font-size:12.5px;color:#d3e0f7;line-height:1.7}
  .stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:8px}
  .stat div{background:rgba(8,18,32,.55);border:1px solid var(--line);border-radius:9px;padding:8px 10px;text-align:center}
  .stat b{display:block;font-size:15px;color:#bfe8fb}
  .stat span{font-size:11px;color:var(--muted)}

  /* ================= 浅色主题 + 横向布局（2026-09-12 改版） =================
     说明：以上为原深色主题定义，此段在其后覆盖生效，便于回退。 */
  :root{
    --bg:#eef4fb; --card:#ffffff;
    --line:rgba(21,52,92,.10); --line2:rgba(21,52,92,.20);
    --txt:#132a45; --muted:#5c7794; --dim:#93a9c2;
    --a1:#1a8fd6; --a2:#0fb5a6; --gold:#b8860b; --danger:#d9453f;
    --sh:0 6px 20px rgba(21,52,92,.09);
  }
  body::before{background:radial-gradient(900px 420px at 12% -8%,rgba(43,176,232,.13),transparent 60%),
    radial-gradient(760px 380px at 88% -12%,rgba(35,213,197,.10),transparent 60%)}

  /* --- 布局：侧边功能改为顶部横向排列；内容区与顶栏等宽铺满 ---
     注意：原 .wrap 是 grid + align-items:start，换成 flex 列后该值会让子项
     按内容宽度收缩（曾导致内容区 1016px vs 顶栏 1348px、右侧空一大块），
     故这里显式声明 align-items:stretch。 */
  .wrap{display:flex;flex-direction:column;gap:16px;align-items:stretch}
  .side{position:static;display:flex;flex-direction:column;width:auto;min-width:0;
    background:var(--card);border:1px solid var(--line);border-radius:14px;
    box-shadow:var(--sh);overflow:hidden}
  .side > .card{background:transparent;border:none;border-radius:0;box-shadow:none}
  .side > .card:first-child{background:linear-gradient(180deg,#f4faff,#fff);
    border-bottom:1px solid var(--line)}
  .main{width:auto;gap:16px}

  /* 导航：横排胶囊 */
  .nav{display:flex;flex-wrap:wrap;align-items:center;gap:8px 9px;padding:4px 15px 13px}
  .nav-grp{font-size:11px;color:var(--dim);letter-spacing:.6px;align-self:center;padding:0 4px 0 2px;
    white-space:nowrap}
  .nav-i + .nav-grp{margin-left:8px;padding-left:14px;border-left:1px solid var(--line2)}
  .nav-i{border-radius:999px;padding:8px 15px}
  .nav-i.on{background:linear-gradient(135deg,var(--a1),var(--a2));border-color:transparent;
    color:#fff;box-shadow:0 4px 12px rgba(26,143,214,.28)}
  .nav-i.on .ic{opacity:1}

  /* 筛选表单：横向自适应多列 */
  .fbody{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
    gap:13px 16px;align-items:end;padding:15px 16px 17px}
  .fbody .note{grid-column:1/-1;margin:0}
  .fbody .btns{grid-column:1/-1;margin:0;max-width:380px;justify-self:start}
  @media(max-width:1000px){.fbody{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}}

  /* --- 浅色主题：表单控件 --- */
  .fl input,.fl select{background:#fff;border-color:var(--line);color:var(--txt)}
  .fl select option{background:#fff;color:var(--txt)}
  .tb-sel{background:#fff;color:var(--txt)}
  .tb-sel option{background:#fff;color:var(--txt)}
  .btn-g{background:#fff;border-color:var(--line2);color:var(--muted)}
  .btn-g:hover{color:var(--txt);background:#f4f9ff}

  /* --- 浅色主题：表格 --- */
  th{background:#eaf2fb;color:#5c7794}
  td{border-bottom:1px solid var(--line)}
  tbody tr:hover{background:rgba(26,143,214,.07)}
  tbody tr:hover .nm a{color:#0b6aa8}

  /* --- 浅色主题：标签 / 徽章 / 提示 --- */
  .achip{background:rgba(26,143,214,.12);border-color:rgba(26,143,214,.32);color:#1668a8}
  .achip em{color:#0d3d63}
  .achip:hover{background:rgba(217,69,63,.12);border-color:rgba(217,69,63,.35);color:#a32a24}
  .tag{color:#0c8a7d;background:rgba(15,181,166,.12);border-color:rgba(15,181,166,.38)}
  .tag.q{color:var(--muted);background:rgba(21,52,92,.04);border-color:var(--line2)}
  .tag.o{color:#9a6d05;background:rgba(184,134,11,.10);border-color:rgba(184,134,11,.35)}
  .tag.g2{color:#3f6fd0;background:rgba(63,111,208,.10);border-color:rgba(63,111,208,.30)}
  .b-ev{color:#0c8a7d;background:rgba(15,181,166,.16);border-color:rgba(15,181,166,.35)}
  .b-t3{color:#3f6fd0;background:rgba(63,111,208,.14);border-color:rgba(63,111,208,.30)}
  .b-ok{color:#0c8a7d;background:rgba(15,181,166,.14);border-color:rgba(15,181,166,.30)}
  .b-na{background:rgba(21,52,92,.06);color:var(--dim)}
  .b-out{background:rgba(21,52,92,.04);color:var(--muted);border-color:var(--line2)}
  .note{background:rgba(255,196,40,.16);border-color:rgba(200,140,10,.35);color:#8a5a00}
  .warn{background:rgba(217,69,63,.08);border-color:rgba(217,69,63,.28);color:#a32a24}
  .good{background:rgba(15,181,166,.09);border-color:rgba(15,181,166,.28);color:#0a6f60}
  .t3box{background:rgba(63,111,208,.06);border-color:rgba(63,111,208,.20);color:#3a4f6e}
  .pill{background:rgba(26,143,214,.10);border-color:rgba(26,143,214,.30);color:#1668a8}
  .pill.g{background:rgba(15,181,166,.10);border-color:rgba(15,181,166,.30);color:#0a6f60}

  /* --- 浅色主题：详情抽屉 / 内嵌表 / 骨架 --- */
  .mask{background:rgba(10,25,45,.42)}
  .drawer{background:#fff;border-left:1px solid var(--line);box-shadow:-18px 0 48px rgba(21,52,92,.18)}
  .d-close{background:#f2f7fd;border-color:var(--line);color:var(--muted)}
  .d-close:hover{color:var(--txt);border-color:var(--line2)}
  .sec-t{color:#0c8a7d}
  .sec-t::after{background:linear-gradient(90deg,rgba(15,181,166,.35),transparent)}
  .sec-t.t3{color:#3f6fd0}
  .sec-t.t3::after{background:linear-gradient(90deg,rgba(63,111,208,.35),transparent)}
  .scope{background:#f5f9fd;border-color:var(--line);color:#3a5069}
  .qt th{background:#eef5fc;border-bottom-color:var(--line)}
  .qt td{border-bottom:1px solid var(--line)}
  .lst div{border-bottom:1px solid var(--line)}
  .stat div{background:#f5f9fd;border-color:var(--line)}
  .stat b{color:#1668a8}
  .skel i{background:linear-gradient(90deg,#e7eff8,#f8fbfe,#e7eff8)}
  .pbtn{background:#fff;border-color:var(--line2);color:var(--muted)}
  .pbtn:hover:not(:disabled){color:var(--txt);background:#f4f9ff}
  .nav-i:hover:not(.on){background:rgba(26,143,214,.08);color:var(--txt)}

  /* ================= 细节打磨（2026-09-12 v2） ================= */
  /* 顶栏：压低高度、色调与浅色页面衔接 */
  header{background:linear-gradient(120deg,#0b2c4d 0%,#145880 55%,#0e4064 100%)}
  .hwrap{padding:18px 26px 24px;gap:14px}
  .kpis{gap:9px;margin-top:0}
  .kpi{border-radius:12px;padding:9px 11px;border-color:rgba(255,255,255,.14)}
  .kpi b{font-size:17px}
  .kpi span{font-size:11px;letter-spacing:.2px}

  /* 卡片头部 / 工具条层次 */
  .card{border-radius:14px}
  .card-hd{padding:12px 16px;background:linear-gradient(180deg,rgba(243,249,255,.85),rgba(255,255,255,0))}
  .card-hd h3{color:#22456b;font-size:13px}
  .toolbar{padding:13px 16px;gap:10px;border-bottom:1px solid var(--line)}
  .hits b{color:var(--a1)}
  .chips{padding:10px 16px 12px}

  /* 主按钮：浅色页面上用蓝底白字（原深色主题的深色字不再成立） */
  .btn-p{background:linear-gradient(135deg,#1a86cc,#0ea79a);color:#fff;
    box-shadow:0 4px 12px rgba(26,143,214,.30)}
  .btn-p:hover{filter:brightness(1.06)}
  .pbtn.on{color:#fff;background:linear-gradient(135deg,#1a86cc,#0ea79a);border-color:transparent}

  /* 表格：斑马纹 + 首列弱化，宽表更好读 */
  th{letter-spacing:.3px}
  tbody tr:nth-child(even){background:#f8fbff}
  tbody tr:hover{background:rgba(26,143,214,.10)}
  /* 仅主结果表的「#」列固定 56px；不可写成全局选择器，否则会命中详情抽屉里的表，
     把工程业绩「项目名称」列压成 56px 而逐字竖排（2026-09-12 修复）。 */
  #result th:first-child,#result td:first-child{width:56px;text-align:center}
  /* 空值用朴素短横，不再套一层灰色胶囊（表格里成片空胶囊很花） */
  #result .badge.b-na{background:transparent;border:none;padding:0;color:var(--dim);font-weight:400}

  /* 大屏：内容区放宽，避免两侧留白过多 */
  .hwrap,.wrap{max-width:1560px}

  /* ================= 详情抽屉加宽（2026-09-12 v3） =================
     用户诉求：详情抽屉太窄，工程业绩「项目名称」被挤成竖排、整体拥挤。
     加宽抽屉 + 给业绩表首列一个下限宽度，让长项目名正常折行（1~2 行）而非逐字竖排。 */
  .drawer{width:min(1160px,96vw)}
  .d-bd{padding:10px 28px 32px}
  .drawer .qt{font-size:12.5px}
  .drawer .qt th,.drawer .qt td{padding:8px 11px}
  .drawer .qt-perf th:first-child,.drawer .qt-perf td:first-child{min-width:280px}

  /* ================= 工程业绩表列对齐（2026-09-12 v4） =================
     用户反馈：业绩信息错乱、项目经理/技术负责人位置不对。
     真凶是 demo 内联脚本里 perfs 的取值索引整体错位一位（正式版 app.js 索引正确），
     这里负责把列宽/对齐定好，避免「等级=待定」被挤成上下两行。 */
  .qt-perf{table-layout:auto}
  .qt-perf .num{text-align:right;white-space:nowrap}
  .qt-perf .ctr{text-align:center;white-space:nowrap}
  .qt-perf td.pj{line-height:1.55}
  .qt-perf th:nth-child(2),.qt-perf td:nth-child(2){width:112px}
  .qt-perf th:nth-child(3),.qt-perf td:nth-child(3){width:74px}
  .qt-perf th:nth-child(4),.qt-perf td:nth-child(4),
  .qt-perf th:nth-child(5),.qt-perf td:nth-child(5){min-width:104px}
  .qt-perf th:nth-child(6),.qt-perf td:nth-child(6){white-space:nowrap}
  .qt-perf th:nth-child(7),.qt-perf td:nth-child(7){min-width:150px}
  .qt-perf .tag.q{white-space:nowrap}

  /* ================= 对齐主站 chuanjiantong.com 格调（2026-09-14） =================
     目标：让 shuili 看着像「川建通」家族站 —— 同一套品牌色 + 白底顶栏 + 蓝青渐变。
     主站色板：--pri #1e5eff / --cy #0891b2 / --bg #e9eef5 / --card #f8fafd /
     --bd #dde5ee / --tx #27313f / --tx2 #566173 / 按钮 linear-gradient(pri→cy)。 */
  :root{
    --a1:#1e5eff; --a2:#0891b2; --gold:#f59e0b; --danger:#e2464a;
    --bg:#e9eef5; --card:#f8fafd;
    --line:#dde5ee; --line2:#c9d4e1;
    --txt:#27313f; --muted:#566173; --dim:#93a1b3;
    --sh:0 2px 10px rgba(30,50,90,.06);
  }
  body::before{background:radial-gradient(900px 420px at 12% -8%,rgba(30,94,255,.10),transparent 60%),
    radial-gradient(760px 380px at 88% -12%,rgba(8,145,178,.08),transparent 60%)}

  /* 顶栏：由深色 navy 渐变改为白底（与主站 .topbar 一致），去掉波浪装饰 */
  header{background:#ffffff;border-bottom:1px solid var(--line)}
  header::after{display:none}
  .brand h1{color:var(--txt)}
  .brand p{color:var(--muted)}
  .hwrap{padding:16px 26px 18px;gap:14px;align-items:flex-start}
  .fam{margin-left:auto;align-self:center;font-size:13px;font-weight:600;color:var(--a1);
    text-decoration:none;padding:7px 15px;border:1px solid var(--line);border-radius:999px;
    white-space:nowrap;transition:.16s}
  .fam:hover{background:rgba(30,94,255,.08);border-color:rgba(30,94,255,.35)}
  .kpis{margin-top:0}
  .kpi{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:9px 11px}
  .kpi b{font-size:17px;background:linear-gradient(135deg,var(--a1),var(--a2));
    -webkit-background-clip:text;background-clip:text;color:transparent}
  .kpi span{color:var(--muted);font-size:11px}

  /* 主按钮：蓝→青渐变（与主站 .btn 一致），白字 */
  .btn-p{background:linear-gradient(135deg,var(--a1),var(--a2));color:#fff;
    box-shadow:0 4px 12px rgba(30,94,255,.22)}
  .btn-p:hover{filter:brightness(1.05)}
  .pbtn.on{color:#fff;background:linear-gradient(135deg,var(--a1),var(--a2));border-color:transparent}
  .nav-i.on{background:linear-gradient(135deg,var(--a1),var(--a2));border-color:transparent;
    color:#fff;box-shadow:0 4px 12px rgba(30,94,255,.22)}

  /* 卡片头部标题：与主站一致用深石板色 */
  .card-hd{background:linear-gradient(180deg,rgba(238,243,255,.6),rgba(255,255,255,0))}
  .card-hd h3{color:var(--tx)}

  /* 标签 / 徽章 / 胶囊 / 提示：统一为品牌青蓝 */
  .tag{color:#0891b2;background:rgba(8,145,178,.10);border-color:rgba(8,145,178,.32)}
  .tag.o{color:#b07d05;background:rgba(245,158,11,.12);border-color:rgba(245,158,11,.32)}
  .tag.q{color:var(--muted);background:rgba(39,49,63,.04);border-color:var(--line2)}
  .tag.g2{color:#1e5eff;background:rgba(30,94,255,.10);border-color:rgba(30,94,255,.30)}
  .b-ev{color:#0891b2;background:rgba(8,145,178,.14);border-color:rgba(8,145,178,.32)}
  .b-t3{color:#1e5eff;background:rgba(30,94,255,.10);border-color:rgba(30,94,255,.30)}
  .b-ok{color:#0891b2;background:rgba(8,145,178,.12);border-color:rgba(8,145,178,.30)}
  .b-na{background:rgba(39,49,63,.05);color:var(--dim)}
  .b-out{background:rgba(39,49,63,.04);color:var(--muted);border-color:var(--line2)}
  .good{background:rgba(8,145,178,.08);border-color:rgba(8,145,178,.26);color:#0a6f60}
  .warn{background:rgba(226,70,74,.08);border-color:rgba(226,70,74,.28);color:#c0322f}
  .pill{background:rgba(30,94,255,.10);border-color:rgba(30,94,255,.30);color:#1e5eff}
  .pill.g{background:rgba(8,145,178,.10);border-color:rgba(8,145,178,.30);color:#0891b2}
  .sec-t{color:#0891b2}
  .sec-t::after{background:linear-gradient(90deg,rgba(8,145,178,.35),transparent)}
  .sec-t.t3{color:#1e5eff}
  .sec-t.t3::after{background:linear-gradient(90deg,rgba(30,94,255,.35),transparent)}
  .achip{background:rgba(30,94,255,.12);border-color:rgba(30,94,255,.32);color:#1e5eff}
  .achip em{color:#0d3d63}
  .achip:hover{background:rgba(226,70,74,.12);border-color:rgba(226,70,74,.35);color:#c0322f}
  .scope{background:#f5f8fc;border-color:var(--line);color:#3a5069}
  .stat div{background:#f5f8fc;border-color:var(--line)}
  .stat b{color:#1e5eff}
  tbody tr:hover{background:rgba(30,94,255,.07)}
  tbody tr:hover .nm a{color:#1e5eff}
  .hits b{color:var(--a1)}
  .note{background:rgba(245,158,11,.14);border-color:rgba(200,140,10,.32);color:#8a5a00}

  /* ==========================================================================
     顶部改版（2026-09-14）—— 白底导航 + 深蓝 Hero + 数据卡片条
     目标：版式对齐 chuanjiantong.com 家族子站（yanghu.chuanjiantong.com），
     品牌名「水利通」。新增类名统一以 .top-nav / .hero / .stats-bar 作用域，
     避免与旧 .brand / .logo / .kpis 等定义打架（旧 header 已从 HTML 移除）。
     ========================================================================== */
  :root{
    --brand-1:#1d39c4; --brand-2:#0e3c87; --brand-3:#2f54eb;
    --accent2:#1890ff; --accent2-h:#40a9ff; --accent2-d:#0958d9;
    --hero-grad:linear-gradient(135deg,#1d39c4 0%,#0e3c87 55%,#061a4a 100%);
    --soft-bg:#f0f4fb;
  }
  body{background:var(--soft-bg)}

  /* ---------- 顶部白底导航栏 ---------- */
  .top-nav{background:#fff;box-shadow:0 1px 0 rgba(0,0,0,.04);position:sticky;top:0;z-index:100}
  .top-nav-inner{max-width:1560px;margin:0 auto;padding:12px 26px;display:flex;
    align-items:center;justify-content:space-between;gap:18px}
  .top-nav .brand{display:flex;align-items:center;gap:11px;flex:none}
  .top-nav .brand-logo{width:38px;height:38px;border-radius:9px;flex:none;
    background:linear-gradient(135deg,#2f54eb,#1d39c4);color:#fff;display:flex;
    align-items:center;justify-content:center;font-weight:700;font-size:19px;
    letter-spacing:1px;box-shadow:0 2px 6px rgba(29,57,196,.25)}
  .top-nav .brand-title{font-size:18px;font-weight:700;color:#1f2d3d;line-height:1.2}
  .top-nav .brand-title small{display:block;font-size:11px;color:#8c8c8c;font-weight:400;margin-top:2px}
  .nav-links{display:flex;gap:22px;align-items:center}
  .nav-links a{color:#4a5568;text-decoration:none;font-size:14px;padding:6px 2px;cursor:pointer;
    transition:color .15s;border-bottom:2px solid transparent;white-space:nowrap}
  .nav-links a:hover{color:var(--accent2)}
  .nav-links a.active{color:var(--accent2);border-bottom-color:var(--accent2);font-weight:600}
  .nav-right{display:flex;align-items:center;gap:10px;flex:none}
  .nav-btn{padding:7px 18px;border-radius:4px;font-size:13px;cursor:pointer;font-weight:500;
    border:1px solid transparent;transition:all .15s;text-decoration:none;white-space:nowrap;font-family:inherit}
  .nav-btn-primary{background:var(--accent2);color:#fff;border-color:var(--accent2)}
  .nav-btn-primary:hover{background:var(--accent2-h)}
  .nav-btn-ghost{background:transparent;color:var(--accent2);border-color:var(--accent2)}
  .nav-btn-ghost:hover{background:#e6f7ff}
  @media(max-width:1180px){.nav-links{display:none}}

  /* ---------- 深蓝渐变 Hero ---------- */
  .hero{background:var(--hero-grad);color:#fff;padding:52px 24px 74px;position:relative;overflow:hidden}
  .hero::before{content:"";position:absolute;top:-40%;right:-10%;width:60%;height:200%;
    background:radial-gradient(ellipse at center,rgba(47,84,235,.35),transparent 60%);pointer-events:none}
  .hero::after{content:"";position:absolute;bottom:0;left:0;right:0;height:50px;pointer-events:none;
    background:linear-gradient(to bottom,transparent,var(--soft-bg))}
  .hero-inner{max-width:1200px;margin:0 auto;position:relative;z-index:1;text-align:center}
  .hero h1{font-size:36px;font-weight:700;margin:0 0 10px;letter-spacing:1px;
    text-shadow:0 2px 8px rgba(0,0,0,.15)}
  .hero h1 .hl{display:inline-block;font-size:28px;vertical-align:middle;margin:0 6px;
    background:linear-gradient(90deg,#ffd666,#ffa940);-webkit-background-clip:text;
    background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
  .hero .hero-sub{font-size:14px;opacity:.92;margin:0 0 26px;line-height:1.7}
  .hero .hero-sub b{color:#ffd666;font-weight:600}
  .hero-search{max-width:720px;margin:0 auto;background:#fff;border-radius:8px;padding:6px;
    display:flex;align-items:center;box-shadow:0 8px 24px rgba(0,0,0,.15)}
  .hero-search input{flex:1;border:none;outline:none;padding:14px 18px;font-size:15px;
    background:transparent;color:#2c3e50;min-width:0;font-family:inherit}
  .hero-search input::placeholder{color:#a0aec0}
  .hero-search button{padding:12px 36px;background:var(--accent2);color:#fff;border:none;
    border-radius:6px;cursor:pointer;font-size:15px;font-weight:600;white-space:nowrap;
    transition:background .15s;font-family:inherit}
  .hero-search button:hover{background:var(--accent2-h)}
  .hot-tags{margin-top:18px;display:flex;justify-content:center;gap:10px;align-items:center;flex-wrap:wrap}
  .hot-tags .lbl{color:rgba(255,255,255,.7);font-size:13px}
  .hot-tags a{color:rgba(255,255,255,.95);background:rgba(255,255,255,.12);cursor:pointer;
    border:1px solid rgba(255,255,255,.2);padding:4px 14px;border-radius:14px;font-size:13px;
    text-decoration:none;transition:all .15s}
  .hot-tags a:hover{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.4)}

  /* ---------- 数据卡片条（压在 Hero 下沿之上） ---------- */
  .stats-bar{max-width:1560px;margin:-34px auto 24px;padding:0 26px;display:grid;
    grid-template-columns:repeat(4,1fr);gap:18px;position:relative;z-index:5}
  .stat-card{background:#fff;border-radius:10px;padding:18px 22px;cursor:pointer;
    box-shadow:0 6px 24px rgba(29,57,196,.08);display:flex;align-items:center;gap:16px;
    transition:transform .15s,box-shadow .15s}
  .stat-card:hover{transform:translateY(-2px);box-shadow:0 10px 30px rgba(29,57,196,.15)}
  .stat-card .ico{width:48px;height:48px;border-radius:12px;flex-shrink:0;font-weight:700;
    display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff}
  .stat-card .ico.c1{background:linear-gradient(135deg,#2f54eb,#1d39c4)}
  .stat-card .ico.c2{background:linear-gradient(135deg,#1890ff,#096dd9)}
  .stat-card .ico.c3{background:linear-gradient(135deg,#13c2c2,#08979c)}
  .stat-card .ico.c4{background:linear-gradient(135deg,#fa8c16,#d46b08)}
  .stat-card .num{font-size:26px;font-weight:700;color:#1f2d3d;line-height:1.1}
  .stat-card .lbl{font-size:13px;color:#8c8c8c;margin-top:4px}
  @media(max-width:900px){
    .stats-bar{grid-template-columns:repeat(2,1fr);margin-top:-30px}
    .hero h1{font-size:24px}
    .hero h1 .hl{font-size:18px}
    .hero-search{padding:5px}
    .hero-search button{padding:11px 20px;font-size:14px}
  }
