:root{
  --navy:#1f2438;
  --navy-2:#272d45;
  --navy-deep:#171b2b;
  --gold:#c9a24a;
  --gold-soft:#dcc488;
  --cream:#f4efe6;
  --cream-2:#ece4d6;
  --ink:#2a2e3d;
  --serif:"Cormorant Garamond",Georgia,serif;
  --sans:"Jost",system-ui,sans-serif;
  --script:"Parisienne",cursive;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--sans);
  background:var(--navy);
  color:var(--cream);
  line-height:1.6;
  font-weight:300;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}

/* recolor the black logo to gold */
.hero__logo,.footer__logo,.nav__brand img{filter:invert(72%) sepia(38%) saturate(560%) hue-rotate(2deg) brightness(92%)}

/* ---------- BUTTONS ---------- */
.btn{
  display:inline-block;
  font-family:var(--sans);
  letter-spacing:.18em;
  text-transform:uppercase;
  font-size:.72rem;
  padding:.95em 2.2em;
  border:1px solid var(--gold);
  color:var(--gold);
  border-radius:40px;
  background:transparent;
  cursor:pointer;
  transition:.4s cubic-bezier(.2,.7,.3,1);
  position:relative;
  overflow:hidden;
}
.btn::after{content:"";position:absolute;inset:0;background:var(--gold);transform:translateY(101%);transition:.4s cubic-bezier(.2,.7,.3,1);z-index:-1}
.btn:hover{color:var(--navy)}
.btn:hover::after{transform:translateY(0)}
.btn--small{padding:.82em 1.9em;font-size:.76rem}
.btn--full{width:100%;text-align:center;border-color:var(--gold);background:var(--gold);color:var(--navy)}
.btn--full::after{background:var(--gold-soft)}
.btn--full:hover{color:var(--navy)}

