/* Motion layer (subtle + performant). Honors prefers-reduced-motion. */
@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1 !important; transform:none !important; filter:none !important;}
  .reveal.in-view{opacity:1 !important; transform:none !important;}
}

/* Scroll-reveal (progressive enhancement: visible by default) */
.reveal{
  opacity:1;
  transform: none;
  filter:none;
  transition: opacity 820ms cubic-bezier(.2,.8,.2,1), transform 820ms cubic-bezier(.2,.8,.2,1);
  will-change: auto;
  backface-visibility:hidden;
}
.reveal.is-hidden{
  will-change: transform, opacity;
  opacity:0;
  transform: translate3d(0,18px,0) scale(.985);
}
.reveal.in-view{
  opacity:1;
  transform: translate3d(0,0,0) scale(1);
}

/* Soft hover micro-interactions */
.card, .service, .project-card, .review, .form, .tile{
  transition: transform 260ms ease, box-shadow 260ms ease, background-color 260ms ease;
}
.card:hover, .service:hover, .project-card:hover, .review:hover{ transform: translateY(-2px); }

/* Hero background drift (slow) */
.hero::before{
  animation: heroDrift 26s ease-in-out infinite;
  will-change: background-position, transform;
}
@keyframes heroDrift{
  0%{ background-position: 50% 50%; transform: scale(1.03); }
  50%{ background-position: 53% 47%; transform: scale(1.05); }
  100%{ background-position: 50% 50%; transform: scale(1.03); }
}

/* Floating ambient glow blobs */
.hero::after{
  content:"";
  position:absolute;
  inset:-40%;
  background:
    radial-gradient(380px 240px at 20% 30%, rgba(244,197,66,.18), transparent 60%),
    radial-gradient(460px 280px at 80% 30%, rgba(166,106,62,.16), transparent 62%),
    radial-gradient(520px 320px at 55% 80%, rgba(244,197,66,.10), transparent 65%);
  mix-blend-mode: normal;
  opacity:.55;
  animation: blobFloat 18s ease-in-out infinite;
  pointer-events:none;
}
@keyframes blobFloat{
  0%{ transform: translate3d(-1%, calc(-1% + var(--hero-parallax, 0px)), 0) scale(1); }
  50%{ transform: translate3d(1.2%, 1.0%, 0) scale(1.02); }
  100%{ transform: translate3d(-1%, -1%, 0) scale(1); }
}


/* Nice focus animation */
:focus-visible{
  outline: 2px solid var(--gold);
  outline-offset: 3px;
}

.hero::after{ transform: translate3d(0, var(--hero-parallax, 0px), 0) scale(1.01); }

@media (max-width: 820px){
  .hero::before{ animation: none; }
  .hero::after{ animation: none; opacity:.35; mix-blend-mode: normal; }
}
