/* JETINVITE — Invitation publique */
:root{
  --fond:#fbf8f3; --texte:#3a3128; --doux:#7d7264; --accent:#a08246;
  --surface:#fff; --trait:rgba(0,0,0,.10);
  --titre:"Cormorant Garamond",Georgia,serif; --corps:"Karla",system-ui,sans-serif;
  --titre-poids:600; --titre-espace:.01em; --arrondi:14px;
}
/* --- Thèmes --- */
.t-ivoire{--fond:#fbf8f3;--texte:#3a3128;--doux:#7d7264;--accent:#a08246;--surface:#fff;
  --titre:"Cormorant Garamond",Georgia,serif;--corps:"Karla",system-ui,sans-serif;--titre-poids:600}
.t-kente{--fond:#fff7ec;--texte:#2c1b11;--doux:#7a5c46;--accent:#c4521c;--surface:#fffdf9;
  --titre:"Fraunces",Georgia,serif;--corps:"DM Sans",system-ui,sans-serif;--titre-poids:600;--arrondi:4px}
.t-minimal{--fond:#fff;--texte:#101820;--doux:#5d6875;--accent:#2f4bd1;--surface:#f7f9fc;
  --titre:"Space Grotesk",system-ui,sans-serif;--corps:"Inter",system-ui,sans-serif;--titre-poids:500;--arrondi:8px}
.t-nuit{--fond:#0e1016;--texte:#eee8dc;--doux:#a79f8f;--accent:#c9a227;--surface:#161923;--trait:rgba(255,255,255,.14);
  --titre:"Marcellus",Georgia,serif;--corps:"Jost",system-ui,sans-serif;--titre-poids:400;--arrondi:2px}
.t-sable{--fond:#fdf6f1;--texte:#4a4038;--doux:#8d8076;--accent:#7fa9a0;--surface:#fff;
  --titre:"Quicksand",system-ui,sans-serif;--corps:"Nunito",system-ui,sans-serif;--titre-poids:600;--arrondi:20px}
.t-memoire{--fond:#f3f4f2;--texte:#2e3238;--doux:#6c747d;--accent:#5b6b7a;--surface:#fff;
  --titre:"Lora",Georgia,serif;--corps:"Source Sans 3",system-ui,sans-serif;--titre-poids:500;--arrondi:6px}

*{box-sizing:border-box}
body{margin:0;background:var(--fond);color:var(--texte);font-family:var(--corps);font-size:16px;line-height:1.6}
img{max-width:100%;display:block}
a{color:var(--accent)}
h1,h2,h3{font-family:var(--titre);font-weight:var(--titre-poids);letter-spacing:var(--titre-espace);margin:0}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

.inv{max-width:660px;margin:0 auto;padding:0 0 60px}

