body {
    font-family: Arial, sans-serif;
    background-color: #f0f8ff; /* Bleu glacier léger */
    color: #333;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
}

.conteneur {
    background-color: white;
    padding: 40px;
    border-radius: 10px;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    text-align: center;
}

h1 {
    color: #2c3e50; /* Bleu foncé */
    font-size: 2em;
    margin-bottom: 10px;
}

p {
    color: #7f8c8d; /* Gris */
}

/* Style spécifique pour le bouton Google */
.g_id_signin {
    margin-top: 25px;
}

/* Style du header */
/* Style de l'en-tête pour être adaptable sur tous les écrans */
.entete {
    background-color: #ffffff;
    color: #2c3e50;
    padding: 10px 20px; /* Espace intérieur pour l'en-tête */
    display: flex;
    justify-content: space-between;
    align-items: center;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 1000;
    box-sizing: border-box; /* S'assure que le padding ne s'ajoute pas à la largeur */
}

.logo-app {
    font-size: 1.5em;
    font-weight: bold;
    margin-right: 15px; /* Ajoute un petit espace entre le logo et le reste */
}

.menu-navigation {
    display: flex;
    align-items: center;
}

.menu-navigation .menu-lien {
    color: #34495e;
    text-decoration: none;
    padding: 8px 10px; /* Réduction du padding pour les petits écrans */
    border-radius: 5px;
    transition: background-color 0.3s;
    font-size: 0.9em;
}

.menu-navigation .menu-lien:hover {
    background-color: #ecf0f1;
}

/* Styles pour les écrans plus petits (mobile) */
@media (max-width: 768px) {
    .menu-burger {
        display: flex; /* Affiche le menu burger */
    }

    .menu-navigation {
        display: none; /* Cache le menu par défaut */
        flex-direction: column;
        position: absolute;
        top: 60px;
        right: 0; /* Alignement du menu à droite */
        width: 70%; /* Le menu prend 70% de la largeur de l'écran */
        background-color: #ffffff;
        box-shadow: 0 4px 8px rgba(0,0,0,0.1);
        z-index: 999;
    }

    .menu-navigation.active {
        display: flex; /* Affiche le menu quand il est actif */
    }

    .menu-navigation .menu-lien {
        padding: 15px 20px;
        border-bottom: 1px solid #ecf0f1;
        text-align: left;
    }

    .entete {
        justify-content: space-between;
    }
}
/* Style du pied de page */
.pied-de-page {
    background-color: #2c3e50;
    color: #ffffff;
    padding: 10px 0;
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    z-index: 1000;
}

.navigation-rapide {
    display: flex;
    justify-content: space-around;
    align-items: center;
    text-align: center;
}

.navigation-rapide .icone-lien {
    color: #ffffff;
    text-decoration: none;
    font-size: 0.9em;
}

/* Styles pour le menu burger */
.menu-burger {
    width: 30px;
    height: 20px;
    position: relative;
    cursor: pointer;
    display: none; /* Caché par défaut, affiché sur petit écran */
    flex-direction: column;
    justify-content: space-between;
}

.menu-burger span {
    display: block;
    height: 3px;
    width: 100%;
    background: #2c3e50; /* Couleur des barres du burger */
    border-radius: 9px;
    opacity: 1;
    left: 0;
    transform: rotate(0deg);
    transition: .25s ease-in-out;
}

/* Transformation en croix */
.menu-burger.active span:nth-child(1) {
    transform: translateY(8px) rotate(45deg);
}
.menu-burger.active span:nth-child(2) {
    opacity: 0;
}
.menu-burger.active span:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg);
}

/* Menu de navigation (caché par défaut sur mobile) */
.menu-navigation {
    display: flex; /* Par défaut pour les grands écrans */
}

/* Styles pour les écrans plus petits (mobile) */
@media (max-width: 768px) {
    .menu-burger {
        display: flex; /* Affiché sur mobile */
    }

    .menu-navigation {
        display: none; /* Caché par défaut sur mobile */
        flex-direction: column;
        position: absolute;
        top: 60px; /* Hauteur de l'en-tête */
        left: 0;
        width: 100%;
        background-color: #ffffff; /* Fond du menu ouvert */
        box-shadow: 0 4px 8px rgba(0,0,0,0.1);
        z-index: 999;
    }

    .menu-navigation.active {
        display: flex; /* Affiché quand le menu est actif */
    }

    .menu-navigation .menu-lien {
        padding: 15px 20px;
        border-bottom: 1px solid #ecf0f1;
        text-align: left;
    }

    .entete {
        justify-content: space-between; /* Pour espacer le logo et le burger */
    }
}

