/* =========================
   style.css — LUXE ROMANTIQUE DISCRET (final)
   Palette:
   - Ivoire: #FFFAF5
   - Or champagne: #E0C08F
   - Bordeaux grège: #7A5A5F
   Typo:
   - Body: Mulish (lecture / UI)
   - Titres: Arsenica (H1 / H2 / H3 / visuels)
   - Script: Great Vibes (bijou : hero + brand)
   ========================= */

@font-face{
  font-family:"Arsenica";
  src:url("./fonts/Arsenica-Trial-Regular.woff2") format("woff2");
  font-weight:400 500;
  font-style:normal;
  font-display:swap;
}

/* =========================
   TABLE DES MATIERES
   1. Tokens
   2. Base
   3. Layout
   4. Shell pleine largeur
   5. Typographie
   6. Buttons
   7. Cards
   8. Footer
   9. Header
   10. Hero
   11. Countdown
   12. Timeline legacy
   13. Programme
   14. Lieu / Galerie / Lightbox
   15. Feedback UI
   16. RSVP
   17. Responsive
   18. Reduced Motion
   ========================= */

/* =========================
   TOKENS
   ========================= */
:root{
  --bg:#FFFAF5;                 /* ivoire */
  --bg-main:#FFFAF5;
  --bg-alt-1:#FCF6EF;
  --bg-alt-2:#F7F1E7;
  --bg-plum-tint-1:rgba(122, 90, 95, 0.04);
  --bg-plum-tint-2:rgba(122, 90, 95, 0.06);
  --bg-plum-tint-3:rgba(122, 90, 95, 0.08);
  --surface-glass-light:rgba(255,250,245,.72);
  --surface-glass-soft:rgba(255,250,245,.78);
  --surface-glass-premium:rgba(255,250,245,.84);
  --blur-soft:blur(6px);
  --blur-medium:blur(8px);
  --blur-signature:blur(10px);
  --txt:#2a2a2a;
  --muted:rgba(42,42,42,.62);
  --link-color:#49182F;
  --focus-outline:rgba(122,90,95,.5);
  --focus-ring:rgba(214,194,154,.22);
  --border-soft:rgba(214,194,154,.22);
  --border-strong:rgba(214,194,154,.35);
  --surface-header:rgba(255,250,245,.78);
  --surface-header-strong:rgba(255,250,245,.94);
  --surface-footer:rgba(122,90,95,.05);
  --footer-bg:#49182F;
  --footer-text:#FFFAF5;
  --footer-muted:rgba(255,250,245,.74);
  --footer-border:rgba(214,194,154,.28);
  --surface-card:var(--surface-glass-light);
  --surface-card-strong:var(--surface-glass-soft);
  --surface-card-premium:var(--surface-glass-premium);
  --surface-panel:rgba(255,250,245,.58);
  --surface-panel-strong:rgba(255,250,245,.72);
  --input-bg:#fff;
  --input-border:rgba(122,90,95,.16);
  --input-placeholder:rgba(42,42,42,.42);
  --btn-primary-bg:#49182F;
  --btn-primary-text:rgba(255,255,255,.96);
  --btn-primary-border:rgba(122,90,95,.92);
  --btn-secondary-bg:rgba(255,250,245,.58);
  --btn-secondary-text:#49182f;
  --btn-secondary-border:rgba(214,194,154,.65);
  --btn-hero-secondary-text:rgba(255,255,255,.92);
  --btn-hero-secondary-border:rgba(255,255,255,.55);
  --btn-hero-secondary-bg:transparent;
  --toast-bg:rgba(255,250,245,.9);
  --shadow-elevated:0 24px 56px rgba(23,35,56,.06);

  --gold:#E0C08F;               /* champagne */
  --accent-gold:#E0C08F;
  --gold-2:#C5AE7B;

  --signature:#49182F;          /* bordeaux grège */
  --signature-ink:#49182F;      /* encre texte */
  --accent-plum:#7A5A5F;

  /* =========================
     REGLAGE SIMPLE DES COULEURS DE POLICE
     Modifier ici si tu veux ajuster rapidement les encres du site
     ========================= */
  --text-ink-primary:#49182F;
  --text-ink-primary-soft:rgba(73,24,47,.94);
  --text-ink-primary-muted:rgba(73,24,47,.86);
  --text-ink-primary-subtle:rgba(73,24,47,.78);
  --text-ink-primary-faint:rgba(73,24,47,.72);
  --text-ink-primary-kicker:rgba(73,24,47,.64);

  --programme-ink-title:rgba(73,24,47,.8);
  --programme-ink-event:rgba(73,24,47,.96);
  --programme-ink-event-soft:rgba(73,24,47,.9);
  --programme-ink-time:rgba(73,24,47,.78);
  --programme-ink-time-strong:rgba(73,24,47,.84);
  --programme-ink-time-soft:rgba(73,24,47,.72);
  --paper:#ffffff;

  --hairline:rgba(122,90,95,.12);
  --shell-border:rgba(214,194,154,.22);

  --shadow-soft: 0 18px 60px rgba(23,35,56,.08);
  --radius-shell:26px;
  --radius-card:22px;
  --measure-card-compact:34ch;
  --measure-copy-regular:48ch;
  --measure-copy-medium:54ch;
  --measure-copy-wide:58ch;
  --measure-copy-xwide:62ch;
  --measure-copy-story:72ch;
  --color-danger:#b42318;

  /* hauteur header (sert à calculer le hero plein écran) */
  --header-h: 74px;

  /* =========================
     TYPO TOKENS
     ========================= */
  --font-body: "Mulish", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --font-serif: "Arsenica", "Cormorant Garamond", serif;
  --font-script: "Great Vibes", cursive;

  /* micro-rythme luxe */
  --body-lh: 1.68;
  --body-tracking: .01em;
}

/* =========================
   PAGE TRANSITIONS
   ========================= */
html.js body{
  animation:page-enter .38s ease both;
}

@keyframes page-enter{
  from{ opacity:0; transform:translateY(7px) }
  to{   opacity:1; transform:translateY(0)   }
}

html.js body.is-leaving{
  opacity:0;
  transform:translateY(-5px);
  transition:opacity .24s ease, transform .24s ease;
  pointer-events:none;
}

/* =========================
   BASE
   ========================= */
*{box-sizing:border-box}
html,body{
  margin:0;padding:0;
  background:var(--bg-main);
  color:var(--txt);
  font-family:var(--font-body);
  font-weight:400;
  line-height:var(--body-lh);
  letter-spacing:var(--body-tracking);
  scroll-behavior:smooth;
}

html:focus-within{
  scroll-behavior:smooth;
}

a{color:var(--link-color);text-decoration:none}
a:hover{text-decoration:underline}

strong{font-weight:600}

