@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/montserrat-latin-400-normal-BLhwKU8k.woff2) format("woff2"),url(/assets/montserrat-latin-400-normal-xItZbAXg.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/montserrat-latin-ext-400-normal-B8bwfy6Y.woff2) format("woff2"),url(/assets/montserrat-latin-ext-400-normal-BffdBkAA.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/montserrat-latin-600-normal-UVxSCcoG.woff2) format("woff2"),url(/assets/montserrat-latin-600-normal-CdhFl4lI.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/montserrat-latin-ext-600-normal-DSkTqI9L.woff2) format("woff2"),url(/assets/montserrat-latin-ext-600-normal-CSDhkhgS.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/montserrat-latin-700-normal-BdjcYUrC.woff2) format("woff2"),url(/assets/montserrat-latin-700-normal-BWkrl476.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/montserrat-latin-ext-700-normal-BOP2Nhf0.woff2) format("woff2"),url(/assets/montserrat-latin-ext-700-normal-DdDFr05Z.woff) format("woff")}:root{font-family:Montserrat,ui-sans-serif,system-ui,sans-serif;color:#333;background:#f9f9f9;font-synthesis:none;--brand-navy: #0d1e33;--brand-cyan: #2bb7da;--brand-cyan-soft: #e8f7fb;--brand-border: #d8e0e6;--brand-muted: #666666}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button{cursor:pointer}.loading,.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.loading,.login-page{background:var(--brand-navy)}.login-form{width:min(100%,390px);border-top:4px solid var(--brand-cyan);background:#fff;padding:30px;box-shadow:0 18px 50px #0000003d}.login-logo{display:block;width:210px;height:auto;margin:0 auto 22px}.login-logo .logo-text{fill:var(--brand-navy)}.login-logo .logo-line{fill:var(--brand-cyan)}.login-form h1{margin:0 0 4px;font-size:24px}.login-form label{display:grid;gap:6px;margin-top:16px;font-size:14px;font-weight:600}.login-form input,.month-picker select{border:1px solid #aeb8c3;padding:9px 10px;background:#fff}.login-form input:focus,.month-picker select:focus,select:focus{border-color:var(--brand-cyan);outline:2px solid rgb(43 183 218 / 18%)}.login-form button{width:100%;margin-top:18px;padding:10px;font-weight:700}.login-form .password-login{border:2px solid var(--brand-cyan);color:#fff;background:var(--brand-cyan)}.login-form .password-login:hover{color:var(--brand-cyan);background:#fff}.login-form .google-login{display:flex;align-items:center;justify-content:center;gap:10px;border:1px solid #aeb8c3;color:var(--brand-navy);background:#fff}.login-form .google-login:hover{border-color:var(--brand-cyan)}.google-login span{display:inline-grid;width:22px;height:22px;place-items:center;border-radius:50%;color:#4285f4;font-size:18px;font-weight:700}.login-separator{display:flex;align-items:center;gap:10px;margin:16px 0 2px;color:var(--brand-muted);font-size:12px}.login-separator:before,.login-separator:after{content:"";height:1px;flex:1;background:var(--brand-border)}.muted{color:var(--brand-muted);font-size:14px}.error,.has-error{color:#b91c1c}.success{color:#166534}.app-header{min-height:72px;padding:0 24px;border-bottom:1px solid #e9e9e9;background:#fff;box-shadow:0 2px 10px #0d1e330f;display:flex;align-items:center;gap:28px}.app-brand{display:flex;align-items:center;gap:14px;flex:0 0 auto}.app-logo{width:116px;height:auto}.app-logo .logo-text{fill:var(--brand-navy)}.app-logo .logo-line{fill:var(--brand-cyan)}.app-brand span{padding-left:14px;border-left:1px solid rgb(13 30 51 / 18%);color:var(--brand-navy);font-size:13px;font-weight:600;white-space:nowrap}.app-header nav{align-self:stretch;display:flex}.app-header nav button{border:0;background:transparent;color:var(--brand-muted);padding:0 12px;font-weight:600}.app-header nav button:hover{color:var(--brand-navy)}.app-header nav button.active{color:var(--brand-cyan);box-shadow:inset 0 -3px var(--brand-cyan)}.app-header nav button.has-notification{color:#b91c1c;background:#fff1f2}.app-header nav button.has-notification.active{box-shadow:inset 0 -3px #dc2626}.nav-notification-count{display:inline-grid;min-width:20px;height:20px;place-items:center;margin-left:7px;border-radius:999px;padding:0 5px;color:#fff;background:#dc2626;font-size:11px;font-weight:700}.user-menu{position:relative;margin-left:auto;color:var(--brand-navy);font-size:14px}.user-menu summary{display:flex;align-items:center;gap:9px;padding:9px 8px;font-weight:600;cursor:pointer;list-style:none}.user-menu summary::-webkit-details-marker{display:none}.user-menu summary:after{content:"";width:7px;height:7px;border-right:1.5px solid var(--brand-navy);border-bottom:1.5px solid var(--brand-navy);transform:rotate(45deg) translateY(-2px);transition:transform .15s ease}.user-menu[open] summary:after{transform:rotate(225deg) translate(-2px,-1px)}.user-menu-dropdown{position:absolute;z-index:20;top:calc(100% + 5px);right:0;width:160px;border:1px solid var(--brand-border);padding:5px;background:#fff;box-shadow:0 8px 24px #0d1e3324}.user-menu-dropdown button{width:100%;border:0;padding:9px 10px;color:var(--brand-navy);background:transparent;text-align:left;font-weight:600}.user-menu-dropdown button:hover{background:var(--brand-cyan-soft)}.impersonation-banner{padding:10px 24px;border-bottom:1px solid #e5b957;background:#fff4cf;color:var(--brand-navy);font-size:14px;text-align:center}.content{padding:20px 20px 36px;max-width:1600px;margin:0 auto}.toolbar{min-height:54px;display:flex;align-items:center;gap:18px;margin-bottom:10px}.month-picker,.client-picker{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600}.client-picker select{min-width:160px;border:1px solid #aeb8c3;padding:9px 10px;background:#fff}.save-status{min-height:20px;color:var(--brand-muted);font-size:13px}.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--brand-border);box-shadow:0 3px 14px #0d1e3312}.sheet{width:100%;border-collapse:collapse;font-size:14px}.sheet th,.sheet td{height:36px;padding:6px 10px;border-right:1px solid #e3e8ed;border-bottom:1px solid #e3e8ed;text-align:left;white-space:nowrap}.sheet thead th{position:sticky;top:0;z-index:1;background:var(--brand-cyan-soft);color:var(--brand-navy);font-weight:600}.sheet tfoot th{background:var(--brand-cyan-soft);border-bottom:0}.sheet tr.weekend td{background:#f3f3f3;color:var(--brand-muted)}.hours-column,.editable-cell,.total,.number{width:150px;text-align:right!important}.editable-cell{padding:0!important}.editable-cell input{width:100%;height:35px;border:0;padding:6px 10px;text-align:right;background:transparent;outline:none}.editable-cell input:focus{box-shadow:inset 0 0 0 2px var(--brand-cyan);background:#fff}.weekday{text-transform:capitalize}.reports-toolbar{align-items:flex-start;flex-wrap:wrap}.multiselect-filter{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600}.multiselect-filter-label{white-space:nowrap}.filter-multiselect{position:relative;min-width:220px;font-weight:400}.filter-multiselect summary{display:flex;min-height:38px;align-items:center;justify-content:space-between;gap:16px;border:1px solid #aeb8c3;padding:8px 10px;background:#fff;cursor:pointer;list-style:none}.filter-multiselect summary::-webkit-details-marker{display:none}.filter-multiselect summary:after{content:"";width:7px;height:7px;border-right:1.5px solid var(--brand-navy);border-bottom:1.5px solid var(--brand-navy);transform:rotate(45deg) translateY(-2px);transition:transform .15s ease}.filter-multiselect[open] summary{border-color:var(--brand-cyan);box-shadow:0 0 0 2px #2bb7da24}.filter-multiselect[open] summary:after{transform:rotate(225deg) translate(-2px,-1px)}.filter-picker{position:absolute;z-index:10;top:calc(100% + 5px);left:0;display:grid;width:100%;max-height:260px;gap:0;overflow-y:auto;border:1px solid var(--brand-border);padding:5px;margin:0;background:#fff;box-shadow:0 8px 24px #0d1e3324}.filter-picker label{display:flex;align-items:center;gap:8px;min-height:34px;padding:6px 8px;font-size:13px;font-weight:400;white-space:nowrap;cursor:pointer}.filter-picker label:hover{background:var(--brand-cyan-soft)}.empty-state{padding:24px;border:1px dashed #cbd5e1;color:#64748b;background:#fff}.timesheet-wrap{max-width:100%}.horizontal-timesheet{width:max-content;min-width:100%;table-layout:fixed;font-size:12px}.horizontal-timesheet .employee-column,.horizontal-timesheet .employee-name{position:sticky;left:0;z-index:2;width:120px;min-width:120px;background:#fff}.horizontal-timesheet thead .employee-column{z-index:3;background:var(--brand-cyan-soft)}.horizontal-timesheet .client-column,.horizontal-timesheet .report-client{position:sticky;left:120px;z-index:2;width:120px;min-width:120px;background:#fff}.horizontal-timesheet thead .client-column{z-index:3;background:var(--brand-cyan-soft)}.horizontal-timesheet .report-client{padding:6px 10px;text-align:left}.horizontal-timesheet thead th{min-width:38px;width:38px;padding:6px 2px;text-align:center;background:var(--brand-cyan-soft)}.horizontal-timesheet thead th.weekend,.horizontal-timesheet td.weekend{background:#e5e7eb;color:#64748b}.horizontal-timesheet thead th.holiday,.horizontal-timesheet td.holiday{background:#e8eef4;color:#64748b}.horizontal-timesheet thead th.future,.horizontal-timesheet td.future{background:#f1f5f9;color:#94a3b8}.horizontal-timesheet td.future input:disabled{cursor:not-allowed;color:#94a3b8}.horizontal-timesheet td.missing-entry{background:#fee2e2}.horizontal-timesheet td.annual-leave{background:#fef3c7}.horizontal-timesheet td.sick-leave{background:#ffedd5}.horizontal-timesheet .employee-name{padding:6px 10px;text-align:left;font-weight:600}.horizontal-timesheet .editable-cell{width:38px;min-width:38px;padding:0!important}.horizontal-timesheet .editable-cell input{width:38px;padding:6px 2px;text-align:center}.horizontal-timesheet .report-entry{width:38px;min-width:38px;padding:6px 2px;text-align:center}.report-table .report-user-row{cursor:pointer}.report-table .report-user-row:hover>*,.report-table .report-user-row:focus-visible>*{box-shadow:inset 0 0 0 9999px #2bb7da1a}.report-table .report-user-row:focus-visible{outline:2px solid var(--brand-cyan);outline-offset:-2px}.horizontal-timesheet .total-column,.horizontal-timesheet .total{position:sticky;right:0;z-index:2;width:84px;min-width:84px;text-align:center!important}.horizontal-timesheet .total{background:#dff4f9;color:var(--brand-navy);font-weight:700}.horizontal-timesheet .total-column{z-index:3;background:#bdeaf5!important}.horizontal-timesheet .total-column small{display:block;margin-top:2px;color:var(--brand-muted);font-size:10px;font-weight:500;white-space:nowrap}.timesheet-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin-top:9px;color:var(--brand-muted);font-size:12px}.timesheet-legend strong{display:inline-grid;width:20px;height:20px;place-items:center;border:1px solid #cbd5e1;background:#fef3c7}.timesheet-legend span:nth-child(2) strong{background:#ffedd5}.missing-swatch{width:20px;height:20px;border:1px solid #fecaca;background:#fee2e2}.users-page h1,.clients-page h1,.edit-user-page h1,.add-user-page h1,.edit-client-page h1,.annual-leave-page h1,.annual-leave-admin-page h1{margin:0 0 14px;color:var(--brand-navy);font-size:22px;font-weight:700}.user-form{display:grid;grid-template-columns:1.1fr 1.3fr 120px 1.2fr auto;gap:10px;align-items:end;margin-bottom:16px;padding:12px;border:1px solid #cbd5e1;background:#fff}.user-form label,.edit-user-form label{display:grid;gap:5px;font-size:13px;font-weight:600}.user-form input,.user-form select,.edit-user-form input,.edit-user-form select{min-width:0;border:1px solid #94a3b8;padding:8px 9px;background:#fff}.user-form button,.edit-user-form>button{border:2px solid var(--brand-cyan);padding:7px 12px;color:#fff;background:var(--brand-cyan);font-weight:700;white-space:nowrap}.users-table .user-row{cursor:pointer}.users-table .user-row:hover td,.users-table .user-row:focus-visible td{background:var(--brand-cyan-soft)}.users-table .user-row:focus-visible{outline:2px solid var(--brand-cyan);outline-offset:-2px}.users-table .user-annual-leave{min-width:170px}.users-table .user-annual-leave strong,.users-table .user-annual-leave small{display:block}.users-table .user-annual-leave small{margin-top:3px;color:var(--brand-muted);line-height:1.45;white-space:normal}.actions button,.user-page-heading button,.users-heading button{border:1px solid #94a3b8;padding:5px 9px;color:#334155;background:#fff}.actions button.danger{border-color:#dc2626;color:#b91c1c}.actions button:disabled{cursor:not-allowed;opacity:.45}.user-detail-actions{margin-top:20px;padding-top:16px;border-top:1px solid var(--brand-border);display:flex;flex-wrap:wrap;gap:8px}.user-detail-actions button{border:1px solid #94a3b8;padding:8px 12px;color:#334155;background:#fff}.user-detail-actions button.danger{border-color:#dc2626;color:#b91c1c}.user-detail-actions button:disabled{cursor:not-allowed;opacity:.45}.edit-user-form{width:min(100%,520px);display:grid;gap:12px;margin-top:16px;padding:16px;border:1px solid #94a3b8;background:#fff}.user-page-heading,.users-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.user-page-heading h1,.users-heading h1{margin:0}.client-form{display:flex;align-items:end;gap:10px;margin-bottom:16px;padding:12px;border:1px solid #cbd5e1;background:#fff}.client-form label,.edit-client-form label{display:grid;gap:5px;font-size:13px;font-weight:600}.client-form input,.edit-client-form input{border:1px solid #94a3b8;padding:8px 9px;background:#fff}.client-form button,.edit-client-form>button{border:2px solid var(--brand-cyan);padding:7px 12px;color:#fff;background:var(--brand-cyan);font-weight:700}.clients-table{max-width:700px}.clients-table .client-row{cursor:pointer}.clients-table .client-row:hover td,.clients-table .client-row:focus-visible td{background:var(--brand-cyan-soft)}.clients-table .client-row:focus-visible{outline:2px solid var(--brand-cyan);outline-offset:-2px}.edit-client-form{width:min(100%,420px);display:grid;gap:12px;margin-top:16px;padding:16px;border:1px solid #94a3b8;background:#fff}.annual-leave-page h2{margin:28px 0 12px;color:var(--brand-navy);font-size:18px}.leave-year-summary{display:grid;gap:5px;margin:0 0 16px;border:1px solid #bae6fd;border-left:4px solid var(--brand-cyan);padding:11px 12px;color:var(--brand-navy);background:#f0f9ff}.leave-year-summary strong{font-size:15px}.leave-year-summary span{color:var(--brand-muted);font-size:13px;line-height:1.45}.leave-toolbar{flex-wrap:wrap}.leave-toolbar label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600}.leave-toolbar select{border:1px solid #aeb8c3;padding:9px 10px;background:#fff}.leave-selected-dates{min-height:38px;display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin:0 0 10px;border-left:3px solid var(--brand-cyan);padding:8px 10px;color:var(--brand-navy);background:var(--brand-cyan-soft);font-size:13px}.primary-action{border:2px solid var(--brand-cyan);padding:8px 13px;color:#fff;background:var(--brand-cyan);font-weight:700}.primary-action:disabled{cursor:not-allowed;opacity:.5}.leave-selection-table td{width:38px;min-width:38px;padding:0;text-align:center}.leave-selection-table td button{width:100%;height:35px;border:0;padding:0;color:var(--brand-navy);background:transparent;font-weight:700}.leave-selection-table td button:not(:disabled):hover,.leave-selection-table td button:focus-visible{box-shadow:inset 0 0 0 2px var(--brand-cyan)}.leave-selection-table td button:disabled{cursor:not-allowed}.leave-selection-table .past-date{background:#f1f5f9;color:#94a3b8}.leave-selection-table td.leave-pending{background:#fff4cf}.leave-selection-table td.annual-leave{background:#fef3c7}.leave-selection-table td.leave-selected{background:#bdeaf5}.leave-request-table td{vertical-align:top}.leave-request-table td small{display:block;margin-top:3px;color:var(--brand-muted)}.request-status{display:inline-block;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700}.request-status.pending{color:#854d0e;background:#fef3c7}.request-status.approved{color:#166534;background:#dcfce7}.request-status.rejected{color:#991b1b;background:#fee2e2}.danger-link{border:0;padding:4px 0;color:#b91c1c;background:transparent;font-weight:600}.request-actions{display:flex;gap:6px}.request-actions button{border:1px solid;padding:6px 9px;background:#fff;font-weight:600}.request-actions .approve{border-color:#16a34a;color:#166534}.request-actions .reject{border-color:#dc2626;color:#b91c1c}.request-actions button:disabled{cursor:not-allowed;opacity:.5}@media(max-width:640px){.app-header{padding:0 10px;gap:8px;flex-wrap:wrap}.app-brand{width:100%;padding-top:9px}.app-logo{width:100px}.app-brand span{font-size:12px}.app-header nav{height:38px;order:2}.user-menu{position:absolute;top:10px;right:6px}.user-menu summary{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.impersonation-banner{padding:9px 12px;text-align:left}.content{padding:12px 8px 24px}.toolbar{align-items:flex-start;flex-direction:column;gap:8px}.user-form{grid-template-columns:1fr}.sheet th,.sheet td{padding:6px 8px}.horizontal-timesheet .employee-column,.horizontal-timesheet .employee-name{width:104px;min-width:104px}}
