/* SITE-WIDE MOTION — kept light. Mostly on photos; text stays still.
   Uses individual transform props (translate/scale) so nothing else is overridden. */
html.js-motion [data-reveal]{opacity:0;translate:0 18px;transition:opacity .6s ease,translate .6s cubic-bezier(.22,1,.36,1)}
html.js-motion [data-reveal].is-visible{opacity:1;translate:0 0}
/* photo eases from slightly zoomed to normal as it appears */
html.js-motion [data-reveal] img{scale:1.06;transition:scale 1.1s cubic-bezier(.22,1,.36,1)}
html.js-motion [data-reveal].is-visible img{scale:1}

/* Hover effects only where a real hover exists (not on touch) */
@media (hover:hover){
  .gallery img{transition:transform .5s cubic-bezier(.22,1,.36,1)}
  .gallery img:hover{transform:scale(1.03)}
}

@media (prefers-reduced-motion:reduce){
  html.js-motion [data-reveal],html.js-motion [data-reveal] img{opacity:1;translate:none;scale:1;transition:none}
}
