 :root{--green:#123c2d;--green2:#1c5a42;--cream:#f7f4eb;--gold:#c99a32;--ink:#1d2b25;--muted:#6c7972;--line:#e5e7df;--danger:#a52d2d}*{box-sizing:border-box}body{margin:0;background:var(--cream);font:14px Inter,ui-sans-serif,system-ui,sans-serif;color:var(--ink)}button,input,select,textarea{font:inherit}button{border:0;border-radius:8px;padding:10px 16px;background:var(--green);color:#fff;font-weight:700;cursor:pointer}button:hover{background:var(--green2)}input,select,textarea{width:100%;border:1px solid #d5dad2;border-radius:7px;padding:10px;background:#fff;color:var(--ink)}/* Number fields stay numeric, but browser steppers are hidden to prevent accidental edits. */input[type="number"]{-moz-appearance:textfield;appearance:textfield}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}textarea{resize:vertical}label{display:grid;gap:6px;font-weight:650}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#0d2c21,#1d5d43)}.login-card{width:min(420px,90vw);padding:42px;background:#fff;border-radius:16px;box-shadow:0 20px 60px #0006}.mark{height:42px;width:42px;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:#fff;font-weight:900}.login .mark{margin:auto;height:64px;width:64px;font-size:20px}.login h1,.login .eyebrow,.login .muted{text-align:center}.login form{display:grid;gap:17px;margin:28px 0}.login small{color:var(--muted)}.shell{min-height:100vh;display:grid;grid-template-columns:250px 1fr}aside{padding:23px 15px;background:var(--green);color:#ecf1ed;display:flex;flex-direction:column}.brand{display:flex;gap:10px;align-items:center;padding:0 10px 28px}.brand small,.profile small,td small{display:block}.brand b{font-size:17px}nav{display:grid;gap:3px}nav p{font-size:10px;color:#a5beb1;font-weight:800;letter-spacing:.1em;margin:22px 10px 6px}nav a{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:7px;color:#e9f0eb;cursor:pointer}nav a:hover,nav .selected{background:#ffffff1d}nav .locked{opacity:.5;cursor:default}nav i{font-size:9px;margin-left:auto;font-style:normal}.profile{margin-top:auto;border-top:1px solid #ffffff2b;padding:20px 10px 4px}.profile .text-btn{padding:5px 0;margin-top:9px;color:#fff}.content{padding:32px 42px;max-width:1500px;width:100%;margin:auto}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}h1,h2,p{margin-top:0}h1{font-size:29px;margin-bottom:0}h2{font-size:20px;margin-bottom:5px}.eyebrow{font-size:10px;letter-spacing:.13em;font-weight:850;color:var(--gold);margin-bottom:6px}.muted,.toolbar p,.intro p{color:var(--muted)}.user-chip{background:#fff;padding:9px 13px;border-radius:20px;color:var(--muted)}.intro,.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.cards article,.panel,.notice{background:#fff;border:1px solid var(--line);border-radius:11px}.cards article{padding:19px}.cards span,.cards em{display:block;color:var(--muted);font-style:normal}.cards strong{display:block;font-size:32px;margin:10px 0 6px;color:var(--green)}.notice{margin-top:22px;padding:16px;border-left:4px solid var(--gold)}.notice p{margin:4px 0 0;color:var(--muted)}.filters{display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px;margin-bottom:15px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:800px}th{text-align:left;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;background:#fafbf8}th,td{padding:13px 15px;border-bottom:1px solid var(--line)}tr:last-child td{border-bottom:0}td small{color:var(--muted);margin-top:3px}.status{display:inline-block;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800}.aktif{background:#e1f3e6;color:#176838}.tidak-aktif,.cuti-tanpa-gaji{background:#eef0ed;color:#5e675f}.dalam-probation{background:#fff2d7;color:#906300}.tamat-perkhidmatan{background:#fae8e8;color:#a12c2c}.text-btn{padding:5px;background:transparent;color:var(--green)}.text-btn:hover{background:transparent;color:var(--gold)}.empty{padding:45px;text-align:center;color:var(--muted)}.modal-bg{position:fixed;inset:0;background:#08150f88;display:grid;place-items:center;padding:20px;z-index:4}.modal{background:#fff;width:min(700px,100%);max-height:92vh;overflow:auto;padding:25px;border-radius:13px;box-shadow:0 20px 60px #0005}.modal-head{display:flex;justify-content:space-between;align-items:start;margin-bottom:20px}.icon{font-size:25px;line-height:1;padding:2px 8px;background:transparent;color:var(--muted)}.icon:hover{background:#eee}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.actions{display:flex;justify-content:flex-end;gap:9px;margin-top:25px}.secondary{background:#edf1ed;color:var(--green)}.secondary:hover{background:#dce6dc}.danger{background:var(--danger)}.danger:hover{background:#7f2020}.error{color:#b3261e;min-height:18px;margin:0}.required{color:#b3261e;margin-right:3px}.employee-modal{width:min(900px,100%)}.form-section{border:0;border-top:1px solid var(--line);padding:19px 0 0;margin:20px 0 0}.form-section:first-of-type{border-top:0;padding-top:0;margin-top:0}.form-section legend{padding:0 8px 0 0;color:var(--green);font-size:13px;font-weight:850;letter-spacing:.04em;text-transform:uppercase}.span-two{grid-column:span 2}.profile-upload{display:grid;gap:7px;font-weight:650;align-content:start}.profile-upload small{font-weight:400;color:var(--muted)}.profile-preview,.profile-placeholder{width:88px;height:88px;border-radius:50%;object-fit:cover;border:2px solid var(--gold)}.profile-placeholder{display:grid;place-items:center;text-align:center;padding:8px;background:var(--cream);color:var(--muted);font-size:11px;border-color:#d5dad2}.employee-detail{width:min(780px,100%)}.detail-profile{width:88px;height:88px;object-fit:cover;border-radius:50%;border:2px solid var(--gold);margin:-4px 0 12px}.detail-section{border-top:1px solid var(--line);padding:16px 0}.detail-section h3{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--green);margin:0 0 12px}.detail-section dl{margin:0;display:grid;grid-template-columns:180px 1fr;gap:9px}.detail-section dt{color:var(--muted)}.detail-section dd{margin:0;font-weight:650}.detail-section dd.muted{font-weight:400;grid-column:1 / -1}.employee-detail .status{margin-top:8px}.contact-subsection{grid-column:1 / -1;border-bottom:1px dashed var(--line);padding-bottom:16px;margin-bottom:16px}.contact-subsection:last-child{border-bottom:0;padding-bottom:0;margin-bottom:0}.contact-subsection h3{font-size:12px;color:var(--muted);margin:0 0 12px}.detail-subheading{grid-column:1 / -1;color:var(--green);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;margin-top:8px}@media(max-width:850px){.shell{grid-template-columns:1fr}aside{padding:12px;position:sticky;top:0;z-index:3}.brand{padding:0}.profile,nav p,nav .locked,nav a span{display:none}nav{display:flex;position:absolute;right:12px;top:20px}nav a{padding:7px}.content{padding:25px 18px}.cards{grid-template-columns:repeat(2,1fr)}.form-grid,.filters{grid-template-columns:1fr}.span-two{grid-column:auto}}@media(max-width:500px){header{align-items:start}.user-chip{display:none}.intro,.toolbar{align-items:start;gap:12px;flex-direction:column}.cards{grid-template-columns:1fr}.form-grid{gap:12px}.detail-section dl{grid-template-columns:1fr}.actions{flex-wrap:wrap;justify-content:start}}
.contract-cards{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:18px}.clickable-card{cursor:pointer}.clickable-card:hover{border-color:var(--gold);transform:translateY(-1px)}.contract-follow-up-card{border-left:3px solid #c99a32!important}.contract-follow-up-card strong{color:#8a6515}.tindakan-diperlukan{background:#fff2d7;color:#8a6515}.contract-follow-up-notice{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 17px;padding:13px 14px;border:1px solid #ead59b;border-left:4px solid var(--gold);border-radius:9px;background:#fffaf0}.contract-follow-up-notice b{color:#755615}.contract-follow-up-notice p{margin:4px 0 0;color:#765f2b;line-height:1.45}.contract-follow-up-notice button{flex:0 0 auto;white-space:nowrap}.staff-info{align-self:end;padding:10px 12px;border-radius:7px;background:var(--cream);border:1px solid var(--line)}.staff-info small{display:block;color:var(--muted);margin-top:3px}.termination-option{display:flex;grid-template-columns:auto 1fr;align-items:center;gap:9px;padding-top:29px}.termination-option input{width:auto}@media(max-width:1100px){.contract-cards{grid-template-columns:repeat(3,1fr)}}@media(max-width:850px){.contract-cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:500px){.contract-cards{grid-template-columns:1fr}.contract-follow-up-notice{align-items:flex-start;flex-direction:column}.contract-follow-up-notice button{width:100%}.termination-option{padding-top:0}}
.contract-history-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.contract-history-item:last-child{border-bottom:0}.contract-history-item span{color:var(--muted)}.contract-history-item small{color:var(--gold);font-size:10px;font-weight:850}.contract-history-item em{grid-column:2;grid-row:1 / span 2;align-self:center;font-style:normal}
.leave-cards{grid-template-columns:repeat(4,1fr);margin-bottom:18px}.leave-filters{grid-template-columns:2fr 1fr 1fr 1fr 1fr}.eligibility-box{padding:11px 12px;border:1px solid var(--line);border-radius:7px;background:var(--cream);display:grid;gap:4px;align-content:start}.eligibility-box span,.eligibility-box small{display:block}.override-option{display:flex;grid-template-columns:auto 1fr;align-items:center;gap:9px;padding-top:29px}.override-option input{width:auto}.hidden{display:none!important}.document-link{display:inline-block;color:var(--green);font-weight:800;margin:4px 0 10px}@media(max-width:1000px){.leave-filters{grid-template-columns:repeat(2,1fr)}}@media(max-width:850px){.leave-cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:500px){.leave-cards,.leave-filters{grid-template-columns:1fr}.override-option{padding-top:0}}
.assignment-tabs{display:flex;gap:8px;border-bottom:1px solid var(--line);margin:0 0 18px;padding-bottom:10px}.assignment-tab{background:#edf1ed;color:var(--green)}.assignment-tab.selected{background:var(--green);color:#fff}.bulk-filters{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0}.bulk-filters label{font-size:12px}.hint{color:var(--muted);font-size:12px}.success{color:#176838;min-height:18px;margin:0;font-weight:700}.table-wrap input[type=checkbox]{width:auto}.table-wrap select{min-width:170px}@media(max-width:850px){.bulk-filters{grid-template-columns:1fr 1fr}}@media(max-width:500px){.bulk-filters{grid-template-columns:1fr}.assignment-tabs{flex-direction:column}.assignment-tab{width:100%}}
.payslip{width:min(860px,100%)}.payslip-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px}.payslip h3{color:var(--green)}.payslip table{min-width:0}.payslip table td:last-child,.payslip table th:last-child{text-align:right}@media(max-width:650px){.payslip-columns{grid-template-columns:1fr}}.login-logo{width:64px;height:64px;margin:auto;display:grid;place-items:center}.login-logo img{display:block;width:64px;height:64px;object-fit:contain}.sidebar-logo{width:46px;height:46px;display:grid;place-items:center;flex:0 0 46px}.sidebar-logo img{display:block;width:46px;height:46px;object-fit:contain}
.payslip-brand{display:flex;align-items:center;gap:12px}.payslip-logo{width:58px;height:58px;object-fit:contain;flex:0 0 58px}@media print{@page{size:A4 portrait;margin:12mm}body>*{visibility:hidden}.modal-bg:has(.payslip),.modal-bg:has(.payslip) *{visibility:visible}.modal-bg:has(.payslip){position:absolute;inset:0;display:block;padding:0;background:#fff}.modal-bg:has(.payslip) .payslip{width:100%;max-height:none;overflow:visible;padding:0;box-shadow:none;border-radius:0}.payslip .close,.payslip .actions{display:none!important}.payslip-brand{border-bottom:1px solid #777;padding-bottom:8px;margin-bottom:12px}.payslip-logo{width:56px;height:56px}}
.impersonation-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 22px;padding:12px 14px;border:1px solid #d8b45c;border-left:4px solid var(--gold);border-radius:10px;background:#fff9e9;color:var(--ink)}.impersonation-banner b,.impersonation-banner span{display:block}.impersonation-banner b{font-size:11px;letter-spacing:.08em;color:#8a6519}.impersonation-banner span{margin-top:3px;font-weight:700}.impersonation-banner .secondary{flex:0 0 auto;white-space:nowrap}@media(max-width:620px){.impersonation-banner{align-items:flex-start;flex-direction:column}.impersonation-banner .secondary{width:100%}}
.corporate-payslip{width:min(900px,100%);padding:0;overflow:hidden}.corporate-payslip-header{display:grid;grid-template-columns:1fr auto 36px;gap:18px;align-items:center;padding:22px 25px 18px;border-bottom:3px solid var(--green);background:#fff}.corporate-school{display:flex;align-items:center;gap:12px;color:var(--green)}.corporate-school .payslip-logo{width:58px;height:58px}.corporate-school b,.corporate-school span{display:block}.corporate-school b{font-size:17px;letter-spacing:.02em}.corporate-school span{margin-top:3px;color:var(--muted);font-size:12px}.corporate-title{text-align:right}.corporate-title span,.corporate-title strong{display:block}.corporate-title span{color:var(--green);font-size:12px;font-weight:850;letter-spacing:.12em}.corporate-title strong{margin-top:4px;color:var(--ink);font-size:14px}.corporate-payslip .close{align-self:start}.corporate-staff{padding:17px 25px 14px}.corporate-section-title{font-size:11px;font-weight:850;letter-spacing:.1em;color:var(--green);margin-bottom:10px}.payslip-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 28px}.payslip-info{display:grid;grid-template-columns:112px 1fr;gap:8px;padding-bottom:5px;border-bottom:1px solid #edf0e9}.payslip-info span{color:var(--muted);font-size:12px}.payslip-info b{font-size:12px;text-align:right;overflow-wrap:anywhere}.corporate-earnings{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:0 25px 18px}.corporate-pay-column{border:1px solid var(--line);border-radius:8px;overflow:hidden}.corporate-pay-column h3{margin:0;padding:10px 12px;color:#fff;background:var(--green);font-size:12px;letter-spacing:.07em}.corporate-pay-column table{width:100%;min-width:0}.corporate-pay-column td,.corporate-pay-column th{padding:8px 12px}.corporate-pay-column td:last-child,.corporate-pay-column th:last-child{text-align:right;white-space:nowrap}.corporate-pay-column tr:last-child th{border-bottom:0}.payslip-subtotal th{border-top:2px solid var(--gold);background:#f8f8f4;color:var(--green);font-size:11px}.corporate-net{display:flex;justify-content:space-between;align-items:center;margin:0 25px;padding:14px 16px;border:1px solid #cbd9d2;border-left:5px solid var(--green);border-radius:8px;background:#f1f6f3;color:var(--green)}.corporate-net span{font-size:12px;font-weight:850;letter-spacing:.08em}.corporate-net strong{font-size:25px}.corporate-employer{display:flex;justify-content:space-between;gap:18px;margin:16px 25px 0;padding:10px 0;border-top:1px solid var(--line);font-size:12px}.corporate-employer span{font-weight:850;color:var(--green);letter-spacing:.06em}.corporate-employer b{font-weight:650;text-align:right}.corporate-payslip-footer{margin:16px 25px 0;padding:12px 0 18px;border-top:1px solid var(--line);color:var(--muted);font-size:11px;text-align:center}.payslip-actions{margin:0;padding:0 25px 20px}@media(max-width:700px){.corporate-payslip-header{grid-template-columns:1fr 36px}.corporate-title{grid-column:1;text-align:left}.payslip-info-grid,.corporate-earnings{grid-template-columns:1fr}.corporate-employer{display:grid;gap:5px}.corporate-employer b{text-align:left}}@media print{.corporate-payslip-header{padding:0 0 12px;border-bottom:2px solid #123c2d}.corporate-staff{padding:12px 0}.corporate-earnings{padding:0 0 12px;gap:14px}.corporate-net,.corporate-employer{margin-left:0;margin-right:0}.corporate-payslip-footer{margin-left:0;margin-right:0;padding-bottom:0}.payslip-actions{display:none!important}.corporate-payslip{font-size:10pt}.corporate-pay-column td,.corporate-pay-column th{padding:6px 8px}}
.leave-date-control,.attendance-date-control{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:8px;position:relative}.calendar-picker-button{padding:0;display:grid;place-items:center;background:#edf1ed;color:var(--green);font-size:18px;line-height:1}.calendar-picker-button:hover{background:#dce6dc}.leave-calendar{position:fixed;z-index:12;width:308px;padding:12px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 15px 35px #0003}.leave-calendar-head{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;text-align:center;margin-bottom:10px}.leave-calendar-head button{padding:5px;background:transparent;color:var(--green);font-size:24px;line-height:1}.leave-calendar-head button:hover{background:var(--cream)}.leave-calendar-weekdays,.leave-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;text-align:center}.leave-calendar-weekdays{margin-bottom:4px;color:var(--muted);font-size:10px;font-weight:800}.leave-calendar-grid button{padding:7px 0;background:transparent;color:var(--ink);border-radius:6px}.leave-calendar-grid button:hover,.leave-calendar-grid button.selected{background:var(--green);color:#fff}
.payroll-unsaved{min-height:20px;margin:-10px 0 14px;color:#a16c00;font-weight:800}.payroll-register table{min-width:1080px}.payroll-register th,.payroll-register td{padding:10px 9px;vertical-align:middle;white-space:nowrap}.payroll-register th:nth-child(1),.payroll-register td:nth-child(1){width:42px;text-align:center}.payroll-register th:nth-child(2),.payroll-register td:nth-child(2){width:86px}.payroll-register th:nth-child(3),.payroll-register td:nth-child(3){min-width:190px;white-space:normal;position:sticky;left:0;z-index:1;background:#fff}.payroll-register th:nth-child(3){z-index:2;background:#fafbf8}.payroll-register th:nth-child(4),.payroll-register td:nth-child(4){min-width:128px;white-space:normal}.payroll-register .payroll-inline{width:92px;min-width:92px;padding:7px}.payroll-register .payroll-net{font-weight:850;color:var(--green)}.payroll-deduction{cursor:help}.payroll-allowance,.payroll-adjust{margin-left:2px}.payroll-allowance-modal{width:min(620px,100%)}.allowance-section{border-top:1px solid var(--line);padding:16px 0;margin-top:16px}.allowance-section h3{margin:0 0 12px;color:var(--green);font-size:13px;text-transform:uppercase;letter-spacing:.04em}.allowance-income-list{border:1px solid var(--line);border-radius:8px;margin-bottom:12px}.allowance-income-list p{display:flex;justify-content:space-between;gap:16px;margin:0;padding:10px 12px;border-bottom:1px solid var(--line)}.allowance-income-list p:last-child{border-bottom:0}.allowance-income-list small{display:block;color:var(--muted);font-weight:400;margin-top:3px}.allowance-totals{margin-top:2px;padding:10px 12px;background:var(--cream);border-radius:7px}.allowance-totals p{display:flex;justify-content:space-between;margin:4px 0}.allowance-totals .allowance-grand-total{padding-top:7px;margin-top:7px;border-top:1px solid #d8ddcf;color:var(--green);font-weight:800}.payroll-adjustment-modal{width:min(620px,100%)}.adjustment-list{border:1px solid var(--line);border-radius:8px;margin-bottom:18px}.adjustment-list p{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;margin:0;padding:10px 12px;border-bottom:1px solid var(--line)}.adjustment-list p:last-child{border-bottom:0}.adjustment-list small{grid-column:1/-1;color:var(--muted);margin-top:-8px}.adjustment-list .text-btn{padding:4px}
.payroll-summary-cards{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px}.payroll-summary-cards article{min-height:148px}.payroll-summary-cards strong{font-size:26px;line-height:1.18}.payroll-summary-cards small{display:block;color:var(--muted);line-height:1.45}@media(max-width:850px){.payroll-summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:500px){.payroll-summary-cards{grid-template-columns:1fr}.payroll-summary-cards article{min-height:0}}
.danger-text{color:var(--danger)!important}
.policy-list{overflow:visible}.policy-list .policy-item{position:relative;display:flex;align-items:center;gap:20px;padding:19px 20px;min-width:0}.policy-list .policy-item:first-child{border-radius:9px 9px 0 0}.policy-list .policy-item:last-child{border-radius:0 0 9px 9px}.policy-content{flex:1 1 auto;min-width:0}.policy-heading{display:flex;align-items:center;gap:9px;min-width:0}.policy-heading>b{font-size:15px;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.policy-heading .status{flex:0 0 auto;white-space:nowrap}.policy-meta{line-height:1.45;margin-top:5px;white-space:normal}.policy-summary{margin:7px 0 0;color:var(--muted);line-height:1.45;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.policy-actions{display:flex;align-items:center;gap:5px;flex:0 0 auto;white-space:nowrap}.policy-actions .text-btn{margin:0;padding:6px 8px}.policy-overflow{position:relative;flex:0 0 auto}.policy-overflow summary{list-style:none;display:grid;place-items:center;width:31px;height:31px;border-radius:7px;color:var(--green);font-size:20px;font-weight:850;cursor:pointer}.policy-overflow summary::-webkit-details-marker{display:none}.policy-overflow summary:hover,.policy-overflow[open] summary{background:#edf1ed}.policy-overflow-menu{position:absolute;right:0;top:37px;z-index:6;display:grid;min-width:178px;padding:6px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 26px #0002}.policy-overflow-menu .text-btn{width:100%;padding:8px 10px;text-align:left;border-radius:5px}.policy-overflow-menu .text-btn:hover{background:var(--cream)}.policy-item:has(.policy-overflow[open]){z-index:2}@media(max-width:700px){.policy-list .policy-item{align-items:flex-start;gap:12px}.policy-actions{padding-top:1px}.policy-actions .text-btn{padding:6px}.policy-heading{align-items:flex-start}.policy-heading .status{margin-top:1px}}@media(max-width:460px){.policy-list .policy-item{flex-direction:column}.policy-actions{width:100%;justify-content:flex-end}.policy-heading>b{font-size:14px}}
.payroll-register-toolbar{display:grid;grid-template-columns:minmax(320px,1fr) minmax(420px,auto);grid-template-areas:"nav nav" "summary actions";align-items:start;gap:12px 24px}.payroll-register-toolbar .global-page-navigation{grid-area:nav;margin:0;padding-bottom:12px;border-bottom:1px solid var(--line)}.payroll-register-summary{grid-area:summary;min-width:0}.payroll-register-summary>p:last-child{white-space:nowrap}.payroll-register-actions{grid-area:actions;display:grid;justify-items:end;gap:9px}.payroll-context-actions,.payroll-primary-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}.payroll-primary-actions button:not(.secondary){min-width:190px}@media(max-width:980px){.payroll-register-toolbar{grid-template-columns:1fr;grid-template-areas:"nav" "summary" "actions"}.payroll-register-actions{justify-items:start}.payroll-context-actions,.payroll-primary-actions{justify-content:flex-start}.payroll-register-summary>p:last-child{white-space:normal}}@media(max-width:560px){.payroll-register-actions,.payroll-context-actions,.payroll-primary-actions{width:100%}.payroll-context-actions button,.payroll-primary-actions button{flex:1 1 100%}.payroll-primary-actions button:not(.secondary){min-width:0}}
.staff-payslip-latest{padding:22px 24px}.staff-payslip-latest h2{margin:4px 0 18px;color:var(--green)}.staff-payslip-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}.staff-payslip-summary div{padding:13px 14px;border:1px solid var(--line);border-radius:6px;background:#fafcfb}.staff-payslip-summary span,.staff-payslip-summary strong{display:block}.staff-payslip-summary span{color:var(--muted);font-size:12px}.staff-payslip-summary strong{margin-top:5px;color:var(--green);font-size:16px}.staff-payslip-history{margin-top:22px;margin-bottom:0}.payslip-print-control{white-space:nowrap;padding:8px 11px;font-size:12px}@media(max-width:700px){.staff-payslip-summary{grid-template-columns:1fr}.staff-payslip-latest{padding:18px}.payslip-print-control{grid-column:1;justify-self:start}}
@media print{.payslip-print-control{display:none!important}}
/* Final corporate polish for the payslip only. */
.corporate-payslip{background:#fff}.corporate-payslip-header{grid-template-columns:1fr auto 32px;gap:20px;padding:24px 28px 20px}.corporate-school{gap:13px}.corporate-school .payslip-logo{width:60px;height:60px;object-fit:contain}.corporate-school b{line-height:1.2;letter-spacing:.025em}.corporate-school span{margin-top:5px;line-height:1.2}.corporate-title{padding-right:2px}.corporate-title span{letter-spacing:.14em}.corporate-title strong{margin-top:5px;letter-spacing:.02em}.corporate-staff{padding:20px 28px 17px}.corporate-section-title{margin-bottom:11px;letter-spacing:.11em}.payslip-info-grid{gap:9px 30px}.payslip-info{grid-template-columns:112px minmax(0,1fr);gap:10px;align-items:baseline;padding-bottom:7px;border-bottom-color:#e8ece6}.payslip-info span{color:#737a74;font-size:11px;letter-spacing:.01em}.payslip-info b{color:var(--ink);font-size:12px;font-weight:700;line-height:1.35}.corporate-earnings{padding:0 28px 20px;align-items:stretch}.corporate-pay-column{border-color:#dfe5de;border-radius:5px;display:flex;flex-direction:column}.corporate-pay-column h3{padding:10px 13px;font-size:11px;letter-spacing:.09em}.corporate-pay-column table{border-collapse:collapse;display:flex;flex:1}.corporate-pay-column tbody{display:flex;flex:1;flex-direction:column}.corporate-pay-column tr{display:grid;grid-template-columns:minmax(0,1fr) auto}.corporate-pay-column td,.corporate-pay-column th{padding:8px 13px;border-bottom:1px solid #edf0eb;color:var(--ink);font-size:12px;font-weight:400}.corporate-pay-column td:last-child,.corporate-pay-column th:last-child{font-variant-numeric:tabular-nums}.payslip-subtotal{margin-top:auto}.payslip-subtotal th{font-weight:850;letter-spacing:.025em}.corporate-net{margin:0 28px;padding:15px 18px;border-color:#c8d7cf;border-radius:5px}.corporate-net strong{line-height:1;font-variant-numeric:tabular-nums}.corporate-employer{align-items:baseline;margin:17px 28px 0;padding:11px 0;border-top-color:#dfe5de}.corporate-employer span{font-size:11px;white-space:nowrap}.corporate-employer b{font-variant-numeric:tabular-nums}.corporate-payslip-footer{margin:14px 28px 0;padding:12px 0 19px;border-top-color:#e4e8e3;color:#7b817d;font-size:10.5px;line-height:1.4}.payslip-actions{padding:0 28px 20px}.payroll-review-heading{margin:16px 0 7px;font-size:12px;color:var(--green);letter-spacing:.04em}.payroll-review-lines{border-top:1px solid var(--line)}.payroll-review-lines>div{display:flex;justify-content:space-between;gap:16px;padding:8px 0;border-bottom:1px solid var(--line)}.payroll-review-lines b{font-variant-numeric:tabular-nums;white-space:nowrap}.payroll-review-empty{margin:7px 0 0}@media(max-width:700px){.corporate-payslip-header{grid-template-columns:1fr 32px;padding:20px}.corporate-staff{padding:18px 20px}.corporate-earnings{padding:0 20px 18px}.corporate-net,.corporate-employer{margin-left:20px;margin-right:20px}.corporate-payslip-footer{margin-left:20px;margin-right:20px}}@media print{.corporate-payslip-header{padding:0 0 13px}.corporate-school .payslip-logo{width:54px;height:54px}.corporate-staff{padding:14px 0 12px}.corporate-earnings{padding:0 0 14px}.corporate-pay-column,.corporate-net,.corporate-employer{break-inside:avoid;page-break-inside:avoid}}
.communication-tabs{display:flex;gap:8px;border-bottom:1px solid var(--line);margin:0 0 18px;padding-bottom:10px}.communication-tab{background:#edf1ed;color:var(--green)}.communication-tab.selected{background:var(--green);color:#fff}.communication-toolbar{margin-bottom:16px}.month-controls{display:flex;align-items:center;gap:8px}.month-controls h2{margin:0;min-width:220px;text-transform:capitalize;font-size:20px}.month-controls .secondary{padding:6px 12px;font-size:20px;line-height:1}.communications-calendar{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.communications-weekdays,.communications-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.communications-weekdays{background:#f3f6f2;color:var(--muted);font-size:11px;font-weight:800;text-align:center;text-transform:uppercase}.communications-weekdays span{padding:10px 4px}.calendar-day{min-height:112px;padding:8px;border-right:1px solid var(--line);border-top:1px solid var(--line);display:flex;align-items:flex-start;flex-direction:column;gap:4px;overflow:hidden}.calendar-day:nth-child(7n){border-right:0}.calendar-day.blank{background:#fafbf8}.calendar-day>b{font-size:12px;color:var(--green)}.calendar-event-chip{width:100%;padding:4px 6px;text-align:left;border-radius:4px;background:#e5f0e9;color:var(--green);font-size:10px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event-chip:hover{background:#d2e6d9}.calendar-day small{font-size:10px;color:var(--muted)}.communication-list{margin-top:16px;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#fff}.communication-list article{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:16px;align-items:center;padding:13px 15px;border-bottom:1px solid var(--line)}.communication-list article:last-child{border-bottom:0}.communication-list b,.communication-list small{display:block}.communication-list small{color:var(--muted);margin-top:4px}.communication-list .text-btn{margin-left:4px}.important-badge{display:inline-block;padding:3px 6px;border-radius:999px;background:#fff0c8;color:#805b00;font-size:10px;font-weight:850;letter-spacing:.05em}.communication-modal{width:min(780px,100%)}.communication-target-options{border:1px solid var(--line);border-radius:8px;padding:13px;background:#fafcfb}.target-checks{display:flex;flex-wrap:wrap;gap:9px 18px;margin-top:10px}.target-checks label,.target-staff-list label{font-size:13px}.target-checks input,.target-staff-list input{width:auto}.compact-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.compact-heading h3{margin:0;color:var(--green);font-size:14px}.target-actions{display:flex;justify-content:flex-end;gap:8px;margin:8px 0}.target-staff-list{max-height:210px;overflow:auto;border-top:1px solid var(--line);padding-top:7px}.target-staff-list label{display:block;padding:7px 2px}.communication-previews{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px}.communication-previews .panel{padding:16px}.communication-preview-item,.staff-announcement{display:block;width:100%;padding:10px 0;text-align:left;background:transparent;color:var(--ink);border-bottom:1px solid var(--line)}.communication-preview-item:last-child,.staff-announcement:last-child{border-bottom:0}.communication-preview-item:hover,.staff-announcement:hover{background:#fafcfb}.communication-preview-item b,.communication-preview-item small,.staff-announcement b,.staff-announcement small{display:block}.communication-preview-item small,.staff-announcement small{margin-top:4px;color:var(--muted)}.empty-small{margin:12px 0 0;color:var(--muted);font-size:13px}.staff-communication-list article{grid-template-columns:1fr}.communication-body{line-height:1.65;white-space:normal}.communication-detail{width:min(620px,100%)}
@media(max-width:760px){.month-controls{flex-wrap:wrap}.month-controls h2{min-width:150px;font-size:17px}.calendar-day{min-height:82px;padding:5px}.communications-weekdays span{font-size:9px;padding:7px 2px}.communication-list article{grid-template-columns:1fr;gap:8px}.communication-list article>div:last-child{display:flex;flex-wrap:wrap;gap:4px}.communication-previews{grid-template-columns:1fr}.target-checks{display:grid;grid-template-columns:1fr}.calendar-event-chip{font-size:9px;padding:3px}.communication-toolbar{align-items:flex-start}.communication-toolbar>button{width:100%}}
.communications-calendar{overflow:visible}.communications-calendar-grid{overflow:hidden}.calendar-day{position:relative}.calendar-event-chip{border-radius:4px;font-weight:750}.calendar-event-chip.multi-start{border-radius:6px 2px 2px 6px}.calendar-event-chip.multi-middle{border-radius:2px}.calendar-event-chip.multi-end{border-radius:2px 6px 6px 2px}.calendar-more-chip{padding:2px 5px;background:transparent;color:var(--green);font-size:10px;font-weight:850;text-align:left}.calendar-more-chip:hover{background:#edf4ee}.calendar-day-list{margin-top:0}.calendar-day-list .staff-announcement{padding:12px}.calendar-day-list .staff-announcement:hover{background:#f6faf7}@media(max-width:760px){.communications-calendar{overflow-x:auto}.communications-calendar-grid,.communications-weekdays{min-width:630px}.calendar-day{min-height:76px}.calendar-event-chip{font-size:8px;min-height:19px}.calendar-more-chip{font-size:9px}}

/* Portal Staf dashboard polish: compact hierarchy using the existing IRIS palette. */
/* Portal Staf Cuti Saya: presentation-only polish scoped to the leave page. */
.staff-leave-page{display:grid;gap:18px}.staff-leave-toolbar{margin:0;align-items:flex-end}.staff-leave-toolbar h2{margin:3px 0 5px}.staff-page-eyebrow{color:var(--gold);font-size:.74rem;font-weight:800;letter-spacing:.07em}.staff-leave-toolbar p,.staff-leave-history-heading p{margin:0;color:var(--muted)}.staff-leave-summary{grid-template-columns:repeat(3,minmax(0,1fr));margin:0}.staff-leave-summary article{min-height:118px;padding:20px 21px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 3px 10px rgba(15,69,51,.035);display:flex;flex-direction:column;gap:7px}.staff-leave-summary article span{color:var(--muted);font-size:.83rem;font-weight:700}.staff-leave-summary article strong{color:var(--green);font-size:1.8rem;line-height:1.05}.staff-leave-summary article em{color:#758078;font-size:.78rem;font-style:normal}.staff-leave-notice{margin:0}.staff-leave-history-heading{display:flex;justify-content:space-between;align-items:end;margin:6px 0 -4px}.staff-leave-history-heading h3{margin:0 0 4px;color:var(--green);font-size:1.04rem}.staff-leave-history-panel{margin:0;padding:0;overflow:hidden}.staff-leave-history-panel table{min-width:680px}.staff-leave-history-panel th{padding:13px 20px;background:#f8faf7;color:#4c5e55;border-bottom:1px solid var(--line);font-size:.72rem;letter-spacing:.05em}.staff-leave-history-panel td{padding:16px 20px;vertical-align:middle;border-bottom:1px solid #edf0ec}.staff-leave-history-panel tbody tr:last-child td{border-bottom:0}.staff-leave-history-panel tbody tr:hover{background:#fcfdfb}.staff-leave-request-id{font-weight:750;color:var(--green);white-space:nowrap}.staff-leave-type b,.staff-leave-type small{display:block}.staff-leave-type b{font-size:.9rem}.staff-leave-type small{margin-top:3px;color:var(--muted);font-size:.78rem}.staff-leave-history-panel .status{white-space:nowrap}.staff-leave-empty{padding:42px 24px;text-align:center}.staff-leave-empty b{display:block;color:var(--green);font-size:1rem}.staff-leave-empty p{margin:7px 0 0;color:var(--muted);font-size:.88rem}@media(max-width:760px){.staff-leave-toolbar{align-items:flex-start}.staff-leave-summary{grid-template-columns:1fr}.staff-leave-summary article{min-height:0}.staff-leave-history-heading{margin-top:2px}.staff-leave-history-panel th,.staff-leave-history-panel td{padding-left:14px;padding-right:14px}}@media(max-width:520px){.staff-leave-toolbar{gap:13px}.staff-leave-toolbar button{width:100%}.staff-leave-history-panel table{min-width:620px}}
/* Portal Staf Kehadiran Saya: visual layer only. */
.staff-attendance-page{display:grid;gap:18px}.staff-attendance-toolbar{margin:0}.staff-attendance-toolbar h2{margin:3px 0 5px}.staff-attendance-toolbar p{margin:0;color:var(--muted)}.staff-attendance-filter{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:0;padding:15px 18px;border-color:#dfe6df}.staff-attendance-filter h3{margin:4px 0 0;color:var(--green);font-size:1.04rem}.staff-attendance-filter-controls{display:flex;align-items:end;gap:9px}.staff-attendance-filter-controls label{display:grid;gap:5px;margin:0;color:var(--muted);font-size:.73rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.staff-attendance-filter-controls select,.staff-attendance-filter-controls input{height:38px;min-width:122px;margin:0;background:#fff}.staff-attendance-filter-controls input{min-width:86px;width:92px}.staff-attendance-filter-controls button{height:38px;margin:0;white-space:nowrap}.staff-attendance-today{padding:20px 22px;border:1px solid #cad8ce;border-left:4px solid var(--green);border-radius:12px;background:#fff;box-shadow:0 4px 12px rgba(15,69,51,.04)}.staff-attendance-today-head{display:flex;align-items:start;justify-content:space-between;gap:16px;padding-bottom:15px;border-bottom:1px solid var(--line)}.staff-attendance-today-head h3{margin:4px 0;color:var(--green);font-size:1.12rem}.staff-attendance-today-head p{margin:0;color:var(--muted);font-size:.86rem}.staff-attendance-today-actions{display:flex;align-items:center;justify-content:end;gap:9px;flex-wrap:wrap}.staff-attendance-today-actions>.status{white-space:nowrap}.staff-attendance-clock-action button{white-space:nowrap}.staff-attendance-today-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding-top:16px}.staff-attendance-today-grid div{min-width:0}.staff-attendance-today-grid span,.staff-attendance-today-grid b{display:block}.staff-attendance-today-grid span{margin-bottom:5px;color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.staff-attendance-today-grid b{color:var(--ink);font-size:.94rem;line-height:1.4;overflow-wrap:anywhere}.staff-attendance-today-source{margin-top:15px;padding-top:11px;border-top:1px solid var(--line);color:var(--muted);font-size:.76rem}.staff-attendance-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0}.staff-attendance-summary article{min-height:112px;padding:16px 17px;border:1px solid #e0e6df;border-radius:11px;background:#fff;box-shadow:0 2px 7px rgba(15,69,51,.03);display:flex;flex-direction:column;gap:7px}.staff-attendance-summary article span{color:var(--muted);font-size:.78rem;font-weight:750}.staff-attendance-summary article strong{color:var(--green);font-size:1.55rem;line-height:1.1}.staff-attendance-summary article em{color:#758078;font-size:.74rem;font-style:normal;line-height:1.35}.staff-attendance-summary .staff-attendance-working-hours{grid-column:span 2}.staff-attendance-history{margin:0;padding:0;overflow:hidden}.staff-attendance-history .compact-heading{padding:17px 20px 13px}.staff-attendance-history .compact-heading h3{color:var(--green);font-size:1.04rem}.staff-attendance-history table{min-width:760px}.staff-attendance-history th{padding:13px 16px;background:#f8faf7;color:#4c5e55;border-bottom:1px solid var(--line);font-size:.71rem;letter-spacing:.05em}.staff-attendance-history td{padding:14px 16px;vertical-align:middle;border-bottom:1px solid #edf0ec;font-size:.86rem}.staff-attendance-history tbody tr:last-child td{border-bottom:0}.staff-attendance-history tbody tr:hover{background:#fcfdfb}.staff-attendance-history .status{white-space:nowrap}.staff-attendance-note{color:var(--muted);font-size:.8rem;line-height:1.35}.staff-attendance-history .text-btn{padding:5px 0;font-size:.8rem}@media(max-width:850px){.staff-attendance-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.staff-attendance-today-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.staff-attendance-filter{align-items:stretch;flex-direction:column}.staff-attendance-filter-controls{width:100%;align-items:end}.staff-attendance-filter-controls label{flex:1}.staff-attendance-filter-controls select,.staff-attendance-filter-controls input{width:100%;min-width:0}.staff-attendance-today{padding:18px}.staff-attendance-today-head{align-items:start;flex-direction:column;gap:9px}.staff-attendance-today-actions{justify-content:start}.staff-attendance-history .compact-heading{align-items:start;flex-direction:column;gap:5px}}@media(max-width:480px){.staff-attendance-filter-controls{display:grid;grid-template-columns:1fr 1fr}.staff-attendance-filter-controls button{grid-column:1/-1;width:100%}.staff-attendance-summary,.staff-attendance-today-grid{grid-template-columns:1fr}.staff-attendance-summary .staff-attendance-working-hours{grid-column:auto}.staff-attendance-summary article{min-height:0}.staff-attendance-history table{min-width:730px}}
/* Portal Staf Kalendar Saya: the grid is the sole monthly event surface. */
.staff-calendar-page{display:grid;gap:14px}.staff-calendar-page .staff-calendar-view-tabs{margin:0;padding:0;border:0}.staff-calendar-page .communication-tab{padding:8px 13px;border:1px solid transparent;border-radius:7px;background:#edf2ee;color:var(--green);font-size:.84rem;font-weight:750}.staff-calendar-page .communication-tab.selected{border-color:var(--green);background:var(--green);color:#fff}.staff-calendar-toolbar{margin:0;padding:3px 0 2px}.staff-calendar-month-navigator{gap:6px}.staff-calendar-month-navigator h2{min-width:auto;margin:0 3px;font-size:1.1rem}.staff-calendar-month-navigator .secondary{width:32px;height:32px;padding:0;display:grid;place-items:center;border-radius:7px;font-size:1.35rem}.staff-calendar-page .communications-calendar{border-color:#d8e1d8;box-shadow:0 3px 10px rgba(15,69,51,.025)}.staff-calendar-page .communications-weekdays{background:#f5f8f4;color:#53685c}.staff-calendar-page .calendar-day{min-height:118px;padding:9px;background:#fff}.staff-calendar-page .calendar-day.blank{background:#fafbf8}.staff-calendar-page .calendar-day>b{display:inline-grid;place-items:center;min-width:24px;height:24px;border-radius:50%;font-size:.78rem}.staff-calendar-page .calendar-day.today>b{background:#fbf2d8;color:#795a13;box-shadow:inset 0 0 0 1px #dfbf6a}.staff-calendar-page .calendar-event-chip{padding:5px 7px;border:1px solid transparent;background:#e9f2ea;color:var(--green);font-size:.69rem;transition:background .15s ease,border-color .15s ease}.staff-calendar-page .calendar-event-chip:hover,.staff-calendar-page .calendar-event-chip:focus-visible{border-color:#bdcfbf;background:#dcebdd;outline:0}.staff-calendar-page .calendar-more-chip{margin-top:1px;color:var(--green)}@media(max-width:760px){.staff-calendar-toolbar{align-items:flex-start}.staff-calendar-month-navigator{gap:5px}.staff-calendar-month-navigator h2{min-width:128px;font-size:1rem}.staff-calendar-page .communications-calendar{overflow-x:auto}.staff-calendar-page .communications-weekdays,.staff-calendar-page .communications-calendar-grid{min-width:630px}.staff-calendar-page .calendar-day{min-height:82px;padding:6px}.staff-calendar-page .calendar-event-chip{font-size:.58rem;padding:4px 5px}}@media(max-width:460px){.staff-calendar-month-navigator{width:100%;flex-wrap:wrap}.staff-calendar-page .staff-calendar-view-tabs{gap:6px}.staff-calendar-page .communication-tab{flex:1}}
/* Portal Staf Polisi Sekolah: compact, staff-facing policy reading surface. */
.staff-policy-page{display:grid;gap:17px}.staff-policy-header{margin:0}.staff-policy-header h2{margin:3px 0 5px}.staff-policy-header p{margin:0;color:var(--muted)}.staff-policy-filter{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,260px);gap:10px;margin:0;padding:13px;border-color:#dfe6df}.staff-policy-filter input,.staff-policy-filter select{height:39px;margin:0}.staff-policy-list{overflow:hidden;border:1px solid #dfe6df;border-radius:11px;background:#fff;box-shadow:0 2px 8px rgba(15,69,51,.025)}.staff-policy-item{display:flex;align-items:center;gap:20px;padding:18px 20px;border-bottom:1px solid #edf0ec}.staff-policy-item:last-child{border-bottom:0}.staff-policy-item:hover{background:#fcfdfb}.staff-policy-copy{min-width:0;flex:1}.staff-policy-copy h3{margin:0;color:var(--green);font-size:1rem;line-height:1.38}.staff-policy-meta{margin:5px 0 0;color:var(--muted);font-size:.78rem;line-height:1.45}.staff-policy-summary{margin:8px 0 0;color:#59645c;font-size:.84rem;line-height:1.48;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.staff-policy-status-row{margin-top:10px}.staff-policy-ack-status{font-size:.7rem;white-space:nowrap}.staff-policy-no-ack{color:var(--muted);font-size:.74rem}.staff-policy-read{flex:0 0 auto;padding:8px 11px;font-size:.8rem;white-space:nowrap}.staff-policy-empty{padding:38px 24px;border:1px solid #dfe6df;border-radius:11px;background:#fff;text-align:center}.staff-policy-list .staff-policy-empty{border:0;border-radius:0}.staff-policy-empty b{display:block;color:var(--green)}.staff-policy-empty p{margin:6px 0 0;color:var(--muted);font-size:.85rem}.staff-policy-detail{width:min(760px,100%);max-height:90vh;overflow:auto}.staff-policy-detail .modal-head{position:sticky;top:0;z-index:1;padding-top:2px;background:#fff}.staff-policy-detail-summary{margin:0 0 16px;color:#536058;line-height:1.55}.staff-policy-detail .communication-body{line-height:1.7}.staff-policy-detail-ack{margin-top:18px}.staff-policy-detail-ack h3{margin-top:0;color:var(--green);font-size:1rem}.staff-policy-detail-ack p{line-height:1.55}.staff-policy-detail-ack label{font-size:.86rem;line-height:1.5}@media(max-width:620px){.staff-policy-filter{grid-template-columns:1fr}.staff-policy-item{align-items:flex-start;flex-direction:column;gap:12px;padding:16px}.staff-policy-read{width:100%;min-height:42px}.staff-policy-ack-status{white-space:normal}.staff-policy-detail{max-height:94vh}.staff-policy-detail .modal-head{padding-top:0}}
.staff-policy-ack-status.menunggu-kelulusan{border-color:#ead19a;background:#fff2d2;color:#8a5b08}.staff-policy-ack-status.diluluskan{border-color:#c7ddcb;background:#eaf5ec;color:#24643b}
/* PORTAL IRIS: organisation selection and the existing SRITI login entry. */
.iris-portal,.iris-sriti-login{min-height:100vh;padding:36px 22px;background:var(--cream)}.iris-portal{display:grid;place-items:center}.iris-portal-shell{width:min(1180px,100%);padding:34px;border:1px solid #e1e4da;border-radius:18px;background:#fff;box-shadow:0 15px 38px rgba(18,60,45,.08)}.iris-portal-hero{display:flex;align-items:center;gap:16px;padding-bottom:24px;border-bottom:1px solid var(--line)}.iris-portal-mark{display:grid;place-items:center;width:62px;height:62px;padding:7px;border:1px solid #d8e1d7;border-radius:50%;background:#f8faf7}.iris-portal-mark img{max-width:100%;max-height:100%;object-fit:contain}.iris-portal-hero h1{margin:0;color:var(--green);font-size:29px;letter-spacing:.02em}.iris-portal-hero .eyebrow{margin-bottom:4px}.iris-portal-subtitle{margin:4px 0 0;color:var(--muted);font-size:14px}.iris-welcome{padding:29px 0 23px}.iris-welcome h2{margin:0 0 7px;color:var(--green);font-size:20px}.iris-welcome p,.iris-portal-note{margin:0;color:var(--muted);line-height:1.5}.iris-institution-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.iris-institution{display:flex;flex-direction:column;min-width:0;padding:23px;border:1px solid #dde4db;border-radius:13px;background:#fff;box-shadow:0 3px 10px rgba(18,60,45,.035)}.iris-institution-active{border-color:#bed0c1;border-top:4px solid var(--green);box-shadow:0 9px 22px rgba(18,60,45,.09)}.iris-institution-logo{display:grid;place-items:center;height:104px;margin-bottom:19px}.iris-institution-logo img{display:block;max-width:128px;max-height:104px;object-fit:contain}.iris-institution-body{flex:1;min-width:0}.iris-institution-code{display:block;margin-bottom:6px;color:var(--gold);font-size:11px;font-weight:850;letter-spacing:.12em}.iris-institution h2{margin:0;color:var(--green);font-size:18px;line-height:1.35}.iris-institution p{min-height:66px;margin:9px 0 20px;color:var(--muted);font-size:13px;line-height:1.55}.iris-institution-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:14px;border-top:1px solid var(--line)}.iris-status{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}.iris-status-active{background:#e3f1e5;color:#176838}.iris-status-pending{background:#fff2d7;color:#8a6515}.iris-institution-footer button{padding:9px 12px;font-size:12px;white-space:nowrap}.iris-coming-soon{cursor:default;opacity:.78}.iris-portal-note{padding-top:22px;text-align:center;font-size:12px}.iris-sriti-login{display:grid;place-items:center}.iris-sriti-login .login-card{position:relative;width:min(430px,100%);padding:42px;background:#fff;border:1px solid #e0e5dc;border-radius:16px;box-shadow:0 16px 34px rgba(18,60,45,.08)}.iris-sriti-login .login-logo{display:grid;place-items:center;width:76px;height:76px;margin:10px auto 19px}.iris-sriti-login .login-logo img{max-width:100%;max-height:100%;object-fit:contain}.iris-sriti-login .login-card h1{color:var(--green)}.iris-sriti-login .login-card .muted{line-height:1.5}.iris-back-link{display:inline-flex;align-items:center;padding:2px 0;background:transparent;color:var(--green);font-size:12px;font-weight:800}.iris-back-link:hover{background:transparent;color:#8a6515}@media(max-width:900px){.iris-institution-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.iris-institution-active{order:-1}}@media(max-width:620px){.iris-portal,.iris-sriti-login{padding:18px 14px}.iris-portal-shell{padding:23px 18px;border-radius:14px}.iris-portal-hero{align-items:flex-start}.iris-portal-mark{width:52px;height:52px;flex:0 0 52px}.iris-portal-hero h1{font-size:24px}.iris-portal-subtitle{font-size:13px}.iris-welcome{padding:23px 0 18px}.iris-welcome h2{font-size:18px}.iris-institution-grid{grid-template-columns:1fr}.iris-institution{padding:20px}.iris-institution-logo{height:90px;margin-bottom:14px}.iris-institution-logo img{max-height:90px}.iris-institution p{min-height:0;margin-bottom:16px}.iris-sriti-login .login-card{padding:30px 24px}.iris-sriti-login .login-logo{width:68px;height:68px;margin-top:18px}}
/* Portal landing refinement: one ecosystem, three education stages. */
/* Scoped to the public landing: login, routes and portal modules stay unchanged. */
.iris-portal {
  --iris-stage-gap: 24px;
  --iris-forest: #10382b;
  --iris-ivory: #fffdf7;
  --iris-gold: #d0ad63;
  padding: 48px 32px 36px;
  align-items: start;
  background: var(--iris-forest);
}
.iris-portal .iris-portal-shell {
  width: min(1120px, 100%);
  margin: 0 auto;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.iris-portal .iris-portal-hero {
  display: block;
  margin: 0;
  padding: 0 16px 31px;
  border: 0;
  text-align: center;
}
.iris-portal .iris-portal-hero .eyebrow {
  margin: 0 0 12px;
  color: #d5bd85;
  font-size: 10px;
  font-weight: 750;
  letter-spacing: .2em;
}
.iris-portal .iris-portal-hero h1 {
  margin: 0;
  position: relative;
  display: inline-block;
  color: #fff8e8;
  background: linear-gradient(180deg, #fffdf5 0%, #fff5dd 52%, #e8cf96 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-size: clamp(40px, 4.4vw, 54px);
  font-weight: 800;
  line-height: 1.14;
  letter-spacing: .078em;
  text-shadow: 0 1px 0 rgba(255, 248, 227, .32),
    0 3px 2px rgba(3, 20, 13, .34),
    0 8px 16px rgba(3, 20, 13, .18);
}
.iris-portal .iris-portal-subtitle {
  margin: 10px 0 0;
  color: #c7d3c9;
  font-size: 15px;
  line-height: 1.5;
}
.iris-portal .iris-portal-statement {
  max-width: 600px;
  margin: 20px auto 0;
  color: #f0dfb5;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.6;
}
.iris-portal .iris-journey {
  position: relative;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  column-gap: var(--iris-stage-gap);
  align-items: start;
  margin: 0;
  padding: 0 0 28px;
}
.iris-portal .iris-journey-line {
  position: absolute;
  top: 38px;
  left: calc((100% - 2 * var(--iris-stage-gap)) / 6);
  right: calc((100% - 2 * var(--iris-stage-gap)) / 6);
  height: 1px;
  background: #9e8954;
}
.iris-portal .iris-journey-item {
  position: relative;
  display: grid;
  justify-items: center;
  gap: 6px;
  min-width: 0;
}
.iris-portal .iris-journey-item span {
  color: #d8ccab;
  font-size: 10px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .12em;
  text-align: center;
}
.iris-portal .iris-journey-item b {
  z-index: 1;
  padding: 5px 19px;
  border: 1px solid #dec18a;
  border-radius: 999px;
  background: #f3dfb4;
  color: #694d1b;
  font-size: 13px;
  font-weight: 700;
  line-height: 22px;
  letter-spacing: .07em;
}
.iris-portal .iris-journey-item::after {
  position: absolute;
  top: 55px;
  left: 50%;
  width: 1px;
  height: 28px;
  background: #9e8954;
  content: "";
}
.iris-portal .iris-journey-arrow {
  position: absolute;
  top: 28px;
  left: calc((100% - 2 * var(--iris-stage-gap)) / 3 + var(--iris-stage-gap) / 2);
  z-index: 1;
  display: grid;
  place-items: center;
  width: 26px;
  height: 20px;
  transform: translateX(-50%);
  background: var(--iris-forest);
  color: #c7ad74;
  font-size: 16px;
  line-height: 1;
}
.iris-portal .iris-journey-arrow:last-of-type {
  left: calc(2 * (100% - 2 * var(--iris-stage-gap)) / 3 + 1.5 * var(--iris-stage-gap));
}
.iris-portal .iris-institution-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--iris-stage-gap);
}
.iris-portal .iris-institution {
  position: relative;
  order: initial;
  padding: 26px 26px 22px;
  border: 1.25px solid var(--iris-gold);
  border-radius: 14px;
  background: var(--iris-ivory);
  box-shadow: 0 5px 16px rgba(3, 20, 12, .12);
  text-align: center;
}
.iris-portal .iris-institution-active {
  border-color: #dabc7a;
  box-shadow: 0 7px 20px rgba(3, 20, 12, .16);
}
.iris-portal .iris-institution-active::before {
  position: absolute;
  top: -1px;
  left: 30%;
  right: 30%;
  height: 4px;
  border-radius: 0 0 3px 3px;
  background: #c3a15c;
  content: "";
}
.iris-portal .iris-institution-level {
  display: none;
}
.iris-portal .iris-institution-logo {
  height: 104px;
  margin: 0 0 20px;
}
.iris-portal .iris-institution-logo img {
  width: auto;
  height: auto;
  max-width: 132px;
  max-height: 104px;
  object-fit: contain;
  border-radius: 50%;
}
.iris-portal .iris-institution-body {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.iris-portal .iris-institution h2 {
  max-width: 255px;
  min-height: 2.7em;
  margin: 0;
  color: var(--green);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.35;
  text-wrap: balance;
}
.iris-portal .iris-institution p {
  max-width: 280px;
  min-height: 3.3em;
  margin: 10px 0 0;
  color: #657268;
  font-size: 13px;
  font-weight: 400;
  line-height: 1.65;
  text-wrap: balance;
}
.iris-portal .iris-institution-footer {
  flex-direction: column;
  justify-content: flex-start;
  gap: 13px;
  min-height: 102px;
  margin-top: 22px;
  padding-top: 16px;
  border-top: 1px solid #e8e1d2;
}
.iris-portal .iris-status {
  flex: 0 0 auto;
  padding: 5px 10px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 9px;
  font-weight: 750;
  line-height: 1.4;
  letter-spacing: .08em;
  white-space: nowrap;
}
.iris-portal .iris-status-pending {
  border-color: #ebdfc3;
  background: #faf3e3;
  color: #7c6028;
}
.iris-portal .iris-status-active {
  border-color: #dbe6dc;
  background: #eef5ee;
  color: #28573c;
}
.iris-portal .iris-institution-footer button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  width: min(100%, 240px);
  min-height: 44px;
  padding: 10px 16px;
  border: 1px solid var(--green);
  border-radius: 8px;
  background: var(--green);
  color: #fff;
  font-size: 12px;
  font-weight: 650;
  line-height: 1.5;
  white-space: normal;
}
.iris-portal .iris-institution-footer button:hover {
  border-color: var(--green2);
  background: var(--green2);
}
.iris-portal .iris-institution-footer button:focus-visible {
  outline: 2px solid #9a7524;
  outline-offset: 4px;
}
.iris-portal .iris-institution-footer button span {
  font-size: 17px;
  line-height: 1;
}
.iris-portal .iris-portal-note {
  display: none;
}
@media (max-width: 1000px) {
  .iris-portal {
    --iris-stage-gap: 18px;
    padding: 38px 24px 36px;
  }
  .iris-portal .iris-institution {
    padding: 24px 18px 20px;
  }
  .iris-portal .iris-institution h2 {
    font-size: 18px;
  }
  .iris-portal .iris-institution-logo {
    height: 96px;
  }
  .iris-portal .iris-institution-logo img {
    max-height: 96px;
  }
}
@media (max-width: 700px) {
  .iris-portal {
    padding: 32px 20px;
  }
  .iris-portal .iris-portal-shell {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    max-width: 470px;
  }
  .iris-portal .iris-portal-hero {
    grid-row: 1;
    padding: 0 0 24px;
  }
  .iris-portal .iris-portal-hero h1 {
    font-size: 40px;
    letter-spacing: .045em;
  }
  .iris-portal .iris-portal-subtitle {
    max-width: 300px;
    margin: 9px auto 0;
    font-size: 13px;
  }
  .iris-portal .iris-portal-statement {
    margin-top: 18px;
    font-size: 15px;
  }
  /* Reuse the existing journey above each card, without duplicate card labels. */
  .iris-portal .iris-journey,
  .iris-portal .iris-institution-grid {
    display: contents;
  }
  .iris-portal .iris-journey-line {
    display: none;
  }
  .iris-portal .iris-journey-item {
    grid-column: 1;
    margin-bottom: 22px;
  }
  .iris-portal .iris-journey-item::after {
    height: 22px;
  }
  .iris-portal .iris-journey-item:nth-child(2) {
    grid-row: 2;
  }
  .iris-portal .iris-journey-item:nth-child(4) {
    grid-row: 5;
  }
  .iris-portal .iris-journey-item:nth-child(6) {
    grid-row: 8;
  }
  .iris-portal .iris-journey-arrow,
  .iris-portal .iris-journey-arrow:last-of-type {
    position: static;
    grid-column: 1;
    justify-self: center;
    margin: 12px 0;
    transform: rotate(90deg);
  }
  .iris-portal .iris-journey-arrow:nth-child(3) {
    grid-row: 4;
  }
  .iris-portal .iris-journey-arrow:nth-child(5) {
    grid-row: 7;
  }
  .iris-portal .iris-institution {
    grid-column: 1;
    padding: 22px 24px;
  }
  .iris-portal .iris-institution:nth-child(1) {
    grid-row: 3;
  }
  .iris-portal .iris-institution:nth-child(2) {
    grid-row: 6;
  }
  .iris-portal .iris-institution:nth-child(3) {
    grid-row: 9;
  }
  .iris-portal .iris-institution-logo {
    height: 88px;
    margin-bottom: 16px;
  }
  .iris-portal .iris-institution-logo img {
    max-height: 88px;
  }
  .iris-portal .iris-institution h2 {
    font-size: 20px;
    min-height: 0;
  }
  .iris-portal .iris-institution p {
    min-height: 0;
  }
  .iris-portal .iris-institution-footer {
    min-height: 0;
    margin-top: 18px;
    padding-top: 16px;
  }
}
@media (max-width: 360px) {
  .iris-portal {
    padding-right: 16px;
    padding-left: 16px;
  }
  .iris-portal .iris-portal-hero h1 {
    font-size: 34px;
  }
  .iris-portal .iris-institution {
    padding-right: 18px;
    padding-left: 18px;
  }
}
/* System users change their own password through a session-scoped form. */
.system-password-screen .login-card{max-width:460px;text-align:left}.system-password-screen .login-card>h1{margin-bottom:8px}.system-password-screen .login-card>.muted{margin-bottom:20px;line-height:1.55}.system-password-screen-form,.system-password-form{display:grid;gap:14px;text-align:left}.system-password-screen-form label,.system-password-form label{display:grid;gap:6px;color:var(--ink);font-weight:700}.system-password-screen-form small,.system-password-form small{color:var(--muted);font-size:.76rem;font-weight:400}.system-password-screen-form .actions,.system-password-form .actions{margin-top:2px}.system-password-screen .hint{margin:17px 0 0;text-align:left;line-height:1.45}.system-password-modal{width:min(460px,100%)}.system-password-modal .hint{margin:0 0 17px;line-height:1.5}.system-password-form .actions{justify-content:flex-end}.system-password-screen .success{margin:0;color:#24643b;font-size:.86rem;font-weight:700}
/* Portal Staf — Slip Gaji Saya. The payroll data and pay-slip itself stay unchanged. */
.staff-payslip-page{display:grid;gap:18px}.staff-payslip-toolbar{margin:0}.staff-payslip-toolbar h2{margin:3px 0 5px;color:var(--green)}.staff-payslip-toolbar p{margin:0;color:var(--muted)}.staff-payslip-empty{margin:0;padding:0;border-color:#e1e5dc;background:#fff}.staff-payslip-empty>div{position:relative;padding:25px 26px 25px 31px}.staff-payslip-empty-accent{position:absolute;top:24px;bottom:24px;left:0;width:4px;border-radius:0 4px 4px 0;background:var(--gold)}.staff-payslip-empty b{display:block;color:var(--green);font-size:1rem}.staff-payslip-empty p{max-width:560px;margin:7px 0 0;color:var(--muted);font-size:.88rem;line-height:1.5}.staff-payslip-latest{margin:0;padding:22px 24px;border:1px solid #cddbd0;border-left:4px solid var(--green);border-radius:12px;background:#fff;box-shadow:0 4px 12px rgba(15,69,51,.035)}.staff-payslip-latest-head{display:flex;justify-content:space-between;gap:18px;padding-bottom:16px;border-bottom:1px solid var(--line)}.staff-payslip-latest-head h3{margin:4px 0 5px;color:var(--green);font-size:1.2rem}.staff-payslip-latest-head p{margin:0;color:var(--ink);font-size:.9rem;font-weight:700}.staff-payslip-latest-head small{display:block;margin-top:4px;color:var(--muted);font-size:.78rem;font-weight:750;letter-spacing:.04em}.staff-payslip-latest-head>.status{height:max-content;margin-top:3px;white-space:nowrap}.staff-payslip-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:17px 0}.staff-payslip-summary div{padding:14px 15px;border-color:#e0e7e0;border-radius:9px;background:#fafcf9}.staff-payslip-summary span{font-size:.74rem;font-weight:750}.staff-payslip-summary strong{font-size:1rem;font-variant-numeric:tabular-nums}.staff-payslip-actions{display:flex;flex-wrap:wrap;gap:9px;align-items:center}.staff-payslip-actions button{margin:0;white-space:nowrap}.staff-payslip-history-heading{display:flex;justify-content:space-between;align-items:end;margin:4px 0 -4px}.staff-payslip-history-heading h3{margin:0 0 4px;color:var(--green);font-size:1.04rem}.staff-payslip-history-heading p{margin:0;color:var(--muted);font-size:.86rem}.staff-payslip-history{margin:0;padding:0;overflow:hidden;border-color:#dfe6df}.staff-payslip-history table{min-width:710px}.staff-payslip-history th{padding:13px 18px;background:#f8faf7;color:#4c5e55;border-bottom:1px solid var(--line);font-size:.72rem;letter-spacing:.05em}.staff-payslip-history td{padding:15px 18px;vertical-align:middle;border-bottom:1px solid #edf0ec;font-size:.86rem;font-variant-numeric:tabular-nums}.staff-payslip-history tbody tr:last-child td{border-bottom:0}.staff-payslip-history tbody tr:hover{background:#fcfdfb}.staff-payslip-period b{display:block;color:var(--green);font-variant-numeric:normal}.staff-payslip-period .status{display:inline-flex;margin-top:6px;white-space:nowrap}.staff-payslip-history td:last-child{text-align:right}.staff-payslip-history td:last-child .staff-payslip-actions{justify-content:flex-end}@media(max-width:700px){.staff-payslip-latest{padding:18px}.staff-payslip-latest-head{align-items:flex-start;flex-direction:column;gap:10px}.staff-payslip-latest-head>.status{margin-top:0}.staff-payslip-summary{grid-template-columns:1fr}.staff-payslip-actions{width:100%}.staff-payslip-actions button{flex:1;min-height:40px}.staff-payslip-history-heading{align-items:flex-start;flex-direction:column;gap:3px}.staff-payslip-history th,.staff-payslip-history td{padding-left:14px;padding-right:14px}}@media(max-width:460px){.staff-payslip-actions{display:grid;grid-template-columns:1fr}.staff-payslip-empty>div{padding:21px 20px 21px 26px}}
/* Portal Staf Kehadiran Saya: reuses existing attendance responses and actions. */
.staff-attendance-page{display:grid;gap:18px}.staff-attendance-toolbar{margin:0}.staff-attendance-toolbar h2{margin:3px 0 5px}.staff-attendance-toolbar p{margin:0;color:var(--muted)}.staff-attendance-filter{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:0;padding:15px 18px;border-color:#dfe6df}.staff-attendance-filter h3{margin:4px 0 0;color:var(--green);font-size:1.04rem}.staff-attendance-filter-controls{display:flex;align-items:end;gap:9px}.staff-attendance-filter-controls label{display:grid;gap:5px;margin:0;color:var(--muted);font-size:.73rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.staff-attendance-filter-controls select,.staff-attendance-filter-controls input{height:38px;min-width:122px;margin:0;background:#fff}.staff-attendance-filter-controls input{min-width:86px;width:92px}.staff-attendance-filter-controls button{height:38px;margin:0;white-space:nowrap}.staff-attendance-today{padding:20px 22px;border:1px solid #cad8ce;border-left:4px solid var(--green);border-radius:12px;background:#fff;box-shadow:0 4px 12px rgba(15,69,51,.04)}.staff-attendance-today-head{display:flex;align-items:start;justify-content:space-between;gap:16px;padding-bottom:15px;border-bottom:1px solid var(--line)}.staff-attendance-today-head h3{margin:4px 0;color:var(--green);font-size:1.12rem}.staff-attendance-today-head p{margin:0;color:var(--muted);font-size:.86rem}.staff-attendance-today-head>.status{margin-top:4px;white-space:nowrap}.staff-attendance-today-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding-top:16px}.staff-attendance-today-grid div{min-width:0}.staff-attendance-today-grid span,.staff-attendance-today-grid b{display:block}.staff-attendance-today-grid span{margin-bottom:5px;color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.staff-attendance-today-grid b{color:var(--ink);font-size:.94rem;line-height:1.4;overflow-wrap:anywhere}.staff-attendance-today-source{margin-top:15px;padding-top:11px;border-top:1px solid var(--line);color:var(--muted);font-size:.76rem}.staff-attendance-summary-section{margin:0}.staff-attendance-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0}.staff-attendance-summary article{min-height:112px;padding:16px 17px;border:1px solid #e0e6df;border-radius:11px;background:#fff;box-shadow:0 2px 7px rgba(15,69,51,.03);display:flex;flex-direction:column;gap:7px}.staff-attendance-summary article span{color:var(--muted);font-size:.78rem;font-weight:750}.staff-attendance-summary article strong{color:var(--green);font-size:1.55rem;line-height:1.1}.staff-attendance-summary article em{color:#758078;font-size:.74rem;font-style:normal;line-height:1.35}.staff-attendance-summary .staff-attendance-working-hours{grid-column:span 2}.staff-attendance-history{margin:0;padding:0;overflow:hidden}.staff-attendance-history .compact-heading{padding:17px 20px 13px}.staff-attendance-history .compact-heading h3{color:var(--green);font-size:1.04rem}.staff-attendance-history table{min-width:760px}.staff-attendance-history th{padding:13px 16px;background:#f8faf7;color:#4c5e55;border-bottom:1px solid var(--line);font-size:.71rem;letter-spacing:.05em}.staff-attendance-history td{padding:14px 16px;vertical-align:middle;border-bottom:1px solid #edf0ec;font-size:.86rem}.staff-attendance-history tbody tr:last-child td{border-bottom:0}.staff-attendance-history tbody tr:hover{background:#fcfdfb}.staff-attendance-history .status{white-space:nowrap}.staff-attendance-note{color:var(--muted);font-size:.8rem;line-height:1.35}.staff-attendance-history .text-btn{padding:5px 0;font-size:.8rem}@media(max-width:850px){.staff-attendance-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.staff-attendance-today-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.staff-attendance-filter{align-items:stretch;flex-direction:column}.staff-attendance-filter-controls{width:100%;align-items:end}.staff-attendance-filter-controls label{flex:1}.staff-attendance-filter-controls select,.staff-attendance-filter-controls input{width:100%;min-width:0}.staff-attendance-today{padding:18px}.staff-attendance-today-head{align-items:start;flex-direction:column;gap:9px}.staff-attendance-today-head>.status{margin-top:0}.staff-attendance-history .compact-heading{align-items:start;flex-direction:column;gap:5px}}@media(max-width:480px){.staff-attendance-filter-controls{display:grid;grid-template-columns:1fr 1fr}.staff-attendance-filter-controls button{grid-column:1/-1;width:100%}.staff-attendance-summary,.staff-attendance-today-grid{grid-template-columns:1fr}.staff-attendance-summary .staff-attendance-working-hours{grid-column:auto}.staff-attendance-summary article{min-height:0}.staff-attendance-history table{min-width:730px}}
.staff-profile-toolbar{margin-bottom:16px}.staff-profile-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:18px;align-items:center;padding:21px 23px;border:1px solid #d7e0d7;border-left:4px solid var(--green);border-radius:12px;background:#fff;box-shadow:0 3px 10px #123c2d0a}.staff-profile-avatar{width:68px;height:68px;border:2px solid #d7ad4d;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:#edf3ee;color:var(--green);font-size:21px;font-weight:850;flex:0 0 68px}.staff-profile-avatar img{display:block;width:100%;height:100%;object-fit:cover}.staff-profile-identity{min-width:0}.staff-profile-identity h3{margin:0;color:var(--green);font-size:19px;line-height:1.3;overflow-wrap:anywhere}.staff-profile-identity p{margin:5px 0 3px;color:var(--muted)}.staff-profile-identity small{font-size:12px;font-weight:800;color:var(--green);letter-spacing:.035em}.staff-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px}.staff-profile-section{padding:19px 20px}.staff-profile-section h3{margin:0 0 15px;color:var(--green);font-size:12px;font-weight:850;letter-spacing:.09em;text-transform:uppercase}.staff-profile-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px}.staff-profile-field{min-width:0}.staff-profile-field>span:first-child{display:block;margin-bottom:5px;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.065em;text-transform:uppercase}.staff-profile-field>b{display:block;color:var(--ink);font-size:13px;font-weight:700;line-height:1.45;overflow-wrap:anywhere}.staff-profile-field .status{vertical-align:top}.staff-profile-subheading{grid-column:1/-1;margin:2px 0 -2px;padding-top:14px;border-top:1px solid var(--line);color:var(--green);font-size:11px;font-weight:850;letter-spacing:.07em;text-transform:uppercase}.staff-profile-employment{margin-top:16px}.staff-profile-employment .staff-profile-fields{grid-template-columns:repeat(3,minmax(0,1fr))}@media(max-width:760px){.staff-profile-grid{grid-template-columns:1fr}.staff-profile-employment .staff-profile-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.staff-profile-hero{grid-template-columns:auto minmax(0,1fr);padding:18px}.staff-profile-hero>.status{grid-column:1/-1;justify-self:start}.staff-profile-fields,.staff-profile-employment .staff-profile-fields{grid-template-columns:1fr}.staff-profile-section{padding:17px}.staff-profile-subheading{margin-top:2px}}
.staff-readonly-chip{display:inline-flex;align-items:center;margin-left:8px;padding:3px 7px;border:1px solid #e7d3a4;border-radius:999px;background:#fff9e9;color:#89671d;font-size:10px;font-weight:800;white-space:nowrap}.staff-shell nav .nav-badge{display:inline-grid;place-items:center;min-width:19px;height:19px;margin-left:auto;padding:0 5px;border-radius:999px;background:#d7ad4d;color:#173d2e;font-size:10px;font-style:normal;font-weight:850}.staff-dashboard-polished{display:grid;gap:18px}.staff-dashboard-polished .staff-dashboard-intro{margin:0;align-items:flex-end}.staff-dashboard-intro h2{margin-bottom:6px;font-size:24px;color:var(--green)}.staff-dashboard-intro p{margin-bottom:0}.staff-dashboard-section{margin:0}.staff-section-heading{display:flex;justify-content:space-between;align-items:end;margin:0 0 10px}.staff-section-heading h3{margin:0;color:var(--green);font-size:16px}.staff-section-heading p:not(.eyebrow){margin:4px 0 0;color:var(--muted);font-size:13px}.staff-leave-summary .cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin:0}.staff-leave-summary .cards article{min-height:126px;padding:16px 17px;border-color:#e1e6de;box-shadow:0 2px 7px #123c2d08}.staff-leave-summary .cards strong{margin:8px 0 4px;font-size:28px}.staff-leave-summary .cards em{font-size:12px;line-height:1.35}.staff-dashboard-attendance{padding:20px 22px;border:1px solid #ccd9d0;border-left:4px solid var(--green);border-radius:12px;background:#fff;box-shadow:0 4px 12px #123c2d0a}.staff-attendance-dashboard-main{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-bottom:15px;border-bottom:1px solid var(--line)}.staff-attendance-dashboard-main h3{margin:0;color:var(--green);font-size:18px}.staff-attendance-dashboard-main p:not(.eyebrow){margin:4px 0 0;color:var(--muted);font-size:13px}.staff-attendance-dashboard-action button{white-space:nowrap}.staff-attendance-dashboard-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;padding-top:15px}.staff-attendance-dashboard-grid div{min-width:0}.staff-attendance-dashboard-grid span,.staff-attendance-dashboard-grid b{display:block}.staff-attendance-dashboard-grid span{margin-bottom:5px;color:var(--muted);font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.045em}.staff-attendance-dashboard-grid b{color:var(--ink);font-size:14px}.staff-erph-dashboard{padding:18px 20px;border-color:#d9e1d9}.staff-erph-dashboard .compact-heading{align-items:flex-start}.staff-erph-dashboard .compact-heading h3{font-size:16px}.staff-erph-state .status{vertical-align:middle}.staff-erph-alert{margin:14px 0 0;padding:10px 12px;border-radius:7px;background:#fff7e6;color:#7b5a12;font-size:13px;line-height:1.45}.staff-erph-alert.hint{background:#f1f6f3;color:var(--green)}.staff-dashboard-communications{margin:0;gap:18px}.staff-dashboard-communications .panel{padding:18px 20px;border-color:#e0e5de;box-shadow:0 2px 7px #123c2d08}.staff-dashboard-communications .compact-heading h3{font-size:16px}.staff-dashboard-communications .text-btn{font-weight:800}.staff-policy-dashboard-section{padding:18px 20px;border:1px solid #e0e5de;border-radius:11px;background:#fff;box-shadow:0 2px 7px #123c2d08}.staff-policy-dashboard-section h3{color:var(--green)}.staff-shell .profile{min-width:0;padding-bottom:8px}.staff-shell .profile>b{display:block;line-height:1.35;overflow-wrap:anywhere}.staff-shell .profile>small{margin-top:5px;color:#bfd0c5;font-size:11px;line-height:1.4;overflow-wrap:anywhere}.staff-shell .profile .text-btn{margin-top:12px}@media(max-width:900px){.staff-leave-summary .cards,.staff-attendance-dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.staff-dashboard-polished{gap:15px}.staff-dashboard-polished .staff-dashboard-intro{align-items:start}.staff-attendance-dashboard-main{align-items:start;flex-direction:column}.staff-attendance-dashboard-action,.staff-attendance-dashboard-action button{width:100%}.staff-leave-summary .cards,.staff-attendance-dashboard-grid{grid-template-columns:1fr}.staff-leave-summary .cards article{min-height:0}.staff-section-heading{align-items:start}.staff-readonly-chip{margin:6px 0 0}.user-chip{display:flex;flex-direction:column;align-items:flex-start}}

/* Portal Staf: the shell header is the single page title. */
.staff-attendance-toolbar .staff-page-eyebrow,.staff-attendance-toolbar h2,.staff-policy-header .staff-page-eyebrow,.staff-policy-header h2,#view .toolbar:has(#erph-prev) h2{display:none}.staff-profile-toolbar p,.staff-leave-toolbar p,.staff-payslip-toolbar p,.staff-attendance-toolbar p,.staff-policy-header p,#view .toolbar:has(#erph-prev) p{margin:0}
