/**
 * PA Media Arts — Premium scroll-triggered animations (marketing pages).
 *
 * Utility classes: .animate, .fade-up, .scale-in, .parallax, .reveal-text, etc.
 * Legacy hooks: .pa-reveal-section, .pa-reveal-item, .pa-scroll-reveal
 *
 * See docs/ANIMATIONS.md
 */

:root {
  /* Apple-quiet motion: shorter travel, soft ease, modest stagger */
  --anim-duration: 580ms;
  --anim-duration-fast: 460ms;
  --anim-duration-slow: 700ms;
  --anim-delay: 50ms;
  --anim-stagger: 65ms;
  --anim-ease: cubic-bezier(0.25, 0.1, 0.25, 1);
  --anim-offset-y: 15px;
  --anim-offset-x: 14px;
  --anim-scale-from: 0.985;
  --anim-blur-from: 3px;

  /* Legacy aliases (site.css consumers) */
  --pa-reveal-duration: 0.58s;
  --pa-reveal-ease: cubic-bezier(0.25, 0.1, 0.25, 1);
  --pa-reveal-offset: var(--anim-offset-y);
  --pa-reveal-stagger: 0.065s;
}

@media (max-width: 767px) {
  :root {
    --anim-offset-y: 12px;
    --anim-offset-x: 10px;
    --anim-stagger: 50ms;
    --anim-blur-from: 0px;
    --pa-reveal-offset: 12px;
    --pa-reveal-stagger: 0.05s;
  }
}

/* —— Scroll progress indicator —— */
#pa-scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9998;
  width: 100%;
  height: 1.5px;
  pointer-events: none;
  background: transparent;
  transform-origin: left center;
  transform: scaleX(0);
  background: var(--pa-ios-blue, var(--pa2-accent, #0071e3));
  opacity: 0.55;
}

@supports (animation-timeline: scroll()) {
  #pa-scroll-progress {
    animation: pa-scroll-progress-grow linear forwards;
    animation-timeline: scroll(root);
    animation-range: 0% 100%;
  }
}

@keyframes pa-scroll-progress-grow {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

@media (max-width: 767px) {
  #pa-scroll-progress {
    display: none;
  }
}

/* —— Base animate hook —— */
.animate {
  transition-timing-function: var(--anim-ease);
}

.animate.is-animating {
  will-change: opacity, transform, filter;
}

/* —— Utility variants (hidden until revealed) —— */
html.pa-scroll-motion .animate:not(.is-animated):not(.is-revealed):not(.is-visible):not(.pa-reveal-item) {
  opacity: 0;
  transition: none;
}

html.pa-scroll-motion .animate.fade-up:not(.is-animated):not(.is-revealed):not(.is-visible):not(.pa-reveal-item) {
  transform: translate3d(0, var(--anim-offset-y), 0);
}

html.pa-scroll-motion .animate.fade-left:not(.is-animated):not(.is-revealed):not(.is-visible):not(.pa-reveal-item) {
  transform: translate3d(calc(var(--anim-offset-x) * -1), 0, 0);
}

html.pa-scroll-motion .animate.fade-right:not(.is-animated):not(.is-revealed):not(.is-visible):not(.pa-reveal-item) {
  transform: translate3d(var(--anim-offset-x), 0, 0);
}

html.pa-scroll-motion .animate.scale-in:not(.is-animated):not(.is-revealed):not(.is-visible):not(.pa-reveal-item) {
  transform: translate3d(0, calc(var(--anim-offset-y) * 0.5), 0) scale(var(--anim-scale-from));
}

html.pa-scroll-motion .animate.blur-in:not(.is-animated):not(.is-revealed):not(.is-visible):not(.pa-reveal-item) {
  transform: translate3d(0, var(--anim-offset-y), 0);
  filter: blur(var(--anim-blur-from));
}