a, button, input, select, textarea, iframe, video{
  transition:outline-color .2s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease, transform .2s ease;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
iframe:focus-visible,
video:focus-visible{
  outline:3px solid var(--focus-outline);
  outline-offset:3px;
  box-shadow:0 0 0 6px var(--focus-ring);
}

.skip-link{
  position:absolute;
  left:16px;
  top:-48px;
  z-index:200;
  padding:10px 14px;
  border-radius:999px;
  background:var(--signature);
  color:var(--btn-primary-text);
  font-weight:600;
  text-decoration:none;
}

.skip-link:focus{
  top:14px;
}

.rsvp-honeypot{
  display:none;
}

/* =========================
   LAYOUT
   ========================= */
.container{
  width:100%;
  max-width:1100px;
  margin:0 auto;
  padding:24px 60px; 
}

.grid{display:grid;gap:18px}
.grid.cols-2{grid-template-columns:1fr 1fr}
@media(max-width:900px){.grid.cols-2{grid-template-columns:1fr}}

/* Sections respirent */
section{padding:64px 0}

/* Fonds de section — guide d'utilisation :
   section-main  → ivoire neutre  (#FFFAF5)  — fond par défaut, sections libres
   section-alt-1 → crème chaud    (#FCF6EF)  — alternance légère (programme home, lieu, infos)
   section-alt-2 → crème soutenu  (#F7F1E7)  — contraste plus marqué (non utilisé)
   section-plum-1 → voile bordeaux .04 — pages secondaires (galerie, infos hero)
   section-plum-2 → voile bordeaux .06 — pages principales (programme, lieu, rsvp home)
   section-plum-3 → voile bordeaux .08 — formulaires (rsvp page dédiée) */
.section-main{ background:var(--bg-main); }
.section-alt-1{ background:var(--bg-alt-1); }
.section-alt-2{ background:var(--bg-alt-2); }
.section-plum-1{ background:var(--bg-plum-tint-1); }
.section-plum-2{ background:var(--bg-plum-tint-2); }
.section-plum-3{ background:var(--bg-plum-tint-3); }

/* Texture décorative — section RSVP (home + page dédiée) */
#rsvp,
section.rsvp-page-section{
  background:
    linear-gradient(
      var(--bg-alt-1) 0%,
      rgba(252,246,239,.82) 14%,
      rgba(252,246,239,.82) 86%,
      var(--bg-alt-1) 100%
    ),
    url('./media/texture-programme.jpg') center / cover no-repeat;
}

:is(.section-plum-1, .section-plum-2, .section-plum-3) .card{
  background:var(--surface-glass-soft);
  border-color:var(--border-soft);
}

.section-plum-2 .card{
  background:var(--surface-card-strong);
}

.section-plum-3 .card{
  background:var(--surface-glass-premium);
}

/* =========================
   FULL PAGE (bord à bord)
   ========================= */
.site-shell{
  width:100%;
  margin:0;
  border-radius:0;
  border-left:0;
  border-right:0;
}

[data-header-component]{
  display:block;
  position:sticky;
  top:0;
  z-index:80;
}

/* =========================
   TYPO
   ========================= */
h1,h2{margin:0}

/* HERO script (bijou) */
h1.script{
  font-family:var(--font-script);
  font-weight:400;
  letter-spacing:.20px;
  font-size:clamp(52px,6.6vw,110px);
  line-height:1.00;
}

/* Titres édito */
h1:not(.script),h2,h3{
  font-family:var(--font-serif);
}

h2{
  font-weight:500;                 /* luxe = pas 700 */
  font-size:clamp(28px,3.2vw,40px);
  position:relative;
  margin-bottom:18px;
  color:var(--text-ink-primary);
  letter-spacing:.01em;
}

h3{
  font-weight:500;
  color:var(--text-ink-primary);
}

h2::after{
  content:"";
  display:block;
  width:84px;
  height:1px;
  background:rgba(214,194,154,.85);
  margin-top:12px;
  border-radius:2px;
  opacity:.95;
}

.muted{color:var(--muted)}

/* pastilles */
.pill{
  display:inline-block;
  padding:7px 12px;
  border-radius:999px;
  background:var(--surface-panel);
  border:1px solid var(--border-strong);
  color:var(--text-ink-primary);
  font-weight:600;
  font-size:14px;
  backdrop-filter:var(--blur-soft);
  -webkit-backdrop-filter:var(--blur-soft);
}

/* =========================
   BUTTONS (CTA bordeaux grège)
   ========================= */
.btn{
  display:inline-block;
  padding:12px 20px;
  border-radius:999px;

  background:var(--btn-primary-bg);
  color:var(--btn-primary-text);
  border:1px solid var(--btn-primary-border);

  font-weight:600; /* luxe discret */
  letter-spacing:.04em;
  text-transform:uppercase; /* bijou */
  font-size:12px;

  transition:transform .2s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease;
  box-shadow:0 10px 26px rgba(122,90,95,.18);
}
.btn:hover{
  transform:translateY(-1px);
  filter:brightness(.98);
  border-color:var(--btn-primary-border);
  box-shadow:0 14px 32px rgba(122,90,95,.22);
}

.btn-outline{
  background:var(--btn-hero-secondary-bg);
  color:var(--btn-hero-secondary-text); /* sur hero */
  border:1px solid var(--btn-hero-secondary-border);
  box-shadow:none;
}
.btn-outline:hover{background:rgba(255,255,255,.10)}

/* Variante outline en header (fond papier) */
.site-header .btn-outline{
  color:var(--text-ink-primary);
  border:1px solid var(--btn-secondary-border);
  background:var(--btn-secondary-bg);
  backdrop-filter:var(--blur-soft);
  -webkit-backdrop-filter:var(--blur-soft);
  text-transform:none;
  letter-spacing:.02em;
  font-size:13px;
}
.site-header .btn-outline:hover{background:var(--surface-panel-strong)}

/* Variante champagne (footer cagnotte) */
.btn-champagne{
  background:var(--accent-gold);
  color:var(--signature);
  border-color:var(--accent-gold);
  box-shadow:0 8px 22px rgba(73,24,47,.16);
  white-space:nowrap;
  flex-shrink:0;
}
.btn-champagne:hover{
  background:var(--gold-2);
  border-color:var(--gold-2);
  color:var(--signature);
}

/* Bouton désactivé — visible mais non cliquable */
.btn-disabled{
  cursor:default;
  pointer-events:none;
  opacity:.68;
  user-select:none;
}

/* Variante outline sur fond clair (hors header) */
.btn-outline-on-light{
  color:var(--text-ink-primary);
  border:1px solid var(--btn-secondary-border);
  background:var(--btn-secondary-bg);
  box-shadow:none;
}
.btn-outline-on-light:hover{background:var(--surface-panel-strong)}

/* Variante outline sur fond bordeaux */
.btn-outline-on-dark{
  color:#FFFAF5;
  border:1px solid rgba(255,250,245,.40);
  background:transparent;
  box-shadow:none;
}
.btn-outline-on-dark:hover{
  background:rgba(255,250,245,.08);
  border-color:rgba(224,192,143,.70);
  color:#FFFAF5;
}

/* =========================
   CARDS (papier)
   ========================= */
.card{
  background:var(--surface-card);
  border:1px solid var(--border-soft);
  border-radius:var(--radius-card);
  padding:20px;
  box-shadow:none;
  backdrop-filter:var(--blur-soft);
  -webkit-backdrop-filter:var(--blur-soft);
}

/* =========================
   FOOTER
   ========================= */
.footer{
  padding:0;
  color:var(--footer-text);
  border-top:1px solid rgba(214,194,154,.18);
  background:var(--footer-bg);
}

.footer-main{
  padding-top:44px;
  padding-bottom:24px;
}

.footer-grid{
  display:grid;
  grid-template-columns:1.3fr 1fr 1fr 1fr;
  gap:28px;
  align-items:start;
}

.footer-brand-block{
  max-width:34ch;
}

.footer-kicker{
  margin:0 0 10px;
  color:rgba(214,194,154,.96);
  text-transform:uppercase;
  letter-spacing:.16em;
  font-size:11px;
}

.footer-brand{
  margin:0 0 10px;
  font-family:var(--font-script);
  font-size:clamp(36px,4vw,50px);
  line-height:1;
  color:var(--footer-text);
}

.footer-date{
  margin:0 0 14px;
  color:rgba(214,194,154,.92);
  letter-spacing:.08em;
  text-transform:uppercase;
  font-size:12px;
}

.footer-closing{
  margin:0;
  color:var(--footer-muted);
  line-height:1.75;
}

.footer-closing,
.footer-note{ display:none; }

.footer-column{
  display:grid;
  gap:10px;
}

.footer-title{
  margin:0 0 4px;
  color:rgba(214,194,154,.96);
  font-family:var(--font-serif);
  font-size:18px;
  font-weight:500;
}

.footer-title::after{
  display:none;
}

.footer-title-link{
  display:block;
  text-decoration:none;
  transition:opacity .18s;
}
.footer-title-link:hover{
  opacity:.72;
}

.address-link{
  display:block;
  text-decoration:none;
  color:inherit;
  transition:opacity .18s;
}
.address-link:hover{
  opacity:.72;
}

.footer-column p{
  margin:0;
  color:var(--footer-muted);
  line-height:1.55;
}

.footer-note{
  color:rgba(255,250,245,.58);
  font-size:14px;
  line-height:1.65;
}

.footer a{
  color:var(--footer-text);
  text-decoration:none;
}

.footer a:hover{
  color:rgba(214,194,154,.98);
  text-decoration:underline;
  text-underline-offset:4px;
}

.footer-links{
  display:grid;
  gap:7px;
  margin:0;
  padding:0;
  list-style:none;
}

.footer-links li{
  margin:0;
}

.footer-bottom{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  margin-top:36px;
  padding-top:18px;
  border-top:1px solid var(--footer-border);
  color:rgba(255,250,245,.62);
  font-size:14px;
}

.footer-bottom p{
  margin:0;
}

/* =========================
   FOOTER — structure 3 colonnes
   ========================= */
.footer-light-grid{
  display:grid;
  grid-template-columns:1.3fr 1fr 1fr;
  gap:48px;
  align-items:start;
}
.footer-cagnotte{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:32px;
  margin-top:32px;
  padding:24px 0;
  border-top:1px solid var(--footer-border);
  border-bottom:1px solid var(--footer-border);
}
.footer-cagnotte-copy{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.footer-cagnotte-title{
  margin:0;
  font-family:var(--font-serif);
  font-size:17px;
  font-weight:400;
  color:var(--footer-text);
}
.footer-cagnotte-text{
  margin:0;
  font-size:14px;
  color:var(--footer-muted);
  max-width:54ch;
  line-height:1.6;
}
.footer-bottom-light{
  margin-top:20px;
  padding-top:16px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  color:rgba(255,250,245,.62);
}
.footer-mini-nav{
  display:flex;
  gap:22px;
  flex-wrap:wrap;
}
.footer-mini-nav a{
  color:var(--footer-muted);
  font-size:14px;
}
.footer-mini-nav a:hover{
  color:var(--footer-text);
}

/* =========================
   HEADER (sticky) — Brand gauche / Nav centre / RSVP droite
   ========================= */
.site-header{
  position:relative;
  top:auto;
  z-index:auto;
  background:var(--surface-header);
  backdrop-filter:blur(10px) saturate(1.1);
  -webkit-backdrop-filter:blur(10px) saturate(1.1);
  border-bottom:1px solid var(--border-soft);
  height:var(--header-h);
}

.site-header.scrolled{
  background:var(--surface-header-strong);
  border-bottom-color:var(--border-strong);
  box-shadow:0 10px 28px rgba(23,35,56,.06);
}

/* Structure: gauche / centre / droite */
.header-inner{
  height:100%;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:center;
  padding:20px 64px;
  column-gap:40px;
}

/* Brand */
.site-header .brand{
  justify-self:start;
  font-family:var(--font-script);
  font-weight:400;
  color:var(--text-ink-primary);
  font-size:1.65rem;
  letter-spacing:.3px;
  text-decoration:none;
  line-height:1;
  white-space:nowrap;
}
.site-header .brand:hover{opacity:.92}

/* Navigation */
.site-header .nav{
  justify-self:center;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:68px;
}

.site-header .nav a{
  color:var(--muted);
  font-family:var(--font-serif);
  font-size:1rem;
  font-weight:400;
  letter-spacing:.04em;
  text-decoration:none;
  white-space:nowrap;
}
.site-header .nav a:hover{color:var(--text-ink-primary);opacity:.92}
.site-header .nav a.active{
  text-decoration:underline;
  text-underline-offset:6px;
}

main{
  display:block;
}

/* CTA */
.header-rsvp{
  justify-self:end;
  white-space:nowrap;
  margin-left:8px;
}

/* =========================
   NAV TOGGLE (hamburger)
   ========================= */
.nav-toggle{
  display:none;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:5px;
  width:40px;
  height:40px;
  padding:8px;
  background:none;
  border:none;
  cursor:pointer;
  color:var(--text-ink-primary);
  border-radius:6px;
  justify-self:end;
}
.nav-toggle:hover{background:var(--surface-panel)}
.nav-toggle span{
  display:block;
  width:20px;
  height:1.5px;
  background:currentColor;
  transition:transform .22s ease, opacity .18s ease;
  transform-origin:center;
}
.nav-toggle[aria-expanded="true"] span:nth-child(1){
  transform:translateY(6.5px) rotate(45deg);
}
.nav-toggle[aria-expanded="true"] span:nth-child(2){
  opacity:0;
}
.nav-toggle[aria-expanded="true"] span:nth-child(3){
  transform:translateY(-6.5px) rotate(-45deg);
}

/* =========================
   MOBILE NAV PANEL
   ========================= */
.mobile-nav{
  display:none;
  background:var(--surface-header-strong);
  border-top:1px solid var(--border-soft);
  padding:0 20px 20px;
}
.site-header.menu-open .mobile-nav{display:block}
.mobile-nav a:not(.btn){
  display:block;
  padding:13px 0;
  color:var(--muted);
  text-decoration:none;
  font-size:1rem;
  letter-spacing:.03em;
  border-bottom:1px solid var(--border-soft);
}
.mobile-nav a:not(.btn):last-of-type{border-bottom:0}
.mobile-nav a:not(.btn):hover,
.mobile-nav a:not(.btn).active{color:var(--text-ink-primary)}
.mobile-nav a:not(.btn).active{
  text-decoration:underline;
  text-underline-offset:5px;
}
.mobile-nav .mobile-nav-cta{
  margin-top:16px;
  width:100%;
  display:flex;
  justify-content:center;
}

/* =========================
   HERO VIDEO — FULL SCREEN
   ========================= */
.hero-video{
  padding:0;
  position:relative;
  background:#000;
  overflow:hidden;

  height:calc(100vh - var(--header-h));
  height:calc(100svh - var(--header-h));
  min-height:620px;
}

.hero-video video{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  border:0;
  filter:saturate(0.92) contrast(0.98);
  transform:translateZ(0);
  backface-visibility:hidden;
  will-change:transform;
}

/* Overlay */
.hero-video .overlay{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:32px 24px 48px;
  color:#fff;
  background:linear-gradient(
    180deg,
    rgba(0,0,0,.18),
    rgba(0,0,0,.10) 42%,
    rgba(0,0,0,.22)
  );
}

/* Hero card */
.hero-card{
  background:transparent;
  border:0;
  box-shadow:none;
  padding:0;
  max-width:760px;
  position:relative;
  isolation:isolate;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  transform:translateY(2vh);
}

.hero-card::before{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:min(92vw, 760px);
  height:clamp(360px, 62vh, 640px);
  transform:translate(-50%, -50%);
  border-radius:999px;
  background:radial-gradient(
    ellipse at center,
    rgba(255,250,245,.12) 0%,
    rgba(255,250,245,.08) 36%,
    rgba(255,250,245,.04) 62%,
    rgba(255,250,245,0) 100%
  );
  filter:blur(26px);
  opacity:.92;
  z-index:-1;
  pointer-events:none;
}

/* Hero typography */
.hero-card h1.script{
  color:rgba(255,255,255,.94);
  text-shadow:0 18px 45px rgba(0,0,0,.22);
}

/* Hero logo (remplace le titre texte) */
.hero-logo{
  display:block;
  width:clamp(616px,54vw,858px);
  max-height:68vh;
  height:auto;
  object-fit:contain;
  filter:brightness(0) invert(1);
  margin-top:-10%;
  margin-bottom:-10%;
}

.hero-kicker{
  margin:0 0 8px;
  color:rgba(255,250,245,.84);
  font-family:var(--font-body);
  font-size:13px;
  font-weight:600;
  letter-spacing:.24em;
  line-height:1.2;
  text-transform:uppercase;
}

/* Hero meta */
.hero-video .date{
  color:rgba(255,255,255,.78);
  letter-spacing:.13em;
  text-transform:uppercase;
  font-size:12px;
  line-height:1.4;
}
.hero-video .date-above{
  margin:0 0 28px;
}
.hero-video .date-below{
  margin:28px 0 0;
  font-size:11px;
  letter-spacing:.18em;
  color:rgba(255,255,255,.60);
}

/* Hero actions */
.overlay .cta{
  margin-top:16px;
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  justify-content:center;
}

/* =========================
   COUNTDOWN (sur hero)
   ========================= */
#countdown{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  margin-top:14px;
}

#countdown .cd-box{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  background:rgba(0,0,0,.18);
  border:1px solid rgba(214,194,154,.40);
  border-radius:999px;
  padding:12px 22px;
  min-width:80px;
  color:#fff;
}

