@property --d-ang{syntax:'<angle>';inherits:false;initial-value:0deg}
:root{
  --d-sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --d-mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  --d-ease:cubic-bezier(.22,1,.36,1);
  --d-r:8px;
}
html[data-skin="mist"]{
  --d-bg:#E7ECF2;
  --d-top-bg:rgba(244,247,250,.82);
  --d-side-bg:rgba(250,252,254,.86);
  --d-panel:linear-gradient(180deg,#FFFFFF,#FBFCFE);
  --d-panel-hover:rgba(255,255,255,.9);
  --d-ink:#0E1D2A; --d-ink-2:#4C6176; --d-ink-3:#8295A7; --d-num:#08161F;
  --d-line:rgba(15,32,48,.10); --d-line-2:rgba(15,32,48,.19);
  --d-accent:#0B7185; --d-accent-bright:#12A3BB;
  --d-accent-dim:rgba(11,113,133,.08); --d-accent-line:rgba(11,113,133,.26);
  --d-ok:#0E7A56; --d-warn:#A1560F; --d-danger:#B03A33;
  --d-grid:rgba(15,50,80,.055);
  --d-aur-op:.5; --d-blend:multiply;
  --d-aur1:rgba(96,178,206,.55); --d-aur2:rgba(132,158,232,.42); --d-aur3:rgba(96,204,180,.30);
  --d-glow:0 0 0 0 rgba(0,0,0,0); --d-tglow:none;
  --d-shadow:0 1px 2px rgba(15,32,48,.05),0 8px 24px rgba(15,32,48,.06);
  --d-dw-shadow:-24px 0 60px rgba(15,32,48,.18);
  --d-mask:rgba(12,24,36,.34);
  --d-ctl-bg:rgba(255,255,255,.92);
}
html[data-skin="graphite"]{
  --d-bg:#161D26;
  --d-top-bg:rgba(22,29,38,.78);
  --d-side-bg:rgba(17,23,31,.82);
  --d-panel:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.022));
  --d-panel-hover:rgba(255,255,255,.07);
  --d-ink:#DDE7F1; --d-ink-2:#93A6B9; --d-ink-3:#66798D; --d-num:#F4F8FC;
  --d-line:rgba(150,190,225,.13); --d-line-2:rgba(150,190,225,.24);
  --d-accent:#63D6EA; --d-accent-bright:#63D6EA;
  --d-accent-dim:rgba(99,214,234,.10); --d-accent-line:rgba(99,214,234,.30);
  --d-ok:#57D3A2; --d-warn:#E8B272; --d-danger:#F08079;
  --d-grid:rgba(150,190,225,.05);
  --d-aur-op:.42; --d-blend:screen;
  --d-aur1:rgba(24,120,140,.40); --d-aur2:rgba(40,80,150,.32); --d-aur3:rgba(70,55,140,.22);
  --d-glow:0 0 12px rgba(99,214,234,.45); --d-tglow:none;
  --d-shadow:0 1px 0 rgba(255,255,255,.03) inset,0 10px 28px rgba(0,0,0,.28);
  --d-dw-shadow:-24px 0 70px rgba(0,0,0,.5);
  --d-mask:rgba(6,12,18,.55);
  --d-ctl-bg:rgba(24,32,42,.94);
}
html[data-skin="void"]{
  --d-bg:#05080D;
  --d-top-bg:rgba(5,9,14,.68);
  --d-side-bg:rgba(5,9,14,.72);
  --d-panel:linear-gradient(180deg,rgba(255,255,255,.048),rgba(255,255,255,.012));
  --d-panel-hover:rgba(255,255,255,.06);
  --d-ink:#E6F0FA; --d-ink-2:#8FA6BC; --d-ink-3:#5A7186; --d-num:#FFFFFF;
  --d-line:rgba(120,170,210,.14); --d-line-2:rgba(120,170,210,.26);
  --d-accent:#4ED8FF; --d-accent-bright:#4ED8FF;
  --d-accent-dim:rgba(78,216,255,.10); --d-accent-line:rgba(78,216,255,.34);
  --d-ok:#4FD8A0; --d-warn:#F0B35E; --d-danger:#FF7A6E;
  --d-grid:rgba(120,180,225,.055);
  --d-aur-op:.62; --d-blend:screen;
  --d-aur1:rgba(20,140,170,.42); --d-aur2:rgba(30,90,180,.34); --d-aur3:rgba(80,60,160,.22);
  --d-glow:0 0 12px rgba(78,216,255,.55); --d-tglow:0 0 18px rgba(78,216,255,.55);
  --d-shadow:0 1px 0 rgba(255,255,255,.03) inset,0 12px 32px rgba(0,0,0,.35);
  --d-dw-shadow:-30px 0 80px rgba(0,0,0,.6);
  --d-mask:rgba(2,5,8,.62);
  --d-ctl-bg:rgba(8,13,20,.92);
}
html[data-skin="rose"]{
  --d-bg:#FAF2F4;
  --d-top-bg:rgba(253,248,249,.84);
  --d-side-bg:rgba(255,251,252,.90);
  --d-panel:linear-gradient(180deg,#FFFFFF,#FFF9FA);
  --d-panel-hover:rgba(255,255,255,.94);
  --d-ink:#2C1B22; --d-ink-2:#6E525B; --d-ink-3:#A2878F; --d-num:#20131A;
  --d-line:rgba(96,44,60,.10); --d-line-2:rgba(96,44,60,.20);
  --d-accent:#A8445F; --d-accent-bright:#C4607A;
  --d-accent-dim:rgba(168,68,95,.075); --d-accent-line:rgba(168,68,95,.26);
  --d-ok:#2F7A5C; --d-warn:#9E5A12; --d-danger:#B03546;
  --d-grid:rgba(150,70,95,.045);
  --d-aur-op:.62; --d-blend:multiply;
  --d-aur1:rgba(246,168,186,.55); --d-aur2:rgba(206,178,232,.40); --d-aur3:rgba(252,206,176,.42);
  --d-glow:0 0 0 0 rgba(0,0,0,0); --d-tglow:none;
  --d-shadow:0 1px 2px rgba(96,44,60,.05),0 10px 26px rgba(96,44,60,.07);
  --d-dw-shadow:-24px 0 60px rgba(96,44,60,.20);
  --d-mask:rgba(58,24,34,.32);
  --d-ctl-bg:rgba(255,252,253,.94);
}
html[data-skin="macaron"]{
  --d-bg:#F7F5FA;
  --d-top-bg:rgba(252,251,254,.84);
  --d-side-bg:rgba(253,252,255,.90);
  --d-panel:linear-gradient(180deg,#FFFFFF,#FBFAFE);
  --d-panel-hover:rgba(255,255,255,.94);
  --d-ink:#241F2E; --d-ink-2:#5E5670; --d-ink-3:#948CA6; --d-num:#1B1725;
  --d-line:rgba(64,52,92,.09); --d-line-2:rgba(64,52,92,.19);
  --d-accent:#6B5E9C; --d-accent-bright:#8E7FC0;
  --d-accent-dim:rgba(107,94,156,.075); --d-accent-line:rgba(107,94,156,.25);
  --d-ok:#3E8A78; --d-warn:#B08321; --d-danger:#BB5A6C;
  --d-grid:rgba(96,76,140,.045);
  --d-aur-op:.66; --d-blend:multiply;
  --d-aur1:rgba(250,180,196,.50); --d-aur2:rgba(160,214,196,.52); --d-aur3:rgba(200,188,236,.52);
  --d-glow:0 0 0 0 rgba(0,0,0,0); --d-tglow:none;
  --d-shadow:0 1px 2px rgba(64,52,92,.05),0 10px 26px rgba(64,52,92,.07);
  --d-dw-shadow:-24px 0 60px rgba(64,52,92,.20);
  --d-mask:rgba(38,30,54,.30);
  --d-ctl-bg:rgba(253,252,255,.94);
}
@keyframes d-dr1{to{transform:translate3d(12vw,8vh,0) scale(1.14)}}
@keyframes d-dr2{to{transform:translate3d(-10vw,12vh,0) scale(1.1)}}
@keyframes d-dr3{to{transform:translate3d(8vw,-10vh,0) scale(1.18)}}
html[data-fx="0"] .dash .dash-bg .aur{opacity:.14}
html[data-fx="0"] .dash .dash-bg .aur i{animation:none}
.dash nav{flex:1;overflow-y:auto;padding:8px 0 14px;scrollbar-width:none}
.dash nav::-webkit-scrollbar{display:none}
.topbar{height:50px;display:flex;align-items:center;gap:11px;padding:0 24px;position:sticky;top:0;z-index:40;
  background:var(--d-top-bg);backdrop-filter:blur(18px);border-bottom:1px solid var(--d-line);transition:background .4s var(--d-ease)}
.topbar .cb{font-size:11.5px;color:var(--d-ink-3)}
.topbar .cb b{color:var(--d-ink-2);font-weight:500}
.topbar .cb i{margin:0 6px;opacity:.4;font-style:normal}
.topbar .sp{flex:1}
.topbar .live{display:inline-flex;align-items:center;gap:6px;font-family:var(--d-mono);font-size:9px;letter-spacing:.2em;color:var(--d-accent)}
.topbar .live::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--d-accent-bright);
  box-shadow:var(--d-glow);animation: d-blink 2.2s var(--d-ease) infinite}
@keyframes d-blink{0%,100%{opacity:1}50%{opacity:.35}}
.topbar .seg{position:relative;display:flex;padding:2px;border-radius:6px;border:1px solid var(--d-line);background:var(--d-accent-dim)}
.topbar .seg .pl{position:absolute;top:2px;left:2px;height:calc(100% - 4px);width:50px;border-radius:4px;
  background:var(--d-accent-dim);box-shadow:inset 0 0 0 1px var(--d-accent-line),var(--d-glow);
  transition:transform .32s var(--d-ease),width .32s var(--d-ease)}
.topbar .seg button{position:relative;z-index:1;border:0;background:transparent;font-family:inherit;font-size:11px;
  color:var(--d-ink-3);padding:3px 13px;cursor:pointer;transition:color .2s var(--d-ease)}
.topbar .seg button.on{color:var(--d-accent);font-weight:600}
.topbar .mt{display:flex;align-items:center;gap:13px;font-family:var(--d-mono);font-size:10px;color:var(--d-ink-3)}
.topbar .mt b{color:var(--d-ink-2);font-weight:500}
.topbar .mt .ok{color:var(--d-ok)}
.topbar .ib{width:27px;height:27px;display:grid;place-items:center;border:1px solid var(--d-line);border-radius:5px;
  background:transparent;color:var(--d-ink-2);cursor:pointer;transition:all .18s var(--d-ease)}
.topbar .ib:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.topbar .ib.spin svg{animation: d-sp .55s var(--d-ease)}
@keyframes d-sp{to{transform:rotate(360deg)}}
.topbar .prog{position:absolute;left:0;bottom:-1px;height:1px;background:var(--d-accent);box-shadow:var(--d-glow);
  width:100%;transform-origin:left;transform:scaleX(0);animation: d-tick 30s linear infinite;opacity:.6}
@keyframes d-tick{from{transform:scaleX(0)}to{transform:scaleX(1)}}
html[data-fx="0"] .topbar .prog{animation:none;opacity:.2}
.dash{padding:20px 24px 48px;max-width:none}
.dash .hd{display:flex;align-items:flex-end;gap:16px;margin-bottom:14px}
.dash h1{font-size:20px;font-weight:650;letter-spacing:-.01em}
.dash .hs{font-family:var(--d-mono);font-size:10px;color:var(--d-ink-3);margin-top:5px}
.dash .hs b{color:var(--d-accent);font-weight:500}
.dash .tabs{margin-left:auto;display:flex;position:relative}
.dash .tabs button{border:0;background:transparent;font-family:inherit;font-size:12px;color:var(--d-ink-3);
  padding:0 11px 9px;cursor:pointer;transition:color .2s var(--d-ease)}
.dash .tabs button.on{color:var(--d-ink);font-weight:600}
.dash .tabs .cnt{font-family:var(--d-mono);font-size:8.5px;color:var(--d-accent);margin-left:3px}
.dash .tl{position:absolute;left:11px;bottom:0;height:2px;border-radius:2px;background:var(--d-accent);box-shadow:var(--d-glow);
  transition:transform .34s var(--d-ease),width .34s var(--d-ease)}
.dash .tabs-wrap{border-bottom:1px solid var(--d-line)}
.dash .card{position:relative;border-radius:var(--d-r);background:var(--d-panel);border:1px solid var(--d-line);
  overflow:hidden;box-shadow:var(--d-shadow);
  transition:border-color .24s var(--d-ease),background .4s var(--d-ease),box-shadow .24s var(--d-ease);
  animation: d-up .55s var(--d-ease) both;animation-delay:calc(var(--i,0)*55ms)}
@keyframes d-up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.dash .card::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;
  transition:opacity .3s var(--d-ease);
  background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),var(--d-accent-dim),transparent 66%)}
.dash .card:hover{border-color:var(--d-line-2)}
.dash .card:hover::before{opacity:1}
.dash .beam::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;
  background:conic-gradient(from var(--d-ang),transparent 0deg,transparent 240deg,var(--d-accent-line) 320deg,var(--d-accent-bright) 345deg,transparent 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  animation: d-ang 7s linear infinite;opacity:0;transition:opacity .4s var(--d-ease)}
html[data-fx="2"] .dash .beam::after{opacity:.8}
html[data-fx="1"] .dash .beam::after{opacity:.35}
/* 描边光束：大部分时间静止，只在每一轮末尾扫一小段（持续重绘整卡边框很贵） */
@keyframes d-ang{0%,78%{--d-ang:0deg}100%{--d-ang:360deg}}
.dash .ch{display:flex;align-items:baseline;gap:9px;padding:12px 16px;border-bottom:1px solid var(--d-line)}
.dash .ch h2{font-size:11.5px;font-weight:600}
.dash .ch .d{font-size:9.5px;color:var(--d-ink-3)}
.dash .ch .r{margin-left:auto;font-family:var(--d-mono);font-size:9.5px;color:var(--d-ink-3)}
.dash .hero{margin-bottom:12px}
.dash .hero .kpis{display:grid;grid-template-columns:repeat(4,1fr)}
.dash .kpi{padding:16px 20px 15px;position:relative}
.dash .kpi+.kpi{border-left:1px solid var(--d-line)}
.dash .kpi-l{display:flex;align-items:center;gap:6px;font-size:10px;letter-spacing:.08em;color:var(--d-ink-3);margin-bottom:11px}
.dash .kpi-l svg{opacity:.55}
.dash .kpi-v{display:flex;align-items:baseline;gap:4px;font-family:var(--d-mono);font-size:38px;font-weight:600;
  line-height:1;letter-spacing:-.035em;color:var(--d-num)}
.dash .kpi-v small{font-family:var(--d-sans);font-size:10px;font-weight:400;color:var(--d-ink-3)}
.dash .kpi-s{font-size:9.5px;color:var(--d-ink-3);margin-top:9px}
.dash .kpi-s .hi{color:var(--d-accent)}
.dash .kpi .tickmark{position:absolute;right:0;bottom:0;width:26px;height:26px;opacity:.14;
  background:linear-gradient(135deg,transparent 50%,var(--d-accent) 50%,var(--d-accent) 51%,transparent 51%)}
.dash .rail-wrap{padding:28px 16px 20px}
.dash .rail{position:relative;display:grid;grid-template-columns:repeat(9,1fr)}
.dash .rhead{position:absolute;top:-16px;left:0;right:0;display:grid;grid-template-columns:3fr 3fr 3fr;
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.2em;color:var(--d-ink-3)}
.dash .rhead span{padding-left:2px}
.dash .st{position:relative;padding:2px 6px 0;cursor:default}
.dash .st::before{content:"";position:absolute;left:-50%;top:11px;width:100%;height:1px;
  background:repeating-linear-gradient(90deg,var(--d-line-2) 0 3px,transparent 3px 7px);
  background-size:7px 1px;animation: d-flow 6s linear infinite;opacity:.8}
.dash .st:nth-child(2)::before,
.dash .st:nth-child(5)::before,
.dash .st:nth-child(8)::before{display:none}
@keyframes d-flow{to{background-position:7px 0}}
html[data-fx="0"] .dash .st::before{animation:none}
.dash .st b{position:relative;display:block;font-family:var(--d-mono);font-size:22px;font-weight:600;line-height:1;
  letter-spacing:-.03em;color:var(--d-num);transition:color .2s var(--d-ease)}
.dash .st:hover b{color:var(--d-accent);text-shadow:var(--d-tglow)}
.dash .st span{display:block;font-size:10.5px;color:var(--d-ink-2);margin-top:9px}
.dash .st i{display:block;font-size:9px;color:var(--d-ink-3);margin-top:1px}
.dash .st .rt{display:inline-flex;align-items:center;gap:3px;margin-top:5px;font-family:var(--d-mono);font-size:9.5px;color:var(--d-accent)}
.dash .st .rt::before{content:"↘";font-size:9px;opacity:.8}
.dash .st[data-tip]:hover::after{content:attr(data-tip);position:absolute;left:6px;top:calc(100% + 4px);z-index:9;
  white-space:nowrap;font-size:9px;color:var(--d-ink-2);background:var(--d-side-bg);
  border:1px solid var(--d-line-2);padding:4px 7px;border-radius:4px;box-shadow:var(--d-shadow);
  animation: d-tipin .16s var(--d-ease)}
@keyframes d-tipin{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.dash .cols{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:12px;align-items:start;margin-top:12px}
.dash .filters{display:flex;gap:5px;padding:9px 16px;border-bottom:1px solid var(--d-line);flex-wrap:wrap}
.dash .chip{border:1px solid var(--d-line);background:transparent;border-radius:4px;font-family:inherit;font-size:10px;
  color:var(--d-ink-3);padding:3px 9px;cursor:pointer;transition:all .18s var(--d-ease)}
.dash .chip:hover{color:var(--d-ink-2);border-color:var(--d-line-2)}
.dash .chip.on{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.dash .tbl{width:100%;border-collapse:collapse}
.dash .tbl th{font-family:var(--d-mono);font-size:8.5px;letter-spacing:.14em;color:var(--d-ink-3);font-weight:500;
  text-align:left;padding:8px;border-bottom:1px solid var(--d-line);white-space:nowrap}
.dash .tbl th:first-child,
.dash .tbl td:first-child{padding-left:16px}
.dash .tbl th:last-child,
.dash .tbl td:last-child{padding-right:16px}
.dash .tbl td{padding:8px;font-size:11px;border-bottom:1px solid var(--d-line);
  font-variant-numeric:tabular-nums;white-space:nowrap;transition:background .16s var(--d-ease)}
.dash .tbl tbody tr{cursor:pointer}
.dash .tbl tbody tr:last-child td{border-bottom:0}
.dash .tbl tbody tr:hover td{background:var(--d-accent-dim)}
.dash .tbl tbody tr:hover td:first-child{box-shadow:inset 2px 0 0 var(--d-accent)}
.dash .tbl .nm{font-weight:600;color:var(--d-num)}
.dash .tbl .dim{color:var(--d-ink-3)}
.dash .tbl .r{text-align:right}
.dash .dot{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--d-ink-2)}
.dash .dot::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--d-ink-3)}
.dash .dot.on::before{background:var(--d-ok);box-shadow:var(--d-glow)}
.dash .bar{display:inline-block;width:38px;height:2px;background:var(--d-line);margin-left:6px;
  vertical-align:middle;border-radius:1px;overflow:hidden}
.dash .bar i{display:block;height:100%;background:var(--d-accent);box-shadow:var(--d-glow)}
.dash .warnv{color:var(--d-warn)}
.dash .r3{display:grid;grid-template-columns:repeat(3,1fr)}
.dash .rc{padding:11px 15px 13px}
.dash .rc+.rc{border-left:1px solid var(--d-line)}
.dash .rc-h{font-family:var(--d-mono);font-size:8.5px;letter-spacing:.16em;color:var(--d-ink-3);margin-bottom:7px}
.dash .rr{display:grid;grid-template-columns:14px 1fr auto;gap:7px;align-items:start;padding:5px 0}
.dash .rr+.rr{border-top:1px solid var(--d-line)}
.dash .rk{font-family:var(--d-mono);font-size:9.5px;color:var(--d-ink-3);padding-top:2px}
.dash .rr.f .rk{color:var(--d-accent);font-weight:700;text-shadow:var(--d-tglow)}
.dash .rn{font-size:11px;font-weight:600}
.dash .rp{font-size:9px;color:var(--d-ink-3);margin-top:1px}
.dash .rp b{color:var(--d-ok);font-weight:500}
.dash .rv{font-family:var(--d-mono);font-size:11px}
.dash .ann{padding:15px 16px 16px}
.dash .ann-h{display:flex;align-items:center;gap:7px;margin-bottom:11px}
.dash .ann-h h2{font-family:var(--d-mono);font-size:8.5px;letter-spacing:.2em;color:var(--d-ink-3)}
.dash .bdg{margin-left:auto;font-size:9px;font-weight:600;padding:2px 7px;border-radius:4px;
  background:var(--d-accent-dim);color:var(--d-accent);box-shadow:inset 0 0 0 1px var(--d-accent-line)}
.dash .ann-t{font-size:14px;font-weight:600;line-height:1.45}
.dash .ann-m{display:flex;align-items:center;gap:7px;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3);margin-top:7px}
.dash .ann-m i{width:2px;height:2px;border-radius:50%;background:var(--d-ink-3)}
.dash .ann-b{font-size:11px;color:var(--d-ink-2);line-height:1.9;margin-top:11px;padding-top:11px;border-top:1px solid var(--d-line)}
.dash .ann-b p+p{margin-top:6px}
.dash .ann-b b{color:var(--d-ink);font-weight:600}
.dash .ann-f{display:flex;align-items:center;gap:6px;margin-top:11px;padding:6px 8px;border:1px solid var(--d-line);
  border-radius:4px;font-size:10.5px;color:var(--d-ink-2);cursor:pointer;transition:all .18s var(--d-ease)}
.dash .ann-f:hover{border-color:var(--d-accent-line);color:var(--d-accent);background:var(--d-accent-dim)}
.dash .more{margin-top:10px;font-size:10px;color:var(--d-accent);cursor:pointer;display:inline-block}
/* 公告整卡可点：桌面 hover 时给一点反馈，触屏没有 hover 也不影响 */
.dash .ann.is-clickable{cursor:pointer;transition:border-color .18s var(--d-ease),box-shadow .18s var(--d-ease)}
.dash .ann.is-clickable:hover{border-color:var(--d-accent-line);box-shadow:var(--d-shadow,0 6px 20px rgba(8,22,31,.08))}
.dash .ann.is-clickable:active{opacity:.92}
.dash .todo{margin-top:12px;padding-bottom:3px}
.dash .th{display:flex;align-items:center;gap:7px;padding:12px 16px 10px;border-bottom:1px solid var(--d-line)}
.dash .th h2{font-family:var(--d-mono);font-size:8.5px;letter-spacing:.2em;color:var(--d-ink-3)}
.dash .th span{margin-left:auto;font-size:9px;color:var(--d-ink-3)}
.dash .tg{padding:7px 0 2px}
.dash .tgh{display:flex;align-items:center;gap:6px;padding:2px 16px 4px;font-family:var(--d-mono);font-size:8.5px;
  letter-spacing:.16em;color:var(--d-ink-3)}
.dash .tgh b{color:var(--d-accent)}
.dash .tr{display:grid;grid-template-columns:6px 1fr auto;gap:8px;align-items:center;padding:6px 16px;
  cursor:pointer;transition:background .16s var(--d-ease);position:relative;touch-action:manipulation}
.dash .tr:hover{background:var(--d-accent-dim)}
.dash .tr .d{width:4px;height:4px;border-radius:50%;justify-self:center}
.dash .tr.hot .d{background:var(--d-accent);box-shadow:var(--d-glow)}
.dash .tr .l{font-size:11px}
.dash .tr .l i{display:block;font-size:9px;color:var(--d-ink-3);margin-top:1px}
.dash .tr .v{font-family:var(--d-mono);font-size:13px;font-weight:600;transition:opacity .18s var(--d-ease)}
.dash .tr .v small{font-family:var(--d-sans);font-size:9px;font-weight:400;color:var(--d-ink-3);margin-left:2px}
.dash .tr.mute .v{color:var(--d-ink-3);font-weight:500}
.dash .tr .act{position:absolute;right:13px;top:50%;transform:translateY(-50%) translateX(5px);opacity:0;
  font-size:9px;color:var(--d-accent);transition:all .2s var(--d-ease);pointer-events:none}
.dash .tr:hover .act{opacity:1;transform:translateY(-50%)}
.dash .tr:hover .v{opacity:0}
.dash .ops{display:grid;grid-template-columns:repeat(5,1fr);padding:9px 0 13px}
.dash .oc{padding:0 15px}
.dash .oc:first-child{padding-left:16px}
.dash .oc:last-child{padding-right:16px}
.dash .oc+.oc{border-left:1px solid var(--d-line)}
.dash .oc-h{font-size:10px;color:var(--d-ink-2);line-height:1.35}
.dash .oc-h em{display:block;font-family:var(--d-mono);font-size:8px;letter-spacing:.1em;color:var(--d-ink-3);margin-top:3px}
.dash .oc .rr{grid-template-columns:12px 1fr auto}
.dash .oc .rn{font-size:10.5px;font-weight:500}
.dash .note{padding:0 16px 13px;font-size:9px;color:var(--d-ink-3);line-height:1.8}
.dash .note b{color:var(--d-ink-2);font-weight:500}
.dash .mask{position:fixed;inset:0;background:var(--d-mask);backdrop-filter:blur(3px);opacity:0;pointer-events:none;
  transition:opacity .28s var(--d-ease);z-index:60}
.dash .mask.on{opacity:1;pointer-events:auto}
.dash .dw{position:fixed;top:0;right:0;width:560px;max-width:96vw;height:100vh;z-index:70;display:flex;flex-direction:column;
  background:var(--d-side-bg);border-left:1px solid var(--d-line-2);transform:translateX(100%);
  transition:transform .38s var(--d-ease),background .4s var(--d-ease);box-shadow:var(--d-dw-shadow)}
.dash .dw.on{transform:none}
.dash .dw-h{padding:17px 19px 13px;border-bottom:1px solid var(--d-line);display:flex;align-items:flex-start;gap:9px}
.dash .dw-no{font-family:var(--d-mono);font-size:9px;letter-spacing:.18em;color:var(--d-accent);padding-top:4px}
.dash .dw-n{font-size:16px;font-weight:650}
.dash .dw-s{font-family:var(--d-mono);font-size:9.5px;color:var(--d-ink-3);margin-top:3px}
.dash .dw-x{margin-left:auto;width:24px;height:24px;border:1px solid var(--d-line);background:transparent;border-radius:5px;
  color:var(--d-ink-2);cursor:pointer;font-size:13px;line-height:1;transition:all .16s var(--d-ease)}
.dash .dw-x:hover{color:var(--d-accent);border-color:var(--d-accent-line)}
.dash .dw-b{flex:1;overflow-y:auto;padding:4px 19px 22px;scrollbar-width:thin}
.dash .sec{padding:13px 0;border-bottom:1px solid var(--d-line)}
.dash .sec:last-child{border-bottom:0}
.dash .sec h3{font-family:var(--d-mono);font-size:8.5px;letter-spacing:.18em;color:var(--d-ink-3);margin-bottom:9px}
.dash .dr{display:flex;justify-content:space-between;padding:5px 0;font-size:11px}
.dash .dr span{color:var(--d-ink-2)}
.dash .dr b{font-family:var(--d-mono)}
.dash .tl2{position:relative;padding-left:13px}
.dash .tl2::before{content:"";position:absolute;left:2px;top:6px;bottom:6px;width:1px;background:var(--d-line-2)}
.dash .ev{position:relative;padding:5px 0;font-size:10.5px;color:var(--d-ink-2)}
.dash .ev::before{content:"";position:absolute;left:-14px;top:9px;width:5px;height:5px;border-radius:50%;
  background:var(--d-bg);border:1px solid var(--d-ink-3)}
.dash .ev.on::before{border-color:var(--d-accent);background:var(--d-accent);box-shadow:var(--d-glow)}
.dash .ev b{font-family:var(--d-mono);font-size:9.5px;color:var(--d-ink-3);font-weight:400;margin-right:7px}
.dash-ctl{position:fixed;right:18px;bottom:18px;z-index:80;display:flex;align-items:center;gap:5px;padding:5px;
  background:var(--d-ctl-bg);border:1px solid var(--d-line-2);border-radius:7px;box-shadow:var(--d-shadow);
  backdrop-filter:blur(16px)}
.dash-ctl .lb{font-family:var(--d-mono);font-size:8px;letter-spacing:.16em;color:var(--d-ink-3);padding:0 3px}
.dash-ctl .vsep{width:1px;height:15px;background:var(--d-line-2);margin:0 3px}
.dash-ctl button{border:0;background:transparent;font-family:inherit;font-size:10px;color:var(--d-ink-3);
  padding:4px 8px;border-radius:4px;cursor:pointer;transition:all .18s var(--d-ease)}
.dash-ctl button.on{background:var(--d-accent-dim);color:var(--d-accent);box-shadow:inset 0 0 0 1px var(--d-accent-line)}

@media (max-width:1360px){
.dash .cols{grid-template-columns:1fr}
.dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
.dash .rail{grid-template-columns:repeat(5,1fr);row-gap:18px}
.dash .ops{grid-template-columns:repeat(2,1fr);row-gap:14px}
}
/* ============================================================
   背景层：网格 + 三团极光 + 顶部地平线（tech4 原样）
   ============================================================ */
.dash-bg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.dash-bg .grid{position:absolute;inset:0;
  background-image:linear-gradient(var(--d-grid) 1px,transparent 1px),linear-gradient(90deg,var(--d-grid) 1px,transparent 1px);
  background-size:54px 54px;
  -webkit-mask-image:radial-gradient(1100px 640px at 62% -6%,#000 12%,transparent 76%);
  mask-image:radial-gradient(1100px 640px at 62% -6%,#000 12%,transparent 76%)}
/* 极光：用径向渐变本身做柔边，不用 filter:blur（96px 模糊面积太大，集显必掉帧） */
.dash-bg .aur{position:absolute;inset:-25%;opacity:var(--d-aur-op);transition:opacity .5s var(--d-ease)}
.dash-bg .aur i{position:absolute;display:block;border-radius:50%;mix-blend-mode:var(--d-blend);will-change:transform}
.dash-bg .aur i:nth-child(1){width:46vw;height:46vw;left:2%;top:-8%;
  background:radial-gradient(circle,var(--d-aur1) 0%,transparent 62%);animation:d-dr1 42s ease-in-out infinite alternate}
.dash-bg .aur i:nth-child(2){width:38vw;height:38vw;right:2%;top:2%;
  background:radial-gradient(circle,var(--d-aur2) 0%,transparent 60%);animation:d-dr2 52s ease-in-out infinite alternate}
.dash-bg .aur i:nth-child(3){width:34vw;height:34vw;left:38%;bottom:-14%;
  background:radial-gradient(circle,var(--d-aur3) 0%,transparent 58%);animation:d-dr3 60s ease-in-out infinite alternate}
@keyframes d-dr1{to{transform:translate3d(12vw,8vh,0) scale(1.14)}}
@keyframes d-dr2{to{transform:translate3d(-10vw,12vh,0) scale(1.1)}}
@keyframes d-dr3{to{transform:translate3d(8vw,-10vh,0) scale(1.18)}}
.dash-bg .horizon{position:absolute;left:0;right:0;top:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--d-accent-line),transparent);opacity:.55}
html[data-fx="0"] .dash-bg .aur{opacity:.14}
html[data-fx="0"] .dash-bg .aur i{animation:none}

/* ============================================================
   全局底色：整站跟随主题（原来只有大纲页变，其他页还是老紫底）
   ============================================================ */
html[data-skin] body{background:var(--d-bg);color:var(--d-ink);
  transition:background-color .4s var(--d-ease),color .4s var(--d-ease)}
html[data-skin] .app{background:transparent}

/* 内容区：大盘自带 20/24 内边距，外层不再叠加 */
.content.dash-host{padding:0 !important;max-width:none !important;background:transparent !important;min-height:0 !important}
.content.dash-host > .page-head,
.content.dash-host > .toolbar{display:none !important}

/* ============================================================
   主题控件：底部右侧浮条（tech4 原样位置）
   ============================================================ */
.dash-ctl{bottom:18px;right:18px}
.dash-ctl .lb{margin-right:2px}

/* ============================================================
   顶栏：面包屑 + 大盘集群 + 原有提醒按钮（改成同一套小控件）
   ============================================================ */
.topbar{position:relative}
.topbar .topbar-dash{display:flex;align-items:center;gap:11px}
.topbar-right{display:flex;align-items:center;gap:6px}

/* 任务 / 通知 / 提醒 / 公告：由实心色块改成 27px 描边小控件 */
.topbar .topbar-alert,
.topbar .topbar-alert.notify,
.topbar .topbar-alert.warn{
  height:27px !important;min-height:27px !important;padding:0 9px !important;
  border-radius:5px !important;border:1px solid var(--d-line) !important;
  background:transparent !important;color:var(--d-ink-2) !important;
  box-shadow:none !important;font-size:10.5px !important;font-weight:500 !important;
  display:inline-flex !important;align-items:center !important;gap:6px !important;
  transition:color .18s var(--d-ease),border-color .18s var(--d-ease),background .18s var(--d-ease) !important;
}
.topbar .topbar-alert:hover{
  color:var(--d-accent) !important;border-color:var(--d-accent-line) !important;
  background:var(--d-accent-dim) !important;transform:none !important;
}
.topbar .topbar-alert svg{width:13px !important;height:13px !important;opacity:.85}
.topbar .topbar-alert b,
.topbar .topbar-alert em{
  font-family:var(--d-mono) !important;font-style:normal !important;font-size:9px !important;
  font-weight:600 !important;padding:0 4px;border-radius:3px;
  background:var(--d-accent-dim);color:var(--d-accent);box-shadow:inset 0 0 0 1px var(--d-accent-line);
}
.topbar .topbar-alert.task-running{color:var(--d-accent) !important;border-color:var(--d-accent-line) !important}
.topbar .theme-toggle,
.topbar .date{
  height:27px !important;border:1px solid var(--d-line) !important;border-radius:5px !important;
  background:transparent !important;color:var(--d-ink-3) !important;
  font-family:var(--d-mono) !important;font-size:9.5px !important;box-shadow:none !important;
}
.topbar .date{display:inline-flex;align-items:center;padding:0 8px !important}
.topbar .menu-toggle{display:none}

/* 大盘里隐藏顶部重复的工具条 */
.content.dash-host .home-tabs{display:none !important}

@media (prefers-reduced-motion:reduce){
  .dash *, .dash-ctl *, .dash-bg *{animation:none !important;transition:none !important}
}

/* 侧栏 / 顶栏用同一套底色与分隔线 */
html[data-skin] .sidebar{
  background:var(--d-side-bg) !important;
  border-right:1px solid var(--d-line) !important;
  backdrop-filter:blur(18px);
}
html[data-skin] .topbar{
  background:var(--d-top-bg) !important;
  border-bottom:1px solid var(--d-line) !important;
  backdrop-filter:blur(18px);
}

/* 大盘内表格与卡片里，避免老皮肤规则串色（光斑几何由 .card::before 统一负责） */
.content.dash-host .card::before{background:radial-gradient(circle,var(--d-accent-dim) 0%,transparent 64%) !important}

/* ============================================================
   强制夺回：ui.css 里 `html[data-skin] .card { !important }` 会压过
   `.dash .card`，这里用同前缀 + 更高特异性把卡片形态按 tech4 定死
   ============================================================ */
html[data-skin] .dash .card{
  border-radius:var(--d-r) !important;
  border:1px solid var(--d-line) !important;
  background:var(--d-panel) !important;
  box-shadow:var(--d-shadow) !important;
  overflow:hidden !important;
  position:relative !important;
  animation:d-up .55s var(--d-ease) both !important;
  animation-delay:calc(var(--i,0)*55ms) !important;
}
/* 首页/待办这些「骨架卡」内部是 .ch + 列表，靠自身分段内边距，卡片本身留 0；
   业务学院例外——它的卡片用的是内联 padding，清零会让文字直接贴住边框 */
html[data-skin] .dash:not(.ac-dash) .card{padding:0 !important}
html[data-skin] .dash .card:hover{border-color:var(--d-line-2) !important}
html[data-skin] .dash .card::before{
  content:"";position:absolute;left:0;top:0;width:520px;height:520px;border-radius:50%;
  pointer-events:none;opacity:0;will-change:transform;
  transition:opacity .3s var(--d-ease);
  background:radial-gradient(circle,var(--d-accent-dim) 0%,transparent 64%) !important;
  transform:translate3d(calc(var(--mx,0px) - 260px),calc(var(--my,0px) - 260px),0);
}
html[data-skin] .dash .card:hover::before{opacity:1 !important}
html[data-skin] .dash .card.beam::after{
  content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;
  background:conic-gradient(from var(--d-ang),transparent 0deg,transparent 240deg,var(--d-accent-line) 320deg,var(--d-accent-bright) 345deg,transparent 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  animation:d-ang 7s linear infinite;opacity:0;transition:opacity .4s var(--d-ease);
}
html[data-fx="2"] .dash .card.beam::after{opacity:.8 !important}
html[data-fx="1"] .dash .card.beam::after{opacity:.35 !important}
html[data-fx="0"] .dash .card.beam::after{opacity:.12 !important;animation:none !important}

/* 空态 */
.dash-empty{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  padding:54px 16px;text-align:center;
  font-size:11.5px;color:var(--d-ink-2);
}
.dash-empty span{font-size:9.5px;color:var(--d-ink-3);font-family:var(--d-mono)}
.dash-empty.slim{padding:26px 16px}
.dash-empty.tight{padding:14px 16px}

/* KPI 缺失值 */
.dash .kpi-v .na{
  font-family:var(--d-mono);font-size:26px;font-weight:500;color:var(--d-ink-3);letter-spacing:-.02em;
}

/* 侧栏文字层级（与 tech4 一致：无图标、分组名等宽小字、选中 2px 竖条） */
html[data-skin] .sidebar .nav-item{font-size:12px !important}
html[data-skin] .sidebar .nav-group-head,
html[data-skin] .sidebar .nav-group-label,
html[data-skin] .sidebar .nav-group > .nav-group-head span:not(.nav-icon){
  font-family:var(--d-mono) !important;
  font-size:8.5px !important;
  letter-spacing:.2em !important;
  color:var(--d-ink-3) !important;
  opacity:.65;
}

/* 顶栏三段式：面包屑 · 大盘集群（靠右） · 提醒按钮 */
.topbar .topbar-dash{margin-left:auto}
.topbar .cb i{margin:0 6px;opacity:.4;font-style:normal}
.topbar .cb b{color:var(--d-ink-2);font-weight:500}

/* 层级：背景层在内容之下 */
html[data-skin] .app{position:relative;z-index:1}

/* 带内边距的卡片（公告 / 待办） */
html[data-skin] .dash .card.ann{padding:15px 16px 16px !important}
html[data-skin] .dash .card.todo{padding:0 0 3px !important}

.topbar > div:first-child{flex:1;min-width:0;gap:12px}
/* 30 秒静默刷新时不重播进场动画 */
html[data-skin] .dash.dash-ready .card{animation:none !important}

/* 首屏节奏：KPI 与漏斗、漏斗与三栏之间都只留 12px */
html[data-skin] .dash .card.hero{margin-bottom:0 !important}

/* 主题条给右下角的群聊按钮让位（tech4 稿里两者也是一左一右） */
.dash-ctl{right:92px !important}
/* 主题按钮已由底栏接管；日期已在大盘集群里，避免重复 */
.topbar .theme-toggle{display:none !important}
.topbar .date{display:none !important}
/* 群聊按钮与整体语言统一 */
html[data-skin] .chat-fab{
  width:44px !important;height:44px !important;border-radius:10px !important;
  background:var(--d-accent) !important;color:#fff !important;
  box-shadow:0 10px 24px -12px rgba(10,20,32,.55) !important;font-size:18px !important;
}

/* 全屏跟随光晕：鼠标位置 → 一块固定尺寸的光斑用 transform 移动（不重绘渐变） */
.dash-bg::after{
  content:"";position:absolute;left:0;top:0;width:1120px;height:1120px;border-radius:50%;
  pointer-events:none;will-change:transform;
  background:radial-gradient(circle,var(--d-accent-dim) 0%,transparent 60%);
  transform:translate3d(calc(var(--px,50vw) - 560px),calc(var(--py,38vh) - 560px),0);
  opacity:0;transition:opacity .45s var(--d-ease);
}
html[data-fx="2"] .dash-bg::after{opacity:1}
html[data-fx="1"] .dash-bg::after{opacity:.6}
html[data-fx="0"] .dash-bg::after{opacity:0}

/* ============================================================
   20. 客户端活跃 + 招募漏斗明细：并排一行，内部各自滚动
   ============================================================ */
.dash .two{
  display:grid;
  grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);
  gap:12px;
  height:404px;
  margin-bottom:0;
}
.dash .two > .card{
  display:flex;flex-direction:column;min-height:0;
  margin:0 !important;height:100%;
}
.dash .two > .card > .ch,
.dash .two > .card > .filters{flex:0 0 auto}
.dash .two > .card > .tbl-scroll,
.dash .two > .card > .rec-scroll{
  flex:1 1 auto;min-height:0;overflow:auto;
  scrollbar-width:thin;
}
.dash .two > .card > .tbl-scroll table.tbl{margin:0}
.dash .two .rec-scroll table.bhs-tbl{min-width:640px}
.dash .two .rec-scroll::-webkit-scrollbar,
.dash .two .tbl-scroll::-webkit-scrollbar{width:8px;height:8px}
.dash .two .rec-scroll::-webkit-scrollbar-thumb,
.dash .two .tbl-scroll::-webkit-scrollbar-thumb{background:var(--d-line-2);border-radius:4px}
@media (max-width:1180px){
  .dash .two{grid-template-columns:1fr;height:auto}
  .dash .two > .card{height:360px}
}

/* ============================================================
   21. 页头：标题 + 设备概览入口
   ============================================================ */
.dash .hd-t{display:flex;align-items:center;gap:11px}
.dash .hd-dev{
  height:26px;padding:0 10px;
  display:inline-flex;align-items:center;gap:6px;
  border:1px solid var(--d-line);border-radius:5px;
  background:transparent;color:var(--d-ink-3);
  font-family:inherit;font-size:10.5px;font-weight:500;cursor:pointer;
  transition:color .18s var(--d-ease),border-color .18s var(--d-ease),background .18s var(--d-ease);
}
.dash .hd-dev b{font-family:var(--d-mono);font-size:9.5px;font-weight:600;color:var(--d-accent)}
.dash .hd-dev:hover{
  color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim);
}