html.pa-scroll-motion .animate.reveal-image:not(.is-animated):not(.is-revealed):not(.is-visible):not(.pa-reveal-item) {
  transform: translate3d(0, var(--anim-offset-y), 0) scale(var(--anim-scale-from));
  filter: blur(2px);
}

/* —— Revealed utility state —— */
html.pa-scroll-motion .animate.is-animated,
html.pa-scroll-motion .animate.is-revealed,
html.pa-scroll-motion .animate.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  filter: blur(0);
  transition:
    opacity var(--anim-duration, 580ms) var(--anim-ease),
    transform var(--anim-duration, 580ms) var(--anim-ease),
    filter var(--anim-duration, 580ms) var(--anim-ease);
  transition-delay: calc(var(--anim-delay, 0ms) + min(var(--anim-i, var(--pa-reveal-i, 0)), 12) * var(--anim-stagger));
}

.animate[data-duration] {
  --anim-duration: attr(data-duration ms);
}

/* Per-element data attribute overrides (JS sets custom properties) */

/* —— Stagger parent —— */
.stagger > .animate,
.stagger > .pa-reveal-item,
.pa-reveal-section.stagger > * {
  --anim-i: 0;
}

/* —— Text reveal —— */
.reveal-text .reveal-text__unit {
  display: inline-block;
  overflow: hidden;
  vertical-align: top;
}

.reveal-text .reveal-text__inner {
  display: inline-block;
  transform: translate3d(0, 110%, 0);
  opacity: 0;
  transition:
    transform var(--anim-duration-slow) var(--anim-ease),
    opacity var(--anim-duration-fast) var(--anim-ease);
  transition-delay: calc(var(--anim-i, 0) * var(--anim-stagger));
}

.reveal-text.is-animated .reveal-text__inner,
.reveal-text.is-revealed .reveal-text__inner {
  transform: translate3d(0, 0, 0);
  opacity: 1;
}

.reveal-text--line .reveal-text__unit {
  display: block;
}

/* —— Parallax (transform applied by JS) —— */
.parallax,
[data-parallax] {
  will-change: auto;
}

html.pa-scroll-motion .parallax.is-parallax-active {
  will-change: transform;
}

/* Hero badge — static (philosophy: no decorative loops) */
html.pa-scroll-motion .pa2-hero__badge.is-animated,
html.pa-scroll-motion .pa2-hero__badge.is-revealed {
  animation: none;
}

/* —— Service icon reveal rotation —— */
@keyframes pa-icon-reveal {
  from { transform: scale(0.85) rotate(-8deg); opacity: 0; }
  to { transform: scale(1) rotate(0deg); opacity: 1; }
}

html.pa-scroll-motion .pa2-services--dynamic.is-inview .pa2-services__icon-wrap {
  opacity: 1 !important;
  transform: none !important;
}

html.pa-scroll-motion .pa2-services__icon-wrap.is-animated .pa2-services__icon,
html.pa-scroll-motion .pa-reveal-section.is-inview .pa2-services__card .pa2-services__icon {
  animation: pa-icon-reveal var(--anim-duration-fast) var(--anim-ease) both;
  animation-delay: calc(var(--anim-i, 0) * var(--anim-stagger) + 80ms);
}