/* ---------- NAV ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;
  padding:1.1rem 7vw;
  transition:.4s;
}
.nav.scrolled{background:rgba(23,27,43,.92);backdrop-filter:blur(10px);padding:.7rem 7vw;box-shadow:0 6px 30px rgba(0,0,0,.25)}
.nav__brand{font-family:var(--script);font-size:1.95rem;letter-spacing:0;color:var(--gold);line-height:1;white-space:nowrap}
.nav__brand span{font-family:var(--serif);font-style:italic;font-size:.62em;opacity:.78;margin:0 .12em}
.nav__links{display:flex;gap:2rem}
.nav__links a{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;opacity:.85;position:relative;padding:.2rem 0}
.nav__links a::after{content:"";position:absolute;left:0;bottom:-2px;height:1px;width:0;background:var(--gold);transition:.35s}
.nav__links a:hover{opacity:1}
.nav__links a:hover::after{width:100%}
.nav__burger{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer}
.nav__burger span{width:24px;height:2px;background:var(--cream);transition:.3s}

/* ---------- HERO ---------- */
.hero{
  min-height:100vh;position:relative;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:7rem 6vw 5rem;
  background:radial-gradient(120% 90% at 50% 0%,#2c3350 0%,var(--navy) 45%,var(--navy-deep) 100%);
  overflow:hidden;
}
.hero__flowers .flower{position:absolute;opacity:.92;pointer-events:none;filter:drop-shadow(0 10px 30px rgba(0,0,0,.25))}
.flower--tl{width:230px;top:-50px;left:-60px;transform:rotate(-15deg);animation:float 9s ease-in-out infinite}
.flower--tr{width:280px;top:-70px;right:-70px;transform:rotate(25deg);animation:float 11s ease-in-out infinite reverse}
.flower--bl{width:200px;bottom:-60px;left:-50px;transform:rotate(160deg);animation:float 10s ease-in-out infinite}
@keyframes float{0%,100%{translate:0 0}50%{translate:0 -18px}}

.hero__plane{position:absolute;z-index:1;top:20%;left:-32vw;width:164vw;height:360px;opacity:.82}
.plane{position:absolute;z-index:3;top:20%;left:-32vw;font-size:1.55rem;color:var(--gold);offset-path:path("M-420,310 C-120,150 240,284 470,250 C650,230 720,130 900,102 C1080,74 1260,92 1420,62");offset-rotate:auto;animation:fly 20s linear infinite;will-change:offset-distance}
@keyframes fly{0%{offset-distance:0%;opacity:0}5%{opacity:1}92%{opacity:1}100%{offset-distance:100%;opacity:0}}

.hero__inner{position:relative;z-index:2;animation:rise 1.1s cubic-bezier(.2,.7,.3,1) both}
.hero__logo{width:164px;margin:0 auto 1.2rem;opacity:.95;transform:translateX(-14px)}
.hero__kicker{letter-spacing:.42em;text-transform:uppercase;font-size:.72rem;color:var(--gold-soft);margin:1.75rem 0 0}
.hero__names{font-family:var(--serif);font-weight:500;font-size:clamp(3rem,9vw,7rem);line-height:.78;letter-spacing:.01em}
.hero__names span{display:block}
.hero__names span:last-child{transform:translateY(-.07em);margin-bottom:-.08em}
.hero__names em{display:block;font-family:var(--script);font-style:normal;color:var(--gold);font-size:.45em;line-height:.74;margin:.16em 0 .08em}
.hero__meta{margin:1.45rem 0 2.2rem;letter-spacing:.18em;text-transform:uppercase;font-size:.8rem;color:var(--cream-2);display:grid;gap:.55rem;justify-content:center}
.hero__meta span:first-child{display:flex;align-items:center;justify-content:center;gap:1.15rem}
.hero__meta span:first-child::before,.hero__meta span:first-child::after{content:"";display:block;width:min(150px,18vw);height:1px;background:rgba(244,239,230,.12)}
.hero__meta .dot{color:var(--gold)}
.hero__scroll{position:absolute;bottom:1.6rem;left:50%;translate:-50% 0;font-size:1.3rem;color:var(--gold);animation:bob 1.8s ease-in-out infinite}
@keyframes bob{0%,100%{translate:-50% 0}50%{translate:-50% 8px}}
@keyframes rise{from{opacity:0;translate:0 40px}to{opacity:1;translate:0 0}}

/* ---------- SECTIONS ---------- */
.section{padding:7rem 7vw;position:relative}
.section__title{font-family:var(--serif);font-weight:500;font-size:clamp(2rem,5vw,3.4rem);text-align:center;letter-spacing:.02em}
.section__title::after{content:"";display:block;width:60px;height:2px;background:var(--gold);margin:1.2rem auto 0}
.section__lead{max-width:640px;margin:1.6rem auto 0;text-align:center;color:var(--cream-2);font-weight:300}
.script{font-family:var(--script);color:var(--gold);font-size:2.4rem;text-align:center;line-height:1}

/* countdown */
.countdown{background:var(--navy-2);text-align:center}
.countdown .section__title{margin-top:.3rem}
.dress-note{max-width:560px;margin:1.8rem auto 0;padding:1rem 1.2rem;border:1px solid rgba(201,162,74,.28);border-radius:16px;background:rgba(23,27,43,.32);box-shadow:0 16px 38px rgba(0,0,0,.14)}
.dress-note span{display:block;color:var(--gold);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;margin-bottom:.35rem}
.dress-note p{color:var(--cream-2)}
.counter{display:flex;gap:1rem;justify-content:center;margin:2.6rem 0 1rem;flex-wrap:wrap}
.counter__cell{background:var(--navy-deep);border:1px solid rgba(201,162,74,.3);border-radius:14px;padding:1.3rem 1.6rem;min-width:96px}
.counter__cell span{font-family:var(--serif);font-size:2.8rem;color:var(--gold);display:block;line-height:1}
.counter__cell small{letter-spacing:.2em;text-transform:uppercase;font-size:.62rem;color:var(--cream-2)}
.countdown__text{max-width:620px;margin:1.5rem auto 0;color:var(--cream-2)}

/* cards */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;margin-top:3.5rem}
.cards--soft{margin-top:2.5rem}
.card{background:var(--navy-2);border-radius:18px;overflow:hidden;text-align:center;padding-bottom:1.8rem;transition:.45s;border:1px solid rgba(255,255,255,.04)}
.card:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,.35);border-color:rgba(201,162,74,.35)}
.card__img{height:220px;background-size:cover;background-position:center;filter:saturate(.95)}
.card__img--mairie{background-image:linear-gradient(rgba(31,36,56,.08),rgba(31,36,56,.28)),url("assets/mairie-secteur-3.png")}
.card__img--eglise{background-image:linear-gradient(rgba(31,36,56,.08),rgba(31,36,56,.28)),url("assets/eglise.png")}
.card__img--chateau{background-image:linear-gradient(rgba(31,36,56,.08),rgba(31,36,56,.28)),url("assets/chateau.png")}
.card h3{font-family:var(--serif);font-size:1.5rem;margin:1.3rem 0 .3rem;color:var(--cream)}
.card p{color:var(--cream-2);font-size:.92rem;padding:0 1.2rem}
.card__link{display:inline-block;margin-top:1rem;color:var(--gold);letter-spacing:.12em;text-transform:uppercase;font-size:.7rem}
.card--plain{padding:2.2rem 1.6rem}
.card--plain h3{margin-top:0}