/* === APP (pages applicatives) : overrides non destructifs === */
body.app {
    display: block;            /* annule le centrage flex du body */
    align-items: initial;
    justify-content: initial;
    height: auto;              /* laisse la page grandir */
  }
  
    /* Mobile-first layout utilitaires (sans largeur fixe) */
  .wrap { width:100%; max-width:100%; margin:0 auto; padding:12px; }
  .grid { display:grid; grid-template-columns:1fr; gap:12px; }
  @media (min-width:768px){ .grid { grid-template-columns:1fr 1fr; } }
  
  .card { background:#fff; border:1px solid #e5e7eb; border-radius:12px; padding:12px; width:100%; }
  
  /* Formulaires empilés sur mobile, en ligne dès 640px */
  .row { display:flex; flex-direction:column; gap:8px; margin:.5rem 0; }
  .row > label { width:100%; }
  @media (min-width:640px){
    .row { flex-direction:row; align-items:center; }
    .row > label { width:180px; flex:0 0 auto; }
    .row input, .row select, .row textarea { flex:1 1 auto; }
  }
  
  /* Tables : pas de débordement sur mobile */
  .table-wrap { display:block; width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  table { width:100%; border-collapse:collapse; table-layout:fixed; } /* fixed => casse les longues chaînes */
  th,td { padding:.6rem; border-bottom:1px solid #eee; vertical-align:top; word-wrap:break-word; overflow-wrap:anywhere; }


/* Hauteurs fixes connues */
:root{
    --header-h: 64px;   /* ← mets ici la hauteur exacte de ton header */
    --footer-h: 60px;   /* ← mets ici la hauteur exacte de ton footer */
  }
  
  /* Les pages applicatives (le login garde son body flex) */
  body.app{
    display: block;   /* évite le centrage flex du body */
    height: auto;
  }
  
  /* Header / Footer restent fixed si tu veux qu'ils disparaissent au scroll */
  .entete{
    position: fixed;
    top: 0; left: 0; right: 0;
    height: var(--header-h);
  }
  .pied-de-page{
    position: fixed;
    bottom: 0; left: 0; right: 0;
    height: var(--footer-h);
  }
  
  /* Le contenu commence sous le header et finit au-dessus du footer */
    .main-content{
        padding-top: var(--header-h);
        padding-bottom: calc(var(--footer-h) + 20px); /* 20px de marge de sécurité pour le bouton */
        min-height: 100vh;              /* pour occuper la hauteur d’écran */
        box-sizing: border-box;         /* le padding compte dans la hauteur */
      }
      
    /* (optionnel) garantir au moins la hauteur d’écran utile :
       min-height: calc(100vh - var(--header-h) - var(--footer-h)); */
  

   /* === MOBILE FIRST, 100% fluide, sans largeur fixe === */
html { box-sizing: border-box; }
*, *::before, *::after { box-sizing: inherit; }
html, body { height: 100%; }
body { margin: 0; padding: 0; max-width: 100%; overflow-x: hidden; font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; }

/* conteneur pleine largeur */
.wrap { width: 100%; max-width: 100%; margin: 0; padding: clamp(12px, 4vw, 20px); }

/* grille: 1 colonne par défaut, 2 colonnes seulement ≥768px */
.grid { display: grid; grid-template-columns: 1fr; gap: clamp(12px, 3vw, 20px); }
.grid > * { min-width: 0; }           /* empêche un enfant d'élargir la grille */
@media (min-width: 768px) { .grid { grid-template-columns: 1fr 1fr; } }

/* cartes / blocs */
.card { background:#fff; border:1px solid #e5e7eb; border-radius:12px; padding: clamp(12px, 3.5vw, 20px); width:100%; }
.card * { min-width: 0; }
.muted { color:#666; }

/* lignes de formulaire: empilées sur mobile, en ligne dès 640px */
.row { display:flex; flex-direction: column; gap:8px; margin:.5rem 0; }
.row > label { width: 100%; }
.row input, .row select, .row button, .row .btn { width:100%; max-width:100%; }
@media (min-width: 640px){
  .row { flex-direction: row; align-items: center; }
  .row > label { width: 180px; flex: 0 0 auto; }
  .row input, .row select { flex: 1 1 auto; }
}

/* champs & boutons */
input, select { font: inherit; padding:.55rem .7rem; border:1px solid #d1d5db; border-radius:10px; background:#fff; }
.btn { display:inline-flex; justify-content:center; align-items:center; padding:.55rem .9rem; border-radius:10px; border:1px solid #ccc; background:#f7f7f7; cursor:pointer; }
.btn.primary { background:#0b5cff; color:#fff; border-color:#0b5cff; }

/* table: scroll horizontal interne sur petits écrans + casse des longues chaînes */
.table-wrap { display:block; width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }
table { width:100%; border-collapse:collapse; min-width: 600px; } /* min-width => scroll dans .table-wrap */
th, td { padding:.6rem; border-bottom:1px solid #eee; vertical-align: top; }
.break { overflow-wrap:anywhere; word-break: break-word; }

/* médias */
img, svg, video { max-width:100%; height:auto; display:block; }
 

/* Logo image : même taille visuelle que .fa-2x ≈ 2em (~32px) */
.logo-app img{
    height: 2em;      /* ~32px si font-size = 16px */
    width: auto;
    display: block;
  }
  
  /* (optionnel) alignement vertical du bloc dans le bandeau */
  .entete .logo-app{
    display: flex;
    align-items: center;
  }
  

/* Fond d'écran global (toutes les pages) */
html, body { min-height: 100%; }

body{
  /* couleur de fond de secours */
  background-color: #f8fafc;

  /* image de fond */
  background-image: url('/assets/tarentaise.png');
  background-repeat: no-repeat;
  background-position: center center;
  background-size: cover;

  /* effet fixe (parallax léger). Si tu préfères, supprime cette ligne. */
  background-attachment: fixed;
}

/* Option: sur mobile, certains navigateurs gèrent mal 'fixed' 
@media (max-width: 768px){
  body{ background-attachment: scroll; }
}*/

/* bouton d'action flottant (coin bas droit) */
.fab {
    position: fixed;
    right: 16px;
    bottom: calc(var(--footer-h, 56px) + 16px);
    width: 56px; height: 56px; border-radius: 50%;
    display: inline-flex; align-items:center; justify-content:center;
    background: #0b5cff; color:#fff; border: none; cursor: pointer;
    box-shadow: 0 6px 20px rgba(0,0,0,.15);
    font-size: 28px; line-height: 1;
  }
  .fab:hover { filter: brightness(0.95); }
  .fab:focus { outline: 3px solid #0b5cff55; }
  
  body.app {
  display: block; /* enlève flex et centrage */
  min-height: 100vh;
  padding-top: var(--header-h);
  padding-bottom: var(--footer-h);
  box-sizing: border-box;
}

  