*{box-sizing:border-box}body{margin:0;background:#f3f6fa;color:#203047;font:15px/1.55 system-ui,sans-serif}aside{position:fixed;inset:0 auto 0 0;width:238px;background:#112b42;color:#d5e2ef;padding:30px 22px;overflow:auto}aside a{display:block;padding:12px;border-radius:8px;color:#d5e2ef;text-decoration:none;margin:5px 0}aside a:hover{background:#21445f}aside p{font-size:12px;color:#92abc0}.brand{font-size:38px;font-weight:800;color:#fff}.brand span{color:#43d2c1}.brand small{display:block;font-size:10px;letter-spacing:2px}.profile{margin-top:36px;border-top:1px solid #345065;padding-top:18px}small{display:block;color:#748297}.profile small{color:#aec1d4}main{margin-left:238px;padding:24px 38px;max-width:1600px}header{display:flex;justify-content:space-between;font-size:13px;color:#738097}h1{font-size:29px;margin:24px 0}h2{font-size:18px}h3{font-size:15px}.card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:22px;margin:18px 0;overflow:auto}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:16px}.stat{background:white;padding:20px;border-radius:12px;border-top:3px solid #15a998}.stat strong{display:block;font-size:32px}.badge{display:inline-block;padding:4px 10px;background:#e2f5f0;color:#147c70;border-radius:20px;font-size:12px}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{text-align:left;border-bottom:1px solid #e9eef3;padding:12px}th{font-size:12px;color:#758396}a{color:#078c83;text-decoration:none}a:hover{text-decoration:underline}input,select,textarea{width:100%;padding:10px;border:1px solid #cad5e0;border-radius:7px;background:#fff;color:#203047;font:inherit}textarea{min-height:85px}label{display:block;font-size:13px;color:#607087;margin:8px 0}button{background:#087f78;color:#fff;padding:10px 18px;border:0;border-radius:7px;cursor:pointer;font:inherit;margin-top:12px}.secondary{background:#dce7ef;color:#203047}.notice,.error{padding:14px;border-radius:8px;background:#dff5ed}.error{background:#ffe7e5}.muted{color:#758396}details summary{cursor:pointer;font-weight:600}.actions{display:flex;gap:12px;align-items:center}.login{max-width:430px;margin:10vh auto;padding:34px}.overdue{color:#c74c46}@media(max-width:800px){aside{position:static;width:auto;padding:16px}aside a{display:inline-block}.profile{margin-top:10px}.brand{font-size:24px}main{margin:0;padding:20px}header{gap:12px}.grid{grid-template-columns:1fr 1fr}}@media(max-width:480px){.grid{grid-template-columns:1fr}}
.attendance-scroll{overflow:auto;max-height:600px;border:1px solid #e2e8f0;border-radius:8px}
.attendance-matrix{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0}
.attendance-matrix th,.attendance-matrix td{padding:7px 5px;text-align:center;min-width:75px;border-right:1px solid #e9eef3}
.attendance-matrix thead th{position:sticky;top:0;background:#edf3f8;z-index:2}
.attendance-matrix .employee-sticky{position:sticky;left:0;text-align:left;min-width:210px;max-width:260px;white-space:normal;background:#fff;z-index:3}
.attendance-matrix thead .employee-sticky{z-index:4;background:#edf3f8}
.attendance-matrix .saturday{background:#fff4df}.attendance-matrix .sunday{background:#fceced}
.attendance-cell{width:100%;min-height:40px;padding:6px 4px;margin:0;font-size:12px;background:#edf6f4;color:#24524d;border:2px solid transparent;white-space:nowrap}
.attendance-cell.draft{border-color:#087f78}.attendance-cell.leave{background:#fff0dd;color:#854a18}
.attendance-cell:disabled{opacity:1;cursor:default}.attendance-cell:focus-visible{outline:3px solid #1b78b7}
dialog{width:min(450px,calc(100vw - 24px));border:0;border-radius:12px;padding:24px;box-shadow:0 16px 80px #112b4240}
dialog::backdrop{background:#112b4270}

.attendance-cell{white-space:pre-line;min-height:50px}
.leave-balance{font-size:11px;font-weight:400;margin-top:4px}
option:disabled{color:#a1aab5;background:#f2f4f6}
[hidden]{display:none!important}
/* Compact tables and controls */
body{font-size:13px;line-height:1.4}aside{padding:22px 16px;width:214px}aside a{padding:8px 10px;margin:2px 0}main{margin-left:214px;padding:18px 24px;max-width:1800px}h1{font-size:24px;margin:16px 0}h2{font-size:16px;margin:0 0 10px}h3{margin:8px 0}p{margin:8px 0}.card{padding:14px;margin:12px 0;border-radius:8px}.grid{gap:10px;grid-template-columns:repeat(auto-fit,minmax(185px,1fr))}.grid>.card{margin:0}.stat{padding:12px}.stat strong{font-size:26px}th,td{padding:7px 10px;font-size:12px}th{background:#eaf0f5;color:#465362;border-top:2px solid #63a9bc}tr:nth-child(even)>td{background:#f4f6f8}tr:hover>td{background:#eef6fa}input,select,textarea{padding:6px 8px;border-radius:4px;min-height:32px;font-size:13px}textarea{min-height:64px}label{margin:4px 0}button{padding:6px 12px;margin-top:8px;min-height:32px;font-size:13px;border-radius:4px;white-space:nowrap;flex:none}.actions{gap:8px}.actions>input{flex:1;min-width:0}.actions>button{margin-top:0;width:auto}.actions>h2{margin:0}.actions>input[type=month]{max-width:220px}.row-actions{display:flex;align-items:center;gap:8px}.row-actions form{margin:0}.row-actions button{margin:0}.danger{background:#bb3c45}.small-button{padding:3px 8px;min-height:26px;font-size:12px}.edit-link{color:#1879bd}.notice,.error{padding:10px}.due-urgent{color:#a31425!important;font-weight:750}.due-urgent small{color:#a31425}.status-done{background:#e0f4e8;color:#19733f}.status-pending{background:#eef1f5;color:#536171}.progress-ring{--ring-color:#c8ced6;position:relative;display:inline-flex;width:46px;height:46px;border-radius:50%;align-items:center;justify-content:center;background:conic-gradient(var(--ring-color) var(--progress),#dce1e7 0);color:#88919d;font-weight:700;font-size:12px;flex:none}.progress-ring:before{content:'';position:absolute;inset:5px;background:#fff;border-radius:50%}.progress-ring>span{position:relative}.progress-ring.orange{--ring-color:#e58a20;color:#ca7011}.progress-ring.green{--ring-color:#269a57;color:#23834c}.list-footer{display:flex;gap:12px;align-items:center;justify-content:flex-end;padding:10px 0 2px;white-space:nowrap;color:#586777;font-size:12px}.page-size{margin-right:auto}.page-size label{display:flex;align-items:center;gap:7px;margin:0}.page-size select{width:65px;min-height:28px}.page-links{display:flex;gap:4px}.page-links a{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;border-radius:50%;color:#198faf}.page-links a.current{background:#03aac4;color:#fff}.attendance-matrix th,.attendance-matrix td{padding:4px;min-width:64px}.attendance-cell{min-height:38px;padding:4px 2px}.attendance-matrix .employee-sticky{min-width:185px}.leave-balance{font-size:10px}.profile{margin-top:24px}dialog{padding:18px}.card>table{margin-bottom:4px}@media(max-width:800px){aside{width:auto;padding:12px}main{margin:0;padding:12px}.list-footer{flex-wrap:wrap}.actions{flex-wrap:wrap}.actions>input:not([type=month]){min-width:200px}}@media(max-width:480px){.grid{grid-template-columns:1fr}}

.deadline-notice{margin:10px 0;padding:9px 12px;background:#fff0ed;color:#a31425;border-left:3px solid #b22435;border-radius:4px}.deadline-notice a{color:#a31425;margin-left:10px;text-decoration:underline}.column-filters td{background:#eaf0f5;padding:4px 7px}.column-filters input,.column-filters select{min-width:115px;min-height:27px;font-size:12px;padding:4px 6px}

td>form{display:flex;align-items:center;gap:6px}td>form select{width:auto;min-width:90px;max-width:200px}td>form button{margin:0;min-height:28px;padding:4px 8px}.row-actions{min-width:75px}.progress-ring{width:40px;height:40px;font-size:11px}.progress-ring:before{inset:4px}
.page-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.page-heading h1{margin:14px 0}.date-range{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}.date-range label{font-size:11px;margin:0}.date-range input{width:145px}.date-range button{margin:0}.toolbar{margin:0 0 12px}.toolbar button{margin:0}.summary-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.summary-new{border-top-color:#a4adba}.summary-processing{border-top-color:#e58a20}.summary-completed{border-top-color:#269a57}.delivery-summary{display:flex;gap:22px}.section-heading{margin:20px 0 10px}.wide-dialog{width:min(980px,calc(100vw - 24px));max-height:90vh;overflow:auto}.person-heading{justify-content:space-between;margin-bottom:6px}.person-heading button{margin:0}.document-entry{padding:12px;border:1px solid #dae3ec;background:#f6f8fb;border-radius:6px;margin:10px 0}input[type=checkbox]{width:16px;height:16px;min-height:0;margin:0;accent-color:#078c83}button:disabled{opacity:.4;cursor:not-allowed}@media(max-width:900px){.summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:480px){.summary-grid{grid-template-columns:1fr 1fr}.date-range input{width:130px}.wide-dialog .grid{grid-template-columns:1fr}.person-heading{flex-wrap:wrap}}

/* 0.7 compact document intake and shared stage colors */
.popup-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.popup-heading h2{margin:0}.bulk-translator{display:flex;gap:7px;align-items:flex-end}.bulk-translator label{margin:0;font-size:11px}.bulk-translator select{width:170px}.bulk-translator button{margin:0}.document-entry{margin:6px 0;padding:8px}.document-entry .grid{gap:6px 10px;grid-template-columns:repeat(4,minmax(0,1fr))}.document-entry label{margin:0;font-size:11px}.document-entry input,.document-entry select{padding:4px 6px;min-height:28px;font-size:12px}.document-entry button{margin:5px 0 0}.document-form-actions{display:flex;gap:8px;align-items:center;margin-top:8px}.document-form-actions button{margin:0}.checkbox-line{display:flex;align-items:center;gap:8px}.scope-button{padding:5px 10px;border:1px solid #d4dfe9;border-radius:5px}.scope-button.active{background:#147dcc;color:white}.stat{position:relative}.deadline-counter{position:absolute;right:9px;top:9px;font-size:11px;font-weight:700;color:#9299a2}.deadline-counter.has-alert{color:#b51c28}.stat>span:first-child{display:block;padding-right:90px}.summary-all{border-top-color:#1976d2}.summary-all strong,.summary-all>span:first-child{color:#1976d2}.summary-delivery{border-top-color:#cfeeff}.summary-delivery strong,.summary-delivery>span:first-child{color:#124b68}
.stage-translation{background:#eceff2;color:#65717f}.stage-review{background:#e5f0ff;color:#176bc0}.stage-print{background:#fff0dc;color:#c26b00}.stage-stamp{background:#ffe6e8;color:#c52b38}.stage-service{background:#f2e8ff;color:#8540b3}.stage-completed{background:#e2f5e8;color:#23854b}.stage-card-translation{border-top-color:#89939e}.stage-card-review{border-top-color:#1976d2}.stage-card-print{border-top-color:#e88c23}.stage-card-stamp{border-top-color:#d53945}.stage-card-service{border-top-color:#934fc1}.stage-card-completed{border-top-color:#269a57}.stage-card-translation strong{color:#65717f}.stage-card-review strong{color:#176bc0}.stage-card-print strong{color:#c26b00}.stage-card-stamp strong{color:#c52b38}.stage-card-service strong{color:#8540b3}.stage-card-completed strong{color:#23854b}
@media(max-width:700px){.popup-heading{flex-wrap:wrap}.bulk-translator{margin-left:auto}.document-entry .grid{grid-template-columns:repeat(2,minmax(0,1fr))}.document-form-actions{flex-wrap:wrap}.deadline-counter{font-size:10px;top:6px}.stat>span:first-child{padding-right:0;padding-top:12px}} 
.summary-new strong{color:#65717f}.summary-processing strong{color:#c26b00}.summary-completed strong{color:#23854b}

/* 0.8 compact summaries and bottom-right warning */
.summary-grid,.work-summary{gap:8px}.summary-grid .stat,.work-summary .stat{padding:9px 11px 22px;min-height:0}.summary-grid .stat strong,.work-summary .stat strong{font-size:25px;line-height:1.12;margin:3px 0}.summary-grid .stat small,.work-summary .stat small{font-size:11px}.summary-grid .stat>span:first-child,.work-summary .stat>span:first-child{padding:0;min-height:18px}.deadline-counter{top:auto;bottom:6px;right:10px;line-height:1;font-size:10px}.work-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr))}.section-heading{margin:14px 0 7px}.master-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 10px}.master-tabs a{padding:6px 13px;border:1px solid #d4dfe9;background:#fff;border-radius:6px;color:#35506b}.master-tabs a.active{background:#087f87;border-color:#087f87;color:#fff}.section-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.section-toolbar h2{margin:0}.section-toolbar button{margin:0}@media(max-width:1100px){.work-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:480px){.work-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-grid .stat,.work-summary .stat{padding:8px 9px 23px}.deadline-counter{bottom:6px;top:auto}.section-toolbar{flex-wrap:wrap}.work-summary .stat>span:first-child{font-size:11px}}

/* 0.9 inline labels and summary footer */
.date-range label,.bulk-translator label{display:flex;align-items:center;gap:8px}.stat-footer{display:flex;align-items:baseline;justify-content:space-between;gap:6px;margin-top:4px}.stat-footer .deadline-counter{position:static;line-height:inherit;white-space:nowrap}.summary-grid .stat,.work-summary .stat{padding-bottom:10px}.person-buttons{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.person-buttons form,.person-buttons button{margin:0}.person-heading{gap:10px}.stat-footer small{margin:0}@media(max-width:480px){.stat-footer{gap:4px}.stat-footer .deadline-counter{font-size:9px}.date-range label{gap:6px}}

/* 0.10.3: center only the login page; scroll safely on small screens. */
body.login-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}
body.login-page .card.login{width:100%;max-width:430px;margin:0;box-sizing:border-box}

/* 0.10.4: delivery and selection */
.stage-delivered{background:#cfeeff;color:#124b68}.stage-card-delivered{border-top-color:#cfeeff}.stage-card-delivered strong{color:#124b68}.delivery-range{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.delivery-range label{display:flex;align-items:center;gap:6px;margin:0}.delivery-range input{width:58px}.delivery-range button{margin:0}.person-title{display:flex;align-items:center;gap:8px}.person-sequence{font-variant-numeric:tabular-nums}

@media(min-width:1101px){.work-summary{grid-template-columns:repeat(7,minmax(0,1fr))}}
.leave-pending{background:#fff1b8;color:#6b4f00}.leave-approved{background:#d8f3dc;color:#185b2a}.leave-rejected{background:#ffdddd;color:#851f28}.leave-approve{background:#27843d;color:#fff}.leave-reason{white-space:normal;min-width:160px;overflow-wrap:anywhere}.table-scroll{overflow-x:auto}#leave-request-dialog,#leave-reject-dialog{width:min(680px,95vw)}
.floating-deadline{position:fixed;right:24px;bottom:24px;z-index:100;width:58px;height:58px;border-radius:50%;padding:0;margin:0;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 15px #112b4255}.floating-deadline:focus-visible{outline:3px solid #e58a20;outline-offset:3px}.leave-review-actions{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}.leave-review-actions form{margin:0;display:flex}.leave-review-actions button{margin:0;white-space:nowrap;min-height:40px}.attendance-cell:disabled{cursor:not-allowed}@media(max-width:600px){.floating-deadline{right:14px;bottom:14px}}

.finance-month-filter{margin:0;flex-wrap:nowrap}.finance-month-filter input{width:auto}.document-code{white-space:nowrap;font-variant-numeric:tabular-nums}@media(max-width:600px){.finance-month-filter{flex-wrap:wrap}}

.attendance-matrix .workday{background:#eefaf0}.attendance-matrix thead .workday{background:#d6efda}.leave-review-actions button{width:auto;min-width:0;min-height:32px;padding:6px 10px;font-size:12px}.leave-cancelled{background:#e5e7eb;color:#374151}.stage-final_review{background:#efe3ff;color:#643699}

.stage-card-final_review{border-top-color:#643699}.stage-card-final_review strong{color:#643699}

.file-version-heading form{margin:0}.file-version-heading button{white-space:nowrap}

.page-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.stage-cancelled{background:#111!important;color:#fff!important}.stage-delivered,.status-done{background:#cfeeff!important;color:#124b68!important}

/* Overview cards follow the existing white-card theme; status accents only. */
.summary-cancelled,.stage-card-cancelled{background:#fff;border-top-color:#111;color:#203047}
.summary-cancelled strong,.stage-card-cancelled strong{color:#111}
.summary-delivery,.stage-card-delivered{background:#fff;border-top-color:#cfeeff;color:#203047}
.summary-delivery strong,.stage-card-delivered strong{color:#124b68}
.summary-cancelled>span:first-child,.stage-card-cancelled>span:first-child,.summary-delivery>span:first-child,.stage-card-delivered>span:first-child{color:#203047}
.delivery-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.delivery-summary>div{min-width:0}
.delivery-summary .delivery-cancelled strong{color:#111}

.floating-cancellation{bottom:94px;background:#c62828;color:#fff;border:2px solid #c62828}.floating-cancellation:hover{background:#b71c1c}@media(max-width:600px){.floating-cancellation{bottom:84px}}

.progress-ring.black{--ring-color:#111;color:#111}

.progress-display{display:inline-flex;flex-direction:column;align-items:center}.progress-cancelled-count{text-align:center}

.leave-expired{background:#111;color:#fff}
.payroll-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.payroll-tabs a{padding:7px 12px;border:1px solid #d4dfe9;border-radius:5px}.payroll-tabs a.active{background:#087f78;color:white}.payroll-profile-row{border-top:1px solid #e2e8f0;padding:10px 0}.payroll-sheet{max-width:750px;margin:20px auto;padding:20px}.payroll-sheet h1{font-size:22px;text-align:center}.payroll-sheet table{white-space:normal}.payroll-sheet td:last-child{text-align:right}.payroll-section{font-weight:bold}.payroll-sheet .formula{font-size:12px;color:#607087}@media print{body{background:#fff}aside,header,.print-actions{display:none!important}main{margin:0;padding:0}.payroll-sheet{break-after:page;margin:0;padding:0;max-width:none}.payroll-sheet:last-child{break-after:auto}@page{size:A4;margin:16mm}}

/* Payroll action rows share dimensions across links, buttons and nested forms. */
.payroll-page .actions,.payroll-page .row-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.payroll-page .actions>form,.payroll-page .row-actions>form{display:inline-flex;align-items:center;margin:0;padding:0}
.payroll-page .actions button,.payroll-page .row-actions button{margin:0}
.payroll-page .actions>a,.payroll-page .row-actions>a{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:6px 12px;border:1px solid #d4dfe9;border-radius:4px;box-sizing:border-box;font:inherit;line-height:18px;text-decoration:none}
.payroll-page .actions button,.payroll-page .row-actions button{min-height:32px;line-height:18px;box-sizing:border-box}
.payroll-page td .actions,.payroll-page td .row-actions{flex-wrap:nowrap}
.payroll-page td .actions>button,.payroll-page td .actions>a,.payroll-page td .actions>form>button,.payroll-page td .row-actions>a,.payroll-page td .row-actions>form>button{width:72px;height:32px;min-height:32px;padding:6px 10px;flex-shrink:0}
.payroll-create-actions{display:flex;align-items:center;justify-content:center;margin:14px 0 20px}
.payroll-create-actions>button{margin:0;min-width:132px}
.payroll-page [data-payroll-money]{font-variant-numeric:tabular-nums;min-width:110px}

.attendance-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.attendance-actions>button{margin:0;min-height:32px}

/* Salary print layout mirrors the two-column payroll reference. */
.payroll-sheet .payroll-slip-table{table-layout:fixed;border-collapse:collapse;width:100%;font-family:Calibri,Arial,sans-serif;white-space:normal}
.payroll-sheet .payroll-slip-table tr>td{background:#fff;color:#000;border:0;padding:4px 8px;vertical-align:middle;font-size:11pt;overflow-wrap:anywhere}
.payroll-sheet .payroll-slip-table td.payroll-cell-label{text-align:left}
.payroll-sheet .payroll-slip-table td.payroll-cell-value{text-align:right;font-variant-numeric:tabular-nums}
.payroll-sheet .payroll-slip-table tr.payroll-row-title>td,.payroll-sheet .payroll-slip-table tr.payroll-row-month>td{text-align:center;font-weight:700;font-size:14pt}
.payroll-sheet .payroll-slip-table tr.payroll-row-name>td{text-align:left;font-weight:700;font-size:14pt}
.payroll-sheet .payroll-slip-table tr.payroll-row-signature>td.payroll-cell-label{text-align:center}
.payroll-sheet .payroll-slip-table tr.payroll-row-spacer>td{height:15pt;padding:0}
.payroll-sheet .payroll-slip-table tr.payroll-border-all>td{border:1px solid #000}
.payroll-sheet .payroll-slip-table tr.payroll-border-top>td{border-left:1px solid #000;border-right:1px solid #000;border-top:1px solid #000}
.payroll-sheet .payroll-slip-table tr.payroll-border-bottom>td{border-left:1px solid #000;border-right:1px solid #000;border-bottom:1px solid #000}
.payroll-sheet .payroll-slip-table tr{break-inside:avoid}

.payroll-page .grid.payroll-allowance-create{grid-template-columns:minmax(150px,1.4fr) minmax(130px,1fr) minmax(180px,1fr) auto;align-items:end;margin-bottom:12px}
.payroll-page .payroll-allowance-create>label{margin:0}
.payroll-page .payroll-allowance-create .payroll-create-actions{margin:0;justify-content:flex-end;align-self:end}
.payroll-page .payroll-allowance-create .payroll-create-actions>button{height:32px}
.payroll-page table th.payroll-action-cell,.payroll-page table td.payroll-action-cell{text-align:right;width:1%;white-space:nowrap}
.payroll-page td.payroll-action-cell .actions{justify-content:flex-end}
.payroll-page .payroll-allowance-fields{display:grid;grid-template-columns:minmax(110px,1fr) minmax(190px,1.4fr);gap:8px;align-items:center;margin:0}
.payroll-page .payroll-allowance-fields select{min-width:190px;width:100%}
.payroll-page .payroll-allowance-table td:nth-child(2){width:58%}
.payroll-page .payroll-mail-actions{margin-top:12px}
@media(max-width:800px){.payroll-page .grid.payroll-allowance-create{grid-template-columns:1fr 1fr}.payroll-page .payroll-allowance-fields{grid-template-columns:1fr;min-width:190px}}

#payroll-profile-editor{scroll-margin-top:20px}.floating-delivery{bottom:164px;background:#087f78;color:#fff}.floating-delivery:hover{background:#066c66}@media(max-width:600px){.floating-delivery{bottom:154px}}

.payroll-page td .row-actions>.salary-edit{width:72px;height:32px;padding:6px 10px;flex-shrink:0}#salary-dialog{width:min(460px,calc(100vw - 32px))}

/* v0.10.31: align checkboxes with field controls in existing form grids. */
.grid>.grid-checkbox{align-self:center;flex-direction:row;align-items:center;margin:0;min-height:42px;padding-top:20px}.inline-search{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.inline-search input[name=q]{width:300px;max-width:100%}

/* v0.10.32: shared column filters. */
.table-filter-actions{display:flex;align-items:center;gap:8px;margin:8px 0}.table-filter-actions button{margin:0}.filter-reset{display:inline-flex;align-items:center;min-height:32px;padding:6px 12px;border-radius:4px;background:#dce7ef;color:#203047;font-size:13px}.column-filters td{vertical-align:top}.column-filters td>select,.column-filters td>input{display:block}.column-filters td>:not(:first-child){margin-top:4px}

/* v0.10.33: compact aligned table actions, preserve existing responsive toolbars. */
.table-heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.table-heading-actions .table-filter-actions,.section-toolbar>.table-filter-actions{margin:0}
.table-heading-actions>button{margin:0}
.customer-case-toolbar{justify-content:flex-start;flex-wrap:wrap}
@media(max-width:600px){.table-heading-actions{justify-content:flex-start}}

.customer-flags{display:flex;align-items:center;gap:12px;align-self:center;padding-top:18px;flex-wrap:wrap;grid-column:auto}
.customer-flags label{margin:0}.contractor-hour-cell.draft{outline:2px solid #1596bf}
@media(max-width:480px){.customer-flags{grid-column:auto;padding-top:0}}

/* v0.10.35: scope financial controls to existing layout. */
.summary-payment{border-color:#eab308}.badge.payment-paid{background:#fef08a;color:#713f12}.quote-select-toolbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.quote-select-toolbar label{flex:1;min-width:200px}.quote-select-toolbar button{margin-bottom:0}.link-button{border:0;background:none;color:#087f78;text-decoration:underline;padding:0}.table-scroll{overflow-x:auto}#quote-case-dialog input{min-width:120px}#quote-case-dialog .actions{justify-content:flex-end;gap:8px}

/* v0.10.36: quote and weekly toolbar alignment only. */
.quote-select-toolbar{align-items:flex-end}.quote-select-toolbar label{margin:0}.quote-select-toolbar select{display:block}.quote-select-toolbar>button{margin:0;align-self:flex-end}
.quote-row-actions{gap:8px;align-items:center;flex-wrap:nowrap}.quote-row-actions form{display:flex;margin:0}.quote-row-actions button,.quote-row-actions .scope-button{display:inline-flex;align-items:center;justify-content:center;min-width:52px;height:28px;min-height:28px;padding:0 10px;margin:0;border:1px solid transparent;border-radius:7px;font:inherit;font-size:12px;line-height:1;box-sizing:border-box}.quote-row-actions .scope-button{background:#087f78;color:white}
#quote-case-dialog tfoot th,#quote-case-dialog tfoot td{background:#eef4f8;color:#203047;font-weight:700;border-top:2px solid #cad5e0;vertical-align:middle;line-height:1.5;padding:14px 12px}#quote-dialog-total{text-align:right;font-size:16px}#quote-case-dialog td:last-child{text-align:right}#quote-case-dialog .table-scroll{margin-bottom:16px}#quote-case-dialog form>.actions{padding-top:4px}#quote-case-dialog form>.actions button{margin:0;min-height:40px}#quote-case-dialog tbody td{vertical-align:middle}
.weekly-pay-actions{flex-wrap:wrap;gap:8px}.weekly-pay-actions form{margin:0;display:flex;align-items:center}.weekly-pay-actions button{margin:0}.page-heading #contractor-week-filter{margin:0}

/* v0.10.37: one shared compact height for quote input/action and weekly actions. */
.quote-select-toolbar select,.quote-select-toolbar>button,#contractor-week-filter button,.weekly-pay-actions button{height:32px;min-height:32px;box-sizing:border-box;font-size:13px;line-height:18px;padding:0 10px;margin-top:0;margin-bottom:0}

@media(max-width:600px){.quote-select-toolbar>label:first-child{flex-basis:100%}.quote-select-toolbar>label:nth-child(2){min-width:0;flex:1}}

/* v0.10.38: quotation attention and consistent person actions. */
a.case-code-needs-quote{color:#bd2434;font-weight:700}.person-buttons button{min-height:32px;padding:6px 12px;font-size:13px}

.contractor-price-actions>button{width:166px;height:32px;margin:0}.person-buttons button{width:120px;height:32px}

/* v0.10.39 */
.money-amount{text-align:right;white-space:nowrap}.case-payment-actions{margin-left:auto;flex-wrap:wrap}.case-payment-actions button{margin:0}.quote-select-toolbar{margin-bottom:2px}

/* v0.10.41: equal case-list action buttons. */
#cancel-selected-cases,#pay-selected-cases{width:126px;height:32px;min-height:32px;box-sizing:border-box}

/* v0.10.42: local OCR preview and phone crop gestures. */
.person-ocr-dialog{max-width:920px;width:calc(100% - 32px)}.ocr-preview{margin:12px 0}.ocr-preview canvas{display:block;width:auto;max-width:100%;height:auto;max-height:55vh;touch-action:none;border:1px solid #cbd5e1}.person-ocr-dialog progress{width:100%}.person-ocr-dialog .actions{flex-wrap:wrap}

/* v0.10.48: scanner stays in-page while the native camera/file picker is active. */
.person-scan-overlay[hidden]{display:none!important}
.person-scan-overlay{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;background:rgba(15,23,42,.55);padding:16px;overflow:auto}
.person-scan-panel.person-ocr-dialog{background:#fff;border:1px solid #cbd5e1;border-radius:12px;padding:18px;width:100%;max-width:920px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow:auto;box-shadow:0 12px 40px #0003}
.person-scan-panel [data-ai-candidates][hidden]{display:none!important}
.person-scan-panel progress[hidden]{display:none!important}
.person-scan-panel #person-ocr-status:empty{display:none}
.person-scan-panel .actions{flex-wrap:wrap}

/* v0.10.49: camera stays in Chrome; only a still frame is used when requested. */
.person-scan-panel .ocr-live[hidden]{display:none!important}
.person-scan-panel .ocr-live video{display:block;width:100%;max-height:50vh;max-height:50dvh;background:#111;object-fit:contain;border-radius:6px}

/* v0.10.50: balanced capture controls and portrait crop preview. */
.person-scan-panel .ocr-shutter-actions{justify-content:center}
.person-scan-panel .ocr-shutter-actions [data-ocr-shoot]{min-width:88px}
.person-scan-panel .ocr-preview canvas{margin-inline:auto}

/* v0.10.51: camera controls match the other Scan buttons; 2px camera spacing. */
.person-scan-panel .ocr-source-actions{margin-bottom:2px}
.person-scan-panel .ocr-shutter-actions{margin-top:2px}
.person-scan-panel .ocr-shutter-actions [data-ocr-shoot]{margin-top:0}
/* v0.10.52: scoped translation controls match existing buttons. */
.automatic-translation-action{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.automatic-translation-action button{margin:0}.translation-monthly-count{font-size:12px;white-space:nowrap}.translation-exhausted{color:#b91c1c}#automatic-translation-dialog .actions{margin-top:12px}#automatic-translation-dialog .actions button{margin:0}#automatic-translation-dialog [data-translation-result]{margin:12px 0}
.automatic-translation-action[hidden]{display:none!important}


.mobile-navigation,.navigation-close,.navigation-backdrop{display:none}
@media(max-width:800px){
.mobile-navigation{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:200;height:54px;padding:0 14px;background:#112b42;color:#fff;font-weight:600}
#navigation-toggle{display:flex;align-items:center;justify-content:center;width:40px;height:40px;margin:0;padding:8px;background:transparent;color:#fff;border-radius:6px}
#office-navigation{position:fixed;inset:0 auto 0 0;width:min(310px,86vw);height:100dvh;max-height:100vh;padding:22px 16px;z-index:220;overflow-y:auto;overscroll-behavior:contain;transform:translateX(-100%);visibility:hidden;transition:transform .18s ease}
#office-navigation a{display:block;padding:10px 12px;margin:3px 0}#office-navigation .brand{font-size:28px;padding-right:38px}#office-navigation .profile{margin-top:18px}
.navigation-close{display:flex;align-items:center;justify-content:center;position:absolute;right:12px;top:12px;width:38px;height:38px;padding:0;margin:0;background:#21445f;color:#fff}
.navigation-backdrop:not([hidden]){display:block;position:fixed;inset:0;width:100%;height:100%;border:0;border-radius:0;margin:0;padding:0;background:#0b1f3399;z-index:210}
body.navigation-open{overflow:hidden}body.navigation-open #office-navigation{transform:translateX(0);visibility:visible}
main{margin-left:0;padding:16px}#navigation-toggle:focus-visible,.navigation-close:focus-visible{outline:2px solid #43d2c1;outline-offset:2px}
}
@media(prefers-reduced-motion:reduce){#office-navigation{transition:none}}
@media print{.mobile-navigation,.navigation-close,.navigation-backdrop{display:none!important}}

.result-file-row{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.result-file-row #review-file{flex:1;min-width:180px}.result-file-row .original-file-choice{display:flex;align-items:center;gap:6px;white-space:nowrap;margin-bottom:16px}.original-file-choice input{width:auto;flex:none}
/* Consistent floating action spacing at both viewport sizes. */
.floating-reassign{bottom:234px;background:#087f78;color:#fff}.floating-reassign:hover{background:#066c66}@media(max-width:600px){.floating-reassign{bottom:224px}}
.file-preview-dialog{width:min(1100px,95vw);max-width:95vw;max-height:94vh;max-height:94dvh;overflow:auto}.file-preview-dialog h2{overflow-wrap:anywhere}.file-preview-dialog [hidden]{display:none!important}#file-preview-viewer{height:60vh;height:60dvh;overflow:auto;background:#e9edf1;padding:8px;overscroll-behavior:contain}#file-preview-canvas{display:block;background:white;margin:auto;max-width:none}#file-preview-controls{gap:6px;margin-bottom:8px}#file-preview-controls button{min-width:34px;margin:0;padding:4px 10px}#file-preview-page{min-width:55px;text-align:center}@media(max-width:600px){.file-preview-dialog{padding:12px}#file-preview-viewer{height:55vh;height:55dvh}}

/* v0.10.64: scoped file-transfer progress, same controls as existing forms. */
.upload-transport{margin-top:12px}.upload-transport[hidden]{display:none!important}.upload-transport progress{display:block;width:100%;height:12px;margin:6px 0}.upload-transport .error{white-space:pre-line}.upload-transport button{margin:4px 8px 0 0}.upload-transport a[hidden]{display:none!important}
