/* Reserve real header space inside the pinned stage, preserving its scroll geometry. */
:root{--nova-header-height:104px;--nova-safe-top:calc(var(--nova-header-height) + 12px)}
/* Opening footage fills the complete area below the navigation. */
.nova-opening{--nova-safe-top:var(--nova-header-height)}
html{scroll-padding-top:calc(var(--nova-header-height) + 24px)}
.nova-opening .scroll-scrub__overlay,
.nova-closing .scroll-scrub__overlay{top:var(--nova-safe-top);bottom:0}
.nova-opening .scroll-scrub__media{top:var(--nova-safe-top);bottom:0;height:calc(100% - var(--nova-safe-top))}
.nova-opening .scroll-scrub__poster,
.nova-opening .scroll-scrub__video{object-fit:cover;object-position:center}
@media(max-width:760px){
 :root{--nova-header-height:72px}
 .nova-opening .scroll-scrub__media{bottom:auto;height:calc((100% - var(--nova-safe-top)) * (0.46 + 0.54 * var(--travel-fill,0)))}
 .nova-opening .origin-clean-field,.nova-opening .wireframe-remaster{height:46%}
 .nova-opening .materialized{top:32%}
}
@media(max-width:960px) and (max-height:520px) and (orientation:landscape){
 :root{--nova-header-height:60px}
 .nova-opening .origin-clean-field,.nova-opening .wireframe-remaster{height:55%}
 .nova-opening .scroll-scrub__media{bottom:auto;height:calc((100% - var(--nova-safe-top)) * (0.55 + 0.45 * var(--travel-fill,0)))}
 .nova-opening .materialized{top:48%}
}
/* The static finale is in normal document flow, so no header space is removed twice. */
html[data-motion=static] .nova-closing .scroll-scrub__overlay,
.nova-closing:has(.particle-finale[data-failed=true]) .scroll-scrub__overlay{top:0;bottom:0}
@media(prefers-reduced-motion:reduce){.nova-closing .scroll-scrub__overlay{top:0;bottom:0}}
