/* =========================================================
   Manoir Sologne — feuille de style commune
   La Luzière & La Papinière · La Ferté-Saint-Aubin
   ========================================================= */

/* ---------- Polices hébergées sur le site (licence SIL OFL, voir assets/fonts) ---------- */
@font-face { font-family: "Brygada 1918"; font-style: normal; font-weight: 400 700; font-display: swap; src: url("../fonts/brygada-1918-latin-wght-normal.woff2") format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Brygada 1918"; font-style: normal; font-weight: 400 700; font-display: swap; src: url("../fonts/brygada-1918-latin-ext-wght-normal.woff2") format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Hanken Grotesk"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/hanken-grotesk-latin-wght-normal.woff2") format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Hanken Grotesk"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/hanken-grotesk-latin-ext-wght-normal.woff2") format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }

/* ---------- Couleurs, typographies, mesures ---------- */
:root {
  /* Sologne : brume sur les étangs, eau sombre, bruyère */
  --brume: #E6EAE3;
  --ivoire: #F7F8F4;
  --etang: #1C3936;
  --etang-2: #264A46;
  --encre: #162120;
  --encre-2: #46524F;
  --bruyere: #7A4568;
  --bruyere-fonce: #5E3350;
  --mousse: #66714D;
  --ligne: rgba(22, 33, 32, .14);

  /* Soirée de Noël : reprend l'affiche */
  --nuit: #0D1828;
  --nuit-2: #15243A;
  --or: #D4B06A;
  --or-clair: #EBD9A8;
  --neige: #F2EFE6;
  --neige-2: #B9C2BF;

  --f-display: "Brygada 1918", Georgia, "Times New Roman", serif;
  --f-texte: "Hanken Grotesk", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --g-titre: 600;   /* graisse des titres : 600 = trait robuste, très lisible */

  --gouttiere: clamp(1rem, 4vw, 3rem);
  --max: 76rem;
  --mesure: 38rem;
  --rayon: 6px;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--brume);
  color: var(--encre);
  font: 400 1.0625rem/1.65 var(--f-texte);
  text-rendering: optimizeLegibility;
}
img, iframe { max-width: 100%; display: block; }
a { color: var(--bruyere-fonce); text-underline-offset: .18em; }
a:hover { color: var(--bruyere); }
:focus-visible { outline: 3px solid var(--bruyere); outline-offset: 3px; border-radius: 2px; }

.evitement {
  position: absolute; left: -999px; top: .5rem; z-index: 100;
  background: var(--ivoire); color: var(--encre); padding: .6rem 1rem; border-radius: var(--rayon);
}
.evitement:focus { left: .5rem; }

.wrap { max-width: var(--max); margin-inline: auto; padding-inline: var(--gouttiere); }

h1, h2 {
  font-family: var(--f-display);
  font-weight: var(--g-titre);
  line-height: 1.06;
  letter-spacing: -.005em;
  margin: 0 0 .45em;
  text-wrap: balance;
}
h1 { font-size: clamp(2.5rem, 5.8vw, 5rem); }
h2 { font-size: clamp(1.95rem, 4vw, 3.1rem); }
h3 { font: 600 1.2rem/1.3 var(--f-texte); margin: 0 0 .4em; }
p { margin: 0 0 1em; max-width: var(--mesure); }
.chapeau { font-size: clamp(1.15rem, 1.7vw, 1.38rem); line-height: 1.55; color: var(--encre-2); }

/* ---------- Boutons ---------- */
.boutons { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.75rem; }
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5em;
  padding: .9em 1.45em; border-radius: 999px;
  font: 600 1rem/1 var(--f-texte); text-decoration: none;
  border: 1.5px solid transparent; cursor: pointer;
  transition: background-color .2s, color .2s, border-color .2s;
}
.btn-plein { background: var(--bruyere); color: var(--ivoire); }
.btn-plein:hover { background: var(--bruyere-fonce); color: var(--ivoire); }
.btn-ligne { background: transparent; color: var(--encre); border-color: currentColor; }
.btn-ligne:hover { background: var(--encre); color: var(--ivoire); border-color: var(--encre); }
.btn-clair { background: transparent; color: var(--ivoire); border-color: rgba(247, 248, 244, .6); }
.btn-clair:hover { background: var(--ivoire); color: var(--etang); border-color: var(--ivoire); }
.btn[aria-disabled="true"] { cursor: default; pointer-events: none; background: transparent; border-style: dashed; border-color: currentColor; color: var(--encre-2); }
.theme-nuit .btn[aria-disabled="true"], .rendezvous .btn[aria-disabled="true"] { color: var(--or-clair); }

/* ---------- Bandeau d'annonce (soirée) ---------- */
.annonce { background: var(--nuit); color: var(--neige); font-size: .95rem; }
.annonce .wrap { display: flex; flex-wrap: wrap; gap: .25rem 1rem; align-items: center; justify-content: center; padding-block: .6rem; text-align: center; }
.annonce a { color: var(--or-clair); font-weight: 600; }
.annonce a:hover { color: var(--or); }

/* ---------- En-tête ---------- */
.entete {
  position: sticky; top: 0; z-index: 50;
  background: rgba(247, 248, 244, .94);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--ligne);
}
.entete .wrap { position: relative; display: flex; align-items: center; gap: 1.5rem; min-height: 4.6rem; }
.marque { color: var(--encre); text-decoration: none; line-height: 1; }
.marque:hover { color: var(--encre); }
.marque-nom { display: block; font-family: var(--f-display); font-size: 1.55rem; font-weight: 600; letter-spacing: -.01em; }
.marque-lieu { display: block; margin-top: .3rem; font-size: .8rem; color: var(--encre-2); }

.nav { margin-left: auto; display: flex; align-items: center; gap: 1.35rem; }
.nav a { color: var(--encre); text-decoration: none; font-weight: 500; font-size: .98rem; padding: .35rem 0; border-bottom: 2px solid transparent; }
.nav a:hover { border-bottom-color: var(--ligne); color: var(--encre); }
.nav a[aria-current="page"] { border-bottom-color: var(--bruyere); }
.nav .nav-soiree { background: var(--nuit); color: var(--or-clair); padding: .45rem .9rem; border-radius: 999px; border-bottom: 0; }
.nav .nav-soiree:hover { background: var(--nuit-2); color: var(--or); }
.nav .nav-devis { padding: .6rem 1.1rem; border: 1.5px solid var(--encre); border-radius: 999px; }
.nav .nav-devis:hover { background: var(--encre); color: var(--ivoire); border-color: var(--encre); }

.nav-bouton {
  display: none; margin-left: auto;
  align-items: center; gap: .5rem;
  background: none; border: 1.5px solid var(--encre); color: var(--encre);
  border-radius: 999px; padding: .5rem .95rem; font: 600 .95rem/1 var(--f-texte); cursor: pointer;
}
.nav-bouton-icone { width: 1.1rem; height: .75rem; position: relative; }
.nav-bouton-icone::before, .nav-bouton-icone::after {
  content: ""; position: absolute; left: 0; right: 0; height: 2px; background: currentColor; transition: transform .2s, top .2s;
}
.nav-bouton-icone::before { top: 0; }
.nav-bouton-icone::after { top: calc(100% - 2px); }
.nav-ouverte .nav-bouton-icone::before { top: calc(50% - 1px); transform: rotate(45deg); }
.nav-ouverte .nav-bouton-icone::after { top: calc(50% - 1px); transform: rotate(-45deg); }

