/* NETORIA — système de motion partagé (toutes les pages) */

:root {
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
}

/* ---------- Entrée / sortie de page ---------- */

body {
  opacity: 1;
  transition: opacity 220ms var(--ease-out);
}
body[data-page-leaving] {
  opacity: 0;
  transition: opacity 160ms ease;
}
@supports (transition-behavior: allow-discrete) {
  body {
    transition: opacity 260ms var(--ease-out);
    @starting-style { opacity: 0; }
  }
}

/* ---------- Apparition au scroll ---------- */

.reveal {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 640ms var(--ease-out), transform 640ms var(--ease-out);
}
.reveal.in-view {
  opacity: 1;
  transform: translateY(0);
}
.reveal [style*="display: grid"] > *,
.reveal [style*="display:grid"] > * {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 520ms var(--ease-out), transform 520ms var(--ease-out);
}
.reveal.in-view [style*="display: grid"] > *,
.reveal.in-view [style*="display:grid"] > * {
  opacity: 1;
  transform: translateY(0);
}

/* ---------- Liens et boutons : feedback interactif ---------- */

a, button {
  transition: transform 160ms var(--ease-out), background-color 180ms ease, border-color 180ms ease, color 180ms ease, box-shadow 220ms var(--ease-out);
}
a:active, button:active {
  transform: scale(0.97);
}
.faq-btn:active { transform: none; }

@media (hover: hover) and (pointer: fine) {
  .btn-navy:hover, .btn-outline:hover {
    transform: translateY(-2px);
    box-shadow: 0 22px 40px -18px rgba(34,75,130,0.55);
  }
  .btn-navy:active, .btn-outline:active {
    transform: translateY(0) scale(0.97);
  }
  .chip:hover, .nav-cta:hover {
    transform: translateY(-1px);
  }
}

/* ---------- Menu mobile ---------- */

#mobile-menu nav {
  transform-origin: top center;
}
#mobile-menu[data-open] nav {
  animation: menuIn 240ms var(--ease-out);
}
@keyframes menuIn {
  from { opacity: 0; transform: scale(0.96) translateY(-8px); }
  to { opacity: 1; transform: scale(1) translateY(0); }
}

/* ---------- Accordéon FAQ ---------- */

.faq-a-wrap {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 320ms var(--ease-in-out);
  overflow: hidden;
}
.faq-a-wrap.open {
  grid-template-rows: 1fr;
}
.faq-a-wrap > p {
  min-height: 0;
  overflow: hidden;
}
.faq-sign {
  transition: transform 260ms var(--ease-in-out);
}
.faq-a-wrap.open ~ .faq-sign,
.faq-item:has(.faq-a-wrap.open) .faq-sign {
  transform: rotate(180deg);
}

/* ---------- Réduction de mouvement ---------- */

@media (prefers-reduced-motion: reduce) {
  body, body[data-page-leaving] {
    opacity: 1 !important;
    transition: none !important;
  }
  .reveal, .reveal [style*="display: grid"] > *, .reveal [style*="display:grid"] > * {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  a, button, .faq-a-wrap, #mobile-menu nav {
    transition: none !important;
    animation: none !important;
  }
  a:active, button:active { transform: none !important; }
}
