/* ============================================================
   MOTEUR COMMUN CARTE VIVE — Module "core" (générique, obligatoire
   pour tous les clients).

   Extrait de moteur/cave.css le 04/10/2026 (il contenait jusqu'ici ce
   qui est en fait générique : remise à zéro de base, sélecteur de
   langue, accès/modale/badge gérance). Un futur module "carte" seul
   (sans cave) peut désormais charger ce fichier sans dépendre de
   cave.css pour avoir un bouton gérance qui fonctionne visuellement.

   Charger dans cet ordre : moteur/theme.css, clients/<id>/theme.css,
   moteur/core.css, puis le(s) CSS de module (moteur/cave.css, etc.).
   ============================================================ */
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  font-family: 'Montserrat', sans-serif;
  background: var(--couleur-fond);
  color: var(--couleur-texte);
  min-height: 100vh;
}

/* ── SÉLECTEUR DE LANGUE ── */
.lang-switcher {
  position: fixed;
  top: 10px;
  right: 10px;
  z-index: 2000;
}
.lang-toggle {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  background: rgba(15,5,5,0.88);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-radius: 12px;
  border: 1px solid rgba(185,146,79,0.3);
  box-shadow: 0 4px 16px rgba(0,0,0,0.4);
  padding: 0.45rem 0.7rem;
  cursor: pointer;
  color: var(--couleur-accent);
  font-size: 0.85rem;
  font-weight: 600;
  -webkit-tap-highlight-color: transparent;
}
.lang-toggle-flag { font-size: 1.2rem; line-height: 1; }
.lang-toggle-caret { font-size: 0.65rem; opacity: 0.75; transition: transform 0.15s; }
.lang-switcher.open .lang-toggle-caret { transform: rotate(180deg); }
.lang-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 175px;
  background: rgba(15,5,5,0.94);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-radius: 12px;
  border: 1px solid rgba(185,146,79,0.3);
  box-shadow: 0 4px 16px rgba(0,0,0,0.4);
  padding: 0.4rem;
  display: none;
  flex-direction: column;
  gap: 0.15rem;
}
.lang-switcher.open .lang-menu { display: flex; }
.lang-option {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  background: none;
  border: none;
  border-radius: 8px;
  padding: 0.45rem 0.6rem;
  font-size: 0.9rem;
  color: #fff;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s;
  -webkit-tap-highlight-color: transparent;
}
.lang-option:hover { background: rgba(255,255,255,0.08); }
.lang-option.active { color: var(--couleur-accent); font-weight: 600; }

/* ── ACCÈS GÉRANCE ── */
#admin-trigger {
  position: fixed;
  bottom: 1rem; right: 1rem;
  width: 2.6rem; height: 2.6rem;
  border-radius: 50%;
  background: var(--couleur-primaire);
  color: var(--couleur-accent-pale);
  border: 1px solid rgba(185,146,79,0.4);
  font-size: 1.1rem;
  cursor: pointer;
  opacity: 0.55;
  z-index: 500;
}
#admin-trigger:hover { opacity: 1; }
#admin-modal-overlay {
  display: none;
  position: fixed; inset: 0;
  background: rgba(20,20,16,0.85);
  z-index: 9999;
  align-items: center;
  justify-content: center;
}
#admin-modal-box {
  background: var(--couleur-fond);
  border-radius: 14px;
  max-width: 320px; width: 90%;
  padding: 1.6rem 1.4rem;
  text-align: center;
}
#admin-modal-title {
  font-family: 'Playfair Display', serif;
  font-weight: 700;
  color: var(--couleur-primaire-sombre);
  margin-bottom: 1rem;
}
#admin-pwd-input {
  width: 100%;
  padding: 0.6rem 0.7rem;
  border-radius: 6px;
  border: 1px solid rgba(75,90,58,0.35);
  margin-bottom: 0.7rem;
  font-size: 0.9rem;
}
#admin-pwd-error {
  display: none;
  color: #9b4a2f;
  font-size: 0.75rem;
  margin-bottom: 0.6rem;
}
#admin-modal-box button {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  padding: 0.55rem 1rem;
  border-radius: 999px;
  border: 1px solid var(--couleur-primaire-sombre);
  background: var(--couleur-primaire-sombre);
  color: #fff;
  cursor: pointer;
  margin: 0.2rem;
}
#admin-modal-cancel {
  background: none;
  color: var(--couleur-primaire-sombre);
}
#admin-badge {
  /* Corrigé le 04/10/2026 (soir), lors du test de migration de Jardin
     d'Argelès : avec bottom:1rem / right:4.1rem (même rangée que
     #admin-trigger et #avis-admin-trigger), la largeur du badge grandit
     vers la GAUCHE selon la longueur de son texte ("🔑 Gérance …
     Déconnexion") et finissait par recouvrir #avis-admin-trigger
     (right:7.4rem), rendant ce bouton impossible à cliquer tant qu'on est
     connecté en gérance — reproduit aussi sur le client démo déjà testé
     (demo-comptoir-vieux-port), donc bug du moteur commun, pas propre à
     Jardin. Placé sur sa propre rangée, au-dessus des boutons ronds :
     sa largeur ne peut plus chevaucher aucun des deux boutons, quelle que
     soit la longueur du texte (donc quelle que soit la langue). */
  display: none;
  position: fixed;
  bottom: 4.6rem; right: 1rem;
  background: var(--couleur-primaire-sombre);
  color: var(--couleur-accent-pale);
  font-size: 0.7rem;
  padding: 0.5rem 0.8rem;
  border-radius: 999px;
  z-index: 500;
}
#admin-badge span.admin-badge-action,
#admin-badge span.carte-cast-action {
  margin-left: 0.5rem;
  text-decoration: underline;
  cursor: pointer;
}
