/*
 * Socle commun du site vitrine : navigation, apparitions au défilement, modale de contact.
 * Chaque page le charge : une seule définition, un seul rendu.
 */

/* Soulignement orange de la navigation, déployé du centre vers les côtés */
.nav-link-hover {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding-top: 4px;
  padding-bottom: 6px;
  color: #E2E8F0;
  transition: color 0.25s ease;
}
.nav-link-hover:hover,
.nav-link-hover.active {
  color: #FFFFFF;
}
.nav-link-hover::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 2px;
  background: linear-gradient(90deg, #FF8A48 0%, #FF6B22 50%, #EA580C 100%);
  border-radius: 9999px;
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 0 0 8px rgba(255, 107, 34, 0.65);
}
.nav-link-hover:hover::after,
.nav-link-hover.active::after {
  transform: scaleX(1);
}

/* Apparition douce au défilement */
.reveal-on-scroll {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 0.85s cubic-bezier(0.16, 1, 0.3, 1), transform 0.85s cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal-on-scroll.is-revealed {
  opacity: 1;
  transform: translateY(0);
}
.reveal-delay-100 { transition-delay: 100ms; }
.reveal-delay-200 { transition-delay: 200ms; }
@media (prefers-reduced-motion: reduce) {
  .reveal-on-scroll {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* Lien de liste : soulignement orange au survol de toute la ligne */
.lien-public-texte {
  position: relative;
  padding-bottom: 4px;
}
.lien-public-texte::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 2px;
  background: #FF6B22;
  border-radius: 9999px;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
}
.lien-public:hover .lien-public-texte::after,
.lien-public:focus-visible .lien-public-texte::after {
  transform: scaleX(1);
}

/* Modale de contact */
.modale-contact {
  margin: auto;
  padding: 0;
  border: 0;
  background: transparent;
  width: min(calc(100% - 2rem), 36rem);
  max-width: none;
  max-height: none;
  overflow: visible;
}
.modale-contact::backdrop {
  background: rgba(7, 16, 27, 0.65);
}
html:has(.modale-contact[open]) {
  overflow: hidden;
}
.champ-contact {
  width: 100%;
  min-height: 48px;
  padding: 0.75rem 1rem;
  border-radius: 0.75rem;
  border: 1px solid #E2E8F0;
  background: #F8FAFC;
  color: #0B1727;
  font-size: 1rem;
  line-height: 1.5;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}
.champ-contact:focus {
  outline: none;
  background: #FFFFFF;
  border-color: #0B1727;
  box-shadow: 0 0 0 3px rgba(11, 23, 39, 0.12);
}
/* Le champ à corriger : rouge d'alerte de la charte, jamais l'orange des actions. */
.champ-contact[aria-invalid='true'] {
  border-color: #DC2626;
  background: #FEF2F2;
}
.champ-contact[aria-invalid='true']:focus {
  border-color: #DC2626;
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.18);
}

/* Une image annoncée par la page mais pas encore déposée se cache : la page reste telle quelle. */
img.image-absente {
  display: none;
}