@media (max-width: 1100px) {
  .nav-bouton { display: inline-flex; }
  .nav {
    position: absolute; top: 100%; left: 0; right: 0;
    flex-direction: column; align-items: flex-start; gap: .4rem;
    background: var(--ivoire); border-bottom: 1px solid var(--ligne);
    padding: 1rem var(--gouttiere) 1.75rem;
    display: none;
  }
  .nav-ouverte .nav { display: flex; }
  .nav a { font-size: 1.1rem; padding: .55rem 0; }
  .nav .nav-soiree, .nav .nav-devis { margin-top: .5rem; }
}

/* ---------- Sections ---------- */
.section { padding-block: clamp(3.5rem, 8vw, 7rem); }
.section-ivoire { background: var(--ivoire); }
.section-etang { background: var(--etang); color: var(--ivoire); }
.section-etang .chapeau, .section-etang p { color: rgba(247, 248, 244, .86); }
.section-etang a { color: var(--or-clair); }
.entete-section { margin-bottom: clamp(2rem, 4vw, 3.25rem); max-width: 46rem; }

.deux-colonnes { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(2rem, 6vw, 6rem); align-items: start; }
@media (max-width: 860px) { .deux-colonnes { grid-template-columns: 1fr; } }

/* ---------- Photos (avec emplacement si la photo manque) ---------- */
.photo { position: relative; margin: 0; overflow: hidden; background: var(--etang-2); }
.photo img { width: 100%; height: 100%; object-fit: cover; }
.photo.is-missing {
  background:
    radial-gradient(120% 90% at 15% 0%, rgba(247, 248, 244, .09), transparent 60%),
    repeating-linear-gradient(98deg, rgba(247, 248, 244, .035) 0 2px, transparent 2px 16px),
    linear-gradient(170deg, #2C4D49, #1C3936);
}
.photo.is-missing img { display: none; }
.photo.is-missing::before {
  content: "Photo à intégrer : " attr(data-label);
  position: absolute; left: 1rem; right: 1rem; top: .9rem;
  font: 500 .8rem/1.4 var(--f-texte); color: rgba(247, 248, 244, .72);
}
.ratio-paysage { aspect-ratio: 3 / 2; }
.ratio-large { aspect-ratio: 16 / 9; }
.ratio-portrait { aspect-ratio: 4 / 5; }
.ratio-carre { aspect-ratio: 1; }
figcaption { font-size: .92rem; color: var(--encre-2); margin-top: .6rem; }

/* ---------- Accueil : le diptyque des deux demeures ---------- */
.accueil-intro { padding: clamp(3rem, 7vw, 6rem) 0 clamp(2rem, 4vw, 3rem); }
.accueil-intro h1 { max-width: 14ch; }
.accueil-intro .chapeau { max-width: 36rem; }

.diptyque {
  display: grid; grid-template-columns: 1fr 1fr; gap: clamp(.5rem, 1vw, 1rem);
  max-width: 96rem; margin-inline: auto; padding-inline: var(--gouttiere);
}
.demeure {
  position: relative; display: flex; align-items: flex-end;
  min-height: clamp(26rem, 74vh, 46rem);
  border-radius: var(--rayon); overflow: hidden;
  color: var(--ivoire); text-decoration: none; background: var(--etang);
  isolation: isolate;
}
.demeure:hover { color: var(--ivoire); }
.demeure .photo { position: absolute; inset: 0; z-index: -2; }
.demeure .photo img { transition: transform 1.2s cubic-bezier(.2, .7, .2, 1); }
.demeure:hover .photo img { transform: scale(1.035); }
.demeure::after {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(to top, rgba(12, 24, 22, .88) 0%, rgba(12, 24, 22, .35) 45%, rgba(12, 24, 22, 0) 70%);
}
.demeure-texte { padding: clamp(1.5rem, 3.2vw, 3rem); max-width: 34rem; }
.demeure-genre { font-size: 1rem; color: var(--or-clair); margin: 0 0 .35rem; }
.demeure-nom { font-family: var(--f-display); font-weight: var(--g-titre); font-size: clamp(2.6rem, 4.6vw, 4.4rem); line-height: .95; letter-spacing: -.015em; margin: 0 0 .9rem; }
.demeure-desc { color: rgba(247, 248, 244, .88); margin: 0 0 1.1rem; }
.demeure-lien { font-weight: 600; text-decoration: underline; text-underline-offset: .25em; text-decoration-thickness: 1.5px; }
.demeure .photo.is-missing::before { top: 1.25rem; left: 1.5rem; }

/* Le seul mouvement d'ouverture du site : les deux demeures se lèvent */
.js .demeure { clip-path: inset(100% 0 0 0 round var(--rayon)); animation: lever 1.15s cubic-bezier(.2, .7, .2, 1) .1s forwards; }
.js .demeure + .demeure { animation-delay: .28s; }
@keyframes lever { to { clip-path: inset(0 0 0 0 round var(--rayon)); } }

@media (max-width: 760px) {
  .diptyque { grid-template-columns: 1fr; }
  .demeure { min-height: 24rem; }
}

/* ---------- Faits clés : la fiche ---------- */
.fiche { display: grid; grid-template-columns: minmax(9rem, 15rem) 1fr; margin: 0; border-top: 1px solid var(--ligne); }
.fiche dt, .fiche dd { margin: 0; padding: 1.05rem 0; border-bottom: 1px solid var(--ligne); }
.fiche dt { font-weight: 600; padding-right: 1.5rem; }
.fiche dd { color: var(--encre-2); }
.section-etang .fiche { border-color: rgba(247, 248, 244, .18); }
.section-etang .fiche dt, .section-etang .fiche dd { border-color: rgba(247, 248, 244, .18); }
.section-etang .fiche dd { color: rgba(247, 248, 244, .82); }
@media (max-width: 600px) {
  .fiche { grid-template-columns: 1fr; }
  .fiche dt { border-bottom: 0; padding-bottom: .15rem; }
  .fiche dd { padding-top: 0; }
}

/* ---------- Les occasions (lignes, pas de cartes) ---------- */
.occasions { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ligne); }
.occasion {
  display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 2fr) 13rem;
  gap: .6rem 3rem; align-items: baseline;
  padding: 1.9rem 0; border-bottom: 1px solid var(--ligne);
}
.occasion h3 { font-family: var(--f-display); font-weight: var(--g-titre); font-size: clamp(1.7rem, 2.8vw, 2.4rem); line-height: 1.05; margin: 0; letter-spacing: -.01em; }
.occasion p { margin: 0; color: var(--encre-2); }
.occasion-lieu { text-align: right; font-weight: 600; }
.occasion-lieu small { display: block; font-weight: 400; color: var(--encre-2); }
@media (max-width: 860px) {
  .occasion { grid-template-columns: 1fr; }
  .occasion-lieu { text-align: left; }
}

