/* ---------------------------------------------------------------
   Scroll reveal for the content pages. Matches the homepage cards
   (100px rise, 1s, same easing). Runs as an animation so it leaves
   hover transitions alone; .is-settled drops the animation once it
   has finished so no transform is left on the block.
--------------------------------------------------------------- */

.rise:not(.is-risen) {
  opacity: 0;
  translate: 0 100px;
}

.rise.is-risen:not(.is-settled) {
  animation: rise-in 1s cubic-bezier(0.22, 1, 0.36, 1) var(--rise-delay, 0s) both;
}

@keyframes rise-in {
  from { opacity: 0; translate: 0 100px; }
  to { opacity: 1; translate: 0 0; }
}

@media (prefers-reduced-motion: reduce) {
  .rise:not(.is-risen) {
    opacity: 1;
    translate: none;
  }

  .rise.is-risen:not(.is-settled) {
    animation: none;
  }
}