/* —— Legacy scroll reveal (sections + direct elements) —— */
.pa-scroll-reveal:not(.is-revealed):not(.is-visible),
.pa-section-head:not(.is-revealed),
#pa-youtube-feature:not(.is-revealed),
.pa-home-closing-inner:not(.is-revealed),
.pa-services-showcase > *:not(.is-revealed),
.pa-about-showcase > *:not(.is-revealed),
.pa-services-grid a:not(.is-revealed),
.pa2-services__eyebrow:not(.is-revealed),
.pa2-services__title:not(.is-revealed),
.pa2-services__lead:not(.is-revealed),
.pa2-services__head:not(.is-revealed),
.pa2-services__card:not(.is-revealed),
.pa2-services__foot:not(.is-revealed),
.pa2-portfolio__head:not(.is-revealed),
.pa2-portfolio__featured:not(.is-revealed),
.pa2-reviews__head:not(.is-revealed),
.pa2-reviews__stage:not(.is-revealed),
.pa2-reviews__foot:not(.is-revealed),
.pa2-cta__inner:not(.is-revealed),
.pa2-svc-hero:not(.is-revealed),
.pa2-svc-card:not(.is-revealed),
.pa2-svc-foot:not(.is-revealed),
.pa2-work-hero:not(.is-revealed),
.pa-about-hero:not(.is-revealed),
.pa-about-story:not(.is-revealed),
.pa-about-stats:not(.is-revealed),
.pa-about-expertise:not(.is-revealed),
.pa-about-cta:not(.is-revealed),
.pa-footer-panel:not(.is-revealed),
.pa-footer-cta-strip:not(.is-revealed),
.pa-footer-social:not(.is-revealed),
.pa-legal-footer:not(.is-revealed) {
  opacity: 0;
  transform: translate3d(0, var(--pa-reveal-offset), 0) scale(0.985);
  transition:
    opacity var(--pa-reveal-duration) var(--pa-reveal-ease),
    transform var(--pa-reveal-duration) var(--pa-reveal-ease);
  transition-delay: calc(min(var(--pa-reveal-i, 0), 10) * var(--pa-reveal-stagger));
}

.pa-scroll-reveal.is-revealed,
.pa-scroll-reveal.is-visible,
.pa-section-head.is-revealed,
#pa-youtube-feature.is-revealed,
.pa-home-closing-inner.is-revealed,
.pa-services-showcase > *.is-revealed,
.pa-about-showcase > *.is-revealed,
.pa-services-grid a.is-revealed,
.pa2-services__eyebrow.is-revealed,
.pa2-services__title.is-revealed,
.pa2-services__lead.is-revealed,
.pa2-services__head.is-revealed,
.pa2-services__card.is-revealed,
.pa2-services__foot.is-revealed,
.pa2-portfolio__head.is-revealed,
.pa2-portfolio__featured.is-revealed,
.pa2-reviews__head.is-revealed,
.pa2-reviews__stage.is-revealed,
.pa2-reviews__foot.is-revealed,
.pa2-cta__inner.is-revealed,
.pa2-svc-hero.is-revealed,
.pa2-svc-card.is-revealed,
.pa2-svc-foot.is-revealed,
.pa2-work-hero.is-revealed,
.pa-about-hero.is-revealed,
.pa-about-story.is-revealed,
.pa-about-stats.is-revealed,
.pa-about-expertise.is-revealed,
.pa-about-cta.is-revealed,
.pa-footer-panel.is-revealed,
.pa-footer-cta-strip.is-revealed,
.pa-footer-social.is-revealed,
.pa-legal-footer.is-revealed {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
}

.pa-scroll-reveal--hero {
  transition-delay: calc(min(var(--pa-reveal-i, 0), 8) * 0.1s);
}

/* —— Section scroll reveal —— */
html.pa-scroll-motion .pa-reveal-section:not(.is-inview) .pa-reveal-item {
  opacity: 0;
  transform: translate3d(0, var(--anim-offset-y), 0) scale(var(--anim-scale-from));
  transition: none;
}

@media (min-width: 768px) and (prefers-reduced-motion: no-preference) {
  html.pa-scroll-motion .pa-reveal-section:not(.is-inview) .pa-reveal-item {
    filter: none;
  }
}

html.pa-scroll-motion .pa-reveal-section.is-inview .pa-reveal-item {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) scale(1) !important;
  filter: none !important;
  transition:
    opacity var(--anim-duration) var(--anim-ease),
    transform var(--anim-duration) var(--anim-ease);
  transition-delay: calc(min(var(--pa-reveal-i, var(--anim-i, 0)), 14) * var(--anim-stagger));
}

@media (min-width: 768px) and (prefers-reduced-motion: no-preference) {
  html.pa-scroll-motion .pa-reveal-section.is-inview .pa-reveal-item {
    transition:
      opacity var(--anim-duration) var(--anim-ease),
      transform var(--anim-duration) var(--anim-ease);
  }
}

