/* Mouvement SJB : interactions brèves et apparitions uniques, sans boucle. */
:root {
  --motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --motion-duration: 260ms;
}
.button,
#primary-nav .nav-cta {
  transition:
    background-color var(--motion-duration) ease,
    color var(--motion-duration) ease,
    border-color var(--motion-duration) ease,
    box-shadow var(--motion-duration) ease,
    transform var(--motion-duration) var(--motion-ease);
}
.button > span[aria-hidden],
.nav-cta > span[aria-hidden],
.card-link > span[aria-hidden],
.card-top > span:last-child {
  display: inline-block;
  transition: transform 300ms var(--motion-ease);
}
.text-link,
#primary-nav > a:not(.nav-cta) {
  position: relative;
}
.text-link::after,
#primary-nav > a:not(.nav-cta)::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 300ms var(--motion-ease);
  pointer-events: none;
}
#primary-nav > a[aria-current]::after {
  transform: scaleX(1);
}
#primary-nav > a[aria-current] {
  box-shadow: none;
}
.initiative-card,
.card,
.partner-grid > div,
.partner-grid > article,
.document-list > a {
  transition:
    transform 320ms var(--motion-ease),
    box-shadow 320ms ease,
    border-color 260ms ease,
    background-color 260ms ease;
}
.initiative-card img,
.card > img,
.partner-grid img,
.media-grid img {
  transition:
    transform 450ms var(--motion-ease),
    filter 350ms ease;
}
.media-grid figure > a {
  display: block;
  overflow: hidden;
}
.footer a:not(.footer-brand),
.side-nav a,
.breadcrumb a {
  transition: color 200ms ease;
}
input:not([type="checkbox"]),
textarea,
select {
  transition:
    border-color 200ms ease,
    box-shadow 200ms ease,
    background-color 200ms ease;
}
.contact-form input:focus-visible,
.contact-form textarea:focus-visible,
.filters input:focus-visible,
.filters select:focus-visible {
  border-color: var(--sjb-green);
  box-shadow: 0 0 0 3px rgb(8 116 72 / 10%);
}
.button:focus-visible,
#primary-nav .nav-cta:focus-visible {
  box-shadow: 0 5px 15px rgb(7 62 45 / 16%);
}
.text-link:focus-visible::after,
#primary-nav > a:focus-visible::after {
  transform: scaleX(1);
}
.initiative-card:focus-visible,
.card:focus-within {
  border-color: var(--sjb-green);
  box-shadow: 0 8px 24px rgb(7 62 45 / 8%);
}
@media (hover: hover) and (pointer: fine) {
  .button:hover,
  #primary-nav .nav-cta:hover {
    transform: translateY(-2px);
    box-shadow: 0 7px 20px rgb(0 0 0 / 12%);
  }
  .button.light:hover {
    background: #edf3e8;
  }
  .button.dark:hover,
  #primary-nav .nav-cta:hover {
    background: var(--sjb-green);
  }
  .button.ghost:hover {
    background: rgb(255 255 255 / 9%);
    border-color: white;
  }
  .button:hover > span[aria-hidden],
  .nav-cta:hover > span[aria-hidden],
  .initiative-card:hover .card-top > span:last-child,
  .initiative-card:hover .card-link > span[aria-hidden] {
    transform: translate(3px, -2px);
  }
  .text-link:hover::after,
  #primary-nav > a:hover::after {
    transform: scaleX(1);
  }
  .initiative-card:hover,
  .card:has(a):hover {
    transform: translateY(-4px);
    border-color: #9aad9a;
    box-shadow: 0 12px 28px rgb(7 62 45 / 9%);
  }
  .partner-grid > div:has(a):hover,
  .partner-grid > article:has(a):hover {
    border-color: #9aad9a;
    box-shadow: 0 6px 18px rgb(7 62 45 / 7%);
  }
  .partner-grid a:hover {
    text-decoration: underline;
    text-underline-offset: 4px;
  }
  .partner-grid > div:has(a):hover img,
  .partner-grid > article:has(a):hover img {
    transform: scale(1.025);
  }
  .media-grid figure > a:hover img {
    transform: scale(1.035);
  }
  .document-list > a:hover {
    background: var(--sjb-green-soft);
    border-color: #9aad9a;
  }
  .footer a:not(.footer-brand):hover {
    color: white;
  }
  .side-nav a:hover,
  .breadcrumb a:hover {
    color: var(--sjb-green);
  }
}
@keyframes menu-enter {
  from {
    opacity: 0.6;
    transform: translateY(-6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes panel-enter {
  from {
    opacity: 0.65;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (max-width: 1000px) {
  #primary-nav.open {
    animation: menu-enter 220ms var(--motion-ease) both;
  }
}
.program-day:not([hidden]) {
  animation: panel-enter 240ms var(--motion-ease) both;
}
dialog[open] {
  animation: panel-enter 220ms var(--motion-ease) both;
}
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
  }
  html {
    scroll-behavior: auto;
  }
  .button:hover,
  #primary-nav .nav-cta:hover,
  .initiative-card:hover,
  .card:has(a):hover,
  .partner-grid img,
  .media-grid img,
  .button > span[aria-hidden],
  .nav-cta > span[aria-hidden],
  .card-link > span[aria-hidden],
  .card-top > span:last-child {
    transform: none !important;
  }
}
