:root{--green:#0b8f63;--green-dark:#076849;--green-soft:#eaf8f2;--ink:#14231d;--muted:#718078;--line:#e8eee9;--bg:#f4f7f5;--white:#fff;--danger:#c44747;--shadow:0 18px 55px rgba(20,35,29,.09)}
.login-network-notice{display:flex;align-items:center;gap:10px;margin-top:16px;padding:10px 12px;border:1px solid #e1c46a;border-radius:8px;background:#fff8df;color:#5f4b12;font-size:13px;line-height:1.45}
.login-network-notice strong{flex:0 0 auto;color:#3f320c}.login-network-notice span{min-width:0}.login-card .login-network-notice + .primary{margin-top:16px}
.remember-login-option{display:flex!important;align-items:center;gap:8px;margin:14px 0 0!important;color:#48695c;font-size:13px!important;font-weight:700!important;cursor:pointer}.remember-login-option input{width:17px!important;height:17px!important;margin:0;padding:0;accent-color:var(--green);cursor:pointer}.remember-login-option span{line-height:1.4}
*{box-sizing:border-box}body{margin:0;font-family:"Microsoft YaHei","PingFang SC",sans-serif;color:var(--ink);background:var(--bg);min-width:1100px}.hidden{display:none!important}button,input{font:inherit}.muted{color:var(--muted)}
.login-view{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;padding:6vh 8vw;background:linear-gradient(125deg,#ecf8f3 0,#f8faf9 53%,#e3f4ed 100%);align-items:center;gap:7vw}.login-brand{display:flex;gap:28px;align-items:center}.brand-mark{width:96px;height:96px;border-radius:27px;display:grid;place-items:center;background:var(--green);color:white;font-size:50px;font-weight:800;box-shadow:0 22px 45px rgba(11,143,99,.25)}.eyebrow{font-size:12px;letter-spacing:2px;color:var(--green);font-weight:800;margin:0 0 8px}.login-brand h1{font-size:44px;margin:0 0 12px}.login-brand p:last-child{color:var(--muted);font-size:18px}.login-card{background:rgba(255,255,255,.94);padding:42px;border-radius:24px;box-shadow:var(--shadow);max-width:460px;width:100%}.login-card h2{font-size:28px;margin:24px 0}.login-card label{display:block;font-size:13px;font-weight:700;margin:16px 0 8px}.login-card input{width:100%;height:48px;border:1px solid var(--line);border-radius:12px;padding:0 15px;outline:none}.login-card input:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft)}button{border:0;cursor:pointer}.primary{height:48px;padding:0 22px;border-radius:12px;background:var(--green);color:#fff;font-weight:800}.login-card .primary{width:100%;margin-top:24px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#25c785;margin-right:5px}.employee-role-options{display:flex;gap:10px;margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.employee-role-options span{flex:1;display:grid;place-items:center;min-height:38px;border:1px solid #b9dacf;border-radius:9px;background:var(--green-soft);color:var(--green-dark);font-size:14px;font-weight:800}.error{color:var(--danger);min-height:20px;font-size:13px}
.app-shell{height:100vh;display:grid;grid-template-columns:232px 1fr}.sidebar{background:#0b3226;color:#fff;padding:28px 18px 20px;display:flex;flex-direction:column}.side-brand{display:flex;align-items:center;gap:12px;padding:0 8px 32px}.side-brand>span{display:grid;place-items:center;width:40px;height:40px;background:var(--green);border-radius:12px;font-size:22px;font-weight:800}.side-brand div{display:flex;flex-direction:column}.side-brand small,.side-user small{opacity:.56;font-size:10px;letter-spacing:1.4px}.sidebar nav{display:flex;flex-direction:column;gap:7px}.nav-btn{height:44px;border-radius:11px;background:transparent;color:#b9d0c7;text-align:left;padding:0 14px;font-weight:700}.nav-btn.active,.nav-btn:hover{background:rgba(255,255,255,.1);color:#fff}.nav-btn span{display:inline-block;width:27px}.side-user{margin-top:auto;padding:16px 8px 0;border-top:1px solid rgba(255,255,255,.1);display:grid;grid-template-columns:36px 1fr 24px;gap:9px;align-items:center}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#d7f3e8;color:var(--green-dark);font-weight:800}.side-user div:nth-child(2){display:flex;flex-direction:column}.side-user button{background:none;color:#fff;font-size:20px}
.main{min-width:0;overflow:auto}.topbar{height:104px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px}.topbar h2{margin:0;font-size:25px}.top-actions{display:flex;align-items:center;gap:12px}.admin-switcher-host{display:none;align-items:center}.admin-switcher-host.is-visible{display:flex}.admin-employee-switcher{height:38px;min-width:178px;max-width:220px;padding:0 30px 0 12px;border:1px solid #cfe0d8;border-radius:9px;background:#f7fbf8;color:#214d3d;font-size:13px;font-weight:700;cursor:pointer}.admin-employee-switcher:focus{outline:2px solid rgba(29,112,79,.25);outline-offset:2px}.month-pill,.badge{padding:8px 13px;border-radius:999px;font-size:13px;font-weight:700}.month-pill{background:#f1f5f3}.badge.draft{background:#fff2df;color:#a96600}.badge.published{background:var(--green-soft);color:var(--green-dark)}.content{padding:28px 38px 45px;max-width:1600px;margin:auto}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat-card,.panel{background:#fff;border:1px solid var(--line);border-radius:17px;box-shadow:0 8px 25px rgba(20,35,29,.035)}.stat-card{padding:20px}.stat-card p{margin:0;color:var(--muted);font-size:13px}.stat-card strong{display:block;font-size:28px;margin:12px 0 5px}.stat-card small{color:var(--green)}.panel{padding:22px;margin-top:18px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.panel-head h3{margin:0;font-size:17px}.ghost{height:38px;padding:0 14px;background:#f1f5f3;border-radius:10px;color:var(--ink);font-weight:700}.outline{height:40px;padding:0 15px;background:#fff;border:1px solid var(--green);border-radius:10px;color:var(--green);font-weight:800}.group-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.group-card{padding:17px;border:1px solid var(--line);border-radius:14px;background:#fbfdfc}.group-card .line{display:flex;justify-content:space-between}.group-card h4{margin:0 0 8px}.group-card p{font-size:13px;color:var(--muted);margin:4px 0}.progress{height:6px;background:#e8efeb;border-radius:9px;overflow:hidden;margin-top:13px}.progress i{display:block;height:100%;background:var(--green);border-radius:9px}
table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:var(--muted);font-weight:700;background:#f8faf9}th,td{padding:12px 11px;border-bottom:1px solid var(--line);white-space:nowrap}.money{font-weight:800}.success{color:var(--green)}.warning{color:#b27512}.table-wrap{overflow:auto;max-height:52vh}.empty{text-align:center;padding:60px 20px;color:var(--muted)}.empty .empty-icon{font-size:46px;margin-bottom:12px}.toolbar{display:flex;gap:10px;align-items:center}.notice{padding:13px 15px;border-radius:11px;background:var(--green-soft);color:var(--green-dark);font-size:13px;margin-bottom:16px}.salary-hero{background:linear-gradient(135deg,#087a55,#11a774);border-radius:22px;padding:30px;color:white;display:flex;justify-content:space-between;align-items:end}.salary-hero p{opacity:.75;margin:0 0 8px}.salary-hero strong{font-size:45px}.salary-detail{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}.detail-row{display:flex;justify-content:space-between;padding:15px 17px;border-radius:12px;background:#f8faf9}.detail-row b.minus{color:var(--danger)}.publish-box{display:grid;grid-template-columns:1fr auto;align-items:center;gap:20px;padding:20px;background:#fbfdfc;border:1px dashed #b9d9cb;border-radius:15px}.small-note{font-size:12px;color:var(--muted);line-height:1.7}@media(max-width:1250px){.grid4{grid-template-columns:repeat(2,1fr)}.group-grid{grid-template-columns:repeat(2,1fr)}}
.person-name-cell{display:flex;align-items:center;justify-content:space-between;gap:8px}.person-name-cell>span{display:flex;flex-direction:column;min-width:0}.person-detail-link,.history-detail-link,.employee-history-order-btn,.performance-detail-entry button{border:0;background:transparent;color:#087a55;font-weight:700;cursor:pointer;padding:3px 0;font-size:12px;white-space:nowrap}.person-detail-link:hover,.history-detail-link:hover,.employee-history-order-btn:hover,.performance-detail-entry button:hover{color:#045e41;text-decoration:underline}.performance-detail-dialog{width:min(96vw,1580px);max-height:92vh;background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(17,43,33,.24);display:flex;flex-direction:column;overflow:hidden}.performance-detail-title{padding:18px 22px 12px}.performance-detail-title b{font-size:19px}.performance-detail-title p{margin:5px 0 0;color:var(--muted);font-size:12px}.performance-detail-summary{display:grid;grid-template-columns:repeat(3,minmax(150px,220px));gap:10px;padding:0 22px 14px}.performance-detail-summary span{background:#f5faf7;border:1px solid #dcebe3;border-radius:11px;padding:10px 13px;color:var(--muted);font-size:12px}.performance-detail-summary b{display:block;color:#087a55;font-size:18px;margin-top:3px}.performance-detail-table-wrap{overflow:auto;max-height:66vh;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.performance-detail-table{min-width:1380px;font-size:12px}.performance-detail-table th{position:sticky;top:0;z-index:2;background:#f7faf8;padding:11px 10px;text-align:center}.performance-detail-table td{padding:11px 10px;text-align:center;vertical-align:middle;color:#56615c}.performance-detail-table tbody tr:hover td{background:#f2faf6}.performance-detail-table .performance-detail-complete td{background:#f1faf5}.performance-detail-category{display:inline-flex;align-items:center;justify-content:center;min-width:48px;padding:4px 9px;border-radius:999px;background:#e9f6ef;color:#087a55;font-weight:800}.performance-detail-code{display:flex;flex-direction:column;gap:3px;text-align:left}.performance-detail-code small{color:var(--muted)}.performance-detail-status{font-weight:700;color:#087a55}.performance-detail-address{white-space:normal!important;min-width:190px;max-width:250px;line-height:1.45}.performance-detail-number{font-variant-numeric:tabular-nums;text-align:right!important}.performance-detail-number.actual{color:#087a55;font-weight:800}.performance-detail-roles{display:flex;flex-direction:column;gap:3px;align-items:flex-start;min-width:145px;white-space:normal;text-align:left}.performance-detail-roles span{display:block}.performance-detail-foot{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 22px;color:var(--muted);font-size:12px}.performance-detail-entry>div{display:flex;align-items:center;gap:14px}.performance-detail-entry button{border:1px solid #b8dacb;border-radius:8px;padding:5px 9px;background:#fff}.employee-history-order-btn{display:block;margin:12px 16px 16px;border:1px solid #b8dacb;border-radius:9px;padding:8px 12px;background:#f6fbf8}.history-detail-link{font-size:13px}@media(max-width:900px){.performance-detail-dialog{width:98vw;max-height:94vh}.performance-detail-summary{grid-template-columns:repeat(3,1fr);padding:0 12px 10px}.performance-detail-title,.performance-detail-foot{padding-left:12px;padding-right:12px}.performance-detail-table-wrap{max-height:70vh}.performance-detail-foot span{display:none}}
.manager-refund-reversal td{color:#9f2d20;background:#fff7f5}.manager-refund-reversal td:first-child{font-weight:700}
.attendance-page .top-actions .business-month-control,.attendance-page .top-actions .history-start-button,.attendance-page .top-actions .badge{display:none}

/* 20261009-1232：业绩导入按钮「二手/新房」突出标签 */
.performance-import-btn .import-tag{display:inline-block;padding:2px 8px;margin-right:7px;border-radius:5px;font-weight:800;font-size:12.5px;line-height:1.4;vertical-align:1px;letter-spacing:1px}
.performance-import-btn .import-tag-secondhand{background:#fef3c7;color:#92400e;border:1px solid #f59e0b}
.performance-import-btn .import-tag-newhouse{background:#dbeafe;color:#1d4ed8;border:1px solid #3b82f6}

/* 20261009-1237：两个导入按钮等分撑满（文字可换行不裁切），撤回按钮紧凑靠最右 */
.performance-import-actions{display:flex;align-items:stretch;gap:8px;flex-wrap:nowrap}
.performance-import-actions>span{flex:0 0 auto;align-self:center;white-space:nowrap}
.performance-import-actions .performance-import-btn,.performance-import-actions .newhouse-table-import-entry{flex:1 1 0;min-width:0}
.performance-import-actions .newhouse-table-import-entry{display:flex}
.performance-import-actions .newhouse-table-import-entry .performance-import-btn{width:100%;white-space:normal;line-height:1.35;padding-left:10px;padding-right:10px}
.performance-import-actions .performance-import-btn .performance-import-label{white-space:normal}
.performance-import-actions .performance-undo-import-btn{flex:0 0 auto;margin-left:auto;align-self:center;font-size:12px;padding:4px 10px;line-height:1.3;white-space:nowrap;text-align:center}
.performance-import-actions .performance-undo-import-btn small{display:block;font-size:11px;font-weight:400;margin-top:1px}