/* ---------- Espaces (grille éditoriale) ---------- */
.espaces { display: grid; grid-template-columns: repeat(6, 1fr); gap: clamp(.75rem, 1.5vw, 1.25rem); }
.espaces figure { margin: 0; }
.espaces .grand { grid-column: span 4; grid-row: span 2; display: flex; flex-direction: column; }
.espaces .grand .photo { flex: 1; min-height: 22rem; }
.espaces .moyen { grid-column: span 2; }
.espaces .demi { grid-column: span 3; }
@media (max-width: 760px) {
  .espaces { grid-template-columns: 1fr 1fr; }
  .espaces .grand { grid-column: span 2; grid-row: auto; }
  .espaces .grand .photo { flex: none; min-height: 0; aspect-ratio: 3 / 2; }
  .espaces .moyen, .espaces .demi { grid-column: span 1; }
}

/* ---------- Bandeau de page intérieure ---------- */
.bandeau { position: relative; isolation: isolate; color: var(--ivoire); background: var(--etang); }
.bandeau .photo { position: absolute; inset: 0; z-index: -2; }
.bandeau::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(12, 24, 22, .86) 0%, rgba(12, 24, 22, .45) 55%, rgba(12, 24, 22, .15) 100%); }
.bandeau .wrap { min-height: clamp(24rem, 62vh, 38rem); display: flex; flex-direction: column; justify-content: flex-end; padding-block: clamp(3rem, 7vw, 5.5rem); }
.bandeau h1 { max-width: 16ch; }
.bandeau .chapeau { color: rgba(247, 248, 244, .88); max-width: 36rem; }
.bandeau .photo.is-missing::before { top: auto; bottom: 1rem; left: auto; right: 1.25rem; text-align: right; }
.bandeau-simple { background: var(--ivoire); border-bottom: 1px solid var(--ligne); }
.bandeau-simple .wrap { padding-block: clamp(3rem, 7vw, 5.5rem); }

/* ---------- Vidéo (lecture au clic) ---------- */
.video { position: relative; aspect-ratio: 16 / 9; border-radius: var(--rayon); overflow: hidden; background: var(--etang-2); }
.video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.video-lancer { position: absolute; inset: 0; width: 100%; padding: 0; border: 0; cursor: pointer; background: none; color: var(--ivoire); }
.video-lancer .photo { position: absolute; inset: 0; }
.video-lancer::after { content: ""; position: absolute; inset: 0; background: rgba(12, 24, 22, .28); transition: background .2s; }
.video-lancer:hover::after { background: rgba(12, 24, 22, .12); }
.video-icone {
  position: absolute; z-index: 1; left: 50%; top: 50%; translate: -50% -50%;
  width: 4.75rem; height: 4.75rem; border-radius: 50%;
  background: rgba(247, 248, 244, .94);
  display: grid; place-items: center;
}
.video-icone::before { content: ""; margin-left: .3rem; border-style: solid; border-width: .75rem 0 .75rem 1.25rem; border-color: transparent transparent transparent var(--etang); }
.video-legende { font-size: .92rem; margin-top: .75rem; color: var(--encre-2); }
.section-etang .video-legende { color: rgba(247, 248, 244, .7); }

