:root{
  --bg:#f4f5f1;--panel:#fff;--ink:#1f2a23;--muted:#6f776f;--line:#d9ddd6;--brand:#263c2e;--brand-2:#52735b;--soft:#e7ede7;--accent:#dfcb52;--danger:#a43b36;--warn:#8a641a;--ok:#2d6a45;--shadow:0 12px 30px rgba(28,41,31,.08);--radius:16px
}
*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}.app-body{min-height:100vh}.app-shell{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--brand);color:#fff;padding:24px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand-row{display:flex;align-items:center;gap:12px;padding:0 8px 22px}.brand-row strong{display:block}.brand-row span{font-size:12px;opacity:.65}.brand-mark{width:56px;height:56px;border-radius:14px;background:#fff;color:var(--brand);display:grid;place-items:center;font-weight:900;letter-spacing:.08em}.brand-mark.small{width:42px;height:42px;border-radius:11px}.nav-list{display:grid;gap:5px}.nav-item,.mobile-nav button{border:0;background:transparent;color:inherit;text-align:left;padding:11px 12px;border-radius:10px;font-weight:700}.nav-item:hover,.nav-item.active{background:rgba(255,255,255,.12)}.sidebar-bottom{margin-top:auto;padding:12px}.sidebar-bottom a{opacity:.75;text-decoration:none}.main{padding:28px;min-width:0}.topbar{display:flex;justify-content:space-between;gap:24px;align-items:flex-end;margin-bottom:24px}.topbar h1{margin:2px 0 0;font-size:30px}.eyebrow{margin:0;color:var(--muted);font-size:11px;letter-spacing:.14em;font-weight:800}.topbar-actions{display:flex;gap:10px;align-items:center}.topbar input[type=date],.inline-field select{background:#fff;border:1px solid var(--line);padding:10px 12px;border-radius:10px;color:var(--ink)}.button{border:1px solid var(--line);background:#fff;color:var(--ink);padding:10px 14px;border-radius:10px;font-weight:800}.button:hover{transform:translateY(-1px)}.button.primary{background:var(--brand);border-color:var(--brand);color:#fff}.button.danger{background:#fff3f2;color:var(--danger);border-color:#efcbc8}.link-button{border:0;background:transparent;color:var(--brand-2);font-weight:800}.view{display:none}.view.active{display:block}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.metric-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.metric-card .value{font-size:31px;font-weight:900;margin-top:8px}.metric-card .label{color:var(--muted);font-size:13px}.content-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.7fr);gap:18px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-bottom:18px}.panel-head,.toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px}.panel-head{padding:18px;border-bottom:1px solid var(--line)}.panel-head h2,.toolbar h2{margin:0;font-size:19px}.panel-head p,.toolbar p{margin:4px 0 0;color:var(--muted);font-size:13px}.toolbar{margin-bottom:16px}.job-list{display:grid}.job-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);align-items:center}.job-row:last-child{border-bottom:0}.job-row:hover{background:#fafbf9}.job-title{font-weight:850}.job-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:5px;color:var(--muted);font-size:12px}.job-actions{display:flex;gap:7px;align-items:center}.badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;background:var(--soft);font-size:11px;font-weight:800}.badge.scheduled{background:#edf0ed}.badge.in_progress{background:#fff1ce;color:#715316}.badge.complete{background:#e0f1e6;color:#245d3c}.highlight-dot{width:9px;height:9px;border-radius:999px;background:var(--accent);display:inline-block;margin-right:6px}.attention-list{padding:10px 18px 18px}.attention-item{padding:12px 0;border-bottom:1px solid var(--line)}.attention-item:last-child{border-bottom:0}.attention-item strong{display:block}.attention-item span{color:var(--muted);font-size:12px}.route-group{margin-bottom:18px}.route-group-head{display:flex;align-items:center;justify-content:space-between;margin:0 2px 8px}.route-group-head h3{margin:0;font-size:15px}.route-group-head span{font-size:12px;color:var(--muted)}.route-table{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.route-row{display:grid;grid-template-columns:48px minmax(180px,1.1fr) minmax(220px,1.6fr) 120px 140px;gap:10px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line)}.route-row:last-child{border-bottom:0}.route-row:hover{background:#fafbf9}.route-seq{font-weight:900;color:var(--muted)}.route-customer{font-weight:850}.route-address{color:var(--muted);font-size:13px}.route-service{font-size:12px;font-weight:800}.route-actions{display:flex;justify-content:flex-end;gap:6px}.mini-btn{padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:#fff;font-weight:800;font-size:12px}.mini-btn.primary{background:var(--brand);color:#fff;border-color:var(--brand)}.field-jobs{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}.field-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--shadow)}.field-card h3{margin:0 0 6px}.field-card .address{color:var(--muted);font-size:13px}.field-card .field-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:15px}.field-card .big-btn{min-height:48px;border:0;border-radius:11px;font-weight:900}.big-btn.start{background:var(--brand);color:white}.big-btn.complete{background:#e0f1e6;color:#245d3c}.employee-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.employee-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px}.employee-card strong{display:block;font-size:17px}.employee-card span{font-size:12px;color:var(--muted)}.table-wrap{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:auto}.data-table{width:100%;border-collapse:collapse;min-width:700px}.data-table th,.data-table td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);font-size:13px}.data-table th{background:#f8f9f6;color:var(--muted);font-size:11px;letter-spacing:.05em;text-transform:uppercase}.data-table tr:last-child td{border-bottom:0}.inline-field{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:800}.drawer-backdrop{position:fixed;inset:0;background:rgba(10,20,13,.28);z-index:20}.drawer{position:fixed;top:0;right:0;height:100vh;width:min(520px,96vw);background:#fff;z-index:21;box-shadow:-18px 0 40px rgba(20,30,22,.18);transform:translateX(102%);transition:transform .2s ease;display:flex;flex-direction:column}.drawer.open{transform:translateX(0)}.drawer-head{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--line)}.drawer-head h2{margin:2px 0 0}.drawer-body{padding:20px;overflow:auto}.icon-button{border:0;background:#f1f3f0;border-radius:10px;width:38px;height:38px;font-size:22px}.detail-block{margin-bottom:20px}.detail-block h3{font-size:13px;margin:0 0 8px}.task-list{display:grid;gap:8px}.task-check{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:10px}.task-check input{width:20px;height:20px}.chip-list{display:flex;gap:7px;flex-wrap:wrap}.employee-chip{border:1px solid var(--line);padding:7px 9px;border-radius:999px;background:#fff;font-size:12px;font-weight:800}.employee-chip.selected{background:var(--brand);color:#fff;border-color:var(--brand)}.drawer textarea,.drawer input,.modal input,.modal select,.modal textarea,.auth-card input{width:100%;border:1px solid var(--line);padding:10px 11px;border-radius:10px;background:#fff;color:var(--ink)}.material-row{display:grid;grid-template-columns:1fr 70px 70px 90px;gap:7px;margin-bottom:7px;font-size:12px}.material-row.header{font-weight:800;color:var(--muted)}.modal{border:0;padding:0;border-radius:16px;width:min(640px,94vw);box-shadow:0 30px 80px rgba(20,30,22,.25)}.modal::backdrop{background:rgba(20,30,22,.45)}.modal-card{padding:0}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--line)}.modal-head h2{margin:2px 0 0}.form-grid{padding:20px;display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid label,.stack label{font-size:12px;font-weight:800;color:var(--muted)}.form-grid label input,.form-grid label select,.form-grid label textarea,.stack label input{margin-top:6px}.span-2{grid-column:1/-1}.modal-actions{display:flex;justify-content:flex-end;gap:9px;padding:16px 20px;border-top:1px solid var(--line)}.toast{position:fixed;right:24px;bottom:24px;background:#17251c;color:white;padding:12px 16px;border-radius:11px;z-index:40;box-shadow:var(--shadow);font-weight:800}.empty{padding:24px;color:var(--muted);text-align:center}.small{font-size:12px}.muted{color:var(--muted)}.alert{padding:10px 12px;border-radius:10px;margin:12px 0;font-size:13px}.alert.error{background:#fff0ef;color:var(--danger)}.auth-body{min-height:100vh;display:grid;place-items:center;background:linear-gradient(145deg,#edf1ea,#f8f5e7)}.auth-card{width:min(420px,92vw);background:#fff;border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:var(--shadow)}.auth-card .brand-mark{background:var(--brand);color:#fff;margin-bottom:18px}.auth-card h1{margin:0 0 6px}.auth-card p{color:var(--muted)}.stack{display:grid;gap:14px}.mobile-nav{display:none}.finance-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.main{padding:18px 16px 84px}.mobile-nav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;left:0;right:0;bottom:0;background:var(--brand);color:#fff;z-index:15;padding:max(7px,env(safe-area-inset-bottom)) 8px 7px;box-shadow:0 -8px 24px rgba(20,30,22,.15)}.mobile-nav button{text-align:center;font-size:12px;padding:9px 4px}.mobile-nav button.active{background:rgba(255,255,255,.15)}.content-grid{grid-template-columns:1fr}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.route-row{grid-template-columns:38px minmax(160px,1fr) minmax(170px,1.2fr) 110px}.route-actions{grid-column:4}.route-service{display:none}}
@media(max-width:640px){.main{padding:14px 12px 80px}.topbar{align-items:flex-start;flex-direction:column;gap:12px}.topbar-actions{width:100%;display:grid;grid-template-columns:1fr auto}.topbar h1{font-size:26px}.metric-card{padding:14px}.metric-card .value{font-size:26px}.toolbar{align-items:flex-start;flex-direction:column}.route-table{border-radius:12px}.route-row{grid-template-columns:32px 1fr;gap:5px 8px;padding:12px}.route-address,.route-actions{grid-column:2}.route-actions{justify-content:flex-start;margin-top:5px}.field-jobs{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.finance-metrics{grid-template-columns:1fr}.job-row{grid-template-columns:1fr}.job-actions{justify-content:flex-start}.drawer{width:100vw}.material-row{grid-template-columns:1fr 55px 55px 70px}}
.badge.contract{background:#f7edaa;color:#5f5111;margin-left:5px}.badge.active{background:#e0f1e6;color:#245d3c}.badge.draft{background:#fff1ce;color:#715316}.badge.expired,.badge.cancelled{background:#ececeb;color:#666}.fee-warning{color:var(--danger);font-weight:800}.mini-btn.danger{color:var(--danger);border-color:#efcbc8}.wide-modal{width:min(980px,96vw);max-height:92vh}.contract-dialog-body{padding:0 20px 24px;max-height:calc(92vh - 80px);overflow:auto}.contract-section{padding:20px 0;border-bottom:1px solid var(--line)}.contract-section:last-child{border-bottom:0}.contract-section h3{margin:0}.contract-summary-head,.section-heading,.contract-service-main{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.contract-summary-head p,.section-heading p{margin:5px 0 0;color:var(--muted);font-size:13px}.contract-summary-head>div:last-child{text-align:right}.contract-summary-head>div:last-child strong{display:block;font-size:25px}.contract-summary-head>div:last-child span{font-size:11px;color:var(--muted)}.compact-form{padding:16px 0 0}.form-actions-inline{display:flex;gap:8px;justify-content:flex-end}.contract-service-list{display:grid;gap:10px;margin-top:14px}.contract-service-card{border:1px solid var(--line);border-radius:13px;padding:14px;background:#fafbf9}.contract-service-main strong{font-size:16px}.contract-fee{text-align:right;font-weight:900}.contract-fee span{display:block;color:var(--muted);font-size:10px;font-weight:700}.contract-fee.missing{color:var(--danger)}.contract-service-meta{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.contract-service-meta span{background:#eef1ed;border-radius:999px;padding:5px 8px;font-size:11px;font-weight:750}.contract-card-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:10px}.service-editor{background:#f8f9f6;margin:18px -20px -24px;padding:20px;border-top:1px solid var(--line)}.service-editor.editing{background:#fffbea}.weekday-picker{display:flex;gap:7px;flex-wrap:wrap;margin-top:7px}.weekday-picker label{position:relative}.weekday-picker input{position:absolute;opacity:0;pointer-events:none}.weekday-picker span{display:block;border:1px solid var(--line);border-radius:999px;padding:7px 10px;background:#fff;font-size:12px;font-weight:850;color:var(--ink)}.weekday-picker input:checked+span{background:var(--brand);color:#fff;border-color:var(--brand)}.form-label{font-size:12px;font-weight:800;color:var(--muted)}.contract-info{background:#fff8cc;color:#584d12}.contract-customer-table td:nth-child(2){min-width:300px}.contract-customer-table td:nth-child(3){min-width:220px}
@media(max-width:980px){.mobile-nav{grid-template-columns:repeat(6,1fr)}}
@media(max-width:640px){.wide-modal{width:100vw;max-width:none;max-height:100vh;border-radius:0}.contract-dialog-body{max-height:calc(100vh - 70px);padding:0 14px 20px}.contract-summary-head,.section-heading,.contract-service-main{flex-direction:column}.contract-summary-head>div:last-child,.contract-fee{text-align:left}.service-editor{margin:18px -14px -20px;padding:14px}.contract-customer-table{min-width:800px}}

/* v0.4 customer-side contract service management */
.customer-list{display:grid;gap:16px}.customer-card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.customer-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px}.customer-card-head h3{margin:0;font-size:20px}.customer-title-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.customer-sites{display:grid;gap:3px;margin-top:7px}.customer-site{display:flex;gap:7px;flex-wrap:wrap;font-size:12px}.customer-site span{color:var(--muted)}.customer-card-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.customer-contract-summary{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:10px 18px;background:#f8f9f6;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}.customer-service-list{display:grid}.customer-service-header,.customer-service-row{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(150px,.7fr) minmax(230px,1.2fr) 120px;gap:14px;align-items:center;padding:11px 18px}.customer-service-header{font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-weight:850;color:var(--muted);background:#fbfcfa}.customer-service-row{border-top:1px solid var(--line);font-size:12px}.customer-service-row:hover{background:#fafbf9}.customer-service-row>div:not(.customer-service-actions){display:flex;flex-direction:column;gap:2px}.customer-service-name strong{font-size:14px}.customer-service-name span{color:var(--muted)}.customer-service-label{display:none;color:var(--muted);font-size:10px;text-transform:uppercase;font-weight:800}.customer-service-actions{display:flex;justify-content:flex-end;gap:6px}.customer-no-contract{padding:18px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:3px;color:var(--muted)}.customer-no-contract strong{color:var(--ink)}
@media(max-width:800px){.customer-card-head{flex-direction:column}.customer-card-actions{justify-content:flex-start}.customer-service-header{display:none}.customer-service-row{grid-template-columns:1fr;gap:10px}.customer-service-label{display:block}.customer-service-actions{justify-content:flex-start}.customer-contract-summary{flex-direction:column;gap:5px}}

/* v0.5 service-level contract classification */
.badge.extra{background:#e9eef8;color:#304f79;margin-left:5px}
.service-summary{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.service-summary-item{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}
.route-service.service-summary{gap:5px}
.field-service-list{margin:12px 0}
.visit-service-list{display:grid;gap:8px;margin:10px 0 14px}
.visit-service-row{border:1px solid var(--line);border-radius:11px;padding:11px;background:#fafbf9;display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.visit-service-row.contract-service{background:#fffdf0;border-color:#e8dfa8}
.visit-service-row.extra-service{background:#f7f9fd;border-color:#d8e1ef}
.visit-service-main{flex:1;min-width:0;display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.visit-service-main>div:first-child{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.visit-service-main .small{display:block;width:100%;margin-top:3px}
.service-price-note{font-size:11px;color:var(--muted);text-align:right;white-space:nowrap}
.extra-price-edit{display:grid;grid-template-columns:auto 88px auto;gap:5px;align-items:center}
.extra-price-edit input{padding:6px 7px;width:88px}
.visit-service-actions{display:flex;gap:6px}
.add-extra-service{border-top:1px dashed var(--line);padding-top:12px;display:grid;grid-template-columns:minmax(180px,1fr) 130px auto;gap:8px;align-items:end}
.add-extra-service label{font-size:11px;font-weight:800;color:var(--muted)}
.add-extra-service select,.add-extra-service input{width:100%;border:1px solid var(--line);padding:8px 9px;border-radius:9px;background:#fff;color:var(--ink);margin-top:5px}
.section-heading.compact h3{margin:0}
.section-heading.compact p{margin-top:3px}
.drawer input[readonly]{background:#f2f4f1;color:var(--muted)}
@media(max-width:640px){.visit-service-row,.visit-service-main{flex-direction:column}.service-price-note{text-align:left;white-space:normal}.add-extra-service{grid-template-columns:1fr}.extra-price-edit{grid-template-columns:auto minmax(90px,1fr) auto;width:100%}}

/* v0.6 work groups and employee economics */
.badge.work-group{background:#e6eee8;color:#31533c;margin-left:4px}.badge.unassigned{background:#f0f0ee;color:#74766f;margin-left:4px}
.work-group-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px}
.work-group-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px;box-shadow:var(--shadow);display:grid;gap:12px}
.work-group-card h3{margin:0;font-size:18px}.work-group-card p{margin:4px 0 0;color:var(--muted);font-size:12px}
.work-group-counts{display:flex;gap:10px;flex-wrap:wrap}.work-group-counts span{background:#f4f6f3;border-radius:10px;padding:7px 9px;font-size:11px;color:var(--muted)}.work-group-counts strong{font-size:15px;color:var(--ink)}
.employee-work-groups{display:grid;gap:18px}.employee-group-section{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:var(--shadow)}
.employee-group-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px}.employee-group-head h3{margin:0;font-size:18px}.employee-group-head p{margin:4px 0 0;color:var(--muted);font-size:12px}.employee-group-head>span{font-size:12px;color:var(--muted);white-space:nowrap}
.employee-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.employee-card-head>div>strong{display:block}.employee-rate-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.employee-rate-grid>span{background:#f7f8f5;border-radius:10px;padding:9px}.employee-rate-grid small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.04em;font-weight:800}.employee-rate-grid strong{font-size:14px;margin-top:3px}
@media(max-width:900px){.work-group-summary{grid-template-columns:1fr}.mobile-nav button{font-size:11px;padding-left:2px;padding-right:2px}}
@media(max-width:640px){.employee-group-head{flex-direction:column}.employee-rate-grid{grid-template-columns:1fr 1fr}}
.toolbar-actions{display:flex;gap:8px;flex-wrap:wrap}.work-group-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
@media(max-width:640px){.toolbar-actions{width:100%}.toolbar-actions .button{flex:1}}

/* v0.7 contract documents, service time, and route coordinates */
.planned-time{display:inline-flex;align-items:center;background:#eef3ec;color:#35553e;border-radius:999px;padding:4px 7px;font-size:10px;font-weight:850;margin-top:2px}
.customer-site{justify-content:space-between;align-items:flex-start;border-radius:9px;padding:5px 0}.customer-site>div{display:flex;gap:7px;flex-wrap:wrap;align-items:center;min-width:0}.customer-site small{width:100%;display:block}.coordinate-set{color:#356245}.coordinate-missing{color:var(--danger);font-weight:800}
.contract-document-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(260px,1.2fr) auto;gap:12px;align-items:center;margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fafbf9}.contract-document-row>div>strong,.contract-document-row>div>span{display:block}.contract-upload-form{display:flex;align-items:center;gap:8px}.contract-upload-form input[type=file]{min-width:0;width:100%;border:1px solid var(--line);border-radius:9px;padding:7px;background:#fff}.contract-upload-form .button{white-space:nowrap}
@media(max-width:760px){.contract-document-row{grid-template-columns:1fr}.contract-upload-form{flex-direction:column;align-items:stretch}.customer-site{gap:8px}.customer-site .mini-btn{flex:0 0 auto}}

/* v0.7.2 One Step GPS proof-of-access integration */
.nav-link{display:block;text-decoration:none}.integration-main{max-width:1400px}.integration-grid{grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr)}
.integration-status{border:1px solid var(--line);background:#fff;padding:8px 11px;border-radius:999px;font-size:12px;font-weight:850;color:var(--muted)}.integration-status.configured{background:#e0f1e6;color:#245d3c;border-color:#c6e2d0}
.integration-form .form-grid{padding-bottom:10px}.integration-note{margin:0 20px 18px;padding:12px;border-radius:11px;background:#f7f8f5;display:grid;gap:4px}.integration-note strong{font-size:12px}.integration-note span{color:var(--muted);font-size:12px;line-height:1.45}
.integration-actions{align-items:center}.saved-key{margin-right:auto;color:var(--muted);font-size:12px;font-weight:800}.integration-remove{padding:0 20px 18px;text-align:right}.danger-link{color:var(--danger)}
.alert.success{background:#e0f1e6;color:#245d3c}.alert.warning{background:#fff1ce;color:#715316}.integration-help-body{display:grid;gap:0}.integration-help-body>div{padding:15px 18px;border-bottom:1px solid var(--line);display:grid;gap:3px}.integration-help-body>div:last-child{border-bottom:0}.integration-help-body strong{font-size:13px}.integration-help-body span{font-size:12px;color:var(--muted);line-height:1.45}
.api-result-badge{border-radius:999px;padding:6px 9px;font-size:11px;font-weight:900}.api-result-badge.ok{background:#e0f1e6;color:#245d3c}.api-result-badge.bad{background:#fff1ce;color:#715316}.api-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border-bottom:1px solid var(--line)}.api-metrics>div{background:#fff;padding:16px}.api-metrics span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:800}.api-metrics strong{display:block;margin-top:5px;font-size:18px}.api-result-meta{padding:12px 18px;background:#fafbf9;color:var(--muted);font-size:12px;border-bottom:1px solid var(--line)}
.api-records{padding:18px}.api-records h3{margin:0 0 12px;font-size:15px}.api-record-card{border:1px solid var(--line);border-radius:11px;padding:12px;margin-bottom:9px}.api-record-card>strong{font-size:11px;color:var(--muted)}.api-record-card dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:8px 0 0}.api-record-card dl>div{min-width:0}.api-record-card dt{font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:800}.api-record-card dd{margin:2px 0 0;font-size:12px;overflow-wrap:anywhere}
.raw-response{border-top:1px solid var(--line);padding:14px 18px}.raw-response summary{cursor:pointer;font-size:12px;font-weight:850}.raw-response pre{overflow:auto;max-height:520px;background:#18221b;color:#eaf1ec;padding:14px;border-radius:10px;font-size:11px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:900px){.integration-grid{grid-template-columns:1fr}.api-metrics{grid-template-columns:1fr 1fr}}@media(max-width:640px){.api-metrics{grid-template-columns:1fr}.integration-actions{flex-wrap:wrap}.saved-key{width:100%;margin-bottom:4px}}

/* v0.8 live fleet / Google Maps presentation layer */
.fleet-main{max-width:none;min-width:0}.fleet-topbar{gap:20px}.fleet-subtitle{margin:4px 0 0;color:var(--muted);font-size:13px}.fleet-top-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.fleet-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:14px;box-shadow:var(--shadow)}.fleet-stats>div{background:#fff;padding:12px 15px}.fleet-stats span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:850}.fleet-stats strong{display:block;font-size:19px;margin-top:3px}.fleet-stats strong.fleet-good{color:#245d3c}
.fleet-map-shell{display:grid;grid-template-columns:minmax(0,1fr) 330px;min-height:calc(100vh - 210px);background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}.fleet-map{min-height:650px;background:#eef1ec;position:relative}.fleet-map-placeholder{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:5px;color:var(--muted)}.fleet-map-placeholder strong{color:var(--ink);font-size:18px}
.fleet-map-panel{border-left:1px solid var(--line);background:#fff;min-width:0;display:flex;flex-direction:column;max-height:calc(100vh - 210px)}.fleet-panel-tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line)}.fleet-panel-tabs button{border:0;background:#f7f8f5;padding:12px;font-weight:850;color:var(--muted);cursor:pointer}.fleet-panel-tabs button.active{background:#fff;color:var(--ink);box-shadow:inset 0 -3px #263c2e}.fleet-list{display:none;overflow:auto;flex:1}.fleet-list.active{display:block}.fleet-list-row{width:100%;border:0;border-bottom:1px solid var(--line);background:#fff;text-align:left;padding:11px 12px;display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:9px;align-items:center;cursor:pointer;color:var(--ink)}.fleet-list-row:hover{background:#f8faf7}.fleet-list-row span:nth-child(2){min-width:0}.fleet-list-row strong,.fleet-list-row small{display:block}.fleet-list-row strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fleet-list-row small{font-size:10px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fleet-list-row b{font-size:10px;color:var(--muted);font-weight:850;white-space:nowrap}.fleet-dot{width:9px;height:9px;border-radius:50%;display:block}.fleet-dot.vehicle{background:#263c2e}.fleet-dot.site{background:#d6a432}.fleet-empty{padding:20px;color:var(--muted);font-size:12px}.fleet-error{padding:11px 12px;background:#fff1ce;color:#715316;border-top:1px solid #ecd79d;font-size:11px;line-height:1.4}.map-info{display:grid;gap:3px;min-width:180px;max-width:270px}.map-info strong{font-size:13px}.map-info span{font-size:11px;color:#5e665f}
@media(max-width:1050px){.fleet-map-shell{grid-template-columns:1fr}.fleet-map-panel{border-left:0;border-top:1px solid var(--line);max-height:340px}.fleet-map{min-height:540px}.fleet-stats{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.fleet-topbar{align-items:flex-start;flex-direction:column}.fleet-top-actions{width:100%}.fleet-top-actions .button{margin-left:auto}.fleet-map{min-height:480px}.fleet-stats{grid-template-columns:1fr 1fr}.fleet-map-shell{min-height:0;border-radius:12px}.fleet-map-panel{max-height:280px}}
.mobile-nav a{border:0;background:transparent;color:inherit;text-align:center;padding:9px 4px;border-radius:10px;font-weight:700;text-decoration:none;font-size:11px}.mobile-nav a.active{background:rgba(255,255,255,.15)}
@media(max-width:980px){.mobile-nav:has(a){grid-template-columns:repeat(3,1fr)}.mobile-nav:has(button) {grid-template-columns:repeat(7,1fr)}}

/* BCE v0.8.1 — per-user debug mode and user administration */
.debug-chip{display:inline-block;margin:0 0 9px;padding:4px 8px;border-radius:999px;background:#ffcf66;color:#4b3200;font-size:11px;font-weight:800;letter-spacing:.08em}.bce-debug-mode .topbar{box-shadow:inset 0 3px 0 #d39a22}.debug-status{background:#fff0c2!important;color:#6a4700!important;border-color:#e4ba4d!important}.fleet-debug-panel{margin-top:18px}.debug-output{max-height:560px;overflow:auto;margin:0;padding:16px;border-radius:10px;background:#17221b;color:#d9eee0;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;word-break:break-word}.user-admin-panel,.user-create-panel{margin-bottom:18px}.user-admin-list{display:grid;gap:10px}.user-admin-row{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(100px,.8fr) minmax(150px,1.1fr) auto auto minmax(140px,1fr) auto;gap:10px;align-items:end;padding:12px;border:1px solid var(--border,#d9e0db);border-radius:12px;background:var(--panel,#fff)}.user-admin-row label{margin:0}.user-admin-name{align-self:center}.user-admin-name strong,.user-admin-name small{display:block}.user-admin-name small{margin-top:3px;color:#6a746e}.toggle-line{display:flex!important;align-items:center;gap:7px;padding-bottom:10px;white-space:nowrap}.toggle-line input{width:auto!important}.debug-toggle{font-weight:700}.bce-debug-mode .debug-toggle{color:#8a5a00}@media(max-width:1100px){.user-admin-row{grid-template-columns:repeat(2,minmax(0,1fr))}.user-admin-name{grid-column:1/-1}.user-admin-row .button{justify-self:start}}@media(max-width:640px){.user-admin-row{grid-template-columns:1fr}.user-admin-name{grid-column:auto}.toggle-line{padding-bottom:0}.debug-output{max-height:420px}}

/* BCE v0.9 vehicle activity ledger */
.vehicle-activity-main{padding-bottom:36px}.vehicle-activity-toolbar{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:18px}.vehicle-filter-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.vehicle-filter-form label,.company-location-form label{display:grid;gap:6px;font-size:12px;font-weight:700;color:#526459}.vehicle-filter-form input,.vehicle-filter-form select,.company-location-form input{min-height:40px;border:1px solid #cbd5cd;border-radius:8px;padding:8px 10px;background:#fff;color:#1d2a22}.vehicle-activity-metrics{margin-bottom:18px}.vehicle-activity-metrics .metric strong{font-size:20px}.vehicle-day-group{padding:4px 0 20px}.vehicle-day-group+ .vehicle-day-group{border-top:1px solid #e5ebe6;padding-top:20px}.vehicle-day-group h3{margin:0 0 10px}.vehicle-activity-table-wrap{overflow-x:auto}.vehicle-activity-table{width:100%;border-collapse:collapse;min-width:760px}.vehicle-activity-table th{font-size:11px;text-transform:uppercase;letter-spacing:.07em;text-align:left;color:#6b7d70;padding:9px 10px;border-bottom:1px solid #dce5de}.vehicle-activity-table td{padding:11px 10px;border-bottom:1px solid #edf1ee;vertical-align:middle}.vehicle-activity-table td:nth-child(3){display:flex;align-items:center;gap:9px}.activity-badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:800;background:#e7ece8;color:#3d5043;white-space:nowrap}.activity-badge.customer{background:#eef0dc;color:#5a601f}.activity-badge.shop{background:#e0ece4;color:#27563a}.activity-badge.driving{background:#e4eaf0;color:#314e65}.activity-badge.other_stop{background:#eee8e1;color:#66503c}.activity-open{font-size:12px;font-weight:800;color:#2d6c43}.company-location-form{display:grid;grid-template-columns:minmax(220px,1.5fr) repeat(3,minmax(120px,.7fr)) auto;gap:12px;align-items:end}.company-location-form>div{display:grid;gap:4px}.company-location-form>div span{font-size:12px;color:#6b7d70}.vehicle-empty{padding:38px 20px;display:grid;gap:6px;text-align:center}.alert.success{background:#e0f1e6;color:#245d3c}@media(max-width:900px){.vehicle-activity-toolbar{align-items:stretch;flex-direction:column}.company-location-form{grid-template-columns:1fr 1fr}.company-location-form>div{grid-column:1/-1}.company-location-form button{align-self:end}}@media(max-width:620px){.company-location-form{grid-template-columns:1fr}.company-location-form>div{grid-column:auto}.vehicle-filter-form{display:grid;grid-template-columns:1fr 1fr}.vehicle-filter-form button{grid-column:1/-1}.vehicle-activity-metrics{grid-template-columns:1fr 1fr}}
.logger-good{color:#2d6c43}.logger-stale{color:#9a5b22}

/* BCE v0.9.1 known-location management */
.known-location-shop{margin-bottom:18px}
.known-location-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.9fr);gap:18px;align-items:start}
.known-location-list-wrap h3,.known-location-editor h3{margin:0 0 12px}
.known-location-list{display:flex;flex-direction:column;gap:8px}
.known-location-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border:1px solid var(--border,#d9e0db);border-radius:12px;background:var(--card,#fff)}
.known-location-row.inactive{opacity:.62}
.known-location-row>div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.known-location-row strong{font-size:14px}
.known-location-row span,.known-location-row small{font-size:12px;color:var(--muted,#66756b)}
.known-location-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.known-location-actions form{margin:0}
.known-location-editor{padding:16px;border:1px solid var(--border,#d9e0db);border-radius:14px;background:rgba(247,249,247,.75);display:flex;flex-direction:column;gap:11px}
.known-location-editor label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700}
.known-location-fields{display:grid;gap:10px}
.known-location-fields.two{grid-template-columns:1fr 1fr}
.known-location-fields.three{grid-template-columns:1.4fr .7fr .8fr}
.known-location-editor-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.checkbox-line{flex-direction:row!important;align-items:center;gap:8px!important}
.button.compact{padding:7px 10px;font-size:12px;min-height:0}
.button.danger{border-color:#d9aaa4;color:#8a2e24;background:#fff8f7}
.activity-map-button{white-space:nowrap}
.location-map-modal[hidden]{display:none}
.location-map-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:22px}
.location-map-backdrop{position:absolute;inset:0;background:rgba(14,22,17,.6);backdrop-filter:blur(2px)}
.location-map-dialog{position:relative;z-index:1;width:min(900px,96vw);max-height:92vh;overflow:auto;background:var(--card,#fff);border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,.28);padding:18px}
.location-map-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}
.location-map-head h2{margin:2px 0 2px}
.location-map-close{border:0;background:transparent;font-size:30px;line-height:1;cursor:pointer;color:inherit;padding:2px 8px}
.activity-location-map{height:min(58vh,520px);min-height:320px;border-radius:14px;overflow:hidden;background:#edf0ed}
.quick-name-location{display:grid;grid-template-columns:1.5fr 1fr .8fr auto;gap:10px;align-items:end;margin-top:14px;padding-top:14px;border-top:1px solid var(--border,#d9e0db)}
.quick-name-location>div{grid-column:1/-1;display:flex;flex-direction:column;gap:3px}
.quick-name-location label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700}
body.modal-open{overflow:hidden}
@media (max-width:900px){.known-location-grid{grid-template-columns:1fr}.quick-name-location{grid-template-columns:1fr 1fr}.quick-name-location .button{grid-column:1/-1}.known-location-fields.three{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.known-location-row{align-items:flex-start;flex-direction:column}.known-location-actions{justify-content:flex-start}.known-location-fields.two,.known-location-fields.three,.quick-name-location{grid-template-columns:1fr}.location-map-modal{padding:8px}.location-map-dialog{width:100%;max-height:96vh;padding:12px}.activity-location-map{min-height:280px}}

/* v0.9.3 vehicle daily accounting */
.vehicle-day-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:0 0 12px}.vehicle-day-summary>div{border:1px solid #e1e8e2;border-radius:9px;padding:8px 10px;background:#fafbf9;display:grid;gap:2px}.vehicle-day-summary span{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#6b7d70;font-weight:800}.vehicle-day-summary strong{font-size:14px}.vehicle-day-summary-total{background:#f1f5f1!important;border-color:#cfdacf!important}.activity-not-counted{font-size:12px;color:#7a867e;font-weight:700;font-style:italic}@media(max-width:900px){.vehicle-day-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:620px){.vehicle-day-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.vehicle-day-summary-total{grid-column:1/-1}}

/* v0.9.4 lunch classification, customer stubs, global activity settings */
.activity-badge.lunch{background:#f7ead2;color:#7a541e}
.vehicle-day-summary{grid-template-columns:repeat(6,minmax(0,1fr))}
.vehicle-summary-alert{background:#fff3df!important;border-color:#e8c37d!important}
.vehicle-summary-alert small{font-size:11px;color:#8a5b16;font-weight:800}
.lunch-overrun{display:block;margin-top:4px;font-size:11px;color:#9a5b22;font-weight:800}
.vehicle-settings-form{display:flex;align-items:end;gap:14px;flex-wrap:wrap}
.vehicle-settings-form label{display:grid;gap:6px;font-size:12px;font-weight:700;min-width:220px}
.vehicle-settings-form input{min-height:40px;border:1px solid #cbd5cd;border-radius:8px;padding:8px 10px;background:#fff;color:#1d2a22}
.vehicle-settings-form>div{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.quick-customer-fields{grid-column:1/-1;display:grid;grid-template-columns:1fr 1.5fr;gap:10px}
.quick-customer-fields[hidden]{display:none}
.quick-customer-fields label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700}
@media(max-width:900px){.vehicle-day-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.quick-customer-fields{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.vehicle-day-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.vehicle-day-summary-total{grid-column:1/-1}.quick-customer-fields{grid-template-columns:1fr}.vehicle-settings-form{display:grid;grid-template-columns:1fr}.vehicle-settings-form>div{align-items:flex-start;flex-direction:column}}

/* v0.9.5 reporting: weekly customer vehicle activity */
.reports-main{padding-bottom:42px}.reports-subtitle{margin:5px 0 0;color:var(--muted);font-size:13px}.report-family-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}.report-family{border:1px solid var(--line);border-radius:13px;background:#fff;padding:15px 16px;display:grid;gap:4px;box-shadow:0 5px 16px rgba(28,41,31,.04)}.report-family strong{font-size:15px}.report-family span{font-size:12px;color:var(--muted)}.report-family.active{border-color:#a9bcae;background:#f3f7f3}.report-family.future{opacity:.62}.report-control-panel{overflow:visible}.report-week-controls{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px}.report-week-title{display:grid;gap:3px;min-width:210px}.report-week-title strong{font-size:18px}.report-week-title span{font-size:11px;color:var(--muted)}.report-week-form{display:flex;gap:8px;align-items:end;flex-wrap:wrap;justify-content:flex-end}.report-week-form label{display:grid;gap:5px;font-size:11px;font-weight:800;color:var(--muted)}.report-week-form input{min-height:38px;border:1px solid var(--line);border-radius:8px;padding:7px 9px;background:#fff;color:var(--ink)}.report-metrics .value{font-size:25px}.report-metric-sub{margin-top:3px;color:var(--muted);font-size:11px}.report-table-wrap{overflow-x:auto}.report-table{width:100%;border-collapse:collapse;min-width:850px}.report-table th{font-size:10px;text-transform:uppercase;letter-spacing:.07em;text-align:left;color:#6b7d70;padding:10px 13px;border-bottom:1px solid #dce5de;white-space:nowrap}.report-table td{padding:12px 13px;border-bottom:1px solid #edf1ee;vertical-align:top}.report-table tbody tr:last-child td{border-bottom:0}.report-table td strong,.report-table td small{display:block}.report-table td small{margin-top:2px;color:var(--muted);font-size:11px}.report-detail-table{min-width:980px}.report-method-note{border:1px solid #d8e0d9;border-radius:13px;background:#f7f9f7;padding:15px 17px}.report-method-note strong{font-size:13px}.report-method-note p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.5}@media(max-width:900px){.report-family-tabs{grid-template-columns:1fr}.report-week-controls{align-items:stretch;flex-direction:column}.report-week-form{justify-content:flex-start}.report-metrics{grid-template-columns:1fr 1fr}}@media(max-width:620px){.report-week-form{display:grid;grid-template-columns:1fr 1fr}.report-week-form label{grid-column:1/-1}.report-week-form .button.primary{grid-column:1/-1}.report-metrics{grid-template-columns:1fr}}
@media(max-width:980px){.mobile-nav{display:flex;overflow-x:auto;scrollbar-width:none}.mobile-nav::-webkit-scrollbar{display:none}.mobile-nav>*{flex:0 0 auto;min-width:72px}}

/* v0.9.6 weekly report totals and operational category rows */
.report-category-row td{background:#fafbf9}.report-category-row.lunch td{background:#fffaf1}.report-category-row.supplier td{background:#f7f8f5}.report-table tfoot th{padding:13px;border-top:2px solid #cbd8ce;background:#edf3ee;text-align:left;vertical-align:top}.report-table tfoot th strong,.report-table tfoot th small{display:block}.report-table tfoot th small{margin-top:2px;color:var(--muted);font-size:11px;font-weight:500;text-transform:none;letter-spacing:0}.report-total-row th:first-child{font-size:12px;color:var(--ink);letter-spacing:.02em}.report-total-row th:not(:first-child){font-size:12px;color:var(--ink);text-transform:none;letter-spacing:0}

/* v0.9.7 lunch-break accounting and overage emphasis */
.activity-row-lunch-over td{background:#fdebec!important;border-bottom-color:#f1c9cc}.activity-row-lunch-over td:first-child{box-shadow:inset 4px 0 0 #c9656e}.lunch-rule-note{display:block;margin-top:4px;font-size:11px;color:#6d5a3a;font-weight:700}.activity-row-lunch-over .lunch-overrun{color:#9b2632}.report-lunch-detail-table{min-width:1120px}.report-lunch-over td{background:#fdebec!important;border-bottom-color:#f1c9cc}.report-lunch-over td:first-child{box-shadow:inset 4px 0 0 #c9656e}.report-over-text{color:#9b2632!important;font-weight:800!important}

/* BCE v0.10.0 Google Workspace SSO */
.bce-login-card{width:min(440px,92vw)}
.google-signin-button{display:flex;align-items:center;justify-content:center;gap:11px;width:100%;padding:11px 14px;border:1px solid #cfd6d1;border-radius:10px;background:#fff;color:#27332b;text-decoration:none;font-weight:800;box-shadow:0 1px 2px rgba(20,30,22,.05)}
.google-signin-button:hover{background:#f8faf8;border-color:#bfc9c1}
.google-g{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;border:1px solid #d7ddd9;font-weight:900;color:#3559a8;background:#fff}
.google-signin-note,.breakglass-note{font-size:12px!important;margin:9px 0 0!important;color:var(--muted)!important;text-align:center}
.auth-divider{display:flex;align-items:center;gap:10px;margin:19px 0;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.auth-divider:before,.auth-divider:after{content:"";height:1px;background:var(--line);flex:1}.auth-divider span{white-space:nowrap}
.google-sso-panel{overflow:visible}.google-sso-form{padding:18px}.google-sso-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.google-sso-grid label,.google-user-row label{font-size:12px;font-weight:800;color:var(--muted)}
.google-sso-grid input,.google-user-row input,.google-user-row select{width:100%;border:1px solid var(--line);padding:9px 10px;border-radius:9px;background:#fff;color:var(--ink);margin-top:5px}.google-sso-grid small{display:block;margin-top:5px;font-weight:500;color:var(--muted)}
.google-sso-actions{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:16px;padding-top:15px;border-top:1px solid var(--line)}
.status-pill{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:850}.status-pill.good{background:#e0f1e6;color:#245d3c}.status-pill.muted-status{background:#eef1ef;color:#66716a}
.google-user-row{grid-template-columns:minmax(145px,1fr) minmax(190px,1.25fr) minmax(100px,.7fr) minmax(150px,1fr) minmax(210px,1.35fr) minmax(150px,1fr) auto!important;position:relative}
.auth-chip-row{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}.auth-chip{display:inline-flex;padding:3px 7px;border-radius:999px;background:#eef1ef;color:#7a847e;font-size:10px;font-weight:850}.auth-chip.active{background:#e0f1e6;color:#245d3c}
.access-toggles{display:flex;gap:10px;flex-wrap:wrap;align-items:center;min-height:40px}.access-toggles .toggle-line{padding:0}.user-save-actions{display:flex;gap:6px;align-items:center}.google-last-login{font-size:11px;color:var(--muted);padding-top:2px}.span-all{grid-column:1/-1}
@media(max-width:1250px){.google-user-row{grid-template-columns:repeat(2,minmax(0,1fr))!important}.google-user-row .user-admin-name,.google-last-login{grid-column:1/-1}.user-save-actions{justify-content:flex-start}}
@media(max-width:700px){.google-sso-grid,.google-user-row{grid-template-columns:1fr!important}.google-sso-grid .span-2,.google-user-row .user-admin-name,.google-last-login{grid-column:auto}.google-sso-actions{align-items:flex-start;flex-direction:column}}

/* BCE v0.11.0 client workspace + supplied 2026/27 agreements */
.toolbar-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.search-input{width:min(330px,42vw);min-height:40px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:9px 12px;color:var(--ink)}
.client-list{display:grid;gap:14px}.client-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:17px 18px;box-shadow:var(--shadow)}.client-contact{margin:3px 0 10px;font-size:13px;font-weight:750}.customer-card-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.customer-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.customer-title-line h3{margin:0}.customer-sites{display:grid;gap:5px}.customer-site.compact{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px}.customer-site.compact div{display:flex;gap:7px;align-items:baseline;flex-wrap:wrap}.customer-site.compact span{color:var(--muted)}
.client-agreement-summary{margin-top:15px;padding:13px 14px;border:1px solid #dce4dd;border-radius:12px;background:#f8faf8;display:grid;grid-template-columns:minmax(0,1.5fr) auto auto;gap:18px;align-items:center}.client-agreement-summary>div:first-child{display:grid;gap:3px}.client-agreement-summary small{color:var(--muted)}.client-money{display:grid;text-align:right}.client-money strong{font-size:18px}.client-money span{font-size:11px;color:var(--muted)}.client-scope-count{display:grid;grid-template-columns:auto auto;gap:2px 6px;align-items:baseline}.client-scope-count strong{font-size:15px;text-align:right}.client-scope-count span{font-size:10px;color:var(--muted)}.client-agreement-empty{margin-top:15px;padding:13px;border:1px dashed var(--line);border-radius:12px;display:grid;color:var(--muted);font-size:12px}.client-agreement-empty strong{color:var(--ink)}
.wide-modal{width:min(1120px,96vw);max-height:94vh}.contract-dialog-body{max-height:calc(94vh - 82px);overflow:auto;padding:18px;background:#f6f7f4}.contract-section{background:#fff;border:1px solid var(--line);border-radius:14px;margin-bottom:14px;overflow:hidden}.contract-section>.section-heading{padding:15px 18px;border-bottom:1px solid var(--line)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.section-heading h3,.section-heading p{margin:0}.section-heading p{margin-top:3px;color:var(--muted);font-size:12px}.section-heading>div{display:grid;gap:2px}.compact-form{padding:15px 18px}.form-actions-inline{display:flex;justify-content:flex-end;gap:9px;align-items:center}.form-label{font-size:12px;font-weight:800;color:var(--muted)}
.client-profile>.form-grid{border-bottom:1px solid var(--line)}.client-site-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:12px;padding:14px}.client-site-card{border:1px solid #e0e5e1;border-radius:12px;overflow:hidden;background:#fbfcfa}.client-site-card>.section-heading{padding:11px 13px;border-bottom:1px solid #e5e9e5}.coordinate-set,.coordinate-missing{font-size:10px;font-weight:850;padding:4px 7px;border-radius:999px}.coordinate-set{background:#e0f1e6;color:#245d3c}.coordinate-missing{background:#fff1ce;color:#715316}
.agreement-tabs{display:flex;gap:8px;padding:13px 16px;overflow-x:auto}.agreement-select{border:1px solid var(--line);border-radius:10px;background:#fff;padding:10px 12px;display:grid;gap:2px;min-width:180px;text-align:left}.agreement-select strong{font-size:13px}.agreement-select span{font-size:10px;color:var(--muted)}.agreement-select.active{border-color:#8ba08f;background:#eef4ef;box-shadow:inset 0 0 0 1px #a7b8aa}
.contract-summary{padding-bottom:0}.contract-summary-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding:17px 18px;border-bottom:1px solid var(--line)}.contract-summary-head h3,.contract-summary-head p{margin:0}.contract-summary-head p{margin-top:5px;font-size:12px;color:var(--muted)}.contract-summary-head>div:last-child{display:grid;text-align:right}.contract-summary-head>div:last-child strong{font-size:23px}.contract-summary-head>div:last-child span{font-size:11px;color:var(--muted)}.agreement-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--line)}.agreement-metrics span{padding:12px 15px;border-right:1px solid var(--line);display:grid;gap:2px}.agreement-metrics span:last-child{border-right:0}.agreement-metrics small{font-size:10px;color:var(--muted)}.agreement-metrics strong{font-size:15px}.source-review{margin:14px 18px 0;border:1px solid #e2c478;border-radius:10px;background:#fff8e5;padding:11px 13px;color:#5f4a14}.source-review strong{font-size:12px}.source-review p{margin:4px 0 0;font-size:12px;line-height:1.45;white-space:pre-line}
.contract-document-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:14px 18px}.contract-document-row>div{display:grid;gap:2px}.contract-upload-form{display:flex;align-items:center;gap:8px}.contract-upload-form input{max-width:260px}
.contract-service-list{display:grid;gap:10px;padding:14px}.contract-service-card{border:1px solid #dfe4df;border-radius:12px;padding:13px 14px;background:#fff}.contract-service-card.coverage-included{border-left:4px solid #5b7a64}.contract-service-card.coverage-optional{border-left:4px solid #c79c41;background:#fffcf5}.contract-service-card.coverage-extra{border-left:4px solid #a96d64;background:#fff9f8}.contract-service-main{display:flex;justify-content:space-between;gap:18px}.service-title-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.contract-fee{display:grid;text-align:right;white-space:nowrap;font-weight:850}.contract-fee span{font-size:10px;color:var(--muted);font-weight:600}.contract-fee.missing{color:var(--danger)}.contract-service-meta{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}.contract-service-meta>span{font-size:10px;padding:4px 7px;border-radius:999px;background:#f0f3f0;color:#536158;font-weight:750}.service-scope{font-size:12px;line-height:1.45;margin:10px 0 0;color:#34433a}.contract-card-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:9px}.fee-warning{color:#875d16!important;background:#fff3d3!important}
.badge.coverage-included{background:#e2efe5;color:#2d6542}.badge.coverage-optional{background:#fff0cb;color:#765716}.badge.coverage-extra{background:#f5e3e0;color:#814a43}.service-editor.editing{box-shadow:inset 0 0 0 2px #9aad9e}.service-editor .section-heading{background:#f9faf8}
.weekday-picker{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.weekday-picker label{position:relative}.weekday-picker input{position:absolute;opacity:0;pointer-events:none}.weekday-picker span{display:block;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-size:11px}.weekday-picker input:checked+span{background:var(--brand);color:#fff;border-color:var(--brand)}
@media(max-width:800px){.search-input{width:100%}.toolbar-actions{width:100%}.client-agreement-summary{grid-template-columns:1fr}.client-money{text-align:left}.client-scope-count{justify-content:start}.customer-card-head,.contract-summary-head,.contract-service-main{flex-direction:column}.contract-summary-head>div:last-child,.contract-fee{text-align:left}.agreement-metrics{grid-template-columns:1fr 1fr}.agreement-metrics span:nth-child(2n){border-right:0}.contract-document-row{grid-template-columns:1fr}.contract-upload-form{align-items:stretch;flex-direction:column}.contract-upload-form input{max-width:none}.client-site-grid{grid-template-columns:1fr}}
@media(max-width:560px){.agreement-metrics{grid-template-columns:1fr}.agreement-metrics span{border-right:0}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.client-site-grid{padding:10px}.contract-dialog-body{padding:10px}}


/* BCE v0.11.1 client geofence controls + GPS-created client visibility */
.gps-stub-panel{margin-bottom:14px;border-color:#d9c78e;background:#fffdf5}.gps-stub-panel .panel-head{border-bottom:1px solid #eadfb9}.gps-stub-links{display:flex;gap:7px;flex-wrap:wrap;padding:12px 16px}.gps-stub-client{border-left:4px solid #c8a74b}.badge.gps-stub{background:#fff0c7;color:#735715}.customer-site.compact small{font-size:10px;color:#6a776e;font-weight:750;background:#f1f4f1;padding:2px 6px;border-radius:999px}.vehicle-message-with-action{display:flex;align-items:center;justify-content:space-between;gap:12px}.vehicle-message-with-action .button{flex:0 0 auto;text-decoration:none}.client-site-card input[name=geofence_radius_m]{font-weight:800}
@media(max-width:640px){.vehicle-message-with-action{align-items:flex-start;flex-direction:column}}
/* v0.11.4 lunch detail grouping */
.report-truck-subtotal th{padding:12px 10px;border-top:2px solid #cbd8ce;border-bottom:2px solid #cbd8ce;background:#edf3ee;text-align:left;vertical-align:top;color:var(--ink)}
.report-truck-subtotal th strong,.report-truck-subtotal th small{display:block}
.report-truck-subtotal th small{margin-top:2px;color:var(--muted);font-size:11px;font-weight:500;text-transform:none;letter-spacing:0}
.report-truck-subtotal th:not(:first-child){font-size:12px;text-transform:none;letter-spacing:0}


/* BCE v0.12.0 - Daily/work-order and reconciliation workflow */
.daily-main,.reconcile-main{max-width:1500px}.daily-alert-success{background:#e0f1e6;color:#245d3c;border:1px solid #b7dac3}.daily-date-panel{display:flex;align-items:center;justify-content:space-between}.daily-metrics{margin-bottom:18px}.daily-layout{display:grid;grid-template-columns:minmax(300px,410px) minmax(0,1fr);gap:18px;align-items:start}.daily-list-panel{position:sticky;top:16px}.daily-card-list{display:grid;gap:8px}.daily-card{display:flex;justify-content:space-between;gap:14px;padding:13px 14px;border:1px solid var(--line,#d8dfda);border-radius:12px;text-decoration:none;color:inherit;background:#fff}.daily-card:hover,.daily-card.active{border-color:#668673;box-shadow:0 2px 10px rgba(28,52,38,.09)}.daily-card>div:first-child{display:grid;gap:3px}.daily-card span,.daily-card small{display:block;color:#657269}.daily-card-flags{display:flex;flex-direction:column;align-items:flex-end;gap:5px;font-size:12px;white-space:nowrap}.daily-status,.gps-pill,.billing-mode,.attachment-type{display:inline-flex;align-items:center;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.03em}.daily-status.entered{background:#edf0ed;color:#46544b}.daily-status.needs_review,.gps-pill.missing{background:#f7e2df;color:#8b352f}.daily-status.reconciled,.gps-pill.matched{background:#dcefe2;color:#235b3b}.daily-status.billing_ready{background:#e1e8f5;color:#304e7b}.daily-status.exported{background:#e9e4f2;color:#584776}.daily-edit-form{display:grid;gap:14px}.daily-crew{display:flex;flex-wrap:wrap;gap:8px 16px;padding:12px;border:1px solid #d8dfda;border-radius:10px}.daily-crew legend{padding:0 6px;font-weight:700}.check-line{display:flex!important;align-items:center;gap:6px;font-weight:500!important}.check-line input{width:auto!important}.daily-subsection{margin-top:24px;padding-top:22px;border-top:1px solid #dfe5e1}.daily-add-service{margin-top:14px;padding:14px;background:#f6f8f6;border:1px solid #dfe5e1;border-radius:12px}.billing-mode.included{background:#e6eee8;color:#365844}.billing-mode.billable{background:#fff0d5;color:#80560f}.billing-mode.no_charge{background:#ececec;color:#555}.gps-match-list,.attachment-list,.candidate-list{display:grid;gap:8px}.gps-match-row,.attachment-row,.candidate-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid #dfe5e1;border-radius:10px;background:#fff}.gps-match-row>div,.attachment-row>div{display:grid;gap:3px}.gps-match-row span,.attachment-row small{color:#657269}.daily-gps-warning{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-radius:10px;background:#f8e3e0;color:#7e302b;margin-bottom:10px}.inline-actions{display:flex;gap:8px;margin-top:10px}.candidate-list{margin-top:14px}.candidate-list>strong{font-size:13px}.candidate-row{margin:0}.candidate-row span{font-size:13px}.attachment-type.daily_sheet{background:#e2e9f5;color:#314f7c}.attachment-type.receipt{background:#f3eadc;color:#745421}.attachment-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.attachment-upload{display:grid;gap:9px;padding:14px;border:1px dashed #aebbb2;border-radius:12px;background:#fafbfa}.attachment-upload label{display:grid;gap:4px;font-size:12px;font-weight:700}.dashboard-word-value{font-size:24px!important}.workflow-card{display:grid;gap:4px;padding:14px 16px;border:1px solid #dce4df;border-radius:12px;background:#fff;text-decoration:none;color:inherit;margin-bottom:9px}.workflow-card:hover{border-color:#668673}.workflow-card span{color:#657269}.workflow-card.future{background:#f6f7f6}.reconcile-legend{display:flex;flex-wrap:wrap;gap:18px;padding:12px 16px;margin-bottom:18px}.reconcile-legend span{display:flex;align-items:center;gap:7px;font-size:13px}.reconcile-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.reconcile-dot.accounted{background:#4b8a62}.reconcile-dot.missing{background:#b95148}.reconcile-dot.review{background:#c99533}.reconcile-dot.operational{background:#99a29c}.alert-metric{background:#fae5e2!important}.warning-metric{background:#fff3dc!important}.reconcile-truck{margin-bottom:18px}.reconcile-day{padding:14px 0;border-top:1px solid #e0e5e2}.reconcile-day:first-of-type{border-top:0}.reconcile-day-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}.reconcile-day-head>div{display:flex;gap:6px}.reconcile-row.accounted{background:#f1f8f3}.reconcile-row.missing_daily,.reconcile-row.unaccounted_stop{background:#fbe8e5}.reconcile-table td{vertical-align:top}.reconcile-table td small{display:block;color:#68736c;margin-top:3px}.linked-dailies{display:flex;flex-wrap:wrap;gap:5px}.linked-dailies a{text-decoration:none}.reconcile-missing{display:grid;gap:6px}.reconcile-missing>span{font-size:12px;color:#76433f}.reconcile-link-form{display:flex;gap:6px;align-items:center}.reconcile-link-form select{min-width:180px}.reconcile-operational-label{color:#6a746e;font-size:12px}.daily-missing-gps-block{margin-top:10px;padding:12px;border:1px solid #e6cf9f;background:#fff7e6;border-radius:10px;display:grid;gap:6px}.daily-missing-gps-block>a{display:grid;gap:2px;color:inherit;text-decoration:none;padding:7px 9px;border-radius:8px;background:#fff}.daily-missing-gps-block small{color:#6d716d}.activity-daily-cell{min-width:110px}.activity-daily-cell .gps-pill{margin:2px;text-decoration:none}
@media(max-width:1000px){.daily-layout{grid-template-columns:1fr}.daily-list-panel{position:static}.attachment-upload-grid{grid-template-columns:1fr}}
@media(max-width:700px){.daily-card{flex-direction:column}.daily-card-flags{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.reconcile-day-head{align-items:flex-start;flex-direction:column}.reconcile-link-form{align-items:stretch;flex-direction:column}.attachment-upload-grid{grid-template-columns:1fr}.daily-main,.reconcile-main{padding-bottom:76px}}
/* BCE v0.12.1 - weekly/monthly reporting and Daily time reconciliation */
.report-period-toggle{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.report-time-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.report-contract-metric{background:#f1f8f3}.report-billable-metric{background:#eef4fb}.report-missing-metric{background:#fdebea}.report-mixed-metric{background:#fff6df}.report-classification-note{display:flex;gap:10px 18px;align-items:center;flex-wrap:wrap;margin:-4px 0 18px;padding:11px 14px;border:1px solid #e2ddd0;border-radius:11px;background:#fffaf0;font-size:12px}.report-classification-note strong{color:#675423}.report-classification-note span{color:var(--muted)}.report-reconciliation-summary{min-width:1180px}.report-customer-missing td{background:#fff8f7}.report-customer-missing td:first-child{box-shadow:inset 3px 0 0 #c9656e}.report-time-badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.report-time-badge.contract{background:#dcefe2;color:#235b3b}.report-time-badge.billable{background:#dfeaf7;color:#31577f}.report-time-badge.mixed{background:#fff0ca;color:#765618}.report-time-badge.no_charge{background:#ecefed;color:#4f5c54}.report-time-badge.unclassified{background:#fff0ca;color:#765618}.report-time-badge.missing_daily{background:#f7dfdc;color:#8b352f}.report-time-class-missing_daily td{background:#fff8f7}.report-detail-table{min-width:1160px}@media(max-width:900px){.report-time-metrics{grid-template-columns:1fr 1fr}.report-period-toggle{width:100%}}@media(max-width:620px){.report-time-metrics{grid-template-columns:1fr}.report-period-toggle .button{flex:1;text-align:center}}

/* v0.12.2 Daily detail / contract-service input */
.daily-details-section h4{margin:0 0 4px}.contract-detail-picker,.new-daily-contract-picker,.daily-other-detail{margin-top:16px;padding:14px;border:1px solid #d8ded9;border-radius:12px;background:#f8faf8}.contract-service-grid,.new-contract-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;margin:12px 0}.contract-service-option{display:flex;align-items:flex-start;gap:10px;padding:11px;border:1px solid #d8ded9;border-radius:10px;background:#fff;cursor:pointer}.contract-service-option.already-added{background:#f1f5f2;cursor:default;opacity:.78}.contract-service-option input{margin-top:4px}.contract-service-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.contract-service-copy>span{font-size:14px}.contract-service-copy small{display:block;color:#617067;line-height:1.35}.contract-added-check{display:inline-flex;width:20px;height:20px;border-radius:50%;align-items:center;justify-content:center;background:#dfece3;color:#245d3c;font-weight:700;flex:0 0 auto}.coverage-pill,.contract-source-pill{display:inline-block;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:700;text-transform:capitalize;background:#e7ebe8;color:#425149}.coverage-pill.included{background:#dfeee3;color:#245d3c}.coverage-pill.optional{background:#fff0c9;color:#73550c}.coverage-pill.extra{background:#f8dddd;color:#7d2929}.new-daily-contract-picker>span{display:block;margin-top:4px;color:#617067}.new-contract-head{display:flex;flex-direction:column;gap:3px}.new-contract-head span{color:#617067}.daily-detail-editor{min-width:72px}.daily-detail-editor summary{cursor:pointer;color:#315f45;font-weight:700}.detail-edit-form{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:8px;position:absolute;right:24px;z-index:10;width:min(620px,calc(100vw - 48px));padding:14px;margin-top:8px;border:1px solid #ccd5cf;border-radius:12px;background:#fff;box-shadow:0 10px 30px rgba(0,0,0,.16)}.detail-edit-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700}.detail-edit-form .span-2{grid-column:1/-1}.detail-edit-actions{align-self:end}.detail-delete-form{margin-top:6px}.daily-detail-table td:last-child{position:relative}.daily-other-detail{margin-top:18px}.daily-other-detail .daily-add-service{margin-top:10px}
@media(max-width:760px){.contract-service-grid,.new-contract-grid{grid-template-columns:1fr}.detail-edit-form{position:fixed;left:12px;right:12px;top:12vh;width:auto;max-height:76vh;overflow:auto;grid-template-columns:1fr;z-index:50}.detail-edit-form .span-2{grid-column:auto}}

/* BCE v0.12.3 - sortable report tables */
.report-sort-hint{font-weight:700;color:#496657;white-space:nowrap}.report-sort-button{appearance:none;border:0;background:transparent;padding:0;margin:0;width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;color:inherit;font:inherit;font-weight:800;text-align:left;cursor:pointer}.report-sort-button:hover .report-sort-label,.report-sort-button:focus-visible .report-sort-label{text-decoration:underline}.report-sort-button:focus-visible{outline:2px solid #668673;outline-offset:4px;border-radius:3px}.report-sort-indicator{font-size:12px;line-height:1;color:#8b9790;flex:0 0 auto}.report-table th.sort-asc .report-sort-indicator::before{content:'↑';font-size:14px;color:#315f45}.report-table th.sort-desc .report-sort-indicator::before{content:'↓';font-size:14px;color:#315f45}.report-table th.sort-asc .report-sort-indicator,.report-table th.sort-desc .report-sort-indicator{font-size:0}.report-table thead th[data-sort-type]{user-select:none}.report-truck-subtotal{scroll-margin-top:8px}

/* v0.12.4 Repeatable Daily details */
.daily-level-notes{border:1px solid #d8dfda;border-radius:10px;background:#fafbfa;padding:0}.daily-level-notes>summary{cursor:pointer;padding:11px 12px;font-weight:750}.daily-level-notes>summary span,.muted-inline{font-weight:500;color:#66736b;font-size:12px}.daily-level-note-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0 12px 12px}.daily-level-note-grid label{display:grid;gap:4px}.contract-service-add-form{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(280px,1.3fr);gap:10px;margin-top:12px;align-items:end}.contract-service-add-form label{display:grid;gap:4px;font-size:12px;font-weight:700}.contract-service-add-form textarea,.daily-add-service textarea,.detail-edit-form textarea{width:100%;resize:vertical}.contract-service-selected-help{grid-column:1/-1;color:#617067;font-size:12px}.contract-service-add-form button{justify-self:start}.contract-service-readonly{margin-top:10px;color:#617067}.daily-other-detail>p{margin:4px 0 0;color:#617067;font-size:13px}.daily-detail-table td:nth-child(2) small{display:block;margin-top:4px;line-height:1.35;color:#617067}.daily-detail-table td:nth-child(2) small b{color:#435048}.new-daily-contract-picker label{display:grid;gap:5px;margin-top:10px;font-size:12px;font-weight:700}.new-daily-contract-picker select{width:100%}
@media(max-width:760px){.daily-level-note-grid,.contract-service-add-form{grid-template-columns:1fr}.contract-service-selected-help{grid-column:auto}}

/* v0.12.5 repeatable Daily work rows + GPS-observed truck suggestions */
.daily-observed-trucks{border:1px solid #d7dfd9;border-radius:10px;padding:11px 12px;background:#f8faf8;display:grid;gap:8px}.daily-observed-trucks>strong{font-size:13px}.daily-observed-trucks [data-observed-results]{display:flex;flex-wrap:wrap;gap:8px}.daily-observed-trucks [data-observed-results]>span{font-size:12px;color:#617067}.observed-truck-choice{appearance:none;border:1px solid #cad5cd;border-radius:9px;background:#fff;padding:8px 10px;text-align:left;display:flex;flex-direction:column;gap:2px;cursor:pointer;color:inherit}.observed-truck-choice strong{font-size:13px}.observed-truck-choice span{font-size:11px;color:#617067}.observed-truck-choice.selected{border-color:#4f7f61;box-shadow:0 0 0 2px rgba(79,127,97,.12);background:#f1f7f3}
.new-daily-details-block{margin:18px 0;padding:14px;border:1px solid #d8ded9;border-radius:12px;background:#fafbfa}.daily-detail-grid-form{display:grid;gap:12px}.daily-detail-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}.daily-contract-quickadd{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;flex:1}.daily-contract-quickadd label{display:grid;gap:4px;min-width:min(430px,100%);font-size:12px;font-weight:700}.daily-contract-quickadd small{flex-basis:100%;color:#617067}.daily-detail-grid-head{display:grid;grid-template-columns:minmax(150px,.75fr) minmax(280px,1.65fr) minmax(115px,.55fr) minmax(235px,1fr) 78px;gap:10px;padding:0 10px;color:#617067;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}.daily-detail-grid{display:grid;gap:8px}.daily-entry-row{display:grid;grid-template-columns:minmax(150px,.75fr) minmax(280px,1.65fr) minmax(115px,.55fr) minmax(235px,1fr) 78px;gap:10px;align-items:start;padding:10px;border:1px solid #d8dfda;border-radius:10px;background:#fff}.daily-entry-row label{display:grid;gap:4px;min-width:0}.daily-entry-row label>span,.daily-row-money label>span{display:none;font-size:10px;color:#617067;font-weight:700;text-transform:uppercase}.daily-row-description textarea{min-height:54px;resize:vertical}.daily-row-description small{display:block;color:#617067;font-size:11px;line-height:1.3}.daily-contract-link{margin-top:3px}.daily-row-money{display:grid;grid-template-columns:.65fr .8fr 1fr;gap:6px;transition:opacity .15s ease}.daily-row-money.is-muted{opacity:.48}.daily-row-money input{min-width:0}.daily-row-remove{align-self:center;justify-self:end}.daily-entry-row.is-removed{opacity:.5;background:#f6eeee}.daily-entry-row.is-removed textarea,.daily-entry-row.is-removed input,.daily-entry-row.is-removed select{text-decoration:line-through}.daily-detail-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.new-daily-form>.daily-level-notes{margin-top:14px}
@media (max-width:1100px){.daily-detail-grid-head{display:none}.daily-entry-row{grid-template-columns:1fr 1.6fr}.daily-entry-row label>span,.daily-row-money label>span{display:block}.daily-row-billing{grid-column:1}.daily-row-money{grid-column:2}.daily-row-remove{grid-column:1/-1;justify-self:start}.daily-contract-quickadd label{min-width:280px}}
@media (max-width:720px){.daily-entry-row{grid-template-columns:1fr}.daily-row-billing,.daily-row-money,.daily-row-remove{grid-column:1}.daily-row-money{grid-template-columns:1fr 1fr 1fr}.daily-detail-toolbar{align-items:stretch}.daily-contract-quickadd{display:grid}.daily-contract-quickadd label{min-width:0}.observed-truck-choice{width:100%}}

/* v0.12.6 admin-managed service categories */
.category-admin-main{min-width:0}.category-create-panel{margin-bottom:18px}.category-form{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(150px,.8fr) 120px auto auto;gap:10px;align-items:end}.category-form label:not(.check-line){display:grid;gap:4px;font-size:12px;font-weight:700}.category-active{padding-bottom:10px}.category-admin-table{min-width:980px}.category-admin-table input,.category-admin-table select{width:100%;min-width:0}.category-name-input{min-width:180px}.category-order-input{max-width:90px}.category-usage{display:flex;flex-direction:column;gap:2px;font-size:11px;color:#617067}.category-usage strong{color:#31463a}.category-actions{display:flex;gap:6px;align-items:center}.category-lock-note,.category-delete-rule{display:block;margin-top:4px;color:#8a4b45;font-size:10px;font-weight:700}.category-in-use td{background:#fffaf4}.category-in-use td:first-child{box-shadow:inset 3px 0 0 #d49c57}.button.danger{border-color:#dfb4b0;color:#8b352f;background:#fff8f7}.button.danger:hover{background:#f9e8e6}.button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:900px){.category-form{grid-template-columns:1fr 1fr}.category-form .button{justify-self:start}}@media(max-width:620px){.category-form{grid-template-columns:1fr}.category-active{padding-bottom:0}}

/* v0.13.0 QuickBooks extract import */
.qbo-upload-form{display:grid;grid-template-columns:minmax(150px,220px) minmax(280px,1fr) auto;gap:14px;align-items:end}.qbo-upload-form label{display:grid;gap:6px}.qbo-upload-form label>span,.vendor-search-form label>span{font-size:12px;font-weight:700;color:var(--muted,#65736a)}.qbo-upload-form input[type=file],.qbo-upload-form select,.vendor-search-form input{min-height:42px}.qbo-summary-grid{margin:14px 0}.qbo-commit-form{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0 16px}.qbo-commit-form span{font-size:12px;color:var(--muted,#65736a)}.qbo-preview-table td{vertical-align:top}.qbo-preview-table td small,.vendor-search-form+* small{display:block;margin-top:4px;color:var(--muted,#65736a)}.qbo-decision,.qbo-status{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}.qbo-decision.match,.qbo-status-committed,.qbo-decision.committed{background:#dff1e5;color:#245d3c}.qbo-decision.new{background:#e5edf8;color:#31577f}.qbo-decision.skip{background:#ecefed;color:#59645e}.qbo-status-preview,.qbo-status-partial{background:#fff0c9;color:#795700}.qbo-row-review{background:#fff8e3}.qbo-review-form{display:grid;grid-template-columns:minmax(120px,.7fr) minmax(180px,1.3fr) auto;gap:6px;min-width:430px}.qbo-review-form select{min-width:0}.qbo-row-committed{opacity:.72}.vendor-search-form{display:flex;gap:10px;align-items:center;margin-bottom:14px}.vendor-search-form input{min-width:260px;max-width:440px;flex:1}@media(max-width:850px){.qbo-upload-form{grid-template-columns:1fr}.qbo-review-form{min-width:320px;grid-template-columns:1fr}.qbo-preview-table{min-width:900px}}
.qbo-manual-help{margin-top:7px;max-width:850px;color:var(--muted,#65736a);font-size:12px}.qbo-review-form input[list]{min-width:0;min-height:38px}.qbo-proposed-target{display:block;margin-top:5px;color:var(--muted,#65736a)}
