:root{color:#142033;background:#eef3f8;font-family:Inter,Segoe UI,Microsoft YaHei,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;overflow-x:hidden}button,input,select{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;display:grid;grid-template-columns:188px 1fr;background:#f4f7fb;min-width:0}.side-rail{background:linear-gradient(180deg,#062a52,#071f3d);color:#fff;padding:18px 10px;display:flex;flex-direction:column;gap:12px;min-width:0}.brand-mark{width:38px;height:38px;border-radius:8px;background:#0f66d4;display:grid;place-items:center;font-weight:800}.side-rail h1{font-size:18px;line-height:1.2;margin:0}.side-rail p{margin:-8px 0 8px;color:#9db8d4;font-size:12px}.side-rail nav{display:grid;gap:6px}.nav-item{height:44px;display:flex;align-items:center;gap:10px;padding:0 10px;border:0;border-radius:6px;color:#dceafb;background:transparent;text-align:left;min-width:0}.nav-item span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-item.active,.nav-item:hover{background:#0e5ebb;color:#fff}.db-card{margin-top:auto;border:1px solid rgba(255,255,255,.14);border-radius:8px;padding:12px;display:grid;gap:6px;color:#dceafb;font-size:12px}.db-dot,.ok-dot{display:inline-block;width:8px;height:8px;border-radius:999px;background:#22c55e;margin-right:6px}.main{min-width:0;display:flex;flex-direction:column}.topbar{min-height:64px;background:#fff;border-bottom:1px solid #dbe4ef;display:flex;align-items:center;justify-content:space-between;padding:10px 22px;gap:16px;flex-wrap:wrap}.scope-group,.topbar-right,.segmented,.saved,.admin-badge{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}.scope{border:1px solid transparent;background:#fff;padding:7px 12px;border-radius:999px;color:#40526a}.scope.active{color:#0b64d8;border-color:#96c2ff;background:#edf5ff}.saved{color:#1b7d43;font-size:13px}.divider{width:1px;height:24px;background:#d8e1ec}.segmented{border:1px solid #cfd9e6;border-radius:7px;padding:2px;background:#f4f7fb}.segmented button{border:0;background:transparent;color:#40526a;padding:7px 12px;border-radius:5px}.segmented .selected{color:#fff;background:#0b64d8}.admin-badge{border:1px solid #b8cdf0;border-radius:7px;padding:7px 10px;color:#0a58bd;background:#f2f7ff}.stepper{margin:12px 14px;background:#fff;border:1px solid #dbe4ef;border-radius:8px;padding:11px;display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;overflow-x:auto}.step{min-height:48px;border:0;background:transparent;color:#66758a;border-bottom:2px solid transparent;display:flex;align-items:center;justify-content:center;gap:8px;white-space:normal;line-height:1.25;min-width:0;padding:6px 8px}.step span{width:26px;height:26px;border-radius:999px;display:grid;place-items:center;background:#e6edf5;color:#53657a;font-weight:700}.step.done span{background:#25b24a;color:#fff}.step.active{color:#0b64d8;border-bottom-color:#0b64d8;font-weight:700}.step.active span{background:#0b64d8;color:#fff}.content-grid{display:grid;grid-template-columns:minmax(0,1fr) 284px;gap:10px;padding:0 14px 14px;min-height:0;min-width:0}.workspace-panel,.inspector-card,.registration-panel{background:#fff;border:1px solid #dbe4ef;border-radius:8px}.workspace-panel{padding:16px;display:flex;flex-direction:column;gap:14px;min-width:0}.section-title{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.section-title h2,.section-title h3{margin:0;font-size:18px}.section-title p{margin:5px 0 0;color:#66758a;font-size:13px}.section-title.compact h3{font-size:15px}.section-title.compact span{background:#e11d48;color:#fff;border-radius:999px;padding:2px 7px;font-size:12px}.ghost,.toolbar button,.secondary,.primary,.success{min-height:38px;border-radius:7px;border:1px solid #cfd9e6;background:#fff;color:#243247;padding:0 14px;display:inline-flex;align-items:center;gap:8px;white-space:normal;text-align:center;line-height:1.25}.metric-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px}.metric{min-height:94px;border:1px solid #dbe4ef;border-radius:8px;padding:14px;display:flex;gap:12px;min-width:0}.metric>span{color:#0b64d8}.metric small,.metric em{display:block;color:#66758a;font-size:12px;font-style:normal}.metric strong{display:block;margin:8px 0 3px;font-size:16px;overflow-wrap:anywhere}.period-grid{display:grid;grid-template-columns:minmax(260px,330px) minmax(0,1fr);gap:14px}.period-form{border:1px solid #dbe4ef;border-radius:8px;padding:14px;display:grid;gap:12px;align-content:start}.period-form label{display:grid;gap:6px;color:#4d5f75;font-size:13px;font-weight:700}.period-form input,.period-form select{width:100%;height:38px;border:1px solid #cfd9e6;border-radius:7px;padding:0 10px;color:#172338;background:#fff}.period-form input[readonly]{background:#eef3f8;color:#40526a}.period-summary{margin-top:4px;border-radius:8px;background:#f4f7fb;padding:12px;display:grid;gap:6px;color:#53657a;font-size:13px}.period-summary strong{color:#0b64d8;font-size:20px}.calendar-editor{border:1px solid #dbe4ef;border-radius:8px;overflow:hidden}.calendar-header{min-height:54px;padding:12px 14px;border-bottom:1px solid #e6edf5;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f8fafc}.calendar-header h3{margin:0;font-size:15px}.calendar-header span{color:#66758a;font-size:12px}.calendar-grid{padding:12px;display:grid;grid-template-columns:repeat(7,minmax(68px,1fr));gap:8px;overflow-x:auto}.day-cell{min-height:70px;border:1px solid #dbe4ef;border-radius:7px;background:#fff;padding:8px;display:grid;align-content:start;gap:4px;color:#243247;text-align:left}.day-cell:hover{border-color:#96c2ff}.day-cell strong{font-size:13px}.day-cell span{color:#66758a;font-size:12px}.day-cell em{justify-self:start;border-radius:999px;padding:2px 7px;background:#eaf7ef;color:#159947;font-size:12px;font-style:normal}.day-cell.rest{background:#f2fff6;border-color:#8bdca7}.module-message{min-height:36px;border:1px solid #dbe4ef;border-radius:8px;background:#f8fafc;color:#40526a;display:flex;align-items:center;padding:0 12px;font-size:13px;line-height:1.45;overflow-wrap:anywhere}.module-message.error{border-color:#ffc4c4;background:#fff5f5;color:#bf1f2f}.staff-toolbar{border:1px solid #dbe4ef;border-radius:8px;background:#fbfcfe;padding:12px;display:flex;align-items:end;justify-content:space-between;gap:14px;flex-wrap:wrap}.staff-config-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;flex:1;min-width:min(100%,420px)}.staff-config-fields label{display:grid;gap:6px;color:#4d5f75;font-size:12px;font-weight:700}.staff-config-fields label span,.staff-config-fields input,.staff-config-fields select{width:100%;height:38px;border:1px solid #cfd9e6;border-radius:7px;padding:0 10px;background:#fff;color:#172338;display:flex;align-items:center;font-weight:600}.staff-import-actions{display:flex;gap:10px;flex-wrap:wrap}.score-formula-panel{border:1px solid #dbe4ef;border-radius:8px;background:#f8fafc;padding:10px 12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;align-items:end}.score-formula-panel label{display:grid;gap:5px;color:#4d5f75;font-size:12px;font-weight:800}.score-formula-panel input{height:34px;border:1px solid #cfd9e6;border-radius:7px;background:#fff;color:#172338;padding:0 9px}.score-formula-panel span{color:#53657a;font-size:13px;line-height:1.5}.file-button{height:38px;border:1px solid #0b64d8;border-radius:7px;padding:0 12px;color:#0b64d8;background:#eef6ff;display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:800;cursor:pointer}.file-button input{display:none}.staff-stats{display:flex;flex-wrap:wrap;gap:8px}.staff-stats span{border:1px solid #dbe4ef;border-radius:999px;background:#fff;padding:7px 12px;color:#53657a;font-size:13px}.staff-stats strong{color:#172338}.staff-table-wrap{border:1px solid #dbe4ef;border-radius:8px;overflow:auto;max-height:440px;background:#fff}.staff-table{min-width:1280px;width:100%;border-collapse:collapse}.staff-table th{position:sticky;top:0;z-index:1;background:#f3f7fb;border-bottom:1px solid #dbe4ef;color:#4d5f75;font-size:12px;text-align:left;padding:9px}.staff-table td{border-bottom:1px solid #edf2f7;padding:6px}.staff-table input,.staff-table select{width:100%;min-width:72px;height:32px;border:1px solid transparent;border-radius:6px;background:#f8fafc;color:#172338;padding:0 8px}.staff-table input:focus,.staff-table select:focus{outline:none;border-color:#84b9ff;background:#fff}.staff-table input[type=checkbox]{width:18px;min-width:18px;height:18px}.staff-table .invalid-row td{background:#fff7f7}.icon-danger{width:30px;height:30px;border:1px solid #ffc4c4;border-radius:7px;background:#fff5f5;color:#d62839;display:inline-flex;align-items:center;justify-content:center}.vacation-toolbar{border:1px solid #dbe4ef;border-radius:8px;background:#fbfcfe;padding:12px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:14px;align-items:end}.vacation-file-actions,.vacation-type-picker{display:flex;gap:8px;flex-wrap:wrap}.vacation-type-picker button{height:38px;border:1px solid #cfd9e6;border-radius:7px;background:#fff;color:#40526a;padding:0 12px;font-size:13px;font-weight:800}.vacation-type-picker button.selected{color:#fff}.vacation-type-picker .selected.annual,.vacation-cell.annual{background:#0b64d8;border-color:#0b64d8}.vacation-type-picker .selected.legal,.vacation-cell.legal{background:#159947;border-color:#159947}.vacation-type-picker .selected.req,.vacation-cell.req,.vacation-type-picker .selected.sick,.vacation-cell.sick{background:#a45a00;border-color:#a45a00}.vacation-matrix-wrap{border:1px solid #dbe4ef;border-radius:8px;overflow:auto;max-height:520px;background:#fff;position:relative}.vacation-matrix{min-width:1320px;width:100%;border-collapse:collapse}.rule-toolbar{border:1px solid #dbe4ef;border-radius:8px;background:#fbfcfe;padding:12px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:end}.rule-layout{border:1px solid #dbe4ef;border-radius:8px;display:grid;grid-template-columns:168px minmax(0,1fr);min-height:510px;overflow:hidden;background:#fff}.rule-tabs{background:#f6f9fc;border-right:1px solid #dbe4ef;padding:10px;display:grid;align-content:start;gap:8px}.rule-tabs button{border:1px solid transparent;border-radius:7px;background:transparent;color:#40526a;padding:10px 12px;text-align:left;font-weight:800}.rule-tabs button.selected,.rule-tabs button:hover{color:#0b64d8;background:#edf5ff;border-color:#b8d7ff}.rule-list{max-height:510px;overflow:auto;padding:10px;display:grid;align-content:start;gap:8px}.rule-row{border:1px solid #e3ebf5;border-radius:8px;padding:10px;display:grid;grid-template-columns:92px minmax(260px,1fr) minmax(160px,230px);gap:12px;align-items:center}.rule-enable{display:flex;align-items:center;gap:8px;color:#40526a;font-size:13px;font-weight:800}.rule-enable input{width:18px;height:18px}.rule-copy{min-width:0;display:grid;gap:3px}.rule-copy strong{color:#142033;font-size:14px}.rule-copy small{color:#66758a;line-height:1.35}.rule-value{width:100%;height:36px;border:1px solid #cfd9e6;border-radius:7px;padding:0 10px;background:#fff}.rule-value.wide{min-width:220px}.night-toolbar{border:1px solid #dbe4ef;border-radius:8px;background:#fbfcfe;padding:12px;display:grid;grid-template-columns:minmax(280px,1fr) minmax(120px,150px) auto auto auto;gap:14px;align-items:end}.seed-field{display:grid;gap:5px;color:#40516a;font-size:12px;font-weight:700}.seed-field input{height:36px;border:1px solid #cfd9e6;border-radius:7px;padding:0 10px;background:#fff}.night-paint-toolbar{border:1px solid #dbe4ef;border-radius:8px;background:#fbfcfe;padding:10px;display:flex;flex-wrap:wrap;gap:10px;align-items:center}.night-paint-toolbar button{height:36px;min-width:82px;border:1px solid #cfd9e6;border-radius:7px;padding:0 10px;background:#fff;color:#40516a;font-weight:800}.night-paint-toolbar button.selected{border-color:#1f72d6;background:#e8f2ff;color:#185fb7}.night-progress{border:1px solid #d7e3f1;border-radius:8px;background:#f8fbff;padding:12px;display:grid;gap:9px}.night-progress.running{border-color:#9dc4f5;box-shadow:0 8px 24px #2062a914}.night-progress-meta,.night-progress-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.night-progress-meta strong{display:block;color:#10233f;font-size:13px}.night-progress-meta span,.night-progress-foot span{color:#637389;font-size:12px}.night-progress-meta em{color:#0b64d8;font-style:normal;font-weight:900}.night-progress-track{height:9px;border-radius:999px;background:#e5edf7;overflow:hidden}.night-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#0b64d8,#22a06b);transition:width .22s ease}.danger-button{height:30px;border-radius:7px;border:1px solid #fecdd3;background:#fff1f2;color:#be123c;padding:0 10px;font-size:12px;font-weight:800;cursor:pointer}.night-matrix-wrap{border:1px solid #dbe4ef;border-radius:8px;overflow:auto;max-height:520px;background:#fff;position:relative}.night-matrix{min-width:1320px;width:100%;border-collapse:collapse}.night-matrix th,.night-matrix td{border-bottom:1px solid #edf2f7;border-right:1px solid #edf2f7;text-align:center;min-width:44px}.night-matrix thead th{position:sticky;top:0;z-index:2;background:#f8fafc;height:48px}.night-matrix .staff-col{position:sticky;left:0;z-index:3;min-width:160px;background:#fff;text-align:left;padding:8px 10px}.night-matrix thead .staff-col{background:#f8fafc}.night-matrix .staff-col span,.night-matrix thead th span{display:block;color:#66758a;font-size:11px;font-weight:500}.night-cell{width:30px;height:30px;border:1px solid transparent;border-radius:6px;background:transparent;color:#fff;font-weight:800;display:inline-grid;place-items:center;grid-template-columns:1fr;grid-template-rows:1fr}.night-cell.night{background:#243b63;border-color:#243b63}.night-cell.rest{background:#159947;border-color:#159947}.night-cell.vacation-annual,.night-cell.vacation-legal,.night-cell.vacation-sick{border-style:solid;border-width:2px}.night-cell.vacation-annual{background:#7c3aed;border-color:#7c3aed}.night-cell.vacation-legal{background:#0f766e;border-color:#0f766e}.night-cell.vacation-sick{background:#be123c;border-color:#be123c}.night-cell.night.vacation-annual,.night-cell.night.vacation-legal,.night-cell.night.vacation-sick,.night-cell.rest.vacation-annual,.night-cell.rest.vacation-legal,.night-cell.rest.vacation-sick{grid-template-columns:1fr 1fr;width:38px}.night-cell.invalid{outline:2px solid #ef4444;outline-offset:2px}.diagnostic-strip{display:flex;flex-wrap:wrap;gap:8px}.diagnostic-strip span{border:1px solid #f0c36a;border-radius:999px;background:#fff7df;color:#7a4d00;padding:6px 10px;font-size:12px;font-weight:700}.night-summary-panel{border:1px solid #dbe4ef;border-radius:8px;background:#fbfcfe;padding:12px;display:grid;gap:12px}.night-summary-head{display:flex;justify-content:space-between;gap:12px;color:#40516a;flex-wrap:wrap}.night-summary-head strong{color:#10233f}.night-summary-head span{font-size:12px;color:#66758a}.night-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.night-summary-section{min-width:0}.night-summary-section h4{margin:0 0 8px;font-size:13px;color:#10233f}.summary-tabs{display:inline-flex;gap:4px;border:1px solid #dbe4ef;background:#eef4fb;border-radius:8px;padding:3px;margin-bottom:10px}.summary-tabs button{border:0;background:transparent;color:#526277;font-size:12px;font-weight:800;padding:7px 12px;border-radius:6px;cursor:pointer}.summary-tabs button.selected{background:#fff;color:#0f62c6;box-shadow:0 1px 3px #0f23411f}.night-summary-section table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #edf2f7}.night-summary-section th,.night-summary-section td{border-bottom:1px solid #edf2f7;padding:7px 8px;text-align:left;font-size:12px;color:#40516a;vertical-align:top}.night-summary-section th{background:#f8fafc;color:#66758a;font-weight:800}.night-summary-section td span{display:block;color:#8a98aa;font-size:11px}.night-summary-section .limit{color:#b45309;font-weight:800}.summary-empty{margin:0;border:1px solid #edf2f7;background:#fff;padding:16px;color:#66758a;font-size:12px}.manpower-toolbar{border:1px solid #dbe4ef;border-radius:8px;background:#fbfcfe;padding:12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;align-items:end}.skill-detail-toolbar{border:1px solid #e0e8f2;border-radius:8px;background:#fff;padding:10px;display:grid;grid-template-columns:minmax(150px,1fr) 130px 130px minmax(160px,.8fr);gap:10px;align-items:end}.skill-detail-toolbar label{display:grid;gap:5px;color:#40516a;font-size:12px;font-weight:800}.skill-detail-toolbar select{height:34px;border:1px solid #cfd9e6;border-radius:7px;background:#fff;padding:0 8px}.skill-detail-toolbar div{border:1px solid #e1e9f2;border-radius:8px;background:#f8fbff;padding:8px 10px;display:grid;gap:2px}.skill-detail-toolbar strong{color:#0b64d8;font-size:18px}.skill-detail-toolbar span{color:#66758a;font-size:11px}.skill-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}.skill-detail-grid label{border:1px solid #e0e8f2;border-radius:8px;background:#fff;padding:10px;display:grid;gap:8px}.skill-detail-grid span{color:#40516a;font-size:13px;font-weight:900}.skill-detail-grid input{height:34px;border:1px solid #cfd9e6;border-radius:7px;text-align:center;font-weight:900}.skill-overview{min-width:1100px}.manpower-toolbar label{display:grid;gap:5px;color:#40516a;font-size:12px;font-weight:800}.manpower-toolbar input,.manpower-toolbar select,.manpower-table input{height:34px;border:1px solid #cfd9e6;border-radius:7px;background:#fff;padding:0 8px}.manpower-scope-tabs{display:inline-flex;width:fit-content;border:1px solid #d6e1ee;border-radius:8px;background:#fff;padding:3px;gap:3px}.manpower-scope-tabs button{height:30px;border:0;border-radius:6px;background:transparent;color:#52647b;padding:0 12px;font-size:12px;font-weight:800}.manpower-scope-tabs button.selected{background:#eaf3ff;color:#0b64d8}.strategy-tabs,.scenario-tabs,.detail-mode-tabs{margin-top:2px}.strategy-section{border:1px solid #e0e8f2;border-radius:8px;background:#fff;padding:10px;display:grid;gap:10px}.strategy-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.strategy-head div{display:grid;gap:3px}.strategy-head strong{color:#10233f;font-size:14px}.strategy-head span{color:#66758a;font-size:12px}.strategy-table-wrap{max-height:430px}.strategy-table-wrap.compact{max-width:760px}.strategy-table th,.strategy-table td{text-align:center}.strategy-table .date-col{min-width:150px;text-align:left}.strategy-table input{width:88px}.detail-mode-tabs{width:fit-content}.manpower-template-actions,.balance-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.balance-actions span{color:#66758a;font-size:12px}.scope-balance-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.scope-balance-card{border:1px solid #dce7f3;border-radius:8px;background:#fff;padding:12px;display:grid;gap:10px}.scope-balance-title,.scope-balance-metrics{display:flex;align-items:center;justify-content:space-between;gap:10px}.scope-balance-title strong{color:#10233f;font-size:15px}.scope-balance-title em{font-style:normal;font-size:20px;font-weight:800}.scope-balance-metrics span{color:#66758a;font-size:12px;display:grid;gap:2px}.scope-balance-metrics b{color:#10233f;font-size:18px}.balance-log{border:1px solid #e0e8f2;border-radius:8px;background:#fff;padding:10px;display:flex;gap:8px;flex-wrap:wrap}.balance-log span{border:1px solid #dbe6f2;border-radius:999px;background:#f8fbff;color:#40516a;padding:4px 8px;font-size:12px;font-weight:700}.readonly-cell{background:#f3f6fa!important;color:#66758a!important}.attempt-progress-wrap{border:1px solid #d8e4f2;border-radius:8px;background:#f8fbff;padding:12px;display:grid;gap:9px;box-shadow:0 8px 24px #2062a914}.attempt-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.attempt-progress-head span{color:#10233f;font-size:13px;font-weight:800}.attempt-progress-track{height:9px;border-radius:999px;background:#e5edf7;overflow:hidden}.attempt-progress-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#0b64d8,#22a06b);transition:width .22s ease}.attempt-progress-wrap small{color:#0b64d8;font-size:12px;font-weight:900}.attempt-progress-wrap .danger-button{justify-self:end}.skill-cell{min-width:138px;vertical-align:top;background:#fff}.skill-cell-active{outline:2px solid #60a5fa;outline-offset:-2px}.skill-cell-btn{width:100%;border:1px solid #e3ebf5;border-radius:8px;background:#fff;padding:6px;min-height:58px;text-align:left;display:grid;gap:4px}.skill-cell-btn:disabled{cursor:default;background:#f8fafc}.skill-cell-head{color:#556680;font-size:11px;font-weight:700}.skill-cell-lines{display:flex;flex-wrap:wrap;gap:4px}.skill-cell-lines span{border:1px solid #d4e2f3;border-radius:999px;background:#eff6ff;color:#174a87;font-size:11px;padding:1px 6px;font-weight:700}.skill-cell-empty{color:#9aa8bb;font-size:11px}.skill-popover-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a47;display:grid;place-items:center;z-index:30}.skill-popover-card{width:min(640px,calc(100vw - 32px));max-height:calc(100vh - 80px);overflow:auto;border:1px solid #d7e3f2;border-radius:10px;background:#fff;padding:12px;display:grid;gap:10px}.skill-popover-head{display:flex;align-items:center;justify-content:space-between}.skill-popover-sub{color:#62758c;font-size:12px}.skill-popover-tip{border:1px solid #fde68a;border-radius:8px;background:#fffbeb;color:#92400e;font-size:12px;font-weight:700;padding:8px 10px}.skill-popover-total{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.skill-popover-total label{display:grid;gap:5px;color:#40516a;font-size:12px;font-weight:800}.skill-popover-total input{width:120px;height:34px;border:1px solid #cfd9e6;border-radius:7px;text-align:center;font-weight:800}.manpower-toolbar-metrics{border:1px solid #e1e9f2;border-radius:8px;background:#fff;padding:8px 10px;display:grid;gap:2px}.manpower-toolbar-metrics span,.manpower-toolbar-metrics small{color:#66758a;font-size:11px}.manpower-toolbar-metrics strong{color:#10233f;font-size:18px}.manpower-notice{border:1px solid #dbe4ef;border-radius:8px;background:#f8fbff;padding:10px 12px;display:flex;align-items:center;gap:8px;color:#40516a;font-size:13px}.warn-dot{width:8px;height:8px;border-radius:999px;background:#f59e0b;display:inline-block}.manpower-tabs{margin-bottom:0}.manpower-panel{border:1px solid #dbe4ef;border-radius:8px;background:#fbfcfe;padding:12px;display:grid;gap:12px}.manpower-template-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}.template-card{border:1px solid #e0e8f2;border-radius:8px;background:#fff;padding:10px;display:grid;gap:6px}.template-card strong{color:#10233f;font-size:13px}.template-card span{color:#66758a;font-size:12px}.template-card div{display:flex;gap:8px;flex-wrap:wrap}.template-card button{height:30px;border:1px solid #cfd9e6;border-radius:7px;background:#f8fafc;color:#40516a;padding:0 10px;font-size:12px;font-weight:800}.manpower-table-wrap{border:1px solid #dbe4ef;border-radius:8px;background:#fff;overflow:auto;max-height:540px}.manpower-table{min-width:860px;width:100%;border-collapse:collapse}.manpower-table th,.manpower-table td{padding:8px;font-size:12px}.manpower-table thead th{position:sticky;top:0;z-index:2;background:#f8fafc}.manpower-table .date-col{position:sticky;left:0;z-index:3;min-width:122px;background:#fff;text-align:left}.manpower-table thead .date-col{background:#f8fafc}.manpower-table .date-col strong,.manpower-table .date-col span{display:block}.manpower-table .date-col span{color:#66758a;font-size:11px;font-weight:500}.manpower-table .rest-date{background:#f0fdf4}.manpower-table input{width:68px;text-align:center;font-weight:800;color:#10233f}.manpower-table .total-col{color:#0b64d8;font-weight:900}.manpower-table-wrap.scenario .manpower-table{min-width:760px}.split-view{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.split-card{border:1px solid #e0e8f2;border-radius:8px;background:#fff;overflow:hidden}.split-card h4{margin:0;padding:10px 12px;color:#10233f;font-size:13px;background:#f8fafc;border-bottom:1px solid #e6edf5}.split-card table{width:100%}.manpower-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px}.manpower-summary-grid div{border:1px solid #e0e8f2;border-radius:8px;background:#fff;padding:12px;display:grid;gap:4px}.manpower-summary-grid strong{color:#10233f;font-size:20px}.manpower-summary-grid span{color:#66758a;font-size:12px}.vacation-matrix th,.vacation-matrix td{border-bottom:1px solid #edf2f7;border-right:1px solid #edf2f7;padding:5px;text-align:center}.vacation-matrix thead th{position:sticky;top:0;z-index:2;background:#f3f7fb;color:#4d5f75;font-size:12px}.vacation-matrix thead th strong,.vacation-matrix thead th span{display:block}.vacation-matrix .staff-col{position:sticky;left:0;z-index:3;min-width:150px;background:#f8fafc;text-align:left}.vacation-matrix tbody .staff-col{background:#fff}.vacation-matrix .staff-col strong,.vacation-matrix .staff-col span{display:block}.vacation-matrix .staff-col span{color:#66758a;font-size:12px;margin-top:3px}.vacation-matrix .ops-col{min-width:70px}.vacation-cell{width:34px;height:30px;border:1px solid #dbe4ef;border-radius:6px;background:#f8fafc;color:#fff;font-size:12px;font-weight:900}.vacation-cell:hover{border-color:#84b9ff}.matrix-empty{padding:48px;text-align:center;color:#66758a}.future-module{min-height:360px;border:1px dashed #b9c7d8;border-radius:8px;background:#f8fafc;display:grid;place-items:center;align-content:center;gap:10px;color:#53657a;text-align:center}.future-module h3{margin:0;color:#172338}.future-module p{max-width:520px;margin:0;line-height:1.6}.toolbar{display:flex;align-items:center;gap:10px}.toolbar-spacer{flex:1}.passed{display:inline-flex;align-items:center;gap:4px;color:#159947;background:#eefbf3;border:1px solid #9be2b5;border-radius:999px;padding:5px 10px;font-size:13px}.danger{color:#ef233c}.switch{display:flex;align-items:center;gap:8px;color:#40526a;font-size:13px}.switch input{display:none}.switch span{width:36px;height:20px;background:#0b64d8;border-radius:999px;position:relative}.switch span:after{content:"";position:absolute;width:16px;height:16px;top:2px;right:2px;border-radius:999px;background:#fff}.table-wrap{border:1px solid #dbe4ef;border-radius:8px;overflow:hidden}table{width:100%;border-collapse:collapse;font-size:13px}th,td{border-bottom:1px solid #e6edf5;border-right:1px solid #e6edf5;padding:10px;text-align:center;white-space:nowrap}th{background:#f4f7fb;color:#4d5f75;font-weight:700}td:first-child,th:first-child{text-align:left}.table-note{padding:10px 14px;background:#f8fafc;color:#66758a;font-size:12px}.actionbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(142px,1fr));gap:12px;padding:8px 0 0}.primary{color:#fff;background:#0b64d8;border-color:#0b64d8;justify-content:center}.success{color:#fff;background:#13a538;border-color:#13a538;justify-content:center}.secondary{justify-content:center}.registration-panel{padding:12px;max-width:100%;overflow-x:auto}.registration-panel table{min-width:640px}.link-button{border:0;color:#0b64d8;background:transparent}.row-actions{display:flex;justify-content:center;gap:8px}.approve,.reject{height:28px;border-radius:6px;padding:0 10px;display:inline-flex;align-items:center;gap:4px;background:#fff}.approve{border:1px solid #8bdca7;color:#159947}.reject{border:1px solid #f3a8b5;color:#e11d48}.inspector{display:grid;gap:10px;align-content:start;min-width:0}.inspector-card{padding:14px}.inspector-card.warning{border-color:#f1d3a8}.inspector-card h3{margin:0 0 12px;display:flex;align-items:center;gap:8px;font-size:15px}dl{display:grid;grid-template-columns:82px 1fr;gap:8px;margin:0;font-size:13px;min-width:0}dt{color:#66758a}dd{margin:0;color:#243247;min-width:0;overflow-wrap:anywhere}.checks{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:13px}.checks li:before{content:"✓";display:inline-grid;place-items:center;width:16px;height:16px;border-radius:999px;margin-right:7px;color:#fff;background:#25b24a;font-size:11px}.checks li.todo:before{content:"×";background:#ef233c}.cell-modified-balance{background:#fee2e2!important;outline:2px solid #ef4444;outline-offset:-2px;font-weight:600;color:#991b1b}.cell-modified-user{background:#fef3c7!important;outline:2px solid #f59e0b;outline-offset:-2px;font-weight:600}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:9999}.modal-content{background:#fff;border-radius:12px;padding:24px 28px;max-width:480px;width:90%;max-height:calc(100vh - 40px);overflow:auto;box-shadow:0 20px 60px #0003}.modal-content h3{margin:0 0 12px;font-size:18px}.modal-content p{margin:8px 0;font-size:14px;color:#374151}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap}.modal-actions button{padding:8px 20px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;border:1px solid #d1d5db}.modal-actions button.success{background:#16a34a;color:#fff;border-color:#16a34a}.modal-actions button.secondary{background:#f3f4f6;color:#374151}.modal-actions button.success:hover{background:#15803d}.monthly-panel{display:grid;gap:16px}.monthly-prereqs{background:#fff;border-radius:12px;border:1px solid #e5e7eb;padding:16px 20px;box-shadow:0 1px 2px #0000000a}.monthly-prereqs h4{margin:0 0 10px;font-size:14px;font-weight:600}.prereq-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}.prereq-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;font-size:13px}.prereq-ok{background:#f0fdf4;color:#16a34a}.prereq-missing{background:#fef2f2;color:#dc2626}.monthly-progress-bar{position:relative;height:24px;background:#e5e7eb;border-radius:12px;overflow:hidden;display:flex;align-items:center;justify-content:center}.monthly-progress-fill{position:absolute;left:0;top:0;height:100%;background:linear-gradient(90deg,#6366f1,#8b5cf6);border-radius:12px;transition:width .3s ease}.monthly-progress-bar span{position:relative;z-index:1;font-size:12px;font-weight:600;color:#1f2937}.monthly-notice{background:#fffbeb;color:#92400e;padding:12px 16px;border-radius:8px;font-size:13px;border:1px solid #fde68a}.monthly-error-banner{background:#fef2f2;color:#dc2626;padding:12px 16px;border-radius:8px;font-size:13px;border:1px solid #fecaca}.monthly-empty{text-align:center;padding:40px 20px;color:#9ca3af}.monthly-empty p{margin:10px 0 4px;font-size:15px;font-weight:500;color:#6b7280}.monthly-empty span{font-size:13px}.monthly-job-list{background:#fff;border-radius:12px;border:1px solid #e5e7eb;padding:16px 20px;box-shadow:0 1px 2px #0000000a}.monthly-job-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:10px;flex-wrap:wrap}.monthly-job-header h4{margin:0;font-size:14px;font-weight:600}.job-table{width:100%;min-width:980px;border-collapse:collapse;font-size:13px}.job-table th,.job-table td{padding:8px 12px;text-align:left;border-bottom:1px solid #f3f4f6}.job-table thead th{background:#f9fafb;font-weight:600;color:#6b7280;font-size:11px;text-transform:uppercase;letter-spacing:0}.job-table tbody tr:hover{background:#fafbff}.job-row-active{background:#f5fbff;box-shadow:inset 3px 0 #0b64d8}.active-job-chip{display:inline-flex;align-items:center;justify-content:center;min-width:58px;height:24px;padding:0 9px;border-radius:999px;border:1px solid #d7e3f1;background:#f8fbff;color:#637389;font-size:11px;font-weight:800;white-space:nowrap}.active-job-chip.on{border-color:#92c5fd;background:#e8f2ff;color:#0b64d8}.job-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.job-actions button{height:30px;padding-inline:9px}.active-toggle.is-on{border-color:#9dc4f5;background:#e8f2ff;color:#185fb7}.job-progress-mini{min-width:168px;display:grid;gap:5px}.job-progress-mini div{display:flex;align-items:center;justify-content:space-between;gap:8px}.job-progress-mini strong{color:#10233f;font-size:12px}.job-progress-mini span{color:#637389;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job-progress-mini i{display:block;height:7px;border-radius:999px;background:#e5edf7;overflow:hidden}.job-progress-mini b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#0b64d8,#22a06b)}.table-row-warn{background:#fffbeb}.table-row-error{background:#fef2f2}.table-cell-warn{background:#fffbeb;color:#92400e}.step7-report-tabs{margin:-2px 0 8px}.city-result-tabs{margin:0 0 12px}.city-result-tabs button{min-width:96px}.final-schedule-panel .monthly-grid-wrap{max-height:72vh}.step7-compliance-matrix{table-layout:auto;min-width:max-content}.step7-compliance-matrix th,.step7-compliance-matrix td{min-width:68px;vertical-align:middle}.step7-compliance-matrix .date-col{position:sticky;left:0;z-index:2;background:#fff;min-width:92px}.step7-cell-metric{display:grid;justify-items:center;gap:1px;line-height:1.15}.step7-cell-metric strong{font-size:12px;color:#1f2937}.step7-cell-metric small{font-size:10px;color:#6b7280}.step7-cell-error{background:#fef2f2;color:#b91c1c}.step7-cell-warn{background:#fffbeb;color:#92400e}.step7-skill-lines{display:flex;flex-wrap:wrap;justify-content:center;gap:3px;min-width:118px}.step7-skill-pill{display:inline-flex;align-items:center;justify-content:center;min-width:38px;padding:2px 4px;border-radius:4px;background:#f8fafc;border:1px solid #e5e7eb;font-size:10px;line-height:1.1}.step7-skill-pill.step7-cell-error{background:#fef2f2;border-color:#fecaca}.step7-skill-pill.step7-cell-warn{background:#fffbeb;border-color:#fde68a}.employee-skill-cell{text-align:center;min-width:48px}.employee-skill-cell strong,.employee-skill-cell small{display:block;line-height:1.15}.employee-skill-cell small{margin-top:2px;font-size:10px;color:#6b7280}.job-status{display:inline-block;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:500}.badge-completed{background:#f0fdf4;color:#16a34a}.badge-pending{background:#f3f4f6;color:#6b7280}.badge-running{background:#eff6ff;color:#3b82f6}.badge-failed{background:#fef2f2;color:#dc2626}.badge-infeasible{background:#fffbeb;color:#d97706}.badge-cancelled{background:#f3f4f6;color:#9ca3af}.monthly-toolbar{display:flex;align-items:center;gap:16px;padding:12px 16px;background:#fff;border-radius:12px;border:1px solid #e5e7eb;flex-wrap:wrap;box-shadow:0 1px 2px #0000000a}.monthly-job-info{display:flex;align-items:center;gap:12px;font-size:13px;color:#374151;flex:1}.monthly-toolbar-actions{display:flex;gap:8px}.monthly-legend{display:flex;flex-wrap:wrap;gap:14px;padding:4px 0;font-size:11px}.legend-item{display:flex;align-items:center;gap:5px;color:#6b7280}.legend-swatch{display:inline-block;width:16px;height:16px;border-radius:4px}.legend-swatch.sg-rest{background:#ecfdf5;border:1px solid #bbf7d0}.legend-swatch.sg-night{background:#111827;border:1px solid #111827}.legend-swatch.sg-night-rest{background:#bbf7d0;border:1px solid #86efac}.legend-swatch.sg-annual{background:#dcfce7;border:1px solid #bbf7d0}.legend-swatch.sg-legal{background:#bbf7d0;border:1px solid #86efac}.legend-swatch.sg-assigned{background:#dbeafe;border:1px solid #93c5fd}.legend-swatch.sg-major-skill{background:#93c5fd;border:1px solid #2563eb}.legend-swatch.sg-noshift{background:#fef3c7;border:1px solid #fde68a}.legend-swatch.sg-empty{background:#fff;border:1px dashed #d1d5db}.monthly-diagnostics{display:flex;flex-wrap:wrap;gap:6px;padding:10px 14px;background:#fff;border-radius:10px;border:1px solid #e5e7eb}.diag-error{padding:3px 10px;border-radius:6px;background:#fef2f2;color:#dc2626;font-size:11px;font-weight:500}.diag-warn{padding:3px 10px;border-radius:6px;background:#fffbeb;color:#d97706;font-size:11px}.monthly-validation{padding:10px 14px;border-radius:10px;font-size:13px;font-weight:500}.validation-pass{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}.validation-fail{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.monthly-grid-wrap{overflow-x:auto;border-radius:12px;border:1px solid #e5e7eb;background:#fff;max-height:70vh;overflow-y:auto;box-shadow:0 1px 3px #0000000f;-webkit-overflow-scrolling:touch}.monthly-grid{border-collapse:separate;border-spacing:0;font-size:11px;min-width:max-content}.monthly-grid th,.monthly-grid td{padding:4px 5px;text-align:center;white-space:nowrap;border-right:1px solid #f3f4f6;border-bottom:1px solid #f3f4f6}.sg-staff-col{position:sticky;left:0;background:#fafbfc;z-index:2;min-width:52px;font-weight:500;font-size:11px}.monthly-grid .sg-staff-col:nth-child(1){left:0;min-width:64px}.monthly-grid .sg-staff-col:nth-child(2){left:64px;min-width:92px}.monthly-grid .sg-staff-col:nth-child(3){left:156px;min-width:54px}.sg-shift-col{position:sticky;left:210px;background:#fafbfc;z-index:2;min-width:58px;padding:2px 3px!important}.monthly-grid thead .sg-staff-col,.monthly-grid thead .sg-shift-col{z-index:3;background:#f3f4f6}.sg-shift-select{width:100%;font-size:11px;padding:2px 3px;border-radius:6px;border:1px solid #d1d5db;background:#fff;cursor:pointer;font-weight:500;color:#4f46e5}.sg-shift-select:disabled{opacity:.6;cursor:not-allowed}.sg-date-col{min-width:42px;font-size:10px;position:sticky;top:0;background:#f9fafb;z-index:1}.sg-date-col strong{display:block;font-size:10px}.sg-date-col span{color:#9ca3af;font-size:9px}.sg-rest-header{background:#f1f5f9!important}.sg-holiday-header{background:#fee2e2!important}.sg-holiday-tag{display:block;font-size:8px;color:#dc2626;font-weight:700}.sg-cell{cursor:default;height:30px;min-width:38px;font-size:11px;font-weight:500;position:relative;transition:all .15s ease}.sg-cell-text{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;gap:1px;width:100%;height:100%}.sg-cell-text small{font-size:8px;line-height:1;font-weight:700}.sg-clickable{cursor:pointer}.sg-clickable:hover{transform:scale(1.08);z-index:5;box-shadow:0 2px 8px #6366f133}.sg-rest{background:#ecfdf5;color:#166534;background-image:repeating-linear-gradient(45deg,transparent,transparent 2px,rgba(22,101,52,.05) 2px,rgba(22,101,52,.05) 4px)}.sg-night{background:#111827;color:#fff;font-weight:700}.sg-night-rest{background:linear-gradient(135deg,#dcfce7,#86efac);color:#14532d;font-weight:600}.sg-annual{background:linear-gradient(135deg,#ecfdf5,#bbf7d0);color:#166534;font-weight:600}.sg-legal{background:linear-gradient(135deg,#dcfce7,#86efac);color:#14532d;font-weight:600}.sg-sick{background:linear-gradient(135deg,#f0fdf4,#a7f3d0);color:#166534;font-weight:600}.sg-vac-overlap{box-shadow:inset 0 -3px #14532d52}.sg-assigned{background:linear-gradient(135deg,#eff6ff,#bfdbfe);color:#1d4ed8;font-weight:600;border-radius:4px;margin:1px;box-shadow:0 1px 2px #3b82f61f}.sg-assigned.sg-major-skill{background:linear-gradient(135deg,#bfdbfe,#60a5fa);color:#0f172a;box-shadow:inset 0 0 0 1px #2563eb47}.sg-assigned.sg-work-skill{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1d4ed8}.sg-assigned-noskill{background:#eff6ff;color:#2563eb}.sg-noshift{background:#fffbeb;color:#a16207}.sg-empty{background:#ecfdf5;color:#166534}.sg-editing{z-index:10;box-shadow:0 0 0 2px #6366f1,0 4px 12px #6366f140;border-radius:6px;background:#fff}.sg-skill-palette{display:flex;gap:3px;align-items:center;justify-content:center;padding:3px 4px;flex-wrap:wrap;min-width:280px;background:#fff;border-radius:8px;box-shadow:0 4px 16px #0000001f;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.sg-skill-chip{width:26px;height:26px;border-radius:6px;border:1px solid #e5e7eb;font-size:11px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .12s ease;background:#fff;color:#374151}.sg-skill-chip:hover{transform:scale(1.15);box-shadow:0 2px 6px #00000026}.sg-skill-chip-active{transform:scale(1.1);box-shadow:0 0 0 2px #6366f1}.sg-skill-星,.sg-skill-综,.sg-skill-收,.sg-skill-银B,.sg-skill-追,.sg-skill-毛{background:#dbeafe;color:#1d4ed8}.sg-skill-网,.sg-skill-天,.sg-skill-微{background:#93c5fd;color:#0f172a}.sg-skill-clear{background:#f9fafb;color:#9ca3af;border:1px dashed #d1d5db}.sg-skill-save,.sg-skill-cancel{padding:3px 7px;font-size:11px;border-radius:5px;margin-left:2px}.sg-skill-save.primary{background:#6366f1;color:#fff;border:0}.sg-skill-cancel.secondary{background:#f3f4f6;color:#6b7280;border:1px solid #d1d5db}.monthly-summary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px}.monthly-summary-grid div{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:12px;text-align:center;box-shadow:0 1px 2px #0000000a}.monthly-summary-grid strong{display:block;font-size:22px;color:#1f2937}.monthly-summary-grid span{font-size:11px;color:#6b7280}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#eef3f8,#dbeafe,#e0e7ff);padding:24px}.auth-card{background:#fff;border-radius:16px;box-shadow:0 4px 24px #00000014,0 1px 4px #0000000a;padding:40px 36px;width:100%;max-width:420px}.auth-brand{text-align:center;margin-bottom:28px}.auth-brand .brand-mark{width:56px;height:56px;border-radius:14px;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;letter-spacing:1px}.auth-brand h1{margin:12px 0 4px;font-size:22px;font-weight:700;color:#142033}.auth-brand p{margin:0;font-size:14px;color:#6b7280}.auth-card form{display:flex;flex-direction:column;gap:12px}.auth-card label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#374151}.auth-card input,.auth-card select{width:100%;padding:10px 14px;border:1.5px solid #d1d5db;border-radius:10px;font-size:14px;background:#f9fafb;transition:border-color .15s,box-shadow .15s;box-sizing:border-box}.auth-card input:focus,.auth-card select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f;background:#fff}.auth-card input:disabled,.auth-card select:disabled{opacity:.6;cursor:not-allowed}.auth-options{display:flex;align-items:center;justify-content:space-between;font-size:13px}.remember-label{display:flex;align-items:center;gap:6px;cursor:pointer;font-weight:400}.remember-label input[type=checkbox]{width:auto}.auth-submit{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;border:none;border-radius:10px;font-size:15px;font-weight:600;cursor:pointer;transition:opacity .15s,transform .1s;margin-top:4px}.auth-submit:hover{opacity:.92;transform:translateY(-1px)}.auth-submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.auth-error{background:#fef2f2;color:#dc2626;padding:10px 14px;border-radius:8px;font-size:13px;border:1px solid #fecaca}.auth-footer{text-align:center;margin-top:20px;font-size:13px;color:#6b7280}.auth-footer a{color:#2563eb;font-weight:600;text-decoration:none}.auth-footer a:hover{text-decoration:underline}.loading-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;font-size:16px;color:#6b7280;background:#eef3f8}.logout-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;border:none;background:transparent;color:#6b7280;cursor:pointer;transition:background .15s,color .15s}.logout-btn:hover{background:#0000000f;color:#dc2626}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;color:#9ca3af;font-size:15px;text-align:center;gap:8px}.tab-bar{display:flex;gap:8px;margin:12px 0}.data-table{width:100%;border-collapse:collapse}.data-table th{text-align:left;padding:8px 12px;border-bottom:1px solid #e5e7eb;font-size:12px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.5px}.data-table td{padding:8px 12px;border-bottom:1px solid #f3f4f6;font-size:14px}.approve{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:6px;border:1px solid #10b981;background:#ecfdf5;color:#059669;font-size:12px;cursor:pointer;transition:background .15s}.approve:hover{background:#d1fae5}.reject{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:6px;border:1px solid #ef4444;background:#fef2f2;color:#dc2626;font-size:12px;cursor:pointer;transition:background .15s}.reject:hover{background:#fee2e2}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.dialog-card{background:#fff;border-radius:14px;box-shadow:0 8px 32px #00000026;padding:32px 28px;width:100%;max-width:380px}.dialog-card form{display:flex;flex-direction:column;gap:10px}.dialog-card label{font-size:13px;font-weight:600;color:#374151}.dialog-card input{width:100%;padding:10px 14px;border:1.5px solid #d1d5db;border-radius:10px;font-size:14px;background:#f9fafb;box-sizing:border-box}.dialog-card input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f;background:#fff}@media(max-width:1180px){.content-grid{grid-template-columns:1fr}.inspector{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.period-grid,.rule-layout{grid-template-columns:1fr}.rule-tabs{border-right:0;border-bottom:1px solid #dbe4ef;display:flex;overflow-x:auto}.vacation-toolbar,.rule-toolbar,.night-toolbar{grid-template-columns:1fr}}@media(max-width:860px){.app-shell{grid-template-columns:1fr}.side-rail{position:sticky;top:0;z-index:20;padding:10px;display:grid;grid-template-columns:auto 1fr;align-items:center}.side-rail h1,.side-rail p,.db-card{display:none}.side-rail nav{display:flex;overflow-x:auto;gap:6px;min-width:0}.nav-item{height:38px;flex:0 0 auto}.topbar{align-items:flex-start;padding:10px 14px}.scope-group,.topbar-right{width:100%;justify-content:flex-start}.stepper{margin:10px;grid-template-columns:repeat(4,minmax(118px,1fr))}.content-grid{padding:0 10px 10px}.workspace-panel{padding:12px}.metric-row,.manpower-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.staff-toolbar,.night-progress-meta,.night-progress-foot,.strategy-head,.scope-balance-title,.scope-balance-metrics{align-items:stretch}}@media(max-width:640px){.topbar{gap:10px}.segmented,.scope-group,.topbar-right,.staff-import-actions,.vacation-file-actions,.manpower-template-actions,.balance-actions,.monthly-toolbar,.monthly-job-info,.monthly-toolbar-actions,.monthly-legend{width:100%}.segmented button,.scope,.ghost,.secondary,.primary,.success,.file-button{min-height:40px}.stepper{grid-template-columns:repeat(2,minmax(118px,1fr))}.metric-row,.manpower-summary-grid,.night-summary-grid,.scope-balance-grid,.period-grid,.staff-config-fields,.score-formula-panel,.skill-detail-toolbar,.manpower-toolbar{grid-template-columns:1fr}.calendar-editor,.staff-table-wrap,.vacation-matrix-wrap,.night-matrix-wrap,.manpower-table-wrap,.monthly-grid-wrap{max-width:calc(100vw - 44px)}.calendar-grid{grid-template-columns:repeat(7,72px)}.actionbar{grid-template-columns:1fr}.module-message{align-items:flex-start;padding:9px 10px}.modal-overlay,.dialog-overlay{align-items:flex-start;padding:16px;overflow:auto}.modal-content,.dialog-card,.skill-popover-card{width:100%;max-width:none;padding:18px}.monthly-grid .sg-staff-col:nth-child(1){min-width:56px}.monthly-grid .sg-staff-col:nth-child(2){left:56px;min-width:74px}.monthly-grid .sg-staff-col:nth-child(3){left:130px;min-width:46px}.sg-shift-col{left:176px;min-width:50px}}
