/* Map page tabs: Live map, Driving and payroll hours, Dashcam, Safety. Tokens only. */
.ft-stage{height:var(--ds-sub-h);flex:none;background:var(--ds-chrome);display:flex;align-items:flex-end;gap:2px;padding:0 var(--ds-gutter) 0 calc(var(--ds-gutter) - var(--ds-s-3))}
.ft-tab{height:32px;display:flex;align-items:center;padding:0 var(--ds-s-3) 6px;border:0;background:none;border-radius:var(--ds-r-lg) var(--ds-r-lg) 0 0;position:relative;font:inherit;font-size:var(--ds-text-base);font-weight:var(--ds-w-medium);color:var(--ds-chrome-fg-2);white-space:nowrap;cursor:pointer}
.ft-tab.on{background:var(--ds-canvas);color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.ft-tab.on::before,.ft-tab.on::after{content:'';position:absolute;bottom:0;width:8px;height:8px}
.ft-tab.on::before{left:-8px;border-bottom-right-radius:8px;box-shadow:4px 4px 0 4px var(--ds-canvas)}
.ft-tab.on::after{right:-8px;border-bottom-left-radius:8px;box-shadow:-4px 4px 0 4px var(--ds-canvas)}
.ft-tab:focus-visible,.ft-page button:focus-visible,.ft-page select:focus-visible,.ft-page input.ft-ctl:focus-visible,.ft-player button:focus-visible{outline:var(--ds-focus-w) solid var(--ds-focus);outline-offset:var(--ds-focus-off)}
.ft-page{flex:1;min-height:0;overflow:auto;background:var(--ds-canvas);color:var(--ds-ink);font-size:var(--ds-text-base);line-height:20px;font-variant-numeric:tabular-nums}
.ft-page[hidden]{display:none}
.ft-page button{font:inherit;color:inherit}
.ft-wrap{padding:var(--ds-s-5) var(--ds-gutter) var(--ds-s-8)}
.ft-head{display:flex;align-items:center;gap:var(--ds-s-2);flex-wrap:wrap;margin-bottom:var(--ds-s-4)}
.ft-title{font-family:var(--ds-display);font-weight:var(--ds-w-semi);font-size:var(--ds-text-d2);line-height:24px;margin:0 var(--ds-s-3) 0 0}
.ft-right{margin-left:auto}
.ft-dates{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ds-s-2)}.ft-dates label{display:flex;align-items:center;gap:var(--ds-s-1);font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.ft-note{margin:0 0 var(--ds-s-3);font-size:var(--ds-text-sm);line-height:18px;color:var(--ds-ink-3)}
.ft-ctl{height:var(--ds-control-h);font:inherit;font-size:var(--ds-text-base);color:var(--ds-ink);background-color:var(--ds-surface);border:1px solid var(--ds-line);border-radius:var(--ds-r-md);padding:0 var(--ds-s-3);cursor:pointer}
.ft-page button.ft-ctl{color:var(--ds-ink)}
.ft-ctl:hover{background-color:var(--ds-paper-hover)}.ft-ctl:disabled{color:var(--ds-disabled-fg);background-color:var(--ds-disabled-bg);cursor:default}
.ft-sel{appearance:none;-webkit-appearance:none;padding-right:30px;background-image:linear-gradient(45deg,transparent 50%,var(--ds-icon) 50%),linear-gradient(135deg,var(--ds-icon) 50%,transparent 50%);background-size:5px 5px;background-position:calc(100% - 15px) 14px,calc(100% - 10px) 14px;background-repeat:no-repeat}
.ft-card{background:var(--ds-surface);border:1px solid var(--ds-line);border-radius:var(--ds-r-lg);overflow:hidden}
.ft-empty{padding:var(--ds-s-8);text-align:center;color:var(--ds-ink-2);display:flex;gap:var(--ds-s-3);justify-content:center;align-items:center}.ft-empty .ft-ctl{white-space:nowrap;flex:none}
.ft-skel{height:48px;border-radius:var(--ds-r-md);background:var(--ds-skeleton);opacity:.5;margin-bottom:var(--ds-s-2)}
.ft-late{color:var(--ds-st-late-ink);font-weight:var(--ds-w-semi);font-style:normal}
.ft-disc,.scheduling-map-person span.ft-disc{color:var(--ds-surface)}
.ft-disc{flex:none;border-radius:var(--ds-r-full);background:var(--ds-field);color:var(--ds-surface);display:inline-flex;align-items:center;justify-content:center;font-size:var(--ds-text-av);font-weight:var(--ds-w-semi)}
.ft-leg{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
.ft-leg span{display:inline-flex;align-items:center;gap:6px}.ft-leg i{width:10px;height:10px;border-radius:var(--ds-r-tag);display:inline-block}
.ft-legrow{padding:var(--ds-s-3) var(--ds-s-4);border-bottom:1px solid var(--ds-line)}
/* Daily driving */
.ft-dr{display:grid;grid-template-columns:190px 66px 66px minmax(0,1fr) 54px 70px 60px 66px 54px;align-items:center;column-gap:6px;width:100%;min-height:52px;padding:0 var(--ds-s-3) 0 0;border:0;border-bottom:.5px solid var(--ds-hair);background:none;text-align:left;font-size:var(--ds-text-base)}
button.ft-dr{cursor:pointer}button.ft-dr:hover{background:var(--ds-sel-bg)}.ft-dr.on{background:var(--ds-sel-bg);box-shadow:inset 3px 0 0 var(--ds-selection)}
.ft-dh{min-height:40px;border-bottom:1px solid var(--ds-line);font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:.06em;text-transform:uppercase;color:var(--ds-ink-3);line-height:16px}
.ft-df{min-height:44px;border-top:1px solid var(--ds-line);border-bottom:0}
.pl{padding-left:var(--ds-s-4)}.n{text-align:right;white-space:nowrap}.w{font-weight:var(--ds-w-semi)}.z{color:var(--ds-ink-3)}
.who{display:flex;align-items:center;gap:10px;min-width:0}.wt{min-width:0}.wt b{display:block;font-weight:var(--ds-w-semi);line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wt small{display:block;font-size:var(--ds-text-sm);line-height:16px;color:var(--ds-ink-3)}
.ft-track{position:relative;height:52px;display:block}.ft-track .g{position:absolute;top:0;bottom:0;width:1px;background:var(--ds-hair)}.ft-track .b{position:absolute;top:18px;height:16px;border-radius:var(--ds-r-tag);min-width:2px}
.ft-ax{position:relative;height:40px}.ft-ax span{position:absolute;top:12px;transform:translateX(-50%);font-weight:var(--ds-w-medium);letter-spacing:0;text-transform:none;white-space:nowrap}
.ft-open{box-shadow:inset 3px 0 0 var(--ds-selection);border-bottom:1px solid var(--ds-line);padding:6px var(--ds-s-4) var(--ds-s-3) var(--ds-s-6)}
.ft-it{display:grid;grid-template-columns:150px 12px minmax(0,1fr) auto;gap:10px;align-items:center;min-height:32px;border-bottom:.5px solid var(--ds-hair)}.ft-it:last-child{border-bottom:0}
.ft-it time{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}.ft-it>i{width:10px;height:10px;border-radius:var(--ds-r-tag);display:block}.ft-it small{font-size:var(--ds-text-sm);color:var(--ds-ink-3)}.ft-it b{font-weight:var(--ds-w-semi)}.ft-it .r{font-size:var(--ds-text-sm);color:var(--ds-ink-2);text-align:right;white-space:nowrap}
.ft-it.leg{min-height:26px;color:var(--ds-ink-3);font-size:var(--ds-text-sm)}.ft-it.leg>i{height:2px}
.ft-wk{display:grid;grid-template-columns:220px 50px minmax(160px,1fr) 80px 80px 80px 70px;align-items:center;column-gap:var(--ds-s-3);min-height:52px;padding-right:var(--ds-s-4);border-bottom:.5px solid var(--ds-hair)}.ft-wk.ft-dh{min-height:40px;border-bottom:1px solid var(--ds-line)}.ft-wk:last-child{border-bottom:0}
.ft-mi{display:flex;align-items:center;gap:10px}.ft-mt{flex:1;height:6px;border-radius:3px;background:var(--ds-tint);overflow:hidden}.ft-mt i{display:block;height:100%;background:var(--ds-action-hover)}.ft-mi b{min-width:48px;text-align:right;font-weight:var(--ds-w-semi)}
/* Payroll hours */
.ft-pay-scroll{overflow-x:auto}.ft-pay{width:100%;min-width:1520px;border-collapse:collapse}
.ft-pay th,.ft-pay td{padding:var(--ds-s-3);border-bottom:.5px solid var(--ds-hair);text-align:left;vertical-align:middle}.ft-pay .n{text-align:right}
.ft-pay th{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:.06em;text-transform:uppercase;color:var(--ds-ink-3);border-bottom:1px solid var(--ds-line)}
.ft-pay tbody>tr[data-pay-row]{cursor:pointer}.ft-pay tbody>tr[data-pay-row]:hover{background:var(--ds-paper-hover)}.ft-pay tbody>tr.on{background:var(--ds-sel-bg);box-shadow:inset 3px 0 0 var(--ds-selection)}
.ft-pay-name{width:100%;min-width:170px;padding:0;border:0;background:none;text-align:left;cursor:pointer}
.ft-election{height:28px;font-size:var(--ds-text-sm)}.ft-page .ft-ongoing{color:var(--ds-ink-3)}
.ft-pay tfoot th,.ft-pay tfoot td{border-top:1px solid var(--ds-line);border-bottom:0;font-weight:var(--ds-w-semi)}.ft-pay tfoot th{font-size:var(--ds-text-base);letter-spacing:0;text-transform:none;color:var(--ds-ink)}
.ft-pay .ft-pay-expanded>td{padding:0 var(--ds-s-4) var(--ds-s-3);box-shadow:inset 3px 0 0 var(--ds-selection)}
.ft-pay-detail{width:100%;border-collapse:collapse;font-size:var(--ds-text-sm)}.ft-pay-detail th,.ft-pay-detail td{padding:var(--ds-s-2);vertical-align:top}.ft-pay-detail tr:last-child td{border-bottom:0}.ft-pay-clock{white-space:nowrap}
.ft-pay small.ft-note{display:block;margin:2px 0 0;font-weight:var(--ds-w-regular);letter-spacing:0;text-transform:none}
.ft-pay .ft-note{font-weight:var(--ds-w-regular);color:var(--ds-ink-3)}
.ft-oncall{display:flex;align-items:center;gap:var(--ds-s-2);flex-wrap:wrap;min-width:280px}.ft-oncall label,.ft-oncall span{display:inline-flex;align-items:center;gap:var(--ds-s-2)}
.ft-oncall input[type=time]{width:112px;border:1px solid var(--ds-field);border-radius:var(--ds-r-md);background:var(--ds-surface);padding:0 var(--ds-s-2);font:inherit;color:var(--ds-ink)}
.ft-oncall [hidden]{display:none}
/* Dashcam */
.ft-split{display:flex;align-items:stretch;min-height:100%}
.ft-rail{width:232px;flex:none;background:var(--ds-surface);border-right:1px solid var(--ds-line);padding:var(--ds-s-4) var(--ds-s-2)}
.ft-rail h4{font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);margin:var(--ds-s-4) 0 var(--ds-s-1);padding:0 var(--ds-s-3)}.ft-rail h4:first-child{margin-top:0}
.ft-view{display:flex;align-items:center;width:100%;height:30px;border:0;background:none;padding:0 var(--ds-s-3);border-radius:var(--ds-r-md);cursor:pointer;text-align:left}.ft-page .ft-view{color:var(--ds-ink-2)}
.ft-view:hover{background:var(--ds-paper-hover)}.ft-page .ft-view.on{background:var(--ds-sel-bg);color:var(--ds-ink);font-weight:var(--ds-w-semi);box-shadow:inset 3px 0 0 var(--ds-selection)}.ft-view em{margin-left:auto;font-style:normal;font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.ft-main{flex:1;min-width:0;padding:var(--ds-s-5) var(--ds-gutter) var(--ds-s-8)}.ft-pager{display:flex;align-items:center;gap:var(--ds-s-2);font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.ft-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(236px,1fr));gap:var(--ds-s-4)}
.ft-vc{display:flex;flex-direction:column;padding:0;background:var(--ds-surface);border:1px solid var(--ds-line);border-radius:var(--ds-r-lg);overflow:hidden;text-align:left;cursor:pointer;transition:box-shadow var(--ds-fast) var(--ds-ease)}.ft-vc:hover{box-shadow:var(--ds-e-pop)}
.ft-vt{position:relative;display:block;aspect-ratio:16/9;background:var(--ds-chrome);overflow:hidden}.ft-vt img{width:100%;height:100%;object-fit:cover;display:block}
.ft-pl{position:absolute;right:10px;bottom:10px;width:32px;height:32px;border-radius:var(--ds-r-full);background:var(--ds-surface);display:flex;align-items:center;justify-content:center;color:var(--ds-chrome)}
.ft-sv{position:absolute;left:8px;top:8px;display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 var(--ds-s-2) 0 7px;border-radius:var(--ds-r-sm);background:var(--ds-surface);font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);color:var(--ds-ink-2)}
.ft-sv::before{content:'';width:9px;height:9px;border-radius:var(--ds-r-full);background:var(--ds-st-sched)}.ft-sv.MODERATE::before{background:var(--ds-ink-3)}.ft-sv.MAJOR::before,.ft-sv.CRITICAL::before{background:var(--ds-st-late)}.ft-sv.MAJOR,.ft-sv.CRITICAL{background:var(--ds-st-late-bg);color:var(--ds-st-late-ink);font-weight:var(--ds-w-semi)}
.ft-vb{display:flex;flex-direction:column;gap:6px;padding:var(--ds-s-3) 14px 14px;min-width:0}.ft-vb>b{font-size:var(--ds-text-md);font-weight:var(--ds-w-semi);line-height:20px}.ft-vb>small{font-size:var(--ds-text-sm);color:var(--ds-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ft-vw{display:flex;align-items:center;gap:var(--ds-s-2);font-size:var(--ds-text-sm);color:var(--ds-ink-2);min-width:0}
/* Safety */
.ft-seg{display:inline-flex;height:var(--ds-control-h);border:1px solid var(--ds-field);border-radius:var(--ds-r-md);overflow:hidden}.ft-page .ft-seg button{border:0;background:var(--ds-surface);padding:0 var(--ds-s-3);color:var(--ds-ink-2);cursor:pointer}.ft-page .ft-seg button.on{background:var(--ds-chrome);color:var(--ds-action-fg);font-weight:var(--ds-w-semi)}
.ft-saf{display:flex;gap:var(--ds-s-5);align-items:flex-start}.ft-chart{flex:1;min-width:0}
.ft-sh,.ft-sr{display:grid;grid-template-columns:190px 1fr 56px 56px;gap:var(--ds-s-3);align-items:center;padding:0 var(--ds-s-4)}
.ft-sh{height:36px;border-bottom:1px solid var(--ds-line);font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:.06em;text-transform:uppercase;color:var(--ds-ink-3)}.ft-sh span:nth-child(n+3){text-align:right}
.ft-sr{min-height:52px;width:100%;border:0;border-bottom:.5px solid var(--ds-rule);background:none;text-align:left;cursor:pointer}.ft-sr:last-child{border-bottom:0}.ft-sr:hover{background:var(--ds-paper-hover)}.ft-sr.on{background:var(--ds-sel-bg);box-shadow:inset 3px 0 0 var(--ds-selection)}.ft-sr .who b{font-weight:var(--ds-w-semi)}
.ft-bar{display:flex;gap:2px;height:14px;align-items:stretch}.ft-bar i{display:block;border-radius:var(--ds-r-tag);min-width:2px}
.ft-det{width:344px;flex:none;padding:var(--ds-s-4)}.ft-deth{display:flex;align-items:center;gap:var(--ds-s-3);padding-bottom:var(--ds-s-3);border-bottom:1px solid var(--ds-line)}.ft-deth b{display:block;font-size:var(--ds-text-md);font-weight:var(--ds-w-semi);line-height:20px}.ft-deth small{font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.ft-kv{display:grid;grid-template-columns:1fr auto;gap:6px var(--ds-s-3);padding:var(--ds-s-3) 0;border-bottom:1px solid var(--ds-line);color:var(--ds-ink-2)}.ft-kv span:nth-child(odd){display:flex;align-items:center;gap:var(--ds-s-2)}.ft-kv span:nth-child(even){font-weight:var(--ds-w-semi);color:var(--ds-ink);text-align:right}.ft-kv i{width:10px;height:10px;border-radius:var(--ds-r-tag)}
.ft-det h4{font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);margin:var(--ds-s-3) 0 var(--ds-s-1)}
.ft-evr{display:grid;grid-template-columns:12px 1fr;gap:2px var(--ds-s-2);width:100%;padding:7px 0;border:0;border-bottom:.5px solid var(--ds-rule);background:none;text-align:left;cursor:pointer}.ft-evr:hover{background:var(--ds-paper-hover)}
.ft-evr u{width:9px;height:9px;border-radius:var(--ds-r-full);margin-top:5px;background:var(--ds-st-sched);text-decoration:none}.ft-evr u.MODERATE{background:var(--ds-ink-3)}.ft-evr u.MAJOR,.ft-evr u.CRITICAL{background:var(--ds-st-late)}.ft-evr em{font-style:normal;font-size:var(--ds-text-sm);color:var(--ds-ink-3)}.ft-evr small{grid-column:2;font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.ft-all{width:100%;margin-top:var(--ds-s-3)}
.ft-chart{overflow-x:auto}
.ft-event-detail{padding:var(--ds-s-3) 0;border-bottom:1px solid var(--ds-line)}
.ft-trend{display:block;width:100%;height:64px;fill:none}.ft-trend-axis{stroke:var(--ds-line);stroke-width:1}.ft-trend-line{stroke:var(--ds-chart-1);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.ft-trend circle{fill:var(--ds-chart-1)}
.ft-trend-labels{display:flex;justify-content:space-between;font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.ft-vehicle{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-s-3);padding:var(--ds-s-2) 0;border-bottom:.5px solid var(--ds-hair)}.ft-vehicle:last-child{border-bottom:0}.ft-vehicle b{font-weight:var(--ds-w-medium)}.ft-vehicle small{display:block;font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
/* Clip player */
.ft-modal{position:fixed;inset:0;z-index:1000;background:var(--ds-scrim);display:flex;align-items:center;justify-content:center;padding:var(--ds-s-6)}
.ft-player{background:var(--ds-surface);border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop);width:min(1000px,100%);max-height:100%;overflow:auto}.ft-player header{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-s-3);padding:var(--ds-s-3) var(--ds-s-4);border-bottom:1px solid var(--ds-line)}
.ft-vids{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--ds-s-3);padding:var(--ds-s-4)}.ft-vids figure{margin:0}.ft-vids video{width:100%;border-radius:var(--ds-r-md);background:var(--ds-chrome);display:block}.ft-vids figcaption{font-size:var(--ds-text-sm);color:var(--ds-ink-3);margin-top:var(--ds-s-1)}
/* Live map: compact van rows with the timer */
.ft-mode .scheduling-map-body>aside{width:318px;padding:6px}
.ft-mode .scheduling-map-person{position:relative;display:grid;grid-template-columns:44px auto minmax(0,1fr) auto;column-gap:12px;row-gap:0;padding:8px 10px;border-radius:var(--ds-r-md)}
.ft-mode .scheduling-map-person::after{content:'';position:absolute;left:10px;right:10px;bottom:0;height:.5px;background:var(--ds-rule)}
.ft-mode .scheduling-map-person>*{grid-column:2/-1}
.ft-mode .scheduling-map-person>.ft-rowdisc{grid-column:1;grid-row:1/3;align-self:start;display:inline-flex;font-size:var(--ds-text-md)}
.ft-mode .scheduling-map-person>strong{grid-column:2;grid-row:1;align-self:baseline;font-size:var(--ds-text-d2);font-weight:var(--ds-w-semi);line-height:24px;letter-spacing:-.011em}
.ft-mode .scheduling-map-person>.ft-rowveh{grid-column:3;grid-row:1;align-self:baseline;margin-left:-6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ds-text-sm);line-height:16px;color:var(--ds-ink-3)}
.ft-mode .scheduling-map-person>.scheduling-map-clock{display:contents}
.scheduling-map-clock b{display:block;font-size:var(--ds-text-md);font-weight:var(--ds-w-semi);line-height:18px;color:var(--ds-ink);letter-spacing:-.011em;font-variant-numeric:tabular-nums;white-space:nowrap}
.scheduling-map-clock em{display:inline-flex;align-items:center;gap:5px;font-style:normal;font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);line-height:16px;color:var(--ds-ink-2);white-space:nowrap}
.scheduling-map-clock em::before{content:'';width:8px;height:8px;border-radius:var(--ds-r-full);background:var(--ds-st-sched)}.scheduling-map-clock.site em::before{background:var(--ds-st-site)}.scheduling-map-clock.drive em::before,.scheduling-map-clock.idle em::before{background:var(--ds-st-route)}.scheduling-map-clock.idle em{color:var(--ds-st-route-ink)}
.ft-mode .scheduling-map-person>.scheduling-map-state{grid-column:2/-1;grid-row:3;justify-self:start;max-width:100%;height:auto;margin-top:2px;padding:0;background:none;font-size:var(--ds-text-base);font-weight:var(--ds-w-regular);line-height:18px;color:var(--ds-ink-2);white-space:pre-line}
.ft-mode .scheduling-map-person>.scheduling-map-state.st-overrun,.ft-mode .scheduling-map-person>.scheduling-map-state.st-idle{color:var(--ds-st-route-ink);background:none}.ft-mode .scheduling-map-person>.scheduling-map-state.st-stale{color:var(--ds-ink-3);background:none}
.ft-mode .scheduling-map-person>.scheduling-map-state.st-late{color:var(--ds-st-late-ink);background:none}
.ft-mode .scheduling-map-person>small:not(.scheduling-map-clock){display:none}
.ft-mode .scheduling-map-person[aria-pressed=false]+*:not(.scheduling-map-person):not(.scheduling-map-warning):not(.ft-group){display:none}
.ft-speedkey{position:absolute;left:12px;top:12px;z-index:5;background:var(--ds-surface);border-radius:var(--ds-r-md);box-shadow:var(--ds-e-pop);padding:6px 10px;font-size:var(--ds-text-sm);color:var(--ds-ink-2);display:flex;gap:var(--ds-s-3);align-items:center}
.ft-speedkey span{display:inline-flex;gap:6px;align-items:center}.ft-speedkey i{width:18px;height:4px;border-radius:2px;display:inline-block}
.ft-campin{width:22px;height:22px;padding:0;border-radius:var(--ds-r-full);background:var(--ds-surface);border:2px solid var(--ds-st-sched);display:flex;align-items:center;justify-content:center;box-shadow:var(--ds-e-pop);cursor:pointer;color:var(--ds-st-sched)}.ft-campin.MODERATE{border-color:var(--ds-line);color:var(--ds-ink-3)}.ft-campin.MAJOR,.ft-campin.CRITICAL{border-color:var(--ds-st-late);color:var(--ds-st-late)}
.ft-otw{margin-top:0}
/* Phone and narrow tablet: tables scroll inside their card, panels stack */
@media (max-width:760px){
.ft-stage{overflow-x:auto}.ft-tab{flex:none}
.ft-card{overflow-x:auto}.ft-dr{min-width:900px}.ft-wk{min-width:720px}.ft-it{min-width:640px}
.ft-split,.ft-saf{flex-direction:column}.ft-rail{width:auto;border-right:0;border-bottom:1px solid var(--ds-line)}.ft-det{width:auto;align-self:stretch}
.ft-sh,.ft-sr{grid-template-columns:150px minmax(60px,1fr) 44px 44px}.ft-wrap,.ft-main{padding-left:var(--ds-s-3);padding-right:var(--ds-s-3)}
.ft-mode .scheduling-map-body>aside{width:200px}
}
.ft-speedkey[hidden]{display:none}
.ft-group{display:flex;align-items:center;justify-content:space-between;width:100%;height:30px;margin:var(--ds-s-2) 0 2px;padding:0 10px;border:0;background:none;font:inherit;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);text-align:left}
.ft-group:first-child{margin-top:0}.ft-group em{font-style:normal;font-weight:var(--ds-w-medium)}
.ft-group-attention{color:var(--ds-st-late-ink)}
button.ft-group{cursor:pointer;border-top:1px solid var(--ds-line);margin-top:var(--ds-s-3);padding-top:var(--ds-s-2);height:38px}button.ft-group:hover{color:var(--ds-ink)}button.ft-group span::after{content:' ▸'}button.ft-group[aria-expanded=true] span::after{content:' ▾'}
.scheduling-map-person[hidden]{display:none!important}
.ft-mode .scheduling-map-person>.ft-why{color:var(--ds-ink-2);background:none}.ft-mode .scheduling-map-person>.ft-why.warn{color:var(--ds-ink-3)}.ft-mode .scheduling-map-person>.ft-why.bad{color:var(--ds-st-late-ink)}
.ft-mode .scheduling-map-person>.ft-next{grid-column:2/-1;grid-row:4;display:block;margin-top:2px;font-size:var(--ds-text-base);line-height:18px;color:var(--ds-ink-2)}
.ft-next b{display:block;font-weight:var(--ds-w-regular);color:inherit}
.ft-next i{display:block;font-style:normal;font-size:var(--ds-text-base);line-height:18px;color:inherit}
.ft-mode .scheduling-map-person>.ft-next.late,.ft-next.late b,.ft-next.late i{color:var(--ds-st-late-ink)}
@media (max-width:900px){.ft-saf{flex-direction:column}.ft-chart,.ft-det{width:100%;align-self:stretch;box-sizing:border-box}}

