*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f8f9fa;--surface:#fff;--border:#dee2e6;--text:#212529;--text-muted:#6c757d;--primary:#0d6efd;--primary-bg:#e7f1ff;--danger:#dc3545;--warning-bg:#fff3cd;--warning-text:#856404;--negative:#dc3545;--positive:#198754;--selected-bg:#cfe2ff;--weekend-bg:#f8f9fa;--fn-own-bg:#e8f6ec;--fn-own-border:#b7dfc2;--fn-extra-bg:#e7f0fb;--fn-extra-border:#b6d2f0;--radius:6px;--shadow:0 1px 3px #00000014}body{color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}.app{max-width:1400px;margin:0 auto;padding:0 16px}.app-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:16px;padding:12px 0;display:flex}.app-header h1{font-size:20px;font-weight:700}.app-header nav{gap:4px;display:flex}.app-header nav button{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);cursor:pointer;color:var(--text);padding:6px 16px;font-size:13px;transition:background .15s}.app-header nav button:hover{background:var(--primary-bg)}.app-header nav button.active{background:var(--primary);color:#fff;border-color:var(--primary)}.week-picker{align-items:center;gap:8px;display:flex}.week-picker button{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);cursor:pointer;padding:4px 12px;font-size:14px}.week-picker button:hover:not(:disabled){background:var(--primary-bg)}.week-picker button:disabled{opacity:.4;cursor:not-allowed}.week-label{text-align:center;min-width:220px;font-size:16px;font-weight:600}.week-dates{color:var(--text-muted);font-size:13px;font-weight:400}.jump-today{margin-left:8px;padding:4px 10px!important;font-size:12px!important}.editor-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.undo-redo{gap:4px;display:flex}.undo-redo button{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);cursor:pointer;padding:4px 10px;font-size:16px}.undo-redo button:disabled{opacity:.3;cursor:not-allowed}.day-inputs-row{grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:16px;display:grid}.day-input{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px;position:relative}.day-input.weekend{background:var(--weekend-bg)}.day-label{text-transform:uppercase;color:var(--text-muted);margin-bottom:4px;font-size:12px;font-weight:600;display:block}.day-hours{border:1px solid var(--border);text-align:center;border-radius:4px;outline:none;width:100%;padding:6px 8px;font-size:16px}.day-hours:focus{border-color:var(--primary);box-shadow:0 0 0 2px #0d6efd26}.day-functions{flex-direction:column;gap:3px;margin-top:4px;display:flex}.day-function{border:1px solid var(--border);font-variant-numeric:tabular-nums;letter-spacing:-.2px;text-align:center;background:var(--surface);width:100%;color:var(--text);text-overflow:ellipsis;border-radius:4px;outline:none;min-width:0;padding:3px 4px;font-size:11px}.day-function::placeholder{color:var(--text-muted);opacity:.6}.day-function:focus{border-color:var(--primary);box-shadow:0 0 0 2px #0d6efd26}.day-function.extra{border-style:dashed}.day-function:not(:placeholder-shown){background:var(--fn-own-bg);border-color:var(--fn-own-border);font-weight:600}.day-function.extra:not(:placeholder-shown){background:var(--fn-extra-bg);border-color:var(--fn-extra-border)}.day-category-row{margin-top:4px;position:relative}.cat-btn{border:1px solid var(--border);cursor:pointer;background:var(--surface);text-align:center;border-radius:4px;width:100%;padding:3px 6px;font-size:11px}.cat-dropdown{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);z-index:100;max-height:200px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.cat-option{cursor:pointer;align-items:center;gap:6px;padding:6px 8px;font-size:12px;display:flex}.cat-option:hover{background:var(--primary-bg)}.cat-swatch{border:1px solid var(--border);border-radius:2px;flex-shrink:0;width:14px;height:14px;display:inline-block}.day-warning{color:var(--danger);margin-top:2px;font-size:10px}.week-summary{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);gap:24px;margin-bottom:16px;padding:12px 16px;display:flex}.summary-item{flex-direction:column;gap:2px;display:flex}.summary-item label{color:var(--text-muted);text-transform:uppercase;font-size:11px;font-weight:600}.summary-item .computed-val{font-size:18px;font-weight:700}.summary-item .computed-val.negative{color:var(--negative)}.norm-input{border:1px solid var(--border);text-align:center;border-radius:4px;width:60px;padding:4px 6px;font-size:16px}.extra-work-table{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:12px}.extra-work-table h4{color:var(--text-muted);margin-bottom:8px;font-size:13px}.extra-work-table table{border-collapse:collapse;width:100%}.extra-work-table th{text-transform:uppercase;color:var(--text-muted);text-align:left;border-bottom:1px solid var(--border);padding:4px 6px;font-size:11px}.extra-work-table td{padding:4px 6px}.extra-work-table input[type=date],.extra-work-table select{border:1px solid var(--border);border-radius:4px;padding:4px 6px;font-size:13px}.hours-input{border:1px solid var(--border);text-align:center;border-radius:4px;width:60px;padding:4px 6px;font-size:13px}.note-input{border:1px solid var(--border);border-radius:4px;width:100%;padding:4px 6px;font-size:13px}.remove-btn{color:var(--danger);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px}.add-row-btn{border:1px dashed var(--border);cursor:pointer;color:var(--text-muted);background:0 0;border-radius:4px;margin-top:8px;padding:4px 12px;font-size:12px}.add-row-btn:hover{background:var(--primary-bg);border-color:var(--primary)}.outside-week{background:var(--warning-bg)}.warn-icon{color:var(--warning-text);margin-left:4px}.comment-section{margin-bottom:16px}.comment-section label{color:var(--text-muted);margin-bottom:4px;font-size:12px;font-weight:600;display:block}.comment-section textarea{border:1px solid var(--border);border-radius:var(--radius);resize:vertical;width:100%;padding:8px;font-family:inherit;font-size:13px}.comment-section textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 2px #0d6efd26}.warnings{background:var(--warning-bg);border-radius:var(--radius);border:1px solid #ffc107;margin-bottom:16px;padding:8px 12px}.warning{color:var(--warning-text);padding:2px 0;font-size:13px}.year-grid h3,.month-panel h3{margin-bottom:12px;font-size:16px}.year-table-wrap,.month-table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}.year-table,.month-table{border-collapse:collapse;width:100%;font-size:13px}.year-table th,.month-table th{text-transform:uppercase;color:var(--text-muted);text-align:left;border-bottom:2px solid var(--border);white-space:nowrap;background:#f1f3f5;padding:6px 8px;font-size:11px;position:sticky;top:0}.year-table td,.month-table td{white-space:nowrap;border-bottom:1px solid #f0f0f0;padding:5px 8px}.year-row{cursor:pointer;transition:background .1s}.year-row:hover{background:#f1f3f5}.year-row.selected{background:var(--selected-bg)}.week-num{color:var(--text-muted);font-size:12px;font-weight:600}.week-date{color:var(--text-muted);font-size:12px}.day-cell{text-align:center;min-width:36px;font-size:12px}.day-cell.weekend{background:#fafafa}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.num.negative{color:var(--negative)}.num.bold,td.bold{font-weight:700}.month-table td.num{text-align:right}.totals-row{border-top:2px solid var(--border);font-weight:700}.totals-row td{padding-top:8px}.week-editor{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}@media (width<=768px){.day-inputs-row{grid-template-columns:repeat(4,minmax(0,1fr))}.week-summary{flex-wrap:wrap}.editor-header{flex-direction:column;align-items:flex-start;gap:8px}}.settings-page{flex-direction:column;gap:20px;max-width:1100px;display:flex}.settings-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.settings-section h3{margin:0 0 8px;font-size:1.05rem}.settings-section .hint{color:var(--text-muted);max-width:70ch;margin:0 0 12px;font-size:.85rem;line-height:1.45}.settings-section code{background:var(--bg);border:1px solid var(--border);border-radius:3px;padding:0 4px;font-size:.85em}.field{align-items:center;gap:10px;margin-bottom:8px;display:flex}.field>span{min-width:190px;font-size:.9rem}.field input[type=text],.field input[type=number]{border:1px solid var(--border);max-width:420px;font:inherit;border-radius:4px;flex:1;padding:5px 8px}.field.inline>span{min-width:auto}.field.checkbox{gap:8px}.field.checkbox>span{min-width:auto}.button-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;display:flex}.button-row button{border:1px solid var(--border);background:var(--surface);font:inherit;cursor:pointer;border-radius:4px;padding:6px 14px}.button-row button:hover:not(:disabled){background:var(--bg)}.button-row button:disabled{opacity:.55;cursor:default}.button-row button.primary{background:var(--primary);border-color:var(--primary);color:#fff}.rate-table{border:1px solid var(--border);border-radius:4px;margin-bottom:8px;overflow:hidden}.rate-table-head{background:var(--bg);width:100%;font:inherit;text-align:left;cursor:pointer;border:none;align-items:center;gap:8px;padding:8px 12px;display:flex}.rate-table-head:hover{background:var(--primary-bg)}.rate-table-head .chev{color:var(--text-muted);width:12px}.rate-table .rate-count{color:var(--text-muted);margin-left:auto;font-size:.8rem}.rate-table-body{border-top:1px solid var(--border);padding:12px;overflow-x:auto}.rate-table-body table{border-collapse:collapse;width:100%}.rate-table-body th{text-align:left;color:var(--text-muted);white-space:nowrap;padding:2px 6px;font-size:.78rem;font-weight:600}.rate-table-body th.num,.mini th.num{text-align:right}.rate-table-body td{padding:2px 6px}.rate-table-body input{border:1px solid var(--border);width:100%;min-width:92px;font:inherit;text-align:right;border-radius:3px;padding:4px 6px}.rate-table-body input[type=month]{text-align:left;min-width:130px}.mini{border-collapse:collapse;width:100%;font-size:.85rem}.mini th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border);padding:4px 6px;font-size:.78rem;font-weight:600}.mini td{border-bottom:1px solid var(--bg);padding:3px 6px}.mini td.num,.mini th.num{text-align:right}.mini input[type=text],.mini input[type=number],.mini input[type=month],.mini select{border:1px solid var(--border);width:100%;font:inherit;border-radius:3px;padding:3px 5px}.probe{border-radius:4px;margin-top:12px;padding:10px 12px;font-size:.88rem}.probe.ok{background:var(--primary-bg);border:1px solid var(--primary)}.probe.bad{background:var(--warning-bg);border:1px solid var(--warning-text);color:var(--warning-text)}.sync-preview{border:1px solid var(--border);background:var(--bg);border-radius:4px;max-height:460px;margin-top:14px;padding:12px;overflow-y:auto}.sync-preview>p{margin:0 0 10px;font-size:.88rem}.sync-preview tr.set_day td,.sync-preview tr.create_week td{background:#19875412}.sync-preview tr.propose_extra td{background:var(--primary-bg)}.sync-preview tr.skip_manual td,.sync-preview tr.skip_unknown td{color:var(--text-muted)}.month-table input[type=number]{width:100%;min-width:78px;font:inherit;text-align:right;background:0 0;border:1px solid #0000;border-radius:3px;padding:3px 5px}.month-table input[type=number]:hover,.month-table input[type=number]:focus{border-color:var(--border);background:var(--surface)}@media (width<=768px){.field{flex-direction:column;align-items:flex-start;gap:4px}.field>span{min-width:auto}}.pwa-offline{background:var(--warning-bg);color:var(--warning-text);vertical-align:middle;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.pwa-toast{left:50%;bottom:calc(16px + env(safe-area-inset-bottom));z-index:1000;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:8px;max-width:calc(100vw - 32px);padding:10px 12px 10px 16px;font-size:14px;font-weight:400;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 4px 16px #00000026}.pwa-toast button{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);cursor:pointer;padding:6px 12px;font-size:13px}.pwa-toast .pwa-toast-primary{background:var(--primary);border-color:var(--primary);color:#fff}@media (width<=720px){.app-header{padding-top:calc(12px + env(safe-area-inset-top));flex-wrap:wrap;gap:8px}.app-header nav{flex-wrap:wrap}.app-header nav button{padding:6px 10px}}.payslip-day{border:1px solid var(--border);color:var(--text-muted);text-align:center;cursor:default;background:#f1f3f5;border-radius:4px;flex-direction:column;gap:1px;margin-top:6px;padding:4px 6px;font-size:12px;display:flex}.payslip-day-value{color:var(--text);font-weight:600}.payslip-day-times{font-size:10px}.payslip-day-reason{color:var(--danger);text-align:left;font-size:10px;display:none}.payslip-day.mismatch{border:2px solid var(--danger);background:#fff5f5}.payslip-day.mismatch .payslip-day-reason{display:block}.payslip-note{color:var(--text-muted);margin:-8px 0 16px;font-size:12px}.payslip-note.has-mismatch{color:var(--danger)}.computed-val.payslip-total.mismatch{outline:2px solid var(--danger);outline-offset:2px;color:var(--danger);border-radius:3px}.saldo-panel{flex-direction:column;gap:16px;padding-bottom:32px;display:flex}.saldo-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.saldo-head .cutoff{color:var(--text-muted);align-items:center;gap:8px;font-size:13px;display:flex}.saldo-head .cutoff input{border:1px solid var(--border);border-radius:var(--radius);padding:6px 8px;font-size:14px}.saldo-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.saldo-card h4{margin-bottom:8px;font-size:15px}.saldo-big{font-variant-numeric:tabular-nums;font-size:32px;font-weight:700}.saldo-big.positive{color:var(--positive)}.saldo-big.negative,.saldo-table .negative{color:var(--negative)}.saldo-sub{color:var(--text-muted);margin-top:8px;font-size:12px;line-height:1.5}.saldo-table-wrap{overflow-x:auto}.saldo-table{border-collapse:collapse;width:100%;font-size:13px}.saldo-table th,.saldo-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 8px}.saldo-table th{text-transform:uppercase;color:var(--text-muted);background:#f8f9fa;font-size:11px}.saldo-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.saldo-table .nowrap{white-space:nowrap}.saldo-table td.mismatch{outline:2px solid var(--danger);outline-offset:-3px;color:var(--danger)}.saldo-table .cat-swatch{vertical-align:-2px}.date-chips{flex-wrap:wrap;gap:3px;margin-right:4px;display:inline-flex}.date-chip{font-variant-numeric:tabular-nums;background:#e9ecef;border-radius:3px;padding:1px 5px;font-size:11px}.date-chip.planned{border:1px dashed var(--border);color:var(--text-muted);background:0 0}.slip-balances{flex-wrap:wrap;gap:12px;margin-bottom:12px;display:flex}.slip-balance{border:1px solid var(--border);border-radius:var(--radius);background:#f8f9fa;flex-direction:column;min-width:140px;padding:10px 12px;display:flex}.slip-balance-label{color:var(--text-muted);font-size:12px}.slip-balance-value{font-variant-numeric:tabular-nums;font-size:20px;font-weight:700}.slip-balance-days{color:var(--text-muted);font-size:12px}.slip-balances .saldo-sub{flex-basis:100%;margin-top:0}@media (width<=480px){.day-inputs-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.saldo-table tr.saldo-dates td{border-bottom:1px solid var(--border);padding-top:0}.saldo-table tr.has-dates td{border-bottom:none}.sync-badge{vertical-align:middle;border-radius:999px;margin-left:6px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.sync-badge.ok{color:#0f5132;background:#d1e7dd}.sync-badge.syncing{background:var(--primary-bg);color:var(--primary)}.sync-badge.error{color:#842029;background:#f8d7da}.login-screen{flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:100vh;padding:32px 16px;display:flex}.login-sub,.login-hint{color:var(--text-muted);text-align:center}.login-form{flex-direction:column;gap:12px;width:100%;max-width:360px;margin-top:16px;display:flex}.login-form label{color:var(--text-muted);flex-direction:column;gap:4px;font-size:13px;display:flex}.login-form input{border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;font-size:16px}.login-form button{border-radius:var(--radius);background:var(--primary);color:#fff;cursor:pointer;border:none;padding:10px 12px;font-size:16px}.login-form button:disabled{opacity:.6;cursor:wait}.login-error{color:var(--danger);font-size:14px}.login-skip{color:var(--text-muted);cursor:pointer;background:0 0;border:none;margin-top:16px;text-decoration:underline}.payslips-panel{flex-direction:column;gap:16px;padding-bottom:32px;display:flex}.upload-zone{border:2px dashed var(--border);border-radius:var(--radius);background:var(--surface);text-align:center;padding:20px}.upload-zone.dragging{border-color:var(--primary);background:var(--primary-bg)}.upload-zone .hint{color:var(--text-muted);margin-top:6px;font-size:12px}.link-btn{color:var(--primary);cursor:pointer;font-size:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.upload-results{text-align:left;flex-direction:column;gap:4px;margin-top:12px;font-size:13px;list-style:none;display:flex}.upload-results li{border-radius:4px;padding:6px 8px}.upload-results li.ok{background:#d1e7dd}.upload-results li.warn{background:var(--warning-bg)}.upload-results li.error{background:#f8d7da}.upload-results .file{word-break:break-all;font-weight:600}.slip-grid td.slip-cell{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12px}.slip-grid td.uploaded{color:var(--positive)}.slip-grid td.missing{color:#842029;background:#f8d7da;font-weight:600}.slip-grid td.none{color:var(--text-muted);text-align:center}.file-cell{text-overflow:ellipsis;white-space:nowrap;max-width:220px;color:var(--text-muted);font-size:12px;overflow:hidden}.remove-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none}.remove-btn:hover{color:var(--danger)}.from-slip{color:var(--text-muted);font-variant-numeric:tabular-nums;cursor:help}.reconciliation-panel{flex-direction:column;gap:12px;padding-bottom:32px;display:flex}.recon-note{color:var(--text-muted);font-size:12px;line-height:1.5}.recon-table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}.recon-table{border-collapse:collapse;width:100%;font-size:13px}.recon-table th,.recon-table td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:6px 8px}.recon-table th{text-transform:uppercase;color:var(--text-muted);background:#f8f9fa;font-size:11px}.recon-table .num{text-align:right;font-variant-numeric:tabular-nums}.recon-table .bold{font-weight:700}.recon-table .muted{color:var(--text-muted)}.recon-table td.ok,.recon-diff.ok{color:var(--positive)}.recon-table td.off,.recon-diff.off{color:var(--negative)}.recon-diff{font-size:11px;display:block}.missing-tag{color:#842029;background:#f8d7da;border-radius:3px;padding:1px 6px;font-size:11px;font-weight:600;display:inline-block}.hours-recon{flex-direction:column;gap:8px;margin-top:12px;display:flex}.hours-recon h3{margin:0}.hours-recon .slip-balances{margin-bottom:0}.hours-recon .link-button{color:var(--primary,#0d6efd);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.recon-filter{align-items:center;gap:6px;font-size:13px;display:flex}.hours-recon-table .week-row{cursor:pointer}.hours-recon-table .week-row.open td{background:#f1f5ff}.hours-recon-table .caret{width:1em;color:var(--text-muted);display:inline-block}.hours-recon-table small{padding-left:1em;font-size:11px;display:block}.hours-recon-table th{white-space:normal}.hours-recon-table tr.week-detail td{white-space:normal;background:#fbfcff}.hours-recon-days{flex-direction:column;gap:6px;max-width:calc(100vw - 56px);display:flex;position:sticky;left:8px}.hours-recon-day{border-radius:4px;padding:4px 6px}.hours-recon-day.has-reasons{border-left:3px solid var(--negative);background:#fff3f3}.hours-recon-day-head{font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:space-between;gap:8px;display:flex}.hours-recon-day .small{font-size:11px}.hours-recon-day .muted{color:var(--text-muted)}.hours-recon-reason{color:var(--negative);font-size:12px}@media (width<=480px){.hours-recon-table th,.hours-recon-table td{padding:5px 4px;font-size:12px}.hours-recon .slip-balance-value{font-size:17px}}.loop-conflicts{border-radius:var(--radius);background:#fff8e6;border:1px solid #f0c36d;flex-direction:column;gap:6px;margin:8px 0;padding:8px 10px;font-size:13px;display:flex}.loop-conflict{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.loop-conflict-actions{gap:6px;display:flex}.loop-conflict-actions button{padding:4px 10px;font-size:13px}.loop-conflicts .link-button{color:var(--primary);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.slip-corrections{flex-direction:column;gap:8px;margin-top:12px;display:flex}.slip-corrections h3{margin:0}.correction-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px}.correction-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.correction-total{font-variant-numeric:tabular-nums;font-weight:700}.correction-total.positive{color:var(--positive)}.correction-total.negative{color:var(--negative)}.correction-card .small{margin:2px 0 6px;font-size:12px}.correction-card .muted{color:var(--text-muted)}.correction-table td{white-space:normal;vertical-align:top}.correction-table small{font-size:11px;display:block}.holiday-panel{flex-direction:column;gap:16px;padding-bottom:32px;display:flex}.holiday-cards{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.holiday-card dl{grid-template-columns:1fr auto;gap:4px 12px;font-size:13px;display:grid}.holiday-card dt{color:var(--text-muted)}.holiday-card dd{text-align:right;font-variant-numeric:tabular-nums}.holiday-card .bold,.holiday-table .bold{font-weight:700}.holiday-table td.estimate{color:var(--text-muted);font-style:italic}.holiday-table td.mismatch{outline:2px solid var(--danger);outline-offset:-3px;color:var(--danger)}.holiday-table td.muted{color:var(--text-muted)}.month-table.grouped{--bbh-bg:#dbe7fb;--lektor-bg:#e6dcf5;--alb-bg:#fde2cf;--sph-bg:#d4efe1;--phd-bg:#fbe3ec;--samlet-bg:#fff1c2}.month-table.grouped thead tr.group-row th{text-align:center;letter-spacing:.02em;color:var(--text);border-bottom:1px solid var(--border);font-size:12px;font-weight:700;position:static}.month-table.grouped thead tr:nth-child(2) th{top:0}.month-table.grouped th.bbh{background:var(--bbh-bg)}.month-table.grouped th.lektor{background:var(--lektor-bg)}.month-table.grouped th.alb{background:var(--alb-bg)}.month-table.grouped th.sph{background:var(--sph-bg)}.month-table.grouped th.phd{background:var(--phd-bg)}.month-table.grouped th.num{text-align:right}.month-table.grouped th.month-col{vertical-align:bottom}.month-table.grouped .group-end,.month-table.grouped th.group{border-right:2px solid var(--border)}.month-table.grouped td.netto{font-weight:700}.month-table.grouped .samlet{background:var(--samlet-bg);text-align:right;color:var(--text);vertical-align:bottom}.month-table.grouped th.samlet{font-size:12px;font-weight:700}.month-table.grouped tbody tr:hover td.samlet{background:#ffe79a}.month-table.grouped input[type=number].hours-input.compact{text-align:right;border:1px solid var(--border);border-radius:3px;width:56px;min-width:0;padding:1px 4px;font-size:12px}.month-table.grouped .month-col{z-index:2;background:var(--surface);border-right:2px solid var(--border);position:sticky;left:0}.month-table.grouped thead .month-col{z-index:3;background:#f1f3f5}.month-table.grouped tfoot .month-col{background:var(--surface)}.month-table.grouped thead tr.group-row th.month-col{position:sticky;left:0}.by-hand{cursor:help;font-variant-numeric:tabular-nums}.column-help{color:var(--text-muted);grid-template-columns:max-content 1fr;gap:2px 12px;margin:8px 0 12px;font-size:13px;display:grid}.column-help dt{color:var(--text);font-weight:600}.column-help dd{margin:0}.one-offs h4{margin:12px 0 6px;font-size:14px}.one-offs .table-scroll{overflow-x:auto}.one-off-status{white-space:nowrap;color:var(--text-muted);font-size:12px}.one-off-status.ok{color:var(--positive)}.one-off-status.bad{color:var(--danger);font-weight:600}.one-off-counts{white-space:nowrap;color:var(--text-muted);font-size:12px}.one-offs td.nowrap{white-space:nowrap}.norm-periods .table-scroll{overflow-x:auto}.norm-periods tr.needs-input td{background:var(--warning-bg)}.norm-periods .hint-cell{color:var(--text-muted);white-space:nowrap;font-size:12px}
