/* Stahla — the condensed Smartsheet-calendar styles, shared by the PM app (/pm, linked right AFTER pm.css) and the ops
   desktop Today (/, after styles.css). fb22 P3 (plan 260925-ops-pm-fb-cycle22, D8 + audit A8/A9): the rules below the
   variables are pm.css's condensed-Today block (fb422 lines + week grid, fb21 P6 panels / crew chips, P6b estimates,
   P8 assign editor, fb22 P6 multi-select) and its 760 px / 1100 px media blocks, moved VERBATIM and in their original
   order (the PM app renders exactly as before). The colour variables are pm.css's own values, SCOPED under .cond-root
   so a host without them (the desktop's styles.css has no --navy / --teal / --line …) gets them inside its calendar
   container only — the PM app never uses .cond-root, so its :root values keep applying there. Anything a non-PM host
   needs that pm.css provides elsewhere is added at the END, also scoped under .cond-root. The PM offline shell precaches
   this file (sw.js SHELL). */
.cond-root{--navy:#01253a;--teal:#00a27e;--green:#1c7a4a;--red:#a93226;--red-bg:#fde8e8;--ink:#1f2a37;--muted:#6b7682;
  --line:#e3e7ea}
/* fb422: condensed Today — two weeks, one line per job. Kind colour = a left rule PLUS a filled tag
   (the Smartsheet calendar's coloured bars; the tag text carries the meaning for colour-blind eyes).
   Phone: job no. / units / "needs a trailer" sit on a meta line UNDER the text so the text keeps the
   whole width and the city at its end survives. Desktop: one line, job no. in a fixed right column. */
.today-view-toggle{margin:0 0 10px}
.cond-back{min-height:44px;margin:0 0 8px;font-weight:700;color:var(--navy)}
.today-nav .chip[data-weeknav]{min-height:44px}
.tev-focus{box-shadow:0 0 0 2px var(--teal)}
.cw-h{font-size:14px;font-weight:800;color:var(--ink);margin:20px 2px 8px;padding-top:10px;border-top:2px solid var(--line)}
.cond > .cw-h:first-child{margin-top:4px;padding-top:0;border-top:0}
.cd{background:#fff;border:1px solid var(--line);border-radius:12px;margin:0 0 6px;scroll-margin-top:calc(60px + env(safe-area-inset-top))}
.cd-h{appearance:none;font:inherit;text-align:left;width:100%;cursor:pointer;display:flex;align-items:baseline;gap:8px;
  padding:9px 10px 8px;border:0;border-bottom:1px solid var(--line);border-radius:11px 11px 0 0;background:#f3f6f8;
  position:sticky;top:calc(54px + env(safe-area-inset-top));z-index:2;min-height:40px}
.cd-h:focus-visible{outline:2px solid var(--teal);outline-offset:-2px}
.cd-d{font-size:13.5px;font-weight:800;color:var(--ink);white-space:nowrap}
.cd-c{margin-left:auto;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right}
.cd-now{font-size:11px;font-weight:700;color:#fff;background:var(--teal);border-radius:999px;padding:1px 8px}
.cd-today{border-color:var(--navy);box-shadow:0 0 0 1px var(--navy)}
.cd-today .cd-h{background:var(--navy);border-bottom-color:var(--navy)}
.cd-today .cd-d{color:#fff}
.cd-today .cd-c{color:#c9d6de}
.cd-past .cl,.cd-past .cd-h{opacity:.72}
.cd-empty{background:transparent;border-style:dashed}
.cd-empty .cd-h{background:transparent;border-bottom:0;padding:5px 10px;min-height:32px;position:static;border-radius:11px}
.cd-empty .cd-d{font-weight:600;color:var(--muted)}
.cd-empty.cd-today .cd-h{background:var(--navy)}
.cw{display:block}
.cl{appearance:none;display:grid;grid-template-columns:44px minmax(0,1fr);gap:1px 8px;align-items:start;width:100%;
  text-align:left;font:inherit;color:var(--ink);background:#e9eef2;border:0;border-top:1px solid rgba(255,255,255,.9);
  border-left:5px solid #8fa3b0;padding:7px 10px 7px 7px;min-height:44px;cursor:pointer}
.cd-h + .cl{border-top:0}
.cd > .cl:last-child{border-radius:0 0 11px 11px}
.cl:active{filter:brightness(.95)}
.cl:focus-visible{outline:2px solid var(--navy);outline-offset:-2px}
.cl--todo:focus-visible,.cl--long_term:focus-visible{outline-color:#fff}   /* navy vanishes on the two dark bars */
.cl-k{font-size:11.5px;font-weight:800;color:#0b2230;background:rgba(255,255,255,.7);border-radius:5px;padding:2px 0;
  line-height:1.3;white-space:nowrap;text-align:center;grid-row:1 / span 2;align-self:start}
.cl-t{font-size:13.5px;line-height:1.3;font-weight:600;overflow-wrap:anywhere;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.cl-n{font-weight:800;color:var(--navy);background:rgba(255,255,255,.75);border-radius:6px;padding:0 5px;font-size:12px;white-space:nowrap}
.cl-n2{display:none}
.cl-m{grid-column:2;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;font-size:12px;line-height:1.35;
  color:#3b4652;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.cl-j{font-weight:700;color:var(--ink);white-space:nowrap}
/* fb25 P1 (fb464 F4): a one-row line's crew — "👤 Luke · 🚛 #18" — on its own line under the text; empty (hidden) until the
   dispatch read fills it */
.cl-w{grid-column:2;font-size:12px;line-height:1.35;font-weight:600;color:#1d3b53;overflow-wrap:anywhere}
.cl-w:empty{display:none}
.cl--long_term .cl-w{color:#dfe6fb}
.cl-warn{font-weight:700;color:#5c3900;background:#ffe08a;border-radius:6px;padding:0 6px;white-space:nowrap}
/* Bar colours = the team's Smartsheet event calendar (Grant's screenshots 9/21): To Do purple, transfer
   orange, service yellow, service by another company salmon, Set AND PU light blue, event green,
   long-term rental dark blue. The whole line is tinted (the sheet's bars are solid blocks of colour);
   the tag keeps the meaning readable without colour. Detail-view chips keep their own colours (fb189). */
.cl--todo{background:#5b2a91;border-left-color:#3d1a66;color:#fff;min-height:36px;padding-top:6px;padding-bottom:6px}
.cl--todo .cl-k{background:rgba(255,255,255,.22);color:#fff;grid-row:auto}
.cl--todo .cl-t{font-weight:700;-webkit-line-clamp:2}
/* fb509: the shop's To Do row is there but nobody has written it yet — the same bar, quiet (light purple, dashed, not a button) */
.cl--todo.cl--todo-blank{background:#f1ebf8;border-left-color:#b9a3d6;border-left-style:dashed;color:#5b2a91;cursor:default}
.cl--todo.cl--todo-blank .cl-k{background:rgba(91,42,145,.12);color:#5b2a91}
.cl--todo.cl--todo-blank .cl-t{font-weight:600}
.cl--transfer{background:#ffd9b0;border-left-color:#ef8a24}
.cl--service{background:#fdeeb0;border-left-color:#e0a91b}
.cl--service_other{background:#fbd0cc;border-left-color:#e2675f}
.cl--set,.cl--pickup{background:#d2e5fb;border-left-color:#4a90e2}
.cl--event{background:#cde8d4;border-left-color:var(--green)}
.cl--long_term{background:#2c4a9a;border-left-color:#1b2f6b;color:#fff}
.cl--long_term .cl-k{background:rgba(255,255,255,.22);color:#fff}
.cl--long_term .cl-m,.cl--long_term .cl-j{color:#dfe6fb}
.cl--long_term .cl-n{color:#fff;background:rgba(255,255,255,.22)}
.cl-tent{border-left-style:dashed}
.cl-tent .cl-t{font-style:italic;font-weight:500}
.cl-issue .cl-t{color:#8e1f14}   /* darker than --red: it has to read on the salmon and yellow tints */
.cl--long_term.cl-issue .cl-t{color:#ffd0cb}
.cond-ongoing .cl{border-radius:0}
.cond-ongoing .cl:first-of-type{border-top:1px solid var(--line)}
.cond-foot{margin:10px 2px 0}
/* fb21 P6 (fb433/fb434): who · which truck, read from the shop's To Do. A condensed line opens IN PLACE
   (a white panel under it, the line's colour as its left rule); the To Do bar opens the day's crews. */
.cl[aria-expanded="true"]{box-shadow:inset 0 -2px 0 rgba(11,34,48,.25)}
.cl-x{background:#fff;border-left:5px solid #8fa3b0;border-top:1px solid var(--line);padding:8px 10px 10px 12px;
  font-size:13.5px;color:var(--ink);overflow-wrap:anywhere}
.cl--service + .cl-x{border-left-color:#e0a91b}
.cl--service_other + .cl-x{border-left-color:#e2675f}
.cl--set + .cl-x,.cl--pickup + .cl-x{border-left-color:#4a90e2}
.cl--transfer + .cl-x{border-left-color:#ef8a24}
.cl--event + .cl-x{border-left-color:var(--green)}
.cl--long_term + .cl-x{border-left-color:#1b2f6b}
.cl-x--todo{border-left-color:#5b2a91;background:#f6f1fc}
.cd > .cl-x:last-child{border-radius:0 0 11px 11px}
.cl-x .tev-ctx{margin:6px 0 4px}
.cl-x--fold{padding:0 0 8px 0}
.cl-x--fold > .cl-open{margin-left:10px}
.cl-sub{border-left-width:3px;padding-left:12px}
.cl-sub .cl-t{font-weight:600}
.cl-x--fold > .cl-x{border-left-width:3px;margin-left:8px}
.cl-open{min-height:44px;margin-top:6px;font-weight:700;color:var(--navy)}
.disp-chip{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 6px;margin:4px 0 2px;padding:6px 10px;
  background:#eef5f3;border-radius:10px;font-size:13.5px;line-height:1.35;color:var(--ink)}
.dc-p,.dc-t{font-weight:700}
.dc-sep{color:var(--muted)}
.dc-done{font-size:12px;font-weight:700;color:#1d6b3a}
.dc-src{margin-left:auto;font-size:11.5px;color:var(--muted)}
.dc-none{margin:2px 0 4px;font-size:12.5px;color:var(--muted)}
.dl-sec{font-size:11.5px;font-weight:800;letter-spacing:.3px;text-transform:uppercase;color:#5b2a91;margin:10px 0 2px}
.dl{margin:6px 0 0;padding:0 0 6px;border-bottom:1px solid #e6dcf3}
.dl:last-of-type{border-bottom:0}
.dl-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.dl-who{font-weight:800;color:var(--ink)}
.dl-truck{font-weight:700;color:#3d1a66}
.dl-note{font-size:12.5px;color:var(--muted)}
.dl-lines{margin:3px 0 0;padding-left:18px}
.dl-l{margin:2px 0;line-height:1.35}
.dl-done{color:var(--muted)}
.dl-info .dl-who{color:#5b2a91}
.tev .disp-chip{align-self:stretch}
/* fb21 P6b (fb433/fb436): time estimates from the trucks' own site stops — under who · truck, and a total per crew */
.est-line{display:flex;flex-wrap:wrap;gap:2px 12px;margin:4px 0 2px;font-size:13px;line-height:1.35;color:#24424f}
.est-b{white-space:nowrap}
.tev .est-line{align-self:stretch}
/* fb26 P9 "Edit times": for an admin / that shop's manager the time line is a button (an empty one "⏱ Set times") with the
   editor under it — two steppers (5…480 in steps of 5), "Use computed" per field, "Use the computed times"; classes only (CSP) */
.est-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:4px 0 2px}
.tev .est-row,.tev .tm-host{align-self:stretch}
.est-row .est-line{margin:0}
.est-edit{appearance:none;font:inherit;font-size:13px;text-align:left;cursor:pointer;min-height:44px;padding:6px 10px;border:1px dashed var(--line);
  border-radius:10px;background:#f6fafb;align-items:center}
.est-edit:hover,.est-edit:focus-visible{border-color:var(--teal);background:#eef7f5}
.est-edit[aria-expanded="true"],.est-set[aria-expanded="true"]{border-style:solid;border-color:var(--navy)}
.est-pen{color:var(--teal);font-weight:800}
.est-set{min-height:44px;max-width:none;font-weight:700;color:var(--navy)}
.tm-status{font-size:13px;font-weight:700;color:#1d6b3a}
.tm-status:empty{display:none}
.tm-host{margin:4px 0 8px}
.tm-host[hidden]{display:none}
.tm-ed{border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 12px 12px;color:var(--ink);font-size:14px;max-width:520px}
.tm-h{font-weight:800;margin:0 0 4px}
.tm-scope{margin:0 0 6px;font-size:12.5px}
.tm-warn{margin:0 0 8px;padding:6px 8px;border-radius:8px;background:#fff4e0;color:#8a4b00;font-size:13px;font-weight:700}
.tm-f{display:flex;flex-direction:column;gap:4px;margin-top:10px}
.tm-fl{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px}
.tm-l{font-weight:800}
.tm-src{font-size:12.5px;color:var(--muted)}
.tm-step-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.tm-ed .btn.tm-step{flex:0 0 auto;min-width:48px;min-height:44px;padding:6px 12px;font-size:20px;line-height:1;background:#fff;border:1px solid var(--line);
  border-radius:10px;color:var(--ink)}
.tm-in{width:4.5em;min-height:44px;font-size:18px;font-weight:700;text-align:center;border:1px solid var(--line);border-radius:10px;padding:6px 4px;
  color:var(--ink);background:#fff}
.tm-u{font-size:13px;color:var(--muted)}
.tm-reset{min-height:44px;max-width:none;font-size:13px}
.tm-hint{margin:8px 0 0;font-size:12px}
.tm-msg{margin:6px 0 0;font-size:13.5px}
.tm-msg:empty{display:none}
.tm-err{margin:4px 0;color:var(--red);font-weight:700}
.tm-conf{margin:4px 0;font-weight:700;color:#8a4b00}
.tm-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.tm-acts .btn{min-height:44px;padding:10px 16px;flex:1 1 auto}
.dl-est{margin:4px 0 0;font-size:12.5px;font-weight:700;color:#3d1a66}
/* fb21 P8 (fb433): a crew assigned IN THE APP (trial — the sheet's "PM app crew (trial)" column) + the inline Assign editor.
   The app crew's chip is blue-tinted (the To Do's is green-grey); every tap target is ≥ 44 px at 390 px. */
.disp-chip--app{background:#e7effa;box-shadow:inset 0 0 0 1px #bcd0ec}
.asg-pend{flex-basis:100%;margin:0;font-size:12.5px;font-weight:700;color:#8a4b00}
.dc-todo{flex-basis:100%;font-size:12.5px;color:var(--muted)}
.asg-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:6px 0 2px}
.tev .asg-row,.tev .asg-host{align-self:stretch}
.asg-open{min-height:44px;max-width:none;font-weight:700;color:var(--navy)}
.asg-open[aria-expanded="true"]{background:var(--navy);color:#fff;border-color:var(--navy)}
.asg-status{font-size:13px;font-weight:700;color:#1d6b3a}
.asg-host{margin:4px 0 8px}
.asg-ed{border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 12px 12px;color:var(--ink);font-size:14px}
.asg-h{font-weight:800;margin:0 0 8px}
.asg-people{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:6px}
.asg-p{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 10px;border:1px solid var(--line);border-radius:10px;
  background:#f6f8fa;font-weight:600;cursor:pointer}
.asg-p:has(input:checked){background:#e2f4ef;border-color:var(--teal)}
.asg-p input{width:22px;height:22px;margin:0;flex:none;accent-color:var(--teal)}
.asg-l{display:flex;flex-direction:column;gap:4px;margin-top:10px;font-size:13px;font-weight:700;color:var(--muted)}
.asg-other,.asg-truck{min-height:44px;font-size:16px;font-weight:400;border:1px solid var(--line);border-radius:10px;padding:8px 10px;
  color:var(--ink);background:#fff;width:100%;box-sizing:border-box}
.asg-hint{margin:8px 0 0;font-size:12px}
.asg-msg{margin:6px 0 0;font-size:13.5px}
.asg-msg:empty{display:none}
.asg-err{margin:4px 0;color:var(--red);font-weight:700}
.asg-conf{margin:4px 0;font-weight:700;color:#8a4b00;overflow-wrap:anywhere}
.asg-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.asg-acts[hidden],.asg-host[hidden]{display:none}
.asg-acts .btn{min-height:44px;padding:10px 16px;flex:1 1 auto}
/* fb22 P6 (fb454): multi-assign — "☑ Select jobs", a check on every line / card the viewer may assign, a sticky bar above
   the tab bar ("N jobs selected · Assign crew"), the per-row answers under their lines. Every target ≥ 44 px at 390 px. */
.msel-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 10px}
.msel-toggle{min-height:44px;max-width:none;font-weight:700;color:var(--navy)}
.msel-toggle.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.msel-sum{font-size:13px;font-weight:700;color:var(--ink);overflow-wrap:anywhere}
.msel-sum:empty{display:none}
.cl-selable{position:relative;padding-left:40px}
.cl-selable::before{content:'';position:absolute;left:9px;top:11px;width:22px;height:22px;box-sizing:border-box;
  border:2px solid #0b2230;border-radius:6px;background:#fff}
.cl-selable[data-sel="all"]::before{content:'✓';background:var(--teal);border-color:var(--teal);color:#fff;
  font-size:15px;font-weight:900;line-height:18px;text-align:center}
.cl-selable[data-sel="some"]::before{content:'–';background:#dff3ec;border-color:var(--teal);color:var(--navy);
  font-size:15px;font-weight:900;line-height:18px;text-align:center}
.cl-selable[data-sel="all"]{box-shadow:inset 0 0 0 2px var(--teal)}
.cl-noselect{opacity:.45}
.cl--long_term.cl-selable::before{border-color:#fff}
.msel-cb{display:flex;align-items:center;gap:10px;min-height:44px;margin:-4px 0 4px;font-size:14px;font-weight:700;
  color:var(--navy);cursor:pointer;align-self:stretch}
.msel-cb input{width:22px;height:22px;margin:0;flex:none;accent-color:var(--teal)}
.tev:has(.msel-in:checked){box-shadow:0 0 0 2px var(--teal)}
.msel-pad{height:76px}
.msel-bar{position:fixed;left:0;right:0;bottom:calc(53px + env(safe-area-inset-bottom));z-index:31;display:flex;
  flex-wrap:wrap;align-items:center;gap:6px 8px;padding:8px 12px;background:#fff;border-top:1px solid var(--line);
  box-shadow:0 -3px 12px rgba(1,37,58,.14);max-width:760px;margin:0 auto}
.msel-n{flex:1 1 0;min-width:0;font-size:14px;font-weight:800;color:var(--ink);overflow-wrap:anywhere}
.msel-over{flex-basis:100%;order:3;font-size:12.5px;font-weight:700;color:var(--red)}
.msel-over[hidden]{display:none}
.msel-bar .btn{flex:0 0 auto;min-height:44px;padding:10px 14px;font-size:15px}
.msel-bar .btn:disabled{opacity:.5}
body:has(.msel-bar) [data-stahla-feedback]{display:none}     /* the feedback pill would sit on the bar */
.msel-res{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:2px 0;padding:6px 10px;font-size:13px;
  font-weight:700;line-height:1.35;border-radius:10px;overflow-wrap:anywhere;background:#eef2f5;color:var(--ink)}
.cd > .msel-res,.cond-ongoing > .msel-res{border-radius:0;margin:0}
.tev .msel-res{align-self:stretch}
.msel-ok{background:#e2f4ef;color:#1d6b3a}
.msel-kept{background:#eef2f5;color:var(--muted)}
.msel-wait{background:#fff4df;color:#8a4b00}
.msel-bad{background:var(--red-bg);color:var(--red)}
.msel-conf{background:#fff4df;color:#8a4b00}
.msel-why{font-weight:500;color:var(--ink)}
.msel-rl{font-weight:800;color:var(--ink)}
.msel-acts{display:flex;flex-wrap:wrap;gap:8px;flex-basis:100%}
.msel-acts .btn{min-height:44px;padding:10px 16px;flex:0 0 auto;font-size:15px}
.msel-list{margin:0 0 10px;padding:0;list-style:none;max-height:28vh;overflow:auto;font-size:13.5px;line-height:1.4}
.msel-list li{padding:4px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.msel-k{display:inline-block;min-width:34px;font-size:11.5px;font-weight:800;color:#0b2230;background:#e9eef2;border-radius:5px;
  padding:1px 4px;text-align:center}
.msel-d{color:var(--muted);white-space:nowrap}
.msel-modal .asg-ed{border:0;padding:0}
@media (min-width:760px){
  .cl{grid-template-columns:52px minmax(0,1fr) auto;gap:0 10px;padding-top:6px;padding-bottom:6px;min-height:36px;align-items:baseline}
  .cl-k{grid-row:auto}
  .cl-t{-webkit-line-clamp:1}
  .cl-m{grid-column:3;flex-wrap:nowrap;flex-direction:row-reverse;gap:10px}
  .cl-w{grid-column:2 / -1}
  .cl-j{min-width:58px;text-align:right}
  .cl--todo .cl-t{-webkit-line-clamp:1}
}
/* Wide screens: each week is the sheet's grid — seven day columns, Sunday to Saturday, one short bar
   per job (text cut like the sheet; the full line is the tooltip and one click away). */
/* gated on :has() — without it the page cannot widen and seven columns would be crammed into 760px */
@media (min-width:1100px){ @supports selector(:has(*)){
  main:has(.cond){max-width:1560px}
  .cw{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;align-items:stretch}
  .cw .cd{margin:0;min-height:96px;display:flex;flex-direction:column}
  .cw .cd-h{position:static;flex-wrap:wrap;gap:2px 6px;padding:6px 8px;min-height:0}
  .cw .cd-c{margin-left:0;flex-basis:100%;text-align:left;font-size:11px}
  .cw .cd-empty{background:#fff;border-style:solid}
  .cw .cd-empty .cd-h{border-radius:11px 11px 0 0;min-height:0}
  .cw .cl{grid-template-columns:minmax(0,1fr);gap:0;padding:3px 6px 3px 5px;min-height:24px;border-left-width:4px}
  .cw .cl-k{display:none}
  .cw .cl-t{font-size:12px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:unset}
  .cw .cl-m{grid-column:1;flex-direction:row;flex-wrap:wrap;gap:0 6px;font-size:11px}
  .cw .cl-w{grid-column:1;font-size:11px;white-space:normal}   /* wraps, never an ellipsis: the truck comes last (Codex P1 review) */
  .cw .cl-j,.cw .cl-u{display:none}
  .cw .cl-t .cl-n{display:none}
  .cw .cl-n2{display:inline}
  .cw .cd > .cl:last-child{border-radius:0}
  /* fb21 P6: an open panel in a narrow day column stacks its labels over their values */
  .cw .cl-x{padding:6px 6px 8px 8px;font-size:12.5px}
  .cw .cl-x .tev-ctx{grid-template-columns:minmax(0,1fr);gap:0}
  .cw .cl-x .tev-ctx dd{margin-bottom:4px}
  .cw .disp-chip{font-size:12.5px;padding:5px 7px}
  .cw .asg-ed{padding:8px}                                  /* fb21 P8: the editor in a narrow day column */
  .cw .asg-people{grid-template-columns:minmax(0,1fr)}
  .cw .tm-ed{padding:8px}                                   /* fb26 P9: "Edit times" in a narrow day column */
  .cw .tm-ed .btn.tm-step{min-width:40px;padding:6px 8px}
  .cw .est-edit{font-size:12.5px;padding:5px 7px}
  .cw .cl-selable{padding-left:28px}                        /* fb22 P6: the pick box in a narrow day column */
  .cw .cl-selable::before{left:5px;top:4px;width:18px;height:18px;line-height:14px;font-size:12px}
  .cw .msel-res{font-size:12px;padding:4px 6px}
} }
/* ── a host WITHOUT pm.css (the ops desktop) — what the moved rules take from pm.css elsewhere, SCOPED under .cond-root so
   the PM app (which never uses .cond-root) is untouched: the job-context list, the editor's buttons, the sheet's chips. ── */
.cond-root .tev-ctx{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:6px 0;font-size:13px}
.cond-root .tev-ctx dt{color:var(--muted);font-weight:600;white-space:nowrap}
.cond-root .tev-ctx dd{margin:0;color:var(--ink);word-break:break-word}
.cond-root .tev-tel{display:inline-flex;align-items:center;gap:6px;color:var(--teal);text-decoration:none;font-weight:600}
/* fb26 X7: the address in a job's details is a Maps link (PM Schedule view + the desktop calendar's open row) */
.tev-ctx .tev-map{color:var(--teal, #00866a);text-decoration:none;font-weight:600}
.tev-ctx .tev-map:active{opacity:.6}
.cond-root .btn{appearance:none;border:none;border-radius:10px;padding:9px 14px;font:inherit;font-size:14px;font-weight:700;cursor:pointer}
.cond-root .btn.primary{background:var(--teal);color:#fff}
.cond-root .btn.ghost{background:#fff;border:1px solid var(--line);color:var(--ink)}
.cond-root .btn[disabled]{opacity:.5;cursor:default}
.cond-root .muted{color:var(--muted);font-size:13px}
.cond-root .today-fold{margin:0 0 10px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:0 0 4px}
.cond-root .today-fold > summary{cursor:pointer;padding:8px 12px;font-weight:700;color:var(--ink)}
/* ── fb25 P3 (plan 260927-ops-pm-fb-cycle25, fb464 F4/F5): stops + "☑ Assign several" — shared by the PM app and the desktop ── */
/* the app crew's stop ordinal leads its chip ("2nd stop · 👤 Luke, Kyle · 🚛 #18") */
.dc-s{font-weight:800;color:#0b2230;background:#fff;border-radius:6px;padding:0 6px;box-shadow:inset 0 0 0 1px #bcd0ec;white-space:nowrap}
/* the chip before the dispatch lands (off, "Loading crews…") and when it never came ("Assign unavailable — retry") */
.msel-toggle:disabled{opacity:.62;cursor:progress}
.msel-toggle.msel-retry{color:var(--red);border-color:var(--red)}
/* a date-moved row's panel: "Crew was set for Tue 9/29 — reassign" */
.asg-moved{color:#8a4b00;font-weight:700}
/* the replace confirmation inside the editor */
.msel-confirm{margin:8px 0 0;padding:10px 12px;border-radius:10px;background:#fff4df;box-shadow:inset 0 0 0 1px #f0c987}
.msel-confirm .asg-conf{margin:0 0 8px}
.msel-cacts{display:flex;flex-wrap:wrap;gap:8px}
.msel-cacts .btn{min-height:44px;padding:10px 16px;flex:1 1 auto;font-size:15px}
/* "⇅ Stops" under a day's header (Schedule) / beside the day heading (Detail) */
.cd-sbar{display:flex;justify-content:flex-end;padding:4px 8px;background:#f3f6f8;border-bottom:1px solid var(--line)}
.cd-today > .cd-sbar{background:#e6edf2}
.cd-stops{min-height:44px;font-weight:700;color:var(--navy);font-size:13.5px;padding:6px 14px}
.today-sbar{display:flex;justify-content:flex-start;margin:-4px 0 8px}
@media (min-width:1100px){ @supports selector(:has(*)){
  .cw .cd-sbar{justify-content:flex-start;padding:3px 6px}
  .cw .cd-stops{min-height:32px;font-size:12px;padding:3px 10px}
} }

/* fb31 T-36 (R31-36 "one touch rule"): on a touch device every text box, select and textarea is at least 16 px, so iOS does not
   zoom the page in when one takes focus. !important because the per-class sizes (.db-note, .cf input, .modal-field textarea,
   .lg-input, .jn-input, the date chips …) are all more specific than an element selector. Never maximum-scale / user-scalable. */
@media (pointer:coarse){
  input:is(:not([type]),[type=text],[type=search],[type=email],[type=tel],[type=url],[type=number],[type=password],[type=date],[type=time],[type=datetime-local],[type=month],[type=week]),select,textarea{font-size:max(16px,1em)!important}
}