html.pa-scroll-motion .pa-reveal-hero-item.is-revealed,
html.pa-scroll-motion .pa-reveal-hero-item.is-visible,
html.pa-scroll-motion .pa-reveal-hero-item.is-animated {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  filter: blur(0);
  transition:
    opacity var(--anim-duration) var(--anim-ease),
    transform var(--anim-duration) var(--anim-ease),
    filter var(--anim-duration) var(--anim-ease);
  transition-delay: calc(min(var(--pa-reveal-i, 0), 8) * var(--anim-stagger));
}

/* —— Home services: staggered fade + slide —— */
html.pa-scroll-motion .pa2-services--dynamic:not(.is-inview) .pa-reveal-item {
  opacity: 0;
  transform: translate3d(0, 22px, 0) scale(0.985);
  transition: none;
}

html.pa-scroll-motion .pa2-services--dynamic.is-inview .pa-reveal-item {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) scale(1) !important;
  transition:
    opacity 520ms cubic-bezier(0.22, 0.61, 0.36, 1),
    transform 520ms cubic-bezier(0.22, 0.61, 0.36, 1);
  transition-delay: calc(min(var(--pa-reveal-i, var(--anim-i, 0)), 12) * 70ms);
}

html.pa-scroll-motion .pa2-services--dynamic.is-inview .pa2-services__card .pa2-services__icon {
  animation: pa2-svc-icon-in 500ms cubic-bezier(0.22, 0.61, 0.36, 1) both;
  animation-delay: calc(min(var(--pa-reveal-i, 0), 12) * 70ms + 100ms);
}

@keyframes pa2-svc-icon-in {
  from {
    opacity: 0;
    transform: scale(0.92) rotate(-4deg);
  }
  to {
    opacity: 1;
    transform: scale(1) rotate(0deg);
  }
}

/* Reduced-motion / static: instant, fully visible — no staged hide */
html.pa-scroll-static .pa-reveal-item,
html.pa-scroll-static .pa-reveal-section .pa-reveal-item,
html.pa-scroll-static .animate,
html.pa-scroll-static .pa-scroll-reveal,
html.pa-scroll-static .pa-reveal-section,
html.pa-scroll-static .reveal-text .reveal-text__inner {
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
  transition: none !important;
  animation: none !important;
  visibility: visible !important;
}

html.pa-scroll-static #pa-scroll-progress {
  display: none !important;
}

html.pa-scroll-static .parallax,
html.pa-scroll-static [data-parallax] {
  transform: none !important;
  will-change: auto !important;
}

html.pa-scroll-motion .pa-reveal-section:not(.is-inview) .pa-portfolio-tile.pa-reveal-item,
html.pa-scroll-motion .pa-reveal-section:not(.is-inview) .pa-video-tile.pa-reveal-item,
html.pa-scroll-motion .pa-reveal-section:not(.is-inview) .pa-portfolio-tile.reveal-image:not(.is-animated):not(.is-visible) {
  opacity: 0;
  transform: translate3d(0, var(--anim-offset-y), 0) scale(var(--anim-scale-from));
}

html.pa-scroll-motion .pa-reveal-section.is-inview .pa-portfolio-tile.pa-reveal-item,
html.pa-scroll-motion .pa-reveal-section.is-inview .pa-video-tile.pa-reveal-item,
html.pa-scroll-motion .pa-portfolio-tile.reveal-image.is-animated,
html.pa-scroll-motion .pa-portfolio-tile.reveal-image.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  filter: none;
  transition:
    opacity var(--anim-duration-fast) var(--anim-ease),
    transform var(--anim-duration-fast) var(--anim-ease);
  transition-delay: calc(min(var(--pa-tile-i, var(--pa-reveal-i, 0)), 11) * 45ms);
}