/* histoire / timeline */
.histoire{background:linear-gradient(var(--navy-deep),var(--navy))}
.histoire .script{margin-bottom:.3rem}
.timeline{list-style:none;max-width:680px;margin:3.5rem auto 0;position:relative;padding-left:2.5rem}
.timeline::before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:linear-gradient(var(--gold),transparent)}
.timeline li{position:relative;padding:0 0 2.2rem 1.6rem;display:flex;gap:1.4rem;align-items:flex-start}
.timeline li::before{content:"";position:absolute;left:-2.5rem;top:6px;width:16px;height:16px;border-radius:50%;background:var(--navy);border:2px solid var(--gold);transition:.4s}
.timeline li.in::before{background:var(--gold);box-shadow:0 0 0 5px rgba(201,162,74,.18)}
.timeline__time{font-family:var(--serif);font-size:1.5rem;color:var(--gold);min-width:74px}
.timeline h4{font-weight:400;font-size:1.05rem;letter-spacing:.02em}
.timeline p{color:var(--cream-2);font-size:.9rem}

/* contact */
.contact{background:var(--navy-2);text-align:center}
.contact__grid{display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;margin-top:3rem}
.contact__card{background:var(--navy-deep);border:1px solid rgba(201,162,74,.25);border-radius:16px;padding:2.2rem 3rem;min-width:280px}
.contact__card h3{font-family:var(--serif);font-size:1.7rem;color:var(--gold);margin-bottom:.7rem}
.contact__card a{display:block;color:var(--cream);margin-bottom:.2rem}
.contact__card span{color:var(--cream-2);font-size:.9rem}

