/* Shared layout contracts. Preserve each section's art direction and type scale.
   rem: readable dimensions; %: parent-relative geometry; viewport units: bounded scenes only. */
:root{
 --page-gutter:3rem;
 --content-max:73.75rem;
 --scene-max:120rem;
 --hero-canvas-height:clamp(45rem,100svh,80rem);
}
@media(max-width:68.75rem){:root{--page-gutter:2.25rem}}
@media(max-width:47.5rem){:root{--page-gutter:1.5rem}}
.page-width{width:min(var(--content-max),calc(100% - 2 * var(--page-gutter)))}
:where(.abstract-layout,.build-content,.features-gateway,.services-invitation,.professional-intro,.feature-grid,.feature-hero-grid,.workspace-paths,.faq-grid,.community-quotes,.manifest-stages)>*{min-width:0}
:where(h1,h2,h3,p,blockquote,figcaption){overflow-wrap:break-word}
:where(.button,.journey-link){max-width:100%}
.octi-dialog{max-height:calc(100svh - 3rem);overflow-y:auto}
/* A zoomed-out viewport must not stretch the hero artwork away from its capped copy. */
@media(min-width:62.5625rem){
 .hero{height:auto;min-height:var(--hero-canvas-height)}
 .hero-content{height:auto;min-height:var(--hero-canvas-height);padding-bottom:calc(var(--hero-canvas-height) * .17)}
 .hero .production-hero{width:min(100%,var(--scene-max));margin-inline:auto}
 .hero .production-star .shape{width:min(214%,calc(var(--hero-canvas-height) * 1.12))}
}
/* Let stacked hero content grow instead of being cropped by a viewport-height box. */
@media(max-width:62.5rem){
 .hero{height:auto;min-height:48.75rem}
 .hero-content{height:auto;min-height:48.75rem}
}
@media(max-width:25rem){.hero h1{white-space:normal}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* The landing's established editorial measure differs from standalone pages. */
body:has(>#app){--content-max:70rem}
@media(max-width:68.75rem){body:has(>#app){--page-gutter:2.5rem}}
@media(max-width:47.5rem){body:has(>#app){--page-gutter:1.5rem}}
@media(max-width:21.875rem){body:has(>#app){--page-gutter:1.25rem}}