.ft-disc{position:relative;overflow:hidden}
.ft-disc-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}

/* Card rows: photo, name and vehicle; then one bold line of status, time in that status, location; then the detail rows. All text shares one left edge. */
.ft-mode .scheduling-map-clock em{grid-column:2/-1;grid-row:2;display:flex;align-items:flex-start;gap:6px;margin-top:2px;white-space:normal;font-size:var(--ds-text-md);font-weight:var(--ds-w-semi);line-height:20px;color:var(--ds-ink)}
.ft-mode .scheduling-map-clock em::before{flex:none;width:10px;height:10px;margin:5px 0 0}
.ft-mode .scheduling-map-clock em>span{min-width:0;overflow-wrap:anywhere;font:inherit;color:inherit}
.ft-mode .scheduling-map-person>.ft-why:empty{display:none}
.ft-mode .scheduling-map-person>.ft-why>span{font:inherit;color:var(--ds-ink-2)}
.ft-mode .scheduling-map-person[aria-pressed=true]:has(+.scheduling-map-travel){border-radius:var(--ds-r-md) var(--ds-r-md) 0 0}
.ft-mode .scheduling-map-person[aria-pressed=true]:has(+.scheduling-map-travel)::after{display:none}
.ft-mode .scheduling-map-person[aria-pressed=true]+.scheduling-map-travel{padding-top:8px;background:var(--ds-sel-bg);box-shadow:inset 3px 0 0 var(--ds-selection);border-radius:0 0 var(--ds-r-md) var(--ds-r-md)}
.ft-mode .scheduling-map-person>.ft-why>.ft-latebit{display:inline;color:var(--ds-st-late-ink)}
.ft-mode .scheduling-map-person>.ft-why>.ft-latebit.plain{color:inherit}
.ft-mode .scheduling-map-person[aria-pressed=true]+.scheduling-map-travel{padding-left:66px}
.ft-mode .scheduling-map-person[aria-pressed=true]+.scheduling-map-travel .scheduling-map-plan{border-top:0;padding-top:0}
.ft-mode .scheduling-map-person>.ft-facts{display:none;grid-row:5;margin-top:var(--ds-s-2)}
.ft-mode .scheduling-map-person[aria-pressed=true]>.ft-facts{display:block}
.ft-facts-group{display:grid;grid-template-columns:44px minmax(0,1fr);column-gap:var(--ds-s-2);row-gap:2px;padding:var(--ds-s-2) 0;border-top:1px solid var(--ds-line)}
.scheduling-map-person .ft-fact-k{font-size:var(--ds-text-sm);line-height:18px;color:var(--ds-ink-3)}
.scheduling-map-person .ft-fact-v{font-size:var(--ds-text-base);line-height:18px;color:var(--ds-ink)}
.scheduling-map-person .ft-fact-v.warn{color:var(--ds-ink-3)}
.scheduling-map-travel button.ft-route{display:flex;justify-content:space-between;align-items:center;gap:var(--ds-s-2);width:100%}
.scheduling-map-travel button.ft-route span{font:inherit}
/* Right-click: drive time from one technician to any customer site or supplier. */
.ft-mode .mapboxgl-marker.scheduling-map-target{z-index:50}
.ft-rc{position:fixed;z-index:200;width:320px;max-width:calc(100vw - 16px);box-sizing:border-box;display:flex;flex-direction:column;gap:var(--ds-s-2);padding:var(--ds-s-3);background:var(--ds-surface);border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop);font-size:var(--ds-text-base);color:var(--ds-ink)}
.ft-rc strong{font-size:var(--ds-text-md);font-weight:var(--ds-w-semi)}
.ft-rc input{height:var(--ds-control-h);box-sizing:border-box;width:100%;padding:0 var(--ds-s-2);border:0;box-shadow:inset 0 0 0 1px var(--ds-field);border-radius:var(--ds-r-md);font:inherit;color:var(--ds-ink);background:var(--ds-surface)}
.ft-rc-list{display:flex;flex-direction:column;gap:2px;max-height:280px;overflow:auto}.ft-rc-list:empty{display:none}
.ft-rc-list small{font-size:var(--ds-text-sm);line-height:16px;color:var(--ds-ink-2)}
.ft-rc-list .ft-rc-head{margin-top:var(--ds-s-1);color:var(--ds-ink-3);font-weight:var(--ds-w-semi)}
.ft-rc-list button{display:flex;flex-direction:column;align-items:flex-start;gap:0;width:100%;padding:var(--ds-s-1) var(--ds-s-2);border:0;border-radius:var(--ds-r-md);background:none;font:inherit;color:var(--ds-ink);text-align:left;cursor:pointer}
.ft-rc-list button:hover,.ft-rc-list button:focus-visible{background:var(--ds-paper-hover)}
.ft-rc-list b{font-weight:var(--ds-w-medium)}.ft-rc-time{font-size:var(--ds-text-d2);font-weight:var(--ds-w-semi);line-height:24px}
@media (min-width:701px){.ft-mode .scheduling-map-side{width:clamp(340px,28vw,380px)}}

.ft-holidays { margin-top: 16px; padding: 16px; }
.ft-holidays h4 { margin: 0 0 4px; }
.ft-holidays ul { list-style: none; margin: 8px 0; padding: 0; }
.ft-holidays li { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 6px 0; border-bottom: 1px solid var(--ds-hair); }
.ft-holiday-add { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; margin-top: 8px; }
.ft-holiday-add label { display: flex; flex-direction: column; gap: 4px; font-size: var(--ds-text-caps); color: var(--ds-ink-2); }
