:root{
  --blue:#27479e;        /* Coreline brand primary */
  --blue-d:#1c2747;
  --cyan:#36c5f0;        /* energy accent */
  --ink:#14213a;
  --mut:#5a6275;
  --line:#e4e8f0;
  --soft:#f4f6fb;
  --card:#fff;           /* raised surfaces (cards, bars, dropdowns) */
  --head:#1c2747;        /* heading text (brand navy in light, pale in dark) */
  --card2:#fbfcff;       /* barely-off surface (calendar out-month, zebra) */
  --soft2:#eef1f8;       /* tinted panels & table headers */
  --ok:#1a7a3c; --okbg:#e3f5ea;
  --bad:#c0392b; --badbg:#fbe6e3;
  --warn:#b8860b; --warnbg:#fbf3df;
  --infobg:#eaf7fd;      /* cyan info panels (planning banners etc.) */
  --inp:#fff6ee; --inpb:#f0a55a;
}
/* ── dark mode: opt-in via the account-menu toggle (html[data-theme=dark],
   remembered in localStorage). Brand navy sidebar stays; surfaces go deep. ── */
[data-theme="dark"]{
  --blue:#6487e8;
  --blue-d:#141b33;
  --ink:#e6eaf6;
  --mut:#9aa4bd;
  --line:#2b3552;
  --soft:#0f1424;
  --card:#1a2138;
  --card2:#1e2640;
  --soft2:#242e4d;
  --ok:#54c47f; --okbg:#173224;
  --bad:#ff8f80; --badbg:#3a201c;
  --warn:#e0b555; --warnbg:#33290f;
  --infobg:#132c3e;
  --head:#dfe6f8;
  --inp:#2c2517; --inpb:#8a6a3a;
  color-scheme:dark;
}
[data-theme="dark"] body{background:var(--soft);}
[data-theme="dark"] .card{box-shadow:0 1px 2px rgba(0,0,0,.35);border:1px solid var(--line);}
[data-theme="dark"] img.darkinvert{filter:brightness(1.15);}
*{box-sizing:border-box;}
body{font-family:Arial,Helvetica,sans-serif;margin:0;background:var(--soft);color:var(--ink);font-size:14px;}
a{color:var(--blue);}
/* width:100% + min-width:0 matter inside the flex app shell: without them the page
   container sizes to fit-content, so one wide table (e.g. the tracker's daily log)
   silently pushes the whole page wider than a phone screen instead of side-scrolling. */
.wrap{max-width:none;width:100%;min-width:0;margin:0 auto;padding:22px 20px;}

/* ── app shell: persistent left sidebar + scrolling main ─────────────────── */
.shell{display:flex;min-height:100vh;}
.side{flex:0 0 236px;width:236px;background:var(--blue-d);color:#fff;
  position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow-y:auto;z-index:70;}
.side .brand{display:flex;align-items:center;padding:16px 18px 12px;}
.side .brand img{height:30px;}
.side nav{flex:1;padding:4px 10px 10px;}
.side .grp{cursor:pointer;user-select:none;color:#7e8aa6;font-size:11px;font-weight:bold;letter-spacing:.06em;
  text-transform:uppercase;padding:15px 12px 5px;}
