/* Transcribed by script from the contractor's handover (2026-09-05) — ops/pbsios/gen_warm_css.py. Do not hand-edit
   the transcribed blocks; regenerate. Loaded AFTER pbsios.css so the page look is his. */
/* ---- warm.py TOKENS ---- */
:root{
  --f-sans:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --f-mono:ui-monospace,'SF Mono',SFMono-Regular,'Cascadia Code',Menlo,Consolas,monospace;
  --surface-0:#faf9f5;--surface-1:#f3f2ec;--surface-2:#ffffff;--sunk:#efeee7;
  --text-primary:#1d1d1b;--text-secondary:#52514e;--text-muted:#8a8980;
  --border:#e4e3db;--border-strong:#ccccc2;--radius:12px;
  --accent:#185FA5;--bg-accent:#E6F1FB;--text-accent:#185FA5;--border-accent:#85B7EB;
  --bg-success:#E1F5EE;--text-success:#0F6E56;--border-success:#b8e6d6;
  --bg-warning:#FAEEDA;--text-warning:#854F0B;--border-warning:#e7d6a8;
  --bg-danger:#FCEBEB;--text-danger:#A32D2D;--border-danger:#f0cccc;
  --gold:#a9781a;--gold-fill:#e6b23e;--gold-soft:#f6e4b8;
  --silver:#8b97a8;--bronze:#a8672f;
  --c-material:#eb6834;--c-equip:#eda100;--c-po:#2a78d6;--c-labor:#e34948;
  --glow:0 1px 2px rgba(40,36,28,.04),0 8px 26px rgba(40,36,28,.05);
}
@media (prefers-color-scheme:dark){:root{
  --surface-0:#1b1a16;--surface-1:#232119;--surface-2:#272520;--sunk:#201e18;
  --text-primary:#f2f0e9;--text-secondary:#c3bfb2;--text-muted:#8f8b7e;
  --border:#38352d;--border-strong:#4a463c;
  --accent:#7db4ec;--bg-accent:#12293f;--text-accent:#7db4ec;--border-accent:#2f557a;
  --bg-success:#123027;--text-success:#5fcfa8;--border-success:#1c4a3c;
  --bg-warning:#3a2c12;--text-warning:#e0a955;--border-warning:#5a4620;
  --bg-danger:#3a1d1d;--text-danger:#e08585;--border-danger:#5a2d2d;
  --gold:#eab646;--gold-fill:#eab646;--gold-soft:#3a3216;
  --silver:#c3ccda;--bronze:#d0925a;
  --glow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.4);
}}
:root[data-theme="light"]{--surface-0:#faf9f5;--surface-1:#f3f2ec;--surface-2:#ffffff;--sunk:#efeee7;--text-primary:#1d1d1b;--text-secondary:#52514e;--text-muted:#8a8980;--border:#e4e3db;--border-strong:#ccccc2;--accent:#185FA5;--bg-accent:#E6F1FB;--text-accent:#185FA5;--border-accent:#85B7EB;--bg-success:#E1F5EE;--text-success:#0F6E56;--border-success:#b8e6d6;--bg-warning:#FAEEDA;--text-warning:#854F0B;--border-warning:#e7d6a8;--bg-danger:#FCEBEB;--text-danger:#A32D2D;--border-danger:#f0cccc;--gold:#a9781a;--gold-fill:#e6b23e;--gold-soft:#f6e4b8;--silver:#8b97a8;--bronze:#a8672f;--glow:0 1px 2px rgba(40,36,28,.04),0 8px 26px rgba(40,36,28,.05)}
:root[data-theme="dark"]{--surface-0:#1b1a16;--surface-1:#232119;--surface-2:#272520;--sunk:#201e18;--text-primary:#f2f0e9;--text-secondary:#c3bfb2;--text-muted:#8f8b7e;--border:#38352d;--border-strong:#4a463c;--accent:#7db4ec;--bg-accent:#12293f;--text-accent:#7db4ec;--border-accent:#2f557a;--bg-success:#123027;--text-success:#5fcfa8;--border-success:#1c4a3c;--bg-warning:#3a2c12;--text-warning:#e0a955;--border-warning:#5a4620;--bg-danger:#3a1d1d;--text-danger:#e08585;--border-danger:#5a2d2d;--gold:#eab646;--gold-fill:#eab646;--gold-soft:#3a3216;--silver:#c3ccda;--bronze:#d0925a;--glow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.4)}
/* ---- warm.py PRIMS ---- */
*{box-sizing:border-box}
body{margin:0;background:var(--surface-0);color:var(--text-primary);font-family:var(--f-sans);-webkit-font-smoothing:antialiased;line-height:1.45}
.tnum{font-variant-numeric:tabular-nums}.mono{font-family:var(--f-mono)}
a{color:inherit}
.wrap{max-width:min(96vw,1680px);margin:0 auto;padding:22px 20px 64px}   /* site-wide wide layout, matches the KPI matrix */
/* nav */
/* wrap rather than push the page wide: with the Performance tab added the bar
   overflowed between about 820px and 1250px, which made the whole page scroll
   sideways and clipped content under it */
.appnav{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:18px;padding:11px 22px;background:var(--surface-2);border-bottom:1px solid var(--border);flex-wrap:wrap;max-width:100%}
.appnav .wm{font-weight:800;font-size:15px;letter-spacing:-.01em;display:flex;align-items:center;gap:8px;color:var(--text-primary)}
.appnav .wm b{color:var(--accent)}
.appnav .wm .brandlink{display:inline-flex;align-items:center;text-decoration:none;color:inherit}
.appnav .wm .navlogo{height:28px;width:auto;max-width:180px;object-fit:contain;display:block;background:#1F3A5F;border-radius:6px;padding:4px 9px;box-sizing:content-box}
.appnav a{text-decoration:none;color:var(--text-secondary);font-size:13px;font-family:var(--f-mono);padding:5px 1px;border-bottom:2px solid transparent;white-space:nowrap}
.appnav a.on{color:var(--text-primary);border-bottom-color:var(--accent);font-weight:600}
.appnav a:hover{color:var(--text-primary)}
.appnav .sp{flex:1}
.appnav .ctx{font-family:var(--f-mono);font-size:11px;color:var(--text-muted);display:flex;align-items:center;gap:7px;white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis}
.appnav .live{width:7px;height:7px;border-radius:50%;background:#3FB984;animation:npulse 2.6s infinite}
.themeb{width:30px;height:30px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-secondary);cursor:pointer;display:grid;place-items:center;font-size:15px;flex:none}
.themeb:hover{color:var(--text-primary)}
.refreshb{font-size:16px}
.refreshb.spin{animation:spin .7s linear}
@keyframes spin{to{transform:rotate(360deg)}}
/* admin section sub-nav */
.adminsub{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin:2px 0 16px;padding:5px;background:var(--surface-1);border:1px solid var(--border);border-radius:11px;width:fit-content}
.adminsub .asl{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);display:flex;align-items:center;gap:6px;padding:0 10px 0 6px}
.adminsub a{text-decoration:none;font-family:var(--f-mono);font-size:12.5px;color:var(--text-secondary);padding:7px 14px;border-radius:8px}
.adminsub a:hover{color:var(--text-primary)}
.adminsub a.on{background:var(--surface-2);color:var(--text-accent);font-weight:600;box-shadow:var(--glow)}
/* executive summary banner (shared) */
.exsum{display:flex;gap:11px;align-items:flex-start;background:var(--bg-accent);border:1px solid var(--border-accent);color:var(--text-accent);border-radius:11px;padding:11px 15px;margin:10px 0 6px;font-size:12.5px;line-height:1.55}
.exsum i{font-size:18px;flex:none;margin-top:1px;color:var(--text-accent)}
.exsum b{font-weight:650;color:var(--text-accent)}
.exsum.warm{background:var(--bg-warning);border-color:var(--border-warning);color:var(--text-warning)}.exsum.warm i,.exsum.warm b{color:var(--text-warning)}
@keyframes npulse{0%{box-shadow:0 0 0 0 rgba(63,185,132,.5)}70%{box-shadow:0 0 0 6px rgba(63,185,132,0)}100%{box-shadow:0 0 0 0 rgba(63,185,132,0)}}
/* Between 820px and roughly 1400px the tab row plus the "data updated" stamp
   needed more than the viewport and pushed the whole DOCUMENT sideways, so every
   page scrolled horizontally on a 1280px laptop. Tightening the gaps and the
   logo recovers ~140px, which is enough to keep every tab AND the stamp visible
   rather than hiding the freshness stamp - on this project that stamp is the
   whole point of the failure policy. (Job Costing tab added 2026-08-09 made an
   existing ~47px overflow clearly visible.) */
@media(max-width:1400px){.appnav{gap:10px;padding:11px 12px}
  .appnav a{font-size:12.5px}
  .appnav .wm .navlogo{height:23px;max-width:140px}}
@media(max-width:820px){.appnav{gap:12px;padding:10px 14px;overflow-x:auto}.appnav .ctx{display:none}}
/* header */
header.top{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:8px}
.brand h1{margin:0;font-size:20px;font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:10px}
.brand h1 i{color:var(--accent);font-size:22px}
.brand .sub{font-size:12px;color:var(--text-secondary);margin-top:3px;font-family:var(--f-mono)}
.eyebrow{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}
/* controls */
.hctrls{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:14px 0 4px}
select{appearance:none;height:34px;padding:0 30px 0 12px;border-radius:9px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-primary);font-size:12.5px;font-family:var(--f-mono);cursor:pointer}
.tsel{position:relative}.tsel::after{content:"";position:absolute;right:12px;top:50%;width:6px;height:6px;border-right:1.5px solid var(--text-muted);border-bottom:1.5px solid var(--text-muted);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.pseg{display:inline-flex;background:var(--sunk);border:1px solid var(--border);border-radius:9px;padding:3px}
.pseg button{border:0;background:transparent;color:var(--text-secondary);font-family:var(--f-mono);font-size:12px;padding:6px 12px;border-radius:7px;cursor:pointer}
.pseg button.on{background:var(--surface-2);color:var(--text-primary);box-shadow:var(--glow);font-weight:600}
.spacer{flex:1}
/* primitives */
.card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--glow);overflow:hidden}
.card .ch{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface-1)}
.card .ch h4{margin:0;font-weight:650;font-size:14px}
.card .ch .cap{font-family:var(--f-mono);font-size:11px;color:var(--text-muted)}
.card .bd{padding:14px 16px}
h2.sec{font-size:11.5px;font-family:var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin:24px 0 12px;display:flex;align-items:center;gap:10px}
h2.sec::after{content:"";flex:1;height:1px;background:var(--border)}
.tag{font-family:var(--f-mono);font-size:10px;letter-spacing:.04em;padding:2px 8px;border-radius:20px;white-space:nowrap;border:1px solid transparent}
.t-act{background:var(--bg-success);color:var(--text-success);border-color:var(--border-success)}
.t-par{background:var(--bg-warning);color:var(--text-warning);border-color:var(--border-warning)}
.t-mis{background:var(--bg-danger);color:var(--text-danger);border-color:var(--border-danger)}
.t-neu{background:var(--sunk);color:var(--text-muted);border-color:var(--border-strong)}
.pill{font-family:var(--f-mono);font-size:11px;font-weight:600;padding:2px 8px;border-radius:6px;white-space:nowrap}
.chip{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);padding:3px 9px;border:1px solid var(--border-strong);border-radius:20px;white-space:nowrap}
table.gm{width:100%;border-collapse:collapse;font-size:12.5px}
table.gm th{text-align:left;color:var(--text-muted);font-weight:500;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;padding:8px 10px;border-bottom:1px solid var(--border);background:var(--surface-2)}
table.gm td{padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:middle}
table.gm td.n,table.gm th.n{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--f-mono)}
table.gm tr.grp td{background:var(--surface-1);font-weight:650;font-size:11px;font-family:var(--f-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary)}
table.gm tr.tot td{font-weight:700;border-top:1.5px solid var(--border-strong)}
table.gm tr.sub td:first-child{padding-left:22px}
table.gm tbody tr:hover td{background:var(--surface-1)}
.cbar{display:flex;height:15px;border-radius:5px;overflow:hidden;background:var(--sunk);min-width:120px}
.cbar span{display:block;height:100%}
.covbar{position:relative;height:15px;border-radius:5px;background:var(--sunk);overflow:hidden;min-width:66px}
.covbar>i{display:block;height:100%;border-radius:5px}
footer{margin-top:24px;padding-top:16px;border-top:1px solid var(--border);font-size:11.5px;color:var(--text-muted);line-height:1.65}
footer b{color:var(--text-secondary);font-weight:600}
.tlogo{height:22px;width:auto;max-width:86px;object-fit:contain;background:#fff;border-radius:5px;padding:2px 4px;border:1px solid var(--border);vertical-align:middle}
.tlogo.lg{height:30px;max-width:120px}
.tlogo.sm{height:15px;max-width:60px;padding:1px 3px;vertical-align:-2px}
.tile .lbl .tlogo{margin-right:5px}
.flag{display:inline-block;padding:1px 7px;border-radius:5px;background:var(--gold-soft);color:var(--gold);font-family:var(--f-mono);font-size:10px;letter-spacing:.04em}
.legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin:12px 0 4px;font-family:var(--f-mono);font-size:10.5px;color:var(--text-secondary)}
.legend span{display:flex;align-items:center;gap:6px}.lsw{width:11px;height:11px;border-radius:3px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
/* ---------- A4 report / print ---------- */
.printhead{display:none}
.reportfab{position:fixed;right:22px;bottom:22px;z-index:80}
.reportfab>button{height:44px;padding:0 18px;border-radius:22px;border:0;background:var(--accent);color:var(--surface-0);font-size:13px;font-weight:600;font-family:var(--f-sans);cursor:pointer;box-shadow:0 4px 18px rgba(24,95,165,.35);display:flex;align-items:center;gap:8px}
.reportfab>button:hover{filter:brightness(1.08)}
.reportmenu{position:absolute;right:0;bottom:52px;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--glow);min-width:250px;overflow:hidden;display:none}
.reportmenu.open{display:block}
.reportmenu button{display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;color:var(--text-primary);font-size:12.5px;font-family:var(--f-sans);padding:11px 15px;cursor:pointer;text-align:left}
.reportmenu button:hover{background:var(--surface-1)}
.reportmenu button i{color:var(--accent);font-size:16px}
.reportmenu button small{display:block;color:var(--text-muted);font-size:10.5px;font-family:var(--f-mono);margin-top:1px}
.reportmenu .rmhead{font-family:var(--f-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);padding:10px 15px 4px}
@media print{
  /* zero @page margin: browsers paint the margin box paper-white, which looked odd against
     the warm canvas. Instead the sheet is edge-to-edge cream and the breathing room comes
     from .wrap padding (box-decoration-break:clone re-applies it on every page fragment). */
  @page{size:A4 portrait;margin:0}
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  html{background:#faf9f5}
  /* force the WARM LIGHT palette so print matches the on-screen HTML regardless of viewer theme */
  :root,:root[data-theme="dark"]{--surface-0:#faf9f5;--surface-1:#f3f2ec;--surface-2:#ffffff;--sunk:#efeee7;
    --text-primary:#1d1d1b;--text-secondary:#52514e;--text-muted:#8a8980;--border:#e4e3db;--border-strong:#ccccc2;
    --accent:#185FA5;--bg-accent:#E6F1FB;--text-accent:#185FA5;--border-accent:#85B7EB;
    --bg-success:#E1F5EE;--text-success:#0F6E56;--border-success:#b8e6d6;
    --bg-warning:#FAEEDA;--text-warning:#854F0B;--border-warning:#e7d6a8;
    --bg-danger:#FCEBEB;--text-danger:#A32D2D;--border-danger:#f0cccc;
    --gold:#a9781a;--gold-fill:#e6b23e;--gold-soft:#f6e4b8;--silver:#8b97a8;--bronze:#a8672f;--glow:none}
  html,body{background:#faf9f5!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  .wrap{background:#faf9f5}
  .appnav,.reportfab,.no-print,.themeb,.toast{display:none!important}
  /* !important: screen modes (Big board's max-width:none, page-level wide wraps) must never
     leak into print — the sheet is always a centered 186mm column */
  body.big .wrap,.wrap{max-width:186mm!important;width:auto!important;margin:0 auto!important;padding:10mm 2mm!important;
    box-decoration-break:clone;-webkit-box-decoration-break:clone}
  .printhead .plogo{background:#1F3A5F;border-radius:5px;padding:2px 6px;box-sizing:content-box}
  img,svg{max-width:100%!important}
  .tlogo{height:15px!important;width:auto!important;max-width:56px!important;object-fit:contain}
  .tlogo.lg{height:22px!important}
  .tbl-scroll,.trendwrap,.ktwrap,.scroll-x{overflow:visible!important}
  table.gm{font-size:10.5px}
  table.gm th,table.gm td{padding:5px 6px}
  .printhead{display:flex!important;align-items:baseline;justify-content:space-between;gap:12px;border-bottom:2px solid #1d1d1b;padding-bottom:8px;margin-bottom:14px}
  .printhead .pt{font-size:18px;font-weight:800;letter-spacing:-.01em}
  .printhead .pt b{color:#185FA5}
  .printhead .pm{font-family:var(--f-mono);font-size:10px;color:#52514e;text-align:right;line-height:1.5}
  .card,.panel,.board,.scard,section{box-shadow:none!important}
  .kpi,.tile,.arc,.tcell,.pcell,.pod,.mtx,.simrow,tr{break-inside:avoid}
  /* KPI/sparkline cards must not split a title from its value across sheets (QA 2026-07-23).
     Table-bearing cards are excluded — they are taller than a page and break at row level.
     Chrome ignores break-inside:avoid on GRID items when fragmenting, so the multi-card
     grid wrappers (trends .grid, index .cats/.gmgrid, scorecard .arcards) linearize to
     block flow on paper — cards stack single-column and the avoid rule then holds. */
  .card:not(:has(table)){break-inside:avoid}
  .grid,.cats,.gmgrid,.arcards{display:block!important}
  .grid>*,.cats>*,.gmgrid>*,.arcards>*{margin-bottom:10px;break-inside:avoid}
  table.gm thead{display:table-header-group}  /* repeat headers when a table spans pages */
  .print-section{break-before:page}
  .print-section:first-child{break-before:auto}
  body.print-current .print-hide-current{display:none!important}
  a{text-decoration:none;color:inherit}
}
/* ---- build_lb.py CSS ---- */
.brandrow{display:flex;align-items:center;gap:12px}
.mark{width:38px;height:38px;border-radius:10px;background:linear-gradient(150deg,var(--gold-fill),#c98a2e);display:grid;place-items:center;color:#1a1204;flex:none;box-shadow:var(--glow)}
.mark svg{width:22px;height:22px}
.hmeta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fresh{display:flex;align-items:center;gap:7px;font-family:var(--f-mono);font-size:12px;color:var(--text-secondary)}
.livep{width:7px;height:7px;border-radius:50%;background:#3FB984;animation:npulse 2.4s infinite}
.btn{height:34px;padding:0 13px;border-radius:9px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-secondary);font-size:12.5px;font-family:var(--f-mono);cursor:pointer;display:inline-flex;align-items:center;gap:7px;text-decoration:none}
.btn:hover{border-color:var(--gold);color:var(--text-primary)}
.btn svg{width:15px;height:15px}.btn i{font-size:16px}
.controls{display:flex;align-items:center;gap:11px;flex-wrap:wrap;margin:16px 0 18px}
.seg{display:inline-flex;background:var(--sunk);border:1px solid var(--border);border-radius:11px;padding:3px}
.seg button{border:0;background:transparent;color:var(--text-secondary);font-family:var(--f-mono);font-size:12.5px;padding:7px 14px;border-radius:8px;cursor:pointer}
.seg button.on{background:var(--surface-2);color:var(--text-primary);box-shadow:var(--glow);font-weight:600}
/* podium */
.podium{display:grid;grid-template-columns:1fr 1.24fr 1fr;gap:14px;align-items:end;margin-bottom:14px}
.pod{background:var(--surface-2);border:1px solid var(--border);border-radius:16px;padding:18px 16px 16px;text-align:center;position:relative;box-shadow:var(--glow);animation:rise .5s cubic-bezier(.2,.7,.2,1) both}
.pod.p1{animation-delay:.05s}.pod.p2{animation-delay:.14s}.pod.p3{animation-delay:.22s}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.pod.first{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold),0 14px 40px rgba(40,36,28,.12)}
.pod .medal{width:44px;height:44px;border-radius:50%;margin:0 auto 10px;display:grid;place-items:center;font-family:var(--f-mono);font-weight:700;font-size:17px;color:#15100a}
.m1{background:radial-gradient(circle at 34% 30%,#ffe08a,var(--gold-fill))}
.m2{background:radial-gradient(circle at 34% 30%,#eef2f7,var(--silver))}
.m3{background:radial-gradient(circle at 34% 30%,#f0c79c,var(--bronze))}
.pod .crown{position:absolute;top:-13px;left:50%;transform:translateX(-50%);color:var(--gold-fill);width:26px;height:26px}
.pod .nm{font-size:16.5px;font-weight:700;letter-spacing:-.01em;text-wrap:balance;min-height:1.4em}
.pod.first .nm{font-size:19px}
.pod .tn{font-family:var(--f-mono);font-size:11px;color:var(--text-muted);margin-top:2px;text-transform:uppercase;letter-spacing:.08em}
.pod .big{font-size:26px;font-weight:800;letter-spacing:-.02em;margin-top:12px}
.pod.first .big{font-size:32px;color:var(--gold)}
.pod .lbl{font-family:var(--f-mono);font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;margin-top:1px}
.pod .row2{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:10px;font-family:var(--f-mono);font-size:12px;color:var(--text-secondary)}
.scorechip{display:inline-flex;align-items:baseline;gap:3px}.scorechip b{font-size:14px;font-weight:700;color:var(--text-primary)}
/* board */
.board{background:var(--surface-2);border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:var(--glow);margin-bottom:16px}
.board>.bh{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface-1)}
.board>.bh .t{font-weight:700;font-size:13.5px}
.board>.bh .badge{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding:3px 8px;border:1px solid var(--border-strong);border-radius:20px}
.board>.bh .note{margin-left:auto;font-family:var(--f-mono);font-size:11px;color:var(--text-muted)}
.r{display:grid;grid-template-columns:44px 1fr 168px 96px 26px;align-items:center;gap:12px;padding:11px 16px;border-top:1px solid var(--border);cursor:pointer;transition:background .12s}
.r:first-child{border-top:0}.r:hover{background:var(--surface-1)}
.r .rk{font-family:var(--f-mono);font-weight:700;font-size:17px;text-align:center;color:var(--text-secondary)}
.r .rk.k1{color:var(--gold)}.r .rk.k2{color:var(--silver)}.r .rk.k3{color:var(--bronze)}.r .rk .dash{color:var(--text-muted);font-weight:400}
.who{min-width:0}.who .n{font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.who .meta{display:flex;align-items:center;gap:8px;margin-top:3px}
.chip{font-family:var(--f-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);padding:2px 7px;border:1px solid var(--border-strong);border-radius:20px;white-space:nowrap}
.chip.prov{color:var(--gold);border-color:var(--gold)}
.tpre{display:inline-flex;align-items:center;gap:5px;margin-right:8px;vertical-align:middle}
.tlogo.mini{height:42px;max-width:150px;padding:3px 6px;border-radius:6px}   /* 2x logos (client 2026-08-01) */
.tlogo.podlogo{height:44px;max-width:170px;padding:3px 7px;border-radius:6px;vertical-align:middle;margin-right:8px}
.r.ri{cursor:default}
.r.ri .scoreval{width:52px}
.mv{font-family:var(--f-mono);font-size:11.5px;display:inline-flex;align-items:center;gap:2px}
.mv.up{color:var(--text-success)}.mv.down{color:var(--text-danger)}.mv.hold{color:var(--text-muted)}.mv.new{color:var(--gold)}
.meterwrap{display:flex;align-items:center;gap:9px}
.meter{flex:1;height:8px;border-radius:5px;background:var(--sunk);overflow:hidden}
.meter>i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 60%,var(--gold-fill)));width:0;transition:width .8s cubic-bezier(.2,.7,.2,1)}
.scoreval{font-family:var(--f-mono);font-weight:700;font-size:13.5px;width:34px;text-align:right;color:var(--text-primary)}
.stat{font-family:var(--f-mono);font-size:13px;text-align:right;color:var(--text-secondary)}
.stat small{display:block;font-size:9.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}
.chevr{width:16px;height:16px;color:var(--text-muted);justify-self:center;transition:transform .18s}
.r.open .chevr{transform:rotate(90deg)}
.detail{border-top:1px dashed var(--border-strong);background:var(--sunk);padding:0 16px;max-height:0;overflow:hidden;transition:max-height .28s ease,padding .28s ease}
.r.open + .detail{max-height:720px;padding:15px 16px 18px}
.kpis{display:grid;gap:9px;margin-bottom:14px}
details.fnote{margin-top:22px;background:var(--surface-1);border:1px solid var(--border);border-radius:12px;padding:0 15px}
details.fnote>summary{cursor:pointer;list-style:none;padding:11px 0;font-family:var(--f-mono);font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);display:flex;align-items:center;gap:8px}
details.fnote>summary::-webkit-details-marker{display:none}
details.fnote>summary::before{content:"B8";display:inline-block;transition:transform .18s ease;color:var(--text-muted)}
details.fnote[open]>summary::before{transform:rotate(90deg)}
details.fnote>summary:hover{color:var(--text-primary)}
details.fnote .fnbody{padding:0 0 15px;font-size:12px;line-height:1.65;color:var(--text-secondary)}
details.fnote .fnbody .notemut{display:block;background:none;border:0;padding:0 0 12px;font-size:12px;line-height:1.65}
table.gm tr.trdet{display:none}
table.gm tr.trdet.on{display:table-row}
table.gm tr.trdet>td{background:var(--sunk);border-top:1px dashed var(--border-strong);padding:14px 16px}
table.gm tr.techrow{cursor:pointer}
table.gm tr.techrow .chevr{width:15px;height:15px;color:var(--text-muted);transition:transform .2s ease;flex:none}
table.gm tr.techrow.open .chevr{transform:rotate(90deg)}
.kpi{display:grid;grid-template-columns:170px 1fr 40px;align-items:center;gap:11px}
.kpi .kl{font-family:var(--f-mono);font-size:11px;color:var(--text-secondary)}
.kpi .kbar{height:7px;border-radius:4px;background:var(--surface-2);overflow:hidden;border:1px solid var(--border)}
.kpi .kbar>i{display:block;height:100%;background:var(--accent);width:0;transition:width .7s ease}
.kpi .kv{font-family:var(--f-mono);font-size:11.5px;text-align:right;color:var(--text-primary)}
.tc{border-top:1px solid var(--border);padding-top:12px}
.tc .tch{font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:9px}
.tcgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:9px}
.tcell{background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:9px 11px}
.tcell .l{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.tcell .v{font-size:15px;font-weight:700;margin-top:3px}.tcell .v small{font-size:11px;color:var(--text-muted);font-weight:400}
.tcell .xs{font-family:var(--f-mono);font-size:9px;letter-spacing:.04em;color:var(--text-muted);margin-top:2px}
.r.rx .scoreval{width:52px}
body.big .controls,body.big footer,body.big .brand .sub{display:none}
body.big .wrap{max-width:none}
body.big .pod .big{font-size:38px}body.big .pod.first .big{font-size:48px}
body.big .r{grid-template-columns:56px 1fr 200px 120px 0;padding:16px}
body.big .who .n{font-size:18px}body.big .r .rk{font-size:22px}body.big .r .chevr{display:none}body.big .r{cursor:default}
@media(max-width:720px){.podium{grid-template-columns:1fr;gap:10px}.pod{text-align:left;display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:12px;padding:14px}
 .pod .medal{margin:0}.pod .crown{display:none}.pod .big{margin-top:0;font-size:22px}.pod .nm{min-height:0}.pod .lbl,.pod .row2{display:none}
 .r{grid-template-columns:36px 1fr 90px 22px}.meterwrap{display:none}.stat{display:none}.r .rk{font-size:15px}}
/* ---------- KPI table mode ---------- */
:root{--pb-tgl-bg:#E3EDFB;--pb-tgl-fg:#1D5CA8;--pb-mkt-bg:#F0E7FA;--pb-mkt-fg:#6B3FA8;
  --pb-hvac-bg:#E1F3F5;--pb-hvac-fg:#0E6470;--pb-plb-bg:#FBE9DC;--pb-plb-fg:#9A4B12}
@media(prefers-color-scheme:dark){:root{--pb-tgl-bg:#17304d;--pb-tgl-fg:#8fbdf2;--pb-mkt-bg:#2e2247;--pb-mkt-fg:#c9aaf2;
  --pb-hvac-bg:#0f353b;--pb-hvac-fg:#72d2de;--pb-plb-bg:#3d2513;--pb-plb-fg:#edaa70}}
:root[data-theme="light"]{--pb-tgl-bg:#E3EDFB;--pb-tgl-fg:#1D5CA8;--pb-mkt-bg:#F0E7FA;--pb-mkt-fg:#6B3FA8;
  --pb-hvac-bg:#E1F3F5;--pb-hvac-fg:#0E6470;--pb-plb-bg:#FBE9DC;--pb-plb-fg:#9A4B12}
:root[data-theme="dark"]{--pb-tgl-bg:#17304d;--pb-tgl-fg:#8fbdf2;--pb-mkt-bg:#2e2247;--pb-mkt-fg:#c9aaf2;
  --pb-hvac-bg:#0f353b;--pb-hvac-fg:#72d2de;--pb-plb-bg:#3d2513;--pb-plb-fg:#edaa70}
.kvrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:10px;margin-bottom:12px}
.kvt{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:11px 13px;box-shadow:var(--glow)}
.kvt .l{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap}
.kvt .v{font-size:19px;font-weight:750;letter-spacing:-.01em;margin-top:4px}
.kvt .d{margin-top:5px;min-height:18px}
.vb{display:inline-flex;align-items:center;gap:3px;font-family:var(--f-mono);font-size:10.5px;font-weight:600;padding:2px 7px;border-radius:6px;white-space:nowrap}
.vb.up{background:var(--bg-success);color:var(--text-success)}
.vb.down{background:var(--bg-danger);color:var(--text-danger)}
.vb.flat{background:var(--sunk);color:var(--text-muted)}
.ktb{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 12px}
.kcount{font-family:var(--f-mono);font-size:11px;color:var(--text-muted)}
.notewarn{display:flex;align-items:center;gap:7px;background:var(--bg-warning);border:1px solid var(--border-warning);color:var(--text-warning);border-radius:9px;padding:6px 11px;font-family:var(--f-mono);font-size:10.5px;margin:0 0 8px;line-height:1.5}
.notewarn i{font-size:14px;flex:none}
.notemut{display:flex;align-items:center;gap:7px;background:var(--sunk);border:1px solid var(--border);color:var(--text-muted);border-radius:9px;padding:6px 11px;font-family:var(--f-mono);font-size:10.5px;margin:0 0 8px;line-height:1.5}
.notemut i{font-size:14px;flex:none}
.ktwrap{overflow-x:auto}
.pb{display:inline-flex;align-items:center;font-family:var(--f-mono);font-size:10px;letter-spacing:.04em;font-weight:600;padding:2px 8px;border-radius:20px;white-space:nowrap}
.pb+.pb{margin-left:4px}
.pb-tgl{background:var(--pb-tgl-bg);color:var(--pb-tgl-fg)}
.pb-mkt{background:var(--pb-mkt-bg);color:var(--pb-mkt-fg)}
.pb-hvac{background:var(--pb-hvac-bg);color:var(--pb-hvac-fg)}
.pb-plb{background:var(--pb-plb-bg);color:var(--pb-plb-fg)}
.pb-svc{background:var(--bg-success);color:var(--text-success)}
.pb-sls{background:var(--bg-accent);color:var(--text-accent)}
table.gm th.sortable{cursor:pointer;user-select:none}
table.gm th.sortable:hover{color:var(--text-primary)}
table.gm th .sarr{font-size:8px;margin-left:3px;opacity:.35}
table.gm th.on{color:var(--text-primary)}
table.gm th.on .sarr{opacity:1;color:var(--accent)}
.krk{font-family:var(--f-mono);font-weight:700;font-size:13px;color:var(--text-secondary)}
.kmed{width:22px;height:22px;border-radius:50%;display:inline-grid;place-items:center;font-size:10.5px;font-weight:700;color:#15100a;font-family:var(--f-mono)}
.kwho{display:flex;align-items:center;gap:9px;min-width:180px}
.avx{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-family:var(--f-mono);font-size:10.5px;font-weight:700;flex:none}
.av0{background:var(--pb-tgl-bg);color:var(--pb-tgl-fg)}.av1{background:var(--pb-mkt-bg);color:var(--pb-mkt-fg)}
.av2{background:var(--pb-hvac-bg);color:var(--pb-hvac-fg)}.av3{background:var(--pb-plb-bg);color:var(--pb-plb-fg)}
.av4{background:var(--bg-success);color:var(--text-success)}.av5{background:var(--bg-accent);color:var(--text-accent)}
.kwmain{min-width:0}
.kn{font-weight:600;font-size:13px;white-space:nowrap;display:flex;align-items:center;gap:7px}
.rbar{height:4px;border-radius:3px;background:var(--sunk);overflow:hidden;margin-top:5px;max-width:150px}
.rbar>i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 60%,var(--gold-fill)));width:0;transition:width .7s ease}
.pb-ins{background:var(--sunk);color:var(--text-secondary)}
.pb-un{background:var(--sunk);color:var(--text-muted)}
/* 'all leads' hint chip — KPI columns with no per-lead variant on TGL/Marketing slice views */
.alh{display:inline-block;font-family:var(--f-mono);font-size:8.5px;font-weight:500;letter-spacing:.05em;text-transform:none;background:var(--sunk);color:var(--text-muted);border:1px solid var(--border);border-radius:8px;padding:1px 5px;margin-left:3px;vertical-align:1px}
/* ---------- tenant compare ---------- */
.cmpgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:14px;align-items:start}
.cmphead{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);margin:0 0 8px;padding:5px 10px;border:1px solid var(--border-strong);border-radius:8px;display:inline-block;background:var(--surface-2)}
/* ---------- KPI matrix group rows ---------- */
tr.kgrp td{background:var(--sunk);font-family:var(--f-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);padding:7px 10px;border-top:1px solid var(--border-strong)}
.infoi{position:relative;display:inline-flex;align-items:center;color:var(--text-muted);cursor:help;font-size:13px;vertical-align:middle;margin-left:4px}
.infoi:hover{color:var(--text-accent)}
.meterwrap{position:relative}
.meterwrap:hover>.tip{opacity:1}
.meterwrap>.tip,.infoi .tip{position:absolute;top:calc(100% + 8px);left:0;transform:none;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:9px;box-shadow:0 8px 24px rgba(0,0,0,.14);padding:7px 12px;font-family:var(--f-mono);font-size:10.5px;line-height:1.4;color:var(--text-secondary);width:max-content;max-width:none;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s;z-index:70;text-align:left}
.infoi:hover .tip,.infoi:focus .tip{opacity:1}
.meterwrap>.tip{top:calc(100% + 6px);right:0;left:auto}
@media print{.infoi{display:none}}
.segcap{font-family:var(--f-mono);font-size:9px;letter-spacing:.09em;color:var(--text-muted);align-self:center;padding:0 6px 0 8px;text-transform:uppercase}
.dhdl{cursor:grab;font-size:11px;color:var(--text-muted);opacity:.35;margin-right:6px;user-select:none;display:inline-block;vertical-align:middle}
[draggable=true]:hover>.dhdl{opacity:.9}
.dragging{opacity:.45;outline:2px dashed var(--border-accent);outline-offset:2px}
@media print{.dhdl{display:none}}
#hdrrow1,#hdrdock{justify-content:flex-start;margin-left:0;padding-left:0;margin-top:1px;margin-bottom:3px}
#boardseg{display:flex;gap:14px;background:none;border:none;padding:0;box-shadow:none}
.bcard{display:inline-flex;flex-direction:column;align-items:flex-start;gap:5px;padding:11px 18px;
  border:1px solid var(--border);border-radius:12px;background:var(--surface-2);cursor:pointer;
  font:inherit;color:var(--text-primary);text-align:left;transition:border-color .15s,box-shadow .15s,transform .12s}
.bcard:hover{border-color:var(--border-strong);transform:translateY(-1px)}
.bcard.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--glow)}
.bcard .bcl{font-family:var(--f-mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted)}
.bcard.on .bcl{color:var(--text-accent)}
.bcard .bct{font-weight:750;font-size:14.5px;letter-spacing:-.01em}
.bgrp{display:inline-flex;flex-direction:column;gap:3px;margin-right:22px;vertical-align:top}
.bgrp .bgl{font-family:var(--f-mono);font-size:9px;letter-spacing:.09em;color:var(--text-muted);padding-left:2px}
.kgh{display:flex;align-items:center;gap:9px;flex-wrap:wrap;background:var(--sunk);font-family:var(--f-mono);font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-primary);padding:9px 12px;border-bottom:1px solid var(--border-strong)}
.kgh .pb{font-size:12px;font-weight:700;padding:3px 9px}
/* KPI-matrix breakout: stretch past the page column so per-division headers breathe */
.wrap.kwidewrap{max-width:min(96vw,1680px);overflow-x:clip}  /* the KPI table scrolls inside .ktwrap, but its width still counted toward the
     document, so the whole PAGE scrolled sideways below about 1250px and pushed
     the card heading out of view. Contain it here rather than on body. */   /* header/controls align with the wide matrix */
@media print{.wrap.kwidewrap{max-width:186mm}
  /* Trade Champion Score tables must fit the A4 sheet: kill the screen min-width,
     compact the cells, allow header wrapping */
  table.gm{min-width:0 !important;width:100% !important;font-size:7.8px;table-layout:auto}
  #view.kwide table.gm .kwho .rbar{max-width:60px}   /* rank bars must not widen the tech column on paper */
  /* break-word (not anywhere): headers wrap at word boundaries — 'SOLD REVENUE' must never
     shatter into letter columns on the 13-column S&M table */
  table.gm th,table.gm td{padding-left:2px !important;padding-right:2px !important;white-space:normal !important;overflow-wrap:break-word}
  table.gm th{font-size:6.9px !important;letter-spacing:.02em !important}
  table.gm .avx{display:none}                            /* avatars add nothing on paper — width buys the Δ column */
  table.gm .pb{font-size:6.6px !important;padding:1px 3px !important}
  .ktwrap{overflow:visible !important}
}
#view.kwide{width:auto}   /* the .wrap.kwidewrap column is already wide — no extra breakout, edges align */
#view.kwide .ktwrap{overflow-x:auto}
/* fit-in-one-window (client 2026-07-25): no fixed minimum — the 12-column S&M table
   compresses to the card; headers wrap at word boundaries, cells stay readable */
#view.kwide table.gm{min-width:0;width:100%;font-size:12px}
#view.kwide table.gm th{white-space:normal;overflow-wrap:break-word;padding-left:7px;padding-right:7px;line-height:1.25}
#view.kwide table.gm td{padding-left:7px;padding-right:7px}
#view.kwide table.gm .kwho .rbar{max-width:110px}
#view.kwide table.gm .pb{font-size:9.5px;padding:2px 6px}
@media print{#view.kwide{width:100%}}
.ktwrap+.ktwrap{margin-top:12px}
tr.kdim td{opacity:.45}
tr.xrow,.r.xrow{display:none}
.bcard.blink{text-decoration:none;opacity:.72}
.bcard.blink:hover{opacity:1}
/* Top Earners on ONE screen (client 2026-08-01): tighter vertical rhythm; logos keep their size */
#view.teview .podium{gap:10px;margin:3px 0 6px}
#view.teview .pod{padding:6px 12px 8px}
#view.teview .pod .big{font-size:20px;margin:0}
#view.teview .pod .nm{font-size:13.5px}
#view.teview .pod .tn{font-size:11px}
#view.teview .pod .lbl{font-size:9.5px;margin-top:1px}
#view.teview .pod .medal{width:36px;height:36px;font-size:17px}
#view.teview .pod .row2{margin-top:4px}
#view.teview .board .bh{padding:6px 10px}
#view.teview .r{padding-top:2px;padding-bottom:2px}
#view.teview .r .who .n{font-size:13px}
#view.teview .r .meta{margin-top:0}
#view.teview .showmore{padding:5px 0 7px}
#view.teview+*{margin-top:4px}
body:has(#view.teview) header.top{margin-bottom:2px}
body:has(#view.teview) .exsum{padding:6px 12px;margin:6px 0 4px;font-size:12px;line-height:1.4}
body:has(#view.teview) #tedock{margin-bottom:4px!important}
body:has(#view.teview) #hdrrow1{margin-bottom:2px}
/* -5%% more + tighter row-to-row gaps (client 2026-08-01) */
body:has(#view.teview) .ktb{margin:0 0 2px}
body:has(#view.teview) .exsum{margin:4px 0 3px;padding:5px 10px}
#view.teview .podium{margin:2px 0 5px}
#view.teview .pod{padding:5px 10px 7px}
#view.teview .pod .big{font-size:19px}
#view.teview .board .bh{padding:5px 8px}
#view.teview .showmore{padding:3px 0 5px}
body:has(#view.teview) .brand h1{font-size:17px}
body:has(#view.teview) .bcard{padding:6px 14px}
body:has(#view.teview) .bcard .bct{font-size:13px}
body:has(#view.teview) .pseg button{padding-top:5px;padding-bottom:5px}
body:has(#view.teview) .exsum{line-height:1.35;font-size:11.5px}
body:has(#view.teview) header.top{margin-bottom:0}
#view.teview .pod .row2{margin-top:2px}
#view.teview .pod .medal{width:36px;height:36px;font-size:17px}
/* All-BU glance boxes (client 2026-08-01) */
.glance{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:4px}   /* 3+3 rows so names read fully (client 2026-08-01) */
@media(max-width:900px){.glance{grid-template-columns:repeat(2,minmax(0,1fr))}}
.gten{color:var(--text-muted);font-weight:500;font-size:10px}
.glance .kmed{width:20px;height:20px;font-size:10.5px;flex:none}
.grow .rkd{font-size:9px}
.gbox{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--glow);padding:8px 10px;cursor:pointer;transition:border-color .15s;min-width:0}
.gbox:hover{border-color:var(--border-accent)}
.gbh{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);padding-bottom:7px;border-bottom:1px solid var(--border);margin-bottom:2px;display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.gsub{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.03em;text-transform:none;color:var(--text-muted)}
.grow{display:flex;align-items:center;gap:6px;padding:6px 0;border-top:1px solid var(--border)}
.grow:nth-child(2){border-top:0}
.grow .gname{font-weight:650;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.grow .gjobs{margin-left:auto;font-family:var(--f-mono);font-size:10.5px;color:var(--text-muted);flex:none}
.grow .gmoney{margin-left:10px;font-weight:700;font-size:12.5px;flex:none}
.grow .rkd{display:inline-block;margin-top:0;max-width:none}
.showmore{display:flex;justify-content:center;gap:8px;padding:9px 0 11px;border-top:1px solid var(--border)}
.showmore button{border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-secondary);font-family:var(--f-mono);font-size:11.5px;padding:6px 16px;border-radius:16px;cursor:pointer}
.showmore button:hover{color:var(--text-primary);border-color:var(--text-muted)}
/* hidden tooltips must not stretch the document (QA 2026-07-28: nowrap left-anchored
   tips widened the page to 2590px and produced a sideways scrollbar) */
.infoi .tip,.meterwrap>.tip{display:none;opacity:1}
.infoi:hover .tip,.infoi:focus .tip{display:block}
.meterwrap:hover>.tip{display:block}
.segdiv{width:2px;align-self:stretch;background:var(--border-strong);border-radius:2px}
.pseg.insseg button{font-weight:700;letter-spacing:.02em}
.r.nodet{cursor:default}
.r.nodet .scoreval{min-width:58px;white-space:nowrap}
.rkd{display:block;font-family:var(--f-mono);font-size:10.5px;font-weight:700;letter-spacing:.02em;text-align:center;max-width:30px;margin-top:2px}
.rkd.up{color:var(--text-success)}.rkd.down{color:var(--text-danger)}.rkd.flat{color:var(--text-muted)}
/* ---------- period badge + custom range ---------- */
.perb{display:none;align-items:center;gap:6px;font-family:var(--f-mono);font-size:10.5px;font-weight:600;padding:4px 10px;border-radius:20px;border:1px solid;white-space:nowrap}
.perb.grn{display:inline-flex;background:var(--bg-success);color:var(--text-success);border-color:var(--text-success)}
.perb.amb{display:inline-flex;background:var(--bg-warning);color:var(--text-warning);border-color:var(--border-warning)}
.custwrap{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-mono);font-size:11px;color:var(--text-muted)}
.custwrap input{height:32px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-primary);border-radius:8px;padding:0 8px;font:11.5px var(--f-mono)}
/* ---------- print gating ---------- */
.print-only{display:none}
@media print{
  body.print-full .print-only{display:block}
  body.print-full .screen-main{display:none}
  .pod{animation:none}
  .meter>i,.kbar>i,.rbar>i{transition:none!important}
  .kvt{break-inside:avoid}
  tr.xrow{display:table-row!important}   /* paper always shows the full lists... */
  .r.xrow{display:grid!important}        /* ...with their real layout (revert collapsed .r to block) */
  .showmore{display:none!important}
  :root,:root[data-theme="dark"]{--pb-tgl-bg:#E3EDFB;--pb-tgl-fg:#1D5CA8;--pb-mkt-bg:#F0E7FA;--pb-mkt-fg:#6B3FA8;
    --pb-hvac-bg:#E1F3F5;--pb-hvac-fg:#0E6470;--pb-plb-bg:#FBE9DC;--pb-plb-fg:#9A4B12}
}

/* ---- overrides: our pbsios.css classes that collide with the contractor's names (.top .brand .note .mark .btn) ---- */
header.top{background:none;border:0;padding:0;position:static;z-index:auto;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:8px}
header.top .brand{display:block;font-weight:400}
header.top .brand h1{margin:0;font-size:20px;font-weight:700}
.board>.bh .note{background:none;border:0;padding:0;margin:0 0 0 auto;font-family:var(--f-mono);font-size:11px;color:var(--text-muted)}
.appnav .btn{height:30px}
.brandrow .brand{display:block}
.brandrow h1{margin:0}
/* Every tenant logo takes the SAME space (Anurag 2026-09-08): a fixed box per size, the image fitted inside it,
   instead of the contractor's height-only rule that let a wide logo (Aelott) take twice the width of a square one (702). */
.tlogo{width:76px;height:26px;max-width:none;object-fit:contain}
.tlogo.mini{width:120px;height:44px;max-width:none;object-fit:contain}
.tlogo.podlogo{width:140px;height:50px;max-width:none;object-fit:contain}
.tlogo.lg{width:110px;height:34px;max-width:none}
.tlogo.sm{width:52px;height:17px;max-width:none}
