/* Haldir responsive refinement — additive to Luca's preserved export.
   Manrope, original SVG, canopy bitmap, content and section order stay intact.
   Page typography/layout only: menu state and the screen viewer belong to viewer.css. */
body { font-size: 16px; }

.hero .intro,
.section p,
.step p,
.beat > p,
.outcome-copy > p,
.outcome .feature p,
.near-copy > p,
.question p,
.closing p,
.message,
.blocked p,
.demo-status p {
  font-size: 16px;
  line-height: 1.75;
}

.hero .eyebrow,
.hero .status,
.hero .links,
.hero .links a,
.hero .nav-cta,
.top-title,
.app-meta,
.side-label,
.side-item,
.side-bottom,
.work-head > span,
.name,
.receipt strong,
.receipt small,
.receipt .tag,
.composer,
.perm-head,
.permission-row,
.permission-row.budget strong small,
.blocked strong,
.balances,
.microcaption,
.microcaption .detail,
.section .kicker,
.step-number,
.scenario-line,
.approved-list,
.beat-index,
.event strong,
.event small,
.event .amount small,
.demo-status .balance,
.shot-label,
.shot-label > span,
.permissions-screen .shot-label,
.expand-hint,
.product-shot figcaption,
.near-copy .support,
.footer p,
.back-top {
  font-size: 14px;
  line-height: 1.6;
}

.scenario-caption { font-size: 14px !important; line-height: 1.75 !important; color: #526649 !important; }
.product-wrap .product::before { font-size: 14px; line-height: 1.6; }
.hero .eyebrow { letter-spacing: .065em; }
.section .kicker, .beat-index, .side-label { letter-spacing: .06em; }
.hero .main-cta, .closing .main-cta, .question summary { font-size: 16px; }

/* Existing forest secondary ink, deepened where small text failed AA. */
.top-title .slash,
.side-label,
.side-bottom,
.receipt .tag,
.composer,
.permission-row.budget strong small,
.microcaption .detail,
.section .kicker .index,
.step-number,
.beat-index,
.event small,
.scenario-caption,
.muted,
.shot-label > span,
.product-shot figcaption { color: #526649; }
.closing h2 span { color: #49613b; }
.closing p { color: #526649; }
.permissions-screen .shot-label > span { color: #bacaab; }
.permissions-screen figcaption { color: #c3d4b4; }
.near .kicker .index { color: #bacaab; }

/* Content determines the hero height; a fixed image-height no longer creates
   an empty desktop gap or collides with larger/reflowed text. */
:root {
  --product-overlap: 144px;
  --hero-product-gap: clamp(48px, 4.5vw, 72px);
}
.hero {
  height: auto;
  min-height: 0;
  padding-bottom: calc(var(--product-overlap) + var(--hero-product-gap));
}
.hero .content { padding-top: clamp(56px, 6vw, 88px); }
.product-wrap { margin-top: calc(0px - var(--product-overlap)); }

@media (max-width: 640px) {
  :root { --product-overlap: 112px; }
  .hero .content { padding-top: 56px; }
}
@media (max-height: 500px) and (min-width: 641px) {
  .hero .content { padding-top: 40px; }
}

/* Wrap complete financial facts, never detach a value from its label. */
.balances { flex-wrap: wrap; gap: 8px 14px; }
.balances > span { white-space: nowrap; }

/* The tablet rail was 42px wide: readable sequence labels spilled into the
   story. Give the same label its own row without changing the narrative. */
@media (min-width: 641px) and (max-width: 950px) {
  .beat { grid-template-columns: minmax(0, 1fr) minmax(200px, .8fr); gap: 0 24px; }
  .beat-index { grid-column: 1 / -1; grid-row: 1; margin: 0 0 18px; }
  .beat h3 { grid-column: 1; grid-row: 2; }
  .beat > p { grid-column: 1; grid-row: 3; }
  .event { grid-column: 2; grid-row: 2 / 4; }
}

/* One fluid measure replaces the export's abrupt gutter/type jumps. */
:root { --gutter: clamp(20px, 5vw, 96px); }
.container, .product-wrap { width: calc(100% - var(--gutter) * 2); max-width: 1344px; }
.hero .content { width: calc(100% - var(--gutter) * 2); max-width: 1030px; }
.hero .intro { max-width: 655px; }
.hero h1 {
  font-size: clamp(38px, calc(28px + 2.75vw), 68px);
  letter-spacing: -.035em;
}
.section h2 { font-size: clamp(36px, calc(28px + 1.8vw), 54px); letter-spacing: -.03em; }
.outcome-copy h2, .near h2 { font-size: clamp(36px, calc(26px + 1.6vw), 49px); letter-spacing: -.03em; }
.faq h2 { font-size: clamp(36px, calc(28px + 1.4vw), 48px); }
.closing h2 { font-size: clamp(38px, calc(28px + 2.5vw), 64px); letter-spacing: -.03em; }

/* Real reflow, not an off-canvas clipping workaround. */
body, .page { overflow: visible; }
/* Local paint boundary for the incumbent canopy's finite scale-in only.
   The hero is content-height; text is tested against this boundary too. */
.hero { overflow: clip; }
.section-head > *, .steps > *, .beats > *, .outcome-layout > *,
.near-layout > *, .app-body > *, .assistant-content, .receipt > div,
.event > div { min-width: 0; }
