  * { box-sizing: border-box; }
  /* ===== 医疗青绿设计系统（沿用既有优化草稿 :root token，保证一致） ===== */
  :root{
    --teal:#0E7C86;--teal-deep:#0A5D66;--teal-600:#12707A;--teal-wash:#E9F3F2;--teal-line:#CADFDD;
    --ink:#14211F;--ink-2:#354744;--muted:#657572;--faint:#98A6A3;
    --ground:#F3F6F5;--surface:#FFFFFF;--line:#E4EAE8;--line-2:#EEF2F1;--head:#F1F6F5;
    --ok:#2E9E5B;--ok-wash:#E7F4EC;--warn:#DE8F2C;--warn-wash:#FBF0DE;--danger:#D24E3B;--danger-wash:#FBE9E5;
    --blue:#3A73C9;--blue-wash:#EAF1FB;--purple:#6A5AA6;--purple-wash:#EFEBF7;
    --radius:10px;--radius-sm:7px;--radius-lg:16px;
    --shadow-1:0 1px 2px rgba(20,34,32,.05),0 3px 10px rgba(20,34,32,.045);
    --shadow-2:0 6px 24px rgba(20,34,32,.10);
    --cjk:"PingFang SC","Microsoft YaHei","Hiragino Sans GB",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
    /* 兼容旧屏内容里使用的老变量名，映射到青绿系统，实现「只换皮不改内容」 */
    --blue-d:var(--teal-deep);--green:var(--ok);--orange:var(--warn);--red:var(--danger);
    --text:var(--ink);--text2:var(--ink-2);--text3:var(--muted);--bd:var(--line);--bd2:var(--line);--bg:var(--ground);
  }
  html,body{ margin:0; padding:0; }
  body{ font-family:var(--cjk); font-size:13px; color:var(--ink); background:var(--ground);
    -webkit-font-smoothing:antialiased; line-height:1.55; }
  a{ color:var(--teal); text-decoration:none; cursor:pointer; }
  :focus-visible{ outline:2px solid var(--teal); outline-offset:2px; border-radius:4px; }
  .app{ display:flex; min-height:100vh; }

  /* ===== Sidebar（青绿深色 + 6 工作区可折叠） ===== */
  .side{ width:224px; background:#0B3A3E; color:#c4d6d4; flex-shrink:0;
    height:100vh; position:sticky; top:0; overflow-y:auto; transition:width .18s; }
  .side::-webkit-scrollbar{ width:6px; }
  .side::-webkit-scrollbar-thumb{ background:#1d5157; border-radius:3px; }
  .logo{ height:56px; display:flex; align-items:center; gap:9px; padding:0 16px;
    color:#fff; font-weight:600; font-size:15px; background:#082e31; position:sticky; top:0; z-index:2; }
  .logo .mk{ width:28px;height:28px;border-radius:8px;background:var(--teal);
    display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;font-weight:700;}
  .logo .collapse{ margin-left:auto; cursor:pointer; opacity:.6; font-size:15px; }
  .logo .collapse:hover{ opacity:1; }

  .grp{ padding:2px 0; }
  .grp-t{ padding:12px 16px 6px; font-size:10.5px; letter-spacing:.13em; text-transform:uppercase;
    color:rgba(210,232,230,.42); font-weight:700; display:flex; align-items:center; gap:6px; cursor:pointer; }
  .grp-t .gic{ font-size:13px; }
  .grp-t .garw{ margin-left:auto; font-size:9px; transition:.2s; opacity:.5; }
  .grp.closed .grp-t .garw{ transform:rotate(-90deg); }
  .grp-body{ overflow:hidden; }
  .grp.closed .grp-body{ display:none; }

  .n1{ padding:9px 16px 9px 30px; display:flex; align-items:center; gap:9px; cursor:pointer;
    color:#bcd0ce; border-left:3px solid transparent; font-size:12.8px; }
  .n1:hover{ color:#fff; background:#0a3438; }
  .n1 .ic{ width:16px; text-align:center; opacity:.85; }
  .n1 .arw{ margin-left:auto; font-size:10px; transition:.2s; opacity:.55;}
  .n1.open .arw{ transform:rotate(90deg); }
  .n1.active{ color:#fff; background:var(--teal); border-left-color:#8fe3d9; }
  .sub{ display:none; background:#082e31; }
  .sub.open{ display:block; }
  .n2{ padding:8px 16px 8px 54px; cursor:pointer; color:#9db6b3; font-size:12.3px; }
  .n2:hover{ color:#fff; }
  .n2.active{ color:#fff; background:#0e4247; box-shadow:inset 3px 0 0 var(--teal); }

  /* 折叠态 */
  .app.mini .side{ width:60px; }
  .app.mini .grp-t, .app.mini .n1 span:not(.ic), .app.mini .n1 .arw, .app.mini .logo .mk+span, .app.mini .sub{ display:none; }
  .app.mini .n1{ justify-content:center; padding:11px 0; }

  /* ===== Main ===== */
  .main{ flex:1; min-width:0; display:flex; flex-direction:column; }
  .topbar{ height:54px; background:var(--surface); border-bottom:1px solid var(--line);
    display:flex; align-items:center; padding:0 20px; gap:14px; position:sticky; top:0; z-index:20; }
  .crumb{ color:var(--muted); font-size:13px; }
  .crumb b{ color:var(--ink); font-weight:600; }
  .topbar .sp{ flex:1; }
  .topbar .ti{ color:var(--ink-2); display:flex; align-items:center; gap:5px; font-size:12.5px; cursor:pointer;}
  .topbar .ti:hover{ color:var(--teal); }
  .topbar .badge{ background:var(--danger); color:#fff; border-radius:8px; font-size:10px; padding:0 5px; }
  .topbar .user{ font-weight:500; }

  .content{ padding:16px; flex:1; }
  .card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
    box-shadow:var(--shadow-1); padding:16px 18px; margin-bottom:14px; }
  .pgtitle{ font-size:15px; font-weight:600; padding:2px 0 12px; color:var(--ink);
    border-bottom:1px solid var(--line); margin-bottom:14px; }

  /* filters */
  .filters{ display:flex; flex-wrap:wrap; gap:12px 18px; align-items:center; margin-bottom:14px; }
  .fld{ display:flex; align-items:center; gap:6px; }
  .fld label{ color:var(--ink-2); white-space:nowrap; }
  .inp{ height:32px; border:1px solid var(--line); border-radius:var(--radius-sm); padding:0 10px;
    font-size:12.5px; color:var(--ink); min-width:150px; background:#fff; }
  .inp::placeholder{ color:var(--faint); }
  .inp:focus{ border-color:var(--teal); }
  select.inp{ min-width:130px; }

  .btn{ height:32px; padding:0 15px; border:1px solid transparent; border-radius:var(--radius-sm); cursor:pointer;
    font-size:12.5px; font-weight:600; color:#fff; background:var(--teal); display:inline-flex; align-items:center; gap:5px; transition:.15s; }
  .btn:hover{ background:var(--teal-deep); }
  .btn.g{ background:var(--ok); } .btn.g:hover{ filter:brightness(.94); }
  .btn.o{ background:var(--warn); } .btn.o:hover{ filter:brightness(.94); }
  .btn.r{ background:var(--danger); } .btn.r:hover{ filter:brightness(.94); }
  .btn.plain{ background:#fff; color:var(--ink-2); border:1px solid var(--line); }
  .btn.plain:hover{ color:var(--teal); border-color:var(--teal-line); background:#fff; }
  .btn.sm{ height:28px; padding:0 11px; font-size:12px; }
  .toolbar{ display:flex; gap:10px; align-items:center; margin-bottom:12px; flex-wrap:wrap; }
  .toolbar .sp{ flex:1; }
  .toollink{ color:var(--ink-2); cursor:pointer; display:inline-flex; align-items:center; gap:4px; font-size:12.5px;}
  .toollink:hover{ color:var(--teal); }

  /* tabs */
  .tabs{ display:flex; gap:2px; border-bottom:1px solid var(--line); margin-bottom:14px; flex-wrap:wrap; }
  .tab{ padding:9px 15px; cursor:pointer; color:var(--ink-2); font-size:13px; border-bottom:2px solid transparent; margin-bottom:-1px;}
  .tab:hover{ color:var(--teal); }
  .tab.active{ color:var(--teal); border-bottom-color:var(--teal); font-weight:600; }
  .subtabs{ display:flex; gap:8px; margin-bottom:12px; flex-wrap:wrap; align-items:center; }
  .stab{ padding:5px 12px; border:1px solid var(--line); border-radius:var(--radius-sm); cursor:pointer;
    background:#fff; color:var(--ink-2); font-size:12px; }
  .stab.active{ background:var(--teal); color:#fff; border-color:var(--teal); }

  /* table */
  .tblwrap{ overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); }
  table.tbl{ width:100%; border-collapse:collapse; font-size:12.5px; white-space:nowrap; }
  .tbl th{ background:var(--head); color:var(--ink); font-weight:600; text-align:center;
    padding:11px 12px; border-bottom:1px solid var(--line); }
  .tbl td{ padding:11px 12px; text-align:center; color:var(--ink-2); border-bottom:1px solid var(--line-2); }
  .tbl tr:hover td{ background:var(--teal-wash); }
  .tbl .lnk{ color:var(--teal); cursor:pointer; }
  .tbl .lnk:hover{ text-decoration:underline; }
  .op a{ margin:0 4px; white-space:nowrap; }
  .op a.rd{ color:var(--danger); }
  .op a.og{ color:var(--warn); }

  .tag{ display:inline-block; padding:1px 8px; border-radius:999px; font-size:11px; line-height:18px; font-weight:600; }
  .tag.blue{ background:var(--teal-wash); color:var(--teal); }
  .tag.green{ background:var(--ok-wash); color:var(--ok); }
  .tag.orange{ background:var(--warn-wash); color:var(--warn); }
  .tag.red{ background:var(--danger-wash); color:var(--danger); }
  .tag.gray{ background:var(--line-2); color:var(--muted); }

  .pager{ display:flex; align-items:center; gap:8px; padding:12px 4px 2px; color:var(--ink-2); font-size:12.5px; }
  .pager .pg{ min-width:28px; height:28px; border:1px solid var(--line); border-radius:var(--radius-sm);
    display:inline-flex; align-items:center; justify-content:center; cursor:pointer; background:#fff; }
  .pager .pg.on{ background:var(--teal); color:#fff; border-color:var(--teal); }
  .pager .sp{ flex:1; }

  /* stat cards */
  .stats{ display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:12px; margin-bottom:14px; }
  .stat{ background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:14px 16px; }
  .stat .lb{ color:var(--muted); font-size:12px; margin-bottom:8px; }
  .stat .vl{ font-size:24px; font-weight:700; color:var(--ink); }
  .stat .vl.blue{ color:var(--teal); } .stat .vl.green{ color:var(--ok); }
  .stat .vl.orange{ color:var(--warn); } .stat .vl.red{ color:var(--danger); }

  .screen{ display:none; }
  .screen.show{ display:block; }
  .hint{ color:var(--muted); font-size:12px; margin:6px 0 12px; }
  .warnbox{ background:var(--warn-wash); border:1px solid #f0d6a8; color:#9c6a1e; border-radius:var(--radius);
    padding:22px 24px; text-align:center; font-size:14px; }
  .warnbox .big{ font-size:34px; margin-bottom:10px; }
  .warnbox .sm{ color:var(--muted); font-size:12px; margin-top:8px; }

  /* two-col layout for detail workbenches */
  .two{ display:grid; grid-template-columns:1fr 340px; gap:14px; }
  .panel{ border:1px solid var(--line); border-radius:var(--radius); padding:14px; background:#fff; }
  .panel h4{ margin:0 0 10px; font-size:13px; }
  .kv{ display:flex; padding:7px 0; border-bottom:1px dashed var(--line); font-size:12.5px; }
  .kv .k{ width:130px; color:var(--muted); flex-shrink:0; }
  .kv .v{ color:var(--ink-2); }

  /* ===== 本页优化 浮层 ===== */
  .optfab{ position:fixed; right:18px; bottom:18px; z-index:120; background:var(--teal); color:#fff;
    border-radius:999px; padding:9px 15px; font-size:12px; font-weight:600; cursor:pointer;
    box-shadow:var(--shadow-2); display:flex; align-items:center; gap:6px; user-select:none; }
  .optfab:hover{ background:var(--teal-deep); }
  .optfab .dot{ width:8px;height:8px;border-radius:50%;background:#8fe3d9; }
  .optpanel{ position:fixed; right:18px; bottom:64px; z-index:120; width:360px; max-width:calc(100vw - 36px);
    max-height:70vh; overflow-y:auto; background:#fff; border:1px solid var(--teal-line); border-radius:var(--radius-lg);
    box-shadow:var(--shadow-2); padding:14px 16px; display:none; }
  .optpanel.show{ display:block; }
  .optpanel h3{ margin:0 0 4px; font-size:14px; color:var(--ink); display:flex; align-items:center; gap:7px; }
  .optpanel .osub{ font-size:11.5px; color:var(--muted); margin-bottom:12px; }
  .optpanel .oitem{ border-left:3px solid var(--teal); background:var(--teal-wash); border-radius:0 8px 8px 0;
    padding:9px 12px; margin-bottom:9px; }
  .optpanel .oitem.keep{ border-left-color:var(--ok); background:var(--ok-wash); }
  .optpanel .oitem .ott{ font-size:12.5px; font-weight:600; color:var(--ink); margin-bottom:3px; }
  .optpanel .oitem .owhy{ font-size:11.5px; color:var(--ink-2); line-height:1.5; }
  .optpanel .oitem .omap{ font-size:11px; color:var(--muted); margin-top:4px; }
  .optpanel .oitem .omap b{ color:var(--teal-deep); }
  .optpanel .oclose{ position:absolute; right:12px; top:12px; cursor:pointer; color:var(--faint); font-size:16px; }

  @media(max-width:720px){
    .two{ grid-template-columns:1fr; }
    .optpanel{ width:calc(100vw - 24px); right:12px; }
  }

  /* ZB-017等②建任务批弹层最小样式(承admin.js此前全文无modal系统,新增) */
  .modal-mask{ position:fixed; inset:0; background:rgba(20,34,32,.4); display:flex; align-items:center; justify-content:center; z-index:200; }
  .modal-mask.hide{ display:none; }
  .modal{ background:var(--surface); border-radius:var(--radius-lg); box-shadow:var(--shadow-2); width:520px; max-width:92vw; max-height:86vh; overflow:auto; padding:0 20px 18px; }
  .modal .mh{ display:flex; justify-content:space-between; align-items:center; padding:16px 0; position:sticky; top:0; background:var(--surface); font-size:16px; font-weight:600; }
  .modal .mh .x{ cursor:pointer; color:var(--faint); font-size:16px; }
  .modal .fv{ margin-bottom:12px; }
  .modal .fv label{ display:block; font-size:12.5px; color:var(--ink-2); margin-bottom:5px; }
  .modal .fv label .req{ color:var(--danger); margin-right:2px; }
  .modal .fv input[type=text],.modal .fv input:not([type]),.modal .fv select,.modal .fv textarea{ width:100%; padding:7px 10px; border:1px solid var(--line); border-radius:var(--radius-sm); font-size:13px; box-sizing:border-box; }
  .modal .fv textarea{ resize:vertical; min-height:60px; }
