/* Light reveals outside the hero and the existing sticky service-card sequence. */
.vim-reveal {
  opacity: 0;
  transform: translate3d(0, 38px, 0);
  filter: blur(7px);
  transition: opacity .75s ease, transform .9s cubic-bezier(.2,.75,.2,1), filter .8s ease;
  transition-delay: var(--reveal-delay, 0ms);
}
.vim-reveal[data-reveal-direction="left"] { transform: translate3d(-58px, 22px, 0); }
.vim-reveal[data-reveal-direction="right"] { transform: translate3d(58px, 22px, 0); }
.vim-reveal[data-reveal-direction="image"] { transform: scale(1.065); filter: blur(4px); }
.vim-reveal.is-visible,
.vim-reveal:focus-within {
  opacity: 1;
  transform: none;
  filter: none;
}
.software-preview { overflow: hidden; }
.portfolio-grid .project-card:nth-child(even),
.social-projects .project-card:nth-child(even) { --project-reveal-side: 1; }
@media (max-width: 760px) {
  .vim-reveal[data-reveal-direction="left"] { transform: translate3d(-32px, 16px, 0); }
  .vim-reveal[data-reveal-direction="right"] { transform: translate3d(32px, 16px, 0); }
  .vim-reveal.is-visible,
  .vim-reveal:focus-within { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .vim-reveal { opacity: 1; transform: none; filter: none; transition: none; }
}
