/* Premium motion system: native, restrained, and disabled for reduced motion. */
:root {
  --ease-premium: cubic-bezier(.22, 1, .36, 1);
  --ease-soft: cubic-bezier(.16, 1, .3, 1);
  --duration-fast: 180ms;
  --duration-medium: 420ms;
  --duration-slow: 720ms;
}

/* Progressive enhancement: the document is always readable before JavaScript runs. */
body { opacity: 1; visibility: visible; }
.site-header { transition: background-color 350ms var(--ease-premium), color 350ms var(--ease-premium), border-color 350ms var(--ease-premium); }
.site-header.is-scrolled { backdrop-filter: none; }

[data-reveal] { transition: opacity var(--duration-medium) var(--ease-premium), transform var(--duration-medium) var(--ease-premium), clip-path var(--duration-slow) var(--ease-premium); }
html.motion-enabled [data-reveal]:not(.is-revealed) { opacity: 0; transform: translateY(24px); }
html.motion-enabled [data-reveal="fade"]:not(.is-revealed) { transform: none; }
html.motion-enabled [data-reveal="image"] { clip-path: inset(0); overflow: hidden; }
html.motion-enabled [data-reveal="image"]:not(.is-revealed) { clip-path: inset(8% 0 0); transform: none; }
html.motion-enabled [data-reveal="image"] img { transform: scale(1); transition: transform var(--duration-slow) var(--ease-premium); }
html.motion-enabled [data-reveal="image"]:not(.is-revealed) img { transform: scale(1.035); }
html.motion-enabled [data-reveal="line"] { transform-origin: left; }
html.motion-enabled [data-reveal="line"]:not(.is-revealed) { transform: scaleX(0); opacity: 1; }

.hero__image, [data-parallax] { will-change: transform; }
.hero__image { transition: transform 1500ms var(--ease-premium); }
html.motion-enabled .hero__image { transform: scale(1.035); }
html.motion-enabled .hero__image.is-settled { transform: scale(1); }
.projects-grid { transition: opacity var(--duration-fast) var(--ease-soft), transform var(--duration-fast) var(--ease-soft); }
.projects-grid.is-filtering { opacity: .32; transform: translateY(10px); }

@media (hover: hover) and (pointer: fine) {
  .button { transition-duration: var(--duration-fast); }
  .button:hover { transform: translateY(-1px); }
  .solution-card .card-media img, .project-card .card-media img, .featured-project img { transition: transform 900ms var(--ease-premium); }
  .solution-card:hover .card-media img, .project-card:hover .card-media img, .featured-project:hover img { transform: scale(1.025); }
  .text-link, .editorial-link, .source-link { transition: opacity var(--duration-fast) var(--ease-soft); }
  .text-link:hover, .editorial-link:hover, .source-link:hover { opacity: .64; }
}

@media (max-width: 860px) {
  html.motion-enabled [data-reveal]:not(.is-revealed) { transform: translateY(16px); }
}

@media (prefers-reduced-motion: reduce) {
  html body, [data-reveal], [data-reveal] *, .site-header, .hero__image { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
  html body { opacity: 1; }
  [data-reveal] { clip-path: none !important; opacity: 1 !important; transform: none !important; }
}