#countdown .cd-box .num{
  font-size:22px;
  font-weight:600;     /* luxe discret */
  line-height:1;
  margin-bottom:3px;
}

#countdown .cd-box div:last-child{
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:.11em;
  color:rgba(255,255,255,.78);
}

.overlay .cta .btn{
  padding:12px 22px;
}

/* =========================
   HOMEPAGE — ESPRIT DU WEEK-END
   ========================= */
.weekend-spirit-section{
  position:relative;
}

.weekend-spirit{
  position:relative;
  max-width:1040px;
  margin:0 auto;
  padding:52px 56px 54px;
  text-align:center;
  isolation:isolate;
}

.weekend-spirit::before{
  content:"";
  position:absolute;
  inset:12px 0;
  border-radius:32px;
  background:linear-gradient(
    180deg,
    rgba(255,250,245,.62),
    rgba(255,250,245,.74)
  );
  border:1px solid rgba(214,194,154,.14);
  filter:blur(8px);
  opacity:.92;
  z-index:-2;
}

.weekend-spirit::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:min(94%, 900px);
  height:72%;
  transform:translate(-50%, -50%);
  border-radius:999px;
  background:radial-gradient(
    ellipse at center,
    rgba(122,90,95,.07) 0%,
    rgba(122,90,95,.04) 48%,
    rgba(122,90,95,0) 100%
  );
  filter:blur(24px);
  z-index:-1;
  pointer-events:none;
}

.weekend-spirit-tag{
  position:absolute;
  top:0;
  right:18px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:auto;
  padding:0;
  color:rgba(42,42,42,.58);
  font-size:11px;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
}

.weekend-spirit-kicker{
  margin:0 0 16px;
  color:var(--text-ink-primary-kicker);
  font-size:11px;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
}

.weekend-spirit h2{
  max-width:14ch;
  margin:0 auto;
  color:var(--text-ink-primary-soft);
  font-family:var(--font-serif);
  font-weight:500;
  font-size:clamp(2.2rem, 3.5vw, 3.2rem);
  line-height:1.06;
  text-wrap:balance;
}

.weekend-spirit h2::after{
  margin:18px auto 0;
}

.weekend-spirit-copy{
  display:grid;
  gap:12px;
  max-width:56ch;
  margin:20px auto 0;
}

.weekend-spirit-copy p{
  margin:0;
  color:rgba(42,42,42,.82);
  font-size:17px;
  line-height:1.82;
}

/* =========================
   TIMELINE (table éditorial)
   ========================= */
.timeline{display:grid;gap:0}
.timeline .item{
  display:grid;
  grid-template-columns:160px 1fr;
  gap:16px;
  align-items:start;
  padding:22px 0;
  border-top:1px solid var(--hairline);
  opacity:1;
  transform:none;
  transition:opacity .55s ease, transform .55s ease;
}
.timeline .item:first-child{border-top:0}

.js .timeline .item{
  opacity:0;
  transform:translateY(18px);
}

.js .timeline .item.revealed{
  opacity:1;
  transform:none;
}

.timeline .time{
  color:var(--muted);
  font-weight:400;
  letter-spacing:.06em;
  text-transform:uppercase;
  font-size:12px;
}

/* =========================
   PROGRAMME — jours (luxe discret)
   ========================= */
.timeline-days .day{ padding:10px 0 6px; }

.timeline-days .day + .day{
  margin-top:6px;
  padding-top:18px;
  border-top:1px solid var(--border-soft);
}

.timeline-days .day-title{
  font-family:var(--font-serif);
  font-weight:500;
  color:var(--text-ink-primary);
  letter-spacing:.12em;
  text-transform:uppercase;
  font-size:12px;
  margin:6px 0 12px;
}

.timeline-days .item{ padding:18px 0; }

/* =========================
   PROGRAMME PAGE
   ========================= */
.programme-shell{
  max-width:1000px;
}

.programme-intro{
  margin-bottom:42px;
}

.programme-intro .pill{
  padding:0;
  border:0;
  border-radius:0;
  background:none;
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
  color:var(--muted);
  font-size:11px;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
}

.programme-page-title{
  font-family:var(--font-serif);
  text-transform:uppercase;
  font-weight:500;
  letter-spacing:.18em;
}

.programme-intro p{
  max-width:var(--measure-copy-xwide);
  margin:0;
}

.programme-days{
  display:grid;
  gap:42px;
}

.programme-day{
  padding:0;
  overflow:visible;
  position:relative;
  background:transparent;
  border:0;
  box-shadow:none;
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
}

.programme-day + .programme-day{
  padding-top:40px;
  border-top:1px solid rgba(214,194,154,.18);
}

.programme-day-head{
  display:grid;
  grid-template-columns:1fr auto;
  gap:22px;
  align-items:start;
  padding:0 8px 22px;
  border-bottom:0;
  background:none;
}

.programme-day-marker{
  display:flex;
  align-items:flex-start;
  justify-content:flex-end;
  padding-top:14px;
}

.programme-day-marker span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:auto;
  padding:0;
  border-radius:0;
  border:0;
  background:none;
  color:var(--muted);
  letter-spacing:.24em;
  text-transform:uppercase;
  font-size:9px;
  font-weight:600;
  opacity:.78;
}

.programme-day-copy{
  display:grid;
  gap:12px;
}

.programme-day-head h3{
  margin:0;
  font-family:var(--font-script);
  font-weight:400;
  color:var(--programme-ink-title);
  font-size:clamp(32px,3.8vw,46px);
  line-height:1.06;
  white-space:normal;
}

.programme-day-name{
  margin:0;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.22em;
  font-size:14px;
  font-weight:600;
}

.programme-day-head p.muted{
  margin:2px 0 0;
  max-width:var(--measure-copy-regular);
  font-size:14.5px;
  line-height:1.78;
}

.programme-list{
  display:grid;
  position:relative;
  padding:2px 0 0;
}

.programme-list::before{
  content:"";
  position:absolute;
  top:0;
  bottom:0;
  left:50%;
  width:2px;
  transform:translateX(-50%);
  background:linear-gradient(180deg, rgba(122,90,95,.12), rgba(122,90,95,.34), rgba(122,90,95,.14));
  opacity:.82;
}

.programme-event{
  --programme-time-line: 13.8px;
  --programme-node-size: 11px;
  --programme-node-offset-y: 0px;
  display:grid;
  grid-template-columns:minmax(0, 1fr) 34px minmax(0, 1fr);
  gap:12px 24px;
  align-items:start;
  position:relative;
  padding:14px 0;
  border-top:0;
  background:transparent;
  border-radius:0;
  box-shadow:none;
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
}

.programme-event:first-child{
  border-top:0;
}

.programme-axis{
  grid-column:2;
  position:relative;
  align-self:stretch;
  min-height:100%;
}

.programme-axis::before{
  display:none;
}

.programme-axis span,
.programme-axis::after{
  display:none;
}

.programme-node{
  display:none;
}

.programme-event-highlight .programme-node{
  display:none;
}

.programme-event-highlight{
  --programme-node-size: 14px;
}

.programme-event-soft .programme-node{
  border-color:rgba(122,90,95,.2);
}

.programme-time{
  display:flex;
  align-items:center;
  min-height:var(--programme-time-line);
  margin-bottom:7px;
  color:var(--programme-ink-time);
  letter-spacing:.22em;
  text-transform:uppercase;
  font-size:11.5px;
  line-height:var(--programme-time-line);
  font-weight:600;
}

.programme-time::before,
.programme-time::after{
  content:"";
  display:block;
  width:28px;
  height:2px;
  background:rgba(122,90,95,.34);
}

.programme-panel{
  grid-column:1;
  display:grid;
  gap:0;
  min-width:0;
  max-width:37ch;
  justify-self:end;
  padding:0 36px 0 0;
  border-radius:0;
  background:none;
  border:0;
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
  position:relative;
}

.programme-event:nth-child(odd) .programme-time{
  justify-content:flex-end;
  gap:12px;
}

.programme-event:nth-child(odd) .programme-time::before{
  display:none;
}

.programme-event:nth-child(even) .programme-panel{
  grid-column:3;
  justify-self:start;
  padding:0 0 0 36px;
}

.programme-event:nth-child(even){
  --programme-node-offset-y: 3px;
}

.programme-event:nth-child(even) .programme-time{
  justify-content:flex-start;
  gap:12px;
}

.programme-event:nth-child(even) .programme-time::after{
  display:none;
}

.programme-event:nth-child(odd) .programme-panel{
  text-align:right;
}

.programme-event:nth-child(odd) .programme-content{
  flex-direction:row-reverse;
  justify-content:flex-start;
  padding-right:0;
}

.programme-event:nth-child(even) .programme-panel{
  text-align:left;
}

.programme-content{
  display:flex;
  gap:14px;
  align-items:center;
  min-width:0;
  padding-left:0;
}

