/* discourse-reveal.css
   Incremental scroll-reveal for discourse prose. The first blocks render
   visible; later blocks start faded and lifted, then settle as they scroll
   into the top of the viewport. Mirrors the training module's beat reveal. */

/* Flash guard. An inline <head> script adds dr-armed to <html> before the
   body paints, so the prose blocks start hidden instead of showing in full
   and then fading out (which is what happened when JS hid them post-load).
   If JS is disabled, dr-armed is never set and everything renders normally. */
html.dr-armed #page-content > p,
html.dr-armed #page-content > blockquote,
html.dr-armed #page-content > h2,
html.dr-armed #page-content > h3 {
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 0.7s ease-out, transform 0.7s ease-out;
}
/* The training-link footer is structural, not a beat. Keep it visible. */
html.dr-armed #page-content > .discourse-training-link {
  opacity: 1;
  transform: none;
}
/* Revealed blocks win on specificity (extra class) so they override the
   blanket hide above. */
html.dr-armed #page-content > .dr-vis {
  opacity: 1;
  transform: translateY(0);
}

.dr-reveal {
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 0.7s ease-out, transform 0.7s ease-out;
}
.dr-vis {
  opacity: 1;
  transform: translateY(0);
}
