:root {
  --type-label: clamp(11px, 0.72vw, 12px);
  --type-meta: clamp(12px, 0.78vw, 13px);
  --type-data: clamp(13px, 0.82vw, 14px);
  --type-body-small: clamp(14px, 0.9vw, 16px);
  --type-body: clamp(16px, 1vw, 18px);
  --type-body-large: clamp(18px, 1.18vw, 21px);
  --type-card-title: clamp(20px, 1.35vw, 26px);
}

body {
  font-size: var(--type-body);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.brand {
  font-size: 15px;
}

.nav nav a,
.author-link {
  font-size: 13px;
  font-weight: 600;
}

.eyebrow {
  font-size: 12px;
  line-height: 1.45;
}

.lead {
  max-width: 760px;
  font-size: var(--type-body-large);
  line-height: 1.68;
}

.button,
.text-link {
  font-size: 13px;
}

.hero-panel p,
.ticker,
.product-body > span,
.visual-switchers span,
.keyword-list small,
.evidence-stack b,
.map-copy dd,
.legend,
.layer-label,
.category-switch span,
.type-card header span,
.gallery-status,
.gallery-caption span,
.plot-inspector header > small,
.territory-metrics dd,
.map-scale,
.service text,
.body-label {
  font-size: var(--type-label);
}

.hero-panel span,
.product-body a,
.visual-switchers button,
.density-switch button,
.category-switch button,
.keyword-list article > span,
.chart-head,
.months,
.evidence-stack small,
.formula,
.calculator label,
.calc-result span,
.calc-result small,
.gates header span,
.gates article > footer,
.tooltip,
.readiness-score span,
.sprint-board span,
.model-download span,
.density-note,
.type-card dt,
.type-card > a,
.typology-source,
#lightbox figcaption span,
.plot-inspector > p,
.plot-inspector dt,
.plot-inspector dd,
body > footer p,
body > footer > a:not(.brand) {
  font-size: var(--type-meta);
  line-height: 1.55;
}

.narrative > p,
.section-head > p,
.calc-copy > p,
.map-copy > p,
.investor-cta > p,
.product-body p,
.value-grid p,
.keyword-list > p,
.gates p,
.gates li,
.readiness-grid p,
.readiness-grid li,
.model-download p {
  font-size: var(--type-body);
  line-height: 1.7;
}

.value-grid h3,
.keyword-list b,
.evidence-stack span,
.territory-metrics dt,
.type-card dd,
.plot-inspector > strong {
  font-size: var(--type-body-small);
}

.product-body h3 {
  font-size: var(--type-card-title);
  line-height: 1.12;
}

.product-section > .visual-switchers {
  margin: 0 0 24px;
}

.service-rows article[hidden] {
  display: none !important;
}

#sceneStatus,
#densityNote {
  font-size: var(--type-meta) !important;
}

.chart-head small {
  font-size: inherit;
}

.plot-label,
.pnl-chart text {
  font-size: var(--type-label);
}

/* Investor evidence room */
.evidence-intro p:not(.eyebrow) {
  font-size: var(--type-body);
}

.evidence-intro a,
.evidence-score span,
.evidence-score small,
.evidence-status-key span,
.evidence-gate-button small,
.evidence-gate-button > em,
.evidence-disclaimer,
.evidence-filters button,
.evidence-count,
.evidence-ledger-head,
.evidence-id span,
.evidence-owner,
.evidence-badge,
.evidence-detail span,
.evidence-detail a,
.evidence-input b i,
.evidence-input span,
.evidence-input small,
.evidence-action-panel li span,
.evidence-action-panel header span,
.evidence-input-panel header span {
  font-size: var(--type-label);
  line-height: 1.45;
}

.evidence-gate-button span,
.evidence-id b,
.evidence-gate,
.evidence-action-panel li > b,
.evidence-artifact strong,
.evidence-detail p,
.evidence-loading,
.evidence-error,
.evidence-input b,
.evidence-action-panel li p,
.evidence-noscript {
  font-size: var(--type-data);
  line-height: 1.55;
}

/* Competitive proof */
.market-proof-head span,
.market-proof-decision span,
.market-proof-actions a,
.market-proof-kpis span,
.market-proof-columns,
.market-object small,
.market-rate small,
.market-object a,
.market-quality {
  font-size: var(--type-label);
  line-height: 1.45;
}