.side .subgrp{color:#5f6b86;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:8px 12px 2px;}
/* section tab strip (Production ⁄ Overview, Fleet ⁄ Plant, …) */
.tabstrip{display:flex;gap:4px;margin:0 0 12px;border-bottom:2px solid var(--line);}
.tabstrip a{padding:7px 14px;border-radius:8px 8px 0 0;font-weight:700;font-size:13px;
  color:var(--mut);text-decoration:none;}
.tabstrip a.on{background:var(--blue-d);color:#fff;}
.side nav a{display:block;color:#cdd6ea;text-decoration:none;padding:9px 12px;
  border-radius:8px;font-size:13.5px;font-weight:bold;}
.side nav a:hover{background:#2a396b;color:#fff;}
.side nav a.active{background:var(--blue);color:#fff;}
/* open-huddle-actions count beside Home / Huddle */
.navbadge{display:inline-block;min-width:18px;margin-left:7px;padding:1px 5px;
  border-radius:9px;background:var(--cyan,#36c5f0);color:#12203f;font-size:11px;
  font-weight:800;text-align:center;line-height:15px;vertical-align:1px;}
.navbadge.bad{background:#e5484d;color:#fff;}
.side .sfoot{padding:8px 10px 14px;border-top:1px solid #2a396b;}
.side .sfoot a{display:block;color:#9aa6c2;text-decoration:none;padding:8px 12px;
  border-radius:8px;font-size:13px;font-weight:bold;}
.side .sfoot a:hover,.side .sfoot a.active{background:#2a396b;color:#fff;}

/* ── the menu, round 2 (Lee, 18 Oct): icons per group, depth, a collapsible 76 px icon rail
   with fly-outs, Find a page, you at the bottom. Icons are CSS masks (no glyphs). ── */
.side{flex-basis:252px;width:252px;background:linear-gradient(180deg,#1f2b52 0%,#1c2747 38%,#141b33 100%);
  box-shadow:inset -1px 0 0 rgba(255,255,255,.06),6px 0 24px rgba(10,15,30,.16);transition:width .18s ease,flex-basis .18s ease;}
.side .sbrand{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:16px 12px 8px 18px;}
.side .sbrand .brand{padding:0;}
.side .brand img.brand-full{height:27px;}
.side .brand img.brand-mark{display:none;height:38px;width:38px;object-fit:contain;}
.side .navcollapse,.side .navexpand{border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:#7e8aa6;
  border-radius:8px;width:30px;height:30px;display:grid;place-items:center;cursor:pointer;padding:0;flex:none;}
.side .navcollapse:hover,.side .navexpand:hover{color:#fff;background:rgba(255,255,255,.08);}
.side .navcollapse svg,.side .navexpand svg,.topbar .hamburger svg,.taskbadge svg,.side .nvmechev{width:17px;height:17px;fill:none;
  stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px;}
.taskbadge svg{width:14px;height:14px;}
.side .nvmechev{width:15px;height:15px;margin-left:auto;color:#7e8aa6;flex:none;transition:transform .15s;}
.side .navacct[open] .nvmechev{transform:rotate(180deg);}
.topbar .hamburger svg{width:22px;height:22px;}
.side .navexpand{display:none;}
.side .navfind{padding:2px 12px 8px;}
.side .navfind input{width:100%;background:rgba(255,255,255,.05) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237e8aa6' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6.2'/%3E%3Cpath d='m16 16 4 4'/%3E%3C/svg%3E") 9px center/15px no-repeat;border:1px solid rgba(255,255,255,.1);
  color:#e6eaf6;border-radius:9px;padding:7px 10px 7px 30px;font:inherit;font-size:12.5px;}
.side .navfind input::placeholder{color:#7e8aa6;}
.side .navfind input:focus{outline:none;border-color:#36c5f0;background-color:rgba(255,255,255,.08);}
.side nav{padding:2px 10px 10px;display:flex;flex-direction:column;gap:1px;}
.side [data-ic]::before{content:"";width:19px;height:19px;flex:none;background:currentColor;
  -webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat;}
.side .grp{display:flex;align-items:center;gap:11px;padding:9px 10px;margin-top:2px;border-radius:10px;color:#cdd6ea;
  font-size:13.5px;letter-spacing:0;text-transform:none;font-weight:700;position:relative;}
.side .grp:hover{background:rgba(255,255,255,.07);color:#fff;}
.side .grp:focus-visible{outline:2px solid #36c5f0;outline-offset:-2px;}
.side .grp::after{content:"";float:none;width:15px;height:15px;margin-left:auto;opacity:1;background:#7e8aa6;transform:rotate(90deg);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 6 6 6-6 6'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 6 6 6-6 6'/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .18s;}
.side .grp.folded::after{transform:none;}
.side .grp.here{color:#fff;}
.side .grp.here::before{color:#36c5f0;}
.side .grp .nvdot{display:none;}
.side .grp.hasbadge .nvdot{display:block;position:absolute;right:32px;top:50%;margin-top:-4px;width:8px;height:8px;border-radius:50%;background:#e5484d;}
.side .subgrp{margin-left:31px;padding:8px 10px 2px;}
.side nav a{display:flex;align-items:center;gap:8px;font-size:13.5px;}
.side nav a.nvtop{gap:11px;padding:9px 10px;border-radius:10px;}
.side nav a.nvsub{margin-left:19px;padding:7px 10px 7px 12px;border-radius:0 8px 8px 0;border-left:1px solid rgba(255,255,255,.12);
  color:#aeb9d3;font-size:13px;font-weight:600;position:relative;}
.side nav a.nvsub:hover{background:rgba(255,255,255,.07);color:#fff;}
.side nav a.active{background:linear-gradient(90deg,#2f55c2,#27479e);color:#fff;box-shadow:0 4px 14px rgba(39,71,158,.4);}
.side nav a.nvsub.active{border-radius:8px;border-left-color:transparent;}
.side nav a.nvsub.active::after{content:"";position:absolute;left:-2px;top:7px;bottom:7px;width:3px;border-radius:3px;background:#36c5f0;}
.side nav a .navbadge{margin-left:auto;}
.side nav.finding a{display:none !important;}
.side nav.finding a.hit{display:flex !important;}
.side nav.finding .subgrp,.side nav.finding .grp.nohit{display:none;}
.side .sfoot{display:flex;flex-direction:column;gap:6px;padding:10px 12px 14px;border-top:1px solid rgba(255,255,255,.08);}
.side .sfoot a.nvtop{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:10px;color:#aeb9d3;}
.side .navacct{position:relative;}
.side .navme{display:flex;align-items:center;gap:10px;width:100%;padding:8px;border-radius:10px;cursor:pointer;list-style:none;
  background:rgba(255,255,255,.05);color:#cdd6ea;}
.side .navme::-webkit-details-marker{display:none;}
.side .navme:hover,.side .navacct[open] .navme{background:rgba(255,255,255,.09);}
.side .navme:focus-visible{outline:2px solid #36c5f0;outline-offset:-2px;}
.side .navmenu{position:fixed;z-index:85;width:226px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:6px;
  box-shadow:0 14px 34px rgba(10,15,30,.28);display:flex;flex-direction:column;gap:1px;}
.side .navmenu a{display:block;color:var(--ink);padding:8px 12px;border-radius:8px;font-size:13px;font-weight:600;text-decoration:none;}
.side .navmenu a:hover{background:var(--soft);color:var(--blue);}
.side .nvav{width:32px;height:32px;border-radius:50%;flex:none;display:grid;place-items:center;font-weight:800;font-size:12px;color:#fff;
  background:linear-gradient(135deg,#36c5f0,#27479e);}
.side .nvwho{min-width:0;display:flex;flex-direction:column;}
.side .nvwho b{color:#fff;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.side .nvwho span{font-size:11.5px;color:#7e8aa6;}
/* fly-out beside the rail */
.navfly{position:fixed;z-index:80;width:224px;max-height:calc(100vh - 16px);overflow:auto;background:#1f2b52;border:1px solid rgba(255,255,255,.1);
  border-radius:12px;padding:8px;box-shadow:0 14px 34px rgba(10,15,30,.38);display:flex;flex-direction:column;gap:1px;}
.navfly[hidden]{display:none;}
.navfly .nvfh{font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#7e8aa6;padding:4px 8px 6px;}
.navfly .subgrp{color:#5f6b86;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:8px 10px 2px;}
.navfly a{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:8px;color:#cdd6ea;text-decoration:none;font-size:13px;font-weight:700;}
.navfly a:hover{background:rgba(255,255,255,.08);color:#fff;}
.navfly a.active{background:#27479e;color:#fff;}
.navfly a .navbadge{margin-left:auto;}
@media(max-width:640px){ .side .navcollapse,.side .navexpand{display:none !important;} }
/* the rail: desktop and tablet only — phones keep the slide-out menu */
@media(min-width:641px){
  html.nav-rail .side{flex-basis:76px;width:76px;overflow-x:hidden;}
  html.nav-rail .side .sbrand{justify-content:center;padding:14px 0 8px;}
  html.nav-rail .side .brand img.brand-full,html.nav-rail .side .navcollapse,html.nav-rail .side .navfind,
  html.nav-rail .side .subgrp,html.nav-rail .side nav a.nvsub,html.nav-rail .side .grp::after,html.nav-rail .side .nvwho,
  html.nav-rail .side nav a .navbadge{display:none !important;}
  html.nav-rail .side .brand img.brand-mark{display:block;}
  html.nav-rail .side nav{padding:4px 8px;align-items:center;gap:4px;}
  html.nav-rail .side .grp,html.nav-rail .side a.nvtop{flex-direction:column;justify-content:center;gap:4px;width:60px;padding:9px 0 7px;
    margin:0;font-size:10px;letter-spacing:.02em;text-align:center;line-height:1.2;color:#aeb9d3;position:relative;}
  html.nav-rail .side .grp::before,html.nav-rail .side a.nvtop::before{width:22px;height:22px;}
  html.nav-rail .side .grp.here,html.nav-rail .side a.nvtop.active{color:#fff;background:rgba(54,197,240,.12);box-shadow:none;}
  html.nav-rail .side .grp.here::before,html.nav-rail .side a.nvtop.active::before{color:#36c5f0;}
  html.nav-rail .side .grp.here::after{content:"";display:block !important;position:absolute;left:-8px;top:12px;bottom:12px;width:3px;height:auto;
    margin:0;border-radius:3px;background:#36c5f0;-webkit-mask:none;mask:none;transform:none;}
  html.nav-rail .side .grp.flying,html.nav-rail .side .grp:hover{background:rgba(255,255,255,.08);color:#fff;}
  html.nav-rail .side .grp .nvdot{display:none;}
  html.nav-rail .side .grp.badged .nvdot,html.nav-rail .side a.nvtop .navbadge + .nvdot{display:block;position:absolute;right:13px;top:7px;margin:0;
    width:8px;height:8px;border-radius:50%;background:#e5484d;box-shadow:0 0 0 2px #1c2747;}
  html.nav-rail .side .sfoot{align-items:center;padding:8px 0 14px;}
  html.nav-rail .side .navme{width:auto;padding:4px;background:none;}
  html.nav-rail .side .nvmechev{display:none;}
  html.nav-rail .side .navexpand{display:flex;flex-direction:column;gap:3px;width:60px;height:auto;padding:7px 0;border:0;background:none;font-size:10px;font-weight:700;}
}
.side [data-ic="home"]{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 11.5 12 4l9 7.5'/%3E%3Cpath d='M5.5 9.8V20h13V9.8'/%3E%3Cpath d='M10 20v-5.5h4V20'/%3E%3C/svg%3E");}
.side [data-ic="people"]{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8.5' r='3.2'/%3E%3Cpath d='M3.5 19.5c.6-3.3 2.8-5 5.5-5s4.9 1.7 5.5 5'/%3E%3Ccircle cx='17' cy='9.5' r='2.4'/%3E%3Cpath d='M15.8 14.6c2.4.1 4.1 1.6 4.7 4.4'/%3E%3C/svg%3E");}
.side [data-ic="delivery"]{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4v16h16'/%3E%3Crect x='7' y='6.5' width='7' height='2.8' rx='1.4'/%3E%3Crect x='10' y='11' width='8' height='2.8' rx='1.4'/%3E%3Crect x='8' y='15.5' width='5' height='2.8' rx='1.4'/%3E%3C/svg%3E");}
.side [data-ic="sheq"]{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 17.3h19.5'/%3E%3Cpath d='M3.5 17.3v-1.2a7.2 7.2 0 0 1 14.4 0v1.2'/%3E%3Cpath d='M8.6 9.7V6.4h4.2v3.3'/%3E%3Cpath d='M17.9 17.3l3.6-1.3'/%3E%3C/svg%3E");}
.side [data-ic="commercial"]{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 19h16'/%3E%3Cpath d='M6.5 15.5V11'/%3E%3Cpath d='M11 15.5V7.5'/%3E%3Cpath d='M15.5 15.5v-5'/%3E%3Cpath d='M20 15.5V5'/%3E%3C/svg%3E");}
.side [data-ic="admin"]{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M12 3v2.2M12 18.8V21M4.2 7.5l1.9 1.1M17.9 15.4l1.9 1.1M4.2 16.5l1.9-1.1M17.9 8.6l1.9-1.1'/%3E%3Ccircle cx='12' cy='12' r='6.6'/%3E%3C/svg%3E");}
.side [data-ic="wiki"]{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4.5h9.5L19 9v10.5H5z'/%3E%3Cpath d='M14.5 4.5V9H19'/%3E%3Cpath d='M8 13h8M8 16.5h5.5'/%3E%3C/svg%3E");}
.side [data-ic="work"]{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='7.5' width='17' height='12' rx='2'/%3E%3Cpath d='M9 7.5V5.5h6v2'/%3E%3Cpath d='M3.5 12.5h17'/%3E%3C/svg%3E");}
.side [data-ic="box"]{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 7.5 12 3.5l8.5 4v9L12 20.5l-8.5-4z'/%3E%3Cpath d='M3.5 7.5 12 11.5l8.5-4'/%3E%3Cpath d='M12 11.5v9'/%3E%3C/svg%3E");}
.side [data-ic="cone"]{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 4h4l4.5 14h-13z'/%3E%3Cpath d='M8 11h8M6.8 15h10.4'/%3E%3Cpath d='M3.5 20h17'/%3E%3C/svg%3E");}
.side [data-ic="owner"]{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='8' cy='12' r='4'/%3E%3Cpath d='M12 12h8.5M17 12v3M20 12v2.5'/%3E%3C/svg%3E");}

.main{flex:1;min-width:0;display:flex;flex-direction:column;}
/* One wide box must never push the whole page sideways: the page would scroll and drag the sidebar
   away with it (Completions, Lee 18 Oct). Wide tables scroll inside their own .tablewrap instead.
   clip, not hidden, so sticky bars inside the page still stick. */
.main{overflow-x:clip;}
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:14px;
  background:var(--card);border-bottom:1px solid var(--line);padding:10px 20px;}
.topbar .crumb{font-size:15px;font-weight:bold;color:var(--ink);}
.topbar .crumb .sec{color:var(--mut);font-weight:normal;}
.topbar .crumb .sec::after{content:" / ";color:var(--line);}
.topbar .who{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:12px;color:var(--mut);}
.topbar .who .newlink{color:var(--blue);text-decoration:none;display:flex;align-items:center;gap:5px;font-weight:bold;}
.topbar .who .dot{width:7px;height:7px;background:var(--cyan);border-radius:50%;display:inline-block;}
.topbar .who .pill{background:var(--blue-d);color:#cfe;}
.topbar .topsearch{margin-left:22px;flex:1;max-width:560px;position:relative;}
.topbar .topsearch input{width:100%;padding:9px 14px;border:1px solid var(--line);border-radius:9px;
  background:var(--soft);font-size:14px;color:var(--ink);}
.topbar .topsearch input:focus{outline:none;border-color:var(--blue);background:var(--card);}
/* type-ahead dropdown */
.suggest{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--card);border:1px solid var(--line);
  border-radius:10px;box-shadow:0 10px 28px rgba(20,33,58,.18);padding:5px;z-index:80;max-height:60vh;overflow:auto;}
.suggest .sg{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:7px;text-decoration:none;color:var(--ink);}
.suggest .sg:hover,.suggest .sg.on{background:var(--soft);}
.suggest .sg .i{font-size:15px;width:18px;text-align:center;flex:none;}
.suggest .sg .m{min-width:0;flex:1;display:flex;flex-direction:column;}
.suggest .sg .t{font-weight:bold;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.suggest .sg .s{color:var(--mut);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.suggest .sg .g{color:var(--mut);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;flex:none;}

/* button working state */
.btn.loading,button.loading{opacity:.72;cursor:progress;pointer-events:none;}
button.loading::after,.btn.loading::after{content:"";display:inline-block;width:12px;height:12px;
  margin-left:8px;vertical-align:-1px;border:2px solid currentColor;border-right-color:transparent;
  border-radius:50%;animation:spin .6s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

/* global search results */
.searchpage input{padding:11px 14px;border:1px solid var(--line);border-radius:9px;font-size:15px;}
.searchrow{display:flex;align-items:center;gap:10px;padding:9px 8px;border-radius:8px;
  text-decoration:none;color:var(--ink);border-top:1px solid var(--line);}
.searchrow:first-of-type{border-top:none;}
.searchrow:hover{background:var(--soft);}
.searchrow .t{font-weight:bold;}
.searchrow .s{color:var(--mut);font-size:12.5px;}
.searchrow .pill{margin-left:auto;}

/* home launcher attention strip (subcontractor + customer) */
.launch{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  border-left:4px solid var(--blue);}
.launch .lstats{display:flex;gap:9px;flex-wrap:wrap;}
.launch .lstat{background:var(--soft);border:1px solid var(--line);border-radius:20px;
  padding:6px 13px;font-size:12.5px;color:var(--mut);white-space:nowrap;}
.launch .lstat b{color:var(--ink);font-size:14px;}
.launch .lstat.warn{background:var(--warnbg);border-color:#efd9a0;color:var(--warn);}
.launch .lstat.warn b{color:var(--warn);}
.launch .lstat.bad{background:var(--badbg);border-color:#f2c4bd;color:var(--bad);}
.launch .lstat.bad b{color:var(--bad);}
.launch .lstat.ok{background:var(--okbg);border-color:#bfe6cc;color:var(--ok);}
.launch .lstat.ok b{color:var(--ok);}
a.lstat{text-decoration:none;cursor:pointer;}
a.lstat:hover{filter:brightness(.97);}
.launch .lacts{display:flex;gap:8px;flex-wrap:wrap;}

/* field-worker sticky action (day sheet is the whole job on a phone) */
.fieldbar,.fieldbar-space{display:none;}

/* daily production worksheet form */
.drsec{border:1px solid var(--line);border-radius:11px;margin:10px 0;background:var(--card);}
/* core cable on the daily report (Lee, 12 Oct): OF chips + the run's route */
.drcore .ofpick.done{opacity:.55;cursor:default;background:transparent;box-shadow:inset 0 0 0 1px var(--line);}
.ofroute{margin:8px 0 2px;}
.drkpis .drwk{display:grid;grid-template-columns:repeat(4,auto);gap:4px 16px;justify-content:start;margin:6px 0 4px;}
.drkpis .drwk span{font-size:11px;display:flex;flex-direction:column;color:rgba(255,255,255,.78);}
.drkpis .drwk b{font-size:17px;line-height:1.15;color:#fff;}
@media(max-width:640px){.drkpis .drwk{grid-template-columns:repeat(2,auto);}}
.dre-grp.dre-core{color:#0b6e8f;}
.ofroute ol{list-style:none;margin:4px 0 0 6px;padding:0 0 0 14px;border-left:3px solid #0b6e8f;}
.ofroute li{position:relative;padding:4px 0 4px 10px;display:flex;flex-direction:column;}
.ofroute li::before{content:"";position:absolute;left:-21px;top:8px;width:11px;height:11px;border-radius:50%;background:var(--card,#fff);border:3px solid #0b6e8f;}
.ofroute li.start::before{background:#f07a1a;border-color:#f07a1a;}
.ofroute li.end::before{background:#0b6e8f;}
.ofroute li.other{opacity:.6;}
.ofroute li b{color:var(--head);font-size:13px;}
.ofroute li span{font-size:11.5px;color:var(--mut);}

.drsec>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;
  padding:13px 15px;user-select:none;}
.drsec>summary::-webkit-details-marker{display:none;}
.drsec>summary::before{content:"";display:inline-block;flex:none;width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .15s;color:var(--blue);margin:0 2px;}
.drsec[open]>summary::before{transform:rotate(45deg);}
.drsec>summary .t{font-weight:bold;color:var(--head);font-size:14.5px;}
.drsec>summary .dcount{margin-left:auto;min-width:22px;height:22px;border-radius:11px;
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:bold;
  color:transparent;}
.drsec>summary .dcount.on{background:var(--blue);color:#fff;padding:0 7px;}
.drsec .numgrid,.drsec .photoblock{padding:0 15px 13px;}
.numgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;}
.numf{display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--mut);}
.numf input{font-size:15px;padding:9px 11px;}
.dractions{margin-top:18px;display:flex;gap:10px;align-items:center;}
/* offline status chip on the daily report form */
.drstatus{display:none;font-size:12.5px;font-weight:700;border-radius:8px;padding:7px 11px;margin-bottom:10px;}
.drstatus.ok{display:block;background:#e7f6ec;color:#176e3b;}
.drstatus.send{display:block;background:#eef1fb;color:var(--blue);}
.drstatus.wait{display:block;background:#fdf3e2;color:#8a5b00;}
.photothumb.queued img{opacity:.45;filter:grayscale(.6);}
.photothumb.queued::after{content:'⏳';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:18px;}
/* before/during/after evidence tags */
.stbadge{position:absolute;left:2px;top:2px;font-size:9px;font-weight:800;color:#fff;border-radius:4px;padding:1px 4px;pointer-events:none;}
.stbadge.before{background:#27479e;} .stbadge.during{background:#8a5b00;} .stbadge.after{background:#176e3b;}
.stagebtns{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:6px;}
.stagebtn.have{border-color:#176e3b;color:#176e3b;}
/* project overview hero: navy gradient, lifecycle strip, glass tiles, photo strip */
.card.ovhero{background:linear-gradient(135deg,#1c2747 0%,#22376e 55%,#27479e 100%);
  color:#fff;border:none;}
.lifesteps{display:flex;gap:0;flex-wrap:wrap;margin-bottom:16px;}
.lifesteps .lstep{flex:1;min-width:74px;text-align:center;position:relative;padding-top:4px;}
.lifesteps .lstep::before{content:'';position:absolute;top:10px;left:-50%;width:100%;height:3px;background:rgba(255,255,255,.18);}
.lifesteps .lstep:first-child::before{display:none;}
.lifesteps .lstep.done::before,.lifesteps .lstep.now::before{background:#36c5f0;}
.lifesteps .dot{display:inline-block;width:13px;height:13px;border-radius:50%;background:rgba(255,255,255,.25);position:relative;z-index:1;}
.lifesteps .done .dot{background:#36c5f0;}
.lifesteps .now .dot{background:var(--card);box-shadow:0 0 0 4px rgba(54,197,240,.45);}
.lifesteps .t{display:block;font-size:10.5px;color:rgba(255,255,255,.55);margin-top:4px;}
.lifesteps .now .t{color:#fff;font-weight:800;}
.lifesteps .done .t{color:#9fd8ef;}
.ovgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:10px;}
.ovtile{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.16);
  border-radius:12px;padding:12px 14px;}
.ovtile.hi{background:rgba(54,197,240,.18);border-color:rgba(54,197,240,.45);}
.ovtile .lbl{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.7);}
.ovtile .num{font-size:24px;font-weight:800;color:#fff;margin-top:3px;line-height:1.1;}
.ovtile .sub{font-size:11.5px;color:rgba(255,255,255,.6);margin-top:3px;}
.ovtile.rag-green{background:rgba(46,164,79,.30);border-color:rgba(46,164,79,.55);}
.ovtile.rag-amber{background:rgba(230,162,60,.28);border-color:rgba(230,162,60,.55);}
.ovtile.rag-red{background:rgba(229,72,77,.30);border-color:rgba(229,72,77,.55);}
.ovbar{height:7px;border-radius:4px;background:rgba(255,255,255,.18);margin-top:8px;overflow:hidden;}
.ovbar div{height:100%;border-radius:4px;background:#36c5f0;}
.ovphotos{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;align-items:stretch;}
.ovph{position:relative;display:block;width:110px;height:80px;border-radius:10px;overflow:hidden;flex:0 0 auto;
  border:2px solid rgba(255,255,255,.25);}
.ovph img{width:100%;height:100%;object-fit:cover;display:block;}
.ovhero .btn.ghost{color:#fff;border-color:rgba(255,255,255,.45);background:transparent;}
@media(max-width:640px){.ovph{width:31%;height:64px;}.ovtile .num{font-size:20px;}}
/* handover evidence page */
.evrow{display:flex;gap:10px;border-top:1px solid var(--line);padding:8px 0;flex-wrap:wrap;}
.evsec{flex:0 0 150px;font-weight:700;font-size:13px;}
.evstages{flex:1;display:flex;gap:10px;flex-wrap:wrap;min-width:0;}
.evcell{flex:1;min-width:130px;}
.evcell.miss .evlbl{color:#b3261e;font-weight:700;}
.evlbl{font-size:11px;color:var(--mut);margin-bottom:3px;}
.evcap{display:block;font-size:9.5px;color:var(--mut);max-width:74px;}
@media print{
  .side,.topbar,.noprint,.dractions,.phdel{display:none !important;}
  .main{margin:0;} .wrap{max-width:none;padding:0;}
  .card{box-shadow:none;border:1px solid #ccc;page-break-inside:avoid;}
}

/* daily report work photos (IAC evidence) */
.photoblock{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:9px;}
.photostrip{display:flex;gap:6px;flex-wrap:wrap;}
.photothumb{position:relative;display:inline-block;}
.photothumb img{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block;}
.photothumb .phdel{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;
  border:none;background:var(--blue-d);color:#fff;font-size:12px;line-height:1;cursor:pointer;padding:0;}
.phsec{font-size:12.5px;padding:6px 8px;max-width:150px;}

/* daily production report */
.dayhead{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:6px;}
.daychips{display:flex;gap:7px;flex-wrap:wrap;}
.subrow{border-top:1px solid var(--line);padding:11px 0 9px;}
.subrow:first-of-type{border-top:none;}
.subtop{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.rmetrics{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.breakdown{margin-top:8px;}
.breakdown>summary{cursor:pointer;color:var(--blue);font-size:12.5px;font-weight:bold;list-style:none;}
.breakdown>summary::-webkit-details-marker{display:none;}
.breakdown>summary::before{content:"";display:inline-block;flex:none;width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .15s;margin:0 8px 1px 2px;}
.breakdown[open]>summary::before{transform:rotate(45deg);}
.breakdown .bgrp{color:var(--mut);font-size:11px;font-weight:bold;text-transform:uppercase;
  letter-spacing:.04em;margin:8px 0 2px;}
.breakdown .bline{display:flex;justify-content:space-between;gap:12px;padding:3px 0;
  border-bottom:1px dashed var(--line);font-size:13px;}
.breakdown .bline b{font-variant-numeric:tabular-nums;}

/* friendly empty states */
.card.empty{text-align:center;padding:34px 20px;}
.card.empty .ico{font-size:34px;line-height:1;}
.card.empty h3{margin:12px 0 4px;color:var(--head);font-size:16px;}
.card.empty p{margin:0 auto;color:var(--mut);max-width:54ch;line-height:1.5;}
.card.empty .act{margin-top:14px;}

/* welcome home page */
.homehero h1{margin:0 0 8px;font-size:22px;color:var(--head);}
.homehero p{margin:0 0 10px;color:var(--mut);max-width:70ch;line-height:1.55;}
.homehero .internal{margin:12px 0 0;padding:9px 13px;background:var(--soft);border:1px solid var(--line);
  border-radius:8px;color:var(--head);font-size:12.5px;display:inline-block;}
.homegrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:14px 0;}
.hometile{display:block;background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:16px 16px 15px;text-decoration:none;color:var(--ink);transition:border-color .12s,box-shadow .12s;}
.hometile:hover{border-color:var(--blue);box-shadow:0 6px 18px rgba(20,33,58,.08);}
.hometile .ico{font-size:22px;}
.hometile .tt{font-weight:bold;font-size:15px;margin:8px 0 3px;color:var(--head);}
.hometile .td{color:var(--mut);font-size:12.5px;line-height:1.45;}
.homenew{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  border-left:4px solid var(--cyan);}
.homenew b{margin-left:8px;}
.homehelp{max-width:80ch;line-height:1.55;margin:14px 2px 0;}
.recents{display:flex;flex-wrap:wrap;gap:8px;}
.recents .recent{display:flex;flex-direction:column;gap:1px;padding:8px 13px;border:1px solid var(--line);
  border-radius:9px;text-decoration:none;color:var(--ink);background:var(--soft);}
.recents .recent:hover{border-color:var(--blue);background:var(--card);}
.recents .recent .t{font-weight:bold;font-size:13.5px;}
.recents .recent .s{color:var(--mut);font-size:11.5px;}

.hamburger{display:none;cursor:pointer;color:var(--ink);font-weight:bold;font-size:18px;line-height:1;
  padding:4px 11px;border-radius:8px;border:1px solid var(--line);user-select:none;}
.scrim{display:none;}
.envbanner{background:#f6c9c9;color:#7a1f1f;text-align:center;padding:6px 14px;font-size:12px;
  font-weight:bold;letter-spacing:.04em;text-transform:uppercase;}
.demopick{display:grid;gap:8px;}
.demopick button{width:100%;display:grid;gap:2px;text-align:left;padding:10px 12px;}
.demopick button span{font-size:13px;color:var(--mut);}
.demopick button small{font-size:12px;color:var(--mut);font-weight:normal;}
.envbanner.demobanner{background:#fdf1cf;color:#5c4200;text-transform:none;letter-spacing:0;font-size:13px;}
.impbanner{background:#b5651d;color:#fff;text-align:center;padding:8px 14px;font-size:13px;font-weight:bold;}
.impbanner a{color:#fff;text-decoration:underline;}
.appfoot{text-align:center;padding:18px 14px 26px;color:#9aa6c2;font-size:11.5px;}
.appfoot a{color:#7e8aa6;}
/* inline "Manage" expander (admin user rows) */
details.mgr>summary{list-style:none;display:inline-block;}
details.mgr>summary::-webkit-details-marker{display:none;}
.urow{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:11px 15px;margin-bottom:9px;}
.urow .head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.urow .who2{min-width:190px;}
.urow .who2 b{color:var(--ink);}

/* pills / badges */
.pill{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:bold;}
.pill.ok{background:var(--okbg);color:var(--ok);}
.pill.bad{background:var(--badbg);color:var(--bad);}
.pill.adv{background:rgba(34,80,145,.14);color:#225091;}   /* Fail - Advisory: tracked, not a fail */
.pill.warn{background:var(--warnbg);color:var(--warn);}
.pill.exec{background:#e7f6fd;color:#0b6e8f;}
.pill.pmo{background:#eef1fb;color:var(--blue);}
.pill.admin{background:#efe7fd;color:#6b3fb0;}
.pill.contractor{background:#fcefe2;color:#b5651d;}
.pill.submitted{background:#e7f1ff;color:#2456b8;}
.pill.signed_off{background:#e7f6fd;color:#0b6e8f;}
.pill.info_requested{background:var(--warnbg);color:var(--warn);}
.pill.approved{background:var(--okbg);color:var(--ok);}
.pill.paid{background:#e3f0e6;color:#0f5c2e;}
.pill.draft{background:#eef1f6;color:var(--mut);}
.pill.rejected{background:var(--badbg);color:var(--bad);}

/* cards */
.card{background:var(--card);border:none;border-radius:14px;padding:18px 20px;margin-bottom:18px;box-shadow:0 1px 2px rgba(28,39,71,.06),0 6px 20px rgba(28,39,71,.06);}
.card h2{margin:0 0 12px;font-size:15px;color:var(--head);border-bottom:2px solid var(--soft);padding-bottom:8px;}
.subhdr{font-size:12px;color:var(--mut);margin:-4px 0 12px;}
.grid{display:grid;grid-template-columns:1.55fr 1fr;gap:20px;align-items:start;}
@media(max-width:900px){.grid{grid-template-columns:1fr;}}
/* grid items default to min-width:auto, so a wide table inside a card would set the
   column's minimum and push the page wider than the screen — let cards shrink and
   their tables side-scroll instead. */
.grid>*,.grid2>*{min-width:0;}

/* buttons + inputs */
button,.btn{background:var(--blue);color:#fff;border:none;border-radius:9px;padding:9px 16px;cursor:pointer;font-size:13px;font-weight:bold;text-decoration:none;display:inline-block;}
button:hover,.btn:hover{background:#1d3a86;}
.btn.ghost{background:var(--card);color:var(--blue);border:1.5px solid var(--blue);}
.btn.sm{padding:5px 11px;font-size:12px;}
.btn.danger{background:var(--bad);}
.btn.grey{background:#737b8c;}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{
  border:1px solid #cbd3e2;border-radius:8px;padding:9px 11px;font-size:14px;font-family:inherit;width:100%;background:var(--card);}
label{display:block;font-weight:bold;margin-bottom:6px;font-size:13px;}
.field{margin-bottom:14px;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}

/* levers */
.levers{display:flex;gap:24px;flex-wrap:wrap;}
.lever{flex:1;min-width:200px;}
.lever .val{color:var(--blue);font-weight:bold;}
.lever .note{font-size:11.5px;color:var(--mut);margin-top:4px;}
input[type=range]{width:100%;accent-color:var(--blue);}

/* tables */
table{width:100%;border-collapse:collapse;font-size:12px;}
th,td{padding:6px 7px;border-bottom:1px solid var(--line);text-align:right;}
th{background:var(--soft2);color:var(--mut);font-weight:bold;font-size:11px;text-transform:uppercase;letter-spacing:.06em;text-align:right;position:sticky;top:0;}
tbody tr:hover > td{background:var(--card2);}
th:first-child,td:first-child{text-align:left;}
td.sec{font-weight:bold;background:var(--soft);color:var(--head);}
input.cell{width:64px;border:1px solid var(--inpb);background:var(--inp);border-radius:5px;padding:3px 5px;text-align:right;font-size:12px;font-family:inherit;}
.tablewrap{max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:10px;}

/* result rows + big numbers */
.res{display:flex;justify-content:space-between;padding:7px 2px;border-bottom:1px dashed var(--line);}
.res .k{color:var(--mut);} .res .v{font-weight:bold;font-variant-numeric:tabular-nums;}
.big{background:var(--blue-d);color:#fff;border-radius:10px;padding:13px 16px;margin:10px 0;text-align:center;}
.big .lbl{font-size:11px;opacity:.85;text-transform:uppercase;letter-spacing:.5px;}
.big .num{font-size:27px;font-weight:bold;margin-top:3px;font-variant-numeric:tabular-nums;}
/* tile accents are FIXED dark surfaces (white text) — theme tokens flip light in
   dark mode and made white text unreadable (Paul, 7 Sep) */
.big.pos{background:#1e8449;} .big.neg{background:#b03a2e;} .big.brand{background:var(--blue);}
.big.warn{background:#9a6d00;}
.big .note{color:rgba(255,255,255,.78);}
a.big{display:block;text-decoration:none;}
.big.cyan{background:linear-gradient(120deg,#0b6e8f,#36c5f0);}
.duo{display:flex;gap:10px;} .duo .big{flex:1;}
.note{font-size:11.5px;color:var(--mut);line-height:1.5;}
.exec-only{box-shadow:0 0 0 2px #cfeefb inset;}
.exec-tag{font-size:10px;font-weight:bold;color:#0b6e8f;background:#e7f6fd;padding:2px 7px;border-radius:12px;margin-left:6px;}

/* flash */
.flash{padding:11px 15px;border-radius:9px;margin-bottom:14px;font-size:13px;font-weight:bold;}
.flash.ok{background:var(--okbg);color:var(--ok);}
.flash.bad{background:var(--badbg);color:var(--bad);}

/* cover */
.cover-hero{background:linear-gradient(150deg,var(--blue-d),var(--blue));color:#fff;border-radius:16px;padding:46px 40px;margin-bottom:22px;}
.cover-hero img{height:40px;margin-bottom:22px;}
.cover-hero h1{margin:0 0 10px;font-size:30px;}
.cover-hero p{margin:0;max-width:640px;opacity:.9;line-height:1.6;}
.cover-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;}
.cover-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;text-decoration:none;color:var(--ink);transition:.15s;display:block;}
.cover-card:hover{border-color:var(--blue);box-shadow:0 4px 14px rgba(39,71,158,.12);transform:translateY(-2px);}
.cover-card h3{margin:0 0 6px;color:var(--head);font-size:15px;}
.cover-card p{margin:0;font-size:12.5px;color:var(--mut);}

/* auth */
.auth{max-width:400px;margin:60px auto;}
.auth .card{padding:26px 28px;}
.auth h1{font-size:20px;color:var(--head);margin:0 0 4px;}
.auth .sub{color:var(--mut);font-size:13px;margin-bottom:20px;}
.center{text-align:center;}
.tabbar{display:flex;gap:8px;margin-bottom:16px;}
.statline{font-size:12px;color:var(--mut);text-align:center;margin-top:20px;}
.bar-track{background:var(--line);border-radius:20px;height:14px;overflow:hidden;}
.bar-fill{background:var(--blue);height:100%;}

/* ── mobile ─────────────────────────────────────────────────────────────── */
@media(max-width:640px){
  .wrap{padding:14px 12px;}
  .card{padding:15px 15px;}
  .grid2{grid-template-columns:1fr;}
  /* 16px inputs stop iOS zooming in when a field is tapped */
  input[type=text],input[type=email],input[type=password],input[type=number],
  input[type=date],select,textarea{font-size:16px;padding:11px 12px;}
  input.cell{font-size:16px;width:100%;padding:9px 10px;text-align:right;}
  button,.btn{min-height:44px;}
  .btn.sm{min-height:0;}
  .tablewrap{max-height:none;}

  /* stacked data-entry table: each row becomes a card with labels */
  table.stack thead{display:none;}
  table.stack,table.stack tbody,table.stack tfoot,table.stack tr,table.stack td{display:block;width:100%;}
  table.stack tr{border:1px solid var(--line);border-radius:9px;margin-bottom:9px;padding:8px 11px;background:var(--card);}
  table.stack td{border:none;padding:4px 0;text-align:right;display:flex;justify-content:space-between;align-items:center;gap:10px;}
  table.stack td::before{content:attr(data-label);color:var(--mut);font-size:12px;font-weight:normal;text-align:left;}
  table.stack td:first-child{text-align:left;font-weight:bold;font-size:14px;}
  table.stack td:first-child::before{content:"";}
  table.stack td.sec{display:block;background:var(--soft);color:var(--head);font-weight:bold;
    border-radius:7px;padding:7px 10px;margin:2px 0;text-align:left;}
  table.stack td.sec::before{content:"";}
  table.stack tfoot tr{background:#dce6f7;}
  table.stack input.cell{width:120px;}

  .duo{flex-wrap:wrap;} .duo .big{min-width:calc(50% - 5px);}

  /* Wide data tables (rate cards, scaling, queue, tracker, invoices…) scroll
     sideways in place instead of forcing the whole page to scroll and breaking
     the layout. Stacked entry tables keep their own card styling above. */
  table:not(.stack){display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;
    white-space:nowrap;max-width:100%;}
  table:not(.stack) th{position:static;}   /* sticky header can't stick once block-level */
  .tablewrap{overflow:auto;-webkit-overflow-scrolling:touch;}

  html,body{overflow-x:hidden;}
  /* The sidebar slides in as an off-canvas drawer; ☰ in the top bar toggles it,
     tapping the dimmed scrim closes it. */
  .hamburger{display:inline-block;}
  .side{position:fixed;left:0;top:0;height:100vh;transform:translateX(-100%);
    transition:transform .22s ease;box-shadow:0 0 40px rgba(10,15,30,.4);}
  #navtoggle:checked ~ .side{transform:none;}
  #navtoggle:checked ~ .scrim{display:block;position:fixed;inset:0;z-index:65;
    background:rgba(10,15,30,.45);}
  .topbar .topsearch{display:none;}
  /* worksheet: keep Save in reach and make review actions thumb-sized */
  .dractions{position:sticky;bottom:0;background:var(--card);padding:10px 0;margin:14px -4px 0;
    border-top:1px solid var(--line);z-index:30;}
  .dractions button{flex:1;min-height:48px;}
  .rmetrics button.sm,.rmetrics .btn.sm{min-height:42px;padding:8px 16px;}
  .photoblock .phsec{flex:1;min-width:120px;}

  /* pin the field worker's day-sheet action to the bottom of the screen */
  .fieldbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;
    gap:10px;padding:10px 12px;background:var(--card);border-top:1px solid var(--line);
    box-shadow:0 -4px 16px rgba(20,33,58,.14);}
  .fieldbar .btn{flex:1;min-height:50px;display:flex;align-items:center;
    justify-content:center;font-size:16px;}
  .fieldbar-space{display:block;height:74px;}

  /* headings and the big KPI numbers ease down a touch so they don't wrap oddly */
  .big .num{font-size:23px;}
  h2{font-size:17px;}
}

/* ── topbar task badge + slide-over drawer (tasks woven into every page) ── */
.taskbadge{display:inline-block;padding:3px 10px;border-radius:999px;font-weight:800;
  font-size:12px;background:var(--soft2,#eef1f7);color:var(--head,#1c2747);
  border:1px solid var(--line);text-decoration:none;}
.taskbadge.bad{background:#fdeaea;color:#b03030;border-color:#e7b6b6;}
.taskdrawer{position:fixed;top:0;right:0;bottom:0;width:390px;max-width:92vw;z-index:120;
  background:var(--card,#fff);border-left:1px solid var(--line);
  box-shadow:-8px 0 28px rgba(20,33,58,.18);padding:14px 16px;overflow-y:auto;}
.tdscrim{position:fixed;inset:0;z-index:110;background:rgba(20,33,58,.35);}
.tdhead{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap;}
.tdquick{display:flex;gap:6px;margin-bottom:8px;}
.tdquick input[type=text]{flex:1;font-size:13px;}
.tdsec{font-size:10.5px;font-weight:800;letter-spacing:.06em;color:var(--mut);
  margin:10px 0 2px;}
.tdsec.bad{color:#b03030;}
.tdrow{display:flex;align-items:center;gap:8px;padding:5px 0;border-top:1px solid var(--line);}
.tdrow .tdt{flex:1;min-width:0;font-size:13px;line-height:1.35;}
.tdrow .tdt a{font-weight:700;}
.tdctx{display:inline-block;margin-left:6px;font-size:11px;}
@media(max-width:640px){.taskdrawer{width:100%;max-width:100%;}}

/* ── board tabs + slim board header (permit schedule "option A", 10 Sep).
   REUSABLE: this is the agreed board look — roll the same .ptabs/.statpill/
   .slimbar treatment out to the other boards over time. ── */
.ptabs{display:flex;gap:2px;align-items:flex-end;flex-wrap:wrap;border-bottom:2px solid var(--line);margin:0 0 10px;}
.ptab{padding:7px 14px 6px;border-radius:8px 8px 0 0;font-size:13px;color:var(--mut);text-decoration:none;
  display:inline-flex;align-items:center;gap:7px;border:1px solid transparent;border-bottom:none;position:relative;top:2px;white-space:nowrap;}
.ptab:hover{color:var(--head);text-decoration:none;background:var(--soft2);}
.ptab.on{background:var(--card);border-color:var(--line);color:var(--head);font-weight:700;}
.ptab .n{font-size:10.5px;background:var(--soft2);border-radius:10px;padding:0 7px;color:var(--mut);}
.ptab.on .n{background:var(--blue);color:#fff;}
.ptab .dot{width:8px;height:8px;border-radius:50%;background:var(--bad);}
@media(max-width:640px){.ptabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:0;}.ptab{flex:0 0 auto;}}
.statpill{display:inline-flex;align-items:center;gap:4px;border-radius:20px;padding:2px 10px;
  font-size:11.5px;font-weight:700;text-decoration:none;background:var(--soft2);color:var(--mut);white-space:nowrap;}
a.statpill:hover{text-decoration:none;filter:brightness(.95);}
.statpill.ok{background:var(--okbg);color:var(--ok);}
.statpill.warn{background:var(--warnbg);color:var(--warn);}
.statpill.bad{background:var(--badbg);color:var(--bad);}
.statpill.on{outline:2px solid var(--blue);}
.slimbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 8px;}
.slimbar .back{font-weight:700;font-size:13px;text-decoration:none;white-space:nowrap;}
@media(max-width:640px){
  .slimbar{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;}
  .slimbar .btn,.slimbar .statpill,.slimbar select{flex:0 0 auto;}
}
/* "a new version is ready" — fixed to the top so it never covers the form's sticky Save bar */
.updbanner{position:fixed;top:0;left:0;right:0;z-index:400;padding:env(safe-area-inset-top,0) 8px 0;}
.updbanner[hidden]{display:none;}
.updbanner button{display:block;width:100%;max-width:520px;margin:6px auto;padding:10px 14px;border:0;
  border-radius:10px;background:var(--blue);color:#fff;font-weight:700;font-size:14px;cursor:pointer;
  box-shadow:0 4px 14px rgba(28,39,71,.35);}

/* daily report: footway cards, street chips, per-street quantity blocks (v2.295) */
.fwlist .fwchip{align-items:flex-start;min-height:44px}
.fwchip .fwst{display:block}
.fwchip .fwstat{display:block;font-size:.72rem;opacity:.85}
.fwchip .fwstat.done{color:#0a7a3d;font-weight:600}
/* streets worked today (Lee, 19 Oct): the chips are buttons and took the white button text on a
   pale fill — a picked street is now a solid navy chip with a white name, an off one is plain */
.drform .streetchip{min-height:40px;border:1.5px solid var(--blue-d,#1c2747);background:var(--blue-d,#1c2747);
  color:#fff;font-weight:700;font-size:14px;box-shadow:none;text-decoration:none;opacity:1}
.drform .streetchip .note,.drform .streetchip .sctag{color:inherit;opacity:.8;font-weight:600;font-size:11px;
  text-transform:uppercase;letter-spacing:.04em;margin-left:2px}
.drform .streetchip:hover{filter:brightness(1.12)}
.drform .streetchip.off{background:var(--card,#fff);color:var(--ink,#1c2747);border-color:var(--line,#c9d0de);font-weight:600}
.drform .streetchip.off .sctag{color:var(--mut,#5b6478)}
.drform .streetchip .chipx{border:0;background:none;color:inherit;padding:0 0 0 8px;cursor:pointer;font-size:11px;
  font-weight:700;text-transform:uppercase;letter-spacing:.04em;text-decoration:underline}

/* the report confirmation (Lee, 19 Oct) */
.drsent{display:flex;gap:14px;align-items:flex-start;border-left:5px solid #1f9d55;background:#eef9f1}
.drsent h3{margin:0 0 4px;font-size:17px;color:#14532d}
.drsent p{margin:0}
.drsent-mark{flex:0 0 34px;height:34px;border-radius:50%;background:#1f9d55;position:relative}
.drsent-mark::after{content:"";position:absolute;left:12px;top:7px;width:8px;height:15px;border:solid #fff;
  border-width:0 3px 3px 0;transform:rotate(45deg)}
.drstate{border-left:5px solid var(--blue,#27479e)}
.drstate-rejected{border-left-color:#d08a00;background:var(--warnbg,#fbf3df)}
.drstate-approved,.drstate-paid{border-left-color:#1f9d55}
.drstate-note{margin-top:4px;white-space:pre-wrap}
.drphotos h3{margin:0 0 4px;font-size:15px}
.drphrow{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-top:8px}
.drphsec{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--mut,#5b6478)}
.drphrow .stagebtn{min-width:96px;justify-content:center}
.dre-change{border-left:4px solid #d08a00}
@media (max-width:640px){
  .drphrow .stagebtn{flex:1 1 30%}
  .drphsec{flex:1 1 100%}
}
.drblock{border:1px solid var(--line,#d8dde8);border-left:4px solid #27479e;border-radius:8px;padding:8px 10px;margin:10px 0;background:#fff}
.drblockhead{margin-bottom:6px}

/* ── project hub header + tab bars (Lee, 5 Oct) ── */
.phead{margin:0 0 14px;}
.phead-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;}
.phead-top h2{margin:0;color:var(--head);font-size:20px;}
.phead-back{font-size:12.5px;color:var(--mut);text-decoration:none;font-weight:700;}
.phead-back:hover{color:var(--blue);}
.ptabs{display:flex;gap:2px;flex-wrap:wrap;align-items:flex-end;border-bottom:2px solid var(--line);}
.ptabs > a{padding:8px 14px;border-radius:9px 9px 0 0;font-weight:700;font-size:13.5px;color:var(--mut);
  text-decoration:none;margin-bottom:-2px;border-bottom:2px solid transparent;}
.ptabs > a:hover{color:var(--head);background:var(--soft);}
.ptabs > a.on{color:var(--blue);border-bottom-color:var(--blue);background:var(--card,#fff);}
.ptabs-more{margin-left:auto;display:flex;gap:10px;align-self:center;padding-bottom:4px;}
.ptabs-more a{font-size:12px;color:var(--mut);text-decoration:none;font-weight:600;}
.ptabs-more a:hover{color:var(--blue);}
@media(max-width:640px){
  .ptabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
  .ptabs > a{white-space:nowrap;padding:8px 11px;font-size:13px;}
  .ptabs-more{margin-left:8px;flex:0 0 auto;padding-left:8px;border-left:1px solid var(--line);}
  .ptabs-more a{white-space:nowrap;}
}
/* project cards on Projects → Overview */
.pcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;}
.pcard{margin:0;display:flex;flex-direction:column;gap:8px;border-left:4px solid var(--line);}
.pcard.live{border-left-color:var(--ok);}
.pcard h3{margin:0;font-size:16px;}
.pcard h3 a{color:var(--head);text-decoration:none;}
.pcard .meta{font-size:12px;color:var(--mut);}
.pbar{height:7px;border-radius:4px;background:var(--soft2);overflow:hidden;}
.pbar > span{display:block;height:100%;}
.pstat{display:flex;justify-content:space-between;font-size:12px;gap:8px;}
.pcard .plinks{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto;}
.pcard .flag{font-size:11px;}
.pfilter{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 12px;}
.pfilter input[type=search]{min-width:min(340px,100%);padding:7px 12px;font-size:14px;}
.pgrid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin:0 0 14px;}
/* project Schedule / Production tabs: KPI tiles */
.pkpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 14px;}
.pkpi{background:var(--card,#fff);border:1px solid var(--line);border-radius:10px;padding:10px 12px;}
.pkpi .lbl{font-size:11.5px;color:var(--mut);font-weight:700;text-transform:uppercase;letter-spacing:.03em;}
.pkpi .num{font-size:22px;font-weight:800;color:var(--head);margin:2px 0;}
.pkpi .sub{font-size:11.5px;color:var(--mut);}
.pform{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;align-items:end;}
.pform .field{margin:0;}
.pactions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;align-items:center;margin:-4px 0 14px;}
.wline{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;padding:7px 4px;
  border-top:1px dashed var(--line);text-decoration:none;color:inherit;}
.wline:hover{background:var(--soft);}
.coviews{display:flex;gap:4px;flex-wrap:wrap;margin:4px 0 12px;border-bottom:1px solid var(--line);}
.coviews a{padding:7px 12px;border-radius:8px 8px 0 0;text-decoration:none;color:var(--muted,#5a6577);font-size:13.5px;font-weight:600;}
.coviews a.on{background:var(--card,#fff);color:var(--head);border:1px solid var(--line);border-bottom-color:var(--card,#fff);margin-bottom:-1px;}
.fwchips{display:flex;gap:6px;flex-wrap:wrap;}
.fwchips .statpill{cursor:pointer;border:0;font:inherit;font-size:12px;}
table.sortable th[data-dir="asc"]::after{content:"";display:inline-block;margin-left:5px;border:4px solid transparent;border-top:0;border-bottom:5px solid currentColor;vertical-align:2px;}
table.sortable th[data-dir="desc"]::after{content:"";display:inline-block;margin-left:5px;border:4px solid transparent;border-bottom:0;border-top:5px solid currentColor;vertical-align:2px;}
/* production dashboard bars (Lee, 5 Oct) — one style for day / week / month */
.bchart{display:flex;align-items:flex-end;gap:6px;padding:0 4px;border-bottom:1px solid var(--line);
  background:repeating-linear-gradient(to top,transparent 0,transparent 27px,rgba(28,39,71,.06) 27px,rgba(28,39,71,.06) 28px);}
.bchart .bcol{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;border-radius:6px 6px 0 0;}
.bchart .bcol.on{background:rgba(54,197,240,.12);}
.bchart .bval{font-size:10px;color:var(--mut);font-variant-numeric:tabular-nums;line-height:1.2;margin-bottom:2px;white-space:nowrap;}
.bchart .bbar{display:block;width:100%;max-width:26px;border-radius:4px 4px 0 0;}
.bchart.wide{gap:14px;}
.bchart.wide .bbar{max-width:46px;}
.bchart.wide .bval{font-size:11px;font-weight:700;color:var(--head);}
.bchart.mini{gap:3px;background:none;}
.bchart.mini .bbar{max-width:16px;}
.bchart .bstack{display:flex;flex-direction:column-reverse;gap:2px;width:100%;max-width:30px;}
.bchart .bstack span{display:block;width:100%;min-height:2px;}
.bchart .bstack span:last-child{border-radius:4px 4px 0 0;}
.baxis{display:flex;gap:6px;padding:4px 4px 0;}
.baxis span{flex:1;min-width:0;text-align:center;font-size:9.5px;color:var(--mut);white-space:nowrap;overflow:hidden;}
.baxis.wide{gap:14px;}
.baxis span.on{color:var(--head);font-weight:800;}
.card.empty .ico:empty{display:none;}

/* ── Hub look (Lee approved, 5 Oct): the Overview hero's language everywhere —
   navy gradient bands, glass tiles, cyan accent, uppercase micro-labels ── */
:root{--band:linear-gradient(135deg,#1c2747 0%,#22376e 55%,#27479e 100%);}
/* project header = the hero band: name, pills and the tab bar on navy */
.phead{background:var(--band);border-radius:16px;padding:18px 20px 0;margin:0 0 16px;box-shadow:0 10px 30px rgba(28,39,71,.18);}
.phead-top h2{color:#fff;font-size:22px;letter-spacing:-.01em;}
.phead-back{color:rgba(255,255,255,.65);}
.phead-back:hover{color:#fff;}
.phead .pill{background:rgba(255,255,255,.12);color:#dff6ff;border:1px solid rgba(255,255,255,.18);}
.phead .ptabs{border-bottom:none;gap:4px;margin-top:4px;}
.phead .ptabs > a{color:rgba(255,255,255,.72);border-radius:10px 10px 0 0;padding:10px 16px;margin-bottom:0;border-bottom:none;}
.phead .ptabs > a:hover{color:#fff;background:rgba(255,255,255,.08);}
.phead .ptabs > a.on{color:var(--head);background:var(--soft);}
.phead .ptabs-more a{color:rgba(255,255,255,.65);}
.phead .ptabs-more a:hover{color:#fff;}
.phead .btn{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);}
.phead .btn:hover{background:rgba(255,255,255,.24);}
@media(max-width:640px){.phead{padding:14px 12px 0;border-radius:14px;}.phead .ptabs-more{border-left-color:rgba(255,255,255,.2);}}
/* KPI rows = glass tiles on a band */
.pkpis{background:var(--band);border-radius:16px;padding:16px;gap:12px;box-shadow:0 10px 30px rgba(28,39,71,.14);}
.pkpi{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:12px;padding:12px 14px;}
.pkpi .lbl{color:rgba(255,255,255,.7);font-size:10.5px;letter-spacing:.07em;}
.pkpi .num{color:#fff;font-size:24px;}
.pkpi .sub,.pkpi .sub a{color:rgba(255,255,255,.62);}
.pkpi .pbar{background:rgba(255,255,255,.16);}
a.pkpi:hover{background:rgba(54,197,240,.16);border-color:rgba(54,197,240,.45);}
/* headline number rows: the same glass treatment */
.duo{background:var(--band);border-radius:16px;padding:14px;gap:12px;}
.duo .big{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:12px;box-shadow:none;}
.duo .big.pos{background:rgba(46,164,79,.28);border-color:rgba(46,164,79,.55);}
.duo .big.neg{background:rgba(229,72,77,.26);border-color:rgba(229,72,77,.5);}
.duo .big .lbl{letter-spacing:.07em;font-size:10.5px;opacity:.85;}
.card.ovhero{border-radius:16px;}
.card h2,.card h3{letter-spacing:-.005em;}
.tablewrap{border-radius:12px;}
/* chips = a segmented control */
.statpill{background:var(--card);border:1px solid var(--line);color:var(--ink);}
.statpill.on{background:var(--blue-d);color:#fff;border-color:var(--blue-d);outline:none;}
.statpill.ok,.statpill.warn,.statpill.bad{border-color:transparent;}
.pfilter input[type=search]{border-radius:10px;}
/* project list cards: a cyan edge for live works orders */
.pcard{border-left:none;position:relative;overflow:hidden;}
.pcard.live{border-left:none;}
.pcard.live::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--cyan);}

/* ── Fleet in the Projects look (Paul, 6 Oct) ── */
.ptabs .tabn{display:inline-block;min-width:18px;padding:0 6px;margin-left:4px;border-radius:9px;font-size:11px;line-height:17px;
  text-align:center;background:rgba(255,255,255,.16);color:#fff;}
.phead .ptabs > a.on .tabn{background:var(--blue);color:#fff;}
.pkpi .num + .sub{min-height:1em;}
select.vstat{font-size:12px;padding:3px 6px;border-radius:14px;font-weight:700;width:auto;}
select.qop{font-size:11px;padding:2px 6px;margin-top:3px;width:auto;max-width:220px;border-radius:6px;color:var(--mut);}
select.vstat.active{background:var(--okbg);color:var(--ok);}
select.vstat.vor{background:var(--badbg);color:var(--bad);}
select.vstat.for_sale,select.vstat.at_office,select.vstat.repair{background:var(--warnbg);color:var(--warn);}
select.vstat.loan{background:#e7f6fd;color:#0b6e8f;}
select.vstat.sold,select.vstat.returned,select.vstat.duplicate{background:var(--soft2);color:var(--mut);}
#vtable tbody tr[data-status="sold"],#vtable tbody tr[data-status="returned"],#vtable tbody tr[data-status="duplicate"]{opacity:.6;}
.qsaved{font-size:11px;white-space:nowrap;}
.pcard.fatt::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--line);}
.pcard.fatt.bad::before{background:var(--bad);}
.pcard.fatt.warn::before{background:var(--warn);}
.pcard.fatt.info::before{background:var(--blue);}
.fitems{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;}
.fitems li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 0 5px 14px;border-top:1px dashed var(--line);
  font-size:12.5px;position:relative;}
.fitems li::before{content:"";position:absolute;left:0;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;background:var(--blue);}
.fitems li.bad::before{background:var(--bad);}
.fitems li.warn::before{background:var(--warn);}
.fitems li a{font-size:12px;font-weight:700;white-space:nowrap;}
.pkpis.fkpis{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));}
#vtable td.dt{white-space:nowrap;}
.fwchips button.statpill:hover{background:var(--soft);color:var(--ink);}
.fwchips button.statpill.on:hover{background:var(--blue-d);color:#fff;}
/* daily report delays (Lee, 7 Oct) */
.dlyask{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:4px 0 8px;font-weight:600;}
.dlyopt{display:inline-flex;gap:5px;align-items:center;font-weight:500;}
.dlyopt input{width:auto;}
.dlyrow{display:grid;grid-template-columns:minmax(170px,1.2fr) 110px minmax(200px,2fr) auto;gap:8px;align-items:end;
  padding:8px 0;border-top:1px dashed var(--line);}
@media(max-width:640px){.dlyrow{grid-template-columns:1fr 1fr;}.dlyrow .dlydetail{grid-column:1/-1;}}
.drtabs{border-bottom:2px solid var(--line);}
.spark{display:inline-flex;align-items:flex-end;gap:2px;height:24px;vertical-align:middle;}
.spark span{display:block;width:7px;background:var(--blue);border-radius:2px 2px 0 0;}
.dlyrow .dlyrm,#dlyadd{background:none;color:var(--blue);border:1px solid var(--line);width:auto;padding:7px 12px;font-weight:600;}
.dlyrow .dlyrm{color:var(--bad);align-self:end;}
.dlyrow .dlyrm:hover,#dlyadd:hover{background:var(--soft);}
#dlyadd{margin-top:8px;}
/* ── Daily reports in the Projects look (Lee, 7 Oct): band + glass tiles, one entry
   card per report with a fixed action column so every Approve sits in the same place ── */
.phead-acts{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;}
.drkpis{grid-template-columns:repeat(3,minmax(0,1fr));}
.drkpis a.pkpi{text-decoration:none;}
.drkpis .pkpi.on{background:rgba(54,197,240,.18);border-color:rgba(54,197,240,.6);}
.drfilter{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 6px;}
.drfilter select{width:auto;min-width:150px;}
.drseg{display:inline-flex;gap:4px;flex-wrap:wrap;}
.drseg .statpill{padding:5px 12px;font-weight:700;font-size:12.5px;text-decoration:none;}
.drsegn{display:inline-block;min-width:18px;margin-left:6px;padding:0 6px;border-radius:9px;font-size:11px;line-height:17px;
  text-align:center;background:var(--soft2);color:var(--mut);}
.drseg .statpill.on .drsegn{background:rgba(255,255,255,.22);color:#fff;}
.drsync{margin-left:auto;}
.drsyncnote{margin:0 0 14px;font-size:12px;}
.drday{margin:0 0 18px;}
.drdayhead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;
  padding:0 2px 8px;border-bottom:2px solid var(--line);margin-bottom:10px;}
.drdayhead h3{margin:0;font-size:16px;color:var(--head);}
.drdaystats{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--mut);}
.drdaystats b{color:var(--head);font-variant-numeric:tabular-nums;}
.drdaystats .warn,.drdaystats .warn b{color:var(--warn);}
.drdaystats .bad,.drdaystats .bad b{color:var(--bad);}
.drentry{display:grid;grid-template-columns:minmax(0,1fr) 168px;gap:0;background:var(--card,#fff);border-radius:14px;
  margin:0 0 10px;box-shadow:0 1px 2px rgba(28,39,71,.06),0 6px 20px rgba(28,39,71,.06);overflow:hidden;position:relative;}
.drentry::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--ok);}
.drentry.is-open::before{background:#f0a13c;}
.dre-main{padding:14px 16px 12px 20px;min-width:0;}
.dre-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;}
.dre-who{min-width:0;}
.dre-who > a{color:var(--head);text-decoration:none;font-size:15px;}
.dre-who > a:hover{color:var(--blue);}
.dre-where{font-size:12.5px;color:var(--mut);margin-top:2px;overflow-wrap:anywhere;}
.dre-fws{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px;}
.dre-fws span{font-size:11px;font-weight:700;padding:1px 8px;border-radius:10px;background:var(--soft2);color:var(--head);}
.dre-pills{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end;flex:0 0 auto;max-width:45%;}
.dre-nums{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px;margin:12px 0 4px;}
.dre-nums > div{background:var(--soft);border-radius:10px;padding:7px 10px;min-width:0;}
.dre-nums span{display:block;font-size:10.5px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.05em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dre-nums b{display:block;font-size:17px;color:var(--head);font-variant-numeric:tabular-nums;margin-top:1px;}
.dre-break{margin-top:8px;}
.dre-break > summary{cursor:pointer;color:var(--blue);font-size:12.5px;font-weight:700;list-style:none;padding:4px 0;}
.dre-break > summary::-webkit-details-marker{display:none;}
.dre-break > summary::before{content:"+ ";display:inline-block;width:12px;}
.dre-break[open] > summary::before{content:"– ";}
.dre-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-top:6px;}
.dre-col{border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-width:0;}
.dre-col h4{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);}
.dre-col .note{margin:0;}
.dre-grp{font-size:10.5px;font-weight:800;color:var(--blue);text-transform:uppercase;letter-spacing:.04em;margin:8px 0 2px;}
.dre-grp:first-of-type{margin-top:0;}
.dre-line{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:3px 0;font-size:12.5px;
  border-bottom:1px dashed var(--line);}
.dre-line:last-child{border-bottom:none;}
.dre-line > span{min-width:0;overflow-wrap:anywhere;}
.dre-line > b{flex:0 0 auto;font-variant-numeric:tabular-nums;text-align:right;}
.dre-line small{color:var(--mut);font-weight:600;}
.dre-toby small{display:block;white-space:nowrap;font-size:11px;}
.dre-toby{align-items:center;}
.dre-toby em.pill{font-style:normal;flex:0 0 auto;font-size:10.5px;white-space:nowrap;}
.dre-hint{margin-top:8px !important;font-size:11.5px;}
.dre-delays{display:flex;flex-direction:column;gap:2px;margin-top:10px;font-size:12.5px;padding:8px 12px;border-radius:10px;
  background:var(--warnbg);color:var(--warn);}
.drentry .photoblock{margin-top:10px;}
.dre-acts{display:flex;flex-direction:column;gap:7px;padding:14px 14px;background:var(--soft);border-left:1px solid var(--line);}
.dre-acts form{margin:0;}
.dre-acts .btn,.dre-acts button,.dre-acts summary.btn{display:block;width:100%;text-align:center;box-sizing:border-box;margin:0;}
.dre-acts .dre-del{background:transparent;border:1px solid #f2c4bd;color:var(--bad);}
.dre-acts .dre-del:hover{background:var(--badbg);}
.dre-done{text-align:center;font-weight:700;color:var(--ok);font-size:13px;padding:6px 0 4px;}
.dre-done small{display:block;font-weight:500;color:var(--mut);font-size:11px;overflow-wrap:anywhere;}
.dre-query > summary{list-style:none;cursor:pointer;}
.dre-query > summary::-webkit-details-marker{display:none;}
.dre-query[open] > summary{background:var(--soft2);}
.dre-query form{display:flex;flex-direction:column;gap:6px;margin-top:6px;}
.dre-query textarea{width:100%;box-sizing:border-box;font-size:12.5px;}
.drweekly > summary{cursor:pointer;font-weight:700;color:var(--head);}
.drweekly .tablewrap{margin-top:10px;}
@media(max-width:900px){.dre-cols{grid-template-columns:1fr 1fr;}.dre-cols .dre-col:last-child{grid-column:1/-1;}}
@media(max-width:640px){
  .drkpis{grid-template-columns:1fr 1fr;}
  .drkpis .pkpi:last-child{grid-column:1/-1;}
  .drfilter select{flex:1 1 140px;min-width:0;}
  .drsync{margin-left:0;}
  .drentry{grid-template-columns:1fr;}
  .dre-main{padding:12px 12px 10px 16px;}
  .dre-head{flex-direction:column;}
  .dre-pills{justify-content:flex-start;max-width:none;}
  .dre-nums{grid-template-columns:repeat(3,minmax(0,1fr));}
  .dre-cols{grid-template-columns:1fr;}
  .dre-acts{flex-direction:row;flex-wrap:wrap;border-left:none;border-top:1px solid var(--line);padding:10px 12px 12px 16px;}
  .dre-acts > *{flex:1 1 30%;}
  .dre-acts > form:first-child,.dre-acts .dre-query{flex-basis:45%;}
  .dre-acts .dre-query[open]{flex-basis:100%;}
  .dre-acts .btn,.dre-acts button,.dre-acts summary.btn{min-height:42px;}
}
/* one report: the band carries who/where and the actions */
.drvhead{padding-bottom:16px;}
.drvhead .phead-top{margin-bottom:6px;}
.drv-top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;}
.drv-who{min-width:0;flex:1 1 320px;}
.drv-who h2{margin:0;color:#fff;font-size:22px;}
.drv-who h2 span{font-weight:600;color:rgba(255,255,255,.7);font-size:17px;}
.drv-who p{margin:4px 0 8px;color:rgba(255,255,255,.75);font-size:13px;overflow-wrap:anywhere;}
.drv-pills{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.drv-by{font-size:12px;color:rgba(255,255,255,.65);}
.drv-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start;}
.drv-acts form{margin:0;}
.drv-acts button,.drv-acts .btn,.drv-acts summary.btn{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);color:#fff;}
.drv-acts button:hover,.drv-acts .btn:hover{background:rgba(255,255,255,.24);}
.drv-acts > form:first-child button{background:var(--cyan);border-color:var(--cyan);color:var(--head);font-weight:800;}
.drv-acts .dre-query{position:relative;}
.drv-acts .dre-query form{position:absolute;right:0;top:calc(100% + 6px);width:260px;background:var(--card,#fff);padding:10px;
  border-radius:12px;box-shadow:0 10px 30px rgba(28,39,71,.25);z-index:5;}
.drv-acts .dre-query form button{background:var(--blue);color:#fff;border-color:var(--blue);}
.drv-tobies{grid-template-columns:repeat(2,minmax(0,1fr));}
@media(max-width:640px){.drv-tobies{grid-template-columns:1fr;}.drv-acts{width:100%;}.drv-acts > *{flex:1 1 auto;}
  .drv-acts .dre-query form{position:static;width:auto;margin-top:6px;}}
/* ── Materials used: activity against materials (Lee, 7 Oct) ── */
.mcfilter{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 8px;}
.mcfilter select{width:auto;min-width:150px;}
.mcdate{display:inline-flex;gap:6px;align-items:center;font-size:12.5px;color:var(--mut);font-weight:600;}
.mcdate input{width:auto;}
.mccsv{margin-left:auto;}
.mcpresets{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0 0 14px;}
.mcpresets .statpill{padding:4px 12px;font-weight:700;font-size:12.5px;text-decoration:none;}
.mcpresets .note{margin-left:6px;}
.mckpis{grid-template-columns:repeat(4,minmax(0,1fr));}
.mckpis a.pkpi{text-decoration:none;}
.mchead{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:0 0 10px;}
.mchead h3{margin:0;color:var(--head);font-size:15px;}
.mchead .note{font-size:12px;}
/* overview: % of expected, one track per rule, a marker at 100% */
.mcbars{display:flex;flex-direction:column;gap:2px;}
.mcbar{display:grid;grid-template-columns:minmax(150px,240px) minmax(0,1fr) 48px 132px;gap:12px;align-items:center;
  padding:6px 6px;border-radius:8px;text-decoration:none;color:var(--ink);}
.mcbar:hover{background:var(--soft);}
.mcbar-l{font-size:13px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mcbar-t{position:relative;height:12px;background:var(--soft2);border-radius:6px;}
.mcbar-f{position:absolute;left:0;top:0;bottom:0;border-radius:6px;background:var(--blue);min-width:3px;}
.mcbar-f.ok{background:var(--ok);}
.mcbar-f.warn{background:#e0a13c;}
.mcbar-f.bad{background:var(--bad);}
.mcbar-100{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:var(--head);border-radius:1px;}
.mcbar-v{font-size:13px;font-weight:800;text-align:right;font-variant-numeric:tabular-nums;color:var(--head);}
.mcbar .pill{justify-self:start;}
.mcaxis{position:relative;height:16px;margin:2px 0 0;font-size:10.5px;color:var(--mut);
  margin-left:calc(min(240px, 30%) + 18px);margin-right:204px;}
.mcaxis span{position:absolute;transform:translateX(-50%);white-space:nowrap;}
.mcaxis span:first-child{transform:none;left:0;}
.mcaxis span:last-child{transform:translateX(-100%);}
/* rule rows: one grid so every number sits in the same column */
.mcrows{display:flex;flex-direction:column;}
.mcrow{display:grid;grid-template-columns:minmax(0,2.4fr) repeat(3,minmax(96px,1fr)) 150px;gap:12px;align-items:center;
  padding:10px 8px;}
.mcrow-h{padding-top:0;padding-bottom:6px;border-bottom:1px solid var(--line);font-size:10.5px;font-weight:800;color:var(--mut);
  text-transform:uppercase;letter-spacing:.06em;}
.mcrow-h span:not(:first-child){text-align:right;}
.mcrow-h span:last-child{text-align:left;}
.mccheck{border-bottom:1px solid var(--line);}
.mccheck:last-child{border-bottom:none;}
.mccheck > summary{list-style:none;cursor:pointer;border-radius:8px;}
.mccheck > summary::-webkit-details-marker{display:none;}
.mccheck > summary:hover{background:var(--soft);}
.mccheck[open] > summary{background:var(--soft);}
.mc-rule{min-width:0;}
.mc-rule b{color:var(--head);}
.mc-rule code{font-size:11px;background:var(--soft2);padding:1px 6px;border-radius:6px;color:var(--head);}
.mc-rule small{display:block;color:var(--mut);font-size:11.5px;margin-top:2px;}
.mc-n{text-align:right;font-variant-numeric:tabular-nums;font-size:14px;}
.mc-n small{display:block;font-size:11px;color:var(--mut);}
.mc-d.pos{color:var(--warn);}
.mc-d.neg{color:var(--bad);}
.mcdrill{padding:6px 8px 16px;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:16px;align-items:start;}
.mcdrill-tables{display:flex;flex-direction:column;gap:10px;min-width:0;}
.mcchart{min-width:0;}
.mclegend{font-size:12px;color:var(--mut);display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px;}
.mclegend .k{display:inline-block;width:12px;height:12px;border-radius:3px;margin-left:6px;}
.mclegend .k:first-child{margin-left:0;}
.mclegend .k.e,.mcwk .b.e{background:#9aa8c7;}
.mclegend .k.u,.mcwk .b.u{background:var(--blue);}
.mcwk{display:flex;gap:6px;align-items:flex-end;height:170px;padding:0 2px;border-bottom:1px solid var(--line);overflow-x:auto;}
.mcwk-col{flex:1 0 34px;display:flex;flex-direction:column;align-items:center;height:100%;text-decoration:none;position:relative;}
.mcwk-col:hover{background:var(--soft);border-radius:6px 6px 0 0;}
.mcwk-bars{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:2px;}
.mcwk .b{width:12px;border-radius:4px 4px 0 0;min-height:0;}
.mcwk-x{font-size:10.5px;color:var(--mut);padding:4px 0 2px;}
.mcwk-flag{position:absolute;top:0;font-size:9.5px;font-weight:800;color:var(--bad);text-transform:uppercase;}
.mctable td,.mctable th{font-variant-numeric:tabular-nums;}
.mctable td{text-align:right;}
.mctools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 8px;}
.mctools input[type=search]{width:auto;flex:1 1 220px;max-width:340px;border-radius:10px;}
.mcpick{position:relative;}
.mcpick > summary{list-style:none;}
.mcpick > summary::-webkit-details-marker{display:none;}
.mcpick-box{position:absolute;z-index:6;top:calc(100% + 6px);left:0;background:var(--card,#fff);border-radius:12px;padding:10px 12px;
  box-shadow:0 10px 30px rgba(28,39,71,.2);display:flex;flex-direction:column;gap:4px;min-width:200px;max-height:300px;overflow:auto;}
.mcpick-box label{display:flex;gap:6px;align-items:center;font-size:12.5px;white-space:nowrap;cursor:pointer;}
.mcpick-box input{width:auto;}
th.mcw a{color:inherit;text-decoration:none;}
th.mcw a:hover{color:var(--blue);text-decoration:underline;}
td.mcw{color:var(--ink);}
@media(max-width:900px){.mcdrill{grid-template-columns:1fr;}}
@media(max-width:640px){
  .mcfilter select,.mcfilter .mcdate{flex:1 1 140px;min-width:0;}
  .mccsv{margin-left:0;}
  .mckpis{grid-template-columns:1fr 1fr;}
  .mcbar{grid-template-columns:minmax(0,1fr) 44px;grid-template-areas:"l v" "t t" "s s";gap:4px 8px;padding:8px 4px;}
  .mcbar-l{grid-area:l;white-space:normal;}
  .mcbar-v{grid-area:v;}
  .mcbar-t{grid-area:t;}
  .mcbar .pill{grid-area:s;}
  .mcaxis{display:none;}
  .mcrow-h{display:none;}
  .mcrow{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 8px;}
  .mc-rule{grid-column:1/-1;}
  .mc-n{text-align:left;}
  .mc-n::before{content:attr(data-label);display:block;font-size:10px;font-weight:800;color:var(--mut);text-transform:uppercase;letter-spacing:.05em;}
  .mc-s{grid-column:1/-1;}
}
.mcdrill .tablewrap{max-height:340px;overflow:auto;}
@media(max-width:640px){.mctable td,.mctable th{padding:6px 8px;font-size:12px;white-space:nowrap;}}
/* ── Permit schedule in the Hub look (Lee, 7 Oct) ── */
.pmhead .ptabs .tabn.hot{background:var(--bad);}
.pmscope{margin:0 0 10px;}
.pmchips{display:flex;gap:6px;flex-wrap:wrap;}
.pmchips .statpill,.pmseg .statpill{padding:5px 12px;font-weight:700;font-size:12.5px;text-decoration:none;}
.pmchips .statpill b{margin-left:4px;font-weight:800;opacity:.75;}
.pmdot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--bad);margin-right:5px;vertical-align:middle;}
.pmbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:0 0 10px;}
.pmseg{display:inline-flex;gap:4px;flex-wrap:wrap;}
.pmsm{margin:0;}
.pmsm select{width:auto;min-width:170px;}
.pmsafe{margin:0 0 0 auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12.5px;}
.pmsafe label{display:inline-flex;gap:6px;align-items:center;font-weight:700;color:var(--mut);}
.pmsafe input{width:auto;font-size:12.5px;}
.pmwatch{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:0 0 14px;}
.pmw{display:flex;flex-direction:column;gap:1px;padding:9px 12px;border-radius:12px;background:var(--card,#fff);text-decoration:none;
  color:var(--ink);box-shadow:0 1px 2px rgba(28,39,71,.06),0 4px 14px rgba(28,39,71,.05);border:1px solid transparent;position:relative;overflow:hidden;}
.pmw::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--line);}
.pmw.bad::before{background:var(--bad);}
.pmw.warn::before{background:#e0a13c;}
.pmw.ok::before{background:var(--ok);}
.pmw b{font-size:20px;color:var(--head);font-variant-numeric:tabular-nums;line-height:1.1;}
.pmw.bad b{color:var(--bad);}
.pmw span{font-size:11px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.04em;}
.pmw.zero{opacity:.7;}
.pmw.on{border-color:var(--blue);}
.pmw:hover{background:var(--soft);}
.pmtools{margin:0 0 12px;}
.pmtools > summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--head);padding:4px 0;}
.pmtool-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:6px;}
.pmtool{display:flex;flex-direction:column;gap:7px;align-items:flex-start;background:var(--card,#fff);border-radius:12px;padding:12px 14px;margin:0;
  box-shadow:0 1px 2px rgba(28,39,71,.06),0 4px 14px rgba(28,39,71,.05);}
.pmtool h4{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);}
.pmtool form{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0;}
.pmtool input,.pmtool select{width:100%;}
.pmtool input[type=file]{font-size:12px;}
.pmtool .note{margin:0;font-size:11.5px;}
.pmstatuses{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.pmstatuses form{display:flex;gap:6px;align-items:center;margin:0;}
.pmstatuses input[name=label]{width:220px;font-size:12.5px;}
.pmstatuses input[type=color]{width:34px;height:28px;padding:1px;border:1px solid var(--line);border-radius:6px;background:none;}
.pmx{all:unset;cursor:pointer;margin-left:4px;}
select.pmproj{font-size:12px;width:auto;max-width:170px;border:1px solid transparent;background:transparent;}
select.pmproj:hover,select.pmproj:focus{border-color:var(--inpb,#c9d2e4);background:var(--card,#fff);}
.pmtg{all:unset;cursor:pointer;font-size:10px;margin-top:3px;color:var(--line);}
.pmtg.has{color:var(--mut);}
.pmtg:hover{color:var(--blue);}
.pmnotes-n{background:var(--soft2);border-radius:8px;padding:0 6px;font-size:10.5px;font-weight:700;color:var(--blue);margin-left:3px;}
.pboard td.pmsub{padding:8px 10px 12px 34px;background:var(--card2);border-top:1px dashed var(--line);border-left:4px solid #579bfc;}
.pmlines{margin-top:10px;max-width:760px;}
.pmlines-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);margin-bottom:4px;}
.pmline{display:grid;grid-template-columns:24px minmax(0,1fr) auto 24px;gap:8px;align-items:center;padding:3px 0;border-bottom:1px dashed var(--line);}
.pmline form{margin:0;}
.pmline-tick{all:unset;cursor:pointer;width:18px;height:18px;border:2px solid var(--line);border-radius:5px;display:inline-flex;
  align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#fff;box-sizing:border-box;}
.pmline.done .pmline-tick{background:var(--ok);border-color:var(--ok);}
.pmline-body input{width:100%;font-size:12.5px;border:1px solid transparent;background:transparent;padding:3px 6px;}
.pmline-body input:focus,.pmline-body input:hover{border-color:var(--inpb,#c9d2e4);background:var(--card,#fff);}
.pmline.done .pmline-body input{text-decoration:line-through;color:var(--mut);}
.pmline-by{font-size:10.5px;color:var(--mut);white-space:nowrap;}
.pmline-del{all:unset;cursor:pointer;color:var(--mut);font-size:12px;text-align:center;}
.pmline-del:hover{color:var(--bad);}
.pmline-add{display:flex;gap:6px;margin-top:6px;}
.pmline-add input{flex:1;font-size:12.5px;}
/* board headers in the Hub look: light, uppercase, sortable */
.pboard th{background:var(--soft2) !important;color:var(--mut) !important;font-size:10.5px !important;text-transform:uppercase;letter-spacing:.05em;
  border-bottom:1px solid var(--line);}
.pboard th.pmsort{cursor:pointer;user-select:none;}
.pboard th.pmsort:hover{color:var(--head) !important;}
.pboard th[data-dir]::after{content:"";display:inline-block;margin-left:5px;border:4px solid transparent;border-top:0;border-bottom:5px solid var(--blue);vertical-align:2px;}
.pboard th[data-dir="desc"]::after{border-bottom:0;border-top:5px solid var(--blue);}
.pboard .tablewrap{border:none !important;border-radius:12px !important;box-shadow:0 1px 2px rgba(28,39,71,.06),0 6px 20px rgba(28,39,71,.06);}
.pboard summary{padding:6px 2px !important;}
@media(max-width:900px){.pmwatch{grid-template-columns:repeat(3,minmax(0,1fr));}.pmtool-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:640px){
  .pmchips,.pmseg{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;}
  .pmchips .statpill,.pmseg .statpill{flex:0 0 auto;white-space:nowrap;}
  .pmsafe{margin-left:0;}
  .pmwatch{grid-template-columns:repeat(2,minmax(0,1fr));}
  .pmline{grid-template-columns:24px minmax(0,1fr) 24px;}
  .pmline-by{display:none;}
}
@media(max-width:640px){#bfind{width:100% !important;box-sizing:border-box;}#bfind + .note{flex:0 0 auto;}
  span:has(> #bfind){margin-left:0 !important;flex:1 1 100%;min-width:0;}}
/* ── TM schedule (Lee, 7 Oct) ── */
.tmhead-sub{font-weight:600;color:rgba(255,255,255,.7);font-size:17px;}
.tmstages{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin:0 0 14px;}
.tmstage{display:flex;flex-direction:column;gap:1px;padding:9px 12px;border-radius:12px;background:var(--card,#fff);text-decoration:none;color:var(--ink);
  box-shadow:0 1px 2px rgba(28,39,71,.06),0 4px 14px rgba(28,39,71,.05);position:relative;overflow:hidden;}
.tmstage::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--c);}
.tmstage b{font-size:20px;color:var(--head);line-height:1.1;}
.tmstage span{font-size:10.5px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.04em;}
.tmstage:hover{background:var(--soft);}
.tmguide{margin:-4px 0 12px;}
.tmgroup td{vertical-align:middle;}
.tmgroup input.tmf{font-size:12px;width:170px;border:1px solid transparent;background:transparent;}
.tmgroup input.tmf:hover,.tmgroup input.tmf:focus,.tmgroup select.tmf:focus{border-color:var(--inpb,#c9d2e4);background:var(--card,#fff);}
.tmgroup input.tmwref{width:90px;}
.tmgroup .tmdates input{width:130px;display:block;margin:1px 0;}
.tmgroup select{font-size:12px;width:auto;max-width:190px;}
.tmgroup .tmf.saved{background:#d9f2e4 !important;}
.tmgroup .tmf.err{border-color:var(--bad) !important;}
.tmup{margin:2px 0 0;}
.tmup label{cursor:pointer;}
.tmact{display:flex;flex-direction:column;gap:5px;align-items:flex-start;min-width:170px;}
.tmact form{margin:0;}
.tmact .dre-query form{display:flex;flex-direction:column;gap:5px;margin-top:5px;}
.tmnote{color:var(--warn) !important;}
.tmwin,.tmref{white-space:nowrap;font-size:12px;}
.tmsuppliers h3{margin:0 0 4px;}
.tmsup-list{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0;}
.tmsup-list form,.tmsup-add{display:flex;gap:6px;align-items:center;margin:0;}
.tmsup-add select{width:auto;min-width:220px;}
.tmchip{display:inline-block;margin:3px 3px 0 0;font-size:10.5px;font-weight:700;padding:1px 8px;border-radius:9px;text-decoration:none;
  color:var(--head);background:var(--soft2);border-left:3px solid var(--c);}
.tmbook{margin-top:4px;}
.tmbook > summary{list-style:none;cursor:pointer;font-size:11px;font-weight:700;color:var(--blue);}
.tmbook > summary::-webkit-details-marker{display:none;}
.tmbook form{display:flex;flex-direction:column;gap:5px;margin-top:5px;padding:8px;border:1px solid var(--line);border-radius:10px;background:var(--card,#fff);
  min-width:220px;white-space:normal;}
.tmbook form select,.tmbook form input{font-size:12px;width:100%;}
.tmbook label{display:flex;gap:5px;align-items:center;font-size:11.5px;color:var(--mut);}
@media(max-width:900px){.tmstages{grid-template-columns:repeat(4,minmax(0,1fr));}}
@media(max-width:640px){.tmstages{grid-template-columns:repeat(2,minmax(0,1fr));}}
/* the subcontractor's permit board (Lee, 7 Oct) */
.cpnotice{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13px;}
.cptools{grid-template-columns:repeat(2,minmax(0,1fr));max-width:900px;}
.pboard .cpf{font-size:12px;border:1px solid transparent;background:transparent;}
.pboard .cpf:hover,.pboard .cpf:focus{border-color:var(--inpb,#c9d2e4);background:var(--card,#fff);}
.pboard input.cpf[type=text]{width:180px;}
.pboard textarea.cpf{width:220px;font-family:inherit;resize:vertical;}
.pboard input.cpdays{width:56px;}
.pboard .cpgrid input{width:110px;display:block;margin:1px 0;}
.pboard select.cpf{max-width:190px;}
.pboard .cpf.saved,.pboard td.saved{background:#d9f2e4 !important;}
.pboard .cpf.err{border-color:var(--bad) !important;}
.cptm > summary{list-style:none;cursor:pointer;font-size:12px;max-width:200px;white-space:normal;color:var(--blue);}
.cptm > summary::-webkit-details-marker{display:none;}
.cptm-box{display:flex;flex-direction:column;gap:2px;padding:6px 8px;margin-top:4px;border:1px solid var(--line);border-radius:10px;background:var(--card,#fff);}
.cptm-box label{display:flex;gap:6px;align-items:center;font-size:12px;white-space:nowrap;}
.cptm-box input{width:auto;}
@media(max-width:640px){.cptools{grid-template-columns:1fr;}}
/* the board table basics, shared by the TM schedule and the subcontractor's board */
.pboard{margin:0 0 16px;}
.pboard > summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;font-weight:800;font-size:15px;}
.pboard > summary::-webkit-details-marker{display:none;}
.pboard > summary .n{font-weight:400;color:var(--mut);font-size:13px;}
.pboard .gbar{width:5px;border-radius:4px;align-self:stretch;}
.pboard .tablewrap{overflow:auto;max-height:calc(100vh - 230px);background:var(--card);}
.pboard table{border-collapse:separate;border-spacing:0;min-width:100%;width:max-content;font-size:13px;}
.pboard th{position:sticky;top:0;z-index:3;text-align:left;padding:8px 10px;white-space:nowrap;}
.pboard td{padding:5px 10px;border-bottom:1px solid var(--line);vertical-align:top;white-space:nowrap;text-align:left;}
.pboard td.wrap{white-space:normal;min-width:110px;max-width:340px;}
.pboard th.stick,.pboard td.stick{position:sticky;left:0;background:var(--card);z-index:2;border-right:2px solid var(--line);
  min-width:200px;max-width:260px;white-space:normal;}
.pboard th.stick{z-index:4;}
.pboard tr:hover td,.pboard tr:hover td.stick{background:var(--soft2);}
@media(max-width:640px){.pboard .tablewrap{max-height:calc(100vh - 150px);}
  .pboard th.stick,.pboard td.stick{min-width:130px;max-width:150px;}
  .pboard th,.pboard td{padding:5px 7px;font-size:12px;}}
/* permit timeline zoom (Lee, 7 Oct) */
.tlbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 8px;}
.tlcard{padding:10px 12px;}
.tl{font-size:12px;}
.tl-today{position:absolute;top:0;bottom:0;width:2px;background:var(--blue);opacity:.6;z-index:2;}
.tl-head,.tl-days,.tl-row{display:flex;}
.tl-head{border-bottom:1px solid var(--line);font-size:11px;font-weight:800;color:var(--head);text-transform:uppercase;letter-spacing:.04em;}
.tl-lab{flex:none;padding:6px 8px;}
.tl-grp{flex:none;padding:6px 4px;border-left:1px solid var(--line);white-space:nowrap;overflow:hidden;}
.tl-days{border-bottom:2px solid var(--line);}
.tl-day{flex:none;display:flex;flex-direction:column;align-items:center;padding:3px 0;border-left:1px solid var(--line);line-height:1.15;}
.tl-day b{font-size:12px;color:var(--head);}
.tl-day span{font-size:9.5px;color:var(--mut);font-weight:700;}
.tl-day.we{background:var(--soft2);}
.tl-day.now{background:var(--blue);}
.tl-day.now b,.tl-day.now span{color:#fff;}
.tl-row{align-items:center;border-bottom:1px solid var(--line);}
.tl-name{flex:none;padding:4px 8px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tl-name a{text-decoration:none;color:inherit;}
.tl-track{position:relative;height:26px;flex:none;}
.tl-weshade{position:absolute;top:0;bottom:0;background:var(--soft2);opacity:.7;}
.tl-gline{position:absolute;top:0;bottom:0;width:1px;background:var(--line);}
.tl-b{position:absolute;top:5px;height:16px;font-size:10.5px;line-height:16px;color:#fff;text-decoration:none;overflow:hidden;white-space:nowrap;padding:0 5px;box-sizing:border-box;z-index:1;}
/* ── Permit schedule round 2 (Lee, 7 Oct) ── */
.pmtoolmenu{position:relative;}
.pmtoolmenu > summary{list-style:none;}
.pmtoolmenu > summary::-webkit-details-marker{display:none;}
.pmtoolpop{position:absolute;right:0;top:calc(100% + 8px);z-index:40;width:320px;background:var(--card,#fff);color:var(--ink);
  border-radius:14px;padding:12px;box-shadow:0 14px 40px rgba(28,39,71,.28);display:flex;flex-direction:column;gap:10px;}
.pmtoolpop > form,.pmtoolpop > div{display:flex;flex-direction:column;gap:5px;align-items:flex-start;padding-bottom:10px;border-bottom:1px solid var(--line);margin:0;}
.pmtoolpop > :last-child{border-bottom:none;padding-bottom:0;}
.pmtoolpop b{font-size:13px;color:var(--head);}
.pmtoolpop .note{font-size:11.5px;}
.pmtoolpop input[type=file]{font-size:12px;width:100%;}
.pmtoolpop input[type=text]{font-size:12.5px;width:100%;}
.pmtoolrow{display:flex;gap:6px;}
.pmtoolpop .btn,.pmtoolpop button{background:var(--blue) !important;border-color:var(--blue) !important;color:#fff !important;}
.pminfo{width:28px;height:28px;border-radius:50%;padding:0;font:800 14px/26px Georgia,serif;font-style:italic;text-align:center;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.35);color:#fff;cursor:pointer;}
.pminfo:hover{background:rgba(255,255,255,.26);}
.pminfo-dlg{border:none;border-radius:18px;padding:0;max-width:640px;width:calc(100% - 32px);box-shadow:0 30px 80px rgba(28,39,71,.35);
  background:var(--card,#fff);color:var(--ink);}
.pminfo-dlg::backdrop{background:rgba(20,28,52,.35);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);}
.pminfo-body{padding:22px 24px 20px;}
.pminfo-body h3{margin:0 0 10px;color:var(--head);font-size:18px;}
.pminfo-body p{font-size:13.5px;line-height:1.55;margin:0 0 10px;}
.pmtoolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 8px;}
.pmtoolbar .note{font-size:12px;}
#pm-colfilter.on{background:var(--blue-d);color:#fff;border-color:var(--blue-d);}
.pmfind{margin:0 0 12px;}
.pmfind input[type=search]{width:min(430px,100%);border-radius:10px;}
.pboard th .pmcf{display:block;width:100%;min-width:70px;margin-top:4px;font-size:11px;padding:3px 6px;border-radius:7px;
  text-transform:none;letter-spacing:0;font-weight:500;}
.pmc-street{display:flex;gap:7px;align-items:center;font-weight:600;}
.pmc-street a{color:inherit;}
.pmc-street input{width:auto;}
.pmkfilters{display:flex;gap:8px;flex-wrap:wrap;margin:-4px 0 12px;}
.pmkfilters select{width:auto;min-width:160px;}
.pmkanban{display:flex;gap:12px;overflow-x:auto;padding:2px 2px 14px;align-items:flex-start;scroll-snap-type:x proximity;}
.pmk-col{flex:0 0 272px;background:var(--soft2);border-radius:14px;padding:10px;scroll-snap-align:start;max-height:calc(100vh - 220px);
  display:flex;flex-direction:column;border-top:4px solid var(--c);}
.pmk-col header{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:2px 4px 8px;}
.pmk-col header b{font-size:13px;color:var(--head);}
.pmk-n{font-size:11px;font-weight:800;background:var(--card,#fff);color:var(--mut);border-radius:9px;padding:1px 8px;white-space:nowrap;}
.pmk-cards{display:flex;flex-direction:column;gap:8px;overflow-y:auto;}
.pmk-card{background:var(--card,#fff);border-radius:12px;padding:10px 12px;box-shadow:0 1px 2px rgba(28,39,71,.08),0 3px 10px rgba(28,39,71,.05);
  display:flex;flex-direction:column;gap:4px;border-left:3px solid var(--c);}
.pmk-street{font-weight:800;color:var(--head);text-decoration:none;font-size:13.5px;}
.pmk-street:hover{color:var(--blue);}
.pmk-meta,.pmk-dates{font-size:11.5px;color:var(--mut);}
.pmk-tags{display:flex;gap:4px;flex-wrap:wrap;}
.pmk-tags .pill{font-size:10px;}
.pmk-move{margin:2px 0 0;}
.pmk-move select{font-size:11.5px;width:100%;padding:3px 6px;border-radius:8px;}
/* Book TM as a proper button */
.tmbook > summary{display:inline-flex;align-items:center;gap:5px;padding:4px 12px;border-radius:999px;background:var(--blue);color:#fff;
  font-size:11.5px;font-weight:700;box-shadow:0 1px 2px rgba(28,39,71,.15);}
.tmbook > summary::before{content:"+";font-size:13px;line-height:1;}
.tmbook > summary:hover{background:var(--blue-d);}
.tmbook[open] > summary{background:var(--blue-d);}
/* Book TM / TTRN / TTRO — a small segmented control on the street (Lee, 9 Oct) */
.bookseg{display:inline-flex;margin-top:4px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--card,#fff);vertical-align:middle;}
.bookseg .k{font-size:10px;font-weight:700;color:var(--mut);padding:3px 7px;background:var(--soft2);border-right:1px solid var(--line);}
.bookseg button{all:unset;cursor:pointer;font-size:10.5px;font-weight:800;padding:3px 9px;color:var(--blue);border-right:1px solid var(--line);}
.bookseg button:last-child{border-right:0;}
.bookseg button:hover{background:var(--soft2);}
.bookseg button.on{background:var(--blue);color:#fff;}
.bkform{display:flex;flex-direction:column;gap:5px;margin-top:5px;padding:8px;border:1px solid var(--line);border-radius:10px;background:var(--card,#fff);
  min-width:230px;white-space:normal;}
.bkform[hidden]{display:none;}
.bkform b{font-size:12px;color:var(--head);}
.bkform select,.bkform input{font-size:12px;width:100%;}
.bkform label{display:flex;gap:5px;align-items:center;font-size:11.5px;color:var(--mut);}
@media(max-width:640px){.pmk-col{flex-basis:84vw;}.pmtoolpop{right:auto;left:0;width:min(320px,86vw);}}
.pmfollow{display:inline;margin:0 0 0 4px;}
.pmfollow button{all:unset;cursor:pointer;color:var(--blue);font-weight:700;font-size:10.5px;text-decoration:underline;}
.tmscope{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.tmsupf{margin:0 0 0 auto;}
.tmsupf select{width:auto;min-width:180px;}
.tmdays{display:inline-block;margin-top:3px;font-size:10.5px;font-weight:800;color:#8a6d00;background:#fff4c2;border-radius:9px;padding:1px 8px;}
.tmdel{color:var(--bad) !important;border-color:#f2c4bd !important;}
/* Recharges (Lee, 7 Oct): FPN / defect / damage claim cases on the permits */
.rcscope{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 12px;}
.rcscope select{width:auto;min-width:170px;}
.pill.rck-fpn{background:#e8efff;color:#27479e;}
.pill.rck-defect{background:#fff1dc;color:#9a5b00;}
.pill.rck-damage{background:#fde7ea;color:#a3202f;}
.rcdue{color:var(--bad);font-weight:700;}
.rcflow{display:flex;gap:6px;flex-wrap:wrap;padding:12px 0 14px;}
.rcstep{font-size:11.5px;font-weight:700;color:rgba(255,255,255,.7);border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:3px 10px;}
.rcstep.on{background:var(--c);border-color:var(--c);color:#fff;}
.rcgrid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:14px;align-items:start;}
.rcdetails h3,.rcside h3{margin:0 0 8px;color:var(--head);}
.rcsub{margin-top:14px !important;padding-top:12px;border-top:1px dashed var(--line);}
.rcfields{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px 12px;}
.rcfields .field{margin:0;}
.rcfields .rcwide{grid-column:1/-1;}
.rcacts{margin-top:12px;}
.rcside{display:flex;flex-direction:column;gap:14px;}
.rcnext{border-left:5px solid var(--c);}
.rcfact{margin:6px 0;font-size:13px;}
.rcact{display:flex;flex-direction:column;gap:6px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line);margin:0;}
.rcact select,.rcact textarea,.rcact input[type=text]{width:100%;}
.rcevents{list-style:none;margin:8px 0 0;padding:0;max-height:420px;overflow:auto;}
.rcevents li{padding:7px 0;border-bottom:1px solid var(--line);font-size:13px;}
.rcevents li.rce-decision,.rcevents li.rce-outcome{font-weight:600;}
.rcmove{margin-top:10px;}
.rcmove summary{cursor:pointer;}
.rcpermit{display:flex;gap:8px;flex-wrap:wrap;align-items:center;border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin-bottom:10px;}
.rcbadge{font-size:9.5px !important;text-decoration:none;}
.rccard{border-left:5px solid #fdab3d;}
.rccard.rcover{border-left-color:var(--bad);}
.rccard-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px;}
.rcdue-tag{margin-left:auto;font-size:12px;font-weight:700;color:#9a5b00;}
.rcdl{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;margin:0 0 10px;font-size:13px;}
.rcdl dt{color:var(--mut);font-weight:600;}
.rcdl dd{margin:0;}
.rcrespond{display:flex;flex-direction:column;gap:8px;}
.rcrespond textarea{width:100%;}
.rcbtns{display:flex;gap:8px;}
@media(max-width:900px){.rcgrid{grid-template-columns:1fr;}}
@media(max-width:640px){.rcscope select{min-width:0;flex:1;}.rcdl{grid-template-columns:1fr;}.rcdue-tag{margin-left:0;}}
.rcfields input[type=url],.rcfields input[type=number]{width:100%;}
.rcfields input[type=file]{font-size:12px;max-width:100%;}
/* Stock (Lee, 7 Oct): Stock + Warehouse + Requests as one page */
.stwh select{width:auto;min-width:180px;background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.3);}
.stwh select option{color:var(--ink);}
.stfilter{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 12px;}
.stfilter select{width:auto;min-width:190px;}
.stfilter input[type=search]{flex:1;min-width:220px;max-width:420px;}
.stpos{padding:0;}
.stpos table th{white-space:normal;min-width:84px;}
.stpos table td{font-variant-numeric:tabular-nums;}
.stpos tr.st-low td.stick{box-shadow:inset 4px 0 0 var(--bad);}
.stpos tr.st-near td.stick{box-shadow:inset 4px 0 0 #e0a13c;}
.stlegend{padding:10px 14px 12px;margin:0;}
.sth{margin:0 0 10px;color:var(--head);}
.strq{border-top:1px solid var(--line);padding:10px 0;}
.strq-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.strq-acts{margin-left:auto;display:flex;gap:6px;}
.strq-acts form{margin:0;}
.strq-lines{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0;}
.srhead{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 12px;margin-bottom:10px;}
.srhead .field{margin:0;}
.srhead .srnote{grid-column:span 2;}
.srtools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 8px;}
.srfind{flex:1;min-width:220px;max-width:420px;}
.srtable{max-height:460px;overflow-y:auto;}
.srtable input[type=number]{width:96px;}
.srtable tr.srnone td{color:var(--mut);}
.srover{display:none;font-size:11px;font-weight:700;color:var(--bad);}
.srtable tr.srbad .srover{display:block;}
/* request packs (Lee, 20 Oct): the conversion under the box, the 6 m rule when it's broken */
.srconv{font-size:11px;font-weight:700;color:var(--blue,#27479e);margin-top:2px;}
.srpack{font-size:11px;}
.srstep{display:none;font-size:11px;font-weight:700;color:var(--bad);}
.srtable tr.srstepbad .srstep{display:block;}
.srtable tr.srbad input{border-color:var(--bad);}
.sracts{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:10px;}
@media(max-width:640px){.srhead .srnote{grid-column:auto;}.stfilter select,.stfilter input[type=search]{min-width:0;flex:1 1 100%;max-width:none;}.strq-acts{margin-left:0;}}
#stfind,.srfind{border:1px solid var(--inpb,#c9d2e4);border-radius:10px;padding:8px 12px;font-size:13.5px;background:var(--card,#fff);color:var(--ink);}
.smup{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;}.smup .field{margin:0;}
/* Daily reports + Weekly review as Projects tabs (Lee, 7 Oct) */
.drsub,.wrscope{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.wrweek{margin-left:auto;color:var(--head);}
@media(max-width:640px){.wrweek{margin-left:0;}}
/* signature pad (site instructions, Lee 7 Oct) */
.sigpad{border:1px solid var(--line);border-radius:12px;padding:8px 10px;background:var(--card,#fff);max-width:520px;}
.sighead{display:flex;gap:8px;align-items:center;margin-bottom:6px;}
.sighead .sigclear{margin-left:auto;}
.sigpad canvas{display:block;width:100%;height:150px;border:1px dashed var(--inpb,#c9d2e4);border-radius:8px;background:#fff;touch-action:none;cursor:crosshair;}
.sigpad.signed canvas{border-style:solid;border-color:var(--ok);}
.sigerr{display:none;color:var(--bad);font-weight:700;font-size:12px;margin-top:4px;}
.sigpad.sigmissing .sigerr{display:block;}
.sigpad.sigmissing canvas{border-color:var(--bad);}
/* PIF price table + signatures (Lee, 15 Oct) */
.pifprice td,.pifprice th{text-align:right;}
.pifsign{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin-top:12px;}
.pifsign .sigpad{flex:1;min-width:260px;}
.pifsigimg{display:block;max-width:240px;max-height:90px;margin:4px 0;}
.pifcheck{border-radius:10px;padding:10px 12px;margin-top:10px;border:1px solid;}
.pifcheck.ok{border-color:var(--ok);background:rgba(31,157,85,.08);}
.pifcheck.bad{border-color:var(--bad);background:rgba(200,40,40,.07);}
/* site instructions (Lee, 7 Oct) */
.req{color:var(--bad);}
.sitypes{display:flex;gap:8px;flex-wrap:wrap;}
.sitype{display:inline-flex;gap:6px;align-items:center;border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:13px;cursor:pointer;background:var(--card,#fff);}
.sitype:has(input:checked){border-color:var(--blue);background:#e8efff;color:var(--blue);font-weight:700;}
.sisign{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
.sitop{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px;}
.sidescr{white-space:pre-wrap;}
.sidesc{min-width:260px;}
.sifiles{display:flex;gap:8px;flex-wrap:wrap;}
.sifiles img{width:140px;height:105px;object-fit:cover;border-radius:8px;border:1px solid var(--line);}
.siadd{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px;}
.sisigs{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;}
.sisig{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:10px;padding:8px;}
.sisig img{width:100%;height:60px;object-fit:contain;background:#fff;}
.stfilter #bfind{border:1px solid var(--inpb,#c9d2e4);border-radius:10px;padding:8px 12px;font-size:13.5px;flex:1;min-width:220px;max-width:420px;background:var(--card,#fff);color:var(--ink);}

/* ── Snagging (Lee, 8 Oct): the Projects tab + the site manager's QA form ── */
.sqdom{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0 0 12px;}
.sqdom .statpill b{margin-left:4px;}
.sqpush summary,.sqrep summary{cursor:pointer;}
.sqpushf{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px;}
.sqpushf select,.sqpushf input[type=text]{width:auto;min-width:150px;}
.sqpushf .sqnotein,.sqsend .sqnotein{flex:1;min-width:220px;}
.sqchk{display:inline-flex;gap:5px;align-items:center;white-space:nowrap;}
.sqchk input{width:auto;}
.sqtrend{margin:1px 0;}
.sqact{text-align:right;white-space:nowrap;}
.sqpick .field{margin:0 0 10px;}
.sqpick select{max-width:420px;}
.sqchips{display:flex;gap:6px;flex-wrap:wrap;}
.sqchip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:99px;padding:6px 12px;
  background:var(--card,#fff);color:var(--ink);font-size:13px;text-decoration:none;}
.sqchip:hover{text-decoration:none;filter:brightness(.97);}
.sqchip.on{background:var(--blue-d,#1c2747);border-color:var(--blue-d,#1c2747);color:#fff;}
.sqchip.today{border-color:var(--ok);box-shadow:0 0 0 1px var(--ok) inset;}
.sqchip small{font-size:11px;opacity:.8;}
.sqchip small.bad{color:var(--bad);opacity:1;}
.sqchip.on small.bad{color:#ffd6d6;}
.sqpermit{margin:2px 0 10px;font-size:13px;}
.sqform{margin-bottom:0;}
.sqday{max-width:220px;margin:0 0 10px;}
.sqtoby{border:1px solid var(--line);border-left:4px solid var(--line);border-radius:12px;padding:10px 12px;margin:0 0 10px;background:var(--card,#fff);}
.sqtoby.fail{border-left-color:var(--bad);}
.sqtoby.pass{border-left-color:var(--ok);}
.sqtop{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:baseline;}
.sqtop b{font-size:14.5px;}
.sqopen{margin-top:6px;display:flex;gap:5px;flex-wrap:wrap;}
.sqrow{display:grid;grid-template-columns:140px 1fr;gap:6px 10px;align-items:center;margin-top:8px;}
.sqlab{font-size:11.5px;color:var(--mut);text-transform:uppercase;letter-spacing:.03em;}
.sqlab small{display:block;text-transform:none;letter-spacing:0;font-size:11px;}
.sqseg{display:inline-flex;flex-wrap:wrap;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:9px;overflow:hidden;width:max-content;max-width:100%;}
.sqseg label{position:relative;margin:0;font-weight:normal;cursor:pointer;flex:1 1 auto;}
.sqseg input{position:absolute;opacity:0;width:1px;height:1px;}
.sqseg span{display:block;height:100%;padding:7px 11px;font-size:13px;text-align:center;background:var(--card,#fff);color:var(--ink);}
.sqseg input:checked+span{background:var(--blue-d,#1c2747);color:#fff;}
.sqseg label.ok input:checked+span{background:var(--ok);}
.sqseg label.bad input:checked+span{background:var(--bad);}
.sqseg label.adv input:checked+span{background:#225091;color:#fff;}
.sqseg input:focus-visible+span{outline:2px solid var(--blue);outline-offset:-2px;}
.sqdate{width:auto;}
.sqtrends{margin-top:8px;}
.sqtrends summary{cursor:pointer;font-size:12.5px;color:var(--ink);}
.sqtgrp{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin:6px 0;}
.sqtgrp>.note{width:100%;}
.sqtchip{display:inline-flex;margin:0;font-weight:normal;cursor:pointer;position:relative;}
.sqtchip input{position:absolute;opacity:0;width:1px;height:1px;}
.sqtchip span{padding:4px 10px;border-radius:99px;background:var(--soft);color:var(--ink);font-size:12px;}
.sqtchip input:checked+span{background:var(--badbg);color:var(--bad);box-shadow:0 0 0 1px var(--bad) inset;}
.sqsend .sqtchip input:checked+span{background:var(--blue-d,#1c2747);color:#fff;box-shadow:none;}
.sqtchip input:focus-visible+span{outline:2px solid var(--blue);}
.sqnewtrend{margin-top:4px;max-width:420px;}
.sqbar{position:sticky;bottom:0;z-index:5;background:var(--card,#fff);border:1px solid var(--line);padding:10px 12px;display:flex;gap:10px;
  align-items:center;justify-content:space-between;flex-wrap:wrap;border-radius:12px 12px 0 0;box-shadow:0 -4px 14px rgba(0,0,0,.08);}
.sqbar-go{display:inline-flex;gap:10px;align-items:center;flex-wrap:wrap;}
.sqbar-go label{display:inline-flex;gap:5px;align-items:center;margin:0;}
.sqbar-go input{width:auto;}
.sqrep .grid2>div{margin-bottom:6px;}
.sqrep .sqspan{grid-column:1/-1;}
.sqrep-sum{margin:10px 0 6px;}
.sqfix{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.sqfix input[type=text]{width:auto;min-width:120px;}
.sqfix input[type=file]{max-width:200px;}
.sqsend{display:flex;flex-direction:column;gap:8px;margin-top:8px;}
.sqsend .btn{align-self:flex-start;}
.phead-pad{height:12px;}
.sqfwh{margin:14px 0 8px;font-size:15px;color:var(--head);}
.sqrepbar{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;}
.sqreset{display:inline;margin:0;}
.sqgrp .gbar{display:inline-block;width:4px;height:16px;border-radius:2px;vertical-align:-2px;}
@media(max-width:640px){
  .sqrow{grid-template-columns:1fr;gap:3px;}
  .sqrow .sqlab{margin-top:4px;}
  .sqseg{width:100%;}
  .sqseg span{padding:8px 10px;}
  .sqpushf select,.sqpushf input[type=text]{width:100%;}
  .sqfix input[type=file],.sqfix input[type=text]{max-width:100%;width:100%;}
}

/* ── Completions in the Projects look (Lee, 8 Oct): band + project chips + tiles + one board
   with the find box and the sort on the left; tiles stay readable on hover ── */
.coproj{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px;}
.cowatch{grid-template-columns:repeat(6,minmax(0,1fr));}
a.pmw:hover{text-decoration:none;}
.coprog{display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap;text-decoration:none;color:var(--ink);margin:0 0 14px;padding:10px 14px;}
.coprog:hover{text-decoration:none;color:var(--ink);box-shadow:0 0 0 2px rgba(39,71,158,.18);}
.coprog-l{display:flex;flex-direction:column;gap:2px;}
.coprog-l b{color:var(--head);}
.coprog-bar{display:inline-flex;flex:1;min-width:200px;max-width:520px;height:9px;border-radius:5px;overflow:hidden;background:var(--soft2);}
.coprog-bar.small{min-width:120px;max-width:280px;flex:1 1 160px;}
.cobad{color:var(--bad);font-weight:700;}
.coboard{margin-bottom:16px;}
.cotool{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 10px;}
.cotool input[type=search]{order:0;flex:0 1 320px;min-width:200px;border:1px solid var(--inpb,#c9d2e4);border-radius:10px;padding:8px 12px;font-size:13.5px;background:var(--card,#fff);color:var(--ink);}
.cosort{display:inline-flex;gap:6px;align-items:center;margin:0;font-weight:normal;}
.cosort select{width:auto;min-width:160px;}
.colegend{margin-left:auto;display:flex;gap:10px;flex-wrap:wrap;}
.colegend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px;}
.colegend i.ring{border:2px solid #36c5f0;width:8px;height:8px;}
.cochips{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px;}
.coboard .fwchip{border:1px solid var(--line);background:var(--card,#fff);color:var(--ink);border-radius:999px;
  padding:5px 12px;font-size:12.5px;cursor:pointer;display:inline-flex;gap:5px;align-items:center;font-weight:600;}
.coboard .fwchip b{font-weight:800;}
.coboard .fwchip:hover{border-color:var(--chip,var(--blue));}
.coboard .fwchip.on{background:var(--chip,var(--blue-d,#1c2747));border-color:var(--chip,var(--blue-d,#1c2747));color:#fff;}
.coboard .chipsplit{font-size:10.5px;opacity:.8;margin-left:4px;font-weight:normal;}
.coempty{padding:14px 0;}
#fwgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;}
.cogrid-of{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;}
.coboard .fwtile{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--card,#fff);
  display:flex;flex-direction:column;gap:6px;text-decoration:none;color:var(--ink);cursor:pointer;
  box-shadow:0 1px 2px rgba(28,39,71,.05),0 4px 14px rgba(28,39,71,.04);transition:box-shadow .12s,border-color .12s;}
.coboard a.fwtile:hover,.coboard a.fwtile:focus-visible{text-decoration:none;color:var(--ink);border-color:var(--blue);
  box-shadow:0 2px 6px rgba(28,39,71,.10),0 8px 22px rgba(28,39,71,.10);}
.coboard a.fwtile *{text-decoration:none;}
.coboard .fwtile.active{border-color:#36c5f0;box-shadow:0 0 0 2px rgba(54,197,240,.25);}
.coboard .fwtile.open{border-color:var(--blue);box-shadow:0 0 0 2px rgba(39,71,158,.22);}
.coboard .oftile[data-state=fail]{border-left:4px solid var(--bad);}
.coboard .oftile[data-state=done]{border-left:4px solid var(--ok);}
.coboard .oftile{cursor:default;}
.cohead{display:flex;justify-content:space-between;align-items:center;gap:6px;}
.cohead b{font-size:13.5px;color:var(--head);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.cohead .pill{flex:0 0 auto;white-space:nowrap;}
.cohead .pill{font-size:10px;}
.cocount{font-size:11.5px;color:var(--mut);font-variant-numeric:tabular-nums;}
.costreet{font-size:11.5px;color:var(--mut);}
.cometa{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:10.5px;color:var(--mut);}
.cometa .pill{font-size:9.5px;}
.cowarn{border-left:3px solid #fdab3d;padding-left:6px;}
.coboard .fwtile .dots{display:flex;gap:3px;flex-wrap:wrap;}
.coboard .fwtile .dots span{width:11px;height:11px;border-radius:3px;background:#d5dbe3;display:inline-block;}
.fwpanel{grid-column:1/-1;margin:0;border-top:3px solid var(--blue);}
.fwpanel[hidden]{display:none;}
.fwpanelhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px;}
.fwpanelhead .fwclose{margin-left:auto;}
.cottl{color:var(--head);font-size:15px;}
.coinline{display:inline-flex;gap:5px;align-items:center;margin:0;}
.coinline input[type=url]{width:180px;font-size:11.5px;}
.colab{font-size:12px;color:var(--head);}
.coboard input.codate,.coboard .ofwo input[type=date]{width:136px;font-size:12px;padding:5px 8px;}
.coboard .coofctl select,.coboard .coinline select{width:auto;}
.cotobies{margin-top:10px;}
.cotobies th,.cotobies td{text-align:left;}
.coqa{font-size:11.5px;}
.coqa .pill{font-size:9.5px;}
.coact{display:flex;gap:4px;flex-wrap:wrap;align-items:center;margin:0;}
.coact input[type=text]{width:120px;}
.coasset{margin:0 0 6px;}
.cofw4 .coassetf{flex-direction:row;flex-wrap:wrap;gap:8px 14px;}
.cofw4{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin:0 0 8px;background:var(--soft);display:flex;flex-direction:column;gap:6px;}
/* FW review row (Lee, 8 Oct): Status · Desktop Trends · three received dates · HOD link */
.corev{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));
  gap:8px 12px;align-items:start;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 10px;background:var(--soft);}
.corevf{display:flex;flex-direction:column;gap:4px;min-width:0;}
.corevf form{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:0;}
.corevf input[type=url]{width:100%;min-width:0;font-size:12px;padding:6px 9px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);}
.corevf .corevsrc{font-size:10.5px;}
.corevmsg{font-size:10.5px;} .corevmsg.bad{color:var(--bad);}
select.corevst{width:100%;font-size:12.5px;font-weight:600;border-radius:8px;}
select.corevst.ok{background:var(--okbg);color:var(--ok);} select.corevst.warn{background:var(--warnbg);color:var(--warn);}
select.corevst.bad{background:var(--badbg);color:var(--bad);} select.corevst.pmo{background:#eef1fb;color:var(--blue);}
/* toby desktop QA trends, several per toby (Lee, 19 Oct) */
.dqbtn{all:unset;cursor:pointer;display:flex;flex-wrap:wrap;gap:3px;min-height:22px;align-items:center;max-width:100%;}
.dqbtn:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:6px;}
.dqchip{background:color-mix(in srgb,var(--blue) 12%,var(--card));color:var(--blue);border-radius:999px;padding:1px 7px;font-size:10.5px;font-weight:700;white-space:nowrap;}
.dqnone{color:var(--mut);font-size:11px;border:1px dashed var(--line);border-radius:6px;padding:1px 7px;}
.dqpop{position:fixed;z-index:80;width:232px;background:var(--card);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 8px 24px rgba(28,39,71,.18);padding:8px 10px;display:flex;flex-direction:column;gap:6px;}
.dqpop[hidden]{display:none;}
.dqpop > b{font-size:12px;color:var(--head);}
.dqopts{display:flex;flex-direction:column;gap:3px;max-height:200px;overflow:auto;font-size:12.5px;}
.dqopts label{display:flex;gap:6px;align-items:center;cursor:pointer;}
.dqnew{display:flex;gap:6px;margin:0;} .dqnew input{flex:1;min-width:0;font-size:12px;}
.cotrend{position:relative;}
.cotrendsum{cursor:pointer;list-style:none;font-size:12.5px;border:1px solid var(--line);border-radius:8px;padding:6px 26px 6px 9px;
  background:var(--card,#fff);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;}
.cotrendsum::-webkit-details-marker{display:none;}
.cotrendsum::after{content:"";position:absolute;right:10px;top:50%;width:6px;height:6px;margin-top:-5px;
  border-right:2px solid var(--mut);border-bottom:2px solid var(--mut);transform:rotate(45deg);}
.cotrendf{position:absolute;z-index:20;left:0;top:calc(100% + 4px);min-width:230px;background:var(--card,#fff);border:1px solid var(--line);
  border-radius:10px;padding:8px 10px;box-shadow:0 8px 24px rgba(28,39,71,.16);flex-direction:column;align-items:stretch !important;}
.cotrendopts{display:flex;flex-direction:column;gap:3px;max-height:220px;overflow:auto;font-size:12.5px;}
.cotrendopts label{display:flex;gap:6px;align-items:center;cursor:pointer;}
.cotrendnew{display:flex;gap:6px;margin-top:6px;} .cotrendnew input{flex:1;min-width:0;font-size:12px;}
.codesk{min-width:300px;}
.codeskgrid{display:grid;grid-template-columns:repeat(2,minmax(136px,1fr));gap:4px 10px;}
.codeskf{display:flex;flex-direction:column;gap:1px;margin:0;}
.codeskf label{font-size:10.5px;white-space:nowrap;}
.codeskf select{width:136px;font-size:12px;padding:5px 8px;}
.cofwinfo{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 6px;font-size:12px;}
@media(max-width:640px){.corev{grid-template-columns:1fr 1fr;}.corevf-st,.corevf-hod{grid-column:1/-1;}
  .cotrendf{min-width:0;width:min(280px,80vw);} .codesk{min-width:0;} .codeskgrid{grid-template-columns:1fr 1fr;}
  .codeskf select,.coboard .codeskf input.codate{width:100%;}
  table.stack td.codesk{display:block;text-align:left;} table.stack td.codesk::before{display:block;margin-bottom:4px;}
  .codeskf label{white-space:normal;}}
.coassetf{display:flex;flex-direction:column;gap:8px;}
.coassetf form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0;}
.coassetf select{width:auto;font-size:12.5px;}
.coassetev input[type=text]{width:220px;font-size:12px;}
.typetag{display:inline-block;font-size:9.5px;font-weight:800;padding:1px 5px;border-radius:4px;vertical-align:1px;}
.typetag.fw{background:#e6ecf8;color:#27479e;} .typetag.of{background:#f1e6fb;color:#7a3db8;}
.typetag.as{background:#e3f5ec;color:#037f4c;}
.qapill{display:inline-block;font-size:10px;padding:1px 6px;border-radius:5px;margin:1px 2px 1px 0;background:var(--soft2);white-space:nowrap;color:var(--ink);}
.qa-pass{background:var(--okbg);} .qa-fail{background:var(--badbg);} .qa-adv{background:rgba(34,80,145,.18);} .qa-rev{background:var(--soft2);}
.asset-inst.installed{background:var(--okbg);} .asset-inst.issue{background:var(--badbg);} .asset-inst.in_progress{background:#fff1dc;}
.ofwo{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:4px;}
.ofwoform{display:inline-flex;gap:5px;align-items:center;flex-wrap:wrap;margin:0;}
.cofwlinks{display:flex;gap:5px;flex-wrap:wrap;}
.cofwl{text-decoration:none;font-size:11px;font-weight:600;padding:3px 8px;border-radius:6px;border:1px solid var(--line);color:var(--mut);}
.cofwl:hover{text-decoration:none;filter:brightness(.95);}
.cofwl.fail{background:#d4494f;color:#fff;border-color:#d4494f;}
.cofwl.pass{background:#2fa46a;color:#fff;border-color:#2fa46a;}
.cofwl.wip{background:#f0a13c;color:#fff;border-color:#f0a13c;}
.coofctl{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:2px;}
.coofctl select{font-size:12px;max-width:230px;}
.ofev summary{cursor:pointer;font-size:12px;color:var(--blue);}
.ofev table{font-size:12px;margin-top:6px;}
/* the core billing gate on an OF tile (Lee, 12 Oct): civils claimed, core in, OF walk-off passed */
.cogate{margin-top:6px;border:1px solid var(--line);border-radius:10px;padding:7px 9px;background:var(--soft2,#f6f8fb);}
.cogate .gh{display:flex;justify-content:space-between;align-items:center;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);font-weight:700;margin-bottom:3px;}
.cogate .gh .ok{color:var(--ok);}
.cogate .gr{display:flex;gap:7px;align-items:flex-start;font-size:12px;padding:2px 0;}
.cogate .gr i{flex:0 0 16px;height:16px;border-radius:50%;margin-top:1px;font-style:normal;font-size:10px;font-weight:800;color:#fff;display:flex;align-items:center;justify-content:center;background:#c7ced8;}
.cogate .gr.ok i{background:#2fa46a;}
.cogate .gr.no i{background:#d4494f;}
.cogate .gr small{display:block;color:var(--mut);font-size:10.5px;}
.cogate .corec summary{cursor:pointer;font-size:11px;color:var(--blue);margin-top:4px;}
.cogate form{margin-top:5px;display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.cogate form input[type=date]{width:auto;font-size:12px;}
.coreprog{font-size:11px;color:#0b6e8f;font-weight:600;margin:2px 0 4px;}
.coreprog .bar{display:block;margin-top:2px;height:4px;border-radius:2px;background:#d9e3ee;overflow:hidden;}
.coreprog .bar i{display:block;height:100%;background:#0b6e8f;}
.cofwl.start{background:#fff3e8;border-color:#f07a1a;color:#b35500;}
.cofwl.other{border-style:dashed;}
.cofwlinks .coar{display:inline-block;width:6px;height:6px;border-top:2px solid #9aa6b8;border-right:2px solid #9aa6b8;transform:rotate(45deg);align-self:center;margin:0 1px;}
/* the work instructions preview */
.wiroute{display:flex;gap:4px;flex-wrap:wrap;}
.wiroute span{font-size:11.5px;font-weight:600;padding:2px 7px;border-radius:6px;border:1px solid var(--line);}
.wiroute span.start{background:#fff3e8;border-color:#f07a1a;color:#b35500;}
.wiroute span.end{background:#e6f1f7;border-color:#0b6e8f;color:#0b6e8f;}
.wiroute span.other{border-style:dashed;color:var(--mut);}
.wiroute span.moved{box-shadow:0 0 0 2px #f0a13c;}
.cofoot{margin-top:8px;font-size:11px;}
.cofin{border-top:3px solid var(--blue);}
.cofinrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px;}
.cofinrow .pill{font-size:10px;text-decoration:none;}
.cofinback{margin-left:auto;}
.coaddrow{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px 12px;margin-bottom:8px;}
.coaddrow .field{margin:0;}
@media(max-width:900px){.cowatch{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:640px){
  .cowatch{grid-template-columns:repeat(2,minmax(0,1fr));}
  #fwgrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));}
  .cogrid-of{grid-template-columns:1fr;}
  .cotool input[type=search]{flex:1 1 100%;}
  .colegend{margin-left:0;}
  .coassetev input[type=text]{width:100%;}
}
@media(max-width:640px){
  .poform label{min-width:0;flex:1 1 100%;}
  dialog.podlg{padding:12px;}
  .hacfilt,.hacfilt select{width:100%;max-width:none;}
  input.hacfind{max-width:none;}
  .hactm input{width:100%;}
}
/* Supplier payments — HAC & invoice tracker + the HAC (Lee, 8 Oct) */
.mkbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0 0 10px;}
.mkbar .sp{flex:1;}
.mkbar .chips{display:inline-flex;gap:4px;}
.mkgrp{border-left:4px solid var(--c);}
.hk-card{text-decoration:none;color:inherit;}
.hk-card:hover{text-decoration:none;box-shadow:0 2px 6px rgba(28,39,71,.14),0 6px 16px rgba(28,39,71,.08);}
.hk-card .ref{font-weight:800;color:var(--head);font-size:12.5px;word-break:break-word;}
.hk-card .val{font-weight:800;color:var(--head);}
.hk-card .row{display:flex;justify-content:space-between;gap:6px;font-size:11.5px;color:var(--mut);}
.hk-card .acts{display:flex;gap:5px;flex-wrap:wrap;margin-top:4px;}
.hk-card .pill{font-size:10px;}
.hk-po{border-left-style:dashed !important;}
.hk-flag{font-size:10.5px;font-weight:700;color:var(--bad);}
.hk-inv{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin-top:4px;}
.hk-inv input[type=text],.hk-inv input[type=number],.hk-inv input[type=date]{flex:1 1 90px;min-width:0;font-size:12px;padding:4px 7px;}
.hk-sinv .ref a{color:inherit;}
.vr{display:inline-block;background:var(--badbg);color:var(--bad);font-weight:800;font-size:10.5px;border-radius:6px;padding:1px 6px;}
.hacfilt select{font-size:12.5px;padding:5px 8px;max-width:220px;}
/* the PO board (Lee, 9 Oct) */
.poboard .pmk-col{flex-basis:262px;}
.pocard{display:flex;flex-direction:column;gap:3px;}
.pocard .ref{font-weight:800;color:var(--head);font-size:12.5px;text-decoration:none;word-break:break-word;}
.pocard .ref:hover{text-decoration:underline;}
.pocard .ty,.podoc .ty{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;border-radius:5px;padding:1px 6px;color:#fff;background:var(--t,#579bfc);margin-right:5px;vertical-align:1px;}
.pocard .row{display:flex;justify-content:space-between;gap:6px;font-size:11.5px;color:var(--mut);}
.pocard .row b{color:var(--head);}
.pocard .pocdesc{font-size:11px;line-height:1.35;}
.pocard .files,.pocfiles{display:flex;gap:4px;flex-wrap:wrap;}
.pocard .files:empty{display:none;}
.pocard .files a,.pocfiles a{font-size:10.5px;font-weight:700;border:1px solid var(--line);border-radius:5px;padding:0 6px;text-decoration:none;color:var(--blue);background:var(--card,#fff);}
.pocard .acts{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin:3px 0 0;}
.pocard .acts input[type=text],.pocard .acts input[type=number]{flex:1 1 90px;min-width:0;font-size:12px;padding:4px 7px;}
.pocard .poissue input[type=file]{flex:1 1 100%;font-size:10.5px;}
.pocard .pill{font-size:9.5px;}
.potm{display:flex;flex-direction:column;gap:3px;border-top:1px dashed var(--line);padding-top:4px;margin-top:2px;}
/* a booking's two loads — quote / application, then Grain's approval; done = purple (Lee, 9 Oct) */
.tmsteps{display:flex;flex-direction:column;gap:5px;}
.tmstep > summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:8px;
  font-size:11.5px;font-weight:800;border:1px solid var(--blue);color:var(--blue);background:var(--card,#fff);}
.tmstep > summary::-webkit-details-marker{display:none;}
.tmstep.done > summary{background:#784bd1;border-color:#784bd1;color:#fff;}
.tmstep form{margin-top:4px;}
.podoc .potm .row{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;}
.podoc .potm .acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:4px 0;}
.pogrid{display:grid !important;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));padding:8px 0;}
.podoc .podoc-h{margin:0 0 10px;}
.podoc .podoc-h h2{margin:0;font-size:19px;color:var(--head);}
.podoc .podoc-h .pill{font-size:11px;vertical-align:3px;}
.podoc .row2{font-size:13px;margin:2px 0;}
.poform{display:flex;gap:8px 10px;flex-wrap:wrap;align-items:flex-end;}
.poform label{display:flex;flex-direction:column;gap:3px;font-size:11.5px;color:var(--mut);margin:0;min-width:120px;}
.poform label.wide{flex:1 1 220px;}
.poform input,.poform select{font-size:13px;}
.poamend{margin-top:10px;}
.poadmin{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;border-left:4px solid var(--blue);}
.poamend summary{cursor:pointer;font-weight:700;color:var(--blue);font-size:13px;}
.poamend .poform{margin-top:8px;}
dialog.podlg{border:0;border-radius:14px;padding:16px 18px;max-width:min(880px,94vw);width:880px;box-shadow:0 10px 40px rgba(28,39,71,.3);background:var(--card,#fff);color:inherit;}
dialog.podlg::backdrop{background:rgba(20,28,52,.45);}
.podlg-h{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 6px;}
.podlg-h h3{margin:0;color:var(--head);}
.podlg h4{margin:14px 0 6px;color:var(--head);font-size:13.5px;}
input.hacfind{flex:1 1 260px;max-width:420px;font-size:13px;padding:7px 10px;}
.hk-kind{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--mut);background:var(--soft2);border-radius:5px;padding:1px 5px;margin-right:4px;}
.hacsub{margin:-4px 0 4px;font-size:12.5px;color:rgba(255,255,255,.78);}
.hacsub a{color:#cfe3ff;}
.hactm{display:flex;gap:10px 18px;flex-wrap:wrap;align-items:flex-end;padding:10px 0 2px;border-top:1px solid var(--line);margin-top:8px;}
.hactm label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.03em;margin:0;}
.hactm input{width:170px;font-size:14px;font-weight:700;text-align:right;}
.hactm .v{font-weight:800;color:var(--head);font-size:15px;}
.hacdoc{max-width:1000px;}
.hacdoc .card{margin-bottom:12px;}
.hach{margin:0 0 8px;color:var(--head);font-size:14px;}
.hacgrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px 14px;}
.hacgrid .k,.hacsig .k{font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.03em;}
.hacgrid .v,.hacsig .v{font-weight:700;color:var(--head);}
.hacgrid input.hacdate{width:100%;font-size:12.5px;padding:5px 8px;}
input.hacqty{width:80px;text-align:right;}
.qc{display:grid;grid-template-columns:40px 1fr auto;gap:4px 10px;align-items:center;font-size:13px;padding:6px 0;border-bottom:1px solid var(--line);}
.qc:last-of-type{border-bottom:0;}
.qc .n{color:var(--mut);font-weight:700;}
.qcsec{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 4px;flex-wrap:wrap;}
.yn{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.yn label{display:inline-flex;margin:0;cursor:pointer;}
.yn input{position:absolute;opacity:0;width:1px;height:1px;}
.yn span{padding:5px 11px;font-size:12.5px;border-right:1px solid var(--line);background:var(--card);}
.yn label:last-child span{border-right:0;}
.yn input:checked + span{background:var(--ok);color:#fff;}
.yn input[value=no]:checked + span{background:var(--bad);}
.yn input[value=na]:checked + span{background:var(--mut);}
.yn input:focus-visible + span{outline:2px solid var(--blue);outline-offset:-2px;}
.qcans{font-weight:700;font-size:12.5px;}
.qcans.yes{color:var(--ok);} .qcans.no{color:var(--bad);} .qcans.na{color:var(--mut);}
.hacsig{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.hacsigimg{height:54px;max-width:260px;border:1px solid var(--line);border-radius:8px;background:#fff;}
.hacinv{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 12px;}
.hacacts{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px;}
.hacacts form{margin:0;}
.hacback{display:inline-flex;gap:6px;align-items:center;}
.hacback input{width:240px;}
.btn.green,.btn.green:hover{background:#037f4c;border-color:#037f4c;color:#fff;}
.btn.amber,.btn.amber:hover{background:#fff1dc;border-color:#e0a13c;color:#8a5a00;}
.btn.fin,.btn.fin:hover{background:#eef1fb;border-color:var(--blue);color:var(--blue);}
.paybtns{display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center;}
.cosel{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;color:var(--mut);}
.selbar{position:sticky;bottom:8px;z-index:30;background:var(--band,#1c2747);color:#fff;border-radius:12px;padding:10px 14px;display:flex;gap:10px;
  align-items:center;flex-wrap:wrap;box-shadow:0 -4px 16px rgba(0,0,0,.18);margin-top:10px;}
.selbar[hidden]{display:none;}
.selbar .btn{background:#fff;color:#1c2747;border-color:#fff;}
.selbar .note{color:#cfd8ee;}
@media(max-width:640px){.hacgrid{grid-template-columns:1fr 1fr;}.qc{grid-template-columns:34px 1fr;}.qc .yn,.qc .qcans{grid-column:2;}
  .hacinv{grid-template-columns:1fr;}.hacback input{width:100%;}}
/* Client invoices boards — AFP, TM / TTRN / TTRO, Small works (Lee, 9 Oct) */
.cikanban .pmk-col{flex-basis:276px;}
.ciraise .cisecs{display:flex;gap:4px;flex-wrap:wrap;}
.ciraise .cisecs .pill{cursor:pointer;font-weight:600;color:var(--head);background:var(--okbg,#e6f6ee);}
.ciraise .cisecs input{margin:0 2px 0 0;vertical-align:-1px;}
.cibad{color:var(--bad);}
.cied{font-size:12px;}
.cied summary{cursor:pointer;font-weight:700;color:var(--blue);font-size:11.5px;}
.cied form{display:flex;flex-wrap:wrap;gap:5px;align-items:flex-end;margin-top:6px;}
.cied label{display:flex;flex-direction:column;gap:2px;font-size:10.5px;color:var(--mut);flex:1 1 110px;min-width:0;}
.cied label.ck{flex-direction:row;align-items:center;gap:6px;font-size:11.5px;}
.cied input[type=text],.cied input[type=date],.cied input[type=number],.cied select{font-size:12px;padding:4px 7px;width:100%;min-width:0;}
.cied .ciq input{flex:1 1 90px;min-width:0;font-size:12px;padding:4px 7px;}
.ciinfo{margin:0 0 10px;}
.ciinfo summary{cursor:pointer;font-size:12px;font-weight:700;color:var(--mut);}
.ciinfo p{margin:6px 0 0;}
/* Small projects (Lee, 9 Oct): the two ways to the customer's approval, the start choice, the price table */
.spways{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.spway{border:1px solid var(--line);border-radius:10px;padding:10px 12px;}
.spway.on{border-color:var(--blue);box-shadow:inset 3px 0 0 var(--blue);}
.spway .note{margin:4px 0 8px;}
fieldset.spstart{border:1px solid var(--line);border-radius:10px;padding:6px 10px;margin:0;display:flex;gap:4px 14px;flex-wrap:wrap;flex:1 1 100%;}
fieldset.spstart legend{font-size:11.5px;color:var(--mut);padding:0 4px;}
fieldset.spstart label{flex-direction:row;align-items:center;gap:6px;min-width:0;color:var(--text,inherit);font-size:13px;}
fieldset.spstart input{width:auto;}
.sptable input{min-width:0;}
.sptable td.spsv,.sptable td.spcv,.sptable td.spmv,.sptable tfoot th{font-variant-numeric:tabular-nums;white-space:nowrap;}
@media(max-width:640px){.spways{grid-template-columns:1fr;}.sptable input{width:100% !important;}}
/* Projects → Risks (Lee, 9 Oct): band tiles, heat map, by-category / by-project bars */
a.pkpi{text-decoration:none;display:block;}
a.pkpi:hover{background:rgba(255,255,255,.14);}
.pkpi.rk-red{background:rgba(229,72,77,.28);border-color:rgba(229,72,77,.55);}
.pkpi.rk-amber{background:rgba(230,162,60,.26);border-color:rgba(230,162,60,.55);}
.pkpi.rk-green{background:rgba(46,164,79,.26);border-color:rgba(46,164,79,.5);}
.rkgrid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1fr);gap:14px;margin-bottom:14px;}
.rkgrid .card{margin:0;}
.rheat{display:grid;grid-template-columns:92px repeat(5,minmax(0,1fr));gap:4px;align-items:stretch;}
.rh-y{font-size:10.5px;color:var(--mut);display:flex;align-items:center;justify-content:flex-end;padding-right:6px;text-align:right;}
.rh-x{font-size:10.5px;color:var(--mut);text-align:center;padding-top:2px;}
.rh-c{height:38px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;color:#fff;opacity:.28;}
.rh-c.has{opacity:1;box-shadow:inset 0 0 0 2px rgba(0,0,0,.08);}
.rh-c.r{background:#e5484d;} .rh-c.a{background:#e6a23c;} .rh-c.g{background:#2ea44f;}
.rkbar{display:grid;grid-template-columns:minmax(90px,140px) 1fr 28px;gap:8px;align-items:center;margin:0 0 8px;font-size:12.5px;}
.rkbar .k{color:var(--text,inherit);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rkbar .bar{display:flex;height:12px;background:var(--soft2,#eef1f7);border-radius:6px;overflow:hidden;}
.rkbar .bar i{display:block;height:100%;}
.rkbar .bar i.r{background:#e5484d;} .rkbar .bar i.a{background:#e6a23c;} .rkbar .bar i.g{background:#2ea44f;}
.rkbar b{text-align:right;font-variant-numeric:tabular-nums;}
.rktable tr.rk-red td:first-child{box-shadow:inset 4px 0 0 #e5484d;}
.rktable tr.rk-amber td:first-child{box-shadow:inset 4px 0 0 #e6a23c;}
.rktable tr.rk-green td:first-child{box-shadow:inset 4px 0 0 #2ea44f;}
.rktable tr.rk-closed{opacity:.6;}
.rk-late{color:var(--bad);font-weight:700;}
@media(max-width:900px){.rkgrid{grid-template-columns:1fr;}}
@media(max-width:640px){.rheat{grid-template-columns:64px repeat(5,minmax(0,1fr));}.rh-c{height:32px;}}
/* a band with no tabs (Quotes and other single pages, Lee 9 Oct): even padding all round + a subtitle */
.phead.solo{padding:20px 22px 18px;}
.phead.solo .phead-top{margin-bottom:0;}
.phead-sub{margin:8px 0 0;font-size:13px;line-height:1.45;color:rgba(255,255,255,.74);max-width:760px;}
/* Small projects overview cards (Lee, 9 Oct) */
.spcust{color:var(--blue);font-size:14px;margin:18px 0 10px;border-bottom:1px solid var(--line);padding-bottom:5px;}
.spstage{display:inline-block;font-size:10.5px;font-weight:800;padding:3px 9px;border-radius:999px;color:#fff;background:var(--c,#579bfc);white-space:nowrap;}
.spcard .pstat a{color:var(--blue);}
details.spconv{margin-top:14px;border-top:1px solid var(--line);padding-top:10px;}
details.spconv summary{cursor:pointer;font-weight:700;color:var(--blue);font-size:13px;}
/* Today (Lee, 9 Oct): the week band, day-by-day bars, active streets, pipeline tiles */
.tdate{font-size:13px;font-weight:600;color:rgba(255,255,255,.7);margin-left:8px;letter-spacing:0;}
.tdof{font-size:14px;font-weight:600;color:rgba(255,255,255,.6);}
.pkpis .ovbar{margin:6px 0 4px;}
.tdgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:14px;margin-bottom:14px;}
.tdgrid .card{margin:0;}
.tdweek{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;align-items:end;height:170px;}
.tdday{display:flex;flex-direction:column;align-items:center;height:100%;gap:4px;}
.tdday .v{font-size:12px;font-weight:800;color:var(--head);min-height:16px;font-variant-numeric:tabular-nums;}
.tdday .col{position:relative;flex:1;width:100%;max-width:46px;background:var(--soft2,#eef1f7);border-radius:6px 6px 2px 2px;display:flex;align-items:flex-end;}
.tdday .col i{display:block;width:100%;background:#27479e;border-radius:6px 6px 2px 2px;}
.tdday.on .col i{background:#36c5f0;}
.tdday.fut .col{background:repeating-linear-gradient(135deg,var(--soft2,#eef1f7) 0 6px,transparent 6px 12px);}
.tdday .tgt{position:absolute;left:-4px;right:-4px;height:0;border-top:2px dashed #e5484d;}
.tdday .k{font-size:11.5px;color:var(--mut);font-weight:700;}
.tdday.on .k{color:var(--blue);}
.tdstreets{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow:auto;}
.tdst{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1.3fr) auto;gap:8px;align-items:center;padding:7px 10px;
  border:1px solid var(--line);border-radius:9px;text-decoration:none;color:inherit;font-size:12.5px;}
.tdst:hover{border-color:var(--blue);}
.tdst.closing{border-color:#e5484d;box-shadow:inset 4px 0 0 #e5484d;}
.tdst.late{box-shadow:inset 4px 0 0 #e6a23c;}
.tdst .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tdst .end{font-size:11.5px;color:var(--mut);white-space:nowrap;}
.pkpis.tdmini{grid-template-columns:repeat(3,minmax(0,1fr));padding:12px;}
.tdhead{margin:4px 0 8px;color:var(--head);font-size:15px;}
.tdtiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:16px;}
.tdtile{margin:0;text-decoration:none;display:block;border-left:4px solid var(--ok);}
.tdtile.wait{border-left-color:var(--warn);} .tdtile.hot{border-left-color:var(--bad);}
.tdtile .n{font-size:26px;font-weight:800;color:var(--head);} .tdtile.hot .n{color:var(--bad);}
.tdtile .t{font-weight:700;color:var(--head);}
.tdtile:hover{border-color:var(--blue);}
.btn.tdone{padding:3px 10px;font-size:11.5px;}
@media(max-width:900px){.tdgrid{grid-template-columns:1fr;}}
@media(max-width:640px){.pkpis.tdmini{grid-template-columns:1fr 1fr;}.tdst{grid-template-columns:1fr auto;}.tdst > .note{grid-column:1 / -1;order:3;}}
/* Home + Tasks in the new look (Lee, 9 Oct) */
.homeband .homekpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:14px;}
.homekpis .hk{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border-radius:12px;text-decoration:none;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);color:#fff;}
.homekpis .hk b{font-size:22px;line-height:1.1;}
.homekpis .hk span{font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:rgba(255,255,255,.7);}
.homekpis .hk.bad{background:rgba(229,72,77,.3);border-color:rgba(229,72,77,.55);}
.homekpis .hk.warn{background:rgba(230,162,60,.28);border-color:rgba(230,162,60,.55);}
.homekpis .hk.ok{background:rgba(46,164,79,.28);border-color:rgba(46,164,79,.5);}
a.hk:hover{background:rgba(255,255,255,.14);}
.hometile{border-radius:14px;border-top:4px solid var(--blue);box-shadow:0 2px 10px rgba(20,33,58,.05);padding:16px 18px;}
.homegrid .hometile:nth-child(4n+2){border-top-color:#36c5f0;}
.homegrid .hometile:nth-child(4n+3){border-top-color:#2ea44f;}
.homegrid .hometile:nth-child(4n+4){border-top-color:#e6a23c;}
.hometile .ico{display:none;}
.hometile .tt{margin-top:0;}
.homenew{border-radius:14px;}
.taskband .ptabs > a{display:inline-flex;align-items:center;gap:6px;}
.taskband .tbn{font-size:11px;font-weight:700;background:rgba(255,255,255,.16);border-radius:999px;padding:1px 7px;}
.taskband .ptabs > a.on .tbn{background:var(--soft2);color:var(--mut);}
.taskband .tbsep{width:1px;align-self:stretch;margin:8px 6px;background:rgba(255,255,255,.2);}
details.tbnew{position:relative;}
details.tbnew summary{list-style:none;cursor:pointer;}
details.tbnew summary::-webkit-details-marker{display:none;}
.tbnewform{position:absolute;right:0;top:36px;z-index:40;background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:12px;display:flex;flex-direction:column;gap:8px;box-shadow:0 10px 30px rgba(20,33,58,.2);min-width:240px;}
@media(max-width:640px){.homeband .homekpis{grid-template-columns:repeat(3,minmax(0,1fr));}.taskband .tbsep{display:none;}}
/* the band on every page (Lee, 9 Oct sweep) */
.phead .phead-sub + .ptabs{margin-top:10px;}
.phead-top h2 .exec-tag{vertical-align:4px;font-size:10px;background:rgba(255,255,255,.14);color:#dff6ff;border-color:rgba(255,255,255,.25);}
.phead-sub .pill,.phead-sub .note{color:rgba(255,255,255,.8);}
.phead-sub a{color:#9fd8ef;}
.phead-acts .note{color:rgba(255,255,255,.75);}
.phead-acts select,.phead-acts input{font-size:12.5px;}
/* Huddle (Lee, 9 Oct): numbers in the band, views as tabs */
.huddleband .pkpis.hdkpis{background:none;box-shadow:none;padding:0;margin:14px 0 6px;grid-template-columns:repeat(6,minmax(0,1fr));}
.pkpi .num.hdsm{font-size:16px;line-height:1.3;}
.huddleband .tbn{font-size:11px;font-weight:700;background:rgba(255,255,255,.16);border-radius:999px;padding:1px 7px;}
.huddleband .ptabs > a.on .tbn{background:var(--soft2);color:var(--mut);}
.hdgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:start;}
.hdgrid > .card{margin:0;}
@media(max-width:900px){.huddleband .pkpis.hdkpis{grid-template-columns:repeat(3,minmax(0,1fr));}.hdgrid{grid-template-columns:1fr;}}
@media(max-width:640px){.huddleband .pkpis.hdkpis{grid-template-columns:repeat(2,minmax(0,1fr));}}
.phead-acts .pmtoolpop .note,.phead .pmtoolpop .note{color:var(--mut);}
.phead .pmtoolpop{color:var(--ink,#14213a);}

/* recharge permit search (Lee, 13 Oct) */
.rcpsearch{position:relative;}
.rcpsearch input[type=text]{width:100%;}
.rcpres{position:absolute;left:0;right:0;top:100%;margin-top:4px;background:var(--card,#fff);border:1px solid var(--line);
  border-radius:10px;box-shadow:0 8px 24px rgba(20,33,58,.15);z-index:20;overflow:hidden;max-height:420px;overflow-y:auto;}
.rcpres .ri{padding:8px 12px;border-bottom:1px solid var(--line);font-size:13px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;cursor:pointer;}
.rcpres .ri.on,.rcpres .ri:hover{background:#eef3ff;}
.rcpres .ri.none{color:var(--mut);cursor:default;}
.rcpres small{color:var(--mut);}
.rcpres mark{background:#fff3c4;padding:0 1px;}
/* Supplier payments: recharges to recover (Lee, 13 Oct) — full width */
.rcbtn b{background:#e2445c;color:#fff;border-radius:99px;padding:0 7px;font-size:11px;margin-left:4px;}
.rcrec{margin:14px 0;}
.rcrec button[disabled]{opacity:.4;cursor:not-allowed;}

/* SiteReady (Lee, 13 Oct) — weekly site tests: staff pages + the public phone test */
.srtbl td,.srtbl th{vertical-align:middle;}
.srbar{height:8px;border-radius:4px;background:#e3e9f2;overflow:hidden;min-width:70px;}
.srbar i{display:block;height:100%;background:var(--blue);}
.srbar.ok i{background:#2fa46a;} .srbar.warn i{background:#e0a020;} .srbar.bad i{background:#d4494f;}
.srgrid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:14px;align-items:start;}
@media(max-width:900px){.srgrid{grid-template-columns:1fr;}}
.srq{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:var(--card);}
.srq.bad{border-color:var(--bad);}
.srq .qh{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:6px;}
.srq .qn{font-weight:800;color:var(--blue);font-size:12px;letter-spacing:.04em;text-transform:uppercase;}
.srq .qt{font-weight:700;color:var(--head);font-size:14px;margin-bottom:4px;}
.srq .opt{display:flex;gap:8px;align-items:center;padding:6px 9px;border:1px solid var(--line);border-radius:8px;margin:5px 0;font-size:13px;}
.srq .opt.right{border-color:#2fa46a;background:var(--okbg);}
.srq .opt .tag{margin-left:auto;font-size:10.5px;font-weight:800;color:var(--ok);text-transform:uppercase;}
.srq .opt input[type=text]{flex:1;min-width:0;}
.srq .why{font-size:12px;color:var(--mut);margin-top:6px;}
.srq .qacts{display:flex;gap:6px;flex-wrap:wrap;}
.srq .qacts form{margin:0;}
.srq img.srph{max-width:220px;max-height:160px;border-radius:8px;border:1px solid var(--line);display:block;margin:4px 0;}
.srflags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}
.srflags label{cursor:pointer;}
.srrun{display:grid;grid-template-columns:auto 1fr;gap:22px;align-items:center;}
@media(max-width:700px){.srrun{grid-template-columns:1fr;justify-items:center;text-align:center;}}
.srrun .qr{background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px;width:200px;}
.srrun .qr svg{display:block;width:100%;height:auto;}
.srcap{font-size:11px;text-transform:uppercase;font-weight:700;letter-spacing:.06em;color:var(--mut);margin-top:8px;}
.srcode{font-size:34px;font-weight:800;letter-spacing:.12em;color:var(--head);}
.srlink{font-family:ui-monospace,Menlo,monospace;font-size:13px;background:var(--soft2);padding:6px 10px;border-radius:8px;display:inline-block;word-break:break-all;}
.srwk{display:flex;align-items:flex-end;gap:10px;height:130px;padding-top:8px;}
.srwk div{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;font-size:11px;color:var(--mut);text-align:center;}
.srwk div i{display:block;width:100%;max-width:46px;background:var(--blue);border-radius:5px 5px 0 0;min-height:2px;}
.srwk div i.now{background:#36c5f0;}
.srwk div b{color:var(--head);font-size:11.5px;}
.srbank{max-height:520px;overflow:auto;}
.srbank label{display:flex;gap:8px;align-items:flex-start;padding:6px 2px;border-bottom:1px solid var(--line);font-size:13px;cursor:pointer;}
.srbank .tp{font-size:11px;color:var(--mut);text-transform:uppercase;font-weight:700;letter-spacing:.05em;margin:10px 0 2px;}
.srimp .srq .opt{padding:4px 8px;}
.srmore[hidden]{display:none;}
/* the public phone test */
body.srpubbody{background:#eef2f8;}
.srpub{max-width:520px;margin:0 auto;padding:0 16px 30px;color:#1c2747;}
.srpub .pubtop{background:linear-gradient(135deg,#1c2747,#27479e);color:#fff;padding:16px 16px 18px;border-radius:0 0 18px 18px;margin:0 -16px 14px;}
.srpub .pubtop img{height:22px;display:block;}
.srpub .pubtop h1{margin:10px 0 2px;font-size:20px;color:#fff;}
.srpub .pubtop p{margin:0;color:#c9d6f3;font-size:13px;}
.srpub .pcard{background:#fff;border-radius:14px;padding:14px;box-shadow:0 1px 2px rgba(20,30,60,.08);margin-bottom:12px;}
.srpub .pcard label.lbl{display:block;font-weight:700;font-size:13px;color:#1c2747;margin:0 0 5px;}
.srpub .pcard input[type=text],.srpub .pcard select{width:100%;box-sizing:border-box;font-size:16px;padding:11px 12px;border:1px solid #cfd8e6;border-radius:10px;margin-bottom:12px;background:#fff;color:#1c2747;}
.srpub .pbtn{display:block;width:100%;text-align:center;background:#27479e;color:#fff;font-weight:800;font-size:16px;padding:14px;border-radius:12px;border:0;cursor:pointer;text-decoration:none;box-sizing:border-box;}
.srpub .pbtn[disabled]{opacity:.5;cursor:default;}
.srpub .pbtn.ghost{background:#fff;color:#27479e;border:1px solid #27479e;}
.srpub .prow{display:flex;gap:10px;}
.srpub .prow .pbtn{flex:1;}
.srpub .prog{height:6px;border-radius:3px;background:#dbe3f0;overflow:hidden;margin:4px 0 12px;}
.srpub .prog i{display:block;height:100%;background:#36c5f0;transition:width .2s;}
.srpub .pq{font-size:18px;font-weight:800;color:#1c2747;line-height:1.3;margin:0 0 12px;}
.srpub .pans{display:block;border:2px solid #d7dfeb;border-radius:12px;padding:14px;margin-bottom:9px;font-size:15px;background:#fff;color:#1c2747;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;font-family:inherit;}
.srpub .pans.sel{border-color:#27479e;background:#eef3ff;font-weight:700;}
.srpub .pans.right{border-color:#2fa46a;background:#eefaf3;}
.srpub .pans.wrong{border-color:#d4494f;background:#fdeeee;}
.srpub .pmeta{display:flex;justify-content:space-between;font-size:12px;color:#5d6a80;font-weight:700;}
.srpub .scbox{text-align:center;padding:10px 0 4px;}
.srpub .scnum{font-size:46px;font-weight:900;color:#1f7a45;}
.srpub .scnum.fail{color:#b3261e;}
.srpub .sclbl{font-size:13px;color:#5d6a80;}
.srpub .srpass{display:inline-block;background:#e3f6ea;color:#1f7a45;font-weight:800;border-radius:20px;padding:4px 14px;margin-top:6px;}
.srpub .srpass.fail{background:#fdeeee;color:#b3261e;}
.srpub .namehit{border:1px solid #cfd8e6;border-radius:10px;margin:-8px 0 12px;overflow:hidden;}
.srpub .namehit button{display:block;width:100%;text-align:left;padding:10px 12px;border:0;border-bottom:1px solid #eef1f6;font-size:15px;background:#fff;color:#1c2747;font-family:inherit;cursor:pointer;}
.srpub .namehit button.on{background:#eef3ff;font-weight:700;}
.srpub .namehit button.other{color:#27479e;}
.srpub .picked{font-size:13px;color:#1f7a45;font-weight:700;margin:-6px 0 12px;}
.srpub .pfoot{font-size:11.5px;color:#5d6a80;text-align:center;margin-top:10px;}
.srpub .pwhy{font-size:13px;color:#5d6a80;margin:6px 0 0;}
.srpub .pflash{border-radius:10px;padding:10px 12px;margin-bottom:12px;font-size:14px;background:#fdeeee;color:#b3261e;font-weight:700;}
.srpub .pflash.ok{background:#e3f6ea;color:#1f7a45;}
.srpub img.srph{max-width:100%;border-radius:10px;margin-bottom:10px;display:block;}
.srpub .pcode{font-size:28px;letter-spacing:.3em;text-align:center;font-weight:800;}
/* the poster */
.srposter{max-width:760px;margin:30px auto;text-align:center;font-family:Arial,Helvetica,sans-serif;color:#1c2747;}
.srposter h1{font-size:40px;margin:10px 0;}
.srposter .qr{width:340px;margin:20px auto;}
.srposter .qr svg{width:100%;height:auto;}
.srposter .code{font-size:60px;font-weight:900;letter-spacing:.15em;}
@media print{.srposter .noprint{display:none;}}
/* subcontractor Today shortcuts (Lee, 14 Oct): daily report, POWRA, near miss — one tap each;
   on a phone the strip sits at the bottom of the screen */
.ptquick{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 14px;}
.ptquick a{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border-radius:12px;text-decoration:none;
  background:var(--card,#fff);border:1px solid var(--line);border-left:4px solid var(--blue);color:var(--head);}
.ptquick a b{font-size:14.5px;}
.ptquick a span{font-size:12px;color:var(--mut);}
.ptquick a.go{border-left-color:var(--warn);}
.ptquick a.ok{border-left-color:var(--ok);}
.ptquick a.nm{border-left-color:var(--bad);}
.ptquick a:hover{border-color:var(--blue);}
.pmkfilters input[type=search]{width:auto;min-width:220px;}
@media(max-width:640px){
  .ptquick{position:fixed;left:0;right:0;bottom:0;z-index:60;margin:0;gap:6px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));
    grid-template-columns:repeat(3,1fr);background:var(--card,#fff);border-top:1px solid var(--line);box-shadow:0 -4px 14px rgba(28,39,71,.12);}
  .ptquick a{padding:8px;text-align:center;align-items:center;}
  .ptquick a span{font-size:10.5px;}
  body:has(.ptquick) .wrap{padding-bottom:84px;}
}
/* the customer portal (Lee, 14 Oct) */
a.clcard{text-decoration:none;color:inherit;}
a.clcard:hover{border-color:var(--blue);}
.clcard.ok{border-left-color:var(--ok);} .clcard.bad{border-left-color:var(--bad);} .clcard.warn{border-left-color:var(--warn);}
.clbars{display:flex;flex-direction:column;gap:6px;}
.clbars > div{display:grid;grid-template-columns:62px 70px 1fr;align-items:center;gap:8px;font-size:12px;}
.clbars span{color:var(--mut);font-weight:700;}
.clbars b{color:var(--head);font-variant-numeric:tabular-nums;}
.clbars i{display:block;height:8px;border-radius:5px;background:var(--soft2,#eef1f7);overflow:hidden;}
.clbars em{display:block;height:100%;background:#27479e;border-radius:5px;}
.clbars em.cy{background:#36c5f0;} .clbars em.ok{background:var(--ok);}
.clmeta{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;font-size:12px;color:var(--mut);border-top:1px solid var(--line);padding-top:8px;}
.clmeta b{color:var(--head);display:block;font-size:12.5px;}
.clprog{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;}
.clprog span{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--mut);}
.clprog b{color:var(--head);font-size:14px;}
.clstages{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;}
.clstage{background:var(--soft2,#eef1f7);border-radius:10px;padding:10px 12px;border-top:3px solid #9aa5b1;}
.clstage b{display:block;font-size:22px;color:var(--head);font-variant-numeric:tabular-nums;}
.clstage span{font-size:12px;color:var(--mut);font-weight:600;}
.clstage.granted{border-top-color:#66ccff;} .clstage.build{border-top-color:#ffcb00;} .clstage.review{border-top-color:#fdab3d;}
.clstage.walkoff{border-top-color:#9d50dd;} .clstage.complete{border-top-color:var(--ok);} .clstage.bad{border-top-color:var(--bad);}
.clstages.sm b{font-size:18px;}
@media(max-width:640px){ .clmeta,.clprog{grid-template-columns:1fr 1fr;} .clweek .k{font-size:9.5px;} }
/* the Project dashboard (Lee, 14 Oct) */
.dbscope{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.dbsnap{margin-left:auto;} .dbsnap select{width:auto;min-width:220px;font-size:12.5px;}
.dbsec{scroll-margin-top:70px;margin-top:6px;}
.dbh{font-size:17px;color:var(--head);margin:22px 0 10px;border:none;padding:0;}
.dbh4{margin:14px 0 6px;font-size:13px;color:var(--head);scroll-margin-top:70px;}
.dbchart{width:100%;height:auto;display:block;overflow:visible;}
.dbchart .dbaxis{stroke:var(--line);stroke-width:1;}
.dbchart .dbtarget{stroke:var(--head);stroke-width:1.5;stroke-dasharray:4 4;opacity:.7;}
.dbchart .dbtick{font-size:10px;fill:var(--mut);}
.dbchart .dbhit:hover rect[fill]:not([fill="transparent"]){opacity:.8;}
.dblegend{display:flex;gap:14px;font-size:12px;color:var(--mut);margin:0 0 4px;}
.dblegend i{display:inline-block;width:12px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle;}
.dblegend i.dash{height:0;border-top:2px dashed;border-radius:0;}
.dbnums{margin-top:6px;font-size:12px;} .dbnums summary{cursor:pointer;color:var(--mut);}
.dbnums table{font-size:12px;} .dbnums td,.dbnums th{padding:3px 8px;}
.dbtable td a{color:var(--head);}
.dbrule{margin:12px 0 0;background:var(--soft2,#eef1f7);border-radius:8px;padding:8px 10px;}
.clprog em{display:block;font-style:normal;}
.dbpareto{display:flex;flex-direction:column;gap:5px;}
.dbpareto > div{display:grid;grid-template-columns:minmax(0,1.4fr) 2fr 40px;gap:8px;align-items:center;font-size:12.5px;}
.dbpareto span{color:var(--head);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dbpareto i{display:block;height:9px;border-radius:5px;background:var(--soft2,#eef1f7);overflow:hidden;}
.dbpareto em{display:block;height:100%;background:#3a5fc8;border-radius:5px;}
.dbpareto b{text-align:right;color:var(--head);font-variant-numeric:tabular-nums;}
.dbchips{display:flex;gap:6px;flex-wrap:wrap;}
@media(max-width:640px){ .dbsnap{margin-left:0;width:100%;} .dbsnap select{width:100%;} .dbpareto > div{grid-template-columns:1fr 1fr 32px;} }
.dbcompact{width:100%;font-size:12.5px;} .dbcompact td{padding:5px 6px;vertical-align:top;}
@media(max-width:640px){ .dbcompact{font-size:12px;} .dbcompact td{padding:4px;} .dbcompact .note{display:block;} }
.dbsec .tdgrid > .card{min-width:0;} .dbcompact td{overflow-wrap:anywhere;}
.dbscope{max-width:100%;} .dbscope .pmchips{display:flex;overflow-x:auto;max-width:100%;flex-wrap:nowrap;}
.dbchips{max-width:100%;} .dbchips .statpill{white-space:normal;}
/* snagging round 2 (Lee, 14 Oct): several evidence photos + a comment per failed toby, the
   picked push form, and the report laid out one block per toby with its photos */
.sqthumbs{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start;}
.sqthumb{margin:0;width:104px;display:flex;flex-direction:column;gap:4px;}
.sqthumb img{width:104px;height:78px;object-fit:cover;border-radius:8px;display:block;background:var(--soft2,#eef1f7);}
.sqthumb .btn{width:100%;padding:3px 6px;font-size:11px;}
.sqthumb.new img{outline:2px solid #36c5f0;outline-offset:-2px;}
.sqadd{width:104px;height:78px;border:2px dashed #b9c2d6;border-radius:8px;display:flex;align-items:center;justify-content:center;
  text-align:center;cursor:pointer;color:var(--blue);font-weight:700;font-size:12.5px;position:relative;}
.sqadd small{display:block;font-weight:400;color:var(--mut);font-size:10.5px;}
.sqadd input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;}
.sqcm textarea{width:100%;min-height:56px;font-size:13px;}
.sqrepgo{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto;}
.sqpgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.sqpgrid select{width:100%;}
.sqpbtns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
.sqrevpush{display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:space-between;}
.sqrevgo{display:flex;gap:8px;flex-wrap:wrap;align-items:center;flex:1;justify-content:flex-end;}
.sqrevgo .sqnotein{min-width:240px;flex:1;max-width:420px;}
.sqrblock{padding:0;overflow:hidden;}
.sqrhead{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--soft2,#eef1f7);border-left:4px solid var(--blue);}
.sqrn{width:26px;height:26px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;flex:none;}
.sqrdue{margin-left:auto;white-space:nowrap;}
.sqrbody{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:16px;padding:12px 14px;}
.sqritem{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:5px 0;border-bottom:1px solid var(--line);font-size:13px;}
.sqritem:last-of-type{border-bottom:none;}
.sqrstate{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.sqrcomment{margin:8px 0;padding:8px 10px;background:var(--soft2,#eef1f7);border-radius:8px;font-size:13px;white-space:pre-wrap;line-height:1.45;}
.sqrphotos{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;align-content:start;}
.sqrphotos img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;display:block;}
.sqrphotos.none{display:block;}
@media(max-width:640px){ .sqpgrid,.sqrbody{grid-template-columns:1fr;} .sqrevgo{justify-content:flex-start;} .sqrevgo .sqnotein{min-width:0;max-width:none;} }
/* Site observations reporting (Lee, 15 Oct): Grain's SOR dashboard + failed log */
:root{--obpass:#2e9e6a;--obfail:#d0533f;--oball:#3a5fc8;--obnone:#b8bfcc;}
[data-theme="dark"]{--obpass:#3fb67f;--obfail:#e5674f;--oball:#6487e8;--obnone:#56607a;}
.obfilters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:0 0 14px;}
.obfilters .field{margin:0;min-width:0;}
.obfilters select{width:auto;max-width:100%;}
.obfilters .chips{display:flex;gap:4px;flex-wrap:wrap;}
.obfilters .chip{padding:6px 10px;border-radius:8px;border:1px solid var(--line);background:var(--card);font-size:12.5px;font-weight:700;color:var(--mut);text-decoration:none;}
.obfilters .chip.on{background:var(--head);border-color:var(--head);color:var(--card);}
.obfnote{margin-left:auto;font-size:12.5px;color:var(--mut);}
.obtop{font-size:15px !important;line-height:1.3;}
.obgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;margin:0 0 14px;}
.obgrid .card{margin:0;}
.obcard h3,#oblog h3{margin:0 0 2px;font-size:15px;color:var(--head);}
.obcard .hint,#oblog .hint{font-size:12px;color:var(--mut);margin:0 0 10px;}
.obchead{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.obbars{display:flex;flex-direction:column;gap:8px;}
.obrow{display:grid;grid-template-columns:minmax(90px,150px) minmax(0,1fr);gap:10px;align-items:center;text-decoration:none;color:var(--ink);font-size:12.5px;}
a.obrow:hover .obl,.obrow.on .obl{color:var(--blue);}
.obrow.on{font-weight:700;}
.obl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.obl.wide{white-space:normal;line-height:1.25;}
.obrow:has(.obl.wide){grid-template-columns:minmax(120px,210px) minmax(0,1fr);}
.obtrack{display:flex;align-items:center;gap:6px;min-width:0;}
.obtrack b{font-size:12px;color:var(--ink);}
.obseg{display:flex;align-items:center;justify-content:center;height:22px;border-radius:4px;color:#fff;font-size:11px;font-weight:700;text-decoration:none;min-width:3px;}
.obseg.pass{background:var(--obpass);} .obseg.fail{background:var(--obfail);} .obseg.all{background:var(--oball);} .obseg.none{background:var(--obnone);}
a.obseg:hover{filter:brightness(1.1);}
.obstack{display:flex;gap:2px;min-width:3px;}
.obstack .obseg{border-radius:3px;}
.obcols{display:flex;align-items:flex-end;gap:12px;height:210px;padding-top:6px;border-bottom:1px solid var(--line);}
.obcol{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:3px;font-size:12px;}
.obcol b{color:var(--ink);font-size:12px;}
.obcol .obl{font-size:11px;color:var(--mut);margin-top:3px;max-width:100%;text-align:center;}
.obstackv{width:min(70px,70%);display:flex;flex-direction:column;gap:2px;min-height:4px;}
.obstackv .obseg{height:auto;min-height:3px;border-radius:3px;}
.obline{width:100%;height:auto;display:block;}
.obline text{fill:var(--mut);font-size:11px;font-family:inherit;}
.obgridl{stroke:var(--line);}
.obl-all{fill:none;stroke:var(--oball);stroke-width:2.5;}
.obl-fail{fill:none;stroke:var(--obfail);stroke-width:2;stroke-dasharray:5 4;}
.obd-all{fill:var(--oball);} .obd-fail{fill:var(--obfail);}
.oblegend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--mut);margin-top:8px;}
.oblegend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px;}
.oblegend i.pass{background:var(--obpass);} .oblegend i.fail{background:var(--obfail);} .oblegend i.all{background:var(--oball);} .oblegend i.none{background:var(--obnone);}
.obcard details.nums{margin-top:8px;font-size:12px;}
.obcard details.nums summary{cursor:pointer;color:var(--blue);font-weight:700;}
.obcard details.nums table{margin-top:6px;}
.obcalnav{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:13px;}
.obcalg{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.obcalg .dh{background:var(--soft2);font-size:10.5px;font-weight:700;color:var(--mut);text-align:center;padding:5px 0;text-transform:uppercase;}
.obcalg .d{min-height:72px;border-top:1px solid var(--line);border-left:1px solid var(--line);padding:3px 4px;min-width:0;}
.obcalg .d:nth-child(7n+1){border-left:0;}
.obcalg .d.out{background:var(--card2);opacity:.6;}
.obcalg .d.today .n{color:var(--blue);}
.obcalg .n{text-align:right;color:var(--mut);font-weight:700;font-size:11px;}
.obcalg .ev{display:block;border-radius:4px;color:#fff;font-size:10.5px;font-weight:700;padding:1px 5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none;}
.obcalg .ev.pass{background:var(--obpass);} .obcalg .ev.fail{background:var(--obfail);} .obcalg .ev.none{background:var(--obnone);}
.obreason{display:block;font-size:12.5px;margin:0 0 4px;padding-left:9px;border-left:3px solid var(--obfail);line-height:1.35;}
.obreason b{color:var(--bad);}
.obreason.comment{border-left-color:var(--line);}
.obreason.comment b{color:var(--mut);}
.obact{margin:0 0 6px;font-size:12.5px;line-height:1.35;}
.oblog td,.oblog th{vertical-align:top;text-align:left;}
.oblog td:first-child{white-space:nowrap;}
@media(max-width:900px){.obgrid{grid-template-columns:1fr;}}
@media(max-width:640px){
  .obfnote{margin-left:0;width:100%;}
  .obrow,.obrow:has(.obl.wide){grid-template-columns:minmax(0,40%) minmax(0,1fr);}
  .obcols{height:170px;gap:6px;}
  .obcalg .d{min-height:46px;padding:2px;}
  .obcalg .ev{font-size:0;height:6px;padding:0;margin-top:2px;}
  .obcalnav{margin-left:0;}
}
/* SiteReady reasoning (Lee, 15 Oct): the right answer and why, on a wrong answer */
.srlab{display:block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px;}
.pans.right .srlab{color:#1a7a3c;} .pans.wrong .srlab{color:#c0392b;}
.srwhy{background:#eaf7fd;border-left:4px solid #36c5f0;border-radius:8px;padding:9px 11px;margin-top:8px;font-size:13.5px;line-height:1.45;color:#1c2747;}
.srwhy > b{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#27479e;margin-bottom:2px;}
.srwhy .srref{display:block;margin-top:4px;font-size:12px;color:#5d6a80;font-weight:700;}
[data-theme="dark"] .srwhy{background:#14304a;color:#e6eaf6;border-left-color:#36c5f0;}
[data-theme="dark"] .srwhy > b{color:#8fb1ff;} [data-theme="dark"] .srwhy .srref{color:#9aa4bd;}
.srpaper .srans{border:2px solid var(--line);border-radius:10px;padding:8px 10px;margin:6px 0;font-size:13.5px;}
.srpaper .srans.right{border-color:#56b77a;background:var(--okbg);} .srpaper .srans.wrong{border-color:#e08a7c;background:var(--badbg);}
.srpaper .srans.right .srlab{color:var(--ok);} .srpaper .srans.wrong .srlab{color:var(--bad);}
.srpaper .srpq{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 10px;background:var(--card);}
.srpaper .srpq.ok{border-left:4px solid #56b77a;} .srpaper .srpq.no{border-left:4px solid #e08a7c;}
.srpaper .srpqh{display:flex;gap:8px;justify-content:space-between;align-items:flex-start;font-weight:700;color:var(--head);}
.srwhyrow summary{cursor:pointer;color:var(--blue);font-weight:700;font-size:12px;margin-top:4px;}
/* Client invoices, Position + Billing forecast in the board look (Lee, 15 Oct) */
.posgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(420px,100%),1fr));gap:12px;}
.poscard{margin:0;display:flex;flex-direction:column;gap:10px;}
.posttl{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.posttl h3{margin:0;font-size:16px;}.posttl h3 a{color:var(--head);text-decoration:none;}
.poshead{display:flex;align-items:baseline;gap:6px;font-size:13px;}
.posnum{margin-left:auto;font-weight:700;color:var(--head);font-variant-numeric:tabular-nums;font-size:12.5px;}
.posbar{display:flex;height:9px;margin:5px 0 3px;}.posbar>span{flex:none;}
.posfig{margin:0;}
.posfoot{display:flex;gap:16px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:8px;margin-top:auto;font-size:13px;}
.poskey{display:inline-block;width:10px;height:10px;border-radius:3px;margin:0 3px 0 10px;vertical-align:-1px;}
.fcweeks{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:0 0 14px;}
.fcweek{background:var(--card,#fff);border:1px solid var(--line);border-radius:12px;padding:10px 12px;position:relative;overflow:hidden;}
.fcweek::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--blue);}
.fcweek.overdue::before{background:var(--bad);}.fcweek.now::before{background:var(--ok);}
.fcweek .wk{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);font-weight:700;}
.fcweek b{display:block;font-size:19px;color:var(--head);font-variant-numeric:tabular-nums;}
.fcweek .note{margin:0;}
@media(max-width:640px){.posgrid{grid-template-columns:1fr;}}
/* TM schedule kanban (Lee, 15 Oct: the supplier's portal reads as a board) */
.tmkanban .pmk-col{flex-basis:290px;}
.tmcard .tmcd{display:flex;gap:6px;align-items:baseline;font-size:11.5px;color:var(--ink);flex-wrap:wrap;}
.tmcard .tmcd > span:first-child{min-width:58px;color:var(--mut);font-weight:700;text-transform:uppercase;font-size:10px;letter-spacing:.04em;}
.tmcard .tmcd b{font-weight:700;}
.tmcard .tmcdin{display:flex;gap:4px;flex-wrap:wrap;}
.tmcard .tmcdin input{font-size:11.5px;padding:2px 4px;width:122px;}
.tmcard .tmwref{font-size:11px;padding:2px 6px;width:92px;}
.tmcard .tmcfiles{display:flex;gap:5px;flex-wrap:wrap;align-items:center;}
.tmcard .tmcfiles form{margin:0;}
.tmcard .tmact{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin-top:2px;}
.tmcard .tmact form{margin:0;}
.tmcard .tmact select{font-size:11.5px;max-width:100%;}
.tmactual{white-space:nowrap;font-size:12px;}
.potm .tmfiles{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}

/* small project: the quote from the price card (Lee, 16 Oct) */
.spquote{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px;padding-top:10px;border-top:1px solid var(--line);}
.spquote .note{margin:0;flex:1 1 260px;}
.spquote form{margin:0;}

/* ── the Weekly review (Lee, 16 Oct): agenda rail + one section per item ── */
.wrsub{margin:0 0 8px;}
.wrsub .note{font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:11px;}
.wrerr{border-left:4px solid var(--warn);font-size:13px;}
.wrmeet{display:grid;grid-template-columns:220px minmax(0,1fr);gap:14px;align-items:start;}
.wrrail{position:sticky;top:72px;max-height:calc(100vh - 84px);overflow-y:auto;background:var(--card);border:1.5px solid var(--line);border-radius:14px;padding:8px;display:flex;flex-direction:column;gap:2px;box-shadow:0 6px 20px rgba(20,30,60,.08);z-index:5;}
.wrrail .wrrh{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mut);padding:4px 8px 6px;}
.wrrail a{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--head);padding:6px 8px;border-radius:8px;font-size:13px;}
.wrrail a:hover,.wrrail a.on{background:var(--soft2);}
.wrrail a.on{color:var(--blue);font-weight:700;}
.wrrail a.on .wrn{background:var(--blue);color:#fff;}
.wrrail .wrrt{flex:1;min-width:0;}
.wrrail .wrbadge{background:var(--badbg);color:var(--bad);border-radius:999px;font-size:11px;font-weight:800;padding:0 7px;}
.wrrail .wrmin,.wrrail .wrcount{margin-left:auto;font-size:11.5px;color:var(--mut);}
.wrrail .wrcount{background:var(--soft2);border-radius:999px;padding:0 7px;font-weight:700;color:var(--blue);}
.wrrail .wrtotal{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:4px;padding:8px 8px 2px;font-size:12px;color:var(--mut);}
.wrrail .wrsendlink{margin-top:6px;border-top:1px solid var(--line);border-radius:0 0 8px 8px;color:var(--blue);font-weight:700;}
.wrn{width:24px;height:24px;flex:none;border-radius:50%;background:var(--blue);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:11.5px;}
.wrrail .wrn{background:var(--soft2);color:var(--blue);}
.wrsecs{display:flex;flex-direction:column;gap:14px;min-width:0;}
.wrsec{background:var(--card);border:1.5px solid var(--line);border-radius:16px;overflow:hidden;scroll-margin-top:72px;box-shadow:0 2px 8px rgba(20,30,60,.06);}
.wrsec-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 16px;background:var(--card);border-bottom:1.5px solid var(--line);}
.wrsec-h .wrn{width:30px;height:30px;font-size:13px;}
.wrsec-h h3{margin:0;font-size:17px;color:var(--head);}
.wrcover{flex:1 1 280px;min-width:0;font-size:12.5px;color:var(--mut);}
.wrtime{margin-left:auto;font-size:12px;font-weight:700;color:var(--mut);background:var(--card);border:1px solid var(--line);border-radius:999px;padding:2px 9px;white-space:nowrap;}
.wrsec-b{padding:14px 16px;display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:12px;}
.wrblk{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;min-width:0;}
.wrblk.wide{grid-column:1/-1;}
.wrblk h4{margin:0 0 2px;font-size:13.5px;color:var(--head);}
.wrblk h4 .note{font-weight:400;font-size:12px;margin-left:4px;}
.wrblk p.note{margin:2px 0 0;}
.wrrow{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px dashed var(--line);font-size:13px;}
.wrrow:last-child{border-bottom:0;}
.wrrow b{white-space:nowrap;text-align:right;}
.wrrow.sub{padding-left:12px;font-size:12.5px;}
.wrrow b.wrbad{color:var(--bad);} .wrrow b.wrwarn{color:var(--warn);} .wrrow b.wrok{color:var(--ok);}
.wrpipe{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:6px;margin-bottom:4px;}
.wrst{border-radius:9px;padding:8px 9px;background:var(--soft2);display:flex;flex-direction:column;gap:2px;border-top:3px solid var(--c,var(--blue));}
.wrst .k{font-size:11px;color:var(--mut);font-weight:700;line-height:1.25;}
.wrst .v{font-weight:800;font-size:16px;color:var(--head);}
.wrst .s{font-size:11px;color:var(--mut);}
.wrbar{display:grid;grid-template-columns:minmax(70px,140px) minmax(0,1fr) 44px;gap:8px;align-items:center;font-size:12px;}
.wrbar .tr{height:9px;background:var(--soft2);border-radius:6px;overflow:hidden;display:block;}
.wrbar .fl{display:block;height:100%;border-radius:6px;background:#3a5fc8;}
.wrbar.b2 .fl{background:#1fa3d6;} .wrbar.b3 .fl{background:var(--ok);}
.wrbar b{text-align:right;}
.wrweeks{display:flex;gap:10px;align-items:flex-end;height:92px;}
.wrwk{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11.5px;}
.wrwk .tr{width:26px;height:56px;background:var(--soft2);border-radius:5px;display:flex;align-items:flex-end;overflow:hidden;}
.wrwk .fl{display:block;width:100%;background:#3a5fc8;border-radius:5px 5px 0 0;}
.wrchart{width:100%;max-width:520px;height:auto;display:block;}
.wrtable td.r,.wrtable th.r{text-align:right;font-variant-numeric:tabular-nums;}
.wrtable tr.late td:first-child{box-shadow:inset 3px 0 0 var(--bad);}
.wrtable input[type=date]{width:auto;padding:3px 6px;font-size:12.5px;}
.wrtable input.saved{border-color:var(--ok);}
.wrpromise{display:flex;gap:4px;align-items:center;margin:0;}
.wrtp{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:12px;border-top:1px solid var(--line);padding-top:12px;}
.wrlab{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mut);margin:0 0 5px;}
.wrnote{margin:0;}
.wrnote textarea{width:100%;min-height:76px;resize:vertical;font-family:inherit;font-size:13px;}
.wrnote-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:4px;}
.wracts{display:flex;flex-direction:column;gap:6px;min-width:0;}
.wract{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:12.5px;}
.wract.late{border-left:3px solid var(--bad);}
.wract .note{display:block;}
.wract-r{display:flex;gap:6px;align-items:center;flex:none;}
.wract-r form{margin:0;}
.wraddact{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0;}
.wraddact input[type=text]{flex:1 1 170px;min-width:0;width:auto;}
.wraddact input[type=date],.wraddact select{width:auto;}
.wraddact .wrchk{display:flex;gap:5px;align-items:center;margin:0;}
.wraddact .wrchk input{width:auto;}
.wrdet summary{cursor:pointer;margin-top:4px;}
@media(max-width:900px){
  .wrmeet{grid-template-columns:1fr;}
  .wrrail{top:56px;max-height:none;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;gap:4px;border-radius:12px;}
  .wrrail .wrrh,.wrrail .wrtotal,.wrrail .wrmin{display:none;}
  .wrrail a{border:1px solid var(--line);padding:4px 8px;white-space:nowrap;flex:none;}
  .wrrail .wrrt{flex:none;}
  .wrtp{grid-template-columns:1fr;}
}
@media(max-width:640px){ .wrsec-b{grid-template-columns:1fr;padding:12px;} .wrsec-h{padding:10px 12px;} }
.wrtable .wrbar{grid-template-columns:70px minmax(90px,1fr) 36px;text-align:left;}
.wrtable .wrbar span:first-child{text-align:left;}
/* round 2 (Lee, 16 Oct): banners of clickable data pills, a 12-column panel grid with strong
   borders, lists that show four rows and expand, the live-today strip */
.wrbanner{background:var(--band);padding:14px 16px;display:flex;flex-wrap:wrap;gap:10px;}
.wrbanner > .wrpill{flex:1 1 150px;}
.wrpill{display:flex;flex-direction:column;gap:2px;min-width:0;text-decoration:none;color:#fff;background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.22);border-left:4px solid rgba(255,255,255,.3);border-radius:12px;padding:10px 12px;transition:transform .12s,background .12s;}
.wrpill:hover{transform:translateY(-2px);background:rgba(255,255,255,.16);color:#fff;}
.wrpill .k{font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:rgba(255,255,255,.75);}
.wrpill .v{font-size:24px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;}
.wrpill .s{font-size:11.5px;color:rgba(255,255,255,.78);}
.wrpill.ok{border-left-color:#3ddc84;} .wrpill.warn{border-left-color:#ffc24b;} .wrpill.bad{border-left-color:#ff7a6b;}
@media (prefers-reduced-motion:reduce){.wrpill{transition:none;}.wrpill:hover{transform:none;}}
.wrbody{padding:14px 16px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px;}
.wrpanel{grid-column:span 4;border:1.5px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:6px;min-width:0;background:var(--card);}
.wrpanel.w3{grid-column:span 3;} .wrpanel.w6{grid-column:span 6;} .wrpanel.w8{grid-column:span 8;} .wrpanel.w12{grid-column:span 12;}
.wrph{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-top:2px;}
.wrph + .wrph,.wrpanel > .wrph:not(:first-child){margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);}
.wrph h4{margin:0;font-size:14px;color:var(--head);}
.wrph .src{margin-left:auto;font-size:11.5px;color:var(--mut);}
.wrph a.src{color:var(--blue);font-weight:700;text-decoration:none;}
.wrph a.src:hover{text-decoration:underline;}
.wrempty{margin:2px 0;color:var(--mut);font-size:12.5px;background:var(--soft);border-radius:8px;padding:8px 10px;}
.wrbody .wrrow{padding:6px 8px;border-bottom:0;border-radius:8px;align-items:center;}
.wrbody .wrrow > :first-child{flex:1 1 auto;}
.wrbody .wrrow > :last-child{flex:none;}
.wrbody .wrrow .pill{white-space:nowrap;}
.wrbody .wrpipe{display:flex;flex-wrap:wrap;}
.wrbody .wrpipe > .wrst{flex:1 1 120px;}
.wrtable td:first-child{white-space:nowrap;}
.wrbody .wrexp > .wrrow:nth-child(odd),.wrpanel > .wrrow:nth-of-type(odd){background:var(--soft);}
a.wrrow,a.wrbar,a.wrst,a.wract,a.wrfail,a.wrpo{text-decoration:none;color:var(--ink);}
a.wrrow:hover,a.wrfail:hover,a.wrpo:hover{background:var(--soft2) !important;color:var(--blue);}
a.wrbar:hover span:first-child{color:var(--blue);}
a.wrst:hover{outline:2px solid var(--c,var(--blue));outline-offset:-1px;}
a.wract:hover{border-color:var(--blue);}
.wrrow span{min-width:0;}
.wrexp:not(.open) .wrx{display:none !important;}
.wrmore{align-self:flex-start;font-size:12.5px;color:var(--blue);font-weight:700;cursor:pointer;background:none;border:0;padding:4px 0;}
.wrmore:hover{text-decoration:underline;}
.wrbar.pct.ok .fl{background:var(--ok);} .wrbar.pct.warn .fl,.wrbar.warn .fl{background:#e0a020;} .wrbar.pct.bad .fl,.wrbar.bad .fl{background:#d9534f;}
.wrwk .fl.ok{background:var(--ok);} .wrwk .fl.warn{background:#e0a020;} .wrwk .fl.bad{background:#d9534f;}
a.wrwk{text-decoration:none;color:var(--ink);}
.wrmini{display:flex;gap:6px;flex-wrap:wrap;}
.wrmini span{background:var(--soft2);border-radius:999px;padding:3px 10px;font-size:12px;color:var(--mut);}
.wrmini b{color:var(--head);font-variant-numeric:tabular-nums;}
.wrmini .ok b{color:var(--ok);} .wrmini .bad b{color:var(--bad);} .wrmini .warn b{color:var(--warn);}
.wrkchips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.wrkchip{display:inline-flex;gap:6px;align-items:center;max-width:100%;min-width:0;border:1.5px solid var(--line);border-left:4px solid var(--line);
  border-radius:10px;padding:4px 9px;font-size:12px;text-decoration:none;color:var(--ink);background:var(--card);}
.wrkchip .c{font-weight:800;color:var(--head);white-space:nowrap;}
.wrkchip .nm{min-width:0;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--mut);}
.wrkchip b{white-space:nowrap;font-variant-numeric:tabular-nums;}
.wrkchip.low{border-left-color:var(--bad);} .wrkchip.low b{color:var(--bad);}
.wrkchip.near,.wrkchip.warn{border-left-color:#e0a020;} .wrkchip.near b,.wrkchip.warn b{color:var(--warn);}
.wrkchip:hover{border-color:var(--blue);}
.wrcal{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;max-width:260px;}
.wrcal span{aspect-ratio:1/1;border-radius:5px;background:var(--soft2);font-size:10px;display:flex;align-items:center;justify-content:center;color:var(--mut);}
.wrcal .p{background:#c7ecd5;color:#14572b;} .wrcal .f{background:#f7c9c3;color:#7a1f14;} .wrcal .o{background:#e1e6f2;color:var(--head);}
.wrcal .h{font-weight:800;background:none;aspect-ratio:auto;}
.wrfail{display:grid;grid-template-columns:44px minmax(0,1fr);gap:8px;padding:6px 8px;border:1px solid var(--line);border-left:3px solid var(--bad);border-radius:8px;font-size:12.5px;}
.wrfail .d{font-weight:800;color:var(--bad);font-variant-numeric:tabular-nums;}
.wrfail .tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:3px;}
.wrfail .pill{font-size:10.5px;}
.wrexp{display:flex;flex-direction:column;gap:5px;min-width:0;}
.wrexp.wrkchips{flex-direction:row;}
.wrstage{display:inline-block;font-size:11.5px;font-weight:700;border-radius:999px;padding:2px 9px;color:#fff;background:var(--c,#579bfc);white-space:nowrap;}
.wrtrack{display:inline-flex;gap:3px;vertical-align:middle;margin-right:6px;}
.wrtrack span{width:22px;height:8px;border-radius:4px;background:var(--soft2);}
.wrtrack span.done{background:color-mix(in srgb,var(--c,#579bfc) 45%,transparent);}
.wrtrack span.now{background:var(--c,#579bfc);}
.wrlegend{display:flex;gap:4px 12px;flex-wrap:wrap;font-size:11px;color:var(--mut);}
.wrcmp{display:grid;gap:4px;}
.wrcmp > div{display:grid;grid-template-columns:minmax(0,1fr) 56px 56px;gap:6px;align-items:center;font-size:13px;padding:5px 8px;border-radius:8px;background:var(--soft);}
.wrcmp .was{color:var(--mut);text-align:right;font-variant-numeric:tabular-nums;}
.wrcmp .now{font-weight:800;color:var(--head);text-align:right;font-variant-numeric:tabular-nums;}
.wrpo{display:flex;flex-direction:column;gap:2px;padding:6px 8px;border-radius:8px;}
.wrgrp{margin:0;}
.wrgrp .wrexp{padding:0;}
td.wrwrap{white-space:normal;min-width:110px;}
td.wrwrap .pill{margin:1px 0;}
.wrtable tr.click:hover td{background:var(--soft);}
.wrtable td a{font-weight:700;text-decoration:none;}
/* the live-today strip */
.wrlive{border:1.5px solid var(--line);border-radius:16px;background:var(--card);padding:14px 16px;margin:0 0 14px;
  display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:16px;align-items:start;box-shadow:0 2px 8px rgba(20,30,60,.06);}
.wrring{display:flex;gap:14px;align-items:center;text-decoration:none;color:var(--ink);}
.wrring svg{width:92px;height:92px;flex:none;}
.wrring-t{display:flex;flex-direction:column;gap:1px;}
.wrring-t b{font-size:22px;color:var(--head);font-variant-numeric:tabular-nums;}
.wrstreets{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;}
.wrst2{border:1.5px solid var(--line);border-left:4px solid #1fa3d6;border-radius:10px;padding:7px 10px;text-decoration:none;color:var(--ink);
  display:flex;flex-direction:column;gap:2px;min-width:0;font-size:12.5px;}
.wrst2:hover{border-color:var(--blue);}
.wrst2.end{border-left-color:#ff7a6b;}
.wrst2 .nm b{font-size:13px;color:var(--head);}
.wrst2 .when{font-size:11.5px;color:var(--mut);}
@media(max-width:1100px){ .wrpanel,.wrpanel.w3{grid-column:span 6;} .wrpanel.w8{grid-column:span 12;} }
@media(max-width:760px){ .wrpanel,.wrpanel.w3,.wrpanel.w6,.wrpanel.w8{grid-column:span 12;} .wrlive{grid-template-columns:1fr;} .wrbody{padding:12px;} .wrbanner{padding:12px;} .wrpill .v{font-size:20px;} }
.powait{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin:0 0 12px;border-left:4px solid var(--warn);}
/* ── Permit board v2 (Lee, 18 Oct): one sideways scroll for every bucket, the street column frozen,
   a folded bucket folds to its header, coloured state pills, and the selection bar ── */
.pmscroller.tablewrap{max-height:none;overflow-x:auto;overflow-y:hidden;border:0;border-radius:16px;background:var(--card);
  box-shadow:0 1px 2px rgba(28,39,71,.06),0 8px 24px rgba(28,39,71,.07);scrollbar-width:none;margin:0 0 2px;}
.pmscroller::-webkit-scrollbar{display:none;}
.pmscroll-in{width:max-content;min-width:100%;}
.pmscroller .pboard{margin:0;border-top:1px solid var(--line);}
.pmscroller .pboard:first-child{border-top:0;}
.pmscroller .pboard > summary{padding:0 !important;display:block;}
.pmscroller .pbhead{position:sticky;left:0;z-index:5;display:inline-flex;align-items:center;gap:10px;padding:12px 16px;
  background:var(--card);white-space:nowrap;}
.pbhead .gbar{width:5px;height:24px;border-radius:4px;flex:none;}
.pbfold{width:26px;height:26px;border-radius:8px;background:var(--soft2);display:inline-flex;align-items:center;justify-content:center;flex:none;}
.pbfold::before{content:"";width:6px;height:6px;border-right:2px solid var(--head);border-bottom:2px solid var(--head);
  transform:rotate(-45deg);margin-left:-2px;transition:transform .15s;}
details[open] > summary .pbfold::before{transform:rotate(45deg);margin:-3px 0 0;}
.pmall{width:17px;height:17px;accent-color:var(--blue);margin:0;cursor:pointer;flex:none;}
.pbname{font-weight:800;font-size:15px;}
.pbcount{border-radius:999px;padding:2px 9px;font-size:12px;font-weight:800;}
.pbhead .n{font-weight:400;color:var(--mut);font-size:12.5px;}
.pmscroller .pbtable{content-visibility:auto;contain-intrinsic-size:auto 420px;}
.pmscroller .pboard th{position:relative;top:auto;}
.pmscroller .pboard th.stick{position:sticky;left:0;z-index:4;}
.pmscroller .pboard td.stick{box-shadow:inset 4px 0 0 var(--gc,#9aa5b1);border-right:1px solid var(--line);}
.pmscroller .pboard th.stick{border-right:1px solid var(--line);}
.pmscroller tr:has(> td .pmtick:checked) > td,
.pmscroller tr:has(> td .pmtoby:checked) > td{background:color-mix(in srgb,var(--blue) 11%,var(--card)) !important;}
.pmscroller .pmc-street,.pmscroller td.stick > label{align-items:center !important;}
.pmstreet{font-weight:700;color:var(--head);text-decoration:none;font-size:13.5px;}
.pmstreet:hover{text-decoration:underline;}
.pmtobyn{background:var(--soft2);color:var(--mut);border-radius:999px;padding:1px 7px;font-size:10.5px;font-weight:700;margin-left:4px;white-space:nowrap;}
select.pmstate{background:var(--sc,#9aa5b1);color:var(--sf,#fff);border:0;border-radius:999px;font-weight:700;font-size:12px;
  padding:5px 10px;width:auto;max-width:210px;cursor:pointer;}
select.pmstate option{background:var(--card);color:var(--ink);font-weight:400;}
.pmtg{all:unset;width:22px;height:22px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;flex:none;color:#c3c9d6;}
.pmtg.has{background:var(--soft2);color:var(--blue);}
.pmtg:hover{color:var(--blue);}
.pmtg::before{content:"";width:5px;height:5px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:rotate(-45deg);margin-left:-2px;transition:transform .15s;}
.pmtg.open::before{transform:rotate(45deg);margin:-3px 0 0;}
.pmline.done .pmline-tick::after{content:"";width:4px;height:8px;border-right:2px solid #fff;border-bottom:2px solid #fff;
  transform:translateY(-1px) rotate(45deg);}
.pmline-del{font-size:11px;}
/* the selection bar: the bottom of the screen, centred on the page (not the menu) */
.pmselbar{--pmside:0px;position:fixed;bottom:16px;left:calc(var(--pmside) + (100vw - var(--pmside)) / 2);transform:translateX(-50%);
  z-index:80;width:min(1060px,calc(100vw - var(--pmside) - 32px));max-height:82vh;overflow:auto;background:#1c2747;color:#fff;
  border-radius:18px;box-shadow:0 18px 50px rgba(10,15,30,.38),inset 0 0 0 1px rgba(255,255,255,.06);}
@media(min-width:641px){html:not(.nav-rail) .pmselbar{--pmside:252px;} html.nav-rail .pmselbar{--pmside:76px;}}
.pmselbar[hidden],.pmsel-panel[hidden],.pmsel-prompt[hidden],.pmsel-btns[hidden],.pmsel-val[hidden]{display:none !important;}
body.pmsel-on div.wrap{padding-bottom:calc(var(--pmselh,0px) + 24px);}
.pmsel-row{display:flex;align-items:center;gap:6px;padding:10px 12px;flex-wrap:wrap;}
.pmsel-count{display:flex;align-items:center;gap:10px;padding:0 12px 0 6px;margin-right:4px;border-right:1px solid rgba(255,255,255,.12);
  min-height:48px;min-width:0;}
.pmsel-count > b{background:#36c5f0;color:#0f1a33;border-radius:10px;min-width:34px;height:34px;display:inline-flex;align-items:center;
  justify-content:center;font-size:15px;padding:0 6px;box-sizing:border-box;}
.pmsel-what{display:flex;flex-direction:column;gap:2px;min-width:0;}
#pmsel-title{font-size:14px;white-space:nowrap;}
#pmsel-list{font-size:11.5px;color:#9fb0d8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px;}
.pmsel-btns{display:flex;gap:4px;flex-wrap:wrap;}
.pmsel-btn{border:0;background:rgba(255,255,255,.06);color:#e9eefb;border-radius:10px;padding:8px 10px;font:inherit;font-size:12.5px;
  font-weight:700;cursor:pointer;display:inline-flex;flex-direction:column;align-items:center;gap:5px;min-width:78px;min-height:52px;}
.pmsel-btn:hover,.pmsel-btn.on{background:rgba(54,197,240,.18);color:#fff;}
.pmsel-btn.bad:hover,.pmsel-btn.bad.on{background:rgba(226,68,92,.28);}
.pmsel-clear{margin-left:auto;border:1px solid rgba(255,255,255,.2);background:transparent;color:#cfd8ee;border-radius:10px;padding:8px 14px;
  font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;min-height:40px;}
.pmsel-clear:hover{color:#fff;border-color:rgba(255,255,255,.45);}
.pmi{width:18px;height:18px;display:block;background:currentColor;-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat;}
.pmi-move{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h14'/%3E%3Cpath d='m13 6 6 6-6 6'/%3E%3C/svg%3E");}
.pmi-people{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3.2'/%3E%3Cpath d='M3.5 19c.6-3.2 2.8-5 5.5-5s4.9 1.8 5.5 5'/%3E%3Cpath d='M16 8h5'/%3E%3Cpath d='m19 5.5 2.5 2.5-2.5 2.5'/%3E%3C/svg%3E");}
.pmi-col{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='4.5' width='17' height='15' rx='2.5'/%3E%3Cpath d='M9.5 4.5v15'/%3E%3Cpath d='m13 12 2 2 3.5-4'/%3E%3C/svg%3E");}
.pmi-copy{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8' y='8' width='12' height='12' rx='2.5'/%3E%3Cpath d='M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2'/%3E%3C/svg%3E");}
.pmi-down{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v11'/%3E%3Cpath d='m7.5 10.5 4.5 4.5 4.5-4.5'/%3E%3Cpath d='M5 19.5h14'/%3E%3C/svg%3E");}
.pmi-bin{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 7h15'/%3E%3Cpath d='M9.5 7V5h5v2'/%3E%3Cpath d='M6.5 7l1 12.5h9l1-12.5'/%3E%3C/svg%3E");}
.pmi-street{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-6.5-5.6-6.5-11a6.5 6.5 0 0 1 13 0c0 5.4-6.5 11-6.5 11z'/%3E%3Ccircle cx='12' cy='10' r='2.4'/%3E%3C/svg%3E");}
.pmsel-panel{padding:14px 18px;border-bottom:1px solid rgba(255,255,255,.1);background:#1f2d58;display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;}
.pmsel-danger{background:#3a1f2e;align-items:center;}
.pmsel-h{width:100%;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9fb0d8;}
.pmsel-chips{display:flex;gap:6px;flex-wrap:wrap;width:100%;}
.pmsel-state{border:0;border-radius:999px;padding:8px 13px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;
  background:var(--sc);color:var(--sf);min-height:36px;}
.pmsel-state:hover{filter:brightness(1.08);box-shadow:0 0 0 2px rgba(255,255,255,.55);}
.pmsel-opt{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.05);color:#fff;border-radius:12px;padding:10px 14px;
  text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:3px;font:inherit;font-size:13px;min-width:210px;}
.pmsel-opt:hover{border-color:#36c5f0;background:rgba(54,197,240,.12);}
.pmsel-opt span{font-size:11.5px;color:#9fb0d8;}
.pmsel-field{display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#9fb0d8;}
.pmsel-field select,.pmsel-field input{font:inherit;font-size:13.5px;letter-spacing:0;text-transform:none;font-weight:400;min-width:200px;
  width:auto;color:#14213a;background:#fff;border:1px solid #cbd3e2;border-radius:9px;padding:9px 11px;}
.pmsel-check{display:flex;gap:8px;align-items:center;font-size:12.5px;color:#dfe6f8;min-height:40px;font-weight:400;}
.pmsel-check input{width:auto;margin:0;}
.pmsel-go,.pmsel-ghost,.pmsel-bad{border:0;border-radius:9px;padding:10px 16px;font:inherit;font-weight:800;font-size:13px;cursor:pointer;min-height:40px;}
.pmsel-go{background:#36c5f0;color:#0f1a33;}
.pmsel-ghost{border:1px solid rgba(255,255,255,.3);background:transparent;color:#fff;font-weight:700;}
.pmsel-bad{background:#e2445c;color:#fff;}
.pmsel-text{flex:1 1 300px;font-size:13.5px;line-height:1.4;}
.pmsel-note{width:100%;font-size:12px;color:#9fb0d8;}
.pmsel-prompt{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 18px;background:#22376e;border-bottom:1px solid rgba(255,255,255,.1);}
.pmsel-prompt > span:first-child{flex:1 1 320px;font-size:13.5px;line-height:1.4;}
.pmsel-acts{display:flex;gap:8px;flex-wrap:wrap;}
@media(max-width:640px){
  .pmselbar{left:8px;right:8px;width:auto;transform:none;bottom:8px;border-radius:16px;}
  .pmsel-count{border-right:0;width:100%;padding-right:70px;}
  .pmsel-btns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;}
  .pmsel-btn{min-width:0;}
  .pmsel-row{position:relative;}
  .pmsel-clear{position:absolute;top:14px;right:12px;}
  .pmsel-field,.pmsel-field select,.pmsel-field input{width:100%;min-width:0;}
  .pmscroller .pbhead{padding:10px 12px;gap:8px;}
  .pbhead .n{display:none;}
}
/* ── Permit board text cells + set column widths (Lee, 18 Oct) ── two lines of text, no scroll box;
   a click opens the full text in #pmtxtpop. Fixed columns: inputs never push past their column. */
.pmscroller .pboard td{overflow-wrap:anywhere;}
.pmscroller .pboard td input:not([type=checkbox]):not([type=radio]),
.pmscroller .pboard td select,.pmscroller .pboard td textarea{max-width:100%;box-sizing:border-box;}
.pmscroller .pboard td table input,.pmscroller .pboard td table select{max-width:none;}
.pmtxt{display:block;font-size:12px;line-height:1.35;color:var(--ink);border:1px solid transparent;border-radius:8px;
  padding:4px 7px;cursor:text;white-space:normal;min-height:1.35em;}
.pmtxt-v{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.pmtxt:hover,.pmtxt:focus-visible{border-color:var(--inpb,#c9d2e4);background:var(--card);outline:none;}
.pmtxt.editing{border-color:var(--blue,#27479e);background:var(--card);}
.pmtxt.empty{color:var(--mut);}
.pb-full .pmtxt-v{display:block;-webkit-line-clamp:unset;}
.pmtxtpop{position:fixed;z-index:80;background:var(--card);border-radius:14px;padding:12px;display:flex;
  flex-direction:column;gap:9px;box-shadow:0 18px 50px rgba(10,15,30,.28),0 0 0 1px var(--blue,#27479e);}
.pmtxtpop[hidden]{display:none;}
.pmtxtpop-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px;}
.pmtxtpop-h b{font-size:13px;color:var(--ink);}
.pmtxtpop textarea{font:inherit;font-size:13.5px;line-height:1.45;border:1px solid var(--inpb,#c9d2e4);border-radius:9px;
  padding:9px 11px;resize:vertical;color:var(--ink);background:var(--card);width:100%;box-sizing:border-box;}
.pmtxtpop-a{display:flex;gap:8px;justify-content:flex-end;}
.pmscroller .pboard > .pbtable > table > thead th{white-space:normal;overflow-wrap:normal;vertical-align:bottom;}
/* ── Daily report Summary (Lee, 18 Oct) ── the tile (was This week) with pill counts, and the page */
.drkpis{grid-template-columns:1fr 1fr 2.4fr;}
.drkpis .drsum{display:flex;flex-direction:column;gap:4px;text-decoration:none;}
.drkpis .drsum:hover{background:rgba(255,255,255,.14);}
.drsumhead{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}
.drsumwk{font-size:11px;color:rgba(255,255,255,.72);}
.drsumunit{font-size:13px;font-weight:600;color:rgba(255,255,255,.72);}
.drkpis .drsum .drwk{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:6px 0 2px;}
.drkpis .drsum .drwk span{display:flex;flex-direction:column;gap:2px;padding:7px 10px;border-radius:12px;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);font-size:10.5px;font-weight:700;
  letter-spacing:.02em;line-height:1.25;color:rgba(255,255,255,.8);min-width:0;}
.drkpis .drsum .drwk b{font-size:18px;color:#fff;}
@media(max-width:900px){.drkpis{grid-template-columns:1fr 1fr;}.drkpis .drsum{grid-column:1 / -1;}}
@media(max-width:640px){.drkpis .drsum .drwk{grid-template-columns:repeat(2,minmax(0,1fr));}}
.rsfilter{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:0 0 14px;}
.rsfilter .field{margin:0;}
.rsfilter .rspresets{display:flex;gap:6px;flex-wrap:wrap;flex-basis:100%;}
.rsfilter .rscsv{margin-left:auto;}
.rstotals{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));}
.rsavg{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 14px;}
.rsav{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 14px;display:flex;flex-direction:column;gap:3px;}
.rsav .lbl{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mut);}
.rsav b{font-size:21px;color:var(--head);}
.rstable{padding:0;overflow:hidden;}
.rstable .tablewrap{border:0;border-radius:0;}
.rstable td,.rstable th{text-align:right;white-space:nowrap;}
.rstable td:first-child,.rstable th:first-child{text-align:left;}
.rstable tr.rstot td{font-weight:800;background:var(--soft2);border-top:2px solid var(--line);}
.rstable tr.rsav-row td{font-weight:700;color:var(--blue);background:var(--soft2);}
.rstable > .note{padding:0 14px 12px;}
@media(max-width:900px){.rsavg{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:640px){.rstable td,.rstable th{white-space:normal;text-align:left;}.rsfilter .rscsv{margin-left:0;}}
.rstable th{white-space:normal;vertical-align:bottom;}
/* portal daily reports (Lee, 18 Oct): the review card, view only */
.dre-done.dre-q{color:var(--warn,#b7791f);}
.dre-done.dre-w{color:var(--blue,#27479e);}
.dre-query-note{margin:8px 0 2px;padding:9px 12px;border-radius:10px;background:var(--warnbg,#fbf3df);
  border:1px solid rgba(183,121,31,.25);font-size:13px;color:var(--ink);}
.dre-query-note > b{color:#8a6408;}
.dre-query-note > div{margin-top:3px;white-space:pre-wrap;}
.drfilter input[type=date]{width:auto;flex:0 0 auto;}
/* portal snag reports (Lee, 18 Oct) */
.sqrepwrap{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:14px;align-items:start;}
.sqrepwrap > .card{margin:0;}
.sqrephead{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px;}
.sqrephead .sth{margin:0;}
.sqmake{border:2px solid var(--blue,#27479e);}
.sqmake .sqpgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;}
.sqmake .sqpgrid label{display:flex;flex-direction:column;gap:4px;}
.sqmcount{margin:8px 0 0;font-weight:600;}
@media(max-width:900px){.sqrepwrap{grid-template-columns:1fr;}.sqmake .sqpgrid{grid-template-columns:1fr;}}
/* material requests (Lee, 18 Oct): PDF on a button, send to the person collecting it */
.mrqlist{display:flex;flex-direction:column;}
.mrq{display:flex;gap:12px;justify-content:space-between;align-items:flex-start;padding:11px 0;border-top:1px solid var(--line);flex-wrap:wrap;}
.mrqlist .mrq:first-child{border-top:0;}
.card.mrq{padding:14px 16px;border-top:0;}
.mrqmain{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;min-width:0;flex:1 1 320px;}
.mrqmain > .note,.mrqcol,.mrqlines{flex-basis:100%;}
.mrqlines{display:flex;flex-wrap:wrap;gap:6px;}
.mrqcol .lbl{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--mut);}
.mrqacts{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;}
/* the request's PDF + send on Stock -> Requests (Lee, 20 Oct) */
.strq-send{display:flex;gap:6px;align-items:flex-start;flex-wrap:wrap;margin-top:8px;}
td.strq-send{margin-top:0;}
.mrqform .mrqcoll{flex-direction:row;align-items:center;gap:6px;font-size:12px;}
.mrqsend > summary{list-style:none;cursor:pointer;}
.mrqsend > summary::-webkit-details-marker{display:none;}
.mrqform{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:12px;border:1px solid var(--line);border-radius:12px;
  background:var(--card);min-width:min(320px,80vw);}
.mrqform label{display:flex;flex-direction:column;gap:4px;}
.mrqform .lbl{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--mut);}
.mrqother{display:flex;flex-direction:column;gap:8px;}
.mrqother[hidden]{display:none;}
/* the subcontractor's permit board in Coreline's look (Lee, 18 Oct) */
.pmstate-ro{display:inline-block;background:var(--sc,#9aa5b1);color:var(--sf,#fff);border-radius:999px;font-weight:700;
  font-size:12px;padding:5px 12px;white-space:nowrap;}
.pmtxtro{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35;font-size:12px;
  white-space:normal;padding:4px 0;}
.pb-full .pmtxtro{display:block;-webkit-line-clamp:unset;}
.pmtobyprog{display:inline-flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap;}
.pmtobyprog .pbar{width:64px;height:6px;}
.pboard td.saved{background:rgba(47,164,106,.14);transition:background .3s;}
.pboard td.err{background:rgba(212,73,79,.14);}
.pmscroller .pboard td.cpgrid{white-space:nowrap;}
.pmscroller .pboard td.cpgrid input.cpf{width:92px;font-size:11.5px;display:inline-block;}
.pmscroller .pboard td input.cpf[type=date]{width:135px;font-size:12px;}
.pmscroller .pboard td input.cpdays{width:56px;font-size:12px;}
.pmscroller .pboard td select.cpf{width:auto;max-width:100%;font-size:12px;}
/* the board's desk tools (layout, column filters) stay off a phone — the field gets streets and the find box */
@media(max-width:640px){.pmtoolbar.deskonly{display:none !important;}}

/* ── Permit board v3 (Lee, 19 Oct) ── the board is ONE box that scrolls both ways and fills the screen
   under the top bar, so the browser itself keeps the bucket name, the column headings, the street column,
   a street's toby headings and its Toby column in place (no copies drawn by script, no second scrollbar).
   Every cell is boxed: its border shows and its contents stay inside it. */
.pmscroller.tablewrap{overflow:auto;overscroll-behavior-x:contain;scrollbar-width:thin;
  scrollbar-color:var(--blue) var(--soft2);height:calc(100vh - var(--pmtop,64px) - var(--pmselh,0px) - 14px);
  height:calc(100dvh - var(--pmtop,64px) - var(--pmselh,0px) - 14px);min-height:340px;margin:0 0 14px;}
.pmscroller.tablewrap::-webkit-scrollbar{display:block;width:12px;height:12px;}
.pmscroller.tablewrap::-webkit-scrollbar-track{background:var(--soft2);border-radius:6px;}
.pmscroller.tablewrap::-webkit-scrollbar-thumb{background:var(--blue);border-radius:6px;border:2px solid var(--soft2);}
.pmscroller.tablewrap::-webkit-scrollbar-corner{background:var(--soft2);}
.pmscroller table{display:table !important;overflow:visible !important;max-width:none !important;}
.pmscroller .pboard > summary{position:sticky;top:0;z-index:9;background:var(--card);}
.pmscroller .pboard > .pbtable > table > thead th{position:sticky !important;top:var(--pbsum,50px);z-index:6;
  background:var(--soft2);border-right:1px solid var(--line);overflow:hidden;text-overflow:ellipsis;}
.pmscroller .pboard > .pbtable > table > thead th.stick{left:0;z-index:7;border-right:2px solid var(--line);}
.pmscroller .pboard > .pbtable > table > tbody > tr > td:not(.pmsub){overflow:hidden;text-overflow:ellipsis;
  border-right:1px solid var(--line);}
.pmscroller .pboard > .pbtable > table > tbody > tr > td.stick{border-right:2px solid var(--line);z-index:3;}
.pmscroller .pboard td.pmsub{padding:8px 0 12px 0;}
.pmscroller .pboard td.pmsub > .pmlines{margin-left:14px;}
/* a street's tobies: headings freeze under the board's, the Toby column on the left */
.pmscroller .pmtobyh > th{position:sticky !important;top:calc(var(--pbsum,50px) + var(--pbth,44px));z-index:4 !important;
  white-space:normal !important;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;}
.pmscroller .pmtobyh > th:first-child{left:0;z-index:5 !important;}
.pmscroller table.pmtobies{table-layout:fixed;min-width:0 !important;}
.pmscroller table.pmtobies td{overflow:hidden;text-overflow:ellipsis;border-right:1px solid var(--line);}
.pmscroller table.pmtobies th{border-right:1px solid var(--line);}
.pmscroller table.pmtobies td select{max-width:100%;}
.pmscroller table.pmtobies .pmtoby-name{overflow:hidden;text-overflow:ellipsis;}
/* one shared Book TM / TTRN / TTRO form (Lee, 19 Oct) */
.bkpop{position:fixed;z-index:70;width:290px;}
.bkpop[hidden]{display:none;}
.bkpop .bkform{margin:0;box-shadow:0 12px 32px rgba(28,39,71,.22);}
.bkpop .bkstreet{font-weight:600;}
@media(max-width:640px){
  .pmscroller.tablewrap{border-radius:12px;}
  .pmscroller .pboard td.pmsub > .pmlines{margin-left:8px;}
}
/* removed from build (Lee, 19 Oct) */
.corm{display:inline-block;position:relative;margin-top:4px;}
.corm > summary{list-style:none;cursor:pointer;}
.corm > summary::-webkit-details-marker{display:none;}
.cormf{display:flex;flex-direction:column;gap:5px;margin-top:6px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;
  background:var(--card);min-width:230px;font-size:12.5px;}
.cormf label{display:flex;gap:6px;align-items:center;}
tr.pmrm > td{color:var(--mut);}
tr.pmrm .pmtoby-name{text-decoration:line-through;text-decoration-color:rgba(127,140,160,.6);}
.rmpop{position:fixed;z-index:80;width:260px;background:var(--card);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 8px 24px rgba(28,39,71,.18);padding:10px 12px;display:flex;flex-direction:column;gap:7px;font-size:12.5px;}
.rmpop[hidden]{display:none;}
.rmpop b{font-size:12.5px;color:var(--head);}
.rmpop label{display:flex;gap:6px;align-items:center;}
.rmpop .rmacts{display:flex;gap:8px;justify-content:flex-end;}
/* asset types (Lee, 19 Oct) */
.atypegrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;}
.atypegrid > div{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:10px;padding:9px 12px;}
.atag{display:inline-block;font-size:10.5px;font-weight:700;border-radius:999px;padding:1px 8px;white-space:nowrap;
  background:color-mix(in srgb,var(--blue) 12%,var(--card));color:var(--blue);}
.awas{font-size:10.5px;color:var(--mut);white-space:nowrap;}
.cochg{display:inline-block;position:relative;}
.cochg > summary{list-style:none;cursor:pointer;}
.cochg > summary::-webkit-details-marker{display:none;}
.cochgf{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px;padding:10px 12px;border:1px solid var(--line);
  border-radius:10px;background:var(--card);min-width:min(420px,86vw);}
.cochgf label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--mut);font-weight:600;}
.cochgf .wide{grid-column:1 / -1;}
.cochist{grid-column:1 / -1;font-size:11.5px;color:var(--mut);margin:0;padding-left:16px;}
@media(max-width:640px){.cochgf{grid-template-columns:1fr;}}
/* ── Completions list view (Lee, 19 Oct): the same tiles as rows of a table, Cards / List per view ── */
.colayout{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:var(--card);flex:none;}
.colayout button{all:unset;cursor:pointer;font-size:12px;font-weight:700;padding:5px 13px;color:var(--mut);}
.colayout button:focus-visible{outline:2px solid var(--blue);outline-offset:-2px;}
.colayout button.on{background:var(--blue);color:#fff;}
.colrow,.colhead{display:none;}
.coboard{--colcols:minmax(150px,1.2fr) minmax(120px,1fr) minmax(140px,1.2fr) 66px 66px 86px 72px minmax(130px,1fr)
  minmax(110px,1fr) minmax(150px,1.2fr) minmax(130px,1fr);
  --colcols-of:minmax(90px,.6fr) minmax(200px,2fr) 66px 110px 130px minmax(160px,1.2fr) minmax(120px,1fr);}
.co-list #fwgrid,.co-list .cogrid-of{display:block;border:1px solid var(--line);border-radius:12px;background:var(--card);}
.co-list #fwgrid > .colhead,.co-list .cogrid-of > .colhead{display:grid;grid-template-columns:var(--colcols);position:sticky;
  top:var(--cotop,56px);z-index:6;background:var(--soft2);border-bottom:1px solid var(--line);border-radius:12px 12px 0 0;}
.co-list .cogrid-of > .colhead{grid-template-columns:var(--colcols-of);}
.colhead > span{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--mut);padding:9px 10px;
  border-right:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.co-list #fwgrid > .fwtile,.co-list .cogrid-of > .oftile{display:block;padding:0;margin:0;border:0;border-bottom:1px solid var(--line);
  border-radius:0;box-shadow:none;min-height:0;background:var(--card);transform:none;}
.co-list #fwgrid > .fwtile > :not(.colrow){display:none !important;}
.co-list #fwgrid > .fwtile:hover,.co-list #fwgrid > .fwtile.open{background:var(--soft2);}
.co-list .colrow{display:grid;grid-template-columns:var(--colcols);color:var(--ink);text-decoration:none;}
.co-list .colrow-of{all:unset;display:grid;grid-template-columns:var(--colcols-of);width:100%;cursor:pointer;box-sizing:border-box;}
.co-list .colrow-of:focus-visible{outline:2px solid var(--blue);outline-offset:-2px;}
.co-list .cogrid-of > .oftile{display:flex;flex-direction:column;}
.co-list .colrow-of{order:-1;}
.co-list .cogrid-of > .oftile > :not(.colrow){display:none;}
.co-list .cogrid-of > .oftile.open > :not(.colrow){display:revert;}
.co-list .cogrid-of > .oftile.open{padding:0 0 12px;background:var(--soft2);}
.co-list .cogrid-of > .oftile.open > .cohead{display:none;}
.co-list .cogrid-of > .oftile.open > :not(.colrow){margin-left:12px;margin-right:12px;}
.colrow > span{font-size:12.5px;padding:8px 10px;border-right:1px solid var(--line);white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;min-width:0;}
.colrow > span:last-child,.colhead > span:last-child{border-right:0;}
.colstage{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--chip,#9aa5b1);margin-right:6px;vertical-align:middle;}
.co-list #fwgrid > .fwpanel{margin:0;border-radius:0;border:0;border-bottom:2px solid var(--blue);}
@media(max-width:900px){
  .co-list #fwgrid > .colhead,.co-list .cogrid-of > .colhead{display:none;}
  .co-list .colrow,.co-list .colrow-of{grid-template-columns:1fr 1fr 1fr;padding:6px 4px;}
  .colrow > span{border-right:0;white-space:normal;padding:4px 8px;}
  .colrow > span::before{content:attr(data-l);display:block;font-size:10px;font-weight:700;letter-spacing:.04em;
    text-transform:uppercase;color:var(--mut);}
  .colrow > span:first-child{grid-column:1 / -1;}
  .colrow > span:empty{display:none;}
}
/* new HAC: pay which subcontractor (Lee, 19 Oct) */
.hacpay{display:flex;flex-direction:column;gap:8px}
.hacpaychips{display:flex;gap:8px;flex-wrap:wrap}
.hacpaychip{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line,#dfe4ee);border-radius:10px;padding:8px 12px;text-decoration:none;color:var(--ink,#14213a);background:#fff;min-width:200px}
.hacpaychip span{font-size:12px;color:var(--mut,#4f586b)}
.hacpaychip.on{border:2px solid #27479e;background:#f2f6ff}
.hacpaychip:hover{border-color:#27479e}
/* small projects: the quote drives the job (Lee, 19 Oct) */
.sptag{font-size:11px;font-weight:700;border-radius:6px;padding:1px 7px;white-space:nowrap}
.sptag.lab{background:#e5ecfb;color:#27479e}
.sptag.mat{background:#fff3df;color:#8a4b00}
.spdiff{display:flex;gap:10px;align-items:center;flex-wrap:wrap;border:1px solid #f3c27a;background:#fff8ec;border-radius:10px;padding:9px 12px;margin:0 0 10px;font-size:13px}
.spdiff span{flex:1 1 280px}
.spdiff form{margin:0}
.splink{margin-top:10px}
.splink summary{cursor:pointer;font-weight:700;color:var(--head);font-size:13px}
.hacquery{border:1px solid #f3c27a;background:#fff8ec;border-radius:10px;padding:9px 12px;font-size:13px}
/* TM schedule in the permit board look (Lee, 19 Oct) */
@media(max-width:640px){.pmtoolbar > .deskonly{display:none !important;}}
.tmkv{display:grid;grid-template-columns:78px 1fr;gap:4px 8px;align-items:center;font-size:12px;}
.tmkv > .k{color:var(--mut);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;}
.tmkv input.tmf{font-size:11.5px;padding:2px 4px;width:132px;}
.tmkv input.tmwref{width:110px;}
.tmcard .tmf.saved{background:#d9f2e4 !important;}
.tmcard .tmf.err,.pmscroller .tmf.err{border-color:var(--bad) !important;}
.tmro{font-weight:600;}
.tmwarn{display:block;color:var(--bad);font-weight:700;font-size:11.5px;}
.pmscroller td.tmbad{background:color-mix(in srgb,var(--bad) 10%,var(--card)) !important;}
.pmscroller .tmgroup input.tmf{width:100%;}
.pmscroller .tmgroup td.tmact{white-space:normal;}
.tmcard[hidden],.pmscroller tr[hidden]{display:none !important;}
/* TM HAC lines (Lee, 19 Oct) */
.hactmlines tr.hacrm td{color:var(--mut);background:color-mix(in srgb,var(--bad) 6%,var(--card));}
.hactmlines tr.hacadd td{background:color-mix(in srgb,var(--cyan,#36c5f0) 8%,var(--card));}
.hacaddrow{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-top:10px;font-size:12.5px;}
.hacaddrow label{display:flex;flex-direction:column;gap:4px;font-weight:700;color:var(--mut);}
.hacaddrow label.wide{flex:1 1 260px;}
.hacaddrow input{font-weight:400;}
.hktm{display:grid;grid-template-columns:70px 1fr;gap:3px 8px;font-size:12px;align-items:baseline;}
.hktm .k{color:var(--mut);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;}
.paycard[hidden],.hkcard[hidden]{display:none !important;}