/* ---------- Étapes (vraie séquence) ---------- */
.etapes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 2rem; counter-reset: etape; }
.etapes li { counter-increment: etape; border-top: 1px solid var(--ligne); padding-top: 1.25rem; }
.etapes li::before { content: counter(etape); display: block; font-family: var(--f-display); font-weight: var(--g-titre); font-size: 2.6rem; line-height: 1; margin-bottom: .75rem; color: var(--bruyere); }
.etapes p { color: var(--encre-2); margin: 0; }
@media (max-width: 860px) { .etapes { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .etapes { grid-template-columns: 1fr; } }

/* ---------- Mise en avant de la soirée (pages claires) ---------- */
.rendezvous {
  display: grid; grid-template-columns: minmax(0, 15rem) 1fr; gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center;
  background: var(--nuit); color: var(--neige); border-radius: var(--rayon);
  padding: clamp(1.25rem, 3vw, 2.5rem);
}
.rendezvous img { border-radius: 4px; width: 100%; height: auto; }
.rendezvous h2 { color: var(--neige); font-size: clamp(1.9rem, 3.6vw, 2.8rem); }
.rendezvous p { color: rgba(242, 239, 230, .85); }
.rendezvous .date { color: var(--or-clair); font-weight: 600; margin-bottom: .5rem; }
.btn-or { background: var(--or); color: var(--nuit); }
.btn-or:hover { background: var(--or-clair); color: var(--nuit); }
@media (max-width: 640px) { .rendezvous { grid-template-columns: 1fr; } .rendezvous img { max-width: 14rem; } }

/* ---------- Accès ---------- */
.acces { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
.acces li { display: grid; grid-template-columns: 7.5rem 1fr; gap: 1rem; padding-bottom: 1rem; border-bottom: 1px solid var(--ligne); }
.acces strong { font-weight: 600; }
.carte { aspect-ratio: 4 / 3; border-radius: var(--rayon); overflow: hidden; background: var(--etang-2); }
.carte iframe { width: 100%; height: 100%; border: 0; }

/* ---------- Appel final ---------- */
.appel { text-align: left; }
.appel h2 { max-width: 18ch; }

/* ---------- Galerie ---------- */
.filtres { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 2rem; }
.filtres button {
  font: 500 .98rem/1 var(--f-texte); padding: .65rem 1.1rem; border-radius: 999px;
  border: 1.5px solid var(--ligne); background: transparent; color: var(--encre); cursor: pointer;
}
.filtres button:hover { border-color: var(--encre); }
.filtres button[aria-pressed="true"] { background: var(--encre); color: var(--ivoire); border-color: var(--encre); }
.galerie { columns: 3 17rem; column-gap: 1rem; }
.galerie figure { break-inside: avoid; margin: 0 0 1.25rem; }
.galerie figure[hidden] { display: none; }
.galerie .photo { border-radius: 4px; cursor: zoom-in; }
.galerie .photo.is-missing { cursor: default; }
.galerie figcaption strong { color: var(--encre); font-weight: 600; }

.visionneuse { border: 0; padding: 0; background: transparent; max-width: min(92vw, 70rem); }
.visionneuse::backdrop { background: rgba(10, 18, 17, .9); }
.visionneuse img { max-height: 82vh; width: auto; margin-inline: auto; border-radius: 4px; }
.visionneuse p { color: var(--ivoire); text-align: center; margin: .75rem auto 0; }
.visionneuse button { position: fixed; top: 1rem; right: 1rem; background: var(--ivoire); border: 0; border-radius: 999px; padding: .6rem 1rem; font: 600 .95rem/1 var(--f-texte); cursor: pointer; }

/* ---------- Contact ---------- */
.coordonnees { list-style: none; margin: 0 0 2rem; padding: 0; }
.coordonnees li { padding: 1rem 0; border-bottom: 1px solid var(--ligne); }
.coordonnees li:first-child { border-top: 1px solid var(--ligne); }
.coordonnees span { display: block; font-size: .9rem; color: var(--encre-2); }
.coordonnees a, .coordonnees strong { font-size: 1.15rem; font-weight: 600; }
.engagements { padding-left: 1.2rem; color: var(--encre-2); }
.engagements li { margin-bottom: .35rem; }

.formulaire { background: var(--ivoire); border: 1px solid var(--ligne); border-radius: var(--rayon); padding: clamp(1.25rem, 3vw, 2.5rem); }
.formulaire h2 { font-size: clamp(1.8rem, 3vw, 2.4rem); }
.champs { display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem 1.25rem; }
.champ { display: flex; flex-direction: column; gap: .4rem; }
.champ-large { grid-column: 1 / -1; }
.champ label { font-weight: 600; font-size: .95rem; }
.champ label .facultatif { font-weight: 400; color: var(--encre-2); }
.champ input, .champ select, .champ textarea {
  font: inherit; font-size: 1rem; color: var(--encre);
  background: #fff; border: 1.5px solid rgba(22, 33, 32, .22); border-radius: 4px;
  padding: .75rem .85rem; width: 100%;
}
.champ textarea { min-height: 8rem; resize: vertical; }
.champ input:focus, .champ select:focus, .champ textarea:focus { outline: 2px solid var(--bruyere); outline-offset: 1px; border-color: var(--bruyere); }
.case { display: flex; gap: .6rem; align-items: flex-start; grid-column: 1 / -1; }
.case input { width: 1.15rem; height: 1.15rem; margin-top: .2rem; accent-color: var(--bruyere); }
.formulaire .note { font-size: .9rem; color: var(--encre-2); margin-top: 1rem; }
.message-envoi { margin-top: 1rem; padding: .9rem 1rem; border-radius: 4px; background: #E3EEE6; color: var(--etang); }
.message-envoi[hidden] { display: none; }
@media (max-width: 640px) { .champs { grid-template-columns: 1fr; } }

/* ---------- FAQ : une carte par question ---------- */
.faq-bloc { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.faq-intro { position: sticky; top: 6.5rem; }
.faq-intro p { color: var(--encre-2); }
.faq-intro a { font-weight: 600; }
@media (max-width: 900px) { .faq-bloc { grid-template-columns: 1fr; } .faq-intro { position: static; } }

.faq { display: grid; gap: .75rem; max-width: 52rem; }
.faq details {
  background: var(--ivoire); border: 1px solid var(--ligne); border-radius: 14px;
  transition: border-color .2s, box-shadow .2s, background-color .2s;
}
.faq details:hover { border-color: rgba(22, 33, 32, .3); }
.faq details[open] { background: #fff; border-color: rgba(122, 69, 104, .4); box-shadow: 0 22px 44px -32px rgba(22, 33, 32, .5); }
.faq summary {
  list-style: none; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: 1.25rem;
  padding: 1.15rem 1.1rem 1.15rem 1.5rem; border-radius: 14px;
  font: 600 1.1rem/1.4 var(--f-texte); color: var(--encre);
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary:hover { color: var(--bruyere-fonce); }
.faq summary::after {
  content: ""; flex: none; width: 2.3rem; height: 2.3rem; border-radius: 50%;
  color: var(--bruyere-fonce);
  background:
    linear-gradient(currentColor, currentColor) center / .85rem 2px no-repeat,
    linear-gradient(currentColor, currentColor) center / 2px .85rem no-repeat,
    var(--brume);
  transition: transform .25s ease, background-color .2s, color .2s;
}
.faq details[open] > summary::after { transform: rotate(45deg); color: #fff; background-color: var(--bruyere); }
.faq-reponse { padding: 0 1.5rem 1.4rem; color: var(--encre-2); }
.faq-reponse p { margin: 0 0 .85em; max-width: 62ch; }
.faq-reponse > :last-child { margin-bottom: 0; }
.faq-reponse strong { color: var(--encre); }
.faq details[open] .faq-reponse { animation: deplier .3s ease; }
@keyframes deplier { from { opacity: 0; transform: translateY(-.35rem); } }
.faq-suite { font-weight: 600; }
.faq-suite::after { content: " →"; }

/* Prestataire mis en avant dans une réponse */
.faq-partenaire {
  display: flex; align-items: center; gap: 1rem; flex-wrap: wrap;
  margin: .25rem 0 1.1rem; padding: .8rem 1.1rem .8rem .8rem; max-width: 34rem;
  background: #0E0E0E; color: #F3E7C9; border-radius: 999px; text-decoration: none;
  box-shadow: 0 0 0 1px rgba(212, 176, 106, .45);
  transition: box-shadow .2s, transform .2s;
}
.faq-partenaire:hover { color: #F3E7C9; box-shadow: 0 0 0 2px var(--or); transform: translateY(-1px); }
.faq-partenaire img { width: 3.6rem; height: 3.6rem; border-radius: 50%; }
.faq-partenaire-texte { display: grid; flex: 1; min-width: 10rem; line-height: 1.3; }
.faq-partenaire-texte strong { color: #fff; font-size: 1.08rem; }
.faq-partenaire-texte span { color: #D9C79B; font-size: .92rem; }
.faq-partenaire-lien { font-weight: 600; color: var(--or); padding-right: .4rem; }
.faq-partenaire-lien::after { content: " ↗"; }

.visuellement-cache { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* ---------- Mentions légales ---------- */
.texte-legal { max-width: 46rem; }
.texte-legal h2 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); margin-top: 2.5rem; }
.a-completer { background: #FFF4C7; padding: 0 .25em; border-radius: 3px; }

/* ---------- Pied de page ---------- */
.pied { background: var(--encre); color: rgba(247, 248, 244, .78); padding-block: clamp(3rem, 6vw, 4.5rem) 2rem; font-size: .98rem; }
.pied a { color: var(--ivoire); text-decoration: none; }
.pied a:hover { color: var(--or-clair); text-decoration: underline; }
.pied-grille { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 2.5rem; }
.pied .marque-nom { color: var(--ivoire); font-size: 1.8rem; margin-bottom: .75rem; }
.pied h2 { font: 600 1rem/1.3 var(--f-texte); color: var(--ivoire); margin: 0 0 .8rem; }
.pied ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.pied-bas { margin-top: 3rem; padding-top: 1.25rem; border-top: 1px solid rgba(247, 248, 244, .14); display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; justify-content: space-between; font-size: .9rem; }
@media (max-width: 760px) { .pied-grille { grid-template-columns: 1fr; } }

/* =========================================================
   Page Soirée célibataires — thème Noël (reprend l'affiche)
   ========================================================= */
.theme-nuit { background: var(--nuit); color: var(--neige); }
.theme-nuit :focus-visible { outline-color: var(--or); }
.theme-nuit a { color: var(--or-clair); }
.theme-nuit a:hover { color: var(--or); }
.theme-nuit .entete { background: rgba(13, 24, 40, .92); border-bottom-color: rgba(235, 217, 168, .14); }
.theme-nuit .marque, .theme-nuit .marque:hover { color: var(--neige); }
.theme-nuit .marque-lieu { color: var(--neige-2); }
.theme-nuit .nav a { color: var(--neige); }
.theme-nuit .nav a:hover { border-bottom-color: rgba(235, 217, 168, .35); }
.theme-nuit .nav a[aria-current="page"] { border-bottom-color: var(--or); }
.theme-nuit .nav .nav-soiree { background: var(--or); color: var(--nuit); }
.theme-nuit .nav .nav-devis { border-color: var(--neige); }
.theme-nuit .nav .nav-devis:hover { background: var(--neige); color: var(--nuit); }
.theme-nuit .nav-bouton { color: var(--neige); border-color: var(--neige); }
@media (max-width: 1100px) { .theme-nuit .nav { background: var(--nuit-2); border-bottom-color: rgba(235, 217, 168, .14); } }
.theme-nuit h1, .theme-nuit h2 { color: var(--neige); }
.theme-nuit p { color: rgba(242, 239, 230, .86); }
.theme-nuit .chapeau { color: rgba(242, 239, 230, .9); }
.theme-nuit .btn-ligne { color: var(--neige); }
.theme-nuit .btn-ligne:hover { background: var(--neige); color: var(--nuit); border-color: var(--neige); }
.theme-nuit .section-nuit-2 { background: var(--nuit-2); }
.theme-nuit .faq details { background: rgba(242, 239, 230, .04); border-color: rgba(235, 217, 168, .18); }
.theme-nuit .faq details:hover { border-color: rgba(235, 217, 168, .38); }
.theme-nuit .faq details[open] { background: rgba(242, 239, 230, .07); border-color: rgba(212, 176, 106, .6); box-shadow: none; }
.theme-nuit .faq summary { color: var(--neige); }
.theme-nuit .faq summary:hover { color: var(--or-clair); }
.theme-nuit .faq summary::after { color: var(--or-clair); background-color: rgba(235, 217, 168, .12); }
.theme-nuit .faq details[open] > summary::after { color: var(--nuit); background-color: var(--or); }
.theme-nuit .faq-reponse, .theme-nuit .faq-reponse p { color: rgba(242, 239, 230, .82); }
.theme-nuit .faq-reponse strong { color: var(--neige); }
.theme-nuit .faq-intro p { color: rgba(242, 239, 230, .82); }
.theme-nuit .acces li { border-color: rgba(235, 217, 168, .16); }
.theme-nuit .pied { background: #08111D; }

/* Ciel de Noël : poussière d'or fixe, sans animation */
.soiree-hero {
  position: relative; overflow: hidden;
  background:
    radial-gradient(1.5px 1.5px at 12% 18%, rgba(235, 217, 168, .8), transparent),
    radial-gradient(1px 1px at 28% 62%, rgba(235, 217, 168, .55), transparent),
    radial-gradient(1.5px 1.5px at 46% 12%, rgba(235, 217, 168, .7), transparent),
    radial-gradient(1px 1px at 58% 78%, rgba(235, 217, 168, .5), transparent),
    radial-gradient(2px 2px at 8% 84%, rgba(235, 217, 168, .45), transparent),
    radial-gradient(1px 1px at 37% 36%, rgba(235, 217, 168, .6), transparent),
    radial-gradient(70% 60% at 20% 0%, rgba(212, 176, 106, .14), transparent 70%),
    linear-gradient(180deg, #0B1524 0%, var(--nuit) 100%);
}
.soiree-hero .wrap { display: grid; grid-template-columns: 7fr 5fr; gap: clamp(2rem, 5vw, 5rem); align-items: center; padding-block: clamp(3rem, 7vw, 6rem); }
.soiree-hero h1 { font-size: clamp(2.8rem, 6.4vw, 5.6rem); line-height: 1; letter-spacing: -.015em; }
.soiree-hero h1 span { display: block; color: var(--or-clair); }
.soiree-quand { font-family: var(--f-display); font-weight: var(--g-titre); font-size: clamp(1.5rem, 2.6vw, 2.1rem); line-height: 1.2; color: var(--neige); margin: 0 0 .35rem; max-width: none; }
.soiree-ou { margin: 0 0 1.5rem; }
.soiree-ou strong { color: var(--neige); }
.reperes { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.reperes li { border: 1px solid rgba(235, 217, 168, .4); color: var(--or-clair); border-radius: 999px; padding: .45rem .9rem; font-size: .95rem; font-weight: 500; }
.compte { margin-top: 1.25rem; font-size: .98rem; color: var(--neige-2); }
.compte strong { color: var(--or-clair); font-weight: 600; }
.affiche { margin: 0; }
.affiche img { width: 100%; height: auto; border-radius: 4px; box-shadow: 0 30px 60px -20px rgba(0, 0, 0, .6), 0 0 0 1px rgba(235, 217, 168, .18); }
.affiche figcaption { color: var(--neige-2); text-align: center; }
@media (max-width: 900px) {
  .soiree-hero .wrap { grid-template-columns: 1fr; }
  .affiche { max-width: 24rem; }
}

/* Ce qui est inclus : quatre éléments séparés par des filets, comme sur l'affiche */
.inclus { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); border-top: 1px solid rgba(235, 217, 168, .2); border-bottom: 1px solid rgba(235, 217, 168, .2); }
.inclus li { padding: 2rem 1.1rem; text-align: center; }
.inclus li + li { border-left: 1px solid rgba(235, 217, 168, .2); }
.inclus svg { width: 2.75rem; height: 2.75rem; margin: 0 auto 1rem; stroke: var(--or); fill: none; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.inclus h3 { font-family: var(--f-display); font-weight: var(--g-titre); font-size: 1.55rem; color: var(--neige); margin-bottom: .4rem; }
.inclus p { margin: 0 auto; font-size: .98rem; max-width: 16rem; }
.hors-billet { margin-top: 1.5rem; color: var(--neige-2); }
@media (max-width: 1000px) {
  .inclus { grid-template-columns: 1fr 1fr; }
  .inclus li:nth-child(2n+1) { border-left: 0; }
  .inclus li:nth-child(5) { grid-column: 1 / -1; }
  .inclus li:nth-child(n+3) { border-top: 1px solid rgba(235, 217, 168, .2); }
}
@media (max-width: 480px) {
  .inclus { grid-template-columns: 1fr; }
  .inclus li + li { border-left: 0; border-top: 1px solid rgba(235, 217, 168, .2); }
}

/* Les paliers de prix : un escalier qui monte */
.paliers { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); align-items: end; gap: clamp(.4rem, 1vw, .9rem); height: 26rem; }
.palier {
  height: calc(var(--h) * 1%);
  display: flex; flex-direction: column; justify-content: flex-start; gap: .25rem;
  padding: 1rem clamp(.6rem, 1.4vw, 1.1rem);
  border: 1px solid rgba(212, 176, 106, .45); border-bottom: 0; border-radius: 6px 6px 0 0;
  background: linear-gradient(to top, rgba(212, 176, 106, .2), rgba(212, 176, 106, .06));
}
.palier-nom { font-size: .9rem; color: var(--neige-2); }
.palier-prix { font-family: var(--f-display); font-weight: var(--g-titre); font-size: clamp(1.9rem, 3.8vw, 3rem); line-height: 1; color: var(--or-clair); }
.palier-etat { margin-top: auto; font-size: .85rem; font-weight: 600; color: var(--neige-2); }
.palier.is-actuel { background: var(--or); border-color: var(--or); }
.palier.is-actuel .palier-nom, .palier.is-actuel .palier-prix, .palier.is-actuel .palier-etat { color: var(--nuit); }
.palier.is-complet { opacity: .45; }
.palier.is-complet .palier-prix { text-decoration: line-through; text-decoration-thickness: 2px; }
.sol { height: 1px; background: rgba(235, 217, 168, .45); }
.regles-billets { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; margin-top: 2.5rem; }
.regles-billets h3 { color: var(--or-clair); }
.regles-billets p { margin: 0; font-size: 1rem; }
@media (max-width: 640px) {
  .paliers { grid-template-columns: 1fr; height: auto; gap: .5rem; }
  .palier { height: auto; width: calc(var(--h) * 1%); min-width: 11rem; border: 1px solid rgba(212, 176, 106, .45); border-left: 0; border-radius: 0 6px 6px 0; flex-direction: row; align-items: baseline; flex-wrap: wrap; gap: .25rem .75rem; }
  .palier-etat { margin-top: 0; width: 100%; }
  .sol { display: none; }
  .regles-billets { grid-template-columns: 1fr; gap: 1.25rem; }
}

/* Programme */
.programme { list-style: none; margin: 0; padding: 0; border-top: 1px solid rgba(235, 217, 168, .2); max-width: 46rem; }
.programme li { display: grid; grid-template-columns: 7rem 1fr; gap: 1rem; padding: 1.1rem 0; border-bottom: 1px solid rgba(235, 217, 168, .2); }
.programme time { font-family: var(--f-display); font-weight: var(--g-titre); font-size: 1.45rem; color: var(--or-clair); line-height: 1.2; }
.programme p { margin: 0; }
.a-venir { color: var(--neige-2); font-style: italic; }

.mention-alcool { font-size: .85rem; color: var(--neige-2); margin-top: 2rem; }

/* ---------- Accessibilité : mouvement réduit ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .faq details[open] .faq-reponse { animation: none; }
  .faq summary::after, .faq-partenaire { transition: none; }
  .js .demeure { animation: none; clip-path: none; }
  .demeure .photo img, .btn, .video-lancer::after { transition: none; }
}

/* ---------- Impression ---------- */
@media print {
  .entete, .annonce, .pied, .boutons, .video, .carte { display: none !important; }
  body, .theme-nuit { background: #fff; color: #000; }
}

/* ---------- Formules (page Événements) ---------- */
.formules { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2.5rem, 5vw, 4rem) clamp(1.5rem, 3vw, 2.5rem); }
.formule figure { margin: 0 0 1.25rem; }
.formule .photo { border-radius: var(--rayon); }
.formule h3 { font-family: var(--f-display); font-weight: var(--g-titre); font-size: clamp(1.8rem, 3vw, 2.4rem); line-height: 1.05; letter-spacing: -.01em; margin: 0 0 .5rem; }
.formule-lieu { font-weight: 600; margin: 0 0 .5rem; }
.formule-lieu a { color: var(--bruyere-fonce); }
.formule p { color: var(--encre-2); }
.formule-faits { list-style: none; margin: 1rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.formule-faits li { border: 1px solid var(--ligne); border-radius: 999px; padding: .35rem .85rem; font-size: .92rem; }
@media (max-width: 760px) { .formules { grid-template-columns: 1fr; } }

/* ---------- Carte (chargée au clic) ---------- */
.carte { position: relative; display: grid; place-items: center; text-align: center;
  background:
    repeating-linear-gradient(35deg, rgba(247, 248, 244, .05) 0 1px, transparent 1px 22px),
    repeating-linear-gradient(-55deg, rgba(247, 248, 244, .05) 0 1px, transparent 1px 30px),
    linear-gradient(160deg, #2C4D49, #1C3936);
  color: var(--ivoire); padding: 1.5rem; }
.carte-contenu { display: grid; gap: .9rem; justify-items: center; }
.carte-contenu p { color: rgba(247, 248, 244, .85); margin: 0; max-width: 24rem; }
.carte iframe { position: absolute; inset: 0; }
.theme-nuit .carte { background:
    repeating-linear-gradient(35deg, rgba(235, 217, 168, .06) 0 1px, transparent 1px 22px),
    repeating-linear-gradient(-55deg, rgba(235, 217, 168, .06) 0 1px, transparent 1px 30px),
    linear-gradient(160deg, var(--nuit-2), #0B1524); }

/* ---------- Divers ---------- */
.lien-suite { display: inline-block; margin-top: 1.75rem; font-weight: 600; }
.pied .marque-nom { font-family: var(--f-display); font-weight: 600; }

/* ---------- Bandeau d'annonce automatique ---------- */
.annonce[hidden] { display: none; }

/* ---------- Agenda : rendez-vous à venir et passés ---------- */
.rdv-liste { display: grid; gap: clamp(1.5rem, 3vw, 2.25rem); }
.rdv {
  display: grid; grid-template-columns: minmax(0, 13rem) 1fr; gap: clamp(1.25rem, 3vw, 2.5rem); align-items: start;
  padding-bottom: clamp(1.5rem, 3vw, 2.25rem); border-bottom: 1px solid var(--ligne);
}
.rdv:last-child { border-bottom: 0; padding-bottom: 0; }
.rdv .photo { border-radius: 4px; aspect-ratio: 4 / 5; }
.rdv-lieu { margin: 0 0 .35rem; font-size: .95rem; font-weight: 600; color: var(--bruyere-fonce); }
.rdv-quand { margin: 0 0 .5rem; font-weight: 600; }
.rdv h3 { font-family: var(--f-display); font-weight: var(--g-titre); font-size: clamp(1.7rem, 3vw, 2.35rem); line-height: 1.08; margin: 0 0 .6rem; letter-spacing: -.01em; }
.rdv h3 a { color: inherit; text-decoration: none; }
.rdv h3 a:hover { text-decoration: underline; text-decoration-thickness: 1.5px; }
.rdv p { color: var(--encre-2); }
.rdv-lien { font-weight: 600; }
.rdv-passe .photo { filter: saturate(.75); }
.rdv-vide { color: var(--encre-2); }
.rdv-annee { font-family: var(--f-display); font-weight: var(--g-titre); font-size: 1.6rem; margin: 2.5rem 0 1rem; padding-bottom: .5rem; border-bottom: 1px solid var(--ligne); }
.rdv-annee:first-child { margin-top: 0; }
/* version compacte (accueil, pages des demeures) */
.rdv-liste.compacte { grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); gap: clamp(1.5rem, 3vw, 2.5rem); }
.compacte .rdv { grid-template-columns: 1fr; border-bottom: 0; padding-bottom: 0; gap: 1rem; }
.compacte .rdv .photo { aspect-ratio: 3 / 2; }
.compacte .rdv h3 { font-size: clamp(1.5rem, 2.4vw, 1.9rem); }
.section-etang .rdv-lieu { color: var(--or-clair); }
.section-etang .rdv p, .section-etang .rdv-quand { color: rgba(247, 248, 244, .85); }
.section-etang .rdv-liste .rdv { border-color: rgba(247, 248, 244, .16); }
.titre-ligne { display: flex; flex-wrap: wrap; gap: .75rem 2rem; align-items: baseline; justify-content: space-between; margin-bottom: clamp(2rem, 4vw, 3rem); }
.titre-ligne h2 { margin: 0; }
@media (max-width: 600px) { .rdv { grid-template-columns: 1fr; } .rdv .photo { aspect-ratio: 3 / 2; max-width: 26rem; } }

/* ---------- Paliers : nom et nombre de places ---------- */
.palier-places { font-size: .85rem; color: var(--neige-2); }
.palier.is-actuel .palier-places { color: var(--nuit); }
.note-agenda { margin-top: 1.5rem; color: var(--encre-2); }

/* ---------- Partenaires ---------- */
.partenaires { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 34rem), 1fr)); gap: clamp(1.25rem, 2.5vw, 2rem); }
.partenaire {
  display: grid; grid-template-columns: 8.5rem 1fr; gap: clamp(1.25rem, 3vw, 2rem); align-items: start;
  background: var(--ivoire); border: 1px solid var(--ligne); border-radius: var(--rayon);
  padding: clamp(1.25rem, 3vw, 2rem);
}
.partenaire-logo {
  position: relative; display: grid; place-items: center;
  width: 8.5rem; aspect-ratio: 1; border-radius: 50%; overflow: hidden;
  background: #fff; border: 1px solid var(--ligne); text-decoration: none;
}
.partenaire-logo img { width: 100%; height: 100%; object-fit: contain; }
.partenaire-logo.is-missing img { display: none; }
.partenaire-logo.is-missing::after { content: attr(data-nom); font-family: var(--f-display); font-size: 1.3rem; line-height: 1.1; text-align: center; color: var(--etang); padding: .75rem; }
.partenaire h3 { font-family: var(--f-display); font-weight: var(--g-titre); font-size: clamp(1.7rem, 2.6vw, 2.1rem); line-height: 1.08; margin: 0 0 .25rem; }
.partenaire h3 a { color: var(--encre); text-decoration: none; }
.partenaire h3 a:hover { text-decoration: underline; text-decoration-thickness: 1.5px; }
.partenaire-metier { font-weight: 600; color: var(--bruyere-fonce); margin: 0 0 .9rem; }
.partenaire p { color: var(--encre-2); }
.partenaire-presences { list-style: none; margin: 0 0 1.1rem; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.partenaire-presences li a { display: inline-block; border: 1px solid var(--ligne); border-radius: 999px; padding: .35rem .85rem; font-size: .92rem; color: var(--encre); text-decoration: none; }
.partenaire-presences li a:hover { border-color: var(--encre); }
.partenaire-site { font-weight: 600; }
@media (max-width: 560px) { .partenaire { grid-template-columns: 1fr; } .partenaire-logo { width: 7rem; } }

/* Logo sur fond noir (ex. NGS Editing) : il remplit toute la pastille */
.partenaire-logo--sombre { background: #0B0B0B; border-color: rgba(212, 176, 106, .55); box-shadow: 0 14px 30px -18px rgba(0, 0, 0, .6); }
.partenaire-logo--sombre img { object-fit: cover; }
.partenaire-logo--sombre.is-missing::after { color: var(--or-clair); }

/* ---------- Partenaires : façons de soutenir + formulaire ---------- */
.facons-soutenir { list-style: none; margin: 1.75rem 0; padding: 0; border-top: 1px solid var(--ligne); }
.facons-soutenir li { display: grid; gap: .15rem; padding: .9rem 0 .9rem 1.6rem; border-bottom: 1px solid var(--ligne); position: relative; }
.facons-soutenir li::before { content: ""; position: absolute; left: .1rem; top: 1.35rem; width: .55rem; height: .55rem; border-radius: 50%; background: var(--bruyere); }
.facons-soutenir span { color: var(--encre-2); }
fieldset.choix { border: 0; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: .55rem 1.25rem; }
fieldset.choix legend { font-weight: 600; font-size: .95rem; padding: 0; margin-bottom: .6rem; }
fieldset.choix legend .facultatif { font-weight: 400; color: var(--encre-2); }
fieldset.choix .case { grid-column: auto; }
@media (max-width: 640px) { fieldset.choix { grid-template-columns: 1fr; } }

/* ---------- Agenda : étiquette et carte vedette de la soirée ---------- */
.rdv-etiquette {
  display: inline-block; margin: 0 0 .75rem; padding: .35rem .8rem; border-radius: 999px;
  background: var(--nuit); color: var(--or-clair); font-size: .85rem; font-weight: 600; letter-spacing: .02em;
}
.rdv-liste:not(.compacte) .rdv-nuit {
  background: var(--nuit); color: var(--neige); border-radius: var(--rayon); border-bottom: 0;
  padding: clamp(1.25rem, 3vw, 2.5rem); align-items: center;
}
.rdv-liste:not(.compacte) .rdv-nuit .rdv-etiquette { background: var(--or); color: var(--nuit); }
.rdv-liste:not(.compacte) .rdv-nuit .rdv-lieu { color: var(--or-clair); }
.rdv-liste:not(.compacte) .rdv-nuit .rdv-quand { color: var(--neige); }
.rdv-liste:not(.compacte) .rdv-nuit h3, .rdv-liste:not(.compacte) .rdv-nuit h3 a { color: var(--neige); }
.rdv-liste:not(.compacte) .rdv-nuit p { color: rgba(242, 239, 230, .85); }
.rdv-liste:not(.compacte) .rdv-nuit .rdv-lien { color: var(--or-clair); }
.rdv-liste:not(.compacte) .rdv-nuit .rdv-lien:hover { color: var(--or); }

/* ---------- Soirée : nos engagements ---------- */
.engagements-soiree { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(1rem, 2vw, 1.5rem); }
.engagements-soiree li {
  display: grid; grid-template-columns: 3rem 1fr; gap: 1.1rem; align-items: start;
  padding: clamp(1.25rem, 2.5vw, 1.75rem); border-radius: 14px;
  background: rgba(242, 239, 230, .04); border: 1px solid rgba(235, 217, 168, .18);
}
.engagements-soiree svg { width: 3rem; height: 3rem; stroke: var(--or); fill: none; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.engagements-soiree h3 { font-family: var(--f-display); font-weight: var(--g-titre); font-size: 1.5rem; line-height: 1.15; color: var(--neige); margin: .15rem 0 .4rem; }
.engagements-soiree p { margin: 0 0 .5em; font-size: 1rem; }
.engagements-soiree p:last-child { margin-bottom: 0; }
.engagements-soiree .discret { font-size: .94rem; color: var(--neige-2); }
@media (max-width: 760px) { .engagements-soiree { grid-template-columns: 1fr; } }

/* Bon à savoir (fiche sur fond nuit) */
.theme-nuit .fiche { border-color: rgba(235, 217, 168, .18); }
.theme-nuit .fiche dt, .theme-nuit .fiche dd { border-color: rgba(235, 217, 168, .18); }
.theme-nuit .fiche dt { color: var(--or-clair); }
.theme-nuit .fiche dd { color: rgba(242, 239, 230, .86); }
.programme .programme-fort p { color: var(--neige); font-weight: 600; }
.programme small { display: block; color: var(--neige-2); font-size: .92rem; margin-top: .15rem; }
.note-programme { font-size: .95rem; color: var(--neige-2); }
.hebergement-encart {
  margin-top: 1.75rem; padding: 1.25rem 1.4rem; border-radius: 14px;
  border: 1px solid rgba(212, 176, 106, .45); background: rgba(212, 176, 106, .08);
}
.hebergement-encart h3 { color: var(--or-clair); margin-bottom: .35rem; }
.hebergement-encart p { margin: 0; }
.titre-bon-a-savoir { margin: 2.25rem 0 .9rem; color: var(--or-clair); }
.carte-contenu a { color: var(--or-clair); font-weight: 500; }
.carte-contenu a:hover { color: #fff; }
.case input { flex: none; }
.partenaire-vide {
  align-items: center; text-decoration: none; color: var(--encre);
  background: transparent; border: 1.5px dashed rgba(22, 33, 32, .28);
  transition: border-color .2s, background-color .2s;
}
.partenaire-vide:hover { color: var(--encre); border-color: var(--bruyere); background: rgba(247, 248, 244, .6); }
.partenaire-vide-logo {
  display: grid; place-items: center; width: 8.5rem; aspect-ratio: 1; border-radius: 50%;
  border: 1.5px dashed rgba(22, 33, 32, .28); font: 300 3rem/1 var(--f-texte); color: var(--bruyere);
}
.partenaire-vide strong { display: block; font-family: var(--f-display); font-weight: var(--g-titre); font-size: clamp(1.5rem, 2.4vw, 1.9rem); line-height: 1.1; margin-bottom: .5rem; }
.partenaire-vide > span > span { display: block; color: var(--encre-2); margin-bottom: .9rem; }
.partenaire-vide .partenaire-site { color: var(--bruyere-fonce); text-decoration: underline; text-underline-offset: .18em; margin: 0; }
@media (max-width: 560px) { .partenaire-vide-logo { width: 7rem; } }
.rdv .rdv-etiquette { color: var(--or-clair); }
.rdv-nuit .photo img { object-position: 50% 0; }
.rdv-liste:not(.compacte) .rdv-nuit .photo { aspect-ratio: 113 / 160; }
.fiche-courte { grid-template-columns: minmax(5.5rem, 7.5rem) 1fr; }
.faq-intro .boutons { margin-top: 1.25rem; }
@media (max-width: 560px) {
  .faq-partenaire { flex-wrap: nowrap; border-radius: 16px; padding-right: .9rem; }
  .faq-partenaire-lien { display: none; }
  .faq-partenaire-texte strong::after { content: " ↗"; color: var(--or); }
  .faq summary { padding-left: 1.15rem; font-size: 1.02rem; }
  .faq-reponse { padding-inline: 1.15rem; }
}
/* Logo sur fond clair : un peu d'air autour */
.partenaire-logo:not(.partenaire-logo--sombre) img { padding: .85rem; }
.partenaire .mention-alcool { font-size: .82rem; color: var(--encre-2); margin: 1rem 0 0; }
.insecable { white-space: nowrap; }
/* Accueil : photo sous le titre « Un domaine au cœur de la Sologne » */
.domaine-photo { margin: 2rem 0 0; }
.domaine-photo .photo { border-radius: var(--rayon); }
/* Bandeau plein cadre (page La Luzière) : la photo entière, le texte posé sur la pelouse */
.bandeau-grand .wrap { min-height: min(56.25vw, 86vh); padding-block: 3rem clamp(2rem, 4vw, 3.25rem); }
.bandeau-grand::after {
  background:
    linear-gradient(to top, rgba(12, 24, 22, .9) 0%, rgba(12, 24, 22, .55) 30%, rgba(12, 24, 22, 0) 58%),
    linear-gradient(90deg, rgba(12, 24, 22, .45) 0%, rgba(12, 24, 22, 0) 55%);
}
.bandeau-grand h1, .bandeau-grand .chapeau { text-shadow: 0 1px 18px rgba(0, 0, 0, .35); }
@media (max-width: 760px) { .bandeau-grand .wrap { min-height: 30rem; } }

/* Accueil : texte plus lisible sur les photos des demeures */
.demeure::after { background: linear-gradient(to top, rgba(12, 24, 22, .92) 0%, rgba(12, 24, 22, .6) 38%, rgba(12, 24, 22, 0) 68%); }
.demeure-texte { text-shadow: 0 1px 14px rgba(0, 0, 0, .35); }
/* Galerie : un emplacement prévu reste masqué tant que sa photo n'a pas été déposée */
.galerie figure[data-a-venir]:not(.is-pret) { display: none; }

/* ---------- Avis ---------- */
.avis-entete { text-align: center; margin: 0 auto clamp(2rem, 4vw, 3rem); max-width: 40rem; }
.surtitre { margin: 0 auto .6rem; font-size: .8rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--bruyere); max-width: none; }
.avis-liste { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(1rem, 2vw, 1.5rem); }
.avis {
  margin: 0; display: flex; flex-direction: column; gap: 1rem;
  background: #fff; border: 1px solid var(--ligne); border-radius: 14px;
  padding: clamp(1.4rem, 2.5vw, 2rem);
}
.avis-haut { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.avis-etoiles { color: #B8893A; letter-spacing: .12em; font-size: 1.05rem; }
.avis-lieu { font-size: .75rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--bruyere-fonce); border: 1px solid rgba(122, 69, 104, .35); border-radius: 999px; padding: .25rem .7rem; }
.avis blockquote { margin: 0; flex: 1; }
.avis blockquote p { margin: 0; font-family: var(--f-display); font-weight: 500; font-size: clamp(1.15rem, 1.6vw, 1.3rem); line-height: 1.5; color: var(--encre); }
.avis figcaption { margin: 0; padding-top: 1rem; border-top: 1px solid var(--ligne); display: grid; gap: .15rem; }
.avis figcaption strong { font-weight: 600; color: var(--encre); }
.avis figcaption span { font-size: .88rem; color: var(--encre-2); }
.avis-resume { text-align: center; margin: 2rem auto 0; max-width: 46rem; color: var(--encre-2); }
.avis-resume a { font-weight: 600; white-space: nowrap; }
.avis-note { text-align: center; margin: .4rem auto 0; font-size: .82rem; color: var(--encre-2); max-width: none; }
@media (max-width: 900px) { .avis-liste { grid-template-columns: 1fr; max-width: 36rem; margin-inline: auto; } }
