:root{--ink:#173c35;--muted:#687770;--paper:#f5f6f1;--line:#dce3da;--white:#fff;--accent:#c9ec8d;--warn:#926017;--danger:#a33b35}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:48px;border:1px solid var(--ink);border-radius:9px;background:var(--ink);color:white;padding:12px 20px;font-weight:650;cursor:pointer;text-align:center}button:hover,.button:hover{filter:brightness(1.1)}button:disabled{opacity:.6;cursor:wait}.secondary{background:transparent;color:var(--ink);border-color:#bac8be}.danger{color:var(--danger);background:#fff8f5;border-color:#e9c9c2}.text-button{background:none;border:0;color:var(--ink);padding:8px;min-height:44px;font-size:13px}.full{width:100%}.primary{margin-top:26px;justify-content:space-between}.topbar{height:86px;padding:0 5%;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:30px;background:#fbfcf8}.brand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:750;letter-spacing:-.5px}.brandmark{height:37px;width:37px;display:block;flex-shrink:0;border-radius:10px}.brand-light{font-weight:400}.region{margin-left:auto;font-size:11px;letter-spacing:1.5px;color:var(--muted)}.topbar form{margin:0}.intake{max-width:1270px;margin:0 auto;padding:64px 38px;display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:start}.intro{position:sticky;top:45px;padding-top:14px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;margin:0 0 20px;color:var(--muted)}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#547d43;margin-right:6px}h1{font-size:clamp(36px,4.1vw,58px);line-height:1.09;letter-spacing:-2px;font-weight:650;margin:0 0 24px}h1 em{font-weight:450;font-style:normal;color:#6b8575}h2{font-size:21px;line-height:1.25;letter-spacing:-.5px;margin:0 0 18px}h3{font-size:16px;margin:0 0 8px}p{margin:0 0 15px}.lede{font-size:17px;line-height:1.7;color:var(--muted);max-width:390px}.steps{display:flex;flex-direction:column;gap:20px;margin:40px 0 50px}.steps span{display:flex;align-items:center;gap:15px;font-weight:550}.steps b{font-size:11px;border:1px solid #ced9c8;border-radius:50%;height:31px;width:31px;display:grid;place-items:center}.safety{display:flex;gap:18px;background:#eaf0e1;padding:22px;border-radius:12px;margin-bottom:20px}.safety>span{font-size:24px}.safety p{font-size:13px;line-height:1.6;color:#63745c;margin:8px 0 0}.small{font-size:12px}.muted{color:var(--muted)}.center{text-align:center}.card{background:var(--white);border:1px solid var(--line);border-radius:15px;padding:27px;margin-bottom:22px}.card-heading{display:flex;justify-content:space-between;gap:16px;padding-bottom:20px;border-bottom:1px solid var(--line);margin-bottom:12px}.card-heading .eyebrow{margin-bottom:10px}.card-heading h2{margin:0}.step-count{font-size:10px;color:var(--muted);white-space:nowrap}fieldset{border:0;padding:20px 0 0;margin:0}legend{padding:0;font-weight:650;font-size:13px;padding-top:20px}label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:600;margin:0 0 17px}input,select,textarea{width:100%;padding:12px 13px;min-height:46px;border:1px solid #d5dfd4;border-radius:7px;color:var(--ink);background:#fcfdf9;font-weight:400;font-size:15px}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#93a091}input:focus,textarea:focus,select:focus{outline:2px solid #668c60;outline-offset:2px}input[type=checkbox]{width:19px;min-height:19px}.checkbox{flex-direction:row;align-items:center}.grid{display:grid;gap:14px}.two{grid-template-columns:1fr 1fr}.optional{font-weight:400;color:var(--muted)}details{border-top:1px solid var(--line);padding-top:15px;margin-top:8px}summary{cursor:pointer;font-size:13px;font-weight:600;margin-bottom:15px}summary span{font-weight:400;margin-left:8px}footer{max-width:1270px;margin:20px auto;padding:24px 38px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.narrow{max-width:490px;margin:60px auto;padding:0 20px}.narrow .card{margin-top:30px}.tabs{display:flex;gap:30px;padding:17px 5%;border-bottom:1px solid var(--line);font-size:13px;background:#fbfcf8}.tabs a:hover{color:#69874e}.workspace{max-width:1340px;padding:38px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:27px}.page-heading h1{font-size:42px;margin-bottom:12px}.page-heading .eyebrow{margin-bottom:14px}.page-heading p:last-child{margin:0}.live-label{font-size:11px;color:var(--muted);white-space:nowrap}.kpis{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:14px;background:#eaf0e3;margin-bottom:25px;padding:25px 0}.stat{display:flex;flex-direction:column;gap:5px;padding:0 28px;border-right:1px solid #d5dfce}.stat:last-child{border:0}.stat>span,.stat small{font-size:12px;color:var(--muted)}.stat strong{font-size:38px;line-height:1.3}.stat strong small{font-size:20px;font-weight:400}.dispatch-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:24px;align-items:start}.no-pad{padding:0;overflow:hidden}.section-heading{display:flex;align-items:center;justify-content:space-between;padding:23px;border-bottom:1px solid var(--line);gap:10px}.section-heading h2{font-size:17px;margin:0}.unpadded{padding:0 0 17px}.job-row{padding:23px;display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid var(--line)}.job-row:hover{background:#f7f9f4}.job-row:last-child{border-bottom:0}.job-row h3{margin:7px 0}.job-row p{font-size:13px;margin:0 0 5px}.job-right{display:flex;align-items:flex-end;flex-direction:column;gap:16px;flex-shrink:0}.badge{display:inline-flex;padding:5px 9px;border-radius:5px;background:#edf1e9;color:#53694e;font-size:9px;font-weight:750;letter-spacing:.5px;white-space:nowrap}.status-REQUESTED,.status-REJECTED{background:#fff0d5;color:#8c5d14}.status-ASSIGNED,.status-ACCEPTED{background:#e8eff9;color:#396281}.status-EN_ROUTE,.status-ARRIVED,.status-BUSY{background:#e1eeeb;color:#327262}.status-COMPLETED,.status-AVAILABLE{background:#e4f1d8;color:#456b2b}.status-CANCELLED,.status-FAILED,.status-OFFLINE{background:#f1e8e5;color:#91665a}.urgent{border-left:4px solid #c16c4a}.warning{border-left:4px solid #dcb756}.empty{text-align:center;padding:50px 20px}.empty>span{font-size:30px;color:#83a667}.empty h3{margin-top:12px}.empty p{font-size:13px;color:var(--muted)}.unit-row{display:flex;align-items:center;gap:10px;padding:17px 0;border-top:1px solid var(--line);flex-wrap:wrap}.unit-row>div{flex:1}.unit-row p{margin:3px 0 0}.avatar{width:32px;height:32px;border-radius:50%;background:#edf2e8;display:inline-grid;place-items:center;font-weight:600;flex-shrink:0}.avatar.large{height:50px;width:50px;font-size:26px}.text-link{font-size:13px;text-decoration:underline;text-underline-offset:4px}.activity{padding:13px 0;border-bottom:1px solid var(--line);font-size:12px}.activity small{display:block;color:var(--muted);margin-top:5px}.metric-strip{display:flex;justify-content:space-between;gap:16px}.metric-strip span{display:block;font-size:12px;color:var(--muted)}.metric-strip strong{display:block;font-size:24px;margin-top:8px}.fst-workspace{max-width:820px}.inline-form{display:flex;gap:10px;margin:20px 0}.unit-management{padding:23px 0;border-bottom:1px solid var(--line)}.unit-management h3{display:flex;gap:14px;align-items:center}.unit-management p{font-size:13px}.back-link{display:block;font-size:12px;color:var(--muted);margin-bottom:30px}.detail-workspace{max-width:1190px}.vehicle{display:flex;align-items:center;gap:20px;margin:25px 0}.vehicle-icon{height:57px;width:57px;background:#eaf0e4;border-radius:10px;font-size:30px;display:grid;place-items:center}.vehicle strong{font-size:23px;letter-spacing:2px}.vehicle p{margin:0}.detail-lines p{display:flex;flex-direction:column;gap:4px;font-size:14px;overflow-wrap:anywhere}.detail-lines b{font-size:11px;color:var(--muted);font-weight:500}.detail-lines a{text-decoration:underline}.action-stack{display:flex;flex-direction:column;gap:10px}.action-stack form button+button{margin-top:12px}.team-heading{display:flex;gap:14px;margin:12px 0 20px;align-items:center}.team-heading h2{margin:0 0 5px}.team-heading p{font-size:12px;margin:0}.eta{display:flex;flex-direction:column;background:#f0f5e9;border-radius:10px;padding:20px;margin:22px 0 15px}.eta>span,.eta small{font-size:12px;color:var(--muted)}.eta strong{font-size:28px;margin:4px 0}.position-map{background:#eff3ec;border-radius:10px;overflow:hidden;text-align:center}.position-map svg{width:100%;max-height:160px}.position-map>span{display:block;font-size:11px;padding:8px;color:var(--muted)}.map-road{stroke:#d5dfcd;stroke-width:1;fill:none}.map-ring{fill:#c7dfb3;opacity:.6}.map-pin{fill:#214d3d;stroke:white;stroke-width:4}.fst-card .button{margin-bottom:18px}.timeline{list-style:none;padding:0 0 0 10px;margin:20px 0}.timeline li{border-left:1px solid #ccd9c3;padding:0 0 25px 22px;position:relative}.timeline li:before{content:"";position:absolute;left:-5px;top:5px;width:9px;height:9px;border-radius:50%;background:#719556}.timeline li:last-child{border:0}.timeline strong{font-size:12px;display:block}.timeline time{font-size:11px;color:var(--muted)}.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0 20px}.photos img{width:100%;height:100px;object-fit:cover;border-radius:7px}.photos span{display:block;font-size:10px;color:var(--muted)}.photos>p{grid-column:1/-1}.success-message{background:#eaf4e3;color:#3b6b32;padding:13px;border-radius:7px;font-size:13px}.preserve{white-space:pre-wrap;overflow-wrap:anywhere}.gps-banner{padding:17px;background:#e6eddf;border:1px solid #cbd9c1;border-radius:10px;font-size:12px;position:sticky;bottom:12px}.stale{color:var(--danger)}#connection-banner{background:#fff1d5;color:#805313;padding:10px;text-align:center;font-size:13px;position:sticky;top:0;z-index:5}[hidden]{display:none!important}.htmx-request{cursor:progress}:focus-visible{outline:3px solid #7d9d60;outline-offset:3px}
@media(max-width:1000px){.intake{gap:35px;padding:40px 24px}.dispatch-grid{grid-template-columns:1.4fr 1fr}.workspace{padding:28px 22px}.card{padding:22px}.card.no-pad{padding:0}.job-row{flex-direction:column}.job-right{flex-direction:row;align-items:center;justify-content:space-between}.unit-row .badge{margin-left:42px}}
@media(max-width:700px){.topbar{height:70px;gap:10px;padding:0 18px}.brand{font-size:15px}.brandmark{width:30px;height:30px;font-size:23px}.brand-light{margin-left:0}.region{display:none}.topbar>.text-button,.topbar>form{margin-left:auto}.desktop{display:none}.intake{display:block;padding:30px 18px}.intro{position:static;padding:0}.intro h1{font-size:42px;letter-spacing:-1.7px}.lede{font-size:15px;max-width:none}.steps{flex-direction:row;gap:10px;margin:25px 0}.steps span{flex:1;flex-direction:column;gap:8px;align-items:flex-start;font-size:11px}.safety{padding:16px;gap:12px}.intro>.small{margin-bottom:28px}.card{padding:20px;border-radius:12px}.request-card h2{font-size:19px}.two{gap:12px}.tabs{gap:25px;padding:14px 20px;font-size:12px}.workspace{padding:28px 18px}.page-heading{align-items:flex-start;flex-direction:column;gap:10px}.page-heading h1{font-size:36px;letter-spacing:-1.2px}.live-label{font-size:10px}.kpis{padding:17px 0;margin-bottom:20px}.stat{padding:0 12px}.stat>span{font-size:10px;line-height:1.5;min-height:30px}.stat strong{font-size:29px}.stat small{font-size:9px}.stat strong small{font-size:15px}.dispatch-grid{display:flex;flex-direction:column;gap:0}.dispatch-grid>section,.dispatch-grid>aside{width:100%}.job-row{padding:19px}.job-right{gap:8px}.job-row h3{font-size:15px}.section-heading{padding:19px}.section-heading h2{font-size:16px}.unit-row .badge{margin-left:0}.metric-strip{flex-direction:column}.metric-strip>div{display:flex;align-items:center;justify-content:space-between}.metric-strip strong{font-size:20px;margin:0}.metric-strip span{font-size:11px}.detail-workspace .dispatch-grid>aside{order:-1}.detail-workspace .dispatch-grid>aside .timeline{display:flex;overflow-x:auto;gap:12px;padding:0}.detail-workspace .timeline li{min-width:125px;border-left:0;border-top:1px solid #ccd9c3;padding:15px 0 0}.detail-workspace .timeline li:before{left:0;top:-5px}.detail-workspace .timeline strong{font-size:10px}.detail-workspace .timeline time{font-size:10px}.detail-workspace .fst-card .eyebrow{margin-bottom:12px}.team-heading{margin:8px 0 12px}.eta{padding:14px;margin:16px 0}.photos{grid-template-columns:repeat(2,1fr)}footer{margin:10px 18px;padding:20px 0;gap:12px;font-size:10px}.narrow{margin:40px auto}.inline-form>button{flex:1}.unit-management p{overflow-wrap:anywhere}}

.mobile-request{display:none}
@media(max-width:700px){.intro .lede,.intro .steps,.intro>.small{display:none}.intro h1{font-size:34px;margin-bottom:18px}.intro .eyebrow{font-size:9px;margin-bottom:14px}.intro .safety{margin:16px 0 24px;padding:12px;font-size:12px}.intro .safety p{font-size:11px;line-height:1.5;margin-top:4px}.mobile-request{display:inline-flex;min-height:44px;font-size:13px}.role-FST .dispatch-grid>aside,.role-MANAGER .dispatch-grid>aside{order:1}.role-FST .dispatch-grid>section{display:flex;flex-direction:column}.role-FST .fst-actions{order:-1}}

.pagination{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:20px}.pagination .button{font-size:12px}

.account-meta{display:grid;grid-template-columns:120px minmax(0,1fr);gap:.6rem}.account-meta dt{font-weight:600}.account-meta dd{margin:0;overflow-wrap:anywhere}@media(max-width:600px){.account-meta{grid-template-columns:90px minmax(0,1fr)}.tabs{overflow-x:auto;flex-wrap:nowrap}.tabs a{white-space:nowrap}}
.recent-request{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;margin:24px 0}.recent-request .eyebrow{margin-bottom:12px}.recent-request-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.recent-request-heading h2,.recent-request-heading p{margin:0}.recent-request form{margin:6px 0 0}.recent-request .text-button{color:var(--muted)}

.service-list{display:grid;gap:10px}.service-choice{display:grid;grid-template-columns:54px minmax(0,1fr) 20px;align-items:center;gap:14px;padding:16px;border:1px solid var(--line);border-radius:12px;background:#fff;min-height:88px}.service-choice:hover,.service-choice:focus-visible{background:#eef5e7;border-color:var(--ink)}.service-icon{display:grid;place-items:center;background:#edf3e7;border-radius:50%;width:54px;height:54px;font-size:28px}.service-price{display:block;color:var(--muted);font-size:13px;margin-top:4px}.request-details{max-width:720px}.request-details .request-card{margin-top:12px}@media(max-width:700px){.service-choice{padding:12px;gap:10px}.service-picker{padding:20px}.service-picker h2{font-size:23px}}

.road-map{height:300px;width:100%;border-radius:12px;background:#e7ece5;margin-top:16px;z-index:0}.road-map .leaflet-control a{min-height:30px}.road-map .leaflet-control-attribution{font-size:10px}.road-marker{display:grid;place-items:center;width:30px;height:30px;border:3px solid white;border-radius:50%;background:#173c35;color:white;font-size:13px;font-weight:800;box-shadow:0 1px 5px #3336}.road-marker.field{background:#2165aa}.road-marker.stale{background:#707770}.map-failure{padding:12px;font-size:13px;color:#744e12;background:#fff1d7}
.payment-qr{display:block;max-width:min(100%,320px);max-height:400px;object-fit:contain;margin:20px auto;border:1px solid var(--line);border-radius:12px}input[type=checkbox]{width:20px;min-height:20px;vertical-align:middle}

@media(max-width:700px){.role-CUSTOMER.has-payment .dispatch-grid>aside{order:1}}

/* Give the fleet overview its own generous map area. */
.fleet-panel{padding:24px}.fleet-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.fleet-heading h2{margin:0}.fleet-heading p{margin:6px 0 0}.fleet-status{margin:0;font-size:12px;color:var(--muted)}.fleet-status[data-state=warning]{color:var(--warn)}.fleet-status[data-state=error]{color:var(--danger)}.fleet-map{height:clamp(440px,62vh,760px);margin-top:20px}.fleet-legend{display:flex;flex-wrap:wrap;gap:20px;margin-top:14px;font-size:12px;color:#59685f}.fleet-legend span{display:flex;align-items:center;gap:7px}.fleet-dot{width:9px;height:9px;border-radius:50%;background:#2165aa}.fleet-dot.old{background:#707770}@media(max-width:640px){.fleet-panel{padding:16px}.fleet-heading{align-items:flex-start;gap:12px}.fleet-heading h2{font-size:20px}.fleet-heading button{font-size:12px;padding:10px 12px;white-space:nowrap}.fleet-map{height:58vh;min-height:360px;max-height:600px}.fleet-legend{gap:12px}}

.fleet-dot.customer{background:#173c35}

#team-directory{scroll-margin-top:20px}.team-filters{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin-bottom:16px}.team-filters label{margin:0;min-width:130px;flex:1}.team-filters .team-search{flex:2;min-width:200px}.team-filters .text-link{padding:12px 0}.team-pages{padding:12px 0;flex-wrap:wrap;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}@media(max-width:600px){.team-filters .team-search{flex-basis:100%}.team-pages .button{padding:10px 12px}}

#available-gps-feedback{position:static;max-width:1240px;margin:12px auto;padding:12px 20px}

.field-team-nav{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.field-team-nav a{padding:12px 18px;border:1px solid var(--line);border-radius:8px;font-size:13px}.field-team-nav a[aria-current=page]{background:var(--ink);color:var(--white)}.account-row{display:flex;justify-content:space-between;gap:18px;padding:22px 0;border-top:1px solid var(--line)}.account-row:hover{background:#f7f9f4}.account-row>div{min-width:0}.account-row p{margin:5px 0;overflow-wrap:anywhere}.account-row-end{display:flex;flex-direction:column;align-items:flex-end;gap:14px;flex-shrink:0}.account-workspace{max-width:1100px;overflow-wrap:anywhere}.account-workspace form{margin-bottom:24px}.account-workspace .account-meta{grid-template-columns:150px minmax(0,1fr)}.recovery-notice{font-size:13px;color:#805313}.unit-management h3 a:hover{text-decoration:underline}@media(max-width:600px){.account-row{flex-direction:column;gap:10px}.account-row-end{flex-direction:row;justify-content:space-between;align-items:center}.account-workspace .account-meta{grid-template-columns:110px minmax(0,1fr)}}

.team-presence{margin:6px 0;color:var(--muted)}.team-presence>span{display:block}.position-old{color:#707775}.presence-notice{color:var(--warn);margin:6px 0}.road-marker.stale{background:#777f7b;border-color:#d4d8d5}.fleet-dot.old{background:#777f7b}

/* Preserve the complete FST artwork, including its service captions. */
.brandmark{width:48px;height:48px;object-fit:contain;border-radius:10px;background:#000}
@media(max-width:700px){.brandmark{width:44px;height:44px;flex-shrink:0}.brand{min-width:0}}

/* FST black, yellow and white brand. Status colours retain their meanings. */
:root{--ink:#171717;--muted:#626262;--line:#dedbd1;--accent:#ffcf00;--cream:#f7f6f1}
body{background:#f7f6f1;color:#171717}button,.button{background:#ffcf00;color:#111;border-color:#ffcf00}button.secondary,.button.secondary{background:#fff;color:#171717;border-color:#b5b3aa}h1 em{color:#665300}.topbar{background:#111;color:#fff;min-height:88px;height:auto;padding-top:12px;padding-bottom:12px;flex-wrap:wrap}.topbar .brand,.topbar .text-button{color:#fff}.topbar .brandmark{width:64px;height:64px;border-radius:0}.topbar .brand-light{color:#ffcf00}.service-choice:hover{background:#fff7cf}.service-icon{background:#fff2b5}.service-choice.unavailable{opacity:.6;cursor:default}.duty-controls{display:flex;gap:10px;align-items:center;margin-left:auto}.duty-controls form{display:flex;gap:6px}.duty-controls button{padding:9px 12px;min-height:44px}.duty-controls span{font-size:12px}.live-dot{background:#a17e00}#request-photo-preview{max-width:100%;height:auto;border-radius:8px}.gps-banner{position:static;background:#fff7d7;border-color:#e3d28a}.safety,.eta,.avatar,.vehicle-icon{background:#fff4c4}.tabs a{color:#171717}.service-choice:focus-visible{outline-color:#806600}@media(max-width:500px){.duty-controls{width:100%;justify-content:space-between}.topbar .brandmark{width:48px;height:48px}.topbar{padding:10px 18px}.topbar .brand{font-size:17px}}

.road-marker.destination{background:#ffcf00;color:#111}

/* Customer service selection and progressive intake. */
.customer-home{max-width:960px;margin:0 auto;padding:32px 20px}.customer-home h1{font-size:clamp(1.8rem,5vw,3rem);margin:8px 0 24px}.service-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:20px 0}.service-grid .service-choice{margin:0;min-height:104px;gap:14px;border:1px solid #d5d2c8;background:#fff;border-radius:16px;padding:20px}.service-grid .service-price{display:block;margin-top:6px}.service-grid .unavailable{opacity:1;color:#686868;background:#f0eee7}.safety-advice{margin-top:20px}.safety-advice summary{min-height:44px;cursor:pointer}.request-card h1{font-size:1.8rem;margin-bottom:8px}.intake-progress{font-size:.9rem;color:#555;margin-bottom:24px}.intake-actions{position:sticky;bottom:0;background:#fff;padding:12px 0 max(12px,env(safe-area-inset-bottom));display:grid;gap:8px;border-top:1px solid #ddd;z-index:500}.intake-actions button{min-height:48px}.intake-review-row{padding:12px 0;border-bottom:1px solid #ddd;overflow-wrap:anywhere}.intake-review-row strong{display:block}.intake-edit{margin:8px 0 16px}.request-details [hidden]{display:none!important}.request-details summary{min-height:44px;cursor:pointer}.request-details :focus-visible{outline:3px solid #8b6500;outline-offset:3px}.request-details input[aria-invalid=true]{border-color:#b00020}.customer-tracking h1{font-size:clamp(1.6rem,5vw,2.3rem);line-height:1.2}.customer-tracking summary{cursor:pointer;min-height:44px;font-weight:700}.customer-tracking details[open]>summary{margin-bottom:14px}
@media(max-width:620px){.service-grid{grid-template-columns:1fr}.customer-home{padding:20px 16px}.request-details{padding:16px 12px}.request-card{padding:18px}.intake-actions{margin-top:12px}}

.request-details .intake-actions{position:static}.request-details .intake-wizard .intake-actions{position:sticky;bottom:0}.request-details [data-location-picker],.request-details [data-destination-picker]{display:none}.intake-wizard [data-location-picker],.intake-wizard [data-destination-picker]{display:block}

/* Staff duty: a non-interactive status above one explicit action. */
.topbar.staff-duty-header{gap:12px;align-items:center}
.staff-duty-header .region{display:none}
.staff-duty-header .brand{flex-shrink:0}
.staff-duty-header .duty-controls{width:auto;display:flex;flex-direction:column;align-items:flex-end;gap:3px;margin-left:auto;max-width:20rem;min-width:0}
.staff-duty-header #top-duty-status{font-size:.875rem;font-weight:600;line-height:1.4}
.staff-duty-header #top-duty-status::before{content:'●';margin-right:6px;color:#b7b7b7}
.staff-duty-header #top-duty-status[data-state=AVAILABLE]::before{color:#87d9a1}
.staff-duty-header #duty-detail{font-size:.75rem;line-height:1.4;text-align:right;color:#ddd;max-width:17rem}
.staff-duty-header .duty-controls form{margin:0;display:block}
.staff-duty-header .duty-controls button{min-height:44px;padding:9px 14px;font-size:.875rem;white-space:normal}
.staff-duty-header .duty-controls button.secondary{background:transparent;border-color:#ffcf00;color:#ffcf00}
.staff-duty-header .duty-controls [hidden]{display:none!important}
@media(max-width:500px){.topbar.staff-duty-header{padding:10px 12px}.staff-duty-header .brand{font-size:1rem;gap:8px}.staff-duty-header .brandmark{width:44px;height:44px}.staff-duty-header .duty-controls{max-width:11rem}}

/* Teams: duty status comes first; diagnostics live in team details. */
.teams-workspace{max-width:1100px}.teams-workspace h1{font-size:2rem;letter-spacing:-.7px;margin-bottom:20px}.team-status-filters{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}.team-status-filter{flex:1;min-width:130px;border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;min-height:56px}.team-status-filter strong{font-size:1.4rem}.team-status-filter[aria-current=true]{outline:2px solid currentColor;outline-offset:1px;background:#f5f3e9}.filter-AVAILABLE{color:#146139}.filter-ON_JOB{color:#225ca0}.filter-OFFLINE,.filter-DISABLED{color:#575757}.team-status-group{margin:24px 0}.team-status-group>h2{font-size:1rem;color:var(--muted);margin-bottom:8px}.team-compact-row{display:flex;align-items:center;gap:16px;padding:18px 0;border-bottom:1px solid var(--line);min-height:76px}.team-identity{flex:1;min-width:0}.team-identity h3{margin:0 0 4px;overflow-wrap:anywhere;font-size:1rem}.team-identity p{margin:0;color:var(--muted);font-size:.9rem}.team-status-badge{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:6px 10px;border-radius:999px;font-size:.85rem;font-weight:700;line-height:1.3;color:#575757;background:#efefef}.team-status-available{color:#146139;background:#e5f3eb}.team-status-on-job{color:#225ca0;background:#e8f0fc}.team-status-unknown{color:#775600;background:#fff1cc}.team-row-chevron{font-size:1.6rem;color:var(--muted)}.team-identity .team-location-warning,.team-location-warning{color:#826000;font-size:.8rem;margin-top:6px}.team-refresh-status{margin:0;color:var(--muted)}[data-team-directory][data-state=unavailable] [data-team-results]{display:none}.team-secondary>summary{font-weight:700;min-height:44px;cursor:pointer;display:list-item}.team-secondary[open]>summary{margin-bottom:20px}.team-secondary .fleet-panel{padding:0;border:0;box-shadow:none;margin:0}.team-detail-vehicle{margin:12px 0}.teams-workspace :focus-visible{outline:3px solid #8b6500;outline-offset:3px}
@media(max-width:600px){.team-status-filter{min-width:calc(50% - 10px);padding:12px}.team-compact-row{flex-wrap:wrap;gap:8px}.team-identity{flex-basis:60%}.team-status-badge{white-space:normal}.team-row-chevron{display:none}}
/* Work-first hierarchy: navigation and FST branding remain in place. */
.card>details>summary{cursor:pointer;min-height:44px;font-weight:650;display:flex;align-items:center;gap:8px}
.card>details>summary:before{content:'›';font-size:1.3em}.card>details[open]>summary:before{transform:rotate(90deg)}
.card>details[open]>summary{margin-bottom:16px}.card>details>summary::-webkit-details-marker{display:none}
.dispatch-grid>*{min-width:0}.job-row>div:first-child{min-width:0;overflow-wrap:anywhere}.job-right{max-width:42%}.badge{white-space:normal;font-size:11px;letter-spacing:0}
.page-heading h1{font-size:clamp(1.8rem,4vw,2.6rem);letter-spacing:-.5px}.fst-workspace .page-heading{margin-bottom:16px}
.role-FST.detail-workspace{padding-bottom:calc(150px + env(safe-area-inset-bottom))}
.staff-primary-action,.staff-report:not([open])>summary{position:fixed;z-index:800;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,820px);margin:0;min-height:56px;padding:16px 24px calc(16px + env(safe-area-inset-bottom));border-radius:12px 12px 0 0;box-shadow:0 -4px 18px #0002;background:#ffcf00;color:#111;border:0;text-align:center;font-weight:700;cursor:pointer;font-size:1rem}
.staff-report:not([open])>summary:before{content:none}.staff-report[open]>summary{font-weight:700;min-height:44px;cursor:pointer}
.location-retry{display:block;margin:0 auto 10px;min-height:44px}.team-refresh-status:empty{display:none}
@media(max-width:700px){.job-row{padding:16px;flex-wrap:wrap}.job-right{max-width:100%;align-items:flex-start;gap:8px}.stat{padding:0 12px}.stat strong{font-size:28px}.metric-strip{flex-wrap:wrap}.role-FST .fst-actions{order:initial}}

.kpis{background:#fff}.stat{border-color:#dedbd2}.fleet-status:empty{display:none}

.staff-duty-header .duty-controls{flex:1 1 9rem;overflow-wrap:anywhere}.staff-duty-header .brand{min-width:0}.staff-duty-header #duty-detail{overflow-wrap:anywhere}
@media(max-width:380px){.staff-duty-header .duty-controls{flex-basis:100%;max-width:none;align-items:flex-start;margin-left:0}.staff-duty-header #duty-detail{text-align:left}}
.vehicle>div{min-width:0;overflow-wrap:anywhere}.vehicle strong{letter-spacing:.5px}
.staff-assignment-actions{display:flex;gap:10px}.staff-assignment-actions form{flex:1;min-width:0;display:flex}.staff-assignment-actions button{position:static;transform:none;width:100%;margin:0;min-height:52px;padding:14px 12px;border-radius:10px;box-shadow:none}.staff-assignment-actions .staff-decline{background:transparent;border:1px solid #b3261e;color:#b3261e}.staff-assignment-actions .staff-accept{background:#146139;border-color:#146139;color:#fff}
[data-geocode-results]{display:grid;gap:8px}[data-geocode-results] button{text-align:left;white-space:normal}

.button.staff-destination{background:#171717;border-color:#171717;color:#ffcf00}

/* Shared action roles: docs/UI_STYLE.md. */
:root{--action-yellow:#ffcf00;--action-dark:#171717;--destructive:#b3261e}
.staff-primary-action,.staff-report:not([open])>summary{color:var(--action-dark)}
.danger,.staff-assignment-actions .staff-decline{background:transparent;color:var(--destructive);border-color:var(--destructive)}
.staff-contact-actions{display:flex;gap:8px;align-items:stretch}.staff-contact-actions .button{flex:1;min-width:0}
.button.staff-navigation{background:transparent;color:#171717;border:1px solid #171717}.button.staff-navigation-current{background:#171717;color:#ffcf00}
.topbar a,footer a,nav a,.text-link,a[href^="tel:"]{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}summary{min-height:44px}
.road-map .leaflet-control-zoom a{width:44px;height:44px;min-height:44px;line-height:44px}.road-map .leaflet-control-attribution a{display:inline-flex;align-items:center;min-width:44px;min-height:44px}.leaflet-marker-icon{display:grid;place-items:center}
.tabs a{flex-shrink:0}

/* Manager pages follow the system theme consistently, including forms and KPI cards. */
@media(prefers-color-scheme:dark){
 body.role-MANAGER{color-scheme:dark;--ink:#f3f3f3;--muted:#b4b4b4;--line:#494949;--white:#202020;--paper:#151515;--warn:#edce81;--danger:#ffb4ab;--destructive:#ffb4ab;background:#151515;color:#f3f3f3}
 .role-MANAGER .card,.role-MANAGER .kpis{background:#202020;border-color:var(--line)}
 .role-MANAGER input,.role-MANAGER select,.role-MANAGER textarea{background:#292929;color:#f3f3f3;border-color:#696969}
 .role-MANAGER .tabs{background:#202020;border-color:var(--line)}.role-MANAGER .tabs a,.role-MANAGER .field-team-nav a{color:#eee}
 .role-MANAGER .field-team-nav a[aria-current=page]{background:#ffcf00;color:#111}
 .role-MANAGER button.secondary,.role-MANAGER .button.secondary{background:transparent;color:#f3f3f3;border-color:#aaa}
 .role-MANAGER .stat{border-color:var(--line)}.role-MANAGER .account-row:hover{background:#292929}
 .role-MANAGER .team-status-filter[aria-current=true]{background:#333}
 .role-MANAGER .filter-AVAILABLE{color:#8cddb0}.role-MANAGER .filter-ON_JOB{color:#9dc5ff}.role-MANAGER .filter-OFFLINE,.role-MANAGER .filter-DISABLED{color:#ccc}
 .role-MANAGER .team-status-available{color:#a6e5c2;background:#183d2b}.role-MANAGER .team-status-on-job{color:#b0d1ff;background:#1e3556}.role-MANAGER .team-status-off-duty,.role-MANAGER .team-status-disabled{color:#ddd;background:#424242}.role-MANAGER .team-status-unknown{color:#ffdb7e;background:#493800}
 .role-MANAGER .team-location-warning,.role-MANAGER .recovery-notice{color:#edce81}.role-MANAGER .success-message{color:#a6e5c2}
 .role-MANAGER .badge{background:#333;color:#eee}.role-MANAGER .status-REQUESTED{background:#493800;color:#ffdb7e}.role-MANAGER .status-ASSIGNED,.role-MANAGER .status-ACCEPTED{background:#1e3556;color:#b0d1ff}.role-MANAGER .status-EN_ROUTE,.role-MANAGER .status-ARRIVED,.role-MANAGER .status-SERVICE_IN_PROGRESS{background:#183d2b;color:#a6e5c2}.role-MANAGER .status-COMPLETED{background:#183d2b;color:#a6e5c2}.role-MANAGER .status-CANCELLED,.role-MANAGER .status-FAILED,.role-MANAGER .status-REJECTED{background:#492824;color:#ffb4ab}
 .role-MANAGER .avatar,.role-MANAGER .vehicle-icon,.role-MANAGER .eta{background:#493e18;color:#ffdf79}
 .role-MANAGER .fleet-legend,.role-MANAGER footer{color:#b4b4b4}.role-MANAGER .activity{border-color:var(--line)}
 .role-MANAGER .button.staff-navigation{background:transparent;color:#f3f3f3;border-color:#aaa}.role-MANAGER .button.staff-navigation-current{background:#ffcf00;color:#111;border-color:#ffcf00}
}
.customer-workspace-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.customer-workspace-heading h1{margin:0}.customer-workspace-heading button{flex:0 0 auto;padding:10px 12px;font-size:.85rem}
.customer-translation-note{max-width:960px;margin:20px auto;padding:0 20px}
.customer-tracking .card>details+details{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}
#dashboard-response-times>summary,#customer-response-statistics>summary,#customer-browser-data>summary,#customer-resend-verification>summary{font-weight:650;cursor:pointer}
#dashboard-response-times[open]>summary,#customer-response-statistics[open]>summary{margin-bottom:16px}
[data-team-map]>.fleet-panel{padding:0;margin:0}.fleet-heading{justify-content:flex-end}
@media(max-width:400px){.customer-workspace-heading{align-items:flex-start}.customer-workspace-heading h1{font-size:1.7rem}.customer-workspace-heading button{max-width:48%;white-space:normal}}

/* Staff To-be grouping; every selector is scoped away from customer pages. */
.staff-step{margin:0 0 20px}.staff-step h2{margin-bottom:4px}.staff-step p{margin:4px 0;font-size:.9rem}.staff-step ol{display:flex;gap:8px;list-style:none;padding:0}.staff-step li{flex:1;border-top:5px solid var(--line);padding-top:6px;color:var(--muted)}.staff-step li.done{border-color:#b58c00;color:var(--ink)}
.condition-chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.condition-chips span{padding:6px 12px;border-radius:18px;background:#fff0b3;color:#3b3100;font-size:.9rem}.staff-estimate{font-weight:650}.arrival-code{font-size:2rem;letter-spacing:.25em}.arrival-card{border:2px solid #b58c00}
.problem-banner{display:block;padding:16px;margin:0 0 20px;border:1px solid #b86c00;border-radius:12px;color:inherit;background:#fff1d8;min-height:44px}.staff-offline-note{padding:16px;border:1px solid #b86c00;border-radius:10px;background:#fff1d8;color:#6b4000}
.manager-step{padding:18px 22px}.manager-step h2{font-size:1.05rem;margin:0}.manager-step[data-current=true]{border:2px solid #b58c00}.manager-step[data-current=true]>h2{margin-bottom:16px}.manager-step>details>summary{margin-top:6px;cursor:pointer}
.team-choice{display:flex;align-items:center;gap:12px;min-height:64px;margin:8px 0;padding:12px;border:1px solid var(--line);border-radius:10px}.team-choice input{width:22px;flex:0 0 22px}.team-choice span{min-width:0;overflow-wrap:anywhere}.manager-step fieldset{border:0;margin:0;padding:0}
.staff-photo-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.staff-photo-columns>section{min-width:0}.staff-photo-columns .photos{grid-template-columns:1fr}.staff-photo-columns input[type=file]{max-width:100%;font-size:.85rem}.staff-photo-columns label{font-size:.85rem}.staff-photo-columns button{padding:12px 8px}
.role-FST .staff-primary-action,.role-FST .staff-report:not([open])>summary{position:static;transform:none;width:100%;border-radius:10px;box-shadow:none;padding:16px;min-height:56px}.role-FST .fst-actions{order:0!important}.role-FST .staff-report{width:100%}.role-FST .staff-report[open] form{padding-top:16px}.role-FST .detail-workspace{padding-bottom:30px}.issue-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:24px}.issue-summary p{font-size:.8rem;overflow-wrap:anywhere}.issue-summary strong{display:block;font-size:1.6rem}.service-switch{display:flex;align-items:center;gap:12px}.service-switch input{width:44px;min-height:44px}.service-unavailable{opacity:.65}.price-editor>summary{cursor:pointer;text-decoration:underline}.history-day>h2{padding:16px 20px 0}.customer-problem-flag{font-size:.85rem;color:#975700}
.role-MANAGER .job-row{flex-wrap:wrap}.role-MANAGER .job-right{max-width:100%}.role-MANAGER .next-action{background:#ffcf00;color:#171717;white-space:nowrap}
.staff-offline .next-action{background:#dedede!important;color:#555!important}.staff-offline #dispatch-kpis,.staff-offline #dashboard-live aside .unit-row,.staff-offline [data-team-map]{display:none}.staff-offline .role-MANAGER #detail-live .road-map{visibility:hidden}
@media(prefers-color-scheme:dark){body.role-FST{color-scheme:dark;--ink:#f3f3f3;--muted:#b4b4b4;--line:#494949;--white:#202020;--paper:#151515;--danger:#ffb4ab;--destructive:#ffb4ab;background:#151515;color:#f3f3f3}.role-FST .card,.role-FST .tabs{background:#202020;border-color:#494949}.role-FST input,.role-FST select,.role-FST textarea{background:#292929;color:#f3f3f3;border-color:#777}.role-FST .tabs a{color:#eee}.role-FST button.secondary,.role-FST .button.secondary{background:transparent;color:#eee;border-color:#aaa}.role-FST .button.staff-navigation{background:transparent;color:#eee;border-color:#aaa}.role-FST .button.staff-navigation-current{background:#171717;color:#ffcf00;border-color:#ffcf00}.role-FST .staff-accept{background:#146139!important;color:white!important}.role-FST .gps-banner,.role-FST .condition-chips span{background:#493e18;color:#ffdf79}.role-MANAGER .problem-banner{background:#493800;color:#ffdb7e}.role-MANAGER .customer-problem-flag{color:#ffdb7e}.role-FST .staff-offline-note,.role-MANAGER .staff-offline-note{background:#493800;color:#ffdb7e}}
@media(max-width:700px){.manager-step{padding:18px}.team-choice{align-items:flex-start}.role-FST .job-row{flex-wrap:wrap}.role-MANAGER .job-row{flex-wrap:wrap}.staff-step h2{font-size:1.4rem}.staff-photo-columns .photos img{height:110px}}
.staff-photo-columns [data-pending-preview]{width:100%;max-height:180px;object-fit:contain;margin:8px 0}.current-request{display:block;margin:20px 0}.current-request p{overflow-wrap:anywhere}
.role-MANAGER .button.staff-navigation-current{background:#171717;color:#ffcf00;border-color:#ffcf00}
.manager-history .kpis,.manager-history .dispatch-grid>aside{display:none}.manager-history .dispatch-grid{display:block}
.staff-report-open .detail-workspace .staff-pickup,.staff-report-open .detail-workspace .staff-destination,.staff-report-open .detail-workspace .page-heading,.staff-report-open .detail-workspace .arrival-card,.staff-report-open .detail-workspace .staff-photo-card,.staff-report-open .detail-workspace .dispatch-grid>aside,.staff-report-open #staff-report[open]>summary,.staff-report-open .fst-actions>h2,.staff-report-open [data-open-unsuccessful]{display:none}.staff-report-open .detail-workspace .dispatch-grid{display:block}
.team-choice,.service-switch{flex-direction:row}.team-choice input{min-height:22px;margin:0}.staff-report-open [data-report-title]{display:none}
.staff-pending-photo{border:1px solid var(--line);border-radius:10px;padding:10px;margin:12px 0;overflow-wrap:anywhere}.staff-pending-photo img{width:100%;max-height:180px;object-fit:contain}.staff-pending-photo button{min-height:44px;margin:4px 6px 4px 0}.staff-pending-photo p{font-size:.9rem;margin:8px 0}[data-staff-upload-jobs]{margin-top:24px}
.role-FST .tabs{overflow-x:auto}[data-staff-queue-count]{margin-left:5px;padding:1px 6px;border-radius:10px;background:#ffcf00;color:#171717}
.staff-pending-photo button{max-width:100%;white-space:normal;overflow-wrap:anywhere}
