:root{font-family:Segoe UI,system-ui,sans-serif;line-height:1.5;color:#0f172a;background:#f1f5f9}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:#0f172a;color:#e2e8f0;display:flex;flex-direction:column;padding:1.25rem;gap:1rem}.brand strong{display:block;font-size:1.1rem}.brand span{font-size:.8rem;color:#94a3b8}.brand-edition{display:block;margin-top:.35rem;font-size:.7rem!important;color:#64748b!important;line-height:1.3}.nav-section-label{margin-top:.65rem;margin-bottom:.15rem;padding:0 .65rem;font-size:.65rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#64748b}.nav-section-label:first-child{margin-top:0}.sidebar nav{display:flex;flex-direction:column;gap:.35rem;flex:1}.sidebar nav a{padding:.5rem .65rem;border-radius:6px;font-size:.9rem}.sidebar nav a:hover,.sidebar nav a.active{background:#1e293b}.sidebar-footer{display:flex;flex-direction:column;gap:.5rem;font-size:.8rem}.sidebar-footer button{background:#334155;color:#fff;border:none;padding:.45rem;border-radius:6px;cursor:pointer}.main{padding:1.5rem 2rem}.page-header h1{margin:0 0 .25rem}.page-header{margin-bottom:1rem}.page-header-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}.page-header .page-hint{margin:.35rem 0 0}.page-header-row h1{margin:0}.toolbar-actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.page-hint{margin:0 0 1rem;font-size:.85rem;color:#64748b}.field-hint{margin:.25rem 0 0;font-size:.8rem;color:#b91c1c}.row-actions{display:flex;gap:.35rem}.row-actions button{font-size:.8rem;padding:.2rem .45rem}button.ghost{background:#e2e8f0;color:#0f172a}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:grid;place-items:center;z-index:100;padding:1rem}.modal-panel{background:#fff;border-radius:12px;width:min(480px,100%);max-height:90vh;overflow:auto;box-shadow:0 25px 50px #0003}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid #e2e8f0}.modal-header h2{margin:0;font-size:1.1rem}.form-grid{padding:1.25rem;display:flex;flex-direction:column;gap:.75rem}.form-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.5rem}.section-title{margin:1.5rem 0 .5rem;font-size:1.05rem}.toolbar-checkbox{display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem;margin-right:.75rem}.permission-matrix{padding:1.25rem;max-height:70vh;overflow-y:auto}.permission-module{border:1px solid #e2e8f0;border-radius:8px;margin-bottom:.75rem;padding:.75rem 1rem}.permission-module legend{font-weight:600;padding:0 .25rem}.permission-module-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer}.permission-list{display:flex;flex-direction:column;gap:.35rem;margin-top:.5rem}.permission-item{display:flex;align-items:flex-start;gap:.5rem;font-size:.9rem}.permission-item code{font-size:.8rem}select{padding:.55rem .65rem;border:1px solid #cbd5e1;border-radius:6px;font:inherit;background:#fff}.muted{color:#64748b}.mono{font-family:ui-monospace,monospace}.login-sso-section{margin-top:1rem;display:flex;flex-direction:column;gap:.5rem}.login-sso-section .secondary-button{width:100%;background:var(--surface-muted, #f3f4f6);color:inherit;border:1px solid var(--border, #d1d5db)}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#0f172a,#1d4ed8)}.login-card{background:#fff;padding:2rem;border-radius:12px;width:min(400px,92vw);display:flex;flex-direction:column;gap:.75rem;box-shadow:0 20px 50px #0003}.login-card h1{margin:0}label{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:600}input{padding:.55rem .65rem;border:1px solid #cbd5e1;border-radius:6px;font:inherit}button{padding:.6rem 1rem;border:none;border-radius:6px;background:#2563eb;color:#fff;font-weight:600;cursor:pointer}button:disabled{opacity:.6;cursor:not-allowed}button.danger{background:#dc2626}.btn-row{display:flex;gap:.35rem}.error-banner{background:#fef2f2;color:#b91c1c;padding:.6rem .75rem;border-radius:6px;font-size:.9rem}.success-banner{background:#ecfdf5;color:#047857;padding:.6rem .75rem;border-radius:6px;font-size:.9rem}.login-footer-link{margin:0;text-align:center}.login-footer-link a{color:#2563eb;text-decoration:none}.login-footer-link a:hover{text-decoration:underline}.login-legal-links{margin:.75rem 0 0;text-align:center;font-size:.85rem}.login-legal-links a{color:#2563eb;text-decoration:none}.login-legal-links a:hover{text-decoration:underline}.login-lockout-hint,.password-policy-hint{margin:.5rem 0 0;font-size:.8rem;line-height:1.4}.info-page{min-height:100vh;background:#f1f5f9;padding:1.5rem 1rem 2rem}.info-page__header{max-width:720px;margin:0 auto 1rem}.info-page__brand{color:#2563eb;font-size:.9rem;text-decoration:none}.info-page__header h1{margin:.5rem 0 0}.info-page__body{max-width:720px;margin:0 auto;background:#fff;padding:1.5rem 1.25rem;border-radius:10px;box-shadow:0 1px 3px #00000014;line-height:1.6}.info-page__body h2{margin:1.25rem 0 .5rem;font-size:1.05rem}.info-page__body ul,.info-page__body ol{padding-left:1.25rem}.info-page__footer{max-width:720px;margin:1rem auto 0;text-align:center;font-size:.85rem;color:#64748b}.info-page__footer a{color:#2563eb}.sidebar-footer-link{color:#94a3b8;font-size:.85rem;text-decoration:none}.sidebar-footer-link:hover{color:#e2e8f0}.status-overall{margin:0 0 1rem;display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.status-table{width:100%;border-collapse:collapse;font-size:.95rem}.status-table th,.status-table td{text-align:left;padding:.5rem .35rem;border-bottom:1px solid #e2e8f0}.status-pill{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.8rem;font-weight:600}.status-pill--operational{background:#dcfce7;color:#166534}.status-pill--degraded{background:#fef9c3;color:#854d0e}.status-pill--major_outage{background:#fee2e2;color:#991b1b}.status-pill--unknown{background:#f1f5f9;color:#475569}.usage-section-title{margin:1.5rem 0 .75rem;font-size:1.05rem}.usage-summary-card h2{margin:0 0 .5rem}.usage-metric-card h3{margin:0 0 .35rem;font-size:.9rem;font-weight:600;color:#64748b}.usage-footer-links{margin-top:1.5rem}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;margin-top:1.5rem}.card{background:#fff;padding:1rem 1.25rem;border-radius:10px;box-shadow:0 1px 3px #00000014}.card h2{margin:0 0 .35rem;font-size:1rem}.card-link{text-decoration:none;color:inherit;transition:box-shadow .15s}.card-link:hover{box-shadow:0 4px 12px #0000001a}.stat-value{font-size:1.75rem;font-weight:700;margin:0;color:#0f172a}.data-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:.5rem}.data-table{width:100%;min-width:520px;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 3px #00000014}.data-table--skeleton th,.data-table--skeleton td{border-bottom-color:#f1f5f9}.skeleton-line{display:block;height:.85rem;border-radius:4px;background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:skeleton-shimmer 1.2s ease-in-out infinite}.skeleton-line--short{width:60%}.detail-skeleton{background:#fff;border-radius:10px;padding:1rem 1.25rem;box-shadow:0 1px 3px #00000014;display:grid;gap:.65rem}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state{background:#fff;border-radius:10px;padding:2rem 1.25rem;text-align:center;box-shadow:0 1px 3px #00000014}.empty-state__message{margin:0;color:#64748b;font-size:.95rem}.empty-state__actions{margin-top:1rem}.data-table th,.data-table td{padding:.65rem .85rem;text-align:left;border-bottom:1px solid #e2e8f0;font-size:.9rem}.data-table th{background:#f8fafc;font-weight:600}.data-table.compact th,.data-table.compact td{padding:.4rem .55rem;font-size:.85rem}.import-result-summary{margin:0 0 1rem}.import-result-errors ul{margin:.5rem 0 0;padding-left:1.25rem}.import-result-table-wrap{max-height:14rem;overflow:auto;margin:1rem 0}.form-actions-inline{margin-bottom:.5rem}.filter-bar{display:flex;flex-wrap:wrap;gap:.75rem 1rem;align-items:flex-end;margin:0 0 1rem;padding:.85rem 1rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px}.filter-bar label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:#475569}.filter-bar input[type=date],.filter-bar input[type=text]{min-width:10rem}.filter-bar-actions{display:flex;gap:.5rem;align-items:center}.line-items-section{grid-column:1 / -1;border:1px solid #e2e8f0;border-radius:10px;padding:.85rem 1rem;background:#f8fafc}.line-items-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.line-item-row{display:grid;grid-template-columns:2fr .7fr .9fr auto auto;gap:.5rem;align-items:end;margin-bottom:.5rem}.line-item-subtotal{margin:0 0 .35rem;min-width:4rem;text-align:right}.line-items-total{margin:.75rem 0 0;text-align:right}.inline-year-select{display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:600}.holiday-month-section{margin-bottom:1.5rem}.holiday-month-title{font-size:1rem;color:#0f3460;margin:0 0 .5rem}.profile-card{margin-bottom:1.25rem}.profile-card h2{margin:0 0 .25rem}.my-leave-section{margin-bottom:1.5rem}.my-leave-section h3{margin:0 0 .75rem;font-size:1rem;color:#0f3460}.holiday-list-compact{list-style:none;margin:0;padding:0;display:grid;gap:.35rem}.holiday-list-compact li{display:flex;align-items:center;gap:.75rem;font-size:.9rem}.holiday-list-compact .holiday-date{font-variant-numeric:tabular-nums;color:#64748b;min-width:6.5rem}.report-summary{margin:0 0 1rem;font-size:.9rem}.pipeline-summary{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1.25rem}.pipeline-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .65rem;border:1px solid #cbd5e1;border-radius:999px;background:#fff;font-size:.85rem;cursor:pointer}.pipeline-chip.active{border-color:#0f3460;background:#eff6ff}.pipeline-chip-count{font-weight:700;font-variant-numeric:tabular-nums}.pipeline-total{margin-left:.25rem;font-size:.85rem}.checkbox-label{display:flex;align-items:center;gap:.5rem;font-weight:500}.table-actions{display:flex;flex-wrap:wrap;gap:.35rem}.detail-dl{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1.25rem;margin:0 0 1rem;font-size:.9rem}.detail-dl dt{font-weight:600;color:#64748b}.detail-dl dd{margin:0}.payslip-card{max-width:720px;margin:0 auto;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:1.5rem 1.75rem;box-shadow:0 2px 8px #0f172a0f}.payslip-card__header h2{margin:0 0 .25rem;color:#0f3460}.payslip-meta{display:grid;grid-template-columns:1fr 1fr;gap:.75rem 2rem;margin:1rem 0 1.5rem;font-size:.9rem}.payslip-meta dt{font-weight:600;color:#64748b;margin:0}.payslip-meta dd{margin:.15rem 0 0}.payslip-table{width:100%;border-collapse:collapse;margin:.5rem 0 1rem;font-size:.9rem}.payslip-table th,.payslip-table td{padding:.45rem .65rem;border-bottom:1px solid #e8ecf1;text-align:left}.payslip-table th.num,.payslip-table td.num{text-align:right}.payslip-table th{background:#f1f5f9}.payslip-totals{margin-top:1.25rem;padding-top:1rem;border-top:2px solid #0f3460;text-align:right;display:flex;flex-direction:column;gap:.35rem}.payslip-totals__net{font-size:1.2rem;font-weight:700;color:#0f3460}.payslip-footer{margin-top:1.5rem;text-align:center;font-size:.75rem}@media print{.sidebar,.nav-toggle,.no-print,.page-header{display:none!important}.main{padding:0!important}.payslip-card{box-shadow:none;border:none;max-width:100%}}.po-detail .data-table-wrap{margin-top:.75rem}.auth-loading{min-height:100vh;display:grid;place-items:center;color:#64748b}.row-link{color:#2563eb;font-weight:500}.row-link:hover{text-decoration:underline}.btn-link{color:#2563eb;font-size:.9rem}.detail-card{background:#fff;border-radius:10px;padding:1rem 1.25rem;margin-bottom:1.25rem;box-shadow:0 1px 3px #00000014}.detail-card p{margin:.35rem 0}.section-title{font-size:1rem;margin:0 0 .75rem}.pagination-bar{display:flex;align-items:center;gap:1rem;margin:.75rem 0}.pagination-info{margin:.5rem 0}.toast-stack{position:fixed;bottom:1.25rem;right:1.25rem;display:flex;flex-direction:column;gap:.5rem;z-index:200;max-width:360px}.toast{padding:.75rem 1rem;border-radius:8px;box-shadow:0 4px 12px #00000026;font-size:.9rem;color:#fff}.toast-success{background:#15803d}.toast-error{background:#b91c1c}.toast-info{background:#1e40af}.nav-badge,.badge{display:inline-block;margin-left:.35rem;background:#dc2626;color:#fff;font-size:.7rem;padding:.1rem .4rem;border-radius:999px;min-width:1.1rem;text-align:center}.email-delivery-card,.notification-prefs-card{margin-bottom:1.5rem}.notification-prefs-card h2{margin:0 0 .5rem;font-size:1.1rem}.checkbox-row{display:flex;align-items:center;gap:.5rem;margin:.5rem 0;font-size:.95rem}.email-delivery-card h2{margin:0 0 .75rem;font-size:1.1rem}.email-status-list{margin:.75rem 0 1rem;padding-left:1.25rem;color:#475569;font-size:.9rem}.email-test-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin-top:.5rem}.email-test-form label{display:flex;flex-direction:column;gap:.35rem;flex:1 1 220px;font-size:.9rem}.email-test-form input{padding:.5rem .65rem;border:1px solid #cbd5e1;border-radius:6px}.status-pill{display:inline-block;padding:.25rem .65rem;border-radius:999px;font-size:.85rem;font-weight:600}.status-pill--ok{background:#dcfce7;color:#166534}.status-pill--warn{background:#fef3c7;color:#92400e}.status-pill--muted{background:#f1f5f9;color:#64748b}.nav-toggle{display:none;position:fixed;top:.75rem;left:.75rem;z-index:110;background:#0f172a;color:#fff;border:none;border-radius:6px;padding:.45rem .65rem;font-size:1.1rem;cursor:pointer;line-height:1}.nav-backdrop{display:none}@media (max-width: 768px){.nav-toggle{display:block}.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:min(260px,85vw);z-index:105;transform:translate(-100%);transition:transform .2s ease;box-shadow:none}.app-shell.nav-open .sidebar{transform:translate(0);box-shadow:4px 0 24px #0003}.nav-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:104;background:#0f172a73;border:none;padding:0;cursor:pointer}.main{padding:3.25rem 1rem 1.25rem}.page-header-row{flex-direction:column;align-items:stretch}.toolbar-actions{justify-content:stretch}.toolbar-actions>button,.toolbar-actions>.btn-link{flex:1 1 auto;text-align:center}.btn-row{flex-wrap:wrap}.pagination-bar{flex-wrap:wrap;gap:.5rem}}