.programme-icon{
  --programme-icon-shift-y: 0px;
  --programme-icon-scale: 1;
  display:flex;
  align-items:center;
  justify-content:center;
  width:84px;
  height:84px;
  color:rgba(214,194,154,.72);
  line-height:0;
  align-self:center;
}

.programme-event:nth-child(odd) .programme-icon{
  flex:0 0 84px;
}

.programme-icon svg{
  display:block;
  width:84px;
  height:84px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.2;
  stroke-linecap:round;
  stroke-linejoin:round;
  overflow:visible;
  transform:translateY(var(--programme-icon-shift-y)) scale(var(--programme-icon-scale));
  transform-origin:center;
}

.programme-copy{
  display:grid;
  gap:5px;
  min-width:0;
  flex:1 1 auto;
  align-self:center;
}

.programme-event:nth-child(odd) .programme-copy{
  justify-items:end;
}

.programme-icon--home{ --programme-icon-shift-y: -1px; }
.programme-icon--rings{ --programme-icon-shift-y: -1px; --programme-icon-scale: .95; }
.programme-icon--camera{ --programme-icon-shift-y: 0px; --programme-icon-scale: .93; }
.programme-icon--glass{ --programme-icon-shift-y: 1px; --programme-icon-scale: .95; }
.programme-icon--dining{ --programme-icon-shift-y: 0px; --programme-icon-scale: .94; }
.programme-icon--cake{ --programme-icon-shift-y: -1px; --programme-icon-scale: .95; }
.programme-icon--music{ --programme-icon-shift-y: 0px; --programme-icon-scale: .96; }
.programme-icon--breakfast{ --programme-icon-shift-y: -2px; --programme-icon-scale: .96; }
.programme-icon--leisure{ --programme-icon-shift-y: 0px; --programme-icon-scale: .95; }
.programme-icon--departure{ --programme-icon-shift-y: -6px; --programme-icon-scale: .92; }

.programme-content strong{
  color:var(--programme-ink-event);
  font-family:"Cormorant Garamond", var(--font-serif);
  font-weight:500;
  font-size:clamp(1.3rem, 1.82vw, 1.56rem);
  line-height:1.12;
  letter-spacing:.01em;
  text-transform:none;
}

.programme-meta{
  color:var(--muted);
  font-size:11px;
  line-height:1.46;
  letter-spacing:.01em;
  font-style:italic;
}

.programme-event-highlight .programme-panel{
  background:none;
  border-color:transparent;
}

.programme-event-soft .programme-panel{
  background:none;
}

.programme-event-minimal .programme-panel{
  background:none;
  border-color:transparent;
}

.programme-event-highlight .programme-time{
  color:var(--programme-ink-time-strong);
}

.programme-event-highlight .programme-icon{
  color:rgba(214,194,154,.8);
}

.programme-event-minimal .programme-copy strong{
  color:var(--programme-ink-event-soft);
}

.programme-event-soft .programme-time,
.programme-event-minimal .programme-time{
  color:var(--programme-ink-time-soft);
}

/* =========================
   PORTRAIT ÉDITORIAL — LES FUTURS MARIÉS
   ========================= */
.couple-intro-section{
  padding:72px 0 80px;
}

.couple-intro-grid{
  display:grid;
  grid-template-columns:0.92fr 1.08fr;
  gap:48px;
  align-items:center;
}

.couple-intro-visual{
  margin:0;
  padding:10px;
  border-radius:28px;
  position:relative;
  background:linear-gradient(
    180deg,
    rgba(255,250,245,.82),
    rgba(247,241,231,.68)
  );
  border:1px solid rgba(224,192,143,.12);
  box-shadow:0 24px 70px rgba(73,24,47,.08);
}

.couple-intro-visual::after{
  content:"";
  position:absolute;
  inset:10px;
  border-radius:22px;
  pointer-events:none;
  z-index:1;
  background:
    linear-gradient(to right,  rgba(252,246,239,.92) 0%, transparent 22%),
    linear-gradient(to left,   rgba(252,246,239,.92) 0%, transparent 22%),
    linear-gradient(to bottom, rgba(252,246,239,.86) 0%, transparent 18%),
    linear-gradient(to top,    rgba(252,246,239,.86) 0%, transparent 18%),
    radial-gradient(ellipse at 0% 0%,     rgba(252,246,239,.96) 0%, transparent 32%),
    radial-gradient(ellipse at 100% 0%,   rgba(252,246,239,.96) 0%, transparent 32%),
    radial-gradient(ellipse at 0% 100%,   rgba(252,246,239,.96) 0%, transparent 32%),
    radial-gradient(ellipse at 100% 100%, rgba(252,246,239,.96) 0%, transparent 32%);
}

.couple-intro-visual img{
  display:block;
  width:100%;
  height:auto;
  border-radius:22px;
}

.couple-intro-kicker{
  font-family:var(--font-body);
  font-size:12px;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:rgba(73,24,47,.64);
  margin:0 0 16px;
}

.couple-intro-copy h2{
  font-family:var(--font-serif);
  font-size:clamp(42px,4.1vw,62px);
  font-weight:400;
  line-height:1.08;
  letter-spacing:-.01em;
  color:var(--text-ink-primary);
  margin:0;
  max-width:12.5ch;
}

.couple-intro-lead{
  margin:22px 0 0;
  color:rgba(73,24,47,.76);
  font-family:"Cormorant Garamond", serif;
  font-size:clamp(20px,2vw,26px);
  line-height:1.42;
}

.couple-intro-text{
  display:flex;
  flex-direction:column;
  gap:14px;
  margin-top:24px;
  margin-bottom:0;
}

.couple-intro-text p{
  font-size:16px;
  line-height:1.72;
  color:rgba(73,24,47,.70);
}

.couple-intro-cta{
  margin-top:24px;
  color:var(--signature);
  border-color:rgba(224,192,143,.72);
  background:rgba(255,250,245,.42);
}

.couple-intro-cta:hover{
  background:rgba(224,192,143,.14);
  border-color:rgba(224,192,143,.88);
}

@media(min-width:901px){
  .couple-intro-visual{
    transform:translateY(18px);
  }
}


/* =========================
   À RETENIR — SECTION BORDEAUX
   ========================= */
.retenir-section{
  background:var(--signature);
  padding:44px 0;
}

.retenir-section .retenir-label{
  color:var(--accent-gold);
}

.retenir-section .retenir-fact-key{
  color:rgba(224,192,143,.68);
}

.retenir-section .retenir-fact strong{
  color:#FFFAF5;
}

.retenir-section .retenir-divider{
  background:rgba(224,192,143,.22);
}

.retenir-section .cal-dropdown-menu{
  background:var(--signature);
  border-color:rgba(224,192,143,.30);
  box-shadow:0 12px 40px rgba(0,0,0,.30);
}

.retenir-section .cal-dropdown-item{
  color:#FFFAF5;
}

.retenir-section .cal-dropdown-item:hover,
.retenir-section .cal-dropdown-item:focus-visible{
  background:rgba(255,250,245,.08);
}

.retenir-section .cal-dropdown-item + .cal-dropdown-item{
  border-top-color:rgba(224,192,143,.16);
}

/* =========================
   À RETENIR BAR (accueil)
   ========================= */
.retenir-bar{
  display:flex;
  align-items:center;
  gap:28px;
  flex-wrap:wrap;
  padding:6px 0;
}
.retenir-label{
  font-family:var(--font-body);
  font-size:10px;
  font-weight:600;
  letter-spacing:.20em;
  text-transform:uppercase;
  color:var(--text-ink-primary-kicker);
  margin:0;
  white-space:nowrap;
}
.retenir-facts{
  display:flex;
  align-items:center;
  gap:20px;
  flex:1;
  flex-wrap:wrap;
}
.retenir-fact{
  display:flex;
  flex-direction:column;
  gap:1px;
}
.retenir-fact-key{
  font-family:var(--font-body);
  font-size:9.5px;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.14em;
  color:rgba(73,24,47,.46);
}
.retenir-fact strong{
  font-size:13.5px;
  font-weight:600;
  color:var(--text-ink-primary);
}
.retenir-divider{
  width:1px;
  height:30px;
  background:rgba(122,90,95,.16);
  flex-shrink:0;
}
.retenir-actions{
  display:flex;
  align-items:center;
  gap:10px;
  flex-shrink:0;
  flex-wrap:wrap;
}

/* Dropdown calendrier */
.cal-dropdown{
  position:relative;
}
.cal-dropdown > summary{
  list-style:none;
  cursor:pointer;
}
.cal-dropdown > summary::-webkit-details-marker{
  display:none;
}
.cal-dropdown-menu{
  position:absolute;
  top:calc(100% + 6px);
  right:0;
  min-width:220px;
  background:var(--bg);
  border:1px solid var(--border-strong);
  border-radius:12px;
  box-shadow:0 8px 28px rgba(23,35,56,.12);
  overflow:hidden;
  z-index:50;
}
.cal-dropdown-item{
  display:block;
  padding:11px 16px;
  font-size:13.5px;
  font-family:var(--font-body);
  color:var(--text-ink-primary);
  text-decoration:none;
  transition:background .15s;
}
.cal-dropdown-item:hover,
.cal-dropdown-item:focus-visible{
  background:var(--bg-alt-1);
  outline:none;
}
.cal-dropdown-item + .cal-dropdown-item{
  border-top:1px solid var(--border-soft);
}

/* =========================
   HOME FAQ / ACCORDION
   ========================= */
.home-faq-head{
  text-align:center;
  max-width:52ch;
  margin:0 auto 48px;
}
.home-faq-head h2{
  margin:12px 0 10px;
}
.home-accordion{
  max-width:660px;
  margin:0 auto;
}
.home-accordion-item{
  border-bottom:1px solid var(--border-soft);
}
.home-accordion-item:first-child{
  border-top:1px solid var(--border-soft);
}
.home-accordion-item > summary{
  list-style:none;
  cursor:pointer;
  padding:18px 0;
  font-family:var(--font-serif);
  font-size:17px;
  color:var(--text-ink-primary);
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  user-select:none;
  transition:color .18s;
}
.home-accordion-item > summary::-webkit-details-marker{ display:none; }
.home-accordion-item > summary::after{
  content:'';
  display:inline-block;
  width:9px;
  height:9px;
  border-right:1.5px solid var(--text-ink-primary-kicker);
  border-bottom:1.5px solid var(--text-ink-primary-kicker);
  transform:rotate(45deg) translateY(-3px);
  flex-shrink:0;
  transition:transform .25s ease, border-color .18s;
}
.home-accordion-item[open] > summary::after{
  transform:rotate(-135deg) translateY(-3px);
}
.home-accordion-item > summary:hover{
  color:var(--signature);
}
.home-accordion-content{
  padding:2px 0 22px;
  animation:accordion-open .22s ease both;
}
@keyframes accordion-open{
  from{ opacity:0; transform:translateY(-6px); }
  to{   opacity:1; transform:translateY(0); }
}
.home-accordion-content p{
  color:var(--muted);
  line-height:var(--body-lh);
  margin:0 0 10px;
  max-width:var(--measure-copy-medium);
}
.home-accordion-content p:last-child{ margin:0; }
.home-accordion-content .text-link,
.home-accordion-content .btn{
  display:inline-block;
  margin-top:14px;
}

