/* Keep the shortened story range and content above the background. */
/* Only focus is compressed. Keep the original pixels per story unit at every
   breakpoint, including the unscaled viewport subtracted by bottom/bottom. */
body[data-story="listening-first"] .section--focus {
  min-height: calc(
    (var(--story-viewports) - 1 + var(--story-range-ratio, 1)) * var(--story-scale) * 100vh
    + (1 - var(--story-range-ratio, 1)) * 100vh
  );
}

#focus-boom[data-synaptic-shift] {
  background: #08050f;
  /* Opacity is scrubbed directly by scroll position, with no timed catch-up. */
  transition: none;
}

/* Keep these nodes for the legacy title/scroll timeline, but retire its visuals. */
#approach .focus__burst,
#approach .focus__sparks,
#approach .focus__motes,
#approach .focus__charge,
#approach .focus__dots,
#approach .focus__chroma {
  display: none;
}

#focus-boom[data-synaptic-shift-state="reduced-motion"],
#focus-boom[data-synaptic-shift-state="error"] {
  background: radial-gradient(ellipse at 50% 50%, #331b3e, #08050f 72%);
}
