/* Campaign-inspired motion language for the main Felix portfolio. */
body:not(:has(#felix-campaigns)):not(:has(.wf-campaign-case)) .fh-project-image,
body:not(:has(#felix-campaigns)):not(:has(.wf-campaign-case)) .case-media img,
body:not(:has(#felix-campaigns)):not(:has(.wf-campaign-case)) .case-gallery img {
  transition: transform .7s cubic-bezier(.2,.7,.2,1), filter .4s ease;
}

body:not(:has(#felix-campaigns)):not(:has(.wf-campaign-case)) .fh-project-card:hover .fh-project-image,
body:not(:has(#felix-campaigns)):not(:has(.wf-campaign-case)) .fh-project-card:focus-visible .fh-project-image {
  transform: scale(1.025);
}

body:not(:has(#felix-campaigns)):not(:has(.wf-campaign-case)) .case-media:hover img,
body:not(:has(#felix-campaigns)):not(:has(.wf-campaign-case)) .case-gallery figure:hover img {
  transform: scale(1.012);
}

.case-external-link span,
.campaigns-cta-copy > a span,
.contact-links b {
  display: inline-block;
  transition: transform .3s cubic-bezier(.2,.7,.2,1);
}
.case-external-link:hover span,
.case-external-link:focus-visible span,
.campaigns-cta-copy > a:hover span,
.campaigns-cta-copy > a:focus-visible span,
.contact-links a:hover b,
.contact-links a:focus-visible b {
  transform: translate(4px, -4px);
}

.project-pagination-link {
  transition: background .45s ease, color .45s ease;
}
.project-pagination-link b {
  display: grid;
  place-items: center;
  transition: transform .4s cubic-bezier(.2,.7,.2,1), background .4s, color .4s;
}
.project-pagination-previous:hover b,
.project-pagination-previous:focus-visible b { transform: translateX(-8px); }
.project-pagination-next:hover b,
.project-pagination-next:focus-visible b { transform: translateX(8px); }

.fh-load-more,
.fh-filter a,
.fh-filter button,
.round-link,
.fh-back-to-top {
  transition-timing-function: cubic-bezier(.2,.7,.2,1) !important;
}

@media (prefers-reduced-motion: reduce) {
  body:not(:has(#felix-campaigns)):not(:has(.wf-campaign-case)) .fh-project-image,
  body:not(:has(#felix-campaigns)):not(:has(.wf-campaign-case)) .case-media img,
  body:not(:has(#felix-campaigns)):not(:has(.wf-campaign-case)) .case-gallery img,
  .case-external-link span,
  .campaigns-cta-copy > a span,
  .contact-links b,
  .project-pagination-link,
  .project-pagination-link b { transition-duration: .01ms !important; }
}
