/* Motion is progressive enhancement: without JS all content stays visible. */
.motion-reveal {
  opacity: 0;
  translate: 0 1.125rem;
  transition: opacity .65s ease, translate .65s cubic-bezier(.2,.7,.2,1);
  transition-delay: var(--reveal-delay,0ms);
}
.motion-reveal.is-visible { opacity: 1; translate: 0 0; }
.motion-card { position: relative; isolation: isolate; }
.cursor-light { position: absolute; inset: 0; z-index: 3; pointer-events: none; border-radius: inherit; opacity: 0; background: radial-gradient(22rem circle at var(--pointer-x,50%) var(--pointer-y,50%),#b9cbae26,transparent 65%); transition: opacity .3s ease; }
.motion-button { transition: translate .25s ease, background-color .2s ease, border-color .2s ease, box-shadow .25s ease; }
.button>span:last-child,.site-button>span:last-child,.stone-red>span:last-child,.text-link>span { display: inline-block; transition: transform .25s ease; }
.motion-button:active { scale: .98; }
@media(hover:hover) and (pointer:fine) {
  .motion-card { transform: perspective(1000px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) translateY(var(--card-lift,0px)); transition: transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s ease; }
  .motion-card:hover { --card-lift: -4px; box-shadow: 0 12px 24px #00000014; }
  .motion-card.motion-reveal { transition: opacity .65s ease,translate .65s cubic-bezier(.2,.7,.2,1),transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s ease; transition-delay: var(--reveal-delay,0ms),var(--reveal-delay,0ms),0ms,0ms; }
  .motion-card:hover>.cursor-light { opacity: 1; }
  .motion-button { translate: var(--magnet-x,0px) var(--magnet-y,0px); }
  .motion-button:hover { box-shadow: 0 5px 18px #00000016; }
  .button:hover>span:last-child,.site-button:hover>span:last-child,.stone-red:hover>span:last-child,.text-link:hover>span { transform: translateX(3px); }
  .hero-background::after,.i-hero-image,.p-collage { translate: var(--scene-x,0px) var(--scene-y,0px); transition: translate .7s cubic-bezier(.2,.7,.2,1); }
}
@media(prefers-reduced-motion:reduce) {
  .motion-reveal { opacity: 1; translate: none; transition: none; }
  .motion-card,.motion-button { transform: none; translate: none; scale: none; transition: none; }
  .motion-card.motion-reveal { transition: none; }
  .motion-button:active { scale: none; }
  .button:hover>span:last-child,.site-button:hover>span:last-child,.stone-red:hover>span:last-child,.text-link:hover>span { transform: none; }
  .cursor-light { display: none; }
  .hero-background::after,.i-hero-image,.p-collage { translate: none; }
}