/* Accordéon à item unique (cagnotte index) */
.home-accordion--single{
  max-width:660px;
  margin:0 auto;
}

/* Cagnotte card (infos.html) */
.cagnotte-card{
  max-width:600px;
}
.cagnotte-card h2{
  margin:10px 0 16px;
}
.cagnotte-card p{
  color:var(--muted);
  max-width:var(--measure-copy-medium);
  line-height:var(--body-lh);
  margin:0;
}
.cagnotte-cta{
  margin-top:24px;
  display:inline-block;
}

/* Lien textuel (utilisé dans accordion et contenu éditorial) */
.text-link{
  color:var(--link-color);
  font-size:13.5px;
  font-weight:600;
  text-decoration:underline;
  text-underline-offset:3px;
  text-decoration-color:rgba(73,24,47,.28);
  transition:text-decoration-color .18s;
}
.text-link:hover{
  text-decoration-color:rgba(73,24,47,.82);
}

/* =========================
   INFOS
   ========================= */
.infos-kicker{
  margin:0 0 12px;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.16em;
  font-size:11px;
  font-weight:600;
}

.infos-section-head{
  display:grid;
  gap:10px;
  margin-bottom:24px;
}

.infos-section-head h2{
  margin-bottom:0;
}

.infos-section-head p{
  margin:0;
  max-width:var(--measure-copy-xwide);
}

.infos-section-head-compact{
  margin-bottom:28px;
}

.infos-stay-grid{
  align-items:center;
  gap:22px;
}

.infos-stay-copy{
  padding:28px 30px 32px;
}

.infos-stay-copy h2{
  margin-bottom:20px;
}

.infos-stay-copy h2::after{
  margin-top:14px;
}

.infos-stay-copy p{
  margin:0;
  max-width:var(--measure-copy-medium);
  line-height:1.86;
}

.infos-stay-copy p + p{
  margin-top:14px;
}

.infos-stay-visual{
  padding:0;
  overflow:hidden;
}

.infos-stay-visual img{
  display:block;
  width:100%;
  height:100%;
  min-height:420px;
  object-fit:cover;
}

.infos-experience-card{
  padding:42px 32px;
  text-align:center;
}

.infos-experience-card h2{
  margin-bottom:18px;
}

.infos-experience-card h2::after{
  margin-left:auto;
  margin-right:auto;
}

.infos-experience-card p{
  margin:0 auto;
  max-width:var(--measure-copy-story);
  line-height:1.86;
}

.infos-experience-card p + p{
  margin-top:16px;
}

.infos-access-grid{
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:18px;
}

.infos-access-card{
  padding:24px 24px 22px;
}

.infos-access-mode{
  margin:0 0 18px;
  color:var(--text-ink-primary);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:12px;
  font-weight:600;
}

.infos-access-list{
  display:grid;
  gap:12px;
  margin:0;
  padding:0;
  list-style:none;
}

.infos-access-list li{
  color:var(--muted);
  line-height:1.7;
}

.infos-access-list strong{
  color:var(--txt);
  font-weight:600;
}

.infos-access-note{
  margin:22px 0 0;
  max-width:var(--measure-copy-wide);
}

.infos-journey-card{
  padding:30px 28px 32px;
}

.infos-journey-grid{
  display:grid;
  grid-template-columns:repeat(5, minmax(0, 1fr));
  gap:14px;
}

.infos-journey-item{
  display:grid;
  gap:4px;
  padding:18px 12px 16px;
  text-align:center;
  border-radius:18px;
  border:1px solid rgba(214,194,154,.16);
  background:rgba(255,250,245,.46);
}

.infos-journey-item strong{
  color:var(--text-ink-primary);
  font-family:var(--font-body);
  font-weight:600;
  font-size:clamp(22px, 2.6vw, 32px);
  line-height:1;
  letter-spacing:-.01em;
}

.infos-journey-item span{
  color:var(--txt);
  font-weight:600;
}

.infos-journey-item small{
  color:var(--muted);
  font-size:13px;
  line-height:1.55;
}

/* Section "Sur place" — infos domaine */
.infos-domain-card{
  padding:32px 28px 36px;
}

.practical-list{
  display:grid;
  gap:24px;
  margin-top:24px;
}

.practical-item strong{
  display:block;
  color:var(--text-ink-primary);
  font-weight:600;
  margin-bottom:6px;
}

.practical-item p{
  color:var(--txt);
  line-height:1.65;
  margin:0;
}

.practical-item a{
  color:var(--accent);
  text-decoration:underline;
  text-underline-offset:2px;
}

/* =========================
   LIEU / GALERIE
   ========================= */
.gallery img{
  width:100%;
  border-radius:14px;
  display:block;
  margin-bottom:12px;
}

.gallery-teaser{
  min-height:100%;
  display:flex;
  flex-direction:column;
  justify-content:center;
}

/* Hero lieu */
.lieu-hero-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:18px;
  align-items:start;
  grid-template-areas:
    "header header"
    "intro gallery"
    "story story";
}

.lieu-section-head{
  grid-area:header;
  padding:4px 2px 8px;
}

.lieu-gallery-card{
  grid-area:gallery;
  padding:0;
  overflow:hidden;
  align-self:start;
  height:100%;
}

.lieu-intro-card{
  grid-area:intro;
  align-self:start;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:22px 28px 28px;
  height:100%;
}

.lieu-intro-kicker{
  margin:0 0 10px;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.16em;
  font-size:11px;
  font-weight:600;
}

.lieu-intro-title{
  margin:0 0 20px;
  font-family:var(--font-script);
  font-weight:400;
  font-size:clamp(52px, 6.3vw, 86px);
  line-height:1;
  letter-spacing:.01em;
  color:var(--text-ink-primary);
}

.lieu-intro-title::after{
  display:none;
}

.lieu-intro-card p{
  max-width:var(--measure-copy-medium);
  font-size:17px;
  line-height:1.92;
}

.lieu-intro-card p + p{
  margin-top:16px;
}

.lieu-intro-card .muted{
  margin-top:20px;
  max-width:var(--measure-copy-regular);
}

.lieu-story-card{
  grid-area:story;
  padding:24px 26px 26px;
}

.lieu-story-card h2{
  margin-bottom:16px;
}

.lieu-story-card p{
  max-width:var(--measure-copy-story);
  line-height:1.82;
}

.lieu-story-card p + p{
  margin-top:12px;
}

.lieu-experiences-card{
  padding:28px 30px 34px;
}

.lieu-experiences-intro{
  max-width:60ch;
  margin:0 0 20px;
  line-height:1.8;
}

/* Acces au domaine */
.lieu-access-grid{
  align-items:start;
  gap:22px;
}

.lieu-access-copy{
  display:grid;
  gap:0;
  align-content:start;
}

.lieu-access-kicker{
  margin:0 0 12px;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.16em;
  font-size:11px;
  font-weight:600;
}

.lieu-access-copy h2{
  margin-bottom:18px;
}

.lieu-access-copy h2::after{
  margin-top:14px;
}

.lieu-access-place{
  margin:0 0 6px;
  color:var(--text-ink-primary);
  font-family:var(--font-serif);
  font-size:clamp(1.36rem, 2vw, 1.7rem);
  line-height:1.18;
}

.lieu-access-address{
  margin:0 0 18px;
  color:var(--muted);
  font-size:15px;
  line-height:1.7;
}

.lieu-access-intro{
  margin:0;
  max-width:var(--measure-copy-medium);
  line-height:1.84;
}

.lieu-map-card{
  display:grid;
  gap:16px;
  padding:18px;
  background:rgba(255,250,245,.82);
  box-shadow:0 18px 40px rgba(42,42,42,.05);
}

.lieu-map-shell{
  padding:12px;
  border-radius:20px;
  border:1px solid rgba(214,194,154,.18);
  background:rgba(122,90,95,.04);
}

.lieu-map-link{
  justify-self:start;
}

/* Prestations panorama */
.lieu-features-panorama{
  display:grid;
  grid-template-columns:repeat(12, minmax(0, 1fr));
  gap:16px 12px;
  padding-top:10px;
}

.lieu-feature-item{
  position:relative;
  min-height:188px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:18px 14px;
  color:var(--text-ink-primary);
}

.lieu-feature-item p{
  position:relative;
  z-index:1;
  margin:0;
  max-width:14ch;
  font-family:var(--font-body);
  font-size:clamp(17px, 1.8vw, 22px);
  line-height:1.32;
  letter-spacing:.01em;
}

.lieu-feature-icon{
  position:absolute;
  left:50%;
  top:50%;
  width:132px;
  height:132px;
  transform:translate(-50%, -50%);
  color:rgba(42,42,42,.12);
  pointer-events:none;
}

.lieu-feature-item-park{
  grid-column:1 / span 4;
  grid-row:1;
}

.lieu-feature-item-lodging{
  grid-column:9 / span 4;
  grid-row:1;
}

.lieu-feature-item-chalets{
  grid-column:1 / span 4;
  grid-row:2;
}

.lieu-feature-item-pool{
  grid-column:8 / span 5;
  grid-row:2;
}

.lieu-feature-item-wellness{
  grid-column:4 / span 6;
  grid-row:3;
  min-height:170px;
}

/* Slideshow */
.lieu-gallery{
  position:relative;
  min-height:100%;
  background:linear-gradient(180deg, rgba(255,250,245,.94), rgba(255,250,245,.84));
}

.lieu-gallery-stage{
  position:relative;
  min-height:0;
  aspect-ratio:1 / 1;
  overflow:hidden;
  background:rgba(122,90,95,.08);
  isolation:isolate;
}

.lieu-gallery-slide{
  position:absolute;
  inset:0;
  margin:0;
  overflow:hidden;
  will-change:transform;
  backface-visibility:hidden;
  transform:translateZ(0);
}

.lieu-gallery-media{
  position:absolute;
  inset:-4%;
  will-change:transform;
  backface-visibility:hidden;
  transform:translateZ(0);
}

.lieu-gallery-slide img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transform:scale(1.02);
}

.lieu-gallery-slide::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg, rgba(28,18,20,.05), rgba(28,18,20,.18));
  pointer-events:none;
}

.lieu-gallery-panel{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  z-index:2;
  display:flex;
  justify-content:center;
  align-items:end;
  padding:22px 22px 28px;
  background:linear-gradient(180deg, rgba(28,18,20,0), rgba(28,18,20,.46));
}

.lieu-gallery-status{
  display:grid;
  justify-items:center;
  width:min(100%, 420px);
}

.lieu-gallery-dots{
  display:flex;
  gap:10px;
  width:100%;
  overflow-x:auto;
  padding-bottom:2px;
  justify-content:center;
  scrollbar-width:none;
  overscroll-behavior-x:contain;
  scroll-behavior:smooth;
}

.lieu-gallery-dots::-webkit-scrollbar{
  display:none;
}