.market-proof-head p,
.market-proof-row p,
.market-object b,
.market-rate strong,
.market-proof-decision p,
.market-proof-loading {
  font-size: var(--type-data);
  line-height: 1.6;
}

.market-proof-row p small {
  font-size: inherit;
}

/* P&L model */
.pnl-intro-copy > p {
  font-size: var(--type-body);
}

.pnl-status span,
.pnl-status small,
.pnl-toolbar label,
.pnl-export,
.pnl-tabs button,
.pnl-chip,
.pnl-context > small,
.pnl-kpi span,
.pnl-kpi small,
.pnl-card-head small,
.pnl-donut-center span,
.pnl-table th,
.pnl-table .status,
.pnl-scenario-card span,
.pnl-scenario-card small,
.pnl-month-bars b,
.pnl-month-bars small {
  font-size: var(--type-label);
  line-height: 1.4;
}

.pnl-toolbar select,
.pnl-context p,
.pnl-card-head span,
.pnl-legend,
.pnl-donut-legend div,
.pnl-table,
.pnl-bar-row,
.pnl-footnote p,
.pnl-note,
.pnl-investment-alert span,
.pnl-data-error {
  font-size: var(--type-data);
  line-height: 1.55;
}

.pnl-investment-alert b {
  font-size: var(--type-body-small);
}

.pnl-table th,
.pnl-table td {
  padding-top: 15px;
  padding-bottom: 15px;
}

/* Procurement register */
.procurement-intro p:not(.eyebrow) {
  font-size: var(--type-body);
}

.procurement-intro a,
.procurement-switch button,
.procurement-toolbar label,
.procurement-kpis span,
.procurement-unit-cards span,
.procurement-notes span,
.procurement-kpis small,
.procurement-unit-cards small,
.procurement-unit-cards p,
.procurement-breakdown header small,
.procurement-table-head span,
.procurement-table-head p,
.procurement-columns,
.procurement-code small,
.procurement-item small,
.procurement-row em {
  font-size: var(--type-label);
  line-height: 1.45;
}

.procurement-breakdown button span,
.procurement-breakdown button strong,
.procurement-table-head b,
.procurement-code b,
.procurement-item b,
.procurement-row > span:not(.procurement-code):not(.procurement-item),
.procurement-row > strong,
.procurement-notes p,
.procurement-loading {
  font-size: var(--type-data);
  line-height: 1.55;
}

.procurement-source i {
  font-size: 11px;
}

.procurement-row {
  min-height: 76px;
}

/* Booking rates and paid add-ons */
.house-rate-card header span,
.house-rate-card small,
.house-rate-card section span,
.house-rate-card dt,
.service-catalog > header span,
.spa-economics span,
.spa-economics small,
.service-filters button,
.service-rows small,
.service-rows em {
  font-size: var(--type-label);
  line-height: 1.45;
}

.house-rate-card header b,
.house-rate-card dd,
.house-rate-card section b,
.service-catalog > header p,
.service-rows b,
.service-rows strong,
.service-catalog footer b,
.service-catalog footer span {
  font-size: var(--type-data);
  line-height: 1.55;
}

@media (min-width: 1001px) {
  .evidence-shell {
    grid-template-columns: 350px minmax(0, 1fr);
  }

  .evidence-item summary,
  .evidence-ledger-head {
    grid-template-columns: 125px minmax(280px, 1.3fr) 78px 150px 105px;
  }

  .evidence-detail {
    padding-left: 146px;
  }

  .service-rows article {
    padding-top: 19px;
    padding-bottom: 19px;
  }
}

@media (max-width: 1000px) {
  :root {
    --type-label: 11px;
    --type-meta: 12px;
    --type-data: 13px;
    --type-body-small: 14px;
    --type-body: 16px;
    --type-body-large: 18px;
  }
}

@media (max-width: 620px) {
  .nav nav a,
  .author-link {
    font-size: 12px;
  }

  .pnl-table,
  .pnl-bar-row,
  .procurement-row > span:not(.procurement-code):not(.procurement-item),
  .procurement-row > strong {
    font-size: 12px;
  }

  .pnl-month-bars small {
    font-size: 9px;
  }
}