/* ============================================================
   22. 侧栏：大分类大字 / 子菜单小字
   ============================================================ */
html[data-skin] .sidebar .gh,
html[data-skin] .sidebar .nav-group-label{
  font-family:var(--d-sans) !important;
  font-size:13px !important;
  font-weight:600 !important;
  letter-spacing:0 !important;
  text-transform:none !important;
  color:var(--d-ink-2) !important;
  opacity:1 !important;
  padding:15px 16px 5px !important;
}
html[data-skin] .sidebar .nav-item{
  font-size:11.5px !important;
  padding:5px 16px 5px 22px !important;
  color:var(--d-ink-3) !important;
}
html[data-skin] .sidebar .nav-item:hover{color:var(--d-ink-2) !important}
html[data-skin] .sidebar .nav-item.active{color:var(--d-ink) !important;font-weight:600 !important}

/* ============================================================
   23. 右下角：主题条贴右边，群聊按钮叠在它上方
   ============================================================ */
.dash-ctl{right:18px !important;bottom:18px !important}
html[data-skin] .chat-fab{
  right:18px !important;
  bottom:72px !important;
}

/* ============================================================
   24. 抽屉：结构重排，功能一个不动（.bhs-* 由 app.js 渲染）
   ============================================================ */
html[data-skin] .dash .dw{
  background:var(--d-panel) !important;
  border-left:1px solid var(--d-line) !important;
  box-shadow:-40px 0 80px -60px rgba(6,14,26,.75) !important;
}
html[data-skin] .dash .dw-h{
  padding:16px 18px 14px !important;
  border-bottom:1px solid var(--d-line) !important;
  background:transparent !important;
}
html[data-skin] .dash .dw-no{
  font-family:var(--d-mono) !important;font-size:8.5px !important;
  letter-spacing:.2em !important;color:var(--d-accent) !important;
}
html[data-skin] .dash .dw-n{font-size:15px !important;font-weight:650 !important;color:var(--d-ink) !important}
html[data-skin] .dash .dw-s{font-family:var(--d-mono) !important;font-size:9px !important;color:var(--d-ink-3) !important}
html[data-skin] .dash .dw-x{
  width:24px !important;height:24px !important;border-radius:5px !important;
  border:1px solid var(--d-line) !important;background:transparent !important;
  color:var(--d-ink-3) !important;
  transition:color .18s var(--d-ease),border-color .18s var(--d-ease) !important;
}
html[data-skin] .dash .dw-x:hover{color:var(--d-accent) !important;border-color:var(--d-accent-line) !important}
html[data-skin] .dash .dw-b{padding:14px 18px 24px !important}

/* 抽屉内：人物头 + 三个统计块 */
html[data-skin] .dash .dw-b .bhs-hero{
  display:flex;align-items:center;gap:12px;
  padding:0 0 14px !important;
  border:0 !important;border-bottom:1px solid var(--d-line) !important;
  background:transparent !important;border-radius:0 !important;
}
html[data-skin] .dash .dw-b .bhs-ava{
  width:44px !important;height:44px !important;flex:0 0 44px !important;
  border-radius:50% !important;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--d-mono) !important;font-size:13px !important;font-weight:600 !important;
  color:var(--d-accent) !important;
  background:var(--d-accent-dim) !important;
  border:1px solid var(--d-accent-line) !important;
  box-shadow:none !important;
}
html[data-skin] .dash .dw-b .bhs-hname{
  font-size:15px !important;font-weight:650 !important;color:var(--d-ink) !important;
  display:flex;align-items:center;gap:8px !important;
}
html[data-skin] .dash .dw-b .bhs-hsub{font-size:10.5px !important;color:var(--d-ink-3) !important;margin-top:3px !important}
html[data-skin] .dash .dw-b .bhs-hsub b{color:var(--d-ink-2) !important;font-weight:500 !important}
html[data-skin] .dash .dw-b .bhs-lamp{
  font-family:var(--d-mono) !important;font-size:8.5px !important;letter-spacing:.06em !important;
  padding:2px 6px !important;border-radius:3px !important;
  background:var(--d-accent-dim) !important;color:var(--d-accent) !important;
  box-shadow:none !important;
}
html[data-skin] .dash .dw-b .bhs-lamp.off{background:transparent !important;color:var(--d-ink-3) !important;box-shadow:inset 0 0 0 1px var(--d-line) !important}

html[data-skin] .dash .dw-b .bhs-hstat{
  display:grid !important;grid-template-columns:repeat(3,1fr) !important;
  gap:1px !important;
  margin:14px 0 !important;
  background:var(--d-line) !important;
  border:1px solid var(--d-line) !important;
  border-radius:var(--d-r) !important;
  overflow:hidden;
}
html[data-skin] .dash .dw-b .bhs-hstat > div{
  background:var(--d-panel) !important;border:0 !important;
  padding:12px 13px !important;
}
html[data-skin] .dash .dw-b .bhs-hstat-l{
  font-size:9.5px !important;letter-spacing:.04em !important;color:var(--d-ink-3) !important;
  margin-bottom:8px !important;
}
html[data-skin] .dash .dw-b .bhs-hstat-v{
  font-family:var(--d-mono) !important;font-size:19px !important;font-weight:600 !important;
  letter-spacing:-.02em !important;color:var(--d-ink) !important;line-height:1.1 !important;
}
html[data-skin] .dash .dw-b .bhs-hstat-v small{
  font-size:9px !important;font-weight:500 !important;color:var(--d-ink-3) !important;margin-left:3px !important;
}

/* 抽屉内页签：下划线式 */
html[data-skin] .dash .dw-b .bhs-tabs{
  display:flex !important;gap:0 !important;
  border-bottom:1px solid var(--d-line) !important;
  background:transparent !important;border-radius:0 !important;
  padding:0 !important;margin:2px 0 12px !important;
  box-shadow:none !important;
}
html[data-skin] .dash .dw-b .bhs-tabs button{
  border:0 !important;border-radius:0 !important;background:transparent !important;
  height:32px !important;padding:0 10px !important;
  font-size:11px !important;font-weight:500 !important;color:var(--d-ink-3) !important;
  position:relative;transition:color .18s var(--d-ease) !important;
}
html[data-skin] .dash .dw-b .bhs-tabs button:hover{color:var(--d-ink-2) !important;background:transparent !important}
html[data-skin] .dash .dw-b .bhs-tabs button.on{
  color:var(--d-ink) !important;font-weight:600 !important;background:transparent !important;box-shadow:none !important;
}
html[data-skin] .dash .dw-b .bhs-tabs button.on::after{
  content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;
  background:var(--d-accent);border-radius:2px 2px 0 0;
}

/* 抽屉内列表 / 消息 */
html[data-skin] .dash .dw-b .bhs-list{display:flex;flex-direction:column;gap:1px}
html[data-skin] .dash .dw-b .bhs-item{
  border:0 !important;border-bottom:1px solid var(--d-line) !important;
  border-radius:0 !important;background:transparent !important;
  padding:8px 0 !important;box-shadow:none !important;
}
html[data-skin] .dash .dw-b .bhs-item:hover{background:transparent !important}
html[data-skin] .dash .dw-b .bhs-item .t{font-family:var(--d-mono) !important;font-size:9.5px !important;color:var(--d-ink-3) !important}
html[data-skin] .dash .dw-b .bhs-item .m{font-size:11.5px !important;color:var(--d-ink-2) !important}
html[data-skin] .dash .dw-b .bhs-mini{font-size:10.5px !important;color:var(--d-ink-3) !important}
html[data-skin] .dash .dw-b .bhs-mgs-h{font-family:var(--d-mono) !important;font-size:9.5px !important;color:var(--d-ink-3) !important;margin:8px 0 !important}
html[data-skin] .dash .dw-b .bhs-msg .b{font-size:11.5px !important;line-height:1.6 !important}
html[data-skin] .dash .dw-b .bhs-more{
  border:1px solid var(--d-line) !important;border-radius:var(--d-r) !important;
  background:transparent !important;color:var(--d-ink-3) !important;
  font-size:10.5px !important;padding:8px !important;
  transition:color .18s var(--d-ease),border-color .18s var(--d-ease),background .18s var(--d-ease) !important;
}
html[data-skin] .dash .dw-b .bhs-more:hover{color:var(--d-accent) !important;border-color:var(--d-accent-line) !important;background:var(--d-accent-dim) !important}

/* ============================================================
   25. 动效加强（只用 transform / opacity，不加重绘）
   ============================================================ */
/* 卡片悬停：边框提亮 + 投影加深（进场动画用 fill both，这里用 !important 抢回 transform） */
html[data-skin] .dash .card{
  transition:border-color .28s var(--d-ease),box-shadow .28s var(--d-ease),transform .28s var(--d-ease) !important;
}
html[data-skin] .dash .card:hover{
  border-color:var(--d-line-2) !important;
  transform:translateY(-2px) !important;
}
html[data-skin] .dash .card.hero:hover{transform:none !important}

/* KPI 通栏卡：一道很慢的斜向反光扫过，静止时几乎看不见（走 transform，不触发 layout） */
.dash .hero .kpis{position:relative;overflow:hidden}
.dash .hero .kpis::after{
  content:"";position:absolute;top:-40%;left:0;width:26%;height:180%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.34),transparent);
  filter:blur(14px);opacity:.26;pointer-events:none;will-change:transform;
  transform:translate3d(-140%,0,0);
  animation:d-sheen 18s ease-in-out infinite;
}
@keyframes d-sheen{0%,82%{transform:translate3d(-140%,0,0)}100%{transform:translate3d(500%,0,0)}}

/* 表格首屏逐行落下；30 秒静默刷新不重播 */
html[data-skin] .dash tbody tr{animation:d-rowIn .44s var(--d-ease) both}
html[data-skin] .dash tbody tr:nth-child(1){animation-delay:20ms}
html[data-skin] .dash tbody tr:nth-child(2){animation-delay:40ms}
html[data-skin] .dash tbody tr:nth-child(3){animation-delay:60ms}
html[data-skin] .dash tbody tr:nth-child(4){animation-delay:80ms}
html[data-skin] .dash tbody tr:nth-child(5){animation-delay:100ms}
html[data-skin] .dash tbody tr:nth-child(6){animation-delay:120ms}
html[data-skin] .dash tbody tr:nth-child(7){animation-delay:140ms}
html[data-skin] .dash tbody tr:nth-child(8){animation-delay:160ms}
html[data-skin] .dash tbody tr:nth-child(n+9){animation-delay:180ms}
html[data-skin] .dash.dash-ready tbody tr{animation:none !important}
@keyframes d-rowIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

/* 卡内标题：悬停时左侧强调线展开 */
.dash .ch h2{position:relative;padding-left:0;transition:color .22s var(--d-ease)}
.dash .card:hover .ch h2{color:var(--d-accent)}

/* LIVE 点：呼吸 + 外扩光环 */
.dash .live{position:relative}
.dash .live::after{
  content:"";position:absolute;left:-4px;top:50%;width:14px;height:14px;margin-top:-7px;border-radius:50%;
  border:1px solid var(--d-accent);opacity:0;animation:d-ping 2.4s var(--d-ease) infinite;
}
@keyframes d-ping{0%{transform:scale(.5);opacity:.55}70%,100%{transform:scale(1.5);opacity:0}}

/* 漏斗步：悬停时数字轻抬 */
.dash .st{transition:transform .22s var(--d-ease)}
.dash .st:hover{transform:translateY(-2px)}
.dash .st b{transition:color .22s var(--d-ease)}
.dash .st:hover b{color:var(--d-accent)}

/* 主题条 / 群聊按钮：一致的按压回弹 */
.dash-ctl button{transition:background .18s var(--d-ease),color .18s var(--d-ease),transform .14s var(--d-ease)}
.dash-ctl button:active{transform:scale(.94)}
html[data-skin] .chat-fab{transition:transform .18s var(--d-ease),box-shadow .18s var(--d-ease),background .18s var(--d-ease) !important}
html[data-skin] .chat-fab:hover{transform:translateY(-2px) !important}

@media (prefers-reduced-motion:reduce){
  .dash .hero .kpis::after,
  html[data-skin] .dash tbody tr,
  .dash .live::after{animation:none !important}
  html[data-skin] .dash .card:hover{transform:none !important}
}

/* ============================================================
   26. 页面转场：旧页淡出上移 → 新页淡入落下
       首页页签用 --pgx 做横向位移，方向跟着页签顺序
   ============================================================ */
.content.pg-out{
  opacity:0 !important;
  transform:translate3d(0,-7px,0) scale(.997) !important;
  transition:opacity .11s ease,transform .11s ease !important;
}
.content.pg-in{animation:pgIn .42s var(--d-ease) both}
[data-home-body].pg-in{animation:pgInSoft .38s var(--d-ease) both}
@keyframes pgIn{
  from{opacity:0;transform:translate3d(var(--pgx,0),9px,0) scale(.995)}
  to{opacity:1;transform:none}
}
/* 页签主体：位移 + 淡入（不做模糊，整块模糊会拖慢转场） */
@keyframes pgInSoft{
  from{opacity:0;transform:translate3d(var(--pgx,0),10px,0) scale(.995)}
  to{opacity:1;transform:none}
}

/* ============================================================
   27. 侧栏：整栏向左滑入隐藏（桌面端）
   ============================================================ */
html[data-skin] .sidebar{
  transition:width .26s var(--d-ease),padding .26s var(--d-ease),
             transform .26s var(--d-ease),opacity .18s var(--d-ease) !important;
}
/* 收起：整栏脱离文档流（fixed + 移出视口），主区域立刻铺满，不留任何占位 */
html.nav-folded .sidebar{
  position:fixed !important;
  top:0;left:0;
  width:176px !important;
  height:100vh;
  padding:18px 12px 16px !important;
  transform:translateX(-110%) !important;
  opacity:1 !important;
  border-right:0 !important;
  box-shadow:none !important;
  overflow:hidden;
  pointer-events:none !important;
}
html.nav-folded .sidebar *{pointer-events:none !important}
html.nav-folded .main{width:100%;max-width:none !important}

/* 顶栏菜单按钮：桌面端不再常驻（改由侧栏右边缘把手接管），窄屏仍用它开抽屉 */
.topbar .menu-toggle{display:none !important}
html[data-skin] .topbar .menu-toggle{display:none !important}

/* 侧栏右边缘把手：一条 14px 宽的细长条 + 小箭头，收起后停靠在屏幕最左侧 */
.side-handle{
  position:fixed;top:50%;left:var(--side-w,176px);z-index:55;
  width:14px;height:56px;margin-top:-28px;margin-left:-1px;
  display:flex;align-items:center;justify-content:center;
  padding:0;border:1px solid var(--d-line);border-left:0;
  border-radius:0 7px 7px 0;
  background:var(--d-side-bg);
  color:var(--d-ink-3);cursor:pointer;
  opacity:.55;
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  box-shadow:3px 0 12px -8px rgba(10,20,32,.4);
  transition:left .26s var(--d-ease),opacity .2s var(--d-ease),
             color .2s var(--d-ease),border-color .2s var(--d-ease),
             background .2s var(--d-ease);
}
.side-handle:hover{
  opacity:1;color:var(--d-accent);
  border-color:var(--d-accent-line);background:var(--d-ctl-bg);
}
.side-handle svg{transition:transform .3s var(--d-ease)}
html.nav-folded .side-handle{
  left:0;opacity:.75;
  border-left:1px solid var(--d-line);
}
html.nav-folded .side-handle:hover{opacity:1}
html.nav-folded .side-handle svg{transform:rotate(180deg)}
html.nav-folded .content{max-width:9999px !important;width:100% !important}
html.nav-folded .dash{max-width:none !important}
.content{transition:max-width .32s var(--d-ease)}

/* ============================================================
   28. 侧栏大类折叠：点大类收起 / 展开其下子项
   ============================================================ */
html[data-skin] .sidebar .ng{margin:0}
html[data-skin] .sidebar .ng .gh{
  width:100%;display:flex;align-items:center;gap:6px;
  border:0;background:transparent;cursor:pointer;text-align:left;
  font-family:var(--d-sans) !important;
  font-size:13px !important;font-weight:600 !important;
  letter-spacing:0 !important;color:var(--d-ink-2) !important;
  opacity:1 !important;
  padding:14px 16px 5px !important;
  transition:color .18s var(--d-ease);
}
html[data-skin] .sidebar .ng .gh:hover{color:var(--d-ink) !important}
html[data-skin] .sidebar .ng-car{
  margin-left:auto;opacity:.32;flex:0 0 auto;
  transition:transform .26s var(--d-ease),opacity .18s var(--d-ease);
}
html[data-skin] .sidebar .ng .gh:hover .ng-car{opacity:.75}
html[data-skin] .sidebar .ng.fold .ng-car{transform:rotate(-90deg)}
html[data-skin] .sidebar .ng-items{
  max-height:520px;overflow:hidden;opacity:1;
  transition:max-height .3s var(--d-ease),opacity .2s var(--d-ease);
}
html[data-skin] .sidebar .ng.fold .ng-items{max-height:0;opacity:0}

/* ============================================================
   29. 顶栏浮层面板：通知 / 任务（结构与皮肤一起重做）
   ============================================================ */
.pop-panel{
  position:fixed;top:54px;right:16px;z-index:201;
  width:392px;max-height:min(76vh,620px);
  display:flex;flex-direction:column;
  padding:0 !important;
  background:var(--d-panel);
  border:1px solid var(--d-line-2) !important;
  border-radius:10px !important;
  box-shadow:0 28px 60px -26px rgba(6,14,26,.46),0 2px 6px rgba(6,14,26,.08) !important;
  overflow:hidden;
  transform-origin:top right;
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
}
.pop-panel.pop-task{width:340px}
.pop-panel.pop-enter{animation:popIn .26s var(--d-ease) both}
.pop-panel.pop-leave{animation:popOut .15s ease both}
@keyframes popIn{from{opacity:0;transform:translate3d(0,-8px,0) scale(.965)}to{opacity:1;transform:none}}
@keyframes popOut{to{opacity:0;transform:translate3d(0,-6px,0) scale(.972)}}

.pop-hd{
  flex:0 0 auto;display:flex;align-items:center;gap:8px;
  padding:11px 13px;border-bottom:1px solid var(--d-line);
}
.pop-hd .pop-t{
  display:flex;align-items:center;gap:7px;
  font-size:13px;font-weight:600;color:var(--d-ink);letter-spacing:-.01em;
}
.pop-hd .pop-t svg{opacity:.75}
.pop-hd .pop-n{
  font-family:var(--d-mono);font-size:9px;font-weight:600;letter-spacing:.02em;
  padding:1px 5px;border-radius:4px;
  color:var(--d-accent);background:var(--d-accent-dim);
  box-shadow:inset 0 0 0 1px var(--d-accent-line);
}
.pop-hd .pop-a{margin-left:auto;display:flex;gap:3px}
.pop-link{
  border:1px solid transparent;background:transparent;font:inherit;
  font-size:10.5px;color:var(--d-ink-3);padding:4px 7px;border-radius:5px;
  cursor:pointer;transition:color .16s var(--d-ease),background .16s var(--d-ease),border-color .16s var(--d-ease);
}
.pop-link:hover{color:var(--d-accent);background:var(--d-accent-dim);border-color:var(--d-accent-line)}
.pop-link.danger:hover{color:var(--d-danger);background:rgba(176,58,51,.10);border-color:rgba(176,58,51,.22)}

.pop-bd{flex:1;min-height:0;overflow-y:auto;padding:9px 11px 11px;scrollbar-width:thin}
.pop-bd::-webkit-scrollbar{width:7px}
.pop-bd::-webkit-scrollbar-thumb{background:var(--d-line-2);border-radius:4px}