.lieu-gallery-dot{
  position:relative;
  flex:0 0 52px;
  width:52px;
  height:52px;
  overflow:hidden;
  border:1px solid rgba(255,250,245,.24);
  border-radius:12px;
  padding:0;
  background:rgba(255,250,245,.18);
  cursor:pointer;
  box-shadow:none;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}

.lieu-gallery-dot img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transform:scale(1.04);
  transition:transform .28s ease;
}

.lieu-gallery-dot::after{
  content:"";
  position:absolute;
  inset:0;
  background:rgba(28,18,20,.26);
  transition:background .24s ease, box-shadow .24s ease, border-color .24s ease;
}

.lieu-gallery-dot.is-active{
  border-color:rgba(255,250,245,.66);
  box-shadow:0 0 0 1px rgba(255,250,245,.18);
}

.lieu-gallery-dot.is-active img{
  transform:scale(1);
}

.lieu-gallery-dot.is-active::after{
  background:rgba(28,18,20,.04);
}

/* Lightbox */
.lightbox{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.72);
  display:none;
  align-items:center;
  justify-content:center;
  padding:24px;
  z-index:90;
}
.lightbox.open{display:flex}
.lightbox img{
  max-width:92vw;
  max-height:92vh;
  border-radius:16px;
  box-shadow:0 12px 40px rgba(0,0,0,.4);
}
.lightbox .close{
  position:absolute;
  top:16px;
  right:16px;
  background:var(--surface-card-premium);
  border:1px solid var(--border-strong);
  border-radius:999px;
  padding:8px 12px;
  font-weight:600;
  color:var(--text-ink-primary);
}

/* =========================
   FEEDBACK UI
   ========================= */
.toast{
  position:fixed;
  left:50%;
  bottom:24px;
  z-index:120;
  transform:translate(-50%, 16px);
  min-width:min(92vw, 320px);
  padding:12px 16px;
  border-radius:16px;
  border:1px solid var(--border-strong);
  background:var(--toast-bg);
  color:var(--text-ink-primary);
  text-align:center;
  box-shadow:0 18px 48px rgba(23,35,56,.12);
  backdrop-filter:var(--blur-medium);
  -webkit-backdrop-filter:var(--blur-medium);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .24s ease, transform .24s ease, visibility .24s ease;
}

.toast.show{
  opacity:1;
  visibility:visible;
  transform:translate(-50%, 0);
}

.ring{
  position:fixed;
  left:50%;
  top:50%;
  z-index:110;
  width:22px;
  height:22px;
  margin:-11px 0 0 -11px;
  border-radius:999px;
  border:2px solid rgba(214,194,154,.18);
  border-top-color:var(--signature);
  opacity:0;
  pointer-events:none;
}

.ring.show{
  animation:ring-spin .9s linear forwards;
}

@keyframes ring-spin{
  0%{
    opacity:0;
    transform:scale(.8) rotate(0deg);
  }
  12%{
    opacity:1;
  }
  100%{
    opacity:0;
    transform:scale(1) rotate(360deg);
  }
}

.map{
  width:100%;
  min-height:360px;
  border:0;
  border-radius:16px;
}

.placeholder-text{
  color:var(--muted);
  font-style:italic;
}

/* =========================
   RSVP RAPPEL (accueil — remplace le formulaire)
   ========================= */
.rsvp-reminder-section{
  padding:64px 0;
}

.rsvp-reminder{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:32px;
  flex-wrap:wrap;
}

.rsvp-reminder-kicker{
  font-family:var(--font-body);
  font-size:11px;
  font-weight:600;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--signature);
  margin:0 0 12px;
}

.rsvp-reminder-heading{
  font-family:var(--font-serif);
  font-size:clamp(1.8rem,3vw,2.4rem);
  font-weight:400;
  line-height:1.1;
  color:var(--text-ink-primary);
  margin:0 0 10px;
}

.rsvp-reminder-deadline{
  font-size:14px;
  color:var(--text-ink-secondary);
  margin:0;
}

/* =========================
   RSVP FALLBACK CONTACT (rsvp.html)
   ========================= */
.rsvp-fallback-section{
  padding:32px 0 40px;
  border-top:1px solid var(--border-soft);
}

.rsvp-fallback{
  max-width:560px;
}

.rsvp-fallback-label{
  font-family:var(--font-body);
  font-size:11px;
  font-weight:600;
  letter-spacing:.20em;
  text-transform:uppercase;
  color:var(--text-ink-secondary);
  margin:0 0 8px;
}

.rsvp-fallback-text{
  font-size:15px;
  line-height:1.7;
  color:var(--text-ink-secondary);
  margin:0;
}

/* =========================
   RSVP
   ========================= */
.rsvp-shell{
  max-width:980px;
}

.rsvp-loading{
  text-align:center;
  color:var(--muted);
}

.rsvp-page-section{
  background:linear-gradient(180deg, #FCF6EF, #FFFAF5);
}

.card.rsvp-intro{
  display:grid;
  grid-template-columns:1.6fr .9fr;
  gap:22px;
  margin-bottom:20px;
  align-items:end;
  position:relative;
  overflow:hidden;
  isolation:isolate;
  background:rgba(122,90,95,.4);
  border-color:rgba(214,194,154,.24);
  box-shadow:0 18px 40px rgba(122,90,95,.12);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.card.rsvp-intro::before{
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(180deg, rgba(255,250,245,.06), rgba(255,250,245,.02)),
    radial-gradient(circle at top right, rgba(255,250,245,.12), transparent 46%);
  pointer-events:none;
  z-index:0;
}

.card.rsvp-intro > *{
  position:relative;
  z-index:1;
}

.card.rsvp-intro .rsvp-intro-copy p{
  max-width:var(--measure-copy-wide);
  margin:0;
  color:rgba(73,24,47,.58);
  font-weight:500;
}

.card.rsvp-intro .pill{
  background:rgba(255,250,245,.12);
  border-color:rgba(214,194,154,.26);
  color:#FFFAF5;
}

.card.rsvp-intro h2{
  color:#FFFAF5;
}

.card.rsvp-intro h2::after{
  background:rgba(214,194,154,.72);
}

.card.rsvp-intro .rsvp-intro-meta{
  display:grid;
  gap:12px;
  align-self:stretch;
}

.card.rsvp-intro .rsvp-meta-block{
  padding:18px 22px;
  border-radius:18px;
  border:1px solid rgba(73,24,47,.10);
  background:rgba(255,250,245,.38);
  backdrop-filter:var(--blur-soft);
  -webkit-backdrop-filter:var(--blur-soft);
}

.card.rsvp-intro .rsvp-meta-label{
  display:block;
  margin-bottom:6px;
  color:rgba(73,24,47,.52);
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:11px;
}

.card.rsvp-intro strong{
  color:#FFFAF5;
}

.card.rsvp-intro .rsvp-meta-block strong{
  color:#49182F;
}

.card.rsvp-intro .rsvp-meta-block .pill{
  color:#49182F;
  background:rgba(255,250,245,.42);
  border-color:rgba(73,24,47,.10);
  padding:12px 18px;
  line-height:1.45;
}

.card.rsvp-intro .muted{
  color:rgba(73,24,47,.66);
}

.card.rsvp-form{
  padding:28px;
  background:rgba(122,90,95,.4);
  border-color:rgba(214,194,154,.26);
  box-shadow:0 18px 40px rgba(122,90,95,.06);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.rsvp-stack{
  display:grid;
  gap:22px;
}

.rsvp-section,
.rsvp-submit-zone{
  padding:22px;
  border-radius:20px;
  border:1px solid var(--border-soft);
  background:linear-gradient(180deg, var(--surface-card), var(--surface-panel));
  backdrop-filter:var(--blur-medium);
  -webkit-backdrop-filter:var(--blur-medium);
}

.rsvp-hidden{
  display:none !important;
}

.rsvp-progressive.rsvp-hidden{
  display:none;
}

.rsvp-section-head{
  margin-bottom:16px;
}

.rsvp-section-head h3,
.rsvp-submit-zone h3{
  margin:0 0 6px;
  font-family:var(--font-serif);
  font-weight:500;
  color:var(--text-ink-primary);
  font-size:clamp(20px,2.2vw,28px);
}

.rsvp-section-head p,
.rsvp-submit-zone p{
  margin:0;
}

.rsvp-fields{
  display:grid;
  gap:16px;
}

.rsvp-fields-2{
  grid-template-columns:repeat(2, minmax(0, 1fr));
}

.rsvp-field{
  display:grid;
  gap:8px;
  font-weight:600;
  color:var(--text-ink-primary);
}

.rsvp-field-message{
  min-height:20px;
  color:#b56d73;
  font-size:13px;
  line-height:1.45;
  font-weight:400;
}

.rsvp-field-message:empty{
  min-height:0;
}

.rsvp-field-full{
  grid-column:1 / -1;
}

.rsvp-input{
  width:100%;
  min-height:52px;
  padding:13px 15px;
  border:1px solid var(--input-border);
  border-radius:14px;
  background:var(--input-bg);
  color:var(--txt);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35);
}

.rsvp-input::placeholder{
  color:var(--input-placeholder);
}

.rsvp-input:hover{
  border-color:rgba(214,194,154,.62);
}

.rsvp-native-control{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0, 0, 0, 0);
  white-space:nowrap;
  border:0;
}

.rsvp-presence-options{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:14px;
}

.rsvp-choice{
  display:block;
}

.rsvp-choice input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}

.rsvp-choice-card{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:7px;
  min-height:112px;
  padding:18px;
  border-radius:18px;
  border:1px solid rgba(73,24,47,.10);
  background:rgba(255,250,245,.48);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.32),
    0 8px 20px rgba(73,24,47,.035);
  cursor:pointer;
  transition:border-color .2s ease, box-shadow .2s ease, transform .2s ease, background .2s ease;
  backdrop-filter:var(--blur-soft);
  -webkit-backdrop-filter:var(--blur-soft);
}

.rsvp-choice:hover .rsvp-choice-card{
  background:rgba(255,250,245,.62);
  border-color:rgba(73,24,47,.22);
}

.rsvp-choice-card strong{
  color:var(--text-ink-primary);
}

.rsvp-choice-card span{
  color:var(--muted);
  font-size:14px;
  line-height:1.55;
}

.rsvp-choice input:checked + .rsvp-choice-card{
  background:linear-gradient(135deg, rgba(255,250,245,.82), rgba(224,192,143,.14));
  border-color:rgba(73,24,47,.42);
  box-shadow:
    0 0 0 2px rgba(73,24,47,.12),
    0 10px 26px rgba(73,24,47,.07);
  transform:translateY(-1px);
}

.rsvp-choice input:checked + .rsvp-choice-card::after{
  content:"✓";
  position:absolute;
  top:14px;
  right:16px;
  width:22px;
  height:22px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:#49182F;
  color:#FFFAF5;
  font-size:13px;
  font-weight:700;
}

.rsvp-choice input:focus-visible + .rsvp-choice-card{
  outline:3px solid var(--focus-outline);
  outline-offset:3px;
}

