:root{font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:#1c2024;background:#f4f2ec;font-size:14px}*{box-sizing:border-box}body.finance-page{margin:0;min-height:100vh;display:flex;flex-direction:column}a{color:#121950}a:hover{color:#222f57}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled:not(:where(.mo-root *)){cursor:not-allowed;background:#eeebe4;color:#72767a;border-color:#dfdbd1}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #121950;outline-offset:2px}.finance-page main,.finance-main{width:100%;max-width:none;margin:0 auto;padding:24px;flex:1;min-width:0}.finance-page h1{font:700 26px "Songti SC",serif;margin:0 0 12px}.finance-page h2{font:700 19px "Songti SC",serif;margin:0 0 12px}.finance-page h3{font-size:15px}.finance-page p{line-height:1.6}.finance-page section,.finance-card{background:#fff;border:1px solid #e3dfd5;box-shadow:0 1px 2px #2822140a;padding:18px;margin:16px 0}.finance-page .notice,.finance-page [role=alert]{background:#f8efda;border-top:2px solid #b08018;padding:12px 14px}.finance-page [role=alert]{background:#f9eae5;border-top-color:#a3321f}.finance-page .empty{padding:24px;background:#fff;color:#686c71}.finance-page table{border-collapse:collapse;width:100%;font-size:13px}.finance-page th,.finance-page td{text-align:left;vertical-align:top;border-bottom:1px solid #ece9e2;padding:9px 10px}.finance-page th{border-bottom:1px solid #2e3236;color:#44484d;white-space:nowrap;background:#fff}.finance-page td:not(:first-child){font-variant-numeric:tabular-nums}.finance-page table td:first-child{position:sticky;left:0;background:#fff;z-index:1}.finance-page table tr:hover td{background:#faf9f5}.finance-page table tr:hover td:first-child{background:#faf9f5}.finance-page table{min-width:840px}.finance-page .table-wrap{overflow-x:auto;max-width:100%}.finance-page form{margin:12px 0}.finance-page input,.finance-page select,.finance-page textarea{border:1px solid #cdc8bc;border-radius:2px;padding:7px 9px;background:#fff;max-width:100%}.finance-page input[type=checkbox]{width:auto}.finance-page button:not(:where(.mo-root *)),.finance-page .btn{border:1px solid #121950;border-radius:2px;background:#121950;color:#fff;padding:7px 13px;min-height:34px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.finance-page button:not(:where(.mo-root *)):hover,.finance-page .btn:hover{background:#222f57}.finance-page .btn.secondary,.finance-page button.secondary:not(:where(.mo-root *)){background:#fff;color:#121950}.finance-page label{display:inline-flex;flex-direction:column;gap:4px;margin-right:12px;color:#44484d}.finance-page code{overflow-wrap:anywhere;font-size:12px}.finance-page dl{display:grid;grid-template-columns:180px 1fr;gap:8px}.finance-page dt{color:#686c71}.finance-page dd{margin:0;overflow-wrap:anywhere}.finance-page .person{margin:16px 0}.finance-page .status-chip{display:inline-block;background:#d3eaff;color:#121950;padding:2px 8px;font-size:12px}.finance-page .status-chip.warn{background:#f8efda;color:#7a5200}.finance-page .status-chip.ok{background:#e8f0e9;color:#2d6a45}.finance-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,1fr);gap:16px}.finance-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:#ece9e2;border:1px solid #e3dfd5}.finance-kpis>div{padding:18px;background:#fff}.finance-kpis small{display:block;color:#686c71}.finance-kpis strong{font-size:23px;font-variant-numeric:tabular-nums}.finance-page .platform-footer{border-top:1px solid #dfdbd1}@media(max-width:1180px){.finance-page main,.finance-main{padding:16px}.finance-grid{grid-template-columns:1fr}.finance-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.finance-kpis{grid-template-columns:1fr}}

body.finance-page{max-width:none;padding:0}.finance-page .table-wrap>table{min-width:840px}.calendar-split .table-wrap>table,.calendar-split table{min-width:0}.finance-page .table-wrap{overflow:auto}.finance-page .card{background:#fff}
.finance-batch{padding:12px 0;border-top:1px solid #ece9e2}.finance-batch>div{display:flex;justify-content:space-between;gap:8px}.finance-batch small{display:block;color:#686c71;margin:4px 0}.finance-batch a{font-size:13px}
.finance-panel{background:#fff;border:1px solid #e2ded5;padding:18px;margin:16px 0}.finance-panel h2{margin-top:0}.finance-panel h3{font-size:15px;margin:12px 0 6px}.finance-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.finance-form label{display:grid;gap:4px}.finance-form input,.finance-form select{min-height:36px}.finance-form button{min-height:36px}.finance-alert{padding:12px;background:#faeee9;border-left:4px solid #a3321f}.finance-alert .btn{margin-left:12px;min-height:30px;padding:4px 10px}.finance-success{color:#326348;font-weight:600}.finance-blockers{color:#8b3d2e}.finance-result-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.finance-result-columns>div{border:1px solid #e3ded4;padding:12px;background:#faf9f6}.finance-result-columns p{margin:6px 0}.finance-person-fields{display:flex;align-items:end;flex-wrap:wrap;gap:12px;width:100%;padding:10px 0;border-bottom:1px solid #e6e2d9}.finance-person-fields strong{min-width:100px}@media(max-width:760px){.finance-result-columns{grid-template-columns:1fr}.finance-person-fields{display:grid;grid-template-columns:1fr}.finance-form{align-items:stretch}}
.finance-page .finance-check{display:flex;flex-direction:row;align-items:center;gap:6px;margin:6px 0}
.finance-subnav{display:flex;gap:16px;margin:0 0 8px}.finance-subnav strong{color:#121950;border-bottom:2px solid #121950}.check-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.4fr) minmax(0,1fr);gap:12px}.check-columns>div{border:1px solid #e3ded4;padding:12px;background:#faf9f6;min-width:0}.check-columns p{margin:6px 0}.check-ok{color:#326348}.check-bad{color:#8b3d2e}.check-diff{border-top:1px solid #e3ded4;padding:10px 0}.check-diff h4{margin:0 0 4px;font-size:15px}.finance-page .check-diff table{min-width:0}.finance-page .check-diff td,.finance-page .check-diff th{padding:6px 8px}.check-registered{color:#44484d}.finance-page .check-grand td{font-weight:700;border-top:1px solid #2e3236}@media(max-width:1000px){.check-columns{grid-template-columns:1fr}}
.month-page main{padding-bottom:0}.month-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.month-title h1{margin:0 8px 0 0}.chip{border:1px solid #dfdbd1;background:#fff;padding:3px 10px;font-size:13px}.month-switch{margin:0 0 0 auto!important;display:flex;gap:6px;align-items:center}.month-steps{list-style:none;padding:0;margin:0 0 12px;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px}.month-steps li{background:#fff;border:1px solid #e3dfd5;border-top:3px solid #c9c4b8;padding:0;display:grid}.month-steps li>a{display:grid;gap:4px;padding:8px 10px;height:100%;text-decoration:none;color:#1c2024}.month-steps li:hover{background:#faf9f5;border-color:#121950}.month-steps li>a:focus-visible{outline:2px solid #121950;outline-offset:-3px}.month-steps li.st-done{border-top-color:#326348}.month-steps li.st-todo{border-top-color:#b08018}.month-steps li.st-diff{border-top-color:#a3321f}.month-steps li.st-on{outline:2px solid #121950;background:#d3eaff}.month-steps span{font-weight:700}.month-steps b{display:inline-block;width:20px;height:20px;border-radius:50%;background:#121950;color:#fff;text-align:center;font-size:12px;line-height:20px;margin-right:4px}.month-steps em{font-style:normal;font-size:12px}.st-done em{color:#326348}.st-todo em{color:#7a5200}.st-diff em{color:#a3321f}.st-none em{color:#72767a}.month-steps small{color:#686c71;font-size:12px}.panel-head{display:flex;align-items:center;gap:12px;justify-content:space-between;margin-bottom:10px}.panel-head h2{margin:0}.changes{display:flex;gap:8px;flex-wrap:wrap}.change{border:1px solid #e3dfd5;padding:3px 8px;font-size:13px}.gain{color:#326348}.loss{color:#a3321f}.tag{display:inline-block;font-size:12px;padding:1px 6px;margin:0 4px 2px 0;background:#d3eaff;color:#121950}.tg-prob,.tg-chg{background:#f8efda;color:#7a5200}.tg-leave,.tg-bad{background:#f9eae5;color:#8b3d2e}.tg-pt{background:#efe8f5;color:#5b3f7a}.finance-page td.num,.finance-page th.num{text-align:right}.finance-page th small{display:block;color:#7a5200;font-weight:400;font-size:11px}.finance-page td small{display:block;color:#686c71;font-size:12px}.sheet input{width:92px;text-align:right}.finance-page table.sheet td:first-child{min-width:150px}.finance-page table.sheet{min-width:1180px}.finance-page table.contrib td:first-child{white-space:nowrap}.finance-page table tfoot td{font-weight:700;border-top:1px solid #2e3236}.calc summary{cursor:pointer;text-decoration:underline dotted}.calc p{margin:2px 0;font-size:12px;color:#44484d;text-align:left;white-space:nowrap}.bad{color:#a3321f}th.grp{text-align:center;color:#686c71;font-weight:400}.actions{margin-top:12px}.b.b-ok{color:#326348}.month-totals{position:sticky;bottom:0;z-index:5;margin:0 -24px;background:#fff;border-top:2px solid #2e3236;display:grid;grid-template-columns:80px repeat(6,minmax(0,1fr));gap:1px}.month-totals div{padding:8px 14px}.month-totals small{display:block;color:#686c71;font-size:12px}.month-totals strong{font-size:18px;font-variant-numeric:tabular-nums}@media(max-width:1180px){.month-steps{grid-template-columns:repeat(4,minmax(0,1fr))}.sheet input{width:88px}}
.panel-head .note{color:#686c71;font-size:13px;margin-right:auto}
.tax-actions{display:flex;align-items:end;gap:14px;flex-wrap:wrap;margin-bottom:10px}.tax-actions form{margin:0}
.import-preview{border:1px solid #e3ded4;background:#faf9f6;padding:12px;margin:10px 0}.import-preview h3{margin-top:0}
.finance-page td.supp{background:#fbf6e8}.import-preview summary{cursor:pointer;font-weight:700}.import-preview textarea{width:100%;font:inherit}/* WP-29 框架：固定顶栏与导航、公司/工资月切换器、用户菜单 */
.fw-menu{position:relative}.fw-menu summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:0 10px;height:42px;white-space:nowrap}.fw-menu summary::-webkit-details-marker{display:none}.fw-menu summary small,.fw-static small{font-size:11px;color:#686c71;display:block;line-height:1.1}.fw-menu summary b,.fw-static b{font-size:14px;display:block;line-height:1.2}.fw-menu summary i{font-size:0;width:8px;height:8px;margin:-4px 2px 0 2px;border:solid #4a4e53;border-width:0 2px 2px 0;transform:rotate(45deg);flex:none}.fw-menu[open] summary i{transform:rotate(-135deg);margin-top:4px}.fw-menu[open] summary{background:#f4f2ec}.fw-static{display:flex;flex-direction:column;justify-content:center;padding:0 10px}
.fw-panel{position:absolute;top:46px;left:0;min-width:280px;background:#fff;border:1px solid #cdc8bc;box-shadow:0 8px 24px #0002;z-index:40;padding:4px 0}.fw-panel h6{margin:0;padding:6px 14px;font-size:11px;font-weight:400;color:#686c71;border-bottom:1px solid #ece9e2}.fw-panel a,.fw-panel button{display:block;width:100%;text-align:left;padding:9px 14px;text-decoration:none;color:#1c2024;background:none;border:0;border-radius:0;min-height:0;font-weight:400}.fw-panel a:hover,.fw-panel button:hover{background:#f4f2ec;color:#1c2024}.fw-panel a.on{background:#d3eaff;color:#121950;font-weight:700}
.fw-month{display:flex;align-items:center;height:44px;border:1px solid #cdc8bc;border-radius:6px;background:#fff}.fw-month .fw-menu summary b{font-size:17px;font-weight:600;color:#1c2024}.fw-month .fw-arrow{display:flex;align-items:center;height:42px;padding:0 12px;font-weight:700;color:#121950;text-decoration:none;font-size:20px;line-height:1}.fw-month a.fw-arrow:hover{background:#f4f2ec;color:#222f57}.fw-month .fw-arrow.off{color:#c9c4b8;cursor:default}.fw-months{min-width:0;width:max-content;padding:6px 14px 14px}.fw-months h6{padding:10px 0 6px;border:0;font-size:12px}.fw-month-grid{display:grid;grid-template-columns:repeat(4,76px);gap:6px}.fw-panel .fw-month-grid a{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:76px;height:46px;padding:0;border:1px solid #dfdbd1;border-radius:4px;font-size:15px;text-align:center}.fw-panel .fw-month-grid a small{font-size:10px;line-height:1;color:#7a5200;margin-top:2px}.fw-panel .fw-month-grid a.on{border-color:#121950}.fw-panel .fw-month-grid a.on small{color:#121950}
.tnum{font-variant-numeric:tabular-nums}
.finance-page .empty-state{padding:40px 24px;text-align:center;background:#fff;border:1px solid #e3dfd5;color:#44484d}.finance-page .empty-state .btn{margin-top:14px}
/* 页面标题区：名称、公司 · 工资月、右侧操作 */
.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:4px 0 16px}.page-head h1{margin:0}.h1-company{color:#1c2024;font-weight:600;font-size:22px}.page-head .page-sub{color:#686c71;margin:0 0 4px;font-size:14px}.page-head .page-actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.crumb{font-size:13px;color:#686c71;margin-bottom:6px}.crumb a{color:#121950;text-decoration:none}.crumb a:hover{text-decoration:underline}
.page-tabs{display:flex;gap:4px;border-bottom:1px solid #cdc8bc;margin:0 0 16px}.page-tabs a{padding:9px 18px;text-decoration:none;color:#44484d;font-weight:600;border:1px solid #cdc8bc;border-bottom:0;border-radius:6px 6px 0 0;background:#ece9e1}.page-tabs a:hover{background:#f6f4ef}.page-tabs a[aria-current=page]{background:#fff;color:#121950;border-top:2px solid #121950;border-bottom:1px solid #fff;margin-bottom:-1px}
.filters{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:0 0 12px}.filters label{margin:0}.filters input,.filters select{min-height:34px}.filters .seg{display:inline-flex;border:1px solid #cdc8bc;border-radius:2px;overflow:hidden}.filters .seg label{margin:0;padding:6px 12px;cursor:pointer;flex-direction:row;gap:6px;color:#44484d;background:#fff;border-right:1px solid #cdc8bc}.filters .seg label:last-child{border-right:0}.filters .seg input{display:none}.filters .seg label:has(input:checked){background:#d3eaff;color:#121950;font-weight:700}
/* 轻提示与确认框 */
.toast{margin:0;padding:10px 24px;background:#e8f0e9;color:#2d6a45;border-bottom:1px solid #cfe0d3;font-size:13.5px;transition:opacity .4s}.toast-warn{background:#f8efda;color:#7a5200;border-bottom-color:#e8d9a8;display:flex;align-items:center;justify-content:space-between;gap:16px}
/* 警示提示条不自动消失，可手动关闭（WP-99 收 WP-98 小问题）；自动滚到的位置给顶栏和导航留出空间 */
.finance-page .toast-x{min-height:0;width:28px;height:28px;padding:0;border:0;background:none;color:#7a5200;font-size:20px;line-height:1;flex:none}.finance-page .toast-x:hover{background:#efe2c2}
.finance-page [data-scroll-on-load]{scroll-margin-top:124px}
/* 警示提示条用黄色系，浅红只留给错误（role=alert 的通用红底不覆盖它） */
.finance-page .toast.toast-warn[role=alert]{background:#f8efda;color:#7a5200;border-top:0;border-bottom:1px solid #e8d9a8;padding:10px 24px}.toast-hide{opacity:0}
.finance-page .finance-success{margin:0 0 12px;padding:10px 14px;background:#e8f0e9;color:#2d6a45;border-left:4px solid #326348;font-weight:600}
dialog{border:1px solid #cdc8bc;border-radius:4px;box-shadow:0 12px 32px #0003;padding:20px 22px;max-width:520px;width:calc(100% - 32px);color:#1c2024}dialog::backdrop{background:#0004}dialog{overflow:visible}dialog .flatpickr-wrapper{position:relative}dialog h3{margin:0 0 12px;font:700 18px "Songti SC",serif}dialog p{margin:0 0 8px;line-height:1.6}dialog form{margin:0}dialog label{display:grid;gap:4px;margin:8px 0 0;color:#44484d}dialog label input,dialog label select,dialog label textarea{width:100%}.confirm-actions,dialog .dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.finance-page .btn.disabled,.finance-page button:disabled{opacity:.7}.why{display:inline-block;color:#686c71;font-size:12px;margin-left:8px}
.finance-page .required-note{color:#686c71;font-size:12px}
/* 表格：首列与合计固定，容器内横向滚动 */
.finance-page table tfoot td{position:sticky;bottom:0;background:#fff;z-index:2}.finance-page table tfoot td:first-child{z-index:3}
/* 登录页 */
body.finance-page.finance-login{min-height:100vh;background:#d6ecfb url(/brand/bg-light.svg) center center/cover no-repeat}.finance-login .login-b{flex:1;position:relative;min-height:calc(100vh - 70px);padding:0;display:flex;align-items:center}.finance-login .page-logo{position:absolute;top:40px;right:56px;height:28px;width:auto;display:block}.finance-login .login-brand{position:absolute;left:64px;bottom:72px}.finance-login .login-brand h1{font:700 36px/1.1 var(--brand);letter-spacing:.01em;margin:0 0 16px;color:#121950}.finance-login .login-brand p{margin:0;letter-spacing:.14em;font-size:14px;color:#2b3570}.finance-login .login-form{width:560px;margin-left:120px;padding:56px 56px 48px;background:#f4f2ec;border:1px solid #e3dfd5;border-radius:4px;box-shadow:0 16px 48px rgba(18,25,80,.12);display:flex;flex-direction:column;gap:0}.finance-login .login-form h2{font:700 32px/40px "Songti SC","Noto Serif SC",serif;margin:0 0 24px;color:#1c2024}.finance-login .login-form .finance-alert{margin:0 0 16px}.finance-login .login-button{width:100%;font-size:16px;min-height:52px;font-weight:700;letter-spacing:.12em}.finance-login .login-foot{display:block;margin-top:16px;color:#5f6368;font-size:12.5px}.finance-login .platform-footer{background:transparent;border-top:0;color:#5f6368}@media(max-width:1399px){.finance-login .login-form{margin-left:80px}}
@media(max-width:1180px){.fw-menu summary{padding:0 8px}}
/* 通用卡片、表单网格、标签 */
.finance-page .card{background:#fff;border:1px solid #e3dfd5;padding:18px;margin:0 0 16px}.finance-page .grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end}.finance-page .grid .wide{grid-column:span 2}.finance-page .grid .all{grid-column:1/-1}.finance-page .field{display:grid;gap:4px;margin:0;color:#44484d}.finance-page .field input,.finance-page .field select{width:100%;min-height:34px}.badge{display:inline-block;font-size:12px;padding:2px 8px;background:#e8f0e9;color:#2d6a45}.badge.pending{background:#f8efda;color:#7a5200}.badge.muted{background:#eeebe4;color:#686c71}.hint{font-size:12px;color:#686c71;display:block}.finance-page tr.row-bad td{background:#fcf5f2}.section{margin:0 0 20px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.section-head h2{margin:0}
@media(max-width:1180px){.finance-page .grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.finance-page .nowrap{white-space:nowrap}.page-tabs-side{margin-left:auto;font-size:13px;align-self:center}.page-tabs-side a,.page-tabs-side a:hover{font-weight:400;border:0;padding:0;background:none}
.month-checks{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}.month-checks a{display:inline-flex;gap:6px;align-items:center;border:1px solid #e3dfd5;background:#fff;padding:5px 10px;text-decoration:none;color:#1c2024;font-size:13px}.month-checks b{width:18px;text-align:center}.month-checks span{color:#686c71}.month-checks .mk-ok b{color:#326348}.month-checks .mk-bad b{color:#a3321f}.month-checks .mk-none b{color:#72767a}.step-blocks{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;margin-top:14px}.step-block{border:1px solid #e3dfd5;background:#faf9f6;padding:12px 14px}.step-block h3{margin:0 0 8px}.step-block p{margin:6px 0}.two-lists{display:grid;grid-template-columns:1fr 1fr;gap:12px}.two-lists h4{margin:6px 0}.two-lists ul{list-style:none;padding:0;margin:0}.two-lists li{padding:4px 0;border-bottom:1px solid #ece9e2}.two-lists li span{margin-left:6px}.checks{list-style:none;padding:0;margin:0 0 12px}.checks li{padding:3px 0}
.todo{list-style:none;padding:0;margin:0}.todo li{border-bottom:1px solid #ece9e2}.todo li a{display:block;padding:9px 8px;text-decoration:none}.todo li a:hover{background:#faf9f5}.company-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-top:16px}.company-card{display:grid;gap:6px;background:#fff;border:1px solid #e3dfd5;border-top:3px solid #c9c4b8;padding:14px;text-decoration:none;color:#1c2024}.company-card.mine{border-top-color:#b08018}.company-card:hover{background:#faf9f5;border-color:#121950}.company-card:focus-visible{outline-offset:-2px}.company-card small{color:#686c71}.step-dots{display:flex;gap:4px}.step-dots i{width:22px;height:6px;background:#e3dfd5}.step-dots i.done{background:#326348}.step-dots i.on{background:#b08018}
.step-block.wide{grid-column:1/-1}.two-lists li form{margin:6px 0}
/* 工作台卡片等分；本月工资底部上一步/下一步；Excel 比对按人分组 */
.company-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.company-card strong{font-size:17px}.company-card small{margin-top:2px}
.step-nav{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:18px;padding-top:12px;border-top:1px solid #ece9e2}.step-nav a{text-decoration:none;font-weight:600}.step-nav .btn{font-weight:600}
.panel-head .head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.finance-page .reveal summary{cursor:pointer;color:#121950;list-style:none}.finance-page .reveal summary::-webkit-details-marker{display:none}.finance-page .reveal[open] summary{margin-bottom:8px}.finance-page .reveal form{display:flex;align-items:end;gap:8px}
@media(max-width:1180px){.company-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}
.check-warn{color:#7a5200}
.section-actions{display:flex;gap:8px}.row-actions{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;white-space:nowrap}.row-actions form{margin:0}.row-actions .row-actions{display:contents}#bases .row-actions{flex-wrap:nowrap}.row-actions .why{margin-left:0;align-self:center}.finance-page tr:target>td{background:#fff8e6}
dialog.wide{max-width:780px}.dialog-row{display:grid;grid-template-columns:140px 160px 1fr;gap:12px}.finance-page dialog table.entry{min-width:0;table-layout:fixed;margin:12px 0}dialog .table-wrap{overflow:visible}table.entry th:first-child{width:72px}table.entry td{padding:4px 6px}table.entry input{width:100%;min-width:0;text-align:right}

.archived-documents{margin-top:14px}.archived-documents h3{font-size:14px;margin:0 0 6px}.archived-documents ul{list-style:none;padding:0;margin:0}.archived-documents li{padding:3px 0}.archived-documents small{color:#686c71;margin-left:6px}
.pt-head{margin:18px 0 8px}.pt-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,280px));gap:12px;margin:0 0 12px}.pt-card.done{border-top-color:#3c7a4f}.pt-card{display:grid;gap:4px;border:1px solid #e3dfd5;border-top:3px solid #b08018;background:#fff;padding:10px 14px;text-decoration:none;color:#1c2024}.pt-card:hover{border-color:#121950;background:#faf9f5}.pt-card span{font-size:13px;color:#44484d}.pt-card em{font-style:normal;font-size:12px;color:#7a5200}
.setup-guide ol{list-style:none;counter-reset:setup;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:0;margin:0}.setup-guide li{counter-increment:setup;display:grid;background:#fff;border:1px solid #e3dfd5;border-top:3px solid #b08018;padding:0}
.setup-guide li>a{display:grid;gap:6px;align-content:start;height:100%;padding:10px 12px;text-decoration:none;color:#1c2024}
.setup-guide li:hover{background:#faf9f5;border-color:#121950}
.setup-guide li>a:focus-visible{outline:2px solid #121950;outline-offset:-3px}.setup-guide li.done{border-top-color:#326348}.setup-guide li b{font-weight:600}.setup-guide li b::before{content:counter(setup) " "}.setup-guide li .status-chip{justify-self:start}
.roster-changes{margin:6px 0 0;padding-left:18px;font-size:13px;line-height:1.6}.roster-changes li{white-space:nowrap}
.person-row{cursor:pointer;background:#faf9f5}.person-row .link-button,.person-row .link-button:hover{background:none;border:0;padding:0;font-weight:600;color:#1c2024;cursor:pointer}.person-row .link-button::before{content:"▸ ";color:#686c71}.person-row .link-button[aria-expanded=true]::before{content:"▾ "}.person-row .badge{margin-left:8px}
.record-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 16px}.record-card{display:grid;gap:4px;align-content:start;background:#fff;border:1px solid #e3dfd5;border-top:3px solid #b08018;padding:12px 14px;text-decoration:none;color:#1c2024}
.record-card:hover{background:#faf9f5;border-color:#121950}.record-card span{font-size:13px}.record-card small{color:#686c71;font-size:12px}.record-card .btn{justify-self:start;margin-top:6px}.finance-page tr.month-row td{background:#f4f2ec;font-weight:700}.finance-page tr.subtotal td{font-weight:600;background:#faf9f5}.query-form{display:flex;flex-wrap:wrap;align-items:end;gap:8px 4px}.query-form fieldset{border:0;padding:0;margin:0 12px 0 0;display:flex;gap:8px;align-items:center}.query-form legend{float:left;margin-right:8px;color:#44484d}.finance-page label.check{flex-direction:row;align-items:center;gap:6px}.query-columns{align-self:center;margin-right:12px}.query-columns summary{cursor:pointer;color:#121950}.period-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}.period-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:16px}.finance-page table.period-log{min-width:0}.finance-page .period-grid table{min-width:0}.period-grid td,.period-grid th{padding:8px 6px}.period-log td{white-space:nowrap}.page-actions form{margin:0;display:inline-flex}.crumbs{margin:0 0 6px;font-size:13px;color:#686c71}.period-log td:last-child{white-space:normal}.finance-page del{color:#72767a}@media(max-width:1180px){.period-grid{grid-template-columns:1fr}.period-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
.page-head h1 .h1-company{font-size:17px;font-weight:600;color:#1c2024}.page-head .page-actions{align-items:center}.page-actions .page-link{font-size:13px;margin-right:6px}.finance-page table.params{width:auto;min-width:0}table.params th,table.params td{padding-right:36px}table.params .row-actions{flex-wrap:nowrap;gap:6px;align-items:center}table.params tr.group-row td{background:#faf9f5;font-weight:600;color:#1c2024}table.params tr.muted-row td{color:#8a8d91}table.params td small.hint{display:block}table.params .badge{margin-left:8px}table.city-entry input{width:100%;text-align:right}.base-tools{display:flex;align-items:center;gap:12px;margin:0 0 10px}.base-tools input{width:220px}.base-tools .page-link{margin-left:auto;font-size:13px}.base-scroll{max-height:calc(100vh - 300px);overflow-y:auto}table.sticky-head thead th{position:sticky;top:0;background:#fff;z-index:1}table.params tr.group-row .hint{display:inline;margin-left:8px;font-weight:400}table.params td .badge{margin-left:0}table.city-entry td{vertical-align:middle}table.city-entry th.same,table.city-entry td.same{width:56px}table.city-entry td.same button{border:0;background:none;padding:0;min-height:0;font-size:13px;font-weight:400;color:#121950;text-decoration:underline;cursor:pointer}table.city-entry th .req{color:#b3261e;font-weight:600}.finance-page dialog.below-tabs{margin-top:280px;max-height:calc(100vh - 296px)}dialog.below-tabs[open]{display:flex;flex-direction:column}dialog.below-tabs form{display:flex;flex-direction:column;min-height:0}dialog.below-tabs .dialog-scroll{overflow-y:auto;min-height:0}dialog.below-tabs .dialog-row{grid-template-columns:200px 150px 1fr}
.company-cell{display:grid;align-content:start}.company-cell .company-card{height:100%}.card-setup{display:block;padding:6px 14px;background:#f8efda;border:1px solid #e3dfd5;border-top:0;color:#7a5200;font-size:12px;text-decoration:none}.card-setup:hover{background:#f3e4c2}
.setup-guide li .setup-action{margin:0;padding:0 12px 10px}.setup-guide li .setup-action button{min-height:28px;padding:3px 10px;font-size:12px}
/* 列表：操作放每行第一列（小按钮），整行可点 */
.finance-page td.act,.finance-page th.act{width:1%;white-space:nowrap;padding:6px 8px}.finance-page td.act .btn{min-height:26px;padding:2px 10px;font-size:12.5px}
.finance-page tr[data-href]{cursor:pointer}.finance-page tr[data-href]:hover td{background:#faf9f5}
.finance-page table.records{width:auto;min-width:0}.records td,.records th{white-space:nowrap}.records td.num,.records th.num{padding-left:20px}.records td:nth-child(7),.records th:nth-child(7){padding-left:28px}
/* 财务端原型 v0.30（ClaudeDesign/FinPay 财务端原型v0.30/fp.css）的公共部分：面板、表格、卡片、徽标、按钮 sm、操作列 */
.finance-page h1 .h1-company{font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;font-size:20px;font-weight:600;color:#1c2024}
.finance-page .panel{background:#fff;border:1px solid #e3dfd5;border-radius:4px;margin:16px 0}.finance-page .panel-h{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid #e3dfd5}.finance-page .panel-h h2{margin:0;font:700 18px "Songti SC","Noto Serif SC","STSong",serif}.finance-page .panel-h .meta{color:#5f6368;font-size:13px}.finance-page .panel-h .actions{margin-left:auto;display:flex;gap:8px}.finance-page .panel-b{padding:16px 18px}
.finance-page table.tbl{width:100%;min-width:0;border-collapse:collapse;font-size:14px}.finance-page .tbl th{font-size:13px;font-weight:600;color:#44484d;padding:10px 12px;border-bottom:1px solid #2e3236}.finance-page .tbl td{padding:11px 12px;border-bottom:1px solid #e3dfd5;vertical-align:middle}.finance-page .tbl .num{text-align:right;white-space:nowrap}.finance-page .tbl tr.row:hover td{background:#faf9f6;cursor:pointer}.finance-page .tbl tr.group td{background:#faf9f6;font-weight:700;padding:8px 12px}.finance-page .tbl td:first-child{position:static}
.finance-page .op{width:1%;white-space:nowrap}.finance-page .op .btn,.finance-page .op button{width:76px;min-height:28px;height:28px;padding:0 6px;font-size:13px;justify-content:center}
.finance-page .btn.sm,.finance-page button.sm{min-height:28px;height:28px;padding:0 10px;font-size:13px}
.finance-page .badge{display:inline-block;padding:2px 8px;border-radius:3px;font-size:12.5px;font-weight:600;background:#d3eaff;color:#121950;white-space:nowrap}.finance-page .badge.ok{background:#e6efe8;color:#2d6a45}.finance-page .badge.warn{background:#f8efda;color:#7a5200}.finance-page .badge.bad{background:#f7e6e4;color:#9b2c2c}.finance-page .badge.mute{background:#efede7;color:#44484d}
.finance-page .sub{display:block;color:#5f6368;font-size:12.5px;margin-top:2px}.finance-page .name{font-weight:600}
.finance-page .cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.finance-page .card{display:flex;flex-direction:column;gap:6px;padding:12px 14px;background:#fff;border:1px solid #e3dfd5;border-top:3px solid #b8892a;border-radius:4px;text-decoration:none;color:#1c2024;cursor:pointer}.finance-page .card:hover{border-color:#cdc8bc;box-shadow:0 2px 8px #0000000f}.finance-page .card.done{border-top-color:#2d6a45}.finance-page .card.todo{border-top-color:#b8892a}.finance-page .card.wait{border-top-color:#cdc8bc}.finance-page .card b{font-size:14.5px;color:#121950}.finance-page .card .go{margin-top:auto;font-size:13px;color:#121950;font-weight:600}
.finance-page .company-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}.finance-page .company-cards .card b{font-size:16px}.finance-page .setup-guide .setup-action{margin:12px 0 0}.finance-page .panel .empty{margin:0}
.finance-page h1 .badge{font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;vertical-align:middle;margin-left:4px}
/* 原型 v0.30 对话框（.dlg）与两列表单：从页面上方留出距离，不盖住标题 */
.finance-page dialog.dlg{width:720px;max-width:calc(100% - 32px);margin:clamp(48px,22vh,200px) auto auto;padding:0;border:0;border-radius:6px;box-shadow:0 16px 40px #0003}.finance-page dialog.dlg::backdrop{background:#1c202466}
.finance-page .dlg-h{padding:18px 22px 4px;font:700 19px "Songti SC","Noto Serif SC","STSong",serif}.finance-page .dlg-b{padding:14px 22px 6px}.finance-page .dlg-f{display:flex;justify-content:flex-end;gap:8px;padding:16px 22px 20px}.finance-page .dlg .dialog-error{margin:8px 22px 0}
.finance-page .dlg .form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}.finance-page .dlg .field{display:flex;flex-direction:column;gap:6px;min-width:0}.finance-page .dlg .field.full{grid-column:1/-1}
.finance-page .dlg .field label{display:block;margin:0;font-size:13px;font-weight:600;color:#44484d}.finance-page .dlg .field label.required::after{content:" *";color:#b42318}.finance-page .dlg .field input,.finance-page .dlg .field select{width:100%;height:36px;min-height:36px}.finance-page .dlg .flatpickr-wrapper{display:block;width:100%}
/* 工资页（原型 v0.30 PayrollRecordsV030 / PayQueryV030）：顶部未完成的期卡片、记录表、薪酬查询条件 */
.finance-page .record-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 16px}.finance-page .record-cards .card{margin:0}.finance-page .record-cards .card span{font-size:13px;color:#44484d}.finance-page .record-cards .card .go{color:#121950}
.finance-page .tbl tfoot td{font-weight:700;border-top:1px solid #cdc8bc;border-bottom:0}.finance-page .tbl tr.subtotal td{font-weight:600;background:#faf9f6}.finance-page .tbl .tnum{font-variant-numeric:tabular-nums;white-space:nowrap}.finance-page .tbl th{white-space:nowrap}
.label-text.req::after,label>span.req::after{content:" *";color:#b3261e;font-weight:700}
/* 对话框表单统一版式（WP-66）：两列网格，标签在上、输入框占满格子；长字段整行；说明、分组、按钮整行。 */
dialog:not(#confirm-dialog):not(.dlg){width:fit-content;min-width:min(640px,calc(100vw - 32px));max-width:calc(100vw - 32px)}
dialog.wide:not(#confirm-dialog){width:min(880px,calc(100vw - 48px))}dialog.wide table{min-width:0}
dialog:not(#confirm-dialog):not(.dlg) form{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;align-items:start}
dialog:not(#confirm-dialog):not(.dlg) form>*{grid-column:1/-1}
dialog:not(#confirm-dialog):not(.dlg) form>label{grid-column:auto;margin:0;display:grid;gap:4px;align-content:start}
dialog:not(#confirm-dialog):not(.dlg) form>label:has(input[name=sourceRef],input[name=payerName],input[name=payerAccount],input[name=reason],input[name=workEmail],input[name=email],input[name=accountHolder],input[name=accountNumber],input[type=file],textarea),dialog:not(#confirm-dialog):not(.dlg) form>label.wide{grid-column:1/-1}
dialog label input,dialog label select,dialog label textarea{width:100%;min-width:0;box-sizing:border-box}
dialog .dialog-actions{grid-column:1/-1}
/* 弹窗一律在屏幕正中（CJ 2026-10-09），最高到上下各留 32px，内容多时弹窗内滚动，标题和按钮条固定（WP-101） */
dialog:not(#confirm-dialog):not(.dlg)[open]{position:fixed;inset:0;margin:auto;height:fit-content;max-height:calc(100vh - 64px);overflow:auto;padding-top:0;padding-bottom:0}
dialog:not(#confirm-dialog):not(.dlg)>h3{position:sticky;top:0;background:#fff;padding:18px 0 10px;margin:0;z-index:2}
/* 按钮条占满整行、白底、上方分隔线，固定在弹窗底部 */
dialog:not(#confirm-dialog):not(.dlg) .dialog-actions{position:sticky;bottom:0;background:#fff;margin:8px -22px 0;padding:12px 22px;border-top:1px solid #e3dfd5;z-index:2}
.finance-page dialog.dlg .dlg-f{background:#fff;border-top:1px solid #e3dfd5}
/* 表格操作列的行内按钮统一等宽（CJ）：每个按钮固定宽度、文字居中，整列对齐。 */
.op .btn,.op button{width:76px;min-height:30px;padding:4px 8px;justify-content:center}.op .btn+.btn,.op .btn+button,.op button+.btn{margin-left:6px}
/* 上传单据统一组件（WP-71，原型 v0.30 .dz / .upl-file） */
.evidence-field{display:grid;gap:4px;margin-top:10px;color:#44484d}.finance-page .upload-zone label.dz{margin:0}
.dz{border:1.5px dashed #cdc8bc;border-radius:6px;background:#fff;padding:10px 14px;display:flex!important;flex-direction:row!important;align-items:center;gap:10px;flex-wrap:wrap;cursor:pointer;font-size:14px;color:#44484d}
.dz input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.dz{position:relative}
/* 弹窗表单里“输入框占满一行”的规则不能撑开上传组件里隐藏的文件框（否则弹窗出现横向滚动条）。 */
.finance-page .upload-zone .dz input[type=file]{width:1px!important;height:1px!important;min-width:0!important;left:0;top:0}
.dz b{color:#121950}.dz .ico{width:20px;height:20px;color:#121950;flex:none}.dz small{color:#5f6368}
.dz:hover{border-color:#121950;background:#faf9f6}
.dz.drag{border-color:#121950;border-style:solid;background:#d3eaff}
.dz.err{border-color:#b42318;background:#f7e6e4}.dz.err b{color:#9b2c2c}
/* 已选文件一行：文件名 · 大小（· 类型）· ×；不写机制说明，移除是浅色 ×（主控 10-15，原型 L6 / L50）。 */
.upl-file{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;margin-top:8px;padding:6px 6px 6px 12px;border:1px solid #ece9e2;border-radius:4px;background:#faf9f5;font-size:13.5px}
.upl-file:has(.doc-badge){grid-template-columns:minmax(0,1fr) auto auto auto}
.upl-file span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upl-file small{color:#5f6368}
.finance-page .upl-file button.upl-x{width:28px;height:28px;min-height:0;padding:0;border:0;background:transparent;color:#5f6368}
body.finance-page .upl-file button.upl-x:not(:disabled):hover{background:#eeebe4;color:#1c2024;border-color:transparent}
.upl-file .upl-x svg{width:14px;height:14px}
/* WP-73：全站表格表头和单元格一律居中（含数字金额），只有最左操作列靠左（原型 v0.4.16）。 */
/* 表格四类对齐（v0.6.00，CJ 10-09，取代 v0.4.16 一律居中）：默认靠左；.num 金额、数量、比例、工时右对齐；.mid 日期、编号、短分类词、状态居中；操作列按钮从左排起、各行对齐；表头跟随本列 */
.finance-page table th,.finance-page table td{text-align:left}.finance-page table .num{text-align:right;white-space:nowrap}.finance-page table .mid{text-align:center}.finance-page table th.op,.finance-page table td.op,.finance-page table th.act,.finance-page table td.act{text-align:left}
.finance-page dialog.dlg.dlg-lg{width:880px}.publish-dialog .dlg-b{max-height:min(560px,60vh);overflow:auto}.publish-dialog .tbl input{width:100%;min-height:32px}.finance-page .note.warn{padding:10px 14px;border-radius:4px;background:#f8efda;color:#7a5200;font-size:13.5px}
.finance-page .crumb{font-size:13px;text-decoration:none}.finance-page .sumline{display:flex;gap:28px;flex-wrap:wrap;margin:0}.finance-page .sumline b{font-variant-numeric:tabular-nums}.finance-page .acct{display:flex;flex-direction:column}.finance-page .acct small{color:#5f6368;font-size:12.5px}
.dlg .who{display:flex;gap:24px;flex-wrap:wrap;margin:0 0 14px;padding:10px 12px;background:#faf9f6;border-radius:4px}.dlg .who b{font-variant-numeric:tabular-nums}
.dlg .seg{display:flex;width:fit-content;border:1px solid #cdc8bc;border-radius:4px;overflow:hidden}.dlg .seg label{display:flex;align-items:center;gap:6px;height:36px;padding:0 18px;margin:0;border-right:1px solid #cdc8bc;font-weight:600;color:#1c2024;cursor:pointer}.dlg .seg label:last-child{border-right:0}.dlg .seg label.on{background:#121950;color:#fff}.dlg .seg input{position:absolute;opacity:0;pointer-events:none}
.dlg .confirm-list{border:1px solid #e3dfd5;border-radius:4px;margin:12px 0 14px}.dlg .confirm-list .r{display:grid;grid-template-columns:minmax(0,1fr) 220px 120px;gap:10px;padding:8px 12px;border-bottom:1px solid #e3dfd5}.dlg .confirm-list .r:last-child{border-bottom:0;font-weight:700}.dlg .confirm-list .r span:last-child{text-align:right;font-variant-numeric:tabular-nums}
.dlg .view-list{grid-template-columns:100px 1fr;margin:0}.dlg .field input{width:100%}.dlg .hint{font-size:12px;color:#5f6368}
.dlg .ctl.ro{display:flex;align-items:center;min-height:36px;padding:0 10px;border:1px solid #cdc8bc;border-radius:4px;background:#faf9f6}.dlg .errmsg{font-size:12px;color:#b42318}
.finance-page .dlg table.view-list td{text-align:left!important}.finance-page .dlg table.view-list td:first-child{width:30%;color:#5f6368}
.dlg [hidden]{display:none!important}
.finance-page dialog.dlg[open]{display:flex;flex-direction:column;max-height:calc(100vh - 64px);position:fixed;inset:0;margin:auto;height:fit-content}.finance-page dialog.dlg>form{display:flex;flex-direction:column;min-height:0;flex:1}.finance-page dialog.dlg .dlg-b{overflow:auto;min-height:0;flex:1}.publish-dialog .dlg-b{max-height:none}.publish-dialog .table-wrap{overflow:visible}
/* 发布弹窗（WP-73 复查）：屏幕正中（WP-101），正文随窗口高度滚动，底栏按钮始终露出、能点。 */
.finance-page dialog.dlg.publish-dialog[open]{inset:0!important;margin:auto!important;max-height:calc(100vh - 64px)!important;overflow:hidden!important}
.finance-page dialog.dlg.publish-dialog .dlg-b{max-height:calc(100vh - 290px)!important;overflow:auto}
/* 弹窗里的“删除”：从右上按钮打开（新增）时隐藏，按钮的公共样式不能盖过 hidden。 */
.finance-page dialog [data-city-delete][hidden],.finance-page dialog [data-delete-button][hidden]{display:none!important}
/* 变更记录（WP-71，原型 v0.4.12） */
.change-tabs{display:flex;gap:20px;border-bottom:1px solid #cdc8bc;margin:8px 0 12px}.finance-page .change-tabs button{background:none;border:0;border-bottom:2px solid transparent;color:#44484d;padding:8px 2px;margin-bottom:-1px;min-height:0;font-weight:600}
.finance-page .change-tabs button[aria-selected=true]{color:#121950;border-bottom-color:#121950}.finance-page .change-tabs button:hover{background:none;color:#121950}
.change-log .chg{display:flex;flex-direction:column;gap:2px}.change-log s{color:#8a8d91}.change-log small{display:block;color:#686c71;font-size:12px}
.change-log .att{display:flex;flex-direction:column;gap:2px}
.finance-page .note.ok{padding:10px 14px;border-radius:4px;background:#e6efe8;color:#2d6a45;font-size:13.5px}
/* 单选、复选框不跟着弹窗输入框占满一格（WP-76：登记弹窗出现横向滚动条）。 */
.finance-page dialog input[type=radio],.finance-page dialog input[type=checkbox]{width:auto!important;min-width:0!important}
.finance-page table.calendar-versions td.who{white-space:nowrap}.finance-page table.calendar-versions td.who small{display:inline;margin-left:8px}.finance-page table.calendar-versions tr.calendar-dates td{text-align:left!important}
.finance-page .miss{color:#9b2c2c;font-weight:600}
.tax-detail{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#44484d;padding:4px 0}.tax-detail b{display:inline-block;width:132px;color:#1c2024;font-weight:600}
.wb-companies{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 16px}.wb-company{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;border:1px solid #e3dfd5;border-radius:4px;text-decoration:none;color:#1c2024}.wb-company:hover{border-color:#121950}.wb-company b{font-size:16px;color:#121950;min-width:72px}.wb-company .what{flex:1;min-width:0;font-size:13.5px;color:#44484d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wb-company .n{flex:none}.wb-company .n{font-size:13px;font-weight:700;color:#8a5a00;background:#f8efda;border-radius:12px;padding:2px 10px;white-space:nowrap}.wb-company .n.zero{color:#326348;background:#e7f1ea}.wb-company.on{border:2px solid #121950;background:#d3eaff}
.wb-table .seg{display:inline-flex;gap:3px;vertical-align:middle}.wb-table .seg i{display:inline-block;width:22px;height:8px;border-radius:2px;background:#e3e0d8}.wb-table .seg i.d{background:#326348}.wb-table .seg i.c{background:#b8892a}.wb-table .seg+.sub{display:block}.finance-page table.wb-table td.l,.finance-page table.wb-table th.l{text-align:left!important}.wb-table .who{font-size:12.5px;color:#686c71}.wb-table .next{font-weight:600;color:#1c2024}.finance-page .wb-table .op .btn.sm{width:76px}
/* 历史工资（WP-95，原型 v0.5.14） */
.finance-page dialog.history-dlg:not(#confirm-dialog){width:min(860px,calc(100vw - 32px));max-width:860px}.finance-page dialog.dlg.history-dlg[open]{inset:0!important;margin:auto!important;max-height:calc(100vh - 64px)!important;overflow:hidden!important}.finance-page dialog.dlg.history-dlg .dlg-b{display:flex;flex-direction:column;gap:14px;max-height:calc(100vh - 260px)!important;overflow:auto}.finance-page table.history-preview td.l,.finance-page table.history-preview th.l,.finance-page table.history-lines td.l,.finance-page table.history-lines th.l{text-align:left!important}.finance-page .finance-kpis.history-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.history-fields{display:grid;grid-template-columns:200px 200px minmax(0,1fr);gap:12px;align-items:end}.history-fields .field{margin:0}.history-fields input,.history-fields select{width:100%}.history-dlg .sumline{display:flex;gap:10px;flex-wrap:wrap;margin:4px 0 10px}.finance-page table.history-preview,.finance-page table.history-lines{min-width:0}.history-kpis{margin:0 0 16px}
.finance-page .finance-alert.warn{background:#f8efda;border-left-color:#b07a14;margin-bottom:10px}
/* 字段旁报错（WP-98） */
.finance-page small.field-error{color:#a3321f;font-size:12.5px}
.finance-page small[data-amount-error]:not([hidden]){display:block;white-space:normal}

/* ===== v0.6.00 设计体系对齐（WP-106，原型 FinPay v0.6.00 / fp.css；数值来自 Moraid 设计体系 tokens.json） ===== */
:root{--navy:#121950;--navy-hover:#1b2566;--navy-active:#0c1038;--tint:#d3eaff;--line-dark:#2e3236;--brand:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;--ease:cubic-bezier(0.2,0,0,1)}
/* 页头字标：Moraid 字标 SVG 高 22px + 竖线 + 系统名 FinPay */
.finance-page .brand{display:flex;align-items:center;gap:12px;text-decoration:none;white-space:nowrap}.finance-page .brand img{height:22px;width:auto;display:block}.finance-page .brand .sep{width:1px;height:20px;background:#a9b4d2}.finance-page .brand .sysname{font-family:var(--brand);font-weight:700;font-size:22px;line-height:1;color:#121950;letter-spacing:.01em}
/* 按钮悬停 150ms、按下更深；输入框聚焦深蓝描边加 1px 外描边；键盘焦点环 2px 深蓝 */
.finance-page button:not(:where(.mo-root *)),.finance-page .btn{transition:background-color 150ms var(--ease),border-color 150ms var(--ease),color 150ms var(--ease)}
.finance-page button:not(.secondary):not(:disabled):not(:where(.mo-root *)):hover,.finance-page .btn:not(.secondary):hover{background:#1b2566;border-color:#1b2566}
.finance-page button:not(.secondary):not(:disabled):not(:where(.mo-root *)):active,.finance-page .btn:not(.secondary):active{background:#0c1038;border-color:#0c1038}
.finance-page input:not([type=checkbox]):not([type=radio]):focus,.finance-page select:focus,.finance-page textarea:focus{border-color:#121950;box-shadow:0 0 0 1px #121950;outline:none}
.finance-page :focus-visible{outline:2px solid #121950;outline-offset:2px}
@media (prefers-reduced-motion:reduce){.finance-page *,.finance-page *::before,.finance-page *::after{transition:none!important;animation:none!important}}
/* 上传拖放区加大（CJ：“文件拖拽是不是小了点”）：最小高 104px，图标在上、文字居中 */
.dz{min-height:104px;flex-direction:column!important;justify-content:center;gap:6px;padding:18px;text-align:center;border-radius:6px}.dz .ico{width:26px;height:26px}.dz [data-dz-text]{display:flex;flex-direction:column;align-items:center;gap:2px}
/* WP-109 宽表冻结（原型 v0.6.10，规范板 6b）：.tw 面板内横向滚动，放得下就不出滚动条；
   .fz 冻结列（.fz-op 操作列 100px、.fz-name 姓名至少 130px 不截断），.fzl 最后一个冻结列，滚动后（.scrolled）右侧出浅阴影；
   金额列至少 96px；.tail 最右一列吸收剩余宽度；.fz-pin 让展开明细停在冻结列右边。 */
.finance-page .tw{position:relative;overflow-x:auto;max-width:100%}
.finance-page .tw>table,.finance-page .tw>table.sheet{width:max-content;min-width:100%}
.finance-page .tw th,.finance-page .tw td{white-space:nowrap}
/* td.fz / th.fz：要压过 .finance-page .tbl td:first-child{position:static}（:first-child 也算一类）。 */
.finance-page .tw table td.fz,.finance-page .tw table th.fz{position:sticky;z-index:2;background:#fff}
.finance-page .tw tr.row:hover td.fz{background:#faf9f6}
.finance-page .tw tr.group td.fz,.finance-page .tw tr.subtotal td.fz{background:#faf9f6}
/* 合计行、表头本身也是贴边悬浮（z-index 2）：冻结格再高一层，滚动时不被后面的格子盖住。 */
.finance-page .tw table tfoot td.fz,.finance-page .tw table thead th.fz{z-index:3}
.finance-page .tw .fz-op{left:0;width:100px;min-width:100px}
.finance-page .tw .fz-name{left:0;min-width:130px}
.finance-page .tw .fz-op+.fz-name{left:100px}
.finance-page .tw.scrolled .fzl::after{content:"";position:absolute;top:0;bottom:-1px;right:-10px;width:10px;background:linear-gradient(90deg,rgba(18,25,80,.14),rgba(18,25,80,0));pointer-events:none}
.finance-page .tw td.num,.finance-page .tw th.num{min-width:96px}
.finance-page .tw .tail{width:100%}
.finance-page .tw .fz-pin{position:sticky;left:var(--fz-end,242px);display:inline-flex}
/* 1180 及以下 main 内边距是 16px：底部“本月合计”条的负边距跟着收，页面本身不出横向滚动（WP-109 验收发现）。 */
@media(max-width:1180px){.month-totals{margin:0 -16px}}
/* ===== 页面框架 v0.7（WP-112a，原型 v0.7.00 精致版 / v0.7.01；参照 Microsoft 365 管理中心）=====
   顶栏 56 固定，左侧模块栏 232（收起 56），只有内容区滚动：整页只有一个滚动条（滚动吸顶复盘第四节）。
   层级表：内容 0 < 列名 4 < 命令栏 6 < 菜单 8 < 遮罩 18 < 面板 / 向导 20；新增浮层先对表。 */
html:has(body.finance-page){height:100%;overflow:hidden}
body.finance-page{display:block;height:100%;min-height:0;margin:0;overflow:hidden;background:#fff}
.fw-shell{height:100dvh;display:grid;grid-template-columns:232px minmax(0,1fr);grid-template-rows:56px minmax(0,1fr);overflow:hidden}
.fw-shell.mini{grid-template-columns:56px minmax(0,1fr)}
.fw-shell.bare{grid-template-columns:minmax(0,1fr)}
.fw-top svg,.fw-side svg,.fw-pane svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
[hidden]{display:none!important}
/* 顶栏 */
.fw-top{grid-column:1/-1;position:relative;z-index:8;display:flex;align-items:center;gap:16px;height:56px;padding:0 20px;background:#fff;border-bottom:1px solid #ece9e2}
.finance-page .fw-top .brand img{height:20px}
.finance-page .fw-top .brand .sysname{font-size:20px}
.fw-search{flex:0 1 420px;min-width:120px;margin:0 auto;height:34px;display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid #cdc8bc;border-radius:6px;background:#faf9f6}
/* 全局 .finance-page form{margin:12px 0} 会盖掉居中（WP-153）：在顶栏里提高特异度。 */
.finance-page .fw-top .fw-search{margin:0 auto}
/* 顶栏图标按原型 .icobtn svg 18px；面板里的 .fw-ib 仍 16（WP-153）。 */
.finance-page .fw-top .fw-ib svg{width:18px;height:18px}
.fw-search:focus-within{border-color:#121950;background:#fff}
.fw-search svg{width:15px;height:15px;color:#5f6368;flex:none}
.finance-page .fw-search input{flex:1;min-width:0;height:32px;padding:0;border:0;background:transparent;font-size:13.5px;outline:none}
.fw-search input::placeholder{color:#8a8d91}
.fw-search input::-webkit-search-cancel-button{display:none}
/* 按工资单编号定位的下拉（WP-168，原型 M18d）与跳转后的目标行。 */
.fw-search{position:relative}
.fw-search-drop{position:absolute;left:0;right:0;top:38px;z-index:60;padding:6px 0;background:#fff;border:1px solid #e4e0d7;border-radius:6px;box-shadow:0 8px 24px rgba(18,25,80,.12)}
.fw-search-group{padding:4px 14px 6px;font-size:12px;color:#5f6368}
.fw-search-drop a{display:flex;align-items:baseline;gap:12px;padding:8px 14px;font-size:13.5px;color:#1f2328;text-decoration:none}
.fw-search-drop a:hover,.fw-search-drop a.on{background:#eef1fb}
.fw-search-drop a .no{margin-left:auto;color:#5f6368;font-variant-numeric:tabular-nums;white-space:nowrap}
.fw-search-none{padding:8px 14px;font-size:13.5px;color:#5f6368}
@keyframes fl-hit{from{background:#cfdcf7}to{background:#eef1fb}}
tr.fl-hit>td{background:#eef1fb;animation:fl-hit 600ms ease-out}
.fw-companies{display:flex;flex:none;height:32px;border:1px solid #e4e0d7;border-radius:4px;overflow:hidden;background:#fff}
.fw-companies a{display:flex;align-items:center;justify-content:center;width:80px;font-size:13.5px;color:#44484d;text-decoration:none;white-space:nowrap;transition:background-color 150ms ease}
.fw-companies a+a{border-left:1px solid #e4e0d7}
.fw-companies a:hover{background:#faf9f6;color:#1c2024}
.fw-companies a.on{background:#d3eaff;color:#121950;font-weight:600}
.fw-company{flex:none;font-size:13.5px;color:#1c2024}
.fw-tools{display:flex;align-items:center;gap:4px;flex:none}
.finance-page .fw-ib{width:34px;height:34px;min-height:0;padding:0;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:4px;background:none;color:#44484d;transition:background-color 150ms ease}
.finance-page .fw-ib:hover{background:#f4f2ec;color:#1c2024}
.finance-page .fw-ib[aria-expanded=true]{background:#d3eaff;color:#121950}
.fw-ib svg{width:18px;height:18px}
.finance-page .fw-me{display:inline-flex;align-items:center;gap:8px;min-height:0;height:36px;padding:0 8px;margin-left:4px;border:0;border-radius:4px;background:none;color:#1c2024;font-weight:600;font-size:13.5px;white-space:nowrap;transition:background-color 150ms ease}
.finance-page .fw-me:hover{background:#f4f2ec}
.finance-page .fw-me[aria-expanded=true]{background:#d3eaff;color:#121950}
.fw-av{width:28px;height:28px;border-radius:50%;background:#d3eaff;color:#121950;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:none}
.fw-av.big{width:64px;height:64px;font-size:24px}
.fw-acct{position:absolute;top:56px;right:12px;width:340px;background:#fff;border:1px solid #e3dfd5;border-radius:6px;box-shadow:0 12px 32px rgba(0,0,0,.16);z-index:8}
.fw-acct-h{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;font-size:13px;color:#44484d;border-bottom:1px solid #f0ede6}
.fw-acct-h form{margin:0}
.finance-page .fw-link{min-height:0;padding:0;border:0;background:none;color:#121950;font-size:13px}
.finance-page .fw-link:hover{background:none;color:#1b2566;text-decoration:underline}
.fw-acct-b{display:flex;gap:16px;padding:18px 16px}
.fw-acct-b div{display:flex;flex-direction:column;gap:3px;min-width:0}
.fw-acct-b b{font-size:17px;font-weight:600}
.fw-acct-b span:not(.fw-av){font-size:13px;color:#44484d;overflow-wrap:anywhere}
/* 左侧模块栏 */
.fw-side{background:#f7f5f0;overflow-y:auto;overflow-x:hidden;padding:14px 0 20px;font-size:14px}
.fw-mod>summary{list-style:none}
.fw-mod>summary::-webkit-details-marker{display:none}
.finance-page .fw-m{display:flex;align-items:center;justify-content:flex-start;gap:10px;width:100%;min-height:0;padding:9px 18px;border:0;border-radius:0;background:none;color:#1c2024;font-size:14px;font-weight:400;text-align:left;text-decoration:none;cursor:pointer;transition:background-color 150ms ease}
.finance-page .fw-m:hover{background:rgba(28,32,36,.05);color:#1c2024}
.fw-m svg,.fw-mini svg{width:17px;height:17px;color:#44484d;flex:none}
.fw-m.cur,.fw-mod[open]>.fw-m{font-weight:600}
.fw-m.cur svg{color:#121950}
.fw-m .car{margin-left:auto;width:7px;height:7px;border-right:1.5px solid #5f6368;border-bottom:1.5px solid #5f6368;transform:rotate(-45deg);transition:transform 150ms ease}
.fw-mod[open]>.fw-m .car{transform:rotate(45deg) translate(-2px,-2px)}
.fw-ham{padding-top:4px;padding-bottom:10px}
.fw-s{display:block;position:relative;padding:7px 18px 7px 45px;color:#44484d;font-size:14px;text-decoration:none;transition:background-color 150ms ease}
.fw-s:hover{background:rgba(28,32,36,.05);color:#1c2024}
.fw-s.on{color:#121950;font-weight:600;background:#fff}
.fw-s.on::before{content:"";position:absolute;left:32px;top:7px;bottom:7px;width:3px;border-radius:2px;background:#121950}
.fw-mini{display:none}
.mini .fw-mod,.mini .fw-side .t,.mini .fw-m .car{display:none}
.mini .fw-mini,.finance-page .mini .fw-m{display:flex;justify-content:center;align-items:center;gap:0;padding:11px 0;text-decoration:none;color:#1c2024;transition:background-color 150ms ease}
.mini .fw-mini:hover{background:rgba(28,32,36,.05)}
.mini .fw-mini svg,.mini .fw-m svg{width:19px;height:19px}
.mini .fw-mini.cur,.finance-page .mini a.fw-m.cur{box-shadow:inset 3px 0 0 #121950;background:#fff}
.mini .fw-mini.cur svg{color:#121950}
/* 内容区：唯一的滚动条；顶部留白放在第一块的 margin 上，滚动容器 padding-top 为 0（吸顶不漏缝） */
.finance-page main.fw-main{min-height:0;overflow-y:auto;max-width:none;margin:0;padding:0 44px;background:#fff;position:relative}
.fw-crumb{margin:22px 0 6px;font-size:13px;color:#5f6368}
.fw-crumb i{font-style:normal;margin:0 6px}
.fw-crumb a{color:inherit;text-decoration:none}.fw-crumb a:hover{color:#121950;text-decoration:underline}
.fw-main>.toast{margin:12px 0 0;border:0;border-radius:4px}
.fw-main>.fw-crumb+.toast{margin-top:8px}
.fw-main>.page-head:first-child,.fw-main>.toast+.page-head{margin-top:22px}
/* 页面标题旁的副标题（公司 · 当前工资月）：与标题隔开 14px、基线对齐、灰色小字（CJ 10-14 全站统一）。 */
.finance-page .page-head h1{display:flex;align-items:baseline;flex-wrap:wrap;column-gap:14px}
.finance-page h1 .h1-company{font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;font-size:14px;font-weight:400;color:#5f6368}
.finance-page h1 .h1-company:empty{display:none}
.fw-main .month-totals{margin:0 -44px}
.fw-main .platform-footer{margin:40px -44px 0}
.finance-page [data-scroll-on-load]{scroll-margin-top:16px}
/* 右侧窄面板：通知、草稿箱、设置（约 420，全高，不遮暗背后） */
.fw-pane{position:fixed;top:56px;right:0;bottom:0;width:420px;max-width:100vw;z-index:20;display:flex;flex-direction:column;background:#fff;box-shadow:-10px 0 28px rgba(0,0,0,.14);animation:fw-in 200ms cubic-bezier(.2,0,0,1) both}
@keyframes fw-in{from{transform:translateX(24px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.fw-pane{animation:none}}
.fw-pane-h{display:flex;align-items:baseline;gap:10px;padding:20px 20px 12px;border-bottom:1px solid #f0ede6}
.fw-pane-h h2{margin:0;font-family:"Songti SC",serif;font-size:20px;font-weight:600}
.fw-pane-h .sub{font-size:12.5px;color:#5f6368}
.finance-page .fw-pane-h .fw-ib{margin-left:auto;align-self:center}
.fw-pane-b{flex:1;overflow:auto;padding:6px 0}
.finance-page .fw-pane-b p.fw-empty{margin:0;padding:24px 20px;color:#5f6368}
.finance-page .fw-settings{margin:0}
.fw-settings fieldset{margin:0;padding:18px 20px;border:0;border-bottom:1px solid #ece9e2}
.fw-settings legend{float:left;width:100%;margin:0 0 10px;padding:0;font-weight:600;font-size:14px}
.fw-seg{display:inline-flex;border:1px solid #cdc8bc;border-radius:4px;overflow:hidden;clear:both}
.finance-page .fw-seg button{min-height:0;height:32px;padding:0 12px;border:0;border-radius:0;background:#fff;color:#1c2024;font-size:13.5px;font-weight:400}
.finance-page .fw-seg button+button{border-left:1px solid #cdc8bc}
.finance-page .fw-seg button:hover{background:#faf9f6;color:#1c2024}
.finance-page .fw-seg button[aria-pressed=true]{background:#d3eaff;color:#121950;font-weight:600}
.page-tabs-bare{display:flex;margin:0 0 8px}
/* 外壳里的按钮不吃全局深蓝按钮的悬停（.finance-page button:not(.secondary):not(:disabled):hover） */
body.finance-page .fw-shell .fw-ib:not(:disabled):hover{background:#f4f2ec;border-color:transparent;color:#1c2024}
body.finance-page .fw-shell .fw-ib[aria-expanded=true]:not(:disabled),body.finance-page .fw-shell .fw-me[aria-expanded=true]:not(:disabled){background:#d3eaff;color:#121950}
body.finance-page .fw-shell .fw-me:not(:disabled):hover{background:#f4f2ec;border-color:transparent;color:#1c2024}
body.finance-page .fw-shell .fw-m:not(:disabled):hover{background:rgba(28,32,36,.05);border-color:transparent;color:#1c2024}
body.finance-page .fw-shell .fw-seg button:not(:disabled):hover{background:#faf9f6;border-color:transparent;border-left-color:#cdc8bc;color:#1c2024}
body.finance-page .fw-shell .fw-seg button[aria-pressed=true]:not(:disabled){background:#d3eaff;color:#121950}
body.finance-page .fw-shell .fw-link:not(:disabled):hover{background:none;color:#1b2566}
.fw-main>.fw-crumb+.page-head{margin-top:18px}
.fw-tip{position:fixed;z-index:8;transform:translateY(-50%);padding:3px 8px;border-radius:2px;background:#1c2024;color:#fff;font-size:12px;white-space:nowrap;pointer-events:none}
/* ===== 通用列表（WP-112b，页面框架 v0.7 第三节 2–4d；原型 v0.7.00 People / Hist / Pager）=====
   命令栏吸在内容区顶部（层级 6），列名吸在命令栏下面（层级 4，分隔线用 box-shadow）；表格不套横向滚动，尾列“备注”吸收剩余。 */
.fl{position:relative;margin:4px 0 0}
.fl svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.fl-cmd{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:6px;height:48px;margin:0 -2px;padding:0 2px;background:#fff}
.fl-cmds{display:flex;align-items:center;gap:2px;min-width:0;flex:1;margin-left:-10px;overflow:hidden}
.finance-page .fl-cmds>button,.finance-page .fl-cmds>a,.finance-page .fl-more>button,.finance-page .fl-more>a{display:inline-flex;align-items:center;justify-content:flex-start;gap:6px;height:32px;min-height:0;padding:0 10px;border:0;border-radius:2px;background:none;color:#1c2024;font:var(--text-body);text-decoration:none;white-space:nowrap;transition:background-color 120ms ease}
body.finance-page .fl-cmds>button:not(:disabled):hover,body.finance-page .fl-cmds>a:hover{background:#f4f2ec;border-color:transparent;color:#1c2024}
.fl-cmds svg{width:15px;height:15px;color:#121950;flex:none}
.fl-cmds .sep{width:1px;height:20px;background:#e3dfd5;margin:0 6px;flex:none}
.fl-right{display:flex;align-items:center;gap:6px;flex:none}
.fl-picked{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:#5f6368;margin-right:6px}
.fl-picked b{font-weight:400;color:#5f6368}
.finance-page .fl-clear{width:20px;height:20px;min-height:0;padding:0;border:0;background:none;color:#5f6368;display:inline-flex;align-items:center;justify-content:center}
body.finance-page .fl-clear:not(:disabled):hover{background:#f4f2ec;border-color:transparent;color:#1c2024}
.fl-clear svg{width:12px;height:12px}
.finance-page .fl-search{display:inline-flex;flex-direction:row;align-items:center;gap:6px;width:180px;height:30px;padding:0 10px;margin:0;border:1px solid #e4e0d7;border-radius:4px;background:#fff;color:#1c2024}
.fl-search:focus-within{border-color:#121950}
.fl-search svg{width:14px;height:14px;color:#5f6368;flex:none;cursor:text}
.finance-page .fl-search input{flex:1;min-width:0;height:28px;padding:0;border:0;background:transparent;font-size:13px;outline:none}
.fl-search input::-webkit-search-cancel-button{display:none}
.finance-page .fl-search.collapsed{width:32px;padding:0;justify-content:center;border-color:transparent}
.fl-search.collapsed input{display:none}
.fl-search.collapsed svg{cursor:pointer;color:#1c2024;width:15px;height:15px}
.fl-pop{position:relative}
.finance-page .fl-c{display:inline-flex;align-items:center;gap:6px;height:32px;min-height:0;padding:0 8px;border:0;border-radius:2px;background:none;color:#1c2024;font-size:13.5px;font-weight:400}
body.finance-page .fl-c:not(:disabled):hover,body.finance-page .fl-c[aria-expanded=true]:not(:disabled){background:#f4f2ec;border-color:transparent;color:#1c2024}
.fl-c svg{width:15px;height:15px}
.fl-menu{position:absolute;top:calc(100% + 4px);right:0;z-index:8;min-width:160px;padding:4px 0;background:#fff;border:1px solid #e3dfd5;border-radius:4px;box-shadow:0 8px 24px rgba(0,0,0,.12);display:flex;flex-direction:column}
.fl-menu.fl-float{right:auto}
.finance-page .fl-menu>button,.finance-page .fl-menu>a{display:flex;align-items:center;justify-content:flex-start;gap:8px;width:100%;min-height:0;height:34px;padding:0 14px;border:0;border-radius:0;background:none;color:#1c2024;font-size:13.5px;font-weight:400;text-align:left;text-decoration:none;white-space:nowrap}
body.finance-page .fl-menu>button:not(:disabled):hover,body.finance-page .fl-menu>a:hover{background:#f4f2ec;border-color:transparent;color:#1c2024}
.fl-menu>button[aria-checked=true]::after{content:"✓";margin-left:auto;color:#121950}
.fl-menu svg{width:15px;height:15px;color:#121950}
.fl-wrow{display:flex;align-items:center;gap:6px;padding:6px 14px;font-size:13px;color:#44484d}
.finance-page .fl-wrow input{width:64px;height:28px;padding:0 6px}
.finance-page .fl-wrow button{min-height:0;height:28px;padding:0 10px;font-size:13px}
/* 表格 */
.finance-page table.fl-table{width:100%;min-width:0;table-layout:fixed;border-collapse:separate;border-spacing:0;font-size:14px}
.finance-page .fl-table th,.finance-page .fl-table td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;border-bottom:1px solid #f0ede6;padding:11px 12px;line-height:22px}
.finance-page .fl-table thead th{position:sticky;top:48px;z-index:4;background:#fff;color:#5f6368;font-weight:600;font-size:13px;border-bottom:0;box-shadow:inset 0 -1px 0 #e4e0d7;padding:10px 12px;overflow:visible}
.finance-page .fl-table td:first-child{position:static}
.finance-page .fl-table .num{text-align:right}
.finance-page .fl-table .mid{text-align:center}
.finance-page .fl-table .txt{text-align:left}
.fl-table .fl-ck{width:36px;padding-left:14px;padding-right:0;text-align:left}
.finance-page .fl-table input[type=checkbox]{width:16px;height:16px;margin:0;vertical-align:-3px;accent-color:#121950;cursor:pointer}
.fl-all{display:inline-flex;align-items:center;gap:2px}
.finance-page .fl-allmenu{width:14px;height:20px;min-height:0;padding:0;border:0;background:none;color:#5f6368}
.fl-allmenu::after{content:"";display:inline-block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor}
body.finance-page .fl-allmenu:not(:disabled):hover{background:#f4f2ec;border-color:transparent}
.fl-table .fl-thm{cursor:pointer}
.fl-table .fl-thm:hover,.fl-table th.on{background:#faf9f6}
.fl-sort{font-style:normal;color:#121950;margin-left:3px}
.fl-rs{position:absolute;top:8px;bottom:8px;right:0;width:7px;cursor:col-resize;border-right:1px solid transparent}
.fl-table th:hover .fl-rs{border-right-color:#cdc8bc}
body.fl-resizing{cursor:col-resize;user-select:none}
.fl-table th.tail{width:auto}
.finance-page .fl-cp{float:right;display:inline-flex;align-items:center;gap:6px;min-height:0;height:22px;padding:0 4px;border:0;background:none;color:#121950;font-size:13px;font-weight:400}
body.finance-page .fl-cp:not(:disabled):hover{background:#f4f2ec;border-color:transparent;color:#121950}
.fl-cp svg{width:14px;height:14px}
.fl-table td.tail{color:#44484d}
.fl-table .fl-name{font-weight:500}
.fl-table tbody tr:hover>td{background:#faf9f6}
.fl-table tbody tr.picked>td{background:#eef6ff}
.fl-table.compact td{padding-top:5px;padding-bottom:5px}
.fl-table .fl-qa{width:64px;padding:0 4px;overflow:visible;position:relative}
.fl-qa .fl-q{display:inline-flex;gap:2px;opacity:0;transition:opacity 120ms ease}
.fl-table tbody tr:hover .fl-q,.fl-table tbody tr.hov .fl-q,.fl-table tbody tr:focus-within .fl-q{opacity:1}
.finance-page .fl-q>a,.finance-page .fl-q>button{width:26px;height:26px;min-height:0;padding:0;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:2px;background:none;color:#121950;font-size:17px;font-weight:700;line-height:1;text-decoration:none}
body.finance-page .fl-q>button:not(:disabled):hover,body.finance-page .fl-q>a:hover{background:#ece9e2;border-color:transparent;color:#121950}
.fl-q svg{width:15px;height:15px}
.fl-qa .fl-menu{left:4px;right:auto;top:100%}
.fl-none{padding:28px 0;color:#5f6368;font-size:14px}
.fl-none a{margin-left:6px}
/* 分页：表格外右下角 */
.fl-pager{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin:16px 0 0;font-size:13px;color:#44484d;min-height:28px}
.fl-pager .fl-size{display:inline-flex;align-items:center;gap:6px;margin-right:12px}
.finance-page .fl-pager select{height:28px;padding:0 6px;font-size:13px}
.fl-pager .fl-range{min-width:150px;text-align:right;margin-right:10px}
.finance-page .fl-pager button{min-width:28px;height:28px;min-height:0;padding:0 4px;border:0;border-radius:2px;background:none;color:#1c2024;font-size:13px;font-weight:400}
body.finance-page .fl-pager button:not(:disabled):hover{background:#f4f2ec;border-color:transparent;color:#1c2024}
body.finance-page .fl-pager button.on,body.finance-page .fl-pager button.on:disabled{background:#d3eaff;color:#121950;font-weight:600}
.finance-page .fl-pager button:disabled{color:#c3c6cb;background:none;cursor:default}
.fl-pager .fl-ell{letter-spacing:1px;color:#5f6368}
body.finance-page .fl-pager .fl-ell:not(:disabled):hover{color:transparent;position:relative}
.fl-pager .fl-ell:hover::after{content:attr(data-hover);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#121950}
.fl-pager .fl-jump{display:inline-flex;align-items:center;gap:6px;margin-left:12px}
.finance-page .fl-pager .fl-jump input{width:44px;height:28px;padding:0 6px;font-size:13px}
/* 列设置面板 */
.fl-picker .fl-cols{padding:10px 24px}
.fl-picker .fl-cols label{display:flex;flex-direction:row;align-items:center;gap:12px;margin:0;padding:8px 0;font-size:14px;color:#1c2024}
.fl-picker .fl-cols label.dis{color:#5f6368}
.finance-page .fl-picker .fl-cols input{width:16px;height:16px;accent-color:#121950}
.fl-pick-f{display:flex;gap:8px;padding:14px 20px;border-top:1px solid #ece9e2}
/* 窄屏（宽度 1400 以下）：搜索、视图只留图标。“选择要显示的列”任何宽度都只放图标（C-7，原型 K10 / M10），提示在 title / aria-label。 */
@media (max-width:1399px){.fl-c .lb{display:none}}
/* 页签与筛选分段（通用列表） */
.fl-tabs{display:flex;gap:28px;margin:4px 0 6px;border-bottom:1px solid #e4e0d7}
.finance-page .fl-tabs button{min-height:0;height:40px;padding:0 2px;border:0;border-bottom:2px solid transparent;border-radius:0;background:none;color:#44484d;font-size:14px;font-weight:400;margin-bottom:-1px}
body.finance-page .fl-tabs button:not(:disabled):hover{background:none;border-color:transparent;border-bottom-color:#cdc8bc;color:#1c2024}
body.finance-page .fl-tabs button[aria-selected=true]:not(:disabled){color:#121950;font-weight:600;border-bottom-color:#121950}
.fl-chips{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin:2px 0 10px}
.fl-seg{display:inline-flex;border:1px solid #e4e0d7;border-radius:4px;overflow:hidden}
.finance-page .fl-seg button{min-height:0;height:32px;padding:0 12px;border:0;border-radius:0;background:#fff;color:#1c2024;font-size:13.5px;font-weight:400;white-space:nowrap;flex:none}
.finance-page .fl-seg button+button{border-left:1px solid #e4e0d7}
body.finance-page .fl-seg button:not(:disabled):hover{background:#faf9f6;border-color:transparent;border-left-color:#e4e0d7;color:#1c2024}
body.finance-page .fl-seg button[aria-pressed=true]:not(:disabled){background:#d3eaff;color:#121950;font-weight:600}
body.finance-page .fl-segtabs button[aria-selected=true]:not(:disabled){background:#d3eaff;color:#121950;font-weight:600}
.fl-dot::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#2d6a45;margin-right:6px;vertical-align:1px}
.fl-dot.warn::before{background:#b8892a}.fl-dot.mute::before{background:#b9b3a6}.fl-dot.navy::before{background:#121950}
.fl-empty{padding:28px 0;color:#5f6368}
/* 页签人数（WP-219，人员原型 v97 R10“在职 7”）：名字后空一格、同字色同字重；为 0 也写。 */
.fl-n{margin-left:4px;color:inherit;font-weight:inherit}
.finance-page .fl-open{min-height:0;height:auto;padding:0;border:0;border-radius:0;background:none;color:#1c2024;font-size:14px;font-weight:500;text-align:left;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}
body.finance-page .fl-open:not(:disabled):hover{background:none;border-color:transparent;color:#121950;text-decoration:underline}
.fl-cmds .fl-menu{left:0;right:auto}
.fl-cmds .fl-menu small{margin-left:auto;padding-left:16px;color:#5f6368;font-size:12px}
.finance-page .fl-fsel{display:inline-flex;flex-direction:row;align-items:center;gap:8px;height:32px;max-width:100%;margin:0;padding:0 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-raised);color:#5f6368;font-size:13.5px}
/* 筛选名不折行（CJ 10-14 走查：花名册“部门：”“角色：”被挤成两行）；放不下时整组换行。 */
.finance-page .fl-fsel>span{flex:none;white-space:nowrap}.finance-page .fl-fsel{flex:none}
.finance-page .fl-fsel select{flex:0 1 auto;width:auto;height:30px;min-width:0;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:var(--ink);font:inherit}
.finance-page .fl-fsel:focus-within{outline:2px solid var(--action);outline-offset:2px}
.finance-page .fl-fsel select:focus-visible{outline:none}
/* 与查询筛选共用同一空心箭头；只在公共 select 增强后覆盖原背景箭头。 */
.q-caret,.finance-page .fs-filter::after{width:7px;height:7px;border-right:1.5px solid #5f6368;border-bottom:1.5px solid #5f6368;transform:rotate(45deg) translateY(-2px)}
.q-caret{margin-left:4px}
.finance-page .fs-filter{position:relative}
.finance-page .fs-filter::after{content:"";position:absolute;right:12px;top:50%;margin-top:-3.5px;pointer-events:none}
body.finance-page .fs-filter select:not([multiple]){background-image:none;padding-right:18px}
body.finance-page .fl-pick-f button:disabled{background:#eeebe4;border-color:#dfdbd1;color:#72767a;cursor:not-allowed}
.finance-page .fl-table td.fl-qa,.finance-page .fl-table.compact td.fl-qa{padding-top:0;padding-bottom:0}
.finance-page .fl-table .fl-q>a,.finance-page .fl-table .fl-q>button{height:22px}
.finance-page .fl-table td.fl-qa,.finance-page .fl-table th.fl-qa{overflow:visible}
.fl-tag{display:inline-block;margin-left:6px;padding:0 6px;border-radius:2px;background:#f8efda;color:#7a5200;font-size:12px;line-height:18px;vertical-align:1px}
/* 走查修正（WP-112b）：选择列放得下方框和 ▾；列名菜单分隔线 */
.finance-page .fl-table .fl-ck{width:52px;padding-left:12px;padding-right:4px}
.fl-line{display:block;height:1px;margin:4px 0;background:#ece9e2}
/* 右侧面板体系（WP-112c）：层级照复盘表——遮罩 18 < 详情 / 操作 / 结果面板、向导 20；面板从顶栏下方起，背后浅遮罩 */
.fw-scrim{position:fixed;inset:56px 0 0 0;z-index:18;background:rgba(28,32,36,.16);animation:fw-fade 200ms ease both}
@keyframes fw-fade{from{opacity:0}to{opacity:1}}
/* 右侧详情面板与向导面板同一宽度（CJ 10-14）：最宽 1040，左边至少留 500px，看得到模块标题、公司名和表格第一列；
   1547 屏 1040、1470 屏 970、1280 屏 780；导航收起时同样按屏宽减 500。顶栏右上角的窄面板另算。 */
.fw-drawer{position:fixed;top:56px;right:0;bottom:0;z-index:20;width:min(1040px,80vw);display:flex;flex-direction:column;background:#fff;box-shadow:-10px 0 28px rgba(0,0,0,.14);animation:fw-in 200ms cubic-bezier(.2,0,0,1) both}
@media (prefers-reduced-motion:reduce){.fw-drawer,.fw-scrim{animation:none}}
.fw-drawer>form,.fw-drawer>.fw-done{display:flex;flex-direction:column;min-height:0;flex:1;margin:0}
.fw-dh{display:flex;align-items:flex-start;gap:12px;padding:20px 24px 12px}
.fw-dt{min-width:0;flex:1}
.finance-page .fw-dt h2{margin:0;font:600 20px/1.35 "Songti SC",serif;display:flex;align-items:center;gap:8px}
.finance-page .fw-dt p{margin:4px 0 0;font-size:12.5px;color:#5f6368}
.fw-dtools{display:flex;align-items:center;gap:6px;flex:none}
.fw-drawer svg,.fw-page svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.finance-page .fw-ib{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:0;padding:0;border:0;border-radius:4px;background:none;color:#1c2024}
.finance-page .fw-ib svg{width:16px;height:16px}
.finance-page .fw-ib:hover,body.finance-page .fw-drawer .fw-ib:not(:disabled):hover{background:#f4f2ec;color:#1c2024;border-color:transparent}
/* 主操作平时灰，悬停或聚焦变深蓝（原型 16b / 16c）：看清再点 */
.finance-page .fw-act,body.finance-page .fw-act:not(:disabled){display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 12px;border:1px solid #dfdbd1;border-radius:4px;background:#f4f2ec;color:#44484d;font-weight:600;transition:background 150ms,color 150ms,border-color 150ms}
.finance-page .fw-act svg{width:16px;height:16px}
body.finance-page .fw-act:not(:disabled):hover,body.finance-page .fw-act:focus-visible{background:#121950;border-color:#121950;color:#fff}
.fw-dnote{margin:0 24px 10px;padding:8px 12px;background:#f8efda;border-left:3px solid #b08018;font-size:13px;color:#5a4410}
.fw-dtabs{display:flex;gap:4px;padding:0 24px;border-bottom:1px solid #ece9e2;flex:none;overflow-x:auto}
.finance-page .fw-dtabs button,.finance-page .fw-dtabs a{min-height:0;padding:9px 10px;border:0;border-bottom:2px solid transparent;border-radius:0;background:none;color:#44484d;font-weight:400;font-size:13.5px;white-space:nowrap;text-decoration:none}
body.finance-page .fw-dtabs button:not(:disabled):hover,.finance-page .fw-dtabs a:hover{background:#faf9f6;color:#1c2024;border-color:transparent;border-bottom-color:#cdc8bc}
.finance-page .fw-dtabs [aria-selected=true],body.finance-page .fw-dtabs button[aria-selected=true]:not(:disabled){color:#121950;font-weight:600;border-bottom-color:#121950}
.fw-dbody{flex:1;min-height:0;overflow-y:auto;padding:16px 24px 24px}
.fw-dbody[aria-busy=true]{background:linear-gradient(90deg,#fff,#f6f4ef,#fff) 0 0/200% 100%;animation:fw-busy 1.2s linear infinite}
@keyframes fw-busy{to{background-position:-200% 0}}
.finance-page .fw-dbody h3{margin:18px 0 8px;font-size:14px;color:#121950}
.finance-page .fw-dbody h3:first-child{margin-top:0}
.finance-page .fw-dl{display:grid;grid-template-columns:120px 1fr;gap:8px 16px;margin:0}
.fw-dl dt{color:#5f6368;display:flex;align-items:center;gap:4px}
.fw-dl dd small{margin-left:8px;color:#5f6368;font-size:12px}
.fw-lock{width:13px;height:13px;color:#8a8d91}
.finance-page table.fw-tl{min-width:0;width:100%;font-size:13px}
.finance-page .fw-tl th{color:#5f6368;font-weight:600;border-bottom:1px solid #e4e0d7;background:#fff;position:static}
.finance-page .fw-tl td:first-child,.finance-page .fw-tl th:first-child{position:static}
.finance-page .fw-tl th.num,.finance-page .fw-tl td.num{text-align:right}
.finance-page .fw-tl th.mid,.finance-page .fw-tl td.mid{text-align:center}
.finance-page .fw-tl td small{display:block;color:#5f6368;font-size:12px}
.fw-chg{display:block}
.fw-muted{color:#5f6368}
/* 面板里提醒后果的句子（WP-156，页面框架 5a1）：要别人确认才生效、不能撤销、影响已批准 / 已发布工资——设计体系 danger 深色，13px 常规字重，无底框无图标；说明怎么填的句子仍用 fw-muted 灰字。 */
.finance-page .fw-alert{color:#9b2c2c;font-size:13px;font-weight:400}
/* 只读输入框（WP-156）：浅灰底、默认光标、点了也没有聚焦描边——一看就知道不能改。 */
.finance-page input[readonly]:not([type=checkbox]):not([type=radio]),.finance-page textarea[readonly]{background:#f3f2ee;color:#44484d;cursor:default}
.finance-page input[readonly]:not([type=checkbox]):not([type=radio]):focus,.finance-page textarea[readonly]:focus{border-color:#cdc8bc;box-shadow:none;outline:none}
.fw-dfoot{display:flex;align-items:center;gap:10px;padding:14px 24px;border-top:1px solid #ece9e2;flex:none}
.finance-page .fw-dfoot button{min-width:88px}
.finance-page .fw-dfoot button[aria-busy=true]{cursor:progress}
.fw-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px;margin-top:14px}
.finance-page .fw-fields label{margin:0;min-width:0}
.fw-fields label.fw-wide{grid-column:1/-1}
.fw-fields input{width:100%}
.fw-fields small{color:#5f6368;font-size:12px}
.fw-money{position:relative}
.fw-money input{padding-right:46px;text-align:right}
.fw-money i{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-style:normal;font-size:12px;color:#8a8d91}
.finance-page ul.fw-bad,.finance-page p.fw-bad{margin:8px 0;color:#a3321f}
.finance-page ul.fw-bad{padding-left:18px}
.finance-page dd.fw-bad{color:#a3321f}
.fw-ok{width:20px;height:20px;flex:none}
.fw-done .fw-ok circle{stroke:none}
.fw-card{display:flex;flex-direction:column;gap:4px;padding:12px 14px;background:#faf9f6;margin:4px 0 14px}
.fw-card span{font-size:13px;color:#44484d}
/* ⤢ 展开的整页 */
.fw-back{margin:4px 0 8px}
.finance-page section.fw-page{padding:0;margin:8px 0 0}
.fw-page .fw-dbody{overflow:visible}
/* 分步向导骨架 */
.fw-drawer>form.fw-wiz,.fw-wiz{display:grid;grid-template-columns:260px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;flex:1;min-height:0;margin:0}
/* 面板窄于 1040 时（屏宽减 500，CJ 10-14）步骤栏收到 200px，给内容让地方；面板里的宽表在面板内横向滚动。 */
@media (max-width:1539px){.fw-drawer>form.fw-wiz,.fw-wiz{grid-template-columns:200px minmax(0,1fr)}.fw-drawer .fw-wmain{padding:24px 24px 40px}}
.fw-drawer .fw-dbody .table-wrap,.fw-drawer .fw-wmain .table-wrap{overflow-x:auto}
.fw-wiz>.fw-dh,.fw-wiz>.fw-dfoot{grid-column:1/-1}
/* 左栏步骤（WP-161，人员画布 v63 向导画板 .wsteps）：细线串起的圆点——未到空心、当前深蓝圆环、完成深蓝勾、有错红叉；没有序号、没有底色。每一步都能点。 */
.fw-wsteps{list-style:none;margin:0;padding:28px 24px;border-right:1px solid #ece9e2;overflow:auto}
.fw-wsteps li{display:flex;align-items:center;gap:12px;position:relative;padding:0 0 30px;font-size:14px;color:#44484d;cursor:pointer}
.fw-wsteps li:last-child{padding-bottom:0}
.fw-wsteps li:not(:last-child)::after{content:"";position:absolute;left:9px;top:22px;bottom:2px;width:1.5px;background:#cfd6ea}
.fw-wsteps li::before{content:"";box-sizing:border-box;width:20px;height:20px;border-radius:50%;border:1.5px solid #b5b7ba;background:#fff;display:flex;align-items:center;justify-content:center;flex:none;position:relative;z-index:1;font-size:12px;font-weight:700;line-height:1;color:#fff}
.fw-wsteps li[data-state=done]::before{content:"✓";background:#121950;border-color:#121950}
.fw-wsteps li[data-state=bad]{color:#b42318}
.fw-wsteps li[data-state=bad]::before{content:"×";background:#b42318;border-color:#b42318;font-size:14px}
.fw-wsteps li[data-state=on]{font-weight:600;color:#1c2024}
.fw-wsteps li[data-state=on]::before{border:6px solid #121950}
.fw-wsteps li[aria-current=step][data-state=bad]{font-weight:600}
.fw-wmain{overflow-y:auto;padding:28px 40px 48px;min-height:0}
.finance-page .fw-wmain>section{max-width:1200px;margin:0;padding:0;border:0;box-shadow:none;background:none}
/* 每步标题与说明（v63 .wiz-c h3 / .wiz-note）。 */
.finance-page .fw-wmain>section[data-step]>h3{margin:0 0 6px;font:600 22px/1.35 "Songti SC","Noto Serif SC",serif;color:#1c2024}
.finance-page .fw-wmain>section[data-step]>h3+.fw-muted{margin:0 0 20px;font-size:13px}
.fw-wiz>.fw-dh{border-bottom:1px solid #ece9e2}
/* 向导标题行（v63 .wiz-h）：标题与公司名同一行，下边一条细线；底栏（.wiz-f）：上一步 · 下一步 / 确认（左），保存草稿 · 取消（右），36px 高的按钮，次按钮浅灰描边。 */
.fw-wiz>.fw-dh{align-items:center;padding:18px 28px}
.fw-wiz>.fw-dh .fw-dt{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.finance-page .fw-wiz>.fw-dh .fw-dt h2{font-size:22px}
.finance-page .fw-wiz>.fw-dh .fw-dt p{margin:0;font-size:13px}
.finance-page .fw-wiz>.fw-dh .fw-dt h2 :is(small,.rs-company,.cs-company){font:400 13px/1.4 "PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:#5f6368;margin-left:4px}
.fw-wiz>.fw-dfoot{gap:8px;padding:14px 28px}
.finance-page .fw-wiz>.fw-dfoot button{min-width:0;min-height:0;height:36px;padding:0 14px;border-radius:4px;font-weight:600}
.finance-page .fw-wiz>.fw-dfoot button.secondary{border-color:#cdc8bc;color:#121950;background:#fff;font-weight:400}
.finance-page .fw-wiz>.fw-dfoot button.secondary:hover{background:#faf9f6}
.finance-page .fw-wiz>.fw-dfoot button:disabled{opacity:.55;background:#fff;color:#121950;border-color:#cdc8bc}
.finance-page .fw-wiz>.fw-dfoot button[data-wiz-confirm]:disabled,.finance-page .fw-wiz>.fw-dfoot button[data-wiz-next]:disabled{background:#121950;border-color:#121950;color:#fff}
/* 审阅页还有缺漏（WP-219 G5）：“确认”灰显不可点，悬停看“还有 N 项未填或填错”。 */
.finance-page .fw-wiz>.fw-dfoot button[data-wiz-confirm][aria-disabled=true]{background:#e9e6df;border-color:#e9e6df;color:#8a8d91;cursor:not-allowed}
/* 点过“下一步”仍有缺漏的那一步：没填 / 填错的字段红框（WP-161）。 */
.finance-page .fw-wiz [data-wiz-touched] :is(input,select,textarea):invalid{border-color:#b42318;box-shadow:inset 0 0 0 1px #b42318}
/* 审阅块（v63 R35 .rv）：不加框，块之间一条浅线；标题 14px 粗；缺漏一条浅红底 × 行；“编辑”在内容下面。 */
.fw-rblock{padding:14px 0;border-bottom:1px solid #f0ede6}
.fw-rhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;font-size:14px}
.finance-page .fw-rerr{display:flex;align-items:center;gap:8px;margin:4px 0 8px;padding:8px 12px;background:#f9e7e5;color:#b42318;font-size:13px;border-radius:3px;line-height:1.5}
.finance-page .fw-rerr::before{content:"×";font-weight:700}
.finance-page :is(.fw-rsum,.hire-sum) p{margin:0 0 6px;font-size:13.5px;line-height:22px;color:#44484d}
.finance-page .fw-rblock .fw-redit{margin-top:4px;font-size:13px;text-decoration:none}
.finance-page .fw-link{min-height:0;padding:0;border:0;background:none;color:#121950;text-decoration:underline}
.fw-ask{display:flex;align-items:center;gap:10px;margin-left:auto;color:#a3321f}
.fw-dfoot-end{display:flex;align-items:center;gap:10px;margin-left:auto}.fw-dfoot:has(.fw-ask:not([hidden])) .fw-dfoot-end{display:none}
.finance-page .fl-table tr.fw-on td{background:#eef5fc}
.finance-page .fl-table tr[data-fw-open]{cursor:pointer}
.fw-scroll-x{overflow-x:auto}
.finance-page form.fw-range{display:flex;align-items:flex-end;gap:10px;margin:0 0 10px}
.fw-range input{width:110px}

/* WP-116b：铃铛未读数、左侧“待处理”数字、通知面板（原型 v0.7.01.05 P10、P40a）。 */
.finance-page .fw-ib{position:relative}
.fw-badge{position:absolute;top:2px;right:1px;min-width:15px;height:15px;padding:0 4px;box-sizing:border-box;border-radius:8px;background:#121950;color:#fff;font-size:10.5px;font-style:normal;font-weight:700;line-height:15px;text-align:center}
.fw-count{position:absolute;right:16px;top:50%;transform:translateY(-50%);min-width:20px;height:18px;padding:0 6px;box-sizing:border-box;border-radius:9px;background:#eeebe4;color:#44484d;font-size:12px;line-height:18px;text-align:center;font-variant-numeric:tabular-nums}
.fw-s.on .fw-count{background:#e3dfd5;color:#121950}
.fw-notice-all{display:flex;justify-content:flex-end;margin:0 0 8px}
.fw-notices{list-style:none;margin:0;padding:0}
.fw-notices li{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:12px 0;border-bottom:1px solid #e3dfd5}
.fw-notices li.new p{font-weight:600;color:#1c2024}
.fw-notices p{grid-column:1/-1;margin:0;color:#44484d;font-size:13.5px;line-height:1.5}
.fw-notices span{color:#686c71;font-size:12.5px}
.fw-notices a{font-size:13px;color:#121950;font-weight:600;text-decoration:none}
.fw-notices a:hover{text-decoration:underline}
.fw-notice-all{padding:4px 16px 0}
.fw-notices li{padding:12px 16px}
.fw-notices li.new{background:#f7f9fd}
/* 月度工资页壳（WP-130，原型 v0.7.02.01 M10–M50；fw_m.css / fw2.css 精致版） */
.ps-ttl{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:4px 0 6px}.ps-ttl h1{margin:0;font-family:"Songti SC","Noto Serif SC","Source Han Serif SC","STSong","SimSun",serif;font-size:26px;line-height:34px;font-weight:600}.ps-ttl .meta{color:#5f6368;font-size:13px}
.ps-tabs{display:flex;gap:24px;border-bottom:1px solid #e4e0d7;margin:0 0 4px}.ps-tabs a{padding:10px 2px;color:#44484d;text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color 150ms cubic-bezier(.2,0,0,1)}.ps-tabs a:hover{color:#1c2024}.ps-tabs a.on{color:#121950;font-weight:600;border-bottom-color:#121950}
.ps-cmd{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:6px;flex-wrap:wrap;background:#fff;padding:10px 0 8px;margin-left:-10px}
.finance-page .ps-cmd .ps-c{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:0;border-radius:3px;background:none;color:#1c2024;font-weight:400;font-size:13.5px;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color 120ms cubic-bezier(.2,0,0,1)}
.finance-page .ps-cmd .ps-c:hover{background:#faf9f6}.ps-cmd .ps-c svg{width:15px;height:15px;fill:none;stroke:#121950;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ps-cmd .ps-c.disabled,.ps-cmd .ps-c.disabled svg{color:#a3a6aa;stroke:#a3a6aa;cursor:not-allowed}
.ps-nav{margin-left:auto;display:inline-flex;gap:8px;align-items:center}
.finance-page .ps-nav .btn.sm{height:30px;min-height:30px;padding:0 12px;font-size:13px;line-height:28px;white-space:nowrap;font-weight:400;border-radius:4px}
.finance-page .ps-nav .btn.primary{color:#fff;background:#121950;border:1px solid #121950;font-weight:600}.finance-page .ps-nav .btn.primary:hover{background:#1b2566}
.finance-page .ps-nav .btn.ghost{color:#121950;background:transparent;border:1px solid transparent}.finance-page .ps-nav .btn.ghost:hover{background:#faf9f6}
.finance-page .ps-nav .btn.save{color:#1c2024;background:#fff;border:1px solid #cdc8bc}
.finance-page .ps-nav .btn.disabled,.finance-page .ps-nav .btn.disabled:hover{background:#efede8;border-color:#e4e1da;color:#a3a6aa;cursor:not-allowed}
.ps-saved{color:#2d6a45;font-size:13px;margin-right:4px;animation:ps-in 400ms cubic-bezier(.2,0,0,1)}@keyframes ps-in{from{opacity:0}to{opacity:1}}
.ps-mhead{display:flex;align-items:center;gap:14px;margin:6px 0 6px}.ps-mhead .page-month{margin:0}.ps-note{color:#5f6368;font-size:13px}
.ps-steps{display:flex;gap:0;margin:4px 0 12px;padding:0 0 12px;border-bottom:1px solid #ece9e2;list-style:none}
.ps-steps li{position:relative;padding:0 18px 0 0;margin-right:14px;white-space:nowrap}
.ps-steps li a{display:flex;align-items:center;gap:8px;font-size:13px;color:#5f6368;text-decoration:none}
.ps-steps li i{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;border:1.5px solid #cdc8bc;font-style:normal;font-size:12px;color:#5f6368;background:#fff;flex:none}
.ps-steps li.done i{background:#121950;border-color:#121950;color:#fff}.ps-steps li i svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ps-steps li.cur a{color:#121950;font-weight:600}.ps-steps li.cur i{border-color:#121950;color:#121950;border-width:2px}
.ps-steps li.on a{color:#121950;font-weight:600}.ps-steps li.done.on i{box-shadow:0 0 0 2px #fff,0 0 0 4px #121950}
.ps-steps li.wait a{color:#8a6416}.ps-steps li.wait i{border-color:#b8892a;color:#b8892a}
.ps-steps li.bad a{color:#9b2c2c}.ps-steps li.bad i{border-color:#9b2c2c;color:#9b2c2c}
.ps-steps li:not(:last-child)::after{content:"";position:absolute;right:0;top:11px;width:10px;height:1px;background:#cdc8bc}
.ps-steps li a:hover .ps-n{text-decoration:underline}
.ps-marks{display:flex;gap:22px;font-size:12.5px;color:#44484d;margin:0 0 10px}.ps-marks span{display:inline-flex;align-items:center;gap:5px}.ps-marks .ok{color:#2d6a45}.ps-marks .no{color:#5f6368}
.ps-marks svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.ps-marks i.pend{display:inline-block;width:11px;height:11px;border:1.5px solid #cdc8bc;border-radius:50%}
.ps-bar{display:flex;align-items:center;gap:8px;padding:9px 14px;margin:0 0 10px;border-radius:4px;font-size:13px}.ps-bar a{margin-left:auto;color:#121950}.finance-page .ps-bar-act{margin:0 0 0 auto}.finance-page .ps-bar-act button{background:none;border:0;padding:0;min-height:0;font:inherit;color:#121950;text-decoration:underline;cursor:pointer}.finance-page .ps-bar .ps-bar-act button:hover,.finance-page .ps-bar .ps-bar-act button:active{background:none;border:0;color:#0c1038}
.ps-y{background:#f8efda;color:#7a5200}.ps-g{background:#e6efe8;color:#2d6a45}.ps-r{background:#fbeaea;color:#8b2a2a}.ps-bar.ps-neu{background:#f4f2ee;color:#44484d}
.ps-g svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.ps-list{width:100%;table-layout:fixed}.ps-list tbody tr{cursor:pointer}.ps-list tbody tr:hover td{background:#faf9f6;transition:background-color 150ms}
@media (max-width:1400px){.ps-steps li{padding-right:12px;margin-right:8px}.ps-steps li:not(.on) .ps-n{display:none}.ps-cmd .ps-c.ovf{display:none}}
.ps-list-h{margin:22px 0 8px;font-size:14px;font-weight:600}
.ps-more{display:none;position:relative}.ps-more summary{list-style:none}.ps-more summary::-webkit-details-marker{display:none}.ps-more .fw-panel{position:absolute;left:0;top:34px;z-index:20;display:grid;min-width:180px;padding:6px;background:#fff;border:1px solid #e3dfd5;border-radius:4px;box-shadow:0 8px 24px rgba(28,32,36,.12)}
@media (max-width:1400px){.ps-more{display:inline-block}}
.ps-drop{position:relative;display:inline-block}.ps-drop summary{list-style:none}.ps-drop summary::-webkit-details-marker{display:none}.ps-drop summary i{margin-left:4px;font-style:normal;font-size:11px;color:#73777c}.ps-drop .fw-panel{position:absolute;left:0;top:34px;z-index:20;display:grid;min-width:200px;padding:6px;background:#fff;border:1px solid #e3dfd5;border-radius:4px;box-shadow:0 8px 24px rgba(28,32,36,.12);animation:fw-fade 120ms ease-out}.ps-drop summary:focus{outline:none}.ps-drop summary:focus-visible{outline:2px solid #121950;outline-offset:1px}
.ps-months{position:relative}.ps-months summary{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 10px;border:1px solid #cdc8bc;border-radius:4px;background:#fff;color:#1c2024;cursor:pointer;list-style:none;min-width:200px}.ps-months summary::-webkit-details-marker{display:none}.ps-months summary b{font-weight:400}.ps-months summary i{margin-left:auto;font-style:normal;color:#44484d}
.ps-months .fw-panel{position:absolute;left:0;top:34px;z-index:20;display:grid;min-width:240px;padding:6px;background:#fff;border:1px solid #e3dfd5;border-radius:4px;box-shadow:0 8px 24px rgba(28,32,36,.12)}
.ps-months .fw-panel a{display:flex;align-items:center;gap:12px;padding:7px 10px;border-radius:3px;color:#1c2024;text-decoration:none;font-size:13.5px}.ps-months .fw-panel a:hover{background:#faf9f6}.ps-months .fw-panel a.on{background:#d3eaff;color:#121950}
.ps-months .fw-panel a small{margin-left:auto;color:#5f6368;font-size:12.5px}.ps-months .ps-all{border-top:1px solid #ece9e2;margin-top:4px;padding-top:9px;color:#121950}
.ps-more summary:focus{outline:none}.ps-more summary:focus-visible{outline:2px solid #121950;outline-offset:1px}
.ps-list .badge{background:none;padding:0;font-weight:400;color:#44484d;font-size:13.5px}.ps-list .badge::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#121950;margin-right:6px;vertical-align:1px}
.ps-list .badge.ok::before{background:#2d6a45}.ps-list .badge.warn::before{background:#b8892a}.ps-list .badge.mute::before{background:#b9b3a6}.ps-list .badge.bad::before{background:#9b2c2c}
.finance-page .ps-list .badge,.finance-page .ps-list .badge.ok,.finance-page .ps-list .badge.warn,.finance-page .ps-list .badge.mute,.finance-page .ps-list .badge.bad{background:none;padding:0}
/* 第 2 步 应发工资（WP-132，原型 M11 / M90 / M50） */
.finance-page table.s2{min-width:0;width:100%}.s2 th.mid{text-align:center}.s2 td.num,.s2 th.num{text-align:right;white-space:nowrap}
.s2 input[data-amount]{width:96px;height:28px;text-align:right;font-variant-numeric:tabular-nums;border:1px solid #cdc8bc;border-radius:3px;padding:0 6px}
.s2 input[data-amount]::placeholder{color:#b5b7ba}.s2 input.inp-bad{border-color:#9b2c2c;box-shadow:0 0 0 1px #9b2c2c inset}
.s2 tbody tr:hover td{background:#faf9f6;transition:background-color 150ms}.s2 tr.s2-err td{background:#fdf6f5}
.s2 td.tail .badge{margin-right:6px}.s2 td.tail small.hint{display:inline;margin-right:6px;color:#686c71}.s2 td.tail .bad{margin-right:6px}
.s2 .s2-note{width:140px;height:26px;border:1px solid transparent;background:transparent;padding:0 4px}.s2 .s2-note:hover,.s2 .s2-note:focus{border-color:#cdc8bc;background:#fff}
.s2 .cmark{position:relative;display:inline-block;width:0;height:0;border-top:7px solid #121950;border-left:7px solid transparent;vertical-align:top;margin-left:2px;cursor:help}
.s2-card{position:relative;display:inline-block}.s2-card>summary{list-style:none;cursor:pointer;color:#121950}.s2-card>summary::-webkit-details-marker{display:none}
.s2-pop{position:absolute;right:0;top:24px;z-index:12;min-width:300px;padding:10px 12px;background:#fff;border:1px solid #e3dfd5;border-radius:4px;box-shadow:0 8px 24px rgba(28,32,36,.12);text-align:left;white-space:nowrap}
.s2-pop b{display:block;margin-bottom:6px;font-weight:600}.s2-pop p{margin:3px 0;font-size:12.5px;color:#44484d}.s2-pop .s2-sum{border-top:1px solid #ece9e2;padding-top:4px;font-weight:600}
.s2-adj-row{display:flex;gap:6px;align-items:center;margin:4px 0;font-size:12.5px}.s2-adj-row input{height:26px}.s2-adj-row input[data-amount]{width:96px}.s2-adj-row .s2-m{width:76px}
.s2-edited{font-style:normal;color:#8a6416;margin-left:4px}
.s2 tr.s2-sev td{background:#faf9f6;color:#44484d;font-size:12.5px;padding-top:4px;padding-bottom:4px}
.s2-sum{display:flex;gap:28px;padding:12px 0 0;border-top:1px solid #ece9e2;margin-top:10px;font-size:13px;color:#44484d;flex-wrap:wrap}.s2-sum b{display:block;color:#1c2024;font-size:15px;font-variant-numeric:tabular-nums;margin-top:2px;font-weight:600}
@media (max-width:1400px){.s2 .s2-opt{display:none}.s2.show-opt .s2-opt{display:table-cell}.s2 input[data-amount]{width:108px}}
.s2-cols{display:none;position:relative}.s2-cols summary{cursor:pointer;color:#121950;font-weight:400;list-style:none}.s2-cols .fw-panel{position:absolute;right:0;top:22px;z-index:12;background:#fff;border:1px solid #e3dfd5;border-radius:4px;padding:8px 10px;white-space:nowrap;box-shadow:0 8px 24px rgba(28,32,36,.12)}
@media (max-width:1400px){.s2-cols{display:inline-block}}
/* WP-132 走查：1470 一屏放下（输入框 84px、单元格内边距收窄、备注可折行） */
.finance-page .tw>table.s2{width:100%;min-width:0}.finance-page .tw table.s2 th,.finance-page .tw table.s2 td{padding-left:6px;padding-right:6px}
.finance-page .tw table.s2 td.tail{white-space:normal;min-width:120px}.s2 input[data-amount]{width:84px}.s2 .s2-note{width:120px}
@media (max-width:1400px){.s2 input[data-amount]{width:96px}}
.s2-pop{position:fixed;right:auto}
/* WP-132 复查：1470 下 12 列一屏（姓名列不用宽表的 150px 下限、输入框 76px、备注不撑高行） */
.finance-page table.s2.sheet td:first-child{min-width:0}.finance-page .tw table.s2 td.fz-name{max-width:110px;overflow:hidden;text-overflow:ellipsis}
.s2 input[data-amount]{width:76px}.s2 .s2-note{width:100px}.s2 td.tail small.hint,.s2 td.tail .badge{white-space:nowrap}
.finance-page .tw table.s2 td{vertical-align:middle}
@media (max-width:1400px){.s2 input[data-amount]{width:96px}}
.finance-page .tw table.s2 td.tail{min-width:0;width:150px;max-width:150px}.s2 td.tail small.hint,.s2 td.tail .badge{white-space:normal}.s2 .s2-note{width:100%;min-width:0}
.s2 input[data-amount]{width:68px;padding:0 4px}.finance-page .tw table.s2 th,.finance-page .tw table.s2 td{padding-left:4px;padding-right:4px}.finance-page .tw table.s2 td.fz-name{max-width:96px}
.finance-page .tw table.s2 td.tail{width:160px;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.s2 td.tail small.hint,.s2 td.tail .badge{white-space:nowrap}
.finance-page .tw table.s2 td.num,.finance-page .tw table.s2 th.num{min-width:0}.s2 input[data-amount]{width:76px}.finance-page .tw table.s2 th.fz-name,.finance-page .tw table.s2 td.fz-name{width:96px;max-width:96px}.finance-page .tw table.s2 td.tail,.finance-page .tw table.s2 th.tail{width:130px;max-width:130px}
.finance-page .tw table.s2 td.tail .s2-note{display:inline-block;width:110px;max-width:100%;color:#1c2024;text-overflow:ellipsis;vertical-align:middle}
/* WP-133 第 3 步：主表只读 10 列；补缴区 / 外地代缴块；上传组件紧凑态。 */
.s3-sec{margin-top:22px}.s3-sec .sec-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;font-size:14px;font-weight:600;margin:0 0 8px}.s3-sec .sec-h small{font-weight:400;color:#686c71;font-size:13px}.s3-sec .sec-h .fw-link{margin-left:auto;font-weight:400}
.finance-page .tw table.s3-supp td.tail,.finance-page .tw table.s3-agency td.tail{width:auto;max-width:none;white-space:nowrap}.s3 td.tail .badge{margin-right:6px}.s3 td.tail .redl{margin-right:6px}
.s3-supp select{height:28px}.s3-supp .s3-note{width:220px}.s3-up{margin-top:8px}.s3-up .dz{max-width:360px;padding:8px 12px;min-height:0}.s3-up .dz small{display:none}
.s3 .redl{color:#9b2c2c;font-size:12.5px}
.finance-page .tw table.s3-supp td.tail .s3-note{width:220px}
/* WP-133 走查：补缴备注框看得出、左对齐；1280 下代缴表收窄。 */
.finance-page .tw table.s3-supp td.tail .s3-note{text-align:left;border-color:#cdc8bc;background:#fff}
@media (max-width:1400px){.s3-agency input[data-amount]{width:76px}.finance-page .tw table.s3-agency td.tail .s2-note{width:90px}.finance-page .tw table.s3-agency td.tail{white-space:normal}}
/* 通用列表 · 列筛选、筛选条、固定列、合计与分组小计、选择列拖动（WP-162，框架 3a / 4a）。 */
.fl-frow{display:flex;align-items:center;gap:6px;padding:6px 10px;flex-wrap:wrap;max-width:300px}.fl-frow select,.fl-frow input{min-height:30px;padding:4px 8px;font-size:13px}.fl-frow input{width:110px}
.finance-page .fl-frow .fl-fapply{min-height:30px;padding:4px 12px;font-size:13px}
.fl-fbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 8px;font-size:13px;animation:fw-fade 150ms}
.fl-fchip{display:inline-flex;align-items:center;gap:6px;padding:3px 4px 3px 10px;border:1px solid #d6e0f5;border-radius:14px;background:#f6f8fe;color:#121950}
.finance-page .fl-fchip button{min-height:0;min-width:0;width:20px;height:20px;padding:0;border:0;border-radius:50%;background:transparent;color:#5f6368;font-size:15px;line-height:1}
.finance-page .fl-fchip button:hover{background:#e6ecfb;color:#121950}
.finance-page .fl-fbar .fl-fclear{min-height:0;padding:2px 6px;border:0;background:transparent;color:#121950;text-decoration:underline}
.fl-fcount{margin-left:auto;color:#5f6368}
.fl-table tfoot td{position:sticky;bottom:0;z-index:3;background:#f7f5f0;font-weight:700;border-top:1px solid #d9d5cb;border-bottom:0}
.fl-table tr.q-sub td,.fl-table tr[data-gsub] td{background:#faf8f3;font-weight:600}
.fl-table th.fl-pinned{box-shadow:inset -1px 0 0 #e4e0d7,inset 0 -1px 0 #e4e0d7}
.fl-picker .fl-drag{cursor:grab}.fl-picker .fl-drag.dragging{opacity:.4}.fl-grip{font-style:normal;color:#9a9da1;letter-spacing:-2px;margin-right:6px;user-select:none}
@keyframes fw-fade{from{opacity:0}to{opacity:1}}
.fw-wiz [data-wiz-issues]{margin:0 0 14px}.fw-wiz [data-wiz-issues] p{margin:0 0 4px}.fw-wiz [data-wiz-issues] .fw-link{margin-left:6px}
/* 花名册“工资汇总”面板（WP-160，原型 R16）。 */
.fw-dbody.ps{padding:20px 26px 6px}
.ps-who{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;font-size:12.5px;color:#5f6368}
.ps-co{display:inline-flex;align-items:center;padding:2px 10px;border:1px solid #d6e0f5;border-radius:12px;background:#fff;color:#5f6368;font-size:12.5px;text-decoration:none}
.ps-co.on{background:#f6f8fe;color:#121950}a.ps-co:hover{border-color:#121950;color:#121950}
.ps-none{margin:18px 0;color:#5f6368}
.finance-page .ps h4{margin:0 0 12px;font-size:13.5px;font-weight:600;color:#1c2024;display:flex;align-items:baseline;gap:8px}.finance-page .ps h4>span{font-weight:400;font-size:12px;color:#5f6368}
.ps-blk{padding:18px 0 20px;border-top:1px solid #f0ede6;position:relative}.ps-blk.first{border-top:0;padding-top:16px}
.ps-k5{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid #ece9e2;border-radius:8px;overflow:hidden}
.ps-k5 div{padding:12px 14px;font-size:12px;color:#5f6368;border-left:1px solid #ece9e2;white-space:nowrap}.ps-k5 div:first-child{border-left:0}
.ps-k5 b{display:block;margin-top:4px;font-size:17px;font-weight:600;color:#1c2024;font-variant-numeric:tabular-nums}
.ps-k5 .hl{background:#f6f8fe}.ps-k5 .hl b{color:#121950}
.ps-bars{position:relative}.fw-drawer .ps svg{stroke:none;font-family:inherit}.ps-bars svg{display:block}.ps-bars a[data-ps-bar]{cursor:pointer}.ps-bars a[data-ps-bar]:hover .ps-hit{fill-opacity:.05}
.ps-lg{display:flex;gap:16px;font-size:12px;color:#44484d;margin-top:4px}.ps-lg i,.ps-tip i,.ps-dl i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;flex:none}
.ps-tip{position:absolute;top:46px;z-index:5;width:252px;background:#fff;border:1px solid #e4e0d7;border-radius:6px;box-shadow:0 8px 22px rgba(0,0,0,.14);padding:10px 12px;font-size:12px;color:#44484d;pointer-events:none}
.ps-tip h5{margin:0 0 6px;font-size:12px;color:#1c2024;font-weight:600}.ps-tip div{display:flex;justify-content:space-between;padding:2px 0;font-variant-numeric:tabular-nums}
.finance-page .ps-sw{margin-left:auto;display:inline-flex;border:1px solid #d9d5cb;border-radius:5px;overflow:hidden}
.finance-page .ps-sw button{min-height:0;min-width:0;padding:3px 10px;font-size:12px;border:0;border-radius:0;background:#fff;color:#44484d;font-weight:400}
.finance-page .ps-sw button.on{background:#eef3fd;color:#121950;font-weight:600}.finance-page .ps-sw button:hover{background:#f4f2ec}
.ps-dn{display:grid;grid-template-columns:196px 1fr;gap:30px;align-items:center}.ps-dn[hidden]{display:none}
.ps-dl{display:flex;flex-direction:column;gap:13px;font-size:13px;color:#44484d}.ps-dl div{display:flex;align-items:center;gap:8px}.ps-dl span{flex:1}
.ps-dl em{font-style:normal;font-variant-numeric:tabular-nums;color:#1c2024;width:96px;text-align:right}.ps-dl b{font-weight:600;color:#1c2024;width:48px;text-align:right;font-variant-numeric:tabular-nums}
.finance-page .ps-dl p{margin:2px 0 0;font-size:11.5px;color:#5f6368;line-height:1.5}
.finance-page .fw-dfoot .ps-ghost{background:transparent;border-color:transparent;color:#121950;min-width:0;padding:7px 10px}.finance-page .fw-dfoot .ps-ghost:hover{background:#f4f2ec}
.fw-dfoot .ps-close{margin-left:auto}
/* 核对单据面板（WP-168，原型 M18e）：两格并排；结果在同一面板里淡入。 */
.doc-verify-fields{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.doc-verify .req{color:#b42318}
.doc-verify-result{margin-top:18px;padding:14px 16px;border:1px solid #e3dfd5;border-radius:6px;background:#faf9f6;animation:fw-fade 200ms ease}
.doc-verify-result p{margin:0 0 4px}.doc-verify-result .ok-title{font-weight:600;color:#2d6a45}.doc-verify-result .ok-title::before{content:"✓ "}
.doc-verify-result .bad{color:#8b1e1e;margin:0}.doc-verify-result .meta{color:#5f6368;font-size:13px}
/* 草稿箱（框架第 12 张，WP-177 D1）：做什么 · 对谁一行，停在第几步 · 何时保存一行，右侧“继续”和垃圾桶。 */
.fw-drafts li{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.fw-drafts li p{grid-column:auto;color:#1c2024}.fw-drafts li span{display:block;margin-top:2px;color:#5f6368;font-size:12.5px}
.fw-draft-acts{display:flex;align-items:center;gap:4px}.fw-draft-acts form{display:inline;margin:0}
.fw-wiz-saved{align-self:center;color:#2d6a45;font-size:13px;transition:opacity .4s}.fw-wiz-saved.out{opacity:0}
/* 人员详情 › 激励：所属年度下拉当节标题（CJ 10-14）。 */
.finance-page .fw-sec .fw-year{margin:0}.finance-page .fw-sec .fw-year select{width:auto;min-height:0;height:32px;padding:0 28px 0 10px;font-size:15px;font-weight:600}
/* 日期 / 月份选择器的选中态用设计体系深蓝（WP-176 C11），不用插件默认亮蓝。 */
.flatpickr-calendar .flatpickr-day.selected,.flatpickr-calendar .flatpickr-day.selected:hover,.flatpickr-calendar .flatpickr-monthSelect-month.selected,.flatpickr-calendar .flatpickr-monthSelect-month.selected:hover{background:#121950;border-color:#121950;color:#fff}
.flatpickr-calendar .flatpickr-monthSelect-month.today:not(.selected),.flatpickr-calendar .flatpickr-day.today:not(.selected){border-color:#121950}
/* 表头尾列“选择要显示的列”（工资第 2–6 步）：靠右、与“备注”留间距、带斜向箭头，同通用列表表头。 */
.finance-page th.tail:has(.s2-cols),.finance-page .tw table.s2 th.tail:has(.s2-cols){white-space:nowrap;width:auto;max-width:none;min-width:200px}.finance-page th.tail .s2-cols{float:right;margin-left:12px;text-decoration:none;font-weight:400}.finance-page th.tail .s2-cols::before{content:"⤢";margin-right:4px}
/* 选择要显示的列（Q4，原型 Q13）：尾列的 ⋮⋮ 灰显占位；“重置”是文字按钮，悬停不变深底。 */
.fl-grip.off{opacity:.35}
body.finance-page .fl-pick-f .fw-link{align-self:center;padding:0 8px}
body.finance-page .fl-pick-f .fw-link:not(:disabled):hover,body.finance-page .fl-pick-f .fw-link:not(:disabled):active{background:none;border-color:transparent;color:#1b2566}
/* 合计文字格不折行；展开占位格在前时仍只命中实际标签格，不影响明细。 */
.finance-page tr.fp-total > td[data-col="name"]{white-space:nowrap}
/* 合计行（Q5，原型 Q10）：浅米底、加粗，吸底时同样；尾列表头与“选择要显示的列”同一行不折（Q1）。 */
.finance-page .fl-table tfoot td{background:#f4f2ec;font-weight:600}
.fl-table th.tail{white-space:nowrap}
.finance-page .fl-table th.fl-tight .fl-cp{float:none;vertical-align:middle;margin-left:2px}
/* 吸底合计行的第一格也吸底（Q1：原被 .fl-table td:first-child{position:static} 压掉，“合计 · N 人”留在原位、与其他合计格错开）。 */
.finance-page .fl-table tfoot td:first-child{position:sticky;bottom:0}
/* 统一下拉（WP-174）：原生 select 关着时同输入框 + ▾；弹出的选项是统一菜单（finance-select.js），样子同查询页值框菜单。 */
.finance-page select:not([multiple]):not([size]){-webkit-appearance:none;appearance:none;padding-right:28px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2344484d' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:10px 6px}
.finance-page select:disabled{cursor:not-allowed;color:#72767a;background-color:#f4f2ec}
.fs-menu{position:fixed;z-index:1000;display:flex;flex-direction:column;min-width:160px;max-height:320px;padding:6px 0;background:#fff;border:1px solid #e4e0d7;border-radius:6px;box-shadow:0 8px 22px rgba(0,0,0,.12);animation:fw-fade 150ms;font-size:13.5px;color:#1c2024}
.fs-list{overflow:auto}
body.finance-page .fs-menu .fs-search{margin:0 8px 6px;width:auto;min-height:0;height:30px;padding:0 9px;border:1px solid #cdc8bc;border-radius:2px;font-size:13px}
body.finance-page .fs-menu button.fs-opt{position:relative;display:flex;align-items:center;width:100%;min-height:32px;padding:6px 16px 6px 30px;border:0;border-radius:0;background:transparent;color:#1c2024;font-size:13.5px;font-weight:400;text-align:left;white-space:nowrap;justify-content:flex-start}
body.finance-page .fs-menu button.fs-opt:not(:disabled):hover,body.finance-page .fs-menu button.fs-opt:not(:disabled):active,body.finance-page .fs-menu button.fs-opt:focus{background:#f4f2ec;border-color:transparent;color:#1c2024;outline:none}
.fs-opt[aria-selected=true]::before{content:"✓";position:absolute;left:12px;color:#121950}
body.finance-page .fs-menu button.fs-opt:disabled{color:#9a9da1;cursor:not-allowed}
.fs-group{padding:8px 14px 4px;color:#686c71;font-size:12px}
/* 年份选择器（概览的年度，_YearPick）：‹ 年份 ›。 */
.finance-page .yearpick{display:inline-flex;align-items:center;gap:6px}.finance-page .yearpick input{width:88px;text-align:center}.finance-page .yearpick button{min-height:32px;height:32px;padding:0 10px}

/* WP-187：页脚随内容撑满主区；定长字段不随宽屏拉伸。 */
.finance-page main.fw-main{display:flex;flex-direction:column}
.fw-main> :not(.platform-footer){flex-shrink:0}
.fw-main .platform-footer{margin-top:auto;padding-top:40px;flex-shrink:0}
.finance-page :is(.fw-fields,.finance-form,form>.grid){max-width:1200px}
.finance-page [data-field-width=xs]{width:140px;max-width:100%}
.finance-page [data-field-width=sm]{width:200px;max-width:100%}
.finance-page [data-field-width=md]{width:260px;max-width:100%}
.finance-page [data-field-width=lg]{width:400px;max-width:100%}
.finance-page .finance-date{display:inline-block;width:200px;max-width:100%;vertical-align:middle}
.finance-page .finance-date:has(.mo-date--year,.mo-date--time,.mo-date--stepper){width:140px}
.finance-page .finance-date:has(.mo-date--datetime){width:260px}
.finance-page .finance-date .mo-field{margin:0;max-width:100%;gap:4px}
.finance-page .finance-date .mo-field__input{border:0;background:transparent;padding:0 10px;min-width:0;width:100%;max-width:100%;height:34px;outline:none}
.finance-page .finance-date .mo-field__input.is-preview{color:var(--ink-placeholder)}
.finance-page .finance-date button{min-height:0;min-width:0;padding:0;border:0;background:transparent;color:var(--ink);border-radius:var(--radius-sm);font-weight:400}
.finance-page .finance-date button:hover{background:var(--surface-sunken);color:var(--action)}
.finance-page .finance-date .mo-date__cell{height:30px;font-size:12.5px}
.finance-page .finance-date .mo-date__cell--month,.finance-page .finance-date .mo-date__cell--year{height:auto;font-size:13px}
.finance-page .finance-date .mo-date__cell.is-out{color:var(--ink-placeholder)}
.finance-page .finance-date .mo-date__cell.is-sel,.finance-page .finance-date .mo-date__tick.is-sel{background:var(--surface-tint);color:var(--action);font-weight:600}
.finance-page .finance-date .mo-date__cell:disabled{background:transparent;color:var(--ink-placeholder);box-shadow:none}
.finance-page .finance-date .mo-date__title{height:26px;padding:0 6px;font-weight:600}
.finance-page .finance-date .mo-ibtn{display:inline-flex;align-items:center;justify-content:center}
.finance-page .finance-date .mo-ibtn--xs{width:24px;height:24px}
.finance-page .finance-date .mo-ibtn--sm{width:28px;height:28px}
.finance-page .finance-date .mo-linkbtn{padding:0 4px;color:var(--action);height:26px}
.finance-page .finance-date .mo-date__pop[popover]{position:fixed;margin:0;right:auto;bottom:auto;border:0;overflow:visible}
.finance-page .finance-date .mo-field__error{padding:0;border:0;background:none;color:var(--danger);font-size:12px}
.finance-page .yearpick>button[hidden],.finance-page .cs-yearpick>button[hidden],.finance-page input[hidden]{display:none}
.finance-page .fl-cp{color:var(--action);border-radius:var(--radius-md)}
.finance-page .fl-cp:hover,.finance-page .fl-cp:focus-visible{background:var(--surface-tint);color:var(--action)}
.finance-page .fl-table :is(th,td).fl-key{white-space:nowrap;overflow:visible;text-overflow:clip}
.finance-page :is(.report-legend,[data-ov-legend]) button{border:1px solid transparent;border-radius:4px;color:#121950}
.finance-page :is(.report-legend,[data-ov-legend]) button:not(.secondary):not(:disabled):is([aria-pressed=true],:hover,:active,:focus-visible){background:#edf2fa;color:#121950;border-color:#b9c4d8;box-shadow:none;opacity:1}

.finance-page select[hidden]{display:none}
.finance-page .finance-date .mo-date__pop .mo-btn--primary{background:var(--action);color:var(--on-action);padding:0 10px}

/* 固定长度字段采用体系尺度；名称、地址、说明继续填满所在栏。 */
.finance-page .fw-fields>label>input:is([type=email]){width:260px}
.finance-page .fw-fields>label>input:is([type=tel],[name=documentNumber],[name=mobile]),.finance-page .fw-fields>label>.fw-money{width:200px;max-width:100%}
.finance-page .fw-fields>label>input[data-percent-for]{width:140px}
/* 列表勾选横条与命令栏“已选 n 项 · 取消选择”（data-sel-bar，CJ 10-27 列表的基本能力，原型工资 v165 M10j / M10m）。 */
.fl-picked.fl-picked-off{display:none!important}
.fl-seln{font-size:13px;color:#44484d;margin-right:10px;align-self:center}
.finance-page .fl-cmds .fl-selclear{margin-left:6px}
.fl-allbar{display:flex;gap:10px;align-items:center;justify-content:center;height:36px;margin:0 0 8px;background:#e9f4ff;border-radius:4px;font-size:13px;color:#121950}
.finance-page .fl-allbar button{border:0;background:none;padding:0;min-height:0;height:auto;color:#121950;font-weight:600;text-decoration:underline;cursor:pointer}
.fl[data-sel="n"] .fl-cmds [data-one],.fl .fl-cmds .fl-off{color:#b5b1a8;pointer-events:none}
.fl[data-sel="n"] .fl-cmds [data-one] svg,.fl .fl-cmds .fl-off svg{opacity:.45}
.fl-offhint{font-size:12.5px;color:#9b2c2c;align-self:center;margin-left:-4px;margin-right:8px}
/* 列表命令栏删除的确认面板：所选各笔一行（原型工资 v165 M10k）。 */
.fl-dellist{border:1px solid #e3dfd5;border-radius:4px;margin:6px 0 14px}
.fl-dellist>div{display:flex;gap:12px;padding:8px 12px;border-bottom:1px solid #e3dfd5}.fl-dellist>div:last-child{border-bottom:0}
.fl-dellist b{font-weight:600;color:#1c2024;width:130px;flex:none}.fl-dellist span{color:#44484d}
.fl-delhint{color:var(--muted,#686c71);font-size:12.5px}
