:root{--navy:#102536;--ink:#172535;--blue:#2f6f8e;--gold:#d7a84c;--orange:#e7792d;--paper:#f3f6f7;--white:#fff;--muted:#667984;--line:#d8e1e4;--green:#3e8065;--red:#a84f49;--shadow:0 18px 55px rgba(14,37,52,.1);--sans:"Microsoft YaHei","PingFang SC",sans-serif;--serif:"Noto Serif SC","Songti SC",serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.65 var(--sans)}button,input,select{font:inherit}button{cursor:pointer}.skip-link{position:fixed;left:16px;top:-60px;z-index:100;background:#fff;padding:9px 14px}.skip-link:focus{top:12px}.topbar{min-height:76px;padding:0 clamp(20px,5vw,72px);display:flex;align-items:center;justify-content:space-between;background:var(--navy);color:#fff}.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none}.brand>span{width:42px;height:42px;display:grid;place-items:center;border:1px solid rgba(215,168,76,.6);color:#f0d99d;font:700 25px Georgia}.brand b,.brand small{display:block}.brand b{font-size:16px}.brand small{font-size:8px;letter-spacing:.14em;color:#92a8b5}.topbar nav{display:flex;align-items:center;gap:22px}.topbar nav a{color:#abc0cb;text-decoration:none}.topbar nav button{padding:8px 12px;border:1px solid rgba(255,255,255,.2);background:transparent;color:#fff}.login-panel{min-height:calc(100vh - 76px);display:grid;place-items:center;padding:35px;background:radial-gradient(circle at 70% 20%,#dce9ed,transparent 38%)}.login-card{width:min(520px,100%);padding:42px;background:#fff;border-top:4px solid var(--gold);box-shadow:var(--shadow)}.eyebrow{margin:0 0 8px;color:var(--blue);font-size:10px;font-weight:800;letter-spacing:.16em}.login-card h1{margin:0;font:500 34px var(--serif)}.login-card>p:not(.eyebrow){color:var(--muted)}label{display:block;font-size:12px;font-weight:700}.login-card label{margin-top:17px}input,select{width:100%;margin-top:6px;padding:11px 12px;border:1px solid #c7d3d7;background:#fff;color:var(--ink);outline:none}input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(47,111,142,.1)}.primary,.secondary,.ghost{min-height:42px;padding:9px 17px;border:1px solid transparent;font-weight:700}.primary{background:var(--orange);color:#fff}.secondary{background:#fff;border-color:#b8c6cc;color:var(--ink)}.ghost{background:transparent;border-color:#71838d;color:#fff}.login-card .primary{width:100%;margin-top:23px}.message{min-height:22px;margin:9px 0 0;color:var(--red);font-size:12px}.workspace{padding-bottom:70px}.hero{padding:54px clamp(22px,6vw,90px) 46px;display:flex;align-items:end;justify-content:space-between;gap:30px;background:linear-gradient(110deg,#e8eef0,#f8f9f9)}.hero h1{margin:0;font:500 clamp(32px,4vw,52px) var(--serif)}.hero p:not(.eyebrow){margin:14px 0 8px;color:var(--muted)}.hero small{color:#74858e}.hero .ghost{border-color:#9cacb3;color:var(--ink)}.metrics{display:grid;grid-template-columns:repeat(4,1fr);margin:0 clamp(22px,6vw,90px);background:var(--navy);color:#fff}.metrics article{padding:22px 25px;border-right:1px solid rgba(255,255,255,.12)}.metrics article:last-child{border:0}.metrics span,.metrics small{display:block}.metrics span{font-size:11px;color:#a8bbc5}.metrics strong{font:500 30px var(--serif);color:#f0d99d}.metrics small{font-size:9px;color:#7f96a2}.card{background:#fff;border:1px solid var(--line);box-shadow:0 10px 35px rgba(20,50,67,.05)}.toolbar{margin:30px clamp(22px,6vw,90px) 16px;padding:17px 20px;display:flex;align-items:end;justify-content:space-between;gap:20px}.toolbar .search{width:min(500px,100%)}.toolbar .search input{margin-top:3px}.toolbar>div{display:flex;align-items:center;gap:10px}.sync-status{font-size:10px;color:var(--green)}.inline-form{margin:0 clamp(22px,6vw,90px) 16px;padding:24px}.form-title,.section-head,.detail-head{display:flex;align-items:start;justify-content:space-between;gap:20px}.form-title h2,.section-head h2,.detail-head h2{margin:0;font:500 27px var(--serif)}.form-title h3{margin:0;font:500 20px var(--serif)}.text-button{border:0;background:transparent;color:var(--blue);font-weight:700}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin:19px 0}.check-row{display:flex;align-items:center;gap:9px;padding-top:24px}.check-row input{width:17px;height:17px;margin:0}.hr-layout{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.7fr);gap:16px;margin:0 clamp(22px,6vw,90px)}.directory,.employee-detail{min-height:650px}.directory{padding:23px}.section-head>span{font-size:11px;color:var(--muted)}.section-head.compact{align-items:end}.section-head.compact h3{font:500 21px var(--serif);margin:0}.section-head.compact p{font-size:11px;color:var(--muted);margin:3px 0 0}.employee-list{display:grid;gap:7px;margin-top:18px;max-height:760px;overflow:auto}.employee-row{width:100%;padding:15px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);background:#f8fafb;text-align:left}.employee-row:hover,.employee-row.active{border-color:var(--blue);background:#eaf2f5}.employee-row span b,.employee-row span small{display:block}.employee-row span small{color:var(--muted);font-size:11px;margin-top:3px}.employee-status{font-style:normal;font-size:9px;padding:4px 7px;background:#e8edef;color:#697b85}.employee-status.active{background:#e2f0e9;color:#327056}.employee-detail{padding:28px}.empty-state{display:grid;place-items:center;text-align:center;min-height:240px;padding:30px;border:1px dashed #c6d2d6}.empty-state b{font:500 21px var(--serif)}.empty-state p{margin:4px 0;color:var(--muted);font-size:12px}.empty-state.small{min-height:105px}.detail-head{padding-bottom:24px;border-bottom:1px solid var(--line)}.detail-head h2{font-size:31px}.detail-head>div>p:not(.eyebrow){margin:6px 0;color:var(--muted)}.detail-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.business-form{margin:22px 0;padding:22px;background:#eef3f4;border-left:4px solid var(--blue)}.business-form .form-grid{grid-template-columns:repeat(3,1fr)}.detail-section{padding:25px 0;border-bottom:1px solid var(--line)}.detail-section:last-child{border-bottom:0}.chip-list{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}.post-chip{min-width:160px;padding:12px 14px;background:#edf3f4;border-left:3px solid var(--blue)}.post-chip b,.post-chip small{display:block}.post-chip small{color:var(--muted);font-size:10px;margin-top:3px}.record-list,.eligibility-list{display:grid;gap:9px;margin-top:14px}.record{padding:17px 18px;display:flex;align-items:center;justify-content:space-between;gap:20px;border:1px solid var(--line);background:#fbfcfc}.record-no{font-size:9px;color:var(--blue);font-weight:800}.record h4{margin:4px 0;font:500 18px var(--serif)}.record p{margin:0;color:var(--muted);font-size:11px}.status{padding:5px 8px;background:#e8edef;color:#657681;font-size:9px;font-weight:700}.status.active,.status.passed{background:#e2f0e9;color:#337157}.status.suspended,.status.failed{background:#fff0da;color:#99641e}.status.revoked{background:#f2e7e5;color:#955049}.eligibility-card{padding:16px;display:grid;grid-template-columns:.55fr 1.45fr;gap:20px;border:1px solid var(--line)}.eligibility-card>div>span{font-size:9px;color:var(--blue);font-weight:800}.eligibility-card h4{font:500 17px var(--serif);margin:4px 0}.eligibility-card b{font-size:12px}.eligibility-card p{margin:4px 0 0;color:var(--muted);font-size:11px}.eligibility-card.eligible{border-left:4px solid var(--green);background:#f5faf7}.eligibility-card.ineligible{border-left:4px solid var(--orange);background:#fffaf4}.checking{padding:25px;text-align:center;color:var(--muted)}.rules{margin:22px clamp(22px,6vw,90px) 0;padding:25px}.rule-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}.rule-card{padding:20px;background:#f6f8f8;border-top:3px solid var(--blue)}.rule-card>span{font-size:9px;color:var(--blue);font-weight:800}.rule-card h3{font:500 20px var(--serif);margin:9px 0 15px}.rule-card dl{margin:0}.rule-card dl div{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line);font-size:10px}.rule-card dt{color:var(--muted)}.rule-card dd{margin:0;text-align:right}.rule-card>b{display:block;margin-top:13px;font-size:10px}.rule-card .enabled{color:var(--green)}.rule-card .disabled{color:var(--muted)}.toast{position:fixed;right:24px;bottom:24px;z-index:90;max-width:380px;padding:13px 18px;background:var(--green);color:#fff;opacity:0;transform:translateY(15px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.toast.error{background:var(--red)}button:disabled{opacity:.55;cursor:wait}[hidden]{display:none!important}@media(max-width:1050px){.hr-layout{grid-template-columns:1fr}.directory{min-height:0}.employee-list{max-height:360px}.metrics{grid-template-columns:repeat(2,1fr)}.metrics article:nth-child(2){border-right:0}.metrics article:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.12)}.rule-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.topbar{padding:12px 18px}.brand small,.topbar nav a{display:none}.hero,.toolbar,.detail-head{align-items:stretch;flex-direction:column}.toolbar>div,.detail-actions{justify-content:flex-start;flex-wrap:wrap}.form-grid,.business-form .form-grid{grid-template-columns:1fr}.check-row{padding-top:0}.metrics{margin:0 18px}.toolbar,.inline-form,.rules{margin-left:18px;margin-right:18px}.hr-layout{margin:0 18px}.employee-detail,.directory{padding:20px}.rule-grid{grid-template-columns:1fr}.eligibility-card{grid-template-columns:1fr}}@media(max-width:480px){.metrics{grid-template-columns:1fr}.metrics article{border-right:0;border-bottom:1px solid rgba(255,255,255,.12)}.detail-actions button,.toolbar button{width:100%}.toolbar>div{align-items:stretch;flex-direction:column}.record{align-items:flex-start;flex-direction:column}.brand b{font-size:13px}}
/* HR employee master, account activation, and role matrix */
.toolbar{align-items:flex-end;flex-wrap:wrap}.filter-grid{display:grid;grid-template-columns:minmax(260px,2fr) repeat(3,minmax(150px,1fr));gap:12px;flex:1}.filter-grid label{color:var(--muted)}.toolbar-actions{display:flex;align-items:center;gap:10px}.employee-badges{display:flex!important;align-items:flex-end;gap:5px}.account-state{font-style:normal;font-size:9px;padding:4px 7px;white-space:nowrap}.account-state.unlinked{background:#eef1f2;color:#6d7d85}.account-state.active{background:#e2f0e9;color:#327056}.account-state.inactive{background:#f2e7e5;color:#955049}.mobile-state{font-style:normal;font-size:9px;padding:4px 7px;white-space:nowrap}.mobile-state.verified{background:#e2f0e9;color:#327056}.mobile-state.missing{background:#fff0d7;color:#9a651e}.account-section{background:#f8fafb;margin:20px -10px 0;padding:22px 18px!important;border:1px solid var(--line)!important}.account-badge{padding:5px 9px;font-size:10px;font-weight:700}.account-badge.pending{background:#fff0d7;color:#9a651e}.account-badge.unlinked{background:#e8edef;color:#657681}.account-badge.active{background:#e2f0e9;color:#337157}.account-badge.inactive{background:#f2e7e5;color:#955049}.account-summary>p{margin:14px 0 0;color:var(--muted)}.account-summary dl{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:15px 0 0}.account-summary dl div{padding:12px;background:#fff;border:1px solid var(--line)}.account-summary dt{font-size:10px;color:var(--muted)}.account-summary dd{margin:3px 0 0;font-weight:700}.account-manage{display:grid;grid-template-columns:minmax(220px,1fr) auto auto;align-items:end;gap:10px;margin-top:16px}.account-manage .message{grid-column:1/-1}.form-hint,.permission-note{font-size:11px;color:var(--muted)}.permission-note{margin-top:14px;padding:12px;background:#fff7e9;border-left:3px solid var(--gold)}.permissions{margin:22px clamp(22px,6vw,90px) 0;padding:25px}.permission-matrix{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:18px}.permission-role{padding:18px;border:1px solid var(--line);background:#f8fafb}.permission-role>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.permission-role b{font:500 18px var(--serif)}.permission-role small{font-size:9px;color:var(--blue)}.permission-role>p{min-height:42px;margin:8px 0;color:var(--muted);font-size:11px}.permission-chips{display:flex;flex-wrap:wrap;gap:5px}.permission-chips span{padding:3px 7px;background:#e8f0f3;color:#315f75;font-size:9px}.permission-chips span.muted{background:#eef0f1;color:#75838a}
@media(max-width:1100px){.filter-grid{grid-template-columns:repeat(2,minmax(180px,1fr));width:100%}.toolbar-actions{width:100%}.permission-matrix{grid-template-columns:1fr}}
@media(max-width:760px){.filter-grid,.account-summary dl,.account-manage{grid-template-columns:1fr}.permissions{margin-left:18px;margin-right:18px}.employee-row{align-items:flex-start}.employee-badges{align-items:flex-end}}

/* Monthly assessment and HR assistance workflow */
.metrics{grid-template-columns:repeat(6,1fr)}.form-grid .wide{grid-column:span 2}.assessment-list,.assistance-list{display:grid;gap:10px;margin-top:14px}.assessment-card{display:grid;grid-template-columns:130px 1fr;gap:18px;padding:17px;border:1px solid var(--line);border-left:5px solid var(--green);background:#fbfcfc}.assessment-card.yellow{border-left-color:#d5ac2c;background:#fffdf4}.assessment-card.orange{border-left-color:#e7792d;background:#fff8f2}.assessment-card.red{border-left-color:#b94d45;background:#fff5f4}.assessment-card.black{border-left-color:#202a31;background:#f3f5f5}.assessment-score span,.assessment-score strong,.assessment-score small{display:block}.assessment-score span{font-size:10px;color:var(--muted)}.assessment-score strong{font:500 29px var(--serif)}.assessment-score small,.assessment-card>div>small{color:var(--muted);font-size:10px}.assessment-card>div>b{font-size:13px}.assessment-card>div>p{margin:5px 0;color:var(--muted);font-size:11px}.warning-badge{font-style:normal;padding:4px 7px;font-size:9px;font-weight:800;white-space:nowrap}.warning-badge.yellow{background:#fff0a8;color:#755c00}.warning-badge.orange{background:#ffe0c9;color:#9a4c12}.warning-badge.red{background:#f3d2cf;color:#903b35}.warning-badge.black{background:#26343d;color:#fff}.assistance-card{padding:18px;border:1px solid var(--line);background:#f8fafb}.case-head{display:flex;justify-content:space-between;gap:15px}.case-head>div{display:flex;align-items:center;gap:10px}.case-head h4{margin:0;font:500 18px var(--serif)}.assistance-card>p{margin:10px 0 3px}.assistance-card>small{color:var(--muted)}.case-status{font-size:10px}.case-status.open{color:var(--orange)}.case-status.in_progress{color:var(--blue)}.case-status.completed{color:var(--green)}.case-status.cancelled{color:var(--muted)}.case-actions{display:grid;grid-template-columns:150px 1fr auto;align-items:end;gap:9px;margin-top:13px}.case-actions input,.case-actions select{margin:0}.case-resolution{margin-top:12px;padding:11px;background:#e8f3ed;color:#35644f;font-size:11px}
@media(max-width:1050px){.metrics{grid-template-columns:repeat(2,1fr)}.metrics article{border-bottom:1px solid rgba(255,255,255,.12)}}@media(max-width:760px){.form-grid .wide{grid-column:auto}.assessment-card,.case-actions{grid-template-columns:1fr}.case-head{align-items:flex-start;flex-direction:column}}

/* Attendance, leave approval, and contract compliance */
.attendance-list,.leave-list,.contract-list{display:grid;gap:10px;margin-top:14px}.compliance-card{display:grid;grid-template-columns:1fr auto;align-items:start;gap:18px;padding:17px 18px;border:1px solid var(--line);background:#fbfcfc}.compliance-card.warning{border-left:4px solid var(--orange);background:#fff9f3}.compliance-card.danger{border-left:4px solid var(--red);background:#fff5f4}.compliance-card h4{margin:4px 0;font:500 18px var(--serif)}.compliance-card p{margin:0;color:var(--muted);font-size:11px}.leave-actions{display:grid;grid-template-columns:minmax(180px,1fr) auto auto;gap:7px;margin-top:10px}.leave-actions input{margin:0}.status.pending{background:#fff0da;color:#99641e}.status.approved{background:#e2f0e9;color:#337157}.status.rejected{background:#f2e7e5;color:#955049}@media(max-width:1200px){.metrics{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.metrics{grid-template-columns:1fr}.compliance-card,.leave-actions{grid-template-columns:1fr}}
/* Shift scheduling, attendance import, and HR analytics */
.shift-assignment-list,.shift-template-list,.attendance-import-list{display:grid;gap:9px;margin-top:14px}.hr-operations{margin:22px clamp(22px,6vw,90px) 0;padding:25px}.hr-operations>.section-head{align-items:end}.hr-operations>.section-head label{width:180px;color:var(--muted)}.hr-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:20px}.hr-stat-grid article{padding:16px;background:var(--navy);color:#fff}.hr-stat-grid span,.hr-stat-grid strong{display:block}.hr-stat-grid span{font-size:10px;color:#abc0cb}.hr-stat-grid strong{font:500 25px var(--serif);color:#f0d99d}.operations-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px;padding-top:22px;border-top:1px solid var(--line)}.operation-card{display:grid;grid-template-columns:1fr auto;align-items:start;gap:14px;padding:15px;border:1px solid var(--line);background:#f8fafb}.operation-card h4{margin:3px 0;font:500 17px var(--serif)}.operation-card p{margin:0;color:var(--muted);font-size:10px}.status.inactive{background:#eef0f1;color:#75838a}@media(max-width:1050px){.hr-stat-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.hr-operations{margin-left:18px;margin-right:18px}.hr-operations>.section-head{align-items:stretch;flex-direction:column}.hr-operations>.section-head label{width:100%}.operations-grid,.hr-stat-grid{grid-template-columns:1fr}}
.operations-grid>div:last-child{grid-column:1/-1}.attendance-device-list,.attendance-device-event-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:14px}.event-head{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.device-event{min-width:0}.provisioning-message{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere;user-select:all}@media(max-width:760px){.attendance-device-list,.attendance-device-event-list{grid-template-columns:1fr}}

/* Employee transfer and offboarding workflow */
.change-request-list,.change-request-queue{display:grid;gap:10px;margin-top:14px}.wide-operation{margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}.change-queue-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.65fr);gap:18px;padding:17px 18px;border:1px solid var(--line);background:#fbfcfc}.change-queue-card h4{margin:4px 0;font:500 18px var(--serif)}.change-queue-card p{margin:0;color:var(--muted);font-size:11px}.change-queue-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:7px}.change-queue-actions input{min-width:220px;margin:0}.status.executed{background:#e2f0e9;color:#337157}.status.cancelled{background:#eef0f1;color:#75838a}@media(max-width:760px){.change-queue-card{grid-template-columns:1fr}.change-queue-actions{align-items:stretch;justify-content:flex-start;flex-direction:column}.change-queue-actions input,.change-queue-actions button{width:100%}}
.training-plan-list,.training-plan-queue{display:grid;gap:10px;margin-top:14px}.training-plan-card,.training-plan-queue-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:17px 18px;border:1px solid var(--line);background:#fbfcfc}.training-plan-card h4,.training-plan-queue-card h4{margin:4px 0;font:500 18px var(--serif)}.training-plan-card p,.training-plan-queue-card p{margin:0;color:var(--muted);font-size:11px}.training-plan-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:7px}.training-plan-actions input{width:auto;min-width:120px;margin:0}.training-plan-actions input[data-training-plan-note]{min-width:190px}.status.planned{background:#edf3f5;color:#547384}.status.in_progress{background:#fff1da;color:#9a6226}.status.completed{background:#e2f0e9;color:#337157}@media(max-width:900px){.training-plan-card,.training-plan-queue-card{grid-template-columns:1fr}.training-plan-actions{justify-content:flex-start}}@media(max-width:560px){.training-plan-actions{align-items:stretch;flex-direction:column}.training-plan-actions input,.training-plan-actions button{width:100%}}
.status.replaced,.status.renewed{background:#e7f2ef;color:#2f7667}.renewal-entry{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:9px;width:100%;padding:14px;margin-top:6px;border:1px solid #bdd8d1;background:#f2f8f6;text-align:left}.renewal-entry>b,.renewal-entry>small{grid-column:1/-1}.renewal-entry label{display:grid;gap:5px;color:var(--muted);font-size:11px}.renewal-entry input{width:100%;min-width:0}.renewal-entry button{align-self:end}.renewal-entry small{color:var(--muted)}@media(max-width:700px){.renewal-entry{grid-template-columns:1fr}}

.activation-result{margin-top:16px;padding:16px;background:#edf5f1;border-left:4px solid #347c60}.activation-result b,.activation-result small{display:block}.activation-result small{margin-top:10px;color:#667985}.activation-result .secondary{margin-top:10px}.emergency-account-label{margin:20px 0 8px;color:#7d6a43;font-size:12px;font-weight:700}

/* Batch staff account activation */
.batch-activation-panel{border-top:4px solid var(--gold)}.batch-activation-panel>.form-hint{max-width:920px}.batch-selection-actions{display:flex;align-items:end;gap:8px;padding-bottom:1px}.batch-selection-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:4px 0 10px}.batch-selection-head span{color:var(--muted);font-size:11px}.batch-employee-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:360px;margin-bottom:16px;padding:10px;overflow:auto;border:1px solid var(--line);background:#f7f9fa}.batch-employee-row{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--line);background:#fff;cursor:pointer}.batch-employee-row:has(input:checked){border-color:var(--blue);background:#edf5f7}.batch-employee-row input{width:17px;height:17px;margin:3px 0 0;flex:0 0 auto}.batch-employee-row span,.batch-employee-row b,.batch-employee-row small{display:block}.batch-employee-row small{margin-top:3px;color:var(--muted);font-size:10px}.batch-activation-result{margin-top:20px;padding:18px;border-left:4px solid var(--green);background:#edf5f1}.batch-activation-result>div:first-child p{margin:4px 0;color:var(--muted);font-size:11px}.batch-result-actions{display:flex;gap:8px;margin:14px 0}.batch-result-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:260px;overflow:auto}.batch-result-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;background:#fff;border:1px solid var(--line)}.batch-result-item b,.batch-result-item small{display:block}.batch-result-item small{color:var(--muted);font-size:10px}.batch-result-item span{font-size:10px;font-weight:700}.batch-result-item.success span{color:var(--green)}.batch-result-item.failed{border-left:3px solid var(--red)}.batch-result-item.failed span{color:var(--red);text-align:right}@media(max-width:1050px){.batch-employee-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.batch-selection-actions,.batch-selection-head,.batch-result-actions{align-items:stretch;flex-direction:column}.batch-employee-list,.batch-result-list{grid-template-columns:1fr}.batch-result-actions button{width:100%}}
/* Staff activation governance */
.activation-governance{margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}.activation-governance>.section-head{align-items:end}.activation-governance>.section-head label{min-width:160px;color:var(--muted)}.activation-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:16px 0}.activation-stat-grid article{padding:14px 16px;background:var(--navy);color:#fff}.activation-stat-grid span,.activation-stat-grid strong{display:block}.activation-stat-grid span{font-size:10px;color:#aec1cb}.activation-stat-grid strong{margin-top:3px;font:500 24px var(--serif);color:#f0d99d}.activation-governance-list{display:grid;gap:8px;max-height:420px;overflow:auto}.activation-governance-row{display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(330px,.8fr);align-items:end;gap:14px;padding:14px;border:1px solid var(--line);background:#fff}.activation-governance-row>div:first-child b,.activation-governance-row>div:first-child small{display:block}.activation-governance-row>div:first-child small{margin-top:3px;color:var(--muted);font-size:10px}.activation-governance-meta{display:grid;justify-items:end;gap:4px}.activation-governance-meta small{color:var(--muted);font-size:10px}.activation-revoke-actions{display:grid;grid-template-columns:1fr auto;gap:7px}.activation-revoke-actions input{margin:0}.status.used{background:#e2f0e9;color:#337157}.status.expired{background:#eef0f1;color:#75838a}@media(max-width:900px){.activation-governance-row{grid-template-columns:1fr auto}.activation-revoke-actions{grid-column:1/-1}.activation-stat-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.activation-governance>.section-head{align-items:stretch;flex-direction:column}.activation-governance>.section-head label{width:100%}.activation-stat-grid,.activation-governance-row,.activation-revoke-actions{grid-template-columns:1fr}.activation-governance-meta{justify-items:start}.activation-revoke-actions button{width:100%}}

/* Bulk employee mobile verification */
.mobile-import-panel{border-top:4px solid var(--blue)}.mobile-import-panel>.form-hint{max-width:980px}.mobile-import-toolbar,.mobile-import-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.mobile-import-toolbar{justify-content:space-between;margin:15px 0}.mobile-import-toolbar span{color:var(--muted);font-size:11px}.mobile-import-input{display:grid;gap:8px;color:var(--muted);font-size:11px}.mobile-import-input textarea{width:100%;min-height:230px;padding:14px;resize:vertical;border:1px solid var(--line);background:#f8fafb;font:12px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--navy)}.mobile-import-actions{margin-top:14px}.mobile-import-result{margin-top:16px}.mobile-import-summary{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 15px;border-left:4px solid var(--green);background:#edf5f1}.mobile-import-summary.failed{border-left-color:var(--red);background:#fff2f1}.mobile-import-summary span{color:var(--muted);font-size:10px}.mobile-import-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:300px;margin-top:10px;overflow:auto}.mobile-import-error,.mobile-import-preview{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border:1px solid var(--line);background:#fff}.mobile-import-error{border-left:3px solid var(--red)}.mobile-import-error b,.mobile-import-preview b{font-size:11px}.mobile-import-error span,.mobile-import-preview span{color:var(--muted);font-size:10px;text-align:right}@media(max-width:760px){.mobile-import-toolbar,.mobile-import-actions,.mobile-import-summary{align-items:stretch;flex-direction:column}.mobile-import-list{grid-template-columns:1fr}.mobile-import-toolbar button,.mobile-import-actions button{width:100%}}

/* Staff account rollout preview */
.batch-preview-actions{display:flex;gap:9px;margin-top:14px}.batch-preview-result{margin:16px 0}.batch-preview-summary{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 15px;border-left:4px solid var(--green);background:#edf5f1}.batch-preview-summary.blocked{border-left-color:var(--red);background:#fff2f1}.batch-preview-summary span{color:var(--muted);font-size:10px}.batch-preview-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:340px;margin-top:9px;overflow:auto}.batch-preview-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border:1px solid var(--line);background:#fff}.batch-preview-row.blocked{border-left:3px solid var(--red)}.batch-preview-row b,.batch-preview-row small{display:block}.batch-preview-row small{margin-top:3px;color:var(--muted);font-size:10px}.batch-preview-row>span{max-width:42%;color:var(--green);font-size:10px;text-align:right}.batch-preview-row.blocked>span{color:var(--red)}@media(max-width:760px){.batch-preview-actions,.batch-preview-summary{align-items:stretch;flex-direction:column}.batch-preview-actions button{width:100%}.batch-preview-list{grid-template-columns:1fr}.batch-preview-row{align-items:flex-start;flex-direction:column}.batch-preview-row>span{max-width:none;text-align:left}}

.mobile-correction-toggle{margin-top:12px;padding:12px 14px;border:1px solid #f3c49d;background:#fff8f1;color:var(--navy)}


/* Qualification rule draft import */
.qualification-import-panel{border-top:4px solid var(--gold)}.qualification-import-toolbar,.qualification-import-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.qualification-import-toolbar{justify-content:space-between;margin:15px 0}.qualification-import-toolbar>div{display:flex;gap:8px;flex-wrap:wrap}.qualification-import-toolbar span{color:var(--muted);font-size:11px}.qualification-import-input{display:grid;gap:8px;color:var(--muted);font-size:11px}.qualification-import-input textarea{width:100%;min-height:210px;padding:14px;resize:vertical;border:1px solid var(--line);background:#f8fafb;font:12px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--navy)}[data-qualification-evidence-import-text]{min-height:250px!important}.qualification-import-actions{margin-top:14px}.qualification-import-result{margin-top:16px}.qualification-import-summary{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 15px;border-left:4px solid var(--green);background:#edf5f1}.qualification-import-summary.failed{border-left-color:var(--red);background:#fff2f1}.qualification-import-summary span{color:var(--muted);font-size:10px}.qualification-import-list{display:grid;gap:8px;max-height:340px;margin-top:10px;overflow:auto}.qualification-import-error,.qualification-import-preview{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid var(--line);background:#fff}.qualification-import-error{border-left:3px solid var(--red)}.qualification-import-preview.warning{border-left:3px solid var(--orange);background:#fffaf4}.qualification-import-preview b,.qualification-import-preview small{display:block}.qualification-import-preview small{margin-top:4px;color:var(--muted);font-size:10px}.qualification-import-error span,.qualification-import-preview>span{color:var(--muted);font-size:10px;text-align:right}@media(max-width:760px){.qualification-import-toolbar,.qualification-import-actions,.qualification-import-summary,.qualification-import-error,.qualification-import-preview{align-items:stretch;flex-direction:column}.qualification-import-toolbar>div{width:100%;flex-direction:column}.qualification-import-toolbar button,.qualification-import-actions button{width:100%}.qualification-import-error span,.qualification-import-preview>span{text-align:left}}

.dingtalk-attendance{margin:22px clamp(22px,6vw,90px) 0;padding:25px}.dingtalk-attendance>.section-head>div>p:not(.eyebrow){margin:4px 0;color:var(--muted)}.dingtalk-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0}.dingtalk-summary article{padding:15px;background:#edf3f5;border-left:3px solid var(--blue)}.dingtalk-summary span,.dingtalk-summary strong{display:block}.dingtalk-summary span{font-size:10px;color:var(--muted)}.dingtalk-summary strong{font:500 24px var(--serif)}.dingtalk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.dingtalk-form{padding:18px;border:1px solid var(--line);background:#fbfcfc}.dingtalk-form h3{margin:0 0 12px;font:500 20px var(--serif)}.dingtalk-form label{margin-top:10px}.dingtalk-form button{margin-top:16px}.dingtalk-results{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px;padding-top:22px;border-top:1px solid var(--line)}.dingtalk-mapping-list,.dingtalk-run-list{display:grid;gap:9px;margin-top:14px}@media(max-width:900px){.dingtalk-grid{grid-template-columns:1fr}.dingtalk-results{grid-template-columns:1fr}.dingtalk-summary{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.dingtalk-attendance{margin-left:18px;margin-right:18px}.dingtalk-summary{grid-template-columns:1fr}}

.dingtalk-import-form{margin-top:16px;padding:18px;border:1px solid var(--line);background:#fbfcfc}.dingtalk-import-form textarea{width:100%;margin-top:6px;padding:12px;border:1px solid #c7d3d7;resize:vertical;font:12px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}.dingtalk-import-controls,.dingtalk-import-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.dingtalk-import-controls .check-row{padding-top:14px}.dingtalk-import-actions{margin-top:12px}.dingtalk-batches{grid-column:1/-1;padding-top:4px}.dingtalk-batch-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:14px}@media(max-width:760px){.dingtalk-import-controls,.dingtalk-import-actions{align-items:stretch;flex-direction:column}.dingtalk-import-actions button{width:100%}.dingtalk-batch-list{grid-template-columns:1fr}}
.form-title-actions{display:flex;align-items:center;gap:12px}.field-hint{display:block;margin-top:7px;color:var(--muted);font-size:11px;font-weight:400;line-height:1.55}.field-hint.attention{color:#99641e}select:disabled{background:#edf1f2;color:#667984;cursor:not-allowed}.business-form.no-shifts{border-left-color:var(--orange);background:#fff7ed}
.shift-batch-actions{display:flex;flex-wrap:wrap;gap:10px}.shift-batch-preview{margin-top:12px;padding:14px;border:1px solid #c9d8dd;background:#fff}.shift-batch-preview b,.shift-batch-preview span{display:block}.shift-batch-preview span{margin-top:4px;color:var(--muted);font-size:11px}.shift-batch-preview.conflict{border-color:#e2b079;background:#fff8ef}.shift-batch-preview.ready{border-color:#8dbca7;background:#f3faf6}
.operation-card-actions{display:grid;justify-items:end;gap:8px}.operation-card-actions .secondary{min-height:32px;padding:5px 11px;font-size:11px}.operation-card-actions small{color:var(--muted);font-size:9px}.shift-template-list .operation-card.inactive-template{opacity:.78}

.shift-plan-board{margin:1rem 0 1.25rem;padding:1rem;border:1px solid var(--line);border-radius:18px;background:#f8fbfc}.shift-plan-controls{display:flex;flex-wrap:wrap;align-items:end;gap:.65rem}.shift-plan-controls label{display:grid;gap:.25rem;min-width:160px;font-size:.82rem;color:var(--muted)}.shift-plan-controls select{min-height:42px}.shift-plan-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.7rem;margin:.8rem 0}.shift-plan-summary article{padding:.75rem .9rem;border:1px solid var(--line);border-radius:12px;background:#fff}.shift-plan-summary span,.shift-plan-summary strong{display:block}.shift-plan-summary span{font-size:.78rem;color:var(--muted)}.shift-plan-summary strong{margin-top:.2rem;font-size:1.25rem}.shift-plan-table-wrap{max-height:620px;overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff}.shift-plan-table{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;font-size:.76rem}.shift-plan-table th,.shift-plan-table td{min-width:58px;padding:.45rem .35rem;text-align:center;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}.shift-plan-table thead th{position:sticky;top:0;z-index:3;background:#eaf2f5}.shift-plan-table .employee-cell{position:sticky;left:0;z-index:2;min-width:190px;text-align:left}.shift-plan-table thead .employee-cell{z-index:4}.shift-plan-table th small,.shift-plan-table td small{display:block;margin-top:.15rem;color:var(--muted);font-weight:400}.shift-plan-table .weekend{background:#fff8ee}.shift-plan-table thead .weekend{background:#f9ead6}.shift-plan-table .historical-shift{background:#f4f4f4;color:#6b7280}.shift-plan-table .total-cell{min-width:62px;background:#f2f7f9}.shift-plan-table td span{color:#b4bec4}@media(max-width:900px){.shift-plan-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.shift-plan-controls{width:100%}.shift-plan-controls label{flex:1 1 180px}}

.team-shift-form{margin:.9rem 0;padding:1rem;border:1px solid #b9ced7;border-radius:14px;background:#eef6f8}.team-shift-form .form-title{align-items:flex-start}.team-shift-form [data-team-shift-target]{margin:.25rem 0 0;color:var(--muted)}.team-shift-form .shift-batch-preview{margin-top:.75rem;padding:.8rem;border-radius:10px;background:#fff;border:1px solid var(--line)}

.payroll-center{margin-top:24px}.payroll-notice{padding:14px 16px;border-left:4px solid #d98139;background:#fff6ec;color:#56361e;margin:12px 0 20px}.payroll-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.payroll-grid form{display:grid;gap:10px;padding:18px;border:1px solid #d9e2e8;border-radius:12px;background:#f8fafb}.payroll-grid label{display:grid;gap:5px}.payroll-grid input,.payroll-grid select{width:100%;box-sizing:border-box}.payroll-panels{display:grid;grid-template-columns:1fr 1.35fr;gap:18px;margin-top:22px}.payroll-row{display:grid;grid-template-columns:1fr auto;gap:10px;padding:13px 0;border-bottom:1px solid #dbe4ea}.payroll-row small{display:block;color:#657786;margin-top:5px}.payroll-row button{margin:2px 0 2px 6px}.payroll-detail{grid-column:1/-1;overflow:auto}.payroll-detail table{width:100%;border-collapse:collapse;margin-top:8px;background:white}.payroll-detail th,.payroll-detail td{padding:8px;border:1px solid #dde5ea;text-align:left;white-space:nowrap}.payroll-center .message.error{color:#bd2c2c}@media(max-width:1050px){.payroll-grid,.payroll-panels{grid-template-columns:1fr}}

/* Payroll profile bulk import and monthly coverage */
.payroll-bulk{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:18px;margin-top:18px}.payroll-bulk>form,.payroll-coverage{padding:18px;border:1px solid #d9e2e8;border-radius:12px;background:#f8fafb}.payroll-bulk textarea{width:100%;min-height:190px;margin:10px 0;padding:12px;border:1px solid #c7d3d7;background:#fff;resize:vertical;font:12px/1.6 Consolas,"Microsoft YaHei",monospace}.payroll-bulk form>div:last-of-type{display:flex;flex-wrap:wrap;gap:10px}.payroll-import-controls{display:grid;gap:7px;margin:8px 0 12px}.payroll-import-controls label{display:flex;align-items:flex-start;gap:8px;font-size:11px;color:var(--muted)}.payroll-import-controls input{width:16px;height:16px;margin:2px 0 0;flex:0 0 auto}.payroll-import-row{display:grid;gap:3px;padding:10px 0;border-bottom:1px solid var(--line)}.payroll-import-row small{color:var(--muted)}.payroll-coverage .section-head>div:last-child{display:grid;grid-template-columns:150px auto;gap:8px;align-items:end}.payroll-coverage input{margin:0}.coverage-summary{display:flex;align-items:center;gap:15px;margin:14px 0;padding:13px;background:#fff;border-left:4px solid var(--blue)}.coverage-summary strong{font:500 28px var(--serif);color:var(--blue)}.coverage-summary span{font-size:11px;color:var(--muted)}.coverage-missing{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:17px}.coverage-missing span{padding:7px 9px;background:#fff2e8;color:#8b4d22;font-size:10px}.coverage-ok{padding:10px 12px;background:#e8f5ed;color:var(--green)}
@media(max-width:1050px){.payroll-bulk{grid-template-columns:1fr}}@media(max-width:620px){.payroll-coverage .section-head>div:last-child{grid-template-columns:1fr;width:100%}.coverage-missing{grid-template-columns:1fr}}
/* Keep payroll coverage controls readable inside the narrow side card. */
.payroll-coverage .section-head.compact{display:block}.payroll-coverage .section-head>div:last-child{grid-template-columns:minmax(135px,1fr) auto;margin-top:10px}.payroll-coverage button,.payroll-bulk [data-payroll-template]{white-space:nowrap}