/* —— UI micro-interactions (<250ms) —— */
html.pa-scroll-motion .pa2-hero__btn,
html.pa-scroll-motion .pa2-cta__btn,
html.pa-scroll-motion [data-magnetic] {
  transition:
    transform 200ms var(--anim-ease),
    box-shadow 200ms var(--anim-ease),
    background-color 200ms var(--anim-ease),
    border-color 200ms var(--anim-ease),
    color 200ms var(--anim-ease);
}

html.pa-scroll-motion .pa2-hero__btn--primary:hover,
html.pa-scroll-motion .pa2-hero__btn--primary:focus-visible,
html.pa-scroll-motion .pa2-cta__btn--primary:hover,
html.pa-scroll-motion .pa2-cta__btn--primary:focus-visible {
  transform: translate3d(0, -2px, 0);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
}

html.pa-scroll-motion .pa2-hero__btn--primary:active,
html.pa-scroll-motion .pa2-cta__btn--primary:active {
  transform: translate3d(0, 0, 0) scale(0.98);
  transition-duration: 120ms;
}

/* —— Card tilt (desktop; --tilt-* set by JS on hover only) —— */
html.pa-scroll-motion [data-tilt] {
  transition:
    transform 200ms var(--anim-ease),
    box-shadow 200ms var(--anim-ease);
}

html.pa-scroll-motion [data-tilt]:hover,
html.pa-scroll-motion [data-tilt]:focus-visible {
  transform: perspective(900px)
    rotateX(var(--pa-tilt-x, 0deg))
    rotateY(var(--pa-tilt-y, 0deg))
    translate3d(0, -4px, 0);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.1);
}

/* —— Portfolio hover micro-interactions —— */
html.pa-scroll-motion .pa-portfolio-tile:hover,
html.pa-scroll-motion .pa-portfolio-tile:focus-visible {
  transform: translate3d(0, -3px, 0) scale(1.03) !important;
  box-shadow: 0 14px 36px rgba(0, 0, 0, 0.12);
}

html.pa-scroll-motion .pa-portfolio-tile:hover .pa-portfolio-tile-overlay,
html.pa-scroll-motion .pa-portfolio-tile:focus-visible .pa-portfolio-tile-overlay {
  opacity: 1;
}

body.home .pa-portfolio-tile:hover .pa-portfolio-tile-overlay,
body.home .pa-portfolio-tile:focus-visible .pa-portfolio-tile-overlay {
  opacity: 0;
}

html.pa-scroll-motion .pa-portfolio-tile:hover .pa-portfolio-tile-caption,
html.pa-scroll-motion .pa-portfolio-tile:focus-visible .pa-portfolio-tile-caption {
  transform: translate3d(0, 0, 0);
  opacity: 1;
}

/* —— Services card hover (non-tilt fallback) —— */
html.pa-scroll-motion .pa2-services__card:not([data-tilt]):hover,
html.pa-scroll-motion .pa2-services__card:not([data-tilt]):focus-visible {
  transform: translate3d(0, -4px, 0);
}

/* —— CTA parallax band —— */
.pa2-cta--enhanced {
  position: relative;
  overflow: hidden;
}

.pa2-cta__parallax-bg,
.pa2-cinema__parallax-bg {
  position: absolute;
  inset: -12% 0;
  z-index: 0;
  pointer-events: none;
  background: radial-gradient(ellipse 80% 60% at 50% 100%, rgba(29, 29, 31, 0.06), transparent 70%);
  transform: translate3d(0, 0, 0);
  will-change: auto;
}

.pa2-hero__parallax-media {
  transform: translate3d(0, 0, 0);
}

.pa2-services--cinema {
  position: relative;
  overflow: hidden;
}

.pa2-services--cinema .pa2-cinema {
  position: relative;
  z-index: 1;
}

.pa2-cta__inner {
  position: relative;
  z-index: 1;
}

