  /* ============ 设计令牌 ============ */
  :root{
    --bg:#f4f6fb;
    --panel:#ffffff;
    --panel-2:#fafbfe;
    --line:#e6eaf2;
    --line-2:#eef1f7;
    --txt:#1c2434;
    --txt-2:#5a657a;
    --txt-3:#8d97ab;
    --brand:#2f5bea;
    --brand-rgb:47,91,234;
    --brand-weak:#eaf0ff;
    --brand-2:#5f7cf5;
    --brand-grad-2:#4b6ef0;
    /* 品牌名「研值云图」专用：冬青黑体 + 青绿三档（浅底/深底/彩底） */
    --brand-name-font:"Hiragino Sans GB","冬青黑体简体中文","PingFang SC","Microsoft YaHei",sans-serif;
    --brand-name:#0E9F6E;        /* 浅底：官网导航 */
    --brand-name-lt:#3BD9A8;     /* 深底：官网页脚 / 深色侧边栏 */
    --brand-name-mint:#8CF0CE;   /* 彩底：登录页蓝色面板 */
    /* 品牌色的三个"用法档"：大色（填充/描边/图表）· 文字色（保证白底可读）· 实底按钮（保证白字可读） */
    --brand-ink:#2f5bea;
    --brand-btn:#2f5bea;
    --brand-btn-2:#4b6ef0;
    --cyan:#12b5c9;
    --green:#17a673;
    --green-weak:#e6f7f0;
    --amber:#e8a317;
    --amber-weak:#fdf3e0;
    --red:#e0474c;
    --red-weak:#fdeaea;
    --purple:#7b5cf0;
    --purple-weak:#f0ecfe;
    --radius:14px;
    --radius-sm:9px;
    --shadow:0 1px 2px rgba(23,35,66,.04), 0 8px 24px -12px rgba(23,35,66,.18);
    --shadow-lg:0 12px 40px -16px rgba(23,35,66,.28);
    --sidebar-w:224px;

    /* ---- 三端主题令牌（默认值＝执行端基调，登录后由 body[data-end] 覆盖）---- */
    --end-accent:#2f5bea;          /* 该端识别色（条/点等装饰） */
    --end-soft:#eaf0ff;            /* 识别色浅底 */
    --end-ink:#2f5bea;             /* 识别色文字档（保证浅底可读） */
    --end-border:rgba(var(--brand-rgb),.28);
    --hero-grad:linear-gradient(120deg,#1b2a4d 0%,#24386a 45%,var(--brand) 100%);
    --avatar-grad:linear-gradient(135deg,#7b5cf0,#2f5bea);
    --heat-1:#dbe4ff; --heat-2:#a9bcf8; --heat-3:#6d8ff7; --heat-4:#2f5bea; --heat-1-txt:#5468b8;
    --topbar-bg:rgba(255,255,255,.86);
    /* 侧边栏：默认（深色） */
    --side-bg:linear-gradient(180deg,#101a33 0%,#16233f 60%,#141f39 100%);
    --side-txt:#c3cee3;
    --side-hover-txt:#ffffff;
    --side-txt-sub:#a8b6d0;
    --side-muted:#8091b0;
    --side-title:#ffffff;
    --side-sub:#7f8dab;
    --side-group:#61708f;
    --side-hover:rgba(255,255,255,.06);
    --side-line:rgba(255,255,255,.07);
    --side-soft:rgba(255,255,255,.05);
    --side-badge-bg:rgba(255,255,255,.14);
    --side-badge-txt:#e8eefc;
    --side-badge-bg-on:rgba(255,255,255,.26);
    --side-active-bg:linear-gradient(90deg,rgba(var(--brand-rgb),.95),rgba(var(--brand-rgb),.55));
    --side-active-shadow:0 8px 18px -10px rgba(var(--brand-rgb),1);
    --side-sub-active-bg:rgba(255,255,255,.09);
    --side-switch:#8091b0;
    --side-edge:transparent;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html,body{height:100%}
  body{
    font-family:"PingFang SC","Microsoft YaHei","Hiragino Sans GB",-apple-system,"Segoe UI",sans-serif;
    background:var(--bg); color:var(--txt);
    font-size:13px; line-height:1.55;
    -webkit-font-smoothing:antialiased;
  }
  ::-webkit-scrollbar{width:9px;height:9px}
  ::-webkit-scrollbar-thumb{background:#cfd7e6;border-radius:9px;border:2px solid transparent;background-clip:content-box}
  ::-webkit-scrollbar-thumb:hover{background:#b3bfd4;background-clip:content-box}
  ::-webkit-scrollbar-track{background:transparent}

  /* ============ 布局 ============ */
  .app{display:flex;min-height:100vh}

  /* ---- 侧边栏 ---- */
  .sidebar{
    width:var(--sidebar-w); flex:0 0 var(--sidebar-w);
    background:var(--side-bg);
    color:var(--side-txt); display:flex; flex-direction:column;
    position:sticky; top:0; height:100vh; z-index:30;
    box-shadow:1px 0 0 var(--side-edge,transparent);
    transition:background .25s ease;
  }
  .logo{display:flex;align-items:center;gap:10px;padding:18px 18px 16px}
  .logo-mark{
    width:38px;height:38px;border-radius:11px;flex:0 0 38px;
    background:linear-gradient(180deg,#ffffff 0%,#f2f6ff 100%);
    display:grid;place-items:center;overflow:hidden;
    box-shadow:0 8px 18px -10px rgba(6,25,70,.55), inset 0 0 0 1px rgba(16,26,51,.07);
  }
  .logo-mark img{height:78%;width:auto;display:block}
  .logo-txt b{
    display:block;color:var(--brand-name);font-size:15.5px;font-weight:700;letter-spacing:.3px;
    font-family:var(--brand-name-font);
  }
  .logo-txt span{display:block;font-size:10.5px;color:var(--side-sub);letter-spacing:.6px}
  .nav{flex:1;overflow-y:auto;padding:6px 10px 10px}
  .nav-group{padding:14px 8px 6px;font-size:10.5px;color:var(--side-group);letter-spacing:1px;font-weight:600}
  .nav-item{
    display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:var(--radius-sm);
    color:var(--side-txt);font-size:13px;cursor:pointer;user-select:none;transition:.16s;margin-bottom:2px;
  }
  .nav-item:hover{background:var(--side-hover);color:var(--side-hover-txt)}
  .nav-item.active{background:var(--side-active-bg);color:#fff;font-weight:600;box-shadow:var(--side-active-shadow)}
  .nav-ico{width:17px;height:17px;flex:0 0 17px;display:grid;place-items:center;opacity:.88}
  .nav-ico svg{width:17px;height:17px;display:block}
  .nav-item:hover .nav-ico{opacity:1}
  .nav-item.active .nav-ico{opacity:1}
  .nav-badge{margin-left:auto;background:var(--side-badge-bg);color:var(--side-badge-txt);font-size:10px;padding:1px 6px;border-radius:20px;font-weight:600}
  .nav-item.active .nav-badge{background:var(--side-badge-bg-on)}
  .nav-item.sub{padding-left:26px;font-size:12.5px;color:var(--side-txt-sub)}
  .nav-item.sub .nav-ico{width:15px;height:15px;flex:0 0 15px;opacity:.7}
  .nav-item.sub .nav-ico svg{width:15px;height:15px}
  .nav-item.sub:hover{color:var(--side-hover-txt)}
  .nav-item.sub.active{background:var(--side-sub-active-bg);box-shadow:none;font-weight:500}
  .side-foot{padding:12px;border-top:1px solid var(--side-line)}
  .side-user{display:flex;align-items:center;gap:9px;padding:8px;border-radius:10px;background:var(--side-soft)}
  .avatar{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-size:11.5px;font-weight:700;color:#fff;background:var(--avatar-grad);flex:0 0 30px}
  .side-user b{display:block;font-size:12.5px;color:var(--side-title);font-weight:600}
  .side-user span{display:block;font-size:10.5px;color:var(--side-muted)}
  .side-switch{color:var(--side-switch)}
  /* 侧边栏底部「当前端」标识 */
  .side-end{
    display:flex;align-items:center;gap:6px;margin-bottom:8px;padding:6px 8px;border-radius:8px;
    font-size:10.5px;font-weight:700;letter-spacing:.3px;
    background:var(--side-badge-bg);color:var(--side-badge-txt);
  }
  .side-end i{width:6px;height:6px;border-radius:50%;background:var(--end-accent);flex:0 0 6px}

  /* ---- 主区 ---- */
  .app > .main{flex:1;min-width:0;display:flex;flex-direction:column}
  .topbar{
    position:sticky;top:0;z-index:20;
    background:var(--topbar-bg);backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line);
    border-top:3px solid var(--end-accent);
    padding:0 22px;height:58px;display:flex;align-items:center;gap:14px;
  }
  /* 当前端标识胶囊 */
  .end-pill{
    display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 10px;border-radius:20px;
    font-size:11px;font-weight:700;letter-spacing:.4px;white-space:nowrap;
    background:var(--end-soft);color:var(--end-ink);border:1px solid var(--end-border);
  }
  .end-pill i{width:6px;height:6px;border-radius:50%;background:var(--end-accent);display:block}
  .crumb{font-size:12.5px;color:var(--txt-3);display:flex;align-items:center;gap:6px}
  .crumb b{color:var(--txt);font-weight:600}
  .search{
    flex:1;max-width:420px;margin-left:8px;position:relative;
  }
  .search input{
    width:100%;height:34px;border-radius:9px;border:1px solid var(--line);
    background:var(--panel-2);padding:0 12px 0 32px;font-size:12.5px;color:var(--txt);
    outline:none;transition:.16s;font-family:inherit;
  }
  .search input:focus{border-color:var(--brand-2);background:#fff;box-shadow:0 0 0 3px rgba(var(--brand-rgb),.1)}
  .search .ico{position:absolute;left:10px;top:8px;color:var(--txt-3);font-size:13px}
  /* 企业端顶栏：隐藏面包屑与资料搜索，左侧直接展示当前公司名称 */
  body[data-end="ent"] .topbar .crumb,
  body[data-end="ent"] .topbar .search{display:none}
  .top-actions{margin-left:auto;display:flex;align-items:center;gap:8px}
  .dot{position:absolute;top:6px;right:7px;width:7px;height:7px;border-radius:50%;background:var(--red);border:1.5px solid #fff}
  .btn{
    height:34px;padding:0 14px;border-radius:9px;border:1px solid var(--line);background:#fff;
    font-size:12.5px;font-family:inherit;color:var(--txt-2);cursor:pointer;display:inline-flex;
    align-items:center;gap:6px;transition:.16s;white-space:nowrap;
  }
  .btn:hover{border-color:var(--brand-2);color:var(--brand-ink);background:var(--brand-weak)}
  .btn.primary{background:linear-gradient(135deg,var(--brand-btn),var(--brand-btn-2));border-color:transparent;color:#fff;font-weight:600;box-shadow:0 8px 18px -10px rgba(var(--brand-rgb),1)}
  .btn.primary:hover{filter:brightness(1.06);color:#fff}
  .btn.ghost{background:transparent;border-color:transparent;color:var(--txt-3)}
  .btn.ghost:hover{background:var(--line-2);color:var(--txt)}
  .btn.sm{height:27px;padding:0 9px;font-size:11.5px;border-radius:7px}

  .content{padding:18px 22px 40px;display:flex;flex-direction:column;gap:16px}

  /* ============ 卡片 ============ */
  .card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
  .card-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line-2)}
  .card-head h3{font-size:13.5px;font-weight:700;letter-spacing:.2px;display:flex;align-items:center;gap:7px}
  .card-head h3::before{content:"";width:3px;height:13px;border-radius:3px;background:linear-gradient(180deg,var(--brand),var(--cyan))}
  .card-head .sub{font-size:11.5px;color:var(--txt-3)}
  .card-head .head-actions{margin-left:auto;display:flex;gap:6px;align-items:center}
  .card-body{padding:16px}

  /* ============ KPI ============ */
  .kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
  .kpis.k3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .kpis.k4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .kpi{
    background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
    padding:14px 15px;box-shadow:var(--shadow);position:relative;overflow:hidden;transition:.18s;
  }
  .kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
  .kpi::after{content:"";position:absolute;right:-26px;top:-26px;width:76px;height:76px;border-radius:50%;background:var(--brand-weak);opacity:.75}
  .kpi.warn::after{background:var(--amber-weak)}
  .kpi.danger::after{background:var(--red-weak)}
  .kpi.ok::after{background:var(--green-weak)}
  /* 五色 KPI（服务总览）：右上角半圆用该色浅色底，数值用同色系深色，五张各不相同 */
  .kpi.tone-blue  {--kpi-c:#2f5bea;--kpi-w:#eaf0ff}
  .kpi.tone-cyan  {--kpi-c:#0e93a4;--kpi-w:#e2f5f8}
  .kpi.tone-green {--kpi-c:#17a673;--kpi-w:#e6f7f0}
  .kpi.tone-amber {--kpi-c:#c8860a;--kpi-w:#fdf3e0}
  .kpi.tone-violet{--kpi-c:#7b5cf0;--kpi-w:#f0ecfe}
  .kpi[class*="tone-"]::after{background:var(--kpi-w)}
  .kpi[class*="tone-"] .val{color:var(--kpi-c)}
  .kpi .label{font-size:11.5px;color:var(--txt-3);display:flex;align-items:center;gap:6px;position:relative}
  .kpi .val{font-size:26px;font-weight:800;letter-spacing:-.5px;margin:6px 0 2px;position:relative;font-variant-numeric:tabular-nums;line-height:34px;min-height:39px}
  .kpi .val small{font-size:12px;font-weight:600;color:var(--txt-3);margin-left:2px}
  .kpi .foot{font-size:11px;color:var(--txt-3);position:relative;display:flex;gap:6px;align-items:center;
    height:18px;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* KPI 双数值：参与 X / 完成 Y（字号继承 .val.long，随断点缩放） */
  .kpi .val.split{display:flex;align-items:baseline;gap:8px}
  .kpi .val.split .n{white-space:nowrap}
  .kpi .val.split .n.ok{color:var(--green)}
  .kpi .val.split i{font-style:normal;font-size:.66em;font-weight:700;color:var(--txt-3);opacity:.55}
  .kpi .foot b.hl{color:var(--brand-ink)}
  .kpi .foot b.in{color:var(--txt-2)}
  .trend{font-weight:700}
  .trend.up{color:var(--green)} .trend.down{color:var(--red)}

  /* ============ 立项 ============ */
  .setup-grid{display:grid;grid-template-columns:320px 1fr;gap:16px}
  .form-row{margin-bottom:12px}
  .form-row label{display:block;font-size:11.5px;color:var(--txt-2);margin-bottom:5px;font-weight:600}
  .form-row label i{color:var(--red);font-style:normal}
  .field{
    width:100%;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--panel-2);
    padding:0 10px;font-size:12.5px;font-family:inherit;color:var(--txt);outline:none;transition:.16s;
  }
  .field:focus{border-color:var(--brand-2);background:#fff;box-shadow:0 0 0 3px rgba(var(--brand-rgb),.1)}
  textarea.field{height:auto;padding:8px 10px;resize:vertical;min-height:56px;line-height:1.5}
  .field[readonly]{color:var(--txt-2);background:#f1f4fa;cursor:not-allowed}
  .two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .ent-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
  .chip{
    display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:4px 9px;border-radius:20px;white-space:nowrap;
    background:var(--brand-weak);color:var(--brand-ink);font-weight:600;border:1px solid rgba(var(--brand-rgb),.14);
  }
  .chip.g{background:var(--green-weak);color:var(--green);border-color:rgba(23,166,115,.16)}
  .chip.a{background:var(--amber-weak);color:#a9720a;border-color:rgba(232,163,23,.2)}
  .chip.p{background:var(--purple-weak);color:var(--purple);border-color:rgba(123,92,240,.16)}
  .chip.gray{background:#f1f4fa;color:var(--txt-2);border-color:var(--line)}

  .type-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
  .type-card{
    border:1.5px solid var(--line);border-radius:12px;padding:12px;cursor:pointer;transition:.16s;
    background:var(--panel-2);position:relative;
  }
  .type-card:hover{border-color:var(--brand-2);background:#fff;transform:translateY(-1px)}
  .type-card.on{border-color:var(--brand);background:var(--brand-weak);box-shadow:0 0 0 3px rgba(var(--brand-rgb),.08)}
  .type-card .t-ico{
    width:28px;height:28px;border-radius:8px;display:grid;place-items:center;font-size:14px;
    background:#fff;border:1px solid var(--line);margin-bottom:8px;
  }
  .type-card.on .t-ico{background:var(--brand-btn);border-color:transparent;color:#fff}
  .type-card b{font-size:12.5px;display:block}
  .type-card span{font-size:10.5px;color:var(--txt-3);display:block;margin-top:2px;line-height:1.45}
  .type-card .tick{position:absolute;right:10px;top:10px;color:var(--brand-ink);font-size:13px;opacity:0;transition:.16s}
  .type-card.on .tick{opacity:1}

  /* ============ 阶段流水线 ============ */
  .pipe{display:grid;grid-template-columns:repeat(8,minmax(112px,1fr));gap:0;overflow-x:auto;padding:4px 2px 8px}
  .stage{position:relative;padding:0 6px;min-width:112px}
  .stage:not(:last-child)::after{
    content:"";position:absolute;top:20px;right:-1px;width:100%;height:2px;background:var(--line);z-index:0;
  }
  .stage.done:not(:last-child)::after{background:linear-gradient(90deg,var(--green),#8fd9bf)}
  .stage.now:not(:last-child)::after{background:linear-gradient(90deg,var(--brand),#b9c8fb)}
  .stage .node{
    position:relative;z-index:1;width:40px;height:40px;border-radius:12px;margin:0 auto 9px;
    display:grid;place-items:center;font-size:15px;background:#fff;border:2px solid var(--line);color:var(--txt-3);
    transition:.18s;
  }
  .stage.done .node{border-color:#b9e3d3;background:var(--green-weak);color:var(--green)}
  .stage.now .node{border-color:var(--brand-btn);background:var(--brand-btn);color:#fff;box-shadow:0 8px 18px -8px rgba(var(--brand-rgb),1)}
  .stage .st-name{text-align:center;font-size:11.5px;font-weight:600;color:var(--txt-2);line-height:1.3}
  .stage.now .st-name{color:var(--brand-ink)}
  .stage .st-meta{text-align:center;font-size:10px;color:var(--txt-3);margin-top:3px}
  .stage .st-state{
    display:block;margin:6px auto 0;width:fit-content;font-size:9.5px;padding:1px 6px;border-radius:20px;
    background:#f1f4fa;color:var(--txt-3);font-weight:600;
  }
  .stage.done .st-state{background:var(--green-weak);color:var(--green)}
  .stage.now .st-state{background:var(--brand-btn);color:#fff}

  /* ============ 表格 ============ */
  table.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}
  table.tbl th{
    text-align:left;font-size:11.5px;color:var(--txt-3);font-weight:600;padding:9px 12px;
    background:var(--panel-2);border-bottom:1px solid var(--line);white-space:nowrap;
  }
  table.tbl td{padding:10px 12px;border-bottom:1px solid var(--line-2);vertical-align:middle}
  table.tbl tbody tr:hover{background:#f8faff}
  table.tbl tbody tr:last-child td{border-bottom:0}
  table.tbl tfoot td{
    padding:10px 12px;background:var(--panel-2);border-top:1px solid var(--line);
    border-bottom:0;font-weight:700;font-size:12.5px;font-variant-numeric:tabular-nums;
  }

  /* ============ 资料数量 → 项目过滤 ============ */
  .lg-doc-btn{
    display:inline-flex;align-items:center;gap:4px;cursor:pointer;
    font:600 12.5px/1 inherit;color:var(--brand-ink);background:var(--brand-weak);
    border:1px solid rgba(var(--brand-rgb),.16);border-radius:7px;padding:5px 9px;
    font-variant-numeric:tabular-nums;transition:.16s;white-space:nowrap;
  }
  .lg-doc-btn:hover{background:var(--brand-btn);border-color:var(--brand-btn);color:#fff}
  .lg-doc-btn i{font-style:normal;opacity:.6;font-size:12px}
  .up-filter{
    display:flex;align-items:center;gap:9px;padding:9px 16px;font-size:12px;
    background:var(--brand-weak);border-bottom:1px solid var(--line-2);color:var(--brand-ink);
  }
  .up-filter .uf-ico{
    width:20px;height:20px;border-radius:6px;background:var(--brand-btn);color:#fff;
    display:grid;place-items:center;font-size:11px;flex:0 0 20px;
  }
  .up-filter .uf-txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .proj-link{
    cursor:pointer;font:600 11px/1 inherit;color:var(--txt-2);background:#f1f4fa;
    border:1px solid var(--line);border-radius:6px;padding:4px 8px;transition:.16s;
  }
  .proj-link:hover{color:var(--brand-ink);border-color:var(--brand-2);background:#fff}
  .proj-link.on{background:var(--brand-btn);border-color:var(--brand-btn);color:#fff}
  .pj-name-cell{width:210px;max-width:210px}
  .proj-name{
    display:block;width:100%;text-align:left;cursor:pointer;padding:0;border:0;background:none;
    font:600 12.5px/1.4 inherit;color:var(--txt);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .proj-name:hover{color:var(--brand-ink);text-decoration:underline}
  /* 我的项目 · 项目编号（列表首列，可点入项目详情） */
  .proj-no{
    display:inline-block;cursor:pointer;padding:2px 7px;border:1px solid var(--line);border-radius:6px;
    background:#f7f9fd;font:700 11.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    color:var(--brand-ink);letter-spacing:.2px;white-space:nowrap;transition:.16s;
  }
  .proj-no:hover{border-color:var(--brand-2);background:var(--brand-weak);box-shadow:0 4px 10px -6px rgba(var(--brand-rgb),.9)}
  .proj .ptxt .proj-no-txt{color:var(--brand-ink);font-weight:700;font-variant-numeric:tabular-nums;margin-right:2px}

  /* ============ 项目台账图表（柱状对照 / 环形饼图） ============ */  .lg-body{padding:22px 16px 14px}
  .lg-dot{width:9px;height:9px;border-radius:3px;display:inline-block;margin-right:5px}
  .lg-dot.b-budget{background:linear-gradient(180deg,var(--heat-3),var(--heat-4))}
  .lg-dot.b-final{background:linear-gradient(180deg,#f7b64b,#e28c12)}
  /* 柱状图 */
  .lg-plot{display:flex;gap:8px;min-width:430px}
  .lg-yaxis{
    display:flex;flex-direction:column;justify-content:space-between;height:178px;margin-bottom:22px;
    font-size:10px;color:var(--txt-3);text-align:right;font-variant-numeric:tabular-nums;flex:0 0 34px;
  }
  .lg-yaxis span{transform:translateY(-50%)}
  .lg-canvas{position:relative;flex:1;min-width:0}
  .lg-grid{position:absolute;inset:0 0 22px 0;display:flex;flex-direction:column;justify-content:space-between}
  .lg-grid i{border-top:1px dashed var(--line-2);height:0}
  .lg-grid i:last-child{border-top:1px solid var(--line)}
  .lg-cols{position:relative;display:flex;gap:4px;align-items:flex-end;height:200px}
  .lg-col{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
  .lg-bars{display:flex;align-items:flex-end;justify-content:center;gap:5px;width:100%;height:178px}
  .lg-b{position:relative;width:16px;border-radius:5px 5px 2px 2px;min-height:2px;transition:filter .16s}
  .lg-b:hover{filter:brightness(1.08)}
  .lg-b.b-budget{background:linear-gradient(180deg,var(--heat-3),var(--heat-4))}
  .lg-b.b-final{background:linear-gradient(180deg,#f7b64b,#e28c12)}
  .lg-b.none{background:repeating-linear-gradient(45deg,#e6ebf5,#e6ebf5 3px,#f6f8fc 3px,#f6f8fc 6px)}
  .lg-b em{
    position:absolute;left:50%;top:-14px;transform:translateX(-50%);font-style:normal;
    font-size:9.5px;color:var(--txt-3);white-space:nowrap;font-variant-numeric:tabular-nums;
  }
  .lg-b.b-final em{color:#a9720a}
  .lg-x{
    font-size:10px;color:var(--txt-3);margin-top:6px;width:100%;text-align:center;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .lg-col:hover .lg-x{color:var(--brand-ink);font-weight:600}
  /* 环形饼图 */
  .lg-pie{display:flex;align-items:center;gap:18px}
  .lg-donut{position:relative;flex:0 0 186px;width:186px;height:186px}
  .lg-donut svg{width:100%;height:100%;display:block}
  .lg-donut circle{transition:stroke-width .16s}
  .lg-donut .seg:hover{stroke-width:32}
  .lg-donut-txt{
    position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  }
  .lg-donut-txt span{font-size:10.5px;color:var(--txt-3)}
  .lg-donut-txt b{font-size:19px;font-weight:800;letter-spacing:-.3px;font-variant-numeric:tabular-nums}
  .lg-donut-txt em{font-style:normal;font-size:10px;color:var(--txt-3)}
  .lg-legend{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}
  .lg-li{display:flex;align-items:center;gap:7px;font-size:11.5px}
  .lg-li .dot{width:9px;height:9px;border-radius:3px;flex:0 0 9px}
  .lg-li .nm{
    flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .lg-li .amt{color:var(--txt-2);font-variant-numeric:tabular-nums;white-space:nowrap}
  .lg-li .pct{
    flex:0 0 46px;text-align:right;color:var(--txt);
    font-variant-numeric:tabular-nums;white-space:nowrap;
  }
  .lg-li.zero{opacity:.55}
  @media (max-width:760px){
    .lg-pie{flex-direction:column;align-items:stretch}
    .lg-donut{margin:0 auto}
  }
  .tbl-wrap{overflow-x:auto;border-radius:0 0 var(--radius) var(--radius)}
  .u{display:flex;align-items:center;gap:8px}
  .u .av{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:10.5px;font-weight:700;color:#fff;flex:0 0 26px}
  /* 服务团队成员头像（插画头像，圆形） */
  .u .av.photo{width:36px;height:36px;flex:0 0 36px;border-radius:50%;padding:0;overflow:hidden;background:none;
    box-shadow:0 0 0 2px #fff,0 0 0 3.5px rgba(var(--brand-rgb),.16);transition:box-shadow .18s}
  .u .av.photo svg{display:block;width:100%;height:100%}
  .u:hover .av.photo{box-shadow:0 0 0 2px #fff,0 0 0 3.5px rgba(var(--brand-rgb),.42)}
  .u b{font-size:12.5px;font-weight:600}
  .u span{display:block;font-size:10.5px;color:var(--txt-3)}
  .role-tag{font-size:10px;padding:2px 7px;border-radius:20px;font-weight:700;white-space:nowrap}
  .role-exec{background:var(--brand-weak);color:var(--brand-ink)}
  .role-expert{background:var(--purple-weak);color:var(--purple)}
  .role-partner{background:var(--amber-weak);color:#a9720a}
  .pri{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600}
  .pri::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
  .pri.high{color:var(--red)} .pri.mid{color:var(--amber)} .pri.low{color:var(--txt-3)}
  .bar{height:6px;border-radius:6px;background:var(--line-2);overflow:hidden;min-width:70px}
  .bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--brand),var(--cyan))}
  .bar i.g{background:linear-gradient(90deg,var(--green),#6fd6ae)}
  .bar i.a{background:linear-gradient(90deg,var(--amber),#f2c76a)}
  .bar i.r{background:linear-gradient(90deg,var(--red),#f08b8f)}
  .prog-cell{display:flex;align-items:center;gap:8px}
  .prog-cell span{font-size:11px;color:var(--txt-2);font-variant-numeric:tabular-nums;width:30px}
  .tag{font-size:10.5px;padding:2px 8px;border-radius:6px;font-weight:600;white-space:nowrap;display:inline-block}
  .tag.wait{background:#f1f4fa;color:var(--txt-2)}
  .tag.doing{background:var(--brand-weak);color:var(--brand-ink)}
  .tag.done{background:var(--green-weak);color:var(--green)}
  .tag.risk{background:var(--red-weak);color:var(--red)}
  .tag.review{background:var(--purple-weak);color:var(--purple)}
  .tag.warn{background:var(--amber-weak);color:#a9720a}

  /* ============ 甘特图 ============ */
  .gantt{font-size:11.5px;min-width:940px}
  .gantt-row{display:grid;grid-template-columns:230px 1fr;border-bottom:1px solid var(--line-2)}
  .gantt-row:last-child{border-bottom:0}
  .gantt-row.head{border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel-2);z-index:2}
  .g-name{padding:9px 12px;display:flex;align-items:center;gap:7px;border-right:1px solid var(--line-2)}
  .g-name .gd{width:7px;height:7px;border-radius:50%;flex:0 0 7px}
  .g-name b{font-weight:600;font-size:12px;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .g-name em{font-style:normal;font-size:10.5px;color:var(--txt-3);margin-left:auto;white-space:nowrap}
  .g-timeline{position:relative;padding:0}
  .g-grid{display:grid;position:absolute;inset:0;pointer-events:none}
  .g-grid i{border-right:1px dashed var(--line-2)}
  .g-track{position:relative;height:38px;display:grid}
  .g-bar{
    position:absolute;top:11px;height:16px;border-radius:8px;display:flex;align-items:center;
    padding:0 7px;font-size:10.5px;color:#fff;font-weight:600;white-space:nowrap;overflow:hidden;
    box-shadow:0 4px 10px -5px rgba(23,35,66,.5);
  }
  .g-bar span{position:relative;z-index:1}
  .g-bar::after{content:"";position:absolute;left:0;top:0;bottom:0;background:rgba(255,255,255,.3);width:var(--fill,0%)}
  .g-bar.b-brand{background:linear-gradient(90deg,#3d68ec,#6d8ff7)}
  .g-bar.b-green{background:linear-gradient(90deg,#17a673,#4cc79b)}
  .g-bar.b-amber{background:linear-gradient(90deg,#e8a317,#f0c463);color:#5c4207}
  .g-bar.b-red{background:linear-gradient(90deg,#e0474c,#f08b8f)}
  .g-bar.b-purple{background:linear-gradient(90deg,#7b5cf0,#a58ef6)}
  .g-bar.b-gray{background:linear-gradient(90deg,#aab4c7,#c6cddb)}
  .g-today{position:absolute;top:0;bottom:0;width:0;border-left:1.5px dashed var(--red);z-index:3;pointer-events:none}
  .g-head-cell{padding:9px 12px;border-right:1px solid var(--line-2);font-size:11px;color:var(--txt-2);font-weight:600}
  .g-months{display:grid}
  .g-months span{padding:8px 0 8px 6px;border-right:1px solid var(--line);font-size:10.5px;color:var(--txt-3);font-weight:600}
  .g-col{display:grid;padding:9px 0;border-right:1px solid var(--line);font-size:10.5px;color:var(--txt-3)}
  .g-col.gc-today{border-right-color:var(--red);color:var(--red);font-weight:700}

  /* ============ 里程碑 / 提醒 ============ */
  .two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
  .ms-list{display:flex;flex-direction:column;gap:2px}
  .ms{display:flex;gap:11px;padding:10px 4px;border-bottom:1px dashed var(--line-2)}
  .ms:last-child{border-bottom:0}
  .ms .icon{
    width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:12px;flex:0 0 26px;
    background:var(--brand-weak);color:var(--brand-ink);
  }
  .ms.ok .icon{background:var(--green-weak);color:var(--green)}
  .ms.warn .icon{background:var(--amber-weak);color:#a9720a}
  .ms.risk .icon{background:var(--red-weak);color:var(--red)}
  .ms .mtxt{flex:1;min-width:0}
  .ms .mtxt b{font-size:12.5px;display:block}
  .ms .mtxt span{font-size:11px;color:var(--txt-3)}
  .ms .mdate{font-size:11px;color:var(--txt-3);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
  .ms .mdate b{display:block;font-size:12px;color:var(--txt-2)}

  /* ============ 交付物 ============ */
  .deliv-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:0 16px 14px}
  .ds{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--panel-2)}
  .ds b{font-size:19px;font-weight:800;display:block;font-variant-numeric:tabular-nums}
  .ds span{font-size:11px;color:var(--txt-3)}
  .fico{
    width:30px;height:30px;border-radius:8px;flex:0 0 30px;display:grid;place-items:center;
    box-shadow:0 4px 10px -5px rgba(23,35,66,.5);
  }
  .fico svg{width:22px;height:22px;fill:#fff}
  .fico.fx{background:linear-gradient(135deg,#0f9d63,#3fc48e)}
  .fico.fd{background:linear-gradient(135deg,var(--brand),var(--heat-3))}
  .fico.fp{background:linear-gradient(135deg,#d93b40,#f0797d)}
  .fico.fz{background:linear-gradient(135deg,#7b5cf0,#a58ef6)}
  .fico.fi{background:linear-gradient(135deg,#12b5c9,#5fd6e2)}
  .fico.ft{background:linear-gradient(135deg,#8d97ab,#b9c2d2)}
  .file-cell{display:flex;align-items:center;gap:8px;min-width:0}
  .file-cell b{font-size:12.5px;font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .file-cell span{font-size:10.5px;color:var(--txt-3)}

  /* ============ 杂项 ============ */
  .sec-title{display:flex;align-items:baseline;gap:10px;margin:4px 2px -6px}
  .sec-title h2{font-size:15px;font-weight:800;letter-spacing:.2px}
  .sec-title span{font-size:11.5px;color:var(--txt-3)}
  .sec-title .r{margin-left:auto;font-size:11.5px;color:var(--txt-3)}
  .legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--txt-3)}
  .legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px;vertical-align:-1px}
  .filters{display:flex;gap:6px;flex-wrap:wrap}
  .filter{
    font-size:11.5px;padding:4px 11px;border-radius:20px;border:1px solid var(--line);background:#fff;
    color:var(--txt-2);cursor:pointer;transition:.16s;font-family:inherit;
  }
  .filter:hover{border-color:var(--brand-2);color:var(--brand-ink)}
  .filter.on{background:var(--brand-btn);border-color:var(--brand-btn);color:#fff;font-weight:600}
  .muted{color:var(--txt-3)}
  .nowrap{white-space:nowrap}
  .hint{font-size:11px;color:var(--txt-3);margin-top:8px;display:flex;gap:6px;align-items:center}
  .flex-push{margin-left:auto}
  .mini-legend{display:flex;gap:10px;font-size:10.5px;color:var(--txt-3);align-items:center}
  .mini-legend em{font-style:normal;display:flex;align-items:center;gap:4px}

  /* ============ 首页工作台 · 问候条 ============ */
  .hero{
    background:var(--hero-grad);
    border-radius:var(--radius);padding:18px 20px;display:flex;align-items:center;gap:18px;
    color:#fff;box-shadow:0 18px 40px -22px rgba(28,52,120,.85);position:relative;overflow:hidden;
  }
  .hero::after{
    content:"";position:absolute;right:-60px;top:-80px;width:260px;height:260px;border-radius:50%;
    background:radial-gradient(circle,rgba(255,255,255,.16),rgba(255,255,255,0) 70%);
  }
  .hero-l{display:flex;align-items:center;gap:14px;position:relative;z-index:1}
  .hero-av{
    width:46px;height:46px;border-radius:14px;flex:0 0 46px;display:grid;place-items:center;
    font-size:17px;font-weight:800;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);
  }
  .hero-l h2{font-size:17px;font-weight:800;letter-spacing:.2px;display:flex;align-items:center;gap:8px}
  .hero-l h2 .chip{background:rgba(255,255,255,.18);color:#fff;border-color:rgba(255,255,255,.24)}
  .hero-l p{font-size:12.5px;color:#c3cfe8;margin-top:4px}
  .hero-l p b{color:#fff}
  .hero-r{margin-left:auto;display:flex;align-items:center;gap:10px;position:relative;z-index:1}
  .hero-date{text-align:right;padding-right:6px}
  .hero-date b{display:block;font-size:14px;font-weight:700}
  .hero-date span{display:block;font-size:11px;color:#b3c1de}
  .hero .btn{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.22);color:#fff}
  .hero .btn:hover{background:rgba(255,255,255,.24);color:#fff}
  .hero .btn.primary{background:#fff;color:var(--brand-ink);border-color:transparent;font-weight:700}
  .hero .btn.primary:hover{background:#f2f5ff;color:var(--brand-ink)}

  /* ============ 首页两列布局 ============ */
  .dash{display:grid;grid-template-columns:1.35fr 1fr;gap:16px;align-items:start}
  .dash-l,.dash-r{display:flex;flex-direction:column;gap:16px;min-width:0}

  /* ---- 我的项目 ---- */
  .proj{
    display:flex;align-items:center;gap:11px;padding:11px 6px;border-radius:10px;
    border-bottom:1px dashed var(--line-2);transition:.16s;cursor:pointer;
  }
  .proj:last-child{border-bottom:0}
  .proj:hover{background:#f8faff;border-bottom-color:transparent}
  .ring{
    width:40px;height:40px;border-radius:50%;flex:0 0 40px;display:grid;place-items:center;
    font-size:11px;font-weight:800;color:var(--brand-ink);position:relative;
  }
  .ring::before{
    content:"";position:absolute;inset:4px;border-radius:50%;background:#fff;
  }
  .ring span{position:relative;z-index:1;font-variant-numeric:tabular-nums}
  .proj .ptxt{flex:1;min-width:0}
  .proj .ptxt b{font-size:12.5px;font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .proj .ptxt span{font-size:11px;color:var(--txt-3);display:flex;gap:6px;align-items:center;margin-top:2px}
  /* 工作台「我的项目」列表：项目状态标签 + 阶段 / 说明（说明过长省略，状态标签不被压缩） */
  .proj .ptxt span .tag{flex:0 0 auto}
  .proj .ptxt .p-st-sub{font-style:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .proj .pmeta{text-align:right;white-space:nowrap}
  .proj .pmeta b{display:block;font-size:11.5px}

  /* ---- 我的项目 · 列表（公司 / 状态 / 内容 / 我负责 / 服务期间 / 团队） ---- */
  .p-cell-sub{display:block;font-size:11px;color:var(--txt-3);margin-top:3px;line-height:1.5}
  .p-duty{display:flex;gap:6px;align-items:flex-start;max-width:300px}
  .p-duty .role-tag{margin-top:2px;flex:0 0 auto}
  .p-duty p{margin:0;font-size:12px;color:var(--txt-2);line-height:1.55}
  .p-period{font-size:12px;color:var(--txt-2);font-variant-numeric:tabular-nums}
  .tm-chips{display:flex;flex-wrap:wrap;gap:4px;max-width:250px}
  .tm-chip{
    display:inline-flex;align-items:center;font-size:11px;padding:2px 8px;border-radius:20px;
    background:#f1f4fa;color:var(--txt-2);white-space:nowrap;
  }
  .tm-chip.lead{background:var(--brand-weak);color:var(--brand-ink);font-weight:600}
  .tm-chip.me{background:var(--green-weak);color:var(--green);font-weight:700}

  /* ---- 我的日志（执行人员项目进程日志） ---- */
  .log-txt{display:block;font-size:12.5px;color:var(--txt-2);line-height:1.55}
  .log-risk{display:block;font-size:11px;color:var(--red);line-height:1.5;margin-top:3px}
  /* 左侧日志清单 + 右侧填写表单：两栏并排时卡片等高（清单撑满、分页条贴底）；
     窄屏（<1290px）改为上下堆叠，避免清单内容换行过多把表单拉出大片空白 */
  .dash.dash-logs{align-items:stretch;grid-template-columns:minmax(0,1fr) minmax(440px,44%)}
  .dash.dash-logs .dash-l > .card{flex:1;display:flex;flex-direction:column}
  .dash.dash-logs .dash-r > .card:last-child{flex:1;display:flex;flex-direction:column}
  .dash.dash-logs .dash-l .tbl-wrap{flex:1}
  @media (max-width:1290px){ .dash.dash-logs{grid-template-columns:1fr} }
  /* 日志清单分页 */
  .pager{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid var(--line-2)}
  .pager:empty{display:none}
  .pager .pg-info{font-size:11.5px;color:var(--txt-3);margin-right:auto;font-variant-numeric:tabular-nums}
  .pager button{
    min-width:28px;height:28px;padding:0 9px;border-radius:7px;border:1px solid var(--line);background:#fff;
    font:600 12px/1 inherit;color:var(--txt-2);cursor:pointer;transition:.16s;
  }
  .pager button:hover:not(:disabled){border-color:var(--brand-2);color:var(--brand-ink);background:var(--brand-weak)}
  .pager button.on{background:var(--brand-btn);border-color:var(--brand-btn);color:#fff;box-shadow:0 6px 14px -8px rgba(var(--brand-rgb),1)}
  .pager button:disabled{opacity:.45;cursor:not-allowed}

  /* 右侧顶部一行：统计块 + 日历块（并排两张卡） */
  .lo-row{display:grid;grid-template-columns:minmax(0,1fr) 188px;gap:16px;align-items:stretch}
  .lo-stats-card{display:flex;flex-direction:column;justify-content:center;gap:9px;padding:14px 16px}
  .lo-stat{border-bottom:1px dashed var(--line-2);padding-bottom:9px}
  .lo-stat:last-child{border-bottom:0;padding-bottom:0}
  .lo-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
  .lo-top span{font-size:11.5px;color:var(--txt-3)}
  .lo-top b{font-size:22px;font-weight:800;letter-spacing:-.4px;font-variant-numeric:tabular-nums;line-height:1.1}
  .lo-top b small{font-size:11px;font-weight:600;color:var(--txt-3);margin-left:2px}
  .lo-foot{font-size:10.5px;color:var(--txt-3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .lc-card{padding:12px 14px;display:flex;flex-direction:column;justify-content:center}
  .log-cal{display:flex;flex-direction:column}
  .lc-wrap{width:100%}
  .lc-head{display:flex;align-items:baseline;gap:6px;margin-bottom:8px;white-space:nowrap}
  .lc-head b{font-size:12px;font-weight:700}
  .lc-head span{font-size:10px;color:var(--txt-3)}
  .lc-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
  .lc-wd{margin-bottom:4px}
  .lc-wd span{font-size:9.5px;color:var(--txt-3);text-align:center;line-height:1}
  .lc-cell{
    height:14px;display:grid;place-items:center;border-radius:4px;background:#eef1f8;
    font-size:9.5px;color:#b3bccc;font-variant-numeric:tabular-nums;transition:.14s;cursor:default;
  }
  .lc-cell.blank{background:transparent}
  .lc-cell.l1{background:var(--heat-1);color:var(--heat-1-txt)}
  .lc-cell.l2{background:var(--heat-2);color:#fff}
  .lc-cell.l3{background:var(--heat-4);color:#fff;font-weight:700}
  .lc-cell.today{box-shadow:inset 0 0 0 1.5px var(--red)}
  .lc-cell:not(.blank):hover{outline:2px solid rgba(var(--brand-rgb),.4);outline-offset:1px}
  .lc-legend{display:flex;align-items:center;gap:3px;margin-top:auto;padding-top:9px;font-size:10px;color:var(--txt-3)}
  .lc-legend .lc-cell{width:10px;height:10px;flex:0 0 10px;border-radius:3px;font-size:0}
  .lc-legend .lc-today{margin-left:auto;color:var(--red);white-space:nowrap}
  @media (max-width:1100px){
    .lo-row{grid-template-columns:minmax(0,1fr)}
    .lc-card{align-items:center}
    .lc-wrap{max-width:260px}
  }

  /* ---- 项目详情 · 项目概况（基本信息 / 概况指标 / 团队热力图 / 甘特看板） ---- */
  .pd-overview{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:16px;align-items:start}
  .pd-ov-r{display:flex;flex-direction:column;gap:16px;min-width:0}
  .pd-basic-body{padding:0 16px 10px}
  .pd-basic{display:flex;flex-direction:column}
  .pd-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 26px;padding:6px 0;border-bottom:1px dashed var(--line-2)}
  .pd-row.one{grid-template-columns:minmax(0,1fr)}
  .pd-row:last-child{border-bottom:0}
  .pd-f{display:flex;align-items:baseline;gap:9px;min-width:0}
  .pd-f.span2{grid-column:1/-1}
  .pd-f-l{flex:0 0 66px;font-size:11.5px;color:var(--txt-3);white-space:nowrap}
  .pd-f-v{flex:1;min-width:0;font-size:12.5px;line-height:1.6}
  .pd-f-v .tag{vertical-align:middle}
  .pd-role{
    display:inline-flex;align-items:center;font-size:10.5px;padding:1px 7px;border-radius:20px;
    background:var(--brand-weak);color:var(--brand-ink);font-weight:600;margin-right:6px;
  }
  .pd-team{display:flex;flex-direction:column;padding:1px 0}
  .pd-tm{display:flex;align-items:center;gap:9px;padding:9px 0;border-bottom:1px dashed var(--line-2)}
  .pd-tm:last-child{border-bottom:0;padding-bottom:0}
  .pd-tm .m-av{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;color:#fff;font-size:10.5px;font-weight:700;flex:0 0 26px}
  .pd-tm-txt{min-width:0;flex:1}
  .pd-tm-txt b{display:block;font-size:12px;font-weight:600;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pd-tm-txt b i{font-style:normal;color:var(--txt-3);font-weight:400}
  .pd-tm-txt b .pd-chip{margin-left:5px}
  .pd-tm-txt > span{display:block;font-size:10.5px;color:var(--txt-3);line-height:1.4;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pd-chip{font-size:9.5px;padding:1px 7px;border-radius:20px;background:var(--panel-2);border:1px solid var(--line);color:var(--txt-2);white-space:nowrap;flex:0 0 auto;display:inline-block;vertical-align:1px}
  .pd-kpi.violet b{color:var(--purple)}
  /* 团队工作热力图 */
  .pd-heat-nav{display:flex;align-items:center;gap:4px}
  .pd-heat-nav button{
    width:22px;height:22px;border-radius:6px;border:1px solid var(--line);background:#fff;color:var(--txt-2);
    cursor:pointer;font:600 12px/1 inherit;transition:.15s;
  }
  .pd-heat-nav button:hover:not(:disabled){border-color:var(--brand-2);color:var(--brand-ink);background:var(--brand-weak)}
  .pd-heat-nav button:disabled{opacity:.35;cursor:not-allowed}
  .pd-heat-nav b{font-size:11.5px;font-variant-numeric:tabular-nums;min-width:58px;text-align:center}
  .pd-heat{display:grid;grid-template-columns:56px repeat(var(--d),minmax(0,1fr));gap:1px 1.5px;align-items:center}
  .pd-heat-d{font-size:7.5px;color:var(--txt-3);text-align:right;line-height:1;padding-bottom:2px;font-variant-numeric:tabular-nums}
  .pd-heat-name{min-width:0;padding-right:6px}
  .pd-heat-name b{display:block;font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pd-heat-name span{display:block;font-size:9px;color:var(--txt-3);white-space:nowrap;margin-top:1px}
  .pd-heat-c{display:block;height:12px;border-radius:3px;background:#eef1f8}
  .pd-heat-c.l1{background:var(--heat-1)}
  .pd-heat-c.l2{background:var(--heat-2)}
  .pd-heat-c.l3{background:var(--heat-3)}
  .pd-heat-c.l4{background:var(--heat-4)}
  .pd-heat-foot{display:flex;align-items:center;gap:4px;margin-top:10px;font-size:10px;color:var(--txt-3)}
  .pd-heat-foot .pd-heat-c{width:10px;height:10px;flex:0 0 10px}
  .pd-heat-foot b{margin-left:auto;font-size:10.5px;font-weight:600;color:var(--txt-3)}
  /* 甘特看板 */
  .pd-gantt{display:flex;flex-direction:column}
  .pd-g-row{display:grid;grid-template-columns:210px minmax(0,1fr);align-items:center;border-bottom:1px dashed var(--line-2)}
  .pd-g-lbl{display:flex;align-items:center;gap:7px;font-size:12px;padding:0 10px 0 2px;min-width:0}
  .pd-g-lbl b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .pd-g-lbl span{font-size:10.5px;color:var(--txt-3);white-space:nowrap}
  .pd-g-dot{width:7px;height:7px;border-radius:50%;background:#c3cbd9;flex:0 0 7px}
  .pd-g-dot.done{background:var(--green)}
  .pd-g-dot.doing{background:var(--brand)}
  .pd-g-dot.risk{background:var(--red)}
  .pd-g-track{position:relative;height:34px;background-color:#fff}
  .pd-g-grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));pointer-events:none}
  .pd-g-grid i{border-left:1px dashed var(--line-2)}
  .pd-g-head .pd-g-lbl{font-size:10.5px;color:var(--txt-3);padding-bottom:2px}
  .pd-g-head .pd-g-track{display:grid;grid-template-columns:repeat(var(--cols),1fr);height:24px;background:none}
  .pd-g-head span{font-size:10.5px;color:var(--txt-3);border-left:1px dashed var(--line-2);padding-left:6px;white-space:nowrap;overflow:hidden}
  .pd-g-bar{
    position:absolute;top:8px;height:18px;border-radius:5px;background:var(--brand-btn);color:#fff;
    font:600 10px/1 inherit;display:flex;align-items:center;justify-content:center;
    white-space:nowrap;overflow:hidden;padding:0 6px;
  }
  .pd-g-bar.done{background:linear-gradient(90deg,#3fc79a,var(--green))}
  .pd-g-bar.risk{background:linear-gradient(90deg,#f0716f,var(--red))}
  .pd-g-bar.wait{background:#e2e7f0;color:var(--txt-2)}
  .pd-g-today{position:absolute;top:0;bottom:0;width:0;border-left:1px dashed rgba(224,71,76,.65)}
  .pd-g-lg{display:flex;align-items:center;gap:4px;font-size:10.5px;color:var(--txt-3);margin-right:4px}
  .pd-g-lg .pd-g-dot{width:8px;height:8px;flex:0 0 8px}
  @media (max-width:1180px){
    .pd-overview{grid-template-columns:1fr}
    .pd-g-row{grid-template-columns:150px minmax(0,1fr)}
  }
  @media (max-width:800px){
    .pd-row{grid-template-columns:minmax(0,1fr)}
    .pd-f.span2{grid-column:auto}
  }

  /* ---- 项目详情（点开项目后的详情页） ---- */
  .pd-tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding:0 2px;margin-bottom:-6px}
  .pd-tab{
    font:600 12.5px/1 inherit;color:var(--txt-2);background:none;border:0;cursor:pointer;
    padding:11px 13px;border-bottom:2px solid transparent;transition:.16s;border-radius:8px 8px 0 0;
  }
  .pd-tab:hover{color:var(--brand-ink);background:var(--brand-weak)}
  .pd-tab.on{color:var(--brand-ink);border-bottom-color:var(--brand)}
  .pd-panel{display:none;flex-direction:column;gap:16px}
  .pd-panel.on{display:flex}
  .pd-two{display:grid;grid-template-columns:1.3fr 1fr;gap:16px;align-items:start}
  .pd-col{display:flex;flex-direction:column;gap:16px;min-width:0}
  .pd-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
  .pd-kpi{border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:var(--panel-2)}
  .pd-kpi b{font-size:20px;font-weight:800;display:block;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
  .pd-kpi b small{font-size:11px;font-weight:600;color:var(--txt-3);margin-left:2px}
  .pd-kpi span{font-size:11px;color:var(--txt-3)}
  .pd-list{display:flex;flex-direction:column;gap:9px}
  .pd-li{display:flex;gap:9px;align-items:flex-start;font-size:12.5px;line-height:1.55}
  .pd-li i{
    width:18px;height:18px;border-radius:6px;flex:0 0 18px;display:grid;place-items:center;
    font-size:10px;font-style:normal;font-weight:700;background:var(--brand-weak);color:var(--brand-ink);margin-top:1px;
  }
  .pd-li.warn i{background:var(--amber-weak);color:#a9720a}
  .pd-li.risk i{background:var(--red-weak);color:var(--red)}
  .pd-li.ok i{background:var(--green-weak);color:var(--green)}
  .pd-li b{font-weight:600}
  .pd-li span{display:block;color:var(--txt-3);font-size:11.5px;margin-top:1px}
  .pd-note{font-size:11.5px;color:var(--txt-3);line-height:1.6}
  .pd-kpi.done b{color:var(--green)} .pd-kpi.risk b{color:var(--red)} .pd-kpi.brand b{color:var(--brand-ink)}
  @media (max-width:1180px){ .pd-two{grid-template-columns:1fr} }
  @media (max-width:880px){ .pd-kpis{grid-template-columns:repeat(2,minmax(0,1fr))} }

  /* ---- 项目概况 · 团队工作日历热力图 ---- */
  .hm{display:flex;flex-direction:column;gap:5px;min-width:430px}
  .hm-row{display:grid;grid-template-columns:74px minmax(0,1fr);align-items:center;gap:8px}
  .hm-name{font-size:11.5px;font-weight:600;color:var(--txt-2);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .hm-name small{display:block;font-size:9.5px;font-weight:400;color:var(--txt-3);margin-top:1px}
  .hm-days{display:grid;gap:3px}
  .hm-head .hm-days span{font-size:9px;line-height:1;color:var(--txt-3);text-align:center;font-variant-numeric:tabular-nums}
  .hm-head .hm-days span.we{color:#c3cbdb}
  .hm-cell{
    aspect-ratio:1/1;min-height:9px;border-radius:3px;background:#eef1f8;cursor:pointer;transition:.14s;
  }
  .hm-cell:hover{outline:2px solid rgba(var(--brand-rgb),.35);outline-offset:1px}
  .hm-cell.wk{background:#e6ebf5}
  .hm-cell.off{background:transparent;box-shadow:inset 0 0 0 1px #f2f5fa;cursor:default}
  .hm-cell.l1{background:var(--heat-1)}
  .hm-cell.l2{background:var(--heat-2)}
  .hm-cell.l3{background:var(--heat-3)}
  .hm-cell.l4{background:var(--heat-4)}
  .hm-legend{display:flex;align-items:center;gap:4px;font-size:10.5px;color:var(--txt-3);margin-top:11px;flex-wrap:wrap}
  .hm-legend i{width:11px;height:11px;border-radius:3px;display:inline-block;background:#eef1f8}
  .hm-legend i.l1{background:var(--heat-1)} .hm-legend i.l2{background:var(--heat-2)}
  .hm-legend i.l3{background:var(--heat-3)} .hm-legend i.l4{background:var(--heat-4)}
  .hm-legend .hm-sum{margin-left:auto;color:var(--txt-2);font-weight:600;font-variant-numeric:tabular-nums}

  /* ---- 本周日程 ---- */
  .week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
  .wd{border:1px solid var(--line);border-radius:11px;padding:9px 8px;background:var(--panel-2);min-height:86px;transition:.16s}
  .wd:hover{border-color:var(--brand-2);background:#fff;box-shadow:var(--shadow)}
  .wd.on{border-color:var(--brand);background:var(--brand-weak)}
  .wd .wd-h{font-size:10.5px;color:var(--txt-3);display:flex;justify-content:space-between;align-items:center}
  .wd.on .wd-h{color:var(--brand-ink);font-weight:700}
  .wd .wd-h b{font-size:13px;font-weight:800;color:var(--txt)}
  .wd.on .wd-h b{color:var(--brand-ink)}
  .wd ul{list-style:none;margin-top:7px;display:flex;flex-direction:column;gap:4px}
  .wd li{
    font-size:10.5px;padding:2px 6px;border-radius:6px;background:#fff;border:1px solid var(--line);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--txt-2);
  }
  .wd li.a{background:var(--amber-weak);border-color:rgba(232,163,23,.24);color:#8a5d05;font-weight:600}
  .wd li.r{background:var(--red-weak);border-color:rgba(224,71,76,.22);color:var(--red);font-weight:600}
  .wd li.g{background:var(--green-weak);border-color:rgba(23,166,115,.22);color:var(--green)}
  .wd .wd-more{font-size:10px;color:var(--txt-3);margin-top:5px}

  /* ---- 最近收到的资料 ---- */
  .feed{display:flex;gap:10px;padding:9px 2px;border-bottom:1px dashed var(--line-2)}
  .feed:last-child{border-bottom:0}
  .feed.clickable{cursor:pointer;border-radius:8px;transition:.16s}
  .feed.clickable:hover{background:var(--panel-2)}
  .feed .fico{width:24px;height:24px;border-radius:8px;display:grid;place-items:center;font-size:11px;flex:0 0 24px}
  .feed .fico.b{background:var(--brand-weak);color:var(--brand-ink)}
  .feed .fico.g{background:var(--green-weak);color:var(--green)}
  .feed .fico.a{background:var(--amber-weak);color:#a9720a}
  .feed .fico.p{background:var(--purple-weak);color:var(--purple)}
  .feed .ftxt{flex:1;min-width:0}
  .feed .ftxt p{font-size:12.5px;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .feed .ftxt p b{font-weight:600}
  .feed .ftxt p em{font-style:normal;color:var(--brand-ink);font-weight:600}
  .feed .ftxt span{display:block;font-size:10.5px;color:var(--txt-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

  /* ============ 官网（登录前） ============ */
  .site{
    position:fixed;inset:0;z-index:90;display:none;overflow-y:auto;overflow-x:hidden;
    background:var(--bg);-webkit-overflow-scrolling:touch;
  }
  .site.show{display:block}
  .site-page{display:none}
  .site-page.on{display:block}
  .wrap{max-width:1200px;margin:0 auto;padding:0 24px}

  /* ---- 官网顶部导航 ---- */
  .site-nav{
    position:sticky;top:0;z-index:40;background:rgba(255,255,255,.9);
    backdrop-filter:blur(12px);border-bottom:1px solid var(--line);
  }
  .sn-in{max-width:1200px;margin:0 auto;height:64px;display:flex;align-items:center;gap:14px;padding:0 24px}
  .sn-logo{display:flex;align-items:center;gap:11px;cursor:pointer;flex:0 0 auto;user-select:none}
  .sn-logo b{
    font-family:var(--brand-name-font);font-size:20px;font-weight:700;letter-spacing:.3px;
    line-height:1.2;white-space:nowrap;color:var(--brand-name);
  }
  .sn-menu{display:flex;align-items:center;gap:2px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}
  .sn-menu::-webkit-scrollbar{display:none}
  .sn-menu button{
    height:34px;padding:0 13px;border:0;background:transparent;font-family:inherit;font-size:13px;
    color:var(--txt-2);border-radius:9px;cursor:pointer;white-space:nowrap;transition:.16s;
  }
  .sn-menu button:hover{color:var(--brand-ink);background:var(--brand-weak)}
  .sn-menu button.on{color:var(--brand-ink);background:var(--brand-weak);font-weight:700}
  .sn-act{display:flex;align-items:center;gap:8px;flex:0 0 auto}

  /* ---- 首页 Hero ---- */
  .hero-site{
    position:relative;overflow:hidden;color:#fff;padding:72px 0 84px;
    background:
      radial-gradient(880px 460px at 82% 6%,rgba(18,181,201,.34),transparent 62%),
      linear-gradient(125deg,#0d1730 0%,#1b2a4d 44%,#2f5bea 100%);
  }
  .hero-site::after{
    content:"";position:absolute;left:-140px;bottom:-200px;width:460px;height:460px;border-radius:50%;
    background:radial-gradient(circle,rgba(255,255,255,.10),transparent 70%);
  }
  .hero-grid{
    max-width:1200px;margin:0 auto;padding:0 24px;position:relative;z-index:1;
    display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:46px;align-items:center;
  }
  .hero-tag{
    display:inline-flex;align-items:center;gap:7px;font-size:12px;color:#d5e2ff;
    background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);padding:5px 12px;border-radius:20px;
  }
  .hero-tag i{width:6px;height:6px;border-radius:50%;background:#8ff0d8;display:block}
  .hero-site h1{font-size:38px;line-height:1.26;font-weight:800;letter-spacing:-.6px;margin:18px 0 14px}
  .hero-site h1 em{font-style:normal;background:linear-gradient(100deg,#8ff0d8,#8fd0ff);-webkit-background-clip:text;background-clip:text;color:transparent}
  .hero-site .lead{font-size:14px;line-height:1.9;color:#c7d5f2;max-width:566px}
  .hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
  .btn-hero{
    height:44px;padding:0 22px;border-radius:11px;font-size:14px;font-family:inherit;cursor:pointer;
    display:inline-flex;align-items:center;gap:8px;border:1px solid transparent;transition:.18s;
  }
  .btn-hero.main{background:#fff;color:#1b3ba8;font-weight:700;box-shadow:0 18px 32px -18px rgba(0,0,0,.75)}
  .btn-hero.main:hover{transform:translateY(-2px)}
  .btn-hero.line{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.36)}
  .btn-hero.line:hover{background:rgba(255,255,255,.17)}
  .hero-metrics{display:flex;gap:30px;margin-top:36px;flex-wrap:wrap}
  .hero-metrics b{display:block;font-size:25px;font-weight:800;letter-spacing:-.6px;font-variant-numeric:tabular-nums;line-height:1.25}
  .hero-metrics b small{font-size:13px;font-weight:600;margin-left:1px}
  .hero-metrics span{font-size:11.5px;color:#a5b9e2}

  /* ---- 数据带 ---- */
  .stat-band{background:#fff;border-bottom:1px solid var(--line)}
  .stat-in{max-width:1320px;margin:0 auto;padding:30px 24px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
  .stat-in div{text-align:center;border-right:1px solid var(--line-2)}
  .stat-in div:last-child{border-right:0}
  .stat-in b{display:block;font-size:32px;font-weight:800;letter-spacing:-.6px;color:var(--brand-ink);font-variant-numeric:tabular-nums}
  .stat-in b small{font-size:15px;font-weight:600}
  .stat-in span{display:block;font-size:13px;color:var(--txt-3);margin-top:4px}

  /* ---- 通用区块 ---- */
  .sec{padding:58px 0}
  .sec.alt{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .sec-head{text-align:center;max-width:760px;margin:0 auto 32px}
  .sec-head .eyebrow{font-size:11.5px;font-weight:700;letter-spacing:2.2px;color:var(--brand-ink);text-transform:uppercase}
  .sec-head h2{font-size:26px;font-weight:800;letter-spacing:-.4px;margin:10px 0 10px}
  .sec-head p{font-size:13px;color:var(--txt-2);line-height:1.85}
  .sec-head.left{text-align:left;margin-left:0}
  .grid{display:grid;gap:16px}
  .g2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .g4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .si{width:20px;height:20px;display:block}

  .feat{
    background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);transition:.18s;
  }
  .feat:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:rgba(var(--brand-rgb),.28)}
  .feat .fi{
    width:40px;height:40px;border-radius:11px;display:grid;place-items:center;color:#fff;
    background:linear-gradient(135deg,var(--brand),var(--cyan));box-shadow:0 10px 20px -12px rgba(var(--brand-rgb),.95);
  }
  .feat h3{font-size:14.5px;font-weight:800;margin:14px 0 7px}
  .feat p{font-size:12.5px;color:var(--txt-2);line-height:1.8}
  .feat ul{list-style:none;margin-top:10px;display:flex;flex-direction:column;gap:6px}
  .feat ul li{font-size:12px;color:var(--txt-2);display:flex;gap:7px;align-items:flex-start;line-height:1.65}
  .feat ul li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--brand);margin-top:7px;flex:0 0 5px}

  /* ---- 流程 ---- */
  .steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}
  .step{
    background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px 18px 18px;position:relative;
    box-shadow:var(--shadow);transition:transform .18s ease, box-shadow .18s ease;
  }
  .step:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
  .step b.no{
    position:absolute;right:16px;top:12px;font-size:28px;font-weight:800;color:var(--brand-weak);letter-spacing:-1px;line-height:1;
  }
  .step h4{font-size:14.5px;font-weight:800;margin-bottom:8px;position:relative}
  .step p{font-size:12.5px;color:var(--txt-2);line-height:1.85;position:relative}
  .step .st-day{display:inline-block;margin-top:12px;font-size:11.5px;color:var(--brand-ink);background:var(--brand-weak);border-radius:20px;padding:3px 10px;font-weight:600}

  /* ---- 案例卡 / 专家卡 ---- */
  .case-card{
    background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:.18s;
    display:flex;flex-direction:column;
  }
  .case-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
  .case-top{
    padding:16px 18px;position:relative;overflow:hidden;
    background:var(--panel-2);border-bottom:1px solid var(--line-2);
  }
  .case-top .ct-ind{
    font-size:11px;color:var(--txt-3);letter-spacing:.5px;
    display:flex;align-items:center;gap:6px;
  }
  .case-top .ct-ind::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--brand);flex:0 0 6px}
  .case-top.c2 .ct-ind::before{background:#12b5c9}
  .case-top.c3 .ct-ind::before{background:#7b5cf0}
  .case-top.c4 .ct-ind::before{background:#e8a317}
  .case-top.c5 .ct-ind::before{background:#17a673}
  .case-top.c6 .ct-ind::before{background:#c2547a}
  .case-top h3{
    font-size:17px;font-weight:800;margin:8px 0 0;position:relative;color:var(--txt);
    display:flex;align-items:center;gap:9px;line-height:1.25;
  }
  .case-top .ct-logo{
    width:22px;height:22px;flex:0 0 22px;border-radius:7px;display:grid;place-items:center;
    background:linear-gradient(135deg,var(--brand),var(--cyan));color:#fff;
    font-size:12px;font-weight:800;line-height:1;letter-spacing:0;
    box-shadow:0 4px 10px -6px rgba(var(--brand-rgb),.85);
  }
  .case-top.c2 .ct-logo{background:linear-gradient(135deg,#0b4f5e,#12b5c9)}
  .case-top.c3 .ct-logo{background:linear-gradient(135deg,#3b2a72,#7b5cf0)}
  .case-top.c4 .ct-logo{background:linear-gradient(135deg,#7a4a06,#e8a317)}
  .case-top.c5 .ct-logo{background:linear-gradient(135deg,#0d4d38,#17a673)}
  .case-top.c6 .ct-logo{background:linear-gradient(135deg,#4a2036,#c2547a)}
  .case-body{padding:16px 18px;display:flex;flex-direction:column;gap:10px;flex:1}
  .case-body p{font-size:12.5px;color:var(--txt-2);line-height:1.8}
  .case-nums{display:flex;gap:18px;flex-wrap:wrap;margin-top:auto;padding-top:12px;border-top:1px dashed var(--line)}
  .case-nums div b{display:block;font-size:19px;font-weight:800;color:var(--brand-ink);letter-spacing:-.4px}
  .case-nums div span{font-size:11px;color:var(--txt-3)}
  .case-tags{display:flex;gap:6px;flex-wrap:wrap}

  .expert{
    background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:var(--shadow);
    display:flex;gap:18px;align-items:flex-start;transition:.18s;
  }
  .expert:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
  .ex-av{
    width:56px;height:56px;flex:0 0 56px;border-radius:16px;display:grid;place-items:center;color:#fff;
    font-size:20px;font-weight:800;background:var(--avatar-grad);box-shadow:0 12px 22px -14px rgba(var(--brand-rgb),1);
  }
  .ex-av.v2{background:linear-gradient(135deg,#12b5c9,#17a673)}
  .ex-av.v3{background:linear-gradient(135deg,#e8a317,#c2547a)}
  .ex-av.v4{background:linear-gradient(135deg,#2f5bea,#7b5cf0)}
  .ex-av.v5{background:linear-gradient(135deg,#17a673,#2f5bea)}
  .ex-av.v6{background:linear-gradient(135deg,#7b5cf0,#c2547a)}
  .expert .ex-body{flex:1;min-width:0;padding-top:2px}
  .expert h3{font-size:16.5px;font-weight:800;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .expert .ex-role{font-size:12px;color:var(--brand-ink);font-weight:600;margin-top:4px}
  .expert p{font-size:13px;color:var(--txt-2);line-height:1.85;margin-top:10px}
  .expert .ex-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}

  /* ---- CTA / 页脚 ---- */
  .cta-band{
    margin:0 0 0;padding:44px 0;color:#fff;
    background:radial-gradient(700px 300px at 20% 0%,rgba(18,181,201,.34),transparent 60%),linear-gradient(120deg,#16223f,#2f5bea);
  }
  .cta-in{max-width:1200px;margin:0 auto;padding:0 24px;display:flex;align-items:center;gap:26px;flex-wrap:wrap}
  .cta-in h2{font-size:23px;font-weight:800;letter-spacing:-.3px}
  .cta-in p{font-size:13px;color:#c7d5f2;margin-top:8px;line-height:1.8;max-width:620px}
  .cta-in .cta-btns{margin-left:auto;display:flex;gap:10px;flex-wrap:wrap}

  .site-foot{background:#0e1730;color:#9fb0d0;padding:44px 0 0}
  .foot-in{max-width:1200px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:26px}
  .site-foot h4{font-size:13px;color:#fff;font-weight:700;margin-bottom:12px}
  .site-foot p{font-size:12px;line-height:1.9}
  .site-foot ul{list-style:none;display:flex;flex-direction:column;gap:9px}
  .site-foot ul li{font-size:12px;cursor:pointer;transition:.16s}
  .site-foot ul li:hover{color:#fff}
  .site-foot .foot-logo{display:flex;align-items:center;gap:10px;margin-bottom:12px}
  .site-foot .foot-logo b{
    font-family:var(--brand-name-font);font-size:20px;font-weight:700;letter-spacing:.3px;
    color:var(--brand-name-lt);
  }
  .foot-bar{
    margin-top:34px;border-top:1px solid rgba(255,255,255,.1);padding:14px 24px;
    display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:11.5px;color:#7d8fb3;
  }
  .foot-bar .to-top{margin-left:auto;cursor:pointer;color:#c3cee3}
  .foot-bar .to-top:hover{color:#fff}

  /* ---- 登录页返回官网 ---- */
  .back-site{
    align-self:flex-start;font-size:11.5px;color:var(--brand-ink);cursor:pointer;user-select:none;
    display:inline-flex;align-items:center;gap:5px;padding:3px 9px 3px 6px;border-radius:20px;
    background:var(--brand-weak);border:1px solid rgba(var(--brand-rgb),.16);margin-bottom:-4px;
  }
  .back-site:hover{background:#dfe8ff}

  /* ---- 首页 Hero：业务场景标签 + 快速登录卡 ---- */
  .hero-site .lead .hl{color:#8CF0CE;font-weight:600}
  .hero-scenes{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px}
  .scene{
    display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:rgba(255,255,255,.86);
    border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.05);
    padding:7px 13px;border-radius:10px;transition:.16s;
  }
  .scene:hover{border-color:#8CF0CE;color:#d8fff0}
  .scene svg{width:15px;height:15px;color:#8CF0CE}

  .ql-card{
    position:relative;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.2);border-radius:18px;
    padding:20px;backdrop-filter:blur(8px);box-shadow:0 34px 70px -34px rgba(2,10,32,.92);
  }
  .ql-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
  .ql-head h2{font-size:17px;font-weight:800;color:#fff}
  .ql-head p{font-size:11.5px;color:rgba(255,255,255,.55);margin-top:3px}
  .ql-online{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;color:rgba(255,255,255,.5);white-space:nowrap}
  .ql-online i{width:6px;height:6px;border-radius:50%;background:#34d399;display:block}
  .ql-form{display:flex;flex-direction:column;gap:12px;margin-top:16px}
  .ql-field label{display:block;font-size:11.5px;color:rgba(255,255,255,.6);margin-bottom:6px}
  .ql-form .field{
    width:100%;height:40px;border-radius:10px;border:1px solid rgba(255,255,255,.22);
    background:rgba(255,255,255,.08);padding:0 12px;color:#fff;font-size:13px;font-family:inherit;
    outline:none;transition:.16s;
  }
  .ql-form .field::placeholder{color:rgba(255,255,255,.35)}
  .ql-form .field:focus{border-color:#8CF0CE;background:rgba(255,255,255,.13);box-shadow:0 0 0 3px rgba(140,240,206,.14)}
  .ql-form .pw-row .toggle{color:rgba(255,255,255,.55)}
  .ql-form .pw-row .toggle:hover{background:rgba(255,255,255,.14);color:#fff}
  .ql-err{
    display:none;font-size:11.5px;color:#ffdcdc;background:rgba(224,71,76,.2);
    border:1px solid rgba(224,71,76,.4);border-radius:9px;padding:8px 10px;line-height:1.6;
  }
  .ql-err.show{display:block}
  .btn-ql{
    width:100%;height:42px;border-radius:11px;border:1px solid transparent;font-family:inherit;
    font-size:14px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;
    background:#fff;color:#1b3ba8;box-shadow:0 18px 32px -18px rgba(0,0,0,.75);transition:.18s;
  }
  .btn-ql:hover{transform:translateY(-2px)}
  .ql-foot{
    display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px;padding-top:13px;
    border-top:1px solid rgba(255,255,255,.14);font-size:10.5px;color:rgba(255,255,255,.5);
  }
  .ql-foot span{display:inline-flex;align-items:center;gap:5px}

  /* ---- 政策卡片（官网） ---- */
  .pol-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
  .pol-card{
    background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
    padding:16px;display:flex;flex-direction:column;gap:10px;transition:.18s;
  }
  .pol-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:rgba(var(--brand-rgb),.3)}
  .pol-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
  .pol-region{
    display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--brand-ink);
    background:var(--brand-weak);border:1px solid rgba(var(--brand-rgb),.16);border-radius:8px;padding:3px 9px;
  }
  .pol-region svg{width:12px;height:12px}
  .pol-hot{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;color:var(--red)}
  .pol-hot i{width:6px;height:6px;border-radius:50%;background:var(--red);display:block}
  .pol-card h3{font-size:14px;font-weight:800;line-height:1.55}
  .pol-card .pol-ind{font-size:11.5px;color:var(--txt-3)}
  .pol-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;border-top:1px solid var(--line-2);padding-top:11px;margin-top:auto}
  .pol-stats div span{display:block;font-size:10.5px;color:var(--txt-3)}
  .pol-stats div b{display:block;font-size:12.5px;font-weight:700;margin-top:2px}
  .pol-stats .money b{color:#a9720a}
  .pol-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px}
  .pol-badge{font-size:11px;font-weight:700;border-radius:7px;padding:3px 8px;border:1px solid transparent;white-space:nowrap}
  .pol-badge.urgent{color:var(--red);background:var(--red-weak);border-color:rgba(224,71,76,.22)}
  .pol-badge.soon{color:#a9720a;background:var(--amber-weak);border-color:rgba(232,163,23,.24)}
  .pol-badge.normal{color:var(--green);background:var(--green-weak);border-color:rgba(23,166,115,.18)}
  .pol-badge.expired{color:var(--txt-3);background:#f1f4fa;border-color:var(--line)}
  .pol-link{font-size:12px;font-weight:600;color:var(--brand-ink);cursor:pointer;display:inline-flex;align-items:center;gap:4px;background:none;border:0;font-family:inherit;padding:0}
  .pol-link:hover{color:var(--brand-btn-2)}
  .pol-note{font-size:11.5px;color:var(--txt-3)}
  .pol-filter-bar{
    background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
    padding:16px 18px;display:flex;flex-direction:column;gap:12px;
  }
  .pol-filter-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
  .pol-filter-row > b{font-size:12px;color:var(--txt-2);width:34px;flex:0 0 34px}
  .pol-empty{grid-column:1/-1;padding:44px;text-align:center;color:var(--txt-3);font-size:13px;background:#fff;border:1px dashed var(--line);border-radius:var(--radius)}

  /* ---- 统一研发数据底座 ---- */
  .databand{
    display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);
    border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px;
  }
  .databand .db-ico{
    width:44px;height:44px;flex:0 0 44px;border-radius:12px;display:grid;place-items:center;color:#fff;
    background:linear-gradient(135deg,var(--brand),var(--cyan));
  }
  .databand h3{font-size:15px;font-weight:800}
  .databand p{font-size:12.5px;color:var(--txt-2);line-height:1.8;margin-top:4px;max-width:760px}
  .databand .btn{margin-left:auto}

  /* ---- 免注册体验（深色带） ---- */
  .guest-band{
    position:relative;overflow:hidden;color:#fff;padding:56px 0;
    background:radial-gradient(700px 320px at 88% 0%,rgba(140,240,206,.16),transparent 62%),linear-gradient(120deg,#0d1730,#1b2a4d 58%,#113a4a);
  }
  .guest-band .sec-head h2{color:#fff}
  .guest-band .sec-head p{color:#b9c9e6}
  .gp-pains{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:26px}
  .gp-pain{border-left:2px solid #8CF0CE;background:rgba(255,255,255,.05);border-radius:0 12px 12px 0;padding:15px 17px}
  .gp-pain h4{font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:7px}
  .gp-pain h4 svg{width:15px;height:15px;color:#8CF0CE;flex:0 0 15px}
  .gp-pain p{font-size:12px;line-height:1.75;color:rgba(255,255,255,.66);margin-top:7px}
  .gp-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
  .gp-card{
    background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);border-radius:var(--radius);
    padding:17px;display:flex;flex-direction:column;gap:9px;transition:.18s;
  }
  .gp-card:hover{transform:translateY(-3px);border-color:rgba(140,240,206,.55);background:rgba(255,255,255,.09)}
  .gp-card .gp-ico{
    width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:#8CF0CE;
    border:1px solid rgba(140,240,206,.4);background:rgba(140,240,206,.1);
  }
  .gp-card .gp-ico svg{width:18px;height:18px}
  .gp-card h4{font-size:14.5px;font-weight:800}
  .gp-card p{font-size:12px;line-height:1.75;color:rgba(255,255,255,.62)}
  .gp-card ul{list-style:none;display:flex;flex-direction:column;gap:6px;margin-top:2px;padding-top:10px;border-top:1px solid rgba(255,255,255,.12)}
  .gp-card ul li{font-size:11.5px;color:rgba(255,255,255,.72);display:flex;gap:7px;align-items:flex-start}
  .gp-card ul li::before{content:"✓";color:#8CF0CE;font-weight:800}
  .gp-card .gp-tag{font-size:10.5px;color:#8CF0CE;border:1px solid rgba(140,240,206,.3);border-radius:20px;padding:2px 9px;align-self:flex-start}
  .gp-promises{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:26px;padding-top:24px;border-top:1px solid rgba(255,255,255,.14)}
  .gp-promises div{text-align:center}
  .gp-promises b{display:block;font-size:22px;font-weight:800;letter-spacing:-.5px;color:#8CF0CE}
  .gp-promises span{display:block;font-size:12.5px;font-weight:700;margin-top:5px}
  .gp-promises em{display:block;font-size:11px;font-style:normal;color:rgba(255,255,255,.55);margin-top:3px;line-height:1.6}

  @media (max-width:1420px){
    .pol-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
    .gp-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  }
  @media (max-width:1100px){
    .pol-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .gp-pains{grid-template-columns:1fr}
    .gp-promises{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:20px}
    .databand .btn{margin-left:0}
  }
  @media (max-width:720px){
    .pol-grid,.gp-cards{grid-template-columns:1fr}
    .pol-filter-row > b{width:auto;flex:0 0 auto}
  }

  /* ---- 右侧浮窗：预约诊断 ---- */
  .diag-fab{
    position:fixed;right:0;top:46%;transform:translateY(-50%);z-index:60;width:46px;padding:13px 0;
    border:0;border-radius:12px 0 0 12px;cursor:pointer;font-family:inherit;
    display:flex;flex-direction:column;align-items:center;gap:8px;
    background:linear-gradient(160deg,#0E9F6E,#12b5c9);color:#fff;
    box-shadow:-8px 12px 26px -16px rgba(6,60,45,.95);transition:.18s;
  }
  .diag-fab:hover{width:50px;filter:brightness(1.05)}
  .diag-fab svg{width:18px;height:18px}
  .diag-fab span{font-size:11.5px;font-weight:700;letter-spacing:2px;writing-mode:vertical-rl}
  .diag-mask{
    position:fixed;inset:0;z-index:70;background:rgba(9,17,35,.5);
    opacity:0;visibility:hidden;transition:.25s;
  }
  .diag-mask.show{opacity:1;visibility:visible}
  .diag-panel{
    position:fixed;top:0;right:0;bottom:0;z-index:80;width:min(424px,100%);background:#fff;
    box-shadow:-24px 0 60px -30px rgba(9,17,35,.7);display:flex;flex-direction:column;
    transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);
  }
  .diag-panel.show{transform:none}
  .diag-head{
    padding:18px 22px;display:flex;align-items:flex-start;gap:12px;color:#fff;
    background:radial-gradient(500px 200px at 90% 0%,rgba(140,240,206,.28),transparent 60%),linear-gradient(120deg,#0d1730,#1b2a4d 55%,#0E9F6E);
  }
  .diag-head h3{font-size:16px;font-weight:800}
  .diag-head p{font-size:11.5px;color:rgba(255,255,255,.78);margin-top:4px}
  .diag-x{
    margin-left:auto;width:28px;height:28px;flex:0 0 28px;border-radius:8px;font-family:inherit;cursor:pointer;
    border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;font-size:15px;line-height:1;
  }
  .diag-x:hover{background:rgba(255,255,255,.24)}
  .diag-body{padding:18px 22px 24px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}
  .diag-row label{display:block;font-size:12px;font-weight:600;color:var(--txt-2);margin-bottom:6px}
  .diag-row label i{color:var(--red);font-style:normal}
  .diag-row .df{
    width:100%;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--panel-2);
    padding:0 12px;font-size:13px;font-family:inherit;color:var(--txt);outline:none;transition:.16s;
  }
  .diag-row .df:focus{border-color:var(--brand-2);background:#fff;box-shadow:0 0 0 3px rgba(var(--brand-rgb),.1)}
  .diag-row .df.bad{border-color:rgba(224,71,76,.6);background:var(--red-weak)}
  .diag-row .df-area{height:auto;min-height:88px;padding:10px 12px;line-height:1.7;resize:vertical}
  .diag-tags{display:flex;flex-wrap:wrap;gap:7px}
  .diag-tags button{
    font-family:inherit;font-size:11.5px;color:var(--txt-2);background:var(--panel-2);
    border:1px solid var(--line);border-radius:20px;padding:5px 11px;cursor:pointer;transition:.16s;
  }
  .diag-tags button:hover{border-color:var(--brand-2);color:var(--brand-ink)}
  .diag-tags button.on{background:var(--brand-weak);border-color:rgba(var(--brand-rgb),.45);color:var(--brand-ink);font-weight:700}
  .diag-err{
    display:none;font-size:11.5px;color:var(--red);background:var(--red-weak);
    border:1px solid rgba(224,71,76,.22);border-radius:9px;padding:8px 10px;line-height:1.6;
  }
  .diag-err.show{display:block}
  .diag-submit{
    height:44px;border-radius:11px;border:0;font-family:inherit;font-size:14px;font-weight:700;color:#fff;cursor:pointer;
    background:linear-gradient(135deg,#0E9F6E,#12b5c9);box-shadow:0 16px 30px -18px rgba(14,159,110,.95);transition:.18s;
  }
  .diag-submit:hover{filter:brightness(1.05);transform:translateY(-1px)}
  .diag-note{font-size:11px;color:var(--txt-3);line-height:1.7;text-align:center}
  .diag-done{display:none;padding:36px 24px;text-align:center;flex-direction:column;align-items:center;gap:12px}
  .diag-done.show{display:flex}
  .diag-done .ok{
    width:56px;height:56px;border-radius:50%;display:grid;place-items:center;
    background:var(--green-weak);color:var(--green);font-size:26px;font-weight:800;
  }
  .diag-done h3{font-size:17px;font-weight:800}
  .diag-done p{font-size:12.5px;color:var(--txt-2);line-height:1.85}
  .diag-done .no{font-size:12.5px;font-weight:700;color:var(--brand-ink);background:var(--brand-weak);border-radius:8px;padding:6px 12px}
  .diag-done .btn{justify-content:center}

  /* ---- 官网响应式 ---- */
  @media (max-width:1100px){
    .hero-grid{grid-template-columns:1fr;gap:34px}
    .hero-site h1{font-size:32px}
    .stat-in{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 12px}
    .stat-in div{border-right:0}
    .g4{grid-template-columns:repeat(2,minmax(0,1fr))}
    .g3{grid-template-columns:repeat(2,minmax(0,1fr))}
    .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
    .split{grid-template-columns:1fr}
    .foot-in{grid-template-columns:1fr 1fr}
    .cta-in .cta-btns{margin-left:0}
    .sn-menu button{padding:0 10px}
  }
  @media (max-width:720px){
    .sec{padding:42px 0}
    .hero-site{padding:52px 0 66px}
    .hero-site h1{font-size:27px}
    .g2,.g3,.g4{grid-template-columns:1fr}
    .steps{grid-template-columns:1fr}
    .foot-in{grid-template-columns:1fr}
    .cta-in h2{font-size:20px}
    .sn-in{height:auto;flex-wrap:wrap;padding:10px 14px;gap:10px}
    .sn-menu{order:3;flex:1 0 100%;padding-bottom:2px}
    .sn-menu button{height:32px;padding:0 11px;font-size:12.5px}
    .sn-act .btn:not(.primary){display:none}
    .sn-act .btn{height:32px}
  }

  /* ============ 登录页 ============ */
  .login{
    position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;
    background:radial-gradient(1000px 600px at 12% 8%,#2b4a92 0%,#182a52 45%,#101a33 100%);
    overflow:auto;padding:24px;
  }
  .login.show{display:flex}
  .login-box{
    width:min(980px,100%);background:#fff;border-radius:20px;overflow:hidden;display:grid;
    grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);box-shadow:0 40px 90px -30px rgba(5,15,45,.75);
  }
  .login-brand{
    background:linear-gradient(160deg,#22407e 0%,#2f5bea 70%,#12b5c9 140%);
    color:#fff;padding:30px 28px;display:flex;flex-direction:column;gap:16px;position:relative;overflow:hidden;
  }
  .login-brand::after{
    content:"";position:absolute;right:-70px;bottom:-90px;width:280px;height:280px;border-radius:50%;
    background:radial-gradient(circle,rgba(255,255,255,.18),transparent 70%);
  }
  .login-brand h1{
    font-family:var(--brand-name-font);font-size:26px;font-weight:700;letter-spacing:.5px;
    line-height:1.2;color:var(--brand-name-mint);
  }
  .lb-list{list-style:none;display:flex;flex-direction:column;gap:9px;margin-top:4px}
  .lb-list li{font-size:12px;color:#dbe5fa;display:flex;gap:8px;align-items:flex-start;line-height:1.5}
  .lb-list li i{color:#8ff0d8;font-style:normal;font-weight:700}
  .lb-note{
    margin-top:auto;position:relative;z-index:1;font-size:11px;color:#cdd9f3;
    border-top:1px solid rgba(255,255,255,.2);padding-top:12px;line-height:1.6;
  }
  .login-form{padding:28px 26px;display:flex;flex-direction:column;gap:14px}
  .login-form h2{font-size:16px;font-weight:800}
  .login-form .lf-sub{font-size:11.5px;color:var(--txt-3);margin-top:-8px}
  .login-form .field{height:38px}
  .pw-row{position:relative}
  .pw-row .toggle{
    position:absolute;right:8px;top:6px;font-size:11px;color:var(--txt-3);cursor:pointer;
    padding:3px 7px;border-radius:6px;user-select:none;
  }
  .pw-row .toggle:hover{background:var(--line-2);color:var(--brand-ink)}
  .login-btn{height:40px;justify-content:center;font-size:13.5px;width:100%}
  .login-err{
    display:none;font-size:11.5px;color:var(--red);background:var(--red-weak);
    border:1px solid rgba(224,71,76,.22);border-radius:9px;padding:8px 10px;
  }
  .login-err.show{display:block}
  .acc-quick{display:flex;gap:8px;flex-wrap:wrap}
  .acc-quick button{
    font-size:11.5px;padding:5px 10px;border-radius:20px;border:1px solid var(--line);background:var(--panel-2);
    cursor:pointer;font-family:inherit;color:var(--txt-2);transition:.16s;
  }
  .acc-quick button:hover{border-color:var(--brand-2);color:var(--brand-ink);background:var(--brand-weak)}
  .login-foot{font-size:10.5px;color:var(--txt-3);text-align:center;line-height:1.6}

  /* ============ 账号下拉 ============ */
  .user-btn{
    height:34px;display:flex;align-items:center;gap:8px;padding:0 10px 0 6px;border-radius:9px;
    border:1px solid var(--line);background:#fff;cursor:pointer;transition:.16s;font-family:inherit;
  }
  .user-btn:hover{border-color:var(--brand-2);background:var(--brand-weak)}
  .user-btn .av{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;font-size:10.5px;font-weight:700;color:#fff;background:var(--avatar-grad)}
  .user-btn b{font-size:12px;font-weight:600;color:var(--txt)}
  .user-btn .caret{font-size:9px;color:var(--txt-3)}
  .user-menu{
    position:absolute;right:0;top:42px;width:236px;background:#fff;border:1px solid var(--line);
    border-radius:12px;box-shadow:var(--shadow-lg);padding:6px;display:none;z-index:60;
  }
  .user-menu.show{display:block}
  .user-menu .um-head{padding:9px 10px;border-bottom:1px solid var(--line-2);margin-bottom:6px}
  .user-menu .um-head b{font-size:12.5px;display:block}
  .user-menu .um-head span{font-size:11px;color:var(--txt-3)}
  .user-menu .um-item{
    display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;font-size:12.5px;
    color:var(--txt-2);cursor:pointer;transition:.16s;
  }
  .user-menu .um-item:hover{background:var(--brand-weak);color:var(--brand-ink)}
  .user-menu .um-item.on{background:var(--brand-weak);color:var(--brand-ink);font-weight:600}
  .user-menu .um-label{padding:8px 10px 4px;font-size:10.5px;color:var(--txt-3);letter-spacing:.5px}
  .user-menu .um-sep{height:1px;background:var(--line-2);margin:5px 6px}
  .user-menu .um-item.danger:hover{background:var(--red-weak);color:var(--red)}
  .um-dot{width:7px;height:7px;border-radius:50%;flex:0 0 7px}

  /* ============ 企业端 · 顶栏当前公司（占据原面包屑位置） ============ */
  .co-switch{position:relative;min-width:0}
  .co-menu{left:0;right:auto}
  .co-btn{
    height:34px;max-width:min(52vw,520px);display:flex;align-items:center;gap:8px;padding:0 8px 0 3px;
    border:1px solid transparent;border-radius:9px;background:transparent;cursor:default;
    transition:.16s;font-family:inherit;
  }
  .co-btn.switchable{cursor:pointer}
  .co-btn.switchable:hover{border-color:var(--line);background:var(--panel-2)}
  .co-btn .co-ico{display:grid;place-items:center;color:var(--end-ink);flex:0 0 auto}
  .co-btn b{
    font-size:14px;font-weight:700;letter-spacing:.2px;color:var(--txt);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:min(44vw,440px);
  }
  .co-btn .caret{font-size:9px;color:var(--txt-3);flex:0 0 auto}
  .co-btn:not(.switchable) .caret{display:none}
  .co-menu .um-item .co-meta{margin-left:auto;font-size:10px;color:var(--txt-3);white-space:nowrap}
  .co-pick{display:flex;flex-direction:column;gap:8px}
  .co-pick-item{
    width:100%;display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line);
    border-radius:10px;background:var(--panel-2);cursor:pointer;font-family:inherit;text-align:left;transition:.16s;
  }
  .co-pick-item:hover{border-color:var(--brand-2);background:var(--brand-weak)}
  .co-pick-item.on{border-color:var(--brand);background:var(--brand-weak)}
  .co-pick-av{
    width:32px;height:32px;border-radius:9px;display:grid;place-items:center;flex:0 0 32px;
    background:var(--end-soft);color:var(--end-ink);font-size:12px;font-weight:700;
  }
  .co-pick-main{min-width:0;flex:1}
  .co-pick-main b{display:block;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .co-pick-main span{display:block;font-size:10.5px;color:var(--txt-3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  @media (max-width:900px){.co-btn b{max-width:min(46vw,300px)}}

  /* ============ 上传 / 资料 ============ */
  .up-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:16px;align-items:start}
  .drop{
    border:1.6px dashed #c7d2e8;border-radius:14px;background:linear-gradient(180deg,#f8faff,#f2f6ff);
    padding:22px 18px;text-align:center;transition:.18s;cursor:pointer;
  }
  .drop:hover,.drop.over{border-color:var(--brand);background:var(--brand-weak)}
  .drop .d-ico{
    width:46px;height:46px;border-radius:14px;margin:0 auto 10px;display:grid;place-items:center;
    font-size:20px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);
  }
  .drop b{font-size:13.5px;display:block}
  .drop span{font-size:11.5px;color:var(--txt-3);display:block;margin-top:4px;line-height:1.6}
  .req-list{display:flex;flex-direction:column;gap:10px}
  .req{
    border:1px solid var(--line);border-radius:12px;padding:11px 12px;background:var(--panel-2);transition:.16s;
  }
  .req:hover{border-color:var(--brand-2);background:#fff}
  .req-top{display:flex;align-items:center;gap:8px}
  .req-top b{font-size:12.5px;font-weight:600}
  .req-top .must{font-size:10px;color:var(--red);background:var(--red-weak);padding:1px 6px;border-radius:20px;font-weight:700}
  .req-top .req-act{margin-left:auto;display:flex;gap:6px}
  .req-meta{font-size:11px;color:var(--txt-3);margin-top:5px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
  .req-files{margin-top:8px;display:flex;flex-direction:column;gap:5px}
  .rf{
    display:flex;align-items:center;gap:7px;font-size:11.5px;background:#fff;border:1px solid var(--line);
    border-radius:8px;padding:5px 8px;color:var(--txt-2);
  }
  .rf b{font-weight:600;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .rf .rf-tag{margin-left:auto;font-size:10px;white-space:nowrap}
  .rf i{
    width:18px;height:18px;border-radius:6px;display:grid;place-items:center;font-size:9.5px;
    font-weight:700;color:#fff;flex:0 0 18px;font-style:normal;
  }

  /* ============ 结果看板 ============ */
  .qual-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
  .qual{
    border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel-2);position:relative;overflow:hidden;
  }
  .qual .q-name{font-size:11.5px;color:var(--txt-2);font-weight:600}
  .qual .q-val{font-size:19px;font-weight:800;margin:5px 0 2px;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
  .qual .q-val small{font-size:11px;font-weight:600;color:var(--txt-3);margin-left:1px}
  .qual .q-val.txt{font-size:15px;letter-spacing:0}
  .kpi .val.long{font-size:26px;letter-spacing:-.5px;white-space:nowrap;line-height:34px;min-height:39px}
  .qual .q-req{font-size:10.5px;color:var(--txt-3)}
  .qual .q-badge{
    position:absolute;right:9px;top:9px;font-size:9.5px;font-weight:700;padding:1px 6px;border-radius:20px;
  }
  .qual.pass{background:linear-gradient(180deg,#f2fbf7,#fff);border-color:#cdece0}
  .qual.pass .q-val{color:var(--green)}
  .qual.pass .q-badge{background:var(--green-weak);color:var(--green)}
  .qual.warnq{background:linear-gradient(180deg,#fffaf0,#fff);border-color:#f3e3c2}
  .qual.warnq .q-val{color:#a9720a}
  .qual.warnq .q-badge{background:var(--amber-weak);color:#a9720a}
  .qual.fail{background:linear-gradient(180deg,#fef6f6,#fff);border-color:#f5d5d6}
  .qual.fail .q-val{color:var(--red)}
  .qual.fail .q-badge{background:var(--red-weak);color:var(--red)}
  .mit{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px dashed var(--line-2)}
  .mit:last-child{border-bottom:0}
  .mit .mdot{width:10px;height:10px;border-radius:50%;flex:0 0 10px}
  .mit .mtxt{flex:1;min-width:0}
  .mit .mtxt b{font-size:12.5px;display:block}
  .mit .mtxt span{font-size:11px;color:var(--txt-3)}
  .mit .mst{font-size:10.5px;font-weight:700;white-space:nowrap}

  /* ============ 管理后台 ============ */
  .adm-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
  /* 管理控制台 · 快捷入口（每个菜单为独立页面） */
  .adm-quick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:4px 16px 16px}
  .adm-qcard{
    display:flex;align-items:center;gap:12px;text-align:left;font-family:inherit;cursor:pointer;
    padding:14px 14px;border-radius:12px;border:1px solid var(--line);background:var(--panel-2);
    transition:.16s;
  }
  .adm-qcard:hover{border-color:var(--brand-2);background:var(--brand-weak);transform:translateY(-1px);box-shadow:var(--shadow)}
  .adm-qcard .fico svg{width:17px;height:17px}
  .adm-qcard .fico .nav-ico{display:block}
  .adm-q-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
  .adm-q-txt b{font-size:13px;font-weight:700;color:var(--txt)}
  .adm-q-txt span{font-size:11px;color:var(--txt-3);line-height:1.5}
  .adm-q-go{font-size:11.5px;font-weight:600;color:var(--brand-ink);opacity:.75;white-space:nowrap}
  .adm-qcard:hover .adm-q-go{opacity:1}
  /* 政策管理：筛选工具条 */
  .pol-tool{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
  .kpi[data-pol-kpi]{cursor:pointer}
  .kpi[data-pol-kpi].on{border-color:var(--brand-2);box-shadow:var(--shadow-lg);background:var(--brand-weak)}
  /* 账号管理：点击行编辑 + 多端开通 */
  .tbl tbody tr[data-acc-row]{cursor:pointer}
  .tbl tbody tr[data-acc-row]:hover{background:var(--brand-weak)}
  /* 执行端项目详情：项目列表台账（当前项目高亮 / 整行可点击） */
  .tbl tbody tr.is-cur{background:var(--brand-weak)}
  .tbl tbody tr[data-goto]{cursor:pointer}
  .tbl tbody tr[data-goto]:hover{background:var(--brand-weak)}
  .end-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
  .end-card{border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:var(--panel-2);transition:.16s}
  .end-card:hover{border-color:var(--brand-2)}
  .end-card.on{border-color:var(--brand-2);background:#fff;box-shadow:0 8px 20px -16px rgba(23,35,66,.6)}
  .end-card .end-head{display:flex;align-items:center;gap:8px;cursor:pointer}
  .end-card .end-head input{width:15px;height:15px;accent-color:var(--brand);cursor:pointer;flex:0 0 15px}
  .end-card .end-head b{font-size:12.5px;font-weight:700}
  .end-card .end-desc{font-size:10.5px;color:var(--txt-3);line-height:1.55;margin:7px 0 0;min-height:32px}
  .end-card .end-role{margin-top:9px}
  .end-card .end-role select{width:100%}
  .end-card:not(.on) .end-role{display:none}
  .end-card .end-fixed{margin-top:9px;font-size:11.5px;color:var(--txt-2);padding:7px 9px;border-radius:8px;background:var(--amber-weak);color:#a9720a;font-weight:600}
  .end-chip{font-size:10.5px;padding:2px 8px;border-radius:20px;font-weight:700;white-space:nowrap;display:inline-block}
  .end-chip.e-ent{background:var(--brand-weak);color:var(--brand-ink)}
  .end-chip.e-exec{background:var(--purple-weak);color:var(--purple)}
  .end-chip.e-admin{background:var(--amber-weak);color:#a9720a}
  .stat-bar{height:8px;border-radius:8px;background:var(--line-2);overflow:hidden;min-width:80px}
  .stat-bar i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,var(--brand),var(--cyan))}

  /* ============ 服务总体进度 · 时间标尺（上：时间刻度 / 中：进度条 / 下：任务节点） ============ */
  .tl-scroll{overflow-x:auto;overflow-y:hidden}
  .tl{min-width:700px;padding:0 62px}
  .tl-inner{position:relative}
  /* ① 时间刻度 */
  .tl-time{position:relative;height:44px}
  .tl-time .tk{position:absolute;bottom:0;transform:translateX(-50%);text-align:center;white-space:nowrap;
    font-size:10px;line-height:1.15;color:var(--txt-3);font-variant-numeric:tabular-nums}
  .tl-time .tk::after{content:"";display:block;width:1px;height:6px;background:var(--line);margin:4px auto 0}
  .tl-time .tk b{font-size:10.5px;font-weight:700;color:var(--txt-2)}
  .tl-today{position:absolute;top:0;transform:translateX(-50%);z-index:6;padding:1px 7px;border-radius:20px;
    font-size:9.5px;font-weight:700;color:#fff;background:#16305c;white-space:nowrap}
  .tl-today::after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);
    border:4px solid transparent;border-top-color:#16305c}
  /* ② 进度条 + 今天基准线 */
  .tl-bar{position:relative}
  .tl-nowline{position:absolute;top:-5px;bottom:-5px;width:1.5px;border-radius:2px;background:#16305c;opacity:.72;z-index:5}
  /* ③ 任务节点 */
  .tl-nodes{position:relative;height:88px;margin-top:12px}
  .tl-node{position:absolute;top:0;width:100px;margin-left:-50px;text-align:center}
  .tl-node.row-b{top:40px}
  .tl-node::before{content:"";position:absolute;left:50%;top:-12px;width:1px;height:12px;background:var(--line)}
  .tl-node.row-b::before{top:-52px;height:52px}
  .tl-node i{position:relative;z-index:2;display:block;width:10px;height:10px;margin:0 auto 5px;
    border-radius:50%;background:#fff;border:2px solid var(--line)}
  .tl-node em{position:relative;z-index:2;display:block;width:fit-content;margin:0 auto;padding:0 3px;
    background:var(--panel);font-style:normal;font-size:10.5px;font-weight:600;line-height:15px;color:var(--txt-3)}
  .tl-node b{position:relative;z-index:2;display:block;width:fit-content;margin:0 auto;padding:0 3px;
    background:var(--panel);font-size:9.5px;font-weight:400;line-height:13px;color:var(--txt-3);font-variant-numeric:tabular-nums}
  .tl-node.first em,.tl-node.first b{left:-30px}
  .tl-node.done::before{background:rgba(23,166,115,.45)}
  .tl-node.done i{border-color:var(--green);background:var(--green)}
  .tl-node.done em{color:var(--green)}
  .tl-node.now::before{background:rgba(var(--brand-rgb),.5)}
  .tl-node.now i{border-color:var(--brand-btn);background:var(--brand-btn);box-shadow:0 0 0 3px rgba(var(--brand-rgb),.16)}
  .tl-node.now em{color:var(--brand-ink)}
  /* 图例 */
  .tl-legend{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;margin-top:14px;
    font-size:10.5px;color:var(--txt-3)}
  .tl-legend em{font-style:normal;display:inline-flex;align-items:center;gap:5px}
  .tl-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#fff;border:2px solid var(--line)}
  .tl-legend i.done{border-color:var(--green);background:var(--green)}
  .tl-legend i.now{border-color:var(--brand-btn);background:var(--brand-btn)}
  .op-list{display:flex;flex-direction:column}
  .op{display:flex;gap:9px;padding:8px 2px;border-bottom:1px dashed var(--line-2);font-size:11.5px}
  .op:last-child{border-bottom:0}
  .op .op-t{color:var(--txt-3);white-space:nowrap;font-variant-numeric:tabular-nums}
  .op .op-c{flex:1;min-width:0}
  .op .op-c b{font-weight:600}
  .op .op-tag{font-size:10px;padding:1px 6px;border-radius:20px;background:var(--line-2);color:var(--txt-2);white-space:nowrap;height:fit-content}
  .op .op-tag.risk{background:var(--red-weak);color:var(--red)}
  .op .op-tag.ok{background:var(--green-weak);color:var(--green)}

  /* ============ 提示条 ============ */
  .toast{
    position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);
    background:#18233c;color:#fff;font-size:12.5px;padding:10px 18px;border-radius:11px;
    box-shadow:0 20px 40px -18px rgba(8,18,45,.8);opacity:0;pointer-events:none;transition:.22s;z-index:200;
  }
  .toast.show{opacity:1;transform:translate(-50%,0)}
  .toast b{color:#8ff0d8}

  /* ============ 弹窗 ============ */
  .modal{
    position:fixed;inset:0;z-index:120;display:none;align-items:center;justify-content:center;
    background:rgba(16,26,51,.5);backdrop-filter:blur(3px);padding:24px;overflow:auto;
  }
  .modal.show{display:flex}
  .modal-card{
    width:min(600px,100%);background:#fff;border-radius:16px;box-shadow:0 40px 90px -30px rgba(6,16,45,.7);
    display:flex;flex-direction:column;max-height:92vh;animation:pop .18s ease-out;
  }
  @keyframes pop{from{transform:translateY(10px) scale(.98);opacity:.6}to{transform:none;opacity:1}}
  .modal-head{display:flex;align-items:center;gap:10px;padding:15px 18px;border-bottom:1px solid var(--line-2)}
  .modal-head h3{font-size:14px;font-weight:700}
  .modal-head .mh-sub{font-size:11.5px;color:var(--txt-3)}
  .mh-x{
    margin-left:auto;width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:#fff;
    cursor:pointer;color:var(--txt-3);font-size:12px;font-family:inherit;transition:.16s;
  }
  .mh-x:hover{border-color:var(--red);color:var(--red);background:var(--red-weak)}
  .modal-body{padding:16px 18px;overflow-y:auto}
  .modal-foot{display:flex;align-items:center;gap:10px;padding:13px 18px;border-top:1px solid var(--line-2);background:var(--panel-2);border-radius:0 0 16px 16px}
  .picked{margin-top:10px;display:flex;flex-direction:column;gap:6px}
  .picked .rf{margin:0}

  /* ============ 资料类别汇总卡 ============ */
  .mat-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
  .mat{
    border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel-2);
    transition:.16s;position:relative;overflow:hidden;
  }
  .mat:hover{border-color:var(--brand-2);background:#fff;box-shadow:var(--shadow)}
  .mat .m-top{display:flex;align-items:center;gap:7px;min-width:0}
  .mat .m-ico{
    width:24px;height:24px;border-radius:7px;flex:0 0 24px;display:grid;place-items:center;font-size:12.5px;
    background:#fff;border:1px solid var(--line);
  }
  .mat b{font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mat .m-num{font-size:22px;font-weight:800;margin-top:9px;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
  .mat .m-num em{font-style:normal;font-size:11.5px;font-weight:600;color:var(--txt-3);margin-left:2px}
  .mat .m-sub{font-size:10.5px;color:var(--txt-3);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mat.risk{border-color:#f3d6d7;background:linear-gradient(180deg,#fef6f6,#fff)}
  .mat.risk .m-num{color:var(--red)}
  .mat.risk .m-ico{background:var(--red-weak);border-color:transparent;color:var(--red)}
  .mat.warnq{background:linear-gradient(180deg,#fffaf0,#fff)}
  .mat.warnq .m-num{color:#a9720a}
  @media (max-width:1420px){ .mat-grid{grid-template-columns:repeat(4,minmax(0,1fr))} }
  @media (max-width:1100px){ .mat-grid{grid-template-columns:repeat(2,minmax(0,1fr))} }

  /* ============ 一行式通知 ============ */
  .notice{display:flex;align-items:center;gap:10px}
  .notice .n-ico{
    width:26px;height:26px;border-radius:8px;flex:0 0 26px;display:grid;place-items:center;
    background:var(--amber-weak);color:#a9720a;font-size:13px;
  }
  .notice .n-txt{flex:1;min-width:0;font-size:12.5px;color:var(--txt-2);line-height:1.6}
  .notice .n-txt b{color:var(--txt);font-weight:700}

  /* ============ 补充提示清单（每条提示前显示紧急程度等级） ============ */
  .n-list{display:flex;flex-direction:column;gap:8px}
  .n-row{
    display:flex;align-items:center;gap:10px;padding:9px 11px;
    border:1px solid var(--line);border-radius:10px;background:var(--panel-2);
  }
  .n-row .n-lvl{
    flex:0 0 auto;font-size:10.5px;font-weight:700;line-height:1.5;
    padding:2px 8px;border-radius:6px;white-space:nowrap;
  }
  .n-row .n-body{flex:1;min-width:0;display:flex;align-items:center;gap:14px}
  .n-row .n-txt{flex:1;min-width:0;font-size:12.5px;color:var(--txt-2);line-height:1.6}
  .n-row .n-txt b{color:var(--txt);font-weight:700}
  .n-row .n-meta{flex:0 0 auto;font-size:11px;color:var(--txt-3);white-space:nowrap;text-align:right}
  .n-row.lv1{border-color:#f3d6d7;background:linear-gradient(180deg,#fef6f6,#fff)}
  .n-row.lv1 .n-lvl{background:var(--red-weak);color:var(--red)}
  .n-row.lv1 .n-txt b{color:var(--red)}
  .n-row.lv2{border-color:rgba(232,163,23,.28);background:linear-gradient(180deg,#fffaf0,#fff)}
  .n-row.lv2 .n-lvl{background:var(--amber-weak);color:#a9720a}
  .n-row.lv2 .n-txt b{color:#a9720a}
  .n-row.lv3 .n-lvl{background:var(--brand-weak);color:var(--brand-ink)}

  /* ============ 问题工单 ============ */
  .tk-open-link{background:none;border:0;padding:0;font-family:inherit;font-size:12.5px;font-weight:600;color:var(--txt);
    text-align:left;cursor:pointer;line-height:1.5}
  .tk-open-link:hover{color:var(--brand-ink);text-decoration:underline}
  .tk-m-title{font-size:14px;font-weight:800;line-height:1.55;margin-bottom:12px}
  .tk-meta-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
  .tk-meta-grid .tm-cell{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--panel-2);min-width:0}
  .tk-meta-grid .tm-cell span{font-size:10.5px;color:var(--txt-3);display:block}
  .tk-meta-grid .tm-cell b{font-size:12.5px;font-weight:700;display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .tk-q-body{border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:10px;padding:11px 13px;background:var(--panel-2)}
  .tk-q-body .q-lb{font-size:10.5px;font-weight:700;color:var(--brand-ink);letter-spacing:.4px;margin-bottom:5px}
  .tk-q-body p{font-size:12.5px;color:var(--txt-2);line-height:1.75;white-space:pre-wrap}
  .tk-thread{display:flex;flex-direction:column;gap:12px;margin:14px 0 4px}
  .tk-msg{display:flex;gap:9px;align-items:flex-start}
  .tk-msg .tk-av{width:30px;height:30px;flex:0 0 30px;border-radius:9px;display:grid;place-items:center;color:#fff;font-size:11px;font-weight:700}
  .tk-msg .tk-main{flex:1;min-width:0}
  .tk-msg .tk-top{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;margin-bottom:4px}
  .tk-msg .tk-top b{font-size:12.5px;font-weight:700}
  .tk-msg .tk-top .tk-role{font-size:10px;padding:1px 7px;border-radius:20px;font-weight:700}
  .tk-msg .tk-top time{margin-left:auto;font-size:10.5px;color:var(--txt-3);white-space:nowrap}
  .tk-msg .tk-bubble{border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:12.5px;line-height:1.7;
    color:var(--txt-2);background:#fff;white-space:pre-wrap;word-break:break-word}
  .tk-msg.staff .tk-bubble{background:var(--brand-weak);border-color:rgba(var(--brand-rgb),.2);color:var(--txt)}
  .tk-msg.staff .tk-av{background:var(--purple)}
  .tk-msg.ent .tk-av{background:var(--brand-btn)}
  .tk-msg.sys{justify-content:center}
  .tk-msg.sys .tk-bubble{background:var(--line-2);border-style:dashed;font-size:11px;color:var(--txt-3);border-radius:20px;padding:4px 12px}
  .tk-reply{border-top:1px dashed var(--line);padding-top:12px;margin-top:4px}
  .tk-quick{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
  .tk-quick button{
    font-family:inherit;font-size:11px;padding:3px 9px;border-radius:20px;cursor:pointer;
    border:1px dashed var(--line);background:var(--panel-2);color:var(--txt-2);transition:.16s;
  }
  .tk-quick button:hover{border-color:var(--brand-2);color:var(--brand-ink);background:var(--brand-weak);border-style:solid}
  .tk-faq{display:flex;flex-direction:column;gap:8px}
  .tk-faq .f-row{
    display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--line);
    border-radius:10px;background:var(--panel-2);transition:.16s;
  }
  .tk-faq .f-row:hover{border-color:var(--brand-2);background:#fff;box-shadow:var(--shadow)}
  .tk-faq .f-q{flex:1;min-width:0;font-size:12.5px;font-weight:600}
  .tk-faq .f-q span{display:block;font-weight:400;font-size:11px;color:var(--txt-3);margin-top:2px}
  @media (max-width:1100px){ .tk-meta-grid{grid-template-columns:repeat(2,minmax(0,1fr))} }

  /* ============ 模板知识库（协同端） ============ */
  .tpl-bar{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line-2);flex-wrap:wrap}
  .tpl-bar .filters{flex:1;min-width:0}
  .tpl-name{font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:6px}
  .tpl-desc{font-size:11px;color:var(--txt-3);margin-top:3px;line-height:1.55}
  .tpl-star{cursor:pointer;user-select:none;font-size:14px;line-height:1;color:#d3daea;transition:.16s}
  .tpl-star.on{color:#e8a317}
  .tpl-star:hover{transform:scale(1.16)}
  .tpl-act{display:flex;gap:6px;justify-content:flex-end;align-items:center}
  .tpl-kv{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;align-items:center}
  .tpl-kv span{font-size:11px;padding:4px 9px;border-radius:20px;background:var(--panel-2);
    border:1px solid var(--line);color:var(--txt-2);display:inline-flex;align-items:center;gap:5px}
  .tpl-kv span b{color:var(--txt);font-weight:600}
  .tpl-body{white-space:pre-wrap;font-size:12.5px;line-height:1.8;color:var(--txt-2);
    background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:12px 14px;
    max-height:44vh;overflow:auto}
  /* 文件格式图标：按格式着色的文件形状徽标（PDF / DOCX / XLSX …） */
  .fmt-ico{
    --c:#5b6b8c;
    position:relative;width:28px;height:34px;border-radius:4px;display:inline-grid;place-items:center;
    background:var(--c);color:#fff;font-size:8px;font-weight:800;letter-spacing:.2px;padding-top:2px;
    clip-path:polygon(0 0,72% 0,100% 24%,100% 100%,0 100%);
  }
  .fmt-ico::after{
    content:"";position:absolute;right:0;top:0;width:28%;height:24%;
    background:rgba(255,255,255,.42);
    clip-path:polygon(0 0,100% 100%,0 100%);
  }
  .fmt-ico.sm{width:17px;height:21px;font-size:6px;border-radius:3px;padding-top:1px}
  .fmt-ico.pdf{--c:#e0474c}
  .fmt-ico.doc{--c:#2f5bea}
  .fmt-ico.xls{--c:#17a673}
  .fmt-ico.ppt{--c:#e08a17}
  .fmt-ico.zip{--c:#7b5cf0}

  /* ============ AI 协同（执行端 · 左：AI 协同记录 / 右：AI 助手对话） ============ */
  /* 左栏记录表窄一些，右栏对话宽一些；两栏拉伸到同一高度 */
  .dash.dash-ai{align-items:stretch;grid-template-columns:1fr 1.3fr}
  .dash.dash-ai .dash-l > .card,
  .dash.dash-ai .dash-r > .card{flex:1;display:flex;flex-direction:column;min-height:0}
  .dash.dash-ai .dash-l .tbl-wrap{flex:1;min-height:0}
  .dash.dash-ai .dash-l .card-body{margin-top:auto}
  /* 记录分页条放在表格上方 */
  .pager.pager-top{border-top:0;border-bottom:1px solid var(--line-2);padding:10px 16px}
  .ai-chat-card{display:flex;flex-direction:column;overflow:hidden}
  /* 右栏较窄：卡片头部允许换行，标题不折行，上下文说明超长省略 */
  .ai-chat-card .card-head{flex-wrap:wrap;row-gap:8px}
  .ai-chat-card .card-head h3{white-space:nowrap}
  .ai-chat-card .card-head .sub{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ai-ctx{
    height:28px;max-width:190px;border-radius:7px;border:1px solid var(--line);background:var(--panel-2);
    font-family:inherit;font-size:11.5px;color:var(--txt-2);padding:0 7px;outline:none;cursor:pointer;
  }
  .ai-ctx:focus{border-color:var(--brand-2);background:#fff}
  /* 对话内容框：加高，并随右栏高度自适应拉伸 */
  .ai-msgs{
    flex:1;min-height:540px;overflow-y:auto;padding:14px 16px;
    display:flex;flex-direction:column;gap:14px;background:var(--panel-2);
  }
  .ai-msg{display:flex;gap:10px;align-items:flex-start}
  .ai-msg .ai-avt{
    width:30px;height:30px;flex:0 0 30px;border-radius:9px;display:grid;place-items:center;
    font-size:13px;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--brand),var(--cyan));
  }
  .ai-msg.me{flex-direction:row-reverse}
  .ai-msg.me .ai-avt{background:var(--purple)}
  .ai-msg .ai-body{max-width:88%;min-width:0}
  .ai-msg .ai-who{font-size:10.5px;color:var(--txt-3);margin-bottom:4px;display:flex;gap:7px;align-items:center}
  .ai-msg.me .ai-who{justify-content:flex-end}
  .ai-bubble{
    border:1px solid var(--line);background:#fff;border-radius:11px;padding:10px 13px;
    font-size:12.5px;line-height:1.75;color:var(--txt-2);word-break:break-word;
  }
  .ai-msg.me .ai-bubble{background:var(--brand-weak);border-color:rgba(var(--brand-rgb),.2);color:var(--txt)}
  .ai-bubble b{color:var(--txt);font-weight:700}
  .ai-bubble ol,.ai-bubble ul{margin:6px 0 0;padding-left:19px}
  .ai-bubble li{margin-bottom:4px}
  .ai-bubble code{
    font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;
    background:var(--line-2);border-radius:5px;padding:1px 5px;
  }
  .ai-src{margin-top:9px;padding-top:8px;border-top:1px dashed var(--line);display:flex;flex-wrap:wrap;gap:5px;align-items:center}
  .ai-src span{font-size:10.5px;color:var(--txt-3)}
  .ai-src i{
    font-style:normal;font-size:10.5px;padding:2px 7px;border-radius:20px;
    background:var(--panel-2);border:1px solid var(--line);color:var(--txt-2);
  }
  .ai-acts{margin-top:9px;display:flex;gap:6px;flex-wrap:wrap}
  .ai-typing{display:inline-flex;gap:4px;align-items:center;padding:12px 14px}
  .ai-typing i{width:6px;height:6px;border-radius:50%;background:var(--brand-2);animation:aiDot 1s infinite}
  .ai-typing i:nth-child(2){animation-delay:.16s}
  .ai-typing i:nth-child(3){animation-delay:.32s}
  @keyframes aiDot{0%,100%{opacity:.28;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}

  .ai-quick{display:flex;gap:6px;flex-wrap:wrap;padding:11px 16px 0;border-top:1px solid var(--line-2)}
  .ai-quick button{
    font-family:inherit;font-size:11px;padding:4px 10px;border-radius:20px;cursor:pointer;
    border:1px dashed var(--line);background:var(--panel-2);color:var(--txt-2);transition:.16s;
  }
  .ai-quick button:hover{border-color:var(--brand-2);color:var(--brand-ink);background:var(--brand-weak);border-style:solid}
  .ai-input{padding:11px 16px 14px}
  .ai-input textarea{
    width:100%;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);
    padding:9px 11px;font-family:inherit;font-size:12.5px;color:var(--txt);line-height:1.6;
    resize:vertical;outline:none;transition:.16s;
  }
  .ai-input textarea:focus{border-color:var(--brand-2);background:#fff;box-shadow:0 0 0 3px rgba(var(--brand-rgb),.1)}
  .ai-input-foot{display:flex;align-items:center;gap:10px;margin-top:8px}
  .ai-input-foot .ai-tip{font-size:11px;color:var(--txt-3);flex:1;min-width:0;line-height:1.5}
  /* 待发送附件（由项目详情 · 资料清单「AI协同」带入） */
  .ai-attach{display:none;flex-wrap:wrap;gap:6px;margin-bottom:8px}
  .ai-attach.on{display:flex}
  .ai-attach .ai-att{
    display:inline-flex;align-items:center;gap:7px;max-width:100%;font-size:11.5px;
    padding:5px 6px 5px 9px;border-radius:9px;background:var(--brand-weak);
    border:1px solid rgba(var(--brand-rgb),.22);color:var(--brand-ink);
  }
  .ai-attach .ai-att .fico{width:20px;height:20px;flex:0 0 20px;border-radius:6px;box-shadow:none}
  .ai-attach .ai-att .fico svg{width:12px;height:12px}
  .ai-attach .ai-att b{font-weight:600;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ai-attach .ai-att em{font-style:normal;font-size:10.5px;color:var(--txt-3);white-space:nowrap}
  .ai-attach .ai-att button{
    border:0;background:transparent;cursor:pointer;font-family:inherit;font-size:13px;line-height:1;
    color:var(--txt-3);padding:0 2px;border-radius:4px;
  }
  .ai-attach .ai-att button:hover{color:var(--red);background:rgba(224,71,76,.1)}
  /* 对话气泡内的附件 */
  .ai-files{margin-top:9px;display:flex;flex-wrap:wrap;gap:6px}
  .ai-files .ai-file{
    display:inline-flex;align-items:center;gap:6px;font-size:10.5px;padding:3px 9px 3px 7px;
    border-radius:20px;background:var(--brand-weak);border:1px solid rgba(var(--brand-rgb),.22);color:var(--brand-ink);
    max-width:100%;
  }
  .ai-files .ai-file .fico{width:16px;height:16px;flex:0 0 16px;border-radius:5px;box-shadow:none}
  .ai-files .ai-file .fico svg{width:10px;height:10px}
  .ai-files .ai-file b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}

  /* ---- 协同记录 ---- */
  .ai-agent-chip{
    font-size:10px;padding:2px 7px;border-radius:20px;font-weight:700;white-space:nowrap;
    background:var(--purple-weak);color:var(--purple);display:inline-block;
  }
  .ai-empty{padding:26px 10px;text-align:center;font-size:12px;color:var(--txt-3)}
  @media (max-width:1100px){ .ai-msg .ai-body{max-width:100%} }

  /* ============ 页面切换 ============ */
  .page{display:none;flex-direction:column;gap:16px}
  .page.active{display:flex}
  .role-chip{font-size:10.5px;padding:3px 9px;border-radius:20px;font-weight:700;white-space:nowrap}
  .rc-ent{background:var(--brand-weak);color:var(--brand-ink)}
  .rc-staff{background:var(--purple-weak);color:var(--purple)}
  .rc-admin{background:var(--amber-weak);color:#a9720a}
  .info-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
  .info-cell{border:1px solid var(--line);border-radius:11px;padding:10px 12px;background:var(--panel-2)}
  .info-cell span{font-size:11px;color:var(--txt-3)}
  .info-cell b{font-size:14px;font-weight:700;display:block;margin-top:3px}
  .step-list{display:flex;flex-direction:column;gap:2px}
  .step-list .step{display:flex;gap:10px;align-items:flex-start;padding:8px 0}
  .step-list .step .sno{
    width:20px;height:20px;border-radius:50%;flex:0 0 20px;display:grid;place-items:center;
    font-size:10.5px;font-weight:700;background:var(--line-2);color:var(--txt-3);
  }
  .step-list .step.done .sno{background:var(--green);color:#fff}
  .step-list .step.now .sno{background:var(--brand-btn);color:#fff;box-shadow:0 0 0 4px rgba(var(--brand-rgb),.16)}
  .step-list .step .stxt b{font-size:12.5px;display:block}
  .step-list .step .stxt span{font-size:11px;color:var(--txt-3)}

  /* ==================================================================
     三端主题：企业端（浅·企业青 #3DB8DC） / 执行端（中·深紫） / 管理端（深绿·鎏金）
     靠「色相 + 明暗深度」双重区分，一眼可辨当前所在端。
     ================================================================== */

  /* ---------------- ① 企业端 · 企业用户（最浅） ---------------- */
  body[data-end="ent"]{
    --bg:#eef4fd;
    --panel:#ffffff;
    --panel-2:#f7faff;
    --line:#e1e9f7;
    --line-2:#edf3fc;
    --txt:#16233c;
    --txt-2:#54637f;
    --txt-3:#8b98b0;
    --brand:#3DB8DC;                /* 大色：企业端主色 */
    --brand-rgb:61,184,220;
    --brand-weak:#e2f6fb;
    --brand-2:#6fcbe6;
    --brand-grad-2:#63c6e4;
    --brand-ink:#0c6c88;            /* 文字档：白底/浅底可读 */
    --brand-btn:#0f7f9e;            /* 实底档：承载白字 */
    --brand-btn-2:#1498bd;
    --cyan:#0f7f9e;
    --end-accent:#3DB8DC;
    --brand-name:#0A6B4D;           /* 浅青侧边栏：用深青绿保证可读 */
    --end-soft:#e2f6fb;
    --end-ink:#0c6c88;
    --end-border:rgba(61,184,220,.38);
    --topbar-bg:rgba(255,255,255,.92);
    --hero-grad:linear-gradient(120deg,#0b3f57 0%,#2a9fc4 55%,#3DB8DC 100%);
    --avatar-grad:linear-gradient(135deg,#6fcbe6,#3DB8DC);
    --heat-1:#d3f0f9; --heat-2:#a2e0f0; --heat-3:#63c9e4; --heat-4:#3DB8DC; --heat-1-txt:#0c6c88;
    /* 企业青侧边栏：比执行端浅、比白底重，色相上一眼是"企业端" */
    --side-bg:linear-gradient(180deg,#93dcef 0%,#74cee7 52%,#57c2de 100%);
    --side-txt:#06384a;
    --side-hover-txt:#02222e;
    --side-txt-sub:#125c74;
    --side-muted:#1d6b83;
    --side-title:#042c3b;
    --side-sub:#145e77;
    --side-group:#1f6d86;
    --side-hover:rgba(255,255,255,.62);
    --side-line:rgba(255,255,255,.55);
    --side-soft:#ffffff;
    --side-badge-bg:#ffffff;
    --side-badge-txt:#0c6c88;
    --side-badge-bg-on:rgba(255,255,255,.26);
    --side-active-bg:linear-gradient(90deg,#0b6d8c,#128fb4);
    --side-active-shadow:0 10px 22px -10px rgba(4,52,68,.85);
    --side-sub-active-bg:rgba(255,255,255,.58);
    --side-switch:#1d6b83;
    --side-edge:rgba(4,52,68,.35);
  }

  /* ---------------- ② 执行端 · 数据专员/方案专家（居中偏深） ---------------- */
  body[data-end="exec"]{
    --bg:#eef0f8;
    --panel:#ffffff;
    --panel-2:#f8f8fd;
    --line:#e5e5f2;
    --line-2:#eeeefa;
    --txt:#1e1c33;
    --txt-2:#575474;
    --txt-3:#8b88a6;
    --brand:#6a55e6;
    --brand-rgb:106,85,230;
    --brand-weak:#efecfe;
    --brand-2:#8b78f0;
    --brand-grad-2:#8b78f0;
    --brand-ink:#6a55e6;
    --brand-btn:#6a55e6;
    --brand-btn-2:#8b78f0;
    --cyan:#12b5c9;
    --end-accent:#6a55e6;
    --brand-name:#3BD9A8;           /* 深色侧边栏：用亮青绿保证可读 */
    --end-soft:#efecfe;
    --end-border:rgba(106,85,230,.28);
    --topbar-bg:rgba(255,255,255,.9);
    --hero-grad:linear-gradient(120deg,#1a1740 0%,#3b2f8f 45%,#6a55e6 100%);
    --avatar-grad:linear-gradient(135deg,#8b78f0,#6a55e6);
    --heat-1:#e0daff; --heat-2:#b5a6f8; --heat-3:#8b78f0; --heat-4:#6a55e6; --heat-1-txt:#5b46c9;
    /* 深墨紫侧边栏 */
    --side-bg:linear-gradient(180deg,#0f0d24 0%,#1a1740 60%,#151235 100%);
    --side-txt:#c6c2e2;
    --side-hover-txt:#ffffff;
    --side-txt-sub:#a9a4cc;
    --side-muted:#8b86b5;
    --side-title:#ffffff;
    --side-sub:#7d78a8;
    --side-group:#6a6592;
    --side-hover:rgba(255,255,255,.07);
    --side-line:rgba(255,255,255,.08);
    --side-soft:rgba(255,255,255,.06);
    --side-badge-bg:rgba(139,120,240,.22);
    --side-badge-txt:#cfc6ff;
    --side-badge-bg-on:rgba(255,255,255,.26);
    --side-active-bg:linear-gradient(90deg,rgba(106,85,230,.96),rgba(139,120,240,.5));
    --side-active-shadow:0 8px 18px -10px rgba(106,85,230,1);
    --side-sub-active-bg:rgba(255,255,255,.09);
    --side-switch:#8b86b5;
    --side-edge:rgba(0,0,0,.3);
  }

  /* ---------------- ③ 管理端 · 超级管理员（最深） ---------------- */
  body[data-end="admin"]{
    --bg:#e5e7ec;
    --panel:#ffffff;
    --panel-2:#fafafb;
    --line:#dbdee5;
    --line-2:#ebecef;
    --txt:#1b1d22;
    --txt-2:#53575f;
    --txt-3:#8a8e96;
    --brand:#b07a0c;
    --brand-rgb:176,122,12;
    --brand-weak:#fdf3e0;
    --brand-2:#d99f22;
    --brand-grad-2:#d99f22;
    --brand-ink:#b07a0c;
    --brand-btn:#b07a0c;
    --brand-btn-2:#d99f22;
    --cyan:#d99f22;
    --end-accent:#c9901a;
    --brand-name:#3BD9A8;           /* 深色侧边栏：用亮青绿保证可读 */
    --end-soft:#fdf3e0;
    --end-border:rgba(176,122,12,.32);
    --topbar-bg:rgba(252,252,253,.92);
    --hero-grad:linear-gradient(120deg,#14161a 0%,#3a3222 45%,#b07a0c 100%);
    --avatar-grad:linear-gradient(135deg,#d99f22,#a86f08);
    --heat-1:#f6e6c2; --heat-2:#eccb84; --heat-3:#d99f22; --heat-4:#b07a0c; --heat-1-txt:#8a6208;
    /* 深绿侧边栏（墨绿底 + 鎏金点缀） */
    --side-bg:linear-gradient(180deg,#052a1f 0%,#0b3d2c 58%,#082f22 100%);
    --side-txt:#c3d8cd;
    --side-hover-txt:#ffffff;
    --side-txt-sub:#a5c3b5;
    --side-muted:#87a99a;
    --side-title:#ffffff;
    --side-sub:#7ea394;
    --side-group:#6b907f;
    --side-hover:rgba(255,255,255,.08);
    --side-line:rgba(255,255,255,.10);
    --side-soft:rgba(255,255,255,.07);
    --side-badge-bg:rgba(217,159,34,.20);
    --side-badge-txt:#eccb84;
    --side-badge-bg-on:rgba(255,255,255,.26);
    --side-active-bg:linear-gradient(90deg,rgba(176,122,12,.96),rgba(217,159,34,.45));
    --side-active-shadow:0 8px 18px -10px rgba(217,159,34,.95);
    --side-sub-active-bg:rgba(255,255,255,.10);
    --side-switch:#87a99a;
    --side-edge:rgba(3,28,20,.55);
  }

  /* 浅色侧边栏下，导航徽标/图标略作加深，保证对比度 */
  body[data-end="ent"] .nav-item.active .nav-badge{background:rgba(255,255,255,.28);color:#fff}
  body[data-end="ent"] .side-end{background:#06384a;color:#fff;box-shadow:0 8px 16px -10px rgba(3,30,40,.9)}
  body[data-end="ent"] .side-end i{background:#3DB8DC}
  body[data-end="ent"] .logo-mark{box-shadow:0 0 0 1px rgba(61,184,220,.22), 0 10px 20px -10px rgba(3,40,55,.45)}
  body[data-end="ent"] .side-user{box-shadow:0 4px 12px -6px rgba(3,40,55,.55)}
  body[data-end="ent"] .nav-item.active{color:#fff}
  body[data-end="ent"] .nav-item .nav-ico{opacity:1}

  /* 登录页：三种演示账号按钮直接预览三端配色 */
  .acc-quick button[data-acc="qiye"]{border-color:rgba(61,184,220,.55);background:#e6f7fc;color:#0c6c88}
  .acc-quick button[data-acc="zhixing"]{border-color:rgba(106,85,230,.4);background:#f0edfe;color:#5a45d8}
  .acc-quick button[data-acc="admin"]{border-color:rgba(176,122,12,.42);background:#fdf5e4;color:#96680c}
  .acc-quick button[data-acc="qiye"]:hover{background:#0f7f9e;border-color:#0f7f9e;color:#fff}
  .acc-quick button[data-acc="zhixing"]:hover{background:#6a55e6;border-color:#6a55e6;color:#fff}
  .acc-quick button[data-acc="admin"]:hover{background:#b07a0c;border-color:#b07a0c;color:#fff}
  .lb-list li:nth-child(1) i{color:#3DB8DC}
  .lb-list li:nth-child(2) i{color:#a58ef6}
  .lb-list li:nth-child(3) i{color:#e8b93f}

  @media (max-width:1420px){
    .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
    .kpis.k3{grid-template-columns:repeat(3,minmax(0,1fr))}
    .kpis.k4{grid-template-columns:repeat(2,minmax(0,1fr))}
    .setup-grid{grid-template-columns:1fr}
    .two-col{grid-template-columns:1fr}
    .dash{grid-template-columns:1fr}
    .dash.dash-ai{grid-template-columns:1fr 1.3fr}
    .week{grid-template-columns:repeat(4,1fr)}
    .kpi .val.long{font-size:21px}
    .qual-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
    .adm-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
    .info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  }
  @media (max-width:1100px){
    :root{--sidebar-w:64px}
    .logo-txt,.nav-item span:not(.nav-ico):not(.nav-badge),.side-user div,.nav-group,.side-end span{display:none}
    .side-end{justify-content:center;padding:6px 0}
    .nav-item{justify-content:center}
    .nav-item.sub{padding-left:10px}
    .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
    .kpis.k3{grid-template-columns:repeat(2,minmax(0,1fr))}
    .kpis.k4{grid-template-columns:repeat(2,minmax(0,1fr))}
    .kpi .val.long{font-size:18px}
    .hero{flex-direction:column;align-items:flex-start}
    .hero-r{margin-left:0;width:100%;flex-wrap:wrap}
    .week{grid-template-columns:repeat(2,1fr)}
    .dash{grid-template-columns:1fr}
    .dash.dash-ai{grid-template-columns:1fr}
    .login-box{grid-template-columns:1fr}
    .login-brand{display:none}
    .up-grid{grid-template-columns:1fr}
    .qual-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .adm-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
    .adm-quick{grid-template-columns:1fr}
    .end-grid{grid-template-columns:1fr}
    .end-pill{display:none}
  }

/* ==========================================================================
   研值云图 · 实施版补充样式（复用原型设计令牌）
   ========================================================================== */
.page-head{display:flex;align-items:flex-start;gap:12px;margin:2px 2px -2px;flex-wrap:wrap}
.page-head h1{font-size:19px;font-weight:800;letter-spacing:-.2px;line-height:1.35}
.page-head p{font-size:12px;color:var(--txt-3);margin-top:4px;max-width:760px;line-height:1.65}
.page-head .ph-actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.section-title{display:flex;align-items:baseline;gap:10px;margin:2px 2px 0;flex-wrap:wrap}
.section-title h2{font-size:15px;font-weight:800;letter-spacing:.2px}
.section-title span{font-size:11.5px;color:var(--txt-3)}
.section-title .r{margin-left:auto;font-size:11.5px;color:var(--txt-3)}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}
.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;align-items:start}
.stack{display:flex;flex-direction:column;gap:16px}
.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.row-between{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}
.fs11{font-size:11px}.fs12{font-size:12px}.txt3{color:var(--txt-3)}.txt2{color:var(--txt-2)}
.strong{font-weight:700}.num{font-variant-numeric:tabular-nums}
.empty{padding:34px 16px;text-align:center;color:var(--txt-3);font-size:12.5px;line-height:1.7}
.empty .e-ico{width:44px;height:44px;border-radius:14px;background:var(--panel-2);border:1px dashed var(--line);display:grid;place-items:center;margin:0 auto 10px;font-size:20px;color:#aab4c7}
.loading{padding:46px;text-align:center;color:var(--txt-3);font-size:12.5px}
.loading i{display:inline-block;width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-3px;margin-right:7px}
@keyframes spin{to{transform:rotate(360deg)}}
.fade-in{animation:fadeIn .24s ease both}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* 登录页补充 */
.login .login-brand .lb-logo{display:flex;align-items:center;gap:11px}
.login .login-back{font-size:11.5px;color:var(--txt-3);cursor:pointer;display:inline-flex;gap:5px;align-items:center;margin-bottom:2px}
.login .login-back:hover{color:var(--brand-ink)}

/* 官网补充 */
.site .sn-menu button.on{color:var(--brand-ink);background:var(--brand-weak)}
.site .ql-card .ql-form{gap:10px}
.site .hero-site{padding-top:64px}
.site .pol-filter-bar{margin-bottom:14px}
.site .policy-source{font-size:10.5px;color:var(--txt-3);margin-top:10px;line-height:1.6}
.site .home-policy-more{text-align:center;margin-top:22px}
.site .scene svg{width:15px;height:15px}
.site .feat .fi svg{width:22px;height:22px}
.site .site-foot a{color:inherit;text-decoration:none}
.site .foot-contact{font-size:12px;line-height:2}
.site .pol-detail h1{font-size:22px;line-height:1.5;margin-bottom:12px}
.site .pol-detail .meta{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--txt-3);margin-bottom:18px}
.site .pol-detail .body{font-size:13px;line-height:1.95;color:var(--txt-2);white-space:pre-wrap}
.site .pol-detail{padding:34px 38px;background:#fff;border:1px solid var(--line);border-radius:16px}

/* 通用表格操作 */
.row-act{display:flex;gap:4px;justify-content:flex-end;flex-wrap:wrap}
.link-btn{background:none;border:0;padding:0;font-family:inherit;font-size:12px;font-weight:600;color:var(--brand-ink);cursor:pointer}
.link-btn:hover{text-decoration:underline}
.link-btn.danger{color:var(--red)}
.link-btn.muted{color:var(--txt-3);font-weight:500}
.link-btn:disabled{color:var(--txt-3);cursor:not-allowed;text-decoration:none}
.cell-main{font-weight:600;font-size:12.5px}
.cell-sub{display:block;font-size:11px;color:var(--txt-3);margin-top:2px;line-height:1.45}
.filters .filter{height:28px}
.filter-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line-2);background:var(--panel-2);border-radius:var(--radius) var(--radius) 0 0}
.filter-bar .field{height:32px;font-size:12px}
.filter-bar .grow{flex:1;min-width:160px;max-width:320px}
.filter-bar .tip{margin-left:auto;font-size:11px;color:var(--txt-3)}

/* 徽标与状态补充 */
.tag.reject,.tag.back{background:var(--red-weak);color:var(--red)}
.tag.expired{background:#f1f4fa;color:var(--txt-3)}
.tag.urgent{background:var(--red-weak);color:var(--red)}
.tag.soon{background:var(--amber-weak);color:#a9720a}
.tag.hot{background:var(--red-weak);color:var(--red)}
.dot-sep{color:var(--txt-3);opacity:.6}

/* 概览卡片 */
.overview-hero{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center;background:linear-gradient(115deg,#172344 0%,#22386b 52%,var(--brand) 120%);color:#fff;border-radius:var(--radius);padding:20px 22px;position:relative;overflow:hidden;box-shadow:var(--shadow)}
.overview-hero::after{content:"";position:absolute;right:-50px;top:-80px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.15),transparent 68%)}
.overview-hero h2{font-size:17px;font-weight:800;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.overview-hero p{font-size:12.5px;color:#c6d3ec;margin-top:6px;line-height:1.7;max-width:720px}
.overview-hero .oh-side{display:flex;gap:10px;align-items:center;position:relative;z-index:1}
.overview-hero .btn{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.24);color:#fff}
.overview-hero .btn.primary{background:#fff;color:var(--brand-ink);border-color:transparent}
.overview-hero .btn:hover{background:rgba(255,255,255,.22);color:#fff}
.overview-hero .btn.primary:hover{background:#f2f5ff;color:var(--brand-ink)}

/* 项目卡 */
.project-card{border:1px solid var(--line);border-radius:12px;padding:13px 14px;background:var(--panel);transition:.16s;cursor:pointer}
.project-card:hover{border-color:var(--brand-2);box-shadow:var(--shadow);transform:translateY(-1px)}
.project-card .pc-top{display:flex;align-items:flex-start;gap:10px}
.project-card h4{font-size:13px;font-weight:700;line-height:1.45}
.project-card .pc-code{font-size:10.5px;color:var(--brand-ink);font-weight:700;letter-spacing:.2px}
.project-card .pc-meta{font-size:11px;color:var(--txt-3);margin-top:5px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.project-card .pc-foot{display:flex;align-items:center;gap:10px;margin-top:11px}
.project-card .pc-foot .bar{flex:1}
.project-card .pc-foot b{font-size:12px;font-variant-numeric:tabular-nums}
.progress-lg{height:8px;border-radius:8px;background:#edf1f8;overflow:hidden}
.progress-lg i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,var(--brand),var(--cyan))}
.progress-lg i.g{background:linear-gradient(90deg,var(--green),#6fd6ae)}
.progress-lg i.r{background:linear-gradient(90deg,var(--red),#f08b8f)}
.progress-lg i.a{background:linear-gradient(90deg,var(--amber),#f2c76a)}
.progress-line{display:flex;align-items:center;gap:10px}
.progress-line .progress-lg{flex:1}
.progress-line span{font-size:11px;color:var(--txt-2);width:36px;text-align:right;font-variant-numeric:tabular-nums}

/* 信息键值 */
.kv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 22px}
.kv{min-width:0}
.kv label{display:block;font-size:10.5px;color:var(--txt-3);margin-bottom:3px}
.kv b{font-size:12.5px;font-weight:600;display:block;line-height:1.6;word-break:break-word}
.desc-block{font-size:12.5px;color:var(--txt-2);line-height:1.8;white-space:pre-wrap;word-break:break-word}
.side-note{font-size:11.5px;color:var(--txt-3);line-height:1.7}
.panel-box{border:1px solid var(--line);border-radius:12px;background:var(--panel-2);padding:12px 14px}
.panel-box h4{font-size:12px;font-weight:700;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.notice{display:flex;gap:9px;align-items:flex-start;border:1px solid rgba(232,163,23,.28);background:var(--amber-weak);border-radius:10px;padding:10px 12px;font-size:12px;line-height:1.65;color:#7a5306}
.notice.risk{border-color:rgba(224,71,76,.25);background:var(--red-weak);color:#9b2a2e}
.notice.info{border-color:rgba(47,91,234,.18);background:var(--brand-weak);color:#2547b8}
.notice b{font-weight:700}

/* 时间线 */
.timeline{display:flex;flex-direction:column;gap:0}
.tl-item{display:grid;grid-template-columns:92px 14px 1fr;gap:10px;padding:10px 0;position:relative}
.tl-item time{font-size:10.5px;color:var(--txt-3);padding-top:2px;text-align:right;font-variant-numeric:tabular-nums}
.tl-item .tl-dot{width:9px;height:9px;border-radius:50%;background:var(--brand-weak);border:2px solid var(--brand);margin-top:4px;position:relative;z-index:1}
.tl-item .tl-dot.ok{background:var(--green-weak);border-color:var(--green)}
.tl-item .tl-dot.risk{background:var(--red-weak);border-color:var(--red)}
.tl-item .tl-dot.info{background:var(--panel);border-color:#aab4c7}
.tl-item::before{content:"";position:absolute;left:calc(13px + 92px + 10px - 1px);top:0;bottom:0;width:1px;background:var(--line-2)}
.tl-item:first-child::before{top:14px}
.tl-item:last-child::before{bottom:calc(100% - 16px)}
.tl-body{font-size:12.5px;line-height:1.65;min-width:0}
.tl-body b{font-weight:700}
.tl-body span{display:block;font-size:10.5px;color:var(--txt-3);margin-top:2px}

/* 资料类别卡 */
.mat-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
@media(max-width:1280px){.mat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.mat-card{border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:var(--panel-2);cursor:pointer;transition:.16s}
.mat-card:hover{border-color:var(--brand-2);background:#fff;box-shadow:var(--shadow)}
.mat-card .mc-top{display:flex;align-items:center;justify-content:space-between;gap:6px}
.mat-card .mc-ico{font-size:17px;line-height:1}
.mat-card h4{font-size:12px;font-weight:700;margin-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mat-card .mc-num{font-size:17px;font-weight:800;margin-top:3px;font-variant-numeric:tabular-nums}
.mat-card .mc-num small{font-size:10.5px;color:var(--txt-3);font-weight:600}
.mat-card .mc-bar{height:5px;border-radius:5px;background:#e9edf6;margin-top:7px;overflow:hidden}
.mat-card .mc-bar i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--brand),var(--cyan))}
.mat-card .mc-tag{font-size:9.5px;padding:1px 6px;border-radius:20px;font-weight:700}
.mat-card .mc-tag.complete{background:var(--green-weak);color:var(--green)}
.mat-card .mc-tag.pending{background:var(--amber-weak);color:#a9720a}
.mat-card .mc-tag.overdue{background:var(--red-weak);color:var(--red)}

/* 文件行 */
.file-row{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:9px;padding:7px 10px;background:#fff;font-size:11.5px;min-width:0}
.file-row:hover{border-color:var(--brand-2)}
.file-ico{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:9px;font-weight:800;color:#fff;flex:0 0 22px;background:#7b5cf0}
.file-row .fr-name{font-weight:600;color:var(--txt);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-row .fr-meta{font-size:10.5px;color:var(--txt-3);white-space:nowrap}
.file-row .fr-act{display:flex;gap:6px;align-items:center}

/* 日志日历 */
.cal-wrap{display:flex;flex-direction:column;gap:8px}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.cal-wd{font-size:10px;color:var(--txt-3);text-align:center;padding:2px 0}
.cal-day{aspect-ratio:1/1;border-radius:7px;background:#f3f6fb;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10px;color:var(--txt-2);border:1px solid transparent;position:relative}
.cal-day.blank{background:transparent;border-color:transparent}
.cal-day.today{border-color:var(--brand);font-weight:700;color:var(--brand-ink)}
.cal-day.lv1{background:var(--heat-1);color:#3d55a8}
.cal-day.lv2{background:var(--heat-2);color:#233c8f}
.cal-day.lv3{background:var(--heat-3);color:#fff}
.cal-day.lv4{background:var(--heat-4);color:#fff}
.cal-day b{font-size:10px;font-weight:700}
.cal-day span{font-size:8.5px;opacity:.85}
.cal-legend{display:flex;align-items:center;gap:5px;font-size:10.5px;color:var(--txt-3);margin-top:2px}
.cal-legend i{width:11px;height:11px;border-radius:3px;display:block}

/* 甘特 */
.gantt-mini{display:flex;flex-direction:column;gap:8px}
.gantt-mini .gm-row{display:grid;grid-template-columns:104px 1fr 46px;gap:8px;align-items:center;font-size:11px}
.gantt-mini .gm-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--txt-2)}
.gantt-mini .gm-track{height:18px;border-radius:5px;background:#f3f6fb;position:relative;overflow:hidden}
.gantt-mini .gm-bar{position:absolute;top:3px;height:12px;border-radius:4px;background:linear-gradient(90deg,var(--brand),var(--brand-2));min-width:8px}
.gantt-mini .gm-bar.g{background:linear-gradient(90deg,var(--green),#6fd6ae)}
.gantt-mini .gm-bar.r{background:linear-gradient(90deg,var(--red),#f08b8f)}
.gantt-mini .gm-bar.a{background:linear-gradient(90deg,var(--amber),#f2c76a)}
.gantt-mini .gm-bar.wait{background:#d8dfeb}
.gantt-mini .gm-pct{text-align:right;color:var(--txt-3);font-variant-numeric:tabular-nums}

/* 成员 */
.team-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.member{display:flex;align-items:center;gap:9px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);min-width:0}
.member .m-av{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;color:#fff;font-size:11.5px;font-weight:700;flex:0 0 30px}
.member b{display:block;font-size:12px;font-weight:700}
.member span{display:block;font-size:10.5px;color:var(--txt-3);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.member .m-tag{margin-left:auto;font-size:9.5px;padding:1px 6px;border-radius:20px;background:#fff;border:1px solid var(--line);color:var(--txt-2);white-space:nowrap}

/* 工单 */
.ticket-item{border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:var(--panel);cursor:pointer;transition:.16s}
.ticket-item:hover{border-color:var(--brand-2);box-shadow:var(--shadow)}
.ticket-item.on{border-color:var(--brand);background:var(--brand-weak)}
.ticket-item .ti-top{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.ticket-item .ti-code{font-size:10px;color:var(--txt-3);font-variant-numeric:tabular-nums}
.ticket-item h4{font-size:12.5px;font-weight:700;line-height:1.5;margin-top:5px}
.ticket-item .ti-meta{font-size:10.5px;color:var(--txt-3);margin-top:6px;display:flex;gap:8px;flex-wrap:wrap}
.ticket-detail{display:flex;flex-direction:column;gap:14px}
.ticket-detail .td-title{font-size:15px;font-weight:800;line-height:1.55}
.ticket-detail .td-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.ticket-detail .td-meta .tm-cell{border:1px solid var(--line);border-radius:9px;padding:7px 9px;background:var(--panel-2)}
.ticket-detail .td-meta span{font-size:10px;color:var(--txt-3);display:block}
.ticket-detail .td-meta b{font-size:11.5px;display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thread{display:flex;flex-direction:column;gap:11px}
.msg{display:flex;gap:9px;align-items:flex-start}
.msg .m-av{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:#fff;font-size:10.5px;font-weight:700;flex:0 0 28px;background:var(--brand)}
.msg.staff .m-av{background:var(--purple)}
.msg .m-main{flex:1;min-width:0}
.msg .m-top{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;margin-bottom:4px}
.msg .m-top b{font-size:12px}
.msg .m-top .m-role{font-size:9.5px;padding:1px 6px;border-radius:20px;background:var(--panel-2);border:1px solid var(--line);color:var(--txt-3)}
.msg .m-top time{margin-left:auto;font-size:10px;color:var(--txt-3)}
.msg .m-bubble{border:1px solid var(--line);border-radius:9px;padding:8px 11px;font-size:12px;line-height:1.75;white-space:pre-wrap;word-break:break-word;background:var(--panel-2)}
.msg.staff .m-bubble{background:var(--brand-weak);border-color:rgba(var(--brand-rgb),.18)}
.msg.enterprise .m-bubble{background:#fff}

/* 聊天 */
.ai-wrap{display:grid;grid-template-columns:360px minmax(0,1fr);gap:16px;align-items:stretch;min-height:calc(100vh - 130px)}
.ai-side{display:flex;flex-direction:column;min-height:0}
.ai-side .card-body{overflow-y:auto;max-height:calc(100vh - 250px)}
.ai-main{display:flex;flex-direction:column;min-height:0}
.ai-msgs{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:16px;min-height:320px;max-height:calc(100vh - 330px)}
.ai-msg{display:flex;gap:10px;align-items:flex-start}
.ai-msg .ai-avt{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--brand),var(--cyan));color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700;flex:0 0 30px}
.ai-msg.me{flex-direction:row-reverse}
.ai-msg.me .ai-avt{background:var(--purple)}
.ai-msg .ai-body{max-width:88%;min-width:0}
.ai-msg .ai-who{font-size:10.5px;color:var(--txt-3);margin-bottom:4px;display:flex;gap:7px;align-items:center}
.ai-msg.me .ai-who{justify-content:flex-end}
.ai-bubble{background:#fff;border:1px solid var(--line);border-radius:11px;padding:11px 13px;font-size:12.5px;line-height:1.8;white-space:pre-wrap;word-break:break-word}
.ai-msg.me .ai-bubble{background:var(--brand-weak);border-color:rgba(var(--brand-rgb),.2)}
.ai-bubble .ai-src{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);display:flex;gap:5px;flex-wrap:wrap;align-items:center;font-size:10.5px;color:var(--txt-3)}
.ai-bubble .ai-src i{font-style:normal;background:var(--panel-2);border:1px solid var(--line);border-radius:20px;padding:1px 7px}
.ai-input{border-top:1px solid var(--line-2);padding:11px 14px 13px}
.ai-input textarea{width:100%;min-height:64px;max-height:150px;resize:vertical;border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-family:inherit;font-size:12.5px;line-height:1.6;outline:none;background:var(--panel-2)}
.ai-input textarea:focus{border-color:var(--brand-2);background:#fff;box-shadow:0 0 0 3px rgba(var(--brand-rgb),.1)}
.ai-ctx-select{height:30px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);font-size:11.5px;font-family:inherit;color:var(--txt-2);padding:0 8px;max-width:270px}
.ai-run{display:flex;gap:8px;padding:9px 2px;border-bottom:1px dashed var(--line-2);font-size:11.5px;line-height:1.55}
.ai-run:last-child{border-bottom:0}
.ai-run .ar-ico{width:24px;height:24px;border-radius:7px;background:var(--purple-weak);color:var(--purple);display:grid;place-items:center;font-size:11px;flex:0 0 24px}
.ai-run .ar-main{min-width:0;flex:1}
.ai-run b{font-size:11.5px;display:block;font-weight:700}
.ai-run span{color:var(--txt-3);font-size:10.5px;display:block;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-run time{color:var(--txt-3);font-size:10px;white-space:nowrap}

/* 知识库 */
.kb-item{border:1px solid var(--line);border-radius:11px;padding:12px 13px;background:var(--panel);transition:.16s}
.kb-item:hover{border-color:var(--brand-2);box-shadow:var(--shadow)}
.kb-item .kb-top{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.kb-item h4{font-size:12.5px;font-weight:700;line-height:1.5;margin-top:6px}
.kb-item .kb-body{font-size:12px;color:var(--txt-2);line-height:1.75;margin-top:5px;white-space:pre-wrap;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.kb-item .kb-foot{display:flex;align-items:center;gap:8px;margin-top:9px;font-size:10.5px;color:var(--txt-3)}
.kb-item .kb-foot .row-act{margin-left:auto}

/* 模板配置 */
.tpl-card{border:1px solid var(--line);border-radius:12px;padding:13px 14px;background:var(--panel);transition:.16s}
.tpl-card:hover{border-color:var(--brand-2);box-shadow:var(--shadow)}
.tpl-card .tp-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tpl-card h4{font-size:13px;font-weight:700;margin-top:6px}
.tpl-card .tp-stats{display:flex;gap:16px;margin-top:9px}
.tpl-card .tp-stats div b{display:block;font-size:16px;font-weight:800;font-variant-numeric:tabular-nums}
.tpl-card .tp-stats div span{font-size:10px;color:var(--txt-3)}
.tpl-stage{border:1px solid var(--line);border-radius:10px;background:var(--panel-2);overflow:hidden}
.tpl-stage .ts-head{display:flex;align-items:center;gap:8px;padding:9px 11px;border-bottom:1px solid var(--line-2);background:#fff}
.tpl-stage .ts-head b{font-size:12px}
.tpl-stage .ts-head span{font-size:10.5px;color:var(--txt-3)}
.tpl-stage .ts-body{padding:9px 12px;font-size:11.5px;color:var(--txt-2);line-height:1.8}
.tpl-stage .ts-body .ts-line{display:flex;gap:8px;padding:3px 0;border-bottom:1px dashed var(--line-2)}
.tpl-stage .ts-body .ts-line:last-child{border-bottom:0}
.tpl-stage .ts-line i{font-style:normal;color:var(--txt-3);width:18px;flex:0 0 18px}
.tpl-stage .ts-line span{margin-left:auto;color:var(--txt-3);font-size:10.5px}
.tpl-stage .ts-ops{display:inline-flex;align-items:center;gap:7px;margin-left:auto;flex:0 0 auto}
.tpl-stage .ts-ops .link-btn{font-size:11px;line-height:1}
.tpl-stage .ts-add{display:flex;gap:14px;margin-top:7px;padding-top:7px;border-top:1px dashed var(--line-2)}
.tpl-stage .ts-add .link-btn{font-size:11px}

/* 账号弹窗 */
.end-checks{display:flex;gap:8px;flex-wrap:wrap}
.ent-pick{display:flex;gap:8px;flex-wrap:wrap;max-height:156px;overflow:auto;padding:2px}
.ent-pick .end-check{flex:1 1 calc(50% - 8px);min-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.end-check{display:flex;align-items:center;gap:7px;padding:8px 11px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2);cursor:pointer;font-size:12px;user-select:none}
.end-check input{accent-color:var(--brand)}
.end-check.on{border-color:var(--brand);background:var(--brand-weak);color:var(--brand-ink);font-weight:600}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.form-grid .full{grid-column:1/-1}
.modal .field,.modal select.field,.modal textarea.field{width:100%}
textarea.field{height:auto;min-height:70px;padding:8px 10px;line-height:1.6;resize:vertical}
select.field{appearance:none;background-image:linear-gradient(45deg,transparent 50%,#8d97ab 50%),linear-gradient(135deg,#8d97ab 50%,transparent 50%);background-position:calc(100% - 13px) 13px,calc(100% - 8px) 13px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:26px}
.modal-foot .left{font-size:11px;color:var(--txt-3);margin-right:auto}

/* 可搜索下拉（研发项目选择） */
.cdd{position:relative}
.cdd-pop{
  position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:6;padding:4px;
  background:#fff;border:1px solid var(--line);border-radius:10px;max-height:200px;overflow:auto;
  box-shadow:0 14px 34px -16px rgba(23,32,60,.35);
}
.cdd-pop[hidden]{display:none}
.cdd-item{
  display:flex;align-items:center;gap:8px;width:100%;padding:7px 9px;border:0;border-radius:7px;
  background:transparent;font:inherit;font-size:12.5px;color:var(--txt);text-align:left;cursor:pointer;
}
.cdd-item b{font-weight:600;color:var(--brand-ink);white-space:nowrap}
.cdd-item span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cdd-item:hover,.cdd-item.act{background:#f2f5fb}
.cdd-item.on{background:rgba(var(--brand-rgb),.08)}
.cdd-item.none{color:var(--txt-2)}
.cdd-empty{padding:10px 8px;text-align:center;font-size:12px;color:var(--txt-3)}

/* 日期选择：文本输入框 + 右侧日历图标，点图标弹出自绘月历 */
.date-field{position:relative}
.date-field .date-input{padding-right:36px;font-variant-numeric:tabular-nums}
.date-field .date-btn{
  position:absolute;right:3px;top:3px;width:28px;height:28px;border:0;border-radius:7px;
  background:transparent;color:var(--txt-3);display:grid;place-items:center;cursor:pointer;transition:.15s;
}
.date-field .date-btn:hover,.date-field .date-btn.on{background:var(--brand-weak);color:var(--brand-ink)}
.dp-pop{
  position:fixed;z-index:150;width:252px;padding:10px;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:0 18px 46px -18px rgba(20,30,60,.4);
}
.dp-pop[hidden]{display:none}
.dp-top{display:flex;align-items:center;gap:2px;margin-bottom:6px}
.dp-ym{flex:1;text-align:center;font-size:12.5px;font-weight:700;color:var(--txt);font-variant-numeric:tabular-nums}
.dp-nav{
  width:26px;height:26px;border:0;border-radius:7px;background:transparent;color:var(--txt-3);
  font:inherit;font-size:13px;line-height:1;cursor:pointer;display:grid;place-items:center;
}
.dp-nav:hover{background:#f2f5fb;color:var(--brand-ink)}
.dp-week{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:2px}
.dp-week span{text-align:center;font-size:10.5px;font-weight:600;color:var(--txt-3);padding:3px 0}
.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}
.dp-day{
  height:30px;border:0;border-radius:7px;background:transparent;font:inherit;font-size:12px;
  color:var(--txt);cursor:pointer;font-variant-numeric:tabular-nums;transition:.12s;
}
.dp-day:hover{background:#f2f5fb}
.dp-day.out{color:#c2c9d6}
.dp-day.today{box-shadow:inset 0 0 0 1px var(--brand-2);color:var(--brand-ink);font-weight:700}
.dp-day.on{background:var(--brand);color:#fff;font-weight:700;box-shadow:none}
.dp-foot{display:flex;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line-2)}
.dp-foot button{
  flex:1;height:28px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);
  font:inherit;font-size:11.5px;color:var(--txt-2);cursor:pointer;transition:.15s;
}
.dp-foot button:hover{border-color:var(--brand-2);color:var(--brand-ink);background:#fff}

/* 官网政策详情 */
.policy-detail-wrap{max-width:860px;margin:30px auto 60px;padding:0 20px}
.policy-detail-wrap .back{font-size:12px;color:var(--brand-ink);cursor:pointer;margin-bottom:14px;display:inline-block}

/* 响应式 */
@media(max-width:1180px){
  .grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ai-wrap{grid-template-columns:1fr}
  .ai-side{display:none}
}
@media(max-width:900px){
  .grid-2,.grid-3{grid-template-columns:1fr}
  .kv-grid{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}
  .overview-hero{grid-template-columns:1fr}
  .mat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ticket-detail .td-meta{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid-4{grid-template-columns:1fr}
}

/* 按钮化导航重置 */
button.nav-item{width:100%;border:0;background:transparent;font-family:inherit;text-align:left}
button.nav-item:hover{background:var(--side-hover)}
button.nav-item.active{background:var(--side-active-bg)}
.side-switch:hover{background:rgba(255,255,255,.06);color:#fff}
.user-btn .av{flex:0 0 24px}
.um-item .um-ico{width:15px;display:grid;place-items:center;color:var(--txt-3)}
.um-item:hover .um-ico{color:var(--brand-ink)}
.um-item.danger .um-ico{color:var(--red)}

/* 官网 logo 副标题（两行） */
.sn-logob{display:flex;flex-direction:column;line-height:1.12;gap:1px}
.sn-logob b{font-family:var(--brand-name-font);font-size:20px;font-weight:700;letter-spacing:.3px;color:var(--brand-name);white-space:nowrap}
.sn-logob span{font-size:10px;color:var(--txt-3);letter-spacing:.6px;white-space:nowrap}
.hero-cta .btn-hero{flex:0 0 auto;width:auto}
.adm-qcard b{white-space:nowrap}

/* 网格子项允许收缩，避免表格/日历撑破布局 */
.grid-2 > *, .grid-3 > *, .grid-4 > *, .two-col > *, .up-grid > *, .stack > *, .ai-wrap > * { min-width: 0; }
.cal-day { min-width: 0; }
.card, .tbl-wrap { min-width: 0; }
@media (max-width: 1180px) {
  .up-grid { grid-template-columns: 1fr; }
}

/* 管理端快捷卡：原型 .adm-qcard 为横向 flex，这里改为纵向内容卡 */
.adm-qcard{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0}
.adm-qcard .row{width:100%}
.adm-qcard .side-note{font-size:11.5px;line-height:1.7;color:var(--txt-3)}
.audit-table td,.audit-table th{white-space:nowrap}
.audit-table td.sum-actions{white-space:normal;min-width:300px;line-height:1.6}

/* ---- 移动端收敛（企业应用以桌面为主，移动端保证可读可操作） ---- */
@media (max-width:760px){
  .crumb{display:none}
  .topbar{padding:0 10px;gap:8px;height:54px}
  /* 企业端顶栏公司名称：移动端把腾出的空间尽量留给名称 */
  body[data-end="ent"] .co-switch{flex:0 1 auto;min-width:0;max-width:calc(100vw - var(--sidebar-w) - 76px)}
  body[data-end="ent"] .co-btn{max-width:100%}
  body[data-end="ent"] .co-btn b{max-width:calc(100vw - var(--sidebar-w) - 100px)}
  .search{margin-left:0;max-width:none;flex:1}
  .search input{height:30px;font-size:12px}
  .user-btn{padding:0 6px}
  .user-btn b{display:none}
  .user-btn .caret{display:none}
  .content{padding:12px 10px 30px;gap:12px}
  .side-user{display:none}
  .side-switch{font-size:0 !important;line-height:0;padding:4px}
  .side-switch::after{content:"⇄";font-size:16px;line-height:1;color:var(--side-switch)}
  .side-end{padding:5px 0;margin-bottom:6px}
  .side-foot{padding:8px}
  .kpis,.kpis.k3,.kpis.k4,.adm-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .kpi{padding:11px 12px}
  .kpi .val{font-size:22px}
  .kpi .foot{white-space:normal;line-height:1.45}
  .hero{padding:16px}
  .hero-l h2{font-size:15px;flex-wrap:wrap}
  .hero-l p{font-size:11.5px}
  .overview-hero{padding:16px;border-radius:12px}
  .overview-hero h2{font-size:15px}
  .overview-hero p{font-size:11.5px}
  .page-head h1{font-size:17px}
  .page-head p{font-size:11.5px}
  .card-head{flex-wrap:wrap;row-gap:6px}
  .card-head .head-actions{margin-left:0;width:100%}
  .filter-bar{padding:9px 10px}
  .grid-2,.grid-3,.grid-4,.two-col,.up-grid,.pd-two{grid-template-columns:1fr}
  .mat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ticket-detail .td-meta{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cal-grid{gap:3px}
  .cal-day{border-radius:5px}
  .ai-wrap{grid-template-columns:1fr;min-height:auto}
  .ai-msgs{max-height:60vh}
  .ai-side{display:none}
  .fmt-mobile-hide{display:none}
}
@media (max-width:480px){
  .kpis,.kpis.k3,.kpis.k4,.adm-kpis{grid-template-columns:1fr}
  .hero-r{width:100%}
  .hero-r .btn{flex:1;justify-content:center}
  .mat-grid{grid-template-columns:1fr 1fr}
  .page-head .ph-actions{width:100%}
  .page-head .ph-actions .btn{flex:1;justify-content:center}
  .modal{padding:10px}
  .modal-card{max-height:94vh}
  .pd-tabs{overflow-x:auto;flex-wrap:nowrap}
  .pd-tab{white-space:nowrap}
}

/* ============ 管理端 · 预约诊断通知 / 官网线索 ============ */
.notif-wrap{position:relative;display:flex;align-items:center}
.notif-btn{
  position:relative;width:34px;height:34px;border-radius:9px;border:1px solid var(--line);
  background:#fff;color:var(--txt-2);display:grid;place-items:center;cursor:pointer;transition:.16s;
}
.notif-btn:hover{border-color:var(--brand-2);color:var(--brand-ink);background:var(--brand-weak)}
.notif-btn.has-new{color:#c0392b;border-color:#f0c9c4;background:#fff7f5}
.notif-btn.pulse{animation:notifPulse .9s ease-in-out 3}
@keyframes notifPulse{0%,100%{box-shadow:0 0 0 0 rgba(224,71,76,.35)}50%{box-shadow:0 0 0 7px rgba(224,71,76,0)}}
.notif-badge{
  position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;
  background:var(--red);color:#fff;font-size:10px;font-weight:700;line-height:1;
  display:grid;place-items:center;border:1.5px solid #fff;
}
.notif-panel{
  position:absolute;right:0;top:42px;width:380px;max-width:calc(100vw - 24px);max-height:min(72vh,560px);
  background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);
  display:none;flex-direction:column;z-index:80;overflow:hidden;
}
.notif-panel.show{display:flex}
.notif-head{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line-2)}
.notif-head>div{flex:1;min-width:0}
.notif-head b{display:block;font-size:13px}
.notif-head span{display:block;font-size:11px;color:var(--txt-3);margin-top:2px}
.notif-list{overflow-y:auto;padding:6px}
.notif-item{
  width:100%;display:flex;gap:10px;align-items:flex-start;padding:10px;border:0;border-radius:10px;
  background:none;cursor:pointer;text-align:left;font-family:inherit;transition:.14s;
}
.notif-item:hover{background:var(--brand-weak)}
.notif-item+.notif-item{border-top:1px solid var(--line-2)}
.ni-av{
  width:30px;height:30px;border-radius:9px;flex:0 0 30px;display:grid;place-items:center;
  background:#12b5c9;color:#fff;font-size:12px;font-weight:700;
}
.ni-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.ni-top{display:flex;align-items:center;gap:8px}
.ni-top b{font-size:12.5px;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ni-time{margin-left:auto;font-size:10.5px;color:var(--txt-3);flex:0 0 auto}
.ni-sub{font-size:11.5px;color:var(--txt-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ni-meta{display:flex;align-items:center;gap:6px}
.ni-src{font-size:10.5px;color:var(--txt-3)}
.ni-note{
  font-size:11.5px;color:var(--txt-2);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.notif-empty{padding:26px 14px;display:flex;flex-direction:column;align-items:center;gap:5px;color:var(--txt-3);text-align:center}
.notif-empty b{font-size:12.5px;color:var(--txt-2)}
.notif-empty span{font-size:11px}
.notif-foot{padding:9px 14px;border-top:1px solid var(--line-2);background:var(--panel-2);text-align:center}

.lead-banner{
  display:flex;align-items:center;gap:12px;padding:12px 16px;border:1px solid #f3d9a4;
  background:linear-gradient(135deg,#fffaf0,#fff4d9);border-radius:12px;
}
.lb-ico{
  width:36px;height:36px;border-radius:10px;flex:0 0 36px;display:grid;place-items:center;
  background:#fff;color:#a9720a;border:1px solid #f0ddb0;
}
.lb-body{flex:1;min-width:0}
.lb-body b{display:block;font-size:12.8px;color:#7a5208}
.lb-body span{display:block;font-size:11.5px;color:#9a7430;margin-top:2px;line-height:1.5}
.lb-act{flex:0 0 auto}

.lead-table td{vertical-align:middle}
.lead-remark-cell{max-width:240px}
.lead-remark{display:block;font-size:12px;color:var(--txt-2);line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lead-quote{
  margin-top:7px;padding:6px 9px;border-left:2px solid #b7c6e6;background:#f7f9ff;
  border-radius:0 7px 7px 0;font-size:11.5px;color:var(--txt-2);line-height:1.55;
}
.lead-mini{cursor:pointer;transition:.14s}
.lead-mini:hover{border-color:var(--brand-2);background:var(--brand-weak)}
.lead-detail-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.lead-ask h4{color:#a9720a}
.lead-phone{color:var(--brand-ink);text-decoration:none}
.lead-phone:hover{text-decoration:underline}
.lead-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.lead-timeline{display:flex;flex-direction:column;gap:10px}
.lt-item{display:flex;gap:9px;align-items:flex-start}
.lt-dot{
  width:8px;height:8px;border-radius:50%;background:var(--brand-2);flex:0 0 8px;margin-top:5px;
  box-shadow:0 0 0 3px rgba(var(--brand-rgb),.12);
}
.lt-dot.ok{background:var(--green);box-shadow:0 0 0 3px rgba(23,166,115,.12)}
.lt-item>div{flex:1;min-width:0}
.lt-top{display:flex;align-items:center;gap:8px}
.lt-top b{font-size:12px}
.lt-top span{margin-left:auto;font-size:10.5px;color:var(--txt-3)}
.lt-sum{font-size:12px;color:var(--txt-2);line-height:1.55;margin-top:2px}
.lt-note{
  margin-top:4px;padding:6px 8px;background:var(--panel-2);border:1px dashed var(--line);
  border-radius:7px;font-size:11.5px;color:var(--txt-2);line-height:1.55;
}
@media (max-width:640px){
  .notif-panel{position:fixed;left:12px;right:12px;top:62px;width:auto;max-width:none}
  .lead-banner{flex-wrap:wrap}
  .lb-act{width:100%}
  .lb-act .btn{width:100%;justify-content:center}
  .lead-remark-cell{max-width:160px}
}

/* ============ 我的日志：统计（左上）+ 工时日历（右上）/ 日志清单（左下）+ 内联填写表单（右下） ============ */
.logs-grid{
  display:grid;gap:16px;
  grid-template-columns:minmax(0,1fr) minmax(360px,420px);
  align-items:start;
}
.logs-grid > *{min-width:0}
/* 左列：统计卡（单排 4 张）+ 日志清单；右列：工时日历 + 新建 / 编辑表单 */
.logs-col{display:flex;flex-direction:column;gap:16px;min-width:0}
.logs-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
/* 右列上：工时日历 */
.logs-cal .card-body{padding:14px 16px}
/* 紧凑热力格：日期 + 当日工时 */
.logs-cal .cal-grid{gap:4px}
.logs-cal .cal-day{aspect-ratio:auto;height:28px;border-radius:6px;gap:1px}
.logs-cal .cal-day b{font-size:10.5px;line-height:1.1}
.logs-cal .cal-day span{font-size:8px;line-height:1}
.cal-day[data-day]{cursor:pointer}
.cal-day[data-day]:hover{outline:2px solid rgba(var(--brand-rgb),.45);outline-offset:1px}
/* 左下：日志清单；右下：新建 / 编辑日志表单 */
/* 「生效」按钮（日志保存为草稿、点击生效后锁定不可编辑） */
.btn.ok{background:var(--green-weak);border-color:rgba(23,166,115,.28);color:var(--green);font-weight:600}
.btn.ok:hover{background:var(--green);border-color:transparent;color:#fff}
.btn.ok:disabled{opacity:.6;cursor:not-allowed}
/* 日期列排序按钮（表头内联，箭头指示当前方向） */
table.tbl th .th-sort{
  display:inline-flex;align-items:center;gap:4px;margin:0;padding:0;border:0;background:none;
  font:inherit;color:inherit;letter-spacing:inherit;cursor:pointer;transition:.15s;
}
table.tbl th .th-sort i{font-style:normal;font-size:11px;line-height:1;color:var(--brand-ink);opacity:.8;transition:.15s}
table.tbl th .th-sort:hover{color:var(--brand-ink)}
table.tbl th .th-sort:hover i{opacity:1}
table.tbl th .th-sort.desc i{transform:translateY(1px)}
.logs-list{scroll-margin-top:78px}
.logs-form{scroll-margin-top:78px}
/* 列表操作列：生效 + 编辑 不换行 */
.logs-list .row-act{flex-wrap:nowrap;white-space:nowrap}
/* 整行可点：回显到右侧表单 */
.logs-list tbody tr[data-log-id]{cursor:pointer}
/* 列表定宽 + 单行截断：日志内容只显示一行，悬浮看全文，点行回显详情 */
.logs-list table.tbl{table-layout:fixed}
.logs-list .log-txt,
.logs-list .log-risk,
.logs-list td .cell-sub{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 已生效日志：只读表单 */
.logs-form.locked{border-color:rgba(23,166,115,.35);box-shadow:0 0 0 3px rgba(23,166,115,.06),var(--shadow)}
.field:disabled{background:#f1f4fa;color:var(--txt-2);cursor:not-allowed}
.logs-form.editing{border-color:rgba(var(--brand-rgb),.45);box-shadow:0 0 0 3px rgba(var(--brand-rgb),.07),var(--shadow)}
.log-form-foot{display:flex;align-items:center;gap:8px;padding:12px 16px;border-top:1px solid var(--line-2)}
@media (max-width:1300px){
  /* 窄屏：两列摊平为一列，顺序为 统计 → 日历 → 清单 → 表单 */
  .logs-grid{grid-template-columns:1fr;grid-template-areas:"kpis" "cal" "list" "form"}
  .logs-col{display:contents}
  .logs-kpis{grid-area:kpis}
  .logs-cal{grid-area:cal}
  .logs-list{grid-area:list}
  .logs-form{grid-area:form}
  .logs-cal .cal-wrap{max-width:420px;margin:0 auto}
}
@media (max-width:720px){
  .logs-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ============ 服务总览 · 服务期间数值（长文本，按五列卡宽收口） ============ */
.kpi .val.period{font-size:clamp(17px,1.25vw,22px);letter-spacing:-.5px}

/* ==================================================================
   企业端 · 项目清单（研发项目台账）
   保留侧边栏/顶栏，台账表格 + 预算决算柱状对照 + 决算占比环图
   ================================================================== */
body.ledger-view .ledger-page{gap:16px}
body.ledger-view .ledger-page .sec-title{margin:4px 2px -6px}
body.ledger-view .ledger-page > .card > .card-head{padding:12px 16px}
body.ledger-view .ledger-page .card-head h3{font-size:12.5px}
body.ledger-view .ledger-page .card-head .sub{font-size:10.5px}

/* 卡片头：紧凑筛选与按钮 */
body.ledger-view .ledger-page .filters{gap:4px}
body.ledger-view .ledger-page .filters .filter{
  height:24px;padding:0 9px;font-size:10.5px;display:inline-flex;align-items:center;
}
body.ledger-view .ledger-page .btn.sm{height:25px;padding:0 9px;font-size:11.5px}
body.ledger-view .ledger-page #rdLedgerAdd{padding:0 7px}

/* 台账表格：与原型一致的行高与标签体量 */
body.ledger-view .ledger-page .ledger-tbl{width:100%}
body.ledger-view .ledger-page .ledger-tbl th{padding:7px 12px}
body.ledger-view .ledger-page .ledger-tbl td{padding:11px 12px}
body.ledger-view .ledger-page .ledger-tbl .tag{line-height:1.3;padding:2px 8px;border-radius:6px}
body.ledger-view .ledger-page .lg-doc-btn{
  font-size:12.5px;font-weight:600;line-height:1;font-family:inherit;
}

/* 图表：1361 视口下保持左右两列，高度贴合原型 */
body.ledger-view .ledger-page .two-col{grid-template-columns:1fr 1fr;gap:16px}
body.ledger-view .ledger-page .lg-body{padding:16px}
body.ledger-view .ledger-page .ledger-two-col > .card:first-child .lg-body{padding:12px 16px}
body.ledger-view .ledger-page .ledger-two-col > .card:last-child .lg-body{padding:12px 16px}
body.ledger-view .ledger-page .lg-yaxis{height:159px;margin-bottom:19px}
body.ledger-view .ledger-page .lg-cols{height:178px}
body.ledger-view .ledger-page .lg-bars{height:159px}
body.ledger-view .ledger-page .lg-grid{inset:0 0 19px 0}
body.ledger-view .ledger-page .lg-donut{flex:0 0 166px;width:166px;height:166px}
body.ledger-view .ledger-page .lg-pie{gap:19px}
body.ledger-view .ledger-page .lg-legend{gap:3px}
body.ledger-view .ledger-page .lg-li{font-size:12.5px;gap:4px}
body.ledger-view .ledger-page .lg-li .pct{flex:0 0 48px}


/* 1101–1320 视口：内容区变窄时略收环图，保证占比图例不截断 */
@media (min-width:1101px) and (max-width:1320px){
  body.ledger-view .ledger-page .lg-donut{flex:0 0 150px;width:150px;height:150px}
  body.ledger-view .ledger-page .lg-pie{gap:16px}
}

/* 窄屏：图表恢复单列，内容留白回到常规 */
@media (max-width:1100px){
  body.ledger-view .ledger-page .two-col{grid-template-columns:1fr}
  body.ledger-view .ledger-page .lg-plot{min-width:0}
}

/* ==================================================================
   企业端 · 咨询结果
   保留侧边栏与顶栏，仅重绘内容区：符合性诊断结论 + 成果文件清单
   ================================================================== */
body.results-view .content{padding:14px 16px 32px;gap:14px}
.results-page{gap:14px}

/* 页头 */
.results-page .rr-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;flex-wrap:wrap;margin:0}
.results-page .rr-page-title h1{font-size:17px;font-weight:800;letter-spacing:-.2px;line-height:1.35}
.results-page .rr-page-title p{font-size:11px;color:var(--txt-3);margin-top:3px;line-height:1.5}
.results-page .rr-page-meta{font-size:10.5px;color:#9aa4b7;padding-top:4px;white-space:nowrap;font-variant-numeric:tabular-nums}
.results-page .rr-page-meta b{color:var(--txt-2);font-weight:600}
.results-page .rr-page-meta i{font-style:normal;margin:0 6px;color:#c6cddb}

/* 卡片外框 */
.results-page .rr-card{
  background:var(--panel);border:1px solid var(--line);border-radius:12px;
  box-shadow:0 1px 2px rgba(23,35,66,.04),0 8px 24px -14px rgba(23,35,66,.16);
  overflow:hidden;min-width:0;
}
.results-page .rr-card-head{display:flex;align-items:center;gap:14px;padding:10px 16px;border-bottom:1px solid var(--line-2);flex-wrap:wrap}
.results-page .rr-title{display:flex;align-items:center;gap:9px;min-width:0}
.results-page .rr-title::before{content:"";width:3px;height:14px;border-radius:3px;flex:0 0 3px;background:linear-gradient(180deg,var(--brand),var(--cyan))}
.results-page .rr-title h3{font-size:13px;font-weight:700;letter-spacing:.1px;white-space:nowrap;color:var(--txt)}
.results-page .rr-title-sep{width:1px;height:11px;background:#dfe5ef;flex:0 0 1px}
.results-page .rr-sub{font-size:11px;color:var(--txt-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.results-page .rr-head-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* 结论 / 需改善标签 */
.results-page .rr-pill{
  height:22px;padding:0 9px;border-radius:6px;display:inline-flex;align-items:center;
  font-size:10.5px;font-weight:600;white-space:nowrap;border:1px solid transparent;
}
.results-page .rr-pill.ok{background:#e8f8f1;color:var(--green);border-color:#cdeee1}
.results-page .rr-pill.warn{background:#fdf4e4;color:#b7790c;border-color:#f2e2bd}
.results-page .rr-report-btn,
.results-page .rr-batch-btn{height:30px;padding:0 12px;border-radius:8px;font-size:11.5px;color:#3f4a5d;border-color:#dfe5ef;background:#fff}
.results-page .rr-report-btn:hover,
.results-page .rr-batch-btn:hover{color:var(--brand-ink);border-color:var(--brand-2);background:var(--brand-weak)}

/* 指标卡 */
.results-page .rr-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;padding:14px 16px 0}
.results-page .rr-metric{
  border:1px solid #d8eee4;border-radius:10px;padding:10px 13px 11px;min-width:0;
  background:linear-gradient(180deg,#f2fbf7 0%,#fbfefc 100%);
}
.results-page .rr-metric.improve{border-color:#f1dfb9;background:linear-gradient(180deg,#fff9ed 0%,#fffdf8 100%)}
.results-page .rr-metric-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.results-page .rr-metric-label{font-size:11px;font-weight:600;color:#3f4a5d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.results-page .rr-metric-state{
  flex:0 0 auto;font-size:10px;font-weight:600;line-height:1.6;padding:0 7px;border-radius:5px;
  background:#e3f7ee;color:var(--green);
}
.results-page .rr-metric.improve .rr-metric-state{background:#fbf0d8;color:#b7790c}
.results-page .rr-metric-val{
  margin-top:8px;font-size:23px;line-height:1.05;font-weight:800;letter-spacing:-.5px;
  color:var(--green);white-space:nowrap;font-variant-numeric:tabular-nums;
}
.results-page .rr-metric-val small{font-size:11px;font-weight:600;color:var(--txt-2);margin-left:1px;letter-spacing:0}
.results-page .rr-metric.improve .rr-metric-val{font-size:17px;color:#b7790c;letter-spacing:0}
.results-page .rr-metric-req{
  margin-top:5px;font-size:10.5px;line-height:1.45;color:#9aa4b7;
  white-space:normal;overflow-wrap:anywhere;
}
.results-page .rr-note{padding:11px 16px 14px;font-size:10.5px;line-height:1.6;color:#9aa4b7}

/* 成果文件表格 */
.results-page .rr-table-wrap{overflow-x:auto;border-radius:0 0 12px 12px}
.results-page .rr-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:1000px;font-size:11.5px}
.results-page .rr-table th{
  text-align:left;padding:8px 16px;background:#fafbfd;color:var(--txt-3);
  font-size:10.5px;font-weight:600;border-bottom:1px solid #edf0f6;white-space:nowrap;
}
.results-page .rr-table td{padding:10px 16px;border-bottom:1px solid #f0f3f8;vertical-align:middle;color:var(--txt-2)}
.results-page .rr-table tbody tr:last-child td{border-bottom:0}
.results-page .rr-table tbody tr:hover{background:#fafcff}
.results-page .rr-table .c-name{width:34%}
.results-page .rr-table .c-kind{width:10.8%}
.results-page .rr-table .c-who{width:14.8%}
.results-page .rr-table .c-ver{width:8.6%}
.results-page .rr-table .c-date{width:6.5%}
.results-page .rr-table .c-status{width:16.6%}
.results-page .rr-table .c-ops{width:8.7%}
.results-page .rr-table .th-ops{text-align:right}
.results-page .rr-file-cell{display:flex;align-items:center;gap:10px;min-width:0}
.results-page .rr-file-main{min-width:0}
.results-page .rr-file-name{display:block;font-size:11.5px;font-weight:600;color:var(--txt);line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.results-page .rr-file-size{display:block;font-size:10px;color:#9aa4b7;line-height:1.4;margin-top:1px}
.results-page .rr-file-ico{
  width:26px;height:26px;border-radius:7px;flex:0 0 26px;display:grid;place-items:center;
  color:#fff;font-size:7.5px;font-weight:800;letter-spacing:.2px;line-height:1;
  box-shadow:0 4px 10px -5px rgba(23,35,66,.5);
}
.results-page .rr-file-ico.pdf{background:linear-gradient(145deg,#ff7a7a,#e0474c)}
.results-page .rr-file-ico.zip{background:linear-gradient(145deg,#9a7efb,#7657ec)}
.results-page .rr-file-ico.xls,.results-page .rr-file-ico.xlsx{background:linear-gradient(145deg,#3bcf95,#16a36f)}
.results-page .rr-file-ico.doc,.results-page .rr-file-ico.docx{background:linear-gradient(145deg,#5b8df7,#2f5bea)}
.results-page .rr-file-ico.ppt,.results-page .rr-file-ico.pptx{background:linear-gradient(145deg,#f5b74c,#e0972a)}
.results-page .rr-file-ico.other{background:linear-gradient(145deg,#9aa7bd,#76839b)}
.results-page .rr-kind{
  display:inline-flex;align-items:center;height:22px;padding:0 10px;border-radius:20px;
  background:#f3f5fa;color:var(--txt-2);font-size:10.5px;white-space:nowrap;
}
.results-page .rr-who,
.results-page .rr-ver,
.results-page .rr-date{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.results-page .rr-who{font-size:11px;color:var(--txt-2)}
.results-page .rr-ver{font-size:11px;color:var(--txt-2);font-variant-numeric:tabular-nums}
.results-page .rr-date{font-size:11px;color:var(--txt-3);font-variant-numeric:tabular-nums}
.results-page .rr-status{
  display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:5px;
  font-size:10.5px;font-weight:600;white-space:nowrap;
}
.results-page .rr-status.done{background:#e8f8f1;color:var(--green)}
.results-page .rr-status.review{background:#f0ecfe;color:var(--purple)}
.results-page .rr-status.doing{background:#eaf1ff;color:var(--brand-ink)}
.results-page .rr-status.wait{background:#f1f4fa;color:var(--txt-3)}
.results-page .rr-status.risk{background:#fdeaea;color:var(--red)}
.results-page .rr-ops-cell{text-align:right}
.results-page .rr-ops{display:inline-flex;align-items:center;gap:12px;justify-content:flex-end}
.results-page .rr-op{
  border:0;background:none;padding:2px 0;font-family:inherit;font-size:10.5px;
  color:#8d97ab;cursor:pointer;transition:color .16s;line-height:1;
}
.results-page .rr-op:hover{color:var(--brand-ink)}

/* 诊断报告 / 文件预览弹窗 */
.rr-report{display:flex;flex-direction:column;gap:14px}
.rr-report-hero{
  display:flex;align-items:center;gap:10px;padding:12px;border-radius:10px;
  border:1px solid #d8eee4;background:linear-gradient(180deg,#f2fbf7,#fbfefc);flex-wrap:wrap;
}
.rr-report-ico{width:34px;height:34px;border-radius:10px;background:var(--green);color:#fff;display:grid;place-items:center;flex:0 0 34px}
.rr-report-hero > div{min-width:0;flex:1}
.rr-report-hero > div > b{display:block;font-size:13px}
.rr-report-hero > div > span{display:block;font-size:10.5px;color:var(--txt-3);margin-top:2px;line-height:1.5}
.rr-report-list{display:flex;flex-direction:column;border:1px solid var(--line-2);border-radius:10px;overflow:hidden}
.rr-report-row{display:grid;grid-template-columns:126px 104px 1fr 56px;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid #f0f3f8;font-size:11.5px}
.rr-report-row:last-child{border-bottom:0}
.rr-report-row.improve{background:#fffaf0}
.rr-report-label{color:#3f4a5d;font-weight:600}
.rr-report-val{color:var(--green);font-size:13px;white-space:nowrap}
.rr-report-row.improve .rr-report-val{color:#b7790c}
.rr-report-req{color:#9aa4b7;font-size:10.5px;line-height:1.5;min-width:0}
.rr-report-state{font-size:10.5px;font-weight:600;color:var(--green);text-align:right}
.rr-report-row.improve .rr-report-state{color:#b7790c}
.rr-report-note{font-size:10.5px;color:#9aa4b7;line-height:1.6}
.rr-preview{display:flex;flex-direction:column;gap:14px}
.rr-preview-file{display:flex;align-items:center;gap:11px;border:1px solid var(--line-2);border-radius:10px;padding:12px;background:#fafbfe}
.rr-preview-file .rr-file-ico{width:36px;height:36px;flex:0 0 36px;border-radius:10px;font-size:9px}
.rr-preview-file b{display:block;font-size:12.5px;line-height:1.45}
.rr-preview-file span{display:block;font-size:10.5px;color:var(--txt-3);margin-top:2px}
.rr-preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.rr-preview-grid > div{border:1px solid var(--line-2);border-radius:9px;padding:9px 10px;min-width:0}
.rr-preview-grid span{display:block;font-size:10px;color:#9aa4b7}
.rr-preview-grid b{display:block;font-size:11.5px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 窄屏收敛：指标卡两行排布，表格横向滚动 */
@media (max-width:1320px){
  .results-page .rr-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
  .results-page .rr-metric-req{min-height:16px}
}
@media (max-width:760px){
  body.results-view .content{padding:12px 10px 30px}
  .results-page .rr-page-meta{white-space:normal}
  .results-page .rr-metrics{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px 12px 0;gap:7px}
  .results-page .rr-metric{padding:10px 11px 11px}
  .results-page .rr-metric-val{font-size:20px}
  .results-page .rr-card-head{padding:11px 12px}
  .results-page .rr-sub{display:none}
  .results-page .rr-table th,.results-page .rr-table td{padding-left:12px;padding-right:12px}
  .rr-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rr-report-row{grid-template-columns:1fr 90px;row-gap:4px}
  .rr-report-req{grid-column:1/-1}
  .rr-report-state{grid-column:2;grid-row:1}
}

/* ==================================================================
   企业端 · 问题工单
   保留侧边栏/顶栏，还原工单概览、筛选表格与常见问题/提交小贴士
   ================================================================== */
body.tickets-view .content{padding:14px 16px 32px;gap:14px}
.tickets-page{gap:14px}

/* 页头：标题与说明同行，右侧服务时间与响应时效 */
.tickets-page .tk-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap}
.tickets-page .tk-page-title{display:flex;align-items:baseline;gap:12px;min-width:0;flex-wrap:wrap}
.tickets-page .tk-page-title h1{font-size:17px;font-weight:800;letter-spacing:-.2px;line-height:1.35;white-space:nowrap}
.tickets-page .tk-page-title p{font-size:11px;color:var(--txt-3);line-height:1.5;margin:0;min-width:0}
.tickets-page .tk-page-meta{font-size:10.5px;color:#9aa4b7;padding-top:3px;white-space:nowrap;font-variant-numeric:tabular-nums}
.tickets-page .tk-page-meta b{color:var(--brand-ink);font-size:13px;font-weight:800;margin:0 2px}
.tickets-page .tk-page-meta i{font-style:normal;margin:0 6px;color:#c6cddb}

/* 工单 KPI */
.tickets-page .tk-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.tickets-page .tk-kpi{
  position:relative;overflow:hidden;min-width:0;min-height:100px;
  display:flex;flex-direction:column;padding:12px 16px;
  background:var(--panel);border:1px solid var(--line);border-radius:12px;
  box-shadow:0 1px 2px rgba(23,35,66,.04),0 8px 24px -16px rgba(23,35,66,.18);
}
.tickets-page .tk-kpi::after{
  content:"";position:absolute;top:-44px;right:-32px;width:116px;height:116px;border-radius:50%;
  background:var(--kw,#eef2ff);opacity:.92;pointer-events:none;
}
.tickets-page .tk-kpi-label{font-size:11px;color:#8d97ab;position:relative;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tickets-page .tk-kpi-val{margin-top:8px;font-size:24px;line-height:1.15;font-weight:800;color:var(--kc,var(--brand));position:relative;z-index:1;font-variant-numeric:tabular-nums;white-space:nowrap}
.tickets-page .tk-kpi-val small{font-size:11px;font-weight:600;color:var(--txt-2);margin-left:3px;letter-spacing:0}
.tickets-page .tk-kpi-foot{margin-top:auto;padding-top:6px;font-size:10.5px;color:#9aa4b7;position:relative;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tickets-page .tk-kpi.blue{--kc:#2f5bea;--kw:#edf2ff}
.tickets-page .tk-kpi.amber{--kc:#c8860a;--kw:#fdf3e0}
.tickets-page .tk-kpi.teal{--kc:#0e93a4;--kw:#e2f5f8}
.tickets-page .tk-kpi.green{--kc:#17a673;--kw:#e6f7f0}
.tickets-page .tk-kpi.violet{--kc:#7b5cf0;--kw:#f0ecfe}

/* 卡片外框 */
.tickets-page .tk-card{
  background:var(--panel);border:1px solid var(--line);border-radius:12px;min-width:0;
  box-shadow:0 1px 2px rgba(23,35,66,.04),0 8px 24px -14px rgba(23,35,66,.16);
  overflow:hidden;
}
.tickets-page .tk-card-head{display:flex;align-items:center;gap:14px;padding:10px 16px;min-height:50px;border-bottom:1px solid var(--line-2);flex-wrap:wrap}
.tickets-page .tk-card-title{display:flex;align-items:center;gap:9px;min-width:0}
.tickets-page .tk-card-title::before{content:"";width:3px;height:14px;border-radius:3px;flex:0 0 3px;background:linear-gradient(180deg,var(--brand-btn),var(--brand))}
.tickets-page .tk-card-title h3{font-size:13px;font-weight:700;letter-spacing:.1px;white-space:nowrap;color:var(--txt)}
.tickets-page .tk-card-sub{font-size:11px;color:var(--txt-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tickets-page .tk-head-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* 筛选与提交 */
.tickets-page .tk-filters{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.tickets-page .tk-filter{
  height:27px;padding:0 12px;border-radius:7px;border:1px solid #dfe7f1;background:#fff;
  font-family:inherit;font-size:11.5px;color:var(--txt-2);cursor:pointer;transition:.16s;white-space:nowrap;
}
.tickets-page .tk-filter:hover{border-color:var(--brand-2);color:var(--brand-ink)}
.tickets-page .tk-filter.on{background:linear-gradient(135deg,#287f9e,#2f93b6);border-color:transparent;color:#fff;font-weight:600}
.tickets-page .tk-new{
  height:27px;padding:0 11px;border-radius:7px;border:0;cursor:pointer;
  display:inline-flex;align-items:center;gap:4px;
  background:linear-gradient(135deg,#2f86a3,#2f9fbe);color:#fff;
  font-family:inherit;font-size:11.5px;font-weight:600;white-space:nowrap;
  box-shadow:0 6px 14px -8px rgba(15,127,158,.8);transition:.16s;
}
.tickets-page .tk-new:hover{filter:brightness(1.06)}
.tickets-page .tk-new svg{width:13px;height:13px}

/* 工单表格 */
.tickets-page .tk-table-wrap{overflow-x:auto}
.tickets-page .tk-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:1180px;font-size:11.5px}
.tickets-page .tk-table th{
  text-align:left;padding:8px 10px;background:#fafbfd;color:var(--txt-3);
  font-size:10.5px;font-weight:600;border-bottom:1px solid #edf0f6;white-space:nowrap;
}
.tickets-page .tk-table td{padding:10px 10px;border-bottom:1px solid #f0f3f8;vertical-align:middle;color:var(--txt-2)}
.tickets-page .tk-table tbody tr:last-child td{border-bottom:0}
.tickets-page .tk-table tbody tr:hover{background:#fbfcff}
.tickets-page .tk-table .c-no{width:8.2%}
.tickets-page .tk-table .c-title{width:29.4%}
.tickets-page .tk-table .c-project{width:19%}
.tickets-page .tk-table .c-cat{width:8.8%}
.tickets-page .tk-table .c-pri{width:6.8%}
.tickets-page .tk-table .c-time{width:6.2%}
.tickets-page .tk-table .c-status{width:5.8%}
.tickets-page .tk-table .c-last{width:9%}
.tickets-page .tk-table .c-ops{width:6.8%}
.tickets-page .tk-table .th-ops{text-align:right}
.tickets-page .tk-table .tk-no{font-size:10.5px;font-weight:600;color:#3f4a5d;white-space:nowrap;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis}
.tickets-page .tk-table .tk-title{font-size:12px;font-weight:600;color:var(--txt);line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tickets-page .tk-table .tk-promise{font-size:10px;font-weight:600;color:#9aa4b7;line-height:1.4;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tickets-page .tk-table .tk-project{font-size:10px;color:var(--txt-2);line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tickets-page .tk-table .tk-time{font-size:10.5px;color:var(--txt-3);white-space:nowrap;font-variant-numeric:tabular-nums}
.tickets-page .tk-table .tk-cat{
  display:inline-flex;align-items:center;height:22px;padding:0 10px;border-radius:20px;
  background:#f3f5fa;color:var(--txt-2);font-size:10.5px;white-space:nowrap;
}
.tk-pri{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:600;white-space:nowrap}
.tk-pri::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;flex:0 0 5px}
.tk-pri.high{color:var(--red)}
.tk-pri.mid{color:#d28a0b}
.tk-pri.low{color:var(--txt-3)}
.tickets-page .tk-status,.tk-status{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:5px;font-size:10.5px;font-weight:600;white-space:nowrap}
.tk-status.open{background:#fdf3e0;color:#b7790c}
.tk-status.replied{background:#e6f2fa;color:#237a9c}
.tk-status.closed{background:#e8f8f1;color:var(--green)}
.tickets-page .tk-last{line-height:1.45;min-width:0}
.tickets-page .tk-last b{display:block;font-size:11px;font-weight:600;color:var(--txt-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tickets-page .tk-last span{display:block;font-size:10px;color:#9aa4b7;margin-top:1px;white-space:nowrap}
.tickets-page .tk-last .tk-last-wait{display:block;font-size:10.5px;color:#9aa4b7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tickets-page .tk-table .tk-ops{text-align:right;padding-left:4px;padding-right:10px}
.tickets-page .tk-op{
  height:26px;padding:0 8px;border-radius:6px;border:1px solid #dfe7f1;background:#fff;
  font-family:inherit;font-size:10.5px;color:#3f4a5d;white-space:nowrap;cursor:pointer;transition:.16s;
}
.tickets-page .tk-op:hover{border-color:var(--brand-2);color:var(--brand-ink);background:var(--brand-weak)}

/* 底部：常见问题 / 提交小贴士 */
.tickets-page .tk-bottom{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:stretch}
.tickets-page .tk-faq-body{display:flex;flex-direction:column;gap:8px;padding:12px 16px 16px}
.tickets-page .tk-faq-item{
  display:flex;align-items:center;gap:12px;min-height:60px;padding:10px 12px;
  border:1px solid #e8edf5;border-radius:9px;background:#fbfcff;transition:.16s;
}
.tickets-page .tk-faq-item:hover{border-color:var(--brand-2);background:#fff;box-shadow:0 6px 18px -14px rgba(15,127,158,.55)}
.tickets-page .tk-faq-main{flex:1;min-width:0}
.tickets-page .tk-faq-main b{display:block;font-size:12px;font-weight:600;color:var(--txt);line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tickets-page .tk-faq-main p{margin-top:3px;font-size:10.5px;color:var(--txt-3);line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tickets-page .tk-ask{
  height:27px;padding:0 12px;border-radius:6px;border:1px solid #dfe7f1;background:#fff;
  font-family:inherit;font-size:11.5px;color:var(--txt-2);cursor:pointer;transition:.16s;flex:0 0 auto;
}
.tickets-page .tk-ask:hover{border-color:var(--brand-2);color:var(--brand-ink);background:var(--brand-weak)}
.tickets-page .tk-tips-body{display:flex;flex-direction:column;gap:8px;padding:12px 16px 14px}
.tickets-page .tk-tip{
  display:flex;align-items:flex-start;gap:10px;padding:10px 12px;
  border:1px solid #e8edf5;border-radius:9px;background:#fbfcff;
}
.tickets-page .tk-tip-no{
  width:22px;height:22px;border-radius:50%;flex:0 0 22px;display:grid;place-items:center;
  background:var(--green);color:#fff;font-size:10.5px;font-weight:700;margin-top:1px;
}
.tickets-page .tk-tip-no.soft{background:#a8d8c6}
.tickets-page .tk-tip > div{min-width:0}
.tickets-page .tk-tip b{display:block;font-size:12px;font-weight:600;color:var(--txt);line-height:1.45}
.tickets-page .tk-tip p{margin-top:2px;font-size:10.5px;color:var(--txt-3);line-height:1.55}
.tickets-page .tk-tips-note{font-size:10px;color:#9aa4b7;line-height:1.6;margin-top:2px;padding:0 2px}

/* 详情弹窗补充 */
.tk-detail .tk-d-section{display:flex;flex-direction:column;gap:9px}
.tk-detail .tk-d-label{font-size:11px;font-weight:700;color:var(--txt-2);display:flex;align-items:center;gap:7px}
.tk-detail .tk-d-label span{font-size:10px;color:var(--txt-3);font-weight:500}
.tk-detail .tk-reply-box{margin-top:0}
.tk-detail .tk-reply-box textarea{min-height:74px;margin-top:7px}
.tk-detail .notice{margin-top:2px}

/* 响应式 */
@media (max-width:1120px){
  .tickets-page .tk-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:900px){
  .tickets-page .tk-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:1000px){
  .tickets-page .tk-bottom{grid-template-columns:1fr}
}
@media (max-width:760px){
  body.tickets-view .content{padding:12px 10px 30px}
  .tickets-page .tk-page-title{gap:4px;flex-direction:column;align-items:flex-start}
  .tickets-page .tk-page-meta{white-space:normal;padding-top:0}
  .tickets-page .tk-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .tickets-page .tk-kpi{min-height:92px;padding:12px 13px}
  .tickets-page .tk-kpi-val{font-size:22px}
  .tickets-page .tk-card-head{padding:10px 12px;min-height:50px}
  .tickets-page .tk-card-sub{display:none}
  .tickets-page .tk-filter{padding:0 9px;font-size:11px}
  .tickets-page .tk-new{padding:0 9px;font-size:11px}
  .tickets-page .tk-faq-body,.tickets-page .tk-tips-body{padding:10px 12px 12px}
}
