/* Shared workspace sizing. Never scale the page or counteract browser zoom.
   Full-screen CAD/spreadsheet viewers retain their own layout contracts. */
body:not(.template-viewer-mode):not(.asset-workspace-mode) { min-width: 0; }
body:not(.template-viewer-mode):not(.asset-workspace-mode):not(.designer-workspace-mode) {
  --page-gutter: clamp(12px, 1.2vw, 24px);
  --shell-nav-width: clamp(180px, 15vw, 218px);
}
.app-shell > main { min-width: 0; }
#content.content { max-width: none; min-width: 0; }
.content > *, .table-wrap { min-width: 0; }
.table-wrap { max-width: 100%; overflow-x: auto; }
.topbar-actions { flex-wrap: wrap; }
.topbar > div { min-width: 0; }
.topbar h1 { overflow-wrap: anywhere; }

/* A flex remainder follows the actual header height, including wrapped text. */
body:not(.designer-workspace-mode) .app-shell > main:has(> .customer-tool-workspace) {
  display: flex; flex-direction: column; height: 100dvh; min-height: 0;
}
body:not(.designer-workspace-mode) main:has(> .customer-tool-workspace) > .topbar {
  flex: 0 0 auto;
}
body:not(.designer-workspace-mode) #content.customer-tool-workspace {
  flex: 1 1 0; height: auto; min-height: 0; margin: 0;
}

@media (max-width: 1440px), (max-height: 800px) {
  body:not(.template-viewer-mode):not(.asset-workspace-mode):not(.designer-workspace-mode) {
    --topbar-height: 58px;
  }
  .app-shell > main > .topbar { height: auto; min-height: var(--topbar-height); gap: 8px; padding-block: 8px; }
  body.workspace-home .topbar { min-height: var(--topbar-height); }
  body:not(.template-viewer-mode):not(.asset-workspace-mode):not(.designer-workspace-mode) .content:not(.customer-tool-workspace):not(.design-it-workspace) { padding-top: 12px; padding-bottom: 18px; }
  .module-hero, .review-banner, .cabinet-build-heading { padding: 14px 16px; gap: 12px; }
  .workspace-welcome { padding: 20px; }
  .sidebar .brand { padding-bottom: 12px; }
  .sidebar .nav-folder > summary { padding-block: 8px; }
}

@media (max-width: 1100px) {
  .module-hero { grid-template-columns: 52px minmax(0, 1fr); }
  .module-hero > :last-child { grid-column: 2; }
  .two-column, .rules-columns, .template-workspace, .part-template-workspace,
  .asset-test-grid, .dxf-inspection-grid { grid-template-columns: minmax(0, 1fr); }
  .template-browser, .part-template-catalogue { position: static; }
  .review-banner, .baseline-panel { flex-wrap: wrap; }
  .baseline-metrics { grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); width: 100%; }
}

@media (max-width: 760px) {
  .app-shell > main > .topbar { flex-wrap: wrap; }
  .module-grid, .responsibility-grid, .work-centre-grid, .definition-grid,
  .decision-grid, .machining-grid, .field-group-grid { grid-template-columns: minmax(0, 1fr); }
  .hero-panel { grid-template-columns: minmax(0, 1fr); }
  .hero-actions, .section-heading, .panel-heading { flex-wrap: wrap; gap: 8px; }
}

@media (max-width: 600px) {
  body:not(.template-viewer-mode):not(.asset-workspace-mode):not(.designer-workspace-mode) .app-shell { display: block; }
  body:not(.asset-workspace-mode):not(.designer-workspace-mode) .app-shell > .sidebar {
    position: relative; height: 30dvh; min-height: 0; padding: 10px 12px; overflow: hidden;
  }
  .app-shell > .sidebar > .brand { flex-shrink: 0; }
  .app-shell > .sidebar > #primary-navigation {
    display: block; flex: 1; min-height: 0; overflow: auto; overscroll-behavior: contain;
  }
  .app-shell > .sidebar > .environment-card { display: none; }
  body:not(.designer-workspace-mode) .app-shell > main:has(> .customer-tool-workspace) { height: 70dvh; }
  .workspace-home .topbar { position: sticky; }
}