/* CTA band — always show copy when section is in view */
html.pa-scroll-motion .pa2-cta--enhanced.is-inview .pa2-cta__eyebrow,
html.pa-scroll-motion .pa2-cta--enhanced.is-inview .pa2-cta__title,
html.pa-scroll-motion .pa2-cta--enhanced.is-inview .pa2-cta__lead,
html.pa-scroll-motion .pa2-cta--enhanced.is-inview .pa2-cta__trust,
html.pa-scroll-motion .pa2-cta--enhanced.is-inview .pa2-cta__trust-item,
html.pa-scroll-motion .pa2-cta__inner.is-revealed .pa2-cta__eyebrow,
html.pa-scroll-motion .pa2-cta__inner.is-revealed .pa2-cta__title,
html.pa-scroll-motion .pa2-cta__inner.is-revealed .pa2-cta__lead,
html.pa-scroll-motion .pa2-cta__inner.is-revealed .pa2-cta__trust,
html.pa-scroll-motion .pa2-cta__inner.is-revealed .pa2-cta__trust-item,
html.pa-scroll-motion .pa2-cta--enhanced.is-inview .pa2-cta__actions,
html.pa-scroll-motion .pa2-cta__inner.is-revealed .pa2-cta__actions,
html.pa-scroll-motion .pa2-cta--enhanced.is-ready .pa2-cta__actions {
  opacity: 1 !important;
  transform: none !important;
  visibility: visible !important;
  filter: none !important;
}

html.pa-scroll-motion .pa-footer-glass--light.is-inview .pa-footer-glass__panel,
html.pa-scroll-motion .pa-footer-glass--light.is-inview .pa-footer-glass__hero,
html.pa-scroll-motion .pa-footer-glass--light.is-inview .pa-footer-glass__actions,
html.pa-scroll-motion .pa-footer-glass--light.is-inview .pa-footer-glass__eyebrow,
html.pa-scroll-motion .pa-footer-glass--light.is-inview .pa-footer-glass__lead,
html.pa-scroll-motion .pa-footer-glass--light.is-inview .pa-footer-glass__heading,
html.pa-scroll-motion .pa-footer-glass--light.is-inview .pa-footer-glass__link,
html.pa-scroll-motion .pa-footer-glass--light.is-inview .pa-footer-service-chip,
html.pa-scroll-motion .pa-footer-glass--light.is-inview .pa-footer-work-row,
html.pa-scroll-motion .pa-footer-glass--light.is-inview .pa-footer-glass__badge,
html.pa-scroll-motion .pa-footer-glass--light.is-inview .pa-footer-glass__body p {
  opacity: 1 !important;
  transform: none !important;
  visibility: visible !important;
  filter: none !important;
}

html.pa-scroll-motion .pa2-cta__btn--primary,
html.pa-scroll-motion .pa2-cta__btn--secondary {
  opacity: 1 !important;
  visibility: visible !important;
}

/* —— Reviews star stagger —— */
.pa2-reviews__stars.animate {
  letter-spacing: 0.05em;
}

/* —— Hero ambient + mouse parallax hooks —— */
.pa2-hero__ambient {
  position: absolute;
  inset: -18%;
  z-index: 0;
  pointer-events: none;
  opacity: 0.55;
  background:
    radial-gradient(ellipse 55% 45% at 28% 22%, rgba(255, 255, 255, 0.08), transparent 58%),
    radial-gradient(ellipse 48% 38% at 72% 68%, rgba(140, 175, 255, 0.05), transparent 52%);
  animation: none;
}

