/* ===== Gras ===== */
/* Par défaut, <b> = "bolder" : relatif au texte parent. Sur un texte extralight (200),
   ça ne donne que 400, presque pas visible. On force un vrai gras. */
b,
strong {
  font-weight: 700;
}

/* ===== Liens navbar desktop ===== */
.nav-link,
.mobile-link {
  font-family: "IBM Plex Mono", ui-monospace, monospace;
}

.nav-link {
  position: relative;
  font-size: 0.875rem;
  font-weight: 500;
  color: #9f9f9f;
  transition: color 0.2s;
}

.nav-link:hover {
  color: #fff;
}

/* Lien actif : même vert que les blocs */
.nav-link.active {
  color: #9ef01a;
}

/* Soulignement animé */
.nav-link::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -4px;
  width: 100%;
  height: 2px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 0.25s ease;
}

.nav-link:hover::after,
.nav-link.active::after {
  transform: scaleX(1);
}

/* ===== Menu mobile ===== */
.mobile-menu {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.3s ease;
}

.mobile-menu > ul {
  overflow: hidden;
  min-height: 0;
}

.mobile-menu.open {
  grid-template-rows: 1fr;
}

/* Pas de bordure quand le menu est fermé */
.mobile-menu:not(.open) > ul {
  padding-block: 0;
  border-top-width: 0;
}

.mobile-link {
  display: block;
  border-radius: 0.375rem;
  padding: 0.75rem 1rem;
  font-weight: 500;
  color: #9f9f9f;
  transition: background-color 0.2s, color 0.2s;
}

.mobile-link:hover {
  background: rgb(255 255 255 / 0.1);
  color: #fff;
}

.mobile-link.active {
  color: #9ef01a;
}

/* ===== Accordéon services ===== */
/* Même technique que le menu mobile : 0fr -> 1fr pour animer la hauteur */
.accordion-panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.4s ease;
}

.accordion-panel > div {
  overflow: hidden;
  min-height: 0;
}

.accordion-item.open .accordion-panel {
  grid-template-rows: 1fr;
}

/* Le "+" tourne en "×" quand le bloc est ouvert */
.accordion-icon {
  transition: transform 0.3s ease;
}

.accordion-item.open .accordion-icon {
  transform: rotate(45deg);
}

/* ===== Ligne qui s'allonge au scroll ===== */
/* La longueur est pilotée par main.js via la variable --progress (0 → 1) */
.scroll-line {
  transform: scaleX(var(--progress, 0));
  transform-origin: left;
}

/* ===== Flottement (respiration) ===== */
.float {
  animation: float 4s ease-in-out infinite;
}

@keyframes float {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-12px);
  }
}

/* Pas d'animation si l'utilisateur a demandé à réduire les animations */
@media (prefers-reduced-motion: reduce) {
  .float {
    animation: none;
  }
}

/* ===== Sections ===== */
.section {
  max-width: 80rem;
  margin-inline: auto;
  padding: 6rem 1rem;
  scroll-margin-top: 4rem; /* compense la navbar fixe */
}

/* Texte ajusté à la largeur de son conteneur (taille calculée dans main.js) */
.fit-text {
  white-space: nowrap;
  overflow: hidden;
}

.section-title {
  font-size: 1.875rem;
  font-weight: 700;
  text-align: center;
}
