
:root{
  --nav-offset:clamp(176px,11.5vw,208px);
  --bg:#f2f3f5;--surface:#FFFFFF;
  --side:#FFFFFF;--side-2:#f7f8fa;
  --accent:#1677FF;--accent-hover:#245bdb;--accent-active:#1a4bcc;--accent-soft:#eaf1ff;--accent-soft2:#f4f8ff;
  --text:#1f2329;--text-2:#5a6169;--text-3:#8f959e;--text-4:#bbbfc4;
  --border:#e5e6eb;--border-2:#eff0f2;--border-strong:#d4d7dd;
  --green:#2ea121;--green-bg:#e8faeb;
  --red:#f54a45;--red-bg:#fef1f0;
  --amber:#ff8800;--amber-bg:#fff4e6;
  --blue:#1677FF;--blue-bg:#eaf1ff;
  --purple:#7f3bf5;--purple-bg:#f3ecff;
  --shadow-sm:0 1px 2px rgba(31,35,41,.04),0 1px 3px rgba(31,35,41,.05);
  --shadow:0 1px 3px rgba(31,35,41,.04),0 4px 12px rgba(31,35,41,.05);
  --shadow-md:0 6px 20px rgba(31,35,41,.08);
  --shadow-lg:0 12px 36px rgba(31,35,41,.13);
  --radius:10px;--radius-sm:8px;--radius-lg:14px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;line-height:1.6;font-size:13px}
.review-highlight{background:#FFF7D6!important;box-shadow:inset 0 0 0 2px #F5B942,0 4px 14px rgba(245,185,66,.16)!important;border-radius:9px!important}
.review-change-badge{display:inline-flex;align-items:center;white-space:nowrap;font-size:10px;font-weight:700;line-height:20px;padding:0 7px;border-radius:999px;background:#F59E0B;color:#fff;letter-spacing:.2px}
button{font-family:inherit;cursor:pointer}
a{color:inherit;text-decoration:none}
.layout{display:flex;min-height:100vh}

/* ── Sidebar ── */
.side{width:220px;background:var(--side);color:var(--text-2);flex-shrink:0;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow:auto;border-right:1px solid var(--border)}
.brand{display:flex;align-items:center;gap:10px;padding:0 16px;height:56px;border-bottom:1px solid var(--border-2)}
.brand .mark{width:30px;height:30px;border-radius:0;background:transparent;display:grid;place-items:center;color:#fff;font-weight:700;font-size:14px;flex-shrink:0;box-shadow:none;overflow:visible}
.brand .mark::before{content:"";width:30px;height:30px;background:url("../assets/time-management.png?v=icon-size-30-20260826a") center/contain no-repeat;display:block}
.brand .bname{font-weight:600;font-size:15px;color:var(--text);line-height:1.2;letter-spacing:.2px}
.brand small{display:block;font-size:10px;font-weight:500;color:var(--text-3);letter-spacing:.3px;margin-top:1px}
.menu{padding:12px 10px 22px;display:flex;flex-direction:column;gap:4px;flex:1}
.mlbl{font-size:10.5px;color:var(--text-3);font-weight:600;padding:20px 8px 7px;letter-spacing:.6px;line-height:1.4}
.mlbl:first-child{padding-top:8px}
.mlbl+.mitem{margin-top:1px}
.mitem{display:flex;align-items:center;gap:10px;min-height:38px;padding:9px 10px;font-weight:400;color:var(--text-2);transition:background .15s,color .15s;background:transparent;border:none;border-radius:8px;width:100%;text-align:left;font-size:13px;position:relative}
.mitem:hover{background:var(--side-2);color:var(--text)}
.mitem.active{background:var(--accent-soft);color:var(--accent);font-weight:600}
.mitem.active::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:16px;border-radius:0 3px 3px 0;background:var(--accent)}
.mitem svg{flex-shrink:0;width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.mbadge{margin-left:auto;font-size:10px;font-weight:700;padding:0 6px;border-radius:999px;min-width:17px;line-height:17px;text-align:center;background:var(--red);color:#fff}
.mbadge.amber{background:var(--amber)}.mbadge.green{background:var(--green)}
.side-foot{padding:10px;border-top:1px solid var(--border-2)}
.user-row{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;cursor:pointer;transition:.15s}
.user-row:hover{background:var(--side-2)}
.ua{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#1677FF,#7f3bf5);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0;box-shadow:0 2px 6px rgba(22,119,255,.28)}
.un{font-size:12.5px;font-weight:600;color:var(--text)}.ur{font-size:10.5px;color:var(--text-3)}

/* ── Main ── */
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{height:56px;background:rgba(255,255,255,.82);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 32px;gap:12px;position:sticky;top:0;z-index:50}
.crumb{font-size:13.5px;color:var(--text-3)}
.crumb b{color:var(--text);font-weight:600}
.role-tag{font-size:11px;background:var(--accent-soft);color:var(--accent);padding:2px 8px;border-radius:5px}
.spacer{flex:1}
.global-guide{position:fixed;top:72px;right:16px;display:flex;align-items:center;flex-shrink:0;z-index:55}
.global-guide-btn{width:34px;height:34px;min-width:34px;border:0;border-radius:8px;background:#F2F3F5;color:#5F6872;display:inline-flex;align-items:center;justify-content:center;transition:background .15s,color .15s}
.global-guide-btn:hover,.global-guide-btn.active{background:#E9EBEF;color:#1F2329}
.global-guide-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.global-guide-btn svg path{fill:none;stroke:currentColor}.global-guide-btn svg circle{fill:none}
.global-guide-menu{position:absolute;right:0;top:calc(100% + 8px);width:252px;max-height:min(420px,calc(100vh - 80px));overflow:auto;padding:8px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transform:translateY(-4px);transition:.16s;z-index:260}
.global-guide.show .global-guide-menu{opacity:1;visibility:visible;transform:translateY(0)}
.global-guide-title{padding:6px 8px 8px;font-size:12px;font-weight:600;color:var(--text-3);line-height:18px}
.global-guide-item{width:100%;height:34px;border:0;border-radius:6px;background:transparent;color:var(--text-2);display:flex;align-items:center;gap:8px;padding:0 8px;text-align:left;font-size:13px;font-weight:500}
.global-guide-item:hover{background:#F7F8FA;color:var(--text)}
.global-guide-item span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.global-guide-item svg{width:14px;height:14px;fill:currentColor;flex-shrink:0;opacity:.62}
.global-guide-item svg path{fill:currentColor;stroke:none}
.global-guide-sep{height:1px;background:var(--line);margin:6px 0}
.global-guide-reset{width:100%;height:34px;border:0;border-radius:6px;background:transparent;color:var(--accent);display:flex;align-items:center;padding:0 8px;text-align:left;font-size:13px;font-weight:500;font-family:inherit;cursor:pointer}
.global-guide-reset:hover{background:#F7F8FA;color:var(--accent-hover)}
.global-guide-empty{padding:12px 10px;font-size:12px;color:var(--text-3);line-height:20px}
#task-tree-tbl tbody tr{cursor:pointer}
#task-tree-tbl tbody tr:hover td{background:var(--accent-soft)!important}
.f2-filterbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 12px}
.btn.outline{background:var(--surface);color:var(--accent);border-color:var(--accent)}
.btn.outline:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
#sum-proj-body tr:hover td{background:var(--accent-soft)}
.sbar-x{margin-left:10px;background:none;border:none;color:var(--text-3);cursor:pointer;font-size:13px;line-height:1;padding:2px 5px;border-radius:5px;flex-shrink:0}
.sbar-x:hover{background:rgba(0,0,0,.06);color:var(--text)}
/* ─── Role Switcher ─── */
.rswitch{position:relative}
.rswitch-btn{display:flex;align-items:center;gap:8px;height:34px;padding:0 10px 0 6px;border:1px solid var(--border-strong);border-radius:8px;background:#fff;cursor:pointer;transition:.15s;font-family:inherit}
.rswitch-btn:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}
.rswitch-btn.open{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.rs-demo{font-size:10px;font-weight:700;color:#fff;background:linear-gradient(135deg,#7f3bf5,#1677FF);padding:2px 6px;border-radius:4px;letter-spacing:.5px}
.rswitch-ava{width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:600;flex-shrink:0}
.rswitch-btn .rs-lbl{font-size:13px;font-weight:600;color:var(--text)}
.rswitch-btn .caret{width:14px;height:14px;stroke:#8a8f99;transition:.2s}
.rswitch-btn.open .caret{transform:rotate(180deg)}
.rswitch-dd{position:absolute;top:calc(100% + 8px);right:0;width:310px;max-height:calc(100vh - 92px);overflow:auto;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);padding:8px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:.18s;z-index:200}
.rswitch-dd.show{opacity:1;visibility:visible;transform:translateY(0)}
.topbar-user{position:relative;cursor:pointer;transition:border-color .15s,background .15s}
.topbar-user:hover,.topbar-user.show{border-color:#C8D7F8!important;background:#F8FAFF!important}
.account-menu{position:absolute;right:0;top:calc(100% + 8px);width:128px;padding:6px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transform:translateY(-4px);transition:.16s;z-index:260}
.topbar-user.show .account-menu{opacity:1;visibility:visible;transform:translateY(0)}
.account-menu-exit{width:100%;height:34px;border:0;border-radius:6px;background:transparent;color:var(--text-2);font-family:inherit;font-size:13px;font-weight:500;line-height:34px;text-align:left;padding:0 10px;cursor:pointer}
.account-menu-exit:hover{background:#F7F8FA;color:var(--red)}
.rs-hint{font-size:11px;color:var(--sub);padding:6px 10px 8px;display:flex;align-items:center;gap:6px}
.rs-hint svg{width:13px;height:13px;stroke:var(--purple)}
.rs-opt{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;cursor:pointer;transition:.13s}
.rs-opt:hover{background:var(--side-2)}
.rs-opt.active{background:var(--accent-soft)}
.rs-ava{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:600;flex-shrink:0}
.rs-meta{flex:1;min-width:0}
.rs-nm{font-size:13px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px}
.rs-ds{font-size:11px;color:var(--sub);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rs-cnt{font-size:10.5px;color:var(--accent);background:var(--accent-soft);padding:1px 6px;border-radius:4px;font-weight:600}
.rs-ck{width:16px;height:16px;stroke:var(--accent);stroke-width:3;opacity:0;flex-shrink:0}
.rs-opt.active .rs-ck{opacity:1}
.role-card{display:none;border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:12px 14px;margin-bottom:12px}
.role-card.show{display:block}.role-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:10px}.role-card-item{padding:9px 10px;border-radius:8px;background:var(--side-2);min-width:0}.role-card-item span{display:block;font-size:10.5px;color:var(--text-3);margin-bottom:4px}.role-card-item b{font-size:12px;line-height:1.45}.scope-locked{background:#F8FAFC!important;color:var(--text-3)!important}.scope-locked input{background:#F1F5F9!important;color:#94A3B8!important}.scope-allowed{background:#F0FDF4!important;box-shadow:inset 0 0 0 1px #86EFAC}.scope-allowed input{border-color:#4ADE80!important;background:#fff!important}.mini-timeline{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.mini-timeline span{padding:4px 8px;border-radius:99px;background:var(--side-2);font-size:11px;color:var(--text-3)}.mini-timeline span.done{background:#ECFDF3;color:#15803D}.mini-timeline span.cur{background:var(--accent-soft);color:var(--accent);font-weight:700}
@media(max-width:1000px){.role-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.rbadge.viewer{background:var(--purple-bg);color:var(--purple)}
/* ─── 月度业务流程图 ─── */
.flow-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 22px 18px;margin-bottom:14px}
.flow-head{display:flex;align-items:center;gap:9px;margin-bottom:18px}
.flow-head h3{font-size:14px;font-weight:700;color:var(--text)}
.flow-head .flow-ico{width:24px;height:24px;border-radius:7px;background:var(--accent-soft);display:flex;align-items:center;justify-content:center}
.flow-head .flow-ico svg{width:14px;height:14px;fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.flow-legend{margin-left:auto;display:flex;gap:16px;font-size:11px;color:var(--text-3)}
.flow-legend span{display:inline-flex;align-items:center;gap:5px}
.flow-legend i{width:8px;height:8px;border-radius:50%}
.flow{display:flex;align-items:flex-start}
.fstep{flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;position:relative;min-width:0}
.fstep .fnode{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:#f0f1f2;color:#a8adb5;position:relative;z-index:2;transition:.2s}
.fstep .fnode svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fstep.done .fnode{background:var(--green-bg);color:var(--green)}
.fstep.cur .fnode{background:linear-gradient(135deg,#1677FF,#5a8bff);color:#fff;box-shadow:0 0 0 4px var(--accent-soft),0 6px 15px rgba(22,119,255,.32);animation:fpulse 2s ease-in-out infinite}
@keyframes fpulse{0%,100%{box-shadow:0 0 0 4px var(--accent-soft),0 6px 15px rgba(22,119,255,.32)}50%{box-shadow:0 0 0 6px var(--accent-soft),0 6px 15px rgba(22,119,255,.32)}}
.fstep::before,.fstep::after{content:"";position:absolute;top:19px;height:2px;background:var(--border-strong);z-index:1}
.fstep::before{left:0;right:50%;margin-right:22px}
.fstep::after{left:50%;right:0;margin-left:22px}
.fstep:first-child::before{display:none}
.fstep:last-child::after{display:none}
.fstep.done::before,.fstep.done::after,.fstep.cur::before{background:var(--green)}
.ftitle{font-size:12.5px;font-weight:600;color:var(--text);margin-top:10px;line-height:1.3}
.fstep.cur .ftitle{color:var(--accent)}
.fsub{font-size:10.5px;color:var(--text-3);margin-top:3px;line-height:1.35;padding:0 6px}
.fbadge{display:inline-block;margin-top:7px;font-size:10px;font-weight:600;padding:1px 8px;border-radius:4px}
.fstep.done .fbadge{background:var(--green-bg);color:var(--green)}
.fstep.cur .fbadge{background:var(--accent-soft);color:var(--accent)}
.fstep.todo .fbadge{background:#f0f1f2;color:#a8adb5}
.cycle-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:14px;overflow:hidden}
.cycle-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border-2)}
.cycle-title{font-size:14px;font-weight:700}.cycle-meta{font-size:11.5px;color:var(--text-3)}
.cycle-live{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:700}
.cycle-live::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px rgba(22,119,255,.12)}
.cycle-flow{padding:19px 14px 15px}
.cycle-foot{display:flex;align-items:center;gap:10px;padding:11px 16px;background:#F8FAFF;border-top:1px solid #E5ECFF;color:var(--text-2);font-size:12px}
.cycle-foot strong{color:var(--accent)}.cycle-foot .cycle-warning{color:#B45309;font-weight:600}
.cycle-card.is-history .cycle-live{background:#F1F3F5;color:var(--text-2)}
.cycle-card.is-history .cycle-foot{background:#F7F8FA;border-color:var(--border);color:var(--text-3)}
@media(max-width:920px){.cycle-head{align-items:flex-start;flex-wrap:wrap}.cycle-flow{overflow-x:auto}.cycle-flow .flow{min-width:760px}.cycle-foot{align-items:flex-start;flex-wrap:wrap}}
/* 周期切换分段控件 */
.pseg{display:inline-flex;background:var(--border-2);border-radius:8px;padding:2px;gap:2px}
.pseg button{border:none;background:transparent;font-family:inherit;font-size:12.5px;font-weight:600;color:var(--text-2);padding:5px 14px;border-radius:6px;cursor:pointer;transition:.15s}
.pseg button:hover{color:var(--text)}
.pseg button.active{background:var(--surface);color:var(--accent);box-shadow:0 1px 3px rgba(15,23,42,.1)}
/* 周期切换 */
/* ── Month Picker ── */
.mpicker{position:relative;display:inline-block}
.mpicker-btn{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--text);font-weight:600;font-size:13px;cursor:pointer;transition:.15s;font-family:inherit}
.mpicker-btn:hover{border-color:var(--accent);color:var(--accent)}
.mpicker-btn.open{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.mpicker-btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;flex-shrink:0}
.mpicker-btn .caret{width:10px;height:10px;stroke:var(--text-3);transition:transform .15s}
.mpicker-btn.open .caret{transform:rotate(180deg)}
.mpicker-dd{display:none;position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 28px rgba(15,23,42,.14);z-index:300;width:272px;padding:14px;animation:fadeUp .15s ease}
.mpicker-dd.show{display:block}
.mp-year-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.mp-year{font-family:'Rubik';font-size:15px;font-weight:700;color:var(--text)}
.mp-yarrow{width:26px;height:26px;border-radius:7px;border:1px solid var(--border);background:var(--surface);color:var(--text-2);display:grid;place-items:center;cursor:pointer;transition:.15s}
.mp-yarrow:hover{border-color:var(--accent);color:var(--accent)}
.mp-yarrow svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
.mp-months{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.mp-m{padding:7px 4px;border-radius:7px;font-size:12.5px;font-weight:600;text-align:center;cursor:pointer;border:1px solid transparent;color:var(--text-2);transition:.15s}
.mp-m:hover{background:#f0f1f2;color:var(--text)}
.mp-m.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.mp-m.future{opacity:.35;cursor:not-allowed;pointer-events:none}
/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 14px;border-radius:8px;font-weight:500;font-size:13px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);transition:.15s;white-space:nowrap}
.btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft2)}
.btn:active{transform:translateY(.5px)}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 2px 6px rgba(22,119,255,.24)}
.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff;box-shadow:0 4px 12px rgba(22,119,255,.3)}
.btn.primary:active{background:var(--accent-active)}
.btn.ghost{border-color:transparent;background:var(--border-2);color:var(--text-2)}
.btn.ghost:hover{background:#e6e8eb;border-color:transparent;color:var(--text)}
.btn.danger{color:var(--red);border-color:var(--border-strong);background:var(--surface)}
.btn.danger:hover{border-color:var(--red);background:var(--red-bg);color:var(--red)}
.btn.amber{color:var(--amber);border-color:var(--border-strong);background:var(--surface)}
.btn.amber:hover{border-color:var(--amber);background:var(--amber-bg);color:var(--amber)}
.btn.success{background:var(--green);color:#fff;border-color:var(--green);box-shadow:0 2px 6px rgba(46,161,33,.24)}
.btn.success:hover{filter:brightness(1.06);color:#fff}
.btn:disabled,.btn:disabled:hover,.btn:disabled:active{opacity:.45;cursor:not-allowed;filter:grayscale(.2);transform:none;box-shadow:none;background:var(--border-2);border-color:var(--border);color:var(--text-3)}
.btn.sm{height:28px;padding:0 12px;font-size:12px;border-radius:7px}
.btn.xs{height:24px;padding:0 10px;font-size:11.5px;border-radius:6px}

.content{padding:26px 32px 40px;width:100%;margin:0}
.page{display:none}.page.show{display:block;animation:pageIn .28s ease}
.page:not(.show){display:none!important}
body:not([data-current-page="fill2"]) #fill2-notice,
body:not([data-current-page="fill2"]) #fill2-regular,
body:not([data-current-page="fill2"]) #fill2-outsource,
body:not([data-current-page="fill2"]) #fill2-dispatch{display:none!important}
@keyframes pageIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.page-head{margin-bottom:20px}
.page-head h2{font-size:19px;font-weight:700;color:var(--text);letter-spacing:.2px}
.page-head p{color:var(--text-2);font-size:12.5px;margin-top:4px}

/* ── Card ── */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}
.card+.card{margin-top:14px}
.card-head{display:flex;align-items:center;gap:10px;padding:15px 18px;border-bottom:1px solid var(--border-2);flex-wrap:wrap}
.card-head h3{font-size:14.5px;font-weight:700;letter-spacing:.1px}
.card-head h4{font-size:13.5px;font-weight:700}
.card-head .tag-sm{font-size:11px;font-weight:600;color:var(--text-3);background:var(--border-2);padding:2px 9px;border-radius:6px}
.card-body{padding:18px}

/* ── KPI ── */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.kpi{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:17px 18px;transition:transform .18s,box-shadow .18s;overflow:hidden}
.kpi::after{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),#7f3bf5);opacity:0;transition:opacity .18s}
.kpi:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.kpi:hover::after{opacity:1}
.kpi .k-lbl{font-size:12px;color:var(--text-2);font-weight:600;display:flex;align-items:center;gap:8px}
.kpi .k-ico{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex-shrink:0;box-shadow:0 2px 8px rgba(31,35,41,.14)}
.kpi .k-ico svg{width:14px;height:14px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.kpi .k-num{font-family:"Rubik";font-size:28px;font-weight:700;margin-top:10px;color:var(--text);letter-spacing:-.5px;line-height:1.1}
.kpi .k-sub{font-size:11.5px;color:var(--text-3);margin-top:4px;display:flex;align-items:center;gap:4px}
.up-num{color:var(--green);font-weight:700}.dn-num{color:var(--red);font-weight:700}
.kpi.clickable{cursor:pointer}
.kpi.clickable:hover{border-color:var(--accent)}
.kpi.clickable:hover::after{opacity:1}
.kpi .k-arr{margin-left:2px;color:var(--accent);font-weight:700}
.sync-card.clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s}
.sync-card.clickable:hover{border-color:var(--accent);box-shadow:0 4px 16px rgba(22,119,255,.1)}
.sync-card .sc-arr{font-size:12px;color:var(--accent);font-weight:700}
/* ── Roster stat strip ── */
.roster-strip{display:flex;gap:0;background:#fff;border:1px solid var(--border);border-radius:12px;padding:4px 0;margin-bottom:16px;overflow-x:auto}
.roster-strip .rs-cell{flex:1;min-width:88px;padding:12px 16px;border-right:1px solid var(--border-2);display:flex;flex-direction:column;gap:3px}
.roster-strip .rs-cell{cursor:pointer;transition:background .16s,border-color .16s}
.roster-strip .rs-cell:hover{background:#F7F9FF}
.roster-strip .rs-cell:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.roster-strip .rs-cell:last-child{border-right:none}
.roster-strip .rs-cell.active{border-bottom:2px solid var(--accent)}
.roster-strip .rs-num{font-family:'Rubik';font-size:22px;font-weight:700;line-height:1;color:var(--text)}
.roster-strip .rs-cell.active .rs-num{color:var(--accent)}
.roster-strip .rs-lbl{font-size:11.5px;color:var(--text-3)}
.rs-ava{width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}
.roster-sync{display:block;background:#fff;border:1px solid var(--border);border-radius:12px;padding:14px 18px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.roster-sync-row{display:flex;align-items:center;gap:14px}
.roster-sync.roster-notice-only{padding:0}.roster-sync.roster-notice-only .roster-diff-alert{margin:0;border:0;border-radius:12px;}
.roster-sync .rsync-icon{width:38px;height:38px;border-radius:10px;background:var(--blue-bg);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.roster-sync .rsync-icon svg{width:20px;height:20px;fill:none;stroke:var(--accent);stroke-width:2}
.roster-sync .rsync-title{font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px}
.roster-sync .rsync-meta{font-size:12px;color:var(--text-3);margin-top:3px}
.roster-diff-alert{align-items:center;margin:12px 0 0;padding:8px 14px;min-height:44px;border-color:#B3CCFF;background:#EAF1FF;color:var(--text);box-shadow:none}.roster-diff-alert .sdot{background:var(--accent)}.roster-diff-alert b{font-size:12px;color:#245BDB}.roster-diff-alert .sbar-sub{margin-top:3px;font-size:11px;color:var(--text-2)}.roster-diff-review{padding:0;border:0;background:transparent;color:var(--accent);font-size:12px;font-weight:600;line-height:22px;cursor:pointer;white-space:nowrap}.roster-diff-review:hover{text-decoration:underline}.roster-diff-review:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.roster-diff-close{width:24px;height:24px;margin-left:8px;padding:0;border:0;background:transparent;color:#8D98A8;font-size:22px;font-weight:400;line-height:20px;cursor:pointer;border-radius:6px}.roster-diff-close:hover{background:#DCE8FF;color:#5B6B83}.roster-diff-close:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.roster-diff-modal{width:min(720px,calc(100vw - 32px));max-width:calc(100vw - 32px)}.roster-diff-rule{padding:10px 12px;border:1px solid #C9D8F8;border-radius:8px;background:#F3F7FF;color:var(--text-2);font-size:11.5px;line-height:1.6}.roster-diff-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.roster-diff-item{display:grid;grid-template-columns:150px 1fr auto;align-items:center;gap:12px;padding:10px 12px;border:1px dashed var(--border-strong);border-radius:9px;background:#fff}.roster-diff-item.is-handled{background:#F8FAFC;border-style:solid}.roster-diff-person{display:flex;flex-direction:column;gap:6px;font-size:12px}.roster-diff-person .pill{width:max-content}.roster-diff-detail{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:11.5px}.roster-diff-detail span{color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-diff-actions{display:flex;align-items:center;gap:6px;white-space:nowrap}.roster-diff-actions .btn:disabled{opacity:.55;cursor:default}.roster-diff-result{min-width:52px;color:var(--green);font-size:11px}.roster-diff-progress{font-size:11.5px;color:var(--text-3);white-space:nowrap}@media(max-width:720px){.roster-diff-item{grid-template-columns:1fr}.roster-diff-actions{justify-content:flex-end}.roster-diff-result{margin-left:auto}}

/* ── Status Banner ── */
.sbar{display:flex;align-items:center;gap:10px;padding:11px 16px;border-radius:var(--radius);margin-bottom:16px;font-size:12.5px;font-weight:500;border:1px solid;box-shadow:var(--shadow-sm)}
.sbar.green{background:var(--green-bg);border-color:#b7e5a8;color:#1a8a13}
.sbar.amber{background:var(--amber-bg);border-color:#ffe0b2;color:#c56a00}
.sbar.red{background:var(--red-bg);border-color:#fbc4c4;color:#d83931}
.sbar.blue{background:var(--blue-bg);border-color:#b3ccff;color:#245bdb}
.sdot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.sbar.green .sdot{background:var(--green);animation:pulse 2s infinite}
.sbar.amber .sdot{background:var(--amber)}
.sbar.red .sdot{background:var(--red)}
.sbar.blue .sdot{background:var(--blue)}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}

/* ── Pill badges ── */
.pill{font-size:11px;font-weight:600;padding:2px 9px;border-radius:6px;display:inline-block;white-space:nowrap;line-height:1.5}
.pill.green{background:var(--green-bg);color:#1a8a13}
.pill.red{background:var(--red-bg);color:var(--red)}
.pill.amber{background:var(--amber-bg);color:#c56a00}
.pill.blue{background:var(--blue-bg);color:var(--accent)}
.pill.gray{background:var(--border-2);color:var(--text-2)}
.pill.purple{background:var(--purple-bg);color:var(--purple)}
.pill.cyan{background:#E6FFFB;color:#008F7A}
/* 工时汇总分析：用工类型切换列显隐（见 sumTypeSwitch） */
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;vertical-align:middle}
.dot.on{background:var(--green)}.dot.off{background:#CBD5E1}

/* ── Table ── */
.tbl-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.tbl-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px;color:var(--text)}
th,td{text-align:left;border-bottom:1px solid var(--border-2);white-space:nowrap;vertical-align:middle;letter-spacing:0}
th{height:40px;padding:0 16px;font-size:13px;line-height:20px;color:#8f959e;font-weight:600;text-transform:none;letter-spacing:0;background:#f7f8fa}
td{height:56px;padding:0 16px;font-size:13px;line-height:20px;color:var(--text);font-weight:400}
tbody tr{transition:background .12s}
tbody tr:hover{background:#fafbfc}
tbody tr:last-child td{border-bottom:none}
/* sticky cols for fill table */
th.sc0{position:sticky;left:0;z-index:12;background:var(--side-2)}
th.sc1{position:sticky;left:36px;z-index:12;background:var(--side-2)}
th.sc2{position:sticky;left:90px;z-index:12;background:var(--side-2)}
td.sc0{position:sticky;left:0;z-index:5;background:#fff;box-shadow:2px 0 6px rgba(15,23,42,.05)}
td.sc1{position:sticky;left:36px;z-index:5;background:#fff;box-shadow:2px 0 6px rgba(15,23,42,.05)}
td.sc2{position:sticky;left:90px;z-index:5;background:#fff;box-shadow:2px 0 6px rgba(15,23,42,.05)}
tbody tr:hover td.sc0,tbody tr:hover td.sc1,tbody tr:hover td.sc2{background:var(--accent-soft2)}
tbody tr.row-sel td.sc0,tbody tr.row-sel td.sc1,tbody tr.row-sel td.sc2{background:var(--accent-soft)}
tbody tr.row-sel{background:var(--accent-soft)}
/* 工时填报最右侧状态列冻结；项目与合计列继续参与横向滚动。 */
th.col-badge{position:sticky;right:0;z-index:14;background:var(--side-2);box-shadow:-6px 0 10px rgba(15,23,42,.07)}
td.col-badge{position:sticky;right:0;z-index:7;background:#fff;box-shadow:-6px 0 10px rgba(15,23,42,.07)}
tbody tr:hover td.col-badge{background:var(--accent-soft2)}
tbody tr.row-sel td.col-badge{background:var(--accent-soft)}

/* ── Percent input ── */
.pi-w{display:flex;align-items:center;gap:2px;justify-content:center}
.pi{width:56px;border:1px solid var(--border);border-radius:7px;padding:4px 8px;font-size:12.5px;font-family:"Rubik",monospace;font-weight:500;color:var(--text);background:#fff;outline:none;text-align:right;transition:.15s}
.pi:hover{border-color:var(--border-strong)}
.pi:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.pi.err{border-color:var(--red);background:#FFF5F5}
.pi.err:focus{box-shadow:0 0 0 3px var(--red-bg)}
.pi.lk{background:var(--side-2);color:var(--text-3);cursor:not-allowed}
.pi-s{font-size:11.5px;color:var(--text-3)}

/* ── Toolbar / Filters ── */
.toolbar{display:flex;align-items:center;gap:9px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;flex-wrap:wrap;box-shadow:var(--shadow)}
.tb-div{width:1px;height:20px;background:var(--border);flex-shrink:0}
.srch{display:flex;align-items:center;gap:6px;background:var(--side-2);border:1px solid var(--border);border-radius:9px;padding:6px 11px;min-width:170px;transition:.15s}
.srch:focus-within{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px var(--accent-soft)}
.srch svg{width:13px;height:13px;stroke:var(--text-3);fill:none;stroke-width:2;stroke-linecap:round;flex-shrink:0}
.srch input{border:none;background:transparent;outline:none;font-size:12.5px;color:var(--text);font-family:inherit;width:100%}
.fsel{background:var(--side-2);border:1px solid var(--border);border-radius:9px;padding:6px 11px;font-size:12.5px;color:var(--text);font-family:inherit;outline:none;cursor:pointer;transition:.15s}
.fsel:hover{border-color:var(--border-strong)}
.fsel:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--surface)}
/* 多选筛选下拉 */
.ms{position:relative;display:inline-block}
.ms-btn{display:inline-flex;align-items:center;gap:6px;background:var(--side-2);border:1px solid var(--border);border-radius:9px;padding:6px 10px;font-size:12.5px;color:var(--text);font-family:inherit;cursor:pointer;transition:.15s;white-space:nowrap}
.ms-btn:hover{border-color:var(--border-strong)}
.ms.open .ms-btn{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--surface)}
.ms-btn .ms-cnt{background:var(--accent);color:#fff;border-radius:999px;font-size:10px;font-weight:700;padding:1px 6px;font-family:'Rubik'}
.ms-btn svg{width:10px;height:10px;stroke:var(--text-3);fill:none;stroke-width:2}
.ms-panel{display:none;position:absolute;left:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.12);z-index:200;min-width:150px;padding:6px}
.ms.open .ms-panel{display:block;animation:fadeUp 150ms ease}
.ms-panel label{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;font-size:12.5px;color:var(--text);cursor:pointer;transition:.12s}
.ms-panel label:hover{background:var(--side-2)}
.ms-panel input{accent-color:var(--accent);width:14px;height:14px}
.ms-clear{width:100%;text-align:center;font-size:11.5px;color:var(--text-3);background:none;border:none;border-top:1px solid var(--border);margin-top:4px;padding:6px 0 2px;cursor:pointer}
.ms-clear:hover{color:var(--accent)}

/* ── Tab strip ── */
.tab-strip{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.ts{padding:10px 16px;font-size:13px;font-weight:500;color:var(--text-2);background:transparent;border:none;border-bottom:2px solid transparent;transition:.15s;margin-bottom:-1px;border-radius:7px 7px 0 0}
.ts:hover{color:var(--text);background:var(--accent-soft2)}
.ts.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}

/* ── Batch bar ── */
.bbar{display:none;align-items:center;gap:10px;padding:11px 16px;background:linear-gradient(90deg,#1677FF,#5b7fff);border-radius:var(--radius);margin-bottom:10px;color:#fff;font-size:12.5px;box-shadow:0 4px 14px rgba(22,119,255,.28)}
.bbar.show{display:flex;animation:fadeUp .18s ease}
.selection-action-bar{padding:12px 14px;background:#F2F6FF;border:1px solid #AFC8FF;border-radius:12px;color:var(--text);box-shadow:0 4px 14px rgba(22,119,255,.10);gap:14px;flex-wrap:wrap}
.selection-action-bar .selection-summary{display:flex;align-items:center;gap:10px;min-width:280px;flex:1}
.selection-action-bar .selection-check{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;flex-shrink:0}
.selection-action-bar .selection-check svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.selection-action-bar .selection-copy{display:flex;align-items:baseline;gap:10px;min-width:0;flex-wrap:wrap}
.selection-action-bar .selection-copy b{font-size:14px;color:#245BDB;white-space:nowrap}
.selection-action-bar .selection-copy span{font-size:12px;color:var(--text-2)}
.selection-action-bar .selection-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.selection-action-bar .selection-actions .btn{min-height:34px}
.selection-action-bar .selection-cancel{color:var(--text-2);background:transparent;border-color:transparent}
.selection-action-bar .selection-cancel:hover{color:var(--accent);background:#fff;border-color:#C9D9FF}
.selection-action-bar.batch-active{border-color:#78A2FF;background:#EAF1FF;box-shadow:0 6px 18px rgba(22,119,255,.16)}
.batch-sync-badge{display:none;align-items:center;gap:5px;padding:4px 8px;border-radius:999px;background:#DCE8FF;color:#245BDB;font-size:11px;font-weight:700;white-space:nowrap}
.selection-action-bar.batch-active .batch-sync-badge{display:inline-flex}
#fill2-tbl tr.row-sel .f2in:not(:disabled){border-color:#8EB0FF!important;background:#F7FAFF!important;box-shadow:0 0 0 2px rgba(22,119,255,.08)}
.f2in.batch-sync-pulse{animation:batchSyncPulse .48s ease-out}
@keyframes batchSyncPulse{0%{background:#DCE8FF;box-shadow:0 0 0 3px rgba(22,119,255,.24)}100%{background:#F7FAFF;box-shadow:0 0 0 2px rgba(22,119,255,.08)}}
@media(max-width:980px){.selection-action-bar .selection-actions{width:100%}.selection-action-bar .selection-actions .btn{flex:1;justify-content:center}}

/* ── Col dropdown ── */
.col-panel{position:relative;display:inline-block}
.col-dd{display:none;position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.12);z-index:200;min-width:170px;padding:8px}
.col-dd.show{display:block;animation:fadeUp 150ms ease}
/* ── 全局列表 · 自定义字段 ── */
.global-list-tools{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-height:56px;padding:8px 16px;border-bottom:1px solid var(--border-2);background:#fff}
.global-field-btn,
.btn.global-field-btn,
.btn.ghost.sm.global-field-btn{
  width:40px!important;
  min-width:40px!important;
  height:40px!important;
  padding:0!important;
  border:0!important;
  border-radius:8px!important;
  background:#F2F3F5!important;
  color:#4E5969!important;
  box-shadow:none!important;
  font-size:0!important;
  line-height:0!important;
  white-space:nowrap;
}
.global-field-btn:hover,
.btn.global-field-btn:hover,
.btn.ghost.sm.global-field-btn:hover{
  background:#E5E6EB!important;
  color:#1F2329!important;
}
.global-field-btn:active,
.btn.global-field-btn:active,
.btn.ghost.sm.global-field-btn:active{
  transform:none!important;
  background:#DADDE2!important;
}
.global-field-btn svg,
.btn.global-field-btn svg{
  width:18px!important;
  height:18px!important;
  stroke:currentColor!important;
  fill:none!important;
  stroke-width:2!important;
  stroke-linecap:round!important;
  stroke-linejoin:round!important;
}
.global-field-btn svg circle,
.btn.global-field-btn svg circle{
  fill:currentColor!important;
  stroke:none!important;
}
.column-settings-mask.drawer-mask{
  z-index:900!important;
  background:rgba(31,35,41,.45)!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
.column-settings-drawer.drawer{
  width:584px!important;
  max-width:min(92vw,584px)!important;
  border-radius:0!important;
  box-shadow:-8px 0 24px rgba(31,35,41,.18)!important;
}
.column-settings-head.drawer-head{
  height:72px!important;
  align-items:center!important;
  padding:0 28px!important;
  border-bottom:1px solid #E5E6EB!important;
}
.column-settings-head h3{
  font-size:18px!important;
  font-weight:700!important;
  color:#1F2329!important;
}
.column-settings-close.x{
  width:28px!important;
  height:28px!important;
  border:0!important;
  background:transparent!important;
  color:#1677FF!important;
  font-size:24px!important;
  line-height:1!important;
}
.column-settings-close.x:hover{background:#F2F3F5!important}
.column-settings-body{
  flex:1!important;
  padding:24px 28px 88px!important;
  overflow:auto!important;
  background:#fff!important;
}
.column-settings-intro{
  margin-bottom:20px;
  color:#646A73;
  font-size:14px;
  line-height:22px;
}
.column-settings-all,
.column-settings-row.global-col-item{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  min-height:44px!important;
  padding:0!important;
  border-radius:0!important;
  color:#1F2329!important;
  font-size:14px!important;
  font-weight:400!important;
  cursor:pointer;
}
.column-settings-all{font-weight:500!important}
.column-settings-row.global-col-item:hover{background:transparent!important;color:#1F2329!important}
.column-settings-all input,
.column-settings-row.global-col-item input{
  width:16px!important;
  height:16px!important;
  margin:0 16px!important;
  accent-color:#1677FF!important;
}
.column-settings-row.global-col-item.locked{
  color:#AEB4BE!important;
  cursor:not-allowed!important;
}
.column-settings-row.global-col-item.locked input{opacity:.55!important}
.column-settings-list.single{padding-top:8px!important}
.column-settings-foot.drawer-foot{
  position:absolute!important;
  right:0!important;
  bottom:0!important;
  left:0!important;
  height:72px!important;
  align-items:center!important;
  padding:16px 28px!important;
  border-top:1px solid #E5E6EB!important;
  background:#fff!important;
  box-sizing:border-box!important;
}
.column-settings-foot .btn{
  min-width:88px!important;
  height:40px!important;
  border-radius:8px!important;
  font-size:14px!important;
  font-weight:500!important;
}
.global-col-popover{display:none;position:fixed;z-index:900;width:250px;max-height:360px;overflow:auto;padding:10px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.16)}
.global-col-popover.show{display:block;animation:fadeUp .16s ease}
.global-col-popover-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 4px 8px;border-bottom:1px solid var(--border-2);font-size:12px;font-weight:700;color:var(--text-2)}
.global-col-popover-head button{border:0;background:transparent;color:var(--accent);font:600 11.5px inherit;cursor:pointer}
.global-col-list{padding-top:6px}.global-col-item{display:flex;align-items:center;gap:8px;padding:7px 6px;border-radius:7px;color:var(--text-2);font-size:12.5px;cursor:pointer}.global-col-item:hover{background:var(--accent-soft2);color:var(--text)}
.global-col-item input{width:14px;height:14px;accent-color:var(--accent)}.global-col-item.locked{color:var(--text-3);cursor:not-allowed}.global-col-item.locked input{opacity:.55}
/* ── Col batch popover ── */
.th-wrap{display:inline-flex;align-items:center;gap:4px;position:relative}
.th-bulk{width:25px;height:25px;border-radius:7px;border:1px solid #BFD1FF;background:#EEF4FF;color:var(--accent);display:grid;place-items:center;cursor:pointer;transition:.15s;flex-shrink:0;padding:0;box-shadow:0 1px 2px rgba(15,23,42,.06)}
.th-bulk:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateY(-1px)}
.th-bulk.danger{border-color:#FECACA;background:#FFF1F2;color:#DC2626}
.th-bulk.danger:hover{background:#DC2626;border-color:#DC2626;color:#fff}
.th-bulk svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.fill-grid-selecting td[data-proj]{cursor:cell}.fill-grid-cell-selected{outline:2px solid var(--accent)!important;outline-offset:-2px;background:#EAF1FF!important}.fill-grid-cell-selected input{background:#fff!important}
.col-bpop{display:none;position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.14);z-index:400;width:200px;padding:12px;animation:fadeUp .15s ease}
.col-bpop.show{display:block}
.col-bpop::before{content:'';position:absolute;top:-5px;left:50%;transform:translateX(-50%);width:9px;height:9px;background:var(--surface);border-left:1px solid var(--border);border-top:1px solid var(--border);transform:translateX(-50%) rotate(45deg)}
.col-bpop-title{font-size:11px;font-weight:700;color:var(--text-3);margin-bottom:8px;text-transform:uppercase;letter-spacing:.04em}
.col-bpop-row{display:flex;align-items:center;gap:7px;margin-bottom:8px}
.col-bpop-row input{flex:1;padding:6px 9px;border:1px solid var(--border);border-radius:7px;font-size:13px;font-family:'Rubik';font-weight:600;outline:none;transition:.15s}
.col-bpop-row input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.col-bpop-row .pi-s{font-size:12px;color:var(--text-3);flex-shrink:0}
.col-bpop-hint{font-size:11px;color:var(--text-3);margin-bottom:8px}
.col-bpop-actions{display:flex;gap:6px}
.col-bpop-actions button{flex:1;padding:5px;border-radius:7px;font-size:12px;font-weight:600;border:1px solid var(--border);cursor:pointer;font-family:inherit;transition:.15s}
.col-bpop-actions .do{background:var(--accent);color:#fff;border-color:var(--accent)}
.col-bpop-actions .do:hover{filter:brightness(1.08)}
.col-bpop-actions .cl{background:#f0f1f2;color:var(--text-2)}
.col-bpop-actions .cl:hover{background:#E2E8F0}
@keyframes fadeUp{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
/* 参与部门 · 穿透弹层 */
.dept-pop{position:fixed;display:none;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.14);z-index:400;min-width:190px;max-width:260px;padding:10px 12px;font-size:12.5px;}
.dept-pop.show{display:block;animation:fadeUp 150ms ease}
.dept-pop .dp-title{font-weight:700;color:var(--text-2);margin-bottom:6px;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dept-pop .dp-row{display:flex;justify-content:space-between;gap:10px;padding:3px 0;color:var(--text-2);}
.dept-pop .dp-row b{color:var(--text);font-family:'Rubik';font-weight:700;}
.dept-cell{cursor:pointer;border-bottom:1px dashed rgba(22,119,255,.4);}
.num-drill{cursor:pointer;color:var(--accent);border-bottom:1px dashed rgba(22,119,255,.4);}
.num-drill:hover{background:var(--accent-soft);}
.dd-drill{cursor:pointer;display:inline-block;border-bottom:1px dashed rgba(22,119,255,.4);}
.dd-drill:hover{opacity:.75;}
/* 项目分摊明细 · 本部门 / 跨部门摊入 */
.pd-tabbar{display:flex;align-items:center;gap:4px;padding:0 18px;border-bottom:1px solid var(--border-2);background:#fff}
.pd-tab{display:inline-flex;align-items:center;gap:7px;min-height:48px;padding:0 14px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--text-2);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:color .16s ease,background .16s ease,border-color .16s ease}
.pd-tab:hover{color:var(--accent);background:var(--accent-soft2)}
.pd-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.pd-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:20px;padding:0 7px;border-radius:999px;background:var(--border-2);color:var(--text-3);font:700 11px Rubik,Arial,sans-serif}
.pd-tab.active .pd-tab-count{background:var(--accent-soft);color:var(--accent)}
.pd-scope{margin-left:auto;color:var(--text-3);font-size:11.5px;white-space:nowrap}
.pd-empty{padding:48px 20px;text-align:center;color:var(--text-3)}
.pd-empty b{display:block;margin-bottom:6px;color:var(--text-2);font-size:13px}
.pd-page-empty{min-height:calc(100vh - var(--topbar-h, 64px));background:#fff}
.pd-page-empty>.pd-page-head,.pd-page-empty>.tbl-wrap{display:none}
.pd-person-grid{width:100%;min-width:0!important;table-layout:fixed}.pd-person-grid .pd-dept-cell{overflow:hidden;color:var(--text-2);text-overflow:ellipsis;white-space:nowrap}.pd-person-grid th,.pd-person-grid td{padding-left:10px;padding-right:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pd-person-grid .pill{max-width:100%;overflow:hidden;text-overflow:ellipsis}.pd-person-grid .pd-ratio-btn{white-space:nowrap}
#pd-person-table{overflow-x:hidden!important}
@media(max-width:900px){.pd-tabbar{padding-inline:10px;overflow-x:auto}.pd-scope{display:none}.pd-tab{white-space:nowrap}}
/* 已选项目 · 同步标签行 */
.chip-row{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 14px;border-top:1px solid var(--border);margin-top:2px;padding-top:12px;}
.chip-item{display:inline-flex;align-items:center;gap:5px;background:var(--accent-soft);border:1px solid #cfe0ff;color:var(--accent);border-radius:14px;padding:3px 6px 3px 11px;font-size:12px;line-height:1.4;}
.chip-item .chip-x{cursor:pointer;width:15px;height:15px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--accent);opacity:.7;}
.chip-item .chip-x:hover{background:#cfe0ff;opacity:1;}
/* 按人分摊明细 chips */
.col-alloc{min-width:360px;vertical-align:middle;}
.alloc-wrap{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:3px 0;}
.alloc-chip{display:inline-flex;align-items:center;gap:3px;background:var(--accent-soft);border:1px solid #cfe0ff;border-radius:15px;padding:2px 4px 2px 10px;font-size:12px;line-height:1;}
.alloc-chip.pub{background:#FFF7E6;border-color:#ffe0a3;}
.alloc-chip.proj-hl{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft);}
.f2col-hl{background:#EAF1FF !important;box-shadow:inset 0 0 0 2px var(--accent);}
.alloc-chip .ac-name{color:var(--text);font-weight:600;white-space:nowrap;}
.alloc-chip .ac-in{width:42px;border:1px solid var(--border);background:#fff;border-radius:8px;text-align:center;font-family:'Rubik';font-weight:700;font-size:12px;padding:2px 3px;outline:none;transition:.15s;}
.alloc-chip .ac-in:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft);}
.alloc-chip .ac-in.err{color:var(--red);border-color:var(--red);}
.alloc-chip .ac-s{font-size:11px;color:var(--text-3);}
.alloc-chip .ac-x{border:none;background:transparent;color:var(--text-3);cursor:pointer;font-size:14px;line-height:1;width:17px;height:17px;border-radius:50%;display:grid;place-items:center;padding:0;transition:.15s;}
.alloc-chip .ac-x:hover{background:#ffe0e0;color:var(--red);}
.alloc-add{border:1px dashed var(--accent);color:var(--accent);background:#f5f9ff;border-radius:15px;padding:3px 11px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:.15s;white-space:nowrap;}
.alloc-add:hover{background:var(--accent-soft);}
.alloc-add.lk{border-color:var(--border);color:var(--text-3);background:#fafbfc;cursor:not-allowed;}
/* 项目选择器弹窗 */
.ap-search{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:9px;font-family:inherit;font-size:13px;margin-bottom:12px;outline:none;box-sizing:border-box;}
.ap-search:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
.ap-body{max-height:52vh;overflow-y:auto;padding-right:4px;}
.ap-group{margin-bottom:12px;}
.ap-glbl{font-size:11.5px;font-weight:700;color:var(--text-3);margin-bottom:7px;display:flex;align-items:center;gap:6px;position:sticky;top:0;background:var(--surface);padding:2px 0;z-index:2;}
.ap-gg{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:6px;}
.ap-c{display:flex;align-items:center;gap:7px;padding:6px 9px;border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:12.5px;transition:.12s;background:#fff;}
.ap-c:hover{border-color:var(--accent);background:#f7faff;}
.ap-c.sel{border-color:var(--accent);background:var(--accent-soft);}
.ap-c.dis{opacity:.42;cursor:not-allowed;background:#f6f7f9;}
.ap-c .ap-ck{width:15px;height:15px;border-radius:4px;border:1.6px solid var(--border);flex-shrink:0;display:grid;place-items:center;}
.ap-c.sel .ap-ck{background:var(--accent);border-color:var(--accent);}
.ap-c .ap-cn{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.col-row{display:flex;align-items:center;gap:8px;padding:6px 7px;font-size:12.5px;cursor:pointer;border-radius:6px;color:var(--text-2)}
.col-row:hover{background:#f0f1f2;color:var(--text)}
.col-row input{width:13px;height:13px;cursor:pointer;accent-color:var(--accent)}
.dd-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 9px;font-size:12.5px;font-weight:500;color:var(--text-2);border:none;background:transparent;border-radius:7px;cursor:pointer;font-family:inherit;text-align:left;transition:.12s}
.dd-item:hover{background:var(--accent-soft);color:var(--accent)}
.dd-item svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;flex-shrink:0}

/* ── Progress bar ── */
.pb{height:5px;background:#f0f1f2;border-radius:999px;overflow:hidden}
.pb-f{height:100%;border-radius:999px;transition:width .5s}
.pb-f.g{background:var(--green)}.pb-f.r{background:var(--red)}.pb-f.a{background:var(--amber)}.pb-f.p{background:var(--accent)}

/* ── Form ── */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px}
.field{display:flex;flex-direction:column;gap:5px}
.field.full{grid-column:1/-1}
.field label{font-size:12px;font-weight:600;color:var(--text-2)}
.field input,.field select,.field textarea{padding:8px 12px;border:1px solid var(--border);border-radius:8px;font-family:inherit;font-size:13px;color:var(--text);background:var(--surface);transition:.15s;width:100%}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.field .hint{font-size:11px;color:var(--text-3)}

/* ── Toggle ── */
.sw{position:relative;display:inline-block;width:40px;height:22px;flex-shrink:0}
.sw input{opacity:0;width:0;height:0}
.sl{position:absolute;inset:0;background:#CBD5E1;border-radius:999px;cursor:pointer;transition:.2s}
.sl::before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.sw input:checked~.sl{background:var(--green)}
.sw input:checked~.sl::before{transform:translateX(18px)}

/* ── 角色管理 ── */
.rfilter{display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap}
.rfilter .fitem{display:flex;align-items:center;gap:8px}
.rfilter .fitem>label{font-size:12.5px;color:var(--text-2);white-space:nowrap}
.rfilter .fitem input,.rfilter .fitem select{height:34px;border:1px solid var(--border);border-radius:8px;padding:0 11px;font-size:13px;color:var(--text);background:var(--surface);font-family:inherit;min-width:190px}
.rfilter .fitem input:focus,.rfilter .fitem select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.stdot{display:inline-flex;align-items:center;gap:6px;font-size:12.5px}
.stdot::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--green)}
.stdot.off::before{background:var(--text-3)}
.ract{color:var(--accent);cursor:pointer;font-size:12.5px;font-weight:600}
.ract:hover{text-decoration:underline}
.ract.sep{color:var(--border);cursor:default;font-weight:400}
.ract.sep:hover{text-decoration:none}
.role-member-link{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:6px;color:var(--accent);cursor:pointer;background:var(--accent-soft);border:0;font:inherit}
.role-member-link:hover{background:#DDE8FF;box-shadow:inset 0 0 0 1px rgba(22,119,255,.25)}
.ptree th,.ptree td{vertical-align:top}
.ptree .pmenu{font-weight:600;white-space:nowrap}
.pchk{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--text-2);margin:2px 14px 2px 0;cursor:pointer}
.pchk input{accent-color:var(--accent)}
.authseg{display:inline-flex;gap:18px;align-items:center;font-size:13px;color:var(--text-2)}
.authseg label{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
/* ── Modal ── */
.mask{position:fixed;inset:0;background:rgba(15,23,42,.42);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:none;align-items:center;justify-content:center;z-index:200;padding:20px}
.mask.show{display:flex;animation:fadeIn .18s ease}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal{background:var(--surface);border-radius:16px;width:560px;max-width:100%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.28);animation:slideUp .24s cubic-bezier(.4,0,.2,1)}
@keyframes slideUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.modal-head{display:flex;align-items:flex-start;padding:18px 22px;border-bottom:1px solid var(--border);flex-shrink:0}
.modal-head h3{font-size:15px;font-weight:700}
.modal-head .x{margin-left:auto;width:28px;height:28px;border-radius:7px;border:none;background:#f0f1f2;color:var(--text-2);display:grid;place-items:center;cursor:pointer;flex-shrink:0}
.modal-head .x:hover{background:#E2E8F0}
.modal-body{padding:20px 22px;overflow:auto;flex:1 1 auto;min-height:0}
.modal-foot{display:flex;justify-content:flex-end;gap:9px;padding:14px 22px;border-top:1px solid var(--border);flex-shrink:0}
.modal-sub{font-size:12px;color:var(--text-3);margin-top:2px}
.rule-sec{margin-bottom:16px}
.rule-sec:last-child{margin-bottom:0}
.rule-sec h4{font-size:13.5px;font-weight:700;color:var(--text);margin:0 0 6px}
.rule-sec ul{margin:0;padding-left:2px;list-style:none}
.rule-sec ul li{position:relative;padding-left:16px;margin-bottom:4px}
.rule-sec ul li::before{content:"";position:absolute;left:3px;top:9px;width:5px;height:5px;border-radius:50%;background:var(--accent)}
.rule-link{color:var(--accent);cursor:pointer;font-weight:600;text-decoration:none}
.rule-link:hover{text-decoration:underline}
.seg{display:inline-flex;background:var(--side-2);border:1px solid var(--border);border-radius:8px;padding:2px;gap:2px}
.seg-b{border:none;background:transparent;font-family:inherit;font-size:12px;color:var(--text-2);padding:5px 11px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.seg-b b{font-family:'Rubik';font-size:11px;color:var(--text-3);background:#fff;border-radius:20px;padding:0 6px;min-width:18px;text-align:center}
.seg-b.active{background:#fff;color:var(--accent);font-weight:600;box-shadow:0 1px 3px rgba(15,23,42,.08)}
.seg-b.active b{color:var(--accent);background:var(--accent-soft)}

/* ── Drawer (right slide-in) ── */
.drawer-mask{position:fixed;inset:0;background:rgba(15,23,42,.42);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:none;justify-content:flex-end;z-index:210}
.drawer-mask.show{display:flex;animation:fadeIn .18s ease}
.drawer{background:var(--surface);width:540px;max-width:94vw;height:100%;display:flex;flex-direction:column;box-shadow:-16px 0 48px rgba(0,0,0,.20);transform:translateX(100%);animation:drawerIn .28s cubic-bezier(.4,0,.2,1) forwards}
@keyframes drawerIn{to{transform:translateX(0)}}
.drawer-head{display:flex;align-items:flex-start;padding:20px 24px;border-bottom:1px solid var(--border);flex-shrink:0}
.drawer-head h3{font-size:16px;font-weight:700}
.drawer-head .x{margin-left:auto;width:28px;height:28px;border-radius:7px;border:none;background:#f0f1f2;color:var(--text-2);display:grid;place-items:center;cursor:pointer;flex-shrink:0}
.drawer-head .x:hover{background:#E2E8F0}
.drawer-body{padding:20px 24px;overflow:auto;flex:1}
.drawer-foot{display:flex;justify-content:flex-end;gap:9px;padding:14px 24px;border-top:1px solid var(--border);flex-shrink:0}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:15px 16px}
.fld{display:flex;flex-direction:column;gap:6px}
.fld.full{grid-column:1 / -1}
.fld label{font-size:12px;font-weight:600;color:var(--text-2)}
.fld label .req{color:var(--red);margin-left:2px}
.fld input,.fld select{height:36px;border:1px solid var(--border);border-radius:8px;padding:0 11px;font-size:13px;color:var(--text);background:var(--surface);font-family:inherit;transition:.15s}
/* ── 权限管理：部门-角色映射 ── */
#perm-tbl td{vertical-align:middle}
#perm-tbl .perm-dept{font-weight:600;color:var(--text)}
#perm-tbl .perm-parent{font-size:11px;color:var(--text-3);margin-top:2px}
.dpm-row-action{text-align:left!important;white-space:nowrap}
.dpm-row-edit{padding:0!important;color:var(--text-2)!important;background:transparent!important;border-color:transparent!important;box-shadow:none!important;font-size:13px!important;font-weight:400!important;line-height:22px!important}
.dpm-row-edit:hover{color:var(--text)!important;background:transparent!important;border-color:transparent!important}
.dpm-inline-config-control{width:100%;min-width:92px;height:32px;padding:0 8px;border:1px solid #C9D8F8;border-radius:6px;background:#F8FAFF;color:var(--text);font:inherit;box-sizing:border-box}
.dpm-inline-config-control:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.dpm-inline-editing td{background:#F8FAFF!important}
.dpm-inline-editing .dpm-row-edit{color:var(--accent)!important;background:transparent!important;border-color:transparent!important}
.dpm-inline-editing .dpm-row-edit:hover{color:var(--accent-hover)!important;background:transparent!important;border-color:transparent!important;text-decoration:underline}
.perm-chips{display:flex;flex-wrap:wrap;gap:6px}
.perm-chip{font-size:12px;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:3px 9px;line-height:1.6;white-space:nowrap}
.perm-chip.hrbp{color:var(--purple);background:var(--purple-bg)}
.perm-empty{font-size:12.5px;color:var(--text-3)}
.pmf{border:1px solid var(--border);border-radius:9px;background:var(--surface);overflow:hidden}
.pmf.locked{background:var(--border-2)}
.pmf-sel{display:flex;flex-wrap:wrap;gap:6px;padding:9px 10px;min-height:24px;border-bottom:1px solid var(--border)}
.pmf.locked .pmf-sel{border-bottom:none}
.pmf-sel .ph{font-size:12.5px;color:var(--text-3);align-self:center}
.pmf-tag{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:3px 6px 3px 9px}
.pmf-tag.hrbp{color:var(--purple);background:var(--purple-bg)}
.pmf-tag button{border:none;background:transparent;color:inherit;cursor:pointer;font-size:12px;line-height:1;padding:0;opacity:.55}
.pmf-tag button:hover{opacity:1}
.pmf-search{width:100%;height:36px;border:none;border-bottom:1px solid var(--border);padding:0 12px;font-size:13px;font-family:inherit;background:var(--surface);box-sizing:border-box}
.pmf-search:focus{outline:none;background:var(--accent-soft)}
.pmf-list{max-height:190px;overflow:auto}
.pmf-opt{display:flex;align-items:center;gap:9px;padding:8px 12px;font-size:13px;color:var(--text);cursor:pointer}
.pmf-opt:hover{background:var(--accent-soft)}
.pmf-opt input{accent-color:var(--accent);width:15px;height:15px;margin:0}
.pmf-opt.checked{color:var(--accent);font-weight:600}
.fld input:focus,.fld select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.fld .fhint{font-size:11px;color:var(--text-3)}
.fsec{font-size:11px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;margin:8px 0 0;grid-column:1/-1;display:flex;align-items:center;gap:6px}
.fsec::before{content:'';width:3px;height:12px;background:var(--accent);border-radius:2px}

/* ── Contact picker (通讯录) ── */
.ct-row{display:flex;align-items:center;gap:9px;padding:7px 11px;cursor:pointer;border-bottom:1px solid var(--border);font-size:12.5px}
.ct-row:last-child{border-bottom:none}
.ct-row:hover{background:var(--accent-soft)}
.ct-row.sel{background:var(--accent-soft)}
.ct-ava{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:11px;font-weight:700;flex-shrink:0}
.ct-cbx{width:15px;height:15px;border-radius:4px;border:1.5px solid var(--border);flex-shrink:0;display:grid;place-items:center;margin-left:auto}
.ct-cbx svg{width:9px;height:9px;stroke:#fff;fill:none;stroke-width:3;stroke-linecap:round;display:none}
.ct-row.sel .ct-cbx{background:var(--accent);border-color:var(--accent)}
.ct-row.sel .ct-cbx svg{display:block}
.ct-chip{display:inline-flex;align-items:center;gap:5px;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:3px 5px 3px 9px;font-size:12px;font-weight:600}
.ct-chip .cx{cursor:pointer;font-weight:700;opacity:.6;font-size:13px;line-height:1}
.ct-chip .cx:hover{opacity:1}

/* ── 固定高度卡 + 部门树 + 项目分摊分页 ── */
.fh-card{display:flex;flex-direction:column;min-height:0}
.fh-card .card-body{flex:1;overflow-y:auto;padding:12px 16px;min-height:0}
#page-dashboard.show{display:flex;flex-direction:column;min-height:calc(100vh - 122px)}
.dash-grid{display:grid;grid-template-columns:1.5fr 1fr;grid-template-rows:1fr;gap:14px;flex:1;min-height:340px;align-items:stretch}
.dash-grid>.fh-card{align-self:stretch;margin:0}
.dash-grid .card-head{height:53px;flex-wrap:nowrap}
.dt-row{display:flex;align-items:center;gap:10px;font-size:12.5px;height:31px;padding:0 8px;border-radius:6px}
.dt-row.has-ch{cursor:pointer}
.dt-row.has-ch:hover{background:var(--accent-soft)}
.dt-label{flex:0 0 196px;display:flex;align-items:center;gap:8px;min-width:0}
.dt-caret{width:12px;flex-shrink:0;color:var(--text-3);font-size:9px;display:inline-block;transition:transform .15s;transform:rotate(0deg)}
.dt-caret.open{transform:rotate(90deg)}
.dt-caret.leaf{visibility:hidden}
.dt-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text);min-width:0}
.dt-bar{flex:1;min-width:0;height:7px;background:#f0f1f2;border-radius:999px;overflow:hidden}
.dt-bar>div{height:100%;border-radius:999px}
.dt-pct{width:40px;text-align:right;font-weight:700;font-family:'Rubik';flex-shrink:0}
.dt-cnt{width:52px;text-align:right;font-size:11px;color:var(--text-3);font-family:'Rubik';flex-shrink:0}
.alloc-row{display:flex;align-items:center;gap:10px;font-size:12.5px;height:31px;padding:0 8px;border-radius:6px;cursor:pointer}
.alloc-row:hover{background:var(--accent-soft)}
.alloc-label{flex:0 0 196px;display:flex;align-items:center;gap:8px;min-width:0}
.alloc-rank{width:18px;text-align:center;font-family:'Rubik';font-weight:700;font-size:11px;color:var(--text-3);flex-shrink:0}
.alloc-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-2);min-width:0}
.alloc-bar{flex:1;min-width:0;height:7px;background:#f0f1f2;border-radius:999px;overflow:hidden}
.alloc-bar>div{height:100%;background:linear-gradient(90deg,#1677FF,#5a8bff);border-radius:999px}
.alloc-w{width:44px;text-align:right;font-weight:700;font-family:'Rubik';flex-shrink:0}
.alloc-arr{width:13px;height:13px;stroke:var(--text-3);fill:none;stroke-width:2.4;flex-shrink:0}
.alloc-row:hover .alloc-arr{stroke:var(--accent)}
.alloc-foot{display:flex;align-items:center;justify-content:center;gap:14px;padding:9px 16px;border-top:1px solid var(--border-2);font-size:12px;color:var(--text-2)}

/* ── Project chip grid ── */
.proj-group{margin-bottom:14px}
.proj-glbl{font-size:11px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:7px;display:flex;align-items:center;gap:5px}
.proj-gg{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.pc{display:flex;align-items:center;gap:7px;padding:7px 10px;border-radius:8px;border:1px solid var(--border);cursor:pointer;transition:.15s;font-size:12.5px}
.pc:hover{border-color:var(--accent);background:var(--accent-soft)}
.pc.sel{border-color:var(--accent);background:var(--accent-soft)}
.pc.readonly{cursor:default}.pc.readonly:hover{border-color:var(--border);background:var(--surface)}.pc.readonly.sel:hover{border-color:var(--accent);background:var(--accent-soft)}.pc.readonly .ck{display:none}
.pc .ck{width:15px;height:15px;border-radius:4px;border:1.5px solid var(--border);flex-shrink:0;display:grid;place-items:center;transition:.15s}
.pc.sel .ck{background:var(--accent);border-color:var(--accent)}
.pc .cn{flex:1;color:var(--text);font-weight:500}

/* ── Sync cards ── */
.sync-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.sync-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}
.sync-icon{width:40px;height:40px;border-radius:10px;background:var(--accent-soft);display:grid;place-items:center;flex-shrink:0}
.sync-icon svg{width:20px;height:20px;stroke:var(--accent);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sync-num{font-family:"Rubik";font-size:28px;font-weight:700;color:var(--text);margin-bottom:2px}
.sync-unit{font-size:13px;font-weight:400;color:var(--text-2)}
.sync-meta{font-size:11.5px;color:var(--text-3);margin-bottom:10px}

/* ── Verify list ── */
.vi-list{display:flex;flex-direction:column}
.vi-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);transition:.15s}
.vi-item:last-child{border-bottom:none}
.vi-item:hover{background:#FAFBFC}
.vi-ck{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex-shrink:0}
.vi-ck.ok{background:var(--green-bg)}.vi-ck.err{background:var(--red-bg)}
.vi-ck svg{width:12px;height:12px;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;fill:none}
.vi-ck.ok svg{stroke:var(--green)}.vi-ck.err svg{stroke:var(--red)}
.vi-body{flex:1}
.vi-name{font-size:13px;font-weight:600;color:var(--text)}
.vi-sub{font-size:11.5px;color:var(--text-3);margin-top:1px}
.vi-act{font-size:12.5px;font-weight:600;color:var(--accent);cursor:pointer}
.vi-act.done{color:var(--text-3)}

/* ── Task cards ── */
.tc{display:flex;align-items:center;gap:14px;padding:14px 16px;border-bottom:1px solid var(--border);transition:.15s}
.tc:hover{background:#FAFBFC}
.tc:last-child{border-bottom:none}
.tc-ico{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;flex-shrink:0}
.tc-ico svg{width:17px;height:17px;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tc-ico.act{background:var(--accent-soft)}.tc-ico.act svg{stroke:var(--accent)}
.tc-ico.done{background:var(--green-bg)}.tc-ico.done svg{stroke:var(--green)}
.tc-ico.past{background:#f0f1f2}.tc-ico.past svg{stroke:var(--text-3)}
.tc-info{flex:1}
.tc-name{font-size:13px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px}
.tc-meta{font-size:11px;color:var(--text-3);margin-top:2px}
.tc-prog{display:flex;align-items:center;gap:8px;min-width:200px}
.tc-prog .pl{font-size:10.5px;color:var(--text-3);width:22px;flex-shrink:0}
.tc-prog .pw{flex:1;height:5px;background:#f0f1f2;border-radius:999px;overflow:hidden}
.tc-prog .pf{height:100%;border-radius:999px}
.tc-prog .pf.act{background:var(--accent)}.tc-prog .pf.done{background:var(--green)}
.tc-prog .pn{font-size:12px;font-weight:700;font-family:"Rubik";width:32px;text-align:right;flex-shrink:0}
.tc-prog .pn.act{color:var(--accent)}.tc-prog .pn.done{color:var(--green)}

/* ── Dept todo ── */
.dt-item{display:flex;align-items:center;padding:9px 16px;border-bottom:1px solid var(--border);transition:.15s}
.dt-item:hover{background:#FAFBFC}
.dt-item:last-child{border-bottom:none}
.dt-name{font-size:13px;font-weight:600;flex:1}
.dt-sub{font-size:11.5px;color:var(--text-3)}

/* ── Role badge ── */
.rbadge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:5px;font-size:11px;font-weight:600}
.rbadge.admin{background:var(--accent-soft);color:var(--accent)}
.rbadge.hrbp{background:var(--green-bg);color:var(--green)}
.rbadge.reporter{background:var(--amber-bg);color:var(--amber)}
.rbadge.finance{background:var(--blue-bg);color:#0369A1}
.rbadge.external{background:#ECFDF5;color:#047857}
.rbadge.dispatch{background:#FFF7ED;color:#C2410C}
.rbadge.affairs{background:#F1F5F9;color:#64748B}
.matrix-permission{display:flex;align-items:flex-start;gap:10px;margin:0 0 16px;padding:11px 14px;border:1px solid #C7D7FE;border-radius:10px;background:linear-gradient(135deg,#F5F8FF,#FAFCFF);color:var(--text-2);font-size:12px;line-height:1.55}
.matrix-permission .mp-icon{width:28px;height:28px;flex:0 0 28px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent)}
.matrix-permission .mp-icon svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.matrix-permission .mp-title{font-size:12.5px;font-weight:700;color:var(--text);margin-bottom:2px}
.matrix-permission .mp-meta{color:var(--text-3)}
.matrix-permission .mp-mode{margin-left:auto;flex:0 0 auto;padding:2px 8px;border-radius:999px;background:#E8F0FF;color:var(--accent);font-weight:700;white-space:nowrap}
.matrix-permission.readonly{border-color:#D8DEE8;background:#FAFBFC}.matrix-permission.readonly .mp-icon{background:#F1F5F9;color:#64748B}.matrix-permission.readonly .mp-mode{background:#F1F5F9;color:#64748B}
.matrix-permission.limited{border-color:#FED7AA;background:#FFFBF5}.matrix-permission.limited .mp-icon{background:#FFF1E6;color:#C2410C}.matrix-permission.limited .mp-mode{background:#FFF1E6;color:#C2410C}
.matrix-locked{display:none!important}
.permission-readonly{opacity:.7;cursor:not-allowed!important}

/* ── Toast ── */
.toast{position:fixed;top:70px;bottom:auto;left:50%;max-width:min(680px,calc(100vw - 32px));transform:translateX(-50%) translateY(-18px);background:rgba(31,35,41,.96);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fff;padding:11px 22px;border:1px solid rgba(255,255,255,.16);border-radius:11px;font-weight:600;font-size:13px;text-align:center;opacity:0;pointer-events:none;transition:.25s cubic-bezier(.4,0,.2,1);z-index:1000;box-shadow:0 10px 30px rgba(0,0,0,.22)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.toast.ok{background:rgba(27,117,78,.96)}.toast.warn{background:rgba(180,83,9,.96)}.toast.error{background:rgba(190,39,35,.96)}
.empty{padding:30px;text-align:center;color:var(--text-3);font-size:13px}

::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#d4d7dd;border-radius:999px;border:2px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:#b5b9c0;background-clip:padding-box;border:2px solid transparent}

/* ── Org tree (填报左侧组织架构) ── */
.fill-layout{display:flex;gap:14px;align-items:flex-start}
.fill-main{flex:1;min-width:0}
.org-tree{width:250px;flex-shrink:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;position:sticky;top:72px}
.ot-head{display:flex;align-items:center;gap:8px;padding:13px 14px;border-bottom:1px solid var(--border-2);font-size:13.5px;font-weight:700;color:var(--text)}
.ot-head svg{width:15px;height:15px;stroke:var(--accent);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.ot-head .ot-count{margin-left:auto;font-size:11px;font-weight:600;color:var(--text-3);background:#f0f1f2;padding:1px 8px;border-radius:999px}
.ot-search{display:flex;align-items:center;gap:6px;margin:10px 12px 6px;background:#f0f1f2;border:1px solid var(--border);border-radius:8px;padding:6px 10px}
.ot-search svg{width:13px;height:13px;stroke:var(--text-3);fill:none;stroke-width:2;stroke-linecap:round;flex-shrink:0}
.ot-search input{border:none;background:transparent;outline:none;font-size:12.5px;color:var(--text);font-family:inherit;width:100%}
.ot-company{display:flex;align-items:center;gap:9px;padding:8px 14px 10px;margin:0 6px 4px;border-bottom:1px dashed var(--border)}
.ot-avatar{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#1677FF,#7f3bf5);display:grid;place-items:center;color:#fff;font-size:12px;font-weight:700;flex-shrink:0}
.ot-cname{font-size:13px;font-weight:700;color:var(--text)}
.ot-owner{font-size:10.5px;color:var(--text-3);margin-top:2px;display:flex;align-items:center;gap:5px}
.ot-body{padding:6px 6px 10px;max-height:560px;overflow:auto}
.ot-node.collapsed>.ot-kids{display:none}
.ot-row{display:flex;align-items:center;gap:6px;padding:7px 8px;border-radius:7px;cursor:pointer;transition:.12s}
.ot-row:hover{background:#f5f6f7}
.ot-row.active{background:var(--accent-soft)}
.ot-row.active .ot-name{color:var(--accent);font-weight:600}
.ot-row.active .ot-cnt{color:var(--accent)}
.ot-chev{width:14px;height:14px;stroke:var(--text-3);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;transition:transform .15s;border-radius:4px}
.ot-chev:hover{background:#e4e6eb;stroke:var(--accent)}
.ot-node:not(.collapsed)>.ot-row .ot-chev{transform:rotate(90deg)}
.ot-chev-sp{width:14px;flex-shrink:0}
.ot-ico{width:22px;height:22px;border-radius:6px;background:var(--accent-soft);display:grid;place-items:center;flex-shrink:0}
.ot-ico svg{width:13px;height:13px;stroke:var(--accent);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ot-kids .ot-ico{background:#eef2f7}
.ot-name{font-size:12.5px;color:var(--text);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ot-cnt{font-size:11px;color:var(--text-3);font-family:'Rubik';font-weight:600;flex-shrink:0}
@media(max-width:1080px){.fill-layout{flex-direction:column}.org-tree{width:100%;position:static}.ot-body{max-height:300px}}
/* 工时填报人员清单：单列表结构，不再使用组织树侧栏 */
#page-roster .fill-layout{display:block}
#page-roster .fill-main{display:flex;min-width:0;width:100%}
#page-roster .tbl-wrap{width:100%;display:flex;flex-direction:column}
#roster-sticky-sentinel{height:1px;margin-bottom:-1px;pointer-events:none}
/* 人员/项目长列表：筛选与操作区固定，表头在列表滚动时紧随其后 */
#page-roster #roster-filterbar,#page-deptprojects #dpm-filterbar{position:sticky;top:64px;z-index:46;background:var(--surface);box-shadow:0 5px 14px rgba(31,35,41,.08)}
#page-roster.roster-sticky-active #roster-filterbar{border-color:#c6d6ff;box-shadow:0 8px 20px rgba(31,35,41,.12)}
#page-deptprojects #dpm-actions{position:sticky;top:116px;z-index:45;background:var(--surface);box-shadow:0 5px 14px rgba(31,35,41,.06)}
#page-roster #roster-table-wrap .tbl-scroll,#page-deptprojects #dpm-tab-project .tbl-scroll{max-height:calc(100vh - 248px);overflow:auto;scrollbar-gutter:stable}
#page-roster #roster-table thead th,#page-deptprojects #dpm-project-table thead th{position:sticky;top:0;z-index:18;background:var(--side-2);box-shadow:inset 0 -1px 0 var(--border)}
#page-roster #roster-filterbar .global-field-btn,#page-deptprojects #dpm-actions .global-field-btn{white-space:nowrap}
.roster-list-toolbar{display:flex;align-items:center;gap:8px;min-height:56px;padding:12px 16px;background:#fff;border-bottom:0}
.roster-list-toolbar .btn{margin:0}
.drawer .fld input:disabled,.drawer .fld select:disabled{background:#f5f6f7;color:var(--text-2);cursor:not-allowed;opacity:1}
.drawer .fld input:disabled::placeholder{color:var(--text-4)}
.roster-pagination{min-height:50px;padding:9px 16px;border-top:1px solid var(--border);display:flex;align-items:center;gap:12px;background:var(--surface)}
.roster-page-info{font-size:12px;color:var(--text-3);white-space:nowrap}
.roster-page-actions{margin-left:auto;display:flex;align-items:center;gap:6px}
.roster-page-btn{min-width:30px;height:30px;padding:0 9px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text-2);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;transition:.15s}
.roster-page-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-soft2)}
.roster-page-btn.active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 2px 6px rgba(22,119,255,.2)}
.roster-page-btn:disabled{color:var(--text-4);background:var(--side-2);cursor:not-allowed}
@media(max-width:1080px){.roster-pagination{align-items:flex-start;flex-direction:column}.roster-page-actions{margin-left:0}}
@media(max-width:900px){#page-roster #roster-filterbar,#page-deptprojects #dpm-filterbar,#page-deptprojects #dpm-actions{position:static}#page-roster #roster-table-wrap .tbl-scroll,#page-deptprojects #dpm-tab-project .tbl-scroll{max-height:560px}}
/* ── 填报页:左右两列等高拉伸,底边对齐,数据不足时各自留白 ── */
#page-fill .fill-layout{align-items:stretch;height:calc(100vh - 320px);min-height:440px}
#page-fill2 .fill-layout{align-items:stretch;height:calc(100vh - 300px);min-height:500px}
#page-fill .org-tree,#page-fill2 .org-tree{position:static;display:flex;flex-direction:column;min-height:0}
#page-fill .ot-body,#page-fill2 .ot-body{flex:1;min-height:0;max-height:none;height:auto}
#page-fill .fill-main,#page-fill2 .fill-main{display:flex;flex-direction:column;min-height:0}
#page-fill .tbl-wrap,#page-fill2 .tbl-wrap{flex:1;min-height:0;display:flex;flex-direction:column}
#page-fill .tbl-scroll,#page-fill2 .tbl-scroll{flex:1;min-height:0;overflow:auto}
#page-fill thead th,#page-fill2 thead th{position:sticky;top:0;z-index:11}
#sum-proj-wrap thead th{position:sticky;top:0;background:var(--surface);z-index:2}
#page-fill2 thead tr:nth-child(2) th{top:37px}
#page-fill thead th.sc0,#page-fill thead th.sc1,#page-fill thead th.sc2,#page-fill thead th.col-sum,#page-fill thead th.col-badge,#page-fill2 thead th.sc0,#page-fill2 thead th.sc1,#page-fill2 thead th.sc2,#page-fill2 thead th.col-sum,#page-fill2 thead th.col-badge{z-index:14}
.inherit-action{display:none!important}
.fill-pagination{display:flex;align-items:center;gap:8px;padding:10px 12px;border-top:1px solid var(--border);background:var(--surface);font-size:12px;color:var(--text-3)}
.fill-pagination select{height:30px;padding:0 26px 0 9px;border:1px solid var(--border);border-radius:7px;background:var(--side-2);color:var(--text-2);font-family:inherit}
.fill-page-btn{height:30px;min-width:30px;padding:0 9px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text-2);cursor:pointer;font-family:inherit}
.fill-page-btn:disabled{opacity:.45;cursor:not-allowed}
.op-guide-icon{display:none!important;width:22px;height:22px;min-width:22px;align-items:center;justify-content:center;border:1px solid #C8D7F7;border-radius:50%;background:#F2F6FF;color:var(--accent);cursor:pointer;vertical-align:middle;margin-left:-3px;transition:all .16s;box-shadow:0 1px 2px rgba(22,119,255,.08)}
.op-guide-icon:hover,.op-guide-icon.active{background:var(--accent);color:#fff;border-color:var(--accent);transform:translateY(-1px);box-shadow:0 4px 10px rgba(22,119,255,.22)}
.op-guide-icon svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.op-guide-pop{position:fixed;z-index:1200;width:390px;max-width:calc(100vw - 24px);background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 40px rgba(31,35,41,.18);display:none;overflow:hidden;animation:guidePop .18s ease-out}
.op-guide-pop.show{display:block}
@keyframes guidePop{from{opacity:0;transform:translateY(-5px) scale(.98)}to{opacity:1;transform:none}}
.guide-head{display:flex;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border-2)}
.guide-head h4{font-size:13.5px;margin:0}.guide-head small{color:var(--text-3);margin-left:7px}.guide-close{margin-left:auto;border:0;background:transparent;color:var(--text-3);font-size:16px;cursor:pointer}
.guide-recording{height:150px;margin:12px 14px 10px;border-radius:9px;background:linear-gradient(145deg,#17233C,#263757);position:relative;overflow:hidden;color:#fff}
.guide-rec-top{height:28px;background:rgba(255,255,255,.08);display:flex;align-items:center;padding:0 10px;font-size:10px;color:rgba(255,255,255,.72)}
.guide-rec-dot{width:7px;height:7px;border-radius:50%;background:#FF4D4F;margin-right:6px;box-shadow:0 0 0 3px rgba(255,77,79,.16)}
.guide-rec-body{padding:13px}.guide-rec-title{font-size:12px;font-weight:700;margin-bottom:10px}.guide-rec-line{height:8px;border-radius:5px;background:rgba(255,255,255,.16);margin:7px 0}.guide-rec-line.short{width:58%}.guide-rec-btn{width:76px;height:24px;margin-top:13px;border-radius:5px;background:#4C7DFF;color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center}
.guide-cursor{position:absolute;width:18px;height:18px;right:48px;bottom:27px;animation:guideCursor 2.4s ease-in-out infinite;filter:drop-shadow(0 2px 2px rgba(0,0,0,.35))}.guide-recording.paused .guide-cursor{animation-play-state:paused}
@keyframes guideCursor{0%,20%{transform:translate(-115px,-55px)}55%,75%{transform:translate(0,0) scale(1)}82%{transform:translate(0,0) scale(.78)}100%{transform:translate(-115px,-55px)}}
.guide-play{position:absolute;right:9px;top:6px;border:0;border-radius:5px;padding:3px 7px;background:rgba(255,255,255,.12);color:#fff;font-size:10px;cursor:pointer}
.guide-steps{padding:0 14px 14px}.guide-steps-title{font-size:11px;font-weight:700;color:var(--text-3);margin-bottom:8px}.guide-step{display:flex;gap:9px;align-items:flex-start;margin-top:8px;color:var(--text-2);font-size:12px;line-height:1.55}.guide-step i{width:19px;height:19px;flex:0 0 19px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;font-style:normal;font-size:10px;font-weight:700}
@media(max-width:640px){.op-guide-icon{width:24px;height:24px;min-width:24px;margin-left:-1px}.op-guide-pop{width:calc(100vw - 20px)}.guide-recording{height:136px}}
@media(max-width:1080px){#page-fill .ot-body,#page-fill2 .ot-body{height:300px;min-height:0}#page-fill .tbl-scroll,#page-fill2 .tbl-scroll{height:auto;min-height:0}}

/* ── 全局自适应布局：统一菜单、页面与列表间距 ── */
.side{width:var(--nav-offset)}
body[data-current-page="log"] #page-log,
body[data-current-page="roles"] #page-roles,
#page-log,#page-roles{max-width:100%;min-width:0}
#page-log .tbl-wrap,#page-roles .tbl-wrap{width:100%;min-width:0}
.topbar{padding-inline:clamp(14px,1.4vw,24px)}
.main>.content{padding:22px 0 36px!important}
.main>.content>.page.show{width:calc(100% - 64px)!important;min-width:0;margin-left:32px!important;margin-right:32px!important}
.content>.page.show>*:first-child{margin-top:0}
.page-head{margin-bottom:clamp(12px,1.1vw,18px)}
.toolbar,.f2-filterbar{padding:10px clamp(10px,1vw,14px);gap:8px}
.tbl-wrap{width:100%;max-width:100%;min-width:0}
.tbl-scroll{width:100%;max-width:100%;overflow:auto;overscroll-behavior-inline:contain}
table{width:100%;border-collapse:collapse}
th,td{padding:clamp(8px,.7vw,11px) clamp(9px,.8vw,14px)}
.card-head{padding:clamp(11px,1vw,15px) clamp(12px,1.15vw,18px)}
.sbar{padding:10px clamp(11px,1.1vw,16px);margin-bottom:12px}

@media(max-width:1280px){
  :root{--nav-offset:180px}
  .brand{padding-inline:12px}.menu{padding:12px 8px 22px}.mitem{gap:9px;padding-inline:9px}
  .brand small{display:none}
  .main>.content{padding:18px 0 30px!important}.main>.content>.page.show{width:calc(100% - 56px)!important;margin-left:28px!important;margin-right:28px!important}.topbar{padding-inline:20px}
  .page-head h2{font-size:18px}
  .toolbar,.f2-filterbar{margin-bottom:10px}
  #page-roles .rfilter{gap:10px}
  #page-roles .rfilter .fitem{flex:1 1 210px}
  #page-roles .rfilter .fitem input,#page-roles .rfilter .fitem select{width:100%;min-width:0}
}
@media(max-width:900px){
  :root{--nav-offset:68px}.side{overflow-x:hidden}
  .brand{justify-content:center;padding:0}.brand>div:last-child{display:none}
  .menu{padding:8px 7px}.mlbl{height:9px;padding:8px 0 0;font-size:0;border-top:1px solid var(--border-2);margin-top:4px}
  .mitem{height:40px;justify-content:center;padding:0;gap:0;font-size:0}.mitem svg{width:18px;height:18px}.mbadge{position:absolute;right:5px;top:3px;font-size:9px;min-width:15px;line-height:15px;padding:0 4px}
  .topbar{height:auto;min-height:56px;flex-wrap:wrap;padding-block:9px}.crumb{flex:1;min-width:160px}.role-tag{display:none}
  .main>.content{padding:15px 0 26px!important}.main>.content>.page.show{width:calc(100% - 40px)!important;margin-left:20px!important;margin-right:20px!important}.page-head p{max-width:100%}
  .toolbar,.f2-filterbar{align-items:stretch}.srch{flex:1 1 220px}.fsel,.ms{flex:0 1 auto}
  .role-card-grid{grid-template-columns:1fr 1fr}
  #page-roles .rfilter>div:last-child{margin-left:0!important;width:100%;justify-content:flex-end}
}
@media(max-width:640px){
  :root{--nav-offset:54px}.mitem{height:38px}.main>.content{padding:12px 0 22px!important}.main>.content>.page.show{width:calc(100% - 28px)!important;margin-left:14px!important;margin-right:14px!important}
  .topbar-user,.mpicker,.rs-demo{display:none!important}.rswitch-btn .rs-lbl{display:none}
  .page-head h2{font-size:17px}.page-head p{font-size:11.5px}
  .toolbar,.f2-filterbar{padding:8px;gap:6px}.toolbar>*{max-width:100%}
  .srch,.fsel,.ms,.ms-btn{width:100%;min-width:0}.srch input{width:100%}
  .btn{padding-inline:10px}.card-head{align-items:flex-start}
  .role-card-grid{grid-template-columns:1fr}.flow{min-width:620px}.flow-card{overflow-x:auto}
  .fill-pagination{flex-wrap:wrap}.fill-pagination .spacer{display:none}
}

/* ── V5 流式自适应尺寸系统 ── */
:root{--page-gutter:clamp(24px,1.8vw,36px);--adaptive-nav:clamp(180px,11.5vw,228px)}
.layout{width:100%;max-width:100vw;overflow-x:hidden}
.side{width:var(--adaptive-nav);min-width:var(--adaptive-nav);position:fixed;left:0;top:0;bottom:0;height:100vh;z-index:100;overflow-y:auto}
.main{width:calc(100vw - var(--adaptive-nav));max-width:calc(100vw - var(--adaptive-nav));min-width:0;margin-left:var(--adaptive-nav);padding-top:0}
.main>.content{padding:0 0 clamp(28px,2.4vw,44px)!important;min-width:0}
.main>.content>.page.show{width:calc(100% - (var(--page-gutter) * 2))!important;margin-left:var(--page-gutter)!important;margin-right:var(--page-gutter)!important;max-width:none!important;min-width:0}
.main>.content>.page.show{margin-top:0!important}
.main>.content>.page.show>.page-head{padding-top:0!important}
.main>.content>.page.show>.page-head h2{line-height:1.2}
.topbar{position:fixed;left:var(--adaptive-nav);right:0;top:0;width:auto;max-width:none;height:56px;gap:clamp(6px,.7vw,12px);padding-inline:var(--page-gutter);z-index:90}
.topbar>*{min-width:0}.crumb{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.toolbar,.f2-filterbar,.card-head,.card-body{max-width:100%;min-width:0}
.toolbar,.f2-filterbar{display:flex;flex-wrap:wrap}
.toolbar .spacer,.f2-filterbar .spacer{min-width:8px}
.tbl-wrap,.tbl-scroll{max-width:100%;min-width:0}.tbl-scroll{overflow:auto}
.tbl-scroll table{min-width:100%}
.budget-sheet-note{margin:0 0 8px;color:#e5484d;font-size:12px;font-style:italic;font-weight:600}
#page-budget .budget-grid{width:100%;max-width:100%;max-height:560px;overflow:auto;position:relative;border-radius:10px;overscroll-behavior:contain;scrollbar-gutter:stable}
#page-budget .budget-grid::-webkit-scrollbar{height:12px;width:10px}
#page-budget .budget-grid::-webkit-scrollbar-thumb{background:#aeb7c6;border:3px solid #f3f5f8;border-radius:10px}
#page-budget .budget-grid::-webkit-scrollbar-track{background:#f3f5f8}
#page-budget .budget-grid table{border-collapse:separate;border-spacing:0;min-width:2500px;table-layout:fixed}
#page-budget .budget-grid th,#page-budget .budget-grid td{height:38px;padding:7px 9px;border-right:1px solid #b9c0ca;border-bottom:1px solid #b9c0ca;background:#fff;white-space:nowrap}
#page-budget .budget-grid thead th{position:sticky;z-index:5;text-align:center;color:#20242c;font-weight:700;border-top:1px solid #89919d;background:#f3f4f6}
#page-budget .budget-grid thead tr:nth-child(1) th{top:0;height:42px;font-size:13px}
#page-budget .budget-grid thead tr:nth-child(2) th{top:42px;height:38px}
#page-budget .budget-grid thead tr:nth-child(3) th{top:80px;height:52px;font-size:11px;white-space:normal;line-height:1.35}
#page-budget .budget-grid .g-dim{background:#dbeafe}
#page-budget .budget-grid .g-plan{background:#dcfce7}
#page-budget .budget-grid .g-compare{background:#fef3c7}
#page-budget .budget-grid .g-project{background:#ede9fe}
#page-budget .budget-grid .sticky-c1{position:sticky;left:0;z-index:3}
#page-budget .budget-grid .sticky-c2{position:sticky;left:116px;z-index:3}
#page-budget .budget-grid .sticky-c3{position:sticky;left:232px;z-index:3;box-shadow:5px 0 7px -6px #596273}
#page-budget .budget-grid thead .sticky-c1,#page-budget .budget-grid thead .sticky-c2,#page-budget .budget-grid thead .sticky-c3{z-index:8}
#page-budget .budget-grid td.dim{background:#f8fbff;color:#394150}
#page-budget .budget-grid .preset{color:#89919d;font-size:10px;font-weight:500;display:block;margin-top:2px}
#page-budget .budget-grid input.bi{width:58px;height:27px;text-align:right;border:1px solid #cbd3df;border-radius:4px;padding:0 7px;background:#fff}
#page-budget .budget-grid input.bi:focus{outline:2px solid #9bbcff;border-color:#4f7cff}
#page-budget .budget-grid td input:not(.bi),#page-budget .budget-grid td select{display:block;width:100%!important;max-width:100%;height:28px;box-sizing:border-box;border:1px solid #cbd3df;border-radius:5px;background:#fff;color:#303642;padding:0 8px;font:inherit;outline:none}
#page-budget .budget-grid td input:not(.bi):focus,#page-budget .budget-grid td select:focus{border-color:#4f7cff;box-shadow:0 0 0 2px rgba(79,124,255,.14)}
#page-budget .budget-grid td.required{overflow:hidden}
#page-budget .budget-grid .formula{background:#f5f6f8;color:#536071;text-align:right;font-weight:700}
#page-budget .budget-grid .required{background:#fffdf2}
#page-budget .budget-grid tfoot td{position:sticky;bottom:0;z-index:4;background:#eef4ff;font-weight:700;color:#315fdb}
#page-summary #st-dept .tbl-scroll{max-height:560px;overflow:auto;position:relative;overscroll-behavior:contain}
#page-summary #dept-cross-tbl{border-collapse:separate;border-spacing:0;min-width:1180px}
#page-summary #dept-cross-tbl thead th{position:sticky;z-index:8;background:#f6f7f9}
#page-summary #dept-cross-tbl thead tr:first-child th{top:0}
#page-summary #dept-cross-tbl thead tr:nth-child(2) th{top:39px}
#page-summary #dept-cross-tbl .cross-summary-row td{position:sticky;z-index:7;box-shadow:0 -1px 0 var(--border)}
#page-summary #dept-cross-tbl .cross-summary-row td{height:48px;box-sizing:border-box}
#page-summary #dept-cross-tbl .cross-total-row td{bottom:144px;background:#f3f6fb}
#page-summary #dept-cross-tbl .cross-prev-row td{bottom:96px;background:#fffdf5}
#page-summary #dept-cross-tbl .cross-diff-row td{bottom:48px;background:#fff}
#page-summary #dept-cross-tbl .cross-rate-row td{bottom:0;background:#fff}
#page-summary #dept-cross-tbl tbody tr>td:first-child,#page-summary #dept-cross-tbl thead tr:first-child>th:first-child{position:sticky;left:0;z-index:6;background:inherit;box-shadow:1px 0 0 var(--border)}
#page-summary #dept-cross-tbl thead tr:first-child>th:first-child{z-index:10;background:#f6f7f9}
#page-summary #dept-cross-tbl .cross-summary-row>td:first-child{z-index:9}
/* 工时调整项：卡片与筛选随可用宽度重排，宽表只在表格内部滚动。 */
#page-adjustment{min-width:0;overflow:visible}
#page-adjustment .adj-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
#page-adjustment .adj-kpi-grid>.kpi{min-width:0;overflow:hidden}
#page-adjustment .adj-kpi-grid .k-sub,#page-adjustment .adj-kpi-grid [style*="font-weight:700"]{overflow-wrap:anywhere}
#page-adjustment .adj-filter-card .card-body{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
#page-adjustment .adj-filter-card .srch{flex:1 1 260px;min-width:180px}
#page-adjustment>.tbl-wrap{min-width:0;max-width:100%;overflow:hidden}
#page-adjustment>.tbl-wrap>.tbl-scroll{width:100%;max-width:100%;overflow-x:auto}
#page-adjustment>.tbl-wrap table{width:max-content;min-width:100%}
#page-adjustment>.tbl-wrap th,#page-adjustment>.tbl-wrap td{white-space:nowrap}
#page-adjustment>.tbl-wrap th:nth-child(4),#page-adjustment>.tbl-wrap td:nth-child(4),#page-adjustment>.tbl-wrap th:nth-child(5),#page-adjustment>.tbl-wrap td:nth-child(5),#page-adjustment>.tbl-wrap th:nth-child(11),#page-adjustment>.tbl-wrap td:nth-child(11){white-space:normal;min-width:128px}
#page-adjustment>.tbl-wrap th:last-child,#page-adjustment>.tbl-wrap td:last-child{position:sticky;right:0;z-index:2;background:var(--surface);box-shadow:-8px 0 12px rgba(31,35,41,.06)}
#page-adjustment>.tbl-wrap thead th:last-child{z-index:3;background:#F7F8FA}
#page-adjustment .adj-report-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.modal{width:min(560px,calc(100vw - 32px));max-width:calc(100vw - 32px)}
.modal[style*="width:620px"],.modal[style*="width:650px"],.modal[style*="width:660px"],.modal[style*="width:720px"]{width:min(720px,calc(100vw - 32px))!important}
.drawer{width:min(540px,calc(100vw - 20px))}
img,video,canvas,svg{max-width:100%}

@media(min-width:901px) and (max-width:1280px){
  :root{--page-gutter:clamp(20px,2.1vw,28px);--adaptive-nav:clamp(176px,15vw,192px)}
  .brand .bname{font-size:14px}.menu{padding-inline:8px}.btn{max-width:100%}
}
@media(max-width:900px){
  :root{--page-gutter:clamp(14px,2.2vw,20px);--adaptive-nav:68px}
  .main{width:calc(100vw - 68px);max-width:calc(100vw - 68px)}
  .main>.content{padding-top:0!important}.topbar{height:56px;min-height:56px;flex-wrap:nowrap;padding-block:0;padding-inline:var(--page-gutter)}
  .toolbar>.spacer,.f2-filterbar>.spacer{display:none}.form-grid{gap:12px}
  .op-guide-pop{max-height:calc(100vh - 20px);overflow:auto}
  #page-adjustment .adj-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:640px){
  :root{--page-gutter:12px;--adaptive-nav:54px}
  .main{width:calc(100vw - 54px);max-width:calc(100vw - 54px)}
  .main>.content{padding-top:0!important}.form-grid{grid-template-columns:1fr}.form-grid .field.full{grid-column:auto}
  .modal{width:calc(100vw - 16px)!important;max-width:calc(100vw - 16px)!important;border-radius:12px}
  .modal-body{padding:14px}.modal-head,.modal-foot{padding-inline:14px}.modal-foot{flex-wrap:wrap}.modal-foot .btn{flex:1 1 auto}
  .fill-pagination{flex-wrap:wrap}.fill-pagination .spacer{display:none}.page-head{margin-bottom:12px}.page-head h2{line-height:1.35}
  #page-adjustment .adj-kpi-grid,#page-adjustment .adj-report-grid{grid-template-columns:1fr}
  #page-adjustment .adj-filter-card .fsel,#page-adjustment .adj-filter-card .srch,#page-adjustment .adj-filter-card .btn{width:100%}
}
/* 固定顶栏仅由内容区避让一次，避免标题被覆盖或产生双倍空白。 */
.main>.content{padding-top:56px!important}
/* 工时填报底部统计冻结：sticky 落到单元格，兼容表格内部横向滚动。 */
#fill2-tbl tfoot,#fill2-out-tbl tfoot{position:static}
#fill2-tbl tfoot tr,#fill2-out-tbl tfoot tr{height:38px}
#fill2-tbl tfoot td,#fill2-out-tbl tfoot td{position:sticky;bottom:0;z-index:18;box-shadow:0 -4px 10px rgba(31,35,41,.10)}
#fill2-tbl tfoot tr:first-child td,#fill2-out-tbl tfoot tr:first-child td{background:#EEF3FF}
#fill2-tbl tfoot tr:last-child td,#fill2-out-tbl tfoot tr:last-child td{background:#FFFBEB}
#fill2-tbl tfoot td:first-child,#fill2-out-tbl tfoot td:first-child{box-shadow:6px 0 10px rgba(31,35,41,.06)}
/* 分摊比例输入：保留原位编辑，隐藏浏览器默认的数值增减箭头。 */
.f2in[type="number"],.f3in[type="number"],.ac-in[type="number"],.pct-input[type="number"]{-moz-appearance:textfield;appearance:textfield}
.f2in[type="number"]::-webkit-inner-spin-button,.f2in[type="number"]::-webkit-outer-spin-button,.f3in[type="number"]::-webkit-inner-spin-button,.f3in[type="number"]::-webkit-outer-spin-button,.ac-in[type="number"]::-webkit-inner-spin-button,.ac-in[type="number"]::-webkit-outer-spin-button,.pct-input[type="number"]::-webkit-inner-spin-button,.pct-input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.f2-simple-filter{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.f2-simple-filter .srch{width:190px;min-width:190px;flex:0 0 190px}
.status-chips{display:flex;align-items:center;gap:6px;padding:4px;background:#E9EEF8;border:1px solid #D7E0F0;border-radius:10px}
.status-chip{min-width:62px;border:1px solid transparent;background:transparent;color:#475569;font:700 12px inherit;padding:7px 13px;border-radius:7px;cursor:pointer;transition:background .16s,color .16s,border-color .16s,box-shadow .16s}
.status-chip:hover{background:rgba(255,255,255,.65);color:#1E40AF}
.status-chip.active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 3px 8px rgba(22,119,255,.28)}
.status-chip[data-status="待填报"].active{background:var(--amber);border-color:var(--amber);box-shadow:0 3px 8px rgba(255,136,0,.25)}
.status-chip[data-status="异常"].active{background:var(--red);border-color:var(--red);box-shadow:0 3px 8px rgba(245,74,69,.25)}
.f2-advanced{display:flex;align-items:center;gap:8px;flex:1 1 auto;min-width:420px}
.more-actions{position:relative}
.more-actions-menu{display:none;position:absolute;right:0;top:calc(100% + 6px);z-index:45;width:220px;padding:7px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 30px rgba(15,23,42,.14)}
.more-actions-menu.show{display:grid;gap:3px}
.more-actions-menu .btn{justify-content:flex-start;width:100%}
.fill-submit-dock{position:sticky;bottom:0;z-index:32;display:flex;align-items:center;gap:14px;margin-top:10px;padding:12px 14px;background:rgba(255,255,255,.96);border:1px solid var(--border);border-radius:12px;box-shadow:0 -8px 24px rgba(15,23,42,.08);backdrop-filter:blur(10px)}
.fill-submit-dock .dock-stats{display:flex;gap:14px;font-size:12px;color:var(--text-2)}
.fill-submit-dock .dock-stats b{font-family:'Rubik';font-size:14px}
.fill-submit-dock .dock-stats .ok b{color:var(--green)}
.fill-submit-dock .dock-stats .bad b{color:var(--red)}
.fill-submit-dock .dock-stats .todo b{color:var(--amber)}
.fill-submit-dock .dock-hint{font-size:11.5px;color:var(--text-3)}
.role-workbench{display:flex;align-items:center;gap:14px;margin:0 0 14px;padding:15px 16px;border:1px solid #D9E4FF;border-radius:14px;background:linear-gradient(135deg,#F7F9FF,#EEF4FF)}
.role-workbench .rw-icon{width:42px;height:42px;border-radius:12px;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:20px;flex:0 0 auto}
.role-workbench .rw-main{min-width:0;flex:1}.role-workbench h3{font-size:15px;margin:0 0 4px}.role-workbench p{font-size:12px;color:var(--text-2);margin:0;line-height:1.55}
.rw-stats{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.rw-stat{padding:4px 8px;border-radius:6px;background:#fff;border:1px solid var(--border);font-size:11px;color:var(--text-2)}.rw-stat b{color:var(--text);font-family:'Rubik'}
.rw-path{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:9px}.rw-path-step{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:#334155}.rw-path-step i{width:19px;height:19px;border-radius:50%;background:#DCE7FF;color:var(--accent);display:grid;place-items:center;font-style:normal;font-family:'Rubik';font-size:10px}.rw-path-arrow{color:#94A3B8;font-size:11px}
.rw-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.rw-actions .btn{min-height:36px}
.fill-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0 0 14px;padding:0;border:1px solid var(--border);border-radius:12px;background:#fff;overflow:hidden}
.fill-step{display:flex;align-items:center;gap:10px;padding:15px 18px;border:0;border-right:1px solid var(--border);background:#fff;text-align:left;color:var(--text-3);cursor:default;position:relative;transition:background .16s,box-shadow .16s}.fill-step:last-child{border-right:0}.fill-step i{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#EEF1F5;color:#64748B;font-style:normal;font-weight:800;flex-shrink:0}.fill-step b{display:block;font-size:13px;color:inherit}.fill-step span{display:block;font-size:10.5px;margin-top:2px}.fill-step.active{background:#EEF4FF;color:var(--accent)}.fill-step.active i{background:var(--accent);color:#fff;box-shadow:0 0 0 4px rgba(22,119,255,.12)}.fill-step.done{color:var(--green)}.fill-step.done i{background:#16A34A;color:#fff}.fill-step.done i::before{content:'✓';font-size:14px}.fill-step.done i{font-size:0}.fill-step.visited:not(.active):not(.done){color:var(--accent);background:#F8FAFF}.fill-step.visited:not(.active):not(.done) i{background:#E8F0FF;color:var(--accent)}.fill-step.clickable{cursor:pointer}.fill-step.clickable:hover{background:#F0FDF4;box-shadow:inset 0 0 0 1px #86EFAC}.fill-step.clickable:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
.fill-step-card{margin-bottom:14px;padding:16px;border:1px solid #D9E4FF;border-radius:12px;background:#FAFCFF}.fill-step-card h3{margin:0 0 5px;font-size:14px}.fill-step-card p{margin:0;color:var(--text-2);font-size:12px;line-height:1.65}.fill-step-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.fill-step-dock{position:sticky;bottom:10px;z-index:34;display:flex;align-items:center;gap:14px;margin-top:14px;padding:12px 14px;border:1px solid #B8CBFA;border-radius:12px;background:rgba(255,255,255,.97);box-shadow:0 -10px 28px rgba(15,23,42,.12);backdrop-filter:blur(12px)}
.fill-step-dock.fill-step-check-dock{top:66px;bottom:auto;margin:0 0 12px;box-shadow:0 8px 22px rgba(15,23,42,.10)}
.fill-step-dock .dock-check-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:#EAF1FF;color:var(--accent);flex:0 0 auto}.fill-step-dock .dock-check-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.fill-step-dock .dock-check-copy{min-width:220px;flex:1}.fill-step-dock .dock-check-copy h3{margin:0 0 3px;font-size:13.5px}.fill-step-dock .dock-check-copy p{margin:0;color:var(--text-3);font-size:11.5px}
.fill-action-toolbar{position:sticky;top:124px;z-index:36;background:rgba(255,255,255,.97);backdrop-filter:blur(12px);box-shadow:0 6px 18px rgba(15,23,42,.08);transition:top .2s ease,box-shadow .2s ease}
#page-fill2 .page-head,#page-fill2 #fill-workflow-steps,#page-fill2 #hrbp-scope-card,#page-fill2 #temp-user-card,#page-fill2 #handoff-status-card,#page-fill2 #fill2-filterbar{transition:max-height .22s ease,opacity .16s ease,transform .22s ease,margin .22s ease,padding .22s ease}
#page-fill2.fill-scroll-condensed .page-head,#page-fill2.fill-scroll-condensed #fill-workflow-steps,#page-fill2.fill-scroll-condensed #hrbp-scope-card,#page-fill2.fill-scroll-condensed #temp-user-card,#page-fill2.fill-scroll-condensed #handoff-status-card{max-height:0!important;min-height:0!important;margin-top:0!important;margin-bottom:0!important;padding-top:0!important;padding-bottom:0!important;border-width:0!important;opacity:0;transform:translateY(-18px);overflow:hidden;pointer-events:none}
#page-fill2 #fill2-filterbar{position:sticky;top:62px;z-index:38;margin-bottom:10px;background:rgba(255,255,255,.98);backdrop-filter:blur(12px);box-shadow:0 6px 18px rgba(15,23,42,.08)}
#page-fill2.fill-scroll-condensed #fill2-filterbar{opacity:1;transform:none;pointer-events:auto;box-shadow:0 8px 22px rgba(15,23,42,.12)}
#page-fill2.fill-scroll-condensed .fill-layout{height:calc(100vh - 188px);min-height:560px;transition:height .22s ease}
#page-fill2.fill-scroll-condensed .fill-action-toolbar{top:124px;box-shadow:0 8px 22px rgba(15,23,42,.12)}
#page-fill2.fill-step-three-active #fill-workflow-steps{position:sticky;top:60px;z-index:37;background:#fff;box-shadow:0 8px 22px rgba(15,23,42,.08)}
#page-fill2.fill-step-three-active .fill-step-check-dock{top:166px;z-index:36}
#page-fill2.fill-step-three-active .fill-analysis-tabs{position:sticky;top:238px;z-index:35;width:100%;box-sizing:border-box;margin-bottom:12px;background:rgba(246,247,249,.98);backdrop-filter:blur(12px);box-shadow:0 7px 18px rgba(15,23,42,.08)}
#page-fill2.fill-step-three-active #fill-analysis-summary-panel .tbl-scroll,#page-fill2.fill-step-three-active #fill-analysis-detail-panel .tbl-scroll{max-height:calc(100vh - 300px)!important;overflow:auto}
#page-fill2.fill-step-three-active #fill-analysis-summary-panel th,#page-fill2.fill-step-three-active #fill-analysis-detail-panel th{position:sticky;top:0;z-index:4;background:#F7F8FA}
.fill-summary-view{padding:0;border:0;background:transparent}.fill-summary-anomaly-link{display:none;align-items:center;width:100%;box-sizing:border-box;min-height:40px;padding:0 14px;margin:0 0 10px;border:1px solid #AFC8FF;border-radius:8px;background:#EAF1FF;color:#245BDB;font-size:12px;font-weight:700;text-align:left;cursor:pointer}.fill-summary-anomaly-link.show{display:flex}.fill-summary-anomaly-link:hover{background:#E1EBFF}
.fill-analysis-tabs{display:flex;align-items:center;gap:4px;margin:0 0 12px;padding:4px;border:1px solid var(--border);border-radius:10px;background:#F6F7F9;width:max-content;max-width:100%}.fill-analysis-tab{min-height:36px;padding:0 16px;border:0;border-radius:7px;background:transparent;color:var(--text-2);font-size:12px;font-weight:650;cursor:pointer;transition:.15s}.fill-analysis-tab:hover{color:var(--accent);background:#fff}.fill-analysis-tab.active{color:var(--accent);background:#fff;box-shadow:0 1px 4px rgba(15,23,42,.10)}.fill-analysis-tab .pill{margin-left:5px;vertical-align:1px}.fill-analysis-panel[hidden]{display:none!important}.fill-detail-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:10px;padding:11px 12px;border:1px solid var(--border);border-radius:10px;background:#fff}.fill-detail-title{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700}.fill-detail-meta{margin-top:3px;color:var(--text-3);font-size:11px}.fill-detail-toolbar .spacer{flex:1}.fill-detail-table{width:max-content;min-width:100%}.fill-detail-table th{position:sticky;top:0;z-index:2;background:#F7F8FA;white-space:nowrap}.fill-detail-table td{height:44px;vertical-align:middle;white-space:nowrap}.fill-detail-table .detail-project-head{min-width:118px;text-align:center;color:var(--text);font-weight:700}.fill-detail-table .detail-project-cell{min-width:118px;text-align:center;font-family:Rubik,Arial,sans-serif;font-weight:700;color:var(--accent)}.fill-detail-table .detail-project-cell.is-empty{color:var(--text-3);font-weight:500}.fill-detail-table .detail-path{min-width:260px;max-width:320px;overflow:hidden;color:var(--text-2);text-overflow:ellipsis}.fill-detail-table .detail-dept{min-width:92px;color:var(--text-2)}.fill-detail-table .detail-date{min-width:98px;color:var(--text-2)}.fill-detail-table .detail-contract{min-width:170px;color:var(--text-2)}.fill-detail-table .detail-status-sticky{position:sticky;right:0;z-index:3;min-width:92px;background:#fff;box-shadow:-8px 0 12px -12px rgba(15,23,42,.45)}.fill-detail-table thead .detail-status-sticky{z-index:5;background:#F7F8FA}
.handoff-popover{position:fixed;z-index:720;width:400px;max-width:calc(100vw - 24px);padding:0;background:#fff;border:1px solid #D9DEE8;border-radius:12px;box-shadow:0 14px 38px rgba(15,23,42,.20);opacity:0;visibility:hidden;transform:translateY(5px) scale(.985);transform-origin:top left;transition:opacity .14s ease,transform .14s ease,visibility .14s}.handoff-popover.show{opacity:1;visibility:visible;transform:translateY(0) scale(1)}.handoff-popover:after{content:"";position:absolute;width:10px;height:10px;background:#fff;border-right:1px solid #D9DEE8;border-bottom:1px solid #D9DEE8;transform:rotate(45deg);left:var(--handoff-arrow-left,28px);bottom:-6px}.handoff-popover.is-below:after{top:-6px;bottom:auto;transform:rotate(225deg)}.handoff-popover-head{display:flex;align-items:flex-start;gap:12px;padding:16px 16px 12px;border-bottom:1px solid var(--border)}.handoff-popover-head h3{margin:0;font-size:15px}.handoff-popover-head .modal-sub{margin-top:4px}.handoff-popover-body{padding:14px 16px}.handoff-popover .field{margin-bottom:12px}.handoff-popover .field:last-child{margin-bottom:0}.handoff-popover textarea{height:92px;resize:none}.handoff-counter{display:flex;justify-content:space-between;gap:10px;margin-top:6px;font-size:11px;color:var(--text-3)}.handoff-popover-note{display:flex;gap:7px;align-items:flex-start;margin-top:12px;padding:9px 10px;border-radius:8px;background:#F3F6FF;color:#315EC9;font-size:11px;line-height:1.5}.handoff-popover-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border)}
.dash-detail-query{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid var(--border);background:#fff}.dash-detail-query .srch{width:230px}.dash-detail-query .fsel{min-width:128px}.dash-detail-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid var(--border);background:#FAFBFD}.dash-detail-summary-copy{min-width:220px;flex:1}.dash-detail-summary-copy b{display:block;font-size:13px}.dash-detail-summary-copy span{display:block;margin-top:3px;color:var(--text-3);font-size:11px}.dash-detail-table th{position:sticky;top:0;z-index:2;background:#F7F8FA}.dash-detail-table td{vertical-align:middle}.dash-detail-table .path{min-width:260px;max-width:340px;color:var(--text-2)}.dash-detail-table .project{min-width:150px;font-weight:650}.dash-detail-table .pct{font-family:Rubik,Arial,sans-serif;text-align:right;color:var(--accent);font-weight:700}.dash-detail-table .total{font-family:Rubik,Arial,sans-serif;text-align:right;font-weight:700}
.dash-pct-drill{display:inline-flex;align-items:center;justify-content:flex-end;gap:4px;padding:3px 6px;border:0;border-radius:5px;background:transparent;color:var(--accent);font:inherit;font-weight:700;cursor:pointer}.dash-pct-drill:hover{background:var(--accent-soft2);text-decoration:underline}.dash-pct-drill:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.dash-drill-person{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding:11px 12px;border:1px solid var(--border);border-radius:10px;background:#F8FAFD}.dash-drill-person .ava{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:700}.dash-drill-person b{display:block;font-size:13px}.dash-drill-person span{display:block;margin-top:3px;color:var(--text-3);font-size:11px}.dash-drill-total{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding:12px 14px;border:1px solid #B7E3B0;border-radius:10px;background:#F4FFF3}.dash-drill-total.invalid{border-color:#F5B9B9;background:#FFF6F6}.dash-drill-total b{font-size:14px}.dash-drill-total strong{font:700 20px Rubik,Arial,sans-serif;color:var(--green)}.dash-drill-total.invalid strong{color:var(--red)}
.pd-expand-caret{display:inline-block;margin-left:2px;transition:transform .16s ease}.dash-pct-drill[aria-expanded="true"] .pd-expand-caret{transform:rotate(180deg)}
.pd-inline-detail-row td{padding:0!important;background:#F7FAFF!important;border-bottom:1px solid #C9D9FF!important}.pd-inline-detail{display:grid;grid-template-columns:repeat(3,minmax(96px,.55fr)) minmax(380px,2.2fr) minmax(100px,.55fr);align-items:center;gap:8px;padding:10px 12px;border-left:3px solid var(--accent)}
.pd-inline-role{min-width:0;padding:7px 9px;border-right:1px solid var(--border-2)}.pd-inline-role span{display:block;margin-bottom:2px;color:var(--text-3);font-size:10.5px}.pd-inline-role b{display:block;overflow:hidden;color:var(--text);font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.pd-inline-projects{display:flex;align-items:center;gap:6px;min-width:0;overflow:hidden}.pd-inline-project{display:inline-flex;align-items:center;gap:6px;min-width:0;padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:#fff;white-space:nowrap}.pd-inline-project.current{border-color:#BFD1FF;background:#EEF4FF}.pd-inline-project b{max-width:112px;overflow:hidden;font-size:11.5px;text-overflow:ellipsis}.pd-inline-project em{color:var(--accent);font:700 11.5px Rubik,Arial,sans-serif;font-style:normal}
.pd-inline-total{display:flex;align-items:baseline;justify-content:flex-end;gap:7px;white-space:nowrap}.pd-inline-total span{color:var(--text-3);font-size:11px}.pd-inline-total strong{color:var(--green);font:700 16px Rubik,Arial,sans-serif}
@media(max-width:1180px){.pd-inline-detail{grid-template-columns:repeat(3,minmax(88px,.55fr)) minmax(300px,2fr) 90px}.pd-inline-project b{max-width:78px}}
.pd-alloc-context{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:8px;margin-bottom:12px}.pd-alloc-context>div{min-width:0;padding:10px 12px;border:1px solid var(--border);border-radius:9px;background:#F8FAFD}.pd-alloc-context span{display:block;margin-bottom:3px;color:var(--text-3);font-size:10.5px}.pd-alloc-context b{display:block;overflow:hidden;font-size:12.5px;text-overflow:ellipsis;white-space:nowrap}.pd-alloc-table td{vertical-align:middle}.pd-alloc-table .project-name{font-weight:650}.pd-alloc-table .project-code{font-family:Rubik,Arial,sans-serif;color:var(--text-3)}.pd-alloc-table .project-pct{text-align:right;color:var(--accent);font:700 13px Rubik,Arial,sans-serif}.pd-alloc-table tfoot td{background:#F4FFF3!important;border-top:1px solid #B7E3B0;font-weight:700}.pd-alloc-table tfoot .project-pct{color:var(--green);font-size:15px}
@media(max-width:640px){.pd-alloc-context{grid-template-columns:1fr}}
.person-multi{position:relative}.person-multi-trigger{width:100%;min-height:38px;padding:5px 10px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer;transition:border-color .15s,box-shadow .15s}.person-multi-trigger:hover{border-color:#AFC5FF}.person-multi.open .person-multi-trigger{border-color:var(--accent);box-shadow:0 0 0 2px rgba(22,119,255,.12)}.person-multi-value{display:flex;align-items:center;gap:5px;flex-wrap:wrap;flex:1;min-width:0}.person-multi-placeholder{color:var(--text-3)}.person-multi-chip{display:inline-flex;align-items:center;max-width:112px;padding:3px 7px;border-radius:6px;background:#EEF4FF;color:var(--accent);font-size:11.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.person-multi-chevron{width:16px;height:16px;flex:0 0 auto;color:var(--text-3);transition:transform .18s}.person-multi.open .person-multi-chevron{transform:rotate(180deg)}.person-multi-menu{display:none;position:absolute;left:0;right:0;top:calc(100% + 5px);z-index:30;padding:8px;border:1px solid var(--border);border-radius:10px;background:#fff;box-shadow:0 10px 30px rgba(31,35,41,.14)}.person-multi.open .person-multi-menu{display:block}.person-multi-search{width:100%;height:34px;padding:0 10px;margin-bottom:6px;border:1px solid var(--border);border-radius:7px;outline:none}.person-multi-search:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(22,119,255,.1)}.person-multi-options{max-height:190px;overflow:auto}.person-multi-option{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:7px;cursor:pointer}.person-multi-option:hover{background:#F5F7FA}.person-multi-option input{width:15px;height:15px;accent-color:var(--accent)}.person-multi-avatar{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#EEF4FF;color:var(--accent);font-size:11px;font-weight:700}.person-multi-name{font-size:12.5px;font-weight:600}.person-multi-role{margin-left:auto;color:var(--text-3);font-size:11px}
.fill-summary-section{margin-top:14px}.fill-summary-section-title{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:13px;font-weight:700}.fill-summary-section-title span{font-size:11px;font-weight:500;color:var(--text-3)}
#fill-validation-modal .modal{width:680px}.fill-validation-overview{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.fill-validation-kpi{padding:12px;border:1px solid var(--border);border-radius:10px;background:#F8FAFC}.fill-validation-kpi span{display:block;font-size:11px;color:var(--text-3)}.fill-validation-kpi b{display:block;margin-top:3px;font-family:Rubik;font-size:22px}.fill-validation-kpi.ok b{color:var(--green)}.fill-validation-kpi.todo b{color:var(--amber)}.fill-validation-kpi.bad b{color:var(--red)}
#fill-validation-body .btn{min-width:56px}.validation-anchor td{animation:validationAnchor 1.8s ease}.validation-anchor td.sc0,.validation-anchor td.sc1,.validation-anchor td.sc2,.validation-anchor td.col-badge{animation:validationAnchor 1.8s ease}
@keyframes validationAnchor{0%,100%{background:#fff}20%,70%{background:#FFF1D6;box-shadow:inset 0 0 0 1px #FFB34D}}
@media(max-width:760px){.fill-step-dock{align-items:flex-start;flex-wrap:wrap;bottom:6px}.fill-step-dock .btn{width:100%;min-height:44px}.fill-validation-overview{grid-template-columns:1fr}#fill-validation-modal .modal{width:calc(100vw - 24px)}}
.fill-workflow-hidden{display:none!important}
.fill-confirm-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:14px;margin-top:14px}
.fill-confirm-panel{padding:14px;border:1px solid var(--border);border-radius:10px;background:#fff}
.fill-confirm-label{display:block;margin-bottom:9px;font-size:12px;font-weight:700;color:var(--text)}
.fill-inherit-check{display:flex;align-items:flex-start;gap:9px;padding:11px 12px;margin-bottom:12px;border:1px solid #BCD0FF;border-radius:9px;background:#F4F7FF}
.fill-inherit-check input{width:16px;height:16px;margin-top:1px;accent-color:var(--accent)}
.fill-inherit-check b{display:block;font-size:12.5px;color:var(--text)}.fill-inherit-check small{display:block;margin-top:2px;color:var(--text-3);font-size:11px;line-height:1.45}
.fill-inherit-note-icon{width:18px;height:18px;flex:0 0 auto;margin-top:1px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:800}
.fill-inherit-preview{margin:-3px 0 13px;padding:11px 12px;border:1px solid var(--border);border-radius:9px;background:#fff}.fill-inherit-preview-head{display:flex;align-items:center;gap:7px;margin-bottom:8px;font-size:12px}.fill-inherit-preview-head b{font-size:12.5px}.fill-inherit-preview-head .count{padding:2px 7px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font-size:10.5px;font-weight:700}.fill-inherit-preview-head button{margin-left:auto}
.fill-inherit-chips{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.fill-inherit-chip{max-width:145px;padding:4px 8px;border-radius:6px;background:#F1F5F9;color:#475569;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fill-inherit-more{color:var(--text-3);font-size:10.5px}
.fill-change-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fill-change-option{display:flex;align-items:flex-start;gap:9px;min-height:68px;padding:11px;border:1px solid var(--border);border-radius:9px;background:#fff;cursor:pointer;transition:.16s}
.fill-change-option:hover{border-color:#9AB6FF;background:#F8FAFF}.fill-change-option:has(input:checked){border-color:var(--accent);background:#EEF4FF;box-shadow:0 0 0 2px rgba(22,119,255,.08)}
.fill-change-option input{width:16px;height:16px;margin-top:2px;accent-color:var(--accent)}.fill-change-option b{display:block;font-size:12.5px}.fill-change-option small{display:block;margin-top:3px;color:var(--text-3);font-size:11px;line-height:1.4}
.fill-change-list{overflow:hidden;border:1px solid var(--border);border-radius:10px;background:#fff}.fill-change-head{display:flex;align-items:center;padding:11px 12px;border-bottom:1px solid var(--border);font-size:12px;font-weight:700}.fill-change-head span{margin-left:auto;font-size:10.5px;font-weight:500;color:var(--text-3)}
.fill-change-row{display:grid;grid-template-columns:86px minmax(0,1fr) 58px;gap:9px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--border-2);font-size:11.5px}.fill-change-row:last-child{border-bottom:0}.fill-change-row time{color:var(--text-3);font-family:'Rubik'}.fill-change-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fill-change-row .pill{justify-self:end}
.fill-step-validation{display:none;margin-top:8px;color:var(--red);font-size:11.5px;font-weight:600}.fill-step-validation.show{display:block}
#proj-modal .modal{width:760px}
.proj-modal-filters{display:grid;grid-template-columns:minmax(220px,1fr) 140px 130px 140px;gap:8px;margin-bottom:10px}.proj-modal-filters .srch{min-width:0}.proj-meta{display:flex;align-items:center;gap:6px;margin-top:3px;font-size:10px;color:var(--text-3)}
.proj-modal-scope{display:flex;align-items:center;gap:8px;margin-bottom:14px}.proj-modal-scope .status-chips{gap:8px;padding:0;border:0;border-radius:0;background:transparent}.proj-modal-scope .status-chip{display:inline-flex;align-items:center;justify-content:center;min-width:72px;height:36px;padding:0 14px;border:0;border-radius:7px;background:#F2F3F5;color:#4E5969;font-size:14px;font-weight:400;box-shadow:none}.proj-modal-scope .status-chip:hover{background:#E5E6EB;color:#1D2129}.proj-modal-scope .status-chip.active{background:#EEF4FF;color:#1677FF;font-weight:500;box-shadow:none}.proj-modal-scope .result-count{margin-left:auto;color:var(--text-3);font-size:11.5px}
@media(max-width:900px){.fill-confirm-layout{grid-template-columns:1fr}.proj-modal-filters{grid-template-columns:1fr 1fr}.proj-modal-filters .srch{grid-column:1/-1}#proj-modal .modal{width:min(760px,calc(100vw - 32px))}}
@media(max-width:760px){.fill-steps{grid-template-columns:1fr}.fill-step{border-right:0;border-bottom:1px solid var(--border)}}
.role-blocked #fill2-filterbar,.role-blocked .fill-layout,.role-blocked #fill2-submit-dock{display:none!important}
body[data-current-role="viewer"] #page-fill2 .toolbar,body[data-current-role="viewer"] #page-fill2 .bbar,body[data-current-role="viewer"] #page-fill2 .fill-submit-dock,body[data-current-role="viewer"] #page-fill2 .f2cb{display:none!important}
body[data-current-role="viewer"] #page-fill2 .f2in{pointer-events:none;border-color:transparent!important;background:transparent!important;color:var(--text)!important;font-weight:600}
.onboarding-card{position:fixed;right:22px;bottom:22px;z-index:500;width:340px;padding:16px;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 18px 50px rgba(15,23,42,.18);display:none}.onboarding-card.show{display:block;animation:slideUp .24s ease}.onboarding-card h3{margin:0 28px 5px 0;font-size:15px}.onboarding-card p{margin:0 0 12px;color:var(--text-3);font-size:12px}.ob-step{display:flex;gap:9px;padding:8px 0;font-size:12px;color:var(--text-2)}.ob-step i{width:21px;height:21px;flex:0 0 auto;border-radius:50%;background:#E8EEFF;color:var(--accent);display:grid;place-items:center;font-style:normal;font-weight:700}.ob-close{position:absolute;right:12px;top:10px;border:0;background:none;color:var(--text-3);cursor:pointer;font-size:18px}
.dispatch-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.dispatch-step{padding:16px;border:1px solid var(--border);border-radius:12px;background:#fff}.dispatch-step .num{width:27px;height:27px;border-radius:8px;background:#EEE9FF;color:var(--purple);display:grid;place-items:center;font-weight:800;margin-bottom:10px}.dispatch-step h4{margin:0 0 5px;font-size:13px}.dispatch-step p{margin:0 0 12px;color:var(--text-3);font-size:11.5px;line-height:1.55}
.submit-result{font-size:12px;color:var(--text-2);padding:8px 10px;background:#ECFDF3;border:1px solid #ABEFC6;border-radius:8px;margin-top:8px}
@media(max-width:760px){.f2-simple-filter .srch{width:100%;flex:1 0 100%}.f2-advanced{min-width:100%;flex-wrap:wrap}.fill-submit-dock{align-items:flex-start;flex-wrap:wrap}.fill-submit-dock .dock-hint{display:none}.fill-submit-dock .spacer{display:none}.fill-submit-dock .btn{width:100%;min-height:44px}.f2-advanced .fsel{flex:1 1 45%}}
@media(max-width:760px){.role-workbench{align-items:flex-start;flex-wrap:wrap}.rw-actions{width:100%;justify-content:stretch}.rw-actions .btn{flex:1}.dispatch-board{grid-template-columns:1fr}.onboarding-card{left:10px;right:10px;bottom:10px;width:auto}}
@media(max-width:1100px){#dpm-candidates{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media@media(max-width:700px){#dpm-candidates{grid-template-columns:1fr!important}}
.task-type-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.task-type-option{min-height:42px;padding:0 13px;border:1px solid var(--border);border-radius:9px;background:#fff;display:flex!important;align-items:center!important;justify-content:flex-start;gap:9px;font-size:12.5px!important;font-weight:600!important;color:var(--text-2)!important;cursor:pointer;transition:border-color .16s,background .16s,box-shadow .16s}.task-type-option input{width:15px!important;height:15px!important;min-width:15px;margin:0!important;accent-color:var(--accent)}.task-type-option:has(input:checked){border-color:#9DB7FF;background:#F3F6FF;box-shadow:0 0 0 1px rgba(22,119,255,.08)}.task-type-option:has(input:disabled){cursor:not-allowed;opacity:.68}.task-notice-order{margin:0!important;display:flex!important;align-items:flex-start!important;gap:10px!important;padding:12px 14px!important}.task-notice-order .sdot{margin-top:5px;flex:0 0 auto}.task-notice-copy{min-width:0;line-height:1.55}.task-notice-copy b{display:block;margin-bottom:4px}.task-notice-flow{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--text-2);font-size:12px}.task-notice-flow i{font-style:normal;color:var(--accent);font-weight:700}
.task-month-picker{position:relative}.task-month-trigger{width:100%;height:38px;padding:0 11px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);font:inherit;font-size:12.5px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:border-color .16s,box-shadow .16s}.task-month-trigger:hover,.task-month-trigger.open{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.task-month-trigger:disabled{cursor:not-allowed;background:var(--side-2);color:var(--text-3);box-shadow:none;border-color:var(--border)}.task-month-trigger svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}.task-month-pop{display:none;position:absolute;left:0;right:0;top:calc(100% + 7px);z-index:520;padding:12px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 38px rgba(15,23,42,.16);animation:fadeUp .16s ease}.task-month-pop.show{display:block}.task-month-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.task-month-head b{font-family:Rubik;font-size:14px}.task-month-arrow{width:30px;height:30px;border:0;border-radius:8px;background:#F5F7FA;color:var(--text-2);cursor:pointer;font-size:18px}.task-month-arrow:hover{background:var(--accent-soft);color:var(--accent)}.task-month-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.task-month-item{height:34px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-2);font:inherit;font-size:12px;cursor:pointer}.task-month-item:hover{background:#F3F6FF;color:var(--accent)}.task-month-item.active{background:var(--accent);color:#fff;font-weight:700;box-shadow:0 4px 10px rgba(22,119,255,.22)}
.task-period-readonly{height:40px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:#F7F8FA;display:flex;align-items:center;gap:9px;color:var(--text);font-size:13px;font-weight:650}.task-period-readonly .period-icon{width:18px;height:18px;fill:none;stroke:var(--text-3);stroke-width:2}.task-period-readonly .pill{margin-left:auto}
.task-notice-config{border:1px solid #C9D7FF;border-radius:12px;background:#FAFCFF;overflow:hidden}.task-notice-config-head{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid #DDE6FF}.task-notice-config-head b{font-size:13px}.task-notice-config-head span{font-size:11px;color:var(--text-3)}
.task-notice-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:12px 12px 10px}.task-notice-step{position:relative;min-width:0;padding:0 10px 12px;border:0;background:transparent;text-align:left;cursor:pointer;color:var(--text-2);font-family:inherit}.task-notice-step:not(:last-child)::after{content:"";position:absolute;left:36px;right:-7px;top:14px;height:2px;background:#DCE4F2}.task-notice-step .step-num{position:relative;z-index:1;width:28px;height:28px;margin-bottom:8px;border-radius:50%;background:#E9EDF4;color:#65758B;display:grid;place-items:center;font:700 12px Rubik;box-shadow:0 0 0 4px #FAFCFF}.task-notice-step strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.task-notice-step small{display:block;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-3);font-size:10.5px}.task-notice-step:hover strong,.task-notice-step.active strong{color:var(--accent)}.task-notice-step.active .step-num{background:var(--accent);color:#fff;box-shadow:0 0 0 4px #E5EDFF}.task-notice-step.active:not(:last-child)::after{background:#9BB6FF}
.task-step-editor{margin:0 12px 12px;padding:13px;border:1px solid var(--border);border-radius:10px;background:#fff}.task-step-editor-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}.task-step-editor-title b{font-size:13px}.task-step-editor-title span{font-size:10.5px;color:var(--text-3)}.task-step-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}.task-step-editor-grid .field{margin:0}.task-step-editor-grid .message-field{grid-column:1/-1}.task-step-editor textarea{width:100%;min-height:68px;padding:9px 11px;border:1px solid var(--border);border-radius:8px;color:var(--text);font:12.5px/1.55 inherit;resize:vertical;outline:none}.task-step-editor textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.task-link-row{display:flex;align-items:stretch;gap:8px}.task-link-row input{flex:1;min-width:0}.task-link-row .btn{flex:0 0 auto;min-width:92px}.task-link-hint{display:flex!important;align-items:center;gap:5px}.task-link-hint svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}
.task-push-preview{margin-top:12px;padding-top:12px;border-top:1px dashed var(--border)}.task-push-preview-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:12px;font-weight:700}.task-push-preview-head span{margin-left:auto;font-size:10.5px;font-weight:500;color:var(--text-3)}.task-push-card{overflow:hidden;border:1px solid #DCE3EE;border-radius:10px;background:#F5F7FA}.task-push-card-top{display:flex;align-items:center;gap:8px;padding:9px 11px;border-bottom:1px solid #E6EAF0;background:#fff}.task-push-bot{width:27px;height:27px;border-radius:8px;background:linear-gradient(135deg,#1677FF,#7C3AED);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:800}.task-push-card-top b{display:block;font-size:11.5px}.task-push-card-top small{display:block;margin-top:1px;color:var(--text-3);font-size:9.5px}.task-push-card-body{padding:11px}.task-push-card-body h4{margin:0 0 6px;font-size:12.5px}.task-push-message{min-height:36px;color:var(--text-2);font-size:11.5px;line-height:1.55;white-space:pre-wrap}.task-push-meta{display:flex;gap:12px;margin-top:9px;padding-top:8px;border-top:1px solid #E5E7EB;color:var(--text-3);font-size:10.5px}.task-push-action{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:9px}.task-push-link{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--accent);font-size:10.5px}
.dpm-inline-input,.dpm-inline-select{width:100%;min-width:112px;height:34px;padding:0 30px 0 10px;border:1px solid #C9D8F8;border-radius:8px;background:#F8FAFF;color:var(--text);font-family:inherit;font-size:12px;font-weight:600;outline:none;transition:border-color .16s,background .16s,box-shadow .16s}.dpm-inline-input:not(:disabled){cursor:text;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%233370ff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.1 2.1 0 0 1 3 3L8 18l-4 1 1-4Z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center}.dpm-inline-select:not(:disabled){cursor:pointer}.dpm-inline-input:not(:disabled):hover,.dpm-inline-select:not(:disabled):hover{border-color:#7EA2FF;background-color:#fff;box-shadow:0 0 0 2px rgba(22,119,255,.08)}.dpm-inline-input:focus,.dpm-inline-select:focus{border-color:var(--accent);background-color:#fff;box-shadow:0 0 0 3px rgba(22,119,255,.14)}.dpm-inline-input[disabled],.dpm-inline-select[disabled]{padding-right:9px;border-color:transparent;background:#F7F8FA;background-image:none;cursor:default;color:var(--text-2);font-weight:500;opacity:1}.dpm-inline-code{font-family:Rubik;color:var(--text-3);font-size:12px;white-space:nowrap}.dpm-readonly-value{display:inline-flex;align-items:center;min-height:32px;padding:0 9px;color:var(--text-2);font-size:12px;background:#F7F8FA;border:1px solid transparent;border-radius:7px}.dpm-edit-legend{display:flex;align-items:center;gap:7px;color:var(--text-3);font-size:11.5px}.dpm-edit-legend b{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border:1px solid #C9D8F8;border-radius:7px;background:#F3F7FF;color:var(--accent);font-size:11px}.dpm-edit-legend svg,.dpm-editable-head svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.dpm-editable-head{display:inline-flex;align-items:center;gap:5px;color:var(--text-2)}.dpm-editable-head .edit-mark{display:inline-flex;align-items:center;gap:3px;padding:2px 5px;border-radius:5px;background:#EAF1FF;color:var(--accent);font-size:9.5px;font-weight:700}#page-deptprojects:not(.dpm-inline-enabled) .dpm-edit-legend,#page-deptprojects:not(.dpm-inline-enabled) .dpm-editable-head .edit-mark{display:none}#dpm-project-table tbody tr:hover td{background:#FBFCFF}
.dpm-project-edit-cell{position:relative;vertical-align:middle}.dpm-project-cell-value{display:flex;align-items:center;min-height:34px;color:var(--text);line-height:1.45}.dpm-project-edit-control{display:none}.dpm-inline-enabled .dpm-project-edit-cell:not(.is-locked){cursor:pointer}.dpm-inline-enabled .dpm-project-edit-cell:not(.is-locked):hover .dpm-project-edit-control,.dpm-inline-enabled .dpm-project-edit-cell:not(.is-locked):focus-within .dpm-project-edit-control{display:block}.dpm-inline-enabled .dpm-project-edit-cell:not(.is-locked):hover .dpm-project-cell-value,.dpm-inline-enabled .dpm-project-edit-cell:not(.is-locked):focus-within .dpm-project-cell-value{display:none}.dpm-project-edit-cell:focus-within{z-index:31}.dpm-project-edit-cell.is-locked .dpm-project-edit-control{display:none!important}.dpm-project-edit-cell.is-locked .dpm-project-cell-value{display:inline-flex}.dpm-project-edit-cell.is-locked>.pill{margin-left:6px}
.fill-project-adjust-row{display:flex;align-items:center;gap:10px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--border)}.fill-project-adjust-row span{color:var(--text-3);font-size:11.5px}.fill-submitted-readonly .f2in{pointer-events:none;background:#F7F8FA!important;color:var(--text-2)}.fill-submitted-readonly #f2-bbar,.fill-submitted-readonly #fill2-actionbar{pointer-events:none;opacity:.62}.fill-submitted-readonly #fill2-actionbar #fill-check-next-btn{display:none}#page-fill2.fill-scroll-condensed .fill-layout .tbl-scroll{height:650px;max-height:calc(100vh - 128px)}
#page-fillreview .fill-review-filter{position:sticky;top:62px;z-index:35;margin-bottom:10px;background:rgba(255,255,255,.97);backdrop-filter:blur(12px)}#page-fillreview .fill-review-filter .card-body,#page-fillreview .fill-review-actions .card-body{display:flex;align-items:center;gap:8px;flex-wrap:wrap}#page-fillreview .fill-review-status-tabs{display:flex;align-items:center;gap:4px;flex:0 0 100%;padding-bottom:10px;margin-bottom:2px;border-bottom:1px solid var(--border)}#page-fillreview .fill-review-status-tab{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 15px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-2);font-size:12.5px;font-weight:600;cursor:pointer;transition:background .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease}#page-fillreview .fill-review-status-tab:hover{background:#F5F7FA;color:var(--text)}#page-fillreview .fill-review-status-tab.active{color:var(--accent);background:#EEF4FF;border-color:#C9D8FF;box-shadow:0 2px 6px rgba(22,119,255,.12)}#page-fillreview .fill-review-status-tab b{font-family:'Rubik';font-weight:700}#page-fillreview .fill-review-status-tab[data-status="未完成"].active{color:#D46B08;background:#FFF7E6;border-color:#FFD591;box-shadow:0 2px 6px rgba(250,140,22,.12)}#page-fillreview .fill-review-status-tab small{font-size:10px;font-weight:500;opacity:.78}#page-fillreview .fill-review-filter .srch{min-width:220px;flex:1 1 240px}#page-fillreview .fill-review-actions{position:sticky;top:168px;z-index:34;margin-bottom:10px;background:rgba(255,255,255,.97)}#page-fillreview .fill-review-scope{color:var(--text-3);font-size:11.5px}#page-fillreview .fill-review-table-wrap .tbl-scroll{height:calc(100vh - 312px);min-height:480px;overflow:auto}#page-fillreview table{width:max-content;min-width:100%}#page-fillreview th{position:sticky;top:0;z-index:5;background:#F7F8FA;white-space:nowrap}#page-fillreview td{white-space:nowrap}#page-fillreview tr.row-sel td{background:#EEF4FF}.task-done-link{appearance:none;border:0;background:transparent;padding:3px 8px;border-radius:6px;color:inherit;font:inherit;font-weight:700;cursor:pointer;transition:background .18s ease,box-shadow .18s ease}.task-done-link:hover,.task-done-link:focus-visible{background:#EAF1FF;box-shadow:0 0 0 2px #C9D8FF;outline:none}
#page-fillreview .fill-review-status-label{margin-right:6px;color:var(--text-3);font-size:12px;font-weight:700}#page-fillreview .fill-review-status-sticky{position:sticky!important;right:0;z-index:7;min-width:96px;background:#fff!important;box-shadow:-8px 0 12px -12px rgba(31,35,41,.55)}#page-fillreview th.fill-review-status-sticky{z-index:9;background:#F7F8FA!important}#page-fillreview tr.row-sel td.fill-review-status-sticky{background:#EEF4FF!important}
@media(max-width:720px){.task-notice-steps{grid-template-columns:1fr 1fr;row-gap:8px}.task-notice-step:nth-child(2)::after{display:none}.task-step-editor-grid{grid-template-columns:1fr}.task-step-editor-grid .message-field{grid-column:auto}}
@media(max-width:560px){.task-type-options{grid-template-columns:1fr}.task-notice-flow{align-items:flex-start;flex-direction:column}.task-notice-flow i{display:none}}

/* ── Task page local layout correction (2026-08-25)
   Keep V6 functions intact: only edge spacing and operation/table grouping. ── */
body[data-current-page="task"] .main>.content{
  padding:72px 16px 16px!important;
}
body[data-current-page="task"] .main>.content>#page-task.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  box-sizing:border-box!important;
}
#page-task.show>.page-head{
  margin:0 0 16px!important;
}
#page-task.show>.page-head h2{
  font-size:19px;
  line-height:26px;
}
#page-task.show>.page-head p{
  margin-top:4px;
  line-height:22px;
}
#page-task.show>#task-type-seg{
  margin:0 0 16px!important;
}
#page-task.show>#task-worktime{
  overflow:hidden;
  background:#fff;
  border:1px solid var(--border);
  border-radius:8px;
  box-shadow:var(--shadow);
}
#page-task.show>#task-worktime>.card{
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
#page-task.show>#task-worktime>.card>.card-body{
  min-height:64px;
  padding:14px 16px!important;
  border-bottom:1px solid var(--border);
}
#page-task.show>#task-worktime>.tbl-wrap{
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  overflow:hidden!important;
}
#page-task.show>#task-worktime>.tbl-wrap>.card-head{
  min-height:72px;
  padding:16px!important;
  border-bottom:1px solid var(--border);
}
#page-task.show>#task-worktime>.tbl-wrap>.tbl-scroll{
  width:100%;
  max-height:calc(100vh - 292px);
  overflow:auto;
}
#page-task.show>#task-worktime>.tbl-wrap table{
  min-width:100%;
}
#page-task.show>#task-worktime>.tbl-wrap thead th{
  position:sticky;
  top:0;
  z-index:5;
  background:#F7F8FA;
}

/* ── Preserved visual specification overrides from the validated split demo ── */
/* ── IT-Design-System prototype-safe visual layer (2026-08-11)
   Only layout/style is adjusted here. Prototype fields, copy, events and modal/drawer behavior stay intact. ── */
#page-dashboard.show,
#page-summary.show,
#page-cost.show{
  position:relative;
  display:grid;
  grid-template-columns:220px minmax(0,1fr);
  grid-template-rows:auto auto auto minmax(420px,1fr);
  column-gap:0;
  row-gap:0;
  align-items:stretch;
  min-height:calc(100vh - 108px);
}
#page-dashboard.show>.page-head,
#page-summary.show>.page-head,
#page-cost.show>.page-head{
  grid-column:1 / -1;
  grid-row:1;
  margin-bottom:20px;
}
#page-dashboard.show>.page-head h2,
#page-summary.show>.page-head h2,
#page-cost.show>.page-head h2{font-size:16px;line-height:26px;font-weight:500;color:var(--text)}
#page-dashboard.show>.page-head p,
#page-summary.show>.page-head p,
#page-cost.show>.page-head p{font-size:14px;line-height:22px;color:var(--text-2)}

#page-dashboard.show>.tab-strip,
#page-summary.show>.tab-strip,
#page-cost.show>.tab-strip{
  grid-column:1;
  grid-row:2 / 5;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:4px;
  margin:0!important;
  padding:20px 0 24px 24px;
  min-height:560px;
  background:var(--surface);
  border:0;
  border-right:1px solid var(--border);
  border-radius:8px 0 0 8px;
  box-shadow:0 10px 28px rgba(17,24,39,.06);
  z-index:1;
}
#page-dashboard.show>.tab-strip .ts,
#page-summary.show>.tab-strip .ts,
#page-cost.show>.tab-strip .ts{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  width:100%;
  height:32px;
  margin:0;
  padding:0 18px 0 0;
  border:0;
  border-right:2px solid transparent;
  border-radius:0;
  background:transparent;
  color:var(--text-2);
  font-size:14px;
  line-height:22px;
  font-weight:400;
  white-space:nowrap;
}
#page-dashboard.show>.tab-strip .ts.active,
#page-summary.show>.tab-strip .ts.active,
#page-cost.show>.tab-strip .ts.active{
  color:var(--accent);
  border-right-color:var(--accent);
  font-weight:500;
  background:transparent;
}

#page-dashboard.show>.card{
  grid-column:2;
  grid-row:2;
  margin:0!important;
  background:var(--surface);
  border:0;
  border-radius:0 8px 0 0;
  box-shadow:0 10px 28px rgba(17,24,39,.06);
}
#page-dashboard.show>.card .card-body{
  position:static;
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:16px 24px!important;
  align-items:center!important;
  padding:20px 24px!important;
}
#page-dashboard.show>.card .card-body>div:not(.spacer){
  display:grid!important;
  grid-template-columns:auto minmax(0,1fr);
  align-items:center!important;
  gap:8px!important;
  min-width:0;
}
#page-dashboard.show>.card .card-body>div:not(.spacer)>span{
  color:var(--text-2)!important;
  font-size:14px!important;
  line-height:22px!important;
  white-space:nowrap;
}
#page-dashboard.show>.card .card-body>.spacer{display:none!important}
#page-dashboard.show>.card .card-body>span:last-child{
  position:absolute;
  left:32px;
  bottom:24px;
  max-width:160px;
  color:var(--text-2)!important;
  font-size:14px!important;
  line-height:22px!important;
  white-space:normal;
}
#page-dashboard.show .fsel,
#page-dashboard.show .ms,
#page-dashboard.show .ms-btn,
#page-dashboard.show .pseg{width:100%;min-width:0}
#page-dashboard.show .fsel,
#page-dashboard.show .ms-btn{
  height:32px;
  border-color:var(--border);
  background:#F5F6F7;
  border-radius:6px;
  font-size:14px;
}
#page-dashboard.show .pseg{
  height:32px;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  border-radius:6px;
}
#page-dashboard.show>.card>#sumproj-chips{padding:0 24px 16px}
#page-dashboard.show>.tab-strip+div[style*="上方切换"]{
  grid-column:2;
  grid-row:3;
  margin:0!important;
  padding:0 24px 12px;
  background:var(--surface);
  border-top:1px solid var(--border);
  font-size:12px!important;
  line-height:20px;
}
#page-dashboard.show>#sum-view-proj,
#page-dashboard.show>#sum-view-dept{
  grid-column:2;
  grid-row:4;
  margin:0!important;
  min-height:420px;
  background:var(--surface);
  border:0;
  border-radius:0 0 8px 0;
  box-shadow:0 10px 28px rgba(17,24,39,.06);
  padding:0 24px 24px;
}
#page-dashboard.show>#sum-view-proj .tbl-scroll,
#page-dashboard.show>#sum-view-dept .tbl-scroll{border-top:0}

#page-summary.show>.f2-filterbar,
#page-cost.show>.f2-filterbar,
#page-cost.show>.toolbar{
  grid-column:2;
  grid-row:2;
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:16px 24px!important;
  align-items:center;
  margin:0!important;
  padding:20px 24px!important;
  background:var(--surface);
  border:0;
  border-radius:0 8px 0 0;
  box-shadow:0 10px 28px rgba(17,24,39,.06);
}
#page-summary.show>.f2-filterbar>.spacer,
#page-cost.show>.f2-filterbar>.spacer,
#page-cost.show>.toolbar>.spacer{display:none!important}
#page-summary.show>.f2-filterbar .ms,
#page-summary.show>.f2-filterbar .ms-btn,
#page-summary.show>.f2-filterbar .srch,
#page-cost.show>.f2-filterbar .ms,
#page-cost.show>.f2-filterbar .ms-btn,
#page-cost.show>.f2-filterbar .srch,
#page-cost.show>.toolbar .ms,
#page-cost.show>.toolbar .ms-btn,
#page-cost.show>.toolbar .srch,
#page-cost.show>.toolbar .fsel{width:100%;min-width:0}
#page-summary.show>.f2-filterbar .btn,
#page-cost.show>.f2-filterbar .btn,
#page-cost.show>.toolbar .btn{justify-self:end}

#page-summary.show>#st-proj,
#page-summary.show>#st-dept,
#page-summary.show>#st-cmp,
#page-summary.show>#st-bud,
#page-cost.show>#cost-view-overview,
#page-cost.show>#cost-view-detail,
#page-cost.show>#cost-view-detail-box{
  grid-column:2;
  grid-row:3 / 5;
  margin:0!important;
  min-height:520px;
  background:var(--surface);
  border-radius:0 0 8px 0;
  box-shadow:0 10px 28px rgba(17,24,39,.06);
  padding:0 24px 24px;
}
#page-summary.show>#st-proj>.card,
#page-summary.show>#st-proj>.tbl-wrap,
#page-summary.show>#st-dept>.tbl-wrap,
#page-summary.show>#st-cmp>.tbl-wrap,
#page-summary.show>#st-bud>.tbl-wrap,
#page-cost.show .tbl-wrap{
  box-shadow:none;
  border-radius:0;
}

@media(max-width:1080px){
  #page-dashboard.show,
  #page-summary.show,
  #page-cost.show{display:flex;flex-direction:column}
  #page-dashboard.show>.tab-strip,
  #page-summary.show>.tab-strip,
  #page-cost.show>.tab-strip{
    flex-direction:row;
    min-height:0;
    padding:0;
    border-right:0;
    border-bottom:1px solid var(--border);
    border-radius:8px 8px 0 0;
    box-shadow:none;
    overflow:auto;
  }
  #page-dashboard.show>.tab-strip .ts,
  #page-summary.show>.tab-strip .ts,
  #page-cost.show>.tab-strip .ts{
    justify-content:center;
    width:auto;
    padding:0 16px;
    border-right:0;
    border-bottom:2px solid transparent;
  }
  #page-dashboard.show>.tab-strip .ts.active,
  #page-summary.show>.tab-strip .ts.active,
  #page-cost.show>.tab-strip .ts.active{border-bottom-color:var(--accent)}
  #page-dashboard.show>.card .card-body,
  #page-summary.show>.f2-filterbar,
  #page-cost.show>.f2-filterbar,
  #page-cost.show>.toolbar{grid-template-columns:1fr!important}
}

/* ── IT-Design-System 16px spacing + table correction (2026-08-11) ── */
.content{padding:16px!important}
.topbar{padding:0 16px!important}

#page-dashboard.show,
#page-summary.show,
#page-cost.show{
  min-height:calc(100vh - 88px);
}
#page-dashboard.show>.page-head,
#page-summary.show>.page-head,
#page-cost.show>.page-head{
  margin-bottom:16px;
}
#page-dashboard.show>.page-head h2,
#page-summary.show>.page-head h2,
#page-cost.show>.page-head h2{margin-bottom:4px}

#page-dashboard.show>.tab-strip,
#page-summary.show>.tab-strip,
#page-cost.show>.tab-strip{
  padding:16px 0 16px 16px;
  min-height:calc(100vh - 184px);
  box-shadow:none;
}
#page-dashboard.show>.tab-strip .ts,
#page-summary.show>.tab-strip .ts,
#page-cost.show>.tab-strip .ts{
  justify-content:flex-start;
  padding:0 16px;
  overflow:hidden;
  text-overflow:ellipsis;
}

#page-dashboard.show>.card .card-body,
#page-summary.show>.f2-filterbar,
#page-cost.show>.f2-filterbar,
#page-cost.show>.toolbar{
  gap:16px!important;
  padding:16px!important;
}
#page-dashboard.show>.card .card-body{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
#page-summary.show>.f2-filterbar,
#page-cost.show>.f2-filterbar,
#page-cost.show>.toolbar{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
#page-dashboard.show>.card .card-body>span:last-child{
  left:16px;
  bottom:16px;
}
#page-dashboard.show>.tab-strip+div[style*="上方切换"]{
  padding:0 16px 12px;
}
#page-dashboard.show>#sum-view-proj,
#page-dashboard.show>#sum-view-dept,
#page-summary.show>#st-proj,
#page-summary.show>#st-dept,
#page-summary.show>#st-cmp,
#page-summary.show>#st-bud,
#page-cost.show>#cost-view-overview,
#page-cost.show>#cost-view-detail,
#page-cost.show>#cost-view-detail-box{
  padding:0 16px 16px;
  box-shadow:none;
}
#page-dashboard.show>.card,
#page-summary.show>.f2-filterbar,
#page-cost.show>.f2-filterbar,
#page-cost.show>.toolbar,
#page-dashboard.show>#sum-view-proj,
#page-dashboard.show>#sum-view-dept,
#page-summary.show>#st-proj,
#page-summary.show>#st-dept,
#page-summary.show>#st-cmp,
#page-summary.show>#st-bud,
#page-cost.show>#cost-view-overview,
#page-cost.show>#cost-view-detail,
#page-cost.show>#cost-view-detail-box{box-shadow:none}

#page-dashboard.show>#sum-view-proj table,
#page-dashboard.show>#sum-view-dept table,
#page-summary.show table,
#page-cost.show table{
  border-collapse:collapse;
  border-spacing:0;
  width:100%;
  font-size:14px;
  line-height:22px;
}
#page-dashboard.show>#sum-view-proj th,
#page-dashboard.show>#sum-view-dept th,
#page-summary.show th,
#page-cost.show th{
  height:40px;
  padding:9px 12px;
  background:#F5F6F7;
  color:var(--text-2);
  font-size:14px;
  line-height:22px;
  font-weight:500;
  letter-spacing:0;
  text-transform:none;
  border:0;
  border-bottom:1px solid var(--border);
}
#page-dashboard.show>#sum-view-proj td,
#page-dashboard.show>#sum-view-dept td,
#page-summary.show td,
#page-cost.show td{
  height:48px;
  padding:13px 12px;
  color:var(--text);
  font-size:14px;
  line-height:22px;
  border:0;
  border-bottom:1px solid var(--border);
  background:#fff;
}
#page-dashboard.show>#sum-view-proj tbody tr:last-child td,
#page-dashboard.show>#sum-view-dept tbody tr:last-child td,
#page-summary.show tbody tr:last-child td,
#page-cost.show tbody tr:last-child td{border-bottom:none}
#page-dashboard.show>#sum-view-proj tbody tr:hover td,
#page-dashboard.show>#sum-view-dept tbody tr:hover td,
#page-summary.show tbody tr:hover td,
#page-cost.show tbody tr:hover td{background:#FAFBFC}
#page-dashboard.show .num-drill,
#page-summary.show .num-drill,
#page-cost.show .num-drill{
  border-bottom:none!important;
  text-decoration:none!important;
}
#page-dashboard.show .num-drill:hover,
#page-summary.show .num-drill:hover,
#page-cost.show .num-drill:hover{background:transparent!important}
#page-dashboard.show>#sum-view-proj .cost-total td,
#page-dashboard.show>#sum-view-dept .cost-total td,
#page-summary.show .cost-total td,
#page-cost.show .cost-total td{background:#FAFBFC!important;font-weight:600}

@media(max-width:1080px){
  .content{padding:12px!important}
  #page-dashboard.show>.card .card-body,
  #page-summary.show>.f2-filterbar,
  #page-cost.show>.f2-filterbar,
  #page-cost.show>.toolbar{gap:12px!important;padding:12px!important}
  #page-dashboard.show>#sum-view-proj,
  #page-dashboard.show>#sum-view-dept,
  #page-summary.show>#st-proj,
  #page-summary.show>#st-dept,
  #page-summary.show>#st-cmp,
  #page-summary.show>#st-bud,
  #page-cost.show>#cost-view-overview,
  #page-cost.show>#cost-view-detail,
  #page-cost.show>#cost-view-detail-box{padding:0 12px 12px}
}

/* ── Dashboard table-local type filter placement (2026-08-11) ── */
#page-dashboard.show>.card .card-body>div:has(#sum-type-seg){
  position:absolute;
  left:236px;
  top:128px;
  z-index:3;
  width:316px;
  grid-template-columns:auto minmax(0,1fr)!important;
}
#page-dashboard.show>.card .card-body>div:has(#sum-type-seg)>span{font-weight:400}
#page-dashboard.show>.card .card-body>div:has(#sum-type-seg) .pseg{
  background:#F2F3F5;
  border-color:transparent;
}
#page-dashboard.show>.card .card-body>div:has(#sum-type-seg) .pseg button{
  min-width:0;
  height:32px;
  padding:0 8px;
  font-size:14px;
  line-height:20px;
}
#page-dashboard.show>.tab-strip+div[style*="上方切换"]{
  min-height:42px;
  padding:8px 16px 10px 366px!important;
  display:flex;
  align-items:center;
}
#page-dashboard.show>#sum-view-proj,
#page-dashboard.show>#sum-view-dept{padding-top:0}
@media(max-width:1080px){
  #page-dashboard.show>.card .card-body>div:has(#sum-type-seg){position:static;width:auto}
  #page-dashboard.show>.tab-strip+div[style*="上方切换"]{padding:0 12px 12px!important;display:block;min-height:0}
}

/* ── Dashboard filter row above table height fix (2026-08-11) ── */
#page-dashboard.show>.tab-strip+div,
#page-dashboard.show>div:nth-of-type(4){
  height:48px!important;
  min-height:48px!important;
  padding:8px 16px 8px 366px!important;
  display:flex!important;
  align-items:center!important;
}
#page-dashboard.show>.card .card-body>div:has(#sum-type-seg){top:128px}
@media(max-width:1080px){
  #page-dashboard.show>.tab-strip+div,
  #page-dashboard.show>div:nth-of-type(4){height:auto!important;min-height:0!important;padding:0 12px 12px!important;display:block!important}
}

/* ── Dashboard table toolbar separation fix (2026-08-11) ── */
#page-dashboard.show>.tab-strip+div,
#page-dashboard.show>div:nth-of-type(4){
  height:64px!important;
  min-height:64px!important;
  padding:16px 16px 16px 366px!important;
  display:flex!important;
  align-items:center!important;
  background:#fff!important;
  border-top:1px solid var(--border)!important;
  border-bottom:1px solid var(--border)!important;
}
#page-dashboard.show>.card .card-body>div:has(#sum-type-seg){
  top:144px!important;
  left:236px!important;
  height:32px;
}
#page-dashboard.show>#sum-view-proj,
#page-dashboard.show>#sum-view-dept{
  padding-top:16px!important;
}
#page-dashboard.show>#sum-view-proj table,
#page-dashboard.show>#sum-view-dept table{margin-top:0!important}
@media(max-width:1080px){
  #page-dashboard.show>.tab-strip+div,
  #page-dashboard.show>div:nth-of-type(4){height:auto!important;min-height:0!important;padding:0 12px 12px!important;display:block!important;border-top:0!important;border-bottom:0!important}
  #page-dashboard.show>.card .card-body>div:has(#sum-type-seg){position:static!important;height:auto!important}
  #page-dashboard.show>#sum-view-proj,
  #page-dashboard.show>#sum-view-dept{padding-top:0!important}
}

/* ── Dashboard table toolbar note hidden (2026-08-11) ── */
#page-dashboard.show>.tab-strip+div,
#page-dashboard.show>div:nth-of-type(4){
  color:transparent!important;
  font-size:0!important;
  line-height:0!important;
  padding-left:16px!important;
}
#page-dashboard.show>.card .card-body>div:has(#sum-type-seg){
  left:236px!important;
}
@media(max-width:1080px){
  #page-dashboard.show>.tab-strip+div,
  #page-dashboard.show>div:nth-of-type(4){color:var(--text-3)!important;font-size:12px!important;line-height:20px!important}
}

/* ── Dashboard toolbar-to-table gap removed (2026-08-11) ── */
#page-dashboard.show>.tab-strip+div,
#page-dashboard.show>div:nth-of-type(4){
  margin:0!important;
}
#page-dashboard.show>#sum-view-proj,
#page-dashboard.show>#sum-view-dept{
  padding-top:0!important;
}

/* ── Dashboard table row divider continuity fix (2026-08-11) ── */
#page-dashboard.show>#sum-view-proj td.num-drill,
#page-dashboard.show>#sum-view-dept td.num-drill,
#page-summary.show td.num-drill,
#page-cost.show td.num-drill{
  border-bottom:1px solid var(--border)!important;
  text-decoration:none!important;
}
#page-dashboard.show>#sum-view-proj tbody tr:last-child td.num-drill,
#page-dashboard.show>#sum-view-dept tbody tr:last-child td.num-drill,
#page-summary.show tbody tr:last-child td.num-drill,
#page-cost.show tbody tr:last-child td.num-drill{border-bottom:none!important}
#page-dashboard.show>#sum-view-proj .cost-total td.num-drill,
#page-dashboard.show>#sum-view-dept .cost-total td.num-drill,
#page-summary.show .cost-total td.num-drill,
#page-cost.show .cost-total td.num-drill{border-bottom:none!important}


/* ── Dashboard table toolbar border removed (2026-08-11) ── */
#page-dashboard.show>.tab-strip+div,
#page-dashboard.show>div:nth-of-type(4){
  border-top:0!important;
  border-bottom:0!important;
}


/* ── Dashboard nav brand line + filter divider correction (2026-08-11) ── */
.brand{
  border-bottom:0!important;
}
#page-dashboard.show>.tab-strip+div,
#page-dashboard.show>div:nth-of-type(4){
  border-top:1px solid var(--border)!important;
  border-bottom:0!important;
}


/* ── Fill2 SideTabs + filter/table layout completion (2026-08-11) ── */
#page-fill2.show{
  display:grid!important;
  grid-template-columns:184px minmax(0,1fr);
  column-gap:0;
  row-gap:16px;
  align-items:stretch;
}
#page-fill2.show>.page-head,
#page-fill2.show>#fill2-notice{
  grid-column:1 / -1;
}
#page-fill2.show>.page-head{
  margin:0;
}
#page-fill2.show>.page-head h2{
  font-size:16px;
  line-height:26px;
  font-weight:500;
  color:var(--text);
  margin:0 0 4px;
  letter-spacing:0;
}
#page-fill2.show>.page-head p{
  font-size:14px;
  line-height:22px;
  color:var(--text-2);
}
#page-fill2.show>.page-head p[style]{
  font-size:12px!important;
  line-height:20px!important;
}
#page-fill2.show>#fill2-notice{
  margin-top:-4px;
}
#page-fill2.show>.tab-strip{
  grid-column:1;
  grid-row:3;
  align-self:stretch;
  display:flex!important;
  flex-direction:column;
  gap:0!important;
  margin:0!important;
  padding:16px 0;
  min-height:520px;
  background:#fff;
  border:0;
  border-right:1px solid var(--border);
  border-radius:8px 0 0 8px;
  box-shadow:none;
}
#page-fill2.show>.tab-strip .ts{
  position:relative;
  justify-content:flex-start;
  width:100%;
  height:40px;
  padding:0 16px;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--text-2);
  font-size:14px;
  line-height:22px;
  font-weight:400;
  box-shadow:none!important;
}
#page-fill2.show>.tab-strip .ts.active{
  color:var(--accent);
  font-weight:500;
}
#page-fill2.show>.tab-strip .ts.active::after{
  content:'';
  position:absolute;
  right:-1px;
  top:8px;
  width:2px;
  height:24px;
  border-radius:2px 0 0 2px;
  background:var(--accent);
}
#page-fill2.show>#fill2-regular,
#page-fill2.show>#fill2-outsource,
#page-fill2.show>#fill2-dispatch{
  grid-column:2;
  grid-row:3;
  min-width:0;
  background:#fff;
  border-radius:0 8px 8px 0;
  overflow:hidden;
  box-shadow:none;
}
#page-fill2.show .f2-filterbar{
  display:grid;
  grid-template-columns:minmax(180px,1.15fr) repeat(4,minmax(132px,1fr));
  gap:16px;
  align-items:center;
  margin:0;
  padding:16px;
  background:#fff;
  border:0;
  border-bottom:1px solid var(--border);
  border-radius:0;
  box-shadow:none;
}
#page-fill2.show .f2-filterbar .srch,
#page-fill2.show .f2-filterbar .fsel{
  width:100%;
  min-width:0;
}
#page-fill2.show .fill-layout{
  display:block;
  height:auto;
  min-height:0;
  margin:0;
}
#page-fill2.show .fill-main{
  display:flex;
  flex-direction:column;
  min-width:0;
  min-height:520px;
  background:#fff;
}
#page-fill2.show .toolbar{
  margin:0;
  padding:16px;
  background:#fff;
  border:0;
  border-radius:0;
  box-shadow:none;
}
#page-fill2.show .tbl-wrap{
  flex:1;
  min-height:0;
  background:#fff;
  border:0;
  border-radius:0;
  box-shadow:none;
  overflow:hidden;
}
#page-fill2.show .tbl-scroll{
  flex:1;
  min-height:0;
  overflow:auto;
}
#page-fill2.show table{
  width:100%;
  border-collapse:collapse;
  border-spacing:0;
  font-size:14px;
  line-height:22px;
}
#page-fill2.show thead th{
  height:40px;
  padding:9px 12px;
  background:#F5F6F7!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:500!important;
  letter-spacing:0;
  text-transform:none;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
}
#page-fill2.show thead tr:first-child th{
  top:0;
}
#page-fill2.show thead tr:nth-child(2) th{
  top:40px;
}
#page-fill2.show tbody td{
  height:48px;
  padding:13px 12px;
  color:var(--text);
  font-size:14px;
  line-height:22px;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  background:#fff;
}
#page-fill2.show tbody tr:hover td{
  background:#FAFBFC;
}
#page-fill2.show tbody tr:last-child td{
  border-bottom:none!important;
}
#page-fill2.show tbody td[style*='background:#FFFBEB']{
  background:#FFFBEB!important;
}
#page-fill2.show .f2in{
  height:28px;
  border:1px solid var(--border)!important;
  border-radius:6px!important;
  font-size:12px!important;
}
@media(max-width:1080px){
  #page-fill2.show{display:block!important}
  #page-fill2.show>.tab-strip{min-height:0;flex-direction:row;overflow:auto;border-right:0;border-bottom:1px solid var(--border);border-radius:8px 8px 0 0;padding:0}
  #page-fill2.show>.tab-strip .ts{width:auto;min-width:96px;justify-content:center}
  #page-fill2.show>.tab-strip .ts.active::after{left:16px;right:16px;top:auto;bottom:0;width:auto;height:2px;border-radius:2px}
  #page-fill2.show>#fill2-regular,
  #page-fill2.show>#fill2-outsource,
  #page-fill2.show>#fill2-dispatch{border-radius:0 0 8px 8px}
  #page-fill2.show .f2-filterbar{grid-template-columns:1fr}
}


/* ── Fill2 located project column light-blue highlight (2026-08-11) ── */
#page-fill2.show table th.f2col-hl,
#page-fill2.show table td.f2col-hl{
  background:#ECF4FF!important;
  box-shadow:none!important;
}
#page-fill2.show table td.f2col-hl .f2in{
  background:#FFFFFF!important;
  border-color:#ADC6FF!important;
}


/* ── V4 fill2 role cards and pagination (2026-08-11) ── */
.role-card{display:none;border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:12px 14px;margin:0 16px 12px}
.role-card.show{display:block}
.role-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:10px}
.role-card-item{padding:9px 10px;border-radius:8px;background:var(--side-2);min-width:0}
.role-card-item span{display:block;font-size:10.5px;color:var(--text-3);margin-bottom:4px}
.role-card-item b{font-size:12px;line-height:1.45}
.scope-locked{background:#F8FAFC!important;color:var(--text-3)!important}
.scope-locked input{background:#F1F5F9!important;color:#94A3B8!important}
.scope-allowed{background:#F0FDF4!important;box-shadow:inset 0 0 0 1px #86EFAC}
.scope-allowed input{border-color:#4ADE80!important;background:#fff!important}
.fill-pagination{display:flex;align-items:center;gap:8px;padding:10px 16px;border-top:1px solid var(--border);font-size:12px;color:var(--text-3);background:#fff}
.fill-pagination select{height:28px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text-2);font:inherit;padding:0 8px}
.fill-page-btn{height:28px;padding:0 10px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text-2);font:inherit;cursor:pointer}
.fill-page-btn:disabled{opacity:.45;cursor:not-allowed}
.lk-cell{background:#F8FAFC!important}
.f2in.lk{background:#F1F5F9!important;color:#94A3B8!important}
@media(max-width:1000px){.role-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ── V4 adjustment page spacing aligned with fill pages (2026-08-11) ── */
#page-adjustment.show{
  padding:0 16px 16px;
}
#page-adjustment.show>.page-head{
  margin-bottom:16px;
}



/* ── Fill2 active panel and SideTabs alignment repair (2026-08-11) ── */
#page-fill2.show{
  grid-template-rows:auto auto minmax(520px,auto);
}
#page-fill2.show>#fill2-regular,
#page-fill2.show>#fill2-outsource,
#page-fill2.show>#fill2-dispatch{
  display:none;
  flex-direction:column;
  align-self:stretch;
  min-height:520px;
}
#page-fill2.show>#fill2-regular.active-panel,
#page-fill2.show>#fill2-outsource.active-panel,
#page-fill2.show>#fill2-dispatch.active-panel{
  display:flex!important;
}
#page-fill2.show>#fill2-regular>.f2-filterbar,
#page-fill2.show>#fill2-outsource>.f2-filterbar,
#page-fill2.show>#fill2-dispatch>.f2-filterbar,
#page-fill2.show>#fill2-regular>.role-card{
  flex:0 0 auto;
}
#page-fill2.show>#fill2-regular>.fill-layout,
#page-fill2.show>#fill2-outsource>.fill-layout,
#page-fill2.show>#fill2-dispatch>.fill-layout{
  flex:1;
  display:flex;
  min-height:0;
  margin:0;
}
#page-fill2.show>#fill2-regular>.fill-layout>.fill-main,
#page-fill2.show>#fill2-outsource>.fill-layout>.fill-main,
#page-fill2.show>#fill2-dispatch>.fill-layout>.fill-main{
  flex:1;
  min-height:0;
}
#page-fill2.show>#fill2-regular>.fill-layout .tbl-wrap,
#page-fill2.show>#fill2-outsource>.fill-layout .tbl-wrap,
#page-fill2.show>#fill2-dispatch>.fill-layout .tbl-wrap{
  flex:1 1 auto;
}


/* ── Fill2 visible panel guard (2026-08-11) ── */
#page-fill2.show>#fill2-regular[style*="display: flex"],
#page-fill2.show>#fill2-outsource[style*="display: flex"],
#page-fill2.show>#fill2-dispatch[style*="display: flex"]{
  display:flex!important;
  flex-direction:column!important;
}


/* ── Nav selected-state fallback by current page (2026-08-11) ── */
body[data-page="fill2"] .menu .mitem[onclick="go('fill2')"]{
  background:#EAF2FF;
  color:var(--accent);
  font-weight:600;
}
body[data-page="fill2"] .menu .mitem[onclick="go('fill2')"] svg{
  stroke:var(--accent);
}
body[data-page="fill2"] .menu .mitem[onclick="go('fill2')"]::before{
  content:'';
  position:absolute;
  left:0;
  top:10px;
  bottom:10px;
  width:3px;
  border-radius:0 3px 3px 0;
  background:var(--accent);
}


/* ── Fill2 notice compact closable rows (2026-08-12) ── */
#page-fill2.show>#fill2-notice{
  display:block;
  margin-top:-4px;
}
#page-fill2.show>#fill2-notice .f2n-reg,
#page-fill2.show>#fill2-notice .f2n-out{
  gap:4px;
}
#page-fill2.show>#fill2-notice .f2n-reg:not([style*="display: none"]),
#page-fill2.show>#fill2-notice .f2n-out:not([style*="display: none"]){
  display:flex;
  flex-direction:column;
}
#page-fill2.show>#fill2-notice .sbar{
  min-height:28px;
  height:28px;
  padding:0 16px;
  margin:0!important;
  border:0!important;
  box-shadow:none!important;
  border-radius:8px;
  gap:8px;
  font-size:12px;
  line-height:20px;
  overflow:hidden;
}
#page-fill2.show>#fill2-notice .sdot{
  width:6px;
  height:6px;
  flex:0 0 6px;
}
#page-fill2.show>#fill2-notice .sbar-x{
  width:20px;
  height:20px;
  padding:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-left:8px;
}
#page-fill2.show>#fill2-notice .btn.sm{
  height:24px;
  min-height:24px;
  padding:0 10px;
  border:0!important;
  box-shadow:none!important;
}


/* ── Fill2 fixed viewport: only table area scrolls (2026-08-12) ── */
body[data-page="fill2"]{
  overflow:hidden;
}
body[data-page="fill2"] .layout{
  height:100vh;
  min-height:100vh;
  overflow:hidden;
}
body[data-page="fill2"] .main{
  height:100vh;
  min-height:0;
  overflow:hidden;
}
body[data-page="fill2"] .content{
  flex:1 1 auto;
  min-height:0;
  height:calc(100vh - 56px);
  overflow:hidden!important;
  padding:16px!important;
}
#page-fill2.show{
  height:100%;
  min-height:0;
  overflow:hidden;
  grid-template-rows:auto auto minmax(0,1fr)!important;
  row-gap:16px;
}
#page-fill2.show>.tab-strip,
#page-fill2.show>#fill2-regular,
#page-fill2.show>#fill2-outsource,
#page-fill2.show>#fill2-dispatch{
  min-height:0!important;
  height:auto;
  overflow:hidden;
}
#page-fill2.show>#fill2-regular.active-panel,
#page-fill2.show>#fill2-outsource.active-panel,
#page-fill2.show>#fill2-dispatch.active-panel{
  min-height:0!important;
  height:auto;
  overflow:hidden;
}
#page-fill2.show>#fill2-regular>.fill-layout,
#page-fill2.show>#fill2-outsource>.fill-layout,
#page-fill2.show>#fill2-dispatch>.fill-layout{
  min-height:0!important;
  height:auto;
  flex:1 1 auto;
  overflow:hidden;
}
#page-fill2.show>#fill2-regular>.fill-layout>.fill-main,
#page-fill2.show>#fill2-outsource>.fill-layout>.fill-main,
#page-fill2.show>#fill2-dispatch>.fill-layout>.fill-main{
  min-height:0!important;
  height:auto;
  overflow:hidden;
}
#page-fill2.show .tbl-wrap{
  min-height:0!important;
  overflow:hidden!important;
}
#page-fill2.show .tbl-scroll{
  min-height:0!important;
  height:100%;
  overflow:auto!important;
  overscroll-behavior:contain;
}
/* ── SideTabs compact width: 16px horizontal padding (2026-08-12) ── */
#page-dashboard.show,
#page-summary.show,
#page-cost.show,
#page-fill2.show{
  grid-template-columns:max-content minmax(0,1fr)!important;
}
#page-dashboard.show>.tab-strip,
#page-summary.show>.tab-strip,
#page-cost.show>.tab-strip,
#page-fill2.show>.tab-strip{
  width:max-content!important;
  min-width:0!important;
}
#page-dashboard.show>.tab-strip .ts,
#page-summary.show>.tab-strip .ts,
#page-cost.show>.tab-strip .ts,
#page-fill2.show>.tab-strip .ts{
  width:auto!important;
  padding:0 16px!important;
  white-space:nowrap!important;
}

/* ── Fill2 table area divider emphasis (2026-08-12) ── */
#page-fill2.show thead tr:first-child th{
  border-top:1px solid #D4D7DD!important;
}
/* ── Fill2 toolbar secondary button normalization (2026-08-12) ── */
#page-fill2.show .toolbar .btn.secondary,
#page-fill2.show .toolbar .btn.outline.secondary{
  background:#F2F3F5!important;
  color:rgba(17,17,17,.8)!important;
  border-color:#F2F3F5!important;
  box-shadow:none!important;
}
#page-fill2.show .toolbar .btn.secondary:hover,
#page-fill2.show .toolbar .btn.outline.secondary:hover{
  background:#E5E6EB!important;
  color:rgba(17,17,17,.8)!important;
  border-color:#E5E6EB!important;
}
#page-fill2.show .toolbar .btn.secondary svg,
#page-fill2.show .toolbar .btn.outline.secondary svg{
  stroke:currentColor;
}



/* ── ColumnSettings drawer: common table column configuration (2026-08-12) ── */
.column-settings-drawer{width:720px;max-width:min(94vw,720px)}
.column-settings-head{height:56px;align-items:center;padding:0 24px}.column-settings-head h3{margin:0;font-size:16px;line-height:24px}
.column-settings-body{padding:0;overflow:auto}.column-settings-grid{display:grid;grid-template-columns:1fr 1fr;min-height:100%}
.column-settings-pane{padding:18px 24px 24px;min-width:0}.column-settings-pane:first-child{border-right:1px solid var(--border)}
.column-settings-pane-head{height:24px;display:flex;align-items:center;gap:12px;margin-bottom:10px;font-size:14px;line-height:22px;color:var(--text)}
.column-settings-pane-head b{font-weight:600}.column-settings-pane-head button{margin-left:auto;border:0;background:none;padding:0;color:var(--accent);font:inherit;font-size:13px;line-height:22px;cursor:pointer}
.column-settings-search{height:32px;border:1px solid var(--border);border-radius:6px;background:#fff;display:flex;align-items:center;gap:8px;padding:0 10px;margin-bottom:10px}
.column-settings-search svg{width:14px;height:14px;stroke:#A8ABB2;fill:none;stroke-width:2;flex-shrink:0}.column-settings-search input{border:0;outline:0;background:transparent;width:100%;height:30px;font:inherit;font-size:13px;color:var(--text)}
.column-settings-list{display:flex;flex-direction:column;gap:2px}.column-settings-row{height:34px;border-radius:6px;display:flex;align-items:center;gap:8px;padding:0 10px;font-size:13px;color:var(--text-2);cursor:pointer}.column-settings-row:hover{background:#F7F8FA}.column-settings-row input{width:14px;height:14px;accent-color:var(--accent)}
.column-settings-empty{height:48px;display:flex;align-items:center;color:var(--text-3);font-size:13px}.column-settings-selected{display:flex;flex-direction:column;gap:8px}.column-settings-card{height:40px;border:1px solid var(--border);border-radius:6px;background:#fff;display:flex;align-items:center;gap:10px;padding:0 10px;font-size:13px;color:var(--text-2)}
.column-settings-drag{width:12px;color:#C9CDD4;font-size:18px;line-height:1;letter-spacing:-2px;cursor:grab}.column-settings-card span:nth-child(2){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.column-settings-remove{border:0;background:none;color:#C9CDD4;font-size:16px;line-height:1;cursor:pointer;padding:2px}.column-settings-remove:hover{color:var(--text-2)}
.column-settings-foot .btn.secondary{background:#F2F3F5;color:rgba(17,17,17,.8);border-color:#F2F3F5;box-shadow:none}.column-settings-foot .btn{min-width:64px;height:32px;border-radius:6px}

/* -- Fill2 sticky column scroll shadows (2026-08-12) -- */
#page-fill2.show th.sc0,
#page-fill2.show th.sc1,
#page-fill2.show th.sc2{
  z-index:16!important;
  background:var(--side-2)!important;
  background-clip:padding-box;
}
#page-fill2.show td.sc0,
#page-fill2.show td.sc1,
#page-fill2.show td.sc2{
  z-index:6!important;
  background:#fff!important;
  background-clip:padding-box;
}
#page-fill2.show th.sc2,
#page-fill2.show td.sc2{
  box-shadow:8px 0 14px -10px rgba(31,35,41,.42)!important;
}
#page-fill2.show th.col-sum,
#page-fill2.show th.col-badge{
  z-index:16!important;
  background:var(--side-2)!important;
  background-clip:padding-box;
}
#page-fill2.show td.col-sum,
#page-fill2.show td.col-badge{
  z-index:6!important;
  background:#fff!important;
  background-clip:padding-box;
}
#page-fill2.show th.col-sum,
#page-fill2.show td.col-sum,
#page-fill2.show th.col-badge,
#page-fill2.show td.col-badge{
  box-shadow:-8px 0 14px -10px rgba(31,35,41,.42)!important;
}
#page-fill2.show tbody tr:hover td.sc0,
#page-fill2.show tbody tr:hover td.sc1,
#page-fill2.show tbody tr:hover td.sc2,
#page-fill2.show tbody tr.row-sel td.sc0,
#page-fill2.show tbody tr.row-sel td.sc1,
#page-fill2.show tbody tr.row-sel td.sc2{
  background:var(--accent-soft2)!important;
}
#page-fill2.show tbody tr:hover td.sc2,
#page-fill2.show tbody tr.row-sel td.sc2{
  box-shadow:8px 0 14px -10px rgba(31,35,41,.42)!important;
}
#page-fill2.show tbody tr:hover td.col-sum,
#page-fill2.show tbody tr:hover td.col-badge,
#page-fill2.show tbody tr.row-sel td.col-sum,
#page-fill2.show tbody tr.row-sel td.col-badge{
  background:var(--accent-soft2)!important;
  box-shadow:-8px 0 14px -10px rgba(31,35,41,.42)!important;
}

/* -- Fill2 table header single-line labels (2026-08-12) -- */
#page-fill2.show thead th{
  white-space:nowrap!important;
  word-break:keep-all!important;
}
#page-fill2.show thead th[data-proj]{
  min-width:112px!important;
  max-width:none!important;
  line-height:22px!important;
  vertical-align:middle!important;
}

/* -- SideTabs active rail top layer (2026-08-12) -- */
#page-dashboard.show>.tab-strip,
#page-summary.show>.tab-strip,
#page-cost.show>.tab-strip,
#page-fill2.show>.tab-strip{
  position:relative!important;
  z-index:20!important;
  overflow:visible!important;
}
#page-dashboard.show>.tab-strip .ts,
#page-summary.show>.tab-strip .ts,
#page-cost.show>.tab-strip .ts,
#page-fill2.show>.tab-strip .ts{
  position:relative!important;
  z-index:1!important;
  overflow:visible!important;
}
#page-dashboard.show>.tab-strip .ts.active,
#page-summary.show>.tab-strip .ts.active,
#page-cost.show>.tab-strip .ts.active,
#page-fill2.show>.tab-strip .ts.active{
  z-index:22!important;
}
#page-dashboard.show>.tab-strip .ts.active::after,
#page-summary.show>.tab-strip .ts.active::after,
#page-cost.show>.tab-strip .ts.active::after,
#page-fill2.show>.tab-strip .ts.active::after{
  z-index:30!important;
  pointer-events:none;
}

/* -- Fill2 locate column button soft blue (2026-08-12) -- */
#page-fill2.show>#fill2-notice .locate-col-btn{
  height:24px!important;
  padding:0 12px!important;
  border:0!important;
  background:#E8F1FF!important;
  color:var(--accent)!important;
  border-radius:6px!important;
  box-shadow:none!important;
  font-size:12px!important;
  line-height:20px!important;
  font-weight:500!important;
}
#page-fill2.show>#fill2-notice .locate-col-btn:hover{
  background:#DCEAFF!important;
  color:var(--accent)!important;
}

/* -- Fill2 sticky column gradient shadow band (2026-08-12) -- */
#page-fill2.show th.sc2,
#page-fill2.show td.sc2,
#page-fill2.show th.col-sum,
#page-fill2.show td.col-sum,
#page-fill2.show th.col-badge,
#page-fill2.show td.col-badge{
  overflow:visible!important;
}
#page-fill2.show th.sc2::after,
#page-fill2.show td.sc2::after{
  content:'';
  position:absolute;
  top:0;
  right:-18px;
  width:18px;
  height:100%;
  pointer-events:none;
  background:linear-gradient(90deg,rgba(31,35,41,.18),rgba(31,35,41,.08) 46%,rgba(31,35,41,0));
  z-index:2;
}
#page-fill2.show th.col-sum::before,
#page-fill2.show td.col-sum::before,
#page-fill2.show th.col-badge::before,
#page-fill2.show td.col-badge::before{
  content:'';
  position:absolute;
  top:0;
  left:-18px;
  width:18px;
  height:100%;
  pointer-events:none;
  background:linear-gradient(270deg,rgba(31,35,41,.18),rgba(31,35,41,.08) 46%,rgba(31,35,41,0));
  z-index:2;
}


/* -- Fill2 compact notice borders (2026-08-12) -- */
#page-fill2.show>#fill2-notice .sbar{
  border:1px solid transparent!important;
  box-shadow:0 1px 2px rgba(31,35,41,.04)!important;
}
#page-fill2.show>#fill2-notice .sbar.red{
  border-color:#F8B4B4!important;
}
#page-fill2.show>#fill2-notice .sbar.amber{
  border-color:#FFD59A!important;
}
#page-fill2.show>#fill2-notice .sbar.green{
  border-color:#B7E5A8!important;
}
#page-fill2.show>#fill2-notice .sbar.blue{
  border-color:#B3CCFF!important;
}

/* -- Adjustment page notice bubble aligned with Fill2 (2026-08-12) -- */
#page-adjustment.show>.sbar.blue{
  min-height:28px!important;
  height:28px!important;
  padding:0 16px!important;
  margin-bottom:14px!important;
  border:1px solid #B3CCFF!important;
  border-radius:8px!important;
  box-shadow:0 1px 2px rgba(31,35,41,.04)!important;
  gap:8px!important;
  font-size:12px!important;
  line-height:20px!important;
  overflow:hidden!important;
}
#page-adjustment.show>.sbar.blue .sdot{
  width:6px!important;
  height:6px!important;
  flex:0 0 6px!important;
}

/* -- Adjustment main table operation column sticky tail (2026-08-12) -- */
#page-adjustment.show>.tbl-wrap>.tbl-scroll>table th:last-child,
#page-adjustment.show>.tbl-wrap>.tbl-scroll>table td:last-child{
  position:sticky!important;
  right:0!important;
  min-width:190px!important;
  white-space:nowrap!important;
  background-clip:padding-box!important;
}
#page-adjustment.show>.tbl-wrap>.tbl-scroll>table th:last-child{
  z-index:12!important;
  background:var(--side-2)!important;
}
#page-adjustment.show>.tbl-wrap>.tbl-scroll>table td:last-child{
  z-index:6!important;
  background:#fff!important;
  box-shadow:-8px 0 14px -10px rgba(31,35,41,.42)!important;
}
#page-adjustment.show>.tbl-wrap>.tbl-scroll>table th:last-child::before,
#page-adjustment.show>.tbl-wrap>.tbl-scroll>table td:last-child::before{
  content:'';
  position:absolute;
  top:0;
  left:-18px;
  width:18px;
  height:100%;
  pointer-events:none;
  background:linear-gradient(270deg,rgba(31,35,41,.16),rgba(31,35,41,.07) 46%,rgba(31,35,41,0));
  z-index:2;
}


/* -- Adjustment filter and table integrated container (2026-08-12) -- */
#page-adjustment.show>.adj-list-card{
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-radius:var(--radius)!important;
  box-shadow:var(--shadow)!important;
  overflow:hidden!important;
  margin-bottom:14px!important;
}
#page-adjustment.show>.adj-list-card .adj-filterbar{
  min-height:62px!important;
  padding:14px 16px!important;
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  flex-wrap:wrap!important;
  border-bottom:1px solid #D8DEE8!important;
  background:#fff!important;
}
#page-adjustment.show>.adj-list-card .adj-filterbar .fsel,
#page-adjustment.show>.adj-list-card .adj-filterbar .srch{
  height:32px!important;
}
#page-adjustment.show>.adj-list-card .adj-filterbar .srch input{
  height:32px!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap{
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  margin:0!important;
  background:#fff!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap>.tbl-scroll{
  overflow:auto!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap table{
  min-width:1320px!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap>.tbl-scroll>table th:last-child,
#page-adjustment.show>.adj-list-card .adj-table-wrap>.tbl-scroll>table td:last-child{
  position:sticky!important;
  right:0!important;
  min-width:190px!important;
  white-space:nowrap!important;
  background-clip:padding-box!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap>.tbl-scroll>table th:last-child{
  z-index:12!important;
  background:var(--side-2)!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap>.tbl-scroll>table td:last-child{
  z-index:6!important;
  background:#fff!important;
  box-shadow:-8px 0 14px -10px rgba(31,35,41,.42)!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap>.tbl-scroll>table th:last-child::before,
#page-adjustment.show>.adj-list-card .adj-table-wrap>.tbl-scroll>table td:last-child::before{
  content:'';
  position:absolute;
  top:0;
  left:-18px;
  width:18px;
  height:100%;
  pointer-events:none;
  background:linear-gradient(270deg,rgba(31,35,41,.16),rgba(31,35,41,.07) 46%,rgba(31,35,41,0));
  z-index:2;
}

/* -- Adjustment report path and ledger integrated block (2026-08-12) -- */
#page-adjustment.show>.adj-report-card{
  overflow:hidden!important;
}
#page-adjustment.show>.adj-report-card>.card-head{
  border-bottom:1px solid #D8DEE8!important;
}
#page-adjustment.show>.adj-report-card .adj-report-body{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:12px!important;
  padding:16px!important;
}
#page-adjustment.show>.adj-report-card .adj-report-path{
  padding:12px!important;
  border:1px solid var(--border)!important;
  border-radius:9px!important;
  background:#fff!important;
}
#page-adjustment.show>.adj-report-card .adj-ledger-section{
  border-top:1px solid #D8DEE8!important;
  background:#fff!important;
}
#page-adjustment.show>.adj-report-card .adj-ledger-section>.card-head{
  min-height:48px!important;
  border-bottom:1px solid #D8DEE8!important;
}
#page-adjustment.show>.adj-report-card .adj-ledger-scroll{
  max-height:260px!important;
  overflow:auto!important;
}
#page-adjustment.show>.adj-report-card .adj-ledger-scroll table{
  min-width:760px!important;
}
#page-adjustment.show>.adj-report-card .adj-ledger-scroll th,
#page-adjustment.show>.adj-report-card .adj-ledger-scroll td{
  height:42px!important;
}


/* -- Summary fixed viewport: page shell locked, only active content pane scrolls (2026-08-12) -- */
body[data-page="summary"]{
  overflow:hidden!important;
}
body[data-page="summary"] .layout{
  height:100vh!important;
  min-height:100vh!important;
  overflow:hidden!important;
}
body[data-page="summary"] .main{
  height:100vh!important;
  min-height:0!important;
  overflow:hidden!important;
}
body[data-page="summary"] .content{
  flex:1 1 auto!important;
  height:calc(100vh - 56px)!important;
  min-height:0!important;
  overflow:hidden!important;
  padding:16px!important;
}
#page-summary.show{
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
  grid-template-columns:max-content minmax(0,1fr)!important;
  grid-template-rows:auto auto minmax(0,1fr)!important;
  row-gap:0!important;
  column-gap:0!important;
}
#page-summary.show>.page-head{
  grid-column:1 / -1!important;
  grid-row:1!important;
  margin:0 0 16px!important;
  min-height:0!important;
}
#page-summary.show>.tab-strip{
  grid-column:1!important;
  grid-row:2 / 4!important;
  min-height:0!important;
  height:auto!important;
  align-self:stretch!important;
  overflow:visible!important;
}
#page-summary.show>.f2-filterbar{
  grid-column:2!important;
  grid-row:2!important;
  min-height:64px!important;
  margin:0!important;
  border-bottom:1px solid #D8DEE8!important;
  border-radius:0 8px 0 0!important;
  box-shadow:none!important;
}
#page-summary.show>#st-proj,
#page-summary.show>#st-dept,
#page-summary.show>#st-cmp,
#page-summary.show>#st-bud{
  grid-column:2!important;
  grid-row:3!important;
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  overflow:auto!important;
  overscroll-behavior:contain;
  border-radius:0 0 8px 0!important;
}
#page-summary.show>#st-proj>.card{
  flex:0 0 auto!important;
}
#page-summary.show>#st-proj>.tbl-wrap{
  max-height:none!important;
}


/* -- Summary TOP10 card header action alignment (2026-08-12) -- */
#page-summary.show>#st-proj>.card:first-child>.card-head{
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  min-height:56px!important;
  padding:14px 18px!important;
}
#page-summary.show>#st-proj>.card:first-child>.card-head h3{
  flex:0 0 auto!important;
  margin:0!important;
}
#page-summary.show>#st-proj>.card:first-child>.card-head .btn{
  margin-left:auto!important;
  flex:0 0 auto!important;
}

/* -- Summary cross tip + expand toolbar (2026-08-12) -- */
#page-summary.show > #st-dept .summary-cross-tip {
  height: 28px !important;
  min-height: 28px !important;
  margin: 0 0 10px !important;
  padding: 0 16px !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  border: 1px solid #b8ccff !important;
  border-radius: 8px !important;
  background: #eef4ff !important;
  box-shadow: 0 1px 2px rgba(47, 107, 255, 0.08) !important;
  color: #2f6bff !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  line-height: 20px !important;
  white-space: nowrap !important;
  overflow: hidden !important;
}

#page-summary.show > #st-dept .summary-cross-tip .sdot {
  width: 6px !important;
  height: 6px !important;
  flex: 0 0 6px !important;
  background: #2f6bff !important;
}

#page-summary.show > #st-dept .summary-cross-toolbar {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 8px !important;
  margin: 0 0 10px !important;
}

#page-summary.show > #st-dept .summary-cross-toolbar .btn.secondary {
  height: 28px !important;
  min-width: 76px !important;
  padding: 0 14px !important;
  border: 0 !important;
  border-radius: 6px !important;
  background: #f2f3f5 !important;
  color: #4e5969 !important;
  box-shadow: none !important;
  font-size: 12px !important;
  font-weight: 600 !important;
}

#page-summary.show > #st-dept .summary-cross-toolbar .btn.secondary:hover {
  background: #e5e6eb !important;
  color: #1d2129 !important;
}

/* -- Summary cross first column tree spacing (2026-08-12) -- */
#page-summary.show #dept-cross-body td:first-child > div {
  gap: 6px !important;
  min-width: 0 !important;
  white-space: nowrap !important;
}

#page-summary.show #dept-cross-body .dt-caret {
  width: 14px !important;
  height: 14px !important;
  flex: 0 0 14px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  line-height: 1 !important;
  color: #4e5969 !important;
}

#page-summary.show #dept-cross-body .dt-caret svg {
  width: 12px !important;
  height: 12px !important;
  display: block !important;
  flex: 0 0 12px !important;
}

#page-summary.show #dept-cross-body td:first-child > div > span:last-child {
  display: inline-block !important;
  min-width: 0 !important;
  line-height: 20px !important;
  white-space: nowrap !important;
}


/* -- Fill2 grouped table header inner divider (2026-08-12) -- */
#page-fill2.show thead tr:first-child th:not([rowspan]){
  border-bottom:1px solid #D8DEE8!important;
}
#page-fill2.show thead tr:nth-child(2) th{
  border-top:1px solid #D8DEE8!important;
}


/* -- Budget fill unified filter/action/table card (2026-08-12) -- */
#page-budget.show .budget-unified{
  margin-top:14px!important;
  background:var(--surface)!important;
  border:1px solid var(--border)!important;
  border-radius:8px!important;
  box-shadow:var(--shadow)!important;
  overflow:hidden!important;
}
#page-budget.show .budget-unified>#budget-filter,
#page-budget.show .budget-unified>#budget-actions{
  margin:0!important;
  padding:12px 16px!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  background:var(--surface)!important;
}
#page-budget.show .budget-unified>#budget-filter,
#page-budget.show .budget-unified>#budget-actions{
  border-bottom:1px solid #D8DEE8!important;
}
#page-budget.show .budget-unified>#budget-filter{
  min-height:64px!important;
}
#page-budget.show .budget-unified>#budget-actions{
  min-height:56px!important;
}
#page-budget.show .budget-unified>#budget-actions .budget-secondary-action,
#page-budget.show .budget-unified>#budget-actions .btn.ghost{
  background:#F2F3F5!important;
  color:rgba(17,17,17,.8)!important;
  border-color:#F2F3F5!important;
  box-shadow:none!important;
}
#page-budget.show .budget-unified>#budget-actions .budget-secondary-action:hover,
#page-budget.show .budget-unified>#budget-actions .btn.ghost:hover{
  background:#E5E6EB!important;
  color:rgba(17,17,17,.8)!important;
  border-color:#E5E6EB!important;
}
#page-budget.show .budget-unified>.tbl-wrap{
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  background:var(--surface)!important;
}
#page-budget.show .budget-unified .tbl-scroll{
  border-top:0!important;
}
#page-budget.show .budget-unified table th,
#page-budget.show .budget-unified table td{
  border-bottom:1px solid #E5E6EB!important;
}
#page-budget.show .budget-unified table tbody tr:last-child td{
  border-bottom:0!important;
}
#page-budget.show .budget-footnote{
  margin:0!important;
  padding:10px 16px!important;
  border-top:1px solid #D8DEE8!important;
  background:var(--surface)!important;
  color:var(--text-3)!important;
  font-size:11.5px!important;
  line-height:20px!important;
}


/* -- Adjustment list: filter/action/table unified layout correction (2026-08-12) -- */
#page-adjustment.show>.adj-list-card{
  border:1px solid var(--border)!important;
  border-radius:8px!important;
  overflow:hidden!important;
}
#page-adjustment.show>.adj-list-card .adj-filterbar{
  min-height:58px!important;
  padding:12px 16px!important;
  border-bottom:1px solid #D8DEE8!important;
  border-radius:0!important;
  box-shadow:none!important;
}
#page-adjustment.show>.adj-list-card .adj-actionbar{
  min-height:56px!important;
  padding:12px 16px!important;
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  border-bottom:1px solid #D8DEE8!important;
  background:#fff!important;
}
#page-adjustment.show>.adj-list-card .adj-actionbar .btn.ghost{
  background:#F2F3F5!important;
  color:rgba(17,17,17,.8)!important;
  border-color:#F2F3F5!important;
  box-shadow:none!important;
}
#page-adjustment.show>.adj-list-card .adj-actionbar .btn.ghost:hover{
  background:#E5E6EB!important;
  color:rgba(17,17,17,.8)!important;
  border-color:#E5E6EB!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap{
  border-top:0!important;
}


/* -- Adjustment table gutter final correction (2026-08-12) -- */
#page-adjustment.show>.adj-list-card .adj-table-wrap{
  padding:12px 16px 0!important;
  background:#fff!important;
  border-top:0!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap>.tbl-scroll{
  width:100%!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap>.tbl-scroll table{
  margin:0!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap tbody td:last-child .btn{
  height:auto!important;
  min-height:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#2F6BFF!important;
  font-weight:600!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap tbody td:last-child .btn + .btn{
  margin-left:16px!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap tbody td:last-child .btn.danger{
  color:#EF4444!important;
}



/* -- Fill2 table gutters and table action-link style final pass (2026-08-12) -- */
#page-fill2.show>#fill2-regular .tbl-wrap,
#page-fill2.show>#fill2-outsource .tbl-wrap,
#page-fill2.show>#fill2-dispatch .tbl-wrap{
  padding-left:16px!important;
  padding-right:16px!important;
  box-sizing:border-box!important;
  background:#fff!important;
}
#page-fill2.show>#fill2-regular .tbl-wrap>.tbl-scroll,
#page-fill2.show>#fill2-outsource .tbl-wrap>.tbl-scroll,
#page-fill2.show>#fill2-dispatch .tbl-wrap>.tbl-scroll{
  width:100%!important;
  max-width:100%!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
#page-fill2.show>#fill2-regular .tbl-wrap>.tbl-scroll table,
#page-fill2.show>#fill2-outsource .tbl-wrap>.tbl-scroll table,
#page-fill2.show>#fill2-dispatch .tbl-wrap>.tbl-scroll table{
  margin:0!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap tbody td:last-child{
  white-space:nowrap!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap tbody td:last-child .btn{
  height:auto!important;
  min-height:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#2F6BFF!important;
  font-size:13px!important;
  font-weight:600!important;
  line-height:20px!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap tbody td:last-child .btn:hover{
  background:transparent!important;
  text-decoration:underline!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap tbody td:last-child .btn + .btn{
  margin-left:16px!important;
}
#page-adjustment.show>.adj-list-card .adj-table-wrap tbody td:last-child .btn.danger{
  color:#EF4444!important;
}

/* -- Summary filter export alignment final pass (2026-08-12) -- */
#page-summary.show>.f2-filterbar{
  grid-template-columns:minmax(220px,320px) minmax(220px,320px) 1fr auto!important;
}
#page-summary.show>.f2-filterbar .summary-export-action{
  grid-column:4!important;
  justify-self:end!important;
  margin-left:0!important;
  flex-shrink:0!important;
}

/* -- Summary table header sticky in active pane (2026-08-12) -- */
#page-summary.show #sum-proj-wrap,
#page-summary.show>#st-dept .tbl-wrap,
#page-summary.show>#st-dept .tbl-scroll,
#page-summary.show>#st-cmp .tbl-wrap,
#page-summary.show>#st-bud .tbl-wrap{
  overflow:visible!important;
  max-height:none!important;
}
#page-summary.show thead th{
  position:sticky!important;
  top:0!important;
  z-index:14!important;
  background:#F3F4F6!important;
  box-shadow:inset 0 -1px 0 #D8DEE8!important;
}
#page-summary.show #dept-cross-tbl thead th{
  z-index:15!important;
}

/* -- Global page edge spacing and table-card gutters final pass (2026-08-12) -- */
body[data-page="dashboard"] .content,
body[data-page="fill2"] .content,
body[data-page="adjustment"] .content,
body[data-page="summary"] .content,
body[data-page="budget"] .content{
  padding:16px!important;
  box-sizing:border-box!important;
}
#page-dashboard.show>#sum-view-tip{
  margin-right:16px!important;
  width:auto!important;
  box-sizing:border-box!important;
}
#page-dashboard.show>#sum-global-filter-card>.card-body{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(240px,1fr))!important;
  gap:16px 24px!important;
  align-items:center!important;
  padding:16px!important;
}
#page-dashboard.show>#sum-global-filter-card{
  min-height:128px!important;
  overflow:visible!important;
}
#page-dashboard.show>#sum-global-filter-card>.card-body>div:not(.spacer){
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  min-width:0!important;
}
#page-dashboard.show>#sum-global-filter-card>.card-body>div:nth-of-type(4){
  grid-column:1 / -1!important;
  margin-left:64px!important;
}
#page-dashboard.show>#sum-global-filter-card>.card-body>.spacer,
#page-dashboard.show>#sum-global-filter-card>.card-body>span:last-child{
  display:none!important;
}
#page-dashboard.show>#sum-global-filter-card>.card-body>div:not(.spacer)>span{
  flex:0 0 auto!important;
}
#page-dashboard.show>#sum-global-filter-card #sum-type-seg{
  width:360px!important;
  max-width:100%!important;
}

#page-dashboard.show,
#page-fill2.show,
#page-adjustment.show,
#page-summary.show,
#page-budget.show{
  width:100%!important;
  max-width:none!important;
  box-sizing:border-box!important;
}

#page-adjustment.show{
  padding:0!important;
}

#page-adjustment.show>.page-head,
#page-adjustment.show>.sbar,
#page-adjustment.show>.adj-list-card,
#page-adjustment.show>.adj-report-card{
  margin-left:0!important;
  margin-right:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}

#page-adjustment.show>.adj-list-card{
  background:#fff!important;
  border:1px solid #E5E6EB!important;
  border-radius:8px!important;
  overflow:hidden!important;
}

#page-adjustment.show>.adj-list-card .adj-filterbar,
#page-adjustment.show>.adj-list-card .adj-actionbar{
  margin:0!important;
  padding-left:16px!important;
  padding-right:16px!important;
  border-radius:0!important;
  box-shadow:none!important;
  box-sizing:border-box!important;
}

#page-adjustment.show>.adj-list-card .adj-filterbar{
  border-bottom:1px solid #D8DEE8!important;
}

#page-adjustment.show>.adj-list-card .adj-actionbar{
  border-bottom:1px solid #D8DEE8!important;
}

#page-adjustment.show>.adj-list-card .adj-table-wrap{
  margin:0!important;
  padding:12px 16px 0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  background:#fff!important;
  box-sizing:border-box!important;
}

#page-adjustment.show>.adj-list-card .adj-table-wrap>.tbl-scroll{
  width:100%!important;
  max-width:100%!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}

#page-budget.show .budget-unified>.tbl-wrap{
  margin:0!important;
  padding:12px 16px 0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  background:#fff!important;
  box-sizing:border-box!important;
}

#page-budget.show .budget-unified>.tbl-wrap>.tbl-scroll{
  width:100%!important;
  max-width:100%!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}

/* -- Summary filter/list module grouping correction (2026-08-17) -- */
#page-summary.show{
  grid-template-rows:auto auto auto minmax(0,1fr)!important;
  row-gap:0!important;
}
#page-summary.show>.tab-strip{
  grid-row:2 / 5!important;
}
#page-summary.show>.f2-filterbar{
  grid-row:2!important;
  grid-template-columns:minmax(260px,360px) minmax(260px,360px) minmax(0,1fr)!important;
  min-height:64px!important;
  margin:0!important;
  padding:16px!important;
  border-bottom:1px solid #D8DEE8!important;
  border-radius:0 8px 0 0!important;
  box-shadow:none!important;
}
#page-summary.show>.summary-table-toolbar{
  grid-column:2!important;
  grid-row:3!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  min-height:56px!important;
  margin:0!important;
  padding:12px 16px!important;
  background:#fff!important;
  border-bottom:0!important;
  box-shadow:none!important;
  box-sizing:border-box!important;
}
#page-summary.show>.summary-table-toolbar .summary-export-action{
  margin-left:auto!important;
  flex:0 0 auto!important;
}
#page-summary.show>#st-proj,
#page-summary.show>#st-dept,
#page-summary.show>#st-cmp,
#page-summary.show>#st-bud{
  grid-row:4!important;
  min-height:0!important;
  margin:0!important;
  padding:12px 16px 16px!important;
  background:#fff!important;
  border-radius:0 0 8px 0!important;
  box-shadow:none!important;
  box-sizing:border-box!important;
}
#page-summary.show>#st-proj{
  display:flex!important;
  flex-direction:column!important;
  gap:12px!important;
}
#page-summary.show>#st-proj>.card:first-child{
  margin:0!important;
}
#page-summary.show>#st-proj>.tbl-wrap{
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}

/* -- SideTabs active rail visibility fix (2026-08-17) -- */
#page-dashboard.show>.tab-strip,
#page-summary.show>.tab-strip,
#page-cost.show>.tab-strip,
#page-fill2.show>.tab-strip{
  position:relative!important;
  z-index:60!important;
  overflow:visible!important;
}
#page-dashboard.show>.tab-strip .ts,
#page-summary.show>.tab-strip .ts,
#page-cost.show>.tab-strip .ts,
#page-fill2.show>.tab-strip .ts{
  position:relative!important;
  overflow:visible!important;
}
#page-dashboard.show>.tab-strip .ts.active,
#page-summary.show>.tab-strip .ts.active,
#page-cost.show>.tab-strip .ts.active{
  border-right-color:transparent!important;
}
#page-dashboard.show>.tab-strip .ts.active::after,
#page-summary.show>.tab-strip .ts.active::after,
#page-cost.show>.tab-strip .ts.active::after{
  content:'';
  position:absolute;
  right:-1px;
  top:4px;
  width:2px;
  height:24px;
  border-radius:2px 0 0 2px;
  background:var(--accent);
  z-index:80!important;
  pointer-events:none;
}
#page-summary.show>.f2-filterbar,
#page-summary.show>.summary-table-toolbar,
#page-summary.show>#st-proj,
#page-summary.show>#st-dept,
#page-summary.show>#st-cmp,
#page-summary.show>#st-bud{
  position:relative!important;
  z-index:1!important;
}

/* -- Budget fill action/table seam cleanup (2026-08-17) -- */
#page-budget.show .budget-unified>#budget-actions{
  border-bottom:0!important;
}
#page-budget.show .budget-unified>.tbl-wrap{
  padding:0 16px 0!important;
}
@media(max-width:1080px){
  #page-dashboard.show>.tab-strip .ts.active::after,
  #page-summary.show>.tab-strip .ts.active::after,
  #page-cost.show>.tab-strip .ts.active::after{
    left:16px;
    right:16px;
    top:auto;
    bottom:0;
    width:auto;
    height:2px;
    border-radius:2px;
  }
}

/* -- Global confirmed list-page layout sweep (2026-08-25) --
   Apply the approved task-page template: 16px page edge spacing, and
   filter/action/table modules visually merged into one white list card. */
body[data-current-page] .main>.content{
  padding:72px 16px 16px!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
  margin-top:0!important;
  margin-bottom:0!important;
  padding-left:16px!important;
  padding-right:16px!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show>.page-head{
  margin:0 0 16px!important;
}
body[data-current-page="task"] .main>.content>#page-task.show{
  padding-left:0!important;
  padding-right:0!important;
}

#page-fillreview.show>.fill-review-filter,
#page-roles.show>.card:first-of-type,
#page-adjustment.show>.adj-filter-card{
  margin:0!important;
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-bottom:0!important;
  border-radius:8px 8px 0 0!important;
  box-shadow:var(--shadow)!important;
  overflow:hidden!important;
}
#page-fillreview.show>.fill-review-filter>.card-body,
#page-roles.show>.card:first-of-type>.card-body,
#page-adjustment.show>.adj-filter-card>.card-body{
  min-height:64px!important;
  padding:14px 16px!important;
  border-bottom:1px solid var(--border)!important;
  box-sizing:border-box!important;
}
#page-fillreview.show>.fill-review-actions,
#page-adjustment.show>.adj-action-row{
  margin:0!important;
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-top:0!important;
  border-bottom:0!important;
  border-radius:0!important;
  box-shadow:var(--shadow)!important;
  overflow:hidden!important;
}
#page-fillreview.show>.fill-review-actions>.card-body,
#page-adjustment.show>.adj-action-row{
  min-height:56px!important;
  padding:12px 16px!important;
  border-bottom:1px solid var(--border)!important;
  box-sizing:border-box!important;
}
#page-fillreview.show>.fill-review-table-wrap,
#page-roles.show>.tbl-wrap,
#page-adjustment.show>.tbl-wrap{
  margin:0!important;
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-top:0!important;
  border-radius:0 0 8px 8px!important;
  box-shadow:var(--shadow)!important;
  overflow:hidden!important;
}
#page-fillreview.show>.fill-review-table-wrap>.tbl-scroll,
#page-roles.show>.tbl-wrap>.tbl-scroll,
#page-adjustment.show>.tbl-wrap>.tbl-scroll{
  width:100%!important;
  max-width:100%!important;
  overflow:auto!important;
}

#page-log.show #log-tab-changes,
#page-log.show #log-tab-auth{
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-radius:8px!important;
  box-shadow:var(--shadow)!important;
  overflow:hidden!important;
}
#page-log.show #log-tab-changes>.toolbar,
#page-log.show #log-tab-auth>.toolbar{
  margin:0!important;
  min-height:64px!important;
  padding:14px 16px!important;
  background:#fff!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:0!important;
  box-shadow:none!important;
  box-sizing:border-box!important;
}
#page-log.show #log-tab-changes>.tbl-wrap,
#page-log.show #log-tab-auth>.tbl-wrap{
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  background:#fff!important;
}

#page-deptprojects.show>#dpm-filterbar,
#page-roster.show>#roster-filterbar{
  position:relative!important;
  top:auto!important;
  z-index:auto!important;
  margin:0!important;
  min-height:64px!important;
  padding:14px 16px!important;
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:8px 8px 0 0!important;
  box-shadow:var(--shadow)!important;
  box-sizing:border-box!important;
}
#page-deptprojects.show>#dpm-actions{
  position:relative!important;
  top:auto!important;
  z-index:auto!important;
  margin:0!important;
  min-height:56px!important;
  padding:12px 16px!important;
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-top:0!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:0!important;
  box-shadow:var(--shadow)!important;
  box-sizing:border-box!important;
}
#page-deptprojects.show>#dpm-tab-project{
  margin:0!important;
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-top:0!important;
  border-radius:0 0 8px 8px!important;
  box-shadow:var(--shadow)!important;
  overflow:hidden!important;
}
#page-deptprojects.show>#dpm-tab-project>.card-head,
#page-roster.show #roster-table-wrap>.card-head{
  min-height:56px!important;
  padding:14px 16px!important;
  border-bottom:1px solid var(--border)!important;
  box-sizing:border-box!important;
}
#page-roster.show>.fill-layout{
  margin:0!important;
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-top:0!important;
  border-radius:0 0 8px 8px!important;
  box-shadow:var(--shadow)!important;
  overflow:hidden!important;
}
#page-roster.show #roster-table-wrap{
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  background:#fff!important;
}

#page-deptpermissions.show>.tbl-wrap,
#page-exceptions.show>.tbl-wrap,
#page-allprojects.show>.tbl-wrap,
#page-projdetail.show>.tbl-wrap{
  margin:0!important;
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-radius:8px!important;
  box-shadow:var(--shadow)!important;
  overflow:hidden!important;
}

#page-dashboard.show>.tbl-wrap,
#page-cost.show>.tbl-wrap,
#page-summary.show .tbl-wrap,
#page-budget.show .budget-unified,
#page-task.show>#task-worktime{
  max-width:100%!important;
  box-sizing:border-box!important;
}

#page-fillreview.show>.page-head,
#page-fillreview.show>.fill-review-filter,
#page-fillreview.show>.fill-review-actions,
#page-fillreview.show>.selection-action-bar,
#page-fillreview.show>.fill-review-table-wrap,
#page-adjustment.show>.page-head,
#page-adjustment.show>.sbar,
#page-adjustment.show>.adj-filter-card,
#page-adjustment.show>.adj-action-row,
#page-adjustment.show>.tbl-wrap,
#page-deptprojects.show>.page-head,
#page-deptprojects.show>.roster-sync,
#page-deptprojects.show>#dpm-filterbar,
#page-deptprojects.show>#dpm-actions,
#page-deptprojects.show>#dpm-tab-project,
#page-roster.show>.page-head,
#page-roster.show>.roster-sync,
#page-roster.show>#roster-filterbar,
#page-roster.show>.fill-layout,
#page-log.show>.page-head,
#page-log.show>#log-tabs,
#page-log.show>#log-tab-changes,
#page-log.show>#log-tab-auth,
#page-roles.show>.page-head,
#page-roles.show>.card:first-of-type,
#page-roles.show>.tbl-wrap,
#page-deptpermissions.show>.page-head,
#page-deptpermissions.show>.tbl-wrap,
#page-exceptions.show>.page-head,
#page-exceptions.show>.tbl-wrap,
#page-allprojects.show>.page-head,
#page-allprojects.show>.tbl-wrap,
#page-projdetail.show>.page-head,
#page-projdetail.show>.tbl-wrap{
  width:calc(100% - 32px)!important;
  margin-left:16px!important;
  margin-right:16px!important;
  box-sizing:border-box!important;
}

/* -- Long-term page layout baseline: match approved Task page (2026-08-25) --
   Baseline: page/card edge spacing is 16px; page title block is placed and
   styled exactly like Task Management; SideTabs pages are not exempt. */
body[data-current-page] .main>.content{
  padding:72px 0 16px!important;
}
body[data-current-page] .page.show>.page-head{
  width:calc(100% - 32px)!important;
  margin:0 16px 16px!important;
  padding:0!important;
  box-sizing:border-box!important;
}
body[data-current-page]:not([data-current-page="task"]) .page.show>.page-head{
  width:100%!important;
  margin:0 0 16px!important;
  padding:0 16px!important;
}
body[data-current-page] .page.show>.page-head h2{
  margin:0!important;
  font-size:19px!important;
  line-height:26px!important;
  font-weight:700!important;
  color:var(--text)!important;
  letter-spacing:.2px!important;
}
body[data-current-page] .page.show>.page-head p{
  margin:4px 0 0!important;
  max-width:none!important;
  font-size:12.5px!important;
  line-height:22px!important;
  font-weight:400!important;
  color:var(--text-2)!important;
}
body[data-current-page="task"] .main>.content{
  padding-left:16px!important;
  padding-right:16px!important;
}
body[data-current-page="task"] #page-task.show>.page-head{
  width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
}

#page-dashboard.show,
#page-summary.show,
#page-cost.show{
  width:100%!important;
  padding:0!important;
  grid-template-columns:284px minmax(0,1fr)!important;
  min-height:calc(100vh - 88px)!important;
  box-sizing:border-box!important;
}
#page-dashboard.show>.tab-strip,
#page-summary.show>.tab-strip,
#page-cost.show>.tab-strip{
  margin-left:16px!important;
  width:auto!important;
  min-height:calc(100vh - 184px)!important;
  padding:16px 0!important;
  border-radius:8px 0 0 8px!important;
  box-sizing:border-box!important;
}
#page-dashboard.show>.card,
#page-dashboard.show>.tab-strip+div[style*="上方切换"],
#page-dashboard.show>#sum-view-detail,
#page-dashboard.show>#sum-view-proj,
#page-dashboard.show>#sum-view-dept,
#page-summary.show>.f2-filterbar,
#page-summary.show>.summary-table-toolbar,
#page-summary.show>#st-proj,
#page-summary.show>#st-dept,
#page-summary.show>#st-cmp,
#page-summary.show>#st-bud,
#page-cost.show>.f2-filterbar,
#page-cost.show>.toolbar,
#page-cost.show>#cost-view-overview,
#page-cost.show>#cost-view-result-box,
#page-cost.show>#cost-view-detail,
#page-cost.show>#cost-view-detail-box{
  margin-right:16px!important;
  width:auto!important;
  box-sizing:border-box!important;
}
#page-dashboard.show>.card,
#page-summary.show>.f2-filterbar,
#page-cost.show>.f2-filterbar,
#page-cost.show>.toolbar{
  border-bottom:1px solid var(--border)!important;
}
#page-dashboard.show>.tab-strip+div[style*="上方切换"]{
  min-height:48px!important;
  display:flex!important;
  align-items:center!important;
  padding:0 16px!important;
  background:#fff!important;
  border-top:0!important;
  border-bottom:1px solid var(--border)!important;
  box-shadow:none!important;
  margin-right:16px!important;
  width:auto!important;
  box-sizing:border-box!important;
}
#page-dashboard.show>#sum-view-proj,
#page-dashboard.show>#sum-view-dept,
#page-dashboard.show>#sum-view-detail{
  padding-top:0!important;
}
#page-dashboard.show>#sum-view-proj,
#page-dashboard.show>#sum-view-dept,
#page-summary.show>#st-proj,
#page-summary.show>#st-dept,
#page-summary.show>#st-cmp,
#page-summary.show>#st-bud,
#page-cost.show>#cost-view-overview,
#page-cost.show>#cost-view-result-box,
#page-cost.show>#cost-view-detail,
#page-cost.show>#cost-view-detail-box{
  padding-bottom:16px!important;
}

/* -- Final page baseline correction: one 16px content inset, Task page as source of truth (2026-08-25) --
   Keep the existing visual language; only normalize page title position/size and first-level layout gutters. */
body[data-current-page] .main>.content{
  padding:72px 16px 16px!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show>.page-head{
  width:100%!important;
  max-width:none!important;
  margin:0 0 16px!important;
  padding:0!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show>.page-head h2{
  margin:0!important;
  padding:0!important;
  font-size:19px!important;
  line-height:26px!important;
  font-weight:700!important;
  color:var(--text)!important;
  letter-spacing:.2px!important;
}
body[data-current-page] .main>.content>.page.show>.page-head p{
  margin:4px 0 0!important;
  padding:0!important;
  max-width:none!important;
  font-size:12.5px!important;
  line-height:22px!important;
  font-weight:400!important;
  color:var(--text-2)!important;
}

body[data-current-page] .main>.content>.page.show>.page-head,
#page-task.show>#task-worktime,
#page-fillreview.show>.fill-review-filter,
#page-fillreview.show>.fill-review-actions,
#page-fillreview.show>.selection-action-bar,
#page-fillreview.show>.fill-review-table-wrap,
#page-adjustment.show>.sbar,
#page-adjustment.show>.adj-filter-card,
#page-adjustment.show>.adj-action-row,
#page-adjustment.show>.tbl-wrap,
#page-deptprojects.show>.roster-sync,
#page-deptprojects.show>#dpm-filterbar,
#page-deptprojects.show>#dpm-actions,
#page-deptprojects.show>#dpm-tab-project,
#page-roster.show>.roster-sync,
#page-roster.show>#roster-filterbar,
#page-roster.show>.fill-layout,
#page-log.show>#log-tabs,
#page-log.show>#log-tab-changes,
#page-log.show>#log-tab-auth,
#page-roles.show>.card:first-of-type,
#page-roles.show>.tbl-wrap,
#page-deptpermissions.show>.tbl-wrap,
#page-exceptions.show>.tbl-wrap,
#page-allprojects.show>.tbl-wrap,
#page-projdetail.show>.tbl-wrap{
  width:100%!important;
  max-width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
  box-sizing:border-box!important;
}

#page-task.show>.page-head,
#page-fill2.show>.page-head,
#page-fillreview.show>.page-head{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin:0 16px 16px!important;
  padding:0!important;
  box-sizing:border-box!important;
}
#page-task.show>.page-head h2,
#page-task.show>.page-head p,
#page-fill2.show>.page-head h2,
#page-fill2.show>.page-head p,
#page-fillreview.show>.page-head h2,
#page-fillreview.show>.page-head p{
  padding-left:0!important;
  padding-right:0!important;
}
#page-fill2.show>#fill-workflow-steps,
#page-fill2.show>#fill2-notice,
#page-fill2.show>#fill2-regular,
#page-fill2.show>#fill2-outsource,
#page-fill2.show>#fill2-dispatch{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin-left:16px!important;
  margin-right:16px!important;
  box-sizing:border-box!important;
}

#page-dashboard.show,
#page-summary.show,
#page-cost.show{
  grid-template-columns:268px minmax(0,1fr)!important;
  width:100%!important;
  min-height:calc(100vh - 104px)!important;
  padding:0!important;
  gap:0!important;
}
#page-dashboard.show>.tab-strip,
#page-summary.show>.tab-strip,
#page-cost.show>.tab-strip{
  margin-left:0!important;
  margin-right:0!important;
  width:100%!important;
  min-width:0!important;
  min-height:calc(100vh - 200px)!important;
  box-sizing:border-box!important;
}
#page-dashboard.show>.card,
#page-dashboard.show>.tab-strip+div[style*="上方切换"],
#page-dashboard.show>#sum-view-detail,
#page-dashboard.show>#sum-view-proj,
#page-dashboard.show>#sum-view-dept,
#page-summary.show>.f2-filterbar,
#page-summary.show>.summary-table-toolbar,
#page-summary.show>#st-proj,
#page-summary.show>#st-dept,
#page-summary.show>#st-cmp,
#page-summary.show>#st-bud,
#page-cost.show>.f2-filterbar,
#page-cost.show>.toolbar,
#page-cost.show>#cost-view-overview,
#page-cost.show>#cost-view-result-box,
#page-cost.show>#cost-view-detail,
#page-cost.show>#cost-view-detail-box{
  margin-left:0!important;
  margin-right:0!important;
  width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
#page-dashboard.show>.tab-strip+div[style*="上方切换"]{
  margin-right:0!important;
  width:100%!important;
}

#page-fill2.show>.page-head h2,
#page-fillreview.show>.page-head h2,
#page-dashboard.show>.page-head h2{
  font-size:19px!important;
  line-height:26px!important;
  font-weight:700!important;
}
#page-fill2.show>.page-head,
#page-fillreview.show>.page-head,
#page-dashboard.show>.page-head{
  margin-top:0!important;
  margin-bottom:16px!important;
}

/* -- Canonical 16px layout reset: page children own the gutter, not nested padding. */
body[data-current-page] .main>.content{
  padding:72px 0 16px!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show>.page-head{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin:0 16px 16px!important;
  padding:0!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show>.page-head h2{
  margin:0!important;
  padding:0!important;
  font-size:19px!important;
  line-height:26px!important;
  font-weight:700!important;
  color:var(--text)!important;
  letter-spacing:.2px!important;
}
body[data-current-page] .main>.content>.page.show>.page-head p{
  margin:4px 0 0!important;
  padding:0!important;
  max-width:none!important;
  font-size:12.5px!important;
  line-height:22px!important;
  font-weight:400!important;
  color:var(--text-2)!important;
}

#page-task.show>#task-worktime,
#page-fillreview.show>.fill-review-filter,
#page-fillreview.show>.fill-review-actions,
#page-fillreview.show>.selection-action-bar,
#page-fillreview.show>.fill-review-table-wrap,
#page-adjustment.show>.sbar,
#page-adjustment.show>.adj-filter-card,
#page-adjustment.show>.adj-action-row,
#page-adjustment.show>.tbl-wrap,
#page-deptprojects.show>.roster-sync,
#page-deptprojects.show>#dpm-filterbar,
#page-deptprojects.show>#dpm-actions,
#page-deptprojects.show>#dpm-tab-project,
#page-roster.show>.roster-sync,
#page-roster.show>#roster-filterbar,
#page-roster.show>.fill-layout,
#page-log.show>#log-tabs,
#page-log.show>#log-tab-changes,
#page-log.show>#log-tab-auth,
#page-roles.show>.card:first-of-type,
#page-roles.show>.tbl-wrap,
#page-deptpermissions.show>.tbl-wrap,
#page-exceptions.show>.tbl-wrap,
#page-allprojects.show>.tbl-wrap,
#page-projdetail.show>.tbl-wrap{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin-left:16px!important;
  margin-right:16px!important;
  box-sizing:border-box!important;
}

#page-dashboard.show,
#page-summary.show,
#page-cost.show{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin:0 16px!important;
  padding:0!important;
  grid-template-columns:268px minmax(0,1fr)!important;
  gap:0!important;
  box-sizing:border-box!important;
}
#page-dashboard.show>.page-head,
#page-summary.show>.page-head,
#page-cost.show>.page-head{
  width:100%!important;
  max-width:100%!important;
  margin:0 0 16px!important;
  padding:0!important;
}
#page-dashboard.show>.tab-strip,
#page-summary.show>.tab-strip,
#page-cost.show>.tab-strip,
#page-dashboard.show>.card,
#page-dashboard.show>.tab-strip+div[style*="上方切换"],
#page-dashboard.show>#sum-view-detail,
#page-dashboard.show>#sum-view-proj,
#page-dashboard.show>#sum-view-dept,
#page-summary.show>.f2-filterbar,
#page-summary.show>.summary-table-toolbar,
#page-summary.show>#st-proj,
#page-summary.show>#st-dept,
#page-summary.show>#st-cmp,
#page-summary.show>#st-bud,
#page-cost.show>.f2-filterbar,
#page-cost.show>.toolbar,
#page-cost.show>#cost-view-overview,
#page-cost.show>#cost-view-result-box,
#page-cost.show>#cost-view-detail,
#page-cost.show>#cost-view-detail-box{
  width:100%!important;
  max-width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
  box-sizing:border-box!important;
}

/* Explicit page-head winners for pages that had older page-specific overrides. */
body[data-current-page="task"] #page-task.show>.page-head,
body[data-current-page="fill2"] #page-fill2.show>.page-head,
body[data-current-page="fillreview"] #page-fillreview.show>.page-head{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin:0 16px 16px!important;
  padding:0!important;
  box-sizing:border-box!important;
}

/* -- Hard layout source of truth (2026-08-25): topbar bottom + 16px, page edge + 16px. */
body[data-current-page] .main{
  padding-top:0!important;
}
body[data-current-page] .main>.content{
  padding:72px 0 16px!important;
  margin:0!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show>.page-head{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin:0 16px 16px!important;
  padding:0!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show>.page-head h2{
  margin:0!important;
  padding:0!important;
  font-size:19px!important;
  line-height:26px!important;
  font-weight:700!important;
}
body[data-current-page] .main>.content>.page.show>.page-head p{
  margin:4px 0 0!important;
  padding:0!important;
  font-size:12.5px!important;
  line-height:22px!important;
  font-weight:400!important;
}
body[data-current-page] .main>.content>.page.show:not(#page-dashboard):not(#page-summary):not(#page-cost)>:is(.card,.tbl-wrap,.fill-layout,.f2-filterbar,.toolbar,.sbar,.roster-sync,.selection-action-bar),
body[data-current-page] .main>.content>.page.show:not(#page-dashboard):not(#page-summary):not(#page-cost)>[id$="-filterbar"],
body[data-current-page] .main>.content>.page.show:not(#page-dashboard):not(#page-summary):not(#page-cost)>[id$="-actions"],
body[data-current-page] .main>.content>.page.show:not(#page-dashboard):not(#page-summary):not(#page-cost)>[id^="dpm-tab"],
body[data-current-page] .main>.content>.page.show:not(#page-dashboard):not(#page-summary):not(#page-cost)>#log-tabs,
body[data-current-page] .main>.content>.page.show:not(#page-dashboard):not(#page-summary):not(#page-cost)>[id^="log-tab"],
body[data-current-page] .main>.content>.page.show:not(#page-dashboard):not(#page-summary):not(#page-cost)>[id^="task-"],
body[data-current-page] .main>.content>.page.show:not(#page-dashboard):not(#page-summary):not(#page-cost)>[id^="fill-workflow"],
body[data-current-page] .main>.content>.page.show:not(#page-dashboard):not(#page-summary):not(#page-cost)>[id^="fill2-"]{
  width:100%!important;
  max-width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show:is(#page-dashboard,#page-summary,#page-cost){
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
}
body[data-current-page] .main>.content>.page.show:is(#page-dashboard,#page-summary,#page-cost)>.page-head{
  width:100%!important;
  max-width:100%!important;
  margin:0 0 16px!important;
  padding:0!important;
}

body[data-current-page] .main>.content>.page.show>.page-head{
  padding-left:0!important;
  padding-right:0!important;
}
body[data-current-page="roles"] #page-roles.show>.page-head,
body[data-current-page="log"] #page-log.show>.page-head,
body[data-current-page="roster"] #page-roster.show>.page-head,
body[data-current-page="deptpermissions"] #page-deptpermissions.show>.page-head,
body[data-current-page="deptprojects"] #page-deptprojects.show>.page-head,
body[data-current-page="fillreview"] #page-fillreview.show>.page-head{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin:0 16px 16px!important;
  padding:0!important;
}
body[data-current-page="roles"] #page-roles.show>.card,
body[data-current-page="roles"] #page-roles.show>.tbl-wrap,
body[data-current-page="log"] #page-log.show>#log-tabs,
body[data-current-page="log"] #page-log.show>#log-tab-changes,
body[data-current-page="log"] #page-log.show>#log-tab-auth,
body[data-current-page="roster"] #page-roster.show>.roster-sync,
body[data-current-page="roster"] #page-roster.show>#roster-filterbar,
body[data-current-page="roster"] #page-roster.show>.fill-layout,
body[data-current-page="deptpermissions"] #page-deptpermissions.show>.tbl-wrap,
body[data-current-page="deptprojects"] #page-deptprojects.show>.roster-sync,
body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-filterbar,
body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-actions,
body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project,
body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-filter,
body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions,
body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-table-wrap{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin-left:16px!important;
  margin-right:16px!important;
  box-sizing:border-box!important;
}

/* -- Global white surface baseline (2026-08-25): use the approved Worktime Summary page as reference. */
body[data-current-page] .main>.content>.page.show>:is(.card,.tbl-wrap,.fill-layout,.toolbar,.f2-filterbar,.roster-sync,.selection-action-bar,.flow-card,.cycle-card),
body[data-current-page] .main>.content>.page.show>[id$="-filterbar"],
body[data-current-page] .main>.content>.page.show>[id$="-actions"],
body[data-current-page] .main>.content>.page.show>[id^="dpm-tab"],
body[data-current-page] .main>.content>.page.show>#log-tabs,
body[data-current-page] .main>.content>.page.show>[id^="log-tab"],
body[data-current-page] .main>.content>.page.show>[id^="task-"],
body[data-current-page] .main>.content>.page.show>[id^="fill-workflow"],
body[data-current-page] .main>.content>.page.show>[id^="fill2-"],
body[data-current-page] .main>.content>.page.show:is(#page-dashboard,#page-summary,#page-cost)>:is(.tab-strip,.card,.f2-filterbar,.summary-table-toolbar),
body[data-current-page] .main>.content>.page.show:is(#page-dashboard,#page-summary,#page-cost)>[id^="sum-view"],
body[data-current-page] .main>.content>.page.show:is(#page-dashboard,#page-summary,#page-cost)>[id^="st-"],
body[data-current-page] .main>.content>.page.show:is(#page-dashboard,#page-summary,#page-cost)>[id^="cost-view"]{
  background:#fff!important;
}

/* -- Global control and drawer baseline (2026-08-25): match filter control height and column-settings drawer spec. */
:root{--control-height:34px}
body[data-current-page] :is(.btn,.btn.sm,.fsel,.ms-btn,.srch){
  min-height:var(--control-height)!important;
  height:var(--control-height)!important;
  box-sizing:border-box!important;
}
body[data-current-page] :is(.btn,.btn.sm){
  padding-top:0!important;
  padding-bottom:0!important;
  line-height:normal!important;
}
body[data-current-page] :is(.fsel,.ms-btn,.srch){
  padding-top:0!important;
  padding-bottom:0!important;
}
body[data-current-page] .global-field-btn,
body[data-current-page] .btn.global-field-btn,
body[data-current-page] .btn.ghost.sm.global-field-btn{
  width:var(--control-height)!important;
  min-width:var(--control-height)!important;
  height:var(--control-height)!important;
  min-height:var(--control-height)!important;
  padding:0!important;
}
body[data-current-page] .global-field-btn svg,
body[data-current-page] .btn.global-field-btn svg{
  width:16px!important;
  height:16px!important;
}
.drawer .op-guide-icon,
.drawer-mask .op-guide-icon{
  display:none!important;
}
.column-settings-drawer.drawer{
  width:320px!important;
  max-width:320px!important;
}
.column-settings-head.drawer-head{
  height:64px!important;
  padding:0 24px!important;
}
.column-settings-body{
  padding:16px 24px 82px!important;
}
.column-settings-intro{
  margin-bottom:16px!important;
}
.column-settings-all{
  margin-bottom:16px!important;
}
.column-settings-list.single{
  display:flex!important;
  flex-direction:column!important;
  gap:16px!important;
  padding-top:0!important;
}
.column-settings-all,
.column-settings-row.global-col-item{
  min-height:22px!important;
  height:auto!important;
  line-height:22px!important;
}
.column-settings-foot.drawer-foot{
  height:66px!important;
  padding:16px 24px!important;
  gap:8px!important;
}
.column-settings-foot .btn{
  height:var(--control-height)!important;
  min-height:var(--control-height)!important;
  min-width:72px!important;
  padding:0 16px!important;
}

/* -- Global table baseline (2026-08-25): Moonton DS list reference, 16px gutters and stable row height. */
:root{
  --table-gutter:16px;
  --table-head-height:56px;
  --table-row-height:56px;
}
body[data-current-page] .main>.content>.page.show .tbl-wrap{
  overflow:hidden!important;
}
body[data-current-page] .main>.content>.page.show .tbl-wrap>.tbl-scroll{
  width:100%!important;
  max-width:100%!important;
  padding-left:var(--table-gutter)!important;
  padding-right:var(--table-gutter)!important;
  box-sizing:border-box!important;
  overflow:auto!important;
}
body[data-current-page] .main>.content>.page.show .tbl-wrap>.tbl-scroll>table{
  width:100%!important;
  min-width:100%!important;
  border-collapse:collapse!important;
}
body[data-current-page] .main>.content>.page.show .tbl-wrap>table{
  width:calc(100% - (var(--table-gutter) * 2))!important;
  min-width:calc(100% - (var(--table-gutter) * 2))!important;
  margin-left:var(--table-gutter)!important;
  margin-right:var(--table-gutter)!important;
}
body[data-current-page] .main>.content>.page.show .tbl-wrap table th,
body[data-current-page] .main>.content>.page.show .tbl-wrap table td{
  padding-top:0!important;
  padding-bottom:0!important;
  padding-left:14px!important;
  padding-right:14px!important;
  vertical-align:middle!important;
  box-sizing:border-box!important;
  line-height:22px!important;
}
body[data-current-page] .main>.content>.page.show .tbl-wrap table th{
  height:var(--table-head-height)!important;
  min-height:var(--table-head-height)!important;
}
body[data-current-page] .main>.content>.page.show .tbl-wrap table td{
  height:var(--table-row-height)!important;
  min-height:var(--table-row-height)!important;
}

/* Same table baseline without page-state dependency; this wins over older page-specific table rules. */
html body .main .content .page.show .tbl-wrap>.tbl-scroll{
  padding-left:var(--table-gutter)!important;
  padding-right:var(--table-gutter)!important;
  box-sizing:border-box!important;
}
html body .main .content .page.show .tbl-wrap>.tbl-scroll>table{
  min-width:100%!important;
}
html body .main .content .page.show .tbl-wrap>table{
  width:calc(100% - (var(--table-gutter) * 2))!important;
  min-width:calc(100% - (var(--table-gutter) * 2))!important;
  margin-left:var(--table-gutter)!important;
  margin-right:var(--table-gutter)!important;
}
html body .main .content .page.show .tbl-wrap table th,
html body .main .content .page.show .tbl-wrap table td{
  padding-top:0!important;
  padding-bottom:0!important;
  padding-left:14px!important;
  padding-right:14px!important;
  vertical-align:middle!important;
  box-sizing:border-box!important;
  line-height:22px!important;
}
html body .main .content .page.show .tbl-wrap table th{
  height:var(--table-head-height)!important;
  min-height:var(--table-head-height)!important;
}
html body .main .content .page.show .tbl-wrap table td{
  height:var(--table-row-height)!important;
  min-height:var(--table-row-height)!important;
}

/* ID-specific final table gutter: inset the table viewport itself by 16px on every main page. */
html body .main .content :is(#page-dashboard,#page-task,#page-fill2,#page-fillreview,#page-roster,#page-deptpermissions,#page-deptprojects,#page-log,#page-roles,#page-adjustment,#page-summary,#page-budget,#page-cost).page.show .tbl-wrap>.tbl-scroll{
  width:calc(100% - (var(--table-gutter) * 2))!important;
  max-width:calc(100% - (var(--table-gutter) * 2))!important;
  margin-left:var(--table-gutter)!important;
  margin-right:var(--table-gutter)!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
  overflow:auto!important;
}
html body .main .content :is(#page-dashboard,#page-task,#page-fill2,#page-fillreview,#page-roster,#page-deptpermissions,#page-deptprojects,#page-log,#page-roles,#page-adjustment,#page-summary,#page-budget,#page-cost).page.show .tbl-wrap>table{
  width:calc(100% - (var(--table-gutter) * 2))!important;
  min-width:calc(100% - (var(--table-gutter) * 2))!important;
  margin-left:var(--table-gutter)!important;
  margin-right:var(--table-gutter)!important;
}
html body .main .content :is(#page-dashboard,#page-task,#page-fill2,#page-fillreview,#page-roster,#page-deptpermissions,#page-deptprojects,#page-log,#page-roles,#page-adjustment,#page-summary,#page-budget,#page-cost).page.show .tbl-wrap table th{
  height:var(--table-head-height)!important;
  min-height:var(--table-head-height)!important;
  padding-top:0!important;
  padding-bottom:0!important;
}
html body .main .content :is(#page-dashboard,#page-task,#page-fill2,#page-fillreview,#page-roster,#page-deptpermissions,#page-deptprojects,#page-log,#page-roles,#page-adjustment,#page-summary,#page-budget,#page-cost).page.show .tbl-wrap table td{
  height:var(--table-row-height)!important;
  min-height:var(--table-row-height)!important;
  padding-top:0!important;
  padding-bottom:0!important;
}

/* Actual DOM path fallback: pages are direct descendants of .main in the legacy single-file prototype. */
html body .main .page.show .tbl-wrap>.tbl-scroll{
  width:calc(100% - (var(--table-gutter) * 2))!important;
  max-width:calc(100% - (var(--table-gutter) * 2))!important;
  margin-left:var(--table-gutter)!important;
  margin-right:var(--table-gutter)!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
  overflow:auto!important;
}
html body .main .page.show .tbl-wrap>table{
  width:calc(100% - (var(--table-gutter) * 2))!important;
  min-width:calc(100% - (var(--table-gutter) * 2))!important;
  margin-left:var(--table-gutter)!important;
  margin-right:var(--table-gutter)!important;
}
html body .main .page.show .tbl-wrap table th,
html body .main .page.show .tbl-wrap table td{
  padding-top:0!important;
  padding-bottom:0!important;
  padding-left:14px!important;
  padding-right:14px!important;
  vertical-align:middle!important;
  box-sizing:border-box!important;
  line-height:22px!important;
}
html body .main .page.show .tbl-wrap table th{
  height:var(--table-head-height)!important;
  min-height:var(--table-head-height)!important;
}
html body .main .page.show .tbl-wrap table td{
  height:var(--table-row-height)!important;
  min-height:var(--table-row-height)!important;
}

/* Explicit legacy DOM page IDs: keep both left and right table viewport gutters at 16px. */
html body .main :is(#page-dashboard,#page-task,#page-fill2,#page-fillreview,#page-roster,#page-deptpermissions,#page-deptprojects,#page-log,#page-roles,#page-adjustment,#page-summary,#page-budget,#page-cost).page.show .tbl-wrap>.tbl-scroll{
  width:calc(100% - (var(--table-gutter) * 2))!important;
  max-width:calc(100% - (var(--table-gutter) * 2))!important;
  min-width:0!important;
  margin-left:var(--table-gutter)!important;
  margin-right:var(--table-gutter)!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
}

/* Dashboard summary table: remove legacy internal padding so the global 16px table gutter is exact. */
html body .main #page-dashboard.page.show>#sum-view-proj,
html body .main #page-dashboard.page.show>#sum-view-dept{
  padding-left:0!important;
  padding-right:0!important;
}

/* Main content surfaces: no page/background shadows; keep only borders and dividers. */
html body .main .page.show :is(
  .card,
  .tbl-wrap,
  .toolbar,
  .f2-filterbar,
  .flow-card,
  .cycle-card,
  .sync-card,
  .roster-sync,
  .selection-action-bar,
  .org-tree
){
  box-shadow:none!important;
}
html body .main .page.show :is(
  .fill-review-filter,
  .fill-review-actions,
  #roster-filterbar,
  #dpm-filterbar,
  #dpm-actions,
  #sum-global-filter-card,
  #sum-view-proj,
  #sum-view-dept
){
  box-shadow:none!important;
}

body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-filter,
body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions,
body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-table-wrap,
body[data-current-page="fillreview"] #page-fillreview.show .tbl-wrap,
body[data-current-page="roster"] #page-roster.show>.roster-sync,
body[data-current-page="roster"] #page-roster.show>#roster-filterbar,
body[data-current-page="roster"] #page-roster.show .tbl-wrap,
body[data-current-page="deptpermissions"] #page-deptpermissions.show>.tbl-wrap,
body[data-current-page="deptpermissions"] #page-deptpermissions.show .tbl-wrap,
body[data-current-page="deptprojects"] #page-deptprojects.show>.roster-sync,
body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-filterbar,
body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-actions,
body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project,
body[data-current-page="deptprojects"] #page-deptprojects.show .tbl-wrap,
body[data-current-page="roles"] #page-roles.show>.card,
body[data-current-page="roles"] #page-roles.show>.tbl-wrap,
body[data-current-page="roles"] #page-roles.show .tbl-wrap,
body[data-current-page="log"] #page-log.show>#log-tabs,
body[data-current-page="log"] #page-log.show>#log-tab-changes,
body[data-current-page="log"] #page-log.show>#log-tab-auth,
body[data-current-page="log"] #page-log.show .tbl-wrap{
  box-shadow:none!important;
}

/* Final top-gap correction: some legacy pages live directly under .main,
   after an empty .content shell whose 16px bottom padding was adding a second top gap. */
html body[data-current-page] .main > .page.show{
  margin-top:-16px!important;
}

/* -- Global button baseline (2026-08-25): Moonton DS list reference. */
:root{
  --btn-secondary-bg:#F2F3F5;
  --btn-secondary-bg-hover:#EDEFF2;
  --btn-secondary-bg-active:#E6E8EB;
  --btn-secondary-text:#4E5969;
}
html body[data-current-page] .main :is(.page.show,.content .page.show) .btn{
  height:var(--control-height)!important;
  min-height:var(--control-height)!important;
  padding:0 14px!important;
  border-radius:7px!important;
  font-size:14px!important;
  line-height:20px!important;
  font-weight:600!important;
  box-sizing:border-box!important;
}
html body[data-current-page] .main :is(.page.show,.content .page.show) .btn svg{
  width:14px!important;
  height:14px!important;
  stroke-width:2.2!important;
}
html body[data-current-page] .main :is(.page.show,.content .page.show) .btn:not(.primary):not(.success):not(.danger):not(.amber):not(.global-field-btn){
  background:var(--btn-secondary-bg)!important;
  border-color:var(--btn-secondary-bg)!important;
  color:var(--btn-secondary-text)!important;
  box-shadow:none!important;
}
html body[data-current-page] .main :is(.page.show,.content .page.show) .btn:not(.primary):not(.success):not(.danger):not(.amber):not(.global-field-btn):hover{
  background:var(--btn-secondary-bg-hover)!important;
  border-color:var(--btn-secondary-bg-hover)!important;
  color:var(--text)!important;
}
html body[data-current-page] .main :is(.page.show,.content .page.show) .btn:not(.primary):not(.success):not(.danger):not(.amber):not(.global-field-btn):active{
  background:var(--btn-secondary-bg-active)!important;
  border-color:var(--btn-secondary-bg-active)!important;
}
html body[data-current-page] .main :is(.page.show,.content .page.show) .btn.primary{
  background:var(--accent)!important;
  border-color:var(--accent)!important;
  color:#fff!important;
  box-shadow:0 2px 6px rgba(22,119,255,.24)!important;
}
html body[data-current-page] .main :is(.page.show,.content .page.show) .btn.primary:hover{
  background:var(--accent-hover)!important;
  border-color:var(--accent-hover)!important;
  color:#fff!important;
}
html body[data-current-page] .main :is(.page.show,.content .page.show) .btn.global-field-btn{
  width:var(--control-height)!important;
  min-width:var(--control-height)!important;
  padding:0!important;
  background:var(--btn-secondary-bg)!important;
  border-color:var(--btn-secondary-bg)!important;
  color:var(--btn-secondary-text)!important;
  box-shadow:none!important;
}
html body[data-current-page] .main :is(.page.show,.content .page.show) .btn.global-field-btn:hover{
  background:var(--btn-secondary-bg-hover)!important;
  border-color:var(--btn-secondary-bg-hover)!important;
  color:var(--text)!important;
}

/* Fill2 workflow page repair: V6 uses a compact horizontal workflow, not the old side-tab grid. */
html body[data-current-page="fill2"] #page-fill2.show{
  display:block!important;
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
  grid-template-columns:none!important;
  grid-template-rows:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show>.page-head,
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps,
html body[data-current-page="fill2"] #page-fill2.show>#fill-step-one,
html body[data-current-page="fill2"] #page-fill2.show>#fill2-regular,
html body[data-current-page="fill2"] #page-fill2.show>#fill2-outsource,
html body[data-current-page="fill2"] #page-fill2.show>#fill2-dispatch,
html body[data-current-page="fill2"] #page-fill2.show>#fill-step-three{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin-left:16px!important;
  margin-right:16px!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show>.page-head{
  margin-top:0!important;
  margin-bottom:16px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps{
  position:relative!important;
  top:auto!important;
  z-index:auto!important;
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:0!important;
  min-height:68px!important;
  height:68px!important;
  margin-top:0!important;
  margin-bottom:16px!important;
  padding:0!important;
  border:1px solid #E5E6EB!important;
  border-radius:8px!important;
  background:#fff!important;
  box-shadow:none!important;
  overflow:hidden!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step{
  position:relative!important;
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:10px!important;
  min-width:0!important;
  min-height:68px!important;
  height:68px!important;
  padding:0 20px!important;
  border:0!important;
  border-right:1px solid #E5E6EB!important;
  border-radius:0!important;
  background:#fff!important;
  box-shadow:none!important;
  color:var(--text-3)!important;
  text-align:left!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step:last-child{
  border-right:0!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.active{
  background:#F0F5FF!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.done{
  background:#fff!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step i{
  display:grid!important;
  place-items:center!important;
  flex:0 0 28px!important;
  width:28px!important;
  height:28px!important;
  min-width:28px!important;
  border-radius:50%!important;
  background:#EEF1F5!important;
  color:#64748B!important;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif!important;
  font-size:12px!important;
  line-height:1!important;
  font-style:normal!important;
  font-weight:600!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.active i{
  background:var(--accent)!important;
  color:#fff!important;
  box-shadow:0 0 0 3px rgba(22,119,255,.12)!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.done i{
  background:#EEF4FF!important;
  color:var(--accent)!important;
  font-size:0!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.done i::before{
  content:"✓";
  font-size:13px;
  font-weight:700;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step span{
  display:block!important;
  min-width:0!important;
  margin:0!important;
  color:#86909C!important;
  font-size:11px!important;
  line-height:17px!important;
  white-space:normal!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step b{
  display:block!important;
  margin:0!important;
  color:#4E5969!important;
  font-size:12.5px!important;
  line-height:18px!important;
  font-weight:600!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.active b{
  color:var(--accent)!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.clickable:hover{
  background:#F8FAFF!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-step-one{
  display:block;
  margin-top:0!important;
  margin-bottom:16px!important;
  padding:16px!important;
  border:1px solid #C9D8FF!important;
  border-radius:8px!important;
  background:#F8FBFF!important;
  box-shadow:none!important;
}

/* 本月项目：分组树形展示 */
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips{
  display:block!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-group{
  margin:0 0 8px!important;
  border:1px solid #E5E6EB!important;
  border-radius:8px!important;
  overflow:hidden!important;
  background:#fff!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-group-head,
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-branch-head{
  width:100%!important;
  display:flex!important;
  align-items:center!important;
  gap:7px!important;
  border:0!important;
  text-align:left!important;
  color:#1D2129!important;
  cursor:pointer!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-group-head{
  min-height:36px!important;
  padding:0 12px!important;
  background:#F7F8FA!important;
  font-size:13px!important;
  font-weight:500!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-branch-head{
  min-height:31px!important;
  padding:0 12px!important;
  background:#fff!important;
  font-size:12px!important;
  font-weight:400!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-group-head:hover,
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-branch-head:hover{background:#F2F3F5!important}
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-chevron{
  display:inline-block!important;
  width:12px!important;
  color:#86909C!important;
  font-size:16px!important;
  line-height:1!important;
  transform:rotate(90deg)!important;
  transition:transform .16s ease!important;
}
html body[data-current-page="fill2"] #page-fill2.show .is-collapsed>.fill-tree-group-head .fill-tree-chevron,
html body[data-current-page="fill2"] #page-fill2.show .is-collapsed>.fill-tree-branch-head .fill-tree-chevron{transform:rotate(0)!important}
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-group-head em,
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-branch-head em{
  margin-left:auto!important;
  color:#86909C!important;
  font-size:12px!important;
  font-style:normal!important;
  font-weight:400!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-group-body{padding:4px 0 8px!important}
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-leaves{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:6px!important;
  padding:0 12px 8px 31px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .is-collapsed>.fill-tree-group-body,
html body[data-current-page="fill2"] #page-fill2.show .is-collapsed>.fill-tree-leaves{display:none!important}
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-actions{display:none!important}
@media(max-width:1100px){html body[data-current-page="fill2"] #page-fill2.show .fill-tree-leaves{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:760px){html body[data-current-page="fill2"] #page-fill2.show .fill-tree-leaves{grid-template-columns:repeat(2,minmax(0,1fr))!important;padding-left:24px!important}}

/* Department reporter multi-select: compact in table editing, full menu width. */
.dpm-inline-reporter-multi{min-width:180px}
.dpm-inline-reporter-multi .person-multi-trigger{height:auto;min-height:32px;padding:3px 7px}
.dpm-inline-reporter-multi .person-multi-menu{right:auto;width:230px;z-index:80}

/* Page-local period picker: the global topbar no longer owns the month switcher. */
html body[data-page-period-local="1"] .topbar>#mpicker{
  display:none!important;
}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period{
  position:relative!important;
  min-height:52px!important;
  padding-right:220px!important;
  box-sizing:border-box!important;
}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker{
  display:inline-block!important;
  position:absolute!important;
  top:0!important;
  right:0!important;
  margin:0!important;
  z-index:40!important;
}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker>.mpicker-btn{
  min-width:198px!important;
  height:40px!important;
  justify-content:center!important;
}
html body[data-page-period-local="1"][data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card .dashboard-period-filter{
  display:none!important;
}
@media(max-width:760px){
  html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period{
    min-height:0!important;
    padding-right:0!important;
  }
  html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker{
    position:relative!important;
    top:auto!important;
    right:auto!important;
    margin-top:10px!important;
  }
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-step-one>p{
  margin:0 0 16px!important;
  color:var(--text-2)!important;
  font-size:12.5px!important;
  line-height:22px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-confirm-layout{
  display:grid!important;
  grid-template-columns:minmax(0,1.45fr) minmax(360px,.95fr)!important;
  gap:12px!important;
  align-items:stretch!important;
  margin:0!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-confirm-panel,
html body[data-current-page="fill2"] #page-fill2.show .fill-change-list{
  min-width:0!important;
  border:1px solid var(--border)!important;
  border-radius:8px!important;
  background:#fff!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-confirm-panel{
  display:flex!important;
  flex-direction:column!important;
  padding:12px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-confirm-panel,
html body[data-current-page="fill2"] #page-fill2.show .fill-change-list{
  height:100%!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-preview{
  margin:0!important;
  padding:12px!important;
  border:1px solid var(--border)!important;
  border-radius:8px!important;
  background:#fff!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-preview-head,
html body[data-current-page="fill2"] #page-fill2.show .fill-project-adjust-row,
html body[data-current-page="fill2"] #page-fill2.show .fill-step-actions{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  gap:10px!important;
  flex-wrap:wrap!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-preview-head{
  margin-bottom:10px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-preview-head .btn{
  margin-left:auto!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips{
  max-height:58px!important;
  overflow:hidden!important;
  display:flex!important;
  flex-direction:row!important;
  flex-wrap:wrap!important;
  align-items:center!important;
  gap:6px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-view-all{
  margin-left:auto!important;
  white-space:nowrap!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-project-adjust-row{
  margin-top:10px!important;
  padding-top:10px!important;
  border-top:1px dashed var(--border)!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-step-actions{
  margin-top:12px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-list{
  overflow:hidden!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-head{
  height:40px!important;
  padding:0 12px!important;
  display:flex!important;
  align-items:center!important;
  border-bottom:1px solid var(--border)!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row{
  min-height:38px!important;
  padding:0 12px!important;
  grid-template-columns:86px minmax(0,1fr) 58px!important;
}
@media(max-width:1080px){
  html body[data-current-page="fill2"] #page-fill2.show .fill-confirm-layout{
    grid-template-columns:1fr!important;
  }
  html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step{
    padding:0 16px!important;
  }
}

/* Fill2 final lock: match result-center horizontal step bar even before body route state is stamped. */
html body #page-fill2.show{
  display:block!important;
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
  grid-template-columns:none!important;
  grid-template-rows:none!important;
}
html body #page-fill2.show>.page-head,
html body #page-fill2.show>#fill-workflow-steps,
html body #page-fill2.show>#fill-step-one,
html body #page-fill2.show>#fill2-regular,
html body #page-fill2.show>#fill2-outsource,
html body #page-fill2.show>#fill2-dispatch,
html body #page-fill2.show>#fill-step-three{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin-left:16px!important;
  margin-right:16px!important;
  box-sizing:border-box!important;
}
html body #page-fill2.show>.page-head{
  margin-top:0!important;
  margin-bottom:16px!important;
}
html body #page-fill2.show>#fill-workflow-steps{
  position:relative!important;
  top:auto!important;
  z-index:auto!important;
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  align-items:stretch!important;
  gap:0!important;
  height:68px!important;
  min-height:68px!important;
  margin-top:0!important;
  margin-bottom:16px!important;
  padding:0!important;
  border:1px solid #E5E6EB!important;
  border-radius:8px!important;
  background:#fff!important;
  box-shadow:none!important;
  overflow:hidden!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step{
  position:relative!important;
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:10px!important;
  min-width:0!important;
  min-height:68px!important;
  height:68px!important;
  padding:0 20px!important;
  border:0!important;
  border-right:1px solid #E5E6EB!important;
  border-radius:0!important;
  background:#fff!important;
  box-shadow:none!important;
  color:var(--text-3)!important;
  text-align:left!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step:last-child{
  border-right:0!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.active{
  background:#F0F5FF!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.done{
  background:#fff!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step i{
  display:grid!important;
  place-items:center!important;
  flex:0 0 28px!important;
  width:28px!important;
  height:28px!important;
  min-width:28px!important;
  border-radius:50%!important;
  background:#EEF1F5!important;
  color:#64748B!important;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif!important;
  font-size:12px!important;
  line-height:1!important;
  font-style:normal!important;
  font-weight:600!important;
  box-shadow:none!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.active i{
  background:var(--accent)!important;
  color:#fff!important;
  box-shadow:0 0 0 3px rgba(22,119,255,.12)!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.done i{
  background:#EEF4FF!important;
  color:var(--accent)!important;
  font-size:0!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.done i::before{
  content:"✓";
  font-size:13px;
  font-weight:700;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step span{
  display:block!important;
  min-width:0!important;
  margin:0!important;
  color:#86909C!important;
  font-size:11px!important;
  line-height:17px!important;
  white-space:normal!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step b{
  display:block!important;
  margin:0!important;
  color:#4E5969!important;
  font-size:12.5px!important;
  line-height:18px!important;
  font-weight:600!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.active b{
  color:var(--accent)!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.clickable:hover{
  background:#F8FAFF!important;
  box-shadow:none!important;
}
@media(max-width:1080px){
  html body #page-fill2.show>#fill-workflow-steps .fill-step{
    padding:0 14px!important;
  }
}

/* White card surfaces: no visible outer outline. Internal dividers and form control borders stay intact. */
html body[data-current-page] .main :is(.page.show,.content .page.show)>:is(
  .card,
  .tbl-wrap,
  .toolbar,
  .f2-filterbar,
  .flow-card,
  .cycle-card,
  .sync-card,
  .roster-sync,
  .fill-layout,
  .fill-review-filter,
  .fill-review-actions,
  .fill-review-table-wrap,
  .adj-filter-card,
  .adj-report-card
),
html body[data-current-page] .main :is(.page.show,.content .page.show)>:is(
  #roster-filterbar,
  #dpm-filterbar,
  #dpm-actions,
  #dpm-tab-project,
  #log-tabs,
  #log-tab-changes,
  #log-tab-auth,
  #sum-global-filter-card,
  #sum-view-proj,
  #sum-view-dept
),
html body[data-current-page] .main :is(.page.show,.content .page.show)>.budget-unified>:is(.card,.tbl-wrap),
html body[data-current-page] .main :is(.page.show,.content .page.show) .fill-main>.tbl-wrap,
html body[data-current-page] .main :is(.page.show,.content .page.show) .fill-layout>.tbl-wrap,
html body[data-current-page] .main :is(.page.show,.content .page.show) .fill-confirm-layout>:is(.fill-confirm-panel,.fill-change-list),
html body[data-current-page] .main :is(.page.show,.content .page.show) .fill-inherit-preview{
  border-color:transparent!important;
  box-shadow:none!important;
}

/* Page-id final override: legacy page rules use ids + !important, so white card outlines need equal specificity. */
html body[data-current-page="task"] #page-task.show>.card,
html body[data-current-page="task"] #page-task.show .tbl-wrap,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-filter,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-table-wrap,
html body[data-current-page="fillreview"] #page-fillreview.show>.tbl-wrap,
html body[data-current-page="roster"] #page-roster.show>.roster-sync,
html body[data-current-page="roster"] #page-roster.show>#roster-filterbar,
html body[data-current-page="roster"] #page-roster.show>.fill-layout,
html body[data-current-page="roster"] #page-roster.show .tbl-wrap,
html body[data-current-page="deptprojects"] #page-deptprojects.show>.roster-sync,
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-filterbar,
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-actions,
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project,
html body[data-current-page="deptprojects"] #page-deptprojects.show>.tbl-wrap,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show>.tbl-wrap,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .tbl-wrap,
html body[data-current-page="roles"] #page-roles.show>.card,
html body[data-current-page="roles"] #page-roles.show>.tbl-wrap,
html body[data-current-page="roles"] #page-roles.show .tbl-wrap,
html body[data-current-page="log"] #page-log.show>#log-tabs,
html body[data-current-page="log"] #page-log.show>#log-tab-changes,
html body[data-current-page="log"] #page-log.show>#log-tab-auth,
html body[data-current-page="log"] #page-log.show .tbl-wrap,
html body[data-current-page="adjustment"] #page-adjustment.show>.adj-filter-card,
html body[data-current-page="adjustment"] #page-adjustment.show>.adj-report-card,
html body[data-current-page="adjustment"] #page-adjustment.show>.tbl-wrap,
html body[data-current-page="budget"] #page-budget.show .budget-unified>.card,
html body[data-current-page="budget"] #page-budget.show .budget-unified>.tbl-wrap,
html body[data-current-page="summary"] #page-summary.show>#sum-global-filter-card,
html body[data-current-page="summary"] #page-summary.show>#sum-view-proj,
html body[data-current-page="summary"] #page-summary.show>#sum-view-dept,
html body[data-current-page="summary"] #page-summary.show .tbl-wrap{
  border-color:transparent!important;
  box-shadow:none!important;
}

/* Final flat-shell override: main white content containers should not expose an outer border or shadow. */
html body .main :is(.page.show,.content .page.show)>:is(
  .card,
  .tbl-wrap,
  .toolbar,
  .f2-filterbar,
  .flow-card,
  .cycle-card,
  .sync-card,
  .roster-sync,
  .fill-layout,
  .fill-review-filter,
  .fill-review-actions,
  .fill-review-table-wrap,
  .adj-filter-card,
  .adj-report-card
),
html body .main :is(.page.show,.content .page.show)>:is(
  #roster-filterbar,
  #dpm-filterbar,
  #dpm-actions,
  #dpm-tab-project,
  #log-tabs,
  #log-tab-changes,
  #log-tab-auth,
  #sum-global-filter-card,
  #sum-view-proj,
  #sum-view-dept
),
html body .main :is(.page.show,.content .page.show)>.budget-unified>:is(.card,.tbl-wrap),
html body .main :is(.page.show,.content .page.show) .fill-main>.tbl-wrap,
html body .main :is(.page.show,.content .page.show) .fill-layout>.tbl-wrap,
html body .main :is(.page.show,.content .page.show) .fill-confirm-layout>:is(.fill-confirm-panel,.fill-change-list),
html body .main :is(.page.show,.content .page.show) .fill-inherit-preview,
html body #page-task.show>.card,
html body #page-task.show .tbl-wrap,
html body #page-fillreview.show>.fill-review-filter,
html body #page-fillreview.show>.fill-review-actions,
html body #page-fillreview.show>.fill-review-table-wrap,
html body #page-fillreview.show>.tbl-wrap,
html body #page-roster.show>.roster-sync,
html body #page-roster.show>#roster-filterbar,
html body #page-roster.show>.fill-layout,
html body #page-roster.show .tbl-wrap,
html body #page-deptprojects.show>.roster-sync,
html body #page-deptprojects.show>#dpm-filterbar,
html body #page-deptprojects.show>#dpm-actions,
html body #page-deptprojects.show>#dpm-tab-project,
html body #page-deptprojects.show>.tbl-wrap,
html body #page-deptpermissions.show>.tbl-wrap,
html body #page-deptpermissions.show .tbl-wrap,
html body #page-roles.show>.card,
html body #page-roles.show>.tbl-wrap,
html body #page-roles.show .tbl-wrap,
html body #page-log.show>#log-tabs,
html body #page-log.show>#log-tab-changes,
html body #page-log.show>#log-tab-auth,
html body #page-log.show .tbl-wrap,
html body #page-adjustment.show>.adj-filter-card,
html body #page-adjustment.show>.adj-report-card,
html body #page-adjustment.show>.tbl-wrap,
html body #page-budget.show .budget-unified>.card,
html body #page-budget.show .budget-unified>.tbl-wrap,
html body #page-summary.show>#sum-global-filter-card,
html body #page-summary.show>#sum-view-proj,
html body #page-summary.show>#sum-view-dept,
html body #page-summary.show .tbl-wrap{
  border:0!important;
  box-shadow:none!important;
  outline:0!important;
}

/* Absolute last pass: the shell cards in the working area are flat white panels.
   Keep inner table separators/control borders; remove only the panel outline/shadow. */
html body .main .content .page.show > :is(.card,.tbl-wrap,.fill-layout,.toolbar,.f2-filterbar,.roster-sync,.sync-card,.cycle-card,.flow-card,.fill-review-filter,.fill-review-actions,.fill-review-table-wrap,.adj-filter-card,.adj-report-card),
html body .main .content .page.show > :is(.card,.tbl-wrap,.fill-layout,.toolbar,.f2-filterbar,.roster-sync,.sync-card,.cycle-card,.flow-card,.fill-review-filter,.fill-review-actions,.fill-review-table-wrap,.adj-filter-card,.adj-report-card)::before,
html body .main .content .page.show > :is(.card,.tbl-wrap,.fill-layout,.toolbar,.f2-filterbar,.roster-sync,.sync-card,.cycle-card,.flow-card,.fill-review-filter,.fill-review-actions,.fill-review-table-wrap,.adj-filter-card,.adj-report-card)::after,
html body .main .content .page.show :is(.budget-unified,.fill-main,.fill-layout,.fill-confirm-layout) > :is(.card,.tbl-wrap,.fill-confirm-panel,.fill-change-list),
html body .main .content .page.show :is(.budget-unified,.fill-main,.fill-layout,.fill-confirm-layout) > :is(.card,.tbl-wrap,.fill-confirm-panel,.fill-change-list)::before,
html body .main .content .page.show :is(.budget-unified,.fill-main,.fill-layout,.fill-confirm-layout) > :is(.card,.tbl-wrap,.fill-confirm-panel,.fill-change-list)::after,
html body .main .content .page.show > :is(#sum-global-filter-card,#sum-view-proj,#sum-view-dept,#roster-filterbar,#dpm-filterbar,#dpm-actions,#dpm-tab-project,#log-tabs,#log-tab-changes,#log-tab-auth){
  border:0!important;
  box-shadow:none!important;
  outline:0!important;
}

/* Final table baseline: Moonton DS sample room. */
html body .main :is(.page.show,.content .page.show) .tbl-wrap table{
  border-collapse:collapse!important;
  color:var(--text)!important;
  font-size:13px!important;
  letter-spacing:0!important;
}
html body .main :is(.page.show,.content .page.show) .tbl-wrap table th{
  height:var(--table-head-height)!important;
  min-height:var(--table-head-height)!important;
  padding:0 16px!important;
  background:#f7f8fa!important;
  color:#3d4148!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:600!important;
  letter-spacing:0!important;
  text-transform:none!important;
  border-bottom:1px solid #e5e6eb!important;
  white-space:nowrap!important;
  vertical-align:middle!important;
}
html body .main :is(.page.show,.content .page.show) .tbl-wrap table td{
  height:var(--table-row-height)!important;
  min-height:var(--table-row-height)!important;
  padding:0 16px!important;
  color:#30343b!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:400!important;
  letter-spacing:0!important;
  border-bottom:1px solid #e5e6eb!important;
  white-space:nowrap!important;
  vertical-align:middle!important;
}

/* Roster list: fixed page shell, table-owned scrolling, and DS-style toolbar hierarchy. */
html body[data-current-page="roster"] #page-roster.show{
  display:flex!important;
  flex-direction:column!important;
  height:calc(100vh - 88px)!important;
  max-height:calc(100vh - 88px)!important;
  overflow:hidden!important;
}
html body[data-current-page="roster"] #page-roster.show>.page-head,
html body[data-current-page="roster"] #page-roster.show>.roster-sync,
html body[data-current-page="roster"] #page-roster.show>#roster-filterbar{
  flex:0 0 auto!important;
}
html body[data-current-page="roster"] #page-roster.show>.fill-layout{
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  overflow:hidden!important;
}
html body[data-current-page="roster"] #page-roster.show .fill-main,
html body[data-current-page="roster"] #page-roster.show #roster-table-wrap{
  min-height:0!important;
  height:100%!important;
  overflow:hidden!important;
}

/* Department permissions: extend the white work surface to the viewport bottom,
   while preserving the global 16px bottom breathing room. */
html body[data-current-page="deptpermissions"] #page-deptpermissions.show{
  display:flex!important;
  flex-direction:column!important;
  height:calc(100vh - 88px)!important;
  min-height:calc(100vh - 88px)!important;
  max-height:calc(100vh - 88px)!important;
  overflow:hidden!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show>.page-head{
  flex:0 0 auto!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show>.tbl-wrap{
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  background:#fff!important;
  overflow:hidden!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show>.tbl-wrap>.card-head{
  border-bottom:0!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show>.tbl-wrap>.card-head h3,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show>.tbl-wrap>.card-head .tag-sm{
  display:none!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-table-wrap>.card-head{
  min-height:48px!important;
  height:48px!important;
  padding:0 16px!important;
  border-bottom:0!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-table-wrap>.card-head #roster-cnt,
html body[data-current-page="roster"] #page-roster.show #roster-table-wrap>.card-head #roster-scope-tag,
html body[data-current-page="roster"] #page-roster.show #roster-filterbar #roster-slice,
html body[data-current-page="roster"] #page-roster.show #roster-edit-hint,
html body[data-current-page="roster"] #page-roster.show #roster-foot{
  display:none!important;
}
html body[data-current-page="roster"] #page-roster.show .roster-list-toolbar{
  flex:0 0 56px!important;
  min-height:56px!important;
  height:56px!important;
  padding:12px 16px!important;
  border-bottom:0!important;
}
html body[data-current-page="roster"] #page-roster.show .roster-list-toolbar .roster-toolbar-actions{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  margin-left:auto!important;
  flex:0 0 auto!important;
}
html body[data-current-page="roster"] #page-roster.show .roster-list-toolbar .roster-toolbar-actions .btn{
  margin:0!important;
  flex:0 0 auto!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-table-wrap>.tbl-scroll{
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  overflow:auto!important;
  scrollbar-gutter:stable!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-table-wrap>.roster-pagination{
  flex:0 0 50px!important;
  min-height:50px!important;
  height:50px!important;
  margin-top:auto!important;
  border-top:1px solid #E5E6EB!important;
  border-bottom:0!important;
  padding:9px 16px!important;
  background:#fff!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-filterbar{
  border-bottom:0!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-filterbar::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  left:16px!important;
  right:16px!important;
  bottom:0!important;
  height:1px!important;
  background:#E5E6EB!important;
  pointer-events:none!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show #dpm-filterbar{
  position:relative!important;
  border-bottom:0!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show #dpm-filterbar::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  left:16px!important;
  right:16px!important;
  bottom:0!important;
  height:1px!important;
  background:#E5E6EB!important;
  pointer-events:none!important;
}
html body .main :is(.page.show,.content .page.show) .tbl-wrap table tbody tr:hover,
html body .main :is(.page.show,.content .page.show) .tbl-wrap table tbody tr:hover td{
  background:#fafbfc!important;
}
html body .main :is(.page.show,.content .page.show) .tbl-wrap table tbody tr:last-child td{
  border-bottom:none!important;
}
html body .main :is(.page.show,.content .page.show) .tbl-wrap table :is(th,td):first-child{
  padding-left:16px!important;
}
html body .main :is(.page.show,.content .page.show) .tbl-wrap table :is(th,td):last-child{
  padding-right:16px!important;
}
html body #page-fill2.show thead tr:nth-child(2) th{
  top:var(--table-head-height)!important;
}
html body #page-summary.show #dept-cross-tbl thead tr:nth-child(2) th{
  top:var(--table-head-height)!important;
}
html body #page-budget.show .budget-grid thead tr:nth-child(1) th{
  height:42px!important;
  font-size:13px!important;
}
html body #page-budget.show .budget-grid thead tr:nth-child(2) th{
  top:42px!important;
  height:38px!important;
}
html body #page-budget.show .budget-grid thead tr:nth-child(3) th{
  top:80px!important;
  height:52px!important;
  font-size:11px!important;
  white-space:normal!important;
  line-height:1.35!important;
}
/* ── Task management PRD function transplant with workbench visual direction (2026-08-25) ── */
body[data-current-page="task"] .main>.content{padding:72px 16px 16px!important}
body[data-current-page="task"] #page-task.show{width:100%!important;max-width:none!important;margin:0!important}
#page-task.show>.page-head{margin:0 0 16px!important}
#page-task.show>.page-head h2{font-size:18px!important;line-height:26px!important;font-weight:700}
#page-task.show>.page-head p{margin-top:4px!important;font-size:13px;line-height:22px}
#page-task.show>#task-type-seg{display:none!important}
#page-task.show>#task-worktime{background:transparent!important;border:0!important;box-shadow:none!important;border-radius:0!important;overflow:visible!important}
.task-designer-shell{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;padding:14px;background:#fff;border:1px solid var(--border-2);border-radius:8px;box-shadow:none}
.task-designer-main{min-width:0;display:flex;flex-direction:column;gap:14px}
.task-designer-card{background:#fff;border:1px solid var(--border-2);border-radius:8px;box-shadow:0 2px 10px rgba(31,35,41,.05)}
.task-designer-overview{padding:16px 20px 14px}
.task-designer-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:4px}
.task-designer-heading h3{position:relative;display:inline-flex;align-items:center;min-height:22px;margin:0;padding-left:14px;color:var(--text);font-size:14px;line-height:22px;font-weight:500}
.task-designer-heading h3::before{content:"";position:absolute;left:0;top:50%;width:4px;height:12px;border-radius:2px;background:#1677FF;transform:translateY(-50%)}
.task-designer-heading-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.task-designer-heading .btn{height:34px;padding:0 16px;font-size:13px}
.task-designer-tabs{display:flex;gap:40px;min-height:36px;padding:0 0 2px;margin-bottom:18px;border-bottom:1px solid var(--border)}
.task-designer-tabs button{position:relative;height:34px;padding:0;border:0;background:transparent;color:var(--text-2);font-size:14px;line-height:22px;font-weight:600}
.task-designer-tabs button.active{color:var(--text)}
.task-designer-tabs button.active::after{content:"";position:absolute;left:0;bottom:-3px;width:28px;height:3px;border-radius:999px;background:var(--accent)}
.task-designer-title-row{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px}
.task-designer-title-row h3{margin:0;font-size:16px;line-height:24px;font-weight:700}
.task-designer-title-row p{margin-top:3px;color:var(--text-3);font-size:12px;line-height:20px}
.task-designer-type-icon{width:20px;height:20px;margin-top:2px;border-radius:5px;display:grid;place-items:center;background:var(--accent);color:#fff;font-size:12px;font-weight:700}
.task-designer-badge{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:6px;font-size:12px;line-height:20px;font-weight:600;background:#EEF4FF;color:var(--accent)}
.task-designer-badge.green{background:#E8FAEB;color:var(--green)}
.task-designer-badge.amber{background:#FFF4E6;color:#D46B08}
.task-designer-note{display:flex;align-items:center;gap:8px;min-height:34px;padding:7px 10px;margin-bottom:18px;background:#EAF1FF;color:var(--text-2);font-size:12px;line-height:20px}
.task-designer-note svg{width:16px;height:16px;flex:0 0 auto;fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.task-designer-note button{margin-left:auto;border:0;background:transparent;color:var(--text-3);font-size:20px;line-height:20px}
.task-designer-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-bottom:18px}
.task-designer-kpis span{display:block;color:var(--text-3);font-size:12px;line-height:20px}
.task-designer-kpis b{display:block;margin-top:3px;color:var(--text);font-size:20px;line-height:28px;font-weight:700}
.task-designer-kpi-progress{margin-top:5px;padding:7px 0 8px;border:0;border-radius:0;background:transparent}
.task-designer-kpi-progress-value{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.task-designer-kpi-progress-value b{margin:0;font-size:14px;line-height:20px}
.task-designer-kpi-progress-value em{color:var(--accent);font-size:12px;font-style:normal;font-weight:700;line-height:20px}
.task-designer-kpi-progress-track{height:6px;margin-top:6px;border-radius:999px;background:#E5E7EB;overflow:hidden}
.task-designer-kpi-progress-track i{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .2s ease}
.task-designer-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px;flex-wrap:wrap}
.task-designer-section-title{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 16px}
.task-designer-section-title h3{margin:0;position:relative;padding-left:10px;font-size:14px;line-height:22px;font-weight:700}
.task-designer-section-title h3::before{content:"";position:absolute;left:0;top:5px;width:3px;height:14px;border-radius:999px;background:var(--accent)}
.task-designer-section-title span{color:var(--text-3);font-size:12px;line-height:20px}
.task-designer-table-wrap{padding:0 16px 16px;overflow:auto}
.task-designer-table-wrap table{width:100%;min-width:900px;border-collapse:separate;border-spacing:0}
.task-designer-table-wrap th{height:40px;padding:0 16px;background:#F5F6F7;color:var(--text);font-size:13px;line-height:20px;font-weight:700;text-align:left;white-space:nowrap}
.task-designer-table-wrap td{height:56px;padding:0 16px;border-bottom:1px solid var(--border);color:var(--text-2);font-size:13px;line-height:22px;white-space:nowrap}
.task-designer-table-wrap tr.group td{background:#FAFBFC;color:var(--text);font-weight:700}
.task-designer-table-wrap tbody tr:hover td{background:#F7FAFF}
.task-designer-dept{display:flex;align-items:center;gap:2px}
.task-designer-caret{width:18px;height:18px;border:0;background:transparent;color:var(--text-3);display:grid;place-items:center}
.task-designer-caret svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .16s ease}
.task-designer-caret.open svg{transform:rotate(90deg)}
.task-designer-caret.leaf{width:18px}
.task-designer-progress{display:flex;align-items:center;gap:10px}
.task-designer-progress i{width:160px;height:6px;border-radius:999px;background:#EFF1F4;overflow:hidden}
.task-designer-progress b{display:block;height:100%;border-radius:999px}
.task-designer-progress em{min-width:38px;font-style:normal;font-size:12px;line-height:20px;font-weight:700}
.task-designer-row-action{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:68px;height:34px;padding:0 12px;border:0;border-radius:8px;background:#F2F3F5;color:var(--text-2);font-size:13px;line-height:20px;font-weight:600}
.task-designer-row-action svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.task-designer-status.done{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:6px;background:#E8FAEB;color:var(--green);font-size:12px;font-weight:600}
.task-designer-side{padding:20px 16px;min-height:100%}
.task-designer-side-head{display:flex;align-items:center;margin-bottom:18px}
.task-designer-side-head h3{margin:0;font-size:16px;line-height:24px;font-weight:700}
.task-designer-side-head button{margin-left:auto;border:0;background:transparent;color:var(--text-3);font-size:13px}
.task-designer-timeline{display:flex;flex-direction:column}
.task-designer-node{position:relative;display:grid;grid-template-columns:42px 1fr;gap:12px;min-height:108px}
.task-designer-node:not(:last-child)::after{content:"";position:absolute;left:20px;top:42px;bottom:0;border-left:1px dashed #DEE4EC}
.task-designer-node i{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#EAF1FF;color:var(--accent);font-style:normal;font-size:13px;font-weight:700}
.task-designer-node.done i{background:#E8FAEB;color:var(--green)}
.task-designer-node.current i{box-shadow:0 0 0 4px #EAF1FF}
.task-designer-node b{display:block;margin-top:1px;font-size:13px;line-height:22px;font-weight:600}
.task-designer-node p{margin:4px 0 3px;color:var(--text-2);font-size:12px;line-height:20px}
.task-designer-node span{color:var(--text-3);font-size:12px;line-height:20px}
.task-designer-audit{margin-top:4px;padding:10px 12px;border-radius:8px;background:#F7F8FA;color:var(--text-3);font-size:12px;line-height:20px}
.task-designer-modal{position:fixed;inset:0;z-index:820;display:none;place-items:center;padding:24px;background:rgba(15,23,42,.42)}
.task-designer-modal.show{display:grid}
.task-designer-dialog{width:min(820px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column;background:#fff;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.16);overflow:hidden}
.task-designer-dialog-head,.task-designer-dialog-foot{display:flex;align-items:center;gap:10px;padding:16px 20px}
.task-designer-dialog-head{border-bottom:1px solid var(--border)}
.task-designer-dialog-head b{font-size:16px;line-height:24px}
.task-designer-dialog-head .x{margin-left:auto}
.task-designer-dialog-body{padding:18px 20px;overflow:auto}
.task-designer-dialog-foot{justify-content:flex-end;border-top:1px solid var(--border)}
.task-designer-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}
.task-designer-form-grid.compact{gap:12px}
.task-designer-form-grid .field.full{grid-column:1/-1}
.task-designer-form-grid label{display:block;margin-bottom:6px;color:var(--text);font-size:13px;line-height:20px;font-weight:600}
.task-designer-form-grid label span{color:var(--text-3);font-size:12px;font-weight:400}
.task-designer-form-grid input,.task-designer-form-grid select,.task-designer-form-grid textarea{width:100%;min-height:34px;padding:0 10px;border:1px solid var(--border-strong);border-radius:6px;background:#fff;color:var(--text);font:inherit;outline:none}
.task-designer-form-grid textarea{min-height:76px;padding:8px 10px;resize:vertical}
.task-designer-form-grid input:disabled,.task-designer-form-grid select:disabled,.task-designer-form-grid textarea:disabled{background:#F7F8FA;color:var(--text-3)}
.task-designer-form-grid small{display:block;margin-top:6px;color:var(--text-3);font-size:12px;line-height:20px}
.task-designer-period{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border:1px solid var(--border);border-radius:6px;background:#F7F8FA}
.task-designer-period b{font-size:14px}
.task-designer-period span{margin-left:auto;color:var(--accent);font-size:12px}
.task-designer-node-editor{border:1px solid #C9D8FF;border-radius:8px;background:#F8FAFF;overflow:hidden}
.task-designer-node-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:12px;border-bottom:1px solid #DCE7FF}
.task-designer-node-tabs button{position:relative;min-width:0;border:0;background:transparent;color:var(--text-3);text-align:left;font-size:12px;line-height:20px;font-weight:600}
.task-designer-node-tabs button::before{content:"";display:block;width:20px;height:20px;margin-bottom:6px;border-radius:50%;background:#DCE2EA}
.task-designer-node-tabs button:not(:last-child)::after{content:"";position:absolute;left:28px;right:10px;top:10px;height:2px;background:#DCE2EA}
.task-designer-node-tabs button.active{color:var(--accent)}
.task-designer-node-tabs button.active::before{background:var(--accent);box-shadow:0 0 0 3px #EAF1FF}
.task-designer-node-tabs span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-3);font-size:11px;font-weight:400}
.task-designer-node-form{margin:12px;padding:14px;border:1px solid var(--border);border-radius:8px;background:#fff}
.task-designer-node-form-head{display:flex;align-items:center;margin-bottom:12px}
.task-designer-node-form-head b{font-size:14px;line-height:22px}
.task-designer-node-form-head span{margin-left:auto;color:var(--text-3);font-size:12px}
.task-designer-preview{border:1px solid var(--border);border-radius:8px;background:#F7F8FA;overflow:hidden}
.task-designer-preview div{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border);background:#fff}
.task-designer-preview b{font-size:13px}
.task-designer-preview span{color:var(--text-3);font-size:12px}
.task-designer-preview p{min-height:42px;margin:0;padding:12px;color:var(--text-2);font-size:13px;line-height:22px}
.task-designer-preview em{display:block;margin:0 12px 12px;padding-top:10px;border-top:1px solid var(--border);color:var(--accent);font-style:normal;font-size:12px}
@media(max-width:1180px){.task-designer-shell{grid-template-columns:1fr}.task-designer-side{min-height:auto}}
@media(max-width:760px){.task-designer-shell{padding:10px}.task-designer-overview{padding:14px}.task-designer-tabs{gap:22px}.task-designer-kpis,.task-designer-form-grid{grid-template-columns:1fr}.task-designer-node-tabs{grid-template-columns:1fr 1fr;row-gap:12px}.task-designer-node-tabs button::after{display:none}}

/* Task management layout polish: fixed page title, card-contained table scroll, DS table actions. */
html body[data-current-page="task"]{
  overflow:hidden;
}
html body[data-current-page="task"] .main{
  height:100vh;
  overflow:hidden;
}
html body[data-current-page="task"] .main>.content{
  height:100vh;
  padding:72px 16px 21px!important;
  overflow:hidden!important;
  background:var(--bg);
}
html body[data-current-page="task"] #page-task.show{
  height:100%;
  display:flex!important;
  flex-direction:column;
  overflow:hidden!important;
}
html body[data-current-page="task"] #page-task.show>.page-head{
  flex:0 0 auto;
  margin:0 0 16px!important;
}
html body[data-current-page="task"] #page-task.show>#task-worktime{
  flex:1 1 auto;
  min-height:0;
  overflow:hidden!important;
}
html body[data-current-page="task"] .task-designer-shell{
  height:100%;
  min-height:0;
  width:100%;
  grid-template-columns:minmax(0,1fr) 340px;
  gap:16px;
  padding:16px;
  overflow:hidden;
  background:#fff;
  border:0;
  border-radius:8px;
}
html body[data-current-page="task"] .task-designer-main,
html body[data-current-page="task"] .task-designer-side{
  min-height:0;
  overflow:hidden;
}
html body[data-current-page="task"] .task-designer-side{
  display:flex;
  flex-direction:column;
}
html body[data-current-page="task"] .task-designer-side-head{
  flex:0 0 auto;
}
html body[data-current-page="task"] .task-designer-timeline{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  scrollbar-gutter:stable;
}
html body[data-current-page="task"] .task-designer-audit{
  flex:0 0 auto;
}
html body[data-current-page="task"] .task-designer-main{
  gap:16px;
}
html body[data-current-page="task"] .task-designer-card{
  border:1px solid var(--border);
  box-shadow:none;
}
html body[data-current-page="task"] .task-designer-overview{
  flex:0 0 auto;
}
html body[data-current-page="task"] .task-designer-actions .btn.primary+.btn.primary{
  display:none!important;
}
html body[data-current-page="task"] .task-designer-table-card{
  flex:1 1 auto;
  min-height:260px;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
html body[data-current-page="task"] .task-designer-section-title{
  flex:0 0 auto;
  min-height:52px;
  padding:0 16px;
  border-bottom:0;
}
html body[data-current-page="task"] .task-designer-section-title h3{
  padding-left:14px;
  font-size:14px;
  line-height:22px;
  font-weight:500;
}
html body[data-current-page="task"] .task-designer-section-title h3::before{
  width:4px;
  height:12px;
  top:5px;
  border-radius:2px;
  background:#1677FF;
}
html body[data-current-page="task"] .task-designer-section-title span{
  font-size:12px;
  line-height:20px;
}
html body[data-current-page="task"] .task-designer-header-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  min-width:0;
  margin-left:auto;
}
html body[data-current-page="task"] .task-designer-table-wrap{
  flex:1 1 auto;
  min-height:0;
  margin:0 16px 16px;
  padding:0;
  overflow:auto;
  background:#fff;
}
html body[data-current-page="task"] .task-designer-table-wrap table{
  width:max(100%,980px);
  min-width:980px;
  border-collapse:separate!important;
  border-spacing:0!important;
  table-layout:fixed;
}
html body[data-current-page="task"] .task-designer-table-wrap th,
html body[data-current-page="task"] .task-designer-table-wrap td{
  height:56px!important;
  padding:0 16px!important;
  border-bottom:1px solid #E5E6EB!important;
  border-right:0!important;
  border-left:0!important;
  color:rgba(17,17,17,.8)!important;
  font-size:14px!important;
  line-height:22px!important;
  white-space:nowrap!important;
  vertical-align:middle!important;
}
html body[data-current-page="task"] .task-designer-table-wrap th{
  position:sticky;
  top:0;
  z-index:8;
  height:40px!important;
  background:#F5F6F7!important;
  color:rgba(17,17,17,.6)!important;
  font-weight:500!important;
}
html body[data-current-page="task"] .task-designer-table-wrap tbody tr:hover td{
  background:#FAFBFC!important;
}
html body[data-current-page="task"] .task-designer-table-wrap tr.group td{
  background:#FAFBFC!important;
  font-weight:500;
}
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(1),
html body[data-current-page="task"] .task-designer-table-wrap td:nth-child(1){width:42px}
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(2),
html body[data-current-page="task"] .task-designer-table-wrap td:nth-child(2){width:180px}
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(3),
html body[data-current-page="task"] .task-designer-table-wrap td:nth-child(3){width:120px}
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(4),
html body[data-current-page="task"] .task-designer-table-wrap td:nth-child(4){width:120px}
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(5),
html body[data-current-page="task"] .task-designer-table-wrap td:nth-child(5),
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(6),
html body[data-current-page="task"] .task-designer-table-wrap td:nth-child(6){width:110px}
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(7),
html body[data-current-page="task"] .task-designer-table-wrap td:nth-child(7){width:150px}
html body[data-current-page="task"] .task-designer-op-head,
html body[data-current-page="task"] .task-designer-op-cell{
  position:sticky!important;
  right:0;
  z-index:9;
  width:132px;
  text-align:left!important;
  background:#fff!important;
  box-shadow:-6px 0 12px -6px rgba(78,89,105,.08);
}
html body[data-current-page="task"] .task-designer-op-head{
  z-index:12;
  background:#F5F6F7!important;
}
/* Freeze the selection + department leading block while the remaining columns scroll. */
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(1),
html body[data-current-page="task"] .task-designer-table-wrap td:nth-child(1){
  position:sticky!important;
  left:0;
  z-index:10;
  background:#fff!important;
}
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(2),
html body[data-current-page="task"] .task-designer-table-wrap td:nth-child(2){
  position:sticky!important;
  left:42px;
  z-index:9;
  background:#fff!important;
  box-shadow:8px 0 14px -10px rgba(31,35,41,.42);
}
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(1),
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(2){
  background:#F5F6F7!important;
}
html body[data-current-page="task"] .task-designer-table-wrap tbody tr:hover td:nth-child(1),
html body[data-current-page="task"] .task-designer-table-wrap tbody tr:hover td:nth-child(2){
  background:#FAFBFC!important;
}
html body[data-current-page="task"] .task-designer-table-wrap tr.group td:nth-child(1),
html body[data-current-page="task"] .task-designer-table-wrap tr.group td:nth-child(2){
  background:#FAFBFC!important;
}
html body[data-current-page="task"] .task-designer-table-wrap tbody tr:hover .task-designer-op-cell{
  background:#FAFBFC!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-label,
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tab small{
  display:none!important;
}
html body[data-current-page="task"] .task-designer-progress{
  gap:8px;
}
html body[data-current-page="task"] .task-designer-progress i{
  width:150px;
  height:6px;
}
html body[data-current-page="task"] .task-designer-text-action{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:72px;
  height:28px;
  padding:0 8px;
  border:0;
  border-radius:4px;
  background:transparent;
  color:#1677FF;
  font-size:14px;
  line-height:22px;
  font-weight:400;
}
html body[data-current-page="task"] .task-designer-text-action:hover{
  background:#F2F3F5;
  color:#006AFF;
}
html body[data-current-page="task"] .task-designer-text-action.muted{
  color:rgba(17,17,17,.6);
}
html body[data-current-page="task"] .task-designer-batch-remind,
html body[data-current-page="task"] .task-designer-field-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:28px;
  padding:0 12px;
  border:1px solid #1677FF;
  border-radius:4px;
  background:#fff;
  color:#1677FF;
  font-size:13px;
  line-height:20px;
  font-weight:400;
  cursor:pointer;
}
html body[data-current-page="task"] .task-designer-batch-remind{display:inline-flex}
html body[data-current-page="task"] .task-designer-field-btn.global-field-btn{width:34px;min-width:34px;padding:0;border-color:transparent;background:#F2F3F5;color:rgba(17,17,17,.72);font-size:0!important;line-height:0!important;overflow:hidden}
html body[data-current-page="task"] .task-designer-field-btn.global-field-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
html body[data-current-page="task"] .task-designer-field-btn.global-field-btn{
  flex:0 0 var(--control-height);
  width:var(--control-height)!important;
  min-width:var(--control-height)!important;
  height:var(--control-height)!important;
  gap:0;
  border-color:transparent;
  background:#F2F3F5;
  color:rgba(17,17,17,.72);
}
html body[data-current-page="task"] .task-designer-batch-remind:disabled{
  border-color:#D9DDE4;
  color:#AEB4BE;
  cursor:not-allowed;
}
html body[data-current-page="task"] .task-designer-progress-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:42px;
  height:20px;
  padding:0 8px;
  border-radius:6px;
  font-size:12px;
  line-height:20px;
  font-weight:600;
}
html body[data-current-page="task"] .task-designer-progress-pill.blue{
  background:#E8F0FF;
  color:#1677FF;
}
html body[data-current-page="task"] .task-designer-progress-pill.green{
  background:#E8F8EA;
  color:#2F9E44;
}
html body[data-current-page="task"] .task-designer-action-done{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:56px;
  height:28px;
  color:rgba(17,17,17,.55);
  font-size:14px;
  line-height:22px;
}
html body[data-current-page="task"] .task-designer-side-head .task-designer-maintain-link{
  color:#1677FF!important;
  font-size:14px;
  line-height:22px;
  font-weight:400;
  cursor:pointer;
}
html body[data-current-page="task"] .task-designer-side-head .task-designer-maintain-link:hover{
  color:#006AFF!important;
}
html body[data-current-page="task"] .main>.content{
  padding-bottom:16px!important;
}
html body[data-current-page="task"] #page-task.show>#task-worktime{
  display:flex!important;
  margin-bottom:6px!important;
}
html body[data-current-page="task"] #page-task.show>#task-worktime .task-designer-shell{
  flex:1 1 auto;
}
@media(max-width:1180px){
  html body[data-current-page="task"] .task-designer-shell{
    grid-template-columns:1fr;
    overflow:auto;
  }
  html body[data-current-page="task"] .task-designer-main,
  html body[data-current-page="task"] .task-designer-side{
    overflow:visible;
  }
}

/* Fill2 flow refresh: Moonton standard flow style + bottom-right next action. */
html body #page-fill2.show>#fill-workflow-steps{
  position:relative!important;
  top:auto!important;
  z-index:20!important;
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  align-items:start!important;
  gap:0!important;
  width:min(1180px,calc(100% - 96px))!important;
  max-width:1180px!important;
  min-height:78px!important;
  height:78px!important;
  margin:4px auto 22px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}
html body #page-fill2.fill-step-three-active #fill-workflow-steps{
  position:relative!important;
  top:auto!important;
  background:transparent!important;
  box-shadow:none!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step{
  position:relative!important;
  display:grid!important;
  grid-template-columns:34px minmax(0,1fr)!important;
  align-items:start!important;
  column-gap:14px!important;
  min-width:0!important;
  min-height:78px!important;
  height:78px!important;
  padding:12px 28px 0 0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:var(--text-3)!important;
  text-align:left!important;
  cursor:default!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step:not(:last-child)::after{
  content:"";
  position:absolute;
  left:86px;
  right:28px;
  top:29px;
  height:1px;
  background:#E5E6EB;
  z-index:0;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.clickable{
  cursor:pointer!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.clickable:hover{
  background:transparent!important;
  box-shadow:none!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step i{
  position:relative!important;
  z-index:1!important;
  display:grid!important;
  place-items:center!important;
  grid-column:1!important;
  grid-row:1 / span 2!important;
  width:34px!important;
  height:34px!important;
  min-width:34px!important;
  flex:none!important;
  border-radius:50%!important;
  background:#EEF1F5!important;
  color:#64748B!important;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif!important;
  font-size:13px!important;
  line-height:1!important;
  font-style:normal!important;
  font-weight:700!important;
  box-shadow:none!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.active i{
  background:var(--accent)!important;
  color:#fff!important;
  box-shadow:0 0 0 4px rgba(22,119,255,.12)!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.done i{
  background:#EEF4FF!important;
  color:var(--accent)!important;
  font-size:0!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.done i::before{
  content:"✓";
  font-size:14px;
  font-weight:800;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step span{
  display:block!important;
  grid-column:2!important;
  min-width:0!important;
  margin:1px 0 0!important;
  color:#86909C!important;
  font-size:12px!important;
  line-height:20px!important;
  white-space:normal!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step b{
  display:block!important;
  margin:0 0 2px!important;
  color:#4E5969!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:600!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
html body #page-fill2.show>#fill-workflow-steps .fill-step.active b{
  color:var(--accent)!important;
}
html body #page-fill2.show .fill-step-actions,
html body #page-fill2.show #fill2-actionbar>#fill-check-next-btn{
  display:none!important;
}
.fill-workflow-footer{
  display:none;
  width:calc(100% - 32px);
  margin:16px 16px 0;
  padding:12px 20px;
  border-top:1px solid #E5E6EB;
  background:#fff;
  box-shadow:0 -8px 20px rgba(31,35,41,.06);
  box-sizing:border-box;
}
.fill-workflow-footer.show{
  position:sticky;
  bottom:0;
  z-index:70;
  display:flex;
}
.fill-workflow-footer-inner{
  display:flex;
  justify-content:flex-end;
  width:100%;
}
.fill-workflow-footer .btn{
  min-width:96px;
  height:36px;
  padding:0 22px;
  border-radius:6px;
  font-size:14px;
  line-height:22px;
}
@media(max-width:1080px){
  html body #page-fill2.show>#fill-workflow-steps{
    width:calc(100% - 32px)!important;
    max-width:calc(100% - 32px)!important;
    min-height:auto!important;
    height:auto!important;
  }
  html body #page-fill2.show>#fill-workflow-steps .fill-step{
    min-height:76px!important;
    height:auto!important;
    padding-right:14px!important;
  }
  html body #page-fill2.show>#fill-workflow-steps .fill-step:not(:last-child)::after{
    left:62px;
    right:14px;
  }
}
@media(max-width:760px){
  html body #page-fill2.show>#fill-workflow-steps{
    grid-template-columns:1fr!important;
    gap:10px!important;
  }
  html body #page-fill2.show>#fill-workflow-steps .fill-step{
    min-height:58px!important;
    padding:8px 0!important;
  }
  html body #page-fill2.show>#fill-workflow-steps .fill-step:not(:last-child)::after{
    display:none;
  }
  html body #page-fill2.show>#fill-workflow-steps .fill-step b{
    white-space:normal!important;
  }
  .fill-workflow-footer{
    width:calc(100% - 20px);
    margin-left:10px;
    margin-right:10px;
    padding:10px 12px;
  }
}

/* Highest-priority Fill2 flow lock: override older route-scoped card rules. */
html body[data-current-page="fill2"] #page-fill2.show{
  padding-bottom:72px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps,
html body #page-fill2.show>#fill-workflow-steps{
  width:min(1180px,calc(100% - 96px))!important;
  max-width:1180px!important;
  height:78px!important;
  min-height:78px!important;
  margin:4px auto 22px!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step,
html body #page-fill2.show>#fill-workflow-steps .fill-step{
  display:grid!important;
  grid-template-columns:34px minmax(0,1fr)!important;
  min-height:78px!important;
  height:78px!important;
  padding:12px 28px 0 0!important;
  border:0!important;
  background:transparent!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.active,
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.done,
html body #page-fill2.show>#fill-workflow-steps .fill-step.active,
html body #page-fill2.show>#fill-workflow-steps .fill-step.done{
  background:transparent!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step:not(:last-child)::after,
html body #page-fill2.show>#fill-workflow-steps .fill-step:not(:last-child)::after{
  content:"";
  position:absolute;
  left:86px;
  right:28px;
  top:29px;
  height:1px;
  background:#E5E6EB;
  z-index:0;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step i,
html body #page-fill2.show>#fill-workflow-steps .fill-step i{
  grid-column:1!important;
  grid-row:1 / span 2!important;
  flex:none!important;
  width:34px!important;
  height:34px!important;
  min-width:34px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step span,
html body #page-fill2.show>#fill-workflow-steps .fill-step span{
  grid-column:2!important;
  margin:1px 0 0!important;
  font-size:12px!important;
  line-height:20px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step b,
html body #page-fill2.show>#fill-workflow-steps .fill-step b{
  font-size:14px!important;
  line-height:22px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-step-actions,
html body[data-current-page="fill2"] #page-fill2.show #fill2-actionbar>#fill-check-next-btn,
html body #page-fill2.show .fill-step-actions,
html body #page-fill2.show #fill2-actionbar>#fill-check-next-btn{
  display:none!important;
}
html body[data-current-page="fill2"] .fill-workflow-footer.show,
html body .fill-workflow-footer.show{
  position:fixed;
  left:var(--adaptive-nav);
  right:0;
  bottom:0;
  z-index:120;
  width:auto;
  margin:0;
  display:flex!important;
}
html body:not([data-current-page="fill2"]) .fill-workflow-footer{
  display:none!important;
}
@media(max-width:1080px){
  html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps,
  html body #page-fill2.show>#fill-workflow-steps{
    width:calc(100% - 32px)!important;
    max-width:calc(100% - 32px)!important;
    height:auto!important;
    min-height:auto!important;
  }
  html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step,
  html body #page-fill2.show>#fill-workflow-steps .fill-step{
    min-height:76px!important;
    height:auto!important;
    padding-right:14px!important;
  }
}

/* Global table final lock: Moonton DS employee-list baseline. */
:root{
  --table-gutter:16px;
  --table-head-height:40px;
  --table-row-height:40px;
}
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-card){
  overflow:hidden!important;
}
html body .main .content .page.show .tbl-wrap>.tbl-scroll,
html body .main .content .page.show .task-designer-table-wrap{
  width:calc(100% - (var(--table-gutter) * 2))!important;
  max-width:calc(100% - (var(--table-gutter) * 2))!important;
  margin-left:var(--table-gutter)!important;
  margin-right:var(--table-gutter)!important;
  padding-left:0!important;
  padding-right:0!important;
  overflow:auto!important;
  box-sizing:border-box!important;
  background:#fff!important;
}
html body .main .content .page.show .tbl-wrap>table{
  width:calc(100% - (var(--table-gutter) * 2))!important;
  min-width:calc(100% - (var(--table-gutter) * 2))!important;
  margin-left:var(--table-gutter)!important;
  margin-right:var(--table-gutter)!important;
}
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table{
  border-collapse:collapse!important;
  border-spacing:0!important;
  color:rgba(17,17,17,.8)!important;
  font-size:14px!important;
  letter-spacing:0!important;
}
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table :is(th,td){
  height:40px!important;
  min-height:40px!important;
  padding:0 16px!important;
  box-sizing:border-box!important;
  border-top:0!important;
  border-right:0!important;
  border-bottom:1px solid #E5E6EB!important;
  border-left:0!important;
  line-height:22px!important;
  white-space:nowrap!important;
  vertical-align:middle!important;
}
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table th{
  background:#F5F6F7!important;
  color:rgba(17,17,17,.65)!important;
  font-size:14px!important;
  font-weight:600!important;
  text-transform:none!important;
}
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table td{
  background:#fff!important;
  color:rgba(17,17,17,.82)!important;
  font-size:14px!important;
  font-weight:400!important;
}
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table tbody tr:hover td{
  background:#FAFBFC!important;
}
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table td b{
  font-weight:600!important;
}
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table td:last-child :is(button,a),
html body .main .content .page.show .task-designer-op-cell :is(button,a),
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table td[style*="text-align:right"] :is(button,a){
  height:28px!important;
  min-height:28px!important;
  padding:0 8px!important;
  border:0!important;
  border-radius:4px!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#1677FF!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:400!important;
}
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table td:last-child :is(button,a):hover,
html body .main .content .page.show .task-designer-op-cell :is(button,a):hover,
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table td[style*="text-align:right"] :is(button,a):hover{
  background:#F2F3F5!important;
  color:#006AFF!important;
}
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table :is(th,td):last-child{
  padding-right:16px!important;
}
/* Table edge rules: the table viewport owns scrolling; the toolbar/title does not add a second top rule. */
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-card) > :is(.card-head,.toolbar,.task-designer-section-title):has(+ .tbl-scroll),
html body .main .content .page.show .task-designer-section-title:has(+ .task-designer-table-wrap),
html body .main .content .page.show .fill-review-actions .card-body:has(+ .selection-action-bar),
html body .main .content .page.show .fill-review-actions:has(+ .selection-action-bar){
  border-bottom:0!important;
}
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap) table .table-op-column{
  text-align:left!important;
}
html body .main .content .page.show :is(.tbl-scroll,.task-designer-table-wrap){
  scrollbar-gutter:stable both-edges;
}
html body .main .content .page.show :is(.tbl-scroll,.task-designer-table-wrap)::-webkit-scrollbar{height:10px;width:10px}
html body .main .content .page.show :is(.tbl-scroll,.task-designer-table-wrap)::-webkit-scrollbar-thumb{background:#C9CDD4;border:3px solid #fff;border-radius:999px}
html body .main .content .page.show :is(.tbl-scroll,.task-designer-table-wrap)::-webkit-scrollbar-track{background:#fff}
html body .main .content .page.show .task-designer-op-head,
html body .main .content .page.show .task-designer-op-cell{
  box-shadow:-10px 0 16px -10px rgba(31,35,41,.40)!important;
}

/* Dashboard summary compact pass: 16px gutters, no blank bands, fsel employment filter. */
html body[data-current-page="dashboard"] .main>.content{
  padding:72px 0 16px 16px!important;
}
html body[data-current-page="dashboard"] .main>.content>#page-dashboard.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
  grid-template-columns:284px minmax(0,1fr)!important;
  column-gap:0!important;
  min-height:0!important;
  box-sizing:border-box!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.page-head{
  grid-column:1 / -1!important;
  margin:0 0 16px!important;
  padding:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{
  width:auto!important;
  min-height:0!important;
  height:auto!important;
  align-self:start!important;
  margin:0!important;
  padding:16px 0!important;
  border-radius:8px 0 0 8px!important;
  background:#fff!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card{
  min-height:0!important;
  margin:0!important;
  border-radius:0 8px 0 0!important;
  background:#fff!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:16px 24px!important;
  min-height:68px!important;
  padding:16px!important;
  box-sizing:border-box!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body>div:not(.spacer){
  margin:0!important;
  min-width:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body>div:nth-of-type(4){
  grid-column:auto!important;
  margin-left:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card :is(.fsel,.ms,.ms-btn){
  width:100%!important;
  min-width:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card .card-body>div>span{
  flex:0 0 auto!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-tip{
  display:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-dept,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-detail{
  margin:0!important;
  padding:0!important;
  border-radius:0 0 8px 0!important;
  background:#fff!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj>.global-list-tools,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-dept>.global-list-tools{
  display:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj>.tbl-scroll,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-dept>.tbl-scroll,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-detail>.tbl-scroll{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin:0 16px 16px!important;
  padding:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj>.tbl-scroll{
  padding-top:16px!important;
  border-top:1px solid #E5E6EB!important;
}
html body[data-current-page="dashboard"] #sum-type-select{
  appearance:auto;
}
/* The standalone fill-detail page owns this view; keep the dashboard's
   summary side tabs limited to project summary and department distribution. */
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip>#sum-tab-detail{
  display:none!important;
}

/* Dashboard summary tabs use the same horizontal treatment as the fill-review
   status tabs: one row, text labels, and a short blue underline on active. */
html body[data-current-page="dashboard"] #page-dashboard.show{
  grid-template-columns:minmax(0,1fr)!important;
  grid-template-rows:auto auto auto auto minmax(420px,1fr)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{
  grid-column:1!important;
  grid-row:2!important;
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:24px!important;
  width:auto!important;
  min-width:0!important;
  min-height:48px!important;
  height:48px!important;
  margin:0 16px!important;
  padding:0!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:0!important;
  box-shadow:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:auto!important;
  height:48px!important;
  min-height:48px!important;
  margin:0!important;
  padding:0 0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:400!important;
  position:relative!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active{
  color:var(--accent)!important;
  font-weight:600!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active::after{
  content:''!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  width:auto!important;
  height:3px!important;
  border-radius:3px 3px 0 0!important;
  background:var(--accent)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.card{
  grid-column:1!important;
  grid-row:3!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip+div[style*="上方切换"]{
  grid-column:1!important;
  grid-row:4!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){
  grid-column:1!important;
  grid-row:5!important;
}

/* Final task page boundary: the content container already provides the
   required 16px gutter; do not add another page-level inset here. */
html body[data-current-page="task"] .main>.content>#page-task.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
}

/* PROJECT TAB STANDARD — reference: 填报明细数据查看 */
html body[data-current-page="task"][data-tab-standard="1"] #page-task .task-designer-tabs{gap:8px!important}
html body[data-current-page][data-tab-standard="1"] #page-fill2.show #fill2-status-tabs .status-chip.active{color:var(--accent)!important;font-weight:600!important}
html body[data-current-page][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>.tab-strip{height:56px!important;min-height:56px!important;background:transparent!important;border:0!important;border-bottom:1px solid var(--border)!important;padding:0!important}
html body[data-current-page][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>.tab-strip .ts{height:56px!important;min-height:56px!important}
html body[data-current-page][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>.tab-strip .ts.active::after{top:auto!important;bottom:0!important;height:3px!important}
html body[data-current-page][data-tab-standard="1"] :is(#page-dashboard,#page-summary,#page-cost,#page-fill2,#page-fillreview) :is(.tab-strip,.task-designer-tabs,.fill-analysis-tabs,.fill-review-status-tabs){display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;gap:24px!important;width:100%!important;min-width:0!important;height:48px!important;min-height:48px!important;margin:0!important;padding:0!important;background:#fff!important;border:0!important;border-bottom:1px solid var(--border)!important;border-radius:0!important;box-shadow:none!important;overflow:visible!important}
html body[data-current-page][data-tab-standard="1"] :is(#page-dashboard,#page-summary,#page-cost,#page-fill2,#page-fillreview) :is(.tab-strip,.task-designer-tabs,.fill-analysis-tabs,.fill-review-status-tabs) :is(button,.ts,.fill-analysis-tab,.fill-review-status-tab){display:inline-flex!important;align-items:center!important;justify-content:center!important;position:relative!important;width:auto!important;min-width:0!important;height:48px!important;min-height:48px!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;color:var(--text-2)!important;font-size:14px!important;font-weight:400!important;white-space:nowrap!important}
html body[data-current-page][data-tab-standard="1"] :is(#page-dashboard,#page-summary,#page-cost,#page-fill2,#page-fillreview) :is(.tab-strip,.task-designer-tabs,.fill-analysis-tabs,.fill-review-status-tabs) :is(button.active,.ts.active,.fill-analysis-tab.active,.fill-review-status-tab.active){color:var(--accent)!important;font-weight:600!important}
html body[data-current-page][data-tab-standard="1"] :is(#page-dashboard,#page-summary,#page-cost,#page-fill2,#page-fillreview) :is(.tab-strip,.task-designer-tabs,.fill-analysis-tabs,.fill-review-status-tabs) :is(button.active,.ts.active,.fill-analysis-tab.active,.fill-review-status-tab.active)::after{content:''!important;position:absolute!important;top:auto!important;left:0!important;right:0!important;bottom:0!important;width:auto!important;height:3px!important;border-radius:3px 3px 0 0!important;background:var(--accent)!important}
html body[data-current-page] :is(.tab-strip,.task-designer-tabs,.fill-analysis-tabs,#page-fillreview .fill-review-status-tabs){
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:24px!important;
  width:100%!important;
  min-width:0!important;
  height:48px!important;
  min-height:48px!important;
  margin:0!important;
  padding:0!important;
  background:#fff!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:0!important;
  box-shadow:none!important;
  overflow:visible!important;
}
html body[data-current-page] :is(.tab-strip,.task-designer-tabs,.fill-analysis-tabs,#page-fillreview .fill-review-status-tabs) :is(button,.ts,.fill-analysis-tab,.fill-review-status-tab){
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  position:relative!important;
  width:auto!important;
  min-width:0!important;
  height:48px!important;
  min-height:48px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:400!important;
  white-space:nowrap!important;
}
html body[data-current-page] :is(.tab-strip,.task-designer-tabs,.fill-analysis-tabs,#page-fillreview .fill-review-status-tabs) :is(button.active,.ts.active,.fill-analysis-tab.active,.fill-review-status-tab.active){color:var(--accent)!important;font-weight:600!important}
html body[data-current-page] :is(.tab-strip,.task-designer-tabs,.fill-analysis-tabs,#page-fillreview .fill-review-status-tabs) :is(button.active,.ts.active,.fill-analysis-tab.active,.fill-review-status-tab.active)::after{
  content:''!important;
  position:absolute!important;
  top:auto!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  width:auto!important;
  height:3px!important;
  border-radius:3px 3px 0 0!important;
  background:var(--accent)!important;
}
/* The summary page keeps its two tables in the same flow; the standard only
   changes the tab appearance and does not alter the page-specific content. */

/* Final task-page edge alignment: .content owns the 16px gutter. */
html body[data-current-page="task"] #page-task.show>#task-worktime{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
}

/* Task page scroll model: the document scrolls, the title stays below the
   global header, and the progress card takes over as the sticky work area. */
html body[data-current-page="task"]{
  overflow:auto!important;
}
html body[data-current-page="task"] .main{
  height:auto!important;
  min-height:100vh!important;
  overflow:visible!important;
}
html body[data-current-page="task"] .main>.content{
  height:auto!important;
  min-height:100vh!important;
  overflow:visible!important;
  padding-bottom:32px!important;
}
html body[data-current-page="task"] #page-task.show{
  height:auto!important;
  min-height:calc(100vh - 72px)!important;
  overflow:visible!important;
}
html body[data-current-page="task"] #page-task.show>.page-head{
  position:fixed!important;
  left:var(--adaptive-nav)!important;
  right:0!important;
  top:56px!important;
  z-index:40!important;
  box-sizing:border-box!important;
  min-height:84px!important;
  margin:0!important;
  padding:8px 16px 12px!important;
  background:var(--bg)!important;
}
html body[data-current-page="task"] #page-task.show{
  padding-top:84px!important;
}
html body[data-current-page="task"] #page-task.show>#task-worktime{
  height:auto!important;
  min-height:calc(100vh - 180px)!important;
  overflow:visible!important;
}
html body[data-current-page="task"] .task-designer-shell{
  height:auto!important;
  min-height:0!important;
  overflow:visible!important;
  align-items:start!important;
}
html body[data-current-page="task"] .task-designer-main{
  overflow:visible!important;
}
html body[data-current-page="task"] .task-designer-overview{
  position:relative!important;
  z-index:1!important;
  height:340px!important;
  min-height:340px!important;
  box-sizing:border-box!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
}
html body[data-current-page="task"] .task-designer-table-card{
  position:relative!important;
  z-index:1!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="task"] .task-designer-table-wrap{
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="task"] .task-designer-side{
  height:340px!important;
  min-height:340px!important;
  max-height:340px!important;
  box-sizing:border-box!important;
}
html body[data-current-page="task"] #page-task.show>#task-worktime .task-designer-shell{
  padding:0!important;
}

/* Final fill-review boundary: keep the page gutter in .content only. */
html body[data-current-page="fill2"] .main>.content>#page-fill2.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-list .fill-change-row > b{
  color:#1F2329!important;
  font-weight:400!important;
}

/* Task management / task configuration split · 2026-09-02 */
html body[data-current-page="task"],
html body[data-current-page="taskconfig"]{overflow:hidden!important}
html body[data-current-page="task"] .main,
html body[data-current-page="taskconfig"] .main{height:100vh!important;min-height:0!important;overflow:hidden!important}
html body[data-current-page="task"] .main>.content,
html body[data-current-page="taskconfig"] .main>.content{box-sizing:border-box;height:100vh!important;min-height:0!important;padding:72px 16px 16px!important;overflow:hidden!important;background:var(--bg)}
html body[data-current-page="task"] .main>.content>#page-task.show,
html body[data-current-page="taskconfig"] .main>.content>#page-taskconfig.show{display:flex!important;flex-direction:column;width:100%!important;height:100%!important;min-height:0!important;margin:0!important;padding:0!important;overflow:hidden!important}
html body[data-current-page="task"] #page-task.show>.page-head,
html body[data-current-page="taskconfig"] #page-taskconfig.show>.page-head{position:static!important;inset:auto!important;z-index:auto!important;box-sizing:border-box!important;flex:0 0 auto!important;min-height:0!important;margin:0 0 16px!important;padding:0!important;background:transparent!important}
html body[data-current-page="task"] #page-task.show{padding-top:0!important}
html body[data-current-page="task"] #task-type-seg,
html body[data-current-page="task"] #task-budget{display:none!important}
html body[data-current-page="task"] #page-task.show>#task-worktime{display:flex!important;flex:1 1 auto!important;width:100%!important;height:auto!important;min-height:0!important;margin:0!important;overflow:hidden!important}
html body[data-current-page="taskconfig"] #mpicker{display:none!important}

.task-management-shell{display:grid;grid-template-columns:248px minmax(0,1fr);gap:16px;width:100%;min-height:0;overflow:hidden}
.task-master-card,.task-info-card,.task-designer-card,.task-config-sidebar,.task-config-panel{background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:none}
.task-master-card{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.task-master-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:16px;border-bottom:1px solid var(--border)}
.task-master-head h3{margin:0;color:var(--text);font-size:15px;line-height:22px}
.task-master-head div>span{display:block;margin-top:2px;color:var(--text-3);font-size:11px;line-height:18px}
.task-master-period{padding:14px 16px 10px}
.task-master-period label{display:block;margin-bottom:6px;color:var(--text-2);font-size:12px;font-weight:500}
.task-master-period .fsel{width:100%}
.task-master-list{display:flex;flex:1 1 auto;flex-direction:column;gap:6px;padding:6px 10px;overflow-y:auto}
.task-nav-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:62px;padding:9px 10px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--text);text-align:left;cursor:pointer;transition:background .15s,border-color .15s}
.task-nav-item:hover{background:#F7F8FA}
.task-nav-item.active{border-color:#B7CDFF;background:#F0F5FF}
.task-nav-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:7px;background:#F2F3F5;color:var(--text-2);font-size:13px;font-weight:700}
.task-nav-item.active .task-nav-icon{background:#1677FF;color:#fff}
.task-nav-copy{display:flex;min-width:0;flex-direction:column;gap:2px}
.task-nav-copy b{overflow:hidden;color:var(--text);font-size:13px;line-height:20px;text-overflow:ellipsis;white-space:nowrap}
.task-nav-copy small{overflow:hidden;color:var(--text-3);font-size:11px;line-height:17px;text-overflow:ellipsis;white-space:nowrap}
.task-nav-item em{color:var(--text-3);font-family:'Rubik';font-size:12px;font-style:normal;font-weight:600}
.task-nav-item.active em{color:#1677FF}
.fill-dept-tree-select{position:relative;min-width:230px;flex:0 1 260px}.fill-dept-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;cursor:pointer}.fill-dept-trigger svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}.fill-dept-menu{position:absolute;z-index:120;top:calc(100% + 6px);left:0;right:0;max-height:300px;overflow:auto;padding:7px;background:#fff;border:1px solid var(--border);border-radius:9px;box-shadow:var(--shadow-lg)}.fill-dept-option{display:flex;align-items:center;width:100%;min-height:36px;padding:0 10px;border:0;border-radius:7px;background:transparent;color:var(--text-2);font:inherit;font-size:13px;text-align:left;cursor:pointer}.fill-dept-option:hover,.fill-dept-option.selected{background:#F0F5FF;color:var(--accent)}.fill-dept-expand{width:22px;height:28px;margin-right:2px;border:0;background:transparent;color:var(--text-3);font-size:13px;cursor:pointer}.fill-dept-expand:disabled{cursor:default}.fill-dept-node{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center}.fill-dept-node>.fill-dept-option{grid-column:2}.fill-dept-children{grid-column:2;display:grid;gap:2px;padding-left:12px}.fill-dept-child{min-height:32px;color:var(--text-2);font-size:12px}
.task-management-main{display:flex;min-width:0;min-height:0;flex-direction:column;gap:16px;overflow:hidden}
.task-info-card{flex:0 0 auto;padding:18px 20px}
.task-info-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}
.task-info-heading h3{margin:7px 0 2px;color:var(--text);font-size:17px;line-height:25px}
.task-info-heading p{margin:0;color:var(--text-3);font-size:12px;line-height:20px}
.task-info-eyebrow{display:flex;align-items:center;gap:8px;color:var(--text-3);font-size:11px}
.task-info-card .btn.secondary,.task-config-actions .btn.secondary{height:34px;border-color:#D0D3D9;background:#F2F3F5;color:rgba(17,17,17,.8);box-shadow:none;font-size:13px;font-weight:600}
.task-info-card .btn.secondary:hover,.task-config-actions .btn.secondary:hover{border-color:#B9BDC5;background:#EDEFF2;color:#1F2329}
.task-info-metrics{display:grid;grid-template-columns:1.15fr 1.15fr 1.1fr .6fr;margin-top:16px;border:1px solid var(--border);border-radius:7px;background:#FAFBFC}
.task-info-metrics>div{min-width:0;padding:11px 14px;border-right:1px solid var(--border)}
.task-info-metrics>div:last-child{border-right:0}
.task-info-metrics span{display:block;margin-bottom:4px;color:var(--text-3);font-size:11px;line-height:17px}
.task-info-metrics b{display:block;overflow:hidden;color:var(--text);font-family:'Rubik';font-size:13px;line-height:20px;text-overflow:ellipsis;white-space:nowrap}
.task-info-metrics .task-info-percent{color:#1677FF;font-size:20px;line-height:24px}
.task-info-progress{height:4px;margin-top:7px;border-radius:99px;background:#E5E6EB;overflow:hidden}
.task-info-progress i{display:block;height:100%;border-radius:inherit;background:#1677FF}
.task-node-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:14px}
.task-node-mini{position:relative;display:flex;align-items:center;gap:9px;min-width:0;padding-right:14px}
.task-node-mini:not(:last-child)::after{content:"";position:absolute;left:27px;right:4px;top:11px;height:1px;background:#D9DCE2}
.task-node-mini>i{position:relative;z-index:1;display:grid;place-items:center;flex:0 0 23px;width:23px;height:23px;border-radius:50%;background:#E5E6EB;color:#8F959E;font-size:11px;font-style:normal;font-weight:700}
.task-node-mini.current>i{background:#1677FF;color:#fff;box-shadow:0 0 0 3px #EAF1FF}
.task-node-mini.done>i{background:#2EA121;color:#fff}
.task-node-mini>span{display:flex;min-width:0;flex-direction:column}
.task-node-mini b,.task-node-mini small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.task-node-mini b{color:var(--text-2);font-size:11px;line-height:17px}
.task-node-mini small{color:var(--text-3);font-size:10px;line-height:16px}
.task-management-main>.task-designer-table-card{display:flex!important;flex:1 1 auto!important;min-height:260px!important;overflow:hidden!important}
html body[data-current-page="task"] .task-designer-section-title{min-height:52px!important}
html body[data-current-page="task"] .task-designer-table-wrap{flex:1 1 auto!important;min-height:0!important;max-height:none!important;margin:0 16px 16px!important;overflow:auto!important}
.task-progress-cell{display:flex;align-items:center;gap:9px}
.task-progress-track{width:106px;height:6px;border-radius:99px;background:#E5E6EB;overflow:hidden}
.task-progress-track i{display:block;height:100%;border-radius:inherit;background:#1677FF}
.task-progress-track i.green{background:#2EA121}
.task-progress-cell b{min-width:34px;color:var(--text-2);font-family:'Rubik';font-size:12px!important;text-align:right}

html body[data-current-page="taskconfig"] #task-config-root{display:flex;flex:1 1 auto;min-height:0;overflow:hidden}
.task-config-shell{display:grid;grid-template-columns:232px minmax(0,1fr);gap:16px;width:100%;min-height:0;overflow:hidden}
.task-config-sidebar{display:flex;min-height:0;flex-direction:column;overflow:hidden}
.task-config-sidebar-head{padding:18px 16px 14px;border-bottom:1px solid var(--border)}
.task-config-sidebar-head h3{margin:0;font-size:15px;line-height:22px}
.task-config-sidebar nav{display:flex;flex:1 1 auto;flex-direction:column;gap:5px;padding:10px;overflow-y:auto}
.task-config-sidebar nav button{display:grid;grid-template-columns:minmax(0,1fr);align-items:center;width:100%;min-height:57px;padding:8px 10px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--text);text-align:left;cursor:pointer}
.task-config-sidebar nav button:hover{background:#F7F8FA}
.task-config-sidebar nav button.active{border-color:#B7CDFF;background:#F0F5FF}
.task-config-sidebar nav button>span{grid-row:1/3;display:grid;place-items:center;width:32px;height:32px;border-radius:7px;background:#F2F3F5;color:var(--text-2);font-size:12px;font-weight:700}
.task-config-sidebar nav button.active>span{background:#1677FF;color:#fff}
.task-config-sidebar nav button b{align-self:end;font-size:13px;line-height:18px}
.task-config-sidebar nav button small{align-self:start;color:var(--text-3);font-size:10.5px;line-height:16px}
.task-config-panel{display:flex;min-width:0;min-height:0;flex-direction:column;overflow:hidden}
.task-config-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:18px 20px;border-bottom:1px solid var(--border)}
.task-config-panel-head h3{margin:3px 0 2px;color:var(--text);font-size:17px;line-height:25px}
.task-config-panel-head p{margin:0;color:var(--text-3);font-size:11.5px;line-height:18px}
.task-config-scroll{flex:1 1 auto;min-height:0;padding:18px 20px;overflow-y:auto;background:#FAFBFC}
.task-config-section{padding:18px;border:1px solid var(--border);border-radius:8px;background:#fff}
.task-config-section+.task-config-section{margin-top:16px}
.task-config-section-head{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.task-config-section-head>span{display:grid;place-items:center;width:30px;height:30px;border-radius:7px;background:#EAF1FF;color:#1677FF;font-family:'Rubik';font-size:11px;font-weight:700}
.task-config-section-head h4{margin:0;color:var(--text);font-size:14px;line-height:20px}
.task-config-section-head p{margin:1px 0 0;color:var(--text-3);font-size:11px;line-height:17px}
.task-config-form-grid,.task-config-node-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
.task-config-form-grid .field,.task-config-node-fields .field{margin:0}
.task-config-form-grid .field.full,.task-config-node-fields .field.full{grid-column:1/-1}
.task-config-form-grid label,.task-config-node-fields label{margin-bottom:6px;color:var(--text-2);font-size:12px;font-weight:500}
.task-config-form-grid label .task-config-required,
.task-config-node-fields label .task-config-required{display:inline;margin-right:4px;color:var(--red);font-size:12px;font-weight:600}
.task-config-form-grid input,.task-config-form-grid textarea,.task-config-node-fields input,.task-config-node-fields select,.task-config-node-fields textarea{width:100%;box-sizing:border-box}
.task-config-readonly{display:flex;align-items:center;justify-content:space-between;height:34px;padding:0 11px;border:1px solid var(--border);border-radius:6px;background:#F7F8FA}
.task-config-readonly b{font-size:13px}.task-config-readonly span{color:var(--text-3);font-size:11px}
.task-config-node-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.task-config-node-card{min-width:0;padding:14px;border:1px solid var(--border);border-radius:7px;background:#fff}
.task-config-node-card header{display:flex;align-items:center;gap:9px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.task-config-node-card header i{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#1677FF;color:#fff;font-family:'Rubik';font-size:11px;font-style:normal;font-weight:700}
.task-config-node-card header div{display:flex;min-width:0;flex-direction:column}
.task-config-node-card header b{overflow:hidden;font-size:12.5px;line-height:18px;text-overflow:ellipsis;white-space:nowrap}
.task-config-node-card header small{color:var(--text-3);font-size:10.5px;line-height:16px}
.task-config-actions{display:flex;align-items:center;gap:8px;min-height:66px;padding:0 20px;border-top:1px solid var(--border);background:#fff}
.task-config-actions>.btn{height:34px;font-size:13px;font-weight:600}
.task-config-action-state{display:flex;flex:1;align-items:center;gap:7px;color:var(--text-3);font-size:11.5px}
.task-config-action-state i{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#E8F8EA;color:#2EA121;font-style:normal;font-weight:700}

@media(max-width:1100px){.task-management-shell,.task-config-shell{grid-template-columns:210px minmax(0,1fr)}.task-info-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.task-info-metrics>div:nth-child(2){border-right:0}.task-info-metrics>div:nth-child(-n+2){border-bottom:1px solid var(--border)}.task-config-node-list{grid-template-columns:1fr}}
@media(max-width:760px){html body[data-current-page="task"],html body[data-current-page="taskconfig"]{overflow:auto!important}html body[data-current-page="task"] .main,html body[data-current-page="taskconfig"] .main,html body[data-current-page="task"] .main>.content,html body[data-current-page="taskconfig"] .main>.content{height:auto!important;min-height:100vh!important;overflow:visible!important}.task-management-shell,.task-config-shell{display:flex;flex-direction:column;overflow:visible}.task-master-card,.task-config-sidebar{max-height:none}.task-master-list,.task-config-sidebar nav{flex-direction:row;overflow-x:auto}.task-nav-item,.task-config-sidebar nav button{min-width:210px}.task-management-main,.task-config-panel{overflow:visible}.task-info-heading{flex-direction:column}.task-info-metrics,.task-config-form-grid,.task-config-node-fields{grid-template-columns:1fr}.task-info-metrics>div{border-right:0;border-bottom:1px solid var(--border)}.task-info-metrics>div:last-child{border-bottom:0}.task-node-strip{grid-template-columns:1fr 1fr;gap:12px}.task-config-scroll{overflow:visible}.task-config-actions{position:sticky;bottom:0;flex-wrap:wrap;padding:10px 14px}.task-config-action-state{flex-basis:100%}}
html body[data-current-page="fill2"] #page-fill2.show>#fill-step-one{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}

/* 本月项目树不继承项目卡片的四列网格。 */
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips{
  display:block!important;
  width:100%!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-group,
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-group-body,
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-branch,
html body[data-current-page="fill2"] #page-fill2.show .fill-tree-leaves{
  width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
}

/* 填报明细：全局吸底复核提交 */
.fill-review-footer{display:none}
html body[data-current-page="fillreview"] .fill-review-footer.show{
  position:fixed!important;
  left:var(--adaptive-nav)!important;
  right:0!important;
  bottom:0!important;
  z-index:720!important;
  display:flex!important;
  align-items:center!important;
  height:92px!important;
  padding:0 32px!important;
  border-top:1px solid #E5E6EB!important;
  background:#fff!important;
  box-shadow:0 -10px 28px rgba(31,35,41,.08)!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fillreview"] .fill-review-footer-inner{display:flex!important;justify-content:flex-end!important;width:100%!important}
html body[data-current-page="fillreview"] .fill-review-footer .btn{min-width:156px!important;height:44px!important;padding:0 22px!important;border-radius:8px!important;font-size:16px!important}
html body[data-current-page="fillreview"] #page-fillreview.show{padding-bottom:108px!important}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-type-pills{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  min-height:32px!important;
  margin:8px 0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fillreview"] .fill-review-type-pills>span{margin-right:2px;color:var(--text-3)!important;font-size:12px!important}
html body[data-current-page="fillreview"] .fill-review-type-pills .status-chip{
  height:32px!important;
  padding:0 14px!important;
  border:0!important;
  border-radius:6px!important;
  background:#F2F3F5!important;
  color:#4E5969!important;
  font-size:14px!important;
  font-weight:400!important;
  box-shadow:none!important;
}
html body[data-current-page="fillreview"] .fill-review-type-pills .status-chip:hover{background:#E5E6EB!important;color:#1D2129!important}
html body[data-current-page="fillreview"] .fill-review-type-pills .status-chip.active{background:#EEF4FF!important;color:#1677FF!important}
@media(max-width:760px){
  html body[data-current-page="fillreview"] .fill-review-footer.show{left:0!important;height:72px!important;padding:0 16px!important}
  html body[data-current-page="fillreview"] .fill-review-footer .btn{min-width:132px!important;height:40px!important;font-size:14px!important}
}

/* Final override: change-notice project names are regular text. */
html body[data-current-page="fill2"] #page-fill2.show .fill-change-list .fill-change-row > b{
  color:#1F2329!important;
  font-weight:400!important;
}

/* Final override: change-notice project names are regular text. */
html body[data-current-page="fill2"] #page-fill2.show .fill-change-list .fill-change-row > b{
  color:#1F2329!important;
  font-weight:400!important;
}

/* Department configuration names are ordinary table copy, not headings. */
html body[data-current-page="deptpermissions"] #dpm-dept-overview td b,
html body[data-current-page="deptprojects"] #dpm-dept-overview td b,
html body[data-current-page="deptprojects"] #dpm-dept-overview td,
html body[data-current-page="deptpermissions"] #dpm-overview td b,
html body[data-current-page="deptpermissions"] #dpm-overview td{
  color:#1F2329!important;
  font-weight:400!important;
}

/* Read-only project/category text should sit directly on the table surface,
   without a gray capsule background. */
html body[data-current-page="deptprojects"] #dpm-project-table .dpm-readonly-value,
html body[data-current-page="deptpermissions"] #dpm-overview .dpm-readonly-value{
  background:transparent!important;
  border-color:transparent!important;
}

/* The change-notice project title is regular body copy, not a heading. */
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row b{
  color:#1F2329!important;
  font-weight:400!important;
}

/* Global table typography baseline: ordinary headers and cell copy are black,
   regular-weight, and left-aligned. Semantic controls (links, buttons, pills,
   tags, and data-specific child styles) keep their own visual treatment. */
html body :is(.tbl-wrap,.task-designer-table-wrap,.budget-grid) table :is(th,td){
  color:#1F2329!important;
  font-weight:400!important;
  text-align:left!important;
}
html body :is(.tbl-wrap,.task-designer-table-wrap,.budget-grid) table :is(td)>:is(b,strong){
  color:inherit!important;
  font-weight:400!important;
}

/* Beat the legacy table emphasis rule (which targets every cell <b>) and
   keep table copy regular on pages that still render bold values in markup. */
html body .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap,.budget-grid) table td :is(b,strong){
  color:inherit!important;
  font-weight:400!important;
}
html body[data-current-page] .main .content .page.show :is(.tbl-wrap,.task-designer-table-wrap,.budget-grid) table :is(th,td){
  color:#1F2329!important;
  font-weight:400!important;
  text-align:left!important;
}
html body #roles-body td:first-child :is(b,strong),
html body #roles-body td:first-child{
  color:#1F2329!important;
  font-weight:400!important;
}
html body #roles-body td :is(button,a,.pill,.tag,.badge) :is(b,strong){
  font-weight:400!important;
}

/* Project configuration table: read-only values and editable owner/finance
   fields use the same black regular-weight body text as the other tables. */
html body[data-current-page="deptprojects"] #dpm-project-table tbody,
html body[data-current-page="deptprojects"] #dpm-project-table tbody tr,
html body[data-current-page="deptprojects"] #dpm-project-table tbody td{
  font-weight:400!important;
}
html body[data-current-page="deptprojects"] #dpm-project-table .dpm-readonly-value,
html body[data-current-page="deptprojects"] #dpm-project-table .dpm-inline-select,
html body[data-current-page="deptprojects"] #dpm-project-table .dpm-inline-input,
html body[data-current-page="deptprojects"] #dpm-project-table .dpm-inline-code{
  color:#1F2329!important;
  font-weight:400!important;
}

/* Final project-list behavior: document scroll, 20 rows per page, sticky table header. */
html body[data-current-page="deptprojects"]{
  overflow-x:hidden!important;
  overflow-y:auto!important;
}
html body[data-current-page="deptprojects"] .main,
html body[data-current-page="deptprojects"] .main>.content,
html body[data-current-page="deptprojects"] #page-deptprojects.show,
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>.roster-sync,
html body[data-current-page="deptprojects"] #page-deptprojects.show button[onclick*="openAddProjModal"]{
  display:none!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project>.tbl-scroll{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
  scrollbar-gutter:auto!important;
}
html body[data-current-page="deptprojects"] #dpm-project-table thead th{
  position:sticky!important;
  top:56px!important;
  z-index:40!important;
  background:var(--side-2)!important;
  box-shadow:inset 0 -1px 0 var(--border),0 4px 8px rgba(31,35,41,.08)!important;
}
html body[data-current-page="deptprojects"] .dpm-pagination{
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  min-height:56px!important;
  padding:10px 16px!important;
  border-top:1px solid var(--border)!important;
  background:#fff!important;
  color:var(--text-3)!important;
  font-size:12px!important;
  box-sizing:border-box!important;
}

/* Final project table alignment: use one fixed column grid for header and
   body, and place the sticky header below the page tools instead of over the
   first data row. */
html body[data-current-page="deptprojects"] #dpm-project-table{
  width:100%!important;
  min-width:1120px!important;
  table-layout:fixed!important;
}
html body[data-current-page="deptprojects"] #dpm-project-table th,
html body[data-current-page="deptprojects"] #dpm-project-table td{
  box-sizing:border-box!important;
}
html body[data-current-page="deptprojects"] #dpm-project-table th:nth-child(1),
html body[data-current-page="deptprojects"] #dpm-project-table td:nth-child(1){width:18%!important}
html body[data-current-page="deptprojects"] #dpm-project-table th:nth-child(2),
html body[data-current-page="deptprojects"] #dpm-project-table td:nth-child(2){width:11%!important}
html body[data-current-page="deptprojects"] #dpm-project-table th:nth-child(3),
html body[data-current-page="deptprojects"] #dpm-project-table td:nth-child(3){width:12%!important}
html body[data-current-page="deptprojects"] #dpm-project-table th:nth-child(4),
html body[data-current-page="deptprojects"] #dpm-project-table td:nth-child(4){width:18%!important}
html body[data-current-page="deptprojects"] #dpm-project-table th:nth-child(5),
html body[data-current-page="deptprojects"] #dpm-project-table td:nth-child(5){width:18%!important}
html body[data-current-page="deptprojects"] #dpm-project-table th:nth-child(6),
html body[data-current-page="deptprojects"] #dpm-project-table td:nth-child(6){width:8%!important}
html body[data-current-page="deptprojects"] #dpm-project-table th:nth-child(7),
html body[data-current-page="deptprojects"] #dpm-project-table td:nth-child(7){width:8%!important}
html body[data-current-page="deptprojects"] #dpm-project-table th:nth-child(8),
html body[data-current-page="deptprojects"] #dpm-project-table td:nth-child(8){width:7%!important}
html body[data-current-page="deptprojects"] #dpm-project-table thead th{
  top:172px!important;
  z-index:40!important;
}
html body[data-current-page="deptprojects"] #dpm-filterbar .dpm-filter-period{
  position:relative!important;
  display:inline-block!important;
  flex:0 0 auto!important;
  order:0!important;
  margin:0!important;
}
html body[data-current-page="deptprojects"] #dpm-filterbar>span{
  display:none!important;
}
html body[data-current-page="deptprojects"] #dpm-filterbar .dpm-filter-period .mpicker-btn{
  width:166px!important;
  min-width:166px!important;
  height:34px!important;
  min-height:34px!important;
  padding:6px 11px!important;
  border:1px solid var(--border)!important;
  border-radius:9px!important;
  background:var(--side-2)!important;
  color:var(--text)!important;
  font-size:12.5px!important;
  font-weight:400!important;
  box-shadow:none!important;
}
html body[data-current-page="deptprojects"] #dpm-filterbar .dpm-filter-period .mpicker-btn:hover,
html body[data-current-page="deptprojects"] #dpm-filterbar .dpm-filter-period .mpicker-btn.open{
  border-color:var(--accent)!important;
  color:var(--accent)!important;
  background:#fff!important;
  box-shadow:0 0 0 3px var(--accent-soft)!important;
}

/* LAST: task progress header remains the first visible table row while the
   document scrolls, directly below the fixed page title. */
html body[data-current-page="task"] #page-task.show .task-designer-table-wrap{
  overflow:visible!important;
  max-height:none!important;
}
html body[data-current-page="task"] #page-task.show .task-designer-table-card{
  position:relative!important;
  overflow:visible!important;
  max-height:none!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table thead th{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
  background:#F5F6F7!important;
  box-shadow:inset 0 -1px 0 #F0F1F3!important;
}
html body[data-current-page="task"] .task-page-sticky-head{
  position:fixed!important;
  display:none;
  height:40px;
  overflow:hidden;
  z-index:46;
  background:#F5F6F7;
  box-shadow:0 2px 8px rgba(31,35,41,.08),inset 0 -1px 0 #F0F1F3;
  pointer-events:none;
}
html body[data-current-page="task"] .task-page-sticky-head.show{display:block}
html body[data-current-page="task"] .task-page-sticky-viewport{width:100%;height:40px;overflow:hidden}
html body[data-current-page="task"] .task-page-sticky-head table{height:40px;table-layout:fixed;border-collapse:separate;border-spacing:0;background:#F5F6F7}
html body[data-current-page="task"] .task-page-sticky-head thead th{height:40px!important;padding:0 16px!important;border:0!important;border-bottom:1px solid #F0F1F3!important;background:#F5F6F7!important;color:rgba(17,17,17,.6)!important;font-size:14px!important;line-height:22px!important;font-weight:500!important;box-sizing:border-box!important;white-space:nowrap}

/* Step 3 is a separate page, not a continuation beneath the step-2 table.
   The list shell is a sibling of #fill2-regular in the live DOM, so it must
   be removed explicitly together with all step-2 chrome. */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active>.page-head,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active>#fill-step-one,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active>#fill2-regular,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active>#fill2-list-shell,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active>#fill2-outsource,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active>#fill2-dispatch,
html body[data-current-page="fill2"]:has(#page-fill2.show.fill-step-three-active)>#fill2-status-tabs.fill2-tabs-page-sticky,
html body[data-current-page="fill2"]:has(#page-fill2.show.fill-step-three-active)>#fill2-page-sticky-head{
  display:none!important;
  height:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active>#fill-step-three{
  scroll-margin-top:0!important;
}

/* 第三步只保留汇总分析区域：移除第二步残留分页、异常入口与预览提示卡。 */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill2-list-shell,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill2-out-list-shell,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill2-dispatch,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill-summary-anomaly-return,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill-step-three>.fill-step-check-dock{
  display:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill-step-three>.fill-analysis-tabs{
  margin-top:0!important;
}

/* Roster page: let the document scroll while keeping the title and table header visible. */
html body[data-current-page="roster"] #page-roster.show{
  display:block!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="roster"] #page-roster.show>.page-head{
  position:fixed!important;
  top:56px!important;
  z-index:60!important;
  width:100%!important;
  max-width:none!important;
  height:42px!important;
  margin:0!important;
  padding:0 16px 16px!important;
  background:var(--bg)!important;
}
html body[data-current-page="roster"] #page-roster.show{
  padding-top:39px!important;
}
html body[data-current-page="roster"] #page-roster.show>.roster-sync,
html body[data-current-page="roster"] #page-roster.show>#roster-filterbar,
html body[data-current-page="roster"] #page-roster.show>.fill-layout,
html body[data-current-page="roster"] #page-roster.show .fill-main,
html body[data-current-page="roster"] #page-roster.show #roster-table-wrap{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="roster"] #page-roster.show>#roster-filterbar{
  position:static!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-table-wrap>.tbl-scroll{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  scrollbar-gutter:stable!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-table{
  width:max-content!important;
  min-width:100%!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-table thead th{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
  background:#f7f8fa!important;
  box-shadow:inset 0 -1px 0 #e5e6eb!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-table th:last-child,
html body[data-current-page="roster"] #page-roster.show #roster-table td:last-child{
  position:sticky!important;
  right:0!important;
  width:84px!important;
  min-width:84px!important;
  max-width:84px!important;
  padding-left:12px!important;
  padding-right:12px!important;
  background:#fff!important;
  box-shadow:-8px 0 12px -10px rgba(31,35,41,.45)!important;
  z-index:17!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-table th:last-child{
  position:sticky!important;
  right:0!important;
  background:#f7f8fa!important;
  z-index:19!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-table td:last-child .ract,
html body[data-current-page="roster"] #page-roster.show #roster-table td:last-child .btn{
  height:auto!important;
  min-height:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--accent)!important;
  font-size:13px!important;
  font-weight:600!important;
  box-shadow:none!important;
}
html body[data-current-page="roster"] #page-roster.show #roster-table td:last-child .ract:hover,
html body[data-current-page="roster"] #page-roster.show #roster-table td:last-child .btn:hover{
  color:var(--accent-hover)!important;
  text-decoration:underline!important;
}
#roster-sticky-head{
  position:fixed;
  z-index:85;
  overflow:hidden;
  pointer-events:none;
  background:#f7f8fa;
  opacity:1;
  box-shadow:0 1px 0 #e5e6eb;
}
#roster-sticky-head table{border-collapse:collapse!important;margin:0!important;table-layout:auto!important;transform-origin:top left}
#roster-sticky-head th{
  height:var(--table-head-height)!important;
  padding:0 16px!important;
  background:#f7f8fa!important;
  color:#3d4148!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:600!important;
  white-space:nowrap!important;
  border-bottom:1px solid #e5e6eb!important;
}
#roster-sticky-head th:last-child{
  position:sticky!important;
  right:0!important;
  background:#f7f8fa!important;
  z-index:2!important;
}

/* 项目配置清单：页面整体滚动、20 条分页，表头随页面滚动吸顶。 */
html body[data-current-page="deptprojects"]{
  overflow-x:hidden!important;
  overflow-y:auto!important;
}
html body[data-current-page="deptprojects"] .main,
html body[data-current-page="deptprojects"] .main>.content{
  height:auto!important;
  min-height:100vh!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show{
  display:block!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>.roster-sync,
html body[data-current-page="deptprojects"] #page-deptprojects.show button[onclick*="openAddProjModal"]{
  display:none!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project,
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project>.tbl-scroll{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="deptprojects"] #dpm-project-table thead th{
  position:sticky!important;
  top:56px!important;
  z-index:40!important;
  background:var(--side-2)!important;
  box-shadow:inset 0 -1px 0 var(--border),0 4px 8px rgba(31,35,41,.08)!important;
}
html body[data-current-page="deptprojects"] .dpm-pagination{
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  min-height:56px!important;
  padding:10px 16px!important;
  border-top:1px solid var(--border)!important;
  background:#fff!important;
  color:var(--text-3)!important;
  font-size:12px!important;
  box-sizing:border-box!important;
}

/* Final task-page header pinning: keep the page-local month picker inside
   the viewport instead of inheriting the normal in-flow page-head rules. */
html body[data-page-period-local="1"][data-current-page="task"] #page-task.show>.page-head.page-head-with-period{
  position:fixed!important;
  left:var(--adaptive-nav)!important;
  right:0!important;
  top:56px!important;
  min-height:84px!important;
  padding:8px 16px 12px!important;
  box-sizing:border-box!important;
  z-index:40!important;
}
html body[data-current-page="task"] #page-task.show>.page-head.page-head-with-period>#mpicker{
  display:inline-block!important;
  position:absolute!important;
  top:8px!important;
  right:16px!important;
  margin:0!important;
  z-index:41!important;
}
html body[data-current-page="task"] #page-task.show>.page-head.page-head-with-period>#mpicker>.mpicker-btn{
  min-width:198px!important;
  height:40px!important;
  justify-content:center!important;
}
html body[data-current-page="task"] #page-task.show>.page-head.page-head-with-period>#mpicker>.mpicker-btn{
  border-color:transparent!important;
  background:transparent!important;
  box-shadow:none!important;
}
html body[data-current-page="task"] #page-task.show>.page-head.page-head-with-period>#mpicker>.mpicker-btn:hover,
html body[data-current-page="task"] #page-task.show>.page-head.page-head-with-period>#mpicker>.mpicker-btn.open{
  border-color:transparent!important;
  background:transparent!important;
  box-shadow:none!important;
}

/* Keep the progress table's first row pinned whenever either scroll layer
   moves: the page can scroll to the sticky card, and the table can scroll
   through its 50 data rows independently. */
html body[data-current-page="task"] .task-designer-table-wrap{
  position:relative!important;
  overflow:visible!important;
}
html body[data-current-page="task"] .task-designer-table-wrap thead th{
  position:sticky!important;
  top:156px!important;
  z-index:18!important;
}
html body[data-current-page="task"] .task-designer-table-wrap thead th{
  background:#F5F6F7!important;
  box-shadow:inset 0 -1px 0 var(--border)!important;
}

/* Step 3 follows the summary-page composition in the acceptance GIF: a
   standalone tab card, helper copy, then the table card without tool rows. */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill-step-three>.fill-analysis-tabs{
  position:static!important;
  top:auto!important;
  width:100%!important;
  min-height:64px!important;
  height:64px!important;
  margin:0 0 16px!important;
  padding:0 16px!important;
  box-sizing:border-box!important;
  border:0!important;
  border-radius:8px!important;
  background:#fff!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill-analysis-summary-panel{
  background:transparent!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill-analysis-summary-panel>div:first-child{
  margin:0 0 12px!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill-step-summary-dept{
  width:100%!important;
  margin:0!important;
  border:1px solid var(--border)!important;
  border-radius:8px!important;
  background:#fff!important;
  box-shadow:none!important;
  overflow:hidden!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill-step-summary-dept>:is(.dash-table-tools,.global-list-tools),
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill-step-summary-dept .global-field-btn{
  display:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill-step-summary-dept>.tbl-scroll{
  margin:0!important;
  max-height:none!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
}

/* FINAL: page-local month selector overrides all legacy page layout rules. */
html body[data-page-period-local="1"] .topbar>#mpicker{display:none!important}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period{
  position:relative!important;
  min-height:52px!important;
  padding-right:220px!important;
  box-sizing:border-box!important;
}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker{
  display:inline-block!important;
  position:absolute!important;
  top:0!important;
  right:0!important;
  margin:0!important;
  z-index:40!important;
}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker>.mpicker-btn{
  min-width:198px!important;
  height:40px!important;
  justify-content:center!important;
}
html body[data-page-period-local="1"][data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card .dashboard-period-filter{
  display:none!important;
}
@media(max-width:760px){
  html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period{
    min-height:0!important;
    padding-right:0!important;
  }
  html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker{
    position:relative!important;
    top:auto!important;
    right:auto!important;
    margin-top:10px!important;
  }
}

/* 角色管理页：月份选择器固定在标题区域右侧。 */
html body[data-current-page="roles"] #page-roles.show>.page-head.page-head-with-period{
  position:relative!important;
  display:block!important;
  min-height:52px!important;
  padding:0 220px 0 0!important;
  box-sizing:border-box!important;
}
html body[data-current-page="roles"] #page-roles.show>.page-head.page-head-with-period>#mpicker{
  display:inline-block!important;
  position:absolute!important;
  top:0!important;
  right:0!important;
  margin:0!important;
}
@media(max-width:760px){
  html body[data-current-page="roles"] #page-roles.show>.page-head.page-head-with-period{
    min-height:0!important;
    padding:0!important;
  }
  html body[data-current-page="roles"] #page-roles.show>.page-head.page-head-with-period>#mpicker{
    position:relative!important;
    top:auto!important;
    right:auto!important;
    margin-top:10px!important;
  }
}

/* Final page-level pinning override: this class is toggled from the original
   flow anchor because legacy overflow containers prevent native sticky. */
.fill2-status-tabs-anchor{
  display:block;
  width:100%;
  height:0;
  flex:0 0 auto;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-two-active #fill2-status-tabs.fill2-tabs-page-sticky{
  position:fixed!important;
  top:56px!important;
  z-index:50!important;
  margin:0!important;
  background:#fff!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] > #fill2-status-tabs.fill2-tabs-page-sticky{
  position:fixed!important;
  z-index:50!important;
  display:flex!important;
  align-items:center!important;
  min-height:56px!important;
  margin:0!important;
  padding:16px 16px 0!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  background:#fff!important;
  box-shadow:0 1px 0 var(--border)!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] > #fill2-status-tabs.fill2-tabs-page-sticky .status-chips{
  display:flex!important;
  align-items:stretch!important;
  gap:32px!important;
  width:100%!important;
  height:40px!important;
  min-height:40px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] > #fill2-status-tabs.fill2-tabs-page-sticky .status-chip{
  position:relative!important;
  width:auto!important;
  min-width:0!important;
  height:40px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:500!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] > #fill2-status-tabs.fill2-tabs-page-sticky .status-chip.active{
  color:var(--text)!important;
  font-weight:600!important;
}
html body[data-current-page="fill2"] > #fill2-status-tabs.fill2-tabs-page-sticky .status-chip.active::after{
  content:""!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:-1px!important;
  height:3px!important;
  border-radius:3px 3px 0 0!important;
  background:var(--accent)!important;
}

/* Final page-local period-picker winners. */
html body[data-page-period-local="1"] .topbar>#mpicker{display:none!important}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period{
  position:relative!important;
  min-height:52px!important;
  padding-right:220px!important;
  box-sizing:border-box!important;
}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker{
  display:inline-block!important;
  position:absolute!important;
  top:0!important;
  right:0!important;
  margin:0!important;
  z-index:40!important;
}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker>.mpicker-btn{
  min-width:198px!important;
  height:40px!important;
  justify-content:center!important;
}
html body[data-page-period-local="1"][data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card .dashboard-period-filter{
  display:none!important;
}
@media(max-width:760px){
  html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period{
    min-height:0!important;
    padding-right:0!important;
  }
  html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker{
    position:relative!important;
    top:auto!important;
    right:auto!important;
    margin-top:10px!important;
  }
}

/* Final table divider pass: keep neutral row/header separators lighter and
   consistent across all table pages. Semantic colored borders (for example
   status or total rows) remain owned by their more specific rules. */
html body .main :is(.page.show,.content .page.show) :is(.tbl-wrap,.task-designer-table-wrap) table :is(th,td){
  border-bottom-color:#F0F1F3!important;
}
html body .main :is(.page.show,.content .page.show) :is(.tbl-wrap,.task-designer-table-wrap) table thead th{
  box-shadow:inset 0 -1px 0 #F0F1F3!important;
}

/* Final separator consistency pass: lighten list and section dividers that
   are not table-cell borders but follow the same neutral separator role. */
html body .main :is(.page.show,.content .page.show) .fill-change-list .fill-change-head,
html body .main :is(.page.show,.content .page.show) .fill-change-list .fill-change-row,
html body .main :is(.page.show,.content .page.show) .task-notice-config-head,
html body .main :is(.page.show,.content .page.show) .task-designer-preview div,
html body .main :is(.page.show,.content .page.show) .dash-detail-query,
html body .main :is(.page.show,.content .page.show) .dash-detail-summary{
  border-bottom-color:#F0F1F3!important;
}
html body .main :is(.page.show,.content .page.show) .fill-change-list .fill-change-row:not(:last-child)::after,
html body .main :is(.page.show,.content .page.show) .task-designer-preview em{
  border-top-color:#F0F1F3!important;
}

/* Task management: equal-height top cards and a full-width progress table. */
@media(min-width:1181px){
  html body[data-current-page="task"] .task-designer-shell{
    grid-template-columns:minmax(0,1fr) 340px!important;
    grid-template-rows:auto minmax(260px,1fr)!important;
    align-items:stretch!important;
  }
  html body[data-current-page="task"] .task-designer-main{
    display:contents!important;
  }
  html body[data-current-page="task"] .task-designer-overview{
    grid-column:1!important;
    grid-row:1!important;
  }
  html body[data-current-page="task"] .task-designer-side{
    grid-column:2!important;
    grid-row:1!important;
    height:100%!important;
    min-height:0!important;
    padding:16px!important;
    overflow:hidden!important;
  }
  html body[data-current-page="task"] .task-designer-table-card{
    grid-column:1 / -1!important;
    grid-row:2!important;
    width:100%!important;
  }
  html body[data-current-page="task"] .task-designer-side-head{
    margin-bottom:10px!important;
  }
  html body[data-current-page="task"] .task-designer-node{
    grid-template-columns:34px minmax(0,1fr)!important;
    gap:10px!important;
    min-height:70px!important;
  }
  html body[data-current-page="task"] .task-designer-node:not(:last-child)::after{
    left:16px!important;
    top:34px!important;
  }
  html body[data-current-page="task"] .task-designer-node i{
    width:34px!important;
    height:34px!important;
  }
  html body[data-current-page="task"] .task-designer-node b{
    line-height:20px!important;
  }
  html body[data-current-page="task"] .task-designer-node p,
  html body[data-current-page="task"] .task-designer-node span{
    display:block!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }
  html body[data-current-page="task"] .task-designer-node p{
    margin:1px 0!important;
    line-height:18px!important;
  }
  html body[data-current-page="task"] .task-designer-node span{
    font-size:11px!important;
    line-height:18px!important;
  }
  html body[data-current-page="task"] .task-designer-audit{
    margin-top:0!important;
    padding:8px 10px!important;
    line-height:18px!important;
  }
}

@media(max-width:1180px){
  html body[data-current-page="task"] .task-designer-main{
    display:contents!important;
  }
  html body[data-current-page="task"] .task-designer-overview{
    grid-column:1!important;
    grid-row:1!important;
  }
  html body[data-current-page="task"] .task-designer-side{
    grid-column:1!important;
    grid-row:2!important;
    height:auto!important;
  }
  html body[data-current-page="task"] .task-designer-table-card{
    grid-column:1!important;
    grid-row:3!important;
  }
}

/* Dashboard final table edge: no 16px inset and no extra toolbar divider. */
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>:is(#sum-view-proj,#sum-view-dept)>.tbl-scroll{
  width:100%!important;
  max-width:100%!important;
  margin:0!important;
  padding:0!important;
  border-top:0!important;
}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>:is(#sum-view-proj,#sum-view-dept)>.dash-table-tools{
  border-bottom:0!important;
}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>:is(#sum-view-proj,#sum-view-dept)>.dash-table-tools .global-field-btn{
  width:34px!important;
  min-width:34px!important;
  height:34px!important;
  min-height:34px!important;
  padding:0!important;
  border:0!important;
  border-radius:8px!important;
  background:#F2F3F5!important;
  color:var(--text-2)!important;
  overflow:hidden!important;
}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>:is(#sum-view-proj,#sum-view-dept)>.dash-table-tools .global-field-btn svg{
  width:16px!important;
  height:16px!important;
  margin:0!important;
  stroke:currentColor!important;
  fill:none!important;
}

/* Log page: tabs and the active log panel share one continuous card. */
html body[data-current-page="log"] #page-log.show>.log-content-shell{
  width:calc(100% - 32px)!important;
  max-width:none!important;
  margin:20px 16px 0!important;
  padding:0!important;
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-radius:8px!important;
  box-shadow:var(--shadow)!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
}
html body[data-current-page="log"] #page-log.show>.log-content-shell>#log-tabs{
  width:100%!important;
  min-height:50px!important;
  margin:0!important;
  padding:16px 16px 0!important;
  display:flex!important;
  align-items:flex-end!important;
  gap:40px!important;
  background:#fff!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:0!important;
  box-shadow:none!important;
  box-sizing:border-box!important;
}
html body[data-current-page="log"] #page-log.show>.log-content-shell>#log-tabs .ts{
  position:relative!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  height:34px!important;
  min-height:34px!important;
  padding:0!important;
  margin-bottom:-1px!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:600!important;
}
html body[data-current-page="log"] #page-log.show>.log-content-shell>#log-tabs .ts.active{
  color:var(--text)!important;
}
html body[data-current-page="log"] #page-log.show>.log-content-shell>#log-tabs .ts.active::after{
  content:""!important;
  position:absolute!important;
  left:0!important;
  bottom:0!important;
  width:28px!important;
  height:3px!important;
  border-radius:999px!important;
  background:var(--accent)!important;
}
html body[data-current-page="log"] #page-log.show>.log-content-shell>#log-tab-changes,
html body[data-current-page="log"] #page-log.show>.log-content-shell>#log-tab-auth{
  width:100%!important;
  margin:0!important;
  background:#fff!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  overflow:hidden!important;
}
html body[data-current-page="log"] #page-log.show>.log-content-shell .log-filter-toolbar{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  margin:0!important;
  min-height:64px!important;
  padding:14px 16px!important;
  background:#fff!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:0!important;
  box-shadow:none!important;
  box-sizing:border-box!important;
}
html body[data-current-page="log"] #page-log.show>.log-content-shell .log-actions-toolbar{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  min-height:64px!important;
  margin:0!important;
  padding:14px 16px!important;
  background:#fff!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:0!important;
  box-shadow:none!important;
  box-sizing:border-box!important;
}
html body[data-current-page="log"] #page-log.show>.log-content-shell .log-export-btn{
  margin-left:0!important;
}

/* 项目配置清单：同步摘要文字与文件夹图标横向排列。 */
html body[data-current-page="deptprojects"] #page-deptprojects.show>.roster-sync{
  display:flex!important;
  align-items:center!important;
  gap:14px!important;
}

/* Final summary-page boundary: keep exactly one 16px gutter from .content. */
html body[data-current-page="summary"] .main>.content>#page-summary.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
}

/* Summary page boundary: keep exactly one 16px gutter from .content. */
html body[data-current-page="summary"] .main>.content>#page-summary.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
}

/* Final fill-review boundary: keep the page gutter in .content only. */
html body[data-current-page="fill2"] .main>.content>#page-fill2.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-step-one{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}

/* Remove the extra 16px margin around the task work area itself. The page
   container already owns the global 16px gutter. */
html body[data-current-page="task"] #page-task.show>#task-worktime{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
}

/* Final edge alignment: the page owns the 16px gutter. Inner workspaces and
   cards must not add a second outer margin/padding to the visual edge. */
html body[data-current-page="task"] #page-task.show>#task-worktime .task-designer-shell{
  margin-left:0!important;
  margin-right:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
}
html body[data-current-page="task"] #page-task.show>#task-worktime .task-designer-main{
  gap:16px!important;
}
html body[data-current-page="fill2"] #page-fill2.show{
  width:calc(100% - 32px)!important;
  max-width:none!important;
  margin-left:16px!important;
  margin-right:16px!important;
}
html body[data-current-page="fill2"] #page-fill2.show > .page-head,
html body[data-current-page="fill2"] #page-fill2.show > #fill-workflow-steps,
html body[data-current-page="fill2"] #page-fill2.show > #fill-step-one,
html body[data-current-page="fill2"] #page-fill2.show > #fill2-regular,
html body[data-current-page="fill2"] #page-fill2.show > #fill2-outsource,
html body[data-current-page="fill2"] #page-fill2.show > #fill2-dispatch,
html body[data-current-page="fill2"] #page-fill2.show > #fill-step-three{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{
  margin-left:0!important;
  margin-right:0!important;
}

/* Global spacing contract: page chrome and content edges stay 16px apart.
   Keep table cell padding and special workflow grids unchanged. */
:root{
  --page-gutter:16px;
  --content-gap:16px;
}
.topbar{
  padding-inline:16px!important;
}
.main>.content>.page.show{
  width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
}
.page-head{
  margin-bottom:16px!important;
}

/* Normalize the spacing between top-level cards and list surfaces. */
.page.show > :is(.card,.tbl-wrap,.toolbar,.f2-filterbar,.role-workbench,.fill-steps,.fill-step-card,.flow-card,.sbar) + :is(.card,.tbl-wrap,.toolbar,.f2-filterbar,.role-workbench,.fill-steps,.fill-step-card,.flow-card,.sbar){
  margin-top:16px!important;
}
.page.show > :is(.card,.tbl-wrap,.toolbar,.f2-filterbar,.role-workbench,.fill-steps,.fill-step-card,.flow-card,.sbar){
  margin-bottom:0!important;
}

/* The dashboard uses explicit grid rows; only its filter/table surfaces need
   the same 16px edge alignment and card rhythm. */
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card,
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-proj,
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-dept,
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-detail{
  margin-left:0!important;
  margin-right:0!important;
}

@media(max-width:640px){
  .main>.content>.page.show{
    width:100%!important;
    margin-left:0!important;
    margin-right:0!important;
  }
}

/* FINAL DASHBOARD FLOW OVERRIDE */
/* Latest dashboard refinement: native dropdown + one shared tab/table surface. */
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show .dash-table-tools{height:48px!important;display:flex!important;align-items:center!important;justify-content:flex-end!important;padding:0 16px!important;background:#fff!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show .dash-table-tools .global-field-btn{display:inline-flex!important;align-items:center!important;height:32px!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show .sum-dept-tree-actions{display:flex!important;align-items:center!important;gap:8px!important;padding:0 16px!important;min-height:48px!important;margin:0!important;background:#fff!important;border-bottom:1px solid var(--border-2)!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show .sum-dept-tree-actions .btn{height:32px!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show #sum-view-dept>.dash-table-tools{justify-content:space-between!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show #sum-view-dept>.dash-table-tools .sum-dept-toggle{height:32px!important}
html body .sum-dept-collapsed #sum-dept-table tbody tr[data-dept-level="2"]{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card #sum-type-select{display:block!important;width:145px!important;min-width:145px!important;height:32px!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>.tab-strip{background:var(--surface)!important;border:1px solid var(--border)!important;border-bottom:0!important;border-radius:10px 10px 0 0!important;padding:0 16px!important;margin:0!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-view-proj{border-top:0!important;border-radius:0 0 10px 10px!important;box-shadow:var(--shadow)!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-view-proj .tbl-scroll{padding:0 16px 16px!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card>.card-body>div:not(.spacer){position:static!important;top:auto!important;bottom:auto!important;left:auto!important;right:auto!important;grid-area:auto!important;align-self:center!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card>.card-body>span:last-child{position:static!important;top:auto!important;bottom:auto!important;left:auto!important;right:auto!important;margin-left:auto!important;max-width:none!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show{display:flex!important;flex-direction:column!important;align-items:stretch!important;width:100%!important;min-height:calc(100vh - 122px)!important;margin:0!important;padding:0!important;gap:0!important;grid-template-columns:none!important;grid-template-rows:none!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>*{grid-column:auto!important;grid-row:auto!important;position:relative!important;left:auto!important;right:auto!important;float:none!important;transform:none!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>.page-head{width:100%!important;margin:0 0 20px!important;padding:0!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card{width:100%!important;margin:0 0 14px!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card>.card-body{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;align-items:center!important;gap:14px 22px!important;width:100%!important;padding:14px 16px!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card>.card-body>div:not(.spacer){display:flex!important;width:auto!important;min-width:0!important;grid-template-columns:none!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card>.card-body>.spacer{display:block!important;flex:1 1 auto!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card .fsel,html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card .ms,html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card .ms-btn{width:auto!important;min-width:145px!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card #sum-type-seg{display:flex!important;width:auto!important;min-width:220px!important;height:32px!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>.tab-strip{display:flex!important;flex-direction:row!important;align-items:center!important;gap:24px!important;width:100%!important;height:48px!important;min-height:48px!important;margin:0!important;padding:0!important;background:transparent!important;border:0!important;border-bottom:1px solid var(--border)!important;border-radius:0!important;box-shadow:none!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>.tab-strip .ts{display:inline-flex!important;width:auto!important;height:48px!important;min-height:48px!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;color:var(--text-2)!important;font-size:14px!important;font-weight:400!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>.tab-strip>#sum-tab-detail{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>.tab-strip .ts.active{color:var(--accent)!important;font-weight:600!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>.tab-strip .ts.active:after{top:auto!important;bottom:7px!important;left:0!important;right:0!important;width:auto!important;height:2px!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-view-tip{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-view-tip{display:block!important;width:100%!important;height:auto!important;min-height:0!important;margin:0 0 12px!important;padding:0!important;background:transparent!important;border:0!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-view-proj{display:block!important;width:100%!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;background:var(--surface)!important;border:1px solid var(--border)!important;border-radius:10px!important;box-shadow:var(--shadow)!important;overflow:hidden!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-view-dept,html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-view-detail{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-view-proj .tbl-scroll{width:100%!important;min-width:0!important;overflow-x:auto!important;overflow-y:hidden!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-view-proj table{width:100%!important;min-width:900px!important}
html body[data-current-page="dashboard"] #page-dashboard.show{display:flex!important;flex-direction:column!important;align-items:stretch!important;width:100%!important;min-height:calc(100vh - 122px)!important;margin:0!important;padding:0!important;gap:0!important;grid-template-columns:none!important;grid-template-rows:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>*{grid-column:auto!important;grid-row:auto!important;position:relative!important;left:auto!important;right:auto!important;float:none!important;transform:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.page-head{width:100%!important;margin:0 0 20px!important;padding:0!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card{width:100%!important;margin:0 0 14px!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;align-items:center!important;gap:14px 22px!important;width:100%!important;padding:14px 16px!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body>div:not(.spacer){display:flex!important;width:auto!important;min-width:0!important;grid-template-columns:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body>.spacer{display:block!important;flex:1 1 auto!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card .fsel,html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card .ms,html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card .ms-btn{width:auto!important;min-width:145px!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card #sum-type-seg{display:flex!important;width:auto!important;min-width:220px!important;height:32px!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card #sum-type-seg button{flex:1 1 0!important;min-width:48px!important;height:32px!important;border:0!important;background:#f0f1f2!important;color:var(--text-2)!important;font-size:12px!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card #sum-type-seg button.active{background:#fff!important;color:var(--accent)!important;font-weight:600!important;box-shadow:0 1px 3px rgba(31,35,41,.12)!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{display:flex!important;flex-direction:row!important;align-items:center!important;gap:24px!important;width:100%!important;height:48px!important;min-height:48px!important;margin:0!important;padding:0!important;background:transparent!important;border:0!important;border-bottom:1px solid var(--border)!important;border-radius:0!important;box-shadow:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts{display:inline-flex!important;width:auto!important;height:48px!important;min-height:48px!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;color:var(--text-2)!important;font-size:14px!important;font-weight:400!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip>#sum-tab-detail{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active{color:var(--accent)!important;font-weight:600!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active:after{content:''!important;position:absolute!important;left:0!important;right:0!important;bottom:0!important;height:3px!important;background:var(--accent)!important;border-radius:3px 3px 0 0!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-tip{display:block!important;width:100%!important;height:auto!important;min-height:0!important;margin:0 0 12px!important;padding:0!important;background:transparent!important;border:0!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj{display:block!important;width:100%!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;background:var(--surface)!important;border:1px solid var(--border)!important;border-radius:10px!important;box-shadow:var(--shadow)!important;overflow:hidden!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-dept,html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-detail{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .tbl-scroll{width:100%!important;min-width:0!important;overflow-x:auto!important;overflow-y:hidden!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj table{width:100%!important;min-width:900px!important}

/* Dashboard review pass: tab first, filters immediately above the active table. */
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>.tab-strip{order:1!important;padding-left:16px!important;padding-right:16px!important;margin:0 0 14px!important}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card{order:2!important;margin:0 0 14px!important}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){order:3!important}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show .dash-table-tools .global-field-btn svg{display:block!important;width:15px!important;height:15px!important;margin-right:6px!important;stroke:currentColor!important;fill:none!important;stroke-width:2!important;stroke-linecap:round!important;stroke-linejoin:round!important}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show .dash-table-tools .global-field-btn{width:auto!important;min-width:108px!important;padding:0 12px!important;white-space:nowrap!important}
/* Dashboard review pass: remove the empty separators between the three modules. */
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>.tab-strip{margin-bottom:0!important}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card{margin-bottom:0!important}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){padding-top:0!important}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept)::before{display:none!important}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card{border-radius:0!important}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>.tab-strip{border-radius:10px 10px 0 0!important}
html body[data-current-page="dashboard"][data-tab-standard="1"] #page-dashboard.dashboard-flow.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){border-radius:0 0 10px 10px!important}

/* Must remain last: restore the V6 dashboard to a full-width vertical flow. */
html body[data-current-page="dashboard"] #page-dashboard.show{display:flex!important;flex-direction:column!important;align-items:stretch!important;width:100%!important;min-height:calc(100vh - 122px)!important;margin:0!important;padding:0!important;gap:0!important;grid-template-columns:none!important;grid-template-rows:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>*{grid-column:auto!important;grid-row:auto!important;position:relative!important;left:auto!important;right:auto!important;float:none!important;transform:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.page-head{width:100%!important;margin:0 0 20px!important;padding:0!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card{width:100%!important;margin:0 0 14px!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;align-items:center!important;gap:14px 22px!important;width:100%!important;padding:14px 16px!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body>div:not(.spacer){display:flex!important;width:auto!important;min-width:0!important;grid-template-columns:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body>.spacer{display:block!important;flex:1 1 auto!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card .fsel,html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card .ms,html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card .ms-btn{width:auto!important;min-width:145px!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card #sum-type-seg{display:flex!important;width:auto!important;min-width:220px!important;height:32px!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card #sum-type-seg button{flex:1 1 0!important;min-width:48px!important;height:32px!important;border:0!important;background:#f0f1f2!important;color:var(--text-2)!important;font-size:12px!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card #sum-type-seg button.active{background:#fff!important;color:var(--accent)!important;font-weight:600!important;box-shadow:0 1px 3px rgba(31,35,41,.12)!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{display:flex!important;flex-direction:row!important;align-items:center!important;gap:24px!important;width:100%!important;height:48px!important;min-height:48px!important;margin:0!important;padding:0!important;background:transparent!important;border:0!important;border-bottom:1px solid var(--border)!important;border-radius:0!important;box-shadow:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts{display:inline-flex!important;width:auto!important;height:48px!important;min-height:48px!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;color:var(--text-2)!important;font-size:14px!important;font-weight:400!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip>#sum-tab-detail{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active{color:var(--accent)!important;font-weight:600!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active:after{content:''!important;position:absolute!important;left:0!important;right:0!important;bottom:0!important;height:3px!important;background:var(--accent)!important;border-radius:3px 3px 0 0!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-tip{display:block!important;width:100%!important;height:auto!important;min-height:0!important;margin:0 0 12px!important;padding:0!important;background:transparent!important;border:0!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj{display:block!important;width:100%!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;background:var(--surface)!important;border:1px solid var(--border)!important;border-radius:10px!important;box-shadow:var(--shadow)!important;overflow:hidden!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-dept,html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-detail{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .tbl-scroll{width:100%!important;min-width:0!important;overflow-x:auto!important;overflow-y:hidden!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj table{width:100%!important;min-width:900px!important}

/* Dashboard V6 reference layout: the dashboard is a normal vertical flow.
   Keep the two summary tabs horizontal and give the filter/table the full
   content width; this intentionally scopes the correction to this page. */
html body[data-current-page="dashboard"] #page-dashboard.show{
  display:flex!important;
  flex-direction:column!important;
  width:100%!important;
  min-height:calc(100vh - 122px)!important;
  padding:0!important;
  margin:0!important;
  gap:0!important;
  grid-template-columns:none!important;
  grid-template-rows:none!important;
  align-items:stretch!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > *{
  grid-column:auto!important;
  grid-row:auto!important;
  float:none!important;
  position:relative!important;
  left:auto!important;
  right:auto!important;
  transform:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > .page-head{
  width:100%!important;
  margin:0 0 20px!important;
  padding:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card{
  width:100%!important;
  margin:0 0 14px!important;
  border-radius:10px!important;
  box-shadow:var(--shadow)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card > .card-body{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  flex-wrap:wrap!important;
  gap:14px 22px!important;
  width:100%!important;
  min-height:60px!important;
  padding:14px 16px!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card > .card-body > div:not(.spacer){
  display:flex!important;
  align-items:center!important;
  width:auto!important;
  min-width:0!important;
  grid-template-columns:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card > .card-body > .spacer{display:block!important;flex:1 1 auto!important}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card .fsel,
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card .ms,
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card .ms-btn{
  width:auto!important;
  min-width:145px!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card #ms-sumproj .ms-btn{min-width:145px!important}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card #sum-type-seg{
  display:flex!important;
  width:auto!important;
  min-width:220px!important;
  height:32px!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card #sum-type-seg button{
  flex:1 1 0!important;
  min-width:48px!important;
  height:32px!important;
  border:0!important;
  background:#f0f1f2!important;
  color:var(--text-2)!important;
  font-size:12px!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card #sum-type-seg button:first-child{border-radius:6px 0 0 6px!important}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card #sum-type-seg button:last-child{border-radius:0 6px 6px 0!important}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card #sum-type-seg button.active{background:#fff!important;color:var(--accent)!important;font-weight:600!important;box-shadow:0 1px 3px rgba(31,35,41,.12)!important}
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:24px!important;
  width:100%!important;
  height:48px!important;
  min-height:48px!important;
  margin:0!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:0!important;
  box-shadow:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts{
  display:inline-flex!important;
  width:auto!important;
  height:48px!important;
  min-height:48px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:400!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip #sum-tab-detail{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts.active{color:var(--accent)!important;font-weight:600!important}
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts.active::after{content:''!important;position:absolute!important;left:0!important;right:0!important;bottom:0!important;width:auto!important;height:3px!important;background:var(--accent)!important;border-radius:3px 3px 0 0!important}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-tip{
  display:block!important;
  width:100%!important;
  margin:0 0 12px!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-proj,
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-dept{
  display:block!important;
  width:100%!important;
  min-width:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  background:var(--surface)!important;
  border:1px solid var(--border)!important;
  border-radius:10px!important;
  box-shadow:var(--shadow)!important;
  overflow:hidden!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-dept{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-proj .tbl-scroll,
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-dept .tbl-scroll{
  width:100%!important;
  min-width:0!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-proj table,
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-dept table{
  width:100%!important;
  min-width:900px!important;
}

/* Dashboard-only tab correction: preserve the existing two-column page grid;
   only move the summary tabs to a horizontal row above the existing filter card. */
html body[data-current-page="dashboard"] #page-dashboard.show{
  grid-template-columns:284px minmax(0,1fr)!important;
  grid-template-rows:auto auto auto minmax(420px,1fr)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{
  grid-column:2!important;
  grid-row:2!important;
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:24px!important;
  height:48px!important;
  min-height:48px!important;
  margin:0 16px!important;
  padding:0!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:0!important;
  background:#fff!important;
  box-shadow:none!important;
  position:relative!important;
  z-index:2!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:auto!important;
  height:48px!important;
  min-height:48px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:400!important;
  position:relative!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip>#sum-tab-detail{
  display:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active{
  color:var(--accent)!important;
  font-weight:600!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active::after{
  content:''!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  width:auto!important;
  height:3px!important;
  border-radius:3px 3px 0 0!important;
  background:var(--accent)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.card{
  grid-column:2!important;
  grid-row:2!important;
  padding-top:48px!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip+div[style*="上方切换"]{
  grid-column:2!important;
  grid-row:3!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){
  grid-column:2!important;
  grid-row:4!important;
}

/* Dashboard summary layout: match the reference page order without changing
   the underlying data views: filter card, horizontal tabs, tip, then table. */
html body[data-current-page="dashboard"] #page-dashboard.show{
  display:flex!important;
  flex-direction:column!important;
  width:100%!important;
  min-height:calc(100vh - 88px)!important;
  padding:0!important;
  gap:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.page-head{
  flex:0 0 auto!important;
  width:100%!important;
  margin:0 0 16px!important;
  padding:0 16px!important;
  box-sizing:border-box!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card{
  order:2!important;
  flex:0 0 auto!important;
  width:calc(100% - 32px)!important;
  min-height:60px!important;
  margin:0 16px 16px!important;
  box-sizing:border-box!important;
  border-radius:8px!important;
  background:#fff!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body{
  display:flex!important;
  align-items:center!important;
  gap:24px!important;
  min-height:60px!important;
  padding:14px 16px!important;
  box-sizing:border-box!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body>div:not(.spacer){
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  min-width:0!important;
  flex:0 0 auto!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body>div:not(.spacer)>span{
  flex:0 0 auto!important;
  white-space:nowrap!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body>.spacer{
  display:block!important;
  flex:1 1 auto!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{
  order:3!important;
  flex:0 0 48px!important;
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:24px!important;
  width:calc(100% - 32px)!important;
  height:48px!important;
  min-height:48px!important;
  margin:0 16px!important;
  padding:0!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:0!important;
  background:#fff!important;
  box-shadow:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:auto!important;
  height:48px!important;
  min-height:48px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:400!important;
  position:relative!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip>#sum-tab-detail{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active{
  color:var(--accent)!important;
  font-weight:600!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active::after{
  content:''!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  width:auto!important;
  height:3px!important;
  border-radius:3px 3px 0 0!important;
  background:var(--accent)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-tip{
  order:4!important;
  flex:0 0 auto!important;
  width:calc(100% - 32px)!important;
  margin:0 16px 12px!important;
  padding:8px 0 0!important;
  box-sizing:border-box!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){
  order:5!important;
  flex:1 1 auto!important;
  width:calc(100% - 32px)!important;
  min-height:420px!important;
  margin:0 16px!important;
  padding:0!important;
  box-sizing:border-box!important;
  border-radius:8px!important;
  background:#fff!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card,
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-tip,
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){
  grid-column:auto!important;
  grid-row:auto!important;
}

/* Final dashboard flow correction: prevent legacy grid rules from narrowing
   the table into the former left-side tab column. */
html body[data-current-page="dashboard"] #page-dashboard.show{
  display:block!important;
  width:100%!important;
  min-height:calc(100vh - 88px)!important;
  padding:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.page-head,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card,
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-tip,
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){
  display:block!important;
  float:none!important;
  clear:both!important;
  grid-column:auto!important;
  grid-row:auto!important;
  position:relative!important;
  width:calc(100% - 32px)!important;
  margin-left:16px!important;
  margin-right:16px!important;
  box-sizing:border-box!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.page-head{
  margin-top:0!important;
  margin-bottom:16px!important;
  padding:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card{
  min-height:60px!important;
  margin-bottom:16px!important;
  padding:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body{
  display:flex!important;
  flex-wrap:nowrap!important;
  align-items:center!important;
  min-height:60px!important;
  padding:14px 16px!important;
  overflow:visible!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  gap:24px!important;
  height:48px!important;
  min-height:48px!important;
  margin-bottom:0!important;
  padding:0!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  background:#fff!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts{
  display:inline-flex!important;
  width:auto!important;
  height:48px!important;
  min-height:48px!important;
  padding:0!important;
  border:0!important;
  position:relative!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-tip{
  min-height:34px!important;
  margin-bottom:12px!important;
  padding:8px 0 0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){
  min-height:420px!important;
  margin-bottom:16px!important;
  padding:0!important;
  overflow:hidden!important;
  border-radius:8px!important;
  background:#fff!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept)>.tbl-scroll{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0!important;
  overflow-x:auto!important;
  overflow-y:auto!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj #sum-proj-table{
  width:100%!important;
  min-width:900px!important;
}

/* V6 Demo reference baseline: keep the dashboard as one vertical page flow.
   The previous SideTabs overrides are intentionally neutralized here. */
html body[data-current-page="dashboard"] #page-dashboard.show{
  display:flex!important;
  flex-direction:column!important;
  grid-template-columns:none!important;
  grid-template-rows:none!important;
  width:100%!important;
  min-height:calc(100vh - 122px)!important;
  padding:0!important;
  gap:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.page-head,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card,
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-tip,
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){
  grid-column:auto!important;
  grid-row:auto!important;
  float:none!important;
  position:relative!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.page-head{
  flex:0 0 auto!important;
  width:100%!important;
  margin:0 0 16px!important;
  padding:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card{
  flex:0 0 auto!important;
  width:100%!important;
  margin:0 0 14px!important;
  padding:0!important;
  box-sizing:border-box!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body{
  display:flex!important;
  align-items:center!important;
  gap:22px!important;
  flex-wrap:wrap!important;
  padding:14px 16px!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{
  flex:0 0 auto!important;
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:4px!important;
  width:100%!important;
  height:auto!important;
  min-height:48px!important;
  margin:0 0 14px!important;
  padding:0!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  background:transparent!important;
  box-shadow:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:auto!important;
  height:48px!important;
  min-height:48px!important;
  margin:0 0 -1px!important;
  padding:10px 16px!important;
  border:0!important;
  border-bottom:2px solid transparent!important;
  border-radius:7px 7px 0 0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:13px!important;
  font-weight:500!important;
  position:relative!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip>#sum-tab-detail{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active{
  color:var(--accent)!important;
  border-bottom-color:var(--accent)!important;
  font-weight:600!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active::after{display:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-tip{
  flex:0 0 auto!important;
  width:100%!important;
  min-height:0!important;
  margin:0 0 12px!important;
  padding:0!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){
  flex:1 1 auto!important;
  width:100%!important;
  min-height:420px!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
  border-radius:8px!important;
  background:#fff!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept)>.tbl-scroll{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0!important;
  overflow-x:auto!important;
  overflow-y:auto!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj #sum-proj-table{
  width:100%!important;
  min-width:900px!important;
}
@media(max-width:1180px){
  html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media(max-width:760px){
  html body[data-current-page="dashboard"] .main>.content>#page-dashboard.show{
    grid-template-columns:1fr!important;
  }
  html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{
    border-radius:8px 8px 0 0!important;
  }
  html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card{
    border-radius:0!important;
  }
  html body[data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card>.card-body{
    grid-template-columns:1fr!important;
  }
}

/* Fill workflow final polish: full-width step rail, fixed bottom white action bar, no help entry. */
html body :is(.global-guide,.op-guide-icon,#global-guide,#global-guide-btn){
  display:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show,
html body #page-fill2.show{
  padding-bottom:88px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps,
html body #page-fill2.show>#fill-workflow-steps{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  width:100%!important;
  max-width:none!important;
  height:112px!important;
  min-height:112px!important;
  margin:0 0 18px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step,
html body #page-fill2.show>#fill-workflow-steps .fill-step{
  position:relative!important;
  display:grid!important;
  grid-template-columns:52px minmax(0,1fr)!important;
  grid-template-rows:24px 22px!important;
  column-gap:12px!important;
  align-content:center!important;
  align-items:center!important;
  height:112px!important;
  min-height:112px!important;
  padding:0 34px!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step:not(:last-child)::after,
html body #page-fill2.show>#fill-workflow-steps .fill-step:not(:last-child)::after{
  content:""!important;
  position:absolute!important;
  left:152px!important;
  right:34px!important;
  top:56px!important;
  height:1px!important;
  background:#E1E4EA!important;
  z-index:0!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step i,
html body #page-fill2.show>#fill-workflow-steps .fill-step i{
  position:relative!important;
  z-index:1!important;
  grid-column:1!important;
  grid-row:1 / span 2!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:46px!important;
  height:46px!important;
  min-width:46px!important;
  margin:0!important;
  border:0!important;
  border-radius:50%!important;
  background:#E3E9F2!important;
  color:#6B7788!important;
  font-family:"Rubik",system-ui,sans-serif!important;
  font-size:18px!important;
  line-height:24px!important;
  font-weight:700!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.active i,
html body #page-fill2.show>#fill-workflow-steps .fill-step.active i{
  background:#1677FF!important;
  color:#fff!important;
  box-shadow:0 0 0 6px rgba(22,119,255,.12)!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step b,
html body #page-fill2.show>#fill-workflow-steps .fill-step b{
  position:relative!important;
  z-index:1!important;
  width:max-content!important;
  max-width:100%!important;
  margin:0!important;
  padding-right:10px!important;
  background:#F2F3F5!important;
  color:#424B57!important;
  font-size:16px!important;
  line-height:24px!important;
  font-weight:600!important;
  white-space:nowrap!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.active b,
html body #page-fill2.show>#fill-workflow-steps .fill-step.active b{
  color:#1677FF!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step span,
html body #page-fill2.show>#fill-workflow-steps .fill-step span{
  position:relative!important;
  z-index:1!important;
  grid-column:2!important;
  grid-row:1 / span 2!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  align-self:stretch!important;
  min-width:0!important;
  margin:0!important;
  color:#8A94A3!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:400!important;
  white-space:nowrap!important;
}
html body[data-current-page="fill2"] .fill-workflow-footer.show,
html body .fill-workflow-footer.show{
  position:fixed!important;
  left:var(--adaptive-nav)!important;
  right:0!important;
  bottom:0!important;
  z-index:120!important;
  width:auto!important;
  height:76px!important;
  margin:0!important;
  padding:16px 24px!important;
  border:0!important;
  border-top:1px solid #E5E6EB!important;
  border-radius:0!important;
  background:#fff!important;
  box-shadow:0 -10px 28px rgba(31,35,41,.08)!important;
}
html body[data-current-page="fill2"] .fill-workflow-footer-inner,
html body .fill-workflow-footer-inner{
  align-items:center!important;
  justify-content:flex-end!important;
  height:100%!important;
}
html body[data-current-page="fill2"] .fill-workflow-footer .btn,
html body .fill-workflow-footer .btn{
  height:44px!important;
  min-width:132px!important;
  border-radius:8px!important;
  font-size:16px!important;
}
html body[data-current-page="fill2"] #page-fill2.show :is(.fill-step-card,.fill-confirm-panel,.fill-change-list,.project-snapshot-card,.fill-change-panel){
  border-color:transparent!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show :is(.fill-confirm-panel,.fill-inherit-preview,.fill-change-list){
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-head,
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row{
  border-color:#E5E6EB!important;
}
html body[data-current-page="fill2"] .onboarding-card,
html body .onboarding-card{
  display:none!important;
}
@media(max-width:1080px){
  html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps,
  html body #page-fill2.show>#fill-workflow-steps{
    height:auto!important;
    min-height:auto!important;
  }
  html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step,
  html body #page-fill2.show>#fill-workflow-steps .fill-step{
    height:88px!important;
    min-height:88px!important;
    padding:0 18px!important;
  }
  html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step:not(:last-child)::after,
  html body #page-fill2.show>#fill-workflow-steps .fill-step:not(:last-child)::after{
    left:132px!important;
    right:18px!important;
    top:44px!important;
  }
}

/* Global section title marker: M-Design section title, 4x12 leading rail. */
html body :is(.page,.task-designer-shell) :is(.card-head h3,.task-designer-section-title h3,.task-designer-side-head h3){
  position:relative!important;
  display:inline-flex!important;
  align-items:center!important;
  min-height:22px!important;
  margin:0!important;
  padding-left:14px!important;
  color:var(--text)!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:500!important;
  letter-spacing:0!important;
}
html body :is(.page,.task-designer-shell) :is(.card-head h3,.task-designer-section-title h3,.task-designer-side-head h3)::before{
  content:""!important;
  position:absolute!important;
  left:0!important;
  top:50%!important;
  width:4px!important;
  height:12px!important;
  border-radius:2px!important;
  background:#1677FF!important;
  transform:translateY(-50%)!important;
}

/* Global cleanup: remove demo help/question entrances everywhere. */
html body :is(
  .global-guide,
  .global-guide-btn,
  .global-guide-menu,
  .global-guide-item,
  .global-guide-reset,
  .op-guide-icon,
  .op-guide-pop,
  #global-guide,
  #global-guide-btn,
  #global-guide-menu,
  #op-guide-pop
){
  display:none!important;
  visibility:hidden!important;
  pointer-events:none!important;
}

/* Global line-tab style: align tab controls with task management tabs. */
html body :is(.task-designer-tabs,.tab-strip,.fill-analysis-tabs,#page-fillreview .fill-review-status-tabs){
  display:flex!important;
  align-items:center!important;
  gap:40px!important;
  min-height:36px!important;
  padding:0 0 2px!important;
  margin:0 0 18px!important;
  border:0!important;
  border-bottom:1px solid #E5E6EB!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
html body :is(.task-designer-tabs,.tab-strip,.fill-analysis-tabs,#page-fillreview .fill-review-status-tabs) :is(button,.ts,.fill-analysis-tab,.fill-review-status-tab){
  position:relative!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  height:34px!important;
  min-height:34px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:600!important;
  letter-spacing:0!important;
}
html body :is(.task-designer-tabs,.tab-strip,.fill-analysis-tabs,#page-fillreview .fill-review-status-tabs) :is(button.active,.ts.active,.fill-analysis-tab.active,.fill-review-status-tab.active){
  color:var(--text)!important;
}
html body :is(.task-designer-tabs,.tab-strip,.fill-analysis-tabs,#page-fillreview .fill-review-status-tabs) :is(button.active,.ts.active,.fill-analysis-tab.active,.fill-review-status-tab.active)::after{
  content:""!important;
  position:absolute!important;
  left:0!important;
  bottom:-3px!important;
  width:28px!important;
  height:3px!important;
  border-radius:999px!important;
  background:var(--accent)!important;
}
html body #page-fillreview .fill-review-status-label{
  margin-right:-24px!important;
  color:var(--text-3)!important;
  font-size:13px!important;
  line-height:22px!important;
  font-weight:600!important;
}
html body #page-fillreview .fill-review-status-tab small{
  margin-left:0!important;
  color:var(--text-3)!important;
  font-size:12px!important;
  font-weight:500!important;
}

/* 工时汇总分析保留原有纵向 SideTabs，不参与全局横向 Tab 收口。 */
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  gap:4px!important;
  margin:0!important;
  padding:20px 16px 24px!important;
  box-sizing:border-box!important;
  min-height:560px!important;
  background:#fff!important;
  border:0!important;
  border-right:1px solid var(--border)!important;
  border-radius:8px 0 0 8px!important;
  box-shadow:0 10px 28px rgba(17,24,39,.06)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  width:100%!important;
  height:32px!important;
  min-height:32px!important;
  margin:0!important;
  padding:0!important;
  text-align:left!important;
  border:0!important;
  border-right:2px solid transparent!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:400!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active{
  color:var(--text)!important;
  border-right-color:transparent!important;
  font-weight:500!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active::after{
  content:""!important;
  position:absolute!important;
  right:-1px!important;
  top:4px!important;
  left:auto!important;
  bottom:auto!important;
  width:2px!important;
  height:24px!important;
  border-radius:2px 0 0 2px!important;
  background:var(--accent)!important;
}
/* Dashboard: keep a 16px breathing space on both sides of the divider between
   the filter surface and the active data table. */
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){
  position:relative!important;
  margin-top:0!important;
  padding-top:32px!important;
  margin-right:16px!important;
  background:#fff!important;
  box-sizing:border-box!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept)::before{
  content:"";
  position:absolute;
  top:16px;
  left:16px;
  right:16px;
  border-top:1px solid var(--border);
  pointer-events:none;
}
/* Dashboard content keeps a 16px right gutter; the filter-to-table breathing
   area belongs to the white content surface instead of the page gray. */
html body[data-current-page="dashboard"] .main>.content{
  padding-right:16px!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show{
  width:calc(100% - 16px)!important;
  max-width:calc(100% - 16px)!important;
}

/* Dashboard project summary table: regular body weight, demo-style deltas,
   and a bold total row. Keep the table itself 16px from both side edges. */
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .tbl-scroll{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin-left:16px!important;
  margin-right:16px!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj table tbody td,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj table tbody td b{
  font-weight:400!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj table tbody td.num-drill{
  color:#2F6BFF!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj table tbody td[style*="var(--green)"]{
  color:#2F8F2F!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj table tbody td[style*="var(--red)"]{
  color:#E5484D!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj table tbody tr.cost-total td,
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj table tbody tr.cost-total td b{
  font-weight:700!important;
}
html body #page-fillreview .fill-review-status-tab b{
  font-family:inherit!important;
  font-size:14px!important;
  font-weight:600!important;
}

/* Fill review page: table body scrolls, pagination sticks to the table bottom. */
html body[data-current-page="fillreview"] .main>.content{
  padding:72px 16px 16px!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show{
  display:flex!important;
  flex-direction:column!important;
  min-height:0!important;
  height:calc(100vh - 88px)!important;
  max-height:calc(100vh - 88px)!important;
  overflow:hidden!important;
  padding-bottom:0!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.page-head,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-filter,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions,
html body[data-current-page="fillreview"] #page-fillreview.show>.selection-action-bar{
  flex:0 0 auto!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-table-wrap{
  flex:1 1 auto!important;
  min-height:0!important;
  margin-bottom:0!important;
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
  background:#fff!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-table-wrap>.tbl-scroll{
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  overflow:auto!important;
  scrollbar-gutter:stable!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-table-wrap>.fill-pagination{
  flex:0 0 52px!important;
  min-height:52px!important;
  margin-top:auto!important;
  position:sticky!important;
  bottom:0!important;
  z-index:20!important;
  border-top:1px solid #E5E6EB!important;
  background:#fff!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-actions .card-body{
  flex-wrap:nowrap!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show #fill-review-count{
  display:none!important;
}

/* Filter-to-list divider: keep the flat panel, but show the section split line. */
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-filterbar{
  position:relative!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-filterbar::after{
  content:""!important;
  position:absolute!important;
  left:16px!important;
  right:16px!important;
  bottom:0!important;
  height:1px!important;
  background:#E5E6EB!important;
  pointer-events:none!important;
}
html body[data-current-page="task"] .task-designer-tabs{
  padding:8px 0 2px!important;
  margin-bottom:16px!important;
}
html body[data-current-page="task"] .task-designer-op-head,
html body[data-current-page="task"] .task-designer-op-cell{
  box-shadow:-8px 0 16px -5px rgba(31,35,41,.28)!important;
}
html body[data-current-page="task"] .task-designer-table-wrap th:nth-child(2),
html body[data-current-page="task"] .task-designer-table-wrap td:nth-child(2){
  box-shadow:8px 0 16px -5px rgba(31,35,41,.28)!important;
}
/* 项目配置清单：工作卡片固定在视口内，底部保留 16px 空间。 */
html body[data-current-page="deptprojects"] #page-deptprojects.show{
  display:flex!important;
  flex-direction:column!important;
  height:calc(100vh - 104px)!important;
  min-height:0!important;
  max-height:calc(100vh - 104px)!important;
  overflow:hidden!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>.page-head,
html body[data-current-page="deptprojects"] #page-deptprojects.show>.roster-sync,
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-filterbar,
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-actions{
  flex:0 0 auto!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project{
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  overflow:hidden!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project>.card-head h3,
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project>.card-head #dpm-list-summary{
  display:none!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project>.card-head{
  display:none!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project>.tbl-scroll{
  height:auto!important;
  max-height:none!important;
  min-height:0!important;
  overflow:auto!important;
  scrollbar-gutter:stable!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-actions{
  flex-wrap:nowrap!important;
  align-items:center!important;
  white-space:nowrap!important;
  overflow-x:auto!important;
  min-height:0!important;
  padding:12px 16px 16px!important;
}
/* 原位编辑控件默认呈现为文本，悬浮到行或聚焦时才展示输入框。 */
html body[data-current-page="deptprojects"] #dpm-project-table tbody .dpm-inline-edit{
  border-color:transparent!important;
  background-color:transparent!important;
  box-shadow:none!important;
  pointer-events:none!important;
  cursor:default!important;
}
html body[data-current-page="deptprojects"] #dpm-project-table tbody tr:hover .dpm-inline-edit,
html body[data-current-page="deptprojects"] #dpm-project-table tbody .dpm-inline-edit:focus{
  border-color:#C9D8F8!important;
  background-color:#F8FAFF!important;
  box-shadow:none!important;
  pointer-events:auto!important;
  cursor:text!important;
}
html body[data-current-page="deptprojects"] #dpm-project-table tbody tr:hover .dpm-inline-select{
  cursor:pointer!important;
}

/* Department permissions: operation actions are blue text in view mode;
   the active inline-save action uses the primary blue fill. */
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-row-edit{
  padding:0!important;
  color:var(--accent)!important;
  background:transparent!important;
  border-color:transparent!important;
  font-size:13px!important;
  font-weight:400!important;
  line-height:22px!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-inline-editing .dpm-row-edit{
  color:var(--accent)!important;
  background:transparent!important;
  border-color:transparent!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-inline-editing .dpm-row-edit:hover{
  color:var(--accent-hover)!important;
  background:transparent!important;
  border-color:transparent!important;
  text-decoration:underline;
}

/* Log page tabs: override legacy id rules so they match task management tabs. */
html body[data-current-page="log"] #page-log.show>#log-tabs{
  display:flex!important;
  align-items:center!important;
  gap:40px!important;
  min-height:36px!important;
  padding:0 0 2px!important;
  margin:0 0 18px!important;
  border:0!important;
  border-bottom:1px solid #E5E6EB!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
html body[data-current-page="log"] #page-log.show>#log-tabs .ts{
  position:relative!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  height:34px!important;
  min-height:34px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:600!important;
  letter-spacing:0!important;
}
html body[data-current-page="log"] #page-log.show>#log-tabs .ts.active{
  color:var(--text)!important;
}
html body[data-current-page="log"] #page-log.show>#log-tabs .ts.active::after{
  content:""!important;
  position:absolute!important;
  left:0!important;
  bottom:-3px!important;
  width:28px!important;
  height:3px!important;
  border-radius:999px!important;
  background:var(--accent)!important;
}
html body[data-current-page="log"] #page-log.show>#log-tabs{
  margin-top:20px!important;
  margin-bottom:0!important;
  padding:0 16px 2px!important;
  border:1px solid var(--border)!important;
  border-bottom:0!important;
  border-radius:8px 8px 0 0!important;
  background:#fff!important;
}
html body[data-current-page="log"] #page-log.show .log-filter-toolbar{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  margin-top:0!important;
  border-radius:0 0 8px 8px!important;
}
html body[data-current-page="log"] #page-log.show .log-filter-toolbar .log-export-btn{
  margin-left:0!important;
}

/* Roles page: filter divider and table-left primary action. */
html body[data-current-page="roles"] #page-roles.show{
  display:flex!important;
  flex-direction:column!important;
  height:calc(100vh - 88px)!important;
  min-height:0!important;
  max-height:calc(100vh - 88px)!important;
  overflow:hidden!important;
}
html body[data-current-page="roles"] #page-roles.show>.page-head,
html body[data-current-page="roles"] #page-roles.show>.card,
html body[data-current-page="roles"] #page-roles.show>.roles-actions{
  flex:0 0 auto!important;
}
html body[data-current-page="roles"] #page-roles.show>.card{
  position:relative!important;
  width:calc(100% - 32px)!important;
  max-width:none!important;
  box-sizing:border-box!important;
  margin-left:16px!important;
  margin-right:16px!important;
  margin-bottom:0!important;
  background:#fff!important;
  border:0!important;
  border-radius:8px 8px 0 0!important;
  box-shadow:none!important;
  overflow:visible!important;
}
html body[data-current-page="roles"] #page-roles.show>.card::after{
  content:""!important;
  position:absolute!important;
  left:16px!important;
  right:16px!important;
  bottom:0!important;
  height:1px!important;
  background:#E5E6EB!important;
  pointer-events:none!important;
}
html body[data-current-page="roles"] #page-roles.show>.card .rfilter .fitem{
  flex:0 0 auto!important;
}
html body[data-current-page="roles"] #page-roles.show #rf-kw-name{
  width:240px!important;
  min-width:240px!important;
  max-width:100%!important;
}
html body[data-current-page="roles"] #page-roles.show>.roles-actions{
  display:flex!important;
  width:calc(100% - 32px)!important;
  max-width:none!important;
  align-items:center!important;
  gap:8px!important;
  min-height:56px!important;
  margin:0 16px!important;
  padding:12px 16px!important;
  background:#fff!important;
  border:0!important;
  border-radius:8px 8px 0 0!important;
  box-shadow:none!important;
  box-sizing:border-box!important;
}
html body[data-current-page="roles"] #page-roles.show>.roles-actions .global-field-btn{
  margin-left:auto!important;
}
html body[data-current-page="roles"] #page-roles.show>.tbl-wrap{
  width:calc(100% - 32px)!important;
  max-width:none!important;
  box-sizing:border-box!important;
  margin:0 16px!important;
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  background:#fff!important;
  border:0!important;
  border-radius:0 0 8px 8px!important;
  box-shadow:none!important;
}
html body[data-current-page="roles"] #page-roles.show>.tbl-wrap>.tbl-scroll{
  min-height:0!important;
  height:auto!important;
  overflow:auto!important;
}
@media(max-width:640px){
  html body[data-current-page="roles"] #page-roles.show>.card .rfilter .fitem,
  html body[data-current-page="roles"] #page-roles.show #rf-kw-name{
    width:100%!important;
    min-width:0!important;
  }
}

/* Final task-page boundary: the content container already supplies the 16px
   gutter; avoid adding a second page-level inset or work-area margin. */
html body[data-current-page="task"] .main>.content>#page-task.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
}
html body[data-current-page="task"] #page-task.show>#task-worktime .task-designer-shell{
  padding:0!important;
}
html body[data-current-page="task"] #page-task.show>#task-worktime{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
}

/* Fill2 first step: compact project summary and task-style change timeline. */
html body[data-current-page="fill2"] #page-fill2.show>#fill-step-one>p{
  display:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-preview-head{
  margin-bottom:10px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-preview-head .count{
  display:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips{
  align-items:center!important;
  gap:6px!important;
  row-gap:6px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chip{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  max-width:145px!important;
  min-height:24px!important;
  height:24px!important;
  padding:0 9px!important;
  border:0!important;
  border-radius:6px!important;
  font-size:11px!important;
  line-height:20px!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-more{
  display:inline-flex!important;
  align-items:center!important;
  height:24px!important;
  color:var(--text-3)!important;
  font-size:11px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-view-all{
  flex:0 0 auto!important;
  height:28px!important;
  min-height:28px!important;
  margin:0!important;
  padding:0 10px!important;
  border:0!important;
  border-radius:6px!important;
  background:#F2F3F5!important;
  color:var(--text-2)!important;
  font-size:12px!important;
}
html body[data-current-page="fill2"] #page-fill2.show #fill-project-range-summary{
  display:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-list{
  border:0!important;
  border-radius:0!important;
  background:#fff!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-head{
  position:relative!important;
  height:40px!important;
  padding:0 12px 0 24px!important;
  border-bottom:1px solid #E5E6EB!important;
  font-size:13px!important;
  line-height:22px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-head::before{
  content:""!important;
  position:absolute!important;
  left:12px!important;
  top:50%!important;
  width:4px!important;
  height:12px!important;
  border-radius:2px!important;
  background:#1677FF!important;
  transform:translateY(-50%)!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-head span{
  display:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row{
  position:relative!important;
  min-height:48px!important;
  padding:0 12px 0 64px!important;
  grid-template-columns:86px minmax(0,1fr) 58px!important;
  gap:9px!important;
  border-bottom:1px solid #E5E6EB!important;
  font-size:12px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row::before{
  content:counter(fill-change-row)!important;
  counter-increment:fill-change-row!important;
  position:absolute!important;
  left:12px!important;
  top:50%!important;
  width:32px!important;
  height:32px!important;
  display:grid!important;
  place-items:center!important;
  border-radius:50%!important;
  background:#EAF1FF!important;
  color:var(--accent)!important;
  font-size:12px!important;
  font-weight:700!important;
  transform:translateY(-50%)!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-list{
  counter-reset:fill-change-row!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-change-list .fill-change-row:not(:last-child)::after{
  content:""!important;
  position:absolute!important;
  left:27px!important;
  top:calc(50% + 16px)!important;
  bottom:calc(-50% + 16px)!important;
  border-left:1px dashed #DEE4EC!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-workflow-footer.show{
  background:#fff!important;
  border-top:1px solid #E5E6EB!important;
  box-shadow:0 -10px 28px rgba(31,35,41,.08)!important;
}

/* 工时填报第二步：列表独立滚动、统一工具栏与全屏模式 */
html body[data-current-page="fill2"]{overflow:auto!important}
html body[data-current-page="fill2"] .layout,
html body[data-current-page="fill2"] .main,
html body[data-current-page="fill2"] .content{height:auto!important;min-height:100vh!important;overflow:visible!important}
html body[data-current-page="fill2"] #page-fill2.show,
html body[data-current-page="fill2"] #page-fill2.show>#fill2-regular,
html body[data-current-page="fill2"] #page-fill2.show>#fill2-outsource{height:auto!important;min-height:0!important;overflow:visible!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell{position:relative!important;display:flex!important;flex-direction:column!important;min-height:calc(100vh - 330px)!important;height:calc(100vh - 330px)!important;margin-top:16px!important;padding:0!important;background:#fff!important;border-radius:8px!important;overflow:hidden!important;box-sizing:border-box!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell>.f2-simple-filter,
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell>.f2-filterbar{flex:0 0 auto!important;position:static!important;margin:0!important;padding:16px!important;min-height:72px!important;background:#fff!important;border-bottom:1px solid #E5E6EB!important;box-shadow:none!important;backdrop-filter:none!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell>.fill-layout{flex:1 1 auto!important;min-height:0!important;height:auto!important;margin:0!important;overflow:hidden!important;border:0!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill-main{display:flex!important;flex-direction:column!important;min-height:0!important;height:100%!important;overflow:hidden!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill-action-toolbar,
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .toolbar{position:static!important;flex:0 0 auto!important;justify-content:flex-start!important;gap:8px!important;flex-wrap:wrap!important;padding:16px!important;margin:0!important;box-shadow:none!important;border:0!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill-action-toolbar>.spacer,
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .toolbar>.spacer{display:none!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .tbl-wrap{flex:1 1 auto!important;min-height:0!important;height:auto!important;margin:0 16px 16px!important;overflow:hidden!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .tbl-scroll{height:100%!important;max-height:none!important;overflow:auto!important;overscroll-behavior:contain!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill-pagination{flex:0 0 auto!important;margin:0!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .selection-action-bar.show,
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell #f2-bbar-out.show{position:fixed!important;left:calc(var(--nav-width, 250px) + 16px)!important;right:16px!important;bottom:92px!important;z-index:650!important;display:flex!important;align-items:center!important;min-height:56px!important;padding:12px 16px!important;background:#EEF4FF!important;border:1px solid #AFC8FF!important;border-radius:8px!important;box-shadow:0 8px 22px rgba(31,35,41,.14)!important;color:var(--text-2)!important}
html body.fill2-list-fullscreen{overflow:hidden!important}
html body.fill2-list-fullscreen .fill-workflow-footer{display:none!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell.is-fullscreen{position:fixed!important;inset:0!important;z-index:1000!important;width:100vw!important;height:100vh!important;min-height:0!important;margin:0!important;padding:16px!important;border-radius:0!important;background:#F3F4F6!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell.is-fullscreen>.f2-simple-filter,
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell.is-fullscreen>.f2-filterbar{padding:16px!important;background:#fff!important;border-radius:8px 8px 0 0!important}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell.is-fullscreen>.fill-layout{background:#fff!important;border-radius:0 0 8px 8px!important}
.fill2-fullscreen-close{display:none!important;position:absolute!important;top:24px!important;right:24px!important;z-index:10!important;width:32px!important;height:32px!important;border:0!important;border-radius:50%!important;background:#F0F2F5!important;color:#4E5969!important;font-size:22px!important;line-height:1!important;cursor:pointer!important}
.fill2-list-shell.is-fullscreen .fill2-fullscreen-close{display:flex!important;align-items:center;justify-content:center}
html body[data-current-page="fill2"] #page-fill2.show .f2-columns-btn{width:40px!important;min-width:40px!important;height:32px!important;padding:0!important;justify-content:center!important}
html body[data-current-page="fill2"] #page-fill2.show .f2-columns-btn svg{width:16px!important;height:16px!important;margin:0!important}
html body[data-current-page="fill2"] #page-fill2.show .f2-project-head{display:flex!important;align-items:center!important;justify-content:center!important;gap:6px!important;font-weight:600!important}
html body[data-current-page="fill2"] #page-fill2.show .f2-project-select{width:16px!important;height:16px!important;accent-color:var(--accent)!important}
html body[data-current-page="fill2"] #page-fill2.show [data-proj].f2-project-selected{background:#EEF4FF!important}
html body[data-current-page="fill2"] #page-fill2.show .fill-action-toolbar,
html body[data-current-page="fill2"] #page-fill2.show .selection-action-bar{font-size:14px!important}
html body[data-current-page="fill2"] #page-fill2.show .selection-action-bar{padding-top:16px!important;padding-bottom:16px!important}
html body.fill2-list-fullscreen #page-fill2.show .fill2-list-shell.is-fullscreen .selection-action-bar.show,
html body.fill2-list-fullscreen #page-fill2.show .fill2-list-shell.is-fullscreen #f2-bbar-out.show{left:16px!important;right:16px!important;bottom:16px!important}
html body[data-current-page="fill2"] #page-fill2.show .status-chips{display:flex!important;align-items:center!important;gap:0!important;min-height:48px!important;padding:3px!important;background:#EEF2FA!important;border:1px solid #D8E0F0!important;border-radius:10px!important;box-sizing:border-box!important}
html body[data-current-page="fill2"] #page-fill2.show .status-chip{min-height:40px!important;padding:0 18px!important;border:0!important;border-radius:8px!important;background:transparent!important;color:var(--text-2)!important;font-size:14px!important;white-space:nowrap!important}
html body[data-current-page="fill2"] #page-fill2.show .status-chip.active{background:#1677FF!important;color:#fff!important;box-shadow:0 3px 8px rgba(22,119,255,.2)!important}

/* 全局表格表头保持单行，长字段由表格横向滚动承载。 */
html body .tbl-wrap table thead th,
html body .task-designer-table-wrap table thead th{
  white-space:nowrap!important;
}

/* 任务管理：左侧工时分摊卡片按内容收紧，底部留白固定为 16px。 */
@media(min-width:1181px){
  html body[data-current-page="task"] .task-designer-overview{
    align-self:start!important;
    height:auto!important;
    min-height:0!important;
    padding-bottom:16px!important;
  }
}

/* ── Fill2 first-step visual alignment (2026-08-26) ──
   Keep the confirmation view compact, centered, and on one white canvas. */
html body[data-current-page="fill2"] #page-fill2.show{
  width:min(1440px,calc(100% - 48px))!important;
  max-width:1440px!important;
  margin:0 auto!important;
  padding:0!important;
  color:var(--text)!important;
  font-size:14px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>.page-head,
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps,
html body[data-current-page="fill2"] #page-fill2.show>#fill-step-one,
html body[data-current-page="fill2"] #page-fill2.show>#fill2-regular,
html body[data-current-page="fill2"] #page-fill2.show>#fill2-outsource,
html body[data-current-page="fill2"] #page-fill2.show>#fill2-dispatch,
html body[data-current-page="fill2"] #page-fill2.show>#fill-step-three{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}
html body[data-current-page="fill2"] #page-fill2.show>.page-head h2{
  font-size:14px!important;
  line-height:22px!important;
  font-weight:600!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps{
  height:64px!important;
  min-height:64px!important;
  margin-bottom:12px!important;
  border:0!important;
  border-radius:8px!important;
  background:#fff!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step{
  height:64px!important;
  min-height:64px!important;
  padding:0 16px!important;
  font-size:14px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step span,
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step b{
  font-size:14px!important;
  line-height:20px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step span{color:var(--text-3)!important}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step span::after{
  content:"";
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-step-one{
  margin-bottom:12px!important;
  padding:12px!important;
  border:0!important;
  border-radius:8px!important;
  background:#fff!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-confirm-layout{
  grid-template-columns:minmax(0,1.45fr) minmax(360px,.95fr)!important;
  gap:12px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-confirm-panel,
html body[data-current-page="fill2"] #page-fill2.show .fill-change-list{
  background:#fff!important;
  border:1px solid #E5E6EB!important;
  border-radius:8px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-confirm-panel{
  padding:14px!important;
}
/* Left and right section labels use the same task-node heading treatment. */
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-preview{
  margin:0!important;
  padding:0 0 12px!important;
  border:0!important;
  border-radius:0!important;
  border-bottom:1px solid #E5E6EB!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-preview-head{
  position:relative!important;
  min-height:28px!important;
  margin:0 0 10px!important;
  padding-left:16px!important;
  font-size:14px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-preview-head::before{
  content:"";
  position:absolute;
  left:0;
  top:50%;
  width:4px;
  height:14px;
  border-radius:2px;
  background:#1677FF;
  transform:translateY(-50%);
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-preview-head b,
html body[data-current-page="fill2"] #page-fill2.show .fill-change-head{
  font-size:14px!important;
  line-height:22px!important;
  font-weight:600!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-preview-head .count{display:inline-flex!important;font-size:14px!important}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:6px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chip{
  width:100%!important;
  max-width:none!important;
  box-sizing:border-box!important;
  border:1px solid #E5E6EB!important;
  border-radius:6px!important;
  background:#fff!important;
  color:#1D2129!important;
  font-weight:400!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chip:hover{
  border-color:#C9CDD4!important;
  background:#F7F8FA!important;
  font-size:14px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-more{
  font-size:14px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-view-all{
  height:24px!important;
  padding:0!important;
  background:transparent!important;
  color:var(--accent)!important;
  font-size:14px!important;
  font-weight:500!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-view-all:hover{
  background:transparent!important;
  color:var(--accent-hover)!important;
  text-decoration:underline;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-project-adjust-row{
  margin-top:12px!important;
  padding-top:12px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-project-adjust-row .btn,
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row,
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row time,
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row b,
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row .pill{
  font-size:14px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-head{
  height:44px!important;
  padding-left:28px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-head::before{
  left:16px!important;
  height:14px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row{
  min-height:52px!important;
  padding-left:64px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row::before{
  width:32px!important;
  height:32px!important;
  font-size:14px!important;
}
@media(max-width:900px){
  html body[data-current-page="fill2"] #page-fill2.show{width:calc(100% - 24px)!important}
  html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* ── Tab treatment aligned with the supplied references (2026-08-26) ── */
/* Fill2 status tabs use a compact segmented control. */
html body[data-current-page="fill2"] #page-fill2.show .status-chips{
  min-height:48px!important;
  padding:3px!important;
  border:1px solid #D8E0F0!important;
  border-radius:10px!important;
  background:#EEF2FA!important;
}
html body[data-current-page="fill2"] #page-fill2.show .status-chip{
  min-width:96px!important;
  height:40px!important;
  padding:0 18px!important;
  border:0!important;
  border-radius:8px!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:500!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .status-chip.active{
  background:#1677FF!important;
  color:#fff!important;
  font-weight:600!important;
  box-shadow:0 3px 8px rgba(22,119,255,.2)!important;
}
/* Fill-review tabs show only the label and count, as in the reference. */
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-label,
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tab small{
  display:none!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tabs{
  gap:42px!important;
  padding-left:0!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tab{
  height:40px!important;
  min-height:40px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:500!important;
  box-shadow:none!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tab.active{
  color:var(--text)!important;
  font-weight:600!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tab.active::after{
  left:0!important;
  bottom:-3px!important;
  width:28px!important;
  height:3px!important;
  background:var(--accent)!important;
}
@media(max-width:760px){
  html body[data-current-page="fill2"] #page-fill2.show .status-chip{min-width:76px!important;padding:0 12px!important}
  html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tabs{gap:24px!important}
}

/* ── Dashboard / review tabs aligned with the latest references (2026-08-26) ── */
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip{
  width:320px!important;
  min-width:320px!important;
  padding:20px 16px 24px!important;
  gap:4px!important;
  background:#fff!important;
  border:0!important;
  border-right:1px solid #E5E6EB!important;
  border-radius:8px 0 0 8px!important;
  box-shadow:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts{
  position:relative!important;
  width:100%!important;
  height:44px!important;
  min-height:44px!important;
  padding:0 16px!important;
  justify-content:flex-start!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:400!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts:hover{
  background:#F7F9FC!important;
  color:var(--text)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts.active{
  background:transparent!important;
  color:var(--text)!important;
  font-weight:600!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts.active::after{
  content:""!important;
  position:absolute!important;
  right:-17px!important;
  top:10px!important;
  left:auto!important;
  bottom:auto!important;
  width:2px!important;
  height:24px!important;
  border-radius:2px 0 0 2px!important;
  background:var(--accent)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip + div[style*="上方切换"]{
  display:none!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tabs{
  display:flex!important;
  align-items:center!important;
  gap:42px!important;
  min-height:56px!important;
  margin:0!important;
  padding:0 0 1px!important;
  border:0!important;
  border-bottom:1px solid #E5E6EB!important;
  background:transparent!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tab{
  position:relative!important;
  height:48px!important;
  min-height:48px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:400!important;
  box-shadow:none!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tab:hover{
  background:transparent!important;
  color:var(--text)!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tab.active{
  color:var(--text)!important;
  font-weight:600!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show .fill-review-status-tab.active::after{
  content:""!important;
  position:absolute!important;
  left:0!important;
  right:auto!important;
  bottom:-2px!important;
  width:28px!important;
  height:3px!important;
  border-radius:999px!important;
  background:var(--accent)!important;
}
@media(max-width:900px){
  html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip{width:260px!important;min-width:260px!important}
}

/* Final dashboard tab override: tabs sit directly on the page surface. */
html body #page-dashboard.show > .tab-strip,
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip{
  width:280px!important;
  min-width:280px!important;
  padding:20px 0 24px!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
html body #page-dashboard.show > .tab-strip .ts,
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts{
  width:100%!important;
  height:44px!important;
  min-height:44px!important;
  padding:0 16px!important;
  background:transparent!important;
  border:0!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:400!important;
}
html body #page-dashboard.show > .tab-strip .ts:hover,
html body #page-dashboard.show > .tab-strip .ts.active,
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts:hover,
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts.active{
  background:transparent!important;
  color:var(--text)!important;
}
html body #page-dashboard.show > .tab-strip .ts.active::after,
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts.active::after{
  display:none!important;
  content:none!important;
}

/* Dashboard layout source of truth: the side tabs and the active table share
   the same horizontal workspace; the side rail must not determine row height. */
html body #page-dashboard.show,
html body[data-current-page="dashboard"] #page-dashboard.show{
  display:grid!important;
  grid-template-columns:280px minmax(0,1fr)!important;
  grid-template-rows:auto auto minmax(420px,1fr)!important;
  align-items:stretch!important;
  min-height:calc(100vh - 108px)!important;
}
html body #page-dashboard.show > .page-head,
html body[data-current-page="dashboard"] #page-dashboard.show > .page-head{
  grid-column:1 / -1!important;
  grid-row:1!important;
}
html body #page-dashboard.show > .card,
html body[data-current-page="dashboard"] #page-dashboard.show > .card{
  grid-column:2!important;
  grid-row:2!important;
  min-width:0!important;
  margin:0!important;
}
html body #page-dashboard.show > .tab-strip,
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip{
  grid-column:1!important;
  grid-row:2 / 4!important;
  width:auto!important;
  min-width:0!important;
  min-height:0!important;
  height:auto!important;
  margin:0!important;
  padding:20px 0 24px!important;
  align-self:stretch!important;
}
html body #page-dashboard.show > .tab-strip + div[style*="上方切换"],
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip + div[style*="上方切换"]{
  display:none!important;
}
html body #page-dashboard.show > #sum-view-proj,
html body #page-dashboard.show > #sum-view-dept,
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-proj,
html body[data-current-page="dashboard"] #page-dashboard.show > #sum-view-dept{
  grid-column:2!important;
  grid-row:3!important;
  min-width:0!important;
  min-height:420px!important;
  margin:0!important;
}
/* Keep the active state visible while the panel switches. */
html body #page-dashboard.show > .tab-strip .ts.active::after,
html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip .ts.active::after{
  display:block!important;
  content:""!important;
  right:-1px!important;
  left:auto!important;
  top:10px!important;
  bottom:auto!important;
  width:2px!important;
  height:24px!important;
  background:var(--accent)!important;
}

/* ── Fill2 first-step flat surface (2026-08-26) ── */
/* The second-step shell must not leave an empty white card under step one. */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill2-regular,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill2-outsource,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill2-dispatch{
  display:none!important;
}
/* Remove the decorative surfaces and separators called out in the references. */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill-step-one,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-confirm-panel,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-change-list,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-inherit-preview{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-inherit-preview{
  padding-bottom:0!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-inherit-preview-head{
  margin-bottom:10px!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-project-adjust-row,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-change-head,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-change-row{
  border-top:0!important;
  border-bottom:0!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-change-row:not(:last-child)::after{
  display:none!important;
}

/* Completed task rows are the entry point to the matching review details. */
/* Fill2 first step: keep the page canvas gray and limit white to the two content cards. */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill-step-one{
  height:auto!important;
  min-height:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-confirm-panel,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-change-list{
  height:auto!important;
  min-height:0!important;
  align-self:stretch!important;
  background:#fff!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill2-regular,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill2-outsource,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill2-dispatch{
  display:none!important;
  height:0!important;
  min-height:0!important;
  background:transparent!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill-workflow-steps{
  background:transparent!important;
  border-color:transparent!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill-workflow-steps .fill-step,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill-workflow-steps .fill-step.visited:not(.active):not(.done){
  background:transparent!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-project-adjust-row{
  justify-content:flex-end!important;
  width:100%!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-status-tabs{
  display:flex!important;
  align-items:center!important;
  min-height:64px!important;
  padding:12px 16px 0!important;
  background:transparent!important;
  border:0!important;
  box-sizing:border-box!important;
}
/* Keep the status tabs below the global top bar while the table continues to
   scroll. The floating table header is positioned directly below this row. */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-two-active #fill2-status-tabs{
  position:sticky!important;
  top:56px!important;
  z-index:50!important;
  background:#fff!important;
  box-shadow:0 1px 0 var(--border)!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-status-tabs .status-chips{
  display:flex!important;
  align-items:stretch!important;
  gap:32px!important;
  width:100%!important;
  max-width:none!important;
  height:40px!important;
  min-height:40px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-status-tabs .status-chip{
  position:relative!important;
  min-width:0!important;
  width:auto!important;
  height:40px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:500!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-status-tabs .status-chip.active{
  color:var(--text)!important;
  font-weight:600!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-status-tabs .status-chip.active::after{
  content:""!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:-1px!important;
  height:3px!important;
  border-radius:3px 3px 0 0!important;
  background:var(--accent)!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-status-tabs{
  min-height:56px!important;
  padding:16px 16px 0!important;
  border-bottom:1px solid var(--border)!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill2-table-right-actions{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  margin-left:auto!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill-action-toolbar{
  justify-content:flex-start!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell{
  display:block!important;
  width:100%!important;
  min-height:0!important;
  height:auto!important;
  overflow:visible!important;
  background:#fff!important;
}
html body[data-current-page="fill2"] #page-fill2.show > #fill2-regular.active-panel,
html body[data-current-page="fill2"] #page-fill2.show > #fill2-outsource.active-panel,
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell > .fill-layout,
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill-main{
  background:#fff!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell>.fill-layout,
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill-main,
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .tbl-wrap,
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .tbl-scroll{
  display:block!important;
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .tbl-wrap{
  width:100%!important;
  margin:0!important;
  box-sizing:border-box!important;
  background:#fff!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  overscroll-behavior-y:none!important;
}
html:has(body[data-current-page="fill2"]),
html body[data-current-page="fill2"]{
  overflow-x:hidden!important;
  overflow-y:auto!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .tbl-scroll{
  overflow-x:auto!important;
  overflow-y:hidden!important;
  overscroll-behavior-y:none!important;
}
/* 行选择与项目列选择使用同一层级的选中背景。 */
html body[data-current-page="fill2"] #page-fill2.show tbody tr.row-sel,
html body[data-current-page="fill2"] #page-fill2.show tbody tr.row-sel > td,
html body[data-current-page="fill2"] #page-fill2.show [data-proj].f2-project-selected{
  background:#EEF4FF!important;
}
html body[data-current-page="fill2"] #page-fill2.show tbody tr.row-sel > td.col-badge,
html body[data-current-page="fill2"] #page-fill2.show tbody tr.row-sel > td.col-sum{
  background:#EEF4FF!important;
}
/* 第三步是独立页面内容，不把第二步列表继续留在上方。 */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active > #fill2-regular,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active > #fill2-outsource,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active > #fill2-dispatch{
  display:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active > #fill-step-three{
  display:block!important;
  width:100%!important;
  max-width:none!important;
  min-height:calc(100vh - 160px)!important;
  margin:0!important;
  padding:0 16px 120px!important;
  box-sizing:border-box!important;
  background:transparent!important;
  scroll-margin-top:76px!important;
}
html body[data-current-page="fill2"] #page-fill2.show > #fill-workflow-steps,
html body[data-current-page="fill2"] #page-fill2.show > #fill-workflow-steps .fill-step{
  background:transparent!important;
  border-color:transparent!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show #fill2-fullscreen-btn{
  display:inline-flex!important;
  visibility:visible!important;
  opacity:1!important;
}
/* The first-step wrapper must not paint an extra white canvas below the cards. */
html body[data-current-page="fill2"] #page-fill2.show > #fill-step-one{
  height:auto!important;
  min-height:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active > #fill2-list-shell{
  display:none!important;
  height:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  background:transparent!important;
}
html body[data-current-page="task"] #task-tree-tbl tbody tr.task-completed-row{
  cursor:pointer;
}
html body[data-current-page="task"] #task-tree-tbl tbody tr.task-completed-row:hover td{
  background:#F0F5FF!important;
}

/* 发起工时分摊：保留原表单内容，改为右侧抽屉交互 */
html body[data-current-page="task"] #openfill-modal{
  align-items:stretch!important;
  justify-content:flex-end!important;
  padding:0!important;
}
html body[data-current-page="task"] #openfill-modal .modal{
  width:min(780px,92vw)!important;
  max-width:none!important;
  height:100vh!important;
  max-height:none!important;
  margin:0!important;
  border-radius:16px 0 0 16px!important;
  animation:taskDrawerIn .24s cubic-bezier(.4,0,.2,1)!important;
}
@keyframes taskDrawerIn{from{opacity:.85;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}

/* 任务管理页的准入面板继续使用右侧抽屉 */
html body[data-current-page="task"] #task-admission-modal{
  align-items:stretch!important;
  justify-content:flex-end!important;
  padding:0!important;
}
html body[data-current-page="task"] #task-admission-modal .modal{
  width:min(780px,92vw)!important;
  max-width:none!important;
  height:100vh!important;
  max-height:none!important;
  margin:0!important;
  border-radius:16px 0 0 16px!important;
  animation:taskDrawerIn .24s cubic-bezier(.4,0,.2,1)!important;
}

/* 催办使用居中弹框：通知编排与二次确认都不再侧滑 */
html body[data-current-page="task"] #notify-modal,
html body[data-current-page="task"] #confirm-modal{
  align-items:center!important;
  justify-content:center!important;
  padding:20px!important;
}
html body[data-current-page="task"] #notify-modal .modal{
  width:min(960px,calc(100vw - 32px))!important;
  max-width:100%!important;
  height:auto!important;
  max-height:90vh!important;
  margin:auto!important;
  border-radius:16px!important;
  animation:slideUp .24s cubic-bezier(.4,0,.2,1)!important;
}
html body[data-current-page="task"] #confirm-modal .modal{
  width:min(430px,calc(100vw - 32px))!important;
  max-width:100%!important;
  height:auto!important;
  max-height:90vh!important;
  margin:auto!important;
  border-radius:16px!important;
  animation:slideUp .24s cubic-bezier(.4,0,.2,1)!important;
}
html body[data-current-page="task"] #task-designer-modal{
  display:none;
  place-items:initial;
  align-items:stretch!important;
  justify-content:flex-end!important;
  padding:0!important;
}
html body[data-current-page="task"] #task-designer-modal.show{display:flex!important}
html body[data-current-page="task"] #task-designer-modal .task-designer-dialog{
  width:min(820px,92vw)!important;
  max-height:none!important;
  height:100vh!important;
  margin:0!important;
  border-radius:16px 0 0 16px!important;
  animation:taskDrawerIn .24s cubic-bezier(.4,0,.2,1)!important;
}

/* Final dashboard tab override: match the horizontal tab row used by the
   fill-review page. Keep this at the end so legacy SideTabs rules cannot win. */
html body[data-current-page="dashboard"] #page-dashboard.show{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  grid-template-rows:auto auto auto auto minmax(420px,1fr)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip{
  grid-column:1!important;
  grid-row:2!important;
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:24px!important;
  width:auto!important;
  height:48px!important;
  min-height:48px!important;
  margin:0 16px!important;
  padding:0!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  border-radius:0!important;
  box-shadow:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:auto!important;
  height:48px!important;
  min-height:48px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:400!important;
  position:relative!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip>#sum-tab-detail{
  display:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active{
  color:var(--accent)!important;
  font-weight:600!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip .ts.active::after{
  content:''!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  width:auto!important;
  height:3px!important;
  border-radius:3px 3px 0 0!important;
  background:var(--accent)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.card{
  grid-column:1!important;
  grid-row:3!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>.tab-strip+div[style*="上方切换"]{
  grid-column:1!important;
  grid-row:4!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>:is(#sum-view-detail,#sum-view-proj,#sum-view-dept){
  grid-column:1!important;
  grid-row:5!important;
}

/* Fill step-one interaction and alignment refinement (2026-08-27). */
html body[data-current-page="fill2"] .main>.content{
  padding-left:16px!important;
  padding-right:16px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>.page-head{
  width:100%!important;
  max-width:none!important;
  margin:0 0 16px!important;
  padding:0!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps{
  width:100%!important;
  max-width:none!important;
  margin:0 auto 16px!important;
  padding:0!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step{
  grid-template-columns:52px minmax(0,max-content)!important;
  justify-content:center!important;
  align-content:center!important;
  padding:0 24px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step span{
  align-self:center!important;
  padding-right:12px!important;
  background:var(--bg)!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step:not(:last-child)::after{
  top:50%!important;
  transform:translateY(-50%)!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  align-items:stretch!important;
  gap:8px!important;
  width:100%!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chip{
  position:relative!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  max-width:none!important;
  min-height:30px!important;
  padding:4px 24px 4px 10px!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chip-label{
  display:block!important;
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chip-remove{
  position:absolute!important;
  top:-6px!important;
  right:-6px!important;
  z-index:3!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:18px!important;
  height:18px!important;
  padding:0!important;
  border:1px solid #fff!important;
  border-radius:50%!important;
  background:#4E5969!important;
  color:#fff!important;
  font:600 14px/1 system-ui,sans-serif!important;
  cursor:pointer!important;
  opacity:0!important;
  transform:scale(.82)!important;
  transition:opacity .16s ease,transform .16s ease,background .16s ease!important;
  pointer-events:none!important;
  box-shadow:0 2px 6px rgba(31,35,41,.18)!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chip:hover .fill-inherit-chip-remove,
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chip:focus-within .fill-inherit-chip-remove{
  opacity:1!important;
  transform:scale(1)!important;
  pointer-events:auto!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chip-remove:hover{
  background:#F53F3F!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-project-adjust-row{
  flex-direction:column!important;
  align-items:flex-end!important;
  justify-content:flex-start!important;
  gap:12px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-project-adjust-row .fill-inherit-view-all{
  margin:0!important;
  align-self:flex-end!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips>.fill-inherit-view-all{
  width:max-content!important;
  margin:0!important;
  grid-column:4!important;
  grid-row:var(--fill-action-row-4)!important;
  justify-self:end!important;
  align-self:center!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row{
  padding-left:16px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row::before,
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row::after{
  display:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row{
  min-height:56px!important;
  border-bottom:0!important;
  font-size:13px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row time{
  color:var(--text-3)!important;
  font-family:inherit!important;
  font-size:12px!important;
  line-height:20px!important;
  font-weight:400!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row b{
  color:var(--text)!important;
  font-size:13px!important;
  line-height:22px!important;
  font-weight:600!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-change-row .pill{
  font-size:12px!important;
  line-height:20px!important;
  font-weight:600!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-one-active .fill-change-list .fill-change-row:not(:last-child)::after{
  content:""!important;
  position:absolute!important;
  display:block!important;
  left:16px!important;
  right:16px!important;
  top:auto!important;
  bottom:0!important;
  width:auto!important;
  height:1px!important;
  border:0!important;
  background:#E5E6EB!important;
}
/* Fill workflow rail: balanced gutters, stronger connector, compact nodes. */
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps{
  position:relative!important;
  padding:0 16px!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps::before{
  content:""!important;
  position:absolute!important;
  left:calc(16.6667% + 8px)!important;
  right:calc(16.6667% + 8px)!important;
  top:50%!important;
  height:1px!important;
  background:#A9AFB8!important;
  transform:translateY(-50%)!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step{
  grid-template-columns:36px minmax(0,max-content)!important;
  column-gap:12px!important;
  padding:0 16px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step:not(:last-child)::after{
  display:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step i{
  width:36px!important;
  height:36px!important;
  min-width:36px!important;
  font-size:15px!important;
  line-height:20px!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step.active i{
  box-shadow:0 0 0 4px rgba(22,119,255,.12)!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-workflow-steps .fill-step span{
  padding:0 10px 0 0!important;
  background:var(--bg)!important;
  box-shadow:0 0 0 7px var(--bg)!important;
}
/* FINAL project-list behavior: page scroll, 20-row pagination, sticky header. */
html body[data-current-page="deptprojects"]{
  overflow-x:hidden!important;
  overflow-y:auto!important;
}
html body[data-current-page="deptprojects"] .layout{
  height:auto!important;
  min-height:100vh!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="deptprojects"] .main,
html body[data-current-page="deptprojects"] .main>.content,
html body[data-current-page="deptprojects"] #page-deptprojects.show,
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>.roster-sync,
html body[data-current-page="deptprojects"] #page-deptprojects.show button[onclick*="openAddProjModal"]{
  display:none!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show>#dpm-tab-project>.tbl-scroll{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-x:visible!important;
  overflow-y:visible!important;
  scrollbar-gutter:auto!important;
}
html body[data-current-page="deptprojects"] #dpm-project-table thead th{
  position:sticky!important;
  top:56px!important;
  z-index:40!important;
  background:var(--side-2)!important;
  box-shadow:inset 0 -1px 0 var(--border),0 4px 8px rgba(31,35,41,.08)!important;
}
html body[data-current-page="deptprojects"] .dpm-pagination{
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  min-height:56px!important;
  padding:10px 16px!important;
  border-top:1px solid var(--border)!important;
  background:#fff!important;
  color:var(--text-3)!important;
  font-size:12px!important;
  box-sizing:border-box!important;
}

/* LAST: page-local month selector overrides all legacy page layout rules. */
html body[data-page-period-local="1"][data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card>.card-body>.dashboard-period-filter:not(.spacer){
  display:none!important;
}
html body[data-page-period-local="1"] .topbar>#mpicker{display:none!important}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period{
  position:relative!important;
  min-height:52px!important;
  padding-right:220px!important;
  box-sizing:border-box!important;
}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker{
  display:inline-block!important;
  position:absolute!important;
  top:0!important;
  right:0!important;
  margin:0!important;
  z-index:40!important;
}
html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker>.mpicker-btn{
  min-width:198px!important;
  height:40px!important;
  justify-content:center!important;
}
html body[data-page-period-local="1"][data-current-page="dashboard"] #page-dashboard.show>#sum-global-filter-card .dashboard-period-filter{
  display:none!important;
}
@media(max-width:760px){
  html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period{
    min-height:0!important;
    padding-right:0!important;
  }
  html body[data-page-period-local="1"] .main>.content>.page.show>.page-head.page-head-with-period>#mpicker{
    position:relative!important;
    top:auto!important;
    right:auto!important;
    margin-top:10px!important;
  }
}

/* The source header stays in normal table flow. A single measured floating
   copy handles page-level vertical pinning, avoiding two sticky layers that
   can overlap the first data row. */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-two-active #fill2-tbl thead th{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
  background:#F5F6F7!important;
  box-shadow:inset 0 -1px 0 var(--border)!important;
}
/* Keep the three frozen columns on exact border-box widths. Their sticky left
   offsets (0 / 36 / 90) then match the header and every body row. */
html body[data-current-page="fill2"] #page-fill2.show #fill2-tbl :is(th,td).sc0{
  width:36px!important;
  min-width:36px!important;
  max-width:36px!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show #fill2-tbl :is(th,td).sc1{
  width:54px!important;
  min-width:54px!important;
  max-width:54px!important;
  padding-left:10px!important;
  padding-right:10px!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show #fill2-tbl :is(th,td).sc2{
  width:var(--person-column-width,124px)!important;
  min-width:var(--person-column-width,124px)!important;
  max-width:var(--person-column-width,124px)!important;
  padding-left:10px!important;
  padding-right:10px!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-two-active #fill2-tbl thead th.sc0,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-two-active #fill2-tbl thead th.sc1,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-two-active #fill2-tbl thead th.sc2,
html body[data-current-page="fill2"] #page-fill2.show.fill-step-two-active #fill2-tbl thead th.col-badge{
  position:sticky!important;
  top:auto!important;
  z-index:16!important;
}
.fill2-page-sticky-head{
  position:fixed;
  z-index:49;
  display:none;
  height:40px;
  overflow:hidden;
  background:#F5F6F7;
  box-shadow:0 4px 10px rgba(31,35,41,.10),inset 0 -1px 0 var(--border);
  pointer-events:auto;
  box-sizing:border-box;
}
.fill2-page-sticky-head input,
.fill2-page-sticky-head label{
  pointer-events:auto;
  cursor:pointer;
}
.fill2-page-sticky-head.show{display:block}
.fill2-page-sticky-viewport{
  width:100%;
  height:40px;
  overflow:hidden;
}
.fill2-page-sticky-head table{
  height:40px;
  table-layout:fixed;
  border-collapse:collapse;
  border-spacing:0;
  background:#F5F6F7;
}
.fill2-page-sticky-head thead th{
  height:40px!important;
  padding:0 16px!important;
  border:0!important;
  border-bottom:1px solid var(--border)!important;
  background:#F5F6F7!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:500!important;
  box-sizing:border-box!important;
  white-space:nowrap;
}
.fill2-page-sticky-head thead th.sc0{
  width:36px!important;
  min-width:36px!important;
  max-width:36px!important;
  padding:0!important;
}
.fill2-page-sticky-head thead th.sc1{
  width:54px!important;
  min-width:54px!important;
  max-width:54px!important;
  padding:0 10px!important;
}
.fill2-page-sticky-head thead th.sc2{
  width:var(--person-column-width,124px)!important;
  min-width:var(--person-column-width,124px)!important;
  max-width:var(--person-column-width,124px)!important;
  padding:0 10px!important;
}
.fill2-page-sticky-head thead th.sc0,
.fill2-page-sticky-head thead th.sc1,
.fill2-page-sticky-head thead th.sc2,
.fill2-page-sticky-head thead th.col-badge{
  z-index:2!important;
  background:#F5F6F7!important;
}

/* Reporter fill table: 16px checkbox gutter and a stable HC footer label. */
html body[data-current-page="fill2"] #page-fill2.show #fill2-tbl :is(th,td).sc0{
  width:48px!important;
  min-width:48px!important;
  max-width:48px!important;
  padding-left:16px!important;
  padding-right:8px!important;
  text-align:left!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show #fill2-tbl :is(th,td).sc1{left:48px!important}
html body[data-current-page="fill2"] #page-fill2.show #fill2-tbl :is(th,td).sc2{left:102px!important}
.fill2-page-sticky-head thead th.sc0{
  width:48px!important;
  min-width:48px!important;
  max-width:48px!important;
  padding-left:16px!important;
  padding-right:8px!important;
  text-align:left!important;
}
.fill2-page-sticky-head thead th.sc1{left:48px!important}
.fill2-page-sticky-head thead th.sc2{left:102px!important}
html body[data-current-page="fill2"] #page-fill2.show #fill2-tbl tfoot .fill2-hc-title{
  position:sticky!important;
  left:0!important;
  z-index:30!important;
  width:182px!important;
  min-width:182px!important;
  max-width:182px!important;
  padding:0 8px 0 16px!important;
  box-sizing:border-box!important;
  background:#F5F7FA!important;
  color:var(--text-2)!important;
  white-space:nowrap!important;
  box-shadow:8px 0 14px -10px rgba(31,35,41,.42)!important;
}
html body[data-current-page="fill2"] #page-fill2.show #fill2-tbl tfoot .fill2-hc-title span{
  color:var(--text-3)!important;
  font-size:10.5px!important;
  font-weight:400!important;
}
html body[data-current-page="fill2"] #page-fill2.show #fill2-tbl tfoot .fill2-hc-spacer{background:#F5F7FA!important}

/* Fill2 filter dropdowns share one trigger, menu, and selected-state language. */
html body[data-current-page="fill2"] #page-fill2.show #fill2-filterbar{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr)) auto!important;
  gap:8px!important;
  align-items:center!important;
  overflow:visible!important;
}
html body[data-current-page="fill2"] #page-fill2.show #fill2-filterbar>.srch{
  width:100%!important;
  min-width:0!important;
  flex:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced{
  display:contents!important;
  overflow:visible!important;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-select,
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-select[data-type="project"],
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-select[data-type="status"]{
  position:relative;
  width:100%;
  min-width:0;
  flex:none;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-select.open{
  z-index:260;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced select.fill2-native-select{
  display:none!important;
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  margin:0!important;
  padding:0!important;
  opacity:0!important;
  pointer-events:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-trigger{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:16px!important;
  width:100%!important;
  height:34px!important;
  padding:0 14px!important;
  border:1px solid #E5E6EB!important;
  border-radius:8px!important;
  background:#F7F8FA!important;
  color:#1F2329!important;
  box-shadow:none!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:400!important;
  text-align:left!important;
  white-space:nowrap!important;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-trigger:hover{
  border-color:#C9CDD4!important;
  background:#F7F8FA!important;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-select.open .fill2-unified-trigger{
  border-color:#1677FF!important;
  background:#fff!important;
  box-shadow:0 0 0 2px rgba(22,119,255,.10)!important;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-value{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-trigger svg{
  width:14px!important;
  height:14px!important;
  flex:0 0 14px!important;
  fill:none!important;
  stroke:#646A73!important;
  stroke-width:2!important;
  stroke-linecap:round!important;
  stroke-linejoin:round!important;
  transition:transform .16s ease;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-select.open .fill2-unified-trigger svg{
  transform:rotate(180deg);
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-menu{
  display:none;
  position:absolute;
  top:calc(100% + 8px);
  left:0;
  z-index:261;
  width:max-content;
  min-width:100%;
  max-width:340px;
  max-height:320px;
  overflow:auto;
  padding:6px;
  border:1px solid #E5E6EB;
  border-radius:8px;
  background:#fff;
  box-shadow:0 8px 24px rgba(31,35,41,.14);
  box-sizing:border-box;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-select.open .fill2-unified-menu{
  display:block;
  animation:fadeUp 150ms ease;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-option{
  display:flex;
  align-items:center;
  gap:6px;
  width:100%;
  min-width:0;
  height:40px;
  padding:0 12px;
  border:0;
  border-radius:6px;
  background:transparent;
  color:#1F2329;
  font:inherit;
  font-size:14px;
  line-height:22px;
  text-align:left;
  white-space:nowrap;
  cursor:pointer;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-option:hover{
  background:#F5F6F7;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-option.selected{
  background:#E8F1FF;
  color:#1677FF;
  font-weight:500;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-option:focus-visible{
  outline:2px solid rgba(22,119,255,.35);
  outline-offset:-2px;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-node{
  width:12px;
  flex:0 0 12px;
  color:#646A73;
  font-size:10px;
  line-height:1;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-option-label{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-group{
  display:flex;
  align-items:center;
  gap:6px;
  min-height:32px;
  padding:6px 12px 2px;
  color:#8F959E;
  font-size:12px;
  line-height:18px;
  font-weight:500;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-group span{
  font-size:9px;
}
html body[data-current-page="fill2"] #page-fill2.show #f2-advanced .fill2-unified-option.grouped{
  padding-left:30px;
}
@media(max-width:900px){
  html body[data-current-page="fill2"] #page-fill2.show #fill2-filterbar{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media(max-width:760px){
  html body[data-current-page="fill2"] #page-fill2.show #fill2-filterbar{
    grid-template-columns:minmax(0,1fr)!important;
  }
}

@media(max-width:1100px){
  html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }
  html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips>.fill-inherit-view-all{
    grid-column:3!important;
    grid-row:var(--fill-action-row-3)!important;
  }
}
@media(max-width:760px){
  html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  html body[data-current-page="fill2"] #page-fill2.show .fill-inherit-chips>.fill-inherit-view-all{
    grid-column:2!important;
    grid-row:var(--fill-action-row-2)!important;
  }
}

/* Final summary-page boundary: keep exactly one 16px gutter from .content. */
html body[data-current-page="summary"] .main>.content>#page-summary.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
}

/* Final fill-review boundary: keep the page gutter in .content only. */
html body[data-current-page="fill2"] .main>.content>#page-fill2.show{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-left:0!important;
  padding-right:0!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show>#fill-step-one{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}

/* 人员清单：部门树级联筛选 */
#page-roster .roster-page-head{margin-top:0}
.roster-dept-tree-select{position:relative;flex:0 0 auto}
.roster-dept-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:18px;min-width:166px;text-align:left;cursor:pointer}
.roster-dept-trigger svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;flex-shrink:0}
.roster-dept-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:80;width:260px;max-height:360px;overflow:auto;padding:6px;background:#fff;border:1px solid var(--border);border-radius:9px;box-shadow:0 10px 24px rgba(31,35,41,.14)}
.roster-dept-option,.roster-dept-expand{border:0;background:transparent;font:inherit;cursor:pointer;color:var(--text-2)}
.roster-dept-option{display:block;width:calc(100% - 22px);padding:7px 8px;border-radius:6px;text-align:left;font-size:12.5px}
.roster-dept-option:hover,.roster-dept-option.selected{background:var(--accent-soft2);color:var(--accent);font-weight:600}
.roster-dept-all{width:100%;margin-bottom:3px}
.roster-dept-node{display:flex;flex-wrap:wrap;align-items:center}
.roster-dept-expand{width:22px;height:28px;padding:0;color:var(--text-3);font-size:14px}
.roster-dept-expand:disabled{cursor:default;color:transparent}
.roster-dept-children{width:100%;padding-left:18px}

/* 任务管理：按验收稿收紧页面顶部留白，并明确为只读视图 */
html body[data-current-page="task"] .main>.content{padding-top:72px!important}
html body[data-current-page="task"] #page-task .task-designer-readonly-label{margin-left:auto;color:var(--text-3);font-size:13px}
html body[data-current-page="task"] #page-task .task-designer-tabs button,
html body[data-current-page="task"] #page-task .task-designer-batch-remind,
html body[data-current-page="task"] #page-task .task-designer-remind-check{cursor:pointer}

/* 工时填报：当前周期提示与动态标题 */
#page-fill2 .fill2-period-notice{display:flex;align-items:center;gap:8px;margin:10px 0 12px;padding:8px 12px;min-height:36px;border-radius:8px;box-shadow:none}
#page-fill2 .fill2-period-notice b{font-size:12px;color:var(--accent)}
#page-fill2 .fill2-period-notice span{font-size:12px;color:var(--text-2)}

/* 工时填报：人员类型 Tab 与项目调整主入口 */
#page-fill2 .fill2-person-tabs{display:flex;align-items:center;gap:16px;min-height:48px;padding:0 16px;background:#fff;border-bottom:0}
#page-fill2 .fill2-person-tabs button{position:relative;height:48px;padding:0 4px;border:0;background:transparent;color:var(--text-2);font:inherit;font-size:14px;cursor:pointer}
#page-fill2 .fill2-person-tabs button.active{color:var(--accent);font-weight:600}
#page-fill2 .fill2-person-tabs button.active::after{content:none;display:none}
#page-fill2 .fill2-project-adjust-btn{order:-1}

/* 工时填报第二步：一级人员类型 Tab 移至筛选区第一行并采用分段按钮样式 */
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell>.fill2-person-tabs{
  display:flex!important;align-items:center!important;gap:8px!important;min-height:56px!important;height:56px!important;margin:0!important;padding:8px 16px!important;background:#fff!important;border:0!important;border-bottom:0!important;box-sizing:border-box!important;order:-1!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell>.fill2-person-tabs button{
  display:inline-flex!important;align-items:center!important;justify-content:center!important;height:40px!important;min-height:40px!important;padding:0 20px!important;border:0!important;border-radius:8px!important;background:#f2f3f5!important;color:var(--text-2)!important;font-size:14px!important;font-weight:400!important;line-height:22px!important;white-space:nowrap!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell>.fill2-person-tabs button.active{
  background:#eef4ff!important;color:var(--accent)!important;font-weight:600!important;
}

/* 第三步保留工作流步骤条，隐藏页面标题 */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active>#fill-workflow-steps{
  display:grid!important;
  visibility:visible!important;
  height:64px!important;
  min-height:64px!important;
  margin:0 0 16px!important;
  padding:0!important;
  opacity:1!important;
}
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active>#fill-workflow-steps .fill-step{
  display:grid!important;
  visibility:visible!important;
  height:64px!important;
  min-height:64px!important;
  opacity:1!important;
}

/* 填报明细：拆分连续白色背景，各功能区域保留独立间距 */
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-filter,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-type-pills,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions,
html body[data-current-page="fillreview"] #page-fillreview.show>.selection-action-bar{
  margin-bottom:16px!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-filter,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-type-pills,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-table-wrap{
  background:#fff!important;
}

/* 汇总分析：人员类型 Tab 移至项目汇总表格左侧 */
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .dash-table-tools{
  display:flex!important;align-items:center!important;justify-content:space-between!important;min-height:64px!important;height:64px!important;margin:0!important;padding:16px 0!important;background:#fff!important;border-bottom:1px solid var(--border)!important;box-sizing:border-box!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .sum-type-table-tabs{
  display:flex!important;align-items:center!important;gap:0!important;width:auto!important;min-width:0!important;height:40px!important;padding:0!important;border:0!important;border-radius:8px!important;background:#f2f3f5!important;overflow:hidden!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .sum-type-table-tabs button{
  display:inline-flex!important;align-items:center!important;justify-content:center!important;height:40px!important;min-width:76px!important;padding:0 18px!important;border:0!important;border-radius:0!important;background:transparent!important;color:var(--text-2)!important;font-size:14px!important;font-weight:400!important;white-space:nowrap!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .sum-type-table-tabs button.active{
  background:#eef4ff!important;color:var(--accent)!important;font-weight:600!important;border-radius:8px!important;
}
/* Step 3 title placeholder: keep the workflow bar at the same vertical position while the title copy remains hidden. */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active>.page-head{
  display:block!important;
  visibility:hidden!important;
  height:58px!important;
  min-height:58px!important;
  margin:0 0 16px!important;
  padding:0!important;
  overflow:hidden!important;
}


/* 2026-08-28: compact personnel-type tabs, aligned with the reference segmented control */
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .sum-type-table-tabs{
  height:36px!important;
  border-radius:7px!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .sum-type-table-tabs button{
  height:36px!important;
  min-width:72px!important;
  padding:0 14px!important;
  font-size:14px!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .sum-type-table-tabs button.active{
  border-radius:7px!important;
}

html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-type-pills{
  min-height:36px!important;
  gap:8px!important;
  margin:8px 0!important;
}
html body[data-current-page="fillreview"] .fill-review-type-pills .status-chip{
  height:36px!important;
  min-width:72px!important;
  padding:0 14px!important;
  border-radius:7px!important;
  font-size:14px!important;
}
html body[data-current-page="fillreview"] .fill-review-type-pills .status-chip.active{
  border-radius:7px!important;
}

html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell>.fill2-person-tabs{
  min-height:48px!important;
  height:48px!important;
  padding:6px 16px!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell>.fill2-person-tabs button{
  height:36px!important;
  min-height:36px!important;
  min-width:72px!important;
  padding:0 14px!important;
  border-radius:7px!important;
  font-size:14px!important;
}


/* 2026-08-28: fill-review action strip uses a white surface */
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions .card-body{
  background:#fff!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions{
  border:0!important;
  box-shadow:none!important;
}


/* 2026-08-28: move personnel-type tabs back 16px to the right */
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .sum-type-table-tabs{
  transform:translateX(0)!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-type-pills{
  padding-left:0!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell>.fill2-person-tabs{
  transform:translateX(-16px)!important;
}


/* 2026-08-28: fill2 人员类型 tab 左移 16px，与列表内容左边缘对齐 */
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell>.fill2-person-tabs{padding-left:0!important}


/* 2026-08-28: 工时汇总分析页 Tab 与白色背景保留 16px 左间距 */
html body[data-current-page="fill2"] #page-fill2.show.fill-step-three-active #fill-step-three>.fill-analysis-tabs{padding-left:16px!important;box-sizing:border-box!important}


/* 2026-08-28: 填报明细操作区与上方人员类型区域统一左右 16px 间距 */
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions{margin-left:16px!important;margin-right:16px!important}


/* 2026-08-28: 填报明细操作区白色背景向右移动 16px */
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions{margin-left:32px!important}


/* 2026-08-28: 填报明细页面上下区域连续衔接 */
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-filter,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-type-pills,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions{
  margin-top:0!important;
  margin-bottom:0!important;
}


/* 2026-08-28: 填报明细操作区与表格无间距 */
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions + .fill-review-table-wrap{
  margin-top:0!important;
}


/* 2026-08-28: 第二步人员类型 Tab 放到项目调整操作栏上方，整行左侧保留 16px */
html body[data-current-page="fill2"] #page-fill2.show .fill-main>#fill2-person-tabs{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  width:100%!important;
  min-height:48px!important;
  height:48px!important;
  margin:0!important;
  padding:6px 16px!important;
  box-sizing:border-box!important;
  background:#fff!important;
  border:0!important;
  border-bottom:0!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-main>#fill2-person-tabs button{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  height:36px!important;
  min-height:36px!important;
  min-width:72px!important;
  padding:0 14px!important;
  border:0!important;
  border-radius:7px!important;
  background:#f2f3f5!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:400!important;
  white-space:nowrap!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill-main>#fill2-person-tabs button.active{
  background:#eef4ff!important;
  color:var(--accent)!important;
  font-weight:600!important;
}


/* 2026-08-28: 通用人员类型 Tab，统一用于工时填报、填报明细与汇总分析 */
html body[data-current-page="dashboard"] #page-dashboard.show #sum-type-seg.person-type-tabs,
html body[data-current-page="fillreview"] #page-fillreview.show>.person-type-tabs,
html body[data-current-page="fill2"] #page-fill2.show #fill2-person-tabs.person-type-tabs{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  min-height:48px!important;
  height:48px!important;
  box-sizing:border-box!important;
  border:0!important;
  border-bottom:0!important;
  background:#fff!important;
  overflow:visible!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show #sum-type-seg.person-type-tabs{
  width:auto!important;
  min-height:36px!important;
  height:36px!important;
  margin-left:16px!important;
  padding:0!important;
  background:transparent!important;
  transform:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .dash-table-tools{
  border-bottom:0!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.person-type-tabs{
  width:auto!important;
  margin:0 16px!important;
  padding:6px 0!important;
}
html body[data-current-page="fill2"] #page-fill2.show #fill2-person-tabs.person-type-tabs{
  width:100%!important;
  margin:0!important;
  padding:6px 16px!important;
  transform:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show #sum-type-seg.person-type-tabs>button,
html body[data-current-page="fillreview"] #page-fillreview.show>.person-type-tabs>button,
html body[data-current-page="fill2"] #page-fill2.show #fill2-person-tabs.person-type-tabs>button{
  position:relative!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  flex:0 0 auto!important;
  min-width:72px!important;
  height:36px!important;
  min-height:36px!important;
  padding:0 14px!important;
  border:0!important;
  border-radius:7px!important;
  background:#f2f3f5!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:400!important;
  white-space:nowrap!important;
  box-shadow:none!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show #sum-type-seg.person-type-tabs>button:hover,
html body[data-current-page="fillreview"] #page-fillreview.show>.person-type-tabs>button:hover,
html body[data-current-page="fill2"] #page-fill2.show #fill2-person-tabs.person-type-tabs>button:hover{
  background:#e5e6eb!important;
  color:var(--text)!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show #sum-type-seg.person-type-tabs>button.active,
html body[data-current-page="fillreview"] #page-fillreview.show>.person-type-tabs>button.active,
html body[data-current-page="fill2"] #page-fill2.show #fill2-person-tabs.person-type-tabs>button.active{
  background:#eef4ff!important;
  color:var(--accent)!important;
  font-weight:600!important;
}
html body .person-type-tabs>button.active::after{
  content:none!important;
  display:none!important;
}


/* 2026-08-28: 工时填报第二步人员类型 Tab 距上方区域 16px */
html body[data-current-page="fill2"] #page-fill2.show #fill2-person-tabs.person-type-tabs{
  min-height:58px!important;
  height:58px!important;
  padding:16px 16px 6px!important;
}


/* 2026-08-28: 填报催办消息只读；列表操作区去灰底并统一右侧 16px */
#notify-msg.notify-message-readonly{
  background:#f7f8fa!important;
  color:var(--text-2)!important;
  cursor:default!important;
  resize:none!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions{
  width:100%!important;
  min-height:48px!important;
  margin:0!important;
  padding:0 16px!important;
  box-sizing:border-box!important;
  background:#fff!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions::before,
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions::after{
  display:none!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-actions>.card-body{
  width:100%!important;
  min-height:48px!important;
  padding:0!important;
  justify-content:flex-end!important;
  background:#fff!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .dash-table-tools{
  padding-right:16px!important;
  box-sizing:border-box!important;
  background:#fff!important;
}
html body[data-current-page="dashboard"] #page-dashboard.show>#sum-view-proj .dash-table-tools>.global-field-btn{
  margin-right:0!important;
}


/* 2026-08-28: 填报明细人员类型与列表操作合并为同一行，并移除表格上分割线 */
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-type-pills.person-type-tabs{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  width:auto!important;
  min-height:48px!important;
  height:48px!important;
  margin:0 32px!important;
  padding:6px 0!important;
  box-sizing:border-box!important;
  background:#fff!important;
  border:0!important;
  border-bottom:0!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-type-pills>.fill-review-actions{
  flex:0 0 auto!important;
  width:auto!important;
  min-height:36px!important;
  height:36px!important;
  margin:0 0 0 auto!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-type-pills>.fill-review-actions>.card-body{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:8px!important;
  width:auto!important;
  min-height:36px!important;
  height:36px!important;
  padding:0!important;
  background:transparent!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-table-wrap{
  margin-top:0!important;
  border-top:0!important;
  box-shadow:none!important;
}
html body[data-current-page="fillreview"] #page-fillreview.show>.fill-review-table-wrap::before{
  display:none!important;
}

/* single-page fill workspace */
#fill-workflow-steps,#fill-workflow-footer{display:none!important}
#page-fill2 .page-head{margin-bottom:14px}
#proj-modal .modal{width:min(900px,calc(100vw - 32px))}
.proj-tree-root{border:1px solid var(--border);border-radius:10px;background:#fff;margin-bottom:8px;overflow:hidden}.proj-tree-root-head,.proj-tree-branch-head{width:100%;border:0;background:#F8FAFD;color:var(--text);display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer}.proj-tree-root-head{padding:11px 13px;font-size:13px}.proj-tree-branch-head{padding:8px 28px;color:var(--text-2);font-size:12px;border-top:1px solid var(--border-2)}.proj-tree-count{margin-left:auto;color:var(--text-3);font-size:11px;font-weight:500}.proj-tree-caret{display:inline-block;width:14px;color:var(--text-3);transition:transform .16s}.collapsed>.proj-tree-children,.collapsed>.proj-tree-items{display:none}.collapsed>.proj-tree-root-head .proj-tree-caret,.collapsed>.proj-tree-branch-head .proj-tree-caret{transform:rotate(-90deg)}.proj-tree-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:8px 12px 10px 42px}.proj-tree-item{display:flex;align-items:center;gap:8px;min-width:0;padding:9px 10px;border:1px solid var(--border);border-radius:8px;background:#fff;text-align:left;color:var(--text);cursor:pointer;transition:.15s}.proj-tree-item:hover{border-color:#9AB6FF;background:#F8FAFF}.proj-tree-item.sel{border-color:#83A7FF;background:#EEF4FF}.proj-tree-item.readonly{cursor:default}.proj-tree-check{width:17px;height:17px;flex:0 0 auto;border:1px solid #C7D0DE;border-radius:5px;display:grid;place-items:center;color:#fff;font-size:11px;font-weight:800}.proj-tree-item.sel .proj-tree-check{border-color:var(--accent);background:var(--accent)}.proj-tree-name{min-width:0;flex:1}.proj-tree-name b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.proj-tree-name small{display:block;margin-top:3px;color:var(--text-3);font-size:10px}.proj-tree-action{color:var(--accent);font-size:10.5px;font-weight:700}.proj-tree-item.sel .proj-tree-action{color:var(--red)}@media(max-width:700px){.proj-tree-items{grid-template-columns:1fr;padding-left:28px}}

html body[data-current-page="fill2"] #page-fill2.show #fill-workflow-steps,html body[data-current-page="fill2"] #page-fill2.show #fill-workflow-footer{display:none!important;visibility:hidden!important;height:0!important;min-height:0!important;margin:0!important;padding:0!important;overflow:hidden!important}

#page-fill2 #fill2-page-title{font-size:19px!important}

html body[data-current-page="roster"] #page-roster.show>.roster-page-head{margin-top:0!important;padding-top:16px!important}

#page-fill2.show #fill2-filterbar{margin-top:16px!important}

#proj-modal.show{z-index:1000!important;display:flex!important}
#proj-modal.show>.modal{position:relative;z-index:1001}

html body[data-current-page="roster"] #page-roster.show>.roster-page-head>h2{margin:0!important;line-height:23px!important}

/* Dashboard V2: unified filters, three tabs and budget reconciliation */
#page-dashboard .tab-strip{margin-bottom:0!important;border-radius:10px 10px 0 0;background:#fff;border-bottom:1px solid var(--border)}
#page-dashboard .tab-strip .ts{min-width:150px}
#page-dashboard #sum-tab-dept{position:relative}
#page-dashboard .dashboard-unified-filter{display:flex!important;align-items:center!important;gap:10px!important;padding:12px 14px!important}
#page-dashboard .dashboard-unified-filter .srch{width:230px}
#page-dashboard .dashboard-unified-filter .fsel{min-width:130px}
#page-dashboard .dashboard-unified-filter #dash-v2-project{min-width:180px}
.dashboard-budget-state{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border:1px solid #BFD1FF;border-radius:7px;background:#EEF4FF;color:#245BDB;font-size:11px;font-weight:650;white-space:nowrap}
html body[data-current-page="dashboard"] #page-dashboard.show .dashboard-person-tabs{display:flex!important;grid-template-columns:none!important;align-items:center!important;width:auto!important;min-width:0!important;height:36px!important;min-height:36px!important;flex:0 0 auto!important;gap:8px!important;margin:0 auto 0 0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;overflow:visible!important}
html body[data-current-page="dashboard"] #page-dashboard.show .dashboard-person-tabs>button{display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:0 0 auto!important;width:auto!important;min-width:72px!important;height:36px!important;min-height:36px!important;padding:0 14px!important;border:0!important;border-radius:7px!important;background:#F2F3F5!important;color:var(--text-2)!important;font-size:14px!important;font-weight:400!important;white-space:nowrap!important;box-shadow:none!important}
html body[data-current-page="dashboard"] #page-dashboard.show .dashboard-person-tabs>button.active{background:#EEF4FF!important;color:var(--accent)!important;font-weight:600!important}
html body[data-current-page="dashboard"] #page-dashboard.show :is(#sum-view-proj,#sum-view-dept)>.dash-table-tools{gap:8px!important}
html body[data-current-page="dashboard"] #page-dashboard.show :is(#sum-view-proj,#sum-view-dept)>.dash-table-tools>.dashboard-person-tabs{margin-left:16px!important}
html body[data-current-page="dashboard"] #page-dashboard.show .dashboard-budget-import-action{height:34px!important;min-height:34px!important;margin-left:0!important;white-space:nowrap!important}
html body[data-current-page="dashboard"] #page-dashboard.show :is(#sum-view-proj,#sum-view-dept)>.dash-table-tools{display:grid!important;grid-template-columns:minmax(0,1fr) auto auto auto!important;grid-template-rows:36px 34px!important;column-gap:8px!important;row-gap:8px!important;align-items:center!important;justify-content:stretch!important;width:100%!important;height:auto!important;min-height:94px!important;padding:8px 16px!important;box-sizing:border-box!important}
html body[data-current-page="dashboard"] #page-dashboard.show :is(#sum-view-proj,#sum-view-dept)>.dash-table-tools>.dashboard-person-tabs{grid-column:1 / -1!important;grid-row:1!important;justify-self:start!important;margin:0!important}
html body[data-current-page="dashboard"] #page-dashboard.show :is(#sum-view-proj,#sum-view-dept)>.dash-table-tools>.dashboard-budget-state-toolbar{grid-column:2!important;grid-row:2!important;justify-self:end!important}
html body[data-current-page="dashboard"] #page-dashboard.show :is(#sum-view-proj,#sum-view-dept)>.dash-table-tools>.dashboard-budget-import-action{grid-column:3!important;grid-row:2!important;justify-self:end!important}
html body[data-current-page="dashboard"] #page-dashboard.show .dashboard-data-scope{display:inline-flex!important;margin-left:8px!important;vertical-align:middle!important;transform:translateY(-1px)!important}
html body[data-current-page="dashboard"] #page-dashboard.show :is(#sum-view-proj,#sum-view-dept)>.dash-table-tools>.global-field-btn{grid-column:4!important;grid-row:2!important;justify-self:end!important;margin:0!important}
html body[data-current-page="dashboard"] #page-dashboard.show #sum-view-detail .dash-detail-query>.dashboard-person-tabs{flex:0 0 auto!important;margin-bottom:0!important}
#page-dashboard #sum-view-detail .dash-detail-query{gap:10px}
#page-dashboard #sum-view-detail .dash-detail-query>.dashboard-person-tabs{flex:0 0 100%;margin-bottom:2px}
#page-dashboard .budget-col{background:#F7FAFF!important}
#page-dashboard .budget-num{text-align:right;font-family:Rubik,Arial,sans-serif;font-weight:700;color:#245BDB}
#page-dashboard .budget-num.positive{color:var(--green)}
#page-dashboard .budget-num.negative{color:var(--red)}
#page-dashboard .budget-sub{margin-top:3px;color:#5277C8;font-size:10px;font-weight:600;white-space:nowrap}
#page-dashboard #sum-view-proj,#page-dashboard #sum-view-dept,#page-dashboard #sum-view-detail{border-radius:0 0 10px 10px}
(max-width:1100px){#page-dashboard .dashboard-unified-filter .srch{width:100%;flex:1 0 100%}#page-dashboard .dashboard-unified-filter .spacer{display:none}.dashboard-budget-state{margin-left:auto}}


/* 工时填报：编辑后置底整页提交栏 */
.fill2-global-submit-dock{
  position:fixed;
  left:var(--adaptive-nav);
  right:0;
  bottom:0;
  z-index:700;
  display:none;
  align-items:center;
  gap:16px;
  min-height:68px;
  padding:12px var(--page-gutter);
  box-sizing:border-box;
  border-top:1px solid #E5E6EB;
  background:rgba(255,255,255,.98);
  box-shadow:0 -8px 24px rgba(31,35,41,.08);
  backdrop-filter:blur(12px);
}
.fill2-global-submit-dock.show{display:flex}
.fill2-global-submit-copy{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
.fill2-global-submit-copy>span:last-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.fill2-global-submit-copy b{font-size:13px;line-height:20px;color:var(--text);font-weight:600}
.fill2-global-submit-copy em{font-size:11.5px;line-height:18px;color:var(--text-3);font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fill2-global-submit-icon{display:grid;place-items:center;width:32px;height:32px;flex:0 0 32px;border-radius:8px;background:#EEF4FF;color:var(--accent)}
.fill2-global-submit-icon svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fill2-global-submit-dock>.btn{min-width:88px;height:34px;margin-left:auto}
.fill2-global-submit-dock>.btn:disabled{border-color:#C9CDD4;background:#C9CDD4;color:#fff;opacity:1;cursor:not-allowed;box-shadow:none}
.fill2-global-submit-dock.validation-blocked .fill2-global-submit-icon{background:#FFF7E8;color:#D46B08}
.fill2-global-submit-dock.validation-blocked .fill2-global-submit-copy b{color:#D46B08}
html body:not([data-current-page="fill2"]) .fill2-global-submit-dock,
html body.fill2-list-fullscreen .fill2-global-submit-dock{display:none!important}
html body.fill2-global-submit-visible[data-current-page="fill2"] #page-fill2.show{padding-bottom:92px!important}
@media(max-width:760px){
  .fill2-global-submit-dock{gap:10px;padding:10px 12px;min-height:64px}
  .fill2-global-submit-copy em{white-space:normal;line-height:16px}
  .fill2-global-submit-dock>.btn{min-width:72px}
}

/* LAST: task split acceptance fixes. */
html body[data-page-period-local="1"][data-current-page="taskconfig"] #page-taskconfig.show>.page-head.page-head-with-period{min-height:0!important;padding-right:0!important}
html body[data-page-period-local="1"][data-current-page="taskconfig"] #page-taskconfig.show>.page-head.page-head-with-period>#mpicker{display:none!important}
html body[data-current-page="task"] .task-progress-track{width:70px!important}

/* LAST: task page title must reserve layout space above both data cards. */
html body[data-page-period-local="1"][data-current-page="task"] #page-task.show>.page-head.page-head-with-period{
  position:static!important;
  inset:auto!important;
  display:block!important;
  flex:0 0 52px!important;
  width:100%!important;
  height:52px!important;
  min-height:52px!important;
  margin:0 0 16px!important;
  padding:0 166px 0 0!important;
  box-sizing:border-box!important;
  background:transparent!important;
  z-index:auto!important;
}
html body[data-current-page="task"] #page-task.show>.page-head h2{margin:0!important;line-height:23px!important}
html body[data-current-page="task"] #page-task.show>.page-head p{margin:4px 0 0!important;line-height:20px!important}
html body[data-current-page="task"] #page-task.show>#task-worktime{flex:1 1 auto!important;min-height:0!important}

/* The title is informational only: never let a legacy positioned copy block task controls. */
html body[data-current-page="task"] #page-task.show>.page-head{pointer-events:none!important}
html body[data-current-page="task"] .main>#mpicker{pointer-events:auto!important}
html body[data-current-page="task"] .task-management-shell{position:relative!important;z-index:2!important}
html body[data-current-page="task"] .task-info-heading .btn{position:relative!important;z-index:3!important;pointer-events:auto!important}

/* LAST: task configuration field parity and notification preview. */
html body[data-current-page="taskconfig"] .task-config-node-card{
  transition:border-color .16s ease,background-color .16s ease;
}
html body[data-current-page="taskconfig"] .task-config-node-card.active{
  border-color:#85A5FF;
  background:#F8FAFF;
  box-shadow:none;
}
html body[data-current-page="taskconfig"] .task-config-message-preview{
  overflow:hidden;
  border:1px solid #D9DCE2;
  border-radius:8px;
  background:#F7F8FA;
}
html body[data-current-page="taskconfig"] .task-config-preview-head{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:54px;
  padding:0 14px;
  border-bottom:1px solid #E5E6EB;
  background:#fff;
}
html body[data-current-page="taskconfig"] .task-config-preview-head>span{
  display:grid;
  place-items:center;
  width:30px;
  height:30px;
  flex:0 0 30px;
  border-radius:7px;
  background:#1677FF;
  color:#fff;
  font-size:12px;
  font-weight:700;
}
html body[data-current-page="taskconfig"] .task-config-preview-head>div{
  display:flex;
  min-width:0;
  flex-direction:column;
}
html body[data-current-page="taskconfig"] .task-config-preview-head b{
  color:var(--text);
  font-size:12.5px;
  line-height:18px;
}
html body[data-current-page="taskconfig"] .task-config-preview-head small{
  color:var(--text-3);
  font-size:10.5px;
  line-height:16px;
}
html body[data-current-page="taskconfig"] .task-config-preview-head em{
  margin-left:auto;
  color:var(--text-3);
  font-size:11px;
  font-style:normal;
  white-space:nowrap;
}
html body[data-current-page="taskconfig"] .task-config-preview-body{
  padding:14px;
}
html body[data-current-page="taskconfig"] .task-config-preview-body h5{
  margin:0;
  color:var(--text);
  font-size:13px;
  line-height:20px;
}
html body[data-current-page="taskconfig"] .task-config-preview-body>p{
  min-height:20px;
  margin:6px 0 10px;
  color:var(--text-2);
  font-size:12px;
  line-height:20px;
}
html body[data-current-page="taskconfig"] .task-config-preview-meta{
  display:flex;
  flex-wrap:wrap;
  gap:6px 16px;
  margin-bottom:10px;
  color:var(--text-3);
  font-size:10.5px;
  line-height:16px;
}
html body[data-current-page="taskconfig"] .task-config-preview-link{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  min-height:34px;
  padding:0 10px;
  border:1px solid #D9E5FF;
  border-radius:6px;
  background:#fff;
}
html body[data-current-page="taskconfig"] .task-config-preview-link>span{
  color:var(--text-2);
  font-size:11px;
  font-weight:600;
}
html body[data-current-page="taskconfig"] .task-config-preview-link code{
  overflow:hidden;
  color:#1677FF;
  font-family:inherit;
  font-size:11px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
html body[data-current-page="taskconfig"] .task-config-preview-link em{
  color:var(--text-3);
  font-size:10.5px;
  font-style:normal;
  white-space:nowrap;
}
@media(max-width:760px){
  html body[data-current-page="taskconfig"] .task-config-preview-head{align-items:flex-start;flex-wrap:wrap;padding:11px 12px}
  html body[data-current-page="taskconfig"] .task-config-preview-head em{width:100%;margin-left:40px}
  html body[data-current-page="taskconfig"] .task-config-preview-link{grid-template-columns:1fr}
  html body[data-current-page="taskconfig"] .task-config-preview-link{gap:2px;padding:8px 10px}
}

/* LAST: current task edit drawer fields and notification behavior. */
html body[data-current-page="task"] .task-designer-edit-note{
  display:flex;
  align-items:center;
  gap:12px;
  min-height:42px;
  padding:0 12px;
  border:1px solid #D9E5FF;
  border-radius:7px;
  background:#F5F8FF;
}
html body[data-current-page="task"] .task-designer-edit-note b{
  flex:0 0 auto;
  color:#245BDB;
  font-size:12px;
}
html body[data-current-page="task"] .task-designer-edit-note span{
  color:var(--text-2);
  font-size:11.5px;
  line-height:18px;
}
html body[data-current-page="task"] .task-designer-preview>.task-designer-preview-meta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:8px 12px 0;
  border-bottom:0;
  background:#F7F8FA;
}
html body[data-current-page="task"] .task-designer-preview-meta span{
  overflow:hidden;
  color:var(--text-3);
  font-size:11px;
  line-height:18px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
html body[data-current-page="task"] .task-designer-renotify{
  display:flex;
  align-items:flex-start;
  gap:9px;
  margin:0;
  padding:11px 12px;
  border:1px solid var(--border);
  border-radius:7px;
  background:#FAFBFC;
  cursor:pointer;
}
html body[data-current-page="task"] .task-designer-form-grid .task-designer-renotify>input{
  width:16px;
  min-width:16px;
  height:16px;
  min-height:16px;
  margin:2px 0 0;
  padding:0;
}
html body[data-current-page="task"] .task-designer-renotify>span{
  display:flex;
  min-width:0;
  flex-direction:column;
}
html body[data-current-page="task"] .task-designer-renotify b{
  color:var(--text);
  font-size:12px;
  line-height:18px;
}
html body[data-current-page="task"] .task-designer-form-grid .task-designer-renotify small{
  margin:1px 0 0;
  color:var(--text-3);
  font-size:11px;
  line-height:18px;
}
@media(max-width:760px){
  html body[data-current-page="task"] .task-designer-edit-note{align-items:flex-start;flex-direction:column;gap:2px;padding:9px 10px}
  html body[data-current-page="task"] .task-designer-preview>.task-designer-preview-meta{align-items:flex-start;flex-direction:column;gap:2px}
}

/* LAST: task configuration uses two independent borderless white cards. */
html body[data-current-page="taskconfig"] #task-config-root,
html body[data-current-page="taskconfig"] .task-config-shell{
  background:transparent!important;
}
html body[data-current-page="taskconfig"] .task-config-sidebar,
html body[data-current-page="taskconfig"] .task-config-panel{
  border:0!important;
  background:#fff!important;
  box-shadow:none!important;
}
html body[data-current-page="taskconfig"] .task-config-scroll{
  background:#fff!important;
}

/* LAST: task management outer cards are separated by the page background, not borders. */
html body[data-current-page="task"] .task-master-card,
html body[data-current-page="task"] .task-info-card,
html body[data-current-page="task"] .task-designer-card{
  border:0!important;
  box-shadow:none!important;
}

/* LAST: align the month selector with every task item in the task list. */
html body[data-current-page="task"] .task-master-period{
  padding-left:10px!important;
  padding-right:10px!important;
}
html body[data-current-page="task"] .task-master-period .fsel,
html body[data-current-page="task"] .task-master-list>.task-nav-item{
  width:100%!important;
  box-sizing:border-box!important;
}

/* LAST: keep the progress title on row one and all table actions on row two. */
html body[data-current-page="task"] .task-designer-section-title{
  display:grid!important;
  grid-template-columns:auto minmax(0,1fr) auto;
  grid-template-rows:auto var(--control-height);
  align-items:center!important;
  gap:8px 10px!important;
  min-height:0!important;
  padding:12px 16px!important;
}
html body[data-current-page="task"] .task-designer-section-title>h3{
  grid-column:1/-1;
  grid-row:1;
}
html body[data-current-page="task"] .task-designer-section-title>.task-designer-batch-remind{
  grid-column:1;
  grid-row:2;
  height:var(--control-height)!important;
}
html body[data-current-page="task"] .task-designer-section-title>.spacer{
  grid-column:2;
  grid-row:2;
}
html body[data-current-page="task"] .task-designer-section-title>.task-designer-header-actions{
  grid-column:3;
  grid-row:2;
  height:var(--control-height);
  margin-left:0;
}

/* LAST: task batch actions follow the table-selection interaction standard. */
html body[data-current-page="task"] .task-designer-section-title>.task-designer-batch-remind{
  min-width:88px;
  height:var(--control-height)!important;
  padding:0 16px;
  border-color:#1677FF;
  border-radius:6px;
  background:#1677FF;
  color:#fff;
  font-size:13px;
  font-weight:600;
}
html body[data-current-page="task"] .task-designer-section-title>.task-designer-batch-remind:disabled{
  border-color:#D9E5FF;
  background:#D9E5FF;
  color:#fff;
  cursor:not-allowed;
}
html body[data-current-page="task"] .task-designer-selection-bar{
  display:flex;
  flex:0 0 52px;
  align-items:center;
  gap:16px;
  min-height:52px;
  padding:0 16px;
  border-top:1px solid #E5E6EB;
  background:#fff;
  box-sizing:border-box;
}
html body[data-current-page="task"] .task-designer-selection-bar[hidden]{
  display:none!important;
}
html body[data-current-page="task"] .task-designer-selection-bar>button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:34px;
  padding:0 14px;
  border:0;
  border-radius:6px;
  background:#F2F3F5;
  color:rgba(17,17,17,.8);
  font-size:13px;
  line-height:20px;
  cursor:pointer;
}
html body[data-current-page="task"] .task-designer-selection-bar>span{
  color:rgba(17,17,17,.6);
  font-size:13px;
  line-height:20px;
}

/* LAST: task progress precedes four equal summary cells, with connectors above labels. */
html body[data-current-page="task"] .task-node-strip{
  grid-template-columns:repeat(4,minmax(0,1fr));
  margin-top:16px;
  margin-bottom:14px;
}
html body[data-current-page="task"] .task-node-mini{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  grid-template-rows:23px auto;
  justify-items:center;
  align-items:start;
  gap:5px;
  padding:0;
  text-align:center;
}
html body[data-current-page="task"] .task-node-mini:not(:last-child)::after{
  left:calc(50% + 12px);
  right:calc(-50% + 12px);
  top:11px;
}
html body[data-current-page="task"] .task-node-mini>i{
  grid-column:1;
  grid-row:1;
}
html body[data-current-page="task"] .task-node-mini>span{
  grid-column:1/-1;
  grid-row:2;
  position:relative;
  z-index:1;
  align-items:center;
  width:100%;
  background:#fff;
}
html body[data-current-page="task"] .task-info-metrics{
  grid-template-columns:repeat(4,minmax(0,1fr));
  margin-top:0;
}
html body[data-current-page="task"] .task-info-heading{
  align-items:center;
}
html body[data-current-page="task"] .task-info-heading h3{
  margin:0;
}
html body[data-current-page="task"] .task-info-metrics>div{
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  text-align:center;
}
html body[data-current-page="task"] .task-info-progress{
  width:min(100%,220px);
}

/* LAST: compact task date-time picker; the full editable field opens it. */
html body[data-current-page="task"] #task-designer-modal input[type="datetime-local"]:not(:disabled),
html body[data-current-page="taskconfig"] #task-config-root input[type="datetime-local"]:not(:disabled){
  cursor:pointer;
}
.task-designer-datetime-picker{
  position:fixed;
  z-index:900;
  display:none;
  width:min(356px,calc(100vw - 24px));
  padding:12px 12px 0;
  border:1px solid #d8dce3;
  border-radius:8px;
  background:#fff;
  box-shadow:0 8px 24px rgba(31,35,41,.16);
  color:var(--text);
}
.task-designer-datetime-picker.show{display:block}
.task-datetime-head{
  display:grid;
  grid-template-columns:32px 32px minmax(0,1fr) 32px 32px;
  align-items:center;
  min-height:36px;
  margin-bottom:6px;
}
.task-datetime-head strong{
  text-align:center;
  font-size:15px;
  line-height:22px;
  font-weight:600;
}
.task-datetime-nav{
  width:32px;
  height:32px;
  display:grid;
  place-items:center;
  padding:0;
  border:0;
  border-radius:6px;
  background:transparent;
  color:#4e5969;
  cursor:pointer;
}
.task-datetime-nav:hover{background:#f2f3f5}
.task-datetime-nav:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.task-datetime-nav svg{
  width:17px;
  height:17px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.task-datetime-week,
.task-datetime-days{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  text-align:center;
}
.task-datetime-week span{
  height:30px;
  display:grid;
  place-items:center;
  color:#646a73;
  font-size:12px;
  line-height:20px;
  font-weight:600;
}
.task-datetime-day{
  height:34px;
  display:grid;
  place-items:center;
  padding:0;
  border:0;
  background:transparent;
  color:#1f2329;
  font-size:13px;
  cursor:pointer;
}
.task-datetime-day span{
  position:relative;
  width:30px;
  height:30px;
  display:grid;
  place-items:center;
  border-radius:50%;
}
.task-datetime-day:hover span{background:#f2f3f5}
.task-datetime-day.muted{color:#c4c7cd}
.task-datetime-day.today span::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:2px;
  width:4px;
  height:4px;
  border-radius:50%;
  background:var(--accent);
  transform:translateX(-50%);
}
.task-datetime-day.selected span,
.task-datetime-day.selected:hover span{
  background:var(--accent);
  color:#fff;
  font-weight:600;
}
.task-datetime-day.selected span::after{background:#fff}
.task-datetime-time{
  display:flex;
  align-items:flex-end;
  justify-content:center;
  gap:8px;
  margin:10px -12px 0;
  padding:12px;
  border-top:1px solid var(--border);
  background:#fafbfc;
}
.task-datetime-time[hidden]{display:none}
.task-datetime-time label{display:grid;gap:4px}
.task-datetime-time label span{
  color:#8f959e;
  font-size:11px;
  line-height:18px;
}
.task-datetime-time select{
  width:88px;
  height:34px;
  padding:0 10px;
  border:1px solid var(--border-strong);
  border-radius:6px;
  background:#fff;
  color:var(--text);
  font:inherit;
  outline:none;
}
.task-datetime-time select:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(22,119,255,.12)}
.task-datetime-time>i{
  padding-bottom:7px;
  color:#646a73;
  font-style:normal;
}
.task-datetime-foot{
  display:flex;
  align-items:center;
  gap:8px;
  min-height:52px;
  margin:0 -12px;
  padding:8px 12px;
  border-top:1px solid var(--border);
}
.task-datetime-foot button{
  height:34px;
  padding:0 12px;
  border:0;
  border-radius:6px;
  font-size:13px;
  font-weight:500;
  cursor:pointer;
}
.task-datetime-now{
  background:#f2f3f5;
  color:#4e5969;
}
.task-datetime-toggle{
  margin-left:auto;
  background:transparent;
  color:var(--accent);
}
.task-datetime-confirm{
  background:var(--accent);
  color:#fff;
}
.task-datetime-foot button:hover{filter:brightness(.97)}
.task-datetime-foot button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* LAST: show the notification step number inside each progress node. */
html body[data-current-page="task"] #task-designer-modal .task-designer-node-tabs {
  counter-reset: task-notice-step;
}

html body[data-current-page="task"] #task-designer-modal .task-designer-node-tabs > button {
  counter-increment: task-notice-step;
}

html body[data-current-page="task"] #task-designer-modal .task-designer-node-tabs > button::before {
  content: counter(task-notice-step);
  display: grid;
  place-items: center;
  color: #6b7280;
  font-family: "Rubik", sans-serif;
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
}

html body[data-current-page="task"] #task-designer-modal .task-designer-node-tabs > button.active::before {
  color: #fff;
}


/* LAST: required markers and default close icon in the task editor drawer. */
html body[data-current-page="task"] #task-designer-modal .task-designer-form-grid label .task-designer-required {
  display: inline;
  margin-right: 4px;
  color: var(--red);
  font-size: 13px;
  font-weight: 600;
}

html body[data-current-page="task"] #task-designer-modal .task-designer-dialog-head .task-designer-close {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  margin-left: auto;
  padding: 0;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--text-2);
  cursor: pointer;
}

html body[data-current-page="task"] #task-designer-modal .task-designer-dialog-head .task-designer-close:hover {
  background: #f0f1f2;
}

html body[data-current-page="task"] #task-designer-modal .task-designer-dialog-head .task-designer-close:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

html body[data-current-page="task"] #task-designer-modal .task-designer-dialog-head .task-designer-close svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
}


/* LAST: task configuration field states follow the disabled/editing control spec. */
html body[data-current-page="taskconfig"] .task-config-readonly,
html body[data-current-page="taskconfig"] .task-config-form-grid input:disabled,
html body[data-current-page="taskconfig"] .task-config-form-grid textarea:disabled,
html body[data-current-page="taskconfig"] .task-config-node-fields input:disabled,
html body[data-current-page="taskconfig"] .task-config-node-fields select:disabled,
html body[data-current-page="taskconfig"] .task-config-node-fields textarea:disabled {
  border-color: transparent !important;
  background: #f2f3f5 !important;
  color: #646a73 !important;
  box-shadow: none !important;
  opacity: 1;
  -webkit-text-fill-color: #646a73;
}

html body[data-current-page="taskconfig"] .task-config-readonly b {
  color: #646a73;
  font-weight: 400;
}

html body[data-current-page="taskconfig"] .task-config-readonly span {
  color: #a8abb2;
}

html body[data-current-page="taskconfig"] .task-config-form-grid input:not(:disabled),
html body[data-current-page="taskconfig"] .task-config-form-grid textarea:not(:disabled),
html body[data-current-page="taskconfig"] .task-config-node-fields input:not(:disabled),
html body[data-current-page="taskconfig"] .task-config-node-fields select:not(:disabled),
html body[data-current-page="taskconfig"] .task-config-node-fields textarea:not(:disabled) {
  border-color: #d0d3d8 !important;
  background: #fff !important;
  color: #1f2329 !important;
  box-shadow: none;
}

html body[data-current-page="taskconfig"] .task-config-form-grid input:not(:disabled):focus,
html body[data-current-page="taskconfig"] .task-config-form-grid textarea:not(:disabled):focus,
html body[data-current-page="taskconfig"] .task-config-node-fields input:not(:disabled):focus,
html body[data-current-page="taskconfig"] .task-config-node-fields select:not(:disabled):focus,
html body[data-current-page="taskconfig"] .task-config-node-fields textarea:not(:disabled):focus {
  border-color: #1677FF !important;
  box-shadow: 0 0 0 1px #1677FF !important;
  outline: none;
}

html body[data-current-page="taskconfig"] .task-config-form-grid input::placeholder,
html body[data-current-page="taskconfig"] .task-config-form-grid textarea::placeholder,
html body[data-current-page="taskconfig"] .task-config-node-fields input::placeholder,
html body[data-current-page="taskconfig"] .task-config-node-fields textarea::placeholder {
  color: #a8abb2;
}
/* Permission management: hover-to-edit cells and batch same-column updates. */
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-batch-bar{
  display:flex;
  align-items:center;
  gap:12px;
  min-height:42px;
  padding:8px 16px;
  color:#245BDB;
  background:#F5F8FF;
  border-top:1px solid #E5E6EB;
  border-bottom:1px solid #DCE6FA;
  box-sizing:border-box;
  font-size:12.5px;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-batch-bar[hidden]{
  display:none!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-batch-bar b{
  font-size:14px;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-batch-hint{
  color:var(--text-2);
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-batch-clear{
  margin-left:auto;
  padding:0;
  color:var(--accent);
  background:transparent;
  border:0;
  font:inherit;
  font-weight:600;
  cursor:pointer;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-select-col{
  width:42px!important;
  min-width:42px!important;
  max-width:42px!important;
  padding-left:12px!important;
  padding-right:8px!important;
  text-align:center!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-row-check{
  width:16px;
  height:16px;
  margin:0;
  accent-color:var(--accent);
  cursor:pointer;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-row-check:disabled{
  cursor:not-allowed;
  opacity:.38;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-dept-name{
  display:flex;
  align-items:center;
  min-width:150px;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-tree-toggle{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:17px;
  padding:0 5px 0 0;
  color:var(--text-3);
  background:none;
  border:0;
  cursor:pointer;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-tree-spacer{
  display:inline-block;
  width:17px;
  flex:0 0 17px;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-edit-cell{
  position:relative;
  min-width:118px;
  vertical-align:middle;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell{
  cursor:text;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-cell-value{
  display:flex;
  align-items:center;
  min-height:34px;
  line-height:1.45;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-cell-input{
  display:none;
  width:100%;
  min-width:108px;
  height:34px;
  padding:0 9px;
  color:var(--text);
  background:#fff;
  border:1px solid #C9CDD4;
  border-radius:6px;
  box-sizing:border-box;
  font:inherit;
  line-height:32px;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell:hover .dpm-cell-input:not(:disabled),
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell:focus-within .dpm-cell-input:not(:disabled),
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-edit-cell.has-error .dpm-cell-input:not(:disabled){
  display:block;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell:hover .dpm-cell-value,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell:focus-within .dpm-cell-value,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-edit-cell.has-error .dpm-cell-value{
  display:none;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-cell-input:focus{
  outline:none;
  border-color:var(--accent);
  box-shadow:0 0 0 2px var(--accent-soft);
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-cell-error{
  display:none;
  margin-top:3px;
  color:#F54A45;
  font-size:11px;
  line-height:16px;
  white-space:nowrap;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-edit-cell.has-error .dpm-cell-error{
  display:block;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-edit-cell.has-error .dpm-cell-input{
  border-color:#F54A45;
  box-shadow:0 0 0 2px rgba(245,74,69,.12);
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-dept-overview tr.dpm-row-selected>td{
  background:#EDF3FF!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-dept-overview tr.dpm-row-current:not(.dpm-row-selected)>td{
  background:#F7F9FC!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-person-pill{
  margin:2px 4px 2px 0;
}

/* Permission management person pickers: hover edit, selected-row persistent edit. */
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell{
  cursor:pointer;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-person-picker{
  position:relative;
  display:none;
  width:100%;
  min-width:126px;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell:hover .dpm-person-picker,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell:focus-within .dpm-person-picker,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled tr.dpm-row-selected .dpm-person-picker,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-edit-cell.has-error .dpm-person-picker{
  display:block;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell:hover .dpm-cell-value,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell:focus-within .dpm-cell-value,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled tr.dpm-row-selected .dpm-cell-value,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-edit-cell.has-error .dpm-cell-value{
  display:none;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-edit-cell:focus-within{
  z-index:32;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-trigger{
  display:flex;
  align-items:center;
  gap:6px;
  width:100%;
  min-width:118px;
  height:34px;
  padding:0 8px 0 10px;
  border:1px solid #C9CDD4;
  border-radius:7px;
  background:#fff;
  color:#1F2329;
  font:inherit;
  text-align:left;
  cursor:pointer;
  box-sizing:border-box;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-trigger:hover{
  border-color:#8F959E;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-person-picker.open .dpm-picker-trigger,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-trigger:focus-visible{
  border-color:var(--accent);
  outline:none;
  box-shadow:0 0 0 2px var(--accent-soft);
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-trigger:disabled{
  color:var(--text-3);
  background:#F5F6F7;
  cursor:not-allowed;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-text{
  min-width:0;
  flex:1;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-text.is-placeholder{
  color:#8F959E;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-trigger svg{
  width:14px;
  height:14px;
  flex:0 0 14px;
  fill:none;
  stroke:currentColor;
  stroke-width:2;
  transition:transform .16s ease;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-person-picker.open .dpm-picker-trigger svg{
  transform:rotate(180deg);
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-menu{
  position:absolute;
  z-index:80;
  top:38px;
  left:0;
  display:none;
  width:232px;
  padding:8px;
  border:1px solid #E5E6EB;
  border-radius:9px;
  background:#fff;
  box-shadow:0 8px 24px rgba(31,35,41,.14);
  box-sizing:border-box;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-edit-cell:nth-child(n+6) .dpm-picker-menu{
  right:0;
  left:auto;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-person-picker.open .dpm-picker-menu{
  display:block;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-search{
  width:100%;
  height:32px;
  margin:0 0 6px;
  padding:0 9px;
  border:1px solid #D0D3D8;
  border-radius:6px;
  color:#1F2329;
  background:#fff;
  font:inherit;
  box-sizing:border-box;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-search:focus{
  border-color:var(--accent);
  outline:none;
  box-shadow:0 0 0 2px var(--accent-soft);
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-options{
  max-height:220px;
  overflow:auto;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-option{
  display:flex;
  align-items:center;
  gap:8px;
  min-height:34px;
  padding:4px 7px;
  border-radius:6px;
  color:#1F2329;
  cursor:pointer;
  box-sizing:border-box;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-option[hidden]{
  display:none!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-option:hover{
  background:#F5F8FF;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-option input{
  width:14px;
  height:14px;
  margin:0;
  accent-color:var(--accent);
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-avatar{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  flex:0 0 22px;
  border-radius:50%;
  background:#EEF3FF;
  color:#245BDB;
  font-size:11px;
  font-weight:600;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-name{
  min-width:0;
  flex:1;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-check{
  color:var(--accent);
  opacity:0;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-option:has(input:checked) .dpm-picker-check{
  opacity:1;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-footer{
  display:flex;
  justify-content:space-between;
  margin-top:6px;
  padding-top:6px;
  border-top:1px solid #F0F1F3;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-footer button{
  padding:2px 4px;
  border:0;
  color:var(--accent);
  background:transparent;
  font:inherit;
  font-weight:600;
  cursor:pointer;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-edit-cell.has-error .dpm-picker-trigger{
  border-color:#F54A45;
  box-shadow:0 0 0 2px rgba(245,74,69,.12);
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-footer .dpm-picker-clear{
  color:var(--text-2);
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-footer .dpm-picker-save{
  margin-left:auto;
  color:var(--accent);
}
}

/* LAST: task progress uses a multi-row viewport with scrolling contained
   inside the white card. The header stays visible while the body scrolls. */
html body[data-current-page="task"] #page-task.show .task-management-main>.task-designer-table-card{
  display:flex!important;
  flex:1 1 auto!important;
  min-height:260px!important;
  max-height:none!important;
  overflow:hidden!important;
}
html body[data-current-page="task"] #page-task.show .task-designer-table-wrap{
  position:relative!important;
  flex:1 1 auto!important;
  min-height:0!important;
  max-height:100%!important;
  margin:0 16px 16px!important;
  overflow:auto!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table thead th{
  position:sticky!important;
  top:0!important;
  z-index:5!important;
  background:#F5F6F7!important;
  box-shadow:inset 0 -1px 0 #E5E6EB!important;
}
html body[data-current-page="task"] .task-page-sticky-head{
  display:none!important;
}

/* LAST: keep the complete sticky header above frozen body columns. */
html body[data-current-page="task"] #page-task.show #task-designer-progress-table thead th{
  z-index:20!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table thead th:nth-child(1),
html body[data-current-page="task"] #page-task.show #task-designer-progress-table thead th.task-designer-op-head{
  z-index:24!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table thead th:nth-child(2){
  z-index:23!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table tbody td:nth-child(1),
html body[data-current-page="task"] #page-task.show #task-designer-progress-table tbody td.task-designer-op-cell{
  z-index:3!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table tbody td:nth-child(2){
  z-index:2!important;
}

/* Department distribution tree */
html body[data-current-page="dashboard"] #sum-dept-table tbody tr.sum-dept-row-hidden{display:none!important}
html body[data-current-page="dashboard"] #sum-dept-table tbody tr[data-dept-level="0"]>td:first-child{background:#fafbfc}
html body[data-current-page="dashboard"] #sum-dept-table tbody tr[data-dept-level="0"]>td{border-top-color:#e9edf3}
html body[data-current-page="dashboard"] #sum-dept-table .sum-dept-node{display:inline-flex;align-items:center;gap:10px;min-height:30px;box-sizing:border-box;color:#344054;white-space:nowrap;font:inherit;line-height:1.4}
html body[data-current-page="dashboard"] #sum-dept-table button.sum-dept-node{max-width:100%;margin:0;padding-top:0;padding-bottom:0;padding-right:8px;border:0;border-radius:6px;background:transparent;text-align:left;cursor:pointer}
html body[data-current-page="dashboard"] #sum-dept-table button.sum-dept-node:hover{background:#f2f4f7;color:#182230}
html body[data-current-page="dashboard"] #sum-dept-table button.sum-dept-node:focus-visible{outline:2px solid rgba(47,109,246,.35);outline-offset:2px}
html body[data-current-page="dashboard"] #sum-dept-table .sum-dept-node-root{padding-left:0;font-weight:700}
html body[data-current-page="dashboard"] #sum-dept-table .sum-dept-node-branch{padding-left:28px;font-weight:600}
html body[data-current-page="dashboard"] #sum-dept-table .sum-dept-node-leaf{padding-left:58px;color:var(--text-2);font-weight:400}
html body[data-current-page="dashboard"] #sum-dept-table tbody tr[data-dept-level="1"] .sum-dept-node{padding-left:28px}
html body[data-current-page="dashboard"] #sum-dept-table tbody tr[data-dept-level="2"] .sum-dept-node{padding-left:56px}
html body[data-current-page="dashboard"] #sum-dept-table tbody tr[data-dept-level="3"] .sum-dept-node{padding-left:84px}
html body[data-current-page="dashboard"] #sum-dept-table tbody tr[data-dept-level="4"] .sum-dept-node{padding-left:112px}
html body[data-current-page="dashboard"] #sum-dept-table .sum-dept-caret,html body[data-current-page="dashboard"] #sum-dept-table .sum-dept-caret-spacer{display:inline-flex;align-items:center;justify-content:center;flex:0 0 16px;width:16px;height:16px}
html body[data-current-page="dashboard"] #sum-dept-table .sum-dept-caret{color:#667085;font-size:16px;font-weight:700;line-height:1;transform-origin:center;transition:transform .16s ease}
html body[data-current-page="dashboard"] #sum-dept-table .sum-dept-node-toggle.is-collapsed .sum-dept-caret{transform:rotate(-90deg)}
html body[data-current-page="dashboard"] #sum-dept-table .sum-dept-dot{display:inline-block;flex:0 0 7px;width:7px;height:7px;margin-left:2px;margin-right:3px;border-radius:50%;background:#d0d5dd}

/* Change log: formal submissions with inline detail expansion. */
html body[data-current-page="log"] #log-tab-changes table{table-layout:fixed}
html body[data-current-page="log"] #log-tab-changes thead th:nth-child(1){width:16%}
html body[data-current-page="log"] #log-tab-changes thead th:nth-child(2){width:12%}
html body[data-current-page="log"] #log-tab-changes thead th:nth-child(3){width:20%}
html body[data-current-page="log"] #log-tab-changes thead th:nth-child(4){width:34%}
html body[data-current-page="log"] #log-tab-changes thead th:nth-child(5){width:18%}
html body[data-current-page="log"] #log-tab-changes .log-formal-row>td{height:auto;min-height:56px;vertical-align:top;padding-top:16px!important;padding-bottom:16px!important}
html body[data-current-page="log"] #log-tab-changes .log-time{font-family:'Rubik';font-size:12px;color:var(--text-2);white-space:nowrap}
html body[data-current-page="log"] #log-tab-changes .log-object-meta{margin-top:4px;color:var(--text-3);font-size:11px;line-height:18px}
html body[data-current-page="log"] #log-tab-changes .log-remark{color:var(--text-2);font-size:12px;line-height:20px}
html body[data-current-page="log"] #log-tab-changes .log-change-details{width:100%}
html body[data-current-page="log"] #log-tab-changes .log-change-details>summary{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:0;border-radius:4px;color:var(--accent);font-size:12px;font-weight:600;line-height:20px;cursor:pointer;list-style:none}
html body[data-current-page="log"] #log-tab-changes .log-change-details>summary::-webkit-details-marker{display:none}
html body[data-current-page="log"] #log-tab-changes .log-change-details>summary:hover{color:var(--accent-hover)}
html body[data-current-page="log"] #log-tab-changes .log-change-details>summary:focus-visible{outline:2px solid rgba(47,109,246,.32);outline-offset:2px}
html body[data-current-page="log"] #log-tab-changes .log-change-details>summary svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .16s ease}
html body[data-current-page="log"] #log-tab-changes .log-change-details[open]>summary svg{transform:rotate(90deg)}
html body[data-current-page="log"] #log-tab-changes .log-change-panel{width:100%;margin-top:9px;border:1px solid #e5e9f0;border-radius:8px;background:#f8fafc;overflow:hidden;box-sizing:border-box}
html body[data-current-page="log"] #log-tab-changes .log-change-grid{display:grid;grid-template-columns:minmax(120px,1.2fr) minmax(100px,1fr) minmax(120px,1fr);align-items:center;gap:12px;min-height:38px;padding:8px 12px;border-top:1px solid #e9edf3;color:var(--text-2);font-size:12px;line-height:20px;box-sizing:border-box}
html body[data-current-page="log"] #log-tab-changes .log-change-grid:first-child{border-top:0}
html body[data-current-page="log"] #log-tab-changes .log-change-grid-head{min-height:34px;background:#f2f4f7;color:var(--text-3);font-size:11px;font-weight:600}
html body[data-current-page="log"] #log-tab-changes .log-change-grid del{color:#d92d20;text-decoration-thickness:1px}
html body[data-current-page="log"] #log-tab-changes .log-change-grid i{margin:0 7px;color:var(--text-3);font-style:normal}
html body[data-current-page="log"] #log-tab-changes .log-change-grid b{color:#16803c;font-weight:600}
@media(max-width:900px){
  html body[data-current-page="log"] #log-tab-changes table{min-width:980px}
}

/* Fill allocation: keep batch actions in-flow directly above the table. */
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill-main>.selection-action-bar.show,
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill-main>#f2-bbar-out.show{
  position:static!important;
  inset:auto!important;
  z-index:auto!important;
  flex:0 0 auto!important;
  width:auto!important;
  margin:0 16px 8px!important;
  box-sizing:border-box!important;
  box-shadow:none!important;
}


/* Fill allocation: table-style batch interaction. */
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill2-batch-action{
  min-width:88px!important;
  justify-content:center!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill2-batch-action:disabled{
  border-color:transparent!important;
  background:#F5F6F7!important;
  color:#C9CDD4!important;
  opacity:1!important;
  cursor:not-allowed!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill2-batch-action:not(:disabled){
  border-color:transparent!important;
  background:#F2F3F5!important;
  color:var(--text-2)!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill2-batch-action:not(:disabled):hover{
  background:#E8EAED!important;
  color:var(--text)!important;
}
/* Review roles: keep return/submit actions consistent with the table batch-button treatment. */
html body[data-current-page="fill2"]:is([data-current-role="hrbp"],[data-current-role="dispatch_admin"],[data-current-role="apm"]) #page-fill2.show #hrbp-review-actions{
  align-items:center!important;
  padding:0!important;
  background:transparent!important;
  border-radius:0!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"]:is([data-current-role="hrbp"],[data-current-role="dispatch_admin"],[data-current-role="apm"]) #page-fill2.show #hrbp-review-actions .review-change-badge{
  display:none!important;
}
html body[data-current-page="fill2"]:is([data-current-role="hrbp"],[data-current-role="dispatch_admin"],[data-current-role="apm"]) #page-fill2.show #hrbp-review-actions .btn{
  min-width:88px!important;
  border-color:transparent!important;
  background:#F2F3F5!important;
  color:var(--text-2)!important;
  box-shadow:none!important;
  filter:none!important;
}
html body[data-current-page="fill2"]:is([data-current-role="hrbp"],[data-current-role="dispatch_admin"],[data-current-role="apm"]) #page-fill2.show #hrbp-review-actions .btn:disabled,
html body[data-current-page="fill2"]:is([data-current-role="hrbp"],[data-current-role="dispatch_admin"],[data-current-role="apm"]) #page-fill2.show #hrbp-review-actions .btn:disabled:hover{
  background:#F5F6F7!important;
  color:#C9CDD4!important;
  cursor:not-allowed!important;
}
html body[data-current-page="fill2"]:is([data-current-role="hrbp"],[data-current-role="dispatch_admin"],[data-current-role="apm"]) #page-fill2.show #hrbp-review-actions .btn:hover{
  border-color:transparent!important;
  background:#E8EAED!important;
  color:var(--text)!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell #f2-batch-clear:not(:disabled){
  color:#E34935!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill2-selection-footer{
  display:none!important;
  align-items:center!important;
  gap:16px!important;
  width:100%!important;
  min-height:54px!important;
  padding:10px 16px!important;
  border-top:1px solid var(--border)!important;
  background:#fff!important;
  color:var(--text-2)!important;
  font-size:13px!important;
  box-sizing:border-box!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill2-selection-footer.show{
  display:flex!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill2-selection-footer .btn{
  min-height:34px!important;
  border-color:transparent!important;
  background:#F2F3F5!important;
  color:var(--text)!important;
  box-shadow:none!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill2-selection-footer .btn:hover{
  background:#E8EAED!important;
}
html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill2-selection-footer b{
  color:var(--text)!important;
  font-weight:500!important;
}
@media(max-width:1100px){
  html body[data-current-page="fill2"] #page-fill2.show .fill2-list-shell .fill2-selection-footer{flex-wrap:wrap!important;gap:8px 12px!important;}
}


/* Standalone work confirmation: fixed shell with inner table scrolling */
#rswitch[hidden]{display:none!important}
#page-workconfirm.show{height:calc(100vh - 60px);min-height:0;display:flex!important;flex-direction:column;overflow:hidden;padding:0!important}
#page-workconfirm>.page-head{flex:0 0 auto;margin:0!important;padding:16px 20px 12px!important}
#page-workconfirm>.page-head h2{font-size:18px;line-height:26px;font-weight:600}
#page-workconfirm>.page-head p{font-size:13px;line-height:20px}
.workconfirm-status{flex:0 0 auto;display:flex;align-items:center;gap:12px;margin:0 20px 12px;padding:12px 16px;border:1px solid #DDE3EC;border-radius:8px;background:#F8FAFC;box-shadow:none}
.workconfirm-status-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.workconfirm-status-copy b{font-size:14px;color:var(--text)}.workconfirm-status-copy span{font-size:12px;color:var(--text-2)}
.workconfirm-status-pill{margin-left:auto;flex:0 0 auto;padding:4px 10px;border-radius:999px;background:#E8F3FF;color:#1456C0;font-size:12px;font-weight:600}
.workconfirm-card{min-height:0;flex:1;display:flex;flex-direction:column;margin:0 20px 16px;border:1px solid var(--border);border-radius:8px;background:#fff;box-shadow:none;overflow:hidden}
.workconfirm-card .shared-filter{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);background:#fff}
html body[data-current-page="workconfirm"][data-current-role="hrbp"] #workconfirm-scope{display:none!important}
.workconfirm-card .shared-filter .srch{width:220px}.workconfirm-card .shared-filter .fsel{min-width:150px}
.workconfirm-toolbar{flex:0 0 auto;min-height:58px;display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border);background:#fff}
.workconfirm-toolbar .toolbar-left,.workconfirm-toolbar .toolbar-right{display:flex;align-items:center;gap:8px}.workconfirm-toolbar .toolbar-right{margin-left:auto}.workconfirm-count{color:var(--text-3);font-size:12px;white-space:nowrap}
.workconfirm-table-wrap{min-height:0;flex:1;display:flex;flex-direction:column;border:0!important;border-radius:0!important;box-shadow:none!important;overflow:hidden}
.workconfirm-table-wrap>.tbl-scroll{min-height:0;flex:1;overflow:auto;border:0}
#workconfirm-table{min-width:1240px;width:max-content;border-collapse:separate;border-spacing:0}
#workconfirm-table th{height:40px;padding:0 12px;position:sticky;top:0;z-index:2;background:#F5F6F8;border-bottom:1px solid var(--border);font-size:12px;font-weight:600;white-space:nowrap;text-align:left}
#workconfirm-table td{height:56px;padding:0 12px;border-bottom:1px solid #EEF0F3;font-size:13px;white-space:nowrap;background:#fff}
#workconfirm-table tbody tr:hover td{background:#FAFBFC}
.workconfirm-input{width:72px;height:32px;padding:0 8px;border:1px solid #D8DDE6;border-radius:6px;background:#fff;color:var(--text);font-size:13px;text-align:right;outline:none}.workconfirm-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(22,119,255,.12)}
.workconfirm-total{font-weight:600}.workconfirm-total.ok{color:#16833A}.workconfirm-total.bad{color:#D4380D}.workconfirm-total.muted{color:var(--text-3)}
#workconfirm-table .status-chip{display:inline-flex;min-width:auto;padding:3px 8px;border-radius:999px;cursor:default;font-size:12px;font-weight:600}#workconfirm-table .status-chip.ok{background:#EAF8EE;color:#16833A}#workconfirm-table .status-chip.bad{background:#FFF1F0;color:#D4380D}#workconfirm-table .status-chip.muted{background:#F2F3F5;color:#646A73}
.workconfirm-footer{flex:0 0 auto;min-height:44px;display:flex;align-items:center;padding:0 16px;border-top:1px solid var(--border);background:#fff;color:var(--text-2);font-size:12px}
#page-workconfirm .btn{min-height:34px;font-size:13px;font-weight:600;box-shadow:none}#page-workconfirm .btn.secondary{background:#F2F3F5;border-color:#F2F3F5;color:var(--text)}
@media(max-width:900px){#page-workconfirm.show{height:auto;overflow:visible}.workconfirm-card{min-height:560px}.workconfirm-card .shared-filter{flex-wrap:wrap}.workconfirm-card .shared-filter .spacer{display:none}.workconfirm-toolbar{align-items:flex-start;flex-wrap:wrap}.workconfirm-toolbar .toolbar-right{width:100%;margin-left:0}.workconfirm-status{align-items:flex-start}}


/* Dashboard role views stay in a compact document flow after legacy detail removal. */
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show{display:flex!important;flex-direction:column!important;grid-template-columns:none!important;grid-template-rows:none!important;height:auto!important;min-height:0!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>.page-head{order:0!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>#sum-global-filter-card{order:1!important;grid-column:auto!important;grid-row:auto!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>.tab-strip{order:2!important;grid-column:auto!important;grid-row:auto!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>:is(#sum-view-proj,#sum-view-dept){order:3!important;grid-column:auto!important;grid-row:auto!important;min-height:0!important;box-shadow:none!important}

html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>:is(#sum-view-proj,#sum-view-dept){flex:0 0 auto!important;min-height:280px!important;overflow:hidden!important}
html body[data-current-page="dashboard"] #page-dashboard.dashboard-flow.show>:is(#sum-view-proj,#sum-view-dept)>.tbl-scroll{display:block!important;min-height:170px!important;overflow-x:auto!important}
html body[data-current-page="dashboard"][data-current-role="reporter"] #page-dashboard.dashboard-flow.show #sum-view-proj>.dash-table-tools{display:flex!important;justify-content:flex-end!important;min-height:50px!important;height:50px!important;padding:8px 16px!important}

html body[data-current-page="dashboard"]:is([data-current-role="reporter"],[data-current-role="viewer"],[data-current-role="project_owner"],[data-current-role="outsource_admin"],[data-current-role="dispatch_admin"],[data-current-role="apm"]) #page-dashboard :is(.budget-col,.budget-sub,.dashboard-budget-state,.dashboard-budget-import-action){display:none!important}

/* LAST: enlarge the task milestone progress and present department progress as cards. */
html body[data-current-page="task"] .task-node-strip{
  margin-top:20px!important;
  margin-bottom:18px!important;
}
html body[data-current-page="task"] .task-node-mini{
  grid-template-rows:32px auto!important;
  gap:8px!important;
}
html body[data-current-page="task"] .task-node-mini:not(:last-child)::after{
  left:calc(50% + 17px)!important;
  right:calc(-50% + 17px)!important;
  top:15px!important;
  height:3px!important;
  border-radius:999px!important;
  background:#D9DDE5!important;
}
html body[data-current-page="task"] .task-node-mini.done:not(:last-child)::after{
  background:#8FB0FF!important;
}
html body[data-current-page="task"] .task-node-mini>i{
  width:32px!important;
  height:32px!important;
  flex-basis:32px!important;
  font-size:13px!important;
}
html body[data-current-page="task"] .task-node-mini.current>i{
  box-shadow:0 0 0 4px #EAF1FF!important;
}
html body[data-current-page="task"] .task-node-mini b{
  font-size:13px!important;
  line-height:20px!important;
}
html body[data-current-page="task"] .task-node-mini small{
  font-size:11px!important;
  line-height:18px!important;
}
html body[data-current-page="task"] #page-task.show .task-management-main>.task-designer-table-card{
  min-height:300px!important;
}
html body[data-current-page="task"] .task-progress-card-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  grid-auto-rows:max-content;
  align-content:start;
  gap:12px;
  flex:1 1 auto;
  min-height:0;
  margin:0 16px 16px;
  padding:1px 4px 4px 1px;
  overflow:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
html body[data-current-page="task"] .task-progress-card{
  min-width:0;
  padding:14px 14px 12px;
  border:1px solid #E5E6EB;
  border-radius:8px;
  background:#fff;
  box-sizing:border-box;
  transition:border-color .16s ease,background-color .16s ease;
}
html body[data-current-page="task"] .task-progress-card.is-selectable{cursor:pointer}
html body[data-current-page="task"] .task-progress-card:hover{
  border-color:#C9D7F6;
  background:#FBFCFF;
}
html body[data-current-page="task"] .task-progress-card:has(.task-designer-remind-check:checked){
  border-color:#8FB0FF;
  background:#F5F8FF;
}
html body[data-current-page="task"] .task-progress-card:focus-within{
  outline:2px solid rgba(22,119,255,.22);
  outline-offset:1px;
}
html body[data-current-page="task"] .task-progress-card.is-selectable:focus-visible{
  outline:2px solid rgba(22,119,255,.38);
  outline-offset:2px;
}
html body[data-current-page="task"] .task-progress-card-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
html body[data-current-page="task"] .task-progress-card-select{
  display:flex;
  align-items:center;
  gap:9px;
  min-width:0;
  cursor:pointer;
}
html body[data-current-page="task"] .task-progress-card-select:has(input:disabled){cursor:default}
html body[data-current-page="task"] .task-progress-card-select strong{
  overflow:hidden;
  color:#1F2329;
  font-size:14px;
  font-weight:600;
  line-height:22px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
html body[data-current-page="task"] .task-progress-card-state{
  flex:0 0 auto;
  padding:3px 8px;
  border-radius:999px;
  font-size:11px;
  font-weight:600;
  line-height:18px;
}
html body[data-current-page="task"] .task-progress-card-state.pending{background:#FFF3E8;color:#C45D00}
html body[data-current-page="task"] .task-progress-card-state.complete{background:#EAF8EE;color:#16833A}
html body[data-current-page="task"] .task-progress-card-meta{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin:14px 0 0;
  padding:12px;
  border-radius:7px;
  background:#F7F8FA;
}
html body[data-current-page="task"] .task-progress-card-meta div{min-width:0}
html body[data-current-page="task"] .task-progress-card-meta dt{color:#8F959E;font-size:11px;line-height:18px}
html body[data-current-page="task"] .task-progress-card-meta dd{overflow:hidden;margin:2px 0 0;color:#1F2329;font-size:13px;line-height:20px;text-overflow:ellipsis;white-space:nowrap}
html body[data-current-page="task"] .task-progress-card-progress{margin-top:13px}
html body[data-current-page="task"] .task-progress-card-progress-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px;color:#646A73;font-size:11px}
html body[data-current-page="task"] .task-progress-card-progress-label b{color:#1F2329;font-family:'Rubik';font-size:13px}
html body[data-current-page="task"] .task-progress-card-track{
  width:100%!important;
  height:8px!important;
}
html body[data-current-page="task"] .task-progress-card-footer{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  min-height:28px;
  margin-top:12px;
  padding-top:10px;
  border-top:1px solid #F0F1F3;
}
html body[data-current-page="task"] .task-progress-card-footer .task-designer-text-action{padding-right:0}
html body[data-current-page="task"] .task-progress-card-footer .task-designer-action-done{color:#8F959E;font-size:13px}
@media(max-width:900px){
  html body[data-current-page="task"] .task-progress-card-list{grid-template-columns:1fr}
  html body[data-current-page="task"] .task-progress-card-meta{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* ── 自定义列 V2：全局双栏字段设置组件（2026-09-04）── */
.column-settings-mask.drawer-mask{
  align-items:center!important;
  justify-content:center!important;
  padding:24px!important;
  background:rgba(31,35,41,.48)!important;
}
.column-settings-drawer.drawer{
  width:min(880px,calc(100vw - 48px))!important;
  max-width:none!important;
  height:min(720px,calc(100vh - 48px))!important;
  max-height:none!important;
  border-radius:12px!important;
  overflow:hidden!important;
  transform:none!important;
  box-shadow:0 18px 48px rgba(31,35,41,.22)!important;
  animation:columnSettingsIn .2s cubic-bezier(.4,0,.2,1) both!important;
}
@keyframes columnSettingsIn{
  from{opacity:0;transform:translateY(12px) scale(.99)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
.column-settings-head.drawer-head{
  height:72px!important;
  min-height:72px!important;
  align-items:center!important;
  padding:0 32px!important;
  box-sizing:border-box!important;
}
.column-settings-head h3{
  margin:0!important;
  font-size:20px!important;
  line-height:28px!important;
}
.column-settings-close.x{
  color:#8F959E!important;
  font-size:26px!important;
}
.column-settings-close.x:hover{color:#1F2329!important}
.column-settings-body.drawer-body{
  min-height:0!important;
  padding:0!important;
  overflow:hidden!important;
}
.column-settings-grid{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  height:100%!important;
  min-height:0!important;
}
.column-settings-pane{
  display:flex!important;
  flex-direction:column!important;
  min-width:0!important;
  min-height:0!important;
  padding:24px 32px!important;
  box-sizing:border-box!important;
}
.column-settings-pane:first-child{border-right:1px solid #E5E6EB!important}
.column-settings-pane-head{
  display:flex!important;
  align-items:center!important;
  flex:0 0 28px!important;
  gap:12px!important;
  margin:0 0 16px!important;
  color:#1F2329!important;
  font-size:15px!important;
  line-height:24px!important;
}
.column-settings-pane-head b{font-weight:600!important}
.column-settings-pane-head button{
  margin-left:auto!important;
  border:0!important;
  background:transparent!important;
  padding:2px 0!important;
  color:#1677FF!important;
  font:500 14px/22px inherit!important;
  cursor:pointer!important;
}
.column-settings-pane-head button:hover{color:#245BDB!important}
.column-settings-search{
  display:flex!important;
  align-items:center!important;
  flex:0 0 40px!important;
  height:40px!important;
  gap:8px!important;
  margin:0 0 14px!important;
  padding:0 12px!important;
  border:1px solid #D9DCE1!important;
  border-radius:8px!important;
  background:#fff!important;
  box-sizing:border-box!important;
}
.column-settings-search:focus-within{
  border-color:#1677FF!important;
  box-shadow:0 0 0 2px rgba(22,119,255,.12)!important;
}
.column-settings-search input{
  width:100%!important;
  height:38px!important;
  border:0!important;
  outline:0!important;
  background:transparent!important;
  color:#1F2329!important;
  font:14px/22px inherit!important;
}
.column-settings-search input::placeholder{color:#B6BAC3!important}
.column-settings-search svg{
  order:2!important;
  flex:0 0 auto!important;
  width:18px!important;
  height:18px!important;
  fill:none!important;
  stroke:#B6BAC3!important;
  stroke-width:2!important;
  stroke-linecap:round!important;
}
.column-settings-list,
.column-settings-selected{
  min-height:0!important;
  overflow:auto!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
}
.column-settings-list{
  display:flex!important;
  flex-direction:column!important;
  gap:4px!important;
}
.column-settings-row.global-col-item{
  display:flex!important;
  align-items:center!important;
  flex:0 0 44px!important;
  height:44px!important;
  min-height:44px!important;
  gap:10px!important;
  padding:0 12px!important;
  border-radius:8px!important;
  color:#3F4652!important;
  font-size:14px!important;
  line-height:22px!important;
  cursor:pointer!important;
  box-sizing:border-box!important;
}
.column-settings-row.global-col-item:hover{background:#F5F6F7!important}
.column-settings-row.global-col-item input{
  width:16px!important;
  height:16px!important;
  margin:0!important;
  accent-color:#1677FF!important;
}
.column-settings-empty{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:96px!important;
  color:#8F959E!important;
  font-size:13px!important;
}
.column-settings-selected{
  display:flex!important;
  flex-direction:column!important;
  gap:10px!important;
  padding:0 4px 4px 0!important;
}
.column-settings-card{
  display:flex!important;
  align-items:center!important;
  flex:0 0 48px!important;
  min-height:48px!important;
  gap:10px!important;
  padding:0 12px!important;
  border:1px solid #D9DCE1!important;
  border-radius:8px!important;
  background:#fff!important;
  color:#3F4652!important;
  font-size:14px!important;
  line-height:22px!important;
  box-sizing:border-box!important;
  transition:border-color .15s ease,background-color .15s ease,opacity .15s ease!important;
}
.column-settings-card[draggable="true"]{cursor:grab!important}
.column-settings-card[draggable="true"]:active{cursor:grabbing!important}
.column-settings-card.dragging{opacity:.45!important}
.column-settings-card.is-drop-target{
  border-color:#1677FF!important;
  background:#F5F8FF!important;
}
.column-settings-drag{
  flex:0 0 14px!important;
  width:14px!important;
  color:#C9CDD4!important;
  font-size:20px!important;
  line-height:1!important;
  letter-spacing:-3px!important;
  cursor:inherit!important;
}
.column-settings-card.locked .column-settings-drag{opacity:.38!important;cursor:default!important}
.column-settings-card-label{
  flex:1!important;
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
.column-settings-fixed{
  flex:0 0 auto!important;
  color:#A8ABB2!important;
  font-size:12px!important;
}
.column-settings-remove{
  display:grid!important;
  place-items:center!important;
  flex:0 0 24px!important;
  width:24px!important;
  height:24px!important;
  border:0!important;
  border-radius:6px!important;
  background:transparent!important;
  color:#C9CDD4!important;
  font-size:20px!important;
  line-height:1!important;
  cursor:pointer!important;
}
.column-settings-remove:hover{background:#F2F3F5!important;color:#646A73!important}
.column-settings-remove:focus-visible,
.column-settings-pane-head button:focus-visible{
  outline:2px solid rgba(22,119,255,.35)!important;
  outline-offset:2px!important;
}
.column-settings-foot.drawer-foot{
  position:static!important;
  height:72px!important;
  min-height:72px!important;
  gap:12px!important;
  padding:16px 32px!important;
  box-sizing:border-box!important;
}
.column-settings-foot .btn{
  min-width:88px!important;
  height:40px!important;
  min-height:40px!important;
  border-radius:8px!important;
  font-size:14px!important;
  font-weight:500!important;
}
@media(max-width:760px){
  .column-settings-mask.drawer-mask{padding:12px!important}
  .column-settings-drawer.drawer{
    width:calc(100vw - 24px)!important;
    height:calc(100vh - 24px)!important;
  }
  .column-settings-head.drawer-head{height:60px!important;min-height:60px!important;padding:0 20px!important}
  .column-settings-body.drawer-body{overflow:auto!important}
  .column-settings-grid{grid-template-columns:1fr!important;height:auto!important}
  .column-settings-pane{min-height:300px!important;padding:20px!important}
  .column-settings-pane:first-child{border-right:0!important;border-bottom:1px solid #E5E6EB!important}
  .column-settings-list,.column-settings-selected{max-height:260px!important}
  .column-settings-foot.drawer-foot{height:64px!important;min-height:64px!important;padding:12px 20px!important}
}
/* LAST: task list/table layout revision (2026-09-04). */
html body[data-current-page="task"] .task-management-shell{
  grid-template-columns:220px minmax(0,1fr)!important;
}
html body[data-current-page="task"] .task-master-card{
  align-self:start;
  flex:0 0 auto;
}
html body[data-current-page="task"] .task-master-list{
  gap:6px;
  padding:10px;
  overflow-x:hidden;
  overflow-y:auto;
}
html body[data-current-page="task"] .task-master-list>.task-nav-item{
  grid-template-columns:minmax(0,1fr) auto;
  min-height:58px;
  padding:8px;
}
html body[data-current-page="task"] .task-master-list .task-nav-icon{
  width:32px;
  height:32px;
}
html body[data-current-page="task"] #page-task.show .task-management-main>.task-designer-table-card{
  min-height:280px!important;
}
html body[data-current-page="task"] .task-designer-section-title{
  grid-template-columns:auto minmax(0,1fr) 32px!important;
}
html body[data-current-page="task"] .task-designer-section-title>.task-designer-batch-remind{
  grid-column:1!important;
  grid-row:2!important;
}
html body[data-current-page="task"] .task-designer-section-title>.spacer{
  grid-column:2!important;
  grid-row:2!important;
}
html body[data-current-page="task"] .task-designer-section-title>.global-field-btn{
  grid-column:3!important;
  grid-row:2!important;
  width:32px!important;
  min-width:32px!important;
  height:32px!important;
  padding:0!important;
}
html body[data-current-page="task"] #page-task.show .task-designer-table-wrap{
  margin:0 16px 16px!important;
  border:1px solid #E5E6EB;
  border-radius:8px;
  background:#fff;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table{
  width:100%!important;
  min-width:840px!important;
  table-layout:fixed!important;
  border-collapse:separate!important;
  border-spacing:0!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table :is(th,td){
  box-sizing:border-box;
  overflow:hidden;
  padding:0 12px!important;
  text-overflow:ellipsis;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table th:nth-child(1),
html body[data-current-page="task"] #page-task.show #task-designer-progress-table td:nth-child(1){
  width:44px!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table th:nth-child(2),
html body[data-current-page="task"] #page-task.show #task-designer-progress-table td:nth-child(2){
  width:18%!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table th:nth-child(3),
html body[data-current-page="task"] #page-task.show #task-designer-progress-table td:nth-child(3){
  width:11%!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table th:nth-child(4),
html body[data-current-page="task"] #page-task.show #task-designer-progress-table td:nth-child(4){
  width:13%!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table th:nth-child(5),
html body[data-current-page="task"] #page-task.show #task-designer-progress-table td:nth-child(5),
html body[data-current-page="task"] #page-task.show #task-designer-progress-table th:nth-child(6),
html body[data-current-page="task"] #page-task.show #task-designer-progress-table td:nth-child(6){
  width:10%!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table th:nth-child(7),
html body[data-current-page="task"] #page-task.show #task-designer-progress-table td:nth-child(7){
  width:22%!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table .task-designer-op-head,
html body[data-current-page="task"] #page-task.show #task-designer-progress-table .task-designer-op-cell{
  width:112px!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table tbody td{
  height:56px!important;
}
html body[data-current-page="task"] #page-task.show .task-progress-row.is-selectable{
  cursor:pointer;
}
html body[data-current-page="task"] #page-task.show .task-progress-row[aria-selected="true"] td{
  background:#F5F8FF!important;
}
html body[data-current-page="task"] #page-task.show .task-progress-row:focus-visible{
  outline:2px solid rgba(22,119,255,.42);
  outline-offset:-2px;
}
html body[data-current-page="task"] #page-task.show .task-progress-cell{
  width:100%;
  min-width:0;
}
html body[data-current-page="task"] #page-task.show .task-progress-cell .task-progress-track{
  flex:1 1 auto;
  width:auto!important;
  min-width:72px;
  height:8px!important;
}
html body[data-current-page="task"] #page-task.show .task-progress-cell>b{
  flex:0 0 36px;
}
@media(max-width:1100px) and (min-width:761px){
  html body[data-current-page="task"] .task-management-shell{
    grid-template-columns:204px minmax(0,1fr)!important;
  }
}
@media(max-width:760px){
  html body[data-current-page="task"] .task-master-card{
    width:100%;
  }
  html body[data-current-page="task"] .task-master-list{
    flex-direction:row;
    overflow-x:auto;
    overflow-y:hidden;
  }
}
/* LAST: task progress uses the shared fill-table surface and full content width. */
html body[data-current-page="task"] .task-management-shell{
  grid-template-rows:auto minmax(0,1fr)!important;
}
html body[data-current-page="task"] .task-management-main{
  display:contents!important;
}
html body[data-current-page="task"] .task-master-card{
  grid-column:1;
  grid-row:1;
}
html body[data-current-page="task"] .task-info-card{
  grid-column:2;
  grid-row:1;
  min-width:0;
}
html body[data-current-page="task"] #page-task.show .task-management-main>.task-designer-table-card{
  grid-column:1/-1;
  grid-row:2;
  width:100%!important;
  min-width:0!important;
  min-height:280px!important;
  align-self:stretch;
  border:0!important;
  border-radius:8px!important;
  background:#fff!important;
  box-shadow:none!important;
}
html body[data-current-page="task"] #page-task.show .task-designer-table-wrap.tbl-scroll{
  width:calc(100% - 32px)!important;
  max-width:calc(100% - 32px)!important;
  margin:0 16px 16px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:#fff!important;
  box-shadow:none!important;
  overflow:auto!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table{
  width:100%!important;
  min-width:840px!important;
  margin:0!important;
  border-collapse:collapse!important;
  border-spacing:0!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table thead th{
  height:40px!important;
  min-height:40px!important;
  padding:0 16px!important;
  border-bottom:1px solid #F0F1F3!important;
  background:#F5F6F7!important;
  color:#1F2329!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:400!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table tbody td{
  height:56px!important;
  min-height:56px!important;
  padding:0 16px!important;
  border-bottom:1px solid #F0F1F3!important;
  background:#fff!important;
  color:#1F2329!important;
  font-size:14px!important;
  line-height:22px!important;
  font-weight:400!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table tbody tr:last-child td{
  border-bottom:0!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table tbody tr:hover td{
  background:#FAFBFC!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table .task-designer-op-head,
html body[data-current-page="task"] #page-task.show #task-designer-progress-table .task-designer-op-cell{
  background:#fff!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table .task-designer-op-head{
  background:#F5F6F7!important;
}
@media(max-width:760px){
  html body[data-current-page="task"] .task-management-main{
    display:flex!important;
  }
  html body[data-current-page="task"] #page-task.show .task-management-main>.task-designer-table-card{
    width:auto!important;
  }
}

/* Unified table column settings: right-side drawer */
#col-dd,#f2col-dd,#f2col-dd-out{display:none!important}
.column-settings-mask.drawer-mask{
  align-items:stretch!important;
  justify-content:flex-end!important;
  padding:0!important;
  background:rgba(31,35,41,.45)!important;
}
.column-settings-drawer.drawer{
  width:320px!important;
  max-width:calc(100vw - 24px)!important;
  height:100vh!important;
  max-height:100vh!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:#fff!important;
  box-shadow:-8px 0 24px rgba(31,35,41,.14)!important;
  transform:translateX(100%);
  animation:columnSettingsDrawerIn .24s cubic-bezier(.22,.61,.36,1) forwards!important;
}
@keyframes columnSettingsDrawerIn{
  from{transform:translateX(100%)}
  to{transform:translateX(0)}
}
.column-settings-drawer .column-settings-head{
  height:60px!important;
  min-height:60px!important;
  padding:0 20px!important;
  border-bottom:1px solid #E5E6EB!important;
}
.column-settings-drawer .column-settings-head h3{
  margin:0!important;
  color:#1F2329!important;
  font-size:16px!important;
  line-height:24px!important;
  font-weight:600!important;
}
.column-settings-drawer .column-settings-close{
  width:32px!important;
  height:32px!important;
  color:#646A73!important;
  font-size:24px!important;
}
.column-settings-drawer .column-settings-body{
  min-height:0!important;
  padding:20px 24px!important;
  overflow-y:auto!important;
}
.column-settings-intro{
  margin:0 0 20px!important;
  color:#8F959E!important;
  font-size:13px!important;
  line-height:20px!important;
}
.column-settings-select-all,
.column-settings-field{
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  min-height:24px!important;
  color:#1F2329!important;
  font-size:14px!important;
  line-height:22px!important;
  cursor:pointer!important;
}
.column-settings-select-all{
  margin:0 0 16px!important;
  padding:0 0 16px!important;
  border-bottom:1px solid #F0F1F3!important;
  font-weight:600!important;
}
.column-settings-list{
  display:flex!important;
  flex-direction:column!important;
  gap:16px!important;
}
.column-settings-field input,
.column-settings-select-all input{
  width:16px!important;
  height:16px!important;
  margin:0!important;
  accent-color:#1677FF!important;
  flex:0 0 16px!important;
}
.column-settings-field span{
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
.column-settings-field small{
  margin-left:auto!important;
  color:#8F959E!important;
  font-size:12px!important;
}
.column-settings-field.locked{
  color:#8F959E!important;
  cursor:not-allowed!important;
}
.column-settings-drawer .column-settings-foot{
  min-height:68px!important;
  padding:16px 20px!important;
  border-top:1px solid #E5E6EB!important;
  background:#fff!important;
  gap:12px!important;
}
.column-settings-drawer .column-settings-foot .btn{
  min-width:72px!important;
  height:34px!important;
  padding:0 18px!important;
  border-radius:6px!important;
}

/* Change log detail opens as a modal instead of expanding in the table */
html body[data-current-page="log"] #page-log.show #log-tab-changes .log-change-details>.log-change-panel{display:none!important}
.log-change-modal.modal{
  width:720px!important;
  max-width:calc(100vw - 40px)!important;
}
.log-change-modal .modal-body{padding:20px 22px!important}
.log-change-dialog-context{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
}
.log-change-dialog-context>div{
  min-height:72px;
  padding:12px 14px;
  border:1px solid #E5E6EB;
  border-radius:8px;
  background:#F7F8FA;
  box-sizing:border-box;
}
.log-change-dialog-context span,
.log-change-dialog-remark span{
  display:block;
  margin-bottom:6px;
  color:#8F959E;
  font-size:12px;
  line-height:18px;
}
.log-change-dialog-context b,
.log-change-dialog-remark b{
  display:block;
  color:#1F2329;
  font-size:13px;
  line-height:20px;
  font-weight:600;
}
.log-change-dialog-context small{
  display:block;
  margin-top:2px;
  color:#8F959E;
  font-size:11px;
  line-height:18px;
}
.log-change-dialog-remark{
  margin-top:12px;
  padding:12px 14px;
  border:1px solid #E5E6EB;
  border-radius:8px;
}
.log-change-dialog-section{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin:20px 0 10px;
  color:#1F2329;
  font-size:13px;
  line-height:20px;
}
.log-change-dialog-section>span{
  color:#646A73;
  font-size:12px;
  font-weight:400;
}
.log-change-dialog-list{
  overflow:hidden;
  border:1px solid #E5E6EB;
  border-radius:8px;
  background:#fff;
}
.log-change-dialog-list .log-change-grid{
  display:grid;
  grid-template-columns:minmax(160px,1.2fr) minmax(130px,1fr) minmax(150px,1fr);
  align-items:center;
  gap:16px;
  min-height:46px;
  padding:10px 14px;
  border-top:1px solid #F0F1F3;
  color:#646A73;
  font-size:13px;
  line-height:20px;
  box-sizing:border-box;
}
.log-change-dialog-list .log-change-grid:first-child{border-top:0}
.log-change-dialog-list .log-change-grid-head{
  min-height:40px;
  background:#F5F6F7;
  color:#1F2329;
  font-size:12px;
  font-weight:600;
}
.log-change-dialog-list del{color:#D83931;text-decoration-thickness:1px}
.log-change-dialog-list i{margin:0 8px;color:#8F959E;font-style:normal}
.log-change-dialog-list b{color:#2E7D32;font-weight:600}
.log-change-dialog-empty{padding:32px;text-align:center;color:#8F959E;font-size:13px}
@media(max-width:640px){
  .log-change-dialog-context{grid-template-columns:1fr}
  .log-change-dialog-list{overflow-x:auto}
  .log-change-dialog-list .log-change-grid{min-width:560px}
}

/* Role management: combine role metadata and permissions into one editor. */
#role-drawer .role-editor-drawer{
  width:min(760px,calc(100vw - 20px));
}
#role-drawer .drawer-body{
  padding:20px 24px 28px;
}
.role-editor-permissions{
  margin-top:24px;
  padding-top:20px;
  border-top:1px solid var(--border);
}
.role-editor-section-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:20px;
  margin-bottom:14px;
}
.role-editor-section-head h4{
  margin:0 0 4px;
  color:var(--text);
  font-size:14px;
  line-height:20px;
}
.role-editor-section-head p{
  margin:0;
  color:var(--text-3);
  font-size:12px;
  line-height:18px;
}
.role-editor-section-head>span{
  flex:0 0 auto;
  color:var(--text-3);
  font-size:12px;
  line-height:20px;
}
.role-editor-section-head>span b{color:var(--accent)}
.role-editor-permission-actions{
  display:flex;
  align-items:center;
  min-height:34px;
  margin-bottom:10px;
}
.role-editor-permission-table{
  max-height:360px;
  overflow:auto;
  border:1px solid var(--border);
  border-radius:8px;
}
.role-editor-permission-table table{min-width:620px}
.role-editor-permission-table thead{position:sticky;top:0;z-index:1}
.role-editor-permission-table th{height:40px;background:#F5F6F7}
.role-editor-permission-table td{min-height:56px;padding-top:14px;padding-bottom:14px}
.role-editor-permission-table .pchk{margin:3px 14px 3px 0}
@media(max-width:760px){
  .role-editor-section-head{display:block}
  .role-editor-section-head>span{display:block;margin-top:8px}
  .role-editor-permission-table{overflow-x:auto}
}

/* Global modal standard: centered hierarchy without header/footer dividers. */
.mask>.modal>.modal-head{
  position:relative;
  justify-content:center;
  padding:32px 48px 12px;
  border-bottom:0;
  text-align:center;
}
.mask>.modal>.modal-head>div:first-child{
  width:100%;
  min-width:0;
  text-align:center;
}
.mask>.modal>.modal-head h3{
  margin:0;
  font-size:18px;
  line-height:26px;
}
.mask>.modal>.modal-head .modal-sub{
  margin-top:6px;
  line-height:20px;
  text-align:center;
}
.mask>.modal>.modal-head .x{
  position:absolute;
  top:18px;
  right:18px;
  margin:0;
}
.mask>.modal>.modal-foot{
  justify-content:flex-end;
  padding:8px 24px 28px;
  border-top:0;
}
#confirm-modal>.modal>.modal-body{
  padding:12px 48px 20px;
}
#confirm-modal #cfm-msg{
  text-align:center;
}
@media(max-width:640px){
  .mask>.modal>.modal-head{
    padding:28px 42px 10px;
  }
  .mask>.modal>.modal-foot{
    padding:8px 14px 20px;
  }
  #confirm-modal>.modal>.modal-body{
    padding:10px 24px 18px;
  }
}

/* Roster filters: one custom dropdown treatment for status, type, and department. */
.roster-filter-select{position:relative;flex:0 0 auto}
.roster-filter-native{display:none!important}
.roster-filter-trigger{display:inline-flex!important;align-items:center;justify-content:space-between;gap:18px;width:100%;min-width:0;text-align:left;cursor:pointer}
#roster-status-select{width:112px}
#roster-type-select{width:166px}
#roster-dept-tree-select{width:166px}
.roster-filter-trigger-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.roster-filter-trigger svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;flex-shrink:0;transition:transform .16s ease}
.roster-filter-trigger[aria-expanded="true"]{border-color:var(--accent)!important;background:#fff!important;box-shadow:0 0 0 3px var(--accent-soft)!important}
.roster-filter-trigger[aria-expanded="true"] svg{transform:rotate(180deg)}
.roster-filter-trigger:disabled{cursor:not-allowed;opacity:.55}
.roster-filter-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:80;width:260px;max-height:360px;overflow:auto;padding:6px;background:#fff;border:1px solid var(--border);border-radius:9px;box-shadow:0 10px 24px rgba(31,35,41,.14)}
.roster-filter-menu[hidden]{display:none!important}
.roster-filter-option,.roster-dept-option,.roster-dept-expand{border:0;background:transparent;font:inherit;cursor:pointer;color:var(--text-2)}
.roster-filter-option{display:block;width:100%;min-height:32px;padding:7px 8px;border-radius:6px;text-align:left;font-size:12.5px;line-height:18px}
.roster-filter-option:hover,.roster-filter-option.selected{background:var(--accent-soft2);color:var(--accent);font-weight:600}
@media(max-width:760px){
  #page-roster #roster-filterbar .roster-filter-select{width:100%}
  #page-roster #roster-filterbar .roster-filter-menu{width:100%;box-sizing:border-box}
}


/* LAST: unified table column settings dual-pane editor (2026-09-04). */
.column-settings-mask.drawer-mask{
  align-items:center!important;
  justify-content:center!important;
  padding:24px!important;
  background:rgba(31,35,41,.48)!important;
}
.column-settings-drawer.drawer{
  width:min(880px,calc(100vw - 48px))!important;
  max-width:none!important;
  height:min(720px,calc(100vh - 48px))!important;
  max-height:none!important;
  margin:auto!important;
  border:0!important;
  border-radius:12px!important;
  overflow:hidden!important;
  background:#fff!important;
  box-shadow:0 18px 48px rgba(31,35,41,.22)!important;
  transform:none!important;
  animation:columnSettingsIn .2s cubic-bezier(.4,0,.2,1) both!important;
}
.column-settings-drawer .column-settings-head{
  height:72px!important;
  min-height:72px!important;
  padding:0 32px!important;
  border-bottom:1px solid #E5E6EB!important;
}
.column-settings-drawer .column-settings-head h3{
  margin:0!important;
  color:#1F2329!important;
  font-size:20px!important;
  line-height:28px!important;
  font-weight:600!important;
}
.column-settings-drawer .column-settings-close{
  width:32px!important;
  height:32px!important;
  color:#8F959E!important;
  font-size:26px!important;
}
.column-settings-drawer .column-settings-body{
  min-height:0!important;
  padding:0!important;
  overflow:hidden!important;
}
.column-settings-drawer .column-settings-grid{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  height:100%!important;
}
.column-settings-grid .column-settings-list{gap:4px!important}
.column-settings-drawer .column-settings-foot{
  position:static!important;
  height:72px!important;
  min-height:72px!important;
  padding:16px 32px!important;
  border-top:1px solid #E5E6EB!important;
  background:#fff!important;
  gap:12px!important;
}
.column-settings-drawer .column-settings-foot .btn{
  min-width:88px!important;
  height:40px!important;
  min-height:40px!important;
  padding:0 20px!important;
  border-radius:8px!important;
}
@media(max-width:760px){
  .column-settings-mask.drawer-mask{padding:12px!important}
  .column-settings-drawer.drawer{
    width:calc(100vw - 24px)!important;
    max-width:none!important;
    height:calc(100vh - 24px)!important;
    max-height:none!important;
  }
  .column-settings-drawer .column-settings-head{height:60px!important;min-height:60px!important;padding:0 20px!important}
  .column-settings-drawer .column-settings-body{overflow:auto!important}
  .column-settings-drawer .column-settings-grid{grid-template-columns:1fr!important;height:auto!important}
  .column-settings-drawer .column-settings-foot{height:64px!important;min-height:64px!important;padding:12px 20px!important}
}

/* Unified in-place editing: match the always-visible controls used by 工时填报. */
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell{
  cursor:default;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell .dpm-person-picker{
  display:block;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-edit-cell .dpm-cell-value{
  display:none;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-trigger{
  height:28px;
  min-height:28px;
  min-width:112px;
  padding:0 8px;
  border:1px solid var(--border);
  border-radius:6px;
  background:#fff;
  box-shadow:none;
  font-size:12px;
  line-height:26px;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show.dpm-inline-enabled .dpm-picker-trigger:hover{
  border-color:#B7BCC5;
  background:#fff;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-person-picker.open .dpm-picker-trigger,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-trigger:focus-visible{
  border-color:var(--accent);
  background:#fff;
  box-shadow:0 0 0 2px rgba(22,119,255,.10);
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-menu{
  top:32px;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-edit-cell.has-error .dpm-picker-trigger{
  border-color:#F54A45;
  box-shadow:0 0 0 2px rgba(245,74,69,.10);
}

html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-edit-cell:not(.is-locked) .dpm-project-edit-control{
  display:block;
  width:100%;
  min-width:128px;
  height:28px;
  min-height:28px;
  padding:0 8px;
  border:1px solid var(--border)!important;
  border-radius:6px!important;
  background:#fff!important;
  color:var(--text)!important;
  box-shadow:none!important;
  box-sizing:border-box;
  font:inherit;
  font-size:12px!important;
  line-height:26px;
  pointer-events:auto!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-edit-cell:not(.is-locked) .dpm-project-cell-value{
  display:none;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-edit-cell:not(.is-locked) .dpm-inline-input{
  cursor:text!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-edit-cell:not(.is-locked) .dpm-inline-select{
  cursor:pointer!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-edit-cell:not(.is-locked) .dpm-project-edit-control:hover{
  border-color:#B7BCC5!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-edit-cell:not(.is-locked) .dpm-project-edit-control:focus{
  border-color:var(--accent)!important;
  outline:none!important;
  box-shadow:0 0 0 2px rgba(22,119,255,.10)!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show #dpm-project-table tbody td{
  height:48px;
  box-sizing:border-box;
}
@media(max-width:1180px){
  html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-trigger{min-width:104px;}
  html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-edit-cell:not(.is-locked) .dpm-project-edit-control{min-width:118px;}
}


/* LAST: project allocation detail toolbar alignment (2026-09-04). */
html body[data-current-page="projdetail"] #page-projdetail.show .pd-page-head{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
}
html body[data-current-page="projdetail"] #page-projdetail.show .pd-back-icon{
  display:grid!important;
  place-items:center!important;
  flex:0 0 32px!important;
  width:32px!important;
  min-width:32px!important;
  height:32px!important;
  min-height:32px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  color:#646A73!important;
  border-radius:6px!important;
}
html body[data-current-page="projdetail"] #page-projdetail.show .pd-back-icon:hover{
  background:#F2F3F5!important;
  color:#1F2329!important;
}
html body[data-current-page="projdetail"] #page-projdetail.show .pd-back-icon svg{
  width:20px!important;
  height:20px!important;
  margin:0!important;
}
html body[data-current-page="projdetail"] #page-projdetail.show .pd-list-toolbar{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:12px!important;
  flex-wrap:nowrap!important;
}
html body[data-current-page="projdetail"] #page-projdetail.show .pd-list-toolbar>h3{
  flex:0 0 auto!important;
  margin-right:4px!important;
}
html body[data-current-page="projdetail"] #page-projdetail.show .pd-list-toolbar>.srch{
  flex:0 1 250px!important;
  width:250px!important;
  min-width:180px!important;
}
html body[data-current-page="projdetail"] #page-projdetail.show .pd-list-toolbar>.fsel{
  flex:0 0 auto!important;
}
@media(max-width:1050px){
  html body[data-current-page="projdetail"] #page-projdetail.show .pd-list-toolbar{flex-wrap:wrap!important}
  html body[data-current-page="projdetail"] #page-projdetail.show .pd-list-toolbar>.spacer{display:none!important}
}

/* Permission person values: compact avatar cards inside the in-place editor. */
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-text{
  display:flex;
  align-items:center;
  gap:4px;
  min-width:0;
  overflow:hidden;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-selected-person{
  display:inline-flex;
  align-items:center;
  gap:4px;
  flex:0 0 auto;
  max-width:112px;
  height:22px;
  padding:0 5px 0 2px;
  border-radius:5px;
  background:#F2F3F5;
  color:#1F2329;
  box-sizing:border-box;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-selected-person-avatar{
  display:inline-grid;
  place-items:center;
  flex:0 0 18px;
  width:18px;
  height:18px;
  border-radius:50%;
  background:#E8EFFF;
  color:#245BDB;
  font-size:10px;
  font-weight:600;
  line-height:1;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-selected-person-name{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-trigger,
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-edit-cell:not(.is-locked) .dpm-project-edit-control{
  border-color:#E5E6EB!important;
  border-width:1px!important;
  border-style:solid!important;
  border-radius:6px!important;
  box-shadow:none!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-person-picker.open .dpm-picker-trigger,
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-picker-trigger:focus-visible,
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-edit-cell:not(.is-locked) .dpm-project-edit-control:focus{
  border-color:#1677FF!important;
  box-shadow:0 0 0 2px rgba(22,119,255,.10)!important;
}


/* LAST: align project-detail back icon with the title row. */
html body[data-current-page="projdetail"] #page-projdetail.show .pd-page-head{
  display:block!important;
}
html body[data-current-page="projdetail"] #page-projdetail.show .pd-title-row{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
}
html body[data-current-page="projdetail"] #page-projdetail.show .pd-title-row>h2{
  margin:0!important;
}
html body[data-current-page="projdetail"] #page-projdetail.show .pd-page-head>p{
  margin-left:42px!important;
}

/* Shared people cards: one visual language across permission, project and task tables. */
.ui-person-card{
  display:inline-flex;
  align-items:center;
  gap:7px;
  flex:0 0 auto;
  max-width:100%;
  height:30px;
  padding:0 10px 0 3px;
  border-radius:999px;
  background:#F2F3F5;
  color:#1F2329;
  box-sizing:border-box;
  white-space:nowrap;
  vertical-align:middle;
}
.ui-person-card.is-compact{height:22px;gap:4px;padding:0 6px 0 2px}
.ui-person-avatar{
  display:inline-grid;
  place-items:center;
  flex:0 0 24px;
  width:24px;
  height:24px;
  border-radius:50%;
  font-size:11px;
  font-weight:700;
  line-height:1;
  box-shadow:0 0 0 2px rgba(255,255,255,.92);
}
.ui-person-card.is-compact .ui-person-avatar{flex-basis:18px;width:18px;height:18px;font-size:10px;box-shadow:none}
.ui-person-name{min-width:0;overflow:hidden;text-overflow:ellipsis;color:#1F2329;font-size:13px;font-weight:400}
.ui-person-card.is-compact .ui-person-name{font-size:12px}
.ui-person-placeholder{color:#A8ABB2}
.ui-person-tone-0 .ui-person-avatar,.dpm-picker-avatar.ui-person-tone-0{background:#FFF0DB;color:#C76B00}
.ui-person-tone-1 .ui-person-avatar,.dpm-picker-avatar.ui-person-tone-1{background:#E8F7F0;color:#13865A}
.ui-person-tone-2 .ui-person-avatar,.dpm-picker-avatar.ui-person-tone-2{background:#E8F3FF;color:#2167D5}
.ui-person-tone-3 .ui-person-avatar,.dpm-picker-avatar.ui-person-tone-3{background:#F0E9FF;color:#7A3ED1}
.ui-person-tone-4 .ui-person-avatar,.dpm-picker-avatar.ui-person-tone-4{background:#FFE9EC;color:#C53D58}
.ui-person-tone-5 .ui-person-avatar,.dpm-picker-avatar.ui-person-tone-5{background:#E8F7FA;color:#137D8A}

html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-edit-cell:not(.is-locked) .dpm-project-person-editor{
  position:relative;
  display:flex;
  align-items:center;
  width:100%;
  min-width:128px;
  height:28px;
  border:1px solid #E5E6EB;
  border-radius:6px;
  background:#fff;
  box-sizing:border-box;
  overflow:hidden;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-edit-cell.is-locked .dpm-project-person-editor{display:none}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-person-display{
  display:flex;
  align-items:center;
  gap:4px;
  min-width:0;
  max-width:100%;
  padding:0 26px 0 4px;
  overflow:hidden;
  pointer-events:none;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-person-editor>.dpm-project-edit-control{
  position:absolute!important;
  inset:0!important;
  display:block!important;
  width:100%!important;
  min-width:0!important;
  height:100%!important;
  min-height:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  background-image:none!important;
  box-shadow:none!important;
  z-index:2;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-person-editor>.dpm-inline-select{opacity:0;cursor:pointer!important}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-person-editor:not(.is-multi)::after{
  content:"";
  position:absolute;
  right:9px;
  top:9px;
  width:6px;
  height:6px;
  border-right:1.5px solid #646A73;
  border-bottom:1.5px solid #646A73;
  transform:rotate(45deg);
  pointer-events:none;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-person-editor.is-multi>.dpm-inline-input{
  color:transparent!important;
  caret-color:transparent;
  padding:0 8px!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-person-editor.is-multi:focus-within .dpm-project-person-display{display:none}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-person-editor.is-multi:focus-within>.dpm-inline-input{color:#1F2329!important;caret-color:#1F2329}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-person-editor:hover{border-color:#B7BCC5}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-person-editor:focus-within{border-color:#1677FF;box-shadow:0 0 0 2px rgba(22,119,255,.10)}

/* Task management: use document scrolling while keeping the page heading,
   period filter, and progress-table header visible. */
html body[data-current-page="task"]{
  overflow-x:hidden!important;
  overflow-y:auto!important;
}
html body[data-current-page="task"] .layout{
  min-height:100vh!important;
  overflow:visible!important;
}
html body[data-current-page="task"] .main,
html body[data-current-page="task"] .main>.content,
html body[data-current-page="task"] .main>.content>#page-task.show,
html body[data-current-page="task"] #page-task.show>#task-worktime,
html body[data-current-page="task"] .task-management-shell{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="task"] .main{
  min-height:100vh!important;
}
html body[data-current-page="task"] .main>.content{
  min-height:100vh!important;
  padding-bottom:32px!important;
}
html body[data-current-page="task"] .main>.content>#page-task.show{
  display:block!important;
}
html body[data-page-period-local="1"][data-current-page="task"] #page-task.show>.page-head.page-head-with-period{
  position:sticky!important;
  inset:auto!important;
  top:56px!important;
  z-index:45!important;
  width:100%!important;
  height:52px!important;
  min-height:52px!important;
  margin:0 0 16px!important;
  padding:0 166px 0 0!important;
  background:var(--bg)!important;
}
html body[data-page-period-local="1"][data-current-page="task"] .main>#mpicker{
  position:fixed!important;
  top:72px!important;
  right:16px!important;
  bottom:auto!important;
  left:auto!important;
  z-index:80!important;
}
html body[data-current-page="task"] .task-management-shell{
  grid-template-rows:auto auto!important;
  align-items:start!important;
}
html body[data-current-page="task"] .task-management-main{
  overflow:visible!important;
}
html body[data-current-page="task"] #page-task.show .task-management-main>.task-designer-table-card{
  display:flex!important;
  flex:none!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
html body[data-current-page="task"] #page-task.show .task-designer-table-wrap.tbl-scroll{
  flex:none!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  overscroll-behavior:auto!important;
  scrollbar-gutter:auto!important;
}
html body[data-current-page="task"] #page-task.show #task-designer-progress-table thead th{
  position:static!important;
  top:auto!important;
}
html body[data-current-page="task"] .task-page-sticky-head{
  display:none!important;
}
html body[data-current-page="task"] .task-page-sticky-head.show{
  display:block!important;
}

/* Permission table cleanup: remove redundant guidance and give editors breathing room. */
html body[data-current-page="deptpermissions"] #page-deptpermissions.show>.tbl-wrap>.card-head{display:none!important}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table{min-width:1300px!important}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table thead th:nth-child(n+3):nth-child(-n+7),
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-dept-overview td.dpm-edit-cell{
  padding-left:8px!important;
  padding-right:8px!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table thead th:nth-child(3){min-width:150px}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table thead th:nth-child(4),
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table thead th:nth-child(5),
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table thead th:nth-child(6){min-width:170px}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table thead th:nth-child(7){min-width:160px}

/* Project Finance BP uses the same person-picker shell as Project Owner. */
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker{
  position:relative;
  display:none;
  width:100%;
  min-width:128px;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show.dpm-inline-enabled #dpm-project-table .dpm-project-finance-picker{display:block}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-trigger{
  display:flex;
  align-items:center;
  gap:6px;
  width:100%;
  min-width:128px;
  height:28px;
  min-height:28px;
  padding:0 8px 0 4px;
  border:1px solid #E5E6EB;
  border-radius:6px;
  background:#fff;
  color:#1F2329;
  font:inherit;
  font-size:12px;
  line-height:26px;
  text-align:left;
  cursor:pointer;
  box-shadow:none;
  box-sizing:border-box;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-trigger:hover{border-color:#B7BCC5}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker.open .dpm-picker-trigger,
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-trigger:focus-visible{
  border-color:#1677FF;
  outline:none;
  box-shadow:0 0 0 2px rgba(22,119,255,.10);
}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-text{
  display:flex;
  align-items:center;
  gap:4px;
  flex:1;
  min-width:0;
  overflow:hidden;
  white-space:nowrap;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-text.is-placeholder{color:#A8ABB2}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-trigger svg{
  width:14px;
  height:14px;
  flex:0 0 14px;
  fill:none;
  stroke:currentColor;
  stroke-width:2;
  transition:transform .16s ease;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker.open .dpm-picker-trigger svg{transform:rotate(180deg)}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-menu{
  position:absolute;
  z-index:90;
  top:32px;
  left:0;
  display:none;
  width:232px;
  padding:8px;
  border:1px solid #E5E6EB;
  border-radius:9px;
  background:#fff;
  box-shadow:0 8px 24px rgba(31,35,41,.14);
  box-sizing:border-box;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker.open .dpm-picker-menu{display:block}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-search{
  width:100%;
  height:32px;
  margin:0 0 6px;
  padding:0 9px;
  border:1px solid #D0D3D8;
  border-radius:6px;
  color:#1F2329;
  background:#fff;
  font:inherit;
  box-sizing:border-box;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-search:focus{border-color:#1677FF;outline:none;box-shadow:0 0 0 2px rgba(22,119,255,.10)}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-options{max-height:220px;overflow:auto}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-option{
  display:flex;
  align-items:center;
  gap:8px;
  min-height:34px;
  padding:4px 7px;
  border-radius:6px;
  color:#1F2329;
  cursor:pointer;
  box-sizing:border-box;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-option[hidden]{display:none!important}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-option:hover{background:#F5F8FF}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-option input{width:14px;height:14px;margin:0;accent-color:#1677FF}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-avatar{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  flex:0 0 22px;
  border-radius:50%;
  font-size:11px;
  font-weight:600;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-name{min-width:0;flex:1}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-check{color:#1677FF;opacity:0}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-option:has(input:checked) .dpm-picker-check{opacity:1}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-footer{
  display:flex;
  justify-content:space-between;
  margin-top:6px;
  padding-top:6px;
  border-top:1px solid #F0F1F3;
}
html body[data-current-page="deptprojects"] #page-deptprojects.show .dpm-project-finance-picker .dpm-picker-footer button{
  padding:3px 5px;
  border:0;
  color:#1677FF;
  background:transparent;
  font:inherit;
  font-weight:600;
  cursor:pointer;
}

/* Permission department tree and frozen selection/department columns. */
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table{
  border-collapse:separate!important;
  border-spacing:0!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table :is(th,td):nth-child(1){
  position:sticky!important;
  left:0!important;
  width:42px!important;
  min-width:42px!important;
  max-width:42px!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table :is(th,td):nth-child(2){
  position:sticky!important;
  left:42px!important;
  width:220px!important;
  min-width:220px!important;
  max-width:220px!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table thead :is(th:nth-child(1),th:nth-child(2)){
  z-index:24!important;
  background:#F7F8FA!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table tbody :is(td:nth-child(1),td:nth-child(2)){
  z-index:10!important;
  background:#fff!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-permission-table :is(th,td):nth-child(2){
  box-shadow:8px 0 12px -12px rgba(31,35,41,.48);
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-dept-overview tr.dpm-row-current:not(.dpm-row-selected)>:is(td:nth-child(1),td:nth-child(2)){
  background:#F7F9FC!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-dept-overview tr.dpm-row-selected>:is(td:nth-child(1),td:nth-child(2)){
  background:#EDF3FF!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show #dpm-dept-overview tr:not(.dpm-row-selected):not(.dpm-row-current):hover>:is(td:nth-child(1),td:nth-child(2)){
  background:#FAFBFC!important;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-dept-name{
  display:flex;
  align-items:center;
  gap:6px;
  min-width:0;
  height:100%;
  padding-left:calc(var(--dpm-depth, 0) * 28px)!important;
  white-space:nowrap;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-dept-label{
  min-width:0;
  overflow:hidden;
  color:#344054;
  text-overflow:ellipsis;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-dept-name.is-branch .dpm-dept-label{
  font-weight:600;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-dept-name.is-leaf .dpm-dept-label{
  font-weight:400;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-tree-toggle{
  appearance:none;
  display:inline-grid;
  place-items:center;
  width:18px;
  height:24px;
  min-width:18px;
  flex:0 0 18px;
  padding:0!important;
  border:0;
  border-radius:4px;
  background:transparent;
  color:#667085;
  cursor:pointer;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-tree-toggle:hover{
  background:#F2F4F7;
  color:#344054;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-tree-toggle:focus-visible{
  outline:2px solid rgba(47,109,246,.35);
  outline-offset:1px;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-tree-caret{
  width:0;
  height:0;
  border-top:4px solid transparent;
  border-bottom:4px solid transparent;
  border-left:6px solid currentColor;
  transform-origin:3px 4px;
  transition:transform .16s ease;
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-tree-toggle.is-open .dpm-tree-caret{
  transform:rotate(90deg);
}
html body[data-current-page="deptpermissions"] #page-deptpermissions.show .dpm-tree-leaf{
  display:inline-grid;
  place-items:center;
  width:18px;
  height:24px;
  flex:0 0 18px;
}

/* Change-log tabs use the same full-label underline treatment as summary tabs. */
html body[data-current-page="log"] #page-log.show > .log-content-shell > #log-tabs{
  min-height:56px!important;
  padding:0 16px!important;
  align-items:center!important;
  gap:24px!important;
}
html body[data-current-page="log"] #page-log.show > .log-content-shell > #log-tabs .ts{
  position:relative!important;
  width:auto!important;
  min-width:0!important;
  height:56px!important;
  min-height:56px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  transition:none!important;
  color:var(--text-2)!important;
  font-size:14px!important;
  font-weight:400!important;
}
html body[data-current-page="log"] #page-log.show > .log-content-shell > #log-tabs .ts:hover,
html body[data-current-page="log"] #page-log.show > .log-content-shell > #log-tabs .ts.active{
  color:var(--accent)!important;
  background:transparent!important;
}
html body[data-current-page="log"] #page-log.show > .log-content-shell > #log-tabs .ts.active{
  font-weight:600!important;
}
html body[data-current-page="log"] #page-log.show > .log-content-shell > #log-tabs .ts.active::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  width:auto!important;
  height:3px!important;
  border-radius:3px 3px 0 0!important;
  background:var(--accent)!important;
}


/* Unified page content card: toolbar, tabs, and list share one flat surface. */
:root{
  --page-card-bg:#fff;
  --page-card-border:#E5E6EB;
  --page-card-radius:8px;
}

html body[data-current-page] :is(
  #page-deptpermissions.show > .tbl-wrap,
  #page-fill2.show > .fill2-list-shell,
  #page-workconfirm.show .workconfirm-card,
  #page-log.show > .log-content-shell,
  #page-allprojects.show > .tbl-wrap,
  #page-projdetail.show > .tbl-wrap,
  #page-exceptions.show > .tbl-wrap
){
  background:var(--page-card-bg)!important;
  border:1px solid var(--page-card-border)!important;
  border-radius:var(--page-card-radius)!important;
  box-shadow:none!important;
}

html body[data-current-page="dashboard"] #page-dashboard.show > .tab-strip,
html body[data-current-page="roles"] #page-roles.show > .roles-actions,
html body[data-current-page="deptprojects"] #page-deptprojects.show > #dpm-filterbar,
html body[data-current-page="roster"] #page-roster.show > #roster-filterbar,
html body[data-current-page="allprojects"] #page-allprojects.show > .toolbar,
html body[data-current-page="adjustment"] #page-adjustment.show > .adj-filter-card{
  margin-bottom:0!important;
  background:var(--page-card-bg)!important;
  border:1px solid var(--page-card-border)!important;
  border-bottom:0!important;
  border-radius:var(--page-card-radius) var(--page-card-radius) 0 0!important;
  box-shadow:none!important;
}

html body[data-current-page="dashboard"] #page-dashboard.show > #sum-global-filter-card,
html body[data-current-page="deptprojects"] #page-deptprojects.show > #dpm-actions,
html body[data-current-page="adjustment"] #page-adjustment.show > .adj-action-row{
  margin-bottom:0!important;
  background:var(--page-card-bg)!important;
  border:1px solid var(--page-card-border)!important;
  border-top:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}

html body[data-current-page="dashboard"] #page-dashboard.show > :is(#sum-view-proj,#sum-view-dept,#sum-view-detail),
html body[data-current-page="roles"] #page-roles.show > .tbl-wrap,
html body[data-current-page="deptprojects"] #page-deptprojects.show > #dpm-tab-project,
html body[data-current-page="roster"] #page-roster.show > .fill-layout,
html body[data-current-page="allprojects"] #page-allprojects.show > .tbl-wrap,
html body[data-current-page="adjustment"] #page-adjustment.show > .tbl-wrap{
  margin-top:0!important;
  margin-bottom:0!important;
  background:var(--page-card-bg)!important;
  border:1px solid var(--page-card-border)!important;
  border-top:0!important;
  border-radius:0 0 var(--page-card-radius) var(--page-card-radius)!important;
  box-shadow:none!important;
  overflow:hidden!important;
}

/* Role management has no time-scoped data, so keep the month filter out of its header. */
html body[data-current-page="roles"] :is(.topbar>#mpicker,#page-roles .page-head>#mpicker){display:none!important}

/* The shared period picker is repositioned under .main on page-local layouts. */
html body[data-current-page="roles"] :is(.main>#mpicker,.topbar>#mpicker,#page-roles .page-head>#mpicker){display:none!important}

html body[data-current-page="roster"] #page-roster.show > .fill-layout > .fill-main > #roster-table-wrap{
  border:0!important;
  border-radius:0!important;
}

/* 项目配置清单：表头默认随页面流动，滚动到工具栏下方后才吸顶。 */
html body[data-current-page="deptprojects"] #dpm-project-table thead th{
  position:static!important;
  top:auto!important;
}
html body[data-current-page="deptprojects"] #page-deptprojects.dpm-table-sticky-active #dpm-project-table thead th{
  position:sticky!important;
  top:172px!important;
  z-index:40!important;
}
