/* One owner for each vertical gap, after the individual illustration styles.
   Major sections, supporting blocks, and copy each share a spacing scale. */
.partner-page {
  --section-space: 120px;
  --block-space: 48px;
  --copy-space: 24px;
  --detail-space: 24px;
  --hero-space: 72px;
}

/* Flex prevents neighboring section margins from collapsing or accumulating. */
.partner-page main { display: flex; flex-direction: column; }
.partner-page main > :is(.hero, .section, .insight-section) { padding-block: 0; margin-block: 0; }
.partner-page main > .hero { padding-top: var(--hero-space); }
.partner-page #problem { padding-block: 0; margin-top: var(--section-space); }
.partner-page #insights { margin-top: var(--block-space); }
.partner-page :is(#local, #network) { margin-top: var(--section-space); }
.partner-page .site-footer { margin-top: var(--section-space); }

.partner-page .hero .hero-intro,
.partner-page .section-heading { margin-block: 0; }
.partner-page .hero .signal-figure,
.partner-page .local-section > :is(.perimeter, .local-diagram, .local-concept) { margin-top: var(--block-space); }
.partner-page .hero .hero-description,
.partner-page #problem .section-copy p,
.partner-page .local-section .section-heading > p,
.partner-page .network-section .section-heading > p,
.partner-page .network-benefits-intro > p { margin-top: var(--copy-space); }

/* Measure to the expanded drawing's labels, including the canvas's empty edges.
   The central seed keeps the space it needs for the existing scroll reveal. */
.partner-page .shared-illustration {
  margin-top: calc(var(--block-space) - var(--field-inset-start, 0px));
  pointer-events: none;
}
.partner-page .network-benefits {
  display: flow-root;
  margin-top: calc(var(--section-space) - var(--field-inset-end, 0px));
}
.partner-page .network-benefit-points { margin-top: var(--block-space); }

.partner-page .local-section[data-local-frame="open"] .perimeter-header {
  padding-block: 0;
  margin-bottom: var(--detail-space);
}
.partner-page .local-section[data-local-frame="open"] .pipeline-step { padding-block: 0; }
.partner-page .local-section .step-caption { display: block; }
.partner-page .local-section[data-local-frame="open"] .perimeter-footer {
  padding-block: 0;
  margin-top: var(--detail-space);
}
.partner-page .principles { margin-top: var(--detail-space); }
.partner-page .insight-section[data-insight-style="columns"] p,
.partner-page .network-benefit-points p { margin-top: 18px; }

@media (max-width: 1100px) {
  .partner-page { --section-space: 96px; --block-space: 40px; --copy-space: 20px; --hero-space: 56px; }
  .partner-page :is(.brand, .site-footer .hexa) { min-height: 44px; }
}
@media (max-width: 960px) {
  .partner-page #problem .intent-illustration { margin-top: var(--block-space); }
}
@media (max-width: 760px) {
  .partner-page { --section-space: 80px; --block-space: 32px; --detail-space: 20px; --hero-space: 40px; }
  .partner-page .local-section[data-local-frame="open"] .pipeline { row-gap: var(--block-space); }
  /* Both sets of supporting columns become the same continuous stack. */
  .partner-page .insight-section[data-insight-style="columns"] .insight-points,
  .partner-page .network-benefit-points { row-gap: 0; }
  .partner-page .insight-section[data-insight-style="columns"] li,
  .partner-page .network-benefit-points li { padding-block: 22px; border-bottom: 0; }
  .partner-page .insight-section[data-insight-style="columns"] li:last-child,
  .partner-page .network-benefit-points li:last-child { border-bottom: 1px solid var(--line); }
  .partner-page .insight-section[data-insight-style="columns"] p,
  .partner-page .network-benefit-points p { margin-top: 12px; }
}
@media (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  .partner-page .shared-illustration[data-network-visual="field"] #shared-field {
    height: clamp(260px, calc(100svh - 64px), 440px);
  }
}
@media print {
  .partner-page { --section-space: 32px; --block-space: 24px; --hero-space: 20px; }
}