.rsvp-progressive{
  margin-top:16px;
  padding:18px;
  border-radius:18px;
  background:var(--surface-panel-strong);
  border:1px solid var(--border-soft);
  backdrop-filter:var(--blur-soft);
  -webkit-backdrop-filter:var(--blur-soft);
}

.rsvp-subsection-title{
  margin-bottom:10px;
  color:var(--text-ink-primary);
  font-weight:600;
}

.rsvp-day-options{
  display:grid;
  gap:10px;
}

.rsvp-check{
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:10px 12px;
  border-radius:14px;
  background:var(--surface-card);
}

.rsvp-check input{
  margin-top:4px;
}

.rsvp-guests{
  display:grid;
  gap:14px;
}

.rsvp-guests-note{
  color:var(--muted);
  margin:0;
}

.rsvp-guests-note.is-alert{
  color:var(--color-danger);
}

.rsvp-guest-grid{
  display:grid;
  gap:14px;
}

.rsvp-guest-card{
  padding:18px;
  border-radius:18px;
  border:1px solid var(--input-border);
  background:var(--surface-card-premium);
  backdrop-filter:var(--blur-soft);
  -webkit-backdrop-filter:var(--blur-soft);
}

.rsvp-guest-head{
  margin-bottom:12px;
  color:var(--text-ink-primary);
  font-weight:700;
}

.rsvp-guest-fields{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:12px;
}

.rsvp-submit-zone{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:18px;
  flex-wrap:wrap;
}

.rsvp-submit-copy{
  max-width:var(--measure-copy-medium);
}

.rsvp-submit-actions{
  display:flex;
  justify-content:flex-start;
}

.rsvp-submit-button{
  min-width:220px;
  padding:13px 24px;
  justify-content:center;
  align-items:center;
  display:inline-flex;
  gap:10px;
}

.rsvp-submit-button .loader,
.rsvp-submit-button .check{
  display:none;
}

.rsvp-submit-button.is-loading{
  cursor:wait;
  transform:none;
  box-shadow:0 10px 26px rgba(122,90,95,.12);
}

.rsvp-submit-button.is-loading .loader{
  display:inline-block;
  width:14px;
  height:14px;
  border-radius:999px;
  border:2px solid rgba(255,255,255,.32);
  border-top-color:#fff;
  animation:rsvp-spin .8s linear infinite;
}

.rsvp-submit-button.is-success{
  background:#6b7f64;
  border-color:#6b7f64;
  box-shadow:0 12px 28px rgba(107,127,100,.18);
}

.rsvp-submit-button.is-success .check{
  display:inline-block;
}

.rsvp-submit-button:disabled{
  opacity:1;
}

.rsvp-note{
  margin:2px 0 0;
  padding:14px 16px;
  width:100%;
  border-radius:16px;
  border:1px solid transparent;
  background:var(--surface-card);
  display:none;
}

.rsvp-note.is-visible{
  display:block;
}

.rsvp-note.is-success{
  color:#50614b;
  background:rgba(107,127,100,.10);
  border-color:rgba(107,127,100,.22);
}

.rsvp-note.is-loading,
.rsvp-note.is-info{
  color:var(--text-ink-primary-muted);
  background:rgba(255,250,245,.76);
  border-color:rgba(214,194,154,.24);
}

.rsvp-note.is-error{
  color:#8c3b42;
  background:rgba(140,59,66,.08);
  border-color:rgba(140,59,66,.18);
}

.rsvp-privacy{
  margin:10px 0 0;
  font-size:11.5px;
  color:rgba(73,24,47,.38);
  text-align:center;
}

/* RSVP — palette raffinée */
.card.rsvp-intro,
.card.rsvp-form{
  background:rgba(122,90,95,.18);
  border:1px solid rgba(255,250,245,.28);
  box-shadow:0 28px 70px rgba(73,24,47,.10);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}

.rsvp-section,
.rsvp-submit-zone{
  background:rgba(255,250,245,.50);
  border:1px solid rgba(255,250,245,.34);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35);
}

.rsvp-section h3,
.rsvp-submit-zone h3,
.card.rsvp-intro h2{
  color:#49182F;
}

.rsvp-section .muted,
.rsvp-submit-zone .muted,
.card.rsvp-intro .muted{
  color:rgba(73,24,47,.66);
}

.rsvp-field-message,
.rsvp-note{
  color:rgba(73,24,47,.58);
}

.rsvp-field{
  color:#49182F;
}

.rsvp-input{
  background:rgba(255,250,245,.30);
  border:1px solid rgba(73,24,47,.20);
  color:#49182F;
}

.rsvp-input::placeholder{
  color:rgba(73,24,47,.42);
}

.rsvp-input:hover{
  background:rgba(255,250,245,.34);
  border-color:rgba(73,24,47,.28);
}

.rsvp-input:focus,
.rsvp-input:focus-visible{
  background:rgba(255,250,245,.56);
  border-color:rgba(224,192,143,.95);
  outline:none;
  box-shadow:
    0 0 0 4px rgba(224,192,143,.22),
    0 8px 24px rgba(73,24,47,.06);
}

@keyframes rsvp-spin{
  to{ transform:rotate(360deg); }
}

/* =========================
   FORM INPUTS (style cohérent)
   ========================= */
input, select, textarea{ font-family:inherit; }

input, select, textarea, button{
  font-size:16px;
}

button{
  cursor:pointer;
}

/* =========================
   RESPONSIVE
   ========================= */
/* =========================
   RESPONSIVE <= 900px
   ========================= */
@media (max-width: 900px){
  :root{ --header-h: auto; }

  .site-header{
    height:auto;
  }

  .header-inner{
    grid-template-columns:1fr auto;
    justify-items:start;
    align-items:center;
    height:auto;
    padding:14px 20px;
    row-gap:0;
  }

  .site-header .nav{ display:none; }
  .header-rsvp{ display:none; }
  .nav-toggle{ display:flex; }
  .site-header .brand{ font-size:1.4rem; }

  .footer-grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:24px 22px;
  }

  .footer-brand-block{
    max-width:none;
    grid-column:1 / -1;
  }

  .footer-light-grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:24px 22px;
  }

  .footer-light-grid .footer-brand-block{
    grid-column:1 / -1;
  }

  .footer-cagnotte{
    flex-direction:column;
    align-items:flex-start;
    gap:20px;
  }
  .footer-cagnotte .btn-champagne{
    width:100%;
    text-align:center;
  }

  .footer-bottom{
    flex-direction:column;
    align-items:flex-start;
  }

  .couple-intro-section{
    padding:56px 0 64px;
  }

  .couple-intro-grid{
    grid-template-columns:1fr;
    gap:32px;
  }

  .couple-intro-visual{
    transform:none;
    max-width:520px;
    margin:0 auto;
  }

  .couple-intro-copy h2{
    max-width:none;
  }

  .timeline .item{ grid-template-columns:1fr; gap:8px; }
  .hero-video{
    height:calc(100svh - 60px);
    min-height:500px;
  }

  .hero-logo{
    width:clamp(308px,64vw,572px);
    max-height:55vh;
  }

  .hero-card{
    max-width:min(86vw,660px);
    transform:translateY(1vh);
  }

  .hero-video .date-above{ margin-bottom:20px; }
  .hero-video .date-below{ margin-top:20px; }
  .overlay .cta{ margin-top:14px; }

  .weekend-spirit{
    max-width:900px;
    padding:46px 38px 50px;
  }

  .weekend-spirit::before{
    inset:12px 0;
  }

  .weekend-spirit-copy{
    max-width:48ch;
  }

  .programme-day-head{
    grid-template-columns:1fr;
    gap:14px;
    padding:0 0 24px;
  }

  .programme-day-head h3{
    font-size:clamp(36px,7.4vw,48px);
    line-height:1.04;
    white-space:normal;
  }

  .programme-day-marker{
    justify-content:flex-start;
    padding-top:0;
  }

  .programme-days{
    gap:38px;
  }

  .programme-day + .programme-day{
    padding-top:36px;
  }
  
  .programme-event{
    --programme-time-line: 13px;
    grid-template-columns:minmax(0, 1fr) 28px minmax(0, 1fr);
    gap:12px 18px;
    padding:13px 0;
  }

  .programme-event:nth-child(even){
    --programme-node-offset-y: 2px;
  }

  .programme-panel{
    max-width:32ch;
    padding-right:28px;
  }

  .programme-event:nth-child(even) .programme-panel{
    padding-left:28px;
  }

  .programme-time::before,
  .programme-time::after{
    width:20px;
  }

  .programme-content{
    gap:10px;
    padding-left:0;
  }

  .programme-event:nth-child(odd) .programme-content{
    padding-right:0;
  }

  .programme-icon{
    flex-basis:56px;
  }

  .programme-icon,
  .programme-icon svg{
    width:56px;
    height:56px;
  }

  .programme-icon--departure{ --programme-icon-shift-y: -4px; }

  .infos-stay-grid,
  .infos-access-grid,
  .infos-journey-grid{
    grid-template-columns:1fr;
  }

  .infos-stay-visual img{
    min-height:340px;
  }

  .infos-experience-card{
    padding:34px 28px;
  }

  .infos-journey-card{
    padding:26px 24px 28px;
  }

  .rsvp-intro,
  .rsvp-presence-options,
  .rsvp-fields-2,
  .rsvp-guest-fields,
  .rsvp-submit-zone{
    grid-template-columns:1fr;
    flex-direction:column;
    align-items:stretch;
  }

  .lieu-gallery-stage{
    min-height:0;
    aspect-ratio:1 / 1;
  }

  .lieu-hero-grid{
    grid-template-columns:1fr;
    align-items:start;
    grid-template-areas:
      "header"
      "intro"
      "gallery"
      "story";
  }

  .lieu-gallery-panel{
    justify-content:center;
  }

  .lieu-gallery-status{
    width:100%;
    justify-items:center;
  }

  .lieu-gallery-dots{
    justify-content:center;
  }

  .lieu-intro-card{
    align-self:start;
    padding:24px;
    height:auto;
  }

  .lieu-gallery-card{
    align-self:start;
    height:auto;
  }

  .lieu-intro-title{
    font-size:clamp(46px, 11vw, 68px);
  }

  .lieu-intro-card p{
    max-width:none;
    font-size:16px;
  }

  .lieu-story-card{
    padding:22px 24px 24px;
  }

  .lieu-story-card p{
    max-width:none;
  }

  .lieu-experiences-card{
    padding:24px 24px 20px;
  }

  .lieu-features-panorama{
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:10px 6px;
  }

  .lieu-feature-item,
  .lieu-feature-item-wellness{
    grid-column:auto;
    grid-row:auto;
    min-height:172px;
  }

  .lieu-feature-item p{
    max-width:15ch;
  }

  .lieu-feature-icon{
    width:120px;
    height:120px;
  }
}

/* =========================
   RESPONSIVE <= 600px — hero mobile
   ========================= */
