/* ui module — monday-style table, status cells, typeahead, bell. Owned by js/ui.js. Uses css/app.css variables only. */
.mt-wrap{overflow:auto;border:1px solid var(--rule);border-radius:12px;background:var(--paper);box-shadow:var(--sh)}
table.mt{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}
table.mt th{position:sticky;top:0;background:var(--paper2);text-align:left;padding:9px 10px;border-bottom:1px solid var(--rule);font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink2);white-space:nowrap;z-index:2;font-weight:700;cursor:pointer;user-select:none}
table.mt th:hover{background:var(--hover);color:var(--ink)} table.mt th.sorted{color:var(--indigo)} table.mt th.over{box-shadow:inset 3px 0 0 var(--indigo)} table.mt th.dragging{opacity:.5}
table.mt th.n{text-align:right} .mt-sort{margin-left:4px;font-size:11px}
table.mt td{padding:7px 10px;border-bottom:1px solid var(--rule2);vertical-align:middle} table.mt tr:last-child td{border-bottom:0}
table.mt tbody tr:hover td{background:var(--hover)} table.mt tr.sel td{background:var(--indigo-xl)}
table.mt td.n{text-align:right;font-family:var(--font);font-variant-numeric:tabular-nums} table.mt td.c{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:12px}
.mt-wrap.dense table.mt td{padding:4px 8px;font-size:12.5px} .mt-wrap.dense table.mt th{padding:6px 8px}
.mt-selcell{width:30px} .mt-menu-th{width:30px;text-align:right;cursor:default} .mt-menu-btn{border:0;background:none;color:var(--ink3);font-size:16px;cursor:pointer;padding:0;min-width:26px;height:26px;line-height:26px;border-radius:4px} .mt-menu-btn:hover{background:var(--rule2);color:var(--ink)}
.mt-menu{position:absolute;z-index:70;background:var(--paper);border:1px solid var(--rule);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.18);padding:10px 12px;min-width:210px;display:flex;flex-direction:column;gap:6px;font-size:13px}
.mt-menu-title{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)} .mt-menu label{display:flex;gap:8px;align-items:center;font-weight:500;color:var(--ink);cursor:pointer;white-space:nowrap} .mt-menu input[type=checkbox]{width:auto;flex:none;margin:0} .mt-menu .btn.sm{align-self:flex-start;margin-top:4px}
tr.mt-group td{background:var(--paper2);font-weight:700;color:var(--ink);cursor:pointer;padding:8px 10px;border-top:1px solid var(--rule)} tr.mt-group.collapsed td{opacity:.85}
.mt-caret{display:inline-block;width:14px;color:var(--ink3);font-size:12px} .mt-gbar{display:inline-block;width:4px;height:16px;border-radius:2px;margin:0 8px 0 2px;vertical-align:-3px} .mt-gcount{margin-left:8px;font-family:var(--font);font-variant-numeric:tabular-nums;font-weight:500;color:var(--ink3);font-size:12px} .mt-gextra{margin-left:12px;font-weight:500;color:var(--ink2);font-size:12px}
.mt-status{display:block;text-align:center;padding:5px 8px;border-radius:5px;font-size:12px;font-weight:700;white-space:nowrap;min-width:84px;line-height:1.3}
.mt-status-sel{display:block;width:100%;min-width:110px;text-align:center;text-align-last:center;padding:5px 8px;border-radius:5px;border:0;font:inherit;font-size:12px;font-weight:700;cursor:pointer;appearance:none;-webkit-appearance:none}
.mt-status-sel option{background:var(--paper);color:var(--ink);font-weight:500}
.mt-prog{display:inline-block;width:70px;height:6px;background:var(--rule);border-radius:3px;overflow:hidden;vertical-align:middle;margin-right:6px} .mt-prog i{display:block;height:100%;background:var(--green)} .mt-progtxt{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink2)}
/* typeahead */
.ta-dd{position:absolute;z-index:80;background:var(--paper);border:1px solid var(--rule);border-radius:12px;box-shadow:0 14px 40px rgba(0,0,0,.2);padding:6px;max-width:560px}
.ta-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13px} .ta-item:hover,.ta-item.hi{background:var(--hover)} .ta-item.picked{background:var(--indigo-l)}
.ta-sub{font-size:11.5px;color:var(--ink3)} .ta-badge{font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:4px;background:var(--grey-l);color:var(--ink2);margin-left:6px} .ta-hint{font-size:11px;color:var(--ink3);padding:6px 10px 2px;border-top:1px solid var(--rule2);margin-top:4px}
/* bell */
#bell{position:relative;background:none;border:1px solid var(--tb-btn-bd,rgba(255,255,255,.25));color:var(--tb-btn-ink,#fff);border-radius:8px;padding:6px 10px;cursor:pointer;font:inherit;font-size:13px} #bell .n{display:inline-block;min-width:18px;text-align:center;margin-left:6px;padding:0 5px;border-radius:9px;background:var(--tb-bell-n,rgba(255,255,255,.2));font-family:var(--mono);font-size:11.5px} #bell.hot .n{background:var(--red)}
.bell-list{display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow:auto} .bell-item{border:1px solid var(--rule);border-left:4px solid var(--amber);border-radius:8px;padding:8px 10px} .bell-item.bad{border-left-color:var(--red)} .bell-item.info{border-left-color:var(--indigo)}

