.dec .dbars{display:grid;gap:8px}.dec .dbar{display:grid;grid-template-columns:90px 1fr auto auto;gap:10px;align-items:center}.dec .dbar .trk{height:12px;background:var(--soft);border-radius:99px;overflow:hidden}.dec .dbar .trk i{display:block;height:100%;background:var(--muted);border-radius:99px}.dec .dbar .trk i.ok{background:var(--ok)}.dec .dbar .trk i.warn{background:var(--warn)}.dec .dbar .trk i.bad{background:var(--bad)}
.dec .dcalls .job{align-items:center}.dec .dcalls .acts{display:flex;gap:6px}.dec .dcalls .acts .btn{width:auto;min-height:40px;padding:0 14px;font-size:15px}
.dec .dacts{display:flex;gap:8px;flex-wrap:wrap}.dec .dacts .btn{width:auto;min-height:44px;padding:0 16px}
@media (max-width:759px){ .dec .dbig .n{font-size:38px} .dec .dbar{grid-template-columns:80px 1fr auto} .dec .dbar .muted{display:none} }
.thread.grp .gav{background:var(--navy,#1c2a66);color:#fff}.thread.grp .gav svg{width:22px;height:22px;fill:currentColor}
.bub .whob{display:block;font-size:12px;color:var(--brand);margin-bottom:2px}
.pushsw{display:grid;gap:6px;margin:6px 0}.pushsw label{display:flex;gap:10px;align-items:center;min-height:40px;font-weight:600}.pushsw input{width:22px;height:22px}
.calc-groups{display:grid;gap:8px;margin:0 0 12px}.calc-groups .cg{display:grid;gap:4px}.calc-groups .chips2{display:flex;flex-wrap:wrap;gap:6px}.calc-groups .chip2[aria-selected=true]{background:var(--brand);color:#fff;border-color:var(--brand)}
.how2{margin-top:6px}.how2 summary{cursor:pointer;color:var(--brand);font-weight:700;font-size:14px}.how2.note{margin-top:0}.how2.note summary{font-weight:600;color:var(--muted);font-size:14px;list-style:none}.how2.note summary::-webkit-details-marker{display:none}.how2.note[open] summary{margin-bottom:4px}
body.wall #hdr,body.wall #rail,body.wall #tabbar,body.wall #bubble{display:none!important}
body.wall,body.wall.in{display:block!important}body.wall main{padding:20px 28px;max-width:none;margin:0;width:auto}
.wallhd{display:flex;align-items:center;gap:18px;margin-bottom:16px}.wallhd .k{font-family:var(--font-head);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:14px}.wallhd .t{font-family:var(--font-head);font-weight:800;font-size:40px;line-height:1}
.wallhd .asof{margin-left:auto;font-size:16px}
.wallgrid{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:18px;align-items:start}
.wcol h2{font-size:18px}
.wcounts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}.wcounts div{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;text-align:center}.wcounts b{display:block;font-family:var(--font-head);font-size:34px;font-weight:800;line-height:1}.wcounts span{font-size:13px;color:var(--muted)}.wcounts .bad b{color:var(--bad)}
.wperson{display:flex;gap:10px;align-items:center}.wperson .dot{width:12px;height:12px;border-radius:50%;background:var(--muted);flex:none}.wperson .dot.ok{background:var(--ok)}.wperson .dot.info{background:var(--brand)}.wperson .dot.warn{background:var(--warn)}.wperson .dot.bad{background:var(--bad)}
.wtiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.wtile{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;border-left:6px solid var(--line)}.wtile.ok{border-left-color:var(--ok)}.wtile.warn,.wtile.watch{border-left-color:var(--warn)}.wtile.attention{border-left-color:var(--bad)}.wtile .v{font-family:var(--font-head);font-size:36px;font-weight:800;line-height:1}.wtile .l{font-size:14px;color:var(--muted);margin-top:4px}
.wallwrap .needrow .t{font-size:18px}
@media (max-width:1099px){ .wallgrid{grid-template-columns:1fr} }
.bid .plr{margin-top:6px}.bid .plr summary{cursor:pointer;color:var(--brand);font-weight:700;font-size:13px}.bid .plr p{margin:6px 0}.bid .plr ul{padding-left:18px;margin:4px 0}
.story .lead{font-size:17px;line-height:1.45;color:var(--ink);margin:4px 0 8px;font-weight:500}
.cres{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:8px 0}.cres div{background:var(--soft);border-radius:10px;padding:8px 10px;display:grid}.cres b{font-size:17px}
.story .cdet{margin:6px 0}.story .cdet summary{cursor:pointer;font-weight:800;font-family:var(--font-head);font-size:16px}.story .cdet p,.story .cdet li{font-size:15px;line-height:1.45}
.story .lesson{border-left:5px solid var(--warn);background:#fffbea;padding:10px 12px;border-radius:0 10px 10px 0;margin:8px 0;font-size:15px;line-height:1.45}
.wfpick{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}.wfpick .chip2[aria-selected=true]{background:var(--brand);color:#fff;border-color:var(--brand)}
.wfhead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.wfowns{margin:0;padding-left:20px;font-size:15px;line-height:1.5}
.wflane{display:grid;gap:8px}.wfarrow{display:none}
.wfstep{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;align-items:center;text-align:left;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);font:inherit;cursor:pointer;border-left:6px solid var(--brand)}
.wfstep>*:not(.n){grid-column:2}.wfstep .n{grid-row:1/5;align-self:start;width:34px;height:34px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-family:var(--font-head);font-weight:800;font-size:16px}
.wfstep b{font-family:var(--font-head);font-size:18px}.wfstep .sys{font-size:13px;color:var(--muted)}.wfstep .by{font-size:13px;color:var(--accent);font-weight:700}.wfstep .to{font-size:13px;color:var(--muted)}
@media (min-width:1100px){ .wflane{display:flex;align-items:stretch;gap:6px;overflow-x:auto;padding-bottom:6px} .wfstep{flex:1 1 180px;min-width:180px;grid-template-columns:1fr;border-left:1px solid var(--line);border-top:6px solid var(--brand)} .wfstep>*:not(.n){grid-column:1} .wfstep .n{grid-row:auto;margin-bottom:6px} .wfarrow{display:grid;place-items:center;color:var(--muted);font-size:28px;flex:none} }
.infob{flex:none;width:28px;height:28px;border-radius:50%;border:1.5px solid var(--line);background:var(--card);color:var(--muted);font:inherit;font-weight:800;font-size:14px;cursor:pointer}
.bid .bmeta{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}
.bid .gc{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.bid .gc::before{content:"via ";font-weight:600;text-transform:none;letter-spacing:0}
.bid h4{margin:0;font-family:var(--font-head);font-size:20px;font-weight:700;line-height:1.15;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bid p{margin:0;color:var(--muted);font-size:14px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bid .ba{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
@container (max-width:760px){
  .bid{grid-template-columns:56px minmax(0,1fr);gap:12px}
  .bid .ba{grid-column:1/-1;justify-content:flex-start}
  .bid .ba .btn[data-a=go]{flex:1 1 100%;justify-content:center}
}

/* ---------------- Craftsman pass (1 Oct evening). Jake: proud 65-year-old tradesmen who do not trust screens. So on tablet and
   desktop: warmer paper, a brass rule under every heading, bigger type with more contrast, no grey-on-grey, nothing that
   needs a hover to find, every list short by default with a plain "Show all" button. Type scale and contrast after
   NN/g "Designing for older adults" (larger text, strong contrast, no tiny targets) and GOV.UK Design System (one job per
   screen, plain words). The AHS red stays for the brand and for alerts only; brass is the craft accent. */
:root{--brass:#b8862b;--brass-soft:#f3e6c9;--paper:#f6f3ec;--paper-card:#fffdf9}
@media (min-width:760px){
  :root{--bg:var(--paper);--card:var(--paper-card);--line:#dcd5c7;--muted:#4b5563;--r:16px}
  
  html,body{font-size:18px}
  body.in main{gap:18px}
  header{border-bottom:2px solid var(--brass)}
  .card{box-shadow:0 1px 0 rgba(27,31,42,.04),0 10px 24px -22px rgba(27,31,42,.45);padding:20px}
  h2{font-size:17px;letter-spacing:.07em;color:var(--brand);padding-bottom:6px;border-bottom:2px solid var(--brass-soft)}
  details.fold>summary h2{border:0;padding:0}
  details.fold>summary .chev{background:var(--brass-soft);color:var(--brand)}
  .hero{min-height:132px;border-radius:14px;box-shadow:none;border:1px solid var(--line)}
  .hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:5px;background:linear-gradient(90deg,var(--accent) 0 28%,var(--brass) 28% 56%,var(--brand) 56%)}
  .hero h1{font-size:40px} .hero .kick{color:#f3e6c9;letter-spacing:.16em}
  .rail{padding-top:20px}
  .rail h6{color:var(--brass);font-size:12.5px;letter-spacing:.14em}
  .panes{background:var(--card);border:1px solid var(--line);box-shadow:0 8px 18px -16px rgba(27,31,42,.5)}
  .panes button{min-height:58px;font-size:16px}
  .panes button[aria-selected=true]{background:var(--brand);color:#fff}
  .tile{border-width:1.5px}
  .tile .v{font-size:36px}
  .tile .l{font-size:16px;font-weight:700}
  .muted{color:var(--muted)}
  .small{font-size:15px}
  .btn{font-size:18px}
  .job,.needrow,.bid,.story,.acard{border-color:var(--line)}
  .bid h4,.job .t{font-size:19px}
  .tools .tool b{font-size:19px}
  .tools .tool{min-height:132px}
  table.dtab th{color:var(--brand);font-family:var(--font-head);font-size:15px;letter-spacing:.06em;text-transform:uppercase;border-bottom:2px solid var(--brass-soft)}
  .ans .big{font-size:40px}
  .dec h3,.story h3{font-size:24px}
  .empty{border:1.5px dashed var(--line);background:transparent;color:var(--muted);font-size:17px}
}
/* long lists fold to the first few with a plain button; nobody scrolls past twenty cards to reach the next section */
.showall{display:flex;justify-content:center;margin:6px 0 2px}
.showall button{min-height:44px;border:1.5px solid var(--line);background:var(--card);color:var(--brand);border-radius:99px;font:inherit;font-size:15px;font-weight:800;padding:0 18px;cursor:pointer}
.showall button:hover{border-color:var(--brand)}
.listfold:not(.open)>*:nth-child(n+5):not(.showall){display:none}


/* ---------------- Craftsman theme v2 (1 Oct, late): one look on every device. Paper, navy, brass. The rail and the tab bar are the
   navy toolbox; titles are a slab face (Bitter) like a stamped plate; buttons are square plates with a brass foot. No dark mode:
   the crew reads paper better and the look should never flip on them. */
:root{--ink:#1b2130;--bg:var(--paper);--card:var(--paper-card);--line:#d9d1c2;--soft:#efe9dc;--navy:#15213f;--brand:#1c2a66;--font-title:"Bitter","Barlow Condensed",Georgia,serif;--r:12px}
html,body{background:var(--bg) }
body{background-image:radial-gradient(rgba(27,33,48,.035) .7px,transparent .7px);background-size:7px 7px}
h1,.hero h1,.mhead h1,.shead h1{font-family:var(--font-title);font-weight:800;letter-spacing:-.01em}
h1{font-size:30px}
.hero{border-radius:12px;border:1px solid #0e1730}
.hero .kick{font-family:var(--font-head);letter-spacing:.18em;color:#e5c889}
header{background:var(--card);border-bottom:3px solid var(--brass);box-shadow:none}
.card{border:1px solid var(--line);border-radius:12px;box-shadow:0 1px 0 rgba(27,33,48,.05),0 12px 24px -22px rgba(27,33,48,.45)}
h2{color:var(--brand)}
.btn{border-radius:10px;border-bottom:3px solid #0d1530;background:var(--brand);font-family:var(--font-head);font-size:19px;letter-spacing:.02em}
.btn.alt{background:var(--card);color:var(--brand);border:1.5px solid var(--brand);border-bottom-width:3px}
.btn.go{background:#1f7a45;border-bottom-color:#124a29}
.linkbtn{color:var(--brand)}
.tool{border:1.5px solid var(--line);border-left:5px solid var(--brass);border-radius:10px;background:var(--card)}
.tool b{font-family:var(--font-head);font-size:19px;letter-spacing:.01em}
.panes{border:1px solid var(--line);background:var(--card)}
.panes button{border-radius:8px;font-family:var(--font-head);font-size:16px;letter-spacing:.02em}
.panes button[aria-selected=true]{background:var(--brand);color:#fff;box-shadow:inset 0 -3px 0 var(--brass)}
.pill{font-family:var(--font-head);letter-spacing:.04em;text-transform:uppercase;font-size:12.5px}
.sheet .panel{border:1px solid var(--line);border-top:4px solid var(--brass);background:var(--card)}
.shead h1{font-size:26px}
.toast{background:var(--navy);border:1px solid var(--brass);border-radius:10px}
.tabbar{background:var(--navy);border-top:3px solid var(--brass);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
.tabbar button{color:#c9d0e2}
.tabbar button[aria-selected=true]{color:#fff}
.tabbar button[aria-selected=true] .ti{background:var(--brass);color:var(--navy)}
.tabbar .n{border-color:var(--navy)}
@media (min-width:760px){
  body.in .rail{background:var(--navy);border-right:0;padding:18px 10px;box-shadow:inset -1px 0 0 rgba(255,255,255,.06)}
  .rail .rb{color:#dfe4f0;border-radius:10px;font-family:var(--font-head);letter-spacing:.02em}
  .rail .rb:hover{background:rgba(255,255,255,.07)}
  .rail .rb[aria-selected=true]{background:rgba(255,255,255,.1);color:#fff;box-shadow:inset 4px 0 0 var(--brass)}
  .rail h6{color:var(--brass);background:transparent}
  .rail .rme{color:#dfe4f0;border-top:1px solid rgba(255,255,255,.12)}
  .rail .rme .muted,.rail .rme b{color:#fff}
  .rail .rme select{background:#fff;color:var(--ink);border-radius:8px}
}
@media (min-width:1100px){
  .rail .rb{min-height:54px;font-size:19px;padding:0 14px}
  .rail .rb svg{width:26px;height:26px}
}
@media (min-width:760px) and (max-width:1099px){
  :root{--railw:100px}
  .rail .rb{font-family:var(--font-body);font-size:12.5px;line-height:1.15;padding:6px 2px;min-height:66px;white-space:normal;overflow-wrap:anywhere}
  .rail .rb[aria-selected=true]{background:transparent;box-shadow:none;color:#fff}
  .rail .rb[aria-selected=true] svg{background:var(--brass);color:var(--navy)}
  .rail .rb:hover svg{background:rgba(255,255,255,.14)}
  .rail h6{height:1px;background:rgba(255,255,255,.14);margin:8px 10px}
}
/* ---------------- Figures (1 Oct evening): the numbers as pictures the crew can read at a glance. Horizontal bars, thin, 4px rounded
   ends, a 2px gap, direct labels, one hover/tap tooltip, a table view for anyone who prefers rows. Status colours only mean status. */
.fig{display:grid;gap:6px;margin:6px 0}
.fig .fr{display:grid;grid-template-columns:minmax(90px,.9fr) minmax(0,2fr) auto;align-items:center;gap:10px;min-height:30px;border-radius:8px;padding:2px 4px;cursor:default}
.fig .fr:hover,.fig .fr.on{background:var(--soft)}
.fig .fl{font-size:14.5px;font-weight:700;line-height:1.15;overflow-wrap:anywhere}
.fig .ft{position:relative;height:16px;background:color-mix(in srgb,var(--line) 55%,transparent);border-radius:4px;overflow:hidden}
.fig .ft i{position:absolute;left:0;top:0;bottom:0;border-radius:0 4px 4px 0;background:var(--brand);min-width:3px}
.fig .ft i.ok{background:var(--ok)} .fig .ft i.warn{background:var(--warn)} .fig .ft i.bad{background:var(--bad)} .fig .ft i.brass{background:var(--brass,#b8862b)} .fig .ft i.steel{background:#6b7c93}
.fig .ft .ref{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--ink);opacity:.55}
.fig .fv{font-family:var(--font-head);font-weight:800;font-size:17px;font-variant-numeric:tabular-nums;white-space:nowrap}
.fig .fsub{grid-column:1/-1;font-size:13px;color:var(--muted);margin:-2px 0 2px 4px}
.fig .tip{grid-column:1/-1;background:var(--ink);color:var(--card);border-radius:8px;padding:6px 10px;font-size:13.5px;line-height:1.35}
.figfoot{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.figfoot button{min-height:34px;border:1px solid var(--line);background:transparent;color:var(--brand);border-radius:99px;font:inherit;font-size:13px;font-weight:700;padding:0 12px;cursor:pointer}
.fig table{width:100%;border-collapse:collapse;font-size:14px} .fig td,.fig th{padding:4px 6px;border-bottom:1px solid var(--line);text-align:left} .fig td.n{text-align:right;font-variant-numeric:tabular-nums}
.stack{display:flex;height:18px;border-radius:5px;overflow:hidden;gap:2px;background:color-mix(in srgb,var(--line) 55%,transparent)}
.stack i{display:block;height:100%}
.stack i.ok{background:var(--ok)} .stack i.warn{background:var(--warn)} .stack i.bad{background:var(--bad)} .stack i.brand{background:var(--brand)} .stack i.steel{background:#6b7c93} .stack i.brass{background:var(--brass,#b8862b)}
.lg2{display:flex;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-top:4px} .lg2 i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.tl{position:relative;height:54px;margin:8px 0 2px}
.tl .ax{position:absolute;left:0;right:0;top:26px;height:2px;background:var(--line)}
.tl .tk{position:absolute;top:22px;width:2px;height:10px;background:var(--muted);transform:translateX(-1px)} .tl .tk span{position:absolute;top:12px;left:50%;transform:translateX(-50%);font-size:11.5px;color:var(--muted);white-space:nowrap}
.tl .dot{position:absolute;top:19px;width:16px;height:16px;border-radius:50%;background:var(--brand);border:2px solid var(--card);transform:translateX(-8px);cursor:pointer}
.tl .dot.bad{background:var(--bad)} .tl .dot.warn{background:var(--warn)} .tl .dot.ok{background:var(--ok)}
.tl .dot:hover,.tl .dot.on{transform:translateX(-8px) scale(1.25)}
.hub3{display:grid;gap:14px}
@media (min-width:1100px){ .hub3{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(300px,.9fr);align-items:start} .hub3 .col{display:grid;gap:14px} }
@media (min-width:760px) and (max-width:1099px){ .hub3{grid-template-columns:1fr 1fr} .hub3 .col3{grid-column:1/-1} }
.plate{background:linear-gradient(180deg,var(--card),color-mix(in srgb,var(--card) 92%,var(--brass-soft,#f3e6c9)));border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:grid;gap:8px;position:relative}
.plate::before{content:"";position:absolute;left:14px;right:14px;top:8px;height:1px;background:var(--brass,#b8862b);opacity:.6}
.plate h3{margin:4px 0 0;font-family:var(--font-head);font-size:19px;letter-spacing:.02em}
.plate .pv{font-family:var(--font-head);font-weight:800;font-size:34px;line-height:1;font-variant-numeric:tabular-nums}
.plate .pv.ok{color:var(--ok)} .plate .pv.watch{color:var(--warn)} .plate .pv.attention{color:var(--bad)}

/* Large print (Me sheet switch): one notch up everywhere, buttons taller. */
body.bigtype{font-size:20px}
body.bigtype .btn{font-size:20px;min-height:60px}
body.bigtype h1{font-size:36px} body.bigtype .hero h1{font-size:44px}
body.bigtype .small{font-size:17px} body.bigtype .muted.small{font-size:16px}
body.bigtype .job .t,.bigtype .bid h4,.bigtype .needrow .t{font-size:21px}
body.bigtype .tile .v{font-size:40px} body.bigtype .plate .pv{font-size:40px}
body.bigtype .rail .rb{font-size:21px;min-height:58px}
body.bigtype .tabbar button{font-size:13.5px}
body.bigtype input,body.bigtype select,body.bigtype textarea{font-size:20px}

.fmic{position:fixed;right:22px;bottom:calc(env(safe-area-inset-bottom,0px) + 96px);z-index:8;width:52px;height:52px;border-radius:50%;border:0;background:var(--brand);color:#fff;display:grid;place-items:center;box-shadow:0 8px 20px -10px rgba(16,24,40,.6);cursor:pointer}
.fmic svg{width:26px;height:26px} .fmic.on{background:var(--bad);animation:pulse 1.2s infinite}
@media (max-width:759px){ body.in:not(.docked) .fmic{bottom:calc(env(safe-area-inset-bottom,0px) + 150px)} }
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(166,30,30,.5)}100%{box-shadow:0 0 0 14px rgba(166,30,30,0)}}

.jrow{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;background:var(--card);font-size:17px;font-weight:600;cursor:pointer}
.jrow input{width:28px;height:28px;min-height:0;flex:none;margin-top:1px;accent-color:var(--ok)}
.jrow:has(input:checked){border-color:var(--ok);background:var(--ok-bg)}

.pmunit{border:1.5px solid var(--line);border-radius:14px;padding:12px 14px;display:grid;gap:10px;background:var(--card)}
.pmunit.alldone{border-color:var(--ok)}
.pmunit h2{display:flex;align-items:center;gap:8px;font-size:16px}
.pmunit h2 .cnt{margin-left:auto;font-size:13px;background:var(--soft);border-radius:99px;padding:2px 10px;color:var(--ink)}
.pmrow{display:flex;gap:8px;align-items:stretch}
.pmrd{display:grid;gap:2px;width:120px;flex:none;font-weight:600}
.pmrd input{min-height:48px;padding:8px 10px}
@media (max-width:520px){ .pmrow{flex-direction:column} .pmrd{width:100%} }

#offline{position:fixed;left:0;right:0;top:0;z-index:20;background:var(--warn);color:#fff;font-weight:700;font-size:14px;text-align:center;padding:8px 12px}
#offline[hidden]{display:none}
#newver{position:fixed;left:50%;transform:translateX(-50%);top:calc(env(safe-area-inset-top,0px) + 10px);z-index:30;display:flex;gap:12px;align-items:center;background:var(--navy);color:#fff;border:1px solid var(--brass);border-radius:10px;padding:10px 14px;font-weight:700;font-size:15px;box-shadow:0 10px 24px -8px rgba(0,0,0,.4);max-width:calc(100% - 24px)}
#newver button{min-height:40px;border:0;border-radius:8px;background:var(--brass);color:var(--navy);font:inherit;font-weight:800;padding:0 14px;cursor:pointer}

.trow{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:8px 10px;border:1.5px solid var(--line);border-radius:12px;background:var(--card)}
.trow.low{border-color:var(--bad);background:var(--bad-bg)}
.trow .tn{font-weight:700;font-size:16px;line-height:1.2}
.trow .tq{display:inline-grid;grid-auto-flow:column;align-items:center;gap:6px}
.trow .tq button{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);background:var(--card);font:inherit;font-size:22px;font-weight:800;cursor:pointer;color:var(--brand)}
.trow .tq b{min-width:34px;text-align:center;font-family:var(--font-head);font-size:22px}
.trow .trx{width:36px;height:36px;border:0;background:transparent;color:var(--muted);font-size:16px;cursor:pointer}

.gl{border-bottom:2px dotted var(--brass,#b8862b);cursor:help}
.gl:focus-visible{outline:2px solid var(--brand)}

/* Desktop Board in one screen: sites on the left, the crew on the right, queues already in the side column. */
@media (min-width:1280px){ .bwide{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:16px;align-items:start} .bside{position:sticky;top:calc(var(--hdrh) + 72px)} .bside .list{max-height:calc(100dvh - 220px);overflow:auto;padding-right:2px} }

/* ================= Role pass (2 Oct): the hours bar, quick references, the More sheet ================= */
:root{--logged:var(--accent);--travel:rgba(230,58,33,.45);--break:#c9c2b4;--shop:#8a93a6}
.dbsec{margin:4px 0 2px}
.sech2{display:flex;align-items:center;gap:10px}.sech2 h2{margin:0}
.ibtn{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);background:var(--card);color:var(--brand);font:inherit;font-weight:800;font-size:17px;cursor:pointer;font-family:Georgia,serif;font-style:italic}
.dbbox{background:var(--card);border:1px solid var(--line);border-radius:var(--r,14px);padding:12px 14px 10px;display:grid;gap:8px}
.dbtop{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
.dbtot{font-family:var(--font-head,"Barlow Condensed"),sans-serif;font-size:30px;line-height:1;font-variant-numeric:tabular-nums}
.dbtot b{font-size:34px}
.dbline{font-weight:700;font-size:16px;color:var(--muted)}.dbline.on{color:var(--ok)}
.dbwrap{position:relative;padding-top:18px;padding-bottom:18px}
.daybar{position:relative;height:28px;border:1.5px solid var(--line);border-radius:8px;background:var(--bg);overflow:visible}
@media (min-width:700px){.daybar{height:32px}}
@media (min-width:1100px){.daybar{height:36px}}
.daybar .tick{position:absolute;top:0;bottom:0;width:1px;background:var(--line)}
.daybar .seg{position:absolute;top:3px;bottom:3px;border-radius:4px;min-width:3px}
.daybar .seg.working{background:var(--logged)}
.daybar .seg.travel{background:var(--travel)}
.daybar .seg.break{background:repeating-linear-gradient(135deg,var(--break) 0 4px,transparent 4px 8px)}
.daybar .seg.shop{background:var(--shop)}
.daybar .seg.off{background:var(--break)}
.daybar .seg.gap{border:1.5px dashed var(--muted);background:transparent;border-radius:4px}
.daybar .seg.plan{top:-3px;bottom:-3px;border:1.5px solid var(--navy,#1c2a66);background:transparent;border-radius:6px;opacity:.7}
.daybar .now{position:absolute;top:-8px;bottom:-8px;width:2px;background:var(--navy,#1c2a66);z-index:2}
.daybar .now span{position:absolute;top:-16px;left:50%;transform:translateX(-50%);font-size:12px;font-weight:800;color:var(--navy,#1c2a66);white-space:nowrap;background:var(--card);padding:0 4px;border-radius:4px}
.dbhours{position:relative;height:16px;margin-top:4px}
.dbhours span{position:absolute;transform:translateX(-50%);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.dbhours span.hid{display:none}
.dblegend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:var(--muted);align-items:center}
.dblegend .asof{margin-left:auto}
.dblegend .sw{display:inline-block;width:14px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px;background:var(--logged)}
.dblegend .sw.travel{background:var(--travel)}.dblegend .sw.break{background:repeating-linear-gradient(135deg,var(--break) 0 3px,transparent 3px 6px)}.dblegend .sw.shop{background:var(--shop)}
.dblegend .sw.gap{background:transparent;border:1.5px dashed var(--muted)}.dblegend .sw.plan{background:transparent;border:1.5px solid var(--navy,#1c2a66)}
.dbfill{height:6px;border-radius:99px;background:var(--line);overflow:hidden}.dbfill i{display:block;height:100%;background:var(--logged);border-radius:99px;transition:width .4s}
@media (prefers-reduced-motion:reduce){.dbfill i{transition:none}}
.qref .qi{width:40px;height:40px;border-radius:12px;background:var(--soft,#efe9dc);display:grid;place-items:center;flex:none;color:var(--brand)}
.qref .qi svg{width:24px;height:24px}
.needrow.qref{border-left-color:var(--brand)}
.morelist{display:grid;gap:8px;margin-top:8px}
.morerow{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px 12px;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.morerow .mi{width:40px;height:40px;border-radius:12px;background:var(--soft,#efe9dc);display:grid;place-items:center;color:var(--brand);flex:none}
.morerow .mi svg{width:24px;height:24px}
.morerow .ml{font-weight:800;font-size:17px;flex:1}
.morerow .n{background:var(--accent);color:#fff;border-radius:99px;font-size:12px;font-weight:800;padding:1px 8px}
.morerow svg:last-child{color:var(--muted)}
#rail .rb2{opacity:.85;font-size:15px;min-height:40px}
#rail .rb-more{display:none}
/* tablet rail (88px): the four places and More, which opens the sheet; the long list is for the desktop sidebar */
@media (min-width:760px) and (max-width:1099px){ #rail .rb2,#rail .rb2h{display:none} #rail .rb-more{display:flex} }
/* Dashboard pane strip on a phone: six tabs scroll inside the strip instead of widening the page (found 2 Oct at 390px). */
@media (max-width:759px){ .panes{display:flex;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch} .panes::-webkit-scrollbar{display:none} .panes button{flex:1 0 auto;min-width:64px;padding:4px 10px} }

/* wave 2 (2 Oct): dispatch suggestions, the forecast, the CSP chip */
.sugg{display:grid;gap:10px}
.sugg .srow{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px;border:1.5px solid var(--line);border-radius:14px;background:var(--card)}
.sugg .srow.top{border-color:var(--brand)}
.sugg .srank{width:44px;height:44px;border-radius:50%;background:var(--soft);color:var(--brand);font-weight:800;font-size:19px;display:grid;place-items:center}
.sugg .srow.top .srank{background:var(--brand);color:#fff}
.sugg .snm{font-weight:800;font-size:18px}.sugg .ssc{color:var(--muted);font-size:14px}
.sugg .srs{margin:6px 0 0;padding-left:18px;font-size:15px;color:var(--ink)}.sugg .srs li{margin:2px 0}
.sugg .srow .btn{width:auto;min-height:44px;padding:0 16px;font-size:16px}
.sugg .sover{color:var(--warn);font-weight:700;font-size:14px}
.sfact{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:15px;color:var(--muted)}.sfact b{color:var(--ink)}
.suggbtn{min-height:44px}
.fc{display:grid;gap:14px}
.fchart{width:100%;height:auto;display:block;max-height:420px}
.fchart text{font:13px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;fill:var(--muted)}
.fchart text.v{fill:var(--ink);font-weight:700}.fchart text.axl{font-weight:700;fill:var(--ink)}
.fchart .grid{stroke:var(--line);stroke-width:1}
.fchart .col{cursor:pointer;outline:none}.fchart .col:hover path,.fchart .col:focus path{filter:brightness(.9)}
.fkey{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:14px;color:var(--muted)}.fkey i{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:6px}
.fkey i.lk{height:3px;border-radius:2px;vertical-align:3px}
.ftip{position:absolute;pointer-events:none;background:var(--ink);color:#fff;padding:8px 10px;border-radius:8px;font-size:14px;line-height:1.35;max-width:240px;z-index:3}
.ftot{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.ftot .t{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--card)}.ftot .t .l{font-size:13px;color:var(--muted)}.ftot .t .n{font-size:24px;font-weight:800;font-family:var(--font-head,inherit)}
.fbu{display:grid;gap:6px}.fbu .r{display:grid;grid-template-columns:110px minmax(0,1fr) 72px 64px;gap:8px;align-items:center;font-size:15px}
.fbu .r .trk{height:10px;background:var(--soft);border-radius:5px;overflow:hidden}.fbu .r .trk i{display:block;height:100%;background:#3b55c4;border-radius:0 4px 4px 0}
.fbu .r .n{text-align:right;font-weight:700}
.ord .vend{display:grid;gap:8px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.ord .vh{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.ord .vh h3{margin:0;font-size:18px}
.ord .oi{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.ord .oi .d{font-weight:700}.ord .oi .m{font-size:14px;color:var(--muted)}
.ord .oi.done .d{color:var(--muted);text-decoration:line-through}
.ord .oi .btn{width:auto;min-height:44px;padding:0 14px;font-size:15px;white-space:nowrap}
.pill.now{background:var(--bad-bg);color:var(--bad)}.pill.soon{background:var(--warn-bg);color:var(--warn)}.pill.later{background:var(--soft);color:var(--muted)}
.pill.csp{background:var(--soft);color:var(--brand);text-transform:none;letter-spacing:0;font-size:13px;cursor:pointer;border:0;font-family:inherit;font-weight:700;min-height:28px}
.fitems{display:grid;gap:6px}.fitems .fi{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;font-size:15px;padding:6px 0;border-top:1px solid var(--line)}
.fitems .fi .n{text-align:right;font-weight:700}.fitems .fi .h{color:var(--muted)}
@media (max-width:560px){ .sugg .srow{grid-template-columns:40px minmax(0,1fr)} .sugg .srow .btn{grid-column:1/-1;width:100%} .fbu .r{grid-template-columns:90px minmax(0,1fr) 64px 56px;font-size:14px} .ord .oi{grid-template-columns:1fr} .ord .oi .btn{width:100%} }

/* Wave 3B: switches with words, cash now / coming / going, the sparkline, the worst-jobs list, team-chat header actions */
.sw{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 6px;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer}
.sw i{width:52px;height:30px;border-radius:99px;background:#aab3c0;position:relative;flex:none;transition:background .15s}
.sw i::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:left .15s}
.sw[aria-checked="true"] i{background:var(--ok)} .sw[aria-checked="true"] i::after{left:25px}
.sw span{font-weight:700;font-size:15px}
.pkrow{display:grid;grid-template-columns:104px 1fr;gap:10px;align-items:start;padding:6px 0;border-bottom:1px solid var(--line)} .pkrow:last-child{border-bottom:0} .pkrow .pkl{font-weight:700;font-size:16px;line-height:1.3;padding-top:10px}
.gacts{display:flex;gap:6px;align-items:center;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:759px){ .mhd:has(.gacts){grid-template-columns:44px minmax(0,1fr)} .mhd .gacts{grid-column:1/-1;justify-content:flex-start;margin-left:0} }
.whob .muted{font-weight:500}
.decs{grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr))!important;align-items:start} .decs .dec:first-child{grid-column:1/-1}
.cgo{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px} .cgo>div{display:grid;gap:2px;padding:10px 12px;border-radius:12px;background:var(--soft);border-left:5px solid var(--line)} .cgo>div b{font-family:var(--font-head);font-size:24px;line-height:1.1} .cgo>div.ok{border-left-color:var(--ok)} .cgo>div.warn{border-left-color:var(--warn)} .cgo>div.bad{border-left-color:var(--bad)} .cgo>div.steel{border-left-color:#6b7c93}
@media (max-width:759px){ .cgo{grid-template-columns:1fr} .cgo>div b{font-size:22px} }
.fig.spark svg{width:100%;height:64px;display:block} .sparkl{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin-top:2px}
.dcalls .job{border-left:5px solid var(--line)} .dcalls .job.ok{border-left-color:var(--ok)} .dcalls .job.warn{border-left-color:var(--warn)} .dcalls .job.bad{border-left-color:var(--bad)}
.age{font-weight:700} .age.warn{color:var(--warn)} .age.bad{color:var(--bad)} .age.ok{color:var(--ok)}
.worst{display:grid;gap:6px} .worst .needrow{min-height:48px}
.dec .dcalls .acts .btn{min-height:44px}
/* ES-01 Enterprise Strategy */
.es{display:grid;gap:14px}
.es-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
@media (max-width:700px){.es-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
.es-stats>div{background:var(--card);border:1px solid var(--line);border-left:5px solid var(--navy,#1c2a66);border-radius:12px;padding:12px 14px;display:grid;gap:2px;min-width:0}
.es-stats>div:first-child{border-left-color:var(--accent)}
.es-stats b{font-family:var(--font-head);font-size:30px;line-height:1;font-variant-numeric:tabular-nums}
.es-stats span{font-weight:700}
.es-stats small{color:var(--muted);font-size:13px}
.es-tabs{display:flex;flex-wrap:wrap;gap:6px}
.es-tabs button{flex:1 1 auto;min-height:48px}
.es-n{font-size:12px;opacity:.75;font-variant-numeric:tabular-nums}
.es-grp{display:grid;gap:10px}
.es-grp>h3,.es-h{font-family:var(--font-head);font-size:22px;margin:10px 0 0;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.es-fn{color:var(--accent)}
.es-dec>summary,.es-plan>summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:1fr auto;gap:6px 12px;align-items:start;min-height:44px}
.es-dec>summary::-webkit-details-marker,.es-plan>summary::-webkit-details-marker{display:none}
.es-q{font-weight:700;font-size:17px;min-width:0;overflow-wrap:anywhere}
.es-q small{display:block;font-weight:400;font-size:14px;color:var(--muted);margin-top:2px}
.es-meta{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.es-i-high{border-left:5px solid var(--bad)} .es-i-high .es-imp{background:var(--bad-bg);color:var(--bad)}
.es-i-medium{border-left:5px solid var(--warn)} .es-i-medium .es-imp{background:var(--warn-bg);color:var(--warn)}
.es-st-live{background:var(--ok-bg);color:var(--ok)} .es-st-built,.es-st-plan{background:var(--warn-bg);color:var(--warn)} .es-st-decided{background:var(--soft);color:var(--brand)}
.es-vor{display:grid;gap:2px;background:var(--ok-bg);border-radius:10px;padding:10px 12px}
.es-pos{display:grid;gap:6px}
.es-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:4px 12px;border-top:1px solid var(--line);padding-top:6px;align-items:start}
@media (max-width:600px){.es-row{grid-template-columns:1fr}.es-dec>summary,.es-plan>summary{grid-template-columns:1fr}.es-meta{justify-content:flex-start}}
.es-pl{font:inherit;font-size:13.5px;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:99px;padding:4px 10px;margin:2px 4px 2px 0;cursor:pointer;min-height:32px;text-align:left}
.es-pl:hover{border-color:var(--accent);color:var(--accent)}
.es-form{display:grid;gap:8px;border-top:1px solid var(--line);padding-top:10px}
.es-form textarea{font:inherit;font-size:16px;padding:10px;border:1.5px solid var(--line);border-radius:10px;width:100%;box-sizing:border-box}
.es-use{font:inherit;font-size:14px;font-weight:700;color:var(--brand);background:var(--soft);border:0;border-radius:8px;padding:6px 12px;margin-top:4px;min-height:36px;cursor:pointer;display:block}
.es-fix ul{margin:6px 0 0;padding-left:18px} .es-fix summary{cursor:pointer;min-height:36px}
.es-kns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
@media (max-width:600px){.es-kns{grid-template-columns:1fr}}
.es-kns>div{background:var(--soft);border-radius:10px;padding:8px 10px;display:grid;gap:2px;min-width:0;overflow-wrap:anywhere}
.es-kns b{font-family:var(--font-head);font-size:20px;line-height:1.1}
.es-kv{display:grid;grid-template-columns:7em 1fr;gap:6px 12px;margin:0;font-size:15px}
.es-kv dt{color:var(--muted)} .es-kv dd{margin:0;min-width:0}
@media (max-width:600px){.es-kv{grid-template-columns:1fr;gap:0}.es-kv dd{margin-bottom:6px}}
#esq{font:inherit;font-size:16px;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;width:100%;box-sizing:border-box;min-height:48px}
.es-flow{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.es-flow li{border-top:4px solid var(--brand)}
.es-flow h3,.es-rails h3{font-family:var(--font-head);font-size:20px;margin:0}
.es-step{font-family:var(--font-head);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-weight:700}
.es-rails{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.es-flash{box-shadow:0 0 0 3px var(--accent)}
/* tablet (760-1024): one persistent bar at the bottom, no rail beside it (J18) */
@media (min-width:760px) and (max-width:1024px){
  body.in{display:block}
  body.in .rail{display:none}
  body.in main{max-width:none;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 156px)}
  body.in .dock{left:0}
  body.in.backonly .tabbar{display:grid}
  body.in.backonly .bubble{bottom:calc(env(safe-area-inset-bottom,0px) + 82px)}
  body.in.backonly main{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 156px)}
  body.in:not(.docked) .fmic{bottom:calc(env(safe-area-inset-bottom,0px) + 150px)}
}