@media (max-width: 600px){
  /* Rétablit une valeur numérique pour que calc() fonctionne
     (--header-h:auto hérité depuis <=900px invalide les calc) */
  :root{ --header-h: 56px; }

  .hero-video{
    height:calc(100vh - var(--header-h));
    height:calc(100svh - var(--header-h));
    min-height:560px;
  }

  .hero-video .overlay{
    padding:24px 18px 36px;
  }

  .hero-card{
    max-width:92vw;
    transform:translateY(0);
  }

  .hero-logo{
    width:min(88vw, 408px);
    max-height:42vh;
  }

  .hero-kicker{
    margin:0 0 5px;
    font-size:11px;
    letter-spacing:.20em;
  }

  .hero-video .date{
    font-size:10.5px;
    letter-spacing:.10em;
    line-height:1.45;
  }
  .hero-video .date-above{ margin-bottom:16px; }
  .hero-video .date-below{ margin-top:16px; }

  #countdown{
    margin-top:10px;
    gap:7px;
  }

  #countdown .cd-box{
    min-width:66px;
    padding:9px 16px;
  }

  #countdown .cd-box .num{
    font-size:20px;
  }

  #countdown .cd-box div:last-child{
    font-size:9px;
  }

  .overlay .cta{
    width:100%;
    flex-direction:column;
    align-items:center;
    margin-top:14px;
    gap:10px;
  }

  .overlay .cta .btn{
    width:100%;
    max-width:280px;
    text-align:center;
  }

  .rsvp-submit-button{
    width:100%;
  }

  .rsvp-reminder{
    flex-direction:column;
    align-items:flex-start;
    gap:24px;
  }

  .rsvp-reminder-cta{
    width:100%;
    text-align:center;
  }

  .couple-intro-visual{
    padding:8px;
    border-radius:22px;
  }

  .couple-intro-visual::after{
    inset:8px;
    border-radius:18px;
  }

  .couple-intro-visual img{
    border-radius:18px;
  }

  .couple-intro-copy h2{
    font-size:clamp(34px,10vw,44px);
    max-width:none;
  }

  .couple-intro-lead{
    font-size:clamp(18px,5vw,22px);
  }

  .couple-intro-text{
    gap:12px;
  }

  .couple-intro-text p{
    font-size:15.5px;
  }

  .couple-intro-cta{
    width:100%;
    text-align:center;
  }

  .retenir-bar{
    flex-direction:column;
    align-items:flex-start;
    gap:14px;
  }
  .retenir-divider{ display:none; }
  .retenir-actions{
    width:100%;
    flex-direction:column;
  }
  .retenir-actions .btn,
  .retenir-actions .cal-dropdown{
    width:100%;
  }
  .retenir-actions .cal-dropdown > summary{
    width:100%;
    text-align:center;
  }
  .cal-dropdown-menu{
    left:0;
    right:0;
    min-width:0;
  }
}

/* =========================
   RESPONSIVE <= 520px
   ========================= */
@media (max-width: 520px){
  :root{ --header-h: auto; }

  section{ padding:56px 0; }
  .container{ padding:20px; }

  .header-inner{ padding:12px 14px; }

  .overlay .cta{
    flex-direction:column;
    align-items:stretch;
  }

  .hero-card::before{
    width:min(96vw, 620px);
    height:clamp(320px, 54vh, 520px);
    filter:blur(22px);
  }

  .infos-stay-copy{
    padding:24px 22px 26px;
  }

  .infos-stay-visual img{
    min-height:280px;
  }

  .infos-experience-card{
    padding:28px 22px;
  }

  .infos-access-card,
  .infos-journey-card{
    padding:22px 20px;
  }

  .infos-journey-grid{
    gap:10px;
  }

  .weekend-spirit{
    padding:40px 22px 44px;
  }

  .weekend-spirit::before{
    inset:10px 0;
    border-radius:24px;
  }

  .weekend-spirit::after{
    width:92%;
    height:78%;
  }

  .weekend-spirit-kicker{
    margin-bottom:14px;
    font-size:10px;
    letter-spacing:.2em;
  }

  .weekend-spirit-tag{
    right:12px;
    font-size:10px;
    letter-spacing:.16em;
  }

  .weekend-spirit h2{
    max-width:12ch;
    font-size:clamp(1.9rem, 8vw, 2.4rem);
  }

  .weekend-spirit-copy{
    max-width:36ch;
    gap:12px;
    margin-top:18px;
  }

  .weekend-spirit-copy p{
    font-size:16px;
    line-height:1.76;
  }

  .lieu-intro-card{
    align-self:start;
    padding:22px 20px 24px;
  }

  .lieu-intro-title{
    font-size:48px;
  }

  .lieu-intro-card p{
    font-size:15.5px;
    line-height:1.84;
  }

  .lieu-section-head{
    padding-bottom:6px;
  }

  .lieu-story-card{
    padding:20px;
  }

  .lieu-access-intro{
    max-width:none;
  }

  .lieu-map-card{
    padding:16px;
  }

  .lieu-map-shell{
    padding:10px;
  }

  .lieu-experiences-card{
    padding:22px 20px 10px;
  }

  .lieu-features-panorama{
    grid-template-columns:1fr;
    gap:2px;
  }

  .lieu-feature-item,
  .lieu-feature-item-wellness{
    min-height:154px;
  }

  .lieu-feature-item p{
    font-size:18px;
    max-width:16ch;
  }

  .lieu-feature-icon{
    width:108px;
    height:108px;
  }

  .hero-logo{
    width:min(82vw, 330px);
    max-height:37vh;
  }

  .hero-kicker{
    font-size:10px;
    letter-spacing:.18em;
    margin-bottom:7px;
  }

  #countdown .cd-box{
    min-width:60px;
    padding:8px 14px;
  }

  #countdown .cd-box .num{
    font-size:19px;
  }

  .map{
    min-height:280px;
  }

  .footer-main{
    padding-top:44px;
    padding-bottom:24px;
  }

  .footer-grid,
  .footer-light-grid{
    grid-template-columns:1fr;
    gap:22px;
  }

  .footer-light-grid .footer-brand-block{
    grid-column:auto;
  }

  .footer-mini-nav{
    gap:14px;
  }

  .footer-brand{
    font-size:42px;
  }

  .programme-day-head{
    padding:0 0 18px;
  }

  .programme-list{
    padding:2px 0 0;
  }

  .programme-list::before{
    left:11px;
    transform:none;
  }

  .programme-day-marker{
    justify-content:flex-start;
    padding-top:0;
  }

  .programme-event{
    --programme-time-line: 12px;
    grid-template-columns:22px minmax(0, 1fr);
    gap:12px;
    padding:13px 0;
  }

  .programme-event:nth-child(even){
    --programme-node-offset-y: 0px;
  }

  .programme-axis{
    grid-column:1;
    position:relative;
    align-self:stretch;
    min-height:100%;
  }

  .programme-axis::before{
    display:none;
  }

  .programme-panel,
  .programme-event:nth-child(even) .programme-panel,
  .programme-event:nth-child(odd) .programme-panel{
    grid-column:2;
    justify-self:start;
    max-width:none;
    text-align:left;
    padding:0 0 0 18px;
    transform:none;
  }

  .programme-time{
    justify-content:flex-start;
    gap:8px;
  }

  .programme-time::before,
  .programme-time::after{
    width:22px;
  }

  .programme-time::after,
  .programme-event:nth-child(even) .programme-time::after,
  .programme-event:nth-child(odd) .programme-time::after{
    display:none;
  }

  .programme-time{
    margin-bottom:6px;
    font-size:10px;
    letter-spacing:.18em;
  }

  .programme-content{
    gap:9px;
    padding-left:0;
  }

  .programme-event:nth-child(odd) .programme-content{
    flex-direction:row;
    padding-left:0;
    padding-right:0;
  }

  .programme-event:nth-child(odd) .programme-icon{
    flex-basis:44px;
  }

  .programme-event:nth-child(odd) .programme-copy{
    justify-items:start;
  }


  .programme-content strong{
    font-size:1.36rem;
    line-height:1.14;
  }

  .programme-meta{
    font-size:13px;
  }

  .programme-node{ display:none; }
  .programme-event-highlight .programme-node{ display:none; }

  .programme-icon,
  .programme-icon svg{
    width:44px;
    height:44px;
  }

  .programme-icon--departure{ --programme-icon-shift-y: -2px; }

  .rsvp-form,
  .rsvp-section,
  .rsvp-submit-zone,
  .rsvp-progressive,
  .rsvp-choice-card,
  .rsvp-guest-card{
    padding:18px;
  }

  .rsvp-submit-button{
    width:100%;
  }

  .toast{
    left:20px;
    right:20px;
    bottom:18px;
    min-width:0;
    transform:translate(0, 16px);
  }

  .toast.show{
    transform:translate(0, 0);
  }

  .lieu-gallery-stage{
    min-height:0;
    aspect-ratio:1 / 1;
  }

  .lieu-gallery-panel{
    padding:18px 16px 24px;
  }

}

/* =========================
   PAYSAGE MOBILE (hauteur réduite)
   ========================= */
@media (max-height:480px) and (max-width:1024px){
  .hero-video{
    min-height:340px;
  }
  .hero-logo{
    max-height:30vh;
    width:min(50vh,340px);
  }
  .hero-card{ transform:translateY(0); }
  .hero-kicker{
    margin-bottom:5px;
    font-size:10px;
    letter-spacing:.18em;
  }
  .hero-video .date{
    font-size:9.5px;
    letter-spacing:.09em;
  }
  .hero-video .date-above{ margin-bottom:7px; }
  .hero-video .date-below{ margin-top:7px; }
  #countdown{
    margin-top:7px;
    gap:5px;
  }
  #countdown .cd-box{
    min-width:50px;
    padding:5px 12px;
    border-radius:999px;
  }
  #countdown .cd-box .num{
    font-size:16px;
    margin-bottom:2px;
  }
  #countdown .cd-box div:last-child{
    font-size:8px;
  }
  .overlay .cta{
    flex-direction:row;
    margin-top:10px;
    gap:8px;
  }
  .overlay .cta .btn{
    width:auto;
    max-width:none;
    padding:9px 18px;
    font-size:12px;
  }
}

/* =========================
   TABLETTE PAYSAGE (iPad 11" landscape ≈ 900-1280px wide, ≤900px tall)
   Le hero desktop s'applique mais la hauteur est contrainte :
   on réduit le logo et les marges pour que tout soit visible.
   ========================= */
@media (min-width: 901px) and (max-height: 900px){
  .hero-logo{
    max-height: 44vh;
  }
  .hero-kicker{
    margin-bottom: 6px;
  }
  .hero-video .date-above{ margin-bottom:16px; }
  .hero-video .date-below{ margin-top:16px; }
  #countdown{
    margin-top: 10px;
  }
  .overlay .cta{
    margin-top: 12px;
  }
}

/* =========================
   REDUCED MOTION
   ========================= */
@media (prefers-reduced-motion: reduce){
  html,
  html:focus-within{
    scroll-behavior:auto;
  }

  *,
  *::before,
  *::after{
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
  }
}
  .programme-node{ display:none; }

/* =========================
   UTILITAIRES
   ========================= */
.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
  border:0;
}