.pop-item{
  position:relative;display:flex;flex-direction:column;gap:5px;
  padding:9px 10px 8px 12px;margin-bottom:6px;
  background:rgba(255,255,255,.02);
  border:1px solid var(--d-line);border-radius:7px;
  cursor:pointer;
  transition:border-color .18s var(--d-ease),background .18s var(--d-ease),transform .18s var(--d-ease);
}
.pop-item:last-child{margin-bottom:0}
.pop-item:hover{border-color:var(--d-line-2);transform:translateY(-1px)}
.pop-item::before{
  content:"";position:absolute;left:0;top:8px;bottom:8px;width:2px;border-radius:0 2px 2px 0;
  background:var(--d-line-2);
}
.pop-item.urgent::before{background:var(--d-danger)}
.pop-item.urgent{background:linear-gradient(180deg,rgba(176,58,51,.055),transparent 78%)}
.pop-item-hd{display:flex;align-items:center;gap:8px}
.pop-item-t{
  flex:1;min-width:0;font-size:12.5px;font-weight:600;line-height:1.35;color:var(--d-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.pop-tag{
  flex:0 0 auto;font-size:9px;font-weight:600;padding:1px 5px;border-radius:3px;
  color:var(--d-danger);background:rgba(176,58,51,.10);
  box-shadow:inset 0 0 0 1px rgba(176,58,51,.20);
}
.pop-tag.wait{color:var(--d-accent);background:var(--d-accent-dim);box-shadow:inset 0 0 0 1px var(--d-accent-line)}
.pop-tag.done{color:var(--d-ink-3);background:transparent;box-shadow:inset 0 0 0 1px var(--d-line)}
.pop-item-d{
  font-size:11px;line-height:1.62;color:var(--d-ink-2);word-break:break-all;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.pop-item-ft{display:flex;align-items:center;gap:8px;margin-top:2px}
.pop-meta{
  flex:1;min-width:0;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.pop-btns{display:flex;gap:4px;flex:0 0 auto}
.pop-btn{
  height:23px;padding:0 8px;border-radius:4px;font:inherit;font-size:10.5px;font-weight:600;
  border:1px solid var(--d-line-2);background:transparent;color:var(--d-ink-2);
  cursor:pointer;transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease);
}
.pop-btn:hover{color:var(--d-ink);border-color:var(--d-ink-3)}
.pop-btn.pri{background:var(--d-accent);border-color:var(--d-accent);color:#fff}
.pop-btn.pri:hover{color:#fff;filter:brightness(1.08)}
.pop-empty{padding:32px 10px;text-align:center;font-size:11px;color:var(--d-ink-3)}
.pop-foot{
  flex:0 0 auto;padding:6px 13px;border-top:1px solid var(--d-line);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.02em;color:var(--d-ink-3);
}
.pop-prog{height:4px;border-radius:2px;background:var(--d-line);overflow:hidden}
.pop-prog i{display:block;height:100%;border-radius:2px;background:var(--d-accent);transition:width .5s var(--d-ease)}

@media (max-width:900px){
  #notifyPanel.pop-panel,
  #taskPanel.pop-panel{
    left:10px !important;right:10px !important;
    width:auto !important;max-height:72vh;
  }
  /* 窄屏走抽屉：整栏收起的状态不参与，避免点了菜单也打不开 */
  html.nav-folded .sidebar{
    width:232px !important;
    padding:18px 12px 16px !important;
    transform:translateX(-100%) !important;
    opacity:1 !important;
    border-right:1px solid var(--d-line) !important;
    overflow:auto;pointer-events:auto;
  }
  html.nav-folded .sidebar.open{transform:translateX(0) !important}
  html.nav-folded .sidebar *{pointer-events:auto !important}
  html.nav-folded .topbar .menu-toggle{color:var(--d-ink-3) !important;border-color:var(--d-line) !important}
  /* 窄屏：把手隐藏，恢复顶栏菜单按钮开抽屉 */
  .side-handle{display:none !important}
  .topbar .menu-toggle,
  html[data-skin] .topbar .menu-toggle{
    display:inline-flex !important;align-items:center;justify-content:center;
    width:30px;height:30px;flex:0 0 30px;margin-right:6px;
    border:1px solid var(--d-line) !important;border-radius:5px !important;
    background:transparent !important;color:var(--d-ink-3) !important;cursor:pointer;
  }
}

@media (prefers-reduced-motion:reduce){
  .content.pg-in,[data-home-body].pg-in,.content.pg-out{animation:none !important;transition:none !important;filter:none !important}
  .pop-panel.pop-enter,.pop-panel.pop-leave{animation:none !important}
  html[data-skin] .sidebar,
  html[data-skin] .sidebar .ng-items{transition:none !important}
}

/* ============================================================
   30. 两张表改成上下排列：各占整行，列宽宽松，不再挤
   ============================================================ */
.dash .two{
  grid-template-columns:1fr !important;
  height:auto !important;
  gap:12px !important;
}
.dash .two > .card{height:338px}
.dash .two .tbl-scroll,
.dash .two .rec-scroll{overflow-x:hidden !important}

/* 客户端活跃：按比例分列，任何窗口宽度都不溢出 */
html[data-skin] .dash .two .tbl-scroll table.tbl{
  table-layout:fixed !important;width:100% !important;min-width:0 !important;
}
html[data-skin] .dash .two .tbl-scroll table.tbl th,
html[data-skin] .dash .two .tbl-scroll table.tbl td{
  padding:7px 9px !important;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
html[data-skin] .dash .two .tbl-scroll table.tbl th:first-child,
html[data-skin] .dash .two .tbl-scroll table.tbl td:first-child{padding-left:16px !important;width:7%}
html[data-skin] .dash .two .tbl-scroll table.tbl th:last-child,
html[data-skin] .dash .two .tbl-scroll table.tbl td:last-child{padding-right:16px !important}
html[data-skin] .dash .two .tbl-scroll table.tbl th:nth-child(2){width:13%}
html[data-skin] .dash .two .tbl-scroll table.tbl th:nth-child(3){width:9%}
html[data-skin] .dash .two .tbl-scroll table.tbl th:nth-child(4){width:14%}
html[data-skin] .dash .two .tbl-scroll table.tbl th:nth-child(5){width:12%}
html[data-skin] .dash .two .tbl-scroll table.tbl th:nth-child(6){width:9%}
html[data-skin] .dash .two .tbl-scroll table.tbl th:nth-child(7){width:10%}
html[data-skin] .dash .two .tbl-scroll table.tbl td{font-size:11px}
html[data-skin] .dash .two .tbl-scroll table.tbl th{font-size:8.5px;letter-spacing:.06em}
html[data-skin] .dash .two .tbl-scroll table.tbl .dot{gap:0;font-size:0}
html[data-skin] .dash .two .tbl-scroll table.tbl td .u{font-size:8.5px;color:var(--d-ink-3);margin-left:1px}
html[data-skin] .dash .two .tbl-scroll table.tbl td .bar{width:26px;margin-left:5px}
html[data-skin] .dash .two .tbl-scroll table.tbl .act{color:var(--d-ink-3)}
html[data-skin] .dash .two .tbl-scroll table.tbl td .warnv{font-size:10px}

/* 招募漏斗明细：10 列铺满整行，成员列给宽一些，其余均分 */
html[data-skin] .dash .two .rec-scroll table.bhs-tbl{
  table-layout:fixed !important;width:100% !important;min-width:0 !important;
}
html[data-skin] .dash .two .rec-scroll table.bhs-tbl th,
html[data-skin] .dash .two .rec-scroll table.bhs-tbl td{
  padding:7px 9px !important;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  border-bottom:1px solid var(--d-line) !important;
}
html[data-skin] .dash .two .rec-scroll table.bhs-tbl th{
  font-family:var(--d-mono) !important;font-size:8.5px !important;
  letter-spacing:.04em !important;color:var(--d-ink-3) !important;font-weight:500 !important;
}
html[data-skin] .dash .two .rec-scroll table.bhs-tbl td{
  font-size:11px !important;color:var(--d-ink-2) !important;
  font-variant-numeric:tabular-nums;
}
html[data-skin] .dash .two .rec-scroll table.bhs-tbl td b{color:var(--d-num) !important;font-size:11.5px}
html[data-skin] .dash .two .rec-scroll table.bhs-tbl th:first-child,
html[data-skin] .dash .two .rec-scroll table.bhs-tbl td:first-child{width:13%;padding-left:16px !important}
html[data-skin] .dash .two .rec-scroll table.bhs-tbl th:last-child,
html[data-skin] .dash .two .rec-scroll table.bhs-tbl td:last-child{padding-right:16px !important}
html[data-skin] .dash .two .rec-scroll table.bhs-tbl tr:hover td{background:var(--d-accent-dim) !important}

/* ============================================================
   31. 滚动条：不悬停时完全不显示（避免表格里一条灰杠）
   ============================================================ */
.dash .two .tbl-scroll,
.dash .two .rec-scroll,
.dash .dw-b{scrollbar-width:thin;scrollbar-color:transparent transparent}
.dash .two .tbl-scroll:hover,
.dash .two .rec-scroll:hover,
.dash .dw-b:hover{scrollbar-color:var(--d-line-2) transparent}

.dash .two .tbl-scroll::-webkit-scrollbar,
.dash .two .rec-scroll::-webkit-scrollbar,
.dash .dw-b::-webkit-scrollbar{width:8px;height:8px}
.dash .two .tbl-scroll::-webkit-scrollbar-track,
.dash .two .rec-scroll::-webkit-scrollbar-track,
.dash .dw-b::-webkit-scrollbar-track{background:transparent}
.dash .two .tbl-scroll::-webkit-scrollbar-thumb,
.dash .two .rec-scroll::-webkit-scrollbar-thumb,
.dash .dw-b::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}
.dash .two .tbl-scroll:hover::-webkit-scrollbar-thumb,
.dash .two .rec-scroll:hover::-webkit-scrollbar-thumb,
.dash .dw-b:hover::-webkit-scrollbar-thumb{background:var(--d-line-2)}

/* ============================================================
   32. 右侧栏（公告 + 待办）拉伸到与左栏同高，底部永远齐平
   ============================================================ */
.dash .cols{align-items:stretch}
.dash .cols > div:last-child{display:flex;flex-direction:column;min-height:0}
.dash .cols > div:last-child > .card.ann{flex:0 0 auto}
.dash .cols > div:last-child > .card.todo{
  flex:1 1 auto;min-height:160px;margin-top:12px;
  overflow-y:auto !important;overflow-x:hidden !important;
  scrollbar-width:thin;scrollbar-color:transparent transparent;
}
.dash .cols > div:last-child > .card.todo:hover{scrollbar-color:var(--d-line-2) transparent}
.dash .cols > div:last-child > .card.todo::-webkit-scrollbar{width:8px}
.dash .cols > div:last-child > .card.todo::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}
.dash .cols > div:last-child > .card.todo:hover::-webkit-scrollbar-thumb{background:var(--d-line-2)}

@media (max-width:1180px){
  .dash .cols > div:last-child{display:block}
  .dash .cols > div:last-child > .card.todo{flex:none;overflow:visible}
}

/* ============================================================
   33. 全屏沉浸模式
   点「全屏」后，侧栏 / 顶栏 / 大盘页签栏全部退场，只剩数据本身。
   内置浏览器常常拒绝 requestFullscreen，所以视觉满屏由 html.dash-fs
   这层 CSS 保证；原生全屏能成功就再叠一层（连浏览器边框也去掉）。
   ============================================================ */
html.dash-fs,
html.dash-fs body{overflow:hidden !important;height:100% !important}
html.dash-fs .sidebar,
html.dash-fs .side-handle,
html.dash-fs .topbar,
html.dash-fs .chat-fab,
html.dash-fs .chat-panel,
html.dash-fs .pop-panel{display:none !important}

html.dash-fs .main{width:100% !important;max-width:none !important;height:100vh !important;max-height:100vh;overflow:hidden}
html.dash-fs .content{
  max-width:none !important;width:100% !important;
  height:100vh !important;min-height:0 !important;
  padding:0 !important;overflow-y:auto !important;overflow-x:hidden !important;
  animation:none !important;scrollbar-width:thin;scrollbar-color:transparent transparent;
}
html.dash-fs .content:hover{scrollbar-color:var(--d-line-2) transparent}
html.dash-fs .content::-webkit-scrollbar{width:8px}
html.dash-fs .content::-webkit-scrollbar-track{background:transparent}
html.dash-fs .content::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}
html.dash-fs .content:hover::-webkit-scrollbar-thumb{background:var(--d-line-2)}

/* 首页那层外壳（问候语 / 页签 / 邀约提醒）在满屏时都是噪音 */
html.dash-fs .home-hero,
html.dash-fs [data-home-tabs],
html.dash-fs [data-invite-alert]{display:none !important}
html.dash-fs [data-home-body],
html.dash-fs [data-battle-body]{height:100%}

html.dash-fs .dash{
  max-width:none !important;width:100% !important;
  min-height:100%;padding:16px 22px 26px !important;
}
/* 页签栏：全屏时整条拿掉，标题与时钟留在原位当抬头 */
html.dash-fs .dash .tabs-wrap{display:none !important}
html.dash-fs .dash .hd{
  position:sticky;top:0;z-index:30;
  margin:0 -22px 14px !important;padding:14px 22px 10px;
  background:var(--d-bg);
  border-bottom:1px solid var(--d-line);
}

/* 原生全屏（挂在 html 上）：满屏容器没有底色，补一层，否则边缘会露白/露黑 */
html:fullscreen,
html:-webkit-full-screen{background:var(--d-bg) !important}

/* 退出按钮：只在满屏时出现，平时不占位 */
.fs-exit{
  position:fixed;right:18px;bottom:18px;z-index:120;
  display:none;align-items:center;gap:6px;
  height:30px;padding:0 12px;border-radius:999px;
  border:1px solid var(--d-line);background:var(--d-panel);color:var(--d-ink-2);
  font-family:var(--d-sans);font-size:11.5px;line-height:1;cursor:pointer;
  opacity:.68;box-shadow:0 10px 26px -14px rgba(0,0,0,.65);
  transition:opacity .2s var(--d-ease),color .2s var(--d-ease),border-color .2s var(--d-ease),transform .2s var(--d-ease);
}
.fs-exit:hover{opacity:1;color:var(--d-ink);border-color:var(--d-line-2);transform:translateY(-1px)}
.fs-exit svg{opacity:.7}
html.dash-fs .fs-exit{display:inline-flex;animation:fsExitIn .34s var(--d-ease) .2s both}
@keyframes fsExitIn{from{transform:translate3d(0,8px,0);opacity:0}to{transform:none;opacity:.68}}
html.dash-fs .fs-exit:hover{animation:none;transform:translateY(-1px)}

/* ============================================================
   34. 待办事项：与大屏同一套骨架（页头 + KPI + 左清单 + 右聚合）
   ============================================================ */
.todo-dash{padding:20px 24px 40px;max-width:none}
.todo-dash .hero{margin-bottom:12px}

.dash .todo-cols{align-items:stretch;margin-top:12px}
.todo-cols > div:last-child{display:flex;flex-direction:column;gap:12px;min-height:0}
.todo-cols > div:last-child > .card{display:flex;flex-direction:column;min-height:0}
.todo-cols > div:last-child > .card:first-child{flex:0 0 auto}
.todo-cols > div:last-child > .card.grow{flex:1 1 auto;min-height:120px}
.todo-cols > div:last-child > .card.grow .todo-side{flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:transparent transparent}
.todo-cols > div:last-child > .card.grow .todo-side:hover{scrollbar-color:var(--d-line-2) transparent}

/* 清单卡：高度跟着视口走，表内滚动，不再把页面拉长 */
.todo-list-card{display:flex;flex-direction:column;min-height:0;
  height:clamp(380px, calc(100vh - 300px), 780px)}
.todo-list{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;
  scrollbar-width:thin;scrollbar-color:transparent transparent}
.todo-list:hover{scrollbar-color:var(--d-line-2) transparent}
.todo-list::-webkit-scrollbar{width:8px}
.todo-list::-webkit-scrollbar-track{background:transparent}
.todo-list::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}
.todo-list:hover::-webkit-scrollbar-thumb{background:var(--d-line-2)}

/* 单行：左色条 + 类型图标 + 正文 + 悬停动作 */
.todo-list .tr{position:relative;display:flex;align-items:flex-start;gap:11px;
  padding:12px 14px 12px 17px;border-bottom:1px solid var(--d-line);
  cursor:pointer;transition:background .18s var(--d-ease)}
.todo-list .tr:last-child{border-bottom:0}
.todo-list .tr:hover{background:var(--d-panel-hover)}
.tr-rail{position:absolute;left:0;top:12px;bottom:12px;width:2px;border-radius:2px;background:transparent;
  transition:background .2s var(--d-ease)}
.tr.is-unread .tr-rail{background:var(--d-accent-line)}
.tr.is-urgent .tr-rail{background:var(--d-danger)}
.tr-ico{width:26px;height:26px;flex:0 0 26px;margin-top:1px;border-radius:6px;
  display:flex;align-items:center;justify-content:center}
.tr-main{flex:1;min-width:0}
.tr-top{display:flex;align-items:center;gap:7px;min-width:0}
.tr-title{font-size:12.5px;font-weight:600;color:var(--d-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tr.is-unread .tr-title{color:var(--d-num)}
.tr-tag{flex:0 0 auto;font-family:var(--d-mono);font-size:8.5px;letter-spacing:.06em;color:var(--d-ink-3);
  padding:1px 5px;border:1px solid var(--d-line);border-radius:3px}
.tr-urgent{flex:0 0 auto;font-size:9px;font-weight:600;color:var(--d-danger);
  padding:1px 5px;border-radius:3px;background:rgba(255,122,110,.12);border:1px solid rgba(255,122,110,.3)}
.tr-settled{flex:0 0 auto;font-size:9px;color:var(--d-ink-3);padding:1px 5px;border-radius:3px;
  background:transparent;border:1px solid var(--d-line)}
.tr-sub{margin-top:3px;font-size:10.5px;color:var(--d-ink-3);line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.tr-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:6px;
  font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.tr-meta span{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.tr-meta svg{opacity:.55}
.tr-meta .tr-assign{color:var(--d-accent);opacity:.85}
.tr-act{display:flex;align-items:center;gap:6px;flex:0 0 auto;padding-top:1px;
  opacity:0;transform:translateX(4px);
  transition:opacity .18s var(--d-ease),transform .18s var(--d-ease)}
.tr:hover .tr-act,.tr:focus-within .tr-act{opacity:1;transform:none}
.tr-btn{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;
  color:var(--d-ink-2);font-family:inherit;font-size:10px;cursor:pointer;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.tr-btn:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.tr-btn.pri{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.tr-btn.pri:hover{background:var(--d-accent);color:var(--d-bg);border-color:var(--d-accent)}
.tr-go{display:inline-flex;color:var(--d-ink-3);transform:rotate(180deg);opacity:.5}
@media (hover:none){.tr-act{opacity:1;transform:none}}

/* 右栏聚合块 */
.todo-side{padding:6px 0 10px}
.sd-row{display:flex;align-items:center;gap:8px;padding:7px 16px}
.sd-ico{display:inline-flex;width:16px;justify-content:center;opacity:.85}
.sd-name{flex:1;min-width:0;font-size:10.5px;color:var(--d-ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sd-bar{flex:0 0 64px;height:3px;border-radius:2px;background:var(--d-line);overflow:hidden}
.sd-bar i{display:block;height:100%;border-radius:2px;opacity:.85}
.sd-num{font-family:var(--d-mono);font-size:10px;font-weight:600;color:var(--d-ink-2);min-width:16px;text-align:right}
.sd-ava{width:16px;height:16px;flex:0 0 16px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--d-mono);font-size:8.5px;color:var(--d-accent);
  background:var(--d-accent-dim);border:1px solid var(--d-accent-line)}

/* 抽屉内：事件头 + 正文 + 动作 */
.tdw-hero{display:flex;align-items:center;gap:11px;padding:14px 0;border-bottom:1px solid var(--d-line)}
.tdw-ico{width:36px;height:36px;flex:0 0 36px;border-radius:8px;
  display:flex;align-items:center;justify-content:center}
.tdw-type{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--d-ink)}
.tdw-flag{font-style:normal;font-size:8.5px;font-weight:600;color:var(--d-danger);
  padding:1px 5px;border-radius:3px;background:rgba(255,122,110,.12);border:1px solid rgba(255,122,110,.3)}
.tdw-state{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3);margin-top:4px;letter-spacing:.06em}
.tdw-quote{margin-top:2px;padding:11px 13px;border-radius:5px;
  background:var(--d-accent-dim);border-left:2px solid var(--d-accent-line);
  font-size:11.5px;line-height:1.85;color:var(--d-ink-2);white-space:pre-wrap;word-break:break-word}
.tdw-report{padding-top:12px}
.tdw-actions{display:flex;gap:8px;flex-wrap:wrap;padding:16px 0 4px}
.tdw-actions .btn{height:30px;padding:0 12px;border-radius:5px;font-size:11px;
  display:inline-flex;align-items:center;gap:5px}
.tdw-actions .btn-primary{background:var(--d-accent) !important;color:var(--d-bg) !important;
  border:1px solid var(--d-accent) !important;box-shadow:none !important}
.tdw-actions .btn-primary:hover{filter:brightness(1.06)}
.tdw-actions .btn-ghost{background:transparent !important;color:var(--d-ink-2) !important;
  border:1px solid var(--d-line) !important;box-shadow:none !important}
.tdw-actions .btn-ghost:hover{color:var(--d-accent) !important;border-color:var(--d-accent-line) !important}

@media (max-width:1180px){
  .dash .todo-cols{grid-template-columns:1fr}
  .todo-list-card{height:auto;max-height:none}
  .todo-list{max-height:60vh}
  .todo-cols > div:last-child > .card.grow .todo-side{overflow:visible}
}

/* 详情分区（抽屉与弹窗共用，不依赖 .dash 祖先） */
.tdw-sec{padding:13px 0;border-bottom:1px solid var(--d-line)}
.tdw-sec h3{font-family:var(--d-mono);font-size:8.5px;letter-spacing:.18em;color:var(--d-ink-3);margin-bottom:9px}
.tdw-row{display:flex;justify-content:space-between;gap:14px;padding:5px 0;font-size:11px}
.tdw-row span{flex:0 0 auto;color:var(--d-ink-2)}
.tdw-row b{font-family:var(--d-mono);font-weight:500;color:var(--d-ink);text-align:right;word-break:break-all}

/* 待办抽屉 · 意见箱：正文 / 图片 / 对话 / 就地处理 */
.tdw-st{display:inline-flex;align-items:center;height:15px;padding:0 6px;border-radius:3px;
  font-family:var(--d-sans);font-size:9px;font-weight:600;letter-spacing:0;margin-left:6px;vertical-align:1px}
.tdw-st.warn{color:var(--d-warn);background:rgba(240,179,94,.12)}
.tdw-st.ok{color:var(--d-ok);background:rgba(79,216,160,.12)}
.tdw-st.bad{color:var(--d-danger);background:rgba(255,122,110,.12)}
.tdw-st.mute{color:var(--d-ink-3);background:rgba(128,148,168,.12)}
.tdw-sug-body{max-height:230px;overflow:auto;white-space:pre-wrap;word-break:break-word;line-height:1.75;font-size:11.5px}
.tdw-sug-imgs{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.tdw-sug-imgs img{width:72px;height:72px;object-fit:cover;border-radius:4px;border:1px solid var(--d-line);cursor:zoom-in}
.tdw-sug-sub{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3);margin-top:8px;letter-spacing:.02em}
.tdw-sug-thread{display:flex;flex-direction:column;gap:6px;margin-top:10px;max-height:200px;overflow:auto}
.tdw-sug-reply{padding:7px 10px;border-radius:5px;background:var(--d-panel);border:1px solid var(--d-line);
  font-size:11px;line-height:1.65;color:var(--d-ink-2)}
.tdw-sug-reply b{color:var(--d-ink);font-weight:600;margin-right:6px}
.tdw-sug-reply i{display:block;font-style:normal;font-family:var(--d-mono);font-size:8.5px;color:var(--d-ink-3);margin-top:3px}
.tdw-sug-ops{display:flex;gap:6px;flex-wrap:wrap;margin-top:11px}
.tdw-sbtn{height:26px;padding:0 11px;border-radius:4px;border:1px solid var(--d-line-2);background:transparent;
  color:var(--d-ink-2);font-size:10.5px;font-family:inherit;cursor:pointer;transition:all .16s var(--d-ease)}
.tdw-sbtn:hover{border-color:var(--d-accent-line);color:var(--d-accent)}
.tdw-sbtn.ok{color:var(--d-ok);border-color:rgba(79,216,160,.4)}
.tdw-sbtn.ok:hover{background:rgba(79,216,160,.08);border-color:var(--d-ok)}
.tdw-sbtn.bad{color:var(--d-danger);border-color:rgba(255,122,110,.4)}
.tdw-sbtn.bad:hover{background:rgba(255,122,110,.08);border-color:var(--d-danger)}
.tdw-sbtn.mute{color:var(--d-ink-3)}
.tdw-sug-replybox{display:flex;gap:6px;margin-top:10px}
.tdw-sug-replybox input{flex:1;min-width:0;height:28px;padding:0 9px;border-radius:4px;
  border:1px solid var(--d-line-2);background:transparent;color:var(--d-ink);font-size:11px;font-family:inherit;outline:none;transition:border-color .16s}
.tdw-sug-replybox input::placeholder{color:var(--d-ink-3)}
.tdw-sug-replybox input:focus{border-color:var(--d-accent-line)}
.tdw-sug-replybox button{height:28px;padding:0 12px;border-radius:4px;flex-shrink:0;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);color:var(--d-accent);
  font-size:10.5px;font-weight:600;font-family:inherit;cursor:pointer}
.tdw-sug-replybox button:hover{background:var(--d-accent);color:var(--d-bg)}

/* 待办抽屉 · 主播数据待审：命中明细 + 说明 */
.tdw-an-samples{margin:4px 0 0;padding-left:17px;font-size:10.5px;line-height:1.75;color:var(--d-ink-2)}
.tdw-an-note{margin-top:10px;font-size:10.5px;line-height:1.7;color:var(--d-ink-3)}

/* 刷新按钮转一圈（页头 hd-dev 与大盘顶栏同款节奏） */
.dash .hd-dev.spin svg{animation:d-sp .55s var(--d-ease)}

/* 行 hover：标题给一点强调色，紧急行铺一层极淡的红 */
.todo-list .tr:hover .tr-title{color:var(--d-accent)}
.todo-list .tr.is-urgent{background:linear-gradient(90deg,rgba(255,122,110,.055),transparent 42%)}
.todo-list .tr.is-urgent:hover{background:linear-gradient(90deg,rgba(255,122,110,.09),var(--d-panel-hover) 46%)}

/* ============================================================
   35. 业务学院：课程卡片 / 我的学习 / 话术库在 dash 下的统一
   ============================================================ */
.ac-dash .hd{margin-bottom:16px}
.ac-dash .tl{transition:transform .34s var(--d-ease),width .34s var(--d-ease)}

/* 工具行：搜索 + 筛选 + 计数 + 操作 */
.ac-dash .ac-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.ac-search{display:inline-flex;align-items:center;gap:7px;height:29px;padding:0 9px;
  border:1px solid var(--d-line);border-radius:5px;background:transparent;color:var(--d-ink-3);
  transition:border-color .18s var(--d-ease),background .18s var(--d-ease)}
.ac-search:focus-within{border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.ac-search input{width:206px;border:0;outline:0;background:transparent;color:var(--d-ink);
  font-family:var(--d-sans);font-size:11px}
.ac-search input::placeholder{color:var(--d-ink-3)}
.ac-dash .ac-filters{padding:0;border:0;gap:5px}
.ac-dash .ac-count{margin-left:auto;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3);letter-spacing:.03em}
.ac-dash .ac-count b{color:var(--d-ink-2);font-weight:600}
.ac-min-btn{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 10px;border-radius:5px;
  border:1px solid var(--d-line);background:transparent;color:var(--d-ink-2);
  font-family:var(--d-sans);font-size:10.5px;cursor:pointer;
  transition:color .18s var(--d-ease),border-color .18s var(--d-ease),background .18s var(--d-ease)}
.ac-min-btn:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.ac-min-btn.pri{border-color:var(--d-accent-line);background:var(--d-accent-dim);color:var(--d-accent)}
.ac-min-btn.pri:hover{background:var(--d-accent);color:var(--d-bg);border-color:var(--d-accent)}

/* 课程网格：留白比旧版更松，卡片不再挤在一起 */
.ac-dash .ac-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(316px,1fr));gap:14px;align-items:stretch}

/* 卡片本体：封面 → 正文 → 页脚，三层结构 */
.ac-course{position:relative;display:flex;flex-direction:column;min-width:0;
  border:1px solid var(--d-line);border-radius:10px;overflow:hidden;background:var(--d-panel);
  cursor:pointer;
  transition:transform .26s var(--d-ease),border-color .26s var(--d-ease),box-shadow .26s var(--d-ease);
  animation:ac-in .5s var(--d-ease) backwards;animation-delay:calc(var(--ci,0)*36ms)}
@keyframes ac-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.ac-course:hover{transform:translateY(-3px);border-color:var(--d-accent-line);
  box-shadow:0 18px 36px -26px rgba(8,18,28,.55)}

/* 封面：极淡渐晕 + 细网格 + 一枚溢出的大圆环 */
.ac-cv{position:relative;height:96px;flex:0 0 96px;overflow:hidden;
  background:
    radial-gradient(130% 150% at 8% -10%,var(--d-accent-dim) 0%,transparent 62%),
    linear-gradient(180deg,rgba(127,127,127,.035),transparent 78%);
  border-bottom:1px solid var(--d-line)}
.ac-cv-grid{position:absolute;inset:0;pointer-events:none;opacity:.55;
  background-image:
    linear-gradient(to right,var(--d-line) 1px,transparent 1px),
    linear-gradient(to bottom,var(--d-line) 1px,transparent 1px);
  background-size:26px 26px;
  -webkit-mask-image:linear-gradient(135deg,rgba(0,0,0,.9),transparent 76%);
  mask-image:linear-gradient(135deg,rgba(0,0,0,.9),transparent 76%)}
.ac-cv-orb{position:absolute;right:-38px;top:-46px;width:158px;height:158px;border-radius:50%;
  border:1px solid var(--d-accent-line);opacity:.16;pointer-events:none;
  transition:transform .6s var(--d-ease),opacity .4s var(--d-ease)}
.ac-cv-orb::after{content:"";position:absolute;inset:24px;border-radius:50%;
  border:1px dashed var(--d-line-2);opacity:.7}
.ac-course:hover .ac-cv-orb{transform:scale(1.07);opacity:.3}
.ac-cv-top{position:absolute;left:14px;top:12px;display:flex;align-items:center;gap:8px}
.ac-cv-no{font-family:var(--d-mono);font-size:9px;letter-spacing:.16em;color:var(--d-accent)}
.ac-cv-bot{position:absolute;left:14px;right:14px;bottom:10px;display:flex;align-items:center;gap:10px;
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-ink-3)}
.ac-cv-bot span:last-child{margin-left:auto;color:var(--d-ink-2)}
.ac-cv-acts{position:absolute;right:8px;top:8px;display:flex;gap:4px;
  opacity:0;transform:translateY(-2px);
  transition:opacity .2s var(--d-ease),transform .2s var(--d-ease)}
.ac-course:hover .ac-cv-acts,.ac-course:focus-within .ac-cv-acts{opacity:1;transform:none}
.ac-ico{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--d-line);border-radius:4px;background:var(--d-ctl-bg);
  color:var(--d-ink-3);cursor:pointer;transition:color .18s var(--d-ease),border-color .18s var(--d-ease)}
.ac-ico:hover{color:var(--d-accent);border-color:var(--d-accent-line)}
.ac-ico.danger:hover{color:var(--d-danger);border-color:var(--d-danger)}

/* 正文 */
.ac-main{flex:1;min-width:0;display:flex;flex-direction:column;padding:12px 14px 0}
.ac-main h3{font-size:14px;font-weight:600;line-height:1.5;letter-spacing:-.003em;color:var(--d-ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  transition:color .2s var(--d-ease)}
.ac-course:hover .ac-main h3{color:var(--d-accent)}
.ac-main .ac-sub{margin-top:4px;font-size:10.5px;line-height:1.6;color:var(--d-ink-3);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ac-tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}
.ac-bd{display:inline-flex;align-items:center;font-family:var(--d-mono);font-size:8px;letter-spacing:.05em;
  line-height:1;padding:2.5px 5px;border-radius:3px;border:1px solid var(--d-line);color:var(--d-ink-3);
  white-space:nowrap}
.ac-bd.req{color:var(--d-danger);border-color:var(--d-danger);opacity:.82}
.ac-bd.wb{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.ac-bd.draft{color:var(--d-warn);border-color:var(--d-warn);opacity:.85}
.ac-bd.ok{color:var(--d-ok);border-color:var(--d-ok);opacity:.85}
.ac-bd.warn{color:var(--d-warn);border-color:var(--d-warn);opacity:.85}
.ac-bd.demo{color:var(--d-ink-3);border-style:dashed}

/* 目标：短横替代圆点，更克制 */
.ac-goals{margin-top:9px;display:flex;flex-direction:column;gap:4px}
.ac-goals li{position:relative;padding-left:10px;font-size:10.5px;line-height:1.6;color:var(--d-ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ac-goals li::before{content:"";position:absolute;left:0;top:.66em;width:4px;height:1px;
  background:var(--d-accent);opacity:.55}

/* 进度：推到卡片底部，保证同一行卡片底部对齐 */
.ac-prog{margin-top:auto;padding-top:14px}
.ac-prog-t{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.ac-prog-t span{font-family:var(--d-mono);font-size:8px;letter-spacing:.14em;color:var(--d-ink-3)}
.ac-prog-t b{margin-left:auto;font-family:var(--d-mono);font-size:13px;font-weight:600;line-height:1;color:var(--d-ink)}
.ac-prog-t b i{font-style:normal;font-size:8px;color:var(--d-ink-3);margin-left:1px}
.ac-pbar{height:3px;border-radius:2px;background:var(--d-line);overflow:hidden}
.ac-pbar i{display:block;height:100%;border-radius:2px;
  background:linear-gradient(90deg,var(--d-accent),var(--d-accent-bright));
  transition:width .6s var(--d-ease)}
.ac-course.done .ac-pbar i{background:linear-gradient(90deg,var(--d-ok),var(--d-ok))}
.ac-prog-s{display:flex;align-items:center;gap:10px;margin-top:6px;
  font-family:var(--d-mono);font-size:8px;letter-spacing:.03em;color:var(--d-ink-3)}
.ac-prog-s span:last-child{margin-left:auto}
.ac-course.done .ac-prog-s span:last-child{color:var(--d-ok)}
.ac-course.lock .ac-prog-s span:last-child{color:var(--d-warn)}

/* 页脚：安静时只有描边按钮，hover 卡片时点亮 */
.ac-foot{display:flex;align-items:center;gap:8px;margin-top:12px;padding:10px 14px;
  border-top:1px solid var(--d-line);background:transparent}
.ac-foot .m{font-family:var(--d-mono);font-size:8.5px;letter-spacing:.05em;color:var(--d-ink-3)}
.ac-go{margin-left:auto;height:25px;padding:0 9px;border-radius:4px;
  border:1px solid var(--d-line);background:transparent;color:var(--d-ink-2);
  font-family:inherit;font-size:10px;font-weight:500;cursor:pointer;
  display:inline-flex;align-items:center;gap:4px;
  transition:color .18s var(--d-ease),border-color .18s var(--d-ease),background .18s var(--d-ease)}
.ac-go .ar{font-family:var(--d-mono);transition:transform .2s var(--d-ease)}
.ac-course:hover .ac-go{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.ac-course:hover .ac-go .ar{transform:translateX(2px)}
.ac-go:hover{background:var(--d-accent) !important;color:var(--d-bg) !important;border-color:var(--d-accent) !important}
.ac-go.quiet{color:var(--d-ink-3)}
.ac-go:disabled{opacity:.55;cursor:not-allowed}
.ac-go:disabled:hover{background:transparent !important;color:var(--d-ink-3) !important;border-color:var(--d-line) !important}

/* 锁定 / 已结业整体语气 */
.ac-course.lock{opacity:.7}
.ac-course.lock:hover{transform:none;border-color:var(--d-line);box-shadow:none;cursor:not-allowed}
.ac-course.done .ac-cv-orb{border-color:var(--d-ok);opacity:.16}
.ac-course.done .ac-cv-no{color:var(--d-ok)}

/* 骨架屏 */
.ac-skel .ac-course{pointer-events:none;opacity:.7}
.ac-skel .ac-cv{height:96px;background:var(--d-line)}
.ac-skel .ac-main{padding-top:16px;gap:9px}
.ac-skel .ac-main i{display:block;height:9px;border-radius:3px;background:var(--d-line)}
.ac-skel .ac-main i:nth-child(2){width:72%}
.ac-skel .ac-main i:nth-child(3){width:46%}

/* 空状态 / 错误 */
.ac-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;
  padding:54px 20px;text-align:center;color:var(--d-ink-3);
  border:1px dashed var(--d-line-2);border-radius:10px;background:transparent}
.ac-empty > svg{width:40px;height:40px;padding:11px;border-radius:50%;box-sizing:content-box;
  background:var(--d-accent-dim);color:var(--d-accent);opacity:.9}
.ac-empty .t{font-size:12.5px;font-weight:600;color:var(--d-ink)}
.ac-empty .s{font-size:10.5px;line-height:1.7;max-width:440px}
.ac-empty .ac-min-btn{margin-top:6px}
.ac-empty.sm{padding:30px 16px;border-style:solid;border-color:var(--d-line)}
.ac-empty.sm > svg{width:30px;height:30px;padding:8px}
.ac-error{display:flex;align-items:center;gap:8px;padding:16px 18px;
  border:1px solid var(--d-danger);border-radius:8px;color:var(--d-danger);font-size:11.5px}

/* 我的学习：课程进度行 */
.ac-mine-cols{align-items:start}
.ac-mine-list{display:flex;flex-direction:column}
.ac-mrow{padding:12px 16px;border-bottom:1px solid var(--d-line);cursor:pointer;
  transition:background .16s var(--d-ease)}
.ac-mrow:last-child{border-bottom:0}
.ac-mrow:hover{background:var(--d-accent-dim)}
.ac-mrow-h{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:8px}
.ac-mrow-h b{font-size:12px;font-weight:600;color:var(--d-ink);line-height:1.4}
.ac-mrow-track{font-family:var(--d-mono);font-size:8px;letter-spacing:.05em;color:var(--d-ink-3)}
.ac-mrow-pct{margin-left:auto;font-family:var(--d-mono);font-size:13px;font-weight:600;color:var(--d-ink);line-height:1}
.ac-mrow-pct i{font-style:normal;font-size:8px;color:var(--d-ink-3);margin-left:1px}
.ac-mrow-s{display:flex;align-items:center;gap:13px;flex-wrap:wrap;margin-top:8px;
  font-family:var(--d-mono);font-size:8px;letter-spacing:.03em;color:var(--d-ink-3)}
.ac-mrow-s b{color:var(--d-ink-2);font-weight:500}
.ac-mrow-s .go{margin-left:auto;display:inline-flex;align-items:center;gap:3px;color:var(--d-accent);
  opacity:0;transform:translateX(-3px);
  transition:opacity .18s var(--d-ease),transform .18s var(--d-ease)}
.ac-mrow-s .go i{font-style:normal}
.ac-mrow:hover .go{opacity:1;transform:none}

/* 我的学习：待办行 */
.ac-todo-list{display:flex;flex-direction:column}
.ac-trow{display:flex;align-items:center;gap:9px;padding:11px 14px;border-bottom:1px solid var(--d-line);
  transition:background .16s var(--d-ease)}
.ac-trow:last-child{border-bottom:0}
.ac-trow:hover{background:var(--d-accent-dim)}
.ac-ttype{flex:0 0 auto;font-family:var(--d-mono);font-size:8px;letter-spacing:.06em;
  padding:2px 5px;border-radius:3px;border:1px solid var(--d-line);color:var(--d-ink-3)}
.ac-ttype.exam{color:var(--d-danger);border-color:var(--d-danger);opacity:.85}
.ac-ttype.homework{color:var(--d-warn);border-color:var(--d-warn);opacity:.85}
.ac-ttype.note{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.ac-trow-t{flex:1;min-width:0;font-size:10.5px;line-height:1.5;color:var(--d-ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ac-trow .ac-go{margin-left:0;flex:0 0 auto;opacity:0;transform:translateX(3px);
  transition:opacity .18s var(--d-ease),transform .18s var(--d-ease),
    color .18s var(--d-ease),border-color .18s var(--d-ease),background .18s var(--d-ease)}
.ac-trow:hover .ac-go{opacity:1;transform:none}
@media (hover:none){.ac-trow .ac-go{opacity:1;transform:none}}

/* 我的学习：记录表 */
.ac-rec{margin-top:12px}
.ac-tbl{overflow-x:auto;overflow-y:hidden}
.ac-tbl table{min-width:600px}
.ac-rec-empty{padding:24px 16px;font-family:var(--d-mono);font-size:9px;letter-spacing:.04em;color:var(--d-ink-3)}
.ac-tbl .tbl td .ac-go{height:22px;padding:0 7px;font-size:9px}

/* 话术库在 dash 下：chip 与卡片语气统一 */
.ac-dash .ac-chip{border-color:var(--d-line);background:transparent;color:var(--d-ink-3);
  font-family:var(--d-sans);border-radius:4px;
  transition:color .18s var(--d-ease),border-color .18s var(--d-ease),background .18s var(--d-ease)}
.ac-dash .ac-chip:hover{color:var(--d-ink-2);border-color:var(--d-line-2)}
.ac-dash .ac-chip.active{background:var(--d-accent-dim);border-color:var(--d-accent-line);color:var(--d-accent)}
.ac-dash .ac-card{border-radius:8px;background:var(--d-panel);border-color:var(--d-line)}
.ac-dash .ac-card:hover{border-color:var(--d-line-2);box-shadow:var(--d-shadow)}
.ac-dash .ac-card h3{font-size:13.5px;font-weight:600}
.ac-dash .ac-pre{background:var(--d-accent-dim);color:var(--d-ink-2);border-radius:5px}
.ac-dash .ac-mini{font-size:10px;color:var(--d-ink-3)}
.ac-dash .ac-loading{color:var(--d-ink-3)}

@media (max-width:1180px){
  .ac-dash .ac-count{margin-left:0}
  .ac-mine-cols{grid-template-columns:1fr}
}
@media (max-width:760px){
  .ac-dash .ac-grid{grid-template-columns:1fr}
  .ac-search{flex:1 1 auto}
  .ac-search input{width:100%}
  .ac-trow-t{white-space:normal}
}

/* 二级页签（学院管理内部）：与一级页签同语气，去掉紫色药丸 */
.ac-dash .ac-tabs{display:flex;gap:0;flex-wrap:wrap;margin-bottom:14px;
  border-bottom:1px solid var(--d-line);padding:0}
.ac-dash .ac-tab{border:0;background:transparent;border-radius:0;box-shadow:none;
  padding:0 12px 9px;font-size:11.5px;font-weight:500;color:var(--d-ink-3);
  position:relative;transition:color .18s var(--d-ease)}
.ac-dash .ac-tab:hover{color:var(--d-ink-2);border:0;box-shadow:none}
.ac-dash .ac-tab.active{background:transparent;color:var(--d-ink);font-weight:600;border:0;box-shadow:none}
.ac-dash .ac-tab.active::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;
  border-radius:2px;background:var(--d-accent);box-shadow:var(--d-glow)}
.ac-dash .ac-tab .badge{margin-left:4px}

/* 课程详情：保留内容，只把外壳语气对齐 */
.ac-dash .ac-course-hero{background:linear-gradient(135deg,var(--d-accent-dim),transparent 72%);
  border:1px solid var(--d-line);border-radius:10px}
.ac-dash .ac-lesson-row{border-bottom:1px solid var(--d-line)}
.ac-dash .ac-lesson-idx{background:var(--d-accent-dim);color:var(--d-accent)}
.ac-dash .ac-block{background:var(--d-panel);border-color:var(--d-line);border-radius:8px}
.ac-dash .ac-tip{background:rgba(160,120,40,.10);color:var(--d-warn)}
.ac-dash .ac-drop{border-color:var(--d-line-2);background:transparent}
.ac-dash .ac-drop:hover{border-color:var(--d-accent-line);background:var(--d-accent-dim);box-shadow:none}
.ac-dash .table-wrap{border-color:var(--d-line)}
.ac-dash .ac-pill{background:var(--d-accent-dim);color:var(--d-ink-2)}

/* 骨架屏不重复播放入场；触屏设备直接显示管理按钮 */
.ac-skel .ac-course{animation:none}
@media (hover:none){
  .ac-cv-acts{opacity:1;transform:none}
}

@media (hover:none){
  .ac-mrow-s .go{opacity:1;transform:none}
}

/* 五个页签时页头允许换行，窄屏下页签另起一行 */
.ac-dash .hd{flex-wrap:wrap;row-gap:10px}
.ac-dash .tabs{flex-wrap:nowrap}
.ac-dash .tabs button{white-space:nowrap}
@media (max-width:980px){
  .ac-dash .tabs{flex-wrap:wrap;margin-left:0}
}

/* ============================================================
   36. 搜索框：图标回到输入框内
   - icon() 输出的是不带类名的 svg，没有定位规则时会被当普通行内元素挤到上一行
   - skin.css 的 html[data-skin] .input 带 !important，会重新给内部 input 加白底 + 边框，
     所以这里必须用同前缀的选择器压回去，整条才是一个完整胶囊
   ============================================================ */
.search-box{display:flex;align-items:center;gap:8px;padding:0 11px}
.search-box > svg{flex:0 0 auto;position:static;transform:none;opacity:.8;
  color:var(--d-ink-3,var(--text-3));pointer-events:none}
html[data-skin] .search-box .input,
.search-box .input,
.toolbar .search-box .input{padding-left:0 !important;flex:1;min-width:0;height:100% !important;
  border:0 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important}
/* 旧版工具条：图标是绝对定位的 span，保留原来的左内边距 */
.toolbar .search-box .search-icon + .input{padding-left:38px !important}

/* 学院工具行的字段高度与 dash 按钮对齐 */
.ac-dash .ac-search{height:30px}

/* ============================================================
   37. 招募数据：工具行 / 明细表 / 抽屉漏斗 / 周期统计
   ============================================================ */
.rc-dash .hd{margin-bottom:14px}
.rc-dash .hero{margin-bottom:20px}

/* ---------- 工具行 ---------- */
.rc-tools{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 14px}
.rc-sp{flex:1;min-width:8px}
.rc-dash .search-box{flex:0 0 218px;height:30px;padding:0 10px;border-radius:6px;
  border:1px solid var(--d-line) !important;background:var(--d-panel) !important;box-shadow:none !important;
  transition:border-color .18s var(--d-ease),background .18s var(--d-ease)}
.rc-dash .search-box:focus-within{border-color:var(--d-accent-line) !important;background:var(--d-panel-hover) !important}
.rc-dash .search-box > svg{width:13px;height:13px;opacity:.75}
html[data-skin] .rc-dash .search-box .input,
.rc-dash .search-box .input{height:100% !important;padding:0 !important;
  border:0 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:11px;color:var(--d-ink)}
.rc-dash .search-box .input::placeholder{color:var(--d-ink-3)}

/* 其余字段同样要压过 skin.css 的 html[data-skin] .input/.select（都带 !important） */
html[data-skin] .rc-dash .rc-range .input,
.rc-range .input{height:28px;width:128px;padding:0 8px;font-family:var(--d-mono);font-size:10px;
  border:1px solid var(--d-line) !important;border-radius:4px !important;
  background:transparent !important;box-shadow:none !important;color:var(--d-ink-2) !important}
html[data-skin] .rc-dash .rc-owner,
.rc-owner{height:28px;width:126px;border:1px solid var(--d-line) !important;border-radius:4px !important;
  background:transparent !important;box-shadow:none !important;
  color:var(--d-ink-2) !important;font-family:var(--d-sans);font-size:10.5px;padding:0 6px;outline:0}
html[data-skin] .rc-dash .rc-quick-d .input,
.rc-quick-d .input{height:26px;width:132px;padding:0 8px;font-size:10px;
  border:1px solid var(--d-line) !important;border-radius:4px !important;
  background:transparent !important;box-shadow:none !important;color:var(--d-ink-2) !important}
html[data-skin] .rc-dash .rc-quick-tbl .input,
html[data-skin] .rc-dash .rc-quick-tbl .select,
.rc-quick-tbl .input,.rc-quick-tbl .select{height:26px !important;font-size:10.5px;
  border:1px solid var(--d-line) !important;border-radius:4px !important;
  background:transparent !important;box-shadow:none !important;color:var(--d-ink) !important}
.rc-seg{display:inline-flex;gap:4px}
.rc-chip{height:28px;padding:0 10px;border:1px solid var(--d-line);border-radius:4px;background:transparent;
  color:var(--d-ink-3);font-family:var(--d-sans);font-size:10.5px;cursor:pointer;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.rc-chip:hover{color:var(--d-ink-2);border-color:var(--d-line-2)}
.rc-chip.on{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.rc-range{display:inline-flex;align-items:center;gap:6px}
.rc-range i{font-style:normal;font-size:9px;color:var(--d-ink-3)}
.rc-owner option{background:var(--d-panel);color:var(--d-ink)}
.rc-btn{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 10px;border-radius:4px;
  border:1px solid var(--d-line);background:transparent;color:var(--d-ink-2);
  font-family:var(--d-sans);font-size:10.5px;cursor:pointer;white-space:nowrap;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.rc-btn:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.rc-btn.pri{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.rc-btn.pri:hover{background:var(--d-accent);color:var(--d-bg);border-color:var(--d-accent)}
.rc-btn.danger:hover{color:var(--d-danger);border-color:rgba(255,122,110,.45);background:rgba(255,122,110,.10)}
.rc-btn[disabled]{opacity:.5;cursor:default}

/* ---------- 今日快填（常驻） ---------- */
.rc-quick{display:block;margin-bottom:14px}
.rc-quick-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid var(--d-line)}
.rc-quick-t{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--d-ink)}
.rc-quick-t svg{opacity:.6}
.rc-quick-d{display:inline-flex;align-items:center;gap:6px;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.rc-quick-b{padding:6px 14px 12px;max-height:300px;overflow:auto;
  scrollbar-width:thin;scrollbar-color:transparent transparent}
.rc-quick-b:hover{scrollbar-color:var(--d-line-2) transparent}
.rc-quick-tbl{min-width:1080px}
.rc-quick-tbl th{position:sticky;top:0;z-index:2;background:var(--d-panel);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.08em;color:var(--d-ink-3);
  font-weight:500;text-align:left;padding:8px 6px;border-bottom:1px solid var(--d-line);white-space:nowrap}
.rc-quick-tbl td{padding:5px 4px;border-bottom:1px solid var(--d-line)}

/* ---------- 明细表 ---------- */
.rc-list{display:flex;flex-direction:column;min-height:0;
  height:clamp(400px, calc(100vh - 352px), 760px)}
.rc-scroll{flex:1;min-height:0;overflow:auto;
  scrollbar-width:thin;scrollbar-color:transparent transparent}
.rc-scroll:hover{scrollbar-color:var(--d-line-2) transparent}
.rc-scroll::-webkit-scrollbar{width:8px;height:8px}
.rc-scroll::-webkit-scrollbar-track{background:transparent}
.rc-scroll::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}
.rc-scroll:hover::-webkit-scrollbar-thumb{background:var(--d-line-2)}

/* 列 = 表单字段（22 列）。用 grid 而不是 table：表头与每行共用 --rc-cols 同一串列宽，
   行内单元格不可能跟表头对不上，也不受浏览器缩放的表格舍入影响 */
.rc-grid{display:grid;grid-template-columns:var(--rc-cols);min-width:1436px;align-content:start}
.rc-gh,.rc-gr{grid-column:1/-1;display:grid;grid-template-columns:var(--rc-cols);align-items:center}
.rc-gh{position:sticky;top:0;z-index:3;background:var(--d-panel);border-bottom:1px solid var(--d-line)}
.rc-gr{border-bottom:1px solid var(--d-line);cursor:pointer;
  transition:background-color .16s var(--d-ease)}
.rc-gr:hover{background-color:var(--d-panel-hover)}
.rc-c{min-width:0;padding:8px 7px;font-size:11.5px;color:var(--d-ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rc-gh .rc-c{padding:9px 7px;font-family:var(--d-mono);font-size:8.5px;font-weight:500;
  letter-spacing:.04em;color:var(--d-ink-3)}
.rc-c.r{text-align:center}

.rc-name b{font-size:12px;font-weight:600;color:var(--d-ink)}
.rc-sub{font-family:var(--d-mono);font-size:10px;color:var(--d-ink-3);letter-spacing:.02em}
.rc-n{font-family:var(--d-mono);font-size:11px;color:var(--d-ink-2)}
.rc-n.zero{color:var(--d-ink-3);opacity:.5}
.rc-n.ch{color:var(--d-ink-3)}
.rc-n.ch:not(.zero){color:var(--d-ink-2)}
.rc-n.on{color:var(--d-ink);font-weight:600}
.rc-n.ok{color:var(--d-ok);font-weight:600}
.rc-gsep{box-shadow:inset 1px 0 0 var(--d-line)}

/* 休息行：与上面的轮次隔开（2px 分隔线 + 一点呼吸） */
.rc-gr.is-rest{border-top:2px solid var(--d-line-2)}
.rc-gr.is-rest .rc-c{color:var(--d-ink-3);padding-top:10px;padding-bottom:10px}
.rc-gr.is-rest .rc-name b{color:var(--d-ink-3);font-weight:500}
.rc-gr.is-rest .rc-n,.rc-gr.is-rest .rc-sub{opacity:.5}

/* ---------- 每轮不同底色：左侧色条 + 半透明渐变（由深到浅） ---------- */
.rc-gr[data-rt]{--rc-h:150,158,172;
  background-image:linear-gradient(90deg,
    rgba(var(--rc-h),.16) 0%,rgba(var(--rc-h),.06) 24%,
    rgba(var(--rc-h),.014) 52%,rgba(var(--rc-h),0) 76%)}
.rc-gr[data-rt="1"]{--rc-h:30,186,152}
.rc-gr[data-rt="2"]{--rc-h:82,142,232}
.rc-gr[data-rt="3"]{--rc-h:154,120,230}
.rc-gr[data-rt="rest"]{--rc-h:142,150,164}
.rc-gr[data-rt]:hover{
  background-image:linear-gradient(90deg,
    rgba(var(--rc-h),.26) 0%,rgba(var(--rc-h),.10) 28%,
    rgba(var(--rc-h),.024) 58%,rgba(var(--rc-h),0) 80%)}
.rc-gr[data-rt] .rc-c:first-child{box-shadow:inset 2px 0 0 rgba(var(--rc-h),.62)}
.rc-gr[data-rt="rest"] .rc-c:first-child{box-shadow:inset 2px 0 0 rgba(var(--rc-h),.3)}

.rc-round{display:inline-block;padding:1px 6px;border-radius:3px;
  border:1px solid rgba(var(--rc-h,150,158,172),.4);
  background:rgba(var(--rc-h,150,158,172),.12);
  font-style:normal;
  font-family:var(--d-mono);font-size:9px;color:var(--d-ink-2)}
.rc-round.rest{color:var(--d-ink-3);border-style:dashed}
.rc-owner-col{color:var(--d-ink-3);font-size:10.5px}
.rc-act-col{text-align:right;padding-right:10px}
.rc-gh .rc-act-col{text-align:right}
/* 操作按钮常显（半透明），hover 才实心——避免「这行没有操作」的误解 */
.rc-act{display:inline-flex;gap:2px;opacity:.4;
  transition:opacity .16s var(--d-ease)}
.rc-gr:hover .rc-act{opacity:1}
.rc-act button{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;
  border:1px solid transparent;border-radius:4px;background:transparent;color:var(--d-ink-3);cursor:pointer;
  transition:color .14s var(--d-ease),border-color .14s var(--d-ease),background .14s var(--d-ease)}
.rc-act button:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.rc-act button.danger:hover{color:var(--d-danger);border-color:rgba(255,122,110,.4);background:rgba(255,122,110,.1)}
@media (hover:none){.rc-act{opacity:1;transform:none}}

.rc-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  padding:56px 20px;color:var(--d-ink-3);text-align:center}
.rc-empty svg{opacity:.3}
.rc-empty .t{margin:0;font-size:12px;font-weight:600;color:var(--d-ink-2)}
.rc-empty .s{margin:0;font-size:10px;color:var(--d-ink-3)}

/* ---------- 抽屉：漏斗 + 键值 ---------- */
.rc-funnel{display:flex;flex-direction:column;gap:7px}
.rc-fn{display:flex;align-items:center;gap:9px;font-size:10.5px}
.rc-fn-l{flex:0 0 56px;color:var(--d-ink-2);white-space:nowrap}
.rc-fn-bar{flex:1;height:4px;border-radius:2px;background:var(--d-line);overflow:hidden}
.rc-fn-bar i{display:block;height:100%;border-radius:2px;
  background:linear-gradient(90deg,var(--d-accent),var(--d-accent-dim))}
.rc-fn-v{flex:0 0 30px;text-align:right;font-family:var(--d-mono);font-size:10.5px;font-weight:600;color:var(--d-ink)}
.rc-fn-r{flex:0 0 42px;text-align:right;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.rc-kv{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.rc-kv-i{display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  padding:5px 0;border-bottom:1px solid var(--d-line)}
.rc-kv-i span{font-size:10.5px;color:var(--d-ink-3)}
.rc-kv-i b{font-family:var(--d-mono);font-size:11px;font-weight:600;color:var(--d-ink)}
.rc-dw-act{display:flex;gap:8px;padding:16px 0 6px}
.rc-dw-act .rc-btn{height:30px;padding:0 12px;font-size:11px}

/* ---------- 拉新效率总览 ---------- */
.rc-stats{display:grid;gap:12px}
.rc-periods .rc-scroll{max-height:none}
/* 周期对比用的普通表格（明细表已改 grid，这里保留 table 版式） */
.rc-tbl{width:100%;border-collapse:collapse}
.rc-tbl th{position:sticky;top:0;z-index:2;background:var(--d-panel);padding:9px 12px;
  text-align:left;white-space:nowrap;font-family:var(--d-mono);font-size:8.5px;font-weight:500;
  letter-spacing:.06em;color:var(--d-ink-3);border-bottom:1px solid var(--d-line)}
.rc-tbl th.r{text-align:right}
.rc-tbl td{padding:8px 12px;border-bottom:1px solid var(--d-line);font-size:11.5px;
  color:var(--d-ink-2);white-space:nowrap}
.rc-tbl tbody tr:hover{background:var(--d-panel-hover)}
.rc-tbl tbody tr:last-child td{border-bottom:0}
.rc-tbl .r{text-align:right}
.rc-tbl-num td.rc-metric{font-size:11px;color:var(--d-ink-2)}
.rc-rate-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.rc-rate-b{padding:6px 16px 12px}
.rc-rate-i{display:flex;align-items:baseline;justify-content:space-between;
  padding:6px 0;border-bottom:1px solid var(--d-line)}
.rc-rate-i:last-child{border-bottom:0}
.rc-rate-i span{font-size:10.5px;color:var(--d-ink-3)}
.rc-rate-i b{font-family:var(--d-mono);font-size:12px;font-weight:600;color:var(--d-accent)}
.rc-rate .ch .r{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.rc-trend .ch .rc-btn{margin-left:auto}
.rc-trend-b{padding:14px 16px 16px}
.rc-trend-txt{font-size:11.5px;line-height:1.95;color:var(--d-ink-2);white-space:pre-wrap;
  max-height:420px;overflow-y:auto;scrollbar-width:thin}

/* 骨架 */
.rc-sk .rc-sk-b{display:grid;gap:8px;padding:16px}
.rc-sk-b i{display:block;height:12px;border-radius:3px;
  background:linear-gradient(90deg,var(--d-line) 25%,var(--d-panel-hover) 37%,var(--d-line) 63%);
  background-size:400% 100%;animation:rc-sk 1.4s ease infinite}
@keyframes rc-sk{from{background-position:100% 0}to{background-position:0 0}}
.rc-sk-e{margin:0;font-size:11px;color:var(--d-ink-3);line-height:1.8}

@media (max-width:1280px){
  .rc-rate-grid{grid-template-columns:1fr}
}
@media (max-width:980px){
  .rc-dash .search-box{flex:1 1 100%}
  .rc-list{height:auto;max-height:none}
  .rc-scroll{max-height:64vh}
}

/* 表格卡 / 快填卡不做悬停位移，避免鼠标扫过时整块跳动 */
html[data-skin] .rc-dash .rc-list:hover,
html[data-skin] .rc-dash .rc-quick:hover,
html[data-skin] .rc-dash .rc-periods:hover{transform:none !important}

/* ============================================================
   40. 邀约登记（内部骨架重写版）
   - 复用第 37 节的工具行 / 快填 / grid 明细表样式
   - 这里只补：本页信息密度、日期分组条、材料入口、详情抽屉
   ============================================================ */
.iv-dash .hd{margin-bottom:14px}
.iv-dash .hero{margin-bottom:16px}
.iv-dash .tabs-wrap{margin-left:auto}
.iv-dash .tl{width:0;opacity:1;transition:transform .3s var(--d-ease),width .3s var(--d-ease)}
.iv-dash .rc-tools{margin-bottom:14px}
.iv-dash .rc-search{flex:0 0 210px}
.iv-hint{font-size:9.5px;color:var(--d-ink-3);line-height:1.6}

/* 筛选生效提示：点过待办里的经纪人后，必须一眼看出「列表变短是筛了人」 */
.iv-dash .rc-owner.is-on{border-color:var(--d-accent-line) !important;color:var(--d-accent) !important}
.iv-fchip{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 9px;
  border:1px solid var(--d-accent-line);border-radius:4px;background:var(--d-accent-dim);
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-accent);cursor:pointer;white-space:nowrap;
  transition:background .16s var(--d-ease),border-color .16s var(--d-ease)}
.iv-fchip b{font-weight:600}
.iv-fchip:hover{background:transparent;border-color:var(--d-accent)}

/* 日历外框并入面板色（内部「今天 / 其他」卡片保留原配色） */
.iv-dash [data-invite-calendar] > div{
  background:var(--d-panel) !important;border-color:var(--d-line) !important;
  border-radius:var(--d-r) !important;box-shadow:none !important;margin-bottom:14px !important}

/* 快捷登记：列多，给一个更宽的基准，内部横向滚动 */
.iv-dash .rc-quick{margin-bottom:14px}
.iv-dash .rc-quick-tbl{min-width:1360px}
.iv-dash .rc-quick .btn{white-space:nowrap}

/* 明细表：本页 18 列 + 操作 */
.iv-dash .rc-list{height:auto}
.iv-dash .rc-scroll{max-height:none}
.iv-grid{min-width:1414px}
.iv-dash .rc-c{font-size:11px;padding:6px}
.iv-dash .rc-gh .rc-c{padding:8px 6px}
.iv-dash .rc-gh .iv-c{text-align:center}
.iv-dash .rc-c img{border-radius:6px !important}
.iv-dash .rc-gr{border-bottom:1px solid var(--d-line)}
.iv-dash .rc-gr:hover{background-color:var(--d-panel-hover)}
.iv-gr .iv-c{text-align:center}

.iv-idx{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.iv-nm{font-size:12px;font-weight:600;color:var(--d-ink)}
.iv-mono{font-family:var(--d-mono);font-size:10px;color:var(--d-ink-2);letter-spacing:.01em}
.iv-tx{font-size:11px;color:var(--d-ink-2)}
.iv-dim{color:var(--d-ink-3);opacity:.75}

/* 渠道 / 招募类型 / 状态小标签 */
.iv-bd{display:inline-block;max-width:100%;padding:1px 6px;border-radius:3px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-family:var(--d-mono);font-size:8.5px;
  color:var(--d-ink-3);border:1px solid var(--d-line)}
.iv-bd.boss{color:#6aa6ff;border-color:rgba(106,166,255,.45);background:rgba(106,166,255,.10)}
.iv-bd.xhs{color:#ff7b8a;border-color:rgba(255,123,138,.42);background:rgba(255,123,138,.10)}
.iv-bd.dy{color:#8fd4ff;border-color:rgba(143,212,255,.38);background:rgba(143,212,255,.08)}
.iv-bd.off{color:var(--d-warn);border-color:rgba(214,168,88,.4);background:rgba(214,168,88,.08)}
.iv-bd.ref{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.iv-bd.ok{color:var(--d-ok);border-color:rgba(74,196,140,.45);background:rgba(74,196,140,.08)}
.iv-bd.warn{color:var(--d-warn);border-color:rgba(214,168,88,.42)}

.iv-date{font-family:var(--d-mono);font-size:10px;color:var(--d-ink-2)}
.iv-date.on{color:var(--d-ok);font-weight:600}
.iv-lnk{display:inline-block;padding:0;border:0;border-bottom:1px dashed var(--d-accent-line);
  background:transparent;color:var(--d-accent);font-family:var(--d-sans);font-size:10.5px;
  line-height:1.5;cursor:pointer}
.iv-lnk:hover{color:var(--d-ink);border-bottom-color:var(--d-ink)}
.iv-lnk.bad{color:var(--d-danger);border-bottom-color:rgba(255,122,110,.55)}
.iv-st{font-style:normal;font-family:var(--d-mono);font-size:9px;color:var(--d-warn)}

/* 日期分组条：把同一天的候选人圈在一起 */
.iv-sep{grid-column:1/-1;display:flex;align-items:center;gap:8px;padding:6px 10px;
  background:var(--d-panel-hover);border-top:1px solid var(--d-line-2);border-bottom:1px solid var(--d-line);
  font-family:var(--d-mono);font-size:9px;letter-spacing:.05em;color:var(--d-ink-3)}
.iv-sep b{font-weight:500;color:var(--d-ink-2)}
.iv-sep em{margin-left:auto;font-style:normal;font-size:8.5px;opacity:.8}
.iv-sep.today b{color:var(--d-ok)}
.iv-sep-t{width:4px;height:4px;border-radius:50%;background:var(--d-ok);box-shadow:0 0 0 3px rgba(74,196,140,.15)}

/* 详情抽屉 */
.iv-dash .dw{width:460px}
.iv-hero{display:flex;align-items:center;gap:13px}
.iv-hero-ph{flex:0 0 auto}
.iv-hero-ph img{width:66px !important;height:66px !important;border-radius:8px !important;border:1px solid var(--d-line) !important}
.iv-hero-ph > div[style]{width:66px !important;height:66px !important;border-radius:8px !important;border-radius:8px !important}
.iv-hero-i{min-width:0}
.iv-hero-n{font-size:15px;font-weight:650;color:var(--d-ink);line-height:1.4}
.iv-hero-s{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:5px;
  font-size:10.5px;color:var(--d-ink-3)}
.iv-hero-t{margin-top:6px;font-family:var(--d-mono);font-size:10px;color:var(--d-ink-2)}
.iv-kv1{grid-template-columns:1fr}
.iv-mats{display:flex;gap:7px;flex-wrap:wrap}
.iv-mat{flex:1 1 110px;display:flex;flex-direction:column;align-items:flex-start;gap:4px;
  padding:8px 10px;border:1px solid var(--d-line);border-radius:6px;background:transparent;
  cursor:pointer;text-align:left;transition:border-color .16s var(--d-ease),background .16s var(--d-ease)}
.iv-mat span{font-size:10px;color:var(--d-ink-3)}
.iv-mat b{font-family:var(--d-mono);font-size:10.5px;font-weight:600;color:var(--d-accent)}
.iv-mat:hover{border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.iv-mat.off{cursor:default;opacity:.55}
.iv-mat.off b{color:var(--d-ink-3)}
.iv-mat.off:hover{border-color:var(--d-line);background:transparent}

/* 六格 KPI：今日待登记 / 今日待上传 排在最前 */
.iv-dash .hero .kpis{grid-template-columns:repeat(6,1fr)}
.iv-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.iv-dash .kpi.is-ok .kpi-v{color:var(--d-ok)}
.iv-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.85}
.iv-dash .kpi.is-ok .kpi-s{color:var(--d-ok);opacity:.8}
.iv-dash .kpi[data-iv-kpi-box]{cursor:default}

/* 今日待办：两张横排小卡，左边按人、右边按材料 */
.iv-todo{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
.iv-todo-c{overflow:hidden}
.iv-todo-c .ch{padding:10px 14px}
.iv-todo-c .ch .r{font-size:9px;letter-spacing:.02em}
.iv-todo-b{padding:2px 0 6px;max-height:168px;overflow-y:auto;scrollbar-width:thin}
.iv-trow{display:flex;align-items:center;gap:10px;padding:6px 14px;min-height:28px;cursor:pointer;
  border-left:2px solid transparent;transition:background .16s var(--d-ease),border-color .16s var(--d-ease)}
.iv-trow:hover{background:var(--d-panel-hover);border-left-color:var(--d-accent)}
.iv-tname{flex:0 0 auto;max-width:34%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:11px;font-weight:600;color:var(--d-ink)}
.iv-tname .iv-towner{margin-left:6px;font-style:normal;font-weight:400;font-size:9.5px;color:var(--d-ink-3)}
.iv-tbar{flex:1;height:3px;border-radius:2px;background:var(--d-line);overflow:hidden}
.iv-tbar i{display:block;height:100%;border-radius:2px;background:var(--d-ok);transition:width .4s var(--d-ease)}
.iv-trow.is-late .iv-tbar i{background:var(--d-warn)}
.iv-tnum{flex:0 0 auto;font-family:var(--d-mono);font-size:10px;font-weight:600;color:var(--d-ink-2);letter-spacing:.02em}
.iv-tnum em{font-style:normal;font-weight:400;color:var(--d-ink-3);opacity:.8}
.iv-trow.is-late .iv-tnum{color:var(--d-warn)}
.iv-ttags{display:flex;align-items:center;gap:4px;flex-wrap:wrap;flex:1;justify-content:flex-end}
.iv-ttag{font-style:normal;font-family:var(--d-mono);font-size:8.5px;padding:1px 6px;border-radius:3px;
  color:var(--d-warn);border:1px solid rgba(214,168,88,.42);background:rgba(214,168,88,.08)}
.iv-tgo{color:var(--d-accent)}
.iv-tmore{padding:6px 14px;font-size:9.5px;color:var(--d-ink-3)}
.iv-tempty{padding:18px 14px;font-size:10.5px;color:var(--d-ink-3)}

@media (max-width:1280px){
  .iv-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .iv-dash .hero .kpi:nth-child(4){border-left:0}
  .iv-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
  .iv-dash .rc-search{flex:1 1 100%}
  .iv-todo{grid-template-columns:1fr}
}
@media (max-width:980px){
  .iv-dash .rc-list{height:auto}
  .iv-dash .rc-scroll{max-height:none}
  .iv-dash .dw{width:100%}
  .iv-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .iv-dash .hero .kpi:nth-child(3),
  .iv-dash .hero .kpi:nth-child(5){border-left:0}
  .iv-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
}

/* ============================================================
   41. 面试反馈（内部骨架重写版）
   - 复用第 37 节的工具行 / grid 明细表
   - 这里补：页头徽标、看板容器、明细密度、详情抽屉
   ============================================================ */
.if-dash .hd{margin-bottom:14px}
.if-dash .hero{margin-bottom:16px}
.if-dash .hd-t{align-items:center}
.if-dash .if-hd-r{margin-left:auto;display:flex;align-items:center;gap:6px;align-self:center}
.if-dash .hero .kpis{grid-template-columns:repeat(6,1fr)}
.if-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.if-dash .kpi.is-ok .kpi-v{color:var(--d-ok)}
.if-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.85}
.if-dash .kpi.is-ok .kpi-s{color:var(--d-ok);opacity:.8}
.if-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}

/* ---------- 工具行 ---------- */
.if-dash .rc-tools{margin-bottom:14px}
.if-dash .search-box{flex:0 0 200px}
html[data-skin] .if-dash .if-sel,
.if-dash .if-sel{width:134px !important}
.if-dash .rc-owner option{background:var(--d-panel);color:var(--d-ink)}

/* ---------- 看板：把原三段内联卡片收进 dash 面板 ---------- */
.if-board{margin-bottom:14px;display:block}
.if-board-b{padding:12px 14px 14px}
.if-board-b [data-audio-alert] > div{
  margin-bottom:10px !important;border-radius:6px !important;
  background:rgba(255,122,110,.08) !important;border:1px solid rgba(255,122,110,.32) !important}
.if-board-b [data-audio-alert] span{font-size:11px !important;font-weight:600 !important;color:var(--d-danger) !important}
.if-board-b [data-audio-alert] .btn{
  background:rgba(255,122,110,.14) !important;color:var(--d-danger) !important;
  border:1px solid rgba(255,122,110,.4) !important;border-radius:4px !important;
  font-size:10px !important;padding:4px 10px !important;height:auto !important}
.if-board-b [data-collapse-module]{
  border-radius:6px !important;background:var(--d-panel) !important;
  border:1px solid var(--d-line) !important;box-shadow:none !important}
.if-board-b [data-hover-card]{
  border-radius:6px !important;background:var(--d-panel) !important;
  border:1px solid var(--d-line) !important;box-shadow:none !important}
.if-board-b [data-modules-toggle]{
  font-size:9.5px !important;padding:1px 9px !important;border-radius:3px !important}
.if-board-b [data-followup-alert] > div:first-child{padding:0 0 6px !important}
.if-board-b [data-followup-alert] > div[data-modules-body]{padding:0 !important;gap:10px !important}
.if-board-b [data-collapse-module] > div:first-child > div{font-size:11px !important}

/* ---------- 明细表 ---------- */
.if-dash .rc-list{height:auto}
.if-dash .rc-scroll{max-height:none}
.if-grid{min-width:1540px}.if-dash .rc-c{font-size:11px;padding:7px 6px}
.if-dash .rc-gh .rc-c{padding:9px 6px}
.if-dash .rc-c.if-fb{white-space:normal;overflow:visible}
.if-dash .if-c{text-align:center}
.if-dash .rc-c img{border-radius:6px !important}
.if-dash .rc-act-col{text-align:right}

.if-dt{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:center;min-width:0;width:100%}
/* 行内日期框：宽度吃满整列，避免「2026/11/0」被日历图标挤掉 */
.if-dash .if-grid .if-inp{width:100% !important;min-width:0 !important;padding:0 3px !important;
  text-align:center;font-variant-numeric:tabular-nums;letter-spacing:.01em}
.if-dash .if-grid .if-inp::-webkit-calendar-picker-indicator{margin:0 0 0 2px;padding:0;opacity:.6;cursor:pointer}
.if-dash .if-grid .if-inp::-webkit-datetime-edit{padding:0}
.if-d{font-family:var(--d-mono);font-size:10px;color:var(--d-ink-2)}
.if-tm{font-family:var(--d-mono);font-size:9.5px;color:var(--d-ink-3)}
.if-rs{font-style:normal;font-family:var(--d-mono);font-size:8.5px;color:var(--d-warn);white-space:nowrap}
.if-dim{color:var(--d-ink-3);opacity:.8}
.if-tx{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--d-ink-2)}
.if-lnk{display:inline-block;padding:0;border:0;border-bottom:1px dashed var(--d-accent-line);
  background:transparent;color:var(--d-accent);font-family:var(--d-sans);font-size:10.5px;
  line-height:1.5;cursor:pointer;white-space:nowrap}
.if-lnk:hover{color:var(--d-ink);border-bottom-color:var(--d-ink)}

/* 行内控件压过 skin.css 的 !important */
html[data-skin] .if-dash .if-grid .input,
.if-dash .if-grid .input{height:26px !important;padding:0 5px !important;font-size:10.5px !important;
  border:1px solid var(--d-line) !important;border-radius:4px !important;
  background:transparent !important;box-shadow:none !important;color:var(--d-ink) !important}
html[data-skin] .if-dash .if-grid .select,
.if-dash .if-grid .select{height:26px !important;padding:0 4px !important;font-size:10.5px !important;
  border:1px solid var(--d-line) !important;border-radius:4px !important;
  background:transparent !important;box-shadow:none !important;color:var(--d-ink) !important}
html[data-skin] .if-dash .if-grid .textarea,
.if-dash .if-grid .textarea{min-height:46px !important;height:46px !important;padding:5px 6px !important;
  font-size:10.5px !important;line-height:1.5 !important;border:1px solid var(--d-line) !important;
  border-radius:4px !important;background:transparent !important;box-shadow:none !important;
  color:var(--d-ink) !important;resize:vertical}
html[data-skin] .if-dash .if-grid .input:focus,
html[data-skin] .if-dash .if-grid .select:focus,
html[data-skin] .if-dash .if-grid .textarea:focus{border-color:var(--d-accent-line) !important}
html[data-skin] .if-dash .if-grid .btn{height:22px !important;padding:0 7px !important;
  font-size:9.5px !important;border-radius:3px !important;border:1px solid var(--d-line) !important;
  background:transparent !important;color:var(--d-ink-2) !important;box-shadow:none !important}
html[data-skin] .if-dash .if-grid .btn:hover{border-color:var(--d-accent-line) !important;color:var(--d-accent) !important}

/* 日期分组条 */
.if-sep{grid-column:1/-1;display:flex;align-items:center;gap:8px;padding:6px 10px;
  background:var(--d-panel-hover);border-top:1px solid var(--d-line-2);border-bottom:1px solid var(--d-line);
  font-family:var(--d-mono);font-size:9px;letter-spacing:.05em;color:var(--d-ink-3)}
.if-sep b{font-weight:500;color:var(--d-ink-2)}
.if-sep em{margin-left:auto;font-style:normal;font-size:8.5px;opacity:.8}
.if-sep.today b{color:var(--d-ok)}
.if-sep-t{width:4px;height:4px;border-radius:50%;background:var(--d-ok);box-shadow:0 0 0 3px rgba(74,196,140,.15)}

/* ---------- 详情抽屉 ---------- */
.if-dash .dw{width:452px}
.if-hero-n{font-size:15px;font-weight:650;color:var(--d-ink);line-height:1.4}
.if-hero-s{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:6px}
.if-hero-t{margin-top:6px;font-family:var(--d-mono);font-size:10px;color:var(--d-ink-2);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.if-score{font-family:var(--d-mono);font-size:9.5px;font-weight:600;color:var(--d-ok);
  border:1px solid rgba(74,196,140,.4);background:rgba(74,196,140,.08);border-radius:3px;padding:1px 6px}
.if-dash .dw .badge{font-size:9.5px;padding:1px 7px;border-radius:3px}
.if-fbtxt{font-size:11.5px;line-height:1.75;color:var(--d-ink-2);white-space:pre-wrap;
  background:var(--d-panel-hover);border:1px solid var(--d-line);border-radius:6px;
  padding:9px 11px;max-height:200px;overflow:auto;scrollbar-width:thin}
.if-mats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.if-mat{padding:8px 10px;border:1px solid var(--d-line);border-radius:6px;min-width:0}
.if-mat > span{display:block;font-size:9.5px;color:var(--d-ink-3);margin-bottom:6px}
.if-lnks{margin-top:9px}
.if-dash .dw .rc-kv-i b{font-family:var(--d-sans);font-size:10.5px;text-align:right;word-break:break-all}

/* 手机上传入口弹窗 */
.if-help .t{font-size:12.5px;color:var(--text-2);margin-bottom:8px}
.if-help ol{padding-left:18px;margin:0 0 10px;font-size:12px;line-height:1.9;color:var(--text)}
.if-help a{color:var(--primary-2);font-weight:700;word-break:break-all}
.if-help .tip{padding:8px 11px;border-radius:8px;font-size:11.5px;line-height:1.7;margin-bottom:8px;
  background:var(--primary-soft);border:1px solid var(--indigo-border);color:var(--primary-2)}
.if-help .tip.ok{background:var(--green-soft);border-color:var(--green-border);color:var(--sk-ok,#4ade80)}

@media (max-width:1560px){
  .if-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .if-dash .hero .kpi:nth-child(4){border-left:0}
  .if-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .if-dash .search-box{flex:1 1 100%}
  .if-dash .if-hd-r{margin-left:0}
}
@media (max-width:980px){
  .if-dash .rc-scroll{max-height:none}
  .if-dash .dw{width:100%}
  .if-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .if-dash .hero .kpi:nth-child(3),
  .if-dash .hero .kpi:nth-child(5){border-left:0}
  .if-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
}

/* ============================================================
   42. 主播跟进（内部骨架重写版）
   - 复用 .hd / hero(.kpis) / .rc-tools / .card .ch
   - 这里补：阶段页签、业务时间安排、阶段分组、主播卡片
   ============================================================ */
.fu-dash{--primary:var(--d-accent);--primary-2:var(--d-accent);--primary-soft:var(--d-accent-dim)}
.fu-dash .hd{margin-bottom:14px}
.fu-dash .hd-t{align-items:center}
.fu-dash .hero{margin-bottom:16px}
.fu-dash .hero .kpis{grid-template-columns:repeat(6,1fr)}
.fu-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.fu-dash .kpi.is-ok .kpi-v{color:var(--d-ok)}
.fu-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.85}
.fu-dash .kpi.is-ok .kpi-s{color:var(--d-ok);opacity:.8}
.fu-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.fu-dash .rc-tools{margin-bottom:14px}
.fu-dash .search-box{flex:0 0 220px}

/* ---------- 阶段页签 ---------- */
.fu-tabs{display:flex;gap:2px;overflow-x:auto;padding:0 2px;margin:0 0 14px;
  border-bottom:1px solid var(--d-line);scrollbar-width:none}
.fu-tabs::-webkit-scrollbar{display:none}
.fu-tab{position:relative;flex:0 0 auto;height:34px;padding:0 12px;border:0;background:transparent;
  color:var(--d-ink-3);font-family:var(--d-sans);font-size:12px;cursor:pointer;white-space:nowrap;
  transition:color .16s var(--d-ease)}
.fu-tab:hover{color:var(--d-ink-2)}
.fu-tab.on{color:var(--d-ink);font-weight:600}
.fu-tab.on::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;
  border-radius:2px;background:var(--d-accent);box-shadow:var(--d-glow)}
.fu-tab [data-tab-count]{font-family:var(--d-mono);font-size:8.5px;margin-left:4px;color:var(--d-ink-3)}
.fu-tab.on [data-tab-count]{color:var(--d-accent)}

/* ---------- 业务时间安排 ---------- */
.fu-sched{margin-bottom:14px}
.fu-sched-b{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:12px 14px 14px}
.fu-sched-col{min-width:0}
.fu-sched-h{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--d-ink-2);margin-bottom:8px}
.fu-sdot{width:5px;height:5px;border-radius:50%;background:var(--d-accent)}
.fu-sdot.biz{background:var(--d-ok)}
.fu-sched-n{margin-left:auto;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.fu-sched-body{display:flex;flex-direction:column;gap:7px}
.fu-sched-g{border:1px solid var(--d-line);border-radius:6px;padding:7px 9px;background:var(--d-panel)}
.fu-sched-op{display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--d-ink-2);margin-bottom:6px}
.fu-sched-op em{font-style:normal;font-family:var(--d-mono);font-size:8.5px;color:var(--d-ink-3);
  border:1px solid var(--d-line);border-radius:3px;padding:0 4px;line-height:1.5}
.fu-sched-items{display:flex;flex-wrap:wrap;gap:5px}
.fu-sched-i{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 8px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;cursor:pointer;
  font-family:inherit;transition:.14s var(--d-ease)}
.fu-sched-i b{font-size:10.5px;font-weight:500;color:var(--d-ink)}
.fu-sched-i span{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.fu-sched-i:hover{border-color:var(--d-accent-line);background:var(--d-panel-hover)}
.fu-sched-empty{font-size:11px;color:var(--d-ink-3)}

/* ---------- 阶段分组 ---------- */
.fu-groups{display:flex;flex-direction:column;gap:18px}
.fu-group{display:flex;flex-direction:column;gap:8px}
.fu-group.is-terminal{margin-top:2px;padding-top:14px;border-top:1px solid var(--d-line)}
.fu-group-h{display:flex;align-items:center;gap:8px}
.fu-gdot{width:4px;height:12px;border-radius:2px;background:var(--d-ink-3);flex:0 0 auto}
.fu-group[data-stage-tone="red"] .fu-gdot{background:#e06c60}
.fu-group[data-stage-tone="amber"] .fu-gdot{background:#d9a441}
.fu-group[data-stage-tone="blue"] .fu-gdot{background:#5a90e0}
.fu-group[data-stage-tone="pink"] .fu-gdot{background:var(--d-accent)}
.fu-group[data-stage-tone="teal"] .fu-gdot{background:#33b39a}
.fu-group[data-stage-tone="green"] .fu-gdot{background:var(--d-ok)}
.fu-group[data-stage-tone="violet"] .fu-gdot{background:#9a78e6}
.fu-group-h b{font-size:12px;font-weight:600;color:var(--d-ink);white-space:nowrap}
.fu-gn{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3);
  border:1px solid var(--d-line);border-radius:3px;padding:0 5px;line-height:1.55}
.fu-gw{font-size:10px;font-weight:500;color:var(--d-warn);white-space:nowrap}
.fu-gline{flex:1;height:1px;background:var(--d-line);min-width:12px}
.fu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}

/* ---------- 主播卡片 ---------- */
.fu-c{position:relative;display:flex;flex-direction:column;min-width:0;
  border:1px solid var(--d-line);border-radius:8px;background:var(--d-panel);
  padding:12px 13px 0;cursor:pointer;
  transition:border-color .16s var(--d-ease),background .16s var(--d-ease)}
.fu-c:hover{border-color:var(--d-line-2);background:var(--d-panel-hover)}
/* 待跟进：暖色渐变填充，和普通卡片一眼分开 */
.fu-c.is-pending{
  border-color:rgba(224,150,60,.46);
  background:
    linear-gradient(135deg,rgba(240,178,86,.20) 0%,rgba(226,132,96,.10) 46%,rgba(224,150,60,.03) 100%),
    var(--d-panel);
}
.fu-c.is-pending:hover{
  border-color:rgba(224,150,60,.66);
  background:
    linear-gradient(135deg,rgba(240,178,86,.28) 0%,rgba(226,132,96,.14) 48%,rgba(224,150,60,.05) 100%),
    var(--d-panel-hover);
}
.fu-c.is-pending .fu-c-av img,.fu-c.is-pending .fu-c-av>div{box-shadow:0 0 0 1px rgba(224,150,60,.35)}
.fu-c:focus-visible{outline:2px solid var(--d-accent);outline-offset:2px}
.fu-c-h{display:flex;align-items:flex-start;gap:9px;min-width:0}
.fu-c-av{flex:0 0 auto}
.fu-c-av img,.fu-c-av>div{width:42px !important;height:42px !important;border-radius:8px !important;object-fit:cover}
.fu-c-id{min-width:0;flex:1}
.fu-c-n{font-size:13.5px;font-weight:600;color:var(--d-ink);line-height:1.35;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fu-c-s{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:5px}
.fu-c-s .badge{font-size:9px !important;padding:1px 6px !important;border-radius:3px !important;text-shadow:none;box-shadow:none !important}
.fu-tag{display:inline-flex;align-items:center;height:16px;padding:0 5px;border-radius:3px;
  font-size:8.5px;font-weight:600;white-space:nowrap}
.fu-tag.warn{color:var(--d-warn);background:rgba(224,150,60,.1);border:1px solid rgba(224,150,60,.3)}
.fu-tag.danger{color:var(--d-danger);background:rgba(255,122,110,.1);border:1px solid rgba(255,122,110,.3)}
.fu-c-day{font-family:var(--d-mono);font-size:8.5px;color:var(--d-ink-3);white-space:nowrap}
.fu-c-tip{flex:0 0 auto;font-size:8.5px;font-weight:600;color:var(--d-danger);
  border:1px solid rgba(255,122,110,.35);border-radius:3px;padding:1px 5px;white-space:nowrap}
.fu-c-rows{display:grid;grid-template-columns:1fr 1fr;gap:5px 10px;margin:10px 0 8px;min-width:0}
.fu-c-rows>div{min-width:0;display:flex;align-items:baseline;gap:5px}
.fu-c-rows .wide{grid-column:1/-1}
.fu-c-rows i{font-style:normal;flex:0 0 auto;font-size:9px;color:var(--d-ink-3)}
.fu-c-rows b{min-width:0;font-size:10.5px;font-weight:500;color:var(--d-ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fu-c-people{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}
.fu-c-people span{display:inline-flex;align-items:center;gap:4px;height:19px;padding:0 6px;
  border:1px solid var(--d-line);border-radius:3px;font-size:9.5px;color:var(--d-ink-2);
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fu-c-people i{font-style:normal;color:var(--d-ink-3);font-size:8.5px;flex:0 0 auto}
.fu-c-f{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:auto;
  padding:7px 0 9px;border-top:1px solid var(--d-line)}
.fu-c-cnt{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.fu-c-acts{display:flex;gap:1px;flex:0 0 auto}
.fu-cb{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid transparent;border-radius:4px;background:transparent;color:var(--d-ink-3);
  cursor:pointer;transition:.14s var(--d-ease)}
.fu-cb:hover{color:var(--d-ink);border-color:var(--d-line);background:var(--d-panel)}
.fu-cb.danger:hover{color:var(--d-danger);border-color:rgba(255,122,110,.4);background:rgba(255,122,110,.08)}
.fu-cb svg{width:13px;height:13px}

@media (max-width:1560px){
  .fu-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .fu-dash .hero .kpi:nth-child(4){border-left:0}
  .fu-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .fu-dash .search-box{flex:1 1 100%}
  .fu-sched-b{grid-template-columns:1fr}
}
@media (max-width:980px){
  .fu-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .fu-dash .hero .kpi:nth-child(3),
  .fu-dash .hero .kpi:nth-child(5){border-left:0}
  .fu-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
  .fu-grid{grid-template-columns:1fr}
}

/* 主播跟进弹窗：与页面同色系（showModal 的 mask 上带 .fu-page，app.css 里那套马卡龙变量在这里被覆盖） */
html[data-skin] .fu-page{
  --primary:var(--d-accent); --primary-2:var(--d-accent); --primary-soft:var(--d-accent-dim);
  --accent:var(--d-accent);
  --bg:var(--d-panel); --surface:var(--d-panel); --surface-2:var(--d-panel-hover);
  --border:var(--d-line); --border-strong:var(--d-line-2);
  --text:var(--d-ink); --text-2:var(--d-ink-2); --text-3:var(--d-ink-3);
  --amber-text:var(--d-warn); --amber-border:var(--d-line-2);
  --green:var(--d-ok); --red:var(--d-danger); --orange-soft:var(--d-panel-hover);
}
html[data-skin] .fu-page .fu-card-modal .table td{border-color:var(--d-line)}
html[data-skin] .fu-page .fu-modal-head{background:var(--d-panel-hover);border-bottom:1px solid var(--d-line)}
html[data-skin] .fu-page .fu-modal-name{color:var(--d-ink)}
html[data-skin] .fu-page .fu-modal-meta{color:var(--d-ink-3)}
html[data-skin] .fu-page .fu-edit-label{color:var(--d-ink-2)}
html[data-skin] .fu-page .fu-modal-avatar img,
html[data-skin] .fu-page .fu-modal-avatar>div{border-radius:8px !important}

/* ============================================================
   43. 主播签约管理 / 淘汰流失档案（内部骨架重写版）
   - 复用 .hd / hero(.kpis) / .rc-tools / grid 明细表
   - 这里补：页签、到期徽标、状态 chip、附件按钮、备注浮层
   ============================================================ */
.sc-dash,.el-dash{--primary:var(--d-accent);--primary-2:var(--d-accent);--primary-soft:var(--d-accent-dim)}
.sc-dash .hd,.el-dash .hd{margin-bottom:14px}
.sc-dash .hd-t,.el-dash .hd-t{align-items:center}
.sc-dash .hero,.el-dash .hero{margin-bottom:14px}
.sc-dash .hero .kpis,.el-dash .hero .kpis{grid-template-columns:repeat(6,1fr)}
.sc-dash .kpi.is-warn .kpi-v,.el-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.sc-dash .kpi.is-danger .kpi-v,.el-dash .kpi.is-danger .kpi-v{color:var(--d-danger)}
.sc-dash .kpi.is-warn .kpi-s,.el-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.85}
.sc-dash .kpi.is-danger .kpi-s,.el-dash .kpi.is-danger .kpi-s{color:var(--d-danger);opacity:.85}
.sc-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}

/* ---------- 分页 ---------- */
.sc-tabs{display:flex;gap:2px;overflow-x:auto;padding:0 2px;margin:0 0 12px;
  border-bottom:1px solid var(--d-line);scrollbar-width:none}
.sc-tabs::-webkit-scrollbar{display:none}
.sc-tab{position:relative;flex:0 0 auto;height:34px;padding:0 12px;border:0;background:transparent;
  color:var(--d-ink-3);font-family:var(--d-sans);font-size:12px;cursor:pointer;white-space:nowrap;
  transition:color .16s var(--d-ease)}
.sc-tab:hover{color:var(--d-ink-2)}
.sc-tab.on{color:var(--d-ink);font-weight:600}
.sc-tab.on::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;
  border-radius:2px;background:var(--d-accent);box-shadow:var(--d-glow)}
.sc-tab i{font-style:normal;font-family:var(--d-mono);font-size:8.5px;margin-left:5px;padding:0 4px;
  border:1px solid var(--d-line);border-radius:3px;color:var(--d-ink-3);vertical-align:1px}
.sc-tab.on i{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}

/* ---------- 工具行 ---------- */
.sc-dash .rc-tools,.el-dash .rc-tools{margin-bottom:12px}
html[data-skin] .sc-dash .search-box,
html[data-skin] .el-dash .search-box,
.sc-dash .search-box,
.el-dash .search-box{flex:0 0 224px;height:30px;padding:0 10px;border-radius:6px;
  border:1px solid var(--d-line) !important;background:var(--d-panel) !important;box-shadow:none !important}
.sc-dash .search-box:focus-within,
.el-dash .search-box:focus-within{border-color:var(--d-accent-line) !important}
html[data-skin] .sc-dash .search-box .input,
html[data-skin] .el-dash .search-box .input,
.sc-dash .search-box .input,
.el-dash .search-box .input{height:100% !important;padding:0 !important;border:0 !important;
  border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-size:11px !important;color:var(--d-ink) !important}
.sc-dash .search-box .input::placeholder,
.el-dash .search-box .input::placeholder{color:var(--d-ink-3)}
html[data-skin] .el-dash .el-sel,
.el-dash .el-sel{width:150px !important;height:30px !important;border-radius:6px !important;
  border:1px solid var(--d-line) !important;background:transparent !important;
  box-shadow:none !important;color:var(--d-ink-2) !important;font-size:10.5px !important;padding:0 8px !important}
.el-note{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--d-ink-3);white-space:nowrap}
.el-note svg{opacity:.7}

/* ---------- 明细表 ---------- */
.sc-dash .rc-list,.el-dash .rc-list{height:auto}
.sc-dash .rc-scroll,.el-dash .rc-scroll{max-height:72vh}
.sc-grid{min-width:1290px}
.el-grid{min-width:1010px}
.sc-gr{cursor:default}
.sc-c{text-align:center}
.sc-dim{color:var(--d-ink-3)}
.sc-gr .rc-name b{font-size:12px;font-weight:600;color:var(--d-ink)}
.sc-tag{display:inline-block;font-style:normal;margin-left:6px;padding:0 5px;border-radius:3px;
  border:1px solid var(--d-line);font-family:var(--d-mono);font-size:8px;line-height:1.6;
  color:var(--d-ink-3);vertical-align:1px}

/* 到期时间：临期琥珀、过期红，后面跟一句状态 */
.sc-dl{display:inline-flex;align-items:center;gap:5px;font-family:var(--d-mono);font-size:10.5px;
  color:var(--d-ink-2);white-space:nowrap}
.sc-dl em{font-style:normal;font-size:8.5px;padding:0 4px;border-radius:3px;line-height:1.65}
.sc-dl.is-warn{color:var(--d-warn)}
.sc-dl.is-warn em{background:rgba(224,150,60,.12);border:1px solid rgba(224,150,60,.30)}
.sc-dl.is-danger{color:var(--d-danger)}
.sc-dl.is-danger em{background:rgba(255,122,110,.12);border:1px solid rgba(255,122,110,.32)}
.sc-dl.is-empty{color:var(--d-ink-3);opacity:.6}

/* 合同附件 */
.sc-file{display:inline-flex;align-items:center;gap:4px;max-width:100%;height:22px;padding:0 7px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;color:var(--d-ink-2);
  font-family:var(--d-sans);font-size:9.5px;cursor:pointer;
  transition:color .14s var(--d-ease),border-color .14s var(--d-ease),background .14s var(--d-ease)}
.sc-file span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-file svg{flex:0 0 auto;opacity:.8}
.sc-file:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.sc-none{color:var(--d-ink-3);opacity:.6;font-size:10.5px}
.sc-note{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  vertical-align:bottom;border-bottom:1px dashed var(--d-line-2);color:var(--d-ink-2);cursor:help}

/* 状态 / 来源 chip */
.sc-st{display:inline-flex;align-items:center;height:17px;padding:0 6px;border-radius:3px;
  border:1px solid var(--d-line);font-size:9px;font-weight:600;white-space:nowrap;color:var(--d-ink-3)}
.sc-st.is-danger{color:var(--d-danger);border-color:rgba(255,122,110,.35);background:rgba(255,122,110,.08)}
.sc-st.is-warn{color:var(--d-warn);border-color:rgba(224,150,60,.35);background:rgba(224,150,60,.08)}
.sc-st.is-info{color:var(--d-ink-2)}
.sc-st.is-accent{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}

@media (max-width:1560px){
  .sc-dash .hero .kpis,.el-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .sc-dash .hero .kpi:nth-child(4),.el-dash .hero .kpi:nth-child(4){border-left:0}
  .sc-dash .hero .kpi:nth-child(n+4),.el-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .sc-dash .search-box,.el-dash .search-box{flex:1 1 100%}
  .el-dash .el-note{display:none}
}
@media (max-width:980px){
  .sc-dash .hero .kpis,.el-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .sc-dash .hero .kpi:nth-child(3),.sc-dash .hero .kpi:nth-child(5),
  .el-dash .hero .kpi:nth-child(3),.el-dash .hero .kpi:nth-child(5){border-left:0}
  .sc-dash .hero .kpi:nth-child(n+3),.el-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
}

/* ============================================================
   44. 主播数据（内部骨架重写版）
   - 复用 .hd / hero(.kpis) / .rc-tools / grid 明细表
   - 这里补：日期范围控件、分组行、每日明细行、账号行、提醒条、稳定主播 chips
   ============================================================ */
.an-dash .hero .kpis{grid-template-columns:repeat(8,1fr)}
.an-dash .hero{margin-bottom:12px}
.an-dash .hd{margin-bottom:14px;align-items:flex-start;justify-content:space-between;gap:12px}
.an-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.an-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.an-hd-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.an-file{display:inline-flex;align-items:center;gap:5px;max-width:260px;font-size:10px;color:var(--d-ink-3)}
.an-file-n{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.an-file button{width:16px;height:16px;padding:0;border:1px solid var(--d-line);border-radius:3px;
  background:transparent;color:var(--d-ink-3);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.an-file button:hover{color:var(--d-danger);border-color:rgba(255,122,110,.45)}
.an-ro{font-size:10px;color:var(--d-ink-3);max-width:280px;line-height:1.5;text-align:right}

/* ---------- 工具行 ---------- */
.an-dash .rc-tools{margin-bottom:10px}
.an-lb,.an-sep{font-family:var(--d-mono);font-size:9px;letter-spacing:.04em;color:var(--d-ink-3);white-space:nowrap}
.an-hint{display:inline-flex;align-items:center;gap:5px;font-size:9.5px;color:var(--d-ink-3);white-space:nowrap}
.an-hint svg{opacity:.65}
html[data-skin] .an-dash .an-date,
.an-dash .an-date{width:116px !important;height:26px !important;padding:0 6px !important;
  border:1px solid var(--d-line) !important;border-radius:4px !important;background:transparent !important;
  box-shadow:none !important;font-family:var(--d-mono) !important;font-size:10px !important;
  color:var(--d-ink-2) !important}
.an-dash .an-date:focus{border-color:var(--d-accent-line) !important}
.an-dash .an-date::-webkit-calendar-picker-indicator{margin:0;padding:0;opacity:.5}
html[data-skin] .an-dash .an-sel,
.an-dash .an-sel{height:26px !important;width:132px !important;padding:0 7px !important;
  border:1px solid var(--d-line) !important;border-radius:4px !important;background:transparent !important;
  box-shadow:none !important;color:var(--d-ink-2) !important;font-size:10px !important}
.an-dash .an-sort{width:150px !important}
.an-dash .an-sel option{background:var(--d-panel);color:var(--d-ink)}
.an-dash .rc-btn i{font-style:normal;margin-left:4px;padding:0 4px;border-radius:3px;
  background:var(--d-accent-dim);border:1px solid var(--d-accent-line);
  font-family:var(--d-mono);font-size:8px;color:var(--d-accent)}
.an-dash .rc-btn i:empty{display:none}

/* ---------- 提醒条 ---------- */
.an-dash [data-pending-bar]{display:flex;flex-direction:column;gap:8px}
.an-dash [data-pending-bar]:not(:empty){margin-bottom:10px}
.an-alert{display:flex;align-items:center;gap:8px;padding:9px 13px;border-radius:6px;
  font-size:11.5px;line-height:1.5;border:1px solid var(--d-line);color:var(--d-ink-2);background:var(--d-panel)}
.an-alert b{color:var(--d-ink);font-family:var(--d-mono)}
.an-alert.ok{border-color:rgba(72,199,142,.34);background:rgba(72,199,142,.08)}
.an-alert.ok svg{color:var(--d-ok)}
.an-alert.bad{border-color:rgba(255,122,110,.36);background:rgba(255,122,110,.08)}
.an-alert.bad svg{color:var(--d-danger)}
.an-alert.warn{border-color:rgba(224,150,60,.34);background:rgba(224,150,60,.08)}
.an-alert.warn svg{color:var(--d-warn)}
.an-alert-btn{margin-left:auto;height:24px;padding:0 9px;border-radius:4px;cursor:pointer;
  border:1px solid currentColor;background:transparent;font-family:var(--d-sans);font-size:10px;color:inherit}
.an-alert .an-alert-btn:hover{background:rgba(255,255,255,.06)}

/* ---------- 稳定主播 + 分运营统计（合并面板） ---------- */
.an-pan{border:1px solid var(--d-line);background:var(--d-panel);border-radius:6px;
  padding:10px 14px;margin-bottom:10px}
.an-pan[hidden]{display:none}
.an-pan summary{display:flex;align-items:center;gap:7px;cursor:pointer;list-style:none;
  font-size:11.5px;font-weight:600;color:var(--d-ink-2)}
.an-pan summary::-webkit-details-marker{display:none}
.an-pan summary svg{color:var(--d-ok)}
.an-pan summary .an-mut{margin-left:6px;font-weight:400;font-size:9.5px}
.an-pan-body{display:flex;flex-direction:column;gap:12px;margin-top:11px}
.an-pan-sec:empty{display:none}
.an-pan-sec + .an-pan-sec{border-top:1px dashed var(--d-line);padding-top:12px}
.an-pan.no-stable .an-pan-sec + .an-pan-sec{border-top:0;padding-top:0}
.an-pan-t{font-family:var(--d-mono);font-size:9.5px;letter-spacing:.04em;color:var(--d-ink-3);
  margin-bottom:8px}
.an-pan-t b{color:var(--d-ink-2);font-weight:600}
.an-st-body{display:flex;gap:10px;flex-wrap:wrap}
.an-st-op{flex:1;min-width:210px;padding:9px 11px;border-radius:5px;
  border:1px solid var(--d-line);background:rgba(255,255,255,.025)}
.an-st-t{font-family:var(--d-mono);font-size:9.5px;color:var(--d-accent);margin-bottom:6px}
.an-st-chips{display:flex;flex-wrap:wrap;gap:5px}
.an-chip{padding:2px 8px;border-radius:3px;font-size:10px;border:1px solid var(--d-line);color:var(--d-ink-2)}
.an-chip.is-ok{border-color:rgba(72,199,142,.32);background:rgba(72,199,142,.08);color:var(--d-ok)}
.an-chip.is-warn{border-color:rgba(224,150,60,.32);background:rgba(224,150,60,.08);color:var(--d-warn)}
.an-chip.is-risk{border-color:rgba(255,122,110,.34);background:rgba(255,122,110,.08);color:var(--d-danger)}

/* ---------- 明细表 ---------- */
.an-dash .rc-list{height:auto}
.an-dash .rc-scroll{max-height:66vh}
.an-grid{min-width:1382px}
.an-g{grid-column:1/-1;display:grid;grid-template-columns:var(--rc-cols);align-items:center;
  border-top:1px solid var(--d-line);border-bottom:1px solid var(--d-line);cursor:default}
.an-g.is-ok{background:rgba(72,199,142,.045)}
.an-g.is-stop{background:linear-gradient(90deg,rgba(224,150,60,.16),rgba(224,150,60,.04) 60%,transparent)}
.an-g.is-risk{background:linear-gradient(90deg,rgba(255,122,110,.18),rgba(255,122,110,.05) 60%,transparent)}
.an-g.rc-gr:hover{background-color:transparent}
.an-g.is-ok:hover{background:rgba(72,199,142,.09)}
.an-g.is-stop:hover{background:linear-gradient(90deg,rgba(224,150,60,.22),rgba(224,150,60,.07) 60%,transparent)}
.an-g.is-risk:hover{background:linear-gradient(90deg,rgba(255,122,110,.24),rgba(255,122,110,.08) 60%,transparent)}
.an-gc{min-width:0;padding:9px 7px;font-size:11.5px;color:var(--d-ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.an-gname{display:flex;align-items:center;gap:5px;min-width:0}
.an-gname b{font-size:12px;font-weight:600;color:var(--d-ink);overflow:hidden;text-overflow:ellipsis}
.an-tg{flex:0 0 auto;width:16px;height:16px;padding:0;border:0;border-radius:3px;background:transparent;
  color:var(--d-ink-3);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--d-mono);font-size:9px;line-height:1}
.an-tg:hover{color:var(--d-accent);background:var(--d-accent-dim)}
.an-tg.open{color:var(--d-accent)}
.an-num{text-align:right;font-family:var(--d-mono);font-size:10.5px;color:var(--d-ink)}
.an-mut{color:var(--d-ink-3)}
.an-report{height:22px !important;font-size:9.5px !important;padding:0 8px !important}

.an-badge{display:inline-flex;align-items:center;height:16px;padding:0 5px;border-radius:3px;
  font-size:8.5px;font-weight:600;white-space:nowrap;border:1px solid var(--d-line);color:var(--d-ink-3)}
.an-badge.is-risk{color:var(--d-danger);border-color:rgba(255,122,110,.36);background:rgba(255,122,110,.10)}
.an-badge.is-stop{color:var(--d-warn);border-color:rgba(224,150,60,.36);background:rgba(224,150,60,.10)}
.an-badge.is-warn{color:var(--d-warn);border-color:rgba(224,150,60,.28);background:transparent}
/* 徽章跟在「共 N 个账号」后面，不再挤占姓名列（否则停播主播的名字会被挤没） */
.an-gc .an-badge{margin-left:6px}

.an-d{grid-column:1/-1;display:grid;grid-template-columns:var(--rc-cols);align-items:center;
  background:rgba(255,255,255,.018);border-bottom:1px solid var(--d-line)}
.an-dc{min-width:0;padding:5px 7px;font-family:var(--d-mono);font-size:9.5px;color:var(--d-ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.an-empty-day{font-style:normal;margin-left:6px;color:var(--d-danger);font-size:9px}
.an-a{grid-column:1/-1;display:grid;grid-template-columns:var(--rc-cols);align-items:center;
  border-bottom:1px solid var(--d-line);background:transparent}
.an-a:hover{background:var(--d-panel-hover)}
.an-ac{min-width:0;padding:6px 7px;font-size:10.5px;color:var(--d-ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.an-ac .an-num{font-size:10.5px}

@media (max-width:1700px){
  .an-dash .hero .kpis{grid-template-columns:repeat(4,1fr)}
  .an-dash .hero .kpi:nth-child(5){border-left:0}
  .an-dash .hero .kpi:nth-child(n+5){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .an-hint{display:none}
  .an-dash .an-date{width:108px !important}
}
@media (max-width:980px){
  .an-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .an-dash .hero .kpi:nth-child(1),.an-dash .hero .kpi:nth-child(3),
  .an-dash .hero .kpi:nth-child(5),.an-dash .hero .kpi:nth-child(7){border-left:0}
  .an-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
  .an-hd-act{width:100%;justify-content:flex-start}
}

/* 分运营统计（主播数据页，仅超管）
   原先是「表头一个 grid + 每行各自一个 grid」，两套独立列宽，内容长度不同就会错位；
   改成真表格 + table-layout:fixed，表头和数据行共用同一套列宽。 */
.an-bu-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.an-bu-tbl{width:100%;min-width:840px;border-collapse:collapse;table-layout:fixed}
.an-bu-tbl th{padding:0 8px 6px;border-bottom:1px solid var(--d-line);text-align:left;white-space:nowrap;
  font-family:var(--d-mono);font-size:8.5px;font-weight:400;letter-spacing:.06em;color:var(--d-ink-3)}
.an-bu-tbl td{padding:6px 8px;border-bottom:1px solid var(--d-line);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;font-size:10.5px;color:var(--d-ink-2)}
.an-bu-tbl tbody tr:last-child td{border-bottom:0}
.an-bu-tbl th:first-child,.an-bu-tbl td:first-child{padding-left:0}
.an-bu-tbl th:last-child,.an-bu-tbl td:last-child{padding-right:0}
.an-bu-tbl th.an-bu-n{text-align:right}
.an-bu-n{text-align:right;font-family:var(--d-mono);font-variant-numeric:tabular-nums;color:var(--d-ink)}
.an-bu-name{color:var(--d-ink);font-weight:600}
.an-bu-date{color:var(--d-ink-3)}
.an-bu-n.is-zero{color:var(--d-ink-3);font-weight:400}
.an-bu-n.is-danger{color:var(--d-danger);font-weight:600}
.an-bu-n.is-warn{color:var(--d-warn);font-weight:600}

/* 主播数据：搜索框与工具行同高（皮肤用 !important，这里逐条压回） */
html[data-skin] .an-dash .search-box,
.an-dash .search-box{flex:0 0 236px;height:26px;padding:0 9px;border-radius:6px;
  border:1px solid var(--d-line) !important;background:transparent !important;box-shadow:none !important}
.an-dash .search-box:focus-within{border-color:var(--d-accent-line) !important}
.an-dash .search-box > svg{width:12px;height:12px;opacity:.7}
html[data-skin] .an-dash .search-box .input,
.an-dash .search-box .input{height:100% !important;padding:0 !important;border:0 !important;
  border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-size:11px !important;color:var(--d-ink) !important}
.an-dash .search-box .input::placeholder{color:var(--d-ink-3)}
.an-dash .an-kpi-date{letter-spacing:-.02em}
.an-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.an-dash .kpi.is-danger .kpi-v{color:var(--d-danger)}
.an-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.85}
.an-dash .kpi.is-danger .kpi-s{color:var(--d-danger);opacity:.85}
.an-dash .kpi.is-ok .kpi-v{color:var(--d-ok)}
.an-dash .kpi.is-ok .kpi-s{color:var(--d-ok);opacity:.8}

/* ============================================================
   45. 主播复盘（dash 骨架版）
   - 页头三个上传动作 + 6 KPI + 有效天汇总 + 8 列明细
   ============================================================ */
.rv-dash .hd{margin-bottom:14px;align-items:flex-start;justify-content:space-between;gap:12px}
.rv-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.rv-dash .hero{margin-bottom:12px}
.rv-dash .hero .kpis{grid-template-columns:repeat(5,1fr)}
.rv-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.rv-hd-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.rv-file{display:inline-flex;align-items:center;gap:5px;max-width:240px;font-size:10px;color:var(--d-ink-3)}
.rv-file-n{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- 有效天汇总 ---------- */
.rv-sum-card{margin-bottom:10px}
.rv-sum{border:1px solid var(--d-line);background:var(--d-panel);border-radius:6px;padding:10px 14px}
.rv-sum summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;
  font-size:11.5px;font-weight:600;color:var(--d-ink-2)}
.rv-sum summary::-webkit-details-marker{display:none}
.rv-sum summary > svg{color:var(--d-accent)}
.rv-sum-state{font-family:var(--d-mono);font-size:9px;padding:1px 6px;border-radius:3px;
  border:1px solid var(--d-line);color:var(--d-ink-3);font-weight:500}
.rv-sum-state.is-ok{color:var(--d-ok);border-color:rgba(72,199,142,.34);background:rgba(72,199,142,.08)}
.rv-sum-state.is-warn{color:var(--d-warn);border-color:rgba(224,150,60,.34);background:rgba(224,150,60,.08)}
.rv-sum-state.is-danger{color:var(--d-danger);border-color:rgba(255,122,110,.36);background:rgba(255,122,110,.08)}
.rv-sum-hint{margin-left:auto;font-size:9.5px;color:var(--d-ink-3);font-weight:400}
.rv-sum-body{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}
.rv-sum-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 11px;border-radius:5px;cursor:pointer;
  border:1px solid rgba(255,122,110,.30);background:rgba(255,122,110,.07);color:var(--d-ink-2);
  font-family:var(--d-sans);font-size:11px;transition:background .16s var(--d-ease)}
.rv-sum-chip:hover{background:rgba(255,122,110,.12)}
.rv-sum-chip b{color:var(--d-ink);font-weight:600}
.rv-sum-n{font-family:var(--d-mono);color:var(--d-danger)}
.rv-sum-gap{font-size:9.5px;color:var(--d-ink-3)}
.rv-none{font-size:10px;color:var(--d-ink-3)}

/* ---------- 工具行 ---------- */
.rv-tools{margin-bottom:10px}
.rv-lb,.rv-sep{font-family:var(--d-mono);font-size:9px;letter-spacing:.04em;color:var(--d-ink-3);white-space:nowrap}
html[data-skin] .rv-dash .rv-date,
.rv-dash .rv-date{width:118px !important;height:26px !important;padding:0 6px !important;
  border:1px solid var(--d-line) !important;border-radius:4px !important;background:transparent !important;
  box-shadow:none !important;font-family:var(--d-mono) !important;font-size:10px !important;color:var(--d-ink-2) !important}
.rv-dash .rv-date:focus{border-color:var(--d-accent-line) !important}
.rv-dash .rv-date::-webkit-calendar-picker-indicator{margin:0;padding:0;opacity:.5}
html[data-skin] .rv-dash .search-box,
.rv-dash .search-box{flex:0 0 218px;height:26px;padding:0 9px;border-radius:6px;
  border:1px solid var(--d-line) !important;background:transparent !important;box-shadow:none !important}
.rv-dash .search-box:focus-within{border-color:var(--d-accent-line) !important}
.rv-dash .search-box > svg{width:12px;height:12px;opacity:.7}
html[data-skin] .rv-dash .search-box .input,
.rv-dash .search-box .input{height:100% !important;padding:0 !important;border:0 !important;
  border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-size:11px !important;color:var(--d-ink) !important}
.rv-dash .search-box .input::placeholder{color:var(--d-ink-3)}

/* ---------- 明细表 ---------- */
.rv-dash .rc-list{height:auto}
.rv-dash .rc-scroll{max-height:none}
.rv-grid{min-width:1092px}
.rv-dash .rc-c{font-size:11px;padding:7px 8px;min-width:0}
.rv-dash .rc-gh .rc-c{padding:9px 8px}
.rv-c{text-align:center}
.rv-r{text-align:right;font-family:var(--d-mono);font-size:10.5px}
.rv-dim{color:var(--d-ink-3)}
.rv-name{display:flex;align-items:center;gap:5px;min-width:0}
.rv-name b{font-size:12px;font-weight:600;color:var(--d-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rv-nick{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--d-ink-2)}
.rv-multi{font-style:normal;font-size:8px;padding:0 4px;border-radius:3px;border:1px solid var(--d-line);
  color:var(--d-ink-3);white-space:nowrap;flex:0 0 auto}
.rv-risk{font-style:normal;font-size:8px;padding:0 4px;border-radius:3px;white-space:nowrap;flex:0 0 auto;
  color:var(--d-danger);border:1px solid rgba(255,122,110,.36);background:rgba(255,122,110,.08)}
.rv-need{display:block;font-style:normal;font-size:8.5px;color:var(--d-ink-3);margin-top:2px}
.rv-badge{display:inline-flex;align-items:center;height:17px;padding:0 6px;border-radius:3px;
  font-size:9px;font-weight:600;white-space:nowrap;border:1px solid var(--d-line);color:var(--d-ink-3)}
.rv-badge.is-ok{color:var(--d-ok);border-color:rgba(72,199,142,.34);background:rgba(72,199,142,.08)}
.rv-badge.is-bad{color:var(--d-ink-3);opacity:.85}

/* 复盘表附件 */
.rv-files{display:flex;align-items:center;gap:5px;min-width:0;flex-wrap:wrap}
.rv-miss{font-size:9.5px;color:var(--d-danger);opacity:.9}
.rv-th{position:relative;width:26px;height:26px;flex:0 0 auto}
.rv-th img{width:26px;height:26px;object-fit:cover;border-radius:4px;border:1px solid var(--d-line);
  cursor:zoom-in;display:block}
.rv-th i{position:absolute;top:-6px;right:-6px;width:14px;height:14px;line-height:12px;text-align:center;
  border-radius:50%;background:rgba(255,122,110,.92);color:#fff;font-size:10px;font-style:normal;
  cursor:pointer;opacity:0;transition:opacity .15s var(--d-ease)}
.rv-th:hover i{opacity:1}
.rv-th-more{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.rv-doc{display:inline-flex;align-items:center;gap:2px;font-family:var(--d-mono);font-size:9px;
  color:var(--d-ink-3);border:1px solid var(--d-line);border-radius:3px;padding:1px 4px}
.rv-up{display:inline-flex;align-items:center;gap:3px;height:20px;padding:0 6px;border-radius:3px;
  cursor:pointer;border:1px solid var(--d-line);background:transparent;color:var(--d-ink-3);
  font-size:9px;font-family:var(--d-sans)}
.rv-up:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}

/* 日期分隔 */
.rv-sep{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:5px 8px;font-family:var(--d-mono);font-size:9.5px;color:var(--d-ink-3);
  background:rgba(255,255,255,.02);border-top:1px solid var(--d-line);border-bottom:1px solid var(--d-line)}
.rv-sep > span{display:inline-flex;align-items:center;gap:5px}
.rv-sep svg{opacity:.7}
.rv-today{font-style:normal;font-size:8.5px;padding:0 4px;border-radius:3px;color:var(--d-ok);
  border:1px solid rgba(72,199,142,.35);background:rgba(72,199,142,.08)}
.rv-sep-n{opacity:.8}

/* 多账号子行 */
.rv-acc{grid-column:1/-1;display:grid;grid-template-columns:var(--rc-cols);align-items:center;
  background:rgba(255,255,255,.014);border-bottom:1px solid var(--d-line)}
.rv-acc-c{min-width:0;padding:5px 8px;font-size:10.5px;color:var(--d-ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-acc-c.rv-r{font-size:10px}
.rv-acc-lead{padding-left:18px}
.rv-acc-c em{font-style:normal;font-size:9px;margin-left:4px;opacity:.75}
.rv-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.rv-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.85}

@media (max-width:1560px){
  .rv-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .rv-dash .hero .kpi:nth-child(4){border-left:0}
  .rv-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .rv-hd-act{width:100%;justify-content:flex-start}
  .rv-dash .search-box{flex:1 1 100%}
}
@media (max-width:980px){
  .rv-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .rv-dash .hero .kpi:nth-child(3),.rv-dash .hero .kpi:nth-child(5){border-left:0}
  .rv-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
}
.rv-gr{cursor:default}

/* 主播数据：8 格 KPI 的字号收紧，让数字 / 单位 / 说明三层的节奏一致 */
.an-dash .hero .kpi{padding:15px 17px 14px}
.an-dash .kpi-l{font-size:10.5px;letter-spacing:.02em;gap:5px;margin-bottom:10px}
.an-dash .kpi-v{font-size:32px;letter-spacing:-.03em;gap:3px}
.an-dash .kpi-v small{font-size:9.5px;letter-spacing:.02em;color:var(--d-ink-3);margin-left:1px;white-space:nowrap}
.an-dash .kpi-s{font-size:9.5px;line-height:1.45;margin-top:8px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.an-dash .kpi-v [title]{border-bottom:0 !important}
.an-na{color:var(--d-ink-3);opacity:.55}
.an-dash .kpi-v{font-variant-numeric:tabular-nums}

/* ============================================================
   46. 断播主播管理（dash 骨架版）
   - 页头 + 6 KPI + 两个页签 + 8 列明细（当前 / 历史两套列）
   ============================================================ */
.sp-dash .hd{margin-bottom:14px;align-items:flex-start;justify-content:space-between;gap:12px}
.sp-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.sp-dash .hero{margin-bottom:12px}
.sp-dash .hero .kpis{grid-template-columns:repeat(6,1fr)}
.sp-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.sp-hd-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.sp-note{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--d-ink-3);white-space:nowrap}
.sp-note svg{opacity:.6}

/* 页签 */
.sp-tabs{display:flex;gap:2px;overflow-x:auto;padding:0 2px;margin:0 0 12px;
  border-bottom:1px solid var(--d-line);scrollbar-width:none}
.sp-tabs::-webkit-scrollbar{display:none}
.sp-tab{position:relative;flex:0 0 auto;height:34px;padding:0 12px;border:0;background:transparent;
  color:var(--d-ink-3);font-family:var(--d-sans);font-size:12px;cursor:pointer;white-space:nowrap;
  transition:color .16s var(--d-ease)}
.sp-tab:hover{color:var(--d-ink-2)}
.sp-tab.on{color:var(--d-ink);font-weight:600}
.sp-tab.on::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;
  border-radius:2px;background:var(--d-accent);box-shadow:var(--d-glow)}
.sp-tab i{font-style:normal;font-family:var(--d-mono);font-size:8.5px;margin-left:5px;padding:0 4px;
  border:1px solid var(--d-line);border-radius:3px;color:var(--d-ink-3);vertical-align:1px}
.sp-tab.on i{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}

/* 工具行 */
.sp-tools{margin-bottom:10px}
.sp-lb,.sp-sep{font-family:var(--d-mono);font-size:9px;letter-spacing:.04em;color:var(--d-ink-3);white-space:nowrap}
html[data-skin] .sp-dash .sp-date,
.sp-dash .sp-date{width:118px !important;height:26px !important;padding:0 6px !important;
  border:1px solid var(--d-line) !important;border-radius:4px !important;background:transparent !important;
  box-shadow:none !important;font-family:var(--d-mono) !important;font-size:10px !important;color:var(--d-ink-2) !important}
.sp-dash .sp-date:focus{border-color:var(--d-accent-line) !important}
.sp-dash .sp-date::-webkit-calendar-picker-indicator{margin:0;padding:0;opacity:.5}
html[data-skin] .sp-dash .sp-sel,
.sp-dash .sp-sel{height:26px !important;width:118px !important;padding:0 7px !important;
  border:1px solid var(--d-line) !important;border-radius:4px !important;background:transparent !important;
  box-shadow:none !important;color:var(--d-ink-2) !important;font-size:10px !important}
.sp-dash .sp-sel option{background:var(--d-panel);color:var(--d-ink)}
html[data-skin] .sp-dash .sp-search,
.sp-dash .sp-search{flex:0 0 214px;height:26px;padding:0 9px;border-radius:6px;
  border:1px solid var(--d-line) !important;background:transparent !important;box-shadow:none !important}
.sp-dash .sp-search:focus-within{border-color:var(--d-accent-line) !important}
.sp-dash .sp-search > svg{width:12px;height:12px;opacity:.7}
html[data-skin] .sp-dash .sp-search .input,
.sp-dash .sp-search .input{height:100% !important;padding:0 !important;border:0 !important;
  border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-size:11px !important;color:var(--d-ink) !important}
.sp-dash .sp-search .input::placeholder{color:var(--d-ink-3)}

/* 明细表 */
.sp-dash .rc-list{height:auto}
.sp-dash .rc-scroll{max-height:none}
.sp-grid{min-width:1100px}
.sp-dash .rc-c{font-size:11px;padding:7px 9px;min-width:0}
.sp-dash .rc-gh .rc-c{padding:9px 9px}
.sp-c{text-align:center}
.sp-dim{color:var(--d-ink-3)}
.sp-mono{font-family:var(--d-mono);font-size:10.5px}
.sp-gr{cursor:default}
.sp-name{display:flex;align-items:center;gap:6px;min-width:0}
.sp-name b{font-size:12px;font-weight:600;color:var(--d-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sp-key{font-style:normal;font-family:var(--d-mono);font-size:8.5px;padding:0 4px;border-radius:3px;
  border:1px solid var(--d-line);color:var(--d-ink-3);white-space:nowrap}
.sp-detail{color:var(--d-ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sp-days{font-family:var(--d-mono);font-size:12px;font-weight:600;color:var(--d-ink)}
.sp-days.is-late{color:var(--d-danger)}
.sp-mono em,.sp-c em{font-style:normal;font-size:9px;color:var(--d-ink-3);margin-left:2px}
.sp-late{font-style:normal;font-size:8px;margin-left:4px;padding:0 4px;border-radius:3px;
  color:var(--d-danger);border:1px solid rgba(255,122,110,.36);background:rgba(255,122,110,.08)}

.sp-badge{display:inline-flex;align-items:center;height:17px;padding:0 6px;border-radius:3px;
  font-size:9px;font-weight:600;white-space:nowrap;border:1px solid var(--d-line);color:var(--d-ink-3)}
.sp-badge.is-danger{color:var(--d-danger);border-color:rgba(255,122,110,.35);background:rgba(255,122,110,.08)}
.sp-badge.is-warn{color:var(--d-warn);border-color:rgba(224,150,60,.35);background:rgba(224,150,60,.08)}
.sp-badge.is-info{color:var(--d-ink-2);border-color:var(--d-line)}
.sp-badge.is-ok{color:var(--d-ok);border-color:rgba(72,199,142,.34);background:rgba(72,199,142,.08)}

.sp-act{display:inline-flex;gap:4px;justify-content:center}
.sp-act button{width:24px;height:22px;padding:0;border:1px solid var(--d-line);border-radius:4px;
  background:transparent;color:var(--d-ink-3);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  transition:color .14s var(--d-ease),border-color .14s var(--d-ease),background .14s var(--d-ease)}
.sp-act button:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.sp-act button.ok:hover{color:var(--d-ok);border-color:rgba(72,199,142,.4);background:rgba(72,199,142,.1)}
.sp-act button.danger:hover{color:var(--d-danger);border-color:rgba(255,122,110,.45);background:rgba(255,122,110,.1)}

.sp-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.sp-dash .kpi.is-danger .kpi-v{color:var(--d-danger)}
.sp-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.85}
.sp-dash .kpi.is-danger .kpi-s{color:var(--d-danger);opacity:.85}

@media (max-width:1560px){
  .sp-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .sp-dash .hero .kpi:nth-child(4){border-left:0}
  .sp-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .sp-note{display:none}
  .sp-dash .sp-search{flex:1 1 100%}
}
@media (max-width:980px){
  .sp-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .sp-dash .hero .kpi:nth-child(3),.sp-dash .hero .kpi:nth-child(5){border-left:0}
  .sp-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
}

/* ============================================================
   47. 部门人效（dash 骨架版）
   - 页头 + 6/7 KPI + 部门卡片页签 + 周期切换 + 排名 + 明细表
   ============================================================ */
.ef-dash .hd{margin-bottom:14px;align-items:flex-start;justify-content:space-between;gap:12px}
.ef-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.ef-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.ef-hd-act{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.ef-note{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--d-ink-3);white-space:nowrap}
.ef-note svg{opacity:.6}
html[data-skin] .ef-dash .ef-analyze,
.ef-dash .ef-analyze{display:inline-flex;align-items:center;gap:6px;height:28px !important;min-height:0 !important;
  padding:0 11px !important;border:1px solid var(--d-accent-line) !important;border-radius:4px !important;
  background:var(--d-accent-dim) !important;color:var(--d-accent) !important;box-shadow:none !important;
  font-size:11px !important;font-weight:500 !important;
  transition:background .16s var(--d-ease),color .16s var(--d-ease),border-color .16s var(--d-ease)}
.ef-dash .ef-analyze:hover{background:var(--d-accent) !important;color:var(--d-bg) !important;border-color:var(--d-accent) !important}
.ef-dash .ef-analyze.is-busy{opacity:.55;cursor:default}

/* KPI */
.ef-dash .hero{margin-bottom:12px}
.ef-dash .hero .kpis{grid-template-columns:repeat(var(--ef-k,6),1fr)}
.ef-dash .hero .kpi{padding:15px 16px 14px}
.ef-dash .kpi-l{font-size:10.5px;letter-spacing:.02em;gap:5px;margin-bottom:9px}
.ef-dash .kpi-v{font-size:30px;letter-spacing:-.03em;gap:3px;font-variant-numeric:tabular-nums}
.ef-dash .kpi-v small{font-size:9.5px;letter-spacing:.02em;color:var(--d-ink-3);margin-left:1px;white-space:nowrap}
.ef-dash .kpi-s{font-size:9.5px;line-height:1.45;margin-top:7px;color:var(--d-ink-3)}
.ef-dash .kpi.is-ok .kpi-v{color:var(--d-ok)}
.ef-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.ef-dash .kpi.is-danger .kpi-v{color:var(--d-danger)}
.ef-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.85}
.ef-dash .kpi.is-danger .kpi-s{color:var(--d-danger);opacity:.85}

/* 部门页签（卡片式） */
.ef-tabs{display:flex;gap:7px;margin:0 0 12px;flex-wrap:wrap}
.ef-tab{display:flex;flex-direction:column;align-items:flex-start;gap:2px;
  padding:7px 15px 8px;border:1px solid var(--d-line);border-radius:5px;background:transparent;
  cursor:pointer;font-family:var(--d-sans);text-align:left;
  transition:border-color .16s var(--d-ease),background .16s var(--d-ease)}
.ef-tab b{font-size:12.5px;font-weight:600;color:var(--d-ink-2);transition:color .16s var(--d-ease)}
.ef-tab span{font-family:var(--d-mono);font-size:8.5px;letter-spacing:.06em;color:var(--d-ink-3)}
.ef-tab:hover{border-color:var(--d-line-2)}
.ef-tab.on{background:var(--d-accent-dim);border-color:var(--d-accent-line)}
.ef-tab.on b{color:var(--d-accent)}
.ef-tab.on span{color:var(--d-accent);opacity:.7}

/* 工具行 */
.ef-toolbar{display:flex;align-items:center;gap:8px;margin:0 0 12px;flex-wrap:wrap}
.ef-seg{display:flex;padding:2px;border:1px solid var(--d-line);border-radius:5px}
.ef-seg button{height:23px;padding:0 11px;border:0;border-radius:3px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:11px;color:var(--d-ink-3);
  transition:color .14s var(--d-ease),background .14s var(--d-ease)}
.ef-seg button:hover{color:var(--d-ink-2)}
.ef-seg button.on{color:var(--d-accent);font-weight:600;background:var(--d-accent-dim);
  box-shadow:inset 0 0 0 1px var(--d-accent-line)}
.ef-sp{flex:1 1 auto}
.ef-tip{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3);letter-spacing:.03em}
.ef-dash .ef-card,.ef-dash .ef-list{margin-bottom:12px}
.ef-dash .ef-body > *:last-child{margin-bottom:0}

/* 排名 */
.ef-rank{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:9px;padding:12px 14px}
.ef-rk{display:flex;flex-direction:column;gap:6px;min-width:0;
  padding:10px 11px 11px;border:1px solid var(--d-line);border-radius:5px;
  transition:border-color .16s var(--d-ease),background .16s var(--d-ease)}
.ef-rk:hover{border-color:var(--d-line-2)}
.ef-rk.is-first{border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.ef-rk-h{display:flex;align-items:center;gap:8px;min-width:0}
.ef-rk-r{width:18px;height:18px;flex-shrink:0;display:grid;place-items:center;border-radius:3px;
  border:1px solid var(--d-line);font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.ef-rk-r.is-top{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.ef-rk-h b{flex:1 1 auto;min-width:0;font-size:12px;font-weight:600;color:var(--d-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ef-rk-s{font-family:var(--d-mono);font-size:13px;font-weight:600;color:var(--d-ink);font-variant-numeric:tabular-nums}
.ef-rk-bar{height:2px;border-radius:2px;background:var(--d-line);overflow:hidden}
.ef-rk-bar i{display:block;height:100%;border-radius:2px;background:var(--d-accent);box-shadow:var(--d-glow)}
.ef-rk-l{display:flex;gap:5px;min-width:0;font-size:10px;line-height:1.5;color:var(--d-ink-3)}
.ef-rk-l span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ef-rk-l em{flex-shrink:0;font-style:normal;font-size:8px;padding-top:1px}
.ef-rk-l em.up{color:var(--d-ok)}
.ef-rk-l em.dn{color:var(--d-warn)}

/* 明细表 */
.ef-dash .rc-list{height:auto}
.ef-dash .rc-scroll{max-height:none}
.ef-grid{min-width:var(--ef-min,860px)}
.ef-dash .rc-c{font-size:11px;padding:7px 9px}
.ef-dash .rc-gh .rc-c{padding:9px 9px}
.ef-c{text-align:center}
.ef-gr{cursor:default}
.ef-who{display:flex;align-items:center;gap:7px;min-width:0}
.ef-who b{font-size:11.5px;font-weight:600;color:var(--d-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ef-av{width:20px;height:20px;flex-shrink:0;display:grid;place-items:center;border-radius:3px;
  font-size:10px;font-weight:600;color:#fff}
.ef-pos{flex-shrink:0;font-family:var(--d-mono);font-size:8px;color:var(--d-ink-3);
  padding:1px 4px;border:1px solid var(--d-line);border-radius:2px}
.ef-num{font-family:var(--d-mono);font-size:11.5px;color:var(--d-ink);font-variant-numeric:tabular-nums}
.ef-num.is-zero{color:var(--d-ink-3);opacity:.45}
.ef-rate{font-family:var(--d-mono);font-size:11px;color:var(--d-ink-2)}
.ef-rate.is-zero{color:var(--d-ink-3);opacity:.45}
.ef-rate.is-ok{color:var(--d-ok)}
.ef-rate.is-warn{color:var(--d-warn)}
.ef-rate.is-danger{color:var(--d-danger)}
.ef-dim{color:var(--d-ink-3)}
.ef-score{position:relative;height:16px;display:flex;align-items:center;justify-content:center;
  border-radius:2px;overflow:hidden}
.ef-score i{position:absolute;left:0;top:0;bottom:0;background:var(--d-accent-dim);
  border-right:1px solid var(--d-accent-line)}
.ef-score b{position:relative;font-family:var(--d-mono);font-size:10.5px;font-weight:600;color:var(--d-ink)}
.ef-link{color:var(--d-accent);text-decoration:none;border-bottom:1px dashed var(--d-accent-line)}
.ef-link:hover{color:var(--d-accent-bright)}
.ef-ghead{grid-column:1/-1;display:flex;align-items:center;gap:6px;padding:7px 9px;
  background:var(--d-accent-dim);border-bottom:1px solid var(--d-line);
  font-family:var(--d-mono);font-size:9px;letter-spacing:.03em;color:var(--d-ink-3)}
.ef-ghead b{color:var(--d-ink-2);font-weight:600}
.ef-ghead svg{opacity:.6}
.ef-none{padding:28px 16px;text-align:center;font-size:11px;color:var(--d-ink-3)}

/* 运营部：整体指标 */
.ef-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:8px;padding:12px 14px}
.ef-mt{padding:9px 11px;border:1px solid var(--d-line);border-radius:4px;min-width:0}
.ef-mt-l{font-size:9.5px;color:var(--d-ink-3);margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ef-mt-v{font-family:var(--d-mono);font-size:20px;font-weight:600;line-height:1;letter-spacing:-.02em;
  color:var(--d-ink);font-variant-numeric:tabular-nums}
.ef-mt-s{font-family:var(--d-mono);font-size:8.5px;color:var(--d-ink-3);margin-top:5px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ef-mt.is-ok .ef-mt-v{color:var(--d-ok)}
.ef-mt.is-warn .ef-mt-v{color:var(--d-warn)}
.ef-mt.is-danger .ef-mt-v{color:var(--d-danger)}

/* 运营部：指标排名 */
.ef-ork{display:grid;grid-template-columns:repeat(auto-fit,minmax(206px,1fr));gap:9px;padding:12px 14px}
.ef-ok{border:1px solid var(--d-line);border-radius:5px;overflow:hidden;min-width:0}
.ef-ok-h{display:flex;align-items:baseline;justify-content:space-between;gap:6px;
  padding:8px 10px;border-bottom:1px solid var(--d-line)}
.ef-ok-h b{font-size:11px;font-weight:600;color:var(--d-ink-2)}
.ef-ok-h span{flex-shrink:0;font-family:var(--d-mono);font-size:8px;color:var(--d-ink-3)}
.ef-ok-l{padding:4px 6px 6px}
.ef-ok-i{position:relative;display:flex;align-items:center;gap:7px;padding:5px;border-radius:3px;overflow:hidden}
.ef-ok-i + .ef-ok-i{margin-top:1px}
.ef-ok-fill{position:absolute;left:0;top:0;bottom:0;background:var(--d-accent-dim);
  border-right:1px solid var(--d-accent-line);pointer-events:none}
.ef-ok-r{position:relative;width:15px;flex-shrink:0;text-align:center;
  font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.ef-ok-r.is-top{color:var(--d-accent);font-weight:600}
.ef-ok-n{position:relative;flex:1 1 auto;min-width:0;font-size:10.5px;color:var(--d-ink-2);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ef-ok-v{position:relative;flex-shrink:0;font-family:var(--d-mono);font-size:10px;font-weight:600;
  color:var(--d-ink);font-variant-numeric:tabular-nums}

/* 历史人效工具条 */
.ef-hb{display:flex;align-items:center;gap:8px;padding:12px 14px;flex-wrap:wrap}
.ef-lb{font-family:var(--d-mono);font-size:9px;letter-spacing:.04em;color:var(--d-ink-3)}
html[data-skin] .ef-dash .ef-month,
.ef-dash .ef-month{height:26px !important;padding:0 8px !important;border:1px solid var(--d-line) !important;
  border-radius:4px !important;background:transparent !important;box-shadow:none !important;
  font-family:var(--d-mono) !important;font-size:10px !important;color:var(--d-ink-2) !important}
.ef-dash .ef-month::-webkit-calendar-picker-indicator{margin:0;padding:0;opacity:.5}

/* AI 报告 */
.ef-rp-h{cursor:pointer;user-select:none}
.ef-rp-h h2{display:flex;align-items:center;gap:6px}
.ef-rp-h h2 svg{color:var(--d-accent);opacity:.85}
.ef-rp{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:9px;padding:12px 14px}
.ef-rp[hidden]{display:none}
.ef-rp-b{min-width:0;padding:9px 11px;border:1px solid var(--d-line);border-radius:4px}
.ef-rp-b.is-wide{grid-column:1/-1}
.ef-rp-t{display:flex;align-items:center;gap:7px;margin-bottom:6px}
.ef-rp-t b{font-size:11.5px;font-weight:600;color:var(--d-ink)}
.ef-rp-g{font-family:var(--d-mono);font-size:8.5px;padding:1px 5px;border-radius:2px;
  border:1px solid var(--d-line);color:var(--d-ink-3);white-space:nowrap}
.ef-rp-g.is-ok{color:var(--d-ok);border-color:rgba(72,199,142,.34);background:rgba(72,199,142,.08)}
.ef-rp-g.is-warn{color:var(--d-warn);border-color:rgba(224,150,60,.34);background:rgba(224,150,60,.08)}
.ef-rp-g.is-danger{color:var(--d-danger);border-color:rgba(255,122,110,.34);background:rgba(255,122,110,.08)}
.ef-rp-b p{margin:0 0 4px;font-size:10.5px;line-height:1.68;color:var(--d-ink-2)}
.ef-rp-k{display:inline-block;margin-right:6px;padding:0 4px;border-radius:2px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;color:var(--d-accent)}
.ef-rp-p{margin:0;padding:12px 14px;font-size:11px;line-height:1.75;color:var(--d-ink-2);white-space:pre-wrap}
.ef-loading{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:13px 16px;
  font-size:11px;color:var(--d-ink-3)}
.ef-loading svg{color:var(--d-accent)}

@media (max-width:1560px){
  .ef-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .ef-dash .hero .kpi:nth-child(3n+1){border-left:0}
  .ef-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .ef-note{display:none}
  .ef-rank{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
}
@media (max-width:980px){
  .ef-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .ef-dash .hero .kpi:nth-child(2n+1){border-left:0}
  .ef-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
  .ef-hd-act{width:100%;justify-content:flex-start}
}

/* ============================================================
   48. 部门考核（dash 骨架版）
   - 页头（规则 / 指标调整 / 手动乐捐）+ 6 KPI + 部门页签
   - 考核明细 / 正在申诉 / 历史申诉 三视图
   - 考核总览（按人汇总）+ 明细矩阵（人 × 考核项）
   ============================================================ */
.as-dash .hd{margin-bottom:14px;align-items:flex-start;justify-content:space-between;gap:14px}
.as-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.as-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.as-hd-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.as-hd-act .rc-btn svg{opacity:.7}
.as-dash .hero{margin-bottom:12px}
.as-dash .hero .kpis{grid-template-columns:repeat(6,1fr)}
.as-dash .hero .kpi{padding:15px 17px 14px}
.as-dash .kpi-l{font-size:10.5px;letter-spacing:.02em;gap:5px;margin-bottom:10px}
.as-dash .kpi-v{font-size:31px;letter-spacing:-.03em;gap:3px;font-variant-numeric:tabular-nums}
.as-dash .kpi-s{font-size:9.5px;margin-top:8px;color:var(--d-ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.as-dash .kpi.is-ok .kpi-v{color:var(--d-ok)}
.as-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.as-dash .kpi.is-danger .kpi-v{color:var(--d-danger)}
.as-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.85}
.as-dash .kpi.is-danger .kpi-s{color:var(--d-danger);opacity:.85}

/* 部门页签 */
.as-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 10px}
.as-tab{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 13px;
  border:1px solid var(--d-line);border-radius:5px;background:transparent;
  font-family:var(--d-sans);font-size:12px;color:var(--d-ink-2);cursor:pointer;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.as-tab:hover{border-color:var(--d-line-2);color:var(--d-ink)}
.as-tab i{font-style:normal;font-family:var(--d-mono);font-size:8.5px;padding:0 4px;
  border:1px solid var(--d-line);border-radius:3px;color:var(--d-ink-3)}
.as-tab.on{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.as-tab.on i{color:var(--d-accent);border-color:var(--d-accent-line)}

/* 视图页签（下划线） */
.as-views{display:flex;align-items:center;gap:2px;margin:0 0 12px;
  border-bottom:1px solid var(--d-line);overflow-x:auto;scrollbar-width:none}
.as-views::-webkit-scrollbar{display:none}
.as-view{position:relative;flex:0 0 auto;height:32px;padding:0 12px;border:0;background:transparent;
  font-family:var(--d-sans);font-size:11.5px;color:var(--d-ink-3);cursor:pointer;white-space:nowrap;
  transition:color .16s var(--d-ease)}
.as-view:hover{color:var(--d-ink-2)}
.as-view.on{color:var(--d-ink);font-weight:600}
.as-view.on::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;
  border-radius:2px;background:var(--d-accent);box-shadow:var(--d-glow)}
.as-view i{font-style:normal;font-family:var(--d-mono);font-size:8.5px;margin-left:5px;padding:0 4px;
  border:1px solid var(--d-line);border-radius:3px;color:var(--d-ink-3);vertical-align:1px}
.as-view.on i{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.as-batch{margin-left:auto;margin-bottom:6px}

/* 工具行 */
.as-tools{margin-bottom:10px}
.as-lb{font-family:var(--d-mono);font-size:9px;letter-spacing:.04em;color:var(--d-ink-3);white-space:nowrap}
.as-tip{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
html[data-skin] .as-dash .as-sel,
.as-dash .as-sel{height:26px !important;width:132px !important;padding:0 7px !important;
  border:1px solid var(--d-line) !important;border-radius:4px !important;background:transparent !important;
  box-shadow:none !important;color:var(--d-ink-2) !important;font-size:10.5px !important}
.as-dash .as-sel:focus{border-color:var(--d-accent-line) !important}
.as-dash .as-sel option{background:var(--d-panel);color:var(--d-ink)}

/* 卡片 */
.as-dash .card{margin-bottom:12px}
.as-dash .card:last-child{margin-bottom:0}
.as-ov .rc-list,.as-mx-card .rc-list{height:auto}
.as-dash .rc-scroll{max-height:none}
.as-blank{display:flex;flex-direction:column;align-items:center;gap:8px;padding:52px 20px;
  font-size:12px;color:var(--d-ink-3)}
.as-blank svg{opacity:.3}

/* 总览表 */
.as-ov-grid{min-width:var(--as-min,900px)}
.as-ov-r{grid-template-columns:var(--rc-cols)}
.as-name{display:flex;align-items:center;gap:6px;min-width:0}
.as-name b{font-size:11.5px;font-weight:600;color:var(--d-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.as-tag{font-style:normal;flex-shrink:0;font-family:var(--d-mono);font-size:8px;padding:0 4px;
  border-radius:2px;border:1px solid var(--d-line);color:var(--d-ink-3)}
.as-c{text-align:center}
.as-num{font-family:var(--d-mono);font-size:11px;color:var(--d-ink-2)}
.as-num.zero{color:var(--d-ink-3);opacity:.4}
.as-num.on{color:var(--d-ink);font-weight:600}
.as-amt{font-family:var(--d-mono);font-size:11px;color:var(--d-danger);font-weight:600}
.as-amt.zero{color:var(--d-ink-3);opacity:.4;font-weight:400}
.as-amt em,.as-num em{font-style:normal;font-size:9px;color:var(--d-ink-3);margin-left:1px;font-weight:400}
.as-dim{color:var(--d-ink-3)}

/* 明细矩阵 */
.as-mx{min-width:var(--as-min,1300px)}
.as-mx-r{align-items:stretch}
.as-mx-r .rc-c{padding:6px 7px}
.as-mx .rc-gh .rc-c{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.as-mx .rc-gh .rc-c i{font-style:normal;margin-left:4px;padding:0 3px;border-radius:2px;
  color:var(--d-danger);border:1px solid rgba(255,122,110,.3);background:rgba(255,122,110,.08)}
.as-mx-c{display:block;min-height:34px;padding:5px 6px !important;
  white-space:normal !important;overflow:visible !important;text-overflow:clip !important}
.as-none{display:block;text-align:center;padding:8px 0;font-size:10px;color:var(--d-ink-3);opacity:.5}
.as-its{display:block}
.as-mx-c .as-its .as-it:nth-child(n+5){display:none}
.as-mx-c.is-all .as-its .as-it:nth-child(n+5){display:block}

/* 格内单条考核 */
.as-it{margin-bottom:4px;padding:5px 7px;border:1px solid var(--d-line);border-left-width:2px;
  border-radius:4px;background:transparent}
.as-it:last-child{margin-bottom:0}
.as-it.is-danger{border-left-color:var(--d-danger)}
.as-it.is-ok{border-left-color:var(--d-ok);opacity:.82}
.as-it.is-dim{border-left-color:var(--d-line-2);opacity:.6}
.as-it.is-passed{opacity:.66}
.as-it-h{display:flex;align-items:center;gap:6px;min-width:0;margin-bottom:2px}
.as-it-h b{font-family:var(--d-mono);font-size:9.5px;font-weight:500;color:var(--d-ink-3);white-space:nowrap}
.as-it-amt{font-style:normal;font-family:var(--d-mono);font-size:9.5px;font-weight:600;
  color:var(--d-danger);margin-left:auto;white-space:nowrap}
.as-it-amt.is-bonus{color:var(--d-ok)}
.as-it-st{font-style:normal;flex-shrink:0;font-size:8.5px;line-height:14px;padding:0 4px;border-radius:2px;
  border:1px solid var(--d-line);color:var(--d-ink-3);white-space:nowrap}
.as-it-st.is-info{color:var(--d-ink-2);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.as-it-st.is-ok{color:var(--d-ok);border-color:rgba(72,199,142,.34);background:rgba(72,199,142,.08)}
.as-it-st.is-danger{color:var(--d-danger);border-color:rgba(255,122,110,.32);background:rgba(255,122,110,.07)}
.as-it-t{font-size:10.5px;line-height:1.5;color:var(--d-ink-2);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.as-it.is-danger .as-it-t{color:var(--d-ink)}
.as-it-act{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:4px}
.as-it-act .btn{height:19px !important;min-height:0 !important;padding:0 6px !important;
  border:1px solid var(--d-line) !important;border-radius:3px !important;background:transparent !important;
  box-shadow:none !important;font-size:9px !important;font-weight:500 !important;color:var(--d-ink-2) !important;
  line-height:17px !important}
.as-it-act .btn:hover{color:var(--d-accent) !important;border-color:var(--d-accent-line) !important;
  background:var(--d-accent-dim) !important}
.as-it-act > span{font-size:9.5px !important;line-height:1.4}
.as-more{margin-top:5px;padding:0;border:0;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:9px;color:var(--d-ink-3)}
.as-more:hover{color:var(--d-accent)}

.as-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding:9px 14px;border-top:1px solid var(--d-line);font-size:9.5px;color:var(--d-ink-3)}
.as-legend span{display:inline-flex;align-items:center;gap:5px}
.as-dot{width:5px;height:5px;border-radius:50%;background:var(--d-ink-3)}
.as-dot.is-danger{background:var(--d-danger)}
.as-dot.is-ok{background:var(--d-ok)}
.as-dot.is-dim{background:var(--d-line-2)}
.as-legend-tip{margin-left:auto;font-family:var(--d-mono);font-size:8.5px;opacity:.7}

/* 申诉视图 */
.as-ap-grid{min-width:var(--as-min,900px)}
.as-ap-r{grid-template-columns:var(--rc-cols)}
.as-mono{font-family:var(--d-mono);font-size:10.5px;color:var(--d-ink-3)}
.as-ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--d-ink-2)}
.as-fail{display:block;font-style:normal;font-size:9.5px;color:var(--d-danger);line-height:1.4}
.as-res{font-size:10px;font-weight:600;white-space:nowrap}
.as-res.ok{color:var(--d-ok)}
.as-res.danger{color:var(--d-danger)}
.as-res.warn{color:var(--d-warn)}
.as-res.dim{color:var(--d-ink-3)}
.as-link{padding:0;border:0;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:10px;color:var(--d-ink-2);
  border-bottom:1px dashed var(--d-line-2)}
.as-link:hover{color:var(--d-accent);border-bottom-color:var(--d-accent-line)}
.as-link.pri{color:var(--d-accent);border-bottom-color:var(--d-accent-line)}

@media (max-width:1560px){
  .as-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .as-dash .hero .kpi:nth-child(4){border-left:0}
  .as-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .as-hd-act{width:100%;justify-content:flex-start}
}
@media (max-width:980px){
  .as-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .as-dash .hero .kpi:nth-child(3),.as-dash .hero .kpi:nth-child(5){border-left:0}
  .as-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
  .as-dash .as-sel{width:118px !important}
}

/* ============================================================
   49. 考勤看板（dash 骨架版）
   - 日期导航条 + 6 KPI + 部门出勤分布 + 出勤明细
   ============================================================ */
.at-dash .hd{margin-bottom:14px;align-items:flex-start;justify-content:space-between;gap:14px}
.at-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.at-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.at-hd-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.at-note{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--d-ink-3);white-space:nowrap}
.at-note svg{opacity:.6}
.at-hd-act .rc-btn svg{opacity:.75}

/* 日期导航 */
.at-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 14px;margin-bottom:12px}
.at-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.at-step{width:26px;height:26px;padding:0;display:grid;place-items:center;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;color:var(--d-ink-3);cursor:pointer;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.at-step:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.at-step.is-next svg{transform:rotate(180deg)}
html[data-skin] .at-dash .at-date,
.at-dash .at-date{height:26px !important;width:142px !important;padding:0 8px !important;
  border:1px solid var(--d-line) !important;border-radius:4px !important;background:transparent !important;
  box-shadow:none !important;font-family:var(--d-mono) !important;font-size:10.5px !important;color:var(--d-ink-2) !important}
.at-dash .at-date:focus{border-color:var(--d-accent-line) !important}
.at-dash .at-date::-webkit-calendar-picker-indicator{margin:0;padding:0;opacity:.5}
.at-wd{font-family:var(--d-mono);font-size:10px;color:var(--d-ink-3);letter-spacing:.03em}
.at-rel{font-size:9.5px;line-height:16px;padding:0 5px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);color:var(--d-accent)}
.at-rel:empty{display:none}
.at-sync{display:inline-flex;align-items:center;gap:5px;font-family:var(--d-mono);
  font-size:9px;color:var(--d-ink-3);white-space:nowrap}
.at-sync svg{opacity:.6}
.at-sync.is-warn{color:var(--d-warn)}
.at-sync.is-warn svg{color:var(--d-warn)}

/* KPI */
.at-dash .hero{margin-bottom:12px}
.at-dash .hero .kpis{grid-template-columns:repeat(6,1fr)}
.at-dash .hero .kpi{padding:15px 17px 14px}
.at-dash .kpi-l{font-size:10.5px;letter-spacing:.02em;gap:5px;margin-bottom:10px}
.at-dash .kpi-v{font-size:31px;letter-spacing:-.03em;gap:3px;font-variant-numeric:tabular-nums}
.at-dash .kpi-v small{font-size:9.5px;letter-spacing:.02em;color:var(--d-ink-3);margin-left:1px}
.at-dash .kpi-s{font-size:9.5px;line-height:1.45;margin-top:8px;color:var(--d-ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.at-dash .kpi.is-ok .kpi-v{color:var(--d-ok)}
.at-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.at-dash .kpi.is-danger .kpi-v{color:var(--d-danger)}
.at-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.85}
.at-dash .kpi.is-danger .kpi-s{color:var(--d-danger);opacity:.85}

/* 部门出勤分布 */
.at-dash .card{margin-bottom:12px}
.at-dep-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:9px;padding:12px 14px}
.at-dep{min-width:0;padding:9px 11px 10px;border:1px solid var(--d-line);border-radius:5px;
  transition:border-color .16s var(--d-ease)}
.at-dep:hover{border-color:var(--d-line-2)}
.at-dep-h{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;min-width:0}
.at-dep-h b{flex:1 1 auto;min-width:0;font-size:11.5px;font-weight:600;color:var(--d-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.at-dep-h span{flex-shrink:0;font-family:var(--d-mono);font-size:8.5px;color:var(--d-ink-3)}
.at-dep-bar{display:flex;height:4px;border-radius:2px;background:var(--d-line);overflow:hidden}
.at-dep-bar i{display:block;height:100%;transition:width .3s var(--d-ease)}
.at-dep-bar i.is-ok{background:var(--d-ok)}
.at-dep-bar i.is-warn{background:var(--d-warn)}
.at-dep-bar i.is-danger{background:var(--d-danger)}
.at-dep-bar i.is-info{background:var(--d-accent);opacity:.75}
.at-dep-bar i.is-dim{background:var(--d-line-2)}
.at-dep-l{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;
  font-size:9px;color:var(--d-ink-3)}
.at-dep-l span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.at-dot{width:5px;height:5px;border-radius:50%;background:var(--d-line-2);flex-shrink:0}
.at-dot.is-ok{background:var(--d-ok)}
.at-dot.is-warn{background:var(--d-warn)}
.at-dot.is-danger{background:var(--d-danger)}
.at-dot.is-info{background:var(--d-accent);opacity:.75}
.at-dot.is-dim{background:var(--d-line-2)}
.at-dep-none{padding:26px 16px;text-align:center;font-size:10.5px;color:var(--d-ink-3)}

/* 筛选 */
.at-tools{margin-bottom:10px}
.at-chips{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.at-chip{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 9px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.at-chip:hover{color:var(--d-ink-2);border-color:var(--d-line-2)}
.at-chip.on{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.at-chip i{font-style:normal;font-family:var(--d-mono);font-size:8px;line-height:13px;padding:0 4px;
  border-radius:2px;border:1px solid var(--d-line);color:var(--d-ink-3)}
.at-chip i:empty{display:none}
.at-chip.on i{color:var(--d-accent);border-color:var(--d-accent-line)}
.at-search{flex:0 0 216px;height:28px;padding:0 10px;border-radius:5px;
  border:1px solid var(--d-line) !important;background:transparent !important;box-shadow:none !important;
  transition:border-color .18s var(--d-ease)}
.at-search:focus-within{border-color:var(--d-accent-line) !important}
.at-search > svg{width:12px;height:12px;opacity:.7}
html[data-skin] .at-dash .at-search .input,
.at-dash .at-search .input{height:100% !important;padding:0 !important;
  border:0 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink)}
.at-dash .at-search .input::placeholder{color:var(--d-ink-3)}

/* 明细表 */
.at-list{height:auto}
.at-list .rc-scroll{max-height:none}
.at-grid{min-width:var(--at-min,952px)}
.at-dash .rc-c{font-size:11px;padding:7px 9px}
.at-dash .rc-gh .rc-c{padding:9px 9px}
.at-c{text-align:center}
.at-gr{cursor:default}
.at-name{display:flex;align-items:center;gap:7px;min-width:0}
.at-name b{font-size:11.5px;font-weight:600;color:var(--d-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.at-av{width:20px;height:20px;flex-shrink:0;display:grid;place-items:center;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);color:var(--d-accent);
  font-size:9.5px;font-weight:600}
.at-dim{color:var(--d-ink-3)}
.at-mono{font-family:var(--d-mono);font-size:11px;color:var(--d-ink-2);font-variant-numeric:tabular-nums}
.at-mono.is-bad{color:var(--d-danger)}
.at-mono em,.at-dim em{font-style:normal;font-size:8.5px;color:var(--d-ink-3);margin-left:1px}
.at-nil{color:var(--d-ink-3);opacity:.45}
.at-note{font-size:10px;color:var(--d-ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.at-badge{display:inline-flex;align-items:center;height:17px;padding:0 6px;border-radius:3px;
  border:1px solid var(--d-line);font-size:9px;line-height:15px;white-space:nowrap;color:var(--d-ink-3)}
.at-badge.is-ok{color:var(--d-ok);border-color:rgba(72,199,142,.34);background:rgba(72,199,142,.08)}
.at-badge.is-warn{color:var(--d-warn);border-color:rgba(224,150,60,.35);background:rgba(224,150,60,.08)}
.at-badge.is-danger{color:var(--d-danger);border-color:rgba(255,122,110,.35);background:rgba(255,122,110,.08)}
.at-badge.is-info{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.at-badge.is-dim{opacity:.72}
.at-foot{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:9px 14px;
  border-top:1px solid var(--d-line);font-size:9.5px;color:var(--d-ink-3)}
.at-foot-tip{margin-left:auto;font-family:var(--d-mono);font-size:8.5px;opacity:.7}

@media (max-width:1560px){
  .at-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .at-dash .hero .kpi:nth-child(3n+1){border-left:0}
  .at-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .at-hd-act{width:100%;justify-content:flex-start}
  .at-sync{display:none}
}
@media (max-width:980px){
  .at-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .at-dash .hero .kpi:nth-child(2n+1){border-left:0}
  .at-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
  .at-search{flex:1 1 100%}
}
.at-sync.is-clickable{cursor:pointer}
.at-sync.is-clickable:hover{color:var(--d-accent)}

/* ============================================================
   50. 员工花名册（dash 骨架版）
   - 页头 + 6 KPI + 部门人员分布 + 在职/离职页签 + 筛选 + 明细
   ============================================================ */
.rs-dash .hd{margin-bottom:14px;align-items:flex-start;justify-content:space-between;gap:14px}
.rs-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.rs-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.rs-hd-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}

/* KPI */
.rs-dash .hero{margin-bottom:12px}
.rs-dash .hero .kpis{grid-template-columns:repeat(6,1fr)}
.rs-dash .hero .kpi{padding:15px 17px 14px}
.rs-dash .kpi-l{font-size:10.5px;letter-spacing:.02em;gap:5px;margin-bottom:10px}
.rs-dash .kpi-v{font-size:31px;letter-spacing:-.03em;gap:3px;font-variant-numeric:tabular-nums}
.rs-dash .kpi-v small{font-size:9.5px;letter-spacing:.02em;color:var(--d-ink-3);margin-left:1px;white-space:nowrap}
.rs-dash .kpi-s{font-size:9.5px;line-height:1.45;margin-top:8px;color:var(--d-ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rs-dash .kpi.is-ok .kpi-v{color:var(--d-ok)}
.rs-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.rs-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.85}
.rs-dash .kpi.is-ok .kpi-s{color:var(--d-ok);opacity:.85}

/* 部门分布 */
.rs-dash .card{margin-bottom:12px}
.rs-dep-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(212px,1fr));gap:9px;padding:12px 14px}
.rs-dep{min-width:0;padding:9px 11px 10px;border:1px solid var(--d-line);border-radius:5px;
  transition:border-color .16s var(--d-ease)}
.rs-dep:hover{border-color:var(--d-line-2)}
.rs-dep-h{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;min-width:0}
.rs-dep-h b{flex:1 1 auto;min-width:0;font-size:11.5px;font-weight:600;color:var(--d-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rs-dep-h span{flex-shrink:0;font-family:var(--d-mono);font-size:8.5px;color:var(--d-ink-3)}
.rs-dep-bar{height:4px;border-radius:2px;background:var(--d-line);overflow:hidden}
.rs-dep-bar i{display:block;height:100%;border-radius:2px;background:var(--d-accent);
  box-shadow:var(--d-glow);transition:width .3s var(--d-ease)}
.rs-dep-l{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:8px;font-size:9px;color:var(--d-ink-3)}
.rs-dep-l span{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.rs-dep-l em{font-style:normal;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-2)}
.rs-dep-none{padding:26px 16px;text-align:center;font-size:10.5px;color:var(--d-ink-3)}

/* 页签 */
.rs-tabs{display:flex;gap:6px;margin:0 0 10px;flex-wrap:wrap}
.rs-tab{display:inline-flex;align-items:center;gap:6px;height:29px;padding:0 12px;
  border:1px solid var(--d-line);border-radius:5px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:11.5px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.rs-tab:hover{color:var(--d-ink-2);border-color:var(--d-line-2)}
.rs-tab.on{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim);font-weight:600}
.rs-tab i{font-style:normal;font-family:var(--d-mono);font-size:8.5px;line-height:13px;padding:0 4px;
  border:1px solid var(--d-line);border-radius:2px;color:var(--d-ink-3)}
.rs-tab i:empty{display:none}
.rs-tab.on i{color:var(--d-accent);border-color:var(--d-accent-line)}

/* 筛选 */
.rs-tools{margin-bottom:10px}
.rs-chips{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.rs-chip{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 9px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.rs-chip:hover{color:var(--d-ink-2);border-color:var(--d-line-2)}
.rs-chip.on{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.rs-chip i{font-style:normal;font-family:var(--d-mono);font-size:8px;line-height:13px;padding:0 4px;
  border-radius:2px;border:1px solid var(--d-line);color:var(--d-ink-3)}
.rs-chip.on i{color:var(--d-accent);border-color:var(--d-accent-line)}
.rs-search{flex:0 0 226px;height:28px;padding:0 10px;border-radius:5px;
  border:1px solid var(--d-line) !important;background:transparent !important;box-shadow:none !important;
  transition:border-color .18s var(--d-ease)}
.rs-search:focus-within{border-color:var(--d-accent-line) !important}
.rs-search > svg{width:12px;height:12px;opacity:.7}
html[data-skin] .rs-dash .rs-search .input,
.rs-dash .rs-search .input{height:100% !important;padding:0 !important;
  border:0 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink)}
.rs-dash .rs-search .input::placeholder{color:var(--d-ink-3)}

/* 明细表 */
.rs-list{height:auto}
.rs-list .rc-scroll{max-height:none}
.rs-grid{min-width:var(--rs-min,1000px)}
.rs-dash .rc-c{font-size:11px;padding:7px 9px}
.rs-dash .rc-gh .rc-c{padding:9px 9px}
.rs-c{text-align:center}
.rs-gr{cursor:default}
.rs-name{display:flex;align-items:center;gap:7px;min-width:0}
.rs-name b{font-size:11.5px;font-weight:600;color:var(--d-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rs-av{width:20px;height:20px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;
  font-style:normal;font-size:9.5px;font-weight:600;color:#fff;opacity:.92}
.rs-flag{flex-shrink:0;font-style:normal;font-family:var(--d-mono);font-size:8px;line-height:13px;
  padding:0 4px;border-radius:2px;color:var(--d-warn);border:1px solid rgba(224,150,60,.35);
  background:rgba(224,150,60,.1);cursor:help}
.rs-role{display:flex;align-items:center;gap:6px;min-width:0;overflow:hidden}
.rs-pos{flex-shrink:0;font-size:10px;line-height:16px;padding:0 5px;border-radius:2px;
  border:1px solid var(--d-line);color:var(--d-ink-2);white-space:nowrap}
.rs-job{font-size:10px;color:var(--d-ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rs-tag{display:inline-flex;align-items:center;height:16px;padding:0 5px;border-radius:2px;
  border:1px solid var(--d-line);font-size:9px;line-height:14px;color:var(--d-ink-3);white-space:nowrap}
.rs-dim{color:var(--d-ink-3)}
.rs-mono{font-family:var(--d-mono);font-size:10.5px;color:var(--d-ink-2);font-variant-numeric:tabular-nums}
.rs-warn{color:var(--d-warn)}
.rs-nil{color:var(--d-ink-3);opacity:.45}
.rs-sub{display:block;font-style:normal;font-family:var(--d-mono);font-size:8.5px;
  color:var(--d-ink-3);margin-top:1px;line-height:1.3}
.rs-dl{display:inline-flex;align-items:center;gap:3px;font-size:10px;color:var(--d-accent);
  text-decoration:none;border-bottom:1px dashed var(--d-accent-line);white-space:nowrap}
.rs-dl:hover{color:var(--d-accent-bright)}
.rs-miss{font-size:9px;line-height:15px;padding:0 5px;border-radius:2px;
  color:var(--d-danger);border:1px solid rgba(255,122,110,.32);background:rgba(255,122,110,.07);white-space:nowrap}
.rs-bd{display:inline-block;margin-left:4px;font-style:normal;font-family:var(--d-mono);font-size:8px;
  line-height:13px;padding:0 3px;border-radius:2px;color:var(--d-ok);
  border:1px solid rgba(72,199,142,.34);background:rgba(72,199,142,.08);white-space:nowrap}
.rs-op{width:20px;height:20px;padding:0;display:inline-grid;place-items:center;
  border:1px solid var(--d-line);border-radius:3px;background:transparent;color:var(--d-ink-3);cursor:pointer;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.rs-op:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.rs-foot{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:9px 14px;
  border-top:1px solid var(--d-line);font-size:9.5px;color:var(--d-ink-3)}
.rs-foot-tip{margin-left:auto;font-family:var(--d-mono);font-size:8.5px;opacity:.7}

@media (max-width:1560px){
  .rs-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .rs-dash .hero .kpi:nth-child(3n+1){border-left:0}
  .rs-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .rs-hd-act{width:100%;justify-content:flex-start}
  .rs-dep-list{grid-template-columns:repeat(auto-fit,minmax(188px,1fr))}
}
@media (max-width:980px){
  .rs-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .rs-dash .hero .kpi:nth-child(2n+1){border-left:0}
  .rs-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
  .rs-search{flex:1 1 100%}
}

/* 花名册修改弹窗（挂在 body 上，不套 .rs-dash 前缀） */
.rs-form{display:flex;flex-direction:column;gap:11px}
.rs-f label{display:block;font-size:11.5px;font-weight:600;color:var(--d-ink-2);margin-bottom:5px}
.rs-hint{margin-left:6px;font-weight:400;font-size:10px;color:var(--d-ink-3)}
.rs-cur{margin-top:6px;font-size:10.5px;color:var(--d-ink-3)}
.rs-cur a{color:var(--d-accent);text-decoration:none;border-bottom:1px dashed var(--d-accent-line)}
.rs-cur a:hover{color:var(--d-accent-bright)}

/* ============================================================
   51. 合作结算（dash 骨架版）
   - 页头 + 6 KPI + 月份/部门筛选 + 明细（列随可见行显隐）
   ============================================================ */
.st-dash .hd{margin-bottom:14px;align-items:flex-start;justify-content:space-between;gap:14px}
.st-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.st-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.st-hd-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
/* display:inline-flex 会盖掉 UA 的 [hidden]{display:none}，这里显式补一条 */
.st-dash [hidden]{display:none !important}

/* KPI */
.st-dash .hero{margin-bottom:12px}
.st-dash .hero .kpis{grid-template-columns:repeat(6,1fr)}
.st-dash .hero .kpi{padding:15px 17px 14px}
.st-dash .kpi-l{font-size:10.5px;letter-spacing:.02em;gap:5px;margin-bottom:10px}
.st-dash .kpi-v{font-size:30px;letter-spacing:-.03em;gap:3px;font-variant-numeric:tabular-nums}
.st-dash .kpi-v small{font-size:9.5px;letter-spacing:.02em;color:var(--d-ink-3);margin-left:1px;white-space:nowrap}
.st-dash .kpi-s{font-size:9.5px;line-height:1.45;margin-top:8px;color:var(--d-ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st-dash .kpi.is-ok .kpi-v{color:var(--d-ok)}
.st-dash .kpi.is-warn .kpi-v{color:var(--d-danger)}
.st-dash .kpi.is-warn .kpi-s{color:var(--d-danger);opacity:.85}
.st-dash .kpi.is-ok .kpi-s{color:var(--d-ok);opacity:.85}

/* 工具行：月份 + 部门 chips + 搜索 */
.st-tools{margin-bottom:10px}
.st-month{display:inline-flex;align-items:center;gap:4px}
.st-mv{width:26px;height:28px;display:inline-grid;place-items:center;cursor:pointer;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;
  font-family:var(--d-mono);font-size:14px;line-height:1;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.st-mv:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
html[data-skin] .st-dash .st-month .input,
.st-dash .st-month .input{height:28px;width:132px;padding:0 8px;
  border:1px solid var(--d-line) !important;border-radius:4px !important;
  background:transparent !important;box-shadow:none !important;
  font-family:var(--d-mono);font-size:10px;color:var(--d-ink-2) !important}
.st-now{height:28px;padding:0 9px;border:1px solid var(--d-line);border-radius:4px;background:transparent;
  cursor:pointer;font-family:var(--d-sans);font-size:10px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease)}
.st-now:hover{color:var(--d-accent);border-color:var(--d-accent-line)}

.st-chips{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.st-chip{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 9px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.st-chip:hover{color:var(--d-ink-2);border-color:var(--d-line-2)}
.st-chip.on{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.st-chip i{font-style:normal;font-family:var(--d-mono);font-size:8px;line-height:13px;padding:0 4px;
  border-radius:2px;border:1px solid var(--d-line);color:var(--d-ink-3)}
.st-chip.on i{color:var(--d-accent);border-color:var(--d-accent-line)}

.st-search{flex:0 0 226px;height:28px;padding:0 10px;border-radius:5px;
  border:1px solid var(--d-line) !important;background:transparent !important;box-shadow:none !important;
  transition:border-color .18s var(--d-ease)}
.st-search:focus-within{border-color:var(--d-accent-line) !important}
.st-search > svg{width:12px;height:12px;opacity:.7}
html[data-skin] .st-dash .st-search .input,
.st-dash .st-search .input{height:100% !important;padding:0 !important;
  border:0 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink)}
.st-dash .st-search .input::placeholder{color:var(--d-ink-3)}

/* 明细表 */
.st-list{height:auto}
.st-list .rc-scroll{max-height:none}
.st-grid{min-width:var(--st-min,1180px)}
.st-dash .rc-c{font-size:11px;padding:7px 9px;min-height:38px;display:flex;align-items:center}
.st-dash .rc-gh .rc-c{padding:9px 9px;min-height:0;display:block}
.st-c{justify-content:center;text-align:center}
.st-r{justify-content:flex-end;text-align:right}
.st-gr{cursor:default}
.st-gr.is-dept-start{border-top:2px solid var(--d-line-2)}

.st-dash .st-name{flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;min-width:0}
.st-name b{font-size:11.5px;font-weight:600;color:var(--d-ink);
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-sub{display:block;font-style:normal;font-family:var(--d-mono);font-size:8.5px;
  color:var(--d-ink-3);line-height:1.3;margin-top:1px;letter-spacing:-.01em}
.st-dept{font-style:normal;font-size:9.5px;line-height:16px;padding:0 5px;border-radius:2px;
  border:1px solid var(--d-line);color:var(--d-ink-3);white-space:nowrap}
.st-num{font-family:var(--d-mono);font-size:11px;font-weight:500;color:var(--d-ink-2);
  font-variant-numeric:tabular-nums;border-bottom:1px dashed transparent;cursor:pointer;
  transition:color .14s var(--d-ease),border-color .14s var(--d-ease)}
.st-num:hover{color:var(--d-accent);border-bottom-color:var(--d-accent-line)}
.st-r .st-num{flex-shrink:0;order:1}
.st-r .st-sub,.st-r .st-tag{order:0;margin-left:0;margin-right:4px}
.is-red .st-num{color:var(--d-danger)}
.is-red .st-num:hover{color:var(--d-danger);border-bottom-color:rgba(255,122,110,.5)}
.st-num.is-zero{color:var(--d-ink-3);opacity:.5}
.st-num.is-zero:hover{color:var(--d-accent);opacity:1}
.st-num.is-total{color:var(--d-accent);font-weight:700}
.st-num.is-total:hover{color:var(--d-accent-bright)}
.st-num.is-total.is-neg{color:var(--d-danger)}
.st-nil{color:var(--d-ink-3);opacity:.4;font-family:var(--d-mono);font-size:11px}

.st-tag{display:inline-flex;align-items:center;height:14px;margin-left:4px;padding:0 4px;border-radius:2px;
  font-style:normal;font-family:var(--d-mono);font-size:8px;line-height:12px;white-space:nowrap;
  border:1px solid var(--d-line);color:var(--d-ink-3);flex-shrink:0}
.st-tag.is-ok{color:var(--d-ok);border-color:rgba(30,186,152,.32);background:rgba(30,186,152,.07)}
.st-tag.is-warn{color:var(--d-warn);border-color:rgba(224,150,60,.32);background:rgba(224,150,60,.07)}

.st-op{width:22px;height:22px;display:inline-grid;place-items:center;border-radius:3px;
  border:1px solid var(--d-line);background:transparent;color:var(--d-ink-3);cursor:pointer;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.st-op:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}

.st-foot{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:9px 14px;
  border-top:1px solid var(--d-line);font-size:9.5px;color:var(--d-ink-3)}
.st-foot-tip{margin-left:auto;font-family:var(--d-mono);font-size:8.5px;opacity:.7}

@media (max-width:1560px){
  .st-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .st-dash .hero .kpi:nth-child(3n+1){border-left:0}
  .st-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .st-hd-act{width:100%;justify-content:flex-start}
  .st-search{flex:1 1 100%}
}
@media (max-width:980px){
  .st-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .st-dash .hero .kpi:nth-child(2n+1){border-left:0}
  .st-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
}

/* ============================================================
   52. 登录设备（dash 骨架版）
   - 页头 + 6 KPI + 状态筛选 + 明细（待批准置顶）
   ============================================================ */
.dv-dash .hd{margin-bottom:14px;align-items:flex-start;justify-content:space-between;gap:14px}
.dv-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.dv-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.dv-hd-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}

/* KPI */
.dv-dash .hero{margin-bottom:12px}
.dv-dash .hero .kpis{grid-template-columns:repeat(6,1fr)}
.dv-dash .hero .kpi{padding:15px 17px 14px}
.dv-dash .kpi-l{font-size:10.5px;letter-spacing:.02em;gap:5px;margin-bottom:10px}
.dv-dash .kpi-v{font-size:31px;letter-spacing:-.03em;gap:3px;font-variant-numeric:tabular-nums}
.dv-dash .kpi-v small{font-size:9.5px;letter-spacing:.02em;color:var(--d-ink-3);margin-left:1px;white-space:nowrap}
.dv-dash .kpi-s{font-size:9.5px;line-height:1.45;margin-top:8px;color:var(--d-ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dv-dash .kpi.is-warn .kpi-v{color:var(--d-danger)}
.dv-dash .kpi.is-warn .kpi-s{color:var(--d-danger);opacity:.85}

/* 待批准提示条 */
.dv-notice{display:flex;align-items:center;gap:7px;margin:0 0 10px;padding:9px 12px;border-radius:5px;
  border:1px solid rgba(255,122,110,.28);background:rgba(255,122,110,.07);
  font-size:11px;color:var(--d-danger)}
.dv-notice b{font-family:var(--d-mono);font-size:12px;margin:0 1px}
.dv-notice svg{flex-shrink:0}

/* 筛选 */
.dv-tools{margin-bottom:10px}
.dv-chips{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.dv-chip{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 9px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.dv-chip:hover{color:var(--d-ink-2);border-color:var(--d-line-2)}
.dv-chip.on{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.dv-chip i{font-style:normal;font-family:var(--d-mono);font-size:8px;line-height:13px;padding:0 4px;
  border-radius:2px;border:1px solid var(--d-line);color:var(--d-ink-3)}
.dv-chip.on i{color:var(--d-accent);border-color:var(--d-accent-line)}
.dv-search{flex:0 0 226px;height:28px;padding:0 10px;border-radius:5px;
  border:1px solid var(--d-line) !important;background:transparent !important;box-shadow:none !important;
  transition:border-color .18s var(--d-ease)}
.dv-search:focus-within{border-color:var(--d-accent-line) !important}
.dv-search > svg{width:12px;height:12px;opacity:.7}
html[data-skin] .dv-dash .dv-search .input,
.dv-dash .dv-search .input{height:100% !important;padding:0 !important;
  border:0 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink)}
.dv-dash .dv-search .input::placeholder{color:var(--d-ink-3)}

/* 明细表 */
.dv-list{height:auto}
.dv-list .rc-scroll{max-height:none}
.dv-grid{min-width:var(--dv-min,1130px)}
.dv-dash .rc-c{font-size:11px;padding:8px 10px;min-height:44px;display:flex;align-items:center}
.dv-dash .rc-gh .rc-c{padding:9px 10px;min-height:0;display:block}
.dv-dash .is-c{justify-content:center;text-align:center}
.dv-gr{cursor:default}

.dv-user{display:flex;align-items:center;gap:8px;min-width:0}
.dv-av{width:22px;height:22px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-style:normal;font-size:10px;font-weight:600;color:var(--d-accent)}
.dv-user-t{display:flex;flex-direction:column;gap:1px;min-width:0}
.dv-user-t b{font-size:11.5px;font-weight:600;color:var(--d-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dv-user-t em{font-style:normal;font-size:9px;color:var(--d-ink-3);line-height:1.3}

.dv-dev{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px}
.dv-dev-l{max-width:100%;font-size:11.5px;color:var(--d-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dv-dev-m{display:flex;align-items:center;gap:4px;font-size:9px;color:var(--d-ink-3)}
.dv-dev-note{max-width:100%;font-size:9px;color:var(--d-warn);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.dv-dot{width:5px;height:5px;flex-shrink:0;display:inline-block;border-radius:50%;background:var(--d-ink-3)}
.dv-dot.is-strong{background:var(--d-ok);box-shadow:0 0 0 2px rgba(72,199,142,.14)}
.dv-dot.is-weak{background:var(--d-warn)}
.dv-dot.is-old{background:var(--d-ink-3);opacity:.6}
.dv-dot.is-pending{background:var(--d-warn)}
.dv-dot.is-active{background:var(--d-ok)}
.dv-dot.is-blocked{background:var(--d-danger)}

.dv-st{display:inline-flex;align-items:center;height:16px;padding:0 6px;border-radius:2px;
  font-style:normal;font-size:9px;line-height:14px;white-space:nowrap;
  border:1px solid var(--d-line);color:var(--d-ink-3)}
.dv-st.is-pending{color:var(--d-warn);border-color:rgba(224,150,60,.35);background:rgba(224,150,60,.08)}
.dv-st.is-active{color:var(--d-ok);border-color:rgba(72,199,142,.32);background:rgba(72,199,142,.07)}
.dv-st.is-blocked{color:var(--d-danger);border-color:rgba(255,122,110,.32);background:rgba(255,122,110,.07)}

.dv-mono{font-family:var(--d-mono);font-size:10.5px;color:var(--d-ink-2);font-variant-numeric:tabular-nums}
.dv-dim{color:var(--d-ink-3)}
.dv-nil{opacity:.45}

.dv-policy{display:flex;align-items:center;min-width:0}
.dv-sel{width:100%;height:26px;padding:0 6px;border:1px solid var(--d-line) !important;border-radius:4px !important;
  background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:10px;color:var(--d-ink-2) !important;cursor:pointer}
.dv-sel:focus{border-color:var(--d-accent-line) !important}

.dv-ops{display:flex;align-items:center;gap:4px;flex-wrap:nowrap}
.dv-btn{height:22px;padding:0 7px;border:1px solid var(--d-line);border-radius:3px;background:transparent;
  cursor:pointer;font-family:var(--d-sans);font-size:9.5px;color:var(--d-ink-3);white-space:nowrap;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.dv-btn:hover{color:var(--d-ink);border-color:var(--d-line-2)}
.dv-btn.is-pri{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.dv-btn.is-pri:hover{color:var(--d-accent-bright);border-color:var(--d-accent)}
.dv-btn.is-warn:hover{color:var(--d-danger);border-color:rgba(255,122,110,.42)}
.dv-btn:disabled{opacity:.45;cursor:not-allowed}

.dv-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:9px 14px;
  border-top:1px solid var(--d-line);font-size:9px;color:var(--d-ink-3)}
.dv-legend{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.dv-foot-tip{margin-left:auto;font-family:var(--d-mono);font-size:8.5px;opacity:.75;white-space:nowrap}

/* 设备助手弹窗（挂在 body 上，不套 .dv-dash 前缀） */
.dv-agent-hd{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.dv-agent-t{flex:1 1 280px;font-size:11px;line-height:1.75;color:var(--d-ink-3)}
.dv-agent-act{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dv-agent-msg{padding:10px 12px;margin-bottom:10px;border-radius:5px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);font-size:11px;color:var(--d-ink-2)}
.dv-code{margin-left:4px;font-family:var(--d-mono);font-size:16px;letter-spacing:.12em;color:var(--d-accent)}
.dv-agent-tip{margin-top:4px;font-size:10px;line-height:1.6;color:var(--d-ink-3)}
.dv-agent-list{border-top:1px solid var(--d-line)}
.dv-agent-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 0;
  border-bottom:1px solid var(--d-line);font-size:10px;color:var(--d-ink-3)}
.dv-agent-row b{font-size:11px;font-weight:600;color:var(--d-ink)}
.dv-agent-st{font-size:9px}
.dv-agent-meta{font-size:9.5px}
.dv-agent-code{margin-left:auto;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3);opacity:.8}
.dv-agent-none{padding:14px 0;font-size:10.5px;color:var(--d-ink-3)}

@media (max-width:1560px){
  .dv-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .dv-dash .hero .kpi:nth-child(3n+1){border-left:0}
  .dv-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .dv-hd-act{width:100%;justify-content:flex-start}
  .dv-search{flex:1 1 100%}
}
@media (max-width:980px){
  .dv-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .dv-dash .hero .kpi:nth-child(2n+1){border-left:0}
  .dv-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
}

/* ============================================================
   53. AI 功能管理（dash 骨架版）
   - 页头 + 5 KPI + 左配置（基础/语音/飞书）+ 右知识教练
   ============================================================ */
.ai-dash .hd{margin-bottom:18px;align-items:flex-start;justify-content:space-between;gap:14px}
.ai-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.ai-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}

/* KPI */
.ai-dash .hero{margin-bottom:16px}
/* 皮肤模式下 `.dash .card.hero` 被强制 margin-bottom:0，会和下方卡片的 16px 不一致 */
html[data-skin] .dash.ai-dash .card.hero{margin-bottom:16px !important}
.ai-dash .hero .kpis{grid-template-columns:repeat(5,1fr)}
.ai-dash .hero .kpi{padding:18px 20px 17px}
.ai-dash .kpi-l{font-size:11px;letter-spacing:.02em;gap:5px;margin-bottom:11px}
.ai-dash .kpi-v{font-size:30px;letter-spacing:-.03em;gap:3px;font-variant-numeric:tabular-nums}
.ai-dash .kpi-v small{font-size:10px;letter-spacing:.02em;color:var(--d-ink-3);margin-left:2px;white-space:nowrap}
.ai-dash .kpi-v.is-txt{font-family:var(--d-mono);font-size:17px;letter-spacing:-.01em;line-height:1.45;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-dash .kpi-s{font-size:10px;line-height:1.5;margin-top:9px;color:var(--d-ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-dash .kpi.is-ok .kpi-v{color:var(--d-ok)}
.ai-dash .kpi.is-warn .kpi-v{color:var(--d-warn)}
.ai-dash .kpi.is-warn .kpi-s{color:var(--d-warn);opacity:.8}

/* 两列骨架 */
.ai-body{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:16px;align-items:start}
.ai-col{display:flex;flex-direction:column;gap:16px;min-width:0}

/* 配置卡
   注意：html[data-skin] 下全局有一条 `.dash:not(.ac-dash) .card{padding:0!important}`
   （骨架卡约定：卡片本身不留白，内边距下沉到子区块）。所以这里不能用 padding，
   否则必被 !important 清零 —— 文字就会直接贴住卡片边框。 */
.ai-card{margin:0;padding:0}
.ai-card > .ai-card-h{padding:22px 24px 0}
.ai-card > .ai-doc{margin:16px 24px 0}
.ai-card > .ai-form{padding:16px 24px 0}
.ai-card > .ai-card-f{margin:18px 24px 0;padding:15px 0 22px;border-top:1px solid var(--d-line)}
.ai-card-h{display:flex;align-items:flex-start;gap:11px}
.ai-ico{width:30px;height:30px;flex-shrink:0;display:grid;place-items:center;border-radius:6px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);color:var(--d-accent)}
.ai-card-t{flex:1 1 auto;min-width:0;padding-top:1px}
.ai-card-t h2{margin:0;font-size:14px;font-weight:600;color:var(--d-ink);letter-spacing:-.01em;line-height:1.35}
.ai-card-t p{margin:3px 0 0;font-size:10.5px;color:var(--d-ink-3);line-height:1.5}
.ai-badge{flex-shrink:0;display:inline-flex;align-items:center;height:19px;padding:0 7px;border-radius:3px;
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.03em;white-space:nowrap;
  border:1px solid var(--d-line);color:var(--d-ink-3)}
.ai-badge.is-ok{color:var(--d-ok);border-color:rgba(72,199,142,.32);background:rgba(72,199,142,.07)}

/* 可折叠说明 */
.ai-doc{margin:15px 0 0;border:1px solid var(--d-line);border-radius:6px;background:var(--d-bg);overflow:hidden}
.ai-doc summary{cursor:pointer;padding:10px 13px;font-size:10.5px;color:var(--d-ink-2);
  display:flex;align-items:center;gap:7px;list-style:none;user-select:none;line-height:1.5}
.ai-doc summary::-webkit-details-marker{display:none}
.ai-doc summary::before{content:'+';font-family:var(--d-mono);font-size:13px;line-height:1;color:var(--d-accent)}
.ai-doc[open] summary::before{content:'−'}
.ai-doc-b{padding:4px 13px 12px;border-top:1px solid var(--d-line);
  font-size:10.5px;line-height:1.9;color:var(--d-ink-3)}
.ai-doc-b p{margin:8px 0 0}
.ai-doc-b b{color:var(--d-ink-2)}
.ai-doc-b .is-warn{color:var(--d-warn)}

/* 表单 */
.ai-form{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px;margin:0}
.ai-f{min-width:0}
.ai-f.is-wide{grid-column:1/-1}
.ai-f label{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-bottom:7px;
  font-size:11.5px;color:var(--d-ink-2);line-height:1.5}
.ai-f label .ai-hint{margin-left:auto}
.ai-hint{font-size:9.5px;color:var(--d-ink-3);line-height:1.5}
.ai-state{margin-left:4px;font-size:9.5px;color:var(--d-ok)}
.ai-dash .ai-f .input,.ai-dash .ai-f .select{width:100%;height:36px;padding:0 11px;
  border:1px solid var(--d-line) !important;border-radius:5px !important;
  background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:12px;color:var(--d-ink) !important}
.ai-dash .ai-f .input:focus,.ai-dash .ai-f .select:focus{border-color:var(--d-accent-line) !important}
.ai-dash .ai-f .input::placeholder{color:var(--d-ink-3)}
html[data-skin] .ai-dash .ai-f .input,
html[data-skin] .ai-dash .ai-f .select{background:transparent !important;color:var(--d-ink) !important}

.ai-card-f{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

/* 知识教练 */
.ai-chat{position:sticky;top:12px;margin:0;padding:0;display:flex;flex-direction:column;
  height:calc(100vh - 132px);min-height:460px;max-height:820px;overflow:hidden}
.ai-chat .ai-card-h{padding:17px 18px 15px;margin:0;flex-shrink:0;border-bottom:1px solid var(--d-line)}
.ai-msgs{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px 16px 6px;background:var(--d-bg)}
.ai-msg{display:flex;align-items:flex-start;gap:8px;margin-bottom:12px}
.ai-msg.is-user{justify-content:flex-end}
.ai-av{width:22px;height:22px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);color:var(--d-accent);
  font-style:normal;font-family:var(--d-mono);font-size:8.5px;font-weight:600}
.ai-bubble{max-width:82%;padding:10px 13px;border-radius:9px;
  font-size:12px;line-height:1.7;color:var(--d-ink);
  white-space:pre-wrap;word-break:break-word;
  background:var(--d-panel);border:1px solid var(--d-line)}
.ai-msg.is-user .ai-bubble{background:var(--d-accent-dim);border-color:var(--d-accent-line)}
.ai-chat-f{flex-shrink:0;padding:12px 14px 14px;border-top:1px solid var(--d-line)}
.ai-dash .ai-chat-f .textarea{width:100%;height:64px;min-height:64px;resize:none;padding:9px 11px;
  border:1px solid var(--d-line) !important;border-radius:6px !important;
  background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:12px;line-height:1.6;color:var(--d-ink) !important}
.ai-dash .ai-chat-f .textarea:focus{border-color:var(--d-accent-line) !important}
html[data-skin] .ai-dash .ai-chat-f .textarea{background:transparent !important;color:var(--d-ink) !important}
.ai-chat-b{display:flex;align-items:center;gap:7px;margin-top:10px;flex-wrap:wrap}
.ai-sp{flex:1 1 auto;min-width:4px}
.ai-file-name{min-height:13px;margin-top:6px;font-size:10px;color:var(--d-ink-3);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

@media (max-width:1560px){
  .ai-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .ai-dash .hero .kpi:nth-child(3n+1){border-left:0}
  .ai-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
  .ai-body{grid-template-columns:minmax(0,1fr) 360px}
}
@media (max-width:1240px){
  .ai-body{grid-template-columns:1fr}
  .ai-chat{position:static;height:480px;max-height:none}
}
@media (max-width:980px){
  .ai-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .ai-dash .hero .kpi:nth-child(2n+1){border-left:0}
  .ai-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
  .ai-form{grid-template-columns:1fr}
  .ai-chat{height:420px}
}

/* ============================================================
   54. 知识库（dash 骨架版）
   - 页头 + 5 KPI + 搜索/排序 + 书架网格 + 整页翻书
   - 不使用 .card 承载内容区：皮肤层有 .card{padding:0!important}，
     需要内边距的块一律自己带 padding
   ============================================================ */
.kb-dash .hd{margin-bottom:18px;align-items:flex-start;justify-content:space-between;gap:14px}
.kb-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.kb-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.kb-hd-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}

/* KPI */
.kb-dash .hero{margin-bottom:16px}
html[data-skin] .dash.kb-dash .card.hero{margin-bottom:16px !important}
.kb-dash .hero .kpis{grid-template-columns:repeat(5,1fr)}
.kb-dash .hero .kpi{padding:18px 20px 17px}
.kb-dash .kpi-l{font-size:11px;letter-spacing:.02em;gap:5px;margin-bottom:11px}
.kb-dash .kpi-v{font-size:30px;letter-spacing:-.03em;gap:3px;font-variant-numeric:tabular-nums}
.kb-dash .kpi-v small{font-size:10px;letter-spacing:.02em;color:var(--d-ink-3);margin-left:2px;white-space:nowrap}
.kb-dash .kpi-v.is-txt{font-family:var(--d-mono);font-size:20px;letter-spacing:-.01em;line-height:1.45}
.kb-dash .kpi-s{font-size:10px;line-height:1.5;margin-top:9px;color:var(--d-ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 工具行 */
.kb-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.kb-search{flex:0 0 280px;height:30px;padding:0 11px;border-radius:5px;
  display:flex;align-items:center;gap:7px;
  border:1px solid var(--d-line) !important;background:transparent !important;box-shadow:none !important;
  transition:border-color .18s var(--d-ease)}
.kb-search:focus-within{border-color:var(--d-accent-line) !important}
.kb-search > svg{width:12px;height:12px;opacity:.7;flex-shrink:0}
html[data-skin] .kb-dash .kb-search .input,
.kb-dash .kb-search .input{height:100% !important;padding:0 !important;flex:1 1 auto;min-width:0;
  border:0 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:11.5px;color:var(--d-ink)}
.kb-dash .kb-search .input::placeholder{color:var(--d-ink-3)}
.kb-dash .kb-search .input::-webkit-search-cancel-button{-webkit-appearance:none}

.kb-sorts{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.kb-chip{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 10px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.kb-chip:hover{color:var(--d-ink-2);border-color:var(--d-line-2)}
.kb-chip.on{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.kb-chip i{font-style:normal;font-family:var(--d-mono);font-size:8px;line-height:13px;padding:0 4px;
  border-radius:2px;border:1px solid var(--d-line);color:var(--d-ink-3)}
.kb-chip.on i{color:var(--d-accent);border-color:var(--d-accent-line)}
.kb-sp{flex:1 1 auto;min-width:4px}
.kb-hint{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3);white-space:nowrap;opacity:.8}

/* 书架 */
.kb-shelf{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.kb-book{position:relative;cursor:pointer;padding:15px 16px 13px 22px;
  border:1px solid var(--d-line);border-radius:10px;background:var(--d-panel);
  transition:border-color .18s var(--d-ease),transform .18s var(--d-ease),box-shadow .18s var(--d-ease)}
.kb-book:hover{border-color:var(--d-accent-line);transform:translateY(-2px);box-shadow:var(--d-shadow)}
.kb-book:focus-visible{outline:none;border-color:var(--d-accent-line);box-shadow:0 0 0 2px var(--d-accent-dim)}
.kb-spine{position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:0 2px 2px 0;
  background:var(--d-accent);opacity:.5}
.kb-book-h{display:flex;align-items:center;gap:8px;margin-bottom:7px;min-width:0}
.kb-book-ico{width:24px;height:24px;flex-shrink:0;display:grid;place-items:center;border-radius:5px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);color:var(--d-accent)}
.kb-book-n{margin:0;font-size:13px;font-weight:600;color:var(--d-ink);letter-spacing:-.01em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.kb-book-m{font-size:9.5px;line-height:1.5;color:var(--d-ink-3);font-family:var(--d-mono);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-meter{height:3px;margin:11px 0 10px;border-radius:2px;background:var(--d-line);overflow:hidden}
.kb-meter i{display:block;height:100%;border-radius:2px;background:var(--d-accent);opacity:.6}
.kb-book-f{display:flex;align-items:center;gap:6px;min-width:0}
.kb-book-src{font-size:9px;color:var(--d-ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-book-act{margin-left:auto;display:flex;gap:3px;opacity:.45;
  transition:opacity .16s var(--d-ease)}
.kb-book:hover .kb-book-act{opacity:1}

/* 小操作按钮 */
.kb-op{height:22px;min-width:22px;padding:0 5px;display:inline-flex;align-items:center;justify-content:center;gap:3px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:9.5px;color:var(--d-ink-3);white-space:nowrap;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.kb-op:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.kb-op.is-danger:hover{color:var(--d-danger);border-color:rgba(255,122,110,.42);background:rgba(255,122,110,.07)}

/* 翻书：面包屑 */
.kb-crumb{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;
  padding:10px 14px;border:1px solid var(--d-line);border-radius:8px;background:var(--d-panel)}
.kb-back{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink-2);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease)}
.kb-back:hover{color:var(--d-accent);border-color:var(--d-accent-line)}
.kb-sep{color:var(--d-ink-3);opacity:.5;font-family:var(--d-mono)}
.kb-crumb-n{font-size:13px;font-weight:600;color:var(--d-ink);max-width:40%;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.kb-crumb-m{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}

.kb-chapters{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-bottom:12px}

/* 条目 */
.kb-items{display:flex;flex-direction:column;gap:10px}
.kb-item{border:1px solid var(--d-line);border-radius:8px;background:var(--d-panel);
  padding:13px 16px 14px;transition:border-color .16s var(--d-ease)}
.kb-item:hover{border-color:var(--d-line-2)}
.kb-item-h{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:7px}
.kb-item-t{font-size:13px;font-weight:600;color:var(--d-ink);letter-spacing:-.01em;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-item-time{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.kb-item-ops{display:flex;gap:3px}
.kb-item-p{margin:0;font-size:11.5px;line-height:1.8;color:var(--d-ink-2);word-break:break-word}

.kb-src{display:inline-flex;align-items:center;height:15px;padding:0 5px;border-radius:2px;
  font-style:normal;font-family:var(--d-mono);font-size:8px;line-height:13px;white-space:nowrap;
  border:1px solid var(--d-line);color:var(--d-ink-3)}
.kb-src.is-chat{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.kb-src.is-pdf{color:var(--d-warn);border-color:rgba(224,150,60,.32);background:rgba(224,150,60,.07)}
.kb-src.is-hand{color:var(--d-ok);border-color:rgba(30,186,152,.3);background:rgba(30,186,152,.07)}

.kb-jump{height:17px;padding:0 6px;border:1px solid var(--d-line);border-radius:3px;background:transparent;
  cursor:pointer;font-family:var(--d-sans);font-size:9px;color:var(--d-ink-3);white-space:nowrap;
  max-width:160px;overflow:hidden;text-overflow:ellipsis;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease)}
.kb-jump:hover{color:var(--d-accent);border-color:var(--d-accent-line)}

.kb-more{margin-top:8px}
.kb-more summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:4px;
  font-size:10px;color:var(--d-accent);user-select:none}
.kb-more summary::-webkit-details-marker{display:none}
.kb-more summary::before{content:'▸';font-family:var(--d-mono);font-size:10px}
.kb-more[open] summary::before{content:'▾'}
.kb-full{margin-top:9px;padding-top:9px;border-top:1px dashed var(--d-line);
  font-size:11.5px;line-height:1.85;color:var(--d-ink-2);white-space:pre-wrap;word-break:break-word;
  max-height:460px;overflow-y:auto}
.kb-att{margin-top:9px}
.kb-att img{max-width:100%;max-height:220px;border-radius:6px;border:1px solid var(--d-line)}
.kb-att a{font-size:10.5px;color:var(--d-accent);text-decoration:none}
.kb-att a:hover{text-decoration:underline}

.kb-search-h{margin-bottom:10px;font-family:var(--d-mono);font-size:9.5px;color:var(--d-ink-3)}

/* 空态 */
.kb-empty{padding:44px 24px;text-align:center;border:1px dashed var(--d-line);border-radius:10px;background:var(--d-panel)}
.kb-empty-i{width:44px;height:44px;margin:0 auto 12px;display:grid;place-items:center;border-radius:12px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);color:var(--d-accent)}
.kb-empty b{display:block;font-size:13px;font-weight:600;color:var(--d-ink)}
.kb-empty p{margin:7px 0 0;font-size:10.5px;line-height:1.6;color:var(--d-ink-3)}
.kb-link{border:0;background:transparent;cursor:pointer;padding:0;font-size:10.5px;color:var(--d-accent)}
.kb-link:hover{text-decoration:underline}

/* 弹窗内的小标签 */
.kb-lb{display:block;margin:12px 0 6px;font-size:11.5px;color:var(--d-ink-2)}
.kb-lb:first-child{margin-top:0}
.kb-mv-n{padding:9px 11px;margin-bottom:12px;border-radius:5px;border:1px solid var(--d-line);
  background:var(--d-bg);font-size:11px;line-height:1.5;color:var(--d-ink-2);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

@media (max-width:1560px){
  .kb-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .kb-dash .hero .kpi:nth-child(3n+1){border-left:0}
  .kb-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .kb-search{flex:1 1 100%}
  .kb-hint{display:none}
}
@media (max-width:980px){
  .kb-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .kb-dash .hero .kpi:nth-child(2n+1){border-left:0}
  .kb-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
  .kb-shelf{grid-template-columns:1fr}
  .kb-crumb-n{max-width:100%}
}

/* ============================================================
   55. 中控台（dash 骨架版）
   - 页签：概览 / 账号管理 / 登录设备
   - 概览：6 KPI + 本公司设备 + 公告 + 公司码 + 安全告警
   - 账号管理：4 KPI + 部门筛选 + 按公司分组的账号表
   - 登录设备：内嵌 dv-dash（去掉内层留白）
   ============================================================ */
.cd-dash .hd{margin-bottom:14px;align-items:flex-start;justify-content:space-between;gap:14px}
.cd-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.cd-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.cd-hd-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}

/* 页签 */
.cd-tabs{display:flex;align-items:center;gap:2px;margin:0 0 14px;border-bottom:1px solid var(--d-line)}
.cd-tab{position:relative;height:34px;padding:0 12px;display:inline-flex;align-items:center;gap:5px;
  border:0;background:transparent;cursor:pointer;font-family:var(--d-sans);font-size:11.5px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease)}
.cd-tab:hover{color:var(--d-ink-2)}
.cd-tab.on{color:var(--d-ink);font-weight:600}
.cd-tab.on::after{content:'';position:absolute;left:10px;right:10px;bottom:-1px;height:2px;
  border-radius:2px;background:var(--d-accent)}
.cd-tab i{font-style:normal;font-family:var(--d-mono);font-size:8.5px;line-height:14px;padding:0 5px;
  border-radius:2px;border:1px solid var(--d-line);color:var(--d-ink-3)}
.cd-tab.on i{color:var(--d-accent);border-color:var(--d-accent-line)}
.cd-tab i.is-warn{color:var(--d-danger);border-color:rgba(255,122,110,.35);background:rgba(255,122,110,.08)}
.cd-pane[hidden]{display:none !important}

/* KPI */
.cd-dash .hero{margin-bottom:14px}
html[data-skin] .dash.cd-dash .card.hero{margin-bottom:14px !important}
.cd-dash .hero .kpis{grid-template-columns:repeat(var(--cd-kpi-n,6),minmax(0,1fr))}
.cd-dash .hero .kpi{padding:16px 18px 15px}
.cd-dash .kpi-l{font-size:10.5px;letter-spacing:.02em;gap:5px;margin-bottom:10px}
.cd-dash .kpi-v{font-size:29px;letter-spacing:-.03em;gap:3px;font-variant-numeric:tabular-nums}
.cd-dash .kpi-v small{font-size:9.5px;letter-spacing:.02em;color:var(--d-ink-3);margin-left:1px;white-space:nowrap}
.cd-dash .kpi-s{font-size:9.5px;line-height:1.45;margin-top:8px;color:var(--d-ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-dash .kpi.is-warn .kpi-v{color:var(--d-danger)}
.cd-dash .kpi.is-warn .kpi-s{color:var(--d-danger);opacity:.85}

/* 两列 */
.cd-grid{display:grid;grid-template-columns:minmax(0,1fr) 372px;gap:14px;align-items:start}
.cd-main,.cd-side{display:flex;flex-direction:column;gap:14px;min-width:0}

/* 卡片（padding 下沉到子区块，遵守皮肤层 .card{padding:0!important}） */
.cd-card{margin:0;padding:0}
.cd-card > .ch{padding:13px 16px}
.cd-card-b{padding:14px 16px 16px}
.cd-card-f{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:11px 16px 13px;border-top:1px solid var(--d-line)}
.cd-card-f.is-tight{border-top:0;padding:12px 0 0;margin-top:2px}
.cd-f-tip{font-size:9.5px;color:var(--d-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 公司码容器里是旧卡片，统一一下下边距 */
.cd-companies{min-width:0}
.cd-companies > div{margin-bottom:12px !important}
.cd-companies > div:last-child{margin-bottom:0 !important}

/* 本公司设备 */
.cd-dev-list{padding:6px 0 2px}
.cd-dev{display:flex;align-items:center;gap:9px;padding:9px 16px;border-bottom:1px solid var(--d-line)}
.cd-dev:last-child{border-bottom:0}
.cd-dev-av{width:24px;height:24px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-style:normal;font-size:10.5px;font-weight:600;color:var(--d-accent)}
.cd-dev-t{display:flex;flex-direction:column;gap:1px;width:104px;flex-shrink:0;min-width:0}
.cd-dev-t b{font-size:11.5px;font-weight:600;color:var(--d-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-dev-t em{font-style:normal;font-size:9px;color:var(--d-ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-dev-name{flex:1 1 auto;min-width:0;font-size:10.5px;color:var(--d-ink-2);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-dev-ip{flex-shrink:0;width:104px;font-family:var(--d-mono);font-size:9.5px;color:var(--d-ink-3);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-dev-time{flex-shrink:0;width:64px;text-align:right;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}

.cd-st{display:inline-flex;align-items:center;height:16px;padding:0 6px;border-radius:2px;flex-shrink:0;
  font-style:normal;font-size:9px;line-height:14px;white-space:nowrap;
  border:1px solid var(--d-line);color:var(--d-ink-3)}
.cd-st.is-pending{color:var(--d-warn);border-color:rgba(224,150,60,.35);background:rgba(224,150,60,.08)}
.cd-st.is-active{color:var(--d-ok);border-color:rgba(72,199,142,.32);background:rgba(72,199,142,.07)}
.cd-st.is-blocked{color:var(--d-danger);border-color:rgba(255,122,110,.32);background:rgba(255,122,110,.07)}
.cd-st.is-super{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.cd-st.is-admin{color:var(--d-warn);border-color:rgba(224,150,60,.32)}

/* 公告 */
.cd-in,.cd-ta{width:100%;border:1px solid var(--d-line) !important;border-radius:5px !important;
  background:transparent !important;box-shadow:none !important;color:var(--d-ink) !important;
  font-family:var(--d-sans);font-size:12px}
.cd-in{height:34px;padding:0 11px}
.cd-ta{min-height:64px;padding:9px 11px;line-height:1.6;resize:vertical}
.cd-in:focus,.cd-ta:focus{border-color:var(--d-accent-line) !important}
.cd-in::placeholder,.cd-ta::placeholder{color:var(--d-ink-3)}
.cd-ta{margin-top:9px}
.cd-file-row{display:flex;align-items:center;gap:9px;margin-top:9px;flex-wrap:wrap}
.cd-file-name{font-size:9.5px;color:var(--d-ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-preview img{height:32px;border-radius:5px;border:1px solid var(--d-line)}
.cd-anns{padding:4px 0}
.cd-ann{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--d-line)}
.cd-ann:last-child{border-bottom:0}
.cd-ann-t{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:6px}
.cd-ann-t b{font-size:11.5px;font-weight:600;color:var(--d-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-ann-m{flex-shrink:0;display:flex;align-items:center;gap:8px;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.cd-tag{display:inline-flex;align-items:center;height:15px;padding:0 5px;border-radius:2px;flex-shrink:0;
  font-style:normal;font-family:var(--d-mono);font-size:8px;line-height:13px;white-space:nowrap;
  border:1px solid var(--d-line);color:var(--d-ink-3);max-width:150px;overflow:hidden;text-overflow:ellipsis}
.cd-tag.is-ok{color:var(--d-ok);border-color:rgba(30,186,152,.3);background:rgba(30,186,152,.07)}

/* 安全告警 */
.cd-mini{margin-left:auto;height:20px;padding:0 7px;border:1px solid var(--d-line);border-radius:3px;
  background:transparent;cursor:pointer;font-family:var(--d-sans);font-size:9px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease)}
.cd-mini:hover{color:var(--d-danger);border-color:rgba(255,122,110,.4)}
.cd-alerts{padding:4px 0}
.cd-alert{display:flex;align-items:center;gap:8px;padding:9px 16px;border-bottom:1px solid var(--d-line)}
.cd-alert:last-child{border-bottom:0}
.cd-alert.is-done{opacity:.5}
.cd-dot{width:5px;height:5px;flex-shrink:0;border-radius:50%;background:var(--d-danger)}
.cd-alert.is-done .cd-dot{background:var(--d-ink-3)}
.cd-alert-t{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}
.cd-alert-t b{font-size:10.5px;font-weight:600;color:var(--d-ink)}
.cd-alert-t em{font-style:normal;font-size:9px;color:var(--d-ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-alert-ip{flex-shrink:0;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}
.cd-alert-n{flex-shrink:0;font-family:var(--d-mono);font-size:9px;color:var(--d-danger)}
.cd-alert-time{flex-shrink:0;font-family:var(--d-mono);font-size:8.5px;color:var(--d-ink-3);opacity:.8}

/* 按钮 / 链接 / 空态 */
.cd-btn{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:9.5px;color:var(--d-ink-3);white-space:nowrap;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.cd-btn:hover{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.cd-btn.is-danger:hover{color:var(--d-danger);border-color:rgba(255,122,110,.42);background:rgba(255,122,110,.07)}
.cd-link{border:0;background:transparent;padding:0;cursor:pointer;
  font-family:var(--d-sans);font-size:10px;color:var(--d-accent)}
.cd-link:hover{text-decoration:underline}
.cd-none{padding:30px 16px;text-align:center;color:var(--d-ink-3)}
.cd-none.is-sm{padding:22px 16px}
.cd-none svg{margin-bottom:8px;opacity:.45}
.cd-none b{display:block;font-size:11.5px;font-weight:600;color:var(--d-ink-2)}
.cd-none p{margin:4px 0 0;font-size:10px;line-height:1.5;color:var(--d-ink-3)}

/* 账号管理工具行 */
.cd-utools{margin-bottom:10px}
.cd-chips{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.cd-chip{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 9px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.cd-chip:hover{color:var(--d-ink-2);border-color:var(--d-line-2)}
.cd-chip.on{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.cd-chip i{font-style:normal;font-family:var(--d-mono);font-size:8px;line-height:13px;padding:0 4px;
  border-radius:2px;border:1px solid var(--d-line);color:var(--d-ink-3)}
.cd-chip.on i{color:var(--d-accent);border-color:var(--d-accent-line)}
.cd-search{flex:0 0 200px;height:28px;padding:0 10px;border-radius:5px;
  border:1px solid var(--d-line) !important;background:transparent !important;box-shadow:none !important;
  transition:border-color .18s var(--d-ease)}
.cd-search:focus-within{border-color:var(--d-accent-line) !important}
.cd-search > svg{width:12px;height:12px;opacity:.7}
html[data-skin] .cd-dash .cd-search .input,
.cd-dash .cd-search .input{height:100% !important;padding:0 !important;
  border:0 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink)}
.cd-dash .cd-search .input::placeholder{color:var(--d-ink-3)}

/* 账号表 */
.cd-ulist{height:auto}
.cd-ulist .rc-scroll{max-height:none}
.cd-ugrid{min-width:var(--cd-umin,920px)}
.cd-dash .cd-ugrid .rc-c{font-size:11px;padding:8px 10px;min-height:42px;display:flex;align-items:center}
.cd-dash .cd-ugrid .rc-gh .rc-c{padding:9px 10px;min-height:0;display:block}
.cd-ur{cursor:default}
.cd-ugrp{display:flex;align-items:center;gap:6px;padding:8px 12px;
  background:var(--d-bg);border-top:1px solid var(--d-line);border-bottom:1px solid var(--d-line);
  font-size:10px;color:var(--d-ink-3)}
.cd-ugrp b{font-size:10.5px;font-weight:600;color:var(--d-ink-2)}
.cd-ugrp-i{display:inline-flex;color:var(--d-ink-3);opacity:.7}
.cd-u-name{display:flex;align-items:center;gap:8px;min-width:0}
.cd-u-av{width:22px;height:22px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-style:normal;font-size:10px;font-weight:600;color:var(--d-accent)}
.cd-u-t{display:flex;flex-direction:column;gap:1px;min-width:0}
.cd-u-t b{font-size:11.5px;font-weight:600;color:var(--d-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-u-t em{font-style:normal;font-size:9px;color:var(--d-ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-u-dep{font-size:10.5px;color:var(--d-ink-2)}
.cd-u-dim{font-size:10.5px;color:var(--d-ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-u-ops{display:flex;align-items:center;gap:4px;flex-wrap:nowrap}

/* 登录设备分页：去掉内层 dash 的留白 */
.cd-dash .cd-devs .dash.is-embedded,
.cd-dash .dv-dash.is-embedded{padding:0}
.cd-dash .dv-dash.is-embedded .hero{margin-bottom:12px}
.cd-dash .dv-hd-inline{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dv-co,
.cd-co{font-style:normal;font-size:9.5px;line-height:16px;padding:0 6px;border-radius:2px;
  border:1px solid var(--d-line);color:var(--d-ink-3);white-space:nowrap;
  max-width:92px;overflow:hidden;text-overflow:ellipsis;display:inline-block}
.dv-co-sel{width:148px;flex-shrink:0}
.cd-dash .dv-co-sel{height:26px;padding:0 6px;border:1px solid var(--d-line) !important;border-radius:4px !important;
  background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:10px;color:var(--d-ink-2) !important;cursor:pointer}

@media (max-width:1560px){
  .cd-dash .hero .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .cd-dash .hero .kpi:nth-child(3n+1){border-left:0}
  .cd-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
  .cd-grid{grid-template-columns:minmax(0,1fr) 340px}
}
@media (max-width:1180px){
  .cd-grid{grid-template-columns:1fr}
  .cd-search{flex:1 1 100%}
  .cd-hd-act{width:100%;justify-content:flex-start}
}
@media (max-width:980px){
  .cd-dash .hero .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cd-dash .hero .kpi:nth-child(2n+1){border-left:0}
  .cd-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
  .cd-dev-ip{display:none}
  .cd-ann-m{display:none}
}

/* ============================================================
   56. 审计日志（dash 骨架版）
   - 页头 + 6 KPI + 动作 chips / 模块下拉 / 搜索 + 明细
   - 点行看完整快照，超管可直接回退
   ============================================================ */
.lg-dash .hd{margin-bottom:14px;align-items:flex-start;justify-content:space-between;gap:14px}
.lg-dash .hd > div:first-child{flex:1 1 auto;min-width:0}
.lg-pill{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:3px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-family:var(--d-mono);font-size:8.5px;letter-spacing:.04em;color:var(--d-accent);white-space:nowrap}
.lg-hd-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}

/* KPI */
.lg-dash .hero{margin-bottom:12px}
.lg-dash .hero .kpis{grid-template-columns:repeat(6,1fr)}
.lg-dash .hero .kpi{padding:15px 17px 14px}
.lg-dash .kpi-l{font-size:10.5px;letter-spacing:.02em;gap:5px;margin-bottom:10px}
.lg-dash .kpi-v{font-size:30px;letter-spacing:-.03em;gap:3px;font-variant-numeric:tabular-nums}
.lg-dash .kpi-v small{font-size:9.5px;color:var(--d-ink-3);margin-left:1px;white-space:nowrap}
.lg-dash .kpi-s{font-size:9.5px;line-height:1.45;margin-top:8px;color:var(--d-ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lg-dash .kpi.is-warn .kpi-v{color:var(--d-danger)}
.lg-dash .kpi.is-warn .kpi-s{color:var(--d-danger);opacity:.85}

/* 回退提示条 */
.lg-notice{display:flex;align-items:center;gap:7px;margin:0 0 10px;padding:9px 12px;border-radius:5px;
  border:1px solid rgba(224,150,60,.28);background:rgba(224,150,60,.07);
  font-size:11px;color:var(--d-warn)}
.lg-notice b{font-family:var(--d-mono);font-size:12px;margin:0 1px}
.lg-notice svg{flex-shrink:0}

/* 筛选 */
.lg-tools{margin-bottom:10px}
.lg-chips{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.lg-chip{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 9px;
  border:1px solid var(--d-line);border-radius:4px;background:transparent;cursor:pointer;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.lg-chip:hover{color:var(--d-ink-2);border-color:var(--d-line-2)}
.lg-chip.on{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.lg-chip i{font-style:normal;font-family:var(--d-mono);font-size:8px;line-height:13px;padding:0 4px;
  border-radius:2px;border:1px solid var(--d-line);color:var(--d-ink-3)}
.lg-chip.on i{color:var(--d-accent);border-color:var(--d-accent-line)}

html[data-skin] .lg-dash .lg-sel,
.lg-dash .lg-sel{flex:0 0 156px;height:28px;padding:0 8px;
  border:1px solid var(--d-line) !important;border-radius:4px !important;
  background:transparent !important;box-shadow:none !important;cursor:pointer;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink-2) !important}
.lg-dash .lg-sel:focus{border-color:var(--d-accent-line) !important}

.lg-search{flex:0 0 236px;height:28px;padding:0 10px;border-radius:5px;
  border:1px solid var(--d-line) !important;background:transparent !important;box-shadow:none !important;
  transition:border-color .18s var(--d-ease)}
.lg-search:focus-within{border-color:var(--d-accent-line) !important}
.lg-search > svg{width:12px;height:12px;opacity:.7}
html[data-skin] .lg-dash .lg-search .input,
.lg-dash .lg-search .input{height:100% !important;padding:0 !important;
  border:0 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;
  font-family:var(--d-sans);font-size:10.5px;color:var(--d-ink)}
.lg-dash .lg-search .input::placeholder{color:var(--d-ink-3)}

/* 明细 */
.lg-list{height:clamp(420px,calc(100vh - 376px),780px)}
.lg-list .rc-scroll{max-height:none}
.lg-grid{min-width:var(--lg-min,880px)}
.lg-dash .rc-c{font-size:11px;padding:8px 10px;min-height:44px;display:flex;align-items:center}
.lg-dash .rc-gh .rc-c{padding:9px 10px;min-height:0;display:block}
.lg-dash .is-c{justify-content:center;text-align:center}
.lg-gr{cursor:pointer}

.lg-time{flex-direction:column;align-items:flex-start;justify-content:center;gap:1px}
.lg-time b{font-family:var(--d-mono);font-size:10.5px;font-weight:500;color:var(--d-ink-2);letter-spacing:.01em}
.lg-time em{font-style:normal;font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3)}

.lg-user{display:flex;align-items:center;gap:7px;min-width:0}
.lg-av{width:20px;height:20px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;
  border:1px solid var(--d-accent-line);background:var(--d-accent-dim);
  font-style:normal;font-size:9.5px;font-weight:600;color:var(--d-accent)}
.lg-user b{font-size:11px;font-weight:500;color:var(--d-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.lg-act{display:inline-flex;align-items:center;justify-content:center;height:17px;padding:0 6px;border-radius:2px;
  font-style:normal;font-size:9px;line-height:15px;white-space:nowrap;
  border:1px solid var(--d-line);color:var(--d-ink-3)}
.lg-act.is-add{color:var(--d-ok);border-color:rgba(30,186,152,.32);background:rgba(30,186,152,.07)}
.lg-act.is-edit{color:var(--d-warn);border-color:rgba(224,150,60,.32);background:rgba(224,150,60,.07)}
.lg-act.is-del{color:var(--d-danger);border-color:rgba(255,122,110,.32);background:rgba(255,122,110,.07)}
.lg-act.is-back{color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.lg-act.is-mute{color:var(--d-ink-3)}

.lg-mod{display:inline-flex;align-items:center;max-width:100%;height:17px;padding:0 6px;border-radius:2px;
  border:1px solid var(--d-line);background:transparent;
  font-style:normal;font-size:9.5px;color:var(--d-ink-2);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.lg-target{display:block;color:var(--d-ink);font-size:11.5px;line-height:1.45}
.lg-detail{display:block;color:var(--d-ink-3);font-size:10.5px;line-height:1.45}
.lg-ops{display:flex;align-items:center;justify-content:center;gap:4px;flex-wrap:nowrap}
.lg-btn{height:22px;padding:0 7px;border:1px solid var(--d-line);border-radius:3px;background:transparent;
  cursor:pointer;font-family:var(--d-sans);font-size:9.5px;color:var(--d-ink-3);white-space:nowrap;
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.lg-btn:hover{color:var(--d-ink);border-color:var(--d-line-2)}
.lg-btn.is-warn{color:var(--d-ink-3)}
.lg-btn.is-warn:hover{color:var(--d-danger);border-color:rgba(255,122,110,.5);background:rgba(255,122,110,.08)}

/* 分页 */
.lg-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 14px;
  border-top:1px solid var(--d-line);font-size:9px;color:var(--d-ink-3)}
.lg-foot-tip{font-size:9px;color:var(--d-ink-3);opacity:.85;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.lg-pager{margin-left:auto;display:flex;align-items:center;gap:6px}
.lg-pg-info{font-family:var(--d-mono);font-size:9px;color:var(--d-ink-3);margin-right:2px;white-space:nowrap}
.lg-pg{height:22px;padding:0 8px;border:1px solid var(--d-line);border-radius:3px;background:transparent;
  cursor:pointer;font-family:var(--d-sans);font-size:9.5px;color:var(--d-ink-3);
  transition:color .16s var(--d-ease),border-color .16s var(--d-ease),background .16s var(--d-ease)}
.lg-pg:hover:not([disabled]){color:var(--d-accent);border-color:var(--d-accent-line);background:var(--d-accent-dim)}
.lg-pg[disabled]{opacity:.4;cursor:not-allowed}

/* 详情弹窗（挂 body 上，不套 .lg-dash） */
.lg-modal .lg-dt-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.lg-dt-time{margin-left:auto;font-family:var(--d-mono);font-size:10px;color:var(--d-ink-3)}
.lg-dt-kv{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;border-top:1px solid var(--d-line)}
.lg-dt-kv.is-snap{grid-template-columns:1fr;border-top:1px solid var(--d-line)}
.lg-dt-i{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-width:0;
  padding:7px 0;border-bottom:1px solid var(--d-line)}
.lg-dt-i span{flex:0 0 auto;font-size:10.5px;color:var(--d-ink-3)}
.lg-dt-i b{min-width:0;font-family:var(--d-mono);font-size:10.5px;font-weight:500;color:var(--d-ink);
  text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lg-dt-sec{margin-top:16px}
.lg-dt-sec h4{display:flex;align-items:center;gap:6px;margin:0 0 8px;
  font-size:11px;font-weight:600;color:var(--d-ink-2)}
.lg-dt-sec h4 em{font-style:normal;font-weight:400;font-family:var(--d-mono);font-size:8.5px;color:var(--d-ink-3)}
.lg-dt-detail{margin:0;padding:9px 11px;border-radius:5px;
  border:1px solid var(--d-line);background:var(--d-accent-dim);
  font-size:12px;line-height:1.7;color:var(--d-ink-2);word-break:break-all}
.lg-dt-pre{margin:0;padding:10px 12px;border:1px solid var(--d-line);border-radius:5px;
  background:var(--d-bg);font-family:var(--d-mono);font-size:10px;line-height:1.6;
  color:var(--d-ink-2);white-space:pre-wrap;word-break:break-all;max-height:260px;overflow:auto}
.lg-dt-none{margin:0;font-size:10.5px;line-height:1.7;color:var(--d-ink-3)}
.lg-help p{margin:0 0 12px;font-size:12px;line-height:1.8;color:var(--d-ink-2)}
.lg-help p:last-child{margin-bottom:0}
.lg-help b{display:block;margin-bottom:2px;font-size:11.5px;color:var(--d-ink)}

@media (max-width:1560px){
  .lg-dash .hero .kpis{grid-template-columns:repeat(3,1fr)}
  .lg-dash .hero .kpi:nth-child(3n+1){border-left:0}
  .lg-dash .hero .kpi:nth-child(n+4){border-top:1px solid var(--d-line)}
}
@media (max-width:1180px){
  .lg-hd-act{width:100%;justify-content:flex-start}
  .lg-search{flex:1 1 100%}
  .lg-sel{flex:0 0 144px}
}
@media (max-width:980px){
  .lg-dash .hero .kpis{grid-template-columns:repeat(2,1fr)}
  .lg-dash .hero .kpi:nth-child(2n+1){border-left:0}
  .lg-dash .hero .kpi:nth-child(n+3){border-top:1px solid var(--d-line)}
  .lg-foot-tip{display:none}
  .lg-dt-kv{grid-template-columns:1fr}
}

/* ============================================================
   57. 长列表滚动性能（面试反馈 / 邀约登记 / 审计日志等 300+ 行）
   - 视口外的行跳过布局与绘制，滚动只画可见部分
   - 关闭大列表卡片的鼠标光斑：整卡大小的 radial-gradient 每次
     pointermove 都要重绘，行数越多越卡
   ============================================================ */
.rc-list .rc-gr{content-visibility:auto;contain-intrinsic-size:auto 58px}
.dash .card.rc-list::before{display:none}
/* 分批渲染的「加载更多」哨兵 */
.rc-more{display:flex;align-items:center;justify-content:center;gap:10px;
  padding:14px 0 16px;font-size:9.5px;color:var(--d-ink-3)}
.rc-more .rc-btn{height:26px}

/* ============================================================
   58. 待办行「处理」后的滑走动画
   - 行本身右移淡出 + 高度收拢（JS 写内联高度与 transition）
   - 下面的事件顺势上移，不再「点完直接消失」
   ============================================================ */
.todo-list .tr.is-leaving{pointer-events:none;will-change:height,opacity,transform}
.todo-list .tr.is-leaving .tr-act{opacity:0 !important}
.todo-list .tr.is-leaving:hover{background:transparent}
@media (prefers-reduced-motion:reduce){
  .todo-list .tr.is-leaving{transition:none !important}
}

/* ============================================================
   59. 静默刷新：进场动画只播一次
   - html.settled 由 App.navigate 在页面稳定 1.1 秒后打上
   - 之后任何重绘（30s/60s 自动刷新、手动刷新、页签切换后的重绘）
     都直接以终态出现：卡片不再淡入、表格行不再逐行落下、数字不再从 0 滚
   ============================================================ */
html.settled #content .card,
html.settled #content .panel,
html.settled #content .bhs-sec,
html.settled #content .hh-board,
html.settled #content .fu-card,
html.settled #content .ac-course,
html.settled #content .dash tbody tr{animation:none !important}
/* .fu-card 基态是 opacity:0，靠动画补到 1；关掉动画必须把终态写死 */
html.settled #content .fu-card{opacity:1 !important;transform:none !important}
