/* ============================================================
   v122 — CANONICAL MOTION FOR INTERACTIVE PRIMITIVES
   ============================================================ */

/* Buttons (v101) — canonical micro timing, out-expo curve for "released" feel */
body .pz-btn,
body .pz-btn--primary,
body .pz-btn--ghost,
body .pz-btn--link,
body .pz-shortlist__cta,
body .pz-shortlist__cta--primary,
body .pz-shortlist__cta--ghost,
body .pz-explore__reset,
body .pz-philosophy__cta--primary,
body .pz-philosophy__cta--ghost {
  transition-property: transform, background-color, color, box-shadow, border-color, opacity !important;
  transition-duration: var(--pz-t-fast, 180ms) !important;
  transition-timing-function: var(--pz-out-expo, cubic-bezier(0.22, 1, 0.36, 1)) !important;
}

/* Cards (v102) — slower medium duration on hover lift, out-expo for entrance */
body .pz-card,
body .pz-card-a,
body .pz-card--horizontal,
body .pz-shortlist-card,
body .pz-smart-rec__card,
body .pz-explore-card {
  transition-property: transform, box-shadow, border-color, background-color, opacity !important;
  transition-duration: var(--pz-t-med, 360ms) !important;
  transition-timing-function: var(--pz-out-expo, cubic-bezier(0.22, 1, 0.36, 1)) !important;
}

/* Heart / shortlist toggle buttons (v34) — instant feedback with canonical curve */
body .pz-heart,
body .pz-heart-btn,
body .pz-shortlist-card__remove,
body .pz-mob-heart {
  transition-property: transform, color, background-color, opacity !important;
  transition-duration: var(--pz-t-fast, 180ms) !important;
  transition-timing-function: var(--pz-standard, cubic-bezier(0.4, 0, 0.2, 1)) !important;
}

/* Mobile nav buttons + overlay-close (v104) */
body .pz-mob-btn,
body .pz-mob-menu,
body .pz-mob-search,
body .pz-overlay-nav__close,
body .pz-overlay-nav__list a,
body .pz-overlay-nav__tag a {
  transition-property: transform, background-color, color, opacity !important;
  transition-duration: var(--pz-t-fast, 180ms) !important;
  transition-timing-function: var(--pz-standard, cubic-bezier(0.4, 0, 0.2, 1)) !important;
}

/* Search overlay container (v105) — medium for overlay reveal */
body .pz-search-overlay,
body .pz-search-overlay__backdrop,
body .pz-search-overlay__body {
  transition-property: opacity, transform, background-color !important;
  transition-duration: var(--pz-t-med, 360ms) !important;
  transition-timing-function: var(--pz-out-expo, cubic-bezier(0.22, 1, 0.36, 1)) !important;
}

/* Filter chips (v106) — micro timing, out-expo for "settling" feel */
body .pz-explore__chip,
body .pz-explore__chips button,
body .pz-explore__filters button {
  transition-property: background-color, color, border-color, transform, box-shadow !important;
  transition-duration: var(--pz-t-fast, 180ms) !important;
  transition-timing-function: var(--pz-out-expo, cubic-bezier(0.22, 1, 0.36, 1)) !important;
}

/* FYT quiz options (v107) */
body .pz-fyt__option,
body .pz-fyt__option-card {
  transition-property: transform, background-color, color, border-color, box-shadow !important;
  transition-duration: var(--pz-t-fast, 180ms) !important;
  transition-timing-function: var(--pz-out-expo, cubic-bezier(0.22, 1, 0.36, 1)) !important;
}

/* Compare dropdowns + diff highlights (v108) */
body .pz-compare__dropdown,
body .pz-compare__diff {
  transition-property: background-color, color, border-color, opacity !important;
  transition-duration: var(--pz-t-fast, 180ms) !important;
  transition-timing-function: var(--pz-standard, cubic-bezier(0.4, 0, 0.2, 1)) !important;
}

/* Generic interactive links inside content — keep subtle, no transform */
body .entry-content a:not(.pz-btn):not(.pz-card-a):not(.pz-card) {
  transition-property: color, background-color, border-bottom-color !important;
  transition-duration: var(--pz-t-fast, 180ms) !important;
  transition-timing-function: var(--pz-standard, cubic-bezier(0.4, 0, 0.2, 1)) !important;
}

/* Press state feedback — quick exit curve */
body .pz-btn:active,
body .pz-card:active,
body .pz-card-a:active,
body .pz-explore__chip:active,
body .pz-fyt__option:active,
body .pz-mob-btn:active,
body .pz-heart-btn:active {
  transition-duration: 100ms !important;
  transition-timing-function: var(--pz-standard, cubic-bezier(0.4, 0, 0.2, 1)) !important;
}

/* Respect reduced-motion preference — disable transitions for users who request it */
@media (prefers-reduced-motion: reduce) {
  body .pz-btn,
  body .pz-card,
  body .pz-card-a,
  body .pz-heart,
  body .pz-heart-btn,
  body .pz-mob-btn,
  body .pz-overlay-nav__close,
  body .pz-search-overlay,
  body .pz-explore__chip,
  body .pz-fyt__option,
  body .pz-compare__dropdown,
  body .pz-smart-rec__card,
  body .pz-shortlist-card__remove {
    transition-duration: 0.001ms !important;
    animation-duration: 0.001ms !important;
  }
}