/* SASHI Medical Reach — measured, one-time motion. No loops or photo movement.
 * Entrance transforms belong to main.js/WAAPI; hover uses translate independently.
 * All content starts visible. Only JS-confirmed off-screen items can become pending.
 */
:root {
  --motion-ease: cubic-bezier(.22, 1, .36, 1);
  --motion-feedback: 220ms;
}
[data-reveal] { opacity: 1; }

@media screen and (prefers-reduced-motion: no-preference) {
  [data-reveal].reveal-pending { opacity: 0; transform: translateY(12px); }

  .button, .header-cta {
    transition: background-color var(--motion-feedback) ease, border-color var(--motion-feedback) ease,
      box-shadow var(--motion-feedback) ease, translate var(--motion-feedback) var(--motion-ease);
  }
  :is(.button, .header-cta, .text-link, .bp-text-link, .svc-card__link) > .icon:last-child,
  :is(.choice-card__link, .service-card__link, .home-resources__grid > a > b) > .icon {
    transition: transform var(--motion-feedback) var(--motion-ease);
  }
  :is(.button, .header-cta, .text-link, .bp-text-link, .svc-card__link):focus-visible > .icon:last-child,
  .choice-card:focus-visible .choice-card__link > .icon,
  .service-card:focus-visible .service-card__link > .icon,
  .home-resources__grid > a:focus-visible > b > .icon { transform: translateX(3px); }
  :is(.button, .header-cta):active { translate: 0 1px; }

  :is(.choice-card, .service-card, .home-resources__grid > a, .reason-journey__track > a, .sd-related-grid > a, .post-card > a) {
    transition: translate 280ms var(--motion-ease), border-color var(--motion-feedback) ease,
      background-color var(--motion-feedback) ease, box-shadow 280ms ease;
  }
  :is(.choice-card__icon, .service-card__icon) > .icon { transition: transform 320ms var(--motion-ease); }

  /* A small rule introduces the heading; the heading itself is never delayed. */
  .smr-photo-hero .eyebrow::before,
  [data-reveal].smr-revealing .eyebrow::before {
    transform-origin: left center;
    animation: smr-rule-in 560ms var(--motion-ease) both;
  }
  .faq-item__plus { transition: transform var(--motion-feedback) var(--motion-ease); }
  details.faq-item[open] > .faq-item__panel { animation: smr-answer-in 180ms ease-out; }
  .mobile-panel:not([hidden]) { animation: smr-menu-in 180ms var(--motion-ease); }
  .primary-nav__list .sub-menu { transition: opacity 160ms ease; }
}

/* Only true link cards rise; reading-only cards and photographs stay still. */
@media screen and (prefers-reduced-motion: no-preference) and (hover: hover) and (pointer: fine) {
  :is(.choice-card, .service-card, .home-resources__grid > a, .reason-journey__track > a, .sd-related-grid > a, .post-card > a):hover {
    translate: 0 -3px;
    box-shadow: 0 14px 32px rgb(31 55 75 / 9%);
    border-color: #bac4cc;
  }
  :is(.button, .header-cta):hover:not(:active) { translate: 0 -1px; }
  :is(.button, .header-cta, .text-link, .bp-text-link, .svc-card__link):hover > .icon:last-child,
  .choice-card:hover .choice-card__link > .icon,
  .service-card:hover .service-card__link > .icon,
  .home-resources__grid > a:hover > b > .icon { transform: translateX(3px); }
  .choice-card:hover .choice-card__icon > .icon,
  .service-card:hover .service-card__icon > .icon { transform: rotate(-4deg); }
  .reason-journey__track > a:hover { background: #fff; }
}

@keyframes smr-rule-in {
  from { opacity: .35; transform: scaleX(.2); }
  to { opacity: 1; transform: scaleX(1); }
}
@keyframes smr-answer-in { from { opacity: .45; } to { opacity: 1; } }
@keyframes smr-menu-in {
  from { opacity: .65; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}

/* These exact states also protect print and preference changes before JS runs. */
@media (prefers-reduced-motion: reduce), print {
  [data-reveal], [data-reveal].reveal-pending, [data-reveal].is-visible {
    opacity: 1; transform: none; translate: none; animation: none; transition: none;
  }
}