/* pinned columns + totals row */
table.mt th.mt-pin{cursor:pointer} table.mt th.mt-pin::after{content:'📌';font-size:9px;margin-left:4px;opacity:.55}
table.mt tfoot tr.mt-total td{position:sticky;bottom:0;background:var(--paper2);border-top:2px solid var(--rule);font-weight:700;font-family:var(--font);font-variant-numeric:tabular-nums;font-size:12.5px;padding:8px 10px;z-index:1}
table.mt tfoot tr.mt-total td.mt-total-lbl{font-family:var(--font);color:var(--ink2);text-transform:uppercase;letter-spacing:.05em;font-size:11px}
.mt-menu label.pinned{color:var(--ink3);cursor:default}

/* ── round 5: monday status cells + label picker + option chips (statusCellHtml / openStatusPicker / optionChipsHtml; UI.statusSelect renders through .mst-sel) ── */
.mst{position:relative;display:block;width:100%;height:32px;line-height:32px;padding:0 10px;border-radius:4px;box-sizing:border-box;text-align:center;font-size:13px;font-weight:500;letter-spacing:.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;background:#c4c4c4;color:#fff;vertical-align:middle}
.mst.mst-sm{display:inline-block;width:auto;min-width:72px;max-width:100%;height:24px;line-height:24px;font-size:12px;padding:0 9px}
.mst.mst-sm.mst-block{display:block;width:100%}
.mst.mst-ed{cursor:pointer;transition:filter .12s}
.mst.mst-ed:hover,.mst.mst-ed.mst-open{filter:brightness(.94)}
.mst.mst-ed:hover::after,.mst.mst-ed.mst-open::after{content:'';position:absolute;top:0;right:0;border-style:solid;border-width:0 11px 11px 0;border-color:transparent var(--paper) rgba(0,0,0,.3) transparent}
.mst.mst-ed:focus-visible{outline:2px solid var(--indigo);outline-offset:1px}
.mst.mst-dis{cursor:wait;opacity:.6} .mst.mst-dis::after{display:none}
.mst-sel{display:block;position:relative;min-width:110px}
.mst-sel>select.mt-status-sel{position:absolute;inset:0;width:100%;height:100%;min-width:0;opacity:0;pointer-events:none}
.mst-sel>select:disabled+.mst{cursor:wait;opacity:.6;filter:none} .mst-sel>select:disabled+.mst::after{display:none}
.js .mst-sel{min-width:160px}
table.mt td .mst.mst-md,.optbl td .mst.mst-md{min-width:96px}
.mst-pop{position:fixed;z-index:95;display:flex;flex-direction:column;gap:8px;box-sizing:border-box;max-width:calc(100vw - 16px);padding:12px;background:var(--paper);border:1px solid var(--rule);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.22);outline:none}
.mst-pop-t{font-size:12px;font-weight:700;color:var(--ink2)}
.mst-search{width:100%;box-sizing:border-box;height:32px;padding:0 10px;border:1px solid var(--rule);border-radius:4px;background:var(--paper);color:var(--ink);font:inherit;font-size:13px}
.mst-search:focus{outline:none;border-color:var(--focus,#0073ea);box-shadow:0 0 0 1px var(--focus,#0073ea)}
.mst-grid{position:relative;display:grid;gap:8px;overflow:auto;min-height:0;flex:1 1 auto;padding:2px;align-content:start}
.mst-grp{grid-column:1/-1;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);padding:6px 2px 0}
.mst-grp:first-child{padding-top:0}
.mst-opt{position:relative;display:block;width:100%;height:32px;line-height:32px;padding:0 22px;border:0;border-radius:4px;box-sizing:border-box;font:inherit;font-size:13px;font-weight:500;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:filter .1s,box-shadow .1s}
.mst-opt:hover{filter:brightness(.92)}
.mst-opt.mst-hi{box-shadow:0 0 0 2px var(--paper),0 0 0 4px var(--focus,#0073ea)}
.mst-opt.mst-cur::before{content:'✓';position:absolute;left:8px;top:0;font-weight:700}
.mst-opt[hidden],.mst-grp[hidden],.mst-nomatch[hidden]{display:none}
.mst-none,.mst-nomatch{grid-column:1/-1;font-size:12px;color:var(--ink3);text-align:center;padding:8px 0}
.mst-clear{height:30px;border:1px dashed var(--rule);border-radius:4px;background:transparent;color:var(--ink2);font:inherit;font-size:12.5px;cursor:pointer}
.mst-clear:hover{background:var(--hover);color:var(--ink)}
.mst-note{font-size:11px;color:var(--ink3);text-align:center}
.mst-chips{display:flex;flex-wrap:wrap;gap:6px}
.mst-chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 11px;border:1px solid var(--rule);border-radius:4px;background:var(--paper);color:var(--ink);font:inherit;font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;transition:background .1s,border-color .1s}
.mst-chip::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--c);flex:none}
.mst-chip:hover{border-color:var(--c)}
.mst-chip.mst-on{background:var(--c);border-color:var(--c);color:var(--ci)} .mst-chip.mst-on::before{display:none}
.mst-chips.mst-sm .mst-chip{height:24px;padding:0 9px;font-size:12px}
/* the pre-round-5 statusCell (UI.statusCell) in monday's type: white text, 4px corners */
.mt-status{border-radius:4px;font-weight:500;font-size:12.5px}
.pill.mst-pill{border-radius:4px;font-weight:600;letter-spacing:.02em}
/* job drawer header chips (priority, LATE / OK, HELD, PANEL?, gates, readiness, A9) in monday's solid label colours — readiness: block red · warn orange · ok green */
.modal.job-full .jk.grow .pill{border-radius:4px;font-weight:600;padding:3px 9px;line-height:1.45}
.modal.job-full .jk.grow .pill.soft.green{background:#00c875;color:#fff} .modal.job-full .jk.grow .pill.soft.red{background:#df2f4a;color:#fff}
.modal.job-full .jk.grow .pill.soft.amber{background:#fdab3d;color:#fff} .modal.job-full .jk.grow .pill.soft.purple{background:#a25ddc;color:#fff}
.modal.job-full .jk.grow .pill.soft.grey{background:#c4c4c4;color:#fff} .modal.job-full .jk.grow .pill.soft.indigo,.modal.job-full .jk.grow .pill.soft.blue{background:#0086c0;color:#fff}
/* job drawer (js/app.js showJob): Materials Missing = monday dropdown — labels as monday label pills, a ticked one is filled with its colour */
.jh-status .jmm{min-height:32px;border-radius:4px} .jh-status .jmm .mmchip{border-radius:4px;font-weight:500;padding:3px 8px}
.jmm-list.mst-mm{gap:6px;padding:2px}
.jmm-list.mst-mm label{position:relative;flex:none;height:30px;box-sizing:border-box;padding:0 10px 0 28px;border:1px solid var(--rule);border-radius:4px;background:var(--paper);color:var(--ink);font-size:12.5px;font-weight:500}
.jmm-list.mst-mm label:hover{border-color:var(--c);background:var(--paper)}
.jmm-list.mst-mm input{position:absolute;opacity:0;pointer-events:none}
.jmm-list.mst-mm i{position:absolute;left:10px;width:9px;height:9px;border-radius:50%}
.jmm-list.mst-mm label:has(input:checked){background:var(--c);border-color:var(--c);color:var(--ci)}
.jmm-list.mst-mm label:has(input:checked) i{background:transparent!important}
.jmm-list.mst-mm label:has(input:checked) i::before{content:'✓';position:absolute;left:-1px;top:-6px;font-style:normal;font-weight:700;font-size:12px;color:var(--ci)}
.jmm-list.mst-mm label:has(input:focus-visible){outline:2px solid var(--focus,#0073ea);outline-offset:1px}

/* ══ R10 shared design system (2026-09-29) — every page builds on these; page CSS may refine inside its own scope ══════════════════════
   Type: --fs-11 captions / table headers · --fs-12 meta · --fs-13 cells, inputs, buttons · --fs-14 body · --fs-16 card titles · --fs-19 page title · --fs-26 KPI.
   Nothing below 11 px (js/ui.js UI.fontFloor lifts older page rules at boot).
   Buttons: .btn 32 px / 13 · .btn.sm 26 px / 12 · .btn.lg 44 px / 15 (floor) · styles .primary .danger .ghost (one .primary per card; row actions default or .ghost).
     Old names still work: .pri → .primary · .small, .xs → .sm · .big → .lg · .green, .dark-btn → .primary.
   Pills: .pill 20 px, 11.5 / 600, radius 4, never wraps (ellipsis) · solid or .soft · .green .amber .red .blue .grey. At most 2 per row.
   Chips: .chip 24 px round filter / removable chip, .chip.on = active, <button class="x">×</button> inside = remove.
   Cards: .card > .card-h (h3 or .card-t 16 px · .card-m one short meta phrase · .card-a actions, pushed right) · .kpis > .kpi (.l label · .v number · .d one-line sub)
   .empty one sentence + optional button · .seg segmented control · .tabs2 tab strip · <details class="howto"><summary>How this works</summary>…</details>
   Numbers: body font + tabular-nums (td.n right-aligned); mono (.mono / .code) only for WO numbers, Eng #, serials and codes. */
:root{--fs-11:11px;--fs-12:12px;--fs-13:13px;--fs-14:14px;--fs-16:16px;--fs-19:19px;--fs-26:26px;--r-4:4px;--r-6:6px;--r-10:10px;--r-14:14px}
/* buttons */
.btn{padding:5px 12px;line-height:20px;font-size:var(--fs-13);border-radius:var(--r-6)}
.btn.sm,.btn.small,.btn.xs{padding:3px 9px;line-height:18px;font-size:var(--fs-12);border-radius:5px}
.btn.lg,.btn.big{padding:10px 18px;line-height:22px;font-size:15px;border-radius:8px}
.btn.pri,.btn.green,.btn.dark-btn{background:var(--indigo);color:var(--on-accent,#fff);border-color:var(--indigo)}
.btn.pri:hover,.btn.green:hover,.btn.dark-btn:hover{background:var(--indigo-d)}
.btn.danger{color:var(--red-t,var(--red));border-color:var(--red-bd,var(--rule))} .btn.danger:hover{background:var(--red-l);border-color:var(--red)}
.btn.danger.solid,.btn.primary.danger{background:var(--red);color:var(--red-ink,#fff);border-color:var(--red)}
.btn.ghost{box-shadow:none}
.btn:focus-visible{outline:2px solid var(--focus,var(--indigo));outline-offset:2px}
:root[data-skin="dawgwalk"][data-theme="dark"] .btn.pri,:root[data-skin="dawgwalk"][data-theme="dark"] .btn.green,:root[data-skin="dawgwalk"][data-theme="dark"] .btn.dark-btn{background:#F2F0ED;border-color:#F2F0ED;color:#121212}
/* pills */
.pill{display:inline-block;height:20px;line-height:20px;padding:0 8px;border-radius:var(--r-4);font-size:11.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;vertical-align:middle}
/* chips (:root raises it over older unscoped .chip rules; a page's own scoped .chip still refines it) */
:root .chip{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 10px;border:1px solid var(--rule);border-radius:999px;background:var(--paper);color:var(--ink2);font:inherit;font-size:var(--fs-12);font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;vertical-align:middle}
:root .chip:hover{border-color:var(--rule-hi,#c9c9d6);color:var(--ink)}
:root .chip.on{background:var(--indigo);border-color:var(--indigo);color:var(--on-accent,#fff)}
:root .chip .x{border:0;background:none;color:inherit;opacity:.6;font:inherit;font-size:14px;line-height:1;padding:0 0 0 2px;cursor:pointer} :root .chip .x:hover{opacity:1}
:root .chip:focus-visible{outline:2px solid var(--focus,var(--indigo));outline-offset:2px}
/* cards */
.card-h{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;min-height:28px;margin:0 0 10px}
.card-h h3,.card-h .card-t{font-size:var(--fs-16);font-weight:700;margin:0;line-height:1.3}
.card-h .card-m{font-size:var(--fs-12);color:var(--ink3);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.card-h .card-a{margin-left:auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap} .card-h .sp{flex:1}
/* KPI tiles */
.kpi .l{font-size:var(--fs-12);font-weight:600;color:var(--ink2)} .kpi .v{font-size:var(--fs-26);font-variant-numeric:tabular-nums}
.kpi .d,.kpi .sub{font-size:var(--fs-12);color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* empty state (one sentence + optional button); older modifier uses of .empty on other components are left alone */
.empty:not(.kcol,.lc-tile,.jn,.fl-shift,.vw-stage,.dp3-row,.dy-anns,tr,td){padding:28px 16px;text-align:center;color:var(--ink2);font-size:var(--fs-14)}
.empty:not(.kcol,.lc-tile,.jn,.fl-shift,.vw-stage,.dp3-row,.dy-anns,tr,td) .btn{margin:10px 4px 0}
/* segmented control + tab strip */
.seg{border-radius:var(--r-6);vertical-align:middle} .seg button,.seg a{padding:5px 12px;line-height:20px;font-size:var(--fs-13);text-decoration:none;color:var(--ink2)}
.seg a{display:inline-block;border-right:1px solid var(--rule)} .seg a:last-child{border-right:0}
.seg button.on,.seg a.on,.seg [aria-pressed="true"]{background:var(--indigo-l);color:var(--indigo)}
.seg.sm button,.seg.sm a{padding:2px 9px;font-size:var(--fs-12)}
.seg button:focus-visible,.seg a:focus-visible{outline:2px solid var(--focus,var(--indigo));outline-offset:-2px}
.tabs2 button,.tabs2 a{font-size:var(--fs-13);text-decoration:none} .tabs2 a{display:inline-block;padding:8px 12px;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--ink2);font-weight:600}
.tabs2 a.on{color:var(--indigo);border-bottom-color:var(--indigo)} .tabs2 .n{margin-left:5px;font-size:var(--fs-11);color:var(--ink3);font-weight:600}
:root[data-skin="dawgwalk"] .tabs2 a.on{color:var(--ink);border-bottom-color:var(--ink)} :root[data-skin="dawgwalk"] .seg a.on,:root[data-skin="dawgwalk"] .seg [aria-pressed="true"]{color:var(--ink)}
/* "How this works" — any help text beyond one sentence */
details.howto{margin:8px 0;font-size:var(--fs-13);color:var(--ink2);line-height:1.5}
details.howto>summary{display:inline-flex;align-items:center;gap:7px;cursor:pointer;list-style:none;font-size:var(--fs-12);font-weight:600;color:var(--ink2);user-select:none}
details.howto>summary::-webkit-details-marker{display:none}
details.howto>summary::before{content:"";width:5px;height:5px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(-45deg);transition:transform .15s}
details.howto[open]>summary::before{transform:rotate(45deg)} details.howto>summary:hover{color:var(--ink)}
details.howto[open]{background:var(--paper2);border:1px solid var(--rule);border-radius:var(--r-10);padding:8px 12px}
details.howto[open]>summary{margin-bottom:6px} details.howto p{margin:4px 0} details.howto ul{margin:4px 0;padding-left:18px}
/* numbers and codes */
.num,td.n,table.mt td.n{font-family:var(--font);font-variant-numeric:tabular-nums}
input[type=number]{font-family:var(--font);font-variant-numeric:tabular-nums}
.code{font-family:var(--mono);font-size:.95em}
th,table.mt th{font-size:var(--fs-11)}
/* page + side panel: .ds-split > main content + .ds-side (340 px); at ≤1100 px the side panel goes below the content */
.ds-split{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start} .ds-split>*{min-width:0}
@media (max-width:1100px){.ds-split{grid-template-columns:minmax(0,1fr)}}

/* ══ R10 global chrome (G1): top bar = Back · title · search · person · bell · ⋯ ; toast bottom-right; SVG icons ═════════════════════ */
.ic-svg{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}
.btn .ic-svg{margin-right:5px} .btn .ic-svg:only-child{margin-right:0}
header.top .sub{font-family:var(--font);font-size:var(--fs-12)}
header.top #btnBack{display:inline-flex;align-items:center;gap:2px;padding-left:6px} header.top #btnBack .ic-svg{margin-right:0}
header.top #tbMore{display:inline-flex;align-items:center;justify-content:center;padding:5px 8px;min-height:28px;min-width:32px} header.top #tbMore[hidden]{display:inline-flex}
header.top #bell{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;line-height:18px} header.top #bell .n{margin-left:0} header.top #bell:not(.hot) .n{display:none}
header.top #whoBtn{display:inline-flex;align-items:center;gap:5px;max-width:220px} header.top #whoBtn .ic-svg{margin:0} header.top #whoBtn .tb-who{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
header.top #siBar #siIn,header.top #siBar #siOut{display:none} header.top #siChip{max-width:280px;overflow:hidden}
header.top>#accChip{display:none!important}
.tb-menu>.btn[hidden]{display:none} .tb-menu>.btn{padding:5px 10px;font-size:var(--fs-13)} .tb-menu>.btn.primary{background:transparent}
.modal .tb-si{margin-top:12px;padding-top:10px;border-top:1px solid var(--rule)}
@media (max-width:1180px){ header.top #siChip .si-cells{display:none} header.top #whoBtn{max-width:150px} }
@media (max-width:900px){ header.top #whoBtn .tb-who{display:none} }
/* brand + sidebar footer text */
.brand .nm>.ver{display:inline-block;margin-left:4px;padding:0 5px;border-radius:4px;background:var(--indigo-l);color:var(--indigo);font-size:var(--fs-11);font-weight:800;vertical-align:2px;line-height:16px}
.brand .nm small{text-transform:none;letter-spacing:0;white-space:nowrap;font-size:var(--fs-12)}
:root[data-skin="dawgwalk"] .brand .nm>.ver{background:var(--side-chip);color:var(--side-chip-ink)}
#syncInfo{font-family:var(--font);font-variant-numeric:tabular-nums}
.side-foot .lock[hidden]{display:none} .side-foot .lock .ic-svg{width:14px;height:14px}
/* toast: bottom-right, clear of modal buttons; lifts above the connection-lost banner */
#toast{left:auto;right:18px;bottom:18px;transform:none;max-width:min(440px,calc(100vw - 36px))}
body:has(#netBanner) #toast{bottom:120px}
.boot-fail h3 .ic-svg{width:18px;height:18px;margin-right:6px;color:var(--red);vertical-align:-3px}
header.top .tb-menu>.btn{border-color:transparent;background:transparent} header.top .tb-menu>.btn:hover{background:var(--tb-btn-hover,rgba(255,255,255,.12));border-color:transparent}
/* R10 (lead): numbers in tables use the body font with tabular figures everywhere, including the UI.table totals row and td.c; page rules that set
   mono on them are overridden here. Mono stays only for .code / .mono (WO #, Eng #, serials, codes). */
td.c,td.n{font-family:var(--font);font-variant-numeric:tabular-nums}   /* beats app.css td.c / td.n mono (same weight, loads later) */
:root table.mt td.c,:root table.mt td.n,:root table.mt tfoot tr.mt-total td,:root table.mt tfoot td{font-family:var(--font);font-variant-numeric:tabular-nums}
td.c .code,td.c .mono,td.n .code,td.n .mono,:root td.c.code,:root td.c.mono,:root td.n.code,:root td.n.mono{font-family:var(--mono)}
