/* Variables de marque, reset, .btn/.card/.hero communs : voir base.css,
   chargé avant ce fichier sur toutes les pages web/. Ici, uniquement ce
   qui est propre à l'accueil (fond plein écran, menu flottant). */

body {
  position: relative;
  overflow-x: hidden;
  background: var(--brand-primary);
  padding:
    max(0px, var(--safe-top))
    max(0px, var(--safe-right))
    max(0px, var(--safe-bottom))
    max(0px, var(--safe-left));
}

/* réserve l'écran d'accueil (logo + menu) pour que le footer,
   seul élément en flux normal, s'affiche en pied de page après un scroll
   au lieu de recouvrir le logo dès le chargement */
.bg {
  min-height: 100vh;
  min-height: 100dvh;
}

/* fond plein écran indépendant du scroll */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -3;

  background-image: var(--app-background-image);
  background-size: cover;
  background-position: var(--brand-bg-image-position, center center);
  background-repeat: no-repeat;
  opacity: var(--brand-bg-image-opacity, 1);
}

/* voile configurable posé sur l'image de fond (couleur + opacité) */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -2;

  background: color-mix(
    in srgb,
    var(--brand-overlay-color, #000000) calc(var(--brand-overlay-opacity, 0.18) * 100%),
    transparent
  );
}

/* image mobile */
@media (max-width: 768px) {
  body::before {
    background-image: var(--app-background-image-mobile);
    background-size: cover;
    background-position: var(--brand-bg-image-position, center top);
    background-repeat: no-repeat;
  }

  .menu__nav {
    width: 100%;
  }

  .menu__nav a {
    flex: 1 1 140px;
    padding: 10px 14px;
  }
}

@media (max-width: 480px) {
  .menu {
    padding: 0 10px;
  }

  .menu__nav {
    border-radius: var(--radius-lg);
  }

  .menu__nav a {
    flex-basis: calc(50% - 6px);
    font-size: 13px;
    padding: 9px 10px;
  }
}

/* voile léger */
.overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.06);
  z-index: -1;
}

/* menu */
.menu {
  position: fixed;
  top: calc(18px + var(--safe-top));
  left: 0;
  width: 100%;
  z-index: 20;
  display: flex;
  justify-content: center;
  padding: 0 16px;
}

.menu__nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  width: min(100%, 1100px);
  padding: 10px;
  background: color-mix(in srgb, var(--brand-primary) 26%, transparent);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: var(--radius-lg);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.menu__nav a {
  color: #fff;
  text-decoration: none;
  font-size: clamp(14px, 2vw, 20px);
  font-weight: 600;
  padding: 10px 18px;
  border-radius: var(--radius-sm);
  text-align: center;
  min-width: 0;
  overflow-wrap: anywhere;
}

.menu__nav a:hover {
  background: rgba(255, 255, 255, 0.12);
}

/* bouton "PLUS" : replie le footer (infos légales, contact...) dans le menu sur téléphone */
.menu__footer-toggle {
  display: none;
}

@media (max-width: 768px) {
  .menu__footer-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 1 1 140px;
    border: 0;
    border-radius: var(--radius-sm);
    padding: 10px 14px;
    color: #fff;
    background: transparent;
    font: inherit;
    font-size: clamp(14px, 2vw, 20px);
    font-weight: 600;
    cursor: pointer;
  }

  .menu__footer-toggle[aria-expanded="true"] {
    background: rgba(255, 255, 255, 0.12);
  }
}

@media (max-width: 480px) {
  .menu__footer-toggle {
    flex-basis: calc(50% - 6px);
    font-size: 13px;
    padding: 9px 10px;
  }
}

@media (max-width: 900px) {
  .menu {
    top: calc(12px + var(--safe-top));
    padding: 0 12px;
  }

  .menu__nav {
    gap: 6px;
    padding: 8px;
  }
}