/* —— Reduced motion —— */
@media (prefers-reduced-motion: reduce) {
  .pa2-hero__ambient {
    animation: none;
  }

  html.pa-scroll-motion [data-tilt],
  html.pa-scroll-motion [data-magnetic] {
    transform: none !important;
  }
  #pa-scroll-progress {
    display: none;
  }

  /* Hard-stop: never leave content hidden when motion is reduced */
  html.pa-scroll-motion .pa-reveal-section:not(.is-inview) .pa-reveal-item,
  html.pa-scroll-motion .pa-reveal-section.is-inview .pa-reveal-item,
  html.pa-scroll-motion .pa-reveal-section:not(.is-inview) .pa-portfolio-tile.pa-reveal-item,
  html.pa-scroll-motion .pa-reveal-section.is-inview .pa-portfolio-tile.pa-reveal-item,
  html.pa-scroll-motion .animate:not(.is-animated),
  html.pa-scroll-motion .animate.is-animated,
  html.pa-scroll-motion .pa-reveal-section.is-inview .pa-reveal-item {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
    visibility: visible !important;
  }

  html.pa-scroll-motion .pa2-services--dynamic.is-inview .pa2-services__card .pa2-services__icon {
    animation: none;
  }

  .pa-scroll-reveal:not(.is-revealed):not(.is-visible),
  .pa-section-head:not(.is-revealed),
  #pa-youtube-feature:not(.is-revealed),
  .pa-home-closing-inner:not(.is-revealed),
  .pa-services-showcase > *:not(.is-revealed),
  .pa-about-showcase > *:not(.is-revealed),
  .pa-services-grid a:not(.is-revealed),
  .pa2-services__eyebrow:not(.is-revealed),
  .pa2-services__title:not(.is-revealed),
  .pa2-services__lead:not(.is-revealed),
  .pa2-services__head:not(.is-revealed),
  .pa2-services__card:not(.is-revealed),
  .pa2-services__foot:not(.is-revealed),
  .pa2-portfolio__head:not(.is-revealed),
  .pa2-portfolio__featured:not(.is-revealed),
  .pa2-reviews__head:not(.is-revealed),
  .pa2-reviews__stage:not(.is-revealed),
  .pa2-reviews__foot:not(.is-revealed),
  .pa2-cta__inner:not(.is-revealed),
  .pa2-svc-hero:not(.is-revealed),
  .pa2-svc-card:not(.is-revealed),
  .pa2-svc-foot:not(.is-revealed),
  .pa2-work-hero:not(.is-revealed),
  .pa-about-hero:not(.is-revealed),
  .pa-about-story:not(.is-revealed),
  .pa-about-stats:not(.is-revealed),
  .pa-about-expertise:not(.is-revealed),
  .pa-about-cta:not(.is-revealed),
  .pa-footer-panel:not(.is-revealed),
  .pa-footer-cta-strip:not(.is-revealed),
  .pa-footer-social:not(.is-revealed),
  .pa-legal-footer:not(.is-revealed),
  body.pa-has-portfolio-showcase .pa-portfolio-tile:not(.is-visible),
  body.home .pa-portfolio-tile:not(.is-visible) {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .parallax,
  [data-parallax] {
    transform: none !important;
  }

  .pa2-hero__badge.is-animated,
  .pa2-hero__badge.is-revealed {
    animation: none !important;
  }

  .reveal-text .reveal-text__inner {
    transform: none;
    opacity: 1;
    transition: opacity 300ms ease;
  }
}

@media (max-width: 767px) {
  .pa2-hero__ambient {
    animation: none;
    opacity: 0.45;
  }

  html.pa-scroll-motion [data-tilt] {
    transform: none !important;
  }

  /* Fade/stagger kept; blur is costly on mobile GPUs */
  html.pa-scroll-motion .animate.blur-in:not(.is-animated):not(.is-revealed):not(.is-visible),
  html.pa-scroll-motion .animate.reveal-image:not(.is-animated):not(.is-revealed):not(.is-visible),
  html.pa-scroll-motion .pa-reveal-section:not(.is-inview) .pa-reveal-item,
  html.pa-scroll-motion .pa-reveal-section:not(.is-inview) .pa-portfolio-tile.pa-reveal-item,
  html.pa-scroll-motion .pa-reveal-section.is-inview .pa-reveal-item,
  html.pa-scroll-motion .pa-reveal-section.is-inview .pa-portfolio-tile.pa-reveal-item {
    filter: none !important;
  }
}
