/* ==========================================================================
   Workflow Studio — showreel
   reveal.css
   The scroll reveal, shared by every section that uses it.
   ========================================================================== */

/* --- Scroll reveal ---------------------------------------------------------- */

.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}

.reveal.visible {
  opacity: 1;
  transform: none;
}

/* The closed state is only ever safe while there is a script to open it:
   .visible is added by an observer, and with JS off nothing ever observes
   anything — which left the pitch, the whole module section and every rundown
   card sitting at opacity 0 on a page that is meant to read without a script.
   .js is set by the inline head script before first paint, so this is the same
   escape hatch compare.css already used for the one figure it could not afford
   to lose; it belongs to every element that reveals, not to that one.

   Written against `html` so it outranks .rundown-item.reveal, which sets the
   transform a second time to fold the drag offset into the rise. */
html:not(.js) .reveal {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
