/* Prevent the desktop workspace from scrolling its whole canvas offscreen. */
@media(min-width:1101px) {
 html, body, #root { height:100%; overflow:clip; }
 .workspace { min-height:0; }
}
@media(min-width:1101px) { #root { position:fixed; inset:0; overflow:hidden; } }

/* Type floor (2026-10-06 review): no visible text below 13px. */
:root{--t-11:13px;--t-12:13px}
.spec-sheet,
.spec-sheet label,
.spec-sheet small,
.spec-eyebrow,
.spec-project p,
.spec-meta,
.spec-panel figcaption,
.spec-electrician,
.spec-block-head h2,
.spec-block-head span,
.spec-table th,
.spec-table td,
.spec-num small,
.spec-total b,
.spec-total-foot td,
.spec-consequence,
.spec-list li,
.spec-title-block,
.spec-tb-cell span,
.spec-tb-lines,
.review-bill .bill-head p,
.review-bill .bill-actions .quiet-button,
.review-bill .bill-ledger,
.review-bill .bill-ledger .product small,
.review-bill .bill-chip,
.review-bill .bill-ledger tr.basis>td,
.review-bill .bill-ledger tr.bill-summary td,
.review-bill .ledger-foot{font-size:13px!important}
.bill-head .eyebrow { white-space:nowrap; }
/* Opened on its own, the integration banner sits above the app: give #root the space below it instead of hiding the header under it. */
@media(min-width:1101px) {
 body:has(> aside:first-child) { display:flex; flex-direction:column; height:100vh; }
 body:has(> aside:first-child) > #root { position:relative !important; inset:auto !important; flex:1 1 auto; min-height:0; }
 body:has(> aside:first-child) .workspace { height:calc(100dvh - var(--header) - var(--footer) - 44px); }
}
/* No sideways scroll on 320px phones (the build set body min-width 360px). */
body { min-width:0; }
@media(max-width:380px) {
 .header-actions .dark-button { padding-inline:10px; }
 .masthead .wordmark { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:16px; }
}
/* Job-condition switches: a 44px-tall hit area around the 18px track. */
.toggle { position:relative; }
.toggle::after { content:""; position:absolute; inset:-13px -6px; }
