/* Casa Colombani — styles communs (palette et typographies de la maquette v641) */
:root {
  --fond: #FFF6E9;
  --fond-menu: #F8E9D2;
  --bord: #F2D9B5;
  --texte: #3B2A20;
  --texte-doux: #6B5444;
  --accent: #B8472F;
  --accent-fonce: #8A3220;
  --vert: #2F4A37;
  --carte: #FFFFFF;
  --erreur: #9B2C1B;
  --podio: #B8472F;
  --moock: #4A6F52;
  --horn: #C9892B;
  --nadiedjoa: #3F6E8C;
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--fond); color: var(--texte);
  font: 16px/1.5 "Nunito Sans", system-ui, sans-serif;
}
h1, h2, h3 { font-family: Fraunces, Georgia, serif; line-height: 1.15; margin: 0 0 .4em; }
h1 { font-size: 2rem; } h2 { font-size: 1.4rem; margin-top: 1.6em; } h3 { font-size: 1.1rem; }
a { color: var(--accent); } a:hover { color: var(--accent-fonce); }
p { margin: 0 0 1em; }
.doux { color: var(--texte-doux); }
.petit { font-size: .875rem; }

/* Mise en page avec menu latéral */
.mise-en-page { display: flex; min-height: 100vh; }
.menu {
  width: 212px; flex: none; background: var(--fond-menu); border-right: 2px solid var(--bord);
  padding: 28px 14px; display: flex; flex-direction: column; gap: 26px;
  /* PC et tablette : menu fixe, toujours visible pendant le défilement de la page */
  position: sticky; top: 0; align-self: flex-start; height: 100vh; overflow-y: auto; box-sizing: border-box;
  /* le bloc de profil se place au niveau du haut de la carte « Prochains séjours » de l'accueil, sans sortir de l'écran */
  padding-bottom: max(16px, calc(100vh - 905px));
}
.marque { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--texte); padding: 0 6px; }
.marque .rond { width: 42px; height: 42px; border-radius: 50%; background: var(--accent); display: grid; place-items: center; }
.marque b { font: 700 20px/1.1 Fraunces, serif; display: block; color: var(--texte); }
.marque span { font-size: 13px; color: var(--texte-doux); }
.menu nav { display: flex; flex-direction: column; gap: 2px; font-weight: 600; font-size: 15px; }
.menu nav a, .menu nav span {
  padding: 10px 12px; border-radius: 14px; color: var(--texte); text-decoration: none;
}
.menu nav a:hover { background: #F2D9B5; }
.menu nav a[aria-current="page"] { background: var(--accent); color: #FFF6E9; }
.menu nav span { color: #A8927F; cursor: default; }
.menu nav small { font-weight: 400; font-size: 12px; margin-left: 6px; }
.moi { margin-top: auto; font-size: 14px; border-top: 2px solid var(--bord); padding-top: 16px; }
.moi b { display: block; }
.moi button { margin-top: 8px; }
.interrupteur { display: flex; align-items: center; gap: 10px; margin: 10px 0 0; font-weight: 700; font-size: 14px; cursor: pointer; }
.interrupteur input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.interrupteur .piste { position: relative; width: 40px; height: 22px; flex: none; border-radius: 99px; background: #CDB89C; transition: background .15s; }
.interrupteur .piste::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; transition: left .15s; }
.interrupteur input:checked + .piste { background: var(--accent); } .interrupteur input:checked + .piste::after { left: 21px; }
.interrupteur input:focus-visible + .piste { outline: 3px solid #F2B14C; outline-offset: 2px; } .interrupteur input:disabled + .piste { opacity: .5; }
.contenu { flex: 1; padding: 36px 44px 60px; max-width: 1100px; min-width: 0; }

/* Éléments de formulaire */
label { display: block; font-weight: 600; margin: 0 0 4px; }
input[type=text], input[type=email], input[type=password], input[type=tel], input[type=number], input[type=date], select {
  width: 100%; font: inherit; color: inherit; background: #fff;
  border: 2px solid var(--bord); border-radius: 12px; padding: 10px 12px;
}
input:focus, select:focus, button:focus-visible, a:focus-visible { outline: 3px solid #E6A98F; outline-offset: 1px; }
button, .bouton {
  font: inherit; font-weight: 700; cursor: pointer; border: 0; border-radius: 12px;
  padding: 10px 18px; background: var(--accent); color: #FFF6E9; text-decoration: none; display: inline-block;
}
button:hover { background: var(--accent-fonce); }
button.secondaire { background: transparent; color: var(--accent); border: 2px solid var(--accent); padding: 6px 12px; }
button.secondaire:hover { background: #F8E9D2; }
button:disabled { opacity: .5; cursor: wait; }
.champ { margin-bottom: 16px; }
.message { padding: 12px 16px; border-radius: 12px; margin: 0 0 16px; }
.message.erreur { background: #FBE3DD; color: var(--erreur); border: 2px solid #E9B3A6; }
.message.ok { background: #E4EFE6; color: var(--vert); border: 2px solid #B7D0BC; }
.message.alerte { background: #FFF0CC; color: #6A4A00; border: 2px solid #E8CB84; }

/* Connexion */
.centre { min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.carte { background: var(--carte); border: 2px solid var(--bord); border-radius: 22px; padding: 32px; width: 100%; max-width: 440px; }
.carte .marque { margin-bottom: 20px; padding: 0; }

/* Cartes famille */
.familles { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
.membre { background: var(--carte); border: 2px solid var(--bord); border-radius: 18px; padding: 16px; display: flex; gap: 14px; align-items: center; }
.initiales { width: 52px; height: 52px; border-radius: 50%; color: #fff; display: grid; place-items: center; font: 700 18px Fraunces, serif; flex: none; }
.membre b { display: block; }
.badge { display: inline-block; font-size: 12px; font-weight: 700; color: #fff; border-radius: 99px; padding: 1px 10px; }
.f-Podio { --c: var(--podio); } .f-Moock { --c: var(--moock); }
.f-Horn { --c: var(--horn); } .f-Nadiedjoa { --c: var(--nadiedjoa); }
.initiales, .badge { background: var(--c, #888); }

/* Tableaux */
.tableau-defile { overflow-x: auto; border: 2px solid var(--bord); border-radius: 18px; background: var(--carte); }
table { border-collapse: collapse; width: 100%; font-size: 14px; }
th, td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--bord); vertical-align: middle; }
th { background: var(--fond-menu); font-size: 12px; text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; }
tr:last-child td { border-bottom: 0; }
td input[type=text], td input[type=email], td input[type=tel], td select { padding: 6px 8px; min-width: 120px; }
td input[type=number] { width: 64px; padding: 6px 8px; min-width: 0; }
td.centre-col, th.centre-col { text-align: center; }
input[type=checkbox] { width: 20px; height: 20px; accent-color: var(--accent); }
tr.inactif td { opacity: .55; }
.fraction { display: inline-flex; align-items: center; gap: 4px; }
.formulaire-ajout { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; align-items: end; background: var(--carte); border: 2px solid var(--bord); border-radius: 18px; padding: 18px; }
dialog { border: 2px solid var(--bord); border-radius: 18px; background: var(--fond); color: var(--texte); max-width: 480px; }
dialog code { display: block; font-size: 1.4rem; background: #fff; border: 2px dashed var(--accent); border-radius: 12px; padding: 12px; text-align: center; margin: 12px 0; user-select: all; }

@media (min-width: 801px) {   /* menu plus étroit : la marque tient sur une ligne */
  .marque { gap: 10px; padding: 0 2px; } .marque .rond { width: 38px; height: 38px; flex: none; } .marque b { font-size: 17px; white-space: nowrap; }
}
@media (max-width: 800px) {
  .mise-en-page { flex-direction: column; }
  .menu { width: 100%; border-right: 0; border-bottom: 2px solid var(--bord); padding: 14px 16px; gap: 12px;
    position: static; align-self: auto; height: auto; overflow-y: visible; }
  .menu nav { flex-direction: row; overflow-x: auto; gap: 4px; padding-bottom: 4px; }
  .menu nav a, .menu nav span { white-space: nowrap; padding: 8px 12px; }
  .moi { margin-top: 0; padding-top: 10px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
  .moi button { margin-top: 0; }
  .moi:has(.interrupteur) { flex-wrap: wrap; } .moi:has(.interrupteur) > div { flex: 1 1 100%; } .interrupteur { margin: 0; }
  .contenu { padding: 22px 16px 48px; }
  h1 { font-size: 1.6rem; }
}

/* ---------- Page La famille (d'après la maquette) ---------- */
.surtitre { font-weight: 600; font-size: 14px; margin: 0; }
.chapeau { font-size: 17px; color: #5A4334; margin: 0 0 28px; }
.page-famille h2 { font: 600 26px Fraunces, serif; margin: 34px 0 14px; }
.page-famille h2.grand { font: 700 30px/1.15 Fraunces, serif; margin: 12px 0 10px; }
.page-famille h3 { font: 600 22px/1.25 Fraunces, serif; margin: 8px 0; }
.bandeau { background: #F6E3C8; border-radius: 28px; padding: 36px 44px; display: flex; align-items: center; gap: 40px; margin-bottom: 8px; }
.bandeau > div { flex: 1 1 0; } .bandeau p { max-width: 460px; color: #5A4334; margin: 0; }
.bandeau .arbre { flex: none; max-width: 100%; height: auto; }
.pastille, .etiquette { display: inline-block; font-weight: 700; font-size: 12px; letter-spacing: .07em; }
.pastille { background: #F2B14C; padding: 4px 12px; border-radius: 99px; }
.etiquette { color: #5A4334; }
.fiche { background: #fff; border: 2px solid var(--bord); border-radius: 24px; overflow: hidden; display: flex; flex-direction: column; }
.fiche .portrait { height: 170px; background: #F6E3C8; display: flex; align-items: center; justify-content: center; }
.fiche .portrait.haut { height: 200px; }
.membres-grille .fiche .portrait, .patriarche .fiche .portrait { height: auto; aspect-ratio: 1 / 1; }
.membres-grille .fiche .portrait img, .patriarche .fiche .portrait img { object-position: 50% 15%; }
.croix { font-weight: 400; color: var(--texte-doux); }
.fiche .portrait img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; display: block; }
.fiche.f-Moock .portrait { background: #C9DDCB; } .fiche.f-Horn .portrait { background: #F2D9B5; } .fiche.f-Nadiedjoa .portrait { background: #D8E4EC; }
.sans-photo { font: 700 40px Fraunces, serif; color: #6B5444; text-align: center; }
.sans-photo.texte { font: 600 13px "Nunito Sans", sans-serif; padding: 8px; background: #C9DDCB; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; box-sizing: border-box; }
.fiche .legende { padding: 14px 18px; display: flex; flex-direction: column; }
.fiche .legende b { font: 600 18px Fraunces, serif; }
.patriarche { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) minmax(0,2fr); gap: 16px; align-items: stretch; }
.histoire-courte { background: #F6E3C8; border-radius: 24px; padding: 28px 30px; display: flex; flex-direction: column; gap: 10px; }
.histoire-courte p { margin: 0; font-size: 15px; flex: 1 1 auto; } .histoire-courte a { text-decoration: none; font-size: 14px; }
.quatre, .membres-grille { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 16px; }
.carte-famille { background: #fff; border: 2px solid var(--bord); border-radius: 24px; padding: 22px; display: flex; flex-direction: column; gap: 6px; }
.carte-famille .entete { display: flex; align-items: center; gap: 10px; }
.carte-famille .entete b { font: 600 19px Fraunces, serif; }
.carte-famille .rond { width: 44px; height: 44px; border-radius: 50%; background: var(--c); color: #fff; font: 700 19px Fraunces, serif; display: grid; place-items: center; }
.carte-famille.f-Horn .rond { background: #F2B14C; color: #3B2A20; }
.fiche.ajout { border: 2px dashed #C9A77C; align-items: center; justify-content: center; gap: 8px; text-decoration: none; color: var(--accent); font-weight: 700; min-height: 240px; }
.fiche.ajout .plus { width: 44px; height: 44px; border-radius: 50%; background: #F6E3C8; display: grid; place-items: center; font-size: 24px; }
.recit { background: #fff; border: 2px solid var(--bord); border-radius: 24px; padding: 32px 36px; margin-top: 34px; scroll-margin-top: 16px; }
.recit-tete { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; flex-wrap: wrap; }
.recit-tete a { font-size: 14px; text-decoration: none; }
.texte-long { max-width: 820px; } .texte-long h3 { margin: 28px 0 8px; }
.texte-long p { margin: 0 0 12px; line-height: 1.65; }
.texte-long figure { margin: 20px 0 8px; padding: 0; }
.texte-long figure img { width: 100%; height: 300px; object-fit: cover; border-radius: 20px; display: block; }
.recit .texte-long figure img { height: auto; object-fit: contain; }
.texte-long figcaption { font-size: 13px; color: var(--texte-doux); margin-top: 8px; }
@media (max-width: 900px) {
  .bandeau { flex-direction: column; padding: 26px; } .patriarche { grid-template-columns: 1fr 1fr; } .histoire-courte { grid-column: 1 / -1; }
  .quatre, .membres-grille { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

/* ---------- Page d'accueil (d'après la maquette) ---------- */
.page-accueil h1 { margin: 4px 0 0; font-size: 40px; line-height: 1.1; }
.page-accueil h2 { font: 600 24px Fraunces, serif; margin: 0 0 12px; }
.accueil-tete { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; margin-bottom: 28px; }
.bouton-rond { background: var(--accent); color: #fff; font-weight: 700; padding: 13px 24px; border-radius: 99px; text-decoration: none; min-height: 44px; box-sizing: border-box; }
.bouton-rond.inactif { background: #D9C3A5; color: #5A4334; cursor: default; }
.bouton-rond small { font-weight: 600; margin-left: 6px; opacity: .8; }
.hero { position: relative; height: 400px; border-radius: 28px; overflow: hidden; background: #5A7A99; display: flex; align-items: center; margin-bottom: 28px; }
.hero img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 58%; }
.hero .voile { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(59,42,32,.78) 0%, rgba(59,42,32,.45) 45%, rgba(59,42,32,0) 80%); }
.hero-texte { position: relative; color: #fff; padding: 0 40px; max-width: 480px; }
.devise { font: 700 28px/1.15 Fraunces, serif; margin: 10px 0 0; }
.intro { background: #fff; border: 2px solid var(--bord); border-radius: 24px; padding: 26px 30px; margin-bottom: 28px; }
.intro p { margin: 0; font-size: 17px; line-height: 1.65; }
.accueil-colonnes { display: grid; grid-template-columns: minmax(0,3fr) minmax(0,2fr); gap: 20px; align-items: stretch; }
.liste-sejours, .mini { background: #fff; border: 2px solid var(--bord); border-radius: 24px; overflow: hidden; }
.liste-sejours .ligne { display: grid; grid-template-columns: 110px 1.1fr 1fr 44px; gap: 12px; padding: 12px 22px; }
.liste-sejours .entete { background: var(--fond-menu); font-size: 13px; color: var(--texte-doux); font-weight: 700; }
.droite { text-align: right; }
.vide { margin: 0; padding: 18px 22px; font-size: 14px; }
.mini { padding: 22px 24px; }
.pastille.verte { background: #C9DDCB; font-size: 12px; padding: 3px 12px; }
.pile { display: flex; flex-direction: column; gap: 16px; }
.mini .vide { padding: 12px 0 0; }
.mot { background: #5E8466; color: #fff; border-radius: 24px; padding: 24px; display: flex; flex-direction: column; gap: 8px; flex: 1 1 auto; }
.mot .etiquette { color: #fff; }
.mot-texte { font: 400 20px/1.3 Fraunces, serif; margin: 0; }
@media (max-width: 900px) { .accueil-colonnes { grid-template-columns: 1fr; } .hero { height: 300px; } .hero-texte { padding: 0 22px; } .page-accueil h1 { font-size: 30px; } }

/* ---------- Page Occupation (d'après la maquette) ---------- */
.page-occupation h1 { margin: 4px 0 18px; font-size: 40px; line-height: 1.1; }
.page-occupation h2 { font: 600 24px Fraunces, serif; margin: 0; }
.cal-barre { display: flex; justify-content: space-between; align-items: center; gap: 12px 24px; flex-wrap: wrap; margin-bottom: 12px; }
.cal-nav { display: flex; align-items: center; gap: 10px; } .cal-nav h2 { min-width: 190px; text-align: center; }
.cal-nav button { padding: 6px 14px; }
.legende-fam { display: flex; gap: 6px 16px; align-items: center; flex-wrap: wrap; }
.point { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 8px; vertical-align: baseline; }
.cal-defile { background: #fff; border: 2px solid var(--bord); border-radius: 24px; padding: 18px; overflow-x: auto; margin-bottom: 20px; }
.cal-grille { display: grid; min-width: 900px; align-items: center; grid-template-rows: 34px 54px 54px; }
.cal-nom { font-weight: 700; font-size: 14px; padding-right: 10px; grid-column: 1; }
.cal-zone { position: relative; }
.cal-zone .jour { font-size: 12px; color: var(--texte-doux); text-align: center; align-self: center; font-weight: 600; }
.cal-zone .jour.we { color: #A8917F; } .cal-zone .jour.auj { color: #fff; background: var(--accent); border-radius: 99px; padding: 1px 0; }
.cal-zone .case { border-left: 1px solid #F2E4CC; border-top: 1px solid #F2E4CC; background: #FFFBF4; }
.cal-zone .barre { z-index: 1; align-self: center; margin: 0 1px; height: 36px; border-radius: 10px; font-size: 13px; font-weight: 700; padding: 0 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: left; }
.cal-zone .barre:hover { filter: brightness(.92); }
.tableau-sejours { width: 100%; border-collapse: collapse; background: #fff; border: 2px solid var(--bord); border-radius: 18px; overflow: hidden; margin-bottom: 8px; }
.tableau-sejours th { font-size: 12px; }
.tableau-sejours button { padding: 4px 10px; font-size: 13px; }
.vide { padding: 8px 4px; }
.occ-colonnes { display: grid; grid-template-columns: minmax(0,3fr) minmax(0,2fr); gap: 20px; margin-top: 28px; align-items: start; }
.carte-form, .regles { background: #fff; border: 2px solid var(--bord); border-radius: 24px; padding: 26px 28px; }
.carte-form label { margin-top: 12px; } .carte-form .deux { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.carte-form .actions { display: flex; gap: 10px; flex-wrap: wrap; margin: 18px 0 8px; }
.carte-form #rappels { margin-top: 14px; } .carte-form #rappels .message { margin-bottom: 8px; }
button.danger { color: var(--erreur); border-color: var(--erreur); }
.regles { background: #F6E3C8; border-color: #F6E3C8; } .regles ul { margin: 14px 0 0; padding-left: 20px; display: grid; gap: 10px; }
@media (max-width: 900px) { .occ-colonnes { grid-template-columns: 1fr; } .page-occupation h1 { font-size: 30px; } }
[hidden] { display: none !important; }
.liste-sejours a.ligne { display: grid; grid-template-columns: 110px 1.1fr 1fr 44px; gap: 12px; padding: 14px 22px; border-top: 1px solid var(--bord); color: var(--texte); text-decoration: none; }
.liste-sejours a.ligne:hover { background: #FFF6E9; }
.mini-tete { display: flex; justify-content: space-between; align-items: center; }
.mini-titre { font: 400 18px/1.25 Fraunces, serif; margin: 8px 0 4px; }
.mini p.petit { margin: 0; }
.bouton-rond { display: inline-block; }

/* ---------- Carnet de séjours ---------- */
.page-carnet h1 { margin: 4px 0 6px; font-size: 40px; line-height: 1.1; }
.page-carnet h2 { font: 600 24px Fraunces, serif; margin: 0; }
.carnet-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 20px; }
textarea { width: 100%; box-sizing: border-box; font: inherit; border: 2px solid var(--bord); border-radius: 12px; padding: 10px 12px; background: #fff; color: var(--texte); resize: vertical; }
.p-liste { display: grid; gap: 12px; margin-top: 12px; }
.p-ligne { display: grid; grid-template-columns: 96px 1fr; gap: 14px; align-items: start; }
.p-ligne img { width: 96px; height: 96px; object-fit: cover; border-radius: 14px; background: #F6E3C8; }
.galerie-tete { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin: 30px 0 14px; flex-wrap: wrap; }
.galerie-tete label { display: flex; align-items: center; gap: 6px; margin: 0; font-weight: 600; }
.galerie { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 16px; }
.vignette { margin: 0; background: #fff; border: 2px solid var(--bord); border-radius: 24px; overflow: hidden; }
.vignette > button { display: block; width: 100%; padding: 0; border: 0; border-radius: 0; background: #F6E3C8; aspect-ratio: 4 / 3; cursor: zoom-in; }
.vignette img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vignette figcaption { padding: 12px 16px; display: flex; flex-direction: column; gap: 2px; }
.mots { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; align-items: start; }
.mots > button, .mots > .vide { grid-column: 1 / -1; justify-self: start; }
.mot-carte { background: #fff; border: 2px solid var(--bord); border-radius: 24px; padding: 20px 22px; display: flex; gap: 14px; }
.mot-carte .avatar { width: 44px; height: 44px; border-radius: 50%; color: #fff; font: 700 17px Fraunces, serif; display: grid; place-items: center; flex: none; }
.mot-carte p { margin: 6px 0 8px; font: 400 17px/1.45 Fraunces, serif; white-space: pre-wrap; overflow-wrap: anywhere; }
.mot-actions { display: flex; gap: 8px; flex-wrap: wrap; } .mot-actions button { padding: 4px 10px; font-size: 13px; }
.visionneuse { max-width: min(92vw, 900px); }
.visionneuse img { max-width: 100%; max-height: 70vh; display: block; margin: 0 auto 12px; border-radius: 14px; }
@media (max-width: 900px) { .galerie { grid-template-columns: repeat(2, minmax(0,1fr)); } .mots { grid-template-columns: 1fr; } .page-carnet h1 { font-size: 30px; } }
.p-ligne .deux { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.visionneuse .carte-form { padding: 14px 16px; border-radius: 16px; margin-bottom: 8px; }
.visionneuse { max-height: 94vh; overflow-y: auto; }
.visionneuse img { max-height: 52vh; }

/* ---------- Pages de contenu : Séjourner et édition ---------- */
.page-sejourner h1 { margin: 4px 0 6px; font-size: 40px; line-height: 1.1; }
.page-sejourner h2 { font: 600 26px Fraunces, serif; margin: 0 0 14px; }
.page-sejourner h3 { font: 600 20px Fraunces, serif; margin: 0 0 8px; }
.page-sejourner section { margin-bottom: 34px; scroll-margin-top: 16px; }
.bascule { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; background: #fff; border: 2px solid var(--bord); border-radius: 99px; padding: 8px 16px; cursor: pointer; margin: 0; }
.puces { display: flex; gap: 10px; flex-wrap: wrap; margin: 4px 0 26px; }
.puces a { background: #fff; border: 2px solid var(--bord); border-radius: 99px; padding: 6px 16px; font-weight: 700; text-decoration: none; }
.puces a:hover { background: #F6E3C8; }
.deux-cartes { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 34px; align-items: start; }
.carte-etapes { background: #F6E3C8; border-radius: 28px; padding: 28px 32px; margin: 0 !important; }
.carte-etapes.depart { background: #DDE9DF; }
.carte-etapes h2 { margin: 6px 0 14px; font-size: 24px; }
.etapes { list-style: none; padding: 0; margin: 0 0 10px; display: grid; gap: 10px; }
.etapes li { display: flex; gap: 12px; align-items: flex-start; }
.etapes .num { flex: none; width: 28px; height: 28px; border-radius: 50%; background: var(--accent); color: #fff; font-weight: 700; font-size: 14px; display: grid; place-items: center; }
.depart .num { background: #5E8466; }
.grille-infos { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; }
.info-carte { background: #fff; border: 2px solid var(--bord); border-radius: 24px; padding: 22px 26px; display: grid; gap: 14px; align-content: start; }
.info-carte img { width: 100%; max-height: 220px; object-fit: cover; border-radius: 16px; }
.texte-info p { margin: 0 0 10px; line-height: 1.55; } .texte-info ul { margin: 0 0 10px; padding-left: 20px; }
.regles-liste { display: grid; gap: 10px; }
.regle { background: #fff; border: 2px solid var(--bord); border-radius: 18px; padding: 14px 20px; display: flex; gap: 12px; align-items: flex-start; }
.regle .coche { flex: none; width: 24px; height: 24px; border-radius: 50%; background: #5E8466; color: #fff; display: grid; place-items: center; font-size: 14px; }
.urgences { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; margin-bottom: 14px; }
.urgence { background: var(--accent); color: #fff; border-radius: 20px; padding: 16px 20px; display: grid; gap: 2px; }
.urgence b { font: 700 28px Fraunces, serif; } .urgence a { color: #fff; text-decoration: none; }
.contacts-liste { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }
.contact { background: #fff; border: 2px solid var(--bord); border-radius: 18px; padding: 12px 20px; display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; align-items: center; }
.a-savoir { background: #FFF0CC; border: 2px solid #E8CB84; border-radius: 24px; padding: 22px 28px; margin-bottom: 34px; }
.a-savoir .etiquette { color: #6A4A00; }
.outils-edition { display: inline-flex; gap: 6px; flex-wrap: wrap; margin: 6px 0 0 8px; vertical-align: middle; }
.outils-edition button { padding: 2px 9px; font-size: 12px; }
.ajout-edition { margin-top: 10px; }
.en-edition .etapes li, .en-edition .info-carte, .en-edition .regle, .en-edition .contact { outline: 2px dashed #E6A98F; outline-offset: 4px; }
.dlg-edition { width: min(92vw, 640px); } .dlg-edition textarea { min-height: 160px; }
@media (max-width: 900px) { .deux-cartes, .grille-infos, .contacts-liste { grid-template-columns: 1fr; } .page-sejourner h1 { font-size: 30px; } }

/* ---------- FAQ ---------- */
.page-faq h1 { margin: 4px 0 6px; font-size: 40px; line-height: 1.1; }
.page-faq h2 { font: 600 24px Fraunces, serif; margin: 0 0 12px; }
.sr { position: absolute; left: -9999px; }
.page-faq input[type=search] { width: 100%; box-sizing: border-box; font: inherit; border: 2px solid var(--bord); border-radius: 99px; padding: 12px 20px; background: #fff; color: var(--texte); }
.page-faq .puces { margin: 14px 0 22px; }
.puce { background: #fff; color: var(--texte); border: 2px solid var(--bord); border-radius: 99px; padding: 6px 16px; font-weight: 700; }
.puce:hover { background: #F6E3C8; color: var(--texte); } .puce.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.faq-cat { margin-bottom: 30px; }
.faq-q { background: #fff; border: 2px solid var(--bord); border-radius: 18px; padding: 0 22px; margin-bottom: 10px; }
.faq-q summary { cursor: pointer; font-weight: 700; padding: 15px 0; list-style-position: outside; }
.faq-q[open] summary { color: var(--accent); }
.faq-q .texte-info { padding-bottom: 6px; }
.sans-reponse { background: #F6E3C8; border-radius: 28px; padding: 28px 34px; display: flex; justify-content: space-between; align-items: center; gap: 20px; flex-wrap: wrap; margin-bottom: 30px; }
.sans-reponse h2 { margin: 6px 0 6px; } .sans-reponse p { margin: 0; max-width: 560px; }
.question-recue { background: #fff; border: 2px solid var(--bord); border-radius: 18px; padding: 14px 20px; margin-bottom: 10px; display: flex; justify-content: space-between; gap: 14px; align-items: center; flex-wrap: wrap; }
@media (max-width: 900px) { .page-faq h1 { font-size: 30px; } }

/* ---------- La maison ---------- */
.page-maison h1 { margin: 4px 0 6px; font-size: 40px; line-height: 1.1; }
.page-maison h2 { font: 600 26px Fraunces, serif; margin: 0 0 14px; }
.page-maison h3 { font: 600 20px Fraunces, serif; margin: 0 0 10px; }
.page-maison section { margin-bottom: 36px; }
.case-retirer { display: flex; align-items: center; gap: 8px; font-weight: 400; margin-top: 8px; }
.carte-plan { background: #fff; border: 2px solid var(--bord); border-radius: 24px; padding: 18px; }
.plan-img { width: 100%; max-height: 520px; object-fit: contain; border-radius: 14px; background: #FBF3E4; display: block; }
.plan-vide, .plan-pdf { min-height: 220px; border-radius: 14px; background: #F6E3C8; display: grid; place-content: center; text-align: center; gap: 10px; font-weight: 600; color: var(--texte-doux); padding: 20px; }
.bouton-lien { display: inline-block; background: var(--accent); color: #fff; border-radius: 99px; padding: 10px 22px; text-decoration: none; font-weight: 700; }
.plan-pied { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 6px 0; flex-wrap: wrap; }
.plan-pied a { font-weight: 700; }
.deux-colonnes { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; }
.carte-bref, .carte-appt { background: #fff; border: 2px solid var(--bord); border-radius: 24px; padding: 24px 28px; }
.carte-communes { background: #F6E3C8; border-radius: 24px; padding: 24px 28px; }
.liste-valeurs { margin: 0 0 14px; display: grid; gap: 4px; }
.liste-valeurs > div { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; border-bottom: 1px solid var(--bord); padding: 8px 0; align-items: center; }
.liste-valeurs dt { color: var(--texte-doux); } .liste-valeurs dd { margin: 0; font-weight: 700; }
.capacite { font-size: 18px; margin: 0 0 14px; }
.equipements { list-style: none; padding: 0; margin: 8px 0 0; display: flex; flex-wrap: wrap; gap: 8px; }
.equipements li { background: #F6E3C8; border-radius: 99px; padding: 4px 14px; font-size: 14px; font-weight: 600; }
.carte-appt .etiquette { display: block; margin: 8px 0 4px; }
.groupe { margin: 22px 0 12px !important; }
.pieces { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; }
.piece { background: #fff; border: 2px solid var(--bord); border-radius: 24px; overflow: hidden; display: grid; grid-template-columns: 200px 1fr; }
.piece-photo { background: #F6E3C8; display: grid; place-items: center; min-height: 150px; color: var(--texte-doux); font-weight: 600; font-size: 13px; text-align: center; }
.piece-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.piece-texte { padding: 16px 20px; } .piece-texte .texte-info p { margin: 6px 0 0; font-size: 15px; }
.piece-tete { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; }
.piece-tete b { font: 600 18px Fraunces, serif; } .etiquette.tag { font-size: 10px; background: #F6E3C8; border-radius: 99px; padding: 2px 10px; }
/* Haut de page : plan à gauche, « en bref » et parties communes à droite */
.haut-maison { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 20px; align-items: stretch; }
.haut-maison .carte-plan { padding: 28px; display: flex; flex-direction: column; }
.haut-maison .carte-plan .plan-pied { margin-top: auto; }
.haut-maison .carte-plan > .plan-vide, .haut-maison .carte-plan > .plan-pdf { flex: 1; }
.colonne-bref .carte-bref { flex: 1; } .colonne-bref { display: flex; flex-direction: column; gap: 16px; }
.plan-tete { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
.plan-tete h2 { margin: 0; font-size: 24px; white-space: nowrap; }
.bascule-plan { display: flex; background: #F6E3C8; border-radius: 99px; padding: 4px; font-size: 13px; font-weight: 700; }
.bascule-plan button { background: transparent; color: var(--texte-doux); border: 0; border-radius: 99px; padding: 6px 11px; white-space: nowrap; }
.bascule-plan button.active { background: #fff; color: var(--texte); }
.haut-maison .plan-pied { padding: 14px 0 0; }
@media (max-width: 900px) { .haut-maison { grid-template-columns: 1fr; } .haut-maison .carte-plan { padding: 18px; } }
@media (max-width: 900px) { .deux-colonnes, .pieces { grid-template-columns: 1fr; } .piece { grid-template-columns: 1fr; } .piece-photo { min-height: 180px; } .page-maison h1 { font-size: 30px; } }

/* ---------- Histoire ---------- */
.page-histoire h1 { margin: 4px 0 6px; font-size: 40px; line-height: 1.1; }
.page-histoire #corps { display: flex; flex-direction: column; gap: 28px; margin-top: 22px; }
.carte-histoire { background: #fff; border: 2px solid var(--bord); border-radius: 28px; padding: 32px 34px 14px; }
.carte-histoire h2 { font: 700 30px/1.2 Fraunces, serif; margin: 0 0 18px; }
.intro-histoire { padding: 26px 30px; font-size: 17px; line-height: 1.65; } .intro-histoire p { margin: 0 0 12px; } .intro-histoire p:last-of-type { margin-bottom: 0; }
.page-histoire .carte-histoire:has(.frise) { padding-bottom: 28px; } .carte-histoire h2:has(+ .sous-titre) { margin-bottom: 2px; }
.sous-titre { margin: 0; font-size: 15px; }
.legende-frise { display: flex; gap: 8px 14px; flex-wrap: wrap; align-items: center; margin: 12px 0 22px; }
.cat { display: inline-flex; align-items: center; gap: 8px; background: transparent; color: var(--texte-doux); border: 2px solid transparent; border-radius: 99px; padding: 4px 12px; font-size: 14px; font-weight: 600; }
.cat:hover { background: #F6E3C8; color: var(--texte); } .cat.active { border-color: var(--bord); background: #FFF6E9; color: var(--texte); }
.cat .rond, .etape .rond { width: 14px; height: 14px; border-radius: 50%; display: block; flex: none; }
.cat-famille .rond { background: #B8472F; } .cat-maison .rond { background: #4A6F52; } .cat-successions .rond { background: #3F6E8C; }
.frise { display: flex; flex-direction: column; }
.etape { display: flex; gap: 18px; padding-bottom: 26px; } .etape:last-child { padding-bottom: 0; }
.rail { display: flex; flex-direction: column; align-items: center; width: 22px; flex: none; }
.etape .rond { width: 22px; height: 22px; } .trait { width: 4px; flex: 1 1 0; background: var(--bord); border-radius: 2px; margin-top: 6px; }
.etape-texte { min-width: 0; } .periode { font-weight: 700; font-size: 14px; }
.etape.cat-famille .periode { color: #B8472F; } .etape.cat-maison .periode { color: #4A6F52; } .etape.cat-successions .periode { color: #3F6E8C; }
.etape h3 { font: 600 22px/1.3 Fraunces, serif; margin: 0; } .etape .texte-info { font-size: 16px; line-height: 1.55; color: var(--texte-doux); } .etape .texte-info p { margin: 4px 0 0; }
.archives { column-count: 2; column-gap: 20px; }
.archives figure { margin: 0 0 20px; break-inside: avoid; background: #FFF6E9; border: 2px solid var(--bord); border-radius: 20px; overflow: hidden; }
.archives img { display: block; width: 100%; height: auto; } .archives figcaption { padding: 12px 16px; font-size: 15px; font-weight: 600; color: var(--texte-doux); }
.carte-histoire > .ajout-edition { margin: 4px 0 18px; }
@media (max-width: 900px) { .page-histoire h1 { font-size: 30px; } .carte-histoire { padding: 22px 18px 10px; } .archives { column-count: 1; } }

/* Accueil / La famille : barre d'en-tête avec interrupteur d'édition */
.actions-tete { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }

/* ---- Page Propriété (maquette) ---- */
.page-propriete .accueil-tete { margin-bottom: 8px; }
.carte-schema, .carte-membres, .carte-doc { background: #fff; border: 2px solid var(--bord); border-radius: 24px; }
.carte-schema { padding: 28px 30px 24px; margin-top: 26px; display: flex; flex-direction: column; gap: 26px; }
.legende-schema { display: flex; flex-wrap: wrap; gap: 12px 48px; }
.leg-item { display: flex; align-items: center; gap: 12px; font-size: 17px; color: #5A4334; }
.leg-pastille { width: 20px; height: 20px; border-radius: 5px; border: 1px solid; box-sizing: border-box; flex: none; }
.c-rose { --fond: #FBE9EF; --trait: #A8365F; --texte-lot: #7A1F42; } .c-violet { --fond: #EDEBFC; --trait: #5148C0; --texte-lot: #3B3396; }
.c-vert { --fond: #E0F4EC; --trait: #1E7A5C; --texte-lot: #0C4D38; } .c-orange { --fond: #FAEDE6; --trait: #A5461F; --texte-lot: #6E2A0E; }
.leg-pastille { background: var(--fond); border-color: var(--trait); }
.maison-schema { display: flex; flex-direction: column; }
.toit-ligne, .etage, .sol-ligne { display: flex; align-items: stretch; }
.etage-nom { width: 130px; flex: none; display: flex; flex-direction: column; justify-content: center; font-size: 19px; font-weight: 600; color: #1F1A17; line-height: 1.25; }
.toit-ligne svg { flex: 1 1 0; min-width: 0; height: 84px; display: block; margin: 0 -8px; width: calc(100% + 16px); }
.etage-lots { flex: 1 1 0; min-width: 0; border-top: 1px solid #D9D9D6; border-left: 1px solid #D9D9D6; border-right: 1px solid #D9D9D6; padding: 13px 12px; display: flex; gap: 10px; box-sizing: border-box; flex-wrap: wrap; }
.etage:first-of-type .etage-lots { border-top: 0; }
.lot { flex: 1 1 0; min-width: 130px; min-height: 92px; box-sizing: border-box; background: var(--fond); border: 1px solid var(--trait); border-radius: 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 6px 10px; color: var(--texte-lot); }
.lot-nom { font-size: 19px; font-weight: 700; line-height: 1.25; } .lot-num { font-size: 17px; font-weight: 700; margin-bottom: 2px; }
.lot .outils-edition { margin: 6px 0 0; justify-content: center; }
.sol { flex: 1 1 0; border-top: 2px solid #BDBDB8; margin: 0 -12px; }
.prop-grille { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 20px; align-items: start; margin-top: 20px; }
.colonne-docs { display: flex; flex-direction: column; gap: 20px; }
.carte-membres { overflow: hidden; }
.prop-titre { padding: 24px 24px 14px; } .prop-titre h2, .carte-doc h2 { font: 600 26px Fraunces, serif; margin: 0; }
.prop-ligne { display: grid; grid-template-columns: 1.6fr .7fr; gap: 12px; padding: 11px 24px; border-top: 1px solid var(--bord); align-items: center; font-size: 15px; }
.prop-entete { background: #F8E9D2; font-size: 13px; color: #6B5444; font-weight: 700; border-top: 0; padding: 10px 24px; }
.prop-nom { display: flex; align-items: center; gap: 10px; font-weight: 700; } .prop-point { width: 12px; height: 12px; border-radius: 50%; flex: none; }
.prop-part { text-align: right; font-weight: 600; } .prop-entete .prop-part { font-weight: 700; }
.prop-total { border-top: 2px solid var(--bord); background: #FFF6E9; padding: 13px 24px; font-weight: 700; } .prop-total .prop-part { font-weight: 700; }
.prop-note { margin: 0; padding: 14px 24px; font-size: 13px; color: #6B5444; border-top: 1px solid var(--bord); }
.carte-doc { padding: 24px; } .carte-doc h2 { margin-bottom: 12px; }
.doc-liste { display: flex; flex-direction: column; }
.doc-rang { border-bottom: 1px solid var(--bord); } .doc-rang:last-child { border-bottom: 0; }
.doc-ligne { display: flex; align-items: center; gap: 14px; padding: 11px 0; text-decoration: none; color: var(--texte); min-height: 44px; }
.doc-badge { width: 38px; height: 38px; border-radius: 10px; background: #F6E3C8; color: #B8472F; font-size: 11px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex: none; }
.doc-titre { flex: 1 1 0; min-width: 0; font-weight: 600; font-size: 15px; } .doc-detail { display: block; font-weight: 400; font-size: 12px; color: #6B5444; }
.doc-ouvrir { color: #B8472F; font-weight: 700; font-size: 13px; } .doc-ouvrir.doux { color: #6B5444; font-weight: 400; }
.doc-ligne.vide .doc-badge { color: #6B5444; }
.doc-rang .outils-edition { margin: 0 0 10px 52px; }
.doc-ajout { display: flex; align-items: center; gap: 12px; width: 100%; margin-top: 14px; padding: 12px 16px; border: 2px dashed #C9A77C; border-radius: 16px; background: transparent; color: #B8472F; font-weight: 700; font-size: 15px; min-height: 44px; box-sizing: border-box; cursor: pointer; text-align: left; }
.doc-ajout .plus { width: 32px; height: 32px; border-radius: 50%; background: #F6E3C8; display: flex; align-items: center; justify-content: center; font-size: 20px; flex: none; }
.doc-ajout .aide { margin-left: auto; font-weight: 400; font-size: 12px; color: #6B5444; }
.en-edition .lot, .en-edition .doc-rang, .en-edition .leg-item { outline: 2px dashed #E6A98F; outline-offset: 3px; }
@media (max-width: 900px) {
  .prop-grille { grid-template-columns: minmax(0, 1fr); }
  .etage-nom { width: 84px; font-size: 15px; } .carte-schema { padding: 20px 14px; } .lot-nom { font-size: 16px; }
}
