:root {
  --motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

:is(.btn, .site-cta, [class$="-button"], [class$="-cta"]) {
  transition-duration: 240ms !important;
  transition-timing-function: var(--motion-ease) !important;
}

:is(nav[class$="-nav"], .main-nav, .footer-col, [class$="-footer__column"]) a {
  transition-duration: 220ms !important;
  transition-timing-function: var(--motion-ease) !important;
}

.menu-toggle span {
  transition-duration: 260ms !important;
  transition-timing-function: var(--motion-ease) !important;
}

.accordion-item > .accordion-panel {
  display: block !important;
  height: 0;
  max-height: none !important;
  box-sizing: border-box;
  overflow: hidden;
}

.accordion-item > .accordion-panel:not(.is-open) {
  padding-bottom: 0 !important;
  opacity: 0;
  pointer-events: none;
  transform: translateY(-4px);
  visibility: hidden;
  transition:
    height 360ms var(--motion-ease),
    opacity 240ms ease,
    transform 360ms var(--motion-ease),
    visibility 0s linear 360ms;
}

.accordion-item > .accordion-panel.is-open {
  height: auto;
  opacity: 1;
  pointer-events: auto;
  transform: none;
  visibility: visible;
  transition:
    height 360ms var(--motion-ease),
    opacity 240ms ease,
    transform 360ms var(--motion-ease),
    visibility 0s linear 0s;
}

.accordion-trigger,
.accordion-trigger::after,
.accordion-trigger span::before,
.accordion-trigger span::after,
.catalog-filter__row img {
  transition-duration: 260ms !important;
  transition-timing-function: var(--motion-ease) !important;
}

.faq-tabs button {
  transition:
    color 220ms ease,
    background-color 220ms ease,
    border-color 220ms ease;
}

.catalog-filter__panel {
  display: grid !important;
  height: 0;
  overflow: hidden;
  padding-bottom: 0;
  opacity: 0;
  transform: translateY(-3px);
  visibility: hidden;
  transition:
    height 360ms var(--motion-ease),
    opacity 220ms ease,
    transform 320ms var(--motion-ease),
    visibility 0s linear 360ms;
}

.catalog-filter__panel.is-open {
  height: auto;
  padding-bottom: 13px;
  opacity: 1;
  transform: none;
  visibility: visible;
  transition:
    height 360ms var(--motion-ease),
    opacity 220ms ease,
    transform 320ms var(--motion-ease),
    visibility 0s linear 0s;
}

body > .hero-contact-dock > .hero-contact-dock__channels {
  transition:
    max-height 300ms var(--motion-ease),
    opacity 240ms ease,
    transform 300ms var(--motion-ease),
    visibility 0s linear 0s !important;
}

body > .hero-contact-dock.is-collapsed > .hero-contact-dock__channels {
  transition:
    max-height 300ms var(--motion-ease),
    opacity 240ms ease,
    transform 300ms var(--motion-ease),
    visibility 0s linear 300ms !important;
}

.lead-success-modal {
  animation-duration: 280ms !important;
  animation-timing-function: var(--motion-ease) !important;
}

.lead-success-modal__dialog {
  animation-duration: 320ms !important;
  animation-timing-function: var(--motion-ease) !important;
}

.gallery-lightbox:not([hidden]) {
  animation: motion-fade-in 260ms ease-out both;
}

.gallery-lightbox:not([hidden]) .gallery-lightbox__image {
  animation: motion-image-in 340ms var(--motion-ease) both;
}

.analytics-consent:not([hidden]),
.cookie-notice:not([hidden]) {
  animation: motion-rise-in 300ms var(--motion-ease) both;
}

@keyframes motion-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes motion-image-in {
  from { opacity: 0; transform: scale(0.985); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes motion-rise-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 1100px) {
  .mobile-panel {
    transition:
      opacity 280ms ease,
      transform 320ms var(--motion-ease),
      visibility 0s linear 320ms !important;
  }

  .mobile-panel.is-open {
    transition:
      opacity 280ms ease,
      transform 320ms var(--motion-ease),
      visibility 0s linear 0s !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation: none !important;
    transition: none !important;
  }

  .accordion-item > .accordion-panel,
  .accordion-item > .accordion-panel:not(.is-open),
  .accordion-item > .accordion-panel.is-open,
  .catalog-filter__panel,
  .catalog-filter__panel.is-open {
    transition: none !important;
  }

  .mobile-panel,
  .mobile-panel.is-open,
  body > .hero-contact-dock > .hero-contact-dock__channels,
  body > .hero-contact-dock.is-collapsed > .hero-contact-dock__channels {
    transition: none !important;
  }
}