/* Couverture */
.couv{position:relative;min-height:74vh;display:flex;flex-direction:column;justify-content:flex-end;
  padding:34px 26px;text-align:center;color:#fff;background:#2a2622 center/cover no-repeat}
.couv::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.18),rgba(0,0,0,.66))}
.couv > *{position:relative;z-index:1}
.couv .surtitre{font-size:13px;letter-spacing:.22em;opacity:.9;margin-bottom:14px}
.couv h1{font-size:clamp(34px,9vw,58px);line-height:1.08;color:#fff}
.couv .date{margin-top:14px;font-size:15px;letter-spacing:.06em;opacity:.95}
.couv .bonjour{margin-top:20px;font-size:15px;background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.3);padding:8px 16px;border-radius:40px;display:inline-block}
.sans-photo{background:linear-gradient(160deg,var(--accent),color-mix(in srgb,var(--accent) 45%,#000 55%))}

/* Blocs */
.bloc{padding:38px 24px;border-bottom:1px solid var(--trait)}
.bloc:last-child{border-bottom:0}
.bloc h2{font-size:24px;margin-bottom:6px}
.bloc .chapeau{color:var(--doux);font-size:14px;margin:0 0 20px}
.centre{text-align:center}
.mot{font-size:18px;line-height:1.75;text-align:center;max-width:46ch;margin:0 auto}

/* Compte à rebours */
.compte{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}
.compte div{min-width:74px;background:var(--surface);border:1px solid var(--trait);
  border-radius:var(--arrondi);padding:12px 8px}
.compte b{display:block;font-family:var(--titre);font-size:28px;line-height:1}
.compte span{font-size:11.5px;letter-spacing:.14em;color:var(--doux)}

/* Programme */
.prog{list-style:none;margin:0;padding:0}
.prog li{display:flex;gap:16px;padding:12px 0;border-bottom:1px dashed var(--trait)}
.prog li:last-child{border-bottom:0}
.prog .h{font-family:var(--titre);color:var(--accent);min-width:64px;font-size:17px}
.prog .t{font-weight:600}
.prog .l{color:var(--doux);font-size:14px}

/* Infos */
.infos{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.info{background:var(--surface);border:1px solid var(--trait);border-radius:var(--arrondi);padding:16px}
.info h3{font-size:14px;letter-spacing:.08em;color:var(--doux);margin-bottom:6px;font-family:var(--corps);font-weight:600}

/* Boutons */
.btn{display:inline-block;background:var(--accent);color:#fff;border:1px solid var(--accent);
  padding:13px 26px;border-radius:40px;text-decoration:none;font-size:16px;cursor:pointer;font-family:var(--corps)}
.btn:hover{filter:brightness(.92)}
.btn-ligne{background:transparent;color:var(--accent)}
.btn-bloc{display:block;width:100%;text-align:center}
.btn-petit{padding:8px 16px;font-size:14px}

/* Formulaire RSVP */
.form{max-width:440px;margin:0 auto;text-align:left}
.form label{display:block;font-size:13px;color:var(--doux);margin:14px 0 5px}
.form input,.form select,.form textarea{width:100%;padding:11px 13px;border:1px solid var(--trait);
  border-radius:var(--arrondi);background:var(--surface);color:var(--texte);font:inherit}
.form textarea{min-height:80px}
.choix{display:flex;gap:10px;margin-top:8px}
.choix label{flex:1;margin:0;text-align:center;border:1px solid var(--trait);border-radius:var(--arrondi);
  padding:12px;cursor:pointer;color:var(--texte);font-size:15px;background:var(--surface)}
.choix input{position:absolute;opacity:0;width:0}
.choix input:checked + span{color:var(--accent);font-weight:600}
.choix label:has(input:checked){border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.cache{display:none}

/* Cadeaux */
.cadeaux{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.cadeau{background:var(--surface);border:1px solid var(--trait);border-radius:var(--arrondi);
  padding:14px;display:flex;flex-direction:column;gap:8px}
.cadeau img{border-radius:calc(var(--arrondi) - 4px);aspect-ratio:4/3;object-fit:cover;width:100%}
.cadeau h3{font-size:17px}
.cadeau .etat{font-size:12.5px;color:var(--doux)}
.cadeau .pris{opacity:.55}
.jauge{height:5px;background:var(--trait);border-radius:5px;overflow:hidden}
.jauge i{display:block;height:100%;background:var(--accent)}

/* Contribution */
.montants{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:12px 0}
.montants label{border:1px solid var(--trait);border-radius:40px;padding:9px 16px;cursor:pointer;background:var(--surface)}
.montants label:has(input:checked){border-color:var(--accent);color:var(--accent);font-weight:600}
.montants input{position:absolute;opacity:0;width:0}

/* QR */
.pass{background:var(--surface);border:1px solid var(--trait);border-radius:var(--arrondi);
  padding:22px;text-align:center;max-width:320px;margin:0 auto}
.pass img{margin:0 auto 12px;width:220px;height:220px}
.pass .nom{font-family:var(--titre);font-size:20px}
.pass .meta{color:var(--doux);font-size:14px}

/* Livre d'or */
.messages{display:grid;gap:12px}
.message{background:var(--surface);border:1px solid var(--trait);border-radius:var(--arrondi);padding:14px}
.message .qui{font-family:var(--titre);font-size:16px;color:var(--accent)}

.avis{background:var(--surface);border:1px solid var(--trait);border-left:3px solid var(--accent);
  border-radius:var(--arrondi);padding:14px;margin:0 0 18px;font-size:14.5px}
.pied-inv{text-align:center;color:var(--doux);font-size:12.5px;padding:26px 20px}
.pied-inv a{color:var(--doux)}

@media (max-width:560px){
  .bloc{padding:30px 18px}
  .compte{gap:7px;flex-wrap:nowrap}
  .compte div{min-width:0;flex:1 1 0;max-width:80px;padding:12px 4px}
  .compte span{font-size:10px;letter-spacing:.08em}
  .couv{min-height:66vh;padding:26px 18px}
}
@media print{
  .btn,.form,.pied-inv{display:none}
  body{background:#fff}
}

/* ---------------------------------------------------------------
   Écran d'ouverture, ambiance musicale, galerie (v1.1)
--------------------------------------------------------------- */
body.voile-ouvert{overflow:hidden}

.voile{
  position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;
  padding:24px;text-align:center;background:#1a1714 center/cover no-repeat;
  transition:opacity .6s ease, transform .6s ease;
}
.voile::after{content:"";position:absolute;inset:0;background:rgba(12,10,9,.62)}
.voile.parti{opacity:0;transform:scale(1.04);pointer-events:none}
.voile-carte{
  position:relative;z-index:1;color:#fff;max-width:420px;width:100%;
  border:1px solid rgba(255,255,255,.34);border-radius:var(--arrondi);
  padding:38px 26px;background:rgba(255,255,255,.07);backdrop-filter:blur(3px);
}
.voile-carte h2{font-size:clamp(28px,7vw,40px);line-height:1.12;color:#fff;margin-bottom:10px}
.voile-carte .surtitre{font-size:12.5px;letter-spacing:.22em;opacity:.85;margin:0 0 14px}
.voile-date{font-size:15px;letter-spacing:.05em;opacity:.92;margin:0 0 22px}
.voile-nom{font-size:14px;opacity:.9;margin:0 0 22px}
.voile-note{font-size:12.5px;opacity:.72;margin:14px 0 0}

.musique{
  position:fixed;right:16px;bottom:16px;z-index:40;width:48px;height:48px;border-radius:50%;
  border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;
  display:flex;align-items:center;justify-content:center;box-shadow:0 6px 20px rgba(0,0,0,.22);
}
.musique .onde{display:flex;align-items:flex-end;gap:3px;height:18px}
.musique .onde i{width:3px;height:100%;background:#fff;border-radius:2px;transform-origin:bottom;
  animation:onde .9s ease-in-out infinite}
.musique .onde i:nth-child(2){animation-delay:.18s}
.musique .onde i:nth-child(3){animation-delay:.36s}
.musique.coupee{opacity:.55}
.musique.coupee .onde i{animation:none;height:6px}
@keyframes onde{0%,100%{transform:scaleY(.35)}50%{transform:scaleY(1)}}

.galerie{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}
.galerie a{display:block;overflow:hidden;border-radius:var(--arrondi)}
.galerie img{width:100%;aspect-ratio:1;object-fit:cover;transition:transform .35s ease}
.galerie a:hover img{transform:scale(1.05)}

@media (prefers-reduced-motion:reduce){
  .voile{transition:none}
  .musique .onde i{animation:none;height:10px}
  .galerie img{transition:none}
}
@media print{.voile,.musique{display:none}}

/* Ajout à l'agenda */
.agenda{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0}
.agenda .btn{padding:7px 14px;font-size:13.5px}

/* Navigation par sections */
.nav-sections{display:flex;gap:6px;overflow-x:auto;padding:14px 16px;justify-content:center;
  border-bottom:1px solid var(--trait);position:sticky;top:0;z-index:20;
  background:color-mix(in srgb, var(--fond) 92%, transparent);backdrop-filter:blur(6px)}
.nav-sections a{white-space:nowrap;text-decoration:none;font-size:13.5px;color:var(--doux);
  border:1px solid var(--trait);border-radius:30px;padding:7px 15px;background:var(--surface)}
.nav-sections a:hover{color:var(--accent);border-color:var(--accent)}

/* Ornements du modèle */
.ornement{width:100%;display:block;pointer-events:none;user-select:none}
.ornement-haut{margin-bottom:-6px}
.ornement-bas{margin-top:-6px}
@media print{.ornement{display:none}}