/* rsvp */
.rsvp{background:radial-gradient(120% 100% at 50% 0%,#2c3350,var(--navy-deep))}
.rsvp__box{max-width:680px;margin:0 auto;text-align:center}
.rsvp-deadline{margin:1.8rem auto 0;max-width:560px;border:1px solid rgba(201,162,74,.28);border-radius:18px;background:rgba(201,162,74,.07);padding:1.15rem}
.rsvp-deadline p{color:var(--cream-2);letter-spacing:.04em}
.rsvp-deadline strong{color:var(--gold);font-weight:500}
.deadline-counter{display:grid;grid-template-columns:repeat(4,1fr);gap:.65rem;margin-top:1rem}
.deadline-counter span{display:grid;gap:.15rem;place-items:center;background:rgba(23,27,43,.45);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:.75rem .45rem;min-width:0}
.deadline-counter strong{font-family:var(--serif);font-size:1.65rem;line-height:1;color:var(--gold)}
.deadline-counter small{text-transform:uppercase;letter-spacing:.14em;font-size:.58rem;color:var(--cream-2)}
.rsvp__form{margin-top:2.5rem;display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;text-align:left}
.field{display:flex;flex-direction:column;gap:.4rem}
.field--full{grid-column:1/-1}
.field label{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-soft)}
.field input,.field textarea{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:.8rem 1rem;color:var(--cream);font-family:var(--sans);font-size:.95rem;transition:.3s}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--gold);background:rgba(255,255,255,.07)}
.radio{display:flex;gap:1.5rem;flex-wrap:wrap;padding-top:.3rem}
.radio label{display:flex;align-items:center;gap:.5rem;font-size:.92rem;letter-spacing:0;text-transform:none;color:var(--cream)}
.radio input{accent-color:var(--gold)}
.rsvp__form .btn--full{grid-column:1/-1;margin-top:.5rem}
.rsvp__note{grid-column:1/-1;text-align:center;color:var(--gold);font-size:.95rem}
.form-error{grid-column:1/-1;background:rgba(177,59,59,.14);border:1px solid rgba(255,112,112,.38);color:#ffd6d6;border-radius:12px;padding:.9rem 1rem;text-align:center;font-weight:400}
.field.is-invalid input,.field.is-invalid textarea,.field.is-invalid select,.rsvp-option.is-invalid,.rsvp-members.is-invalid{border-color:#e26b6b!important;background:rgba(177,59,59,.1)!important}
.field.is-invalid label{color:#ffb8b8}

.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:rgba(10,12,20,.62);padding:1.2rem;backdrop-filter:blur(6px)}
.modal[hidden]{display:none}
.modal__box{width:min(420px,100%);background:#fffaf1;color:var(--ink);border:1px solid rgba(201,162,74,.38);border-radius:22px;padding:2rem;text-align:center;box-shadow:0 30px 90px rgba(0,0,0,.35)}
.modal__box h3{font-family:var(--serif);font-size:2rem;font-weight:500;color:var(--navy);margin-bottom:.45rem}
.modal__box p{color:#5d5f69;margin-bottom:1.4rem}

/* footer */
.footer{background:var(--navy-deep);text-align:center;padding:3.5rem 6vw}
.footer__logo{width:190px;margin:0 auto 1.3rem;opacity:.94}
.footer p{letter-spacing:.1em;color:var(--cream-2)}
.footer__small{font-size:.8rem;opacity:.6;margin-top:.3rem}

/* reveal animation */
.reveal{opacity:0;translate:0 36px;transition:opacity .8s ease,translate .8s cubic-bezier(.2,.7,.3,1);transition-delay:var(--d,0s)}
.reveal.in{opacity:1;translate:0 0}

/* responsive */
@media(max-width:860px){
  .nav__links{display:none}
  .nav__links.open{display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;background:rgba(23,27,43,.97);padding:1.5rem 7vw;gap:1.2rem}
  .nav__burger{display:flex}
  .cards{grid-template-columns:1fr}
  .rsvp__form{grid-template-columns:1fr}
  .section{padding:5rem 7vw}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal{opacity:1;translate:0}}

/* ---------- PATCH V11 : header + slider + infos + RSVP intelligent ---------- */
.nav{
  background:rgba(23,27,43,.86);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(201,162,74,.18);
  box-shadow:0 10px 35px rgba(0,0,0,.18);
}
.nav.scrolled{background:rgba(23,27,43,.96);border-bottom-color:rgba(201,162,74,.28)}
.nav__brand{padding:0;border:0;border-radius:0;background:transparent}
.nav__links{gap:1.25rem}
.nav__links a{font-size:.7rem}

.souvenirs{background:linear-gradient(180deg,var(--cream),#ebe3d5);color:var(--ink)}
.souvenirs .section__lead{color:#5d5f69}
.photo-slider{position:relative;max-width:1040px;margin:3rem auto 0;padding:0 3.7rem 2.2rem;overflow:hidden;background:transparent;border:0;box-shadow:none}
.slider__track{display:flex;gap:1rem;align-items:stretch;transition:transform .65s cubic-bezier(.2,.7,.3,1);will-change:transform}
.slide{flex:0 0 calc((100% - 1rem) / 2);margin:0;aspect-ratio:16/10;border-radius:0;overflow:hidden;opacity:.82;transform:none;transition:opacity .45s ease,filter .45s ease;display:block;background:#fff}
.slide.active{opacity:1;filter:saturate(1.02)}
.slide img{width:100%;height:100%;object-fit:cover;object-position:center}
.slide::after{display:none}
.slider__btn{position:absolute;z-index:3;top:44%;translate:0 -50%;width:48px;height:48px;border-radius:50%;border:0;background:#0b0b0b;color:white;font-size:2rem;line-height:1;cursor:pointer;box-shadow:0 12px 28px rgba(0,0,0,.18);transition:.25s}
.slider__btn:hover{background:var(--gold);color:var(--navy)}
.slider__btn--prev{left:0}.slider__btn--next{right:0}
.slider__dots{position:absolute;z-index:4;left:0;right:0;bottom:1.1rem;display:flex;justify-content:center;gap:.45rem}
.slider__dots button{width:8px;height:8px;border-radius:50%;border:0;background:rgba(31,36,56,.24);cursor:pointer}
.slider__dots button.active{background:var(--gold);width:22px;border-radius:999px}

.infos{background:var(--cream);color:var(--ink)}
.infos .script{color:var(--gold)}
.info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;align-items:stretch;gap:1.5rem;max-width:1040px;margin:3rem auto 0}
.info-card{display:flex;flex-direction:column;height:100%;min-height:250px;background:#fffaf1;border:1px solid rgba(31,36,56,.1);border-radius:20px;padding:clamp(1.6rem,3vw,2.25rem);box-shadow:0 14px 35px rgba(31,36,56,.08)}
.info-card h3{font-family:var(--serif);font-size:1.45rem;color:var(--navy);margin-bottom:.45rem}
.info-card p{color:#5d5f69;font-size:.94rem;line-height:1.75;white-space:pre-line}
.hebergement{background:linear-gradient(180deg,#ebe3d5,var(--cream));color:var(--ink)}
.hebergement .section__lead{color:#5d5f69}
.hebergement .card{background:#fffaf1;border-color:rgba(31,36,56,.1);box-shadow:0 14px 35px rgba(31,36,56,.08)}
.hebergement .card h3{color:var(--navy)}
.hebergement .card p{color:#5d5f69}
.hebergement .card__link{border:1px solid rgba(201,162,74,.55);border-radius:999px;padding:.85rem 1.15rem}
.faq{background:var(--navy-deep)}
.faq .section__title{text-align:center}
.faq .script{text-align:center;color:var(--gold)}
.faq-list{display:grid;grid-template-columns:repeat(3,1fr);gap:1.1rem;max-width:1180px;margin:3rem auto 0}
.faq-group{background:rgba(255,255,255,.045);border:1px solid rgba(201,162,74,.2);border-radius:18px;padding:1.15rem}
.faq-group h3{font-family:var(--serif);font-size:1.45rem;font-weight:500;color:var(--gold);margin-bottom:.9rem}
.faq-group details{border-top:1px solid rgba(255,255,255,.09);padding:.8rem 0}
.faq-group details:first-of-type{border-top:0}
.faq-group summary{cursor:pointer;color:var(--cream);font-size:.94rem;line-height:1.35;list-style:none;position:relative;padding-right:2.5rem}
.faq-group summary::-webkit-details-marker{display:none}
.faq-group summary::after{content:"+";position:absolute;right:0;top:-.2rem;display:grid;place-items:center;width:1.8rem;height:1.8rem;border:2px solid var(--gold);border-radius:50%;background:rgba(201,162,74,.12);color:var(--gold);font-family:Arial,sans-serif;font-size:1.35rem;font-weight:900;line-height:1}
.faq-group details[open] summary::after{content:"-"}
.faq-group p{color:var(--cream-2);font-size:.9rem;line-height:1.6;margin-top:.65rem}
.faq-image-link{display:inline-block;margin-top:.55rem;color:var(--gold);font-weight:600;text-decoration:underline;text-underline-offset:.2em}
.faq-image-link:hover{color:var(--gold-soft)}
.field select{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:.8rem 1rem;color:var(--cream);font-family:var(--sans);font-size:.95rem;transition:.3s}
.field select option{color:var(--ink)}
#guestStatus{color:var(--gold-soft)}
.rsvp-option{background:rgba(201,162,74,.06);border:1px solid rgba(201,162,74,.15);border-radius:14px;padding:1rem}
.rsvp-option[hidden]{display:none!important}
.rsvp-suggestions{display:grid;gap:.55rem;margin-top:.4rem}
.rsvp-suggestions button{width:100%;text-align:left;border:1px solid rgba(201,162,74,.25);background:rgba(255,255,255,.06);color:var(--cream);border-radius:12px;padding:.85rem 1rem;font-family:var(--sans);cursor:pointer;transition:.25s}
.rsvp-suggestions button:hover{border-color:var(--gold);background:rgba(201,162,74,.12)}
.rsvp-members{background:rgba(201,162,74,.06);border:1px solid rgba(201,162,74,.18);border-radius:14px;padding:1rem}
.rsvp-members__title{font-family:var(--serif);font-size:1.35rem;color:var(--gold);margin-bottom:.7rem}
.rsvp-member-list{display:grid;grid-template-columns:repeat(2,1fr);gap:.65rem}
.rsvp-member{display:flex;align-items:center;gap:.7rem;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:.75rem .85rem;color:var(--cream);font-size:.95rem;transition:none;transform:translateZ(0);contain:paint}
.rsvp-member input{width:auto;accent-color:var(--gold)}
.rsvp-member *{transition:none}

@media(max-width:1040px){.nav__links{gap:.8rem}.nav__links a{font-size:.64rem}.btn--small{padding:.75em 1.45em;font-size:.7rem}}
@media(max-width:860px){
  .nav{padding:.78rem 5vw;background:rgba(23,27,43,.96)}
  .nav .btn--small{display:none}
  .nav__links.open{background:rgba(23,27,43,.98);border-bottom:1px solid rgba(201,162,74,.22);box-shadow:0 22px 45px rgba(0,0,0,.35)}
  .photo-slider{padding:.9rem 3rem 2.7rem;border-radius:18px}
  .slide{flex-basis:100%;aspect-ratio:4/3}
  .slider__btn{width:38px;height:38px}
  .info-grid{grid-template-columns:1fr;max-width:680px;gap:1rem}
  .info-card{min-height:0}
  .faq-list{grid-template-columns:1fr}
  .rsvp-member-list{grid-template-columns:1fr}
  .deadline-counter{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:520px){
  .hero__names{font-size:clamp(3rem,18vw,4.4rem)}
  .hero__kicker{letter-spacing:.24em}
  .counter__cell{min-width:44%;padding:1rem}
  .counter__cell span{font-size:2.2rem}
  .photo-slider{margin-left:-2vw;margin-right:-2vw}
  .info-card{padding:1.35rem;border-radius:16px}
  .rsvp-deadline{padding:1rem .8rem}
}
