/* Authored site motion; not extracted Figma prototype timings. */
:root { --ease-out: cubic-bezier(.22,1,.36,1); }
.button, .social, .info-card, .review-card, .video-card, .results-grid article {
  transition: transform .25s var(--ease-out), box-shadow .25s var(--ease-out), background .2s ease;
}
.button:active { transform: translateY(1px) scale(.985); }
.desktop-nav a, .footer-grid nav a { position: relative; }
.desktop-nav a::after, .footer-grid nav a::after {
  content: ''; position: absolute; height: 2px; bottom: -7px; left: 0; right: 0;
  background: var(--purple); transform: scaleX(0); transform-origin: left;
  transition: transform .25s var(--ease-out);
}
.desktop-nav a:hover::after, .desktop-nav a:focus-visible::after,
.footer-grid nav a:hover::after { transform: scaleX(1); }
.video-poster { transition: transform .6s var(--ease-out); }
.play-button { transition: background .25s, box-shadow .25s, scale .25s var(--ease-out); }
.carousel-arrow { transition: translate .2s, opacity .2s; }
.carousel-arrow[aria-disabled=true] { opacity: .55; cursor: default; }
.carousel-dot { transition: scale .2s; }
.carousel-dot[aria-current=true] { scale: 1.15; }
.faq-toggle { transition: background .25s, transform .3s var(--ease-out); }
.faq-toggle img { transition: transform .3s var(--ease-out); }
.faq-item[data-expanded=false] .faq-toggle img { transform: rotate(180deg); }
.faq-item[data-expanded=true] .faq-toggle img { transform: rotate(0); }
.faq-item summary:hover .faq-toggle { background: #59218f; }
dialog[open] { animation: dialog-enter .3s var(--ease-out) both; }
dialog[open]::backdrop { animation: backdrop-enter .25s ease both; }
.mobile-menu:not([hidden]) { animation: menu-enter .25s var(--ease-out) both; }
.menu-toggle span { transition: transform .25s var(--ease-out); }
.calculator input, .form-grid input, .phone-field {
  transition: border-color .2s, box-shadow .2s, background .2s;
}
.calculator input:focus, .form-grid input:focus, .phone-field:focus-within {
  border-color: var(--purple); box-shadow: 0 0 0 3px #6e2dad12;
}
@media (hover:hover) and (pointer:fine) {
  .button:hover { transform: translateY(-2px); }
  .social:hover { transform: translateY(-3px); }
  .info-card:hover, .review-card:hover, .results-grid article:hover {
    transform: translateY(-4px); box-shadow: 0 12px 30px #35233d0d;
  }
  .video-picture:hover .video-poster { transform: scale(1.025); }
  .video-picture:hover .play-button { scale: 1.08; box-shadow: 0 0 0 8px #ffffff15; }
  .carousel-arrow:not([aria-disabled=true]):hover { translate: 0 -2px; }
}
@keyframes dialog-enter {
  from { opacity: 0; transform: translateY(16px) scale(.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes backdrop-enter { from { opacity: 0; } to { opacity: 1; } }
@keyframes menu-enter {
  from { opacity: 0; transform: translateY(-10px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  html { scroll-behavior: auto; }
  .button:hover, .social:hover, .info-card:hover, .review-card:hover,
  .results-grid article:hover, .video-picture:hover .video-poster { transform: none; }
  .play-button, .carousel-dot { scale: 1 !important; }
}
/* The phone prefix and input form one control: show one focus ring. */
.form-grid .phone-field input:focus,
.form-grid .phone-field input:focus-visible { outline:none; box-shadow:none; }
.phone-field:focus-within { outline:3px solid var(--purple); outline-offset:5px; }
