:root{--ink:#17202a;--muted:#687481;--line:#dce3e8;--paper:#fff;--canvas:#f4f7f8;--navy:#12334a;--teal:#147d79;--teal-dark:#0e625f;--hour:96px;--employee:176px;--track:2304px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--canvas)}
*{box-sizing:border-box}body{margin:0;background:var(--canvas)}a{color:inherit;text-decoration:none}button,input{font:inherit}
.app-header{height:74px;background:var(--paper);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 28px;gap:32px;position:sticky;top:0;z-index:20;box-shadow:0 2px 12px rgba(22,40,52,.04)}
.brand{display:flex;align-items:center;gap:11px;min-width:218px}.brand-mark{width:38px;height:38px;border-radius:11px;background:var(--teal);color:white;display:grid;place-items:center;font-size:17px;font-weight:800;letter-spacing:.04em}.brand strong,.brand small{display:block}.brand strong{font-size:18px}.brand small{font-size:15px;color:var(--muted);margin-top:2px;letter-spacing:.04em;text-transform:uppercase}
.tabs{height:100%;display:flex;align-items:stretch;overflow-x:auto;gap:4px}.tab{display:flex;align-items:center;padding:0 13px;font-size:17px;font-weight:650;color:#5f6b76;border-bottom:3px solid transparent;white-space:nowrap}.tab:hover{color:var(--teal-dark);background:#f6faf9}.tab.active{color:var(--teal-dark);border-bottom-color:var(--teal)}
.schedule-page{padding:26px 28px 30px}.page-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:20px}.eyebrow{margin:0 0 4px;color:var(--teal-dark);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.14em}.page-heading h1,.blank-page h1{margin:0;font-family:Georgia,serif;font-size:30px;font-weight:600;color:var(--navy)}
.date-controls{display:flex;gap:8px;align-items:center}.date-controls form{display:flex}.date-controls input,.icon-button,.today-button{height:38px;border:1px solid var(--line);background:white;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#344450}.date-controls input{padding:0 12px}.icon-button{width:38px;font-size:21px}.today-button{padding:0 15px;font-size:16px;font-weight:750}.icon-button:hover,.today-button:hover{border-color:#9db8b6;color:var(--teal-dark)}
.schedule-subtoolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.schedule-subtoolbar .schedule-new-job{height:38px}.schedule-page>.page-heading{margin-bottom:12px}@media(max-width:700px){.schedule-subtoolbar{align-items:flex-start;flex-direction:column}.schedule-subtoolbar .date-controls{justify-content:flex-start}}
.dispatch-layout{display:grid;grid-template-columns:276px minmax(0,1fr);gap:18px;align-items:start}.queue-panel,.timeline-card{background:white;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 26px rgba(27,49,62,.055);overflow:hidden}.queue-panel{height:calc(100vh - 151px);min-height:540px;display:flex;flex-direction:column}.panel-heading{padding:18px 18px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.panel-heading h2{margin:0;font-family:Georgia,serif;font-size:20px;color:var(--navy)}.count-badge{min-width:27px;height:27px;padding:0 8px;display:grid;place-items:center;background:#e8f3f2;color:var(--teal-dark);border-radius:20px;font-size:16px;font-weight:800}.queue-list{padding:12px;overflow-y:auto}.queue-card{position:relative;padding:13px 13px 14px 16px;border:1px solid var(--line);border-radius:10px;margin-bottom:10px;background:white;overflow:hidden}.queue-card:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:#92a5b3}.queue-card.priority-1:before{background:#d25555}.queue-card.priority-2:before{background:#e5a43b}.queue-card-top{display:flex;align-items:center;justify-content:space-between}.queue-card-top strong{font-size:15px;color:var(--teal-dark)}.queue-card-top span{font-size:13px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:var(--muted)}.queue-card h3{font-size:13px;margin:8px 0 5px}.queue-card p,.queue-card small{display:block;margin:0;color:var(--muted);font-size:15px}.queue-card small{margin-top:3px}.empty-queue{text-align:center;color:var(--muted);padding:52px 14px}.empty-queue span{width:38px;height:38px;margin:0 auto 10px;border-radius:50%;display:grid;place-items:center;background:#eaf4f2;color:var(--teal-dark)}.empty-queue strong,.empty-queue p{display:block}.empty-queue p{font-size:15px;margin:5px 0}
.timeline-card{height:calc(100vh - 151px);min-height:540px;display:flex;flex-direction:column}.timeline-scroll{overflow:auto;flex:1}.timeline-canvas{width:calc(var(--employee) + var(--track));min-height:100%}.timeline-header{height:52px;display:grid;grid-template-columns:var(--employee) var(--track);position:sticky;top:0;z-index:10;background:white;border-bottom:1px solid var(--line)}.employee-header{position:sticky;left:0;z-index:12;background:#f8fafb;border-right:1px solid var(--line);display:flex;align-items:center;padding:0 16px;color:var(--muted);text-transform:uppercase;font-size:13px;font-weight:800;letter-spacing:.1em}.hours-header{display:grid;grid-template-columns:repeat(24,var(--hour))}.hour-label{border-right:1px solid var(--line);display:flex;align-items:center;padding-left:10px;font-size:14px;color:var(--muted);font-weight:700}
.employee-row{height:var(--row-height);display:grid;grid-template-columns:var(--employee) var(--track);border-bottom:1px solid var(--line)}.employee-name{position:sticky;left:0;z-index:6;background:white;border-right:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:0 14px}.employee-name strong,.employee-name small{display:block;max-width:115px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.employee-name strong{font-size:16px}.employee-name small{font-size:14px;color:var(--muted);margin-top:3px}.avatar{flex:0 0 34px;height:34px;border-radius:10px;background:#e8f0f1;color:var(--navy);display:grid;place-items:center;font-size:14px;font-weight:850}.day-track{position:relative;height:100%;background-image:repeating-linear-gradient(to right,transparent 0,transparent calc(var(--hour) - 1px),#dfe5e9 calc(var(--hour) - 1px),#dfe5e9 var(--hour))}.ot-zone{position:absolute;top:0;bottom:0;background:rgba(56,69,79,.075);background-image:repeating-linear-gradient(135deg,transparent 0,transparent 7px,rgba(80,91,99,.03) 7px,rgba(80,91,99,.03) 14px)}.ot-zone span{position:sticky;left:6px;top:5px;color:#8b949b;font-size:12px;font-weight:800}.ot-before{left:0;width:768px}.ot-after{left:1632px;width:672px}
.appointment{position:absolute;height:46px;min-width:38px;border-radius:8px;background:#d9eeeb;border:1px solid #9bc9c3;border-left:4px solid var(--teal);padding:5px 10px;overflow:hidden;box-shadow:0 2px 6px rgba(25,62,66,.12);z-index:3;cursor:grab;touch-action:none;user-select:none}.appointment:active{cursor:grabbing}.appointment.dragging{opacity:.35}.appointment.resizing{z-index:8;box-shadow:0 4px 12px rgba(25,62,66,.2)}.appointment strong,.appointment span,.appointment small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.appointment strong{font-size:13px;color:var(--teal-dark)}.appointment span{font-size:14px;font-weight:750;margin-top:1px}.appointment small{font-size:12px;color:#58716f;margin-top:2px}.resize-handle{position:absolute;top:0;bottom:0;width:9px;border:0;padding:0;background:transparent;cursor:ew-resize;z-index:4}.resize-handle:hover{background:rgba(14,98,95,.16)}.resize-left{left:0}.resize-right{right:0}.drag-ghost{position:fixed;pointer-events:none;z-index:1000;opacity:.9;margin:0;transform:translate(-50%,-50%)}.schedule-error{position:fixed;right:20px;bottom:20px;z-index:1200;background:#8d2f2f;color:white;padding:11px 14px;border-radius:9px;font-size:16px;box-shadow:0 5px 18px rgba(0,0,0,.18)}.csrf-token{display:none}.appointment.status-paused{background:#fff0cf;border-color:#e8c979;border-left-color:#d59b28}.appointment.status-completed{background:#e8edf0;border-color:#cbd4da;border-left-color:#8696a1}.appointment.status-canceled{opacity:.45;text-decoration:line-through}.no-employees{width:calc(var(--employee) + var(--track));padding:70px;color:var(--muted);display:flex;flex-direction:column;gap:5px}.schedule-legend{height:39px;border-top:1px solid var(--line);display:flex;align-items:center;gap:20px;padding:0 16px;color:var(--muted);font-size:14px}.schedule-legend span{display:flex;align-items:center;gap:6px}.schedule-legend i{width:16px;height:10px;border:1px solid var(--line);border-radius:3px}.legend-regular{background:white}.legend-ot{background:#edf0f1}
.blank-page{margin:34px 28px;background:white;border:1px solid var(--line);border-radius:14px;padding:44px;min-height:360px;box-shadow:0 8px 26px rgba(27,49,62,.05)}.blank-page p:last-child{color:var(--muted)}
.queue-card{cursor:grab;touch-action:none;user-select:none}.queue-card:active{cursor:grabbing}.queue-card.dragging{opacity:.35}
.queue-panel.drop-target{outline:3px solid rgba(20,125,121,.35);outline-offset:-3px;background:#f2faf8}.queue-panel.drop-target .panel-heading{background:#e7f5f2}
.technician-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;border:1px solid var(--line);border-radius:8px;padding:10px;background:#f8fafb}.appointment-dialog .technician-option{display:flex;flex-direction:row;align-items:center;gap:8px;min-height:34px;padding:7px 9px;border:1px solid var(--line);border-radius:7px;background:white;color:var(--ink);font-size:16px;font-weight:650;text-transform:none;letter-spacing:normal;cursor:pointer}.appointment-dialog .technician-option:has(input:checked){border-color:#79b7b1;background:#e8f4f2;color:var(--teal-dark)}.appointment-dialog .technician-option input{width:16px;min-height:auto;height:16px;margin:0;accent-color:var(--teal)}
.modal-customer-row{justify-content:space-between}.modal-customer-identity{display:flex;align-items:center;gap:8px}.modal-invoice-link{margin-left:auto;color:var(--teal-dark);font-size:16px;font-weight:800;text-decoration:underline;text-decoration-color:#a8ceca;text-underline-offset:3px;white-space:nowrap}
.appointment.status-unscheduled{background:#fff;border-color:#d7dee3;border-left-color:#9aa7b0}.appointment.status-available{background:#fff4bd;border-color:#e7d47a;border-left-color:#d1a925}.appointment.status-scheduled{background:#dcecff;border-color:#a9c9eb;border-left-color:#4a8bc4}.appointment.status-in_progress{background:#eadffd;border-color:#c5afe9;border-left-color:#8057b5}.appointment.status-paused{background:#e8ecef;border-color:#c6d0d7;border-left-color:#778895}.appointment.status-completed{background:#dff2e4;border-color:#aed6b8;border-left-color:#4d9a61}.appointment.status-canceled{background:#fde2e2;border-color:#eab2b2;border-left-color:#c95a5a;opacity:1;text-decoration:none}
.queue-card.status-unscheduled{background:#fff;border-color:#d7dee3}.queue-card.status-unscheduled:before{background:#9aa7b0}.queue-card.status-available{background:#fff4bd;border-color:#e7d47a}.queue-card.status-available:before{background:#d1a925}.queue-card.status-scheduled{background:#dcecff;border-color:#a9c9eb}.queue-card.status-scheduled:before{background:#4a8bc4}.queue-card.status-in_progress{background:#eadffd;border-color:#c5afe9}.queue-card.status-in_progress:before{background:#8057b5}.queue-card.status-paused{background:#e8ecef;border-color:#c6d0d7}.queue-card.status-paused:before{background:#778895}.queue-card.status-completed{background:#dff2e4;border-color:#aed6b8}.queue-card.status-completed:before{background:#4d9a61}.queue-card.status-canceled{background:#fde2e2;border-color:#eab2b2}.queue-card.status-canceled:before{background:#c95a5a}
.appointment-dialog :disabled{cursor:not-allowed;opacity:.62;background:#eef2f4}.appointment-dialog .technician-option:has(input:disabled){cursor:not-allowed;opacity:.62}
.modal-appointment-status-row{grid-template-columns:1fr 1fr 1fr}
.jobs-page{padding:26px 28px 34px}.jobs-heading{margin-bottom:15px}.jobs-result-count{color:var(--muted);font-size:16px}.jobs-result-count strong{color:var(--navy);font-size:19px}.jobs-toolbar{display:flex;gap:9px;margin-bottom:12px}.filter-popover{position:relative}.filter-popover>summary{list-style:none;height:38px;display:flex;align-items:center;gap:6px;padding:0 13px;border:1px solid var(--line);border-radius:9px;background:white;color:#344450;font-size:16px;font-weight:750;cursor:pointer}.filter-popover>summary::-webkit-details-marker{display:none}.filter-popover>summary:after{content:"⌄";font-size:16px;color:var(--muted)}.filter-popover[open]>summary{border-color:#8dbab6;color:var(--teal-dark);box-shadow:0 0 0 2px rgba(20,125,121,.08)}.popover-panel{position:absolute;top:45px;left:0;z-index:30;width:230px;padding:14px;background:white;border:1px solid var(--line);border-radius:11px;box-shadow:0 14px 34px rgba(20,40,52,.15)}.popover-panel>strong,.filter-section>strong{display:block;margin-bottom:9px;color:var(--navy);font-size:14px;text-transform:uppercase;letter-spacing:.08em}.column-picker .popover-panel label,.filter-check-list label{display:flex;align-items:center;gap:8px;padding:6px 3px;color:#40505b;font-size:16px;cursor:pointer}.popover-panel input[type=checkbox]{accent-color:var(--teal)}.advanced-filter-panel{width:min(760px,calc(100vw - 56px));display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px}.filter-date-range{display:grid;grid-template-columns:1fr 1fr;gap:8px}.filter-date-range strong{grid-column:1/-1}.filter-date-range label,.filter-keywords{color:var(--muted);font-size:14px;font-weight:700}.filter-date-range input,.filter-keywords input{display:block;width:100%;height:36px;margin-top:5px;padding:0 9px;border:1px solid var(--line);border-radius:7px;background:white;font-size:15px}.filter-check-list{max-height:138px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:5px 7px}.filter-check-list small{margin-left:auto;color:var(--muted);font-size:13px}.filter-keywords{grid-column:1/3}.filter-actions{display:flex;align-items:end;justify-content:flex-end}.filter-actions button{height:36px;border:1px solid var(--line);border-radius:8px;background:white;padding:0 12px;color:var(--teal-dark);font-size:15px;font-weight:750;cursor:pointer}.jobs-table-card{background:white;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 26px rgba(27,49,62,.055);overflow:hidden}.jobs-table-scroll{overflow:auto}.jobs-table{width:100%;min-width:1120px;border-collapse:collapse}.jobs-table th{height:46px;padding:0;border-bottom:1px solid var(--line);background:#f8fafb;text-align:left}.jobs-table th button{width:100%;height:46px;display:flex;align-items:center;gap:6px;border:0;background:transparent;padding:0 13px;color:#5d6973;font-size:13px;font-weight:850;text-transform:uppercase;letter-spacing:.07em;cursor:pointer}.jobs-table th button:hover,.jobs-table th button.sorted{color:var(--teal-dark);background:#edf6f5}.sort-indicator{font-size:17px}.jobs-table td{padding:13px;border-bottom:1px solid #e8edf0;color:#40505b;font-size:15px;vertical-align:middle}.jobs-table tbody tr:last-child td{border-bottom:0}.jobs-table tbody tr:hover td{background:#fbfdfd}.jobs-table td.col-name{max-width:250px}.jobs-table td.col-name strong{display:block;color:var(--ink);font-size:16px}.table-link{color:var(--teal-dark);font-weight:750;text-decoration:underline;text-decoration-color:#bdd8d5;text-underline-offset:2px}.job-status{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:20px;background:#edf1f3;color:#566570;font-size:13px;font-weight:800}.job-status.status-scheduled{background:#dcecff;color:#356d9c}.job-status.status-queued{background:#fff4bd;color:#8a6e10}.job-status.status-in_progress{background:#eadffd;color:#684197}.job-status.status-completed{background:#dff2e4;color:#337948}.job-status.status-canceled{background:#fde2e2;color:#a34040}.appointment-reference strong,.appointment-reference small{display:block}.appointment-reference strong{color:var(--navy);font-size:14px}.appointment-reference small{margin-top:3px;color:var(--muted);font-size:13px}.empty-value{color:#aab3b9}.column-hidden{display:none}.jobs-no-results,.jobs-empty{padding:50px;text-align:center;color:var(--muted);font-size:16px}
.autocomplete-filter{position:relative}.autocomplete-input{width:100%;height:36px;border:1px solid var(--line);border-radius:8px;background:white;padding:0 10px;font-size:15px}.autocomplete-input:focus{outline:2px solid rgba(20,125,121,.14);border-color:#8dbab6}.autocomplete-menu{position:absolute;top:40px;left:0;right:0;z-index:35;max-height:160px;overflow:auto;padding:4px;background:white;border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 24px rgba(20,40,52,.15)}.autocomplete-menu button{width:100%;min-height:34px;display:flex;align-items:center;justify-content:space-between;gap:8px;border:0;border-radius:5px;background:white;padding:6px 8px;text-align:left;color:#344450;font-size:15px;cursor:pointer}.autocomplete-menu button:hover,.autocomplete-menu button:focus{background:#eaf5f3;color:var(--teal-dark)}.autocomplete-menu button small{color:var(--muted);font-size:13px}.filter-tokens{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}.filter-token{display:inline-flex;align-items:center;gap:5px;min-height:25px;padding:2px 3px 2px 8px;border-radius:20px;background:#e4f2f0;color:var(--teal-dark);font-size:14px;font-weight:700}.filter-token button{width:19px;height:19px;display:grid;place-items:center;border:0;border-radius:50%;background:rgba(14,98,95,.1);color:var(--teal-dark);font-size:18px;line-height:1;cursor:pointer}.filter-token button:hover{background:rgba(14,98,95,.2)}
.autocomplete-menu button[hidden]{display:none}
.jobs-pagination{display:flex;align-items:center;justify-content:flex-end;gap:5px;color:var(--muted);font-size:14px}.jobs-pagination-top{margin-left:auto}.jobs-pagination-bottom{margin-top:11px}.jobs-pagination label{display:flex;align-items:center;gap:6px;margin-right:5px;font-weight:700}.jobs-pagination select{height:32px;border:1px solid var(--line);border-radius:7px;background:white;padding:0 7px;color:#40505b;font-size:14px}.jobs-pagination button{width:32px;height:32px;border:1px solid var(--line);border-radius:7px;background:white;color:var(--teal-dark);font-size:20px;cursor:pointer}.jobs-pagination button:hover:not(:disabled){border-color:#8dbab6;background:#edf6f5}.jobs-pagination button:disabled{opacity:.4;cursor:not-allowed}.jobs-pagination [data-page-label]{min-width:76px;text-align:center;font-weight:700;color:#50606b}
.invoice-filter-panel{width:min(920px,calc(100vw - 56px));grid-template-columns:repeat(4,1fr)}.amount-range{display:grid;grid-template-columns:1fr 1fr;gap:8px}.amount-range strong{grid-column:1/-1}.amount-range label{color:var(--muted);font-size:14px;font-weight:700}.amount-range input,.invoice-filter-panel select{width:100%;height:36px;margin-top:5px;border:1px solid var(--line);border-radius:7px;background:white;padding:0 9px;color:#40505b;font-size:15px}.invoices-table{min-width:1420px}.money-value{font-variant-numeric:tabular-nums;font-weight:800;color:var(--navy)!important}.invoice-status.status-draft{background:#edf1f3;color:#566570}.invoice-status.status-issued{background:#dcecff;color:#356d9c}.invoice-status.status-partially_paid{background:#fff4bd;color:#8a6e10}.invoice-status.status-paid{background:#dff2e4;color:#337948}.invoice-status.status-void{background:#fde2e2;color:#a34040}.aging-past-due{color:#b04444;font-weight:800}.aging-paid{color:#337948;font-weight:750}
.appointment-modal[hidden]{display:none}.appointment-modal{position:fixed;inset:0;z-index:1500;display:grid;place-items:center;padding:24px}.appointment-modal-backdrop{position:absolute;inset:0;background:rgba(14,31,43,.58);backdrop-filter:blur(2px)}.appointment-dialog{position:relative;width:min(780px,100%);max-height:calc(100vh - 48px);overflow:auto;background:white;border-radius:15px;box-shadow:0 24px 70px rgba(0,0,0,.25);padding:28px}.modal-close{position:absolute;right:15px;top:12px;border:0;background:transparent;color:var(--muted);font-size:30px;cursor:pointer}.modal-customer-row{display:flex;align-items:center;gap:8px;padding-right:35px;margin-bottom:22px;font-size:22px;color:var(--navy)}.modal-customer-row a,.field-link{color:var(--teal-dark);text-decoration:underline;text-decoration-color:#a8ceca;text-underline-offset:3px}.modal-grid{display:grid;gap:14px;margin-bottom:16px}.modal-job-row,.modal-time-row{grid-template-columns:1fr 2fr 1.35fr}.modal-status-row{grid-template-columns:1fr 1fr}.appointment-dialog label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:.07em}.appointment-dialog input,.appointment-dialog select,.appointment-dialog textarea,.readonly-field,.field-link{width:100%;min-height:40px;border:1px solid var(--line);border-radius:8px;background:white;padding:9px 10px;color:var(--ink);font-size:17px;font-weight:500;text-transform:none;letter-spacing:normal}.readonly-field,.field-link{display:flex;align-items:center;background:#f6f8f9}.modal-full-field{margin-bottom:16px}.appointment-dialog select[multiple]{min-height:112px}.appointment-dialog textarea{resize:vertical}.appointment-dialog label small{font-size:14px;font-weight:500;text-transform:none;letter-spacing:normal}.modal-actions{display:flex;justify-content:flex-end;gap:9px}.primary-button,.secondary-button{border-radius:8px;padding:10px 16px;font-size:16px;font-weight:750;cursor:pointer}.primary-button{border:1px solid var(--teal);background:var(--teal);color:white}.secondary-button{border:1px solid var(--line);background:white;color:var(--ink)}.modal-form-error{min-height:18px;margin:0 0 8px;color:#a13d3d;font-size:16px}.modal-open{overflow:hidden}
@media(max-width:900px){.app-header{padding:0 14px;gap:12px}.brand{min-width:auto}.brand>span:last-child{display:none}.schedule-page{padding:18px 14px}.page-heading{align-items:flex-start;gap:14px}.date-controls{flex-wrap:wrap;justify-content:flex-end}}
@media(max-width:900px){.jobs-page{padding:18px 14px}.advanced-filter-panel{grid-template-columns:1fr 1fr}.filter-keywords{grid-column:1/-1}}
@media(max-width:900px){.invoice-filter-panel{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.dispatch-layout{grid-template-columns:1fr}.queue-panel{height:auto;min-height:0;max-height:320px}.timeline-card{height:620px}}
@media(max-width:650px){.appointment-modal{padding:10px}.appointment-dialog{padding:24px 16px}.modal-job-row,.modal-time-row,.modal-status-row{grid-template-columns:1fr}.modal-customer-row{font-size:19px;flex-wrap:wrap}}
@media(max-width:650px){.modal-appointment-status-row{grid-template-columns:1fr}}
@media(max-width:650px){.advanced-filter-panel{width:calc(100vw - 28px);grid-template-columns:1fr;left:-74px}.filter-keywords{grid-column:1}.jobs-toolbar{flex-wrap:wrap}}
@media(max-width:650px){.invoice-filter-panel{grid-template-columns:1fr}}
.invoice-page-layout{display:grid;grid-template-columns:246px minmax(0,1fr);gap:14px;align-items:start}.invoice-page-layout.without-queues{display:block}.invoice-queue-column{display:grid;gap:12px;position:sticky;top:92px}.invoice-list-main{min-width:0}.invoice-queue-panel{min-height:220px;max-height:calc((100vh - 178px)/2);display:flex;flex-direction:column;background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden}.invoice-queue-panel .panel-heading{padding:13px 15px 10px}.invoice-queue-panel .panel-heading h2{font-size:20px}.invoice-queue-panel .queue-list{display:block;padding:9px;overflow:auto}.invoice-queue-panel .queue-card{display:block;min-width:0;margin:0 0 9px;text-decoration:none}.invoice-queue-panel .empty-queue{width:100%;padding:12px;min-height:70px}.invoice-list-main .jobs-toolbar{margin-top:0}
@media(max-width:950px){.invoice-page-layout{grid-template-columns:1fr}.invoice-queue-column{grid-template-columns:1fr 1fr;position:static}.invoice-queue-panel{max-height:280px}}
@media(max-width:650px){.invoice-queue-column{grid-template-columns:1fr}}
.invoice-lines-table th:nth-child(9),.invoice-lines-table td:nth-child(9){width:13ch;min-width:13ch}.line-total{font-variant-numeric:tabular-nums;text-align:right}.invoice-lines-table input[readonly]{background:#f3f6f7;color:#52616b;cursor:default}
.send-invoice-button{display:inline-flex;align-items:center;gap:7px}.send-invoice-button span{font-size:19px;line-height:1}.invoice-save-notice{position:fixed;right:24px;bottom:24px;z-index:1600;display:flex;align-items:center;gap:9px;padding:12px 16px;border:1px solid #a9d3b4;border-radius:10px;background:#e5f5e9;color:#286b3b;box-shadow:0 12px 30px rgba(31,72,44,.18);font-size:16px;font-weight:800;opacity:0;transform:translateY(8px);transition:opacity .18s ease,transform .18s ease}.invoice-save-notice[hidden]{display:none}.invoice-save-notice.is-visible{opacity:1;transform:translateY(0)}.invoice-save-notice span{width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:#4d9a61;color:white}
.customer-tax-card{display:block}.customer-tax-heading{margin-bottom:16px}.customer-tax-heading h2{margin:0;color:var(--navy);font:600 20px Georgia,serif}.customer-tax-heading p{margin:4px 0 0;color:var(--muted);font-size:15px}.customer-tax-card>label{display:grid;grid-template-columns:1fr 2fr 150px;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--line)}.customer-tax-card>label>span{color:var(--navy);font-size:16px;font-weight:800}.customer-tax-card>label small{color:var(--muted);font-size:14px}.customer-tax-card input{width:100%;height:38px;border:1px solid var(--line);border-radius:7px;padding:0 23px 0 8px}.customer-tax-card .invoice-editor-actions{margin-top:18px}
.invoice-editor-page{max-width:1320px;margin:0 auto;padding:28px}.invoice-editor-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:18px}.invoice-editor-heading h1{margin:0;font:600 30px Georgia,serif;color:var(--navy)}.invoice-status-select{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:14px;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.invoice-status-select select{height:40px;min-width:190px;border:1px solid var(--line);border-radius:8px;background:white;padding:0 10px;color:var(--ink);font-size:16px;text-transform:none;letter-spacing:normal}.invoice-header-card,.invoice-lines-card{background:white;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 26px rgba(27,49,62,.055)}.invoice-header-card{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;padding:20px}.invoice-header-card>div>span{display:block;margin-bottom:6px;color:var(--muted);font-size:13px;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.invoice-header-card strong,.invoice-header-card a{color:var(--navy);font-size:16px;font-weight:750}.invoice-header-card a{color:var(--teal-dark);text-decoration:underline;text-decoration-color:#bdd8d5}.invoice-reason{grid-column:1/-1;padding-top:16px;border-top:1px solid var(--line)}.invoice-reason p{margin:0;color:#40505b;font-size:16px;line-height:1.55}.invoice-lines-card{margin-top:16px;overflow:hidden}.invoice-section-heading{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line)}.invoice-section-heading h2{margin:0;color:var(--navy);font:600 20px Georgia,serif}.invoice-section-heading p{margin:4px 0 0;color:var(--muted);font-size:14px}.invoice-lines-scroll{overflow:auto}.invoice-lines-table{width:100%;min-width:1180px;border-collapse:collapse}.invoice-lines-table th{padding:10px 7px;background:#f8fafb;border-bottom:1px solid var(--line);color:#687481;font-size:12px;text-align:left;text-transform:uppercase;letter-spacing:.07em}.invoice-lines-table td{padding:7px;border-bottom:1px solid #e8edf0}.invoice-lines-table select,.invoice-lines-table input{width:100%;height:36px;border:1px solid var(--line);border-radius:7px;background:white;padding:0 8px;color:var(--ink);font-size:14px}.invoice-lines-table td:nth-child(1){width:68px}.invoice-lines-table td:nth-child(2){width:150px}.invoice-lines-table td:nth-child(3){min-width:210px}.invoice-lines-table td:nth-child(4){width:85px}.invoice-lines-table td:nth-child(5),.invoice-lines-table td:nth-child(6),.invoice-lines-table td:nth-child(7){width:115px}.line-order{white-space:nowrap}.line-order button,.delete-line{width:25px;height:28px;border:1px solid var(--line);background:white;color:var(--teal-dark);cursor:pointer}.delete-line{border:0;color:#a34040;font-size:24px}.percent-input{position:relative}.percent-input span{position:absolute;right:8px;top:10px;color:var(--muted);font-size:14px}.percent-input input{padding-right:22px}.taxable-cell{text-align:center}.taxable-cell input{width:16px;height:16px;accent-color:var(--teal)}.line-total{color:var(--navy);font-size:15px;font-weight:800;white-space:nowrap}.invoice-totals{width:320px;margin-left:auto;padding:16px 20px}.invoice-totals>div{display:flex;justify-content:space-between;padding:5px 0;color:var(--muted);font-size:15px}.invoice-totals strong{color:var(--navy)}.invoice-totals .grand-total{margin-top:6px;padding-top:11px;border-top:1px solid var(--line);font-size:19px;font-weight:850}.invoice-editor-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:12px}.invoice-form-error{min-height:18px;margin:10px 0 0;color:#a13d3d;font-size:16px}.invoice-editor-actions button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:750px){.invoice-editor-page{padding:18px 14px}.invoice-editor-heading{align-items:flex-start;flex-direction:column}.invoice-header-card{grid-template-columns:1fr 1fr}.invoice-reason{grid-column:1/-1}}
@media(max-width:650px){.jobs-pagination-top{width:100%;margin-left:0;justify-content:flex-start}.jobs-pagination-bottom{overflow-x:auto}.jobs-pagination label{margin-right:auto}}
.job-detail-page{padding:28px;max-width:1180px;margin:0 auto}.job-detail-heading,.job-section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.job-detail-actions{display:flex;gap:9px}.job-detail-actions form{margin:0}.primary-action,.secondary-action{height:38px;padding:0 14px;border-radius:8px;font-size:15px;font-weight:800;cursor:pointer}.primary-action{border:1px solid var(--teal);background:var(--teal);color:white}.secondary-action{border:1px solid var(--line);background:white;color:var(--teal-dark)}.job-summary-card{margin-top:18px;padding:20px;background:white;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 26px rgba(27,49,62,.055)}.job-summary-card dl{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;margin:0}.job-summary-card dt,.reason-for-call>span,.appointment-technicians>span,.appointment-work-done>span{display:block;margin-bottom:6px;color:var(--muted);font-size:13px;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.job-summary-card dd{margin:0;color:var(--navy);font-size:16px;font-weight:750}.job-summary-card a,.appointment-history-card a,.proposal-links a{color:var(--teal-dark);font-weight:800}.reason-for-call{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}.reason-for-call p,.appointment-work-done p{margin:0;color:#40505b;font-size:16px;line-height:1.55}.job-section-heading{margin:28px 0 12px}.job-section-heading h2{margin:0}.job-section-heading>span{color:var(--muted);font-size:15px}.appointment-history{display:grid;gap:10px}.appointment-history-card,.job-detail-empty{padding:16px;background:white;border:1px solid var(--line);border-radius:12px}.appointment-history-top{display:flex;align-items:center;justify-content:space-between}.appointment-history-top>div{display:flex;align-items:center;gap:14px}.appointment-history-top strong{color:var(--navy);font-size:15px}.appointment-technicians{margin-top:13px;color:#40505b;font-size:15px}.appointment-work-done{margin-top:13px;padding-top:13px;border-top:1px solid var(--line)}.proposal-links{display:grid;gap:8px}.proposal-links a{padding:13px;background:white;border:1px solid var(--line);border-radius:9px;text-decoration:none}.proposal-links a span{float:right;color:var(--muted)}
@media(max-width:900px){.job-summary-card dl{grid-template-columns:repeat(3,1fr)}}@media(max-width:650px){.job-detail-page{padding:18px 14px}.job-detail-heading{align-items:flex-start;flex-direction:column}.job-summary-card dl{grid-template-columns:1fr 1fr}.appointment-history-top,.appointment-history-top>div{align-items:flex-start;flex-direction:column}}
.job-detail-dialog{width:min(780px,100%);margin:0 auto;background:white;border:1px solid var(--line);border-radius:15px;box-shadow:0 12px 36px rgba(27,49,62,.1);padding:28px}.job-detail-dialog .modal-customer-row{padding-right:0}.job-detail-dialog label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:.07em}.job-status-date-row{grid-template-columns:1fr 1fr}.job-detail-dialog .readonly-field{min-height:40px}.job-reason-field{margin-bottom:18px}.job-long-readonly{display:block;min-height:92px;border:1px solid var(--line);border-radius:8px;background:#f8fafb;padding:11px;color:var(--ink);font-size:17px;font-weight:500;line-height:1.5;text-transform:none;letter-spacing:normal}.job-detail-dialog .job-detail-actions{justify-content:flex-end;padding-top:2px}.job-detail-dialog .job-detail-actions form{margin:0}.job-detail-dialog+.job-section-heading{max-width:780px;margin-left:auto;margin-right:auto}.job-detail-dialog~.appointment-history,.job-detail-dialog~.proposal-links{max-width:780px;margin-left:auto;margin-right:auto}
@media(max-width:650px){.job-detail-dialog{padding:24px 16px}.job-status-date-row{grid-template-columns:1fr}.job-detail-dialog .modal-customer-row{font-size:19px;flex-wrap:wrap}.job-detail-dialog .job-detail-actions{flex-wrap:wrap}}
.job-detail-dialog input,.job-detail-dialog select,.job-detail-dialog textarea,.appointment-work-done textarea{width:100%;min-height:40px;border:1px solid var(--line);border-radius:8px;background:white;padding:9px 10px;color:var(--ink);font:500 13px/1.4 inherit;text-transform:none;letter-spacing:normal}.job-detail-dialog textarea,.appointment-work-done textarea{resize:vertical}.job-customer-edit-row{display:grid;grid-template-columns:minmax(180px,1fr) auto minmax(180px,1fr) auto;align-items:end;gap:8px;margin-bottom:22px}.job-customer-edit-row>span{padding-bottom:11px;color:var(--muted)}.job-customer-edit-row .modal-invoice-link{align-self:center;margin-left:18px}.appointment-work-done{display:flex;flex-direction:column;gap:6px;margin-top:13px;padding-top:13px;border-top:1px solid var(--line)}.appointment-work-done textarea{background:#f8fafb;min-height:76px}.job-save-success{margin:0 0 10px;color:#337948;font-size:16px;font-weight:750}.job-detail-dialog .job-detail-actions{align-items:center}.job-detail-dialog .job-detail-actions>button{margin-right:auto}
@media(max-width:650px){.job-customer-edit-row{grid-template-columns:1fr}.job-customer-edit-row>span{display:none}.job-customer-edit-row .modal-invoice-link{margin:4px 0 0}.job-detail-dialog .job-detail-actions>button{width:100%;margin-right:0}}
.dispatch-layout{grid-template-columns:220px 220px 220px minmax(0,1fr);gap:14px}.scheduling-queue-card:before{background:#d5ad35}.scheduling-queue-panel[data-can-manage="false"] .queue-card{cursor:default}.incomplete-queue-card{cursor:grab;touch-action:none}.incomplete-queue-card:active{cursor:grabbing}.incomplete-queue-card:before{background:#c47a35}.appointment-number-button{border:0;background:transparent;padding:0;color:var(--teal-dark);font:800 12px inherit;text-decoration:underline;text-decoration-color:#bdd8d5;text-underline-offset:2px;cursor:pointer}
@media(max-width:1150px){.dispatch-layout{grid-template-columns:1fr}.queue-panels{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.timeline-card{grid-column:1/-1}.queue-panel{height:360px;min-height:0}}
@media(max-width:650px){.dispatch-layout{grid-template-columns:1fr}.timeline-card{grid-column:auto}}
.modal-job-identity-row{grid-template-columns:1fr 2fr 1.35fr}.modal-type-status-row{grid-template-columns:1fr 1fr 1fr}.modal-appointment-number{margin-left:auto;color:var(--navy);font-size:17px;font-weight:850;white-space:nowrap}.appointment-dialog input[type="date"]{cursor:pointer}
.modal-sticky-identity{position:sticky;top:-28px;z-index:25;margin-left:-8px;margin-right:-8px;padding:12px 8px;background:white;border-bottom:1px solid var(--line);box-shadow:0 5px 12px rgba(27,49,62,.06)}
@media(max-width:650px){.modal-job-identity-row,.modal-type-status-row{grid-template-columns:1fr}.modal-appointment-number{width:100%;margin-left:0}.modal-sticky-identity{top:-24px}}
.modal-readonly-notes{display:block;min-height:74px;border:1px solid var(--line);border-radius:8px;background:#f6f8f9;padding:10px;color:var(--ink);font-size:17px;font-weight:500;line-height:1.5;text-transform:none;letter-spacing:normal;white-space:pre-wrap}
.job-name-unit-row{grid-template-columns:2fr 1fr}.appointment-override-block{display:grid;gap:8px;margin-bottom:14px}.appointment-override-check{display:flex!important;flex-direction:row!important;align-items:center;gap:8px!important;min-height:auto!important;color:#40505b!important;font-size:15px!important;font-weight:750!important;text-transform:none!important;letter-spacing:normal!important}.appointment-override-check input{width:16px!important;height:16px!important;min-height:16px!important;accent-color:var(--teal)}.appointment-override-block textarea{width:100%;min-height:80px;border:1px solid var(--line);border-radius:8px;padding:10px;resize:vertical}.appointment-override-block input[type="text"],.appointment-override-block label>input:not([type]){width:100%}.appointment-override-block :disabled{background:#eef2f4;color:#66747e}
.export-invoice-button{display:inline-flex;align-items:center;gap:7px}.export-invoice-button span{font-size:19px;line-height:1}.quickbooks-sync-summary{margin-top:8px;text-align:right;color:var(--muted);font-size:14px}.quickbooks-sync-summary strong{color:var(--navy)}
.invoice-export-controls{display:flex;align-items:center;gap:7px}.invoice-export-controls button{white-space:nowrap}.invoice-export-controls #invoice-export-result{max-width:290px;color:var(--muted);font-size:14px}.invoices-table .col-select{width:42px;min-width:42px;text-align:center}.invoices-table .col-select input{width:15px;height:15px;accent-color:var(--teal)}.qb-sync-label{display:block;margin-top:3px;color:var(--muted);font-size:12px;text-decoration:none}.invoices-table .col-number{min-width:110px}
.button-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.page-heading-actions{display:flex;align-items:center;gap:14px}.po-table{min-width:1340px}.po-header-card label{display:block}.po-header-card select,.po-header-card input{width:100%;height:40px;border:1px solid var(--line);border-radius:8px;background:white;padding:0 10px;color:var(--ink);font-size:16px}.po-header-card label>span{display:block;margin-bottom:6px;color:var(--muted);font-size:13px;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.po-lines-table{min-width:760px}.po-lines-table td:nth-child(2){min-width:360px}.po-lines-table td:nth-child(3),.po-lines-table td:nth-child(4){width:140px}.po-totals label{display:flex;align-items:center;justify-content:space-between;padding:5px 0;color:var(--muted);font-size:15px}.po-totals input{width:130px;height:34px;border:1px solid var(--line);border-radius:7px;padding:0 9px;text-align:right}.modal-actions .button-link{margin-right:auto}
.po-header-card label[hidden]{display:none}
.searchable-select{position:relative;width:100%;min-width:0}.searchable-select-input{width:100%!important;height:inherit;min-height:32px;border:1px solid var(--line);border-radius:7px;background:white;padding:0 28px 0 9px;color:var(--ink);font:inherit}.searchable-select:after{content:"⌄";position:absolute;right:9px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.searchable-select.is-disabled:after{opacity:.45}.searchable-select-input:focus{outline:2px solid rgba(20,125,121,.14);border-color:#8dbab6}.searchable-select-input:disabled{cursor:not-allowed;background:#eef2f4;opacity:.65}.searchable-select-native{position:absolute!important;width:1px!important;height:1px!important;inset:auto auto 0 0!important;opacity:0!important;pointer-events:none!important}.searchable-select-menu{position:absolute;z-index:100;top:calc(100% + 4px);left:0;min-width:100%;width:max-content;max-width:min(420px,80vw);max-height:220px;overflow:auto;padding:4px;border:1px solid var(--line);border-radius:8px;background:white;box-shadow:0 12px 28px rgba(20,40,52,.18)}.searchable-select-menu[hidden]{display:none}.searchable-select-menu button{display:block;width:100%;min-height:32px;border:0;border-radius:5px;background:white;padding:6px 9px;text-align:left;white-space:nowrap;color:#344450;font-size:15px;cursor:pointer}.searchable-select-menu button:hover,.searchable-select-menu button.selected{background:#eaf5f3;color:var(--teal-dark)}.jobs-pagination .searchable-select{width:72px}.jobs-pagination .searchable-select-input{height:32px;font-size:14px}.invoice-lines-table .searchable-select-input{height:36px;font-size:14px}.appointment-dialog .searchable-select-input,.job-detail-dialog .searchable-select-input,.po-header-card .searchable-select-input{height:40px;font-size:17px}
.vendors-table{min-width:1100px}.vendors-table .col-vendor{min-width:180px}.vendors-table .col-balance{min-width:130px}.vendors-table .col-aging{min-width:190px}.vendors-table .col-address{min-width:260px}.vendors-table .col-email{min-width:200px}.vendors-table .col-phone{min-width:145px}.vendors-table .col-terms{min-width:90px}.header-note{font-weight:600;text-transform:none;letter-spacing:0;color:#87939c}
.vendor-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-bottom:18px}.vendor-form-grid label{min-width:0}.vendor-form-grid small{color:var(--muted);font-size:14px;font-weight:500;text-transform:none;letter-spacing:normal}.vendor-form-grid .field-warning{color:#a5473d;font-weight:700;line-height:1.4}.vendor-name-field,.vendor-address-field{grid-column:1/-1}@media(max-width:650px){.vendor-form-grid{grid-template-columns:1fr}.vendor-name-field,.vendor-address-field{grid-column:auto}}
.duplicate-creation-warning{margin:0 0 18px;padding:16px 18px;border:1px solid #e4b25f;border-left:5px solid #d78a16;border-radius:10px;background:#fff8e8;color:var(--ink)}.duplicate-creation-warning h2{margin:0 0 6px;font-size:21px;color:#81500b}.duplicate-creation-warning p{margin:0 0 12px;line-height:1.45}.duplicate-creation-warning ul{display:grid;gap:8px;margin:0;padding:0;list-style:none}.duplicate-creation-warning li{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 11px;border:1px solid #efd39e;border-radius:7px;background:#fff}.duplicate-creation-warning a{font-weight:800;color:var(--teal-dark);text-decoration:underline}.duplicate-creation-warning span{color:var(--muted);font-size:15px;text-align:right}@media(max-width:650px){.duplicate-creation-warning li{align-items:flex-start;flex-direction:column;gap:4px}.duplicate-creation-warning span{text-align:left}}
.entity-table{min-width:1050px}.entity-table th{min-width:140px}.entity-table .col-address{min-width:260px}.customer-tax-section{display:block;margin-top:22px}.credit-hold{display:inline-flex;padding:4px 8px;border-radius:12px;font-size:13px;font-weight:800}.credit-hold-yes{background:#fde8e8;color:#9b3434}.credit-hold-no{background:#e7f4ec;color:#347249}.check-field{display:flex!important;flex-direction:row!important;align-items:center;gap:8px!important;align-self:end;min-height:40px}.check-field input{width:16px!important;min-height:16px!important}.vendor-form-grid textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:9px 10px;font:inherit}
.customer-name-cell{display:flex;align-items:center;gap:8px}.customer-edit-link{width:22px;height:22px;display:inline-grid;place-items:center;flex:0 0 22px;border:1px solid var(--line);border-radius:6px;background:#f8fafb;color:var(--teal-dark);font-size:17px;text-decoration:none}.customer-edit-link:hover{border-color:#9bc9c3;background:#eaf5f3}.location-jobs-table{min-width:1220px}
.location-tax-table{display:grid}.location-tax-row{display:grid;grid-template-columns:minmax(130px,1fr) minmax(240px,2fr) minmax(100px,1fr) 150px;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--line)}.location-tax-row>strong{color:var(--navy);font-size:16px}.location-tax-row>small{color:var(--muted);font-size:14px}.location-tax-header{padding-top:0;border-top:0;color:var(--muted);font-size:13px;font-weight:850;text-transform:uppercase;letter-spacing:.08em}@media(max-width:700px){.location-tax-row{grid-template-columns:1fr 1fr}.location-tax-header{display:none}}
.tax-code-table{display:grid}.tax-code-row{display:grid;grid-template-columns:minmax(160px,1fr) 140px minmax(130px,1fr);align-items:center;gap:16px;padding:12px 0;border-top:1px solid var(--line)}.tax-code-row strong{color:var(--navy);font-size:16px}.tax-code-row span{font-weight:800}.tax-code-row small{color:var(--muted)}.tax-code-header{padding-top:0;border-top:0;color:var(--muted);font-size:13px;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.tax-code-header span{font-weight:850}
.inactive-toggle{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:15px;font-weight:750}.inactive-toggle input{width:16px;height:16px;accent-color:var(--teal)}.timecard-page{padding:26px 28px}.timecard-week-label{margin:5px 0 0;color:var(--muted);font-size:16px}.timecard-scroll{overflow:auto;border:1px solid var(--line);border-radius:14px;background:white;box-shadow:0 8px 26px rgba(27,49,62,.055)}.timecard-grid{display:grid;grid-template-columns:68px repeat(7,minmax(160px,1fr));min-width:1190px}.timecard-hours,.timecard-day{position:relative}.timecard-day-heading,.timecard-day header{height:46px;position:sticky;top:0;z-index:4;background:#f8fafb;border-bottom:1px solid var(--line)}.timecard-day-heading{display:grid;place-items:center;color:var(--muted);font-size:13px;font-weight:850}.timecard-hours span{position:absolute;left:8px;color:var(--muted);font-size:13px;transform:translateY(-50%)}.timecard-day{border-left:1px solid var(--line)}.timecard-day header{display:flex;align-items:center;justify-content:center;gap:5px}.timecard-day header strong{color:var(--navy);font-size:15px}.timecard-day header span{color:var(--muted);font-size:14px}.timecard-day-track{position:relative;height:1152px;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 47px,#e4eaed 47px,#e4eaed 48px)}.timecard-entry{position:absolute;left:5px;right:5px;z-index:2;overflow:hidden;border:1px solid #9bc9c3;border-left:4px solid var(--teal);border-radius:7px;background:#d9eeeb;padding:5px 7px;text-align:left;cursor:pointer;box-shadow:0 2px 5px rgba(25,62,66,.12)}.timecard-entry:hover{filter:brightness(.97);z-index:3}.timecard-entry strong,.timecard-entry span,.timecard-entry small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timecard-entry strong{color:var(--teal-dark);font-size:13px}.timecard-entry span{font-size:13px;font-weight:750}.timecard-entry small{color:#58716f;font-size:12px}.timecard-entry.type-shop,.timecard-entry.type-other{background:#e8edf0;border-color:#cbd4da;border-left-color:#8696a1}.timecard-entry.type-travel{background:#fff0cf;border-color:#e8c979;border-left-color:#d59b28}.timecard-entry.type-training,.timecard-entry.type-pto{background:#e8e1f2;border-color:#c9b8de;border-left-color:#8062a6}.time-entry-dialog{width:min(760px,100%)}@media(max-width:700px){.timecard-page{padding:18px 14px}.timecard-page .page-heading{align-items:flex-start;flex-direction:column}.timecard-page .date-controls{justify-content:flex-start}}
.employee-time-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}.employee-time-fields fieldset{display:grid;grid-template-columns:1.6fr .7fr .7fr;gap:10px;margin:0;padding:13px;border:1px solid var(--line);border-radius:10px}.employee-time-fields legend{padding:0 6px;color:var(--navy);font-size:15px;font-weight:850;text-transform:uppercase}.timecard-date-control{display:grid;grid-template-columns:minmax(0,1fr) 42px;width:100%;height:40px;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:#fff}.timecard-date-control input{width:100%!important;min-width:0!important;height:38px!important;min-height:38px!important;border:0!important;border-radius:0!important;background:#fff!important}.timecard-date-control input::-webkit-calendar-picker-indicator{display:none!important;-webkit-appearance:none}.timecard-calendar-trigger{display:grid;place-items:center;width:42px;height:40px;margin:-1px -1px -1px 0;border:1px solid var(--line);border-radius:0 8px 8px 0;background:#f7fafb;color:var(--teal-dark);cursor:pointer}.timecard-calendar-trigger:hover,.timecard-calendar-trigger:focus-visible{background:#dff1ef;color:var(--teal-dark);outline:none}.timecard-calendar-trigger span{display:block;line-height:1}.timecard-entry.type-pto{cursor:not-allowed}@media(max-width:700px){.employee-time-fields{grid-template-columns:1fr}.employee-time-fields fieldset{grid-template-columns:1.4fr .7fr .7fr}}
.data-page{padding:28px;max-width:1280px;margin:0 auto}.data-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.data-card-grid>a{min-height:170px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:28px;border:1px solid var(--line);border-radius:15px;background:white;box-shadow:0 8px 26px rgba(27,49,62,.055);transition:transform .15s,border-color .15s}.data-card-grid>a:hover{transform:translateY(-2px);border-color:#9bc9c3}.data-card-grid>a>span{width:42px;height:42px;display:grid;place-items:center;margin-bottom:16px;border-radius:11px;background:#e8f3f2;color:var(--teal-dark);font-size:24px;font-weight:850}.data-card-grid strong{color:var(--navy);font:600 22px Georgia,serif}.data-card-grid small{margin-top:6px;color:var(--muted)}.data-empty-card,.data-security-note{padding:24px;border:1px solid var(--line);border-radius:14px;background:white;color:var(--muted)}.pricebook-sections{display:grid;gap:18px}.pricebook-sections .jobs-table-card h2,.account-usage h2{margin:0;padding:18px 20px;border-bottom:1px solid var(--line);color:var(--navy);font:600 19px Georgia,serif}.data-editor{margin-bottom:20px}.account-usage{margin-top:20px}.password-list{display:grid;gap:10px;margin-top:16px}.password-row{display:grid;grid-template-columns:minmax(140px,1fr) minmax(120px,1fr) minmax(180px,1fr) minmax(180px,1fr) auto;align-items:end;gap:14px;padding:16px;border:1px solid var(--line);border-radius:11px;background:white}.password-row small{color:var(--muted)}.password-row label{color:var(--muted);font-size:13px;font-weight:850;text-transform:uppercase}.password-row input,.tax-code-edit-row input{width:100%;height:38px;border:1px solid var(--line);border-radius:7px;padding:0 9px}.tax-code-editor-table{overflow:auto;border:1px solid var(--line);border-radius:13px;background:white}.tax-code-edit-row{min-width:680px;display:grid;grid-template-columns:2fr 1fr 1fr 150px;align-items:center;gap:14px;padding:12px 16px;border-bottom:1px solid var(--line)}.tax-code-edit-header{background:#f8fafb;color:var(--muted);font-size:13px;font-weight:850;text-transform:uppercase}.new-tax-code-row{background:#fbfdfd}@media(max-width:800px){.data-card-grid{grid-template-columns:1fr}.password-row{grid-template-columns:1fr 1fr}.password-row .primary-action{grid-column:1/-1}}
.job-type-row{min-width:720px;display:grid;grid-template-columns:minmax(180px,2fr) minmax(130px,1fr) 90px 70px minmax(190px,auto);align-items:center;gap:14px;padding:12px 16px;border-bottom:1px solid var(--line)}.job-type-header{background:#f8fafb;color:var(--muted);font-size:13px;font-weight:850;text-transform:uppercase}.job-type-actions,.page-heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.job-type-actions form{margin:0}

/* Search menus are attached to the document body, so they must sit above modal backdrops. */
.searchable-select-menu{z-index:2100}
.searchable-select:after{display:none}
.searchable-select-toggle{position:absolute;z-index:2;top:1px;right:1px;width:32px;height:calc(100% - 2px);display:grid;place-items:center;border:0;border-left:1px solid transparent;border-radius:0 7px 7px 0;background:transparent;color:var(--muted);font-size:18px;cursor:pointer}
.searchable-select-toggle:hover,.searchable-select-toggle:focus{border-left-color:var(--line);background:#edf6f5;color:var(--teal-dark);outline:0}
.searchable-select-toggle:disabled{cursor:not-allowed;opacity:.45;background:transparent}
.settings-page{max-width:920px;margin:0 auto;padding:28px}.settings-card{display:grid;gap:24px;padding:26px;border:1px solid var(--line);border-radius:14px;background:white;box-shadow:0 8px 26px rgba(27,49,62,.055)}.settings-card h2{margin:4px 0 8px;color:var(--navy);font:600 22px Georgia,serif}.settings-card p{color:var(--muted);font-size:16px;line-height:1.55}.settings-time-grid{display:grid;grid-template-columns:repeat(2,minmax(0,240px));gap:18px}.settings-time-grid label{color:var(--muted);font-size:14px;font-weight:850;text-transform:uppercase;letter-spacing:.07em}.settings-time-grid label>span{display:block;margin-bottom:7px}.settings-time-grid select{width:100%;height:40px;border:1px solid var(--line);border-radius:8px;background:white;padding:0 10px;color:var(--ink)}.settings-actions{display:flex;justify-content:flex-end}.settings-error{margin:0!important;color:#a13d3d!important;font-weight:700}@media(max-width:650px){.settings-page{padding:18px 14px}.settings-time-grid{grid-template-columns:1fr}}
.job-create-dialog{position:relative;width:min(820px,100%);max-height:calc(100vh - 48px);overflow:visible;border-radius:15px;background:white;padding:28px;box-shadow:0 24px 70px rgba(0,0,0,.25)}.job-create-dialog label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:.07em}.job-create-dialog input,.job-create-dialog select,.job-create-dialog textarea{width:100%;min-height:40px;border:1px solid var(--line);border-radius:8px;background:white;padding:9px 10px;color:var(--ink);font-size:17px;font-weight:500;text-transform:none;letter-spacing:normal}.job-create-dialog textarea{resize:vertical}.job-create-dialog .job-reason-field{margin-bottom:16px}@media(max-width:650px){.job-create-dialog{padding:24px 16px;overflow:auto}.job-create-dialog .modal-job-row,.job-create-dialog .job-name-unit-row{grid-template-columns:1fr}}
.job-action-spacer{flex:1 1 auto}.job-detail-dialog .job-detail-actions>button{margin-right:0}@media(max-width:650px){.job-action-spacer{display:none}.job-detail-dialog .job-detail-actions>button{width:auto}}
.job-create-attempted input:invalid,.job-create-attempted select:invalid,.job-create-attempted textarea:invalid{border-color:#c94242!important;box-shadow:0 0 0 2px rgba(201,66,66,.12)!important}.job-create-attempted .searchable-select:has(select:invalid) .searchable-select-input{border-color:#c94242!important;box-shadow:0 0 0 2px rgba(201,66,66,.12)!important}
#save-error-message{white-space:pre-line}
.entity-timecard-dialog{width:min(880px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column}.entity-timecard-dialog>.modal-customer-row{flex:0 0 auto}.entity-timecard-groups{min-height:160px;max-height:58vh;overflow:auto;display:grid;gap:14px;padding:2px 3px 10px}.entity-timecard-appointment{display:grid;gap:9px;padding:14px;border:1px solid var(--line);border-radius:11px;background:#f8fafb}.entity-timecard-appointment>.appointment-number-button{justify-self:start}.entity-timecard-day{display:grid;gap:7px}.entity-timecard-day h4{margin:0;color:var(--muted);font-size:14px;font-weight:850;text-transform:uppercase;letter-spacing:.06em}.entity-timecard-entry-list{display:grid;gap:6px}.entity-timecard-entry{display:grid;gap:4px;width:100%;padding:10px 12px;border:1px solid #b8d6d2;border-left:4px solid var(--teal);border-radius:8px;background:#edf7f5;text-align:left;cursor:pointer}.entity-timecard-entry:hover{background:#e3f2f0}.entity-timecard-entry-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.entity-timecard-entry strong{color:var(--navy);font-size:15px}.entity-timecard-entry b{color:var(--teal-dark);font-size:14px}.entity-timecard-entry>span:not(.entity-timecard-entry-top){color:#455862;font-size:14px;font-weight:700}.entity-timecard-entry small{color:var(--muted);font-size:13px}.entity-timecard-empty{margin:0;padding:18px;border:1px dashed var(--line);border-radius:9px;color:var(--muted);text-align:center}.timecard-entry-modal{z-index:2300}.timecard-entry-modal .appointment-dialog{overflow:visible}.timecard-entry-modal input,.timecard-entry-modal select,.timecard-entry-modal textarea{width:100%;min-height:40px;border:1px solid var(--line);border-radius:8px;background:white;padding:9px 10px}.timecard-entry-modal label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:.07em}@media(max-width:650px){.entity-timecard-dialog{max-height:calc(100vh - 20px);padding:22px 14px}.entity-timecard-groups{max-height:62vh}.entity-timecard-dialog .modal-actions{flex-wrap:wrap}.timecard-entry-modal .modal-grid{grid-template-columns:1fr}}
.employee-timecard-link{color:inherit;text-decoration:none;cursor:pointer;transition:background-color .15s,box-shadow .15s}.employee-timecard-link:hover,.employee-timecard-link:focus-visible{background:#e8f3f2;box-shadow:inset -3px 0 0 var(--teal);outline:0}.employee-timecard-link:focus-visible strong{color:var(--teal-dark)}
.danger-button{min-height:38px;padding:0 13px;border:1px solid #d6a2a2;border-radius:8px;background:#fff7f7;color:#a23b3b;font-size:15px;font-weight:800;cursor:pointer}.danger-button:hover{border-color:#bd6868;background:#fce9e9}.appointment-history-controls{display:flex;align-items:center;gap:9px}.appointment-delete-icon{width:28px;height:28px;display:grid;place-items:center;border:1px solid #e0b4b4;border-radius:7px;background:#fff8f8;color:#a23b3b;font-size:21px;line-height:1;cursor:pointer}.appointment-delete-icon:hover{background:#fce8e8}.jobs-page-layout{display:grid;grid-template-columns:246px minmax(0,1fr);gap:14px;align-items:start}.jobs-list-main{min-width:0}.jobs-no-appointment-queue{height:calc(100vh - 170px);position:sticky;top:92px}.jobs-queue-card{display:block;color:inherit;text-decoration:none}.jobs-queue-card:hover{border-color:#9bc9c3;background:#f5fbfa}@media(max-width:950px){.jobs-page-layout{grid-template-columns:1fr}.jobs-no-appointment-queue{position:static;height:auto;min-height:0;max-height:300px}}
.audit-history-modal{z-index:2400}.audit-history-dialog{width:min(1180px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column}.audit-history-help{margin:0 0 12px;color:var(--muted);font-size:14px}.audit-history-table-wrap{min-height:180px;overflow:auto;border:1px solid var(--line);border-radius:10px}.audit-history-table{width:100%;min-width:1040px;border-collapse:collapse}.audit-history-table th{position:sticky;top:0;z-index:2;padding:10px 12px;border-bottom:1px solid var(--line);background:#f5f8f9;color:var(--muted);font-size:13px;font-weight:850;text-align:left;text-transform:uppercase;letter-spacing:.06em}.audit-history-table th:first-child,.audit-history-table td:first-child{width:64px;text-align:center}.audit-history-table td{padding:10px 12px;border-bottom:1px solid #e7ecef;color:#3d4d57;font-size:14px;vertical-align:top;white-space:pre-wrap;overflow-wrap:anywhere}.audit-history-table td:nth-child(2),.audit-history-table td:nth-child(3){white-space:nowrap}.audit-history-table td:nth-child(5){font-weight:800;color:var(--navy)}.audit-history-table tbody tr:hover{background:#f8fbfb}.audit-history-table tbody tr.is-rollbackable{cursor:pointer}.audit-history-table tbody tr.is-selected{background:#e7f4f2;box-shadow:inset 4px 0 0 var(--teal)}.audit-history-table input[type=radio]{width:18px;height:18px;accent-color:var(--teal);cursor:pointer}.audit-history-dialog>.modal-actions{flex:0 0 auto}@media(max-width:650px){.audit-history-dialog{max-height:calc(100vh - 20px);padding:22px 14px}.audit-history-table-wrap{max-height:70vh}}

.page-heading-actions{display:flex;align-items:center;gap:9px}.pto-grid{display:grid;gap:16px}.pto-employee-card{display:grid;gap:18px}.pto-employee-card>header{display:flex;align-items:center;justify-content:space-between;gap:20px}.pto-balances{display:flex;gap:10px}.pto-balances span{min-width:120px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#f6f9fa;color:var(--muted);font-size:14px;text-align:center}.pto-balances strong{display:block;color:var(--teal-dark);font-size:22px}.pto-config-form,.pto-action-form{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));align-items:end;gap:12px}.pto-action-form{grid-template-columns:repeat(4,minmax(120px,1fr)) 2fr auto}.pto-config-form label,.pto-action-form label{display:grid;gap:6px;color:var(--muted);font-size:14px;font-weight:800}.pto-config-form input,.pto-action-form input,.pto-action-form select{width:100%;height:40px;border:1px solid var(--line);border-radius:8px;padding:0 10px}.pto-history{display:grid;gap:5px;margin-top:10px}.pto-history p{margin:0;padding:8px 10px;border:1px solid var(--line);border-radius:7px;color:#40505b;font-size:14px}.pto-history small{display:block;margin-top:3px;color:var(--muted)}.payroll-dialog{width:min(1100px,100%)}.payroll-run-field{display:flex;align-items:end}.payroll-results{max-height:50vh;overflow:auto;margin:8px 0 16px;border:1px solid var(--line);border-radius:9px}.payroll-results:empty{display:none}.payroll-table{min-width:900px}.payroll-table input{min-width:100px}.jobs-toolbar>.primary-action,.jobs-toolbar>.secondary-action{flex:0 0 auto}@media(max-width:850px){.pto-config-form,.pto-action-form{grid-template-columns:1fr 1fr}.pto-employee-card>header{align-items:flex-start;flex-direction:column}}@media(max-width:520px){.pto-config-form,.pto-action-form{grid-template-columns:1fr}.pto-balances{width:100%;flex-direction:column}.pto-balances span{width:100%}}
.location-editor-dialog{width:min(900px,100%)}.location-editor-dialog .vendor-form-grid{margin-bottom:16px}
.pto-config-form{grid-template-columns:minmax(150px,1fr) minmax(260px,2fr) auto}.pto-accrual-control{display:grid;grid-template-columns:minmax(90px,1fr) auto minmax(125px,1fr);align-items:center;gap:7px}.pto-accrual-control b{color:var(--muted);font-size:14px}.pto-accrual-control select{width:100%;height:40px;border:1px solid var(--line);border-radius:8px;padding:0 8px;background:white}@media(max-width:1050px){.pto-config-form{grid-template-columns:1fr 1fr}}@media(max-width:520px){.pto-config-form{grid-template-columns:1fr}}
.pto-action-buttons{display:flex;justify-content:flex-end;gap:10px}.pto-modal[hidden]{display:none}.pto-modal{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;padding:20px}.pto-modal-backdrop{position:absolute;inset:0;border:0;background:rgba(18,38,51,.62)}.pto-modal>section{position:relative;width:min(680px,100%);max-height:calc(100vh - 40px);overflow:auto;border-radius:15px;background:#fff;padding:24px;box-shadow:0 24px 70px rgba(0,0,0,.25)}.pto-modal>section>header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.pto-modal h2{margin:2px 0}.pto-modal header p:last-child{margin:2px 0;color:var(--muted)}.pto-modal-close{border:0;background:transparent;color:var(--muted);font-size:28px;cursor:pointer}.pto-modal form{display:grid;grid-template-columns:1fr 1fr;gap:14px}.pto-modal form label{display:grid;gap:6px;color:var(--muted);font-size:14px;font-weight:800}.pto-modal input,.pto-modal select,.pto-modal textarea{width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;padding:10px}.pto-modal input,.pto-modal select{height:42px}.pto-modal textarea{resize:vertical}.pto-modal-wide,.pto-modal footer{grid-column:1/-1}.pto-modal footer{display:flex;justify-content:flex-end;gap:9px;margin-top:5px}.pto-use-note{margin:0;color:var(--muted);font-size:14px}.pto-modal-open{overflow:hidden}@media(max-width:600px){.pto-modal form{grid-template-columns:1fr}.pto-modal-wide,.pto-modal footer{grid-column:1}.pto-action-buttons{justify-content:stretch}.pto-action-buttons button{flex:1}}
.job-action-rows{display:grid;gap:9px;margin-top:2px}.job-action-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.job-action-row form{display:block;margin:0}.job-action-row button,.job-action-row a{width:100%;min-height:38px}.job-action-placeholder{display:block}@media(max-width:650px){.job-action-row{grid-template-columns:repeat(2,minmax(0,1fr))}.job-action-placeholder{display:none}}
.jobs-table{min-width:1220px}.jobs-table .col-type{min-width:125px}
.page-heading-new-stack{display:flex;flex-direction:column;align-items:stretch;gap:7px}.page-heading-new-stack .inactive-toggle{justify-content:flex-end}.page-heading-new-stack .primary-action{min-width:132px}.invoice-editor-actions form{display:flex;margin:0}@media(max-width:650px){.page-heading-new-stack{width:100%;align-items:stretch}.page-heading-new-stack .inactive-toggle{justify-content:flex-start}}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.global-search{position:relative;flex:0 1 300px;min-width:180px;margin-left:auto}.global-search>input{width:100%;height:38px;padding:0 36px 0 35px;border:1px solid var(--line);border-radius:10px;background:#f8fafb;color:var(--ink);font-size:16px;outline:0}.global-search>input:focus{border-color:color-mix(in srgb,var(--teal) 60%,white);background:#fff;box-shadow:0 0 0 3px color-mix(in srgb,var(--teal) 12%,transparent)}.global-search-icon{position:absolute;left:12px;top:50%;z-index:2;transform:translateY(-53%);color:var(--muted);font-size:24px;pointer-events:none}.global-search-results{position:absolute;top:44px;right:0;z-index:2500;width:min(620px,calc(100vw - 28px));max-height:min(680px,calc(100vh - 92px));overflow:auto;padding:8px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 18px 48px rgba(18,42,56,.2)}.global-search-results section+section{margin-top:7px;padding-top:7px;border-top:1px solid #edf1f3}.global-search-results h3{margin:0;padding:6px 9px;color:var(--muted);font-size:13px;font-weight:850;text-transform:uppercase;letter-spacing:.1em}.global-search-results a{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:48px;padding:7px 9px;border-radius:8px}.global-search-results a:hover,.global-search-results a.active{background:color-mix(in srgb,var(--teal) 9%,white)}.global-search-results a>span{min-width:0}.global-search-results strong,.global-search-results small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-search-results strong{color:var(--navy);font-size:15px}.global-search-results small{margin-top:3px;color:var(--muted);font-size:13px}.global-search-results em{flex:0 0 auto;padding:3px 7px;border-radius:20px;background:#edf2f4;color:#5a6973;font-size:12px;font-style:normal;font-weight:800}.global-search-empty{padding:28px 16px;color:var(--muted);font-size:15px;text-align:center}@media(max-width:1100px){.app-header{gap:12px}.global-search{flex-basis:220px}.global-label-actions{display:none}}@media(max-width:760px){.global-search{min-width:42px;flex-basis:42px}.global-search>input{padding-left:34px}.global-search>input:not(:focus){font-size:0}.global-search>input:not(:focus)::placeholder{color:transparent}.global-search:focus-within{position:absolute;left:14px;right:14px;z-index:40;flex-basis:auto}.global-search-results{width:100%}}
.settings-section-heading{padding-top:20px;border-top:1px solid var(--line)}.settings-color-grid{display:grid;grid-template-columns:repeat(2,minmax(0,240px));gap:14px 18px}.appointment-color-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.settings-color-grid>label{color:var(--muted);font-size:14px;font-weight:850;text-transform:uppercase;letter-spacing:.07em}.settings-color-grid>label>span:first-child{display:block;margin-bottom:7px}.color-input{height:42px;display:flex;align-items:center;gap:10px;padding:5px 10px 5px 5px;border:1px solid var(--line);border-radius:8px;background:#fff}.color-input input[type=color]{width:50px;height:30px;padding:0;border:0;border-radius:5px;background:transparent;cursor:pointer}.color-input input[type=color]::-webkit-color-swatch-wrapper{padding:0}.color-input input[type=color]::-webkit-color-swatch{border:1px solid #cbd5db;border-radius:5px}.color-input output{color:#44545f;font:700 11px ui-monospace,SFMono-Regular,Consolas,monospace;text-transform:uppercase;letter-spacing:0}@media(max-width:700px){.settings-color-grid,.appointment-color-grid{grid-template-columns:1fr 1fr}}@media(max-width:450px){.settings-color-grid,.appointment-color-grid{grid-template-columns:1fr}}
.appointment.status-unscheduled{background:color-mix(in srgb,var(--appointment-unscheduled) 18%,white);border-color:color-mix(in srgb,var(--appointment-unscheduled) 45%,white);border-left-color:var(--appointment-unscheduled)}.appointment.status-available{background:color-mix(in srgb,var(--appointment-available) 24%,white);border-color:color-mix(in srgb,var(--appointment-available) 50%,white);border-left-color:var(--appointment-available)}.appointment.status-scheduled{background:color-mix(in srgb,var(--appointment-scheduled) 22%,white);border-color:color-mix(in srgb,var(--appointment-scheduled) 48%,white);border-left-color:var(--appointment-scheduled)}.appointment.status-in_progress{background:color-mix(in srgb,var(--appointment-in-progress) 21%,white);border-color:color-mix(in srgb,var(--appointment-in-progress) 45%,white);border-left-color:var(--appointment-in-progress)}.appointment.status-paused{background:color-mix(in srgb,var(--appointment-paused) 19%,white);border-color:color-mix(in srgb,var(--appointment-paused) 45%,white);border-left-color:var(--appointment-paused)}.appointment.status-completed{background:color-mix(in srgb,var(--appointment-completed) 20%,white);border-color:color-mix(in srgb,var(--appointment-completed) 45%,white);border-left-color:var(--appointment-completed)}.appointment.status-canceled{background:color-mix(in srgb,var(--appointment-canceled) 20%,white);border-color:color-mix(in srgb,var(--appointment-canceled) 45%,white);border-left-color:var(--appointment-canceled)}
.queue-card.status-unscheduled{background:color-mix(in srgb,var(--appointment-unscheduled) 18%,white);border-color:color-mix(in srgb,var(--appointment-unscheduled) 45%,white)}.queue-card.status-unscheduled:before{background:var(--appointment-unscheduled)}.queue-card.status-available{background:color-mix(in srgb,var(--appointment-available) 24%,white);border-color:color-mix(in srgb,var(--appointment-available) 50%,white)}.queue-card.status-available:before{background:var(--appointment-available)}.queue-card.status-scheduled{background:color-mix(in srgb,var(--appointment-scheduled) 22%,white);border-color:color-mix(in srgb,var(--appointment-scheduled) 48%,white)}.queue-card.status-scheduled:before{background:var(--appointment-scheduled)}.queue-card.status-in_progress{background:color-mix(in srgb,var(--appointment-in-progress) 21%,white);border-color:color-mix(in srgb,var(--appointment-in-progress) 45%,white)}.queue-card.status-in_progress:before{background:var(--appointment-in-progress)}.queue-card.status-paused{background:color-mix(in srgb,var(--appointment-paused) 19%,white);border-color:color-mix(in srgb,var(--appointment-paused) 45%,white)}.queue-card.status-paused:before{background:var(--appointment-paused)}.queue-card.status-completed{background:color-mix(in srgb,var(--appointment-completed) 20%,white);border-color:color-mix(in srgb,var(--appointment-completed) 45%,white)}.queue-card.status-completed:before{background:var(--appointment-completed)}.queue-card.status-canceled{background:color-mix(in srgb,var(--appointment-canceled) 20%,white);border-color:color-mix(in srgb,var(--appointment-canceled) 45%,white)}.queue-card.status-canceled:before{background:var(--appointment-canceled)}
.pto-history p{display:flex;align-items:center;justify-content:space-between;gap:12px}.pto-edit-usage{padding:6px 10px}
.payroll-period-picker{grid-template-columns:minmax(220px,360px) auto;align-items:end}
input[type=date]::-webkit-calendar-picker-indicator{display:none!important;-webkit-appearance:none!important;opacity:0!important;pointer-events:none!important}input[type=date]{appearance:textfield;-webkit-appearance:textfield}.app-date-control{display:grid;grid-template-columns:minmax(0,1fr) 42px;width:100%;min-width:150px;height:40px;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:#fff}.app-date-control>input[type=date]{width:100%!important;min-width:0!important;height:38px!important;min-height:38px!important;margin:0!important;border:0!important;border-radius:0!important;background:#fff!important}.app-calendar-trigger{width:42px!important;min-width:42px!important;height:40px!important}.app-calendar-trigger:disabled{cursor:not-allowed;opacity:.45;background:#eef2f4}.filter-date-range .app-date-control{height:36px;min-width:0;margin-top:5px}.filter-date-range .app-date-control>input[type=date]{height:34px!important;min-height:34px!important;margin:0!important}.filter-date-range .app-calendar-trigger{height:36px!important}.date-controls .app-date-control{height:38px}.date-controls .app-date-control>input[type=date]{height:36px!important;min-height:36px!important}.date-controls .app-calendar-trigger{height:38px!important}
.employee-time-fields{grid-template-columns:repeat(2,minmax(0,342px));justify-content:start}.employee-time-fields fieldset{grid-template-columns:minmax(120px,136px) 52px 58px 62px;width:100%;padding:11px;gap:7px}.employee-time-fields fieldset label{min-width:0}.employee-time-fields fieldset select{width:100%;min-width:0;height:40px;padding:6px}.timecard-date-control{max-width:136px}.time-entry-dialog{width:min(780px,calc(100vw - 32px))}@media(max-width:780px){.employee-time-fields{grid-template-columns:minmax(0,342px)}}
.app-date-control{position:relative;display:block}.app-date-control>input[type=date]{width:100%!important;padding-right:48px!important}.app-date-control>.app-calendar-trigger{position:absolute!important;top:-1px!important;right:-1px!important;margin:0!important}
.timecard-date-control{position:relative!important;display:block!important}.timecard-date-control>input[type=date]{width:100%!important;padding-right:48px!important;background-image:none!important}.timecard-date-control>.timecard-calendar-trigger{position:absolute!important;z-index:2!important;top:-1px!important;right:-1px!important;width:72px!important;min-width:72px!important;margin:0!important;padding:0 14px 0 30px!important;display:flex!important;align-items:center!important;justify-content:flex-end!important;border-left:0!important;background:linear-gradient(to right,#fff 0,#fff 30px,#f7fafb 30px,#f7fafb 100%)!important}.timecard-date-control>.timecard-calendar-trigger:hover,.timecard-date-control>.timecard-calendar-trigger:focus-visible{background:linear-gradient(to right,#fff 0,#fff 30px,#dff1ef 30px,#dff1ef 100%)!important}
.app-date-control>.app-calendar-trigger{z-index:2!important;width:72px!important;min-width:72px!important;padding:0 14px 0 30px!important;display:flex!important;align-items:center!important;justify-content:flex-end!important;border-left:0!important;background:linear-gradient(to right,#fff 0,#fff 30px,#f7fafb 30px,#f7fafb 100%)!important}.app-date-control>.app-calendar-trigger:hover,.app-date-control>.app-calendar-trigger:focus-visible{background:linear-gradient(to right,#fff 0,#fff 30px,#dff1ef 30px,#dff1ef 100%)!important}
.timecard-date-control>input[type=date],.app-date-control>input[type=date]{width:calc(100% + 30px)!important;padding-right:48px!important}.timecard-date-control>.timecard-calendar-trigger,.app-date-control>.app-calendar-trigger{width:42px!important;min-width:42px!important;padding:0!important;display:grid!important;place-items:center!important;border-left:1px solid var(--line)!important;background:#f7fafb!important}.timecard-date-control>.timecard-calendar-trigger:hover,.timecard-date-control>.timecard-calendar-trigger:focus-visible,.app-date-control>.app-calendar-trigger:hover,.app-date-control>.app-calendar-trigger:focus-visible{background:#dff1ef!important}
.timecard-date-control>.timecard-calendar-trigger,.app-date-control>.app-calendar-trigger{align-items:center!important;justify-content:center!important;text-align:center!important}
.time-entry-context-row,.time-entry-link-row{display:grid;gap:12px;margin-bottom:14px}.time-entry-context-row{grid-template-columns:minmax(180px,280px) minmax(150px,220px)}.time-entry-link-row{grid-template-columns:minmax(240px,1fr) minmax(240px,1fr)}.time-entry-context-row label,.time-entry-link-row label{min-width:0}.time-entry-context-row select,.time-entry-link-row select{width:100%}.employee-time-fields{grid-template-columns:repeat(2,minmax(0,378px))}.employee-time-fields fieldset{grid-template-columns:minmax(150px,166px) 52px 58px 62px}.timecard-date-control{max-width:166px}@media(max-width:780px){.time-entry-context-row,.time-entry-link-row{grid-template-columns:1fr}.employee-time-fields{grid-template-columns:minmax(0,378px)}}
.mobile-nav{display:none}.queue-panels{display:contents}
@media(max-width:760px){
  :root{--hour:64px;--employee:104px;--track:1536px}
  html,body{max-width:100%;overflow-x:hidden}
  .app-header{height:62px;padding:0 10px;gap:8px}
  .brand{flex:0 0 auto}.brand-mark{width:34px;height:34px;border-radius:9px}.tabs{display:none}
  .mobile-nav{position:relative;display:block;flex:0 1 auto;min-width:0;height:100%}
  .mobile-nav>summary{list-style:none;height:100%;display:flex;align-items:center;gap:5px;padding:0 5px;border-bottom:3px solid var(--teal);color:var(--teal-dark);font-size:16px;font-weight:750;white-space:nowrap;cursor:pointer}
  .mobile-nav>summary::-webkit-details-marker{display:none}.mobile-nav>summary span{font-size:15px}
  .mobile-nav>nav{position:fixed;top:58px;left:10px;right:10px;z-index:100;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px;padding:8px;border:1px solid var(--line);border-radius:0 0 12px 12px;background:#fff;box-shadow:0 14px 32px rgba(18,42,56,.2)}
  .mobile-nav>nav a{padding:11px 12px;border-radius:7px;color:#5f6b76;font-size:16px;font-weight:700}.mobile-nav>nav a.active{background:#edf6f5;color:var(--teal-dark)}
  .global-search{flex:0 0 40px;min-width:40px;margin-left:auto}.global-search>input{width:40px;height:38px;padding:0;border-radius:9px}.global-search-icon{left:11px}
  .global-search:focus-within{position:fixed;top:10px;left:10px;right:10px;width:auto;z-index:120}.global-search:focus-within>input{width:100%;padding:0 36px 0 35px;font-size:16px}.global-search-results{left:0;right:0;width:100%}
  .schedule-page{padding:14px 8px 20px}.schedule-page .page-heading{margin-bottom:9px}.schedule-page .page-heading h1{font-size:28px}
  .schedule-subtoolbar{align-items:stretch;gap:8px;margin-bottom:12px}.schedule-subtoolbar .schedule-new-job{align-self:flex-start}.schedule-subtoolbar .date-controls{display:grid;grid-template-columns:34px minmax(0,1fr) auto 34px;width:100%;gap:5px}.schedule-subtoolbar .date-controls form{display:block;min-width:0}.schedule-subtoolbar .date-controls .app-date-control{width:100%;min-width:0}.schedule-subtoolbar .date-controls input{min-width:0;padding-left:8px;font-size:15px}.schedule-subtoolbar .today-button{min-width:0;padding:0 8px}.schedule-subtoolbar .icon-button{width:34px;min-width:0}
  .dispatch-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;overflow:visible}.queue-panels{display:flex;gap:10px;width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;padding-bottom:3px}.queue-panel{flex:0 0 min(82vw,310px);height:220px;min-height:0;scroll-snap-align:start}.panel-heading{padding:12px}.panel-heading h2{font-size:21px}.queue-list{padding:8px}.queue-card{padding:10px 10px 11px 13px;margin-bottom:7px}
  .timeline-card{grid-column:auto;width:100%;height:min(66vh,590px);min-height:440px;border-radius:11px}.timeline-scroll{overscroll-behavior-inline:contain}.timeline-header{height:44px}.employee-header{padding:0 8px;font-size:12px}.hour-label{padding-left:6px;font-size:13px}.employee-name{gap:5px;padding:0 7px}.employee-name .avatar{display:none}.employee-name strong,.employee-name small{max-width:88px}.employee-name strong{font-size:14px}.employee-name small{font-size:12px}.appointment{padding:5px 6px}.appointment span{font-size:13px}.schedule-legend{height:auto;min-height:38px;flex-wrap:wrap;gap:7px 14px;padding:7px 10px}
}
.customer-summary-trigger{border:0;background:transparent;padding:0;font:inherit;cursor:pointer}.customer-summary-dialog{width:min(760px,100%);display:flex;flex-direction:column;overflow:hidden}.customer-summary-heading,.customer-summary-locations-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.customer-summary-heading{margin-bottom:18px;padding-right:34px}.customer-summary-heading h2,.customer-summary-locations-heading h3{margin:0;color:var(--navy);font-family:Georgia,serif}.customer-summary-heading h2{font-size:29px}.customer-summary-locations-heading{margin:20px 0 9px}.customer-summary-locations-heading h3{font-size:22px}.customer-summary-details{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.customer-summary-details>div{min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#f8fafb}.customer-summary-details span,.customer-summary-details strong{display:block}.customer-summary-details span{margin-bottom:4px;color:var(--muted);font-size:13px;font-weight:850;text-transform:uppercase;letter-spacing:.07em}.customer-summary-details strong{overflow-wrap:anywhere;color:#354750;font-size:15px}.customer-summary-details>div:last-child{grid-column:1/-1}.customer-summary-locations{min-height:120px;max-height:min(42vh,390px);overflow-y:auto;display:grid;gap:8px;padding:2px 4px 2px 2px}.customer-location-summary-card{display:grid;gap:4px;padding:12px 13px;border:1px solid var(--line);border-left:4px solid var(--teal);border-radius:9px;background:#fff}.customer-location-summary-card:hover{border-color:#9bc9c3;background:#f3faf8}.customer-location-summary-card>span:first-child{display:flex;align-items:center;justify-content:space-between;gap:12px}.customer-location-summary-card strong{color:var(--navy);font-size:16px}.customer-location-summary-card small{color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}.customer-location-summary-card b{color:#44545f;font-size:14px}.customer-location-summary-card>span:not(:first-child){color:var(--muted);font-size:13px}.customer-location-summary-card em{color:var(--teal-dark);font-size:13px;font-style:normal;font-weight:800}.customer-summary-empty{margin:0;padding:30px;border:1px dashed var(--line);border-radius:9px;color:var(--muted);text-align:center}@media(max-width:650px){.customer-summary-dialog{max-height:calc(100vh - 20px);padding:22px 14px}.customer-summary-details{grid-template-columns:1fr 1fr}.customer-summary-details>div:last-child{grid-column:1/-1}.customer-summary-locations{max-height:43vh}}
.read-only-bill{min-inline-size:0;margin:0;padding:0;border:0}.read-only-bill :disabled{opacity:1}.read-only-bill input:disabled,.read-only-bill select:disabled{color:#354750;background:#f5f7f8;cursor:default}
.account-header-actions{display:flex;align-items:center;gap:7px}.account-header-actions>a,.account-header-actions button{border:0;background:transparent;color:#52646f;font-size:13px;font-weight:800;text-decoration:none;cursor:pointer}.account-header-actions form{margin:0}.account-header-actions>a:hover,.account-header-actions button:hover{color:var(--teal-dark)}@media(max-width:1000px){.account-header-actions>a{display:none}}@media(max-width:760px){.account-header-actions{order:5}.account-header-actions button{padding:8px}}
.pto-date-preview{overflow:hidden;border:1px solid var(--line);border-radius:10px;background:#f8fafb}.pto-date-preview>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px;border-bottom:1px solid var(--line)}.pto-date-preview>header strong,.pto-date-preview>header small{display:block}.pto-date-preview>header strong{color:var(--navy);font-size:16px}.pto-date-preview>header small{margin-top:3px;color:var(--muted);font-size:13px;font-weight:500}.pto-date-preview>header b{color:var(--teal-dark);font-size:14px;white-space:nowrap}.pto-date-preview>[data-pto-date-list]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:270px;overflow-y:auto;padding:10px}.pto-preview-date{display:grid!important;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:7px!important;padding:9px;border:1px solid #dce5e8;border-radius:8px;background:#fff;color:#334952!important;font-size:14px!important;cursor:pointer}.pto-preview-date input{width:16px!important;height:16px!important;margin:0;padding:0}.pto-preview-date small{grid-column:2;color:#a5473d;font-size:12px;font-weight:750}.pto-preview-date.is-weekend{background:#f2f4f5}.pto-preview-date.has-overlap{border-color:#e3a49c}.pto-date-preview>[data-pto-preview-error]{min-height:16px;margin:0;padding:0 12px 10px;color:#a33128;font-size:13px;font-weight:750}@media(max-width:600px){.pto-date-preview>[data-pto-date-list]{grid-template-columns:1fr}.pto-date-preview>header{display:grid}.pto-date-preview>header b{white-space:normal}}
.entity-timecard-entry.is-readonly {
  cursor: default;
}
.appointment-variable-duration{margin:0 0 8px}.additional-technician-row{display:grid;min-width:0;gap:6px}.additional-technician-duration{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:0 2px 3px}.additional-technician-duration[hidden]{display:none}.appointment-dialog .additional-technician-duration label{display:grid;gap:3px;color:var(--muted);font-size:13px;font-weight:750;text-transform:none;letter-spacing:normal}.appointment-dialog .additional-technician-duration select{min-width:0;min-height:32px;padding:6px 7px;font-size:15px}
.password-row{grid-template-columns:minmax(140px,1fr) minmax(160px,1fr) auto minmax(180px,1fr) minmax(180px,1fr) auto}
.timecard-week-totals{margin:0 0 18px;color:var(--navy)}
.timecard-total-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:520px;margin:0}
.timecard-total-cards>div{min-width:0;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:white}
.timecard-total-cards dt{color:var(--muted);font-size:16px;font-weight:750}
.timecard-total-cards dd{margin:5px 0 0;font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}
.timecard-week-totals>p{margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.4}
