
  :root{ --blue:#2563eb; --red:#dc2626; --green:#16a34a; --gold:#d97706; --silver:#64748b; --bronze:#b45309;
         --bd:#e2e8f0; --bg:#faf9f5; --card:#fff; --gray:#1f1f1f; }
  *{box-sizing:border-box; margin:0; padding:0;}
  body{font-family:"Microsoft YaHei","PingFang SC",sans-serif; background:var(--bg); color:#1e293b; padding:24px;}
  .page{max-width:980px; margin:0 auto;}
  .head{background:linear-gradient(135deg,#1d4ed8,#3b82f6); border-radius:14px; padding:14px 24px 12px; color:#fff; display:flex; flex-direction:column; gap:11px;}
  .head .hrow1{display:flex; align-items:center; gap:14px; flex-wrap:wrap;}
  .head .hrow2{display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap;}
  .head .hgrp{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-left:auto;}
  .head .hrow3{display:flex; align-items:flex-end; gap:14px; flex-wrap:wrap;}
  .head .hrow3 .sub{flex:1 1 320px; min-width:0; margin-top:0;}
  .head .hrow3 .hdeliv{flex:0 0 auto; margin-left:auto; white-space:nowrap; margin-top:0; opacity:1; font-size:13px;}
  /* 板块体检条 chips（2026-11-02；19:32 用户反馈两胶囊贴在一起 → 容器改 flex 固定 gap，不再依赖 margin） */
  #boardHealth{display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px;}
  .bh-chip{display:inline-block; margin:0; padding:2px 9px; border-radius:10px; background:#fef2f2; color:#7f1d1d; border:1px solid #fecaca; font-size:13px; font-weight:600; cursor:help;}
  .bh-chip i{font-style:normal; margin-left:5px; color:#b91c1c; opacity:.75; font-weight:500;}
  .bh-chip.bh-hd{background:#eef2f7; border-color:#cbd5e1; color:#1c1c1c; font-weight:700;}
  .bh-chip.bh-ok{background:#f0fdf4; border-color:#bbf7d0; color:#166534;}
  .head h1{font-size:31.5px; letter-spacing:1px;}
  .head .sub{font-size:13px; opacity:.85; line-height:1.55;}
  .seg{display:inline-flex; background:rgba(255,255,255,.18); border-radius:10px; padding:4px; gap:4px;}
  .seg button{border:none; border-radius:8px; padding:9px 18px; font-size:14px; font-weight:bold; cursor:pointer; background:transparent; color:#fff; opacity:.75;}
  .seg button.on{background:#fff; color:#1d4ed8; opacity:1;}
  /* 月/季切片压扁（2026-10-31 用户要求） */
  #perSeg{padding:3px; gap:3px;}
  #perSeg button{padding:5px 12px; font-size:13px; border-radius:7px;}
  /* 头部全局 白电/黑电/总览 切换（2026-10-31 用户要求加在门店切换下方） */
  #catSeg button{padding:6px 14px; font-size:13px; border-radius:7px;}
  /* 全域KPI */
  .gkpi{display:grid; grid-template-columns:repeat(6,1fr); gap:12px; margin-top:16px;}
  .gkpi .k{background:var(--card); border-radius:12px; padding:14px 18px; border:1.5px solid #b6c2d4; border-top:4px solid var(--blue); box-shadow:0 4px 10px rgba(15,23,42,.12), 0 1px 3px rgba(15,23,42,.08), inset 0 1px 0 rgba(255,255,255,.9);}
  .gkpi .name{font-size:15px; color:var(--gray); font-weight:bold; display:inline-block; vertical-align:middle;}
  .gkpi .val{font-size:30px; font-weight:800; margin-top:4px;}
  .gkpi .val small{font-size:13px; font-weight:normal; color:var(--gray);}
  .gkpi .tgt{display:inline-block; font-size:14px; color:#1e293b; font-weight:700; margin:0 0 0 8px; background:#e8eef6; border:1px solid #cbd5e1; border-radius:6px; padding:2px 8px; vertical-align:middle;}
  .gkpi .st{font-size:19px; margin-top:4px; font-weight:bold;}
  .gkpi .sup{font-size:13px; color:#1c1c1c; font-weight:700; margin-top:3px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
  .kmeta{display:flex; flex-wrap:wrap; gap:6px; margin:9px 0 1px;}
  .kmeta .mp{font-size:13px; font-weight:900; padding:2px 9px; border-radius:20px; border:1px solid; white-space:nowrap; letter-spacing:.2px;}
  .kmeta .mp.up{color:#15803d; background:#dcfce7; border-color:#86efac;}
  .kmeta .mp.dn{color:#b91c1c; background:#fee2e2; border-color:#fca5a5;}
  .kmeta .mp.nu{color:#1c1c1c; background:#eef2f7; border-color:#cbd5e1;}
  .kmeta .mp.bad{color:#9a3412; background:#fff7ed; border-color:#fdba74;}
  .kmeta .mp.ok{color:#0f766e; background:#ccfbf1; border-color:#5eead4;}
  .sjtip a.catok i{font-style:normal; font-family:'Microsoft YaHei',sans-serif; font-size:13px; font-weight:800; color:#fbbf24; margin-right:6px;}
  .st.ok{color:var(--green);} .st.no{color:var(--red);} .st.na{color:var(--gray);}
  /* 面板 */
  .panel{background:var(--card); border-radius:12px; margin-top:16px; border:1.5px solid #b6c2d4; box-shadow:0 4px 10px rgba(15,23,42,.12), 0 1px 3px rgba(15,23,42,.08), inset 0 1px 0 rgba(255,255,255,.9); overflow:hidden;}
  .avg-badge{position:absolute; right:20px; top:50%; transform:translateY(-50%); font-size:15px; font-weight:900; padding:3px 14px; border-radius:999px; background:#fff; box-shadow:inset 0 0 0 1.5px currentColor;}
  .avg-badge.ok{color:#15803d;} .avg-badge.mid{color:#b45309;} .avg-badge.no{color:#dc2626;}
  /* 排行面板"总业务完成"徽章：与标题行齐平（默认垂直居中会压到下方说明文字，2026-10-30 用户反馈） */
  #rankTotal{top:7px; transform:none;}
  .dgrid-wrap{overflow-x:auto; padding:10px 14px 12px;}
  #rankbar{display:grid; grid-template-columns:repeat(auto-fit, minmax(min(520px, 100%), 1fr)); gap:10px; margin-bottom:12px;}   /* 2026-11-01 手机端：min(520px,100%) 防窄屏横向溢出 */
  #rankbar .rb{background:#fff; border:1px solid #dbe3ee; border-left:4px solid var(--blue); border-radius:10px; padding:10px 14px 9px;}
  #rankbar .rb1{display:flex; align-items:center; gap:10px; flex-wrap:wrap;}
  #rankbar .rb-name{font-size:15px; font-weight:900; color:#0f172a;}
  #rankbar .rb-rank{font-size:13px; font-weight:800; color:#185FA5; background:#E6F1FB; padding:2px 8px; border-radius:12px;}
  #rankbar .rb-grade{font-size:13px; font-weight:800; color:#fff; background:#7F77DD; padding:2px 8px; border-radius:12px;}
  #rankbar .rb-score{font-size:13px; font-weight:800; color:#1c1c1c;}
  #rankbar .rb-split{font-size:13px; font-weight:800; color:#7c2d12; background:#fff7ed; border:1px solid #fed7aa; padding:2px 9px; border-radius:12px;}
  #rankbar .rb-vol{font-size:13px; font-weight:800; color:#0e7490; background:#ecfeff; border:1px solid #a5f3fc; padding:2px 9px; border-radius:12px;}
  #rankbar .rb-stars{font-size:16px; letter-spacing:2px; margin-left:auto;}
  #rankbar .rb-stars .on{color:#d97706;} #rankbar .rb-stars .off{color:#1c1c1c;}
  #rankbar .rb-lv{font-size:13px; font-weight:900; padding:2px 9px; border-radius:12px; border:1px solid;}
  #rankbar .rb-lv.lv4{color:#b45309; background:#fef3c7; border-color:#fcd34d;}
  #rankbar .rb-lv.lv3{color:#a16207; background:#fefce8; border-color:#fde68a;}
  #rankbar .rb-lv.lv0{color:#b91c1c; background:#fef2f2; border-color:#fecaca;}
  #rankbar .rb-gap{font-size:13px; font-weight:800; color:#b45309; margin-top:5px;}
  #rankbar .rb-sub{display:flex; gap:6px; flex-wrap:wrap; margin-top:7px;}
  #rankbar .chip{font-size:13px; font-weight:700; padding:2px 8px; border-radius:9px; border:1px solid #e2e8f0; color:#1c1c1c; white-space:nowrap;}
  #rankbar .chip.ok{color:#15803d; border-color:#bbf7d0; background:#f0fdf4;}
  #rankbar .chip.no{color:#dc2626; border-color:#fecaca; background:#fef2f2;}
  .dgrid-row{display:flex; gap:2px; align-items:center; margin-bottom:4px;}
  /* 姓名列冻结 v2（2026-10-30）：左栏姓名固定、右栏格子独立横向滚动。
     旧 sticky 方案会在姓名列右侧露出"半截滚出的格子"造成错位，已弃用。 */
  .dgrid2{display:flex; align-items:flex-start;}
  .dgrid-names{width:88px; flex:none; background:var(--card);}
  .dgn-head{height:24px; line-height:24px; margin-bottom:2px; font-size:13px; font-weight:800; color:#1c1c1c; padding-left:2px;}
  .dgn-row{height:52px; margin-bottom:4px; display:flex; flex-direction:column; justify-content:center; overflow:hidden;}
  .dgrid-names .nm{font-size:14px; font-weight:900; color:#0f172a; line-height:1.32; letter-spacing:.2px; white-space:nowrap;}
  .dgrid-names .sub{font-size:13px; font-weight:800; color:#1c1c1c; line-height:1.35;}
  .dgrid-cells{flex:1; min-width:0; overflow-x:auto; padding-bottom:2px;}
  .dgc-row{display:flex; gap:2px; align-items:center; height:52px; margin-bottom:4px;}
  .dgc-head{height:24px; margin-bottom:2px; align-items:flex-end;}
  /* 字体加大加深（用户 2026-10-30 要求"字调显眼一点"） */
  .dgrid-cell{width:36px; height:46px; flex:none; border-radius:5px; display:flex; flex-direction:column; align-items:center; justify-content:center; line-height:1.18;}
  .dgrid-cell .r{font-size:13.5px; font-weight:900;}
  .dgrid-cell .c{font-size:13px; font-weight:800;}
  .dgrid-head{width:36px; flex:none; font-size:13px; font-weight:800; color:#1c1c1c; text-align:center;}
  .panel-title{position:relative; padding:11px 20px 9px; font-weight:800; font-size:15px; border-bottom:2px solid #b6c2d4; background:linear-gradient(180deg,#ffffff,#f6f8fb);}
  .panel-title .bar{display:inline-block; width:4px; height:16px; background:var(--blue); border-radius:2px; margin-right:8px; vertical-align:-2px;}
  .panel-title .note{display:block; font-size:13px; color:#1c1c1c; font-weight:normal; margin:3px 0 0 12px; line-height:1.5;}
  /* 2026-10-31 工单切片面板已删，slcard 样式一并移除 */
  /* 白电/黑+厨/全品类 切换按钮 */
  .gswitch{display:inline-flex; gap:4px; margin-left:10px; vertical-align:middle;}
  .gbtn{border:1px solid #cbd5e1; background:#fff; color:#1c1c1c; font-size:13px; font-weight:800; border-radius:999px; padding:2px 10px; cursor:pointer; font-family:inherit;}
  .gbtn.on{background:#2563eb; border-color:#2563eb; color:#fff;}
  .wstrip{background:#eff6ff; border:1px solid #bfdbfe; border-radius:10px; padding:8px 14px; margin-bottom:12px; font-size:13px; font-weight:700; color:#1e3a8a;}
  .ptg{display:inline-block; margin-left:10px; color:#fff; font-weight:900; font-size:13px; letter-spacing:.5px; background:linear-gradient(135deg,#3b82f6,#2563eb); border:none; border-radius:999px; padding:3px 14px; vertical-align:1px; white-space:nowrap; box-shadow:0 2px 6px rgba(37,99,235,.35); user-select:none;}
  .ptg:hover{background:linear-gradient(135deg,#60a5fa,#3b82f6);}
  /* 2026-11-03 用户定：面板收起=只留头部一行（标题+按钮+徽章），口径说明note随正文一起隐藏 */
  .panel.is-closed .panel-title .note{display:none;}
  .panel.is-closed .panel-title{border-bottom:none; padding-bottom:11px;}
  /* 2026-11-03 用户定：「点击-显示」按钮统一放标题左边（竖条后、标题前） */
  .panel-title .ptg{margin-left:2px; margin-right:10px;}
  .grid2{display:grid; grid-template-columns:1.15fr 1fr; gap:16px; margin-top:16px;}
  .pad{padding:14px 20px;}
  .bignum{display:flex; align-items:baseline; gap:14px; flex-wrap:wrap;}
  .bignum .v{font-size:42px; font-weight:800;}
  .bignum .d{font-size:13px; color:var(--gray);}
  .gapline{display:inline-block; font-size:13px; font-weight:900; border-radius:999px; padding:2px 10px; margin:2px 0 1px; letter-spacing:.2px; max-width:100%;}
  .gapline.gok{color:#15803d; background:#f0fdf4; border:1px solid #bbf7d0;}
  .gapline.gno{color:#dc2626; background:#fef2f2; border:1px solid #fecaca;}
  .gapline b{font-weight:900;}
  .chips{display:flex; flex-wrap:wrap; gap:8px; margin-top:12px;}
  .chip{border-radius:999px; padding:4px 12px; font-size:13px; font-weight:bold;}
  .chip.r{background:#fef2f2; color:var(--red);}
  .chip.g{background:#f0fdf4; color:var(--green);}
  .chip.b{background:#eff6ff; color:#1d4ed8;}
  /* 排行 */
  /* 服务类型拆分：并入完工及时率卡的迷你两行（2026-10-31 用户定） */
  .tmini{margin-top:6px; border-top:1px dashed #e2e8f0; padding-top:5px; display:flex; flex-direction:column; gap:3px;}
  .tmini .tmrow{display:flex; align-items:center; gap:6px;}
  .tmini .tmn{font-size:13px; font-weight:800; color:#0f172a; width:44px; flex:none; white-space:nowrap;}
  .tmini .tmb{flex:1; height:8px; background:#f1f5f9; border-radius:4px; overflow:hidden;}
  .tmini .tmb i{display:block; height:100%; border-radius:4px; background:linear-gradient(90deg,#34d399,#15803d);}
  .tmini .tmv{font-size:13px; font-weight:900; flex:none; letter-spacing:.2px;}
  .tmini .tmv.ok{color:#15803d;} .tmini .tmv.no{color:#1c1c1c;}
  .tmini .tmv small{font-size:13px; font-weight:700; color:#1c1c1c;}
  .rank .row{display:flex; align-items:center; gap:10px; padding:6px 0;}
  .rank .row.hasTip{cursor:pointer;}
  .rank .nm .newtag{display:inline-block; margin-left:4px; padding:0 4px; border-radius:4px; background:#fee2e2; color:#b91c1c; font-size:13px; font-weight:800; font-style:normal; line-height:15px; vertical-align:middle;}
  .rank .medal{width:22px; height:22px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:13px; font-weight:800; color:#fff; flex:none;}
  .rank .medal.g{background:var(--gold);} .rank .medal.s{background:var(--silver);} .rank .medal.b{background:var(--bronze);}
  .rank .medal.p{background:#cbd5e1; color:#1c1c1c;}
  .rank .nm{width:80px; font-weight:900; font-size:14.5px; color:#0f172a; flex:none; white-space:nowrap;}
  .rank .tot{font-size:13px; font-weight:800; color:#1c1c1c; white-space:nowrap; flex:none; margin-left:2px;}
  .rank .row.other .tot{color:#1c1c1c;}
  .rank .track{flex:1; height:16px; background:#f1f5f9; border-radius:8px; overflow:hidden;}
  .rank .fill{display:block; height:100%; border-radius:8px; background:linear-gradient(90deg,#60a5fa,#2563eb);}
  .rank .fill.low{background:linear-gradient(90deg,#f87171,#dc2626);}
  .rank .fill.mid{background:linear-gradient(90deg,#fde047,#d97706);}
  .rank .fill.gray{background:linear-gradient(90deg,#cbd5e1,#94a3b8);}
  .rank .v{min-width:118px; width:auto; text-align:right; font-size:15px; font-weight:900; flex:none;}
  .rank .v .zv{display:block; white-space:nowrap;}
  .rank .v.ok .zv{color:#15803d;}
  .rank .v.mid .zv{color:#b45309;}
  .rank .v.no .zv{color:#dc2626;}
  .rank .v small{font-weight:700; font-size:13px; letter-spacing:-.2px;}
  /* 2026-10-31 用户定版：括号=结X/合格✓/不合格✗/取消N✗ */
  .rank .v small .qm{font-style:normal; font-weight:900;}
  .rank .v small .okm{color:#15803d;}
  .rank .v small .badm{color:#dc2626;}
  .rank .v small .cxm{color:#b91c1c;}
  .rank .znote{display:inline; color:#dc2626; font-size:14px; font-weight:700; white-space:nowrap; line-height:1.4; margin-left:4px;}
  .rank .znote.up{color:#2563eb;}
  .rank .znote.down{color:#dc2626;}
  .rank .gnote{display:inline; color:#2563eb; font-size:14px; font-weight:700; white-space:nowrap; line-height:1.4; margin-left:4px;}
  .rank .znote b, .rank .gnote b{font-size:15.5px; font-weight:900;}
  .rank .lowtag{display:inline-block; background:#dc2626; color:#fff; font-size:13.5px; font-weight:800; padding:1px 9px; border-radius:999px; margin-right:3px; cursor:help; vertical-align:1px; white-space:nowrap;}
  .trow{display:flex; align-items:center; gap:10px; padding:7px 0;}
  .trow .nm{width:70px; font-weight:bold; font-size:13px; flex:none;}
  .trow .track{flex:1; height:16px; background:#f1f5f9; border-radius:8px; overflow:hidden;}
  .trow .fill{display:block; height:100%; border-radius:8px;}
  .trow .v{width:130px; text-align:right; font-size:13px; color:var(--gray); flex:none;}
  /* 品类表 */
  .ct{width:100%; border-collapse:collapse; table-layout:fixed;}
  .ct th{padding:8px 8px; font-size:14.5px; font-weight:800; color:#1c1c1c; border-bottom:2px solid #b6c2d4; overflow:hidden; white-space:nowrap; background:linear-gradient(180deg,#ffffff,#eef2f7); text-shadow:0 1px 0 rgba(255,255,255,.9);}
  .ct tbody tr:nth-child(odd){background:#f1f5f9;}
  .ct tbody tr:nth-child(even){background:#fff;}
  .ct tbody tr+tr td{border-top:2px solid #e2e8f0;}
  .ct td{padding:6px 8px; font-size:13px; text-align:center;}
  .ct .cn{font-weight:bold; text-align:left; line-height:1.3;}
  .ct .ctot{font-weight:normal; color:#1c1c1c; font-size:13px; margin-left:4px; white-space:nowrap;}
  .ct .nb{display:inline-block; background:var(--red); color:#fff; border-radius:999px; padding:1px 9px; font-size:13px; font-weight:bold;}
  .ct .nc{display:inline-block; background:#64748b; color:#fff; border-radius:999px; padding:1px 9px; font-size:13px; font-weight:bold;}
  .ct .ce{text-align:left; color:#1c1c1c; font-size:13px; overflow:hidden;}
  .ct .ebrow{display:flex; align-items:center; gap:5px; margin:2px 0;}
  .ct .eb{height:15px; border-radius:4px; display:flex; align-items:center; padding:0; box-sizing:border-box; overflow:hidden; flex:none;}
  .ct .yspace{display:flex; align-items:center; min-width:0; overflow:hidden;}
  .ct .yspace>span{margin-left:7px;}
  .ct .eb span:not(.cseg){color:#111827; font-size:13px; font-weight:700; white-space:nowrap; letter-spacing:.3px;}
  .ct .cseg{background:#64748b; color:#fff; font-size:13px; font-weight:700; display:flex; align-items:center; justify-content:center; border-radius:0 4px 4px 0; min-width:14px; padding:0 3px; box-sizing:border-box; overflow:hidden; flex:none; opacity:.92;}
  .ct .eout{font-size:13px; color:#1c1c1c; white-space:nowrap;}
  .ngap{display:inline-block; width:4px;}   /* 名字与数字之间约1毫米 */
  .sjrow{position:relative;}
  .sjrow .v{white-space:nowrap;}
  .sjtip{display:none; position:fixed; z-index:9999; background:#1e293b; color:#e2e8f0; border-radius:8px; padding:10px 12px; font-size:13px; line-height:1.9; box-shadow:0 8px 24px rgba(0,0,0,.45); min-width:300px; width:max-content; max-width:min(760px,72vw); text-align:left; cursor:default;}
  /* 模板里的 .sjtip 作为内容塞进共享 #shtip 时会形成嵌套，内层必须正常显示（否则气泡只有一条空壳） */
  .sjtip .sjtip{display:block !important; position:static; background:none; box-shadow:none; padding:0; min-width:0; width:auto; max-width:none; border-radius:0;}
  .sjtip b{color:#fca5a5; display:block; margin-bottom:2px;}
  .sjtip span{display:block; font-family:Consolas,monospace; letter-spacing:.2px; border-bottom:1px dashed rgba(255,255,255,.12);}
  .sjsn{display:flex; align-items:center; flex-wrap:wrap; gap:4px 14px; margin-top:7px; padding-bottom:3px; border-bottom:1px dashed rgba(255,255,255,.12);}
  .sjsn .snh{font-family:Consolas,monospace; font-weight:700; color:#fbbf24; cursor:pointer;}
  .sjsn .snh:hover{color:#fde68a;}
  .sjsn a{font-family:Consolas,monospace; letter-spacing:.2px; text-decoration:none; cursor:pointer;}
  .sjsn a i{font-style:normal; font-family:'Microsoft YaHei',sans-serif; font-size:13px; color:#1c1c1c; margin-right:5px;}
  .sjsn a.sjfirst{color:#93c5fd;}
  .sjsn a.sjfirst:hover{color:#dbeafe; text-decoration:underline;}
  .sjsn a.sjbad{color:#f87171; font-weight:700;}
  .sjsn a.sjbad:hover{color:#fecaca; text-decoration:underline;}
  .sjsn .sjlbl{font-family:'Microsoft YaHei',sans-serif; font-size:13px; font-weight:800; white-space:nowrap; padding:1px 6px; border-radius:4px; background:rgba(147,197,253,.15); color:#93c5fd;}
  .sjsn .sjlbl.b{background:rgba(248,113,113,.15); color:#f87171;}
  .sjtip a.catok,.sjtip a.catcx{display:block; font-family:Consolas,monospace; letter-spacing:.2px; border-bottom:1px dashed rgba(255,255,255,.12); text-decoration:none; cursor:pointer;}
  .sjtip a.catok{color:#f87171; font-weight:700;}
  .sjtip a.catok:hover{color:#fecaca; text-decoration:underline;}
  .sjtip a.catcx{color:#1c1c1c;}
  .sjtip a.catcx:hover{color:#f1f5f9; text-decoration:underline;}
  /* 工程师格子气泡三态着色（2026-11-02 用户定：合格亮绿 / 不合格亮黄 / 取消灰） */
  .sjtip a.tg{display:block; font-family:Consolas,monospace; letter-spacing:.2px; border-bottom:1px dashed rgba(255,255,255,.12); text-decoration:none; cursor:pointer;}
  .sjtip a.tg.ok{color:#34d399; font-weight:700;}   /* 亮绿 */
  .sjtip a.tg.bad{color:#facc15; font-weight:700;}  /* 亮黄 */
  .sjtip a.tg.cx{color:#1c1c1c;}                    /* 灰 */
  .sjtip a.tg:hover{text-decoration:underline;}
  .sjtip b.tgh{color:#e2e8f0;}
  .sjtip .tgrp{margin-top:6px;}
  .sjtip .tgrp:first-of-type{margin-top:4px;}
  .sjtip span.tgl{display:inline-block; font-weight:800; font-size:13px; padding:1px 8px; border-radius:10px; margin-bottom:3px; color:#0f172a;}
  .sjtip span.tgl.ok{background:#34d399;}
  .sjtip span.tgl.bad{background:#facc15;}
  .sjtip span.tgl.cx{background:#cbd5e1;}
  /* 2026-11-02 用户定：跟踪留言气泡改为浅色（白底深色字），不再黑底 */
  .sjtip.tk-mode{background:#ffffff; color:#1e293b; border:1px solid #cbd5e1; box-shadow:0 10px 30px rgba(15,23,42,.22);}
  .sjtip.tk-mode b{color:#b91c1c;}
  .sjtip.tk-mode span, .sjtip.tk-mode div{color:#1c1c1c; border-bottom-color:#e2e8f0;}
  .sjtip.tk-mode .tk-mb{color:#1c1c1c; line-height:1.8;}
  .sjtip.tk-mode a{color:#2563eb;}
  .nc-red{background:#dc2626 !important;}
  .foot{font-size:13px; color:#1c1c1c; margin-top:14px; line-height:1.8;}
  .tgrid{display:grid; grid-template-columns:repeat(6,1fr); gap:6px;}
  .tcell{border-radius:8px; padding:4px 4px 5px; color:#fff; display:flex; flex-direction:column; align-items:center; gap:1px; cursor:default; min-width:0;}
  .tcell .td1{font-size:13px; color:#fff; font-weight:700;}
  .tcell .td1 i{font-style:normal; margin-right:5px;}
  .tcell .td2{font-size:15.5px; font-weight:900; color:#fff; line-height:1.15; letter-spacing:-.2px;}
  .tcell .td3{font-size:13px; font-weight:800; color:#fff; line-height:1.2; display:flex; align-items:center; gap:0; white-space:nowrap;}
  /* 亮黄档（65~69.99）底色浅 → 文字转黑，与格子版一致 */
  .tcell.kMid, .tcell.kMid .td1, .tcell.kMid .td2, .tcell.kMid .td3, .tcell.kMid .td3 i{color:#111827;}
  .tcell.kMid .td2{color:#000;}
  /* 用户2026-10-31定：格内「及时(完成)用白数字 / 取消用黑体数字」 */
  .tcell .td3 .cOk{background:#1f2937; color:#fff; font-weight:800; padding:0 2px; border-radius:3px; line-height:1.35;}
  .tcell .td3 .cCx{color:#000; font-weight:900; background:rgba(255,255,255,.94); padding:0 2px; border-radius:3px; line-height:1.35;}
  .tcell .td3 i{font-style:normal; color:#fff; font-weight:800; margin:0 1px;}
  .tcell .td3 em{font-style:normal; font-size:13px; font-weight:700; letter-spacing:-.6px;}
  .cols2{display:flex; gap:16px; align-items:flex-start; margin-top:16px;}
  .cols2 .col{flex:1; min-width:0; display:flex; flex-direction:column; gap:16px;}
  .cols2 .col .panel{margin-top:0;}
  /* ===== 当日打铁汇报页（与全域同文件切换） ===== */
  .wxbar{background:#fef3c7; color:#92400e; border:1px solid #fcd34d; border-radius:10px; padding:10px 14px; font-size:13px; line-height:1.7; margin-top:14px;}
  .goals{display:grid; grid-template-columns:repeat(6,1fr); gap:10px; margin-top:16px;}
  .goal{background:linear-gradient(160deg,#ffffff, #f8fafc); border-radius:14px; padding:9px 9px 8px; border:1px solid #e2e8f0; border-top:4px solid var(--blue); box-shadow:0 1px 2px rgba(15,23,42,.06), 0 4px 12px rgba(15,23,42,.06); transition:.18s; position:relative; overflow:hidden;}
  .goal::after{content:''; position:absolute; right:-22px; top:-22px; width:72px; height:72px; border-radius:50%; background:var(--accent,#eff6ff); opacity:.55;}
  .goal:hover{transform:translateY(-2px); box-shadow:0 6px 18px rgba(15,23,42,.12);}
  .goal .name{font-size:14px; color:#1c1c1c; font-weight:800; display:flex; align-items:center; gap:3px; letter-spacing:0; white-space:nowrap;}
  .goal .name .gi{font-size:13.5px;}
  .goal .ghead{display:flex; align-items:center; justify-content:space-between; gap:3px; min-width:0; flex-wrap:wrap; row-gap:2px;}   /* 2026-11-03 防窄卡裁字：放不下时 目标块 整体换行，绝不出卡 */
  .goal .gtail{display:flex; flex-direction:column; align-items:center; gap:3px; white-space:nowrap; flex:none;}
  .goal .glabel{display:inline-block; padding:3px 8px; border-radius:999px; background:#e8f0fe; color:#2563eb; font-size:13px; font-weight:800; letter-spacing:0;}
  .goal .target{font-size:17px; font-weight:900; color:var(--blue); letter-spacing:.2px; white-space:nowrap;}
  .goal .target small{font-size:13px; color:#1c1c1c; font-weight:normal; display:block; margin-top:3px;}
  .goal .gvals{display:flex; flex-direction:column; gap:2px; margin-top:6px; font-size:13px; color:#1c1c1c; white-space:nowrap; overflow:hidden;}
  .goal .gvals b{font-weight:900; color:#0f172a;}
  @media (max-width:900px){ .goal .gvals{font-size:13px;} }
  /* 2026-11-03 用户截图1105px宽：6列目标卡挤爆裁字 → ≤1150px 转3列（放760规则之前，手机2列不受影响） */
  @media (max-width:1150px){ .goals{grid-template-columns:repeat(3,1fr);} }
  #daypage{display:none;}
  #daypage table{width:100%; border-collapse:separate; border-spacing:0; font-size:15px;}
  #daypage th{background:linear-gradient(180deg,#f8fafc,#f1f5f9); color:#1c1c1c; padding:11px 10px; text-align:center; font-size:14px; font-weight:900; letter-spacing:.5px; border-bottom:2px solid #e2e8f0;}
  /* 表头列分割线 + 轻微3D浮凸（2026-11-02 用户要求：列间分割线分开或3D） */
  #kpiTbl th{border-right:1px solid #cbd5e1; box-shadow:inset 0 1px 0 rgba(255,255,255,.95), inset 0 -2px 0 rgba(148,163,184,.22), inset 1px 0 0 rgba(255,255,255,.6); text-shadow:0 1px 0 rgba(255,255,255,.9);}
  #kpiTbl th:last-child{border-right:none;}
  /* 当日新建工单徽章：直接显示在面板标题上（2026-11-02 用户要求，原表内合并列取消） */
  .nonhead{display:inline-block; margin:0 0 0 auto; font-size:13px; font-weight:900; color:#92400e; background:linear-gradient(180deg,#fffbeb,#fef3c7); border:1px solid #fde68a; border-radius:999px; padding:3px 12px; white-space:nowrap; vertical-align:1px; letter-spacing:.2px;}
  @media (max-width:1100px){ .nonhead{width:max-content; max-width:100%; margin:2px 0 0 auto; white-space:normal;} }
  #daypage th:first-child{border-radius:10px 0 0 0;} #daypage th:last-child{border-radius:0 10px 0 0;}
  #daypage td{padding:12px 10px; text-align:center; transition:background .15s; border:none;}
  /* 四行=四张独立彩色卡片（用户2026-10-26定·加强版）：行间真实空隙 + 每行专属主题色 + 左侧粗色条 + 投影 */
  #daypage table{border-collapse:separate; border-spacing:0 10px;}
  #daypage tbody tr td{background:var(--rkbg,#f8fafc); box-shadow:0 3px 10px rgba(15,23,42,.10), inset 0 0 0 1px rgba(15,23,42,.05);}
  #daypage tbody tr td:first-child{border-radius:12px 0 0 12px; border-left:8px solid var(--rkc,#94a3b8); font-weight:900;}
  #daypage tbody tr td:last-child{border-radius:0 12px 12px 0;}
  #daypage tr.rk-ts{--rkc:#e11d48; --rkbg:#ffe4e6;}
  #daypage tr.rk-wg{--rkc:#2563eb; --rkbg:#dbeafe;}
  #daypage tr.rk-yc{--rkc:#059669; --rkbg:#d1fae5;}
  #daypage tr.rk-fw{--rkc:#7c3aed; --rkbg:#ede9fe;}
  #daypage tr.rk-cd{--rkc:#ea580c; --rkbg:#ffedd5;}
  #daypage tbody tr td.ind{color:var(--rkc,#0f172a); text-shadow:0 1px 0 rgba(255,255,255,.6);}
  #daypage tbody tr:hover td{background:#e2edfb !important; box-shadow:0 5px 14px rgba(37,99,235,.22), inset 0 0 0 1px rgba(37,99,235,.18) !important;}
  #daypage tbody tr:hover td.neword{background:linear-gradient(180deg,#fffbeb,#fef3c7) !important; box-shadow:0 3px 10px rgba(15,23,42,.10), inset 0 0 0 1px rgba(217,119,6,.18) !important;}
  #daypage td.neword{background:linear-gradient(180deg,#fffbeb,#fef3c7); border-radius:12px; box-shadow:0 3px 10px rgba(15,23,42,.10), inset 0 0 0 1px rgba(217,119,6,.15); vertical-align:middle; width:120px;}
  #daypage td.ind{font-weight:900; font-size:17px; text-align:left; white-space:nowrap; color:#0f172a;}
  #daypage td input{width:100%; border:1.5px solid #e2e8f0; border-radius:8px; padding:8px; font-size:17px; font-weight:800; text-align:center; outline:none; background:#fff; transition:.15s;}
  #daypage td input:hover{border-color:#94a3b8;}
  #daypage td input:focus{border-color:var(--blue); box-shadow:0 0 0 3px #dbeafe;}
  #daypage .mo{font-weight:900; font-size:19px; color:#0f172a;}
  #daypage .mo small{display:block; font-weight:600; font-size:13px; color:#1c1c1c; margin-top:3px;}
  /* 当日预约未结 · 超时督办（在途单） */
  .pendsum{display:flex; gap:8px; flex-wrap:wrap; align-items:center;}
  .pendsum .pc{border-radius:999px; padding:6px 14px; font-size:13.5px; font-weight:900; box-shadow:0 2px 5px rgba(15,23,42,.14);}
  .pendsum .pc.hot{background:linear-gradient(135deg,#dc2626,#b91c1c); color:#fff;}
  .pendsum .pc.ok{background:linear-gradient(135deg,#22c55e,#15803d); color:#fff;}
  .pendsum .pc.risk{background:linear-gradient(135deg,#fecaca,#f9a8a8); color:#7f1d1d; box-shadow:inset 0 0 0 1.5px #f87171,0 2px 5px rgba(15,23,42,.14);}
  .pendsum .pc.today{background:linear-gradient(135deg,#d97706,#b45309); color:#fff;}
  .pendsum .pc.noappt{background:linear-gradient(135deg,#64748b,#475569); color:#fff;}
  .pendsum .pc.future{background:#eff6ff; color:#1d4ed8; box-shadow:inset 0 0 0 1.5px #bfdbfe;}
  .pendsum .pc.tot{background:#f1f5f9; color:#1c1c1c; box-shadow:inset 0 0 0 1.5px #cbd5e1;}
  #daypage .ptab{width:100%; border-collapse:separate; border-spacing:0 5px; font-size:13.5px; margin-top:10px;}
  #daypage .ptab th{padding:8px 6px; background:linear-gradient(180deg,#f8fafc,#eef2f7); color:#1c1c1c; font-size:13px; font-weight:900; border-bottom:2px solid #e2e8f0;}
  #daypage .ptab td{padding:8px 6px; background:#fff; box-shadow:inset 0 0 0 1px #e2e8f0; text-align:center; font-variant-numeric:tabular-nums;}
  #daypage .ptab tr.pr-over td{background:#fef2f2; box-shadow:inset 0 0 0 1.5px #fca5a5;}
  #daypage .ptab tr.pr-today td{background:#fffbeb; box-shadow:inset 0 0 0 1.5px #fcd34d;}
  #daypage .ptab tr.pr-noappt td{background:#f8fafc; box-shadow:inset 0 0 0 1.5px #cbd5e1;}
  #daypage .ptab .psid{font-family:Consolas,monospace; font-weight:700; color:#1d4ed8; text-decoration:none;}
  #daypage .ptab .psid:hover{text-decoration:underline;}
  #daypage .ptab .psn{font-family:Consolas,monospace; letter-spacing:.2px;}
  #daypage .ptab .pst{display:inline-block; padding:2px 10px; border-radius:999px; font-size:13px; font-weight:800; background:#eef2f7; color:#1c1c1c;}
  #daypage .ptab tr.pr-over .pst{background:#dc2626; color:#fff;}
  #daypage .ptab tr.pr-today .pst{background:#d97706; color:#fff;}
  #daypage .ptab tr.pr-noappt .pst{background:#64748b; color:#fff;}
  /* 2026-10-31 用户定：跟踪留言气泡——一条工单多条留言(不同时间段遗留)分多行气泡展示，不堆一起 */
  .tk-wrap{display:flex; flex-direction:column; gap:4px; padding:4px 2px;}
  /* 2026-11-03 用户定：每条留言只显示1行（超出省略号），2条=最多2行；完整内容hover气泡看 */
  .tk-b{display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; background:#f1f5f9; border:1px solid #e2e8f0; border-radius:8px; padding:4px 8px; font-size:13px; line-height:1.45; color:#1c1c1c; max-width:240px;}
  /* 2026-11-01 用户定：单元格内只显示前2条留言，多余的"更多N条"悬浮气泡展开 */
  .tk-more{display:inline-block; margin-top:3px; font-size:13px; font-weight:700; color:#2563eb; cursor:pointer;}
  .tk-more:hover{text-decoration:underline;}
  .tk-more .sjtip b, .tk-b .sjtip b{color:#fca5a5; display:block; margin-bottom:2px;}
  .tk-more .sjtip .tk-mb, .tk-b .sjtip .tk-mb{display:block; padding:3px 0; border-bottom:1px dashed rgba(255,255,255,.12); font-family:Consolas,monospace; font-size:13px; color:#e2e8f0; white-space:normal; word-break:break-word;}
  #daypage .ptab .pwait{color:#dc2626; font-weight:900;}
  /* 工程师完工进度（当日格子版，2026-10-29 加） */
  #daypage .wgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(235px,1fr)); gap:12px;}
  #daypage .wtile{border-radius:12px; padding:12px 14px 11px; background:#fff; box-shadow:0 3px 10px rgba(15,23,42,.08), inset 0 0 0 1.5px var(--wc,#e2e8f0); position:relative; overflow:hidden;}
  #daypage .wtile .wname{font-weight:900; font-size:14.5px; color:#0f172a; display:flex; align-items:center; gap:6px; margin-bottom:2px;}
  #daypage .wtile .wdot{width:9px; height:9px; border-radius:50%; flex:none;}
  #daypage .wtile .wwarn{font-size:13px; font-weight:800; color:#b45309; background:#fef3c7; border-radius:999px; padding:1px 7px;}
  #daypage .wtile .wrate{font-weight:900; font-size:27px; line-height:1.15; font-variant-numeric:tabular-nums; letter-spacing:-.5px;}
  #daypage .wtile .wrate small{font-size:13px; font-weight:800; color:#1c1c1c; letter-spacing:0; margin-left:5px;}
  #daypage .wtile .wbar{height:8px; background:#f1f5f9; border-radius:999px; overflow:hidden; margin:7px 0 6px;}
  #daypage .wtile .wbar i{display:block; height:100%; border-radius:999px; transition:width .4s;}
  #daypage .wtile .wmeta{font-size:13px; color:#1c1c1c; font-weight:700; font-variant-numeric:tabular-nums;}
  #daypage .wtile .wmeta b{color:#0f172a;}
  #daypage .wtile.w-good{--wc:#86efac;} #daypage .wtile.w-mid{--wc:#fcd34d;} #daypage .wtile.w-bad{--wc:#fca5a5;} #daypage .wtile.w-na{--wc:#e2e8f0; background:#f8fafc;}
  @media(max-width:700px){ #daypage .wgrid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:9px;} #daypage .wtile{padding:10px 11px;} #daypage .wtile .wrate{font-size:22px;} }
  .tag{display:inline-block; padding:5px 16px; border-radius:999px; font-size:14px; font-weight:900; letter-spacing:.5px; box-shadow:0 2px 6px rgba(15,23,42,.18);}
  .tag.ok{background:linear-gradient(135deg,#16a34a,#15803d); color:#fff; border:1px solid #15803d;}
  .tag.no{background:linear-gradient(135deg,#dc2626,#b91c1c); color:#fff; border:1px solid #b91c1c;}
  .tag.na{background:#f1f5f9; color:#1c1c1c; border:1px solid #e2e8f0; box-shadow:none; font-weight:700;}
  .kcard{background:var(--card); border-radius:14px; margin-top:16px; border:1px solid #e2e8f0; border-top:4px solid var(--blue); box-shadow:0 1px 2px rgba(15,23,42,.06), 0 4px 14px rgba(15,23,42,.07); overflow:hidden; transition:.18s;}
  .kcard:hover{box-shadow:0 6px 20px rgba(15,23,42,.12);}
  .kcard.st-ok{border-top-color:var(--green);}
  .kcard.st-ok .khead{background:linear-gradient(180deg,#f0fdf4,#f8fafc);}
  .kcard.st-no{border-top-color:var(--red);}
  .kcard.st-no .khead{background:linear-gradient(180deg,#fef2f2,#f8fafc);}
  .kcard.st-na{border-top-color:#cbd5e1;}
  .khead{display:flex; align-items:center; gap:12px; padding:11px 20px; background:#f8fafc; border-bottom:1px solid var(--bd); flex-wrap:wrap; position:relative;}
  .khead .ptg{position:static; transform:none; margin-left:0;}
  /* 2026-11-03 用户定：布局改为两行——第一行=隐藏按钮+信息胶囊+今日达成+达标徽章；第二行=数字角标+标题（数据源角标在标题下方） */
  .khead .khbr{flex-basis:100%; height:0; border:0; margin:0; padding:0;}
  .khead .kh2col{display:flex; flex-direction:column; gap:2px; min-width:0;}
  .khead .kheadmeta{margin:0 4px; flex:1 1 260px; min-width:0; justify-content:flex-start;}
  .khead .kval{margin-left:auto;}
  .khead .num{background:linear-gradient(135deg,#3b82f6,#1d4ed8); color:#fff; width:27px; height:27px; border-radius:9px; display:inline-flex; align-items:center; justify-content:center; font-size:14px; font-weight:800; flex:none; box-shadow:0 2px 5px rgba(37,99,235,.35); align-self:flex-start;}
  .kcard.st-ok .num{background:linear-gradient(135deg,#22c55e,#15803d); box-shadow:0 2px 5px rgba(22,163,74,.35);}
  .kcard.st-no .num{background:linear-gradient(135deg,#ef4444,#b91c1c); box-shadow:0 2px 5px rgba(220,38,38,.35);}
  .khead .kname{font-weight:800; font-size:16px; flex:none; min-width:0;}
  .khead .ksrc{margin-left:0; align-self:flex-start;}
  .ksrc{display:inline-block; flex:none; font-size:13px; font-weight:800; letter-spacing:.3px; border-radius:999px; padding:1px 8px; margin-left:2px; white-space:nowrap; vertical-align:2px;}
  .ksrc-sj{background:#e0f2fe; color:#0369a1; border:1px solid #bae6fd;}
  .ksrc-zc{background:#fef3c7; color:#b45309; border:1px solid #fde68a;}
  .khead .kval{font-size:24px; font-weight:800; color:#0f172a; font-variant-numeric:tabular-nums;}
  /* 首解"今日新增"徽章（2026-10-30 用户要求：当日自测首解板块体现今日新增几单，收起状态也可见） */
  .khead .knew{font-size:13px; font-weight:900; border-radius:999px; padding:3px 10px; border:1px solid; white-space:nowrap; letter-spacing:.2px;}
  .khead .knew.bad{color:#b91c1c; background:#fee2e2; border-color:#fca5a5;}
  .khead .knew.ok{color:#0f766e; background:#ccfbf1; border-color:#5eead4;}
  .kcard.is-open .khead .knew{display:none;}
  /* 2026-11-03 用户定：收起态=单行摘要条，不再浪费两行空间。缩略数据=kmeta胶囊压缩截断 */
  .kcard:not(.is-open) .khead{flex-wrap:nowrap; flex-direction:row; padding:8px 16px; gap:9px; overflow:hidden; border-bottom:none;}
  .kcard:not(.is-open) .khbr{display:none;}
  .kcard:not(.is-open) .ptg{order:0; flex:none;}
  .kcard:not(.is-open) .num{order:1; width:22px; height:22px; font-size:13px; border-radius:7px; align-self:center; box-shadow:none;}
  .kcard:not(.is-open) .kh2col{order:2; flex:none; flex-direction:row; align-items:center; gap:6px;}
  .kcard:not(.is-open) .kname{font-size:14px;}
  .kcard:not(.is-open) .ksrc{align-self:center;}
  .kcard:not(.is-open) .kheadmeta{order:3; display:flex !important; flex:1 1 0; min-width:0; flex-wrap:nowrap; overflow:hidden; justify-content:flex-start; margin:0; gap:5px; -webkit-mask-image:linear-gradient(90deg,#000 78%,transparent); mask-image:linear-gradient(90deg,#000 78%,transparent);}
  .kcard:not(.is-open) .kheadmeta *{flex:none; white-space:nowrap;}
  .kcard:not(.is-open) .kheadmeta .sycnew{display:none;}   /* 收起态隐藏胶囊里的今日新增，保留右侧🆕徽章防重复且窄屏截断不丢信息 */
  .kcard:not(.is-open) .knew{order:4; flex:none; font-size:13px; padding:2px 8px;}
  .kcard:not(.is-open) .kval{order:5; flex:none; margin-left:0; font-size:16px; line-height:1.15;}
  .kcard:not(.is-open) .kval small{display:inline; font-size:13px; margin-left:3px; margin-top:0; text-align:left;}
  .kcard:not(.is-open) .tag{order:6; flex:none;}
  .kcard:not(.is-open) .kbody{display:none;}
  .khead .kval small{font-size:13px; color:#1c1c1c; font-weight:normal; display:block; text-align:right; margin-top:1px;}
  .kbody{padding:16px 20px; background:linear-gradient(180deg,#ffffff,#fbfdff);}
  .kbody label{font-size:13px; color:#1c1c1c; font-weight:800; display:block; margin:0 0 6px;}
  .kbody textarea{width:100%; border:1.5px solid #e2e8f0; border-radius:10px; padding:10px 12px; font-size:13px; min-height:72px; resize:none; overflow:hidden; font-family:inherit; outline:none; line-height:1.7; background:#fff; transition:border-color .15s, box-shadow .15s;}
  .kbody textarea:hover{border-color:#94a3b8;}
  .kbody textarea:focus{border-color:var(--blue); box-shadow:0 0 0 3px #dbeafe; background:#fff;}
  .kbody .block{margin-bottom:14px;} .kbody .block:last-child{margin-bottom:0;}
  .hint{font-size:13px; color:#1c1c1c; margin-top:5px; line-height:1.6; background:#f8fafc; border-left:3px solid #cbd5e1; border-radius:0 8px 8px 0; padding:6px 10px;}
  .todo{background:linear-gradient(180deg,#ffffff,#fbfdff);}
  .todo .row{position:relative; margin-bottom:9px;}
  .todo .row::before{content:attr(data-n); position:absolute; left:10px; top:50%; transform:translateY(-50%); width:22px; height:22px; background:linear-gradient(135deg,#3b82f6,#1d4ed8); color:#fff; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:13px; font-weight:800; box-shadow:0 2px 4px rgba(37,99,235,.3);}
  .todo .row:last-child{margin-bottom:0;}
  .todo input{width:100%; border:1.5px solid #e2e8f0; border-radius:999px; padding:9px 14px 9px 42px; font-size:13.5px; outline:none; background:#fff; transition:.15s;}
  .todo input:hover{border-color:#94a3b8;}
  .todo input:focus{border-color:var(--blue); box-shadow:0 0 0 3px #dbeafe;}
  .btns{display:flex; gap:12px; margin-top:20px; justify-content:center; flex-wrap:wrap;}
  .btn{border:none; border-radius:10px; padding:11px 26px; font-size:14px; font-weight:bold; cursor:pointer; transition:.15s;}
  .btn.primary{background:linear-gradient(135deg,#3b82f6,#1d4ed8); color:#fff; box-shadow:0 4px 12px rgba(37,99,235,.35);}
  .btn.primary:hover{transform:translateY(-1px); box-shadow:0 6px 16px rgba(37,99,235,.45);}
  .btn.primary:active{transform:translateY(0);}
  .btn.ghost{background:#fff; color:var(--blue); border:1.5px solid #bfdbfe;}
  .btn.ghost:hover{background:#eff6ff; border-color:var(--blue);}
  .toast{position:fixed; top:20px; left:50%; transform:translateX(-50%); background:#0f172a; color:#fff; padding:9px 20px; border-radius:8px; font-size:13px; opacity:0; transition:.3s; pointer-events:none; z-index:999;}
  .toast.show{opacity:.95;}
  @media print{ .seg,.btns,.toast,.wxbar{display:none;} body{background:#fff; padding:0;} }
  @media (max-width:760px){ .gkpi{grid-template-columns:repeat(2,1fr);} .grid2{grid-template-columns:1fr;} .cols2{flex-direction:column; align-items:stretch;} .cols2 .col{width:100%; max-width:100%; min-width:0;} .goals{grid-template-columns:repeat(2,1fr);} }
  /* ===== 手机适配（2026-10-28 用户反馈"手机打开排版不友好"）===== */
  @media (max-width:700px){
    body{font-size:14px;}
    /* 1) 目标卡：2列 + 允许换行不截断 */
    .goals{grid-template-columns:repeat(2,1fr); gap:8px;}
    .goal{padding:10px 10px 9px;}
    .goal .name,.goal .target,.goal .gvals{white-space:normal !important;}
    .goal .gvals{overflow:visible !important; font-size:13px;}
    .goal .ghead{flex-wrap:wrap; row-gap:2px;}
    .goal .gtail{align-items:flex-start;}
    /* 2) 明细表格：整表横向滑动，不再把列压成竖排字 */
    #daypage .ptab, #daypage table, #kpipage table{display:block; overflow-x:auto; -webkit-overflow-scrolling:touch;}
    #daypage .ptab, #kpipage table{min-width:680px;}
    #daypage table{min-width:640px;}
    #daypage .ptab td, #daypage .ptab th{white-space:nowrap;}
    /* 3) 芯片排：固定行距不重叠，触点稍大 */
    .pendsum{row-gap:10px; line-height:1.9;}
    .pendsum .pc{display:inline-block; margin-bottom:2px; padding:7px 13px;}
    .pc[data-f], .pc[data-p]{padding:7px 13px;}
    /* 4) 表格上方提示行收窄 */
    .panel-title .note{font-size:13px; line-height:1.45;}
    /* 5) 头部与页签略收紧 */
    .seg{flex-wrap:wrap;}
    /* 6) 手机上卡片标题行窄，居中悬浮胶囊改回行内，避免遮挡数值 */
    .khead .ptg{position:static; transform:none; margin-left:4px;}
  }

body{color:#111;background:#faf9f5;font-size:15px;font-weight:500;line-height:1.65}h1,h2,h3,th{color:#080808}button,input,textarea,select{font-family:inherit}input,textarea,select{color:#111;font-size:15px}input::placeholder,textarea::placeholder{color:#303030;opacity:1}.head{background:#244b79;box-shadow:none}.head h1,.head .sub,.head b{color:white}.head .sub{opacity:1;font-size:14px;font-weight:600}.head .seg button{font-size:14px;opacity:1}.head h1{font-size:31.5px}.seg button.on{color:#153f78}.panel,.gkpi .k{border-color:#918c83;box-shadow:0 2px 5px #00000012}.panel-title{color:#111;background:#f5f1e8;border-bottom-color:#aaa293;font-size:17px}.panel-title .note,.foot,.sup,.tgt,.sup b{color:#111;font-size:14px;font-weight:600;line-height:1.8}.panel-title .note{margin-top:7px}.gkpi .name{color:#111;font-size:16px}.gkpi .val{color:#080808}.gkpi .tgt{background:#e9e3d8;color:#111;border-color:#afa797}.gkpi .sup{display:block;-webkit-line-clamp:unset}.gkpi .st{font-size:16px}.gkpi .kmeta{gap:4px}.kmeta .mp{font-size:13px;color:#111}.kmeta .mp.up,.st.ok{color:#14532d}.kmeta .mp.dn,.st.no{color:#991b1b}.st.na{color:#252525}.rank .fill{background:#24529b}.rank .fill.low{background:#ae2828}.rank .fill.mid{background:#a66b05}.rank .fill.gray{background:#a29c92}.rank .nm{color:#111}.rank .v{font-size:15px}.rank .tot,.rank .row.other .tot,.rank small{color:#171717}.rank .row{flex-wrap:wrap}.rank .track{min-width:45px}.rank .v{min-width:155px}.rank .native-rank-note{width:100%;margin-left:32px;color:#171717;font-size:13px;font-weight:600}.dgrid-cell{width:45px;height:52px}.dgrid-head{width:45px}.dgc-row{height:56px}.dgn-row{height:56px}.dgrid-cell .r{font-size:14px}.dgrid-cell .c{font-size:12px;font-weight:800}.dgn-head,.dgrid-head{color:#111;font-size:12px}.dgrid-names .sub{color:#111;font-size:12px}.tcell{min-width:62px}.tcell .td1{font-size:13px}.tcell .td2{font-size:16px}.tcell .td3{font-size:13px}.tcell .cCx{background:#fff;color:#111;border-radius:3px;padding:0 2px}.native-table-wrap{overflow-x:auto}.native-table{width:100%;border-collapse:collapse;font-size:14px}.native-table th{padding:10px 8px;background:#eee8dd;border-bottom:1px solid #aba294;color:#111;white-space:nowrap}.native-table td{padding:10px 8px;color:#111;vertical-align:top;line-height:1.7;border-bottom:1px solid #d2cbbf}.native-table .native-reason{max-width:350px;min-width:170px;white-space:normal}.native-table a,.native-as{color:#173f81;text-decoration:underline;text-underline-offset:3px}.native-muted{color:#252525;font-size:14px;font-weight:600}.native-empty{padding:15px;color:#222;font-size:14px;font-weight:600}.native-source{font-size:13px;background:#f4ede0;color:#2c2012;border:1px solid #bca88d;border-radius:5px;padding:2px 5px}.native-chip{display:inline-block;border:1px solid #9d968a;background:#fffdf8;color:#111;border-radius:5px;padding:5px 9px;margin:3px;font-size:14px;font-weight:700;cursor:pointer}.native-chip.active{border-color:#244b79;background:#e3ecfb;color:#12366c;box-shadow:inset 0 0 0 1px #244b79}.native-danger{color:#991b1b!important}.native-good{color:#14532d!important}.native-detail{border:0;background:transparent;padding:0;color:#173f81;text-decoration:underline;cursor:pointer;font:inherit;font-weight:700}.native-cancel{background:#ccc5ba;color:#111;border-radius:3px;padding:2px 5px}.native-stacked{display:flex;gap:2px;height:16px;min-width:90px;background:#eee8dd;border-radius:3px;overflow:hidden}.native-stacked span{display:block;background:#bd850b}.native-stacked i{display:block;background:#807b74}.native-badge{font-size:13px;padding:2px 5px;border:1px solid #9d9586;border-radius:4px;color:#111;background:#ede7dc}.native-unknown{color:#222;font-weight:700}.native-contract{margin-top:7px;color:#171717;font-size:14px;font-weight:650}.local-tools{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:12px 0;font-size:14px;color:#111}.local-tools label{display:flex;gap:8px;align-items:center;font-weight:700}.local-tools input{max-width:150px;padding:6px;border:1px solid #9a9182;border-radius:5px;background:#fffdf8}.local-tools button{padding:7px 10px;border:1px solid #9a9182;background:#fffdf8;border-radius:5px;font-size:14px;color:#111;cursor:pointer}#localScope{flex:1;min-width:120px;color:#111;font-weight:600}dialog{max-width:1050px;width:calc(100% - 30px);max-height:85vh;border:1px solid #8a8170;border-radius:9px;background:#fffdf8;padding:0;color:#111}dialog::backdrop{background:#0006}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 20px;border-bottom:1px solid #aaa293;background:#f1ecdf}.dialog-head h2{font-size:20px;margin:0}.dialog-head button{border:0;background:none;color:#111;font-size:25px;cursor:pointer}#nativeDialogBody{padding:18px 20px;overflow:auto}#nativeDialogBody label{display:block;font-size:15px;font-weight:600;margin:10px 0 6px}#nativeDialogBody input,#nativeDialogBody select{padding:9px;border:1px solid #918674;border-radius:5px;max-width:100%;font-size:15px}#nativeDialogBody button:not(.native-detail){padding:8px 12px;border:1px solid #918674;border-radius:5px;font-size:14px;background:#fff9ee;color:#111;cursor:pointer}#nativeDialogBody .import-progress{font-size:14px;color:#111;white-space:pre-wrap}.native-review-preview{white-space:pre-wrap;font:15px/1.9 "Microsoft YaHei",sans-serif;color:#111}.native-review-source{font-size:14px;color:#111;font-weight:600}.head .bh-chip{font-size:13px;color:#fff;background:#ffffff12;border-color:#ffffff55}.head .bh-chip.bh-hd{color:#fff;background:#ffffff12}.head .bh-chip i{color:#fff;opacity:1}#rankbar{margin-top:14px}.rb-chip{margin:2px;font-size:13px}.native-official{display:flex;gap:10px;flex-wrap:wrap;color:#111;font-size:14px}.native-official span{padding:3px 7px;border:1px solid #a9a092;border-radius:5px;background:#f3eee5}.rb-gap,.rb-sub,.rb-lv{font-size:14px!important;color:#111!important}.native-wrap{white-space:normal}.native-grid-body{max-height:580px;overflow:auto}.native-links{line-height:1.9}.native-summary{font-size:14px;line-height:1.9;color:#111;font-weight:650}#nativePrint{display:none}.kcard .khead{color:#111;font-size:15px}.kcard .kbody label,.kcard .kbody .hint,.goals .gtgt{color:#111!important;font-size:14px!important;font-weight:650}.kcard textarea{font-size:15px;color:#111;background:#fffdf8;border-color:#958b7a;min-height:90px}.wgrid .wtile{border-color:#9d9485}.wgrid .wtile .wname{color:#111}.native-td-link{cursor:pointer}.bignum .v{font-size:34px}.bignum .d{color:#111;font-size:14px;font-weight:650}.native-panel-note{font-size:14px;color:#111;line-height:1.8}.native-rate{font-weight:900;font-variant-numeric:tabular-nums}.native-small{font-size:13px;color:#111}.native-block{display:block;margin-top:5px}.native-missing{font-weight:800;color:#222}.kpi-input{width:92px;text-align:center;border:1px solid #8d8372;border-radius:5px;padding:6px;font-size:14px}.native-form{display:grid;gap:12px}.native-form input{width:100%}.native-source-row{padding:12px 0;border-bottom:1px solid #cfc6b5;font-size:14px;line-height:1.9;overflow-wrap:anywhere}.native-timestamp{font-size:14px;color:#111;font-weight:650}
@media(max-width:760px){body{padding:12px;font-size:15px}.head{padding:14px}.head h1{font-size:25px}.head .seg button,#catSeg button{font-size:14px;padding:8px 10px}.head .hgrp{margin-left:0;gap:10px}#seg{flex-wrap:wrap}.head .sub{font-size:14px}.head .hrow3 .hdeliv{white-space:normal;font-size:14px}.gkpi{gap:9px}.gkpi .k{padding:13px 11px}.gkpi .name{font-size:15px}.gkpi .val{font-size:30px}.gkpi .tgt{font-size:13px;margin:5px 0 0;display:block;width:fit-content}.gkpi .st{font-size:14px}.gkpi .sup,.gkpi .kmeta,.gkpi .tgt{font-size:13px}.panel-title{font-size:16px;padding:12px}.panel-title .note{font-size:13px;line-height:1.8;margin-left:0}.avg-badge{position:static!important;display:block;width:fit-content;margin-top:7px;transform:none!important;font-size:14px}.rank .nm{width:78px;font-size:14px}.rank .v{min-width:144px;font-size:14px}.rank .track{height:12px}.rank .native-rank-note{font-size:13px}.pad{padding:12px}.dgrid-names{width:100px}.local-tools{gap:7px}.local-tools button{font-size:13px}.local-tools #localScope{width:100%;flex-basis:100%;font-size:13px}.native-table th,.native-table td{font-size:13px;padding:9px 7px}.native-source,.native-small{font-size:13px}.native-grid-body{max-height:480px}.foot{font-size:13px;line-height:1.8}.tcell{min-width:58px}.native-official{font-size:13px}.native-official span{padding:3px 5px}#nativeDialogBody{padding:14px}.native-timestamp{font-size:13px}}
@media print{body{padding:0;background:#fff}.page,#toast,dialog{display:none!important}#nativePrint{display:block!important;white-space:pre-wrap;font:14px/1.8 "Microsoft YaHei",sans-serif;color:#000;overflow-wrap:anywhere;break-inside:auto}}

.khead .kheadmeta{-webkit-mask-image:none!important;mask-image:none!important}.khead .kname,.khead .kval,.khead .tag{font-weight:800}.kbody[hidden],[hidden]{display:none!important}.kbody{padding:16px 20px}.kbody label{display:block;margin:12px 0 7px;font-size:15px;color:#111;font-weight:700}.kbody textarea{display:block;width:100%;padding:11px;font-size:15px;line-height:1.8;color:#111;border:1px solid #918675;border-radius:6px;resize:vertical}.tmini .tm{display:flex;justify-content:space-between;gap:6px;color:#111;font-size:13px;font-weight:700}.tmini .tm b{flex:none}.goal .name{color:#111;font-size:15px}.goal .glabel{color:#173d75;font-size:13px}.goal .target{font-size:17px;color:#173d75}.native-small{line-height:1.8}#daypage .kpi-input{max-width:110px}.kcard:not(.is-open) .khead .kheadmeta{overflow:auto;-webkit-mask-image:none;scrollbar-width:thin}.kcard .mp.nu{color:#111;background:#eee8dd;border-color:#b0a797}.kcard .ksrc-sj{color:#13486b}.kcard .ksrc-zc{color:#704600}.native-source{white-space:normal}
.tcell .td1,.tcell .td2,.tcell .td3,.tcell .td3 i{color:inherit}.tgrid{grid-template-columns:repeat(auto-fit,minmax(58px,1fr))}#rankTotal{position:static;display:block;transform:none;width:fit-content;max-width:100%;margin-top:6px}.native-rank-note details{white-space:normal}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #173f81;outline-offset:3px}
