:root{--paper:#F2EEE6;--paper-2:#F2EEE6;--paper-3:#F2EEE6;--ink:#4E5A2C;--ink-80:rgba(78,90,44,0.8);--ink-70:rgba(78,90,44,0.88);--ink-60:rgba(78,90,44,0.88);--ink-50:rgba(78,90,44,0.88);--accent-text:#7A6436;--ink-30:rgba(78,90,44,0.3);--ink-15:rgba(78,90,44,0.15);--ink-12:rgba(78,90,44,0.12);--ink-06:rgba(78,90,44,0.06);
--paper-tex:#EBE5D9;--accent:#B89B5E;--accent-2:#333B1A;--accent-40:rgba(184,155,94,0.4);--paper-92:rgba(242,238,230,0.92);--paper-85:rgba(242,238,230,0.85);--paper-0:rgba(242,238,230,0);--paper-60:rgba(242,238,230,0.6);
--serif:'Cormorant Garamond',Garamond,Georgia,serif;--script:'Alex Brush',cursive;--caps:'Cormorant Garamond',serif;
--s1:16px;--s2:28px;--s3:48px;--s4:72px;--s5:112px;
--ease:cubic-bezier(.2,.7,.2,1);--io:cubic-bezier(.65,0,.35,1);--slow:cubic-bezier(.16,1,.3,1);--out:cubic-bezier(0,0,.58,1);--back:cubic-bezier(.34,1.56,.64,1)}
*{box-sizing:border-box}
html,body{margin:0;background:#E4DCC9}
body{position:relative;font-family:var(--serif);color:var(--ink);line-height:1.6;font-size:17px;font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:hidden}
.page{max-width:480px;margin:0 auto;background:var(--paper);min-height:var(--vh,100vh);position:relative;overflow:hidden;box-shadow:0 0 120px -30px rgba(40,30,10,.35)}
.paper-bg{position:absolute;inset:0;background:url(assets/pearl/paper.jpg?v=379256) center/700px repeat;opacity:.32;mix-blend-mode:multiply;pointer-events:none}
h1,h2,h3{margin:0;font-weight:400;line-height:1;text-wrap:balance}
.sc,.caps,.ev .where,.ev .when,.dsub,.hotel small,.st h2,.lead{text-wrap:balance}
img{max-width:100%}
p{margin:0}

/* ===== échelle typographique ===== */
section{padding:var(--s4) 28px;text-align:center;position:relative}
section.tight{padding:var(--s3) 28px}section.loose{padding:var(--s5) 28px}section.bleed{padding-left:0;padding-right:0}
section.hasaside{overflow:visible;clip-path:inset(var(--asideup,0px) 0 0 0)}.aside{position:absolute;pointer-events:none;z-index:0;display:block}section.hasaside>*:not(.aside){position:relative;z-index:1}
section.alt{background:var(--paper-2)}section.alt2{background:var(--paper-3)}
.st{margin-bottom:var(--s2)}
.sc{font-family:var(--script);font-size:54px;line-height:1.05;color:var(--ink);font-weight:400}
.sc.xl{font-size:64px}.sc.md{font-size:40px}
.serif{font-family:var(--serif);font-weight:300;font-size:44px;line-height:1.1;letter-spacing:.02em}
.caps{font-family:var(--caps);font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--ink-70);display:block;line-height:2}
.caps.big{font-size:12.5px;letter-spacing:.28em;color:var(--ink-80)}
.kicker{font-family:var(--caps);font-size:11px;letter-spacing:.36em;text-transform:uppercase;color:var(--accent-text);display:block;line-height:2;margin-bottom:6px}
.rule{display:block;width:48px;height:1px;background:var(--accent-40);margin:18px auto 0}
.num{font-family:var(--caps);font-size:11px;letter-spacing:.3em;color:var(--ink-50)}
@media(max-width:400px){.sc{font-size:46px}.sc.xl{font-size:56px}.ev .sc{font-size:40px}.caps.big{font-size:12px;letter-spacing:.24em}}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;gap:10px;border:1px solid var(--ink);background:transparent;color:var(--ink);padding:14px 30px;font-family:var(--caps);font-size:12px;letter-spacing:.3em;text-transform:uppercase;font-weight:600;text-decoration:none;cursor:pointer;transition:transform .3s var(--out),background .35s var(--ease),color .35s var(--ease);border-radius:0}
.btn:hover{background:var(--ink);color:var(--paper);transform:scale(1.04)}.btn:active{transform:scale(.96)}
.btn.fill{background:var(--ink);color:var(--paper)}.btn.ghost{border-color:var(--ink-30)}
.btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.btns .btn{padding:12px 18px;font-size:11px;letter-spacing:.24em}
.lead{font-size:18px;line-height:1.7;color:var(--ink-70);font-style:italic;max-width:36ch;margin:0 auto}
.lead em{font-style:normal;color:var(--ink)}
.mapc{font-size:15px;color:var(--ink-70);font-style:italic;margin:16px 0 0}

/* ===== entrées en scène (valeurs TDY : y20 .6s easeOut, échelonnées par --d) ===== */
:where(img[width][height]){height:auto}
.demowm{display:none!important}
.rv{opacity:0;translate:0 20px;transition:opacity .6s var(--out),translate .6s var(--out),scale .6s var(--out),filter .6s var(--out);transition-delay:var(--d,0s)}
.rv.y30{translate:0 30px;transition-duration:.8s}.rv.sm{translate:0 12px;transition-duration:.4s}.rv.fade{translate:0 0}
.rv.pop{translate:0 0;scale:.8;transition-duration:.5s;transition-timing-function:var(--back)}.rv.sc95{translate:0 0;scale:.95}
.rv.sx{translate:0 0;scale:0 1;transform-origin:center}.rv.sx.in{scale:1 1}
.rv.tilt{translate:0 40px;rotate:-2deg;transition-duration:.9s}.rv.tilt.in{rotate:-1.2deg}
.rv.blur{filter:blur(8px)}
.rv.in{opacity:1;translate:0 0;scale:1;filter:none;rotate:0deg}.rv.tilt.in{rotate:-1.2deg}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;translate:0 0;scale:1;filter:none;transition:none}}

/* ===== boucles ambiantes (lentes, faibles, périodes non multiples) ===== */
@keyframes swayTop{0%,100%{rotate:-1deg}50%{rotate:1deg}}
@keyframes ride{0%{transform:translateX(-205%) rotate(0deg)}14%{transform:translateX(-130%) rotate(0deg)}22%{transform:translateX(-95%) rotate(-7deg)}32%{transform:translateX(-55%) rotate(-2deg)}42%{transform:translateX(-15%) rotate(0deg)}100%{transform:translateX(205%) rotate(0deg)}}
@keyframes swayBot{0%,100%{rotate:-1.2deg}50%{rotate:1.2deg}}
@keyframes bob{0%,100%{translate:0 0;rotate:-1deg}50%{translate:0 -6px;rotate:1deg}}
@keyframes floatY{0%,100%{translate:0 0}50%{translate:0 -6px}}
@keyframes floatX{0%,100%{translate:0 0}50%{translate:6px 0}}
@keyframes driftX{from{translate:0 0}to{translate:-3% 0}}
@keyframes flap{0%,100%{scale:1 1}50%{scale:1 .82}}
@keyframes fall{0%{translate:0 -12vh;rotate:0deg;opacity:0}8%{opacity:var(--po,.9)}92%{opacity:var(--po,.9)}100%{translate:var(--dx,20px) 110vh;rotate:var(--rz,200deg);opacity:0}}
@keyframes twinkle{0%,100%{opacity:.25;scale:.8}50%{opacity:1;scale:1.15}}
@keyframes breathe{0%,100%{scale:1}50%{scale:1.025}}
@keyframes flicker{0%,100%{opacity:.55}30%{opacity:.85}55%{opacity:.6}80%{opacity:.9}}
@keyframes lampe{0%,72%,100%{opacity:.14}10%,54%{opacity:1}}
@keyframes sheen{0%{background-position:-160% 0}100%{background-position:260% 0}}
@keyframes pulse{0%,100%{opacity:.5}50%{opacity:1}}
@keyframes radar{0%{scale:1;opacity:.5}100%{scale:1.5;opacity:0}}
@keyframes chevron{0%,100%{translate:0 0}50%{translate:0 8px}}
@keyframes drift{0%,100%{translate:0 0;rotate:0deg}50%{translate:-6px -8px;rotate:-2deg}}
@keyframes wiggle{0%,100%{rotate:-2deg}50%{rotate:2deg}}
@keyframes spin{to{rotate:360deg}}
@keyframes vol1{0%,100%{translate:0 0}50%{translate:5px -6px}}
@keyframes vol2{0%,100%{translate:0 0}50%{translate:-5px 5px}}
@keyframes sway{0%,100%{rotate:-1deg}50%{rotate:1deg}}
@keyframes wind{0%,100%{rotate:-.7deg;translate:0 0}22%{rotate:.45deg;translate:1px -2px}48%{rotate:1deg;translate:0 1px}70%{rotate:-.15deg;translate:-1px -1px}86%{rotate:.6deg;translate:1px 0}}
@keyframes wind2{0%,100%{rotate:.5deg;translate:0 0}18%{rotate:-.6deg;translate:-2px 1px}44%{rotate:.85deg;translate:1px -2px}66%{rotate:-.25deg;translate:-1px 0}88%{rotate:.4deg;translate:1px 1px}}
[data-amb]{animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-duration:var(--t,8s);animation-delay:var(--dl,calc(var(--k,0)*-1.7s))}
[data-amb=swayTop]{animation-name:swayTop;transform-origin:top center}[data-amb=swayBot]{animation-name:swayBot;transform-origin:bottom center}
[data-amb=bob]{animation-name:bob;--t:4s}[data-amb=floatY]{animation-name:floatY;--t:6s}[data-amb=flap]{animation-name:flap;--t:.55s}
[data-amb=ride]{animation-name:ride;transform-origin:18% 88%;--t:11s;animation-timing-function:linear}
[data-amb=twinkle]{animation-name:twinkle;--t:2.6s}[data-amb=breathe]{animation-name:breathe;--t:9s}[data-amb=flicker]{animation-name:flicker;--t:3.2s}
[data-amb=drift]{animation-name:drift;--t:10s}[data-amb=wiggle]{animation-name:wiggle;--t:5s}[data-amb=spin]{animation-name:spin;--t:40s;animation-timing-function:linear}
[data-amb=wind]{animation-name:wind;--t:11s}[data-amb=wind2]{animation-name:wind2;--t:14s}
[data-amb=vol1]{animation-name:vol1;--t:6s}[data-amb=vol2]{animation-name:vol2;--t:9s}
.lissa{animation:floatX var(--tx,9s) ease-in-out infinite;animation-delay:calc(var(--k,0)*-2.3s)}
.lissa>*{animation:floatY var(--ty,6s) ease-in-out infinite;animation-delay:calc(var(--k,0)*-1.1s)}
.sheen{position:relative;overflow:hidden}.sheen::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.45) 50%,transparent 60%);background-size:200% 100%;animation:sheen 9s ease-in-out infinite;pointer-events:none;mix-blend-mode:screen}
@media(prefers-reduced-motion:reduce){[data-amb],.side.fly,.lissa,.lissa>*,.sheen::after,.ambi,.skyv{animation:none!important;display:revert}.ambi,.skyv{display:none!important}}

/* ===== intro : couche plein écran ===== */
.stage{position:relative;max-width:480px;margin:0 auto;overflow:clip}
/* .4s (et non .9s) : la couche d'intro doit avoir disparu avant que le halo (ihaloIn, plein à 26 %) ne redescende, sinon l'enveloppe
   réapparaît en fantôme sous le halo qui s'éclaircit = clignotement à la bascule (relevé par Nico sur royal, 07-09/10/2026) */
.ilayer{position:fixed;inset:0;overflow:hidden;perspective:1400px;transition:opacity .4s var(--io);z-index:3;background:#F2EEE6}
.ilayer.fade{opacity:0;pointer-events:none}
.ihalo{position:fixed;inset:0;z-index:6;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 50% 44%,var(--halo,#FFFDF5) 0%,var(--halo,#FFFDF5) 40%,color-mix(in srgb,var(--halo,#FFFDF5) 86%,transparent) 64%,color-mix(in srgb,var(--halo,#FFFDF5) 55%,transparent) 86%,color-mix(in srgb,var(--halo,#FFFDF5) 30%,transparent) 100%)}
.ihalo.on{animation:ihaloIn var(--halot,1.6s) var(--ease) forwards}
@keyframes ihaloIn{0%{opacity:0}26%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.ihalo{display:none}}
.page{z-index:2}
body.intro{overflow:hidden;height:var(--vh,100vh)}
body.intro .page{opacity:0;transition:opacity 1.2s var(--ease)}
body.intro.show .page{opacity:1}
.intro-text{position:absolute;left:0;right:0;top:var(--it,69%);text-align:center;padding:0 30px;z-index:5;pointer-events:none;transition:opacity .6s;color:#4E5A2C}
/* relecture 01/10 : sur une photo, le texte d'intro doit se lire partout (halo doux de la couleur opposée au texte),
   et « Touchez… » reste net : seul le point pulse */
.intro-text::before{content:"";position:absolute;left:50%;top:50%;width:min(150%,620px);height:190%;translate:-50% -50%;z-index:-1;pointer-events:none;
  background:radial-gradient(closest-side,rgba(242,238,230,0.78) 0%,rgba(242,238,230,0.5) 48%,rgba(242,238,230,0) 100%)}
.intro-text .sc{font-size:34px;line-height:1.1;color:inherit;text-shadow:0 0 14px rgba(242,238,230,0.9),0 0 3px rgba(242,238,230,0.8)}
.intro-text .caps{display:block;margin-top:26px;font-size:11px;font-weight:600;letter-spacing:.3em;color:inherit;text-shadow:0 0 10px rgba(242,238,230,1),0 0 3px rgba(242,238,230,1)}
.intro-text .caps i{display:inline-block;width:5px;height:5px;border-radius:50%;background:currentColor;margin-right:10px;vertical-align:middle;animation:pulse 2.4s ease-in-out infinite}
.ilayer.open .intro-text{opacity:0}
.tapzone{position:absolute;inset:0;z-index:4;cursor:pointer}
.skip{position:absolute;top:calc(14px + env(safe-area-inset-top));right:calc(14px + env(safe-area-inset-right));z-index:6;min-height:44px;display:inline-flex;align-items:center;font-family:var(--caps);font-size:11px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:#4E5A2C;border:1px solid currentColor;padding:0 16px;background:rgba(242,238,230,0.72);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);cursor:pointer;opacity:1;transition:opacity .3s}
.skip:hover{opacity:1}.ilayer.open .skip{opacity:0;pointer-events:none}
.ring{position:absolute;left:var(--rl,50%);top:var(--rt,50%);width:var(--rs,70px);aspect-ratio:1;border:1px solid currentColor;border-radius:50%;translate:-50% -50%;color:#4E5A2C;opacity:0;animation:radar 1.6s ease-out infinite;pointer-events:none;z-index:5}
.ilayer.open .ring{display:none}
.hero-text{position:absolute;left:0;right:0;top:14vh;z-index:5;text-align:center;opacity:0;transition:opacity 1.4s var(--ease);pointer-events:none;color:#4E5A2C}
.hero-text.on{opacity:1}.hero-text .sc{font-size:52px;color:inherit;text-shadow:0 2px 12px rgba(0,0,0,.18)}
@media(prefers-reduced-motion:reduce){.ilayer{display:none}}

/* ===== couverture : scène en couches + vidéo ===== */
#cover{min-height:var(--vh,100vh);padding:0;overflow:hidden;background:var(--paper);text-align:center;-webkit-text-size-adjust:100%;text-size-adjust:100%}   /* la police agrandie du téléphone ne fait pas déborder la couverture (01/10) */
.scene{position:absolute;inset:0;z-index:1;overflow:hidden}
.scene .sky{position:absolute;inset:-4% 0 0 0;width:100%;height:104%;object-fit:cover;object-position:50% 0;transform:scale(1.04);transition:transform 9s var(--slow)}
.scene .skyv{position:absolute;inset:-4% 0 0 0;width:100%;height:104%;object-fit:cover;object-position:50% 0;opacity:0;transition:opacity .9s var(--ease);transform:scale(1.04)}
.scene .skyv.on{opacity:1}
.scene .full,.scene .skyv.full{inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%;transform:scale(1);transition:transform 14s var(--slow)}
body.open .scene .full,body.open .scene .skyv.full{transform:scale(1.035)}
.cov.onscene{mix-blend-mode:multiply}
body.open .scene .sky,body.open .scene .skyv{transform:scale(1)}
.scene::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,var(--paper-0) 0%,var(--paper-0) 74%,color-mix(in srgb,var(--paper-tex) 60%,transparent) 90%,var(--paper-tex) 100%);pointer-events:none}
.scene.nofade::after{display:none}
/* 01/10 (Dolce Vita, aperçu du site) : pendant le lent zoom d'arrivée (14 s), l'image est sur sa propre couche et sa
   dernière rangée de pixels dépassait d'un pixel sous le fondu → un trait doré au bas de la couverture. Le bas de
   l'image s'efface donc lui-même, sous le fondu qui reste identique à l'œil */
.scene:not(.nofade) .full,.scene:not(.nofade) .sky{-webkit-mask-image:linear-gradient(180deg,#000 0 91%,transparent 97%);mask-image:linear-gradient(180deg,#000 0 91%,transparent 97%)}
.scene .veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,var(--veil,.25)) 0%,transparent 45%);pointer-events:none}
.ly{position:absolute;will-change:transform;pointer-events:none;opacity:0;translate:0 40px;transition:opacity 1.4s var(--ease),translate 1.8s var(--slow)}
.ly img{width:100%;height:100%;object-fit:contain;display:block}
.ly[data-from=up]{translate:0 -40px}
body.reveal .ly{opacity:1;translate:0 0}
body.reveal .ly[data-d="1"]{transition-delay:.1s}body.reveal .ly[data-d="2"]{transition-delay:.35s}body.reveal .ly[data-d="3"]{transition-delay:.6s}body.reveal .ly[data-d="4"]{transition-delay:.9s}
.flyer{position:absolute;pointer-events:none;z-index:1;opacity:0;transition:opacity 2s var(--ease) 1.2s}
body.reveal .flyer{opacity:var(--o,.9)}
.flyer img{display:block;width:100%}
.fr{position:absolute;pointer-events:none;z-index:2;opacity:0;transition:opacity 1.6s var(--ease) 1s}body.reveal .fr{opacity:1}.fr img{display:block;width:100%}
.cov{position:relative;z-index:3;min-height:var(--vh,100vh);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:calc(10 * var(--vh,100vh) / 100) 21% calc(24 * var(--vh,100vh) / 100)}
.cov>*{opacity:0;translate:0 18px;transition:opacity .9s var(--ease),translate 1.1s var(--slow),scale 1.2s var(--slow);transition-delay:calc(.45s + var(--i,0)*.14s)}
.cov .mono{width:30%;max-width:132px;margin-bottom:6px;scale:.9;translate:0 0}
.cov .names{translate:0 26px;transition-duration:1s,1.3s,1.3s}
body.reveal .cov>*{opacity:1;translate:0 0;scale:1}
.cov .sc.xl{font-size:54px;line-height:1.05}
.cov .caps{margin:16px 0 18px;line-height:2.1;font-size:11px}
.date{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;width:100%;max-width:230px}
.date .d{font-size:50px;font-weight:300;line-height:1;color:var(--ink)}
.date .m,.date .y{font-family:var(--caps);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-60);padding:10px 0;border-top:1px solid var(--ink-30);border-bottom:1px solid var(--ink-30)}
.cov .day{font-family:var(--caps);font-size:13px;letter-spacing:.42em;text-transform:uppercase;margin:16px 0 18px;color:var(--ink-60)}
.cov .sc.md{margin-top:6px}
.cov .caps.small{margin:10px 0 0;font-size:10px;letter-spacing:.3em}
.cov .caps,.cov .day,.cov .date .m,.cov .date .y{color:var(--ink)}   /* sur une image : encre pleine (audit du 01/10) — sélecteur faible exprès : la couleur choisie par un thème (Jour et nuit : doré sur ciel de nuit) reste prioritaire */
.scrolldown{position:absolute;bottom:calc(14px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:3;font-family:var(--caps);font-size:10px;font-weight:500;letter-spacing:.32em;text-transform:uppercase;color:var(--ink);opacity:0;transition:opacity 1s 2.1s}
body.reveal .scrolldown{opacity:1}
.scrolldown::after{content:"";display:block;width:7px;height:7px;border-right:1px solid var(--ink);border-bottom:1px solid var(--ink);rotate:45deg;margin:10px auto 0;animation:chevron 1.5s ease-in-out infinite}
.glow{position:absolute;left:50%;bottom:20%;width:60%;height:14%;transform:translateX(-50%);background:radial-gradient(ellipse at 50% 60%,rgba(255,214,150,.55),rgba(255,214,150,0) 70%);mix-blend-mode:screen;animation:flicker 3.2s ease-in-out infinite;pointer-events:none;z-index:2}
.flame{position:absolute;width:var(--w,10%);aspect-ratio:1;border-radius:50%;translate:-50% -50%;background:radial-gradient(circle,rgba(255,236,190,1),rgba(255,200,110,.7) 35%,rgba(255,180,90,0) 72%);mix-blend-mode:screen;animation:flicker var(--t,2.6s) ease-in-out infinite;animation-delay:calc(var(--k,0)*-.9s);pointer-events:none;z-index:2}
.star{position:absolute;width:var(--w,6px);height:var(--w,6px);border-radius:50%;background:radial-gradient(circle,#fff 0 30%,rgba(255,255,255,0) 70%);animation:twinkle var(--t,2.4s) ease-in-out infinite;animation-delay:calc(var(--k,0)*-.7s);pointer-events:none;z-index:2}

/* ===== ambiance pleine page (pétales, lucioles, neige, bulles) ===== */
.ambi{position:fixed;inset:0;pointer-events:none;z-index:30;overflow:hidden}
.ambi i{position:absolute;top:0;left:var(--x,50%);width:var(--w,14px);height:var(--h,14px);animation:fall var(--t,12s) linear infinite;animation-delay:calc(var(--k,0)*-1.7s);opacity:0;will-change:translate}
.ambi.petals i{background:var(--pc,#E8B4B8);border-radius:60% 0 60% 0;box-shadow:inset -2px -2px 4px rgba(0,0,0,.08)}
.ambi.fireflies i{width:5px;height:5px;border-radius:50%;background:radial-gradient(circle,#fff6c8,rgba(255,230,160,0) 70%);animation-name:twinkle,floatY;animation-duration:2.4s,7s;animation-iteration-count:infinite;top:var(--y,50%);opacity:1;--po:1}
.ambi.snow i{background:#fff;border-radius:50%;box-shadow:0 0 6px rgba(255,255,255,.8)}
.ambi.bubbles i{border:1px solid rgba(255,255,255,.7);border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.6),rgba(255,255,255,0) 60%);animation-name:rise}
.ambi.leaves i{background:var(--pc,#B7C9A0);border-radius:0 70% 0 70%}
.ambi img{position:absolute;top:0;left:var(--x,50%);width:var(--w,26px);animation:fall var(--t,14s) linear infinite;animation-delay:calc(var(--k,0)*-1.7s);opacity:0;will-change:translate}
@keyframes rise{0%{translate:0 20vh;opacity:0}10%{opacity:.8}90%{opacity:.8}100%{translate:var(--dx,10px) -110vh;opacity:0}}

/* ===== ornements latéraux continus ===== */
.side{position:absolute;width:var(--w,44%);pointer-events:none;z-index:2;opacity:.92}
.side.l{left:calc(-1 * var(--out,10%))}.side.r{right:calc(-1 * var(--out,10%))}
.sep.flyw{position:relative;overflow:hidden;margin:0}
.side.fly{display:block;animation:crossX var(--cx,26s) ease-in-out infinite;will-change:transform}.side.fly img{display:block;width:100%}
@keyframes crossX{0%{translate:0 0;scale:1 1;opacity:0}5%{translate:calc(var(--dx,34vw)*.04) -6px;scale:1 1;opacity:.95}42%{translate:calc(var(--dx,34vw)*.96) 6px;scale:1 1;opacity:.95}48%{translate:var(--dx,34vw) 0;scale:1 1;opacity:0}50%{translate:var(--dx,34vw) 0;scale:-1 1;opacity:0}55%{translate:calc(var(--dx,34vw)*.96) -6px;scale:-1 1;opacity:.95}92%{translate:calc(var(--dx,34vw)*.04) 6px;scale:-1 1;opacity:.95}97%{translate:0 0;scale:-1 1;opacity:0}100%{translate:0 0;scale:1 1;opacity:0}}

/* ===== séparateurs ===== */
.sep{position:relative;z-index:2;text-align:center;line-height:0}
.sep.line{padding:0}.sep.line::before{content:"";display:block;width:40px;height:1px;background:var(--ink-15);margin:0 auto;translate:0 -1px}
.sep.rulefull{padding:0 28px}.sep.rulefull::before{content:"";display:block;height:1px;background:var(--ink-15)}
.sep.orn{height:0;margin:0;position:relative;z-index:2;pointer-events:none;overflow:visible}
.sep.orn img{width:62%;max-width:300px;display:inline-block;margin:0;translate:0 -50%;opacity:.95}
.sep.garland{overflow:hidden}
.sep.garland img{width:100%;display:block;margin:-6px 0;transform-origin:50% 0}
.sep.garland.wind{overflow:hidden;margin-left:-28px;margin-right:-28px}
.sep.garland.wind img{width:114%;max-width:none;margin:-6px -7%;animation:garwind 7.5s ease-in-out infinite}
.sep.garland.astride{height:0;margin:0;overflow:visible;position:relative;z-index:3;pointer-events:none}
.sep.garland.astride img{translate:0 -50%}
@keyframes garwind{0%,100%{transform:rotate(-.5deg) skewX(1.1deg) translateY(0)}28%{transform:rotate(.35deg) skewX(-.9deg) translateY(-3px)}55%{transform:rotate(-.2deg) skewX(1.5deg) translateY(2px)}78%{transform:rotate(.5deg) skewX(-.5deg) translateY(-1px)}}
.sep.waves{height:0;margin:0;position:relative;z-index:3;pointer-events:none;overflow:visible}
.sep.waves .wv{position:absolute;left:0;right:0;top:50%;translate:0 -50%;height:var(--wh,104px);display:flex;width:200%;animation:wavesX var(--wt,34s) linear infinite}
.sep.waves .wv img{flex:0 0 50%;width:50%;height:100%;object-fit:fill;display:block}
@keyframes wavesX{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.sep.wave{margin-top:-1px}.sep.wave svg{display:block;width:100%;height:56px}
.sep.wave{position:relative;overflow:visible;z-index:2}
.sep.wave .sepdeco{position:absolute;left:var(--dl,50%);top:50%;translate:-50% -50%;width:var(--dw,46%);z-index:3;pointer-events:none}
.sep.wave .w1{animation:waveX 18s linear infinite}.sep.wave .w2{animation:waveX 13s linear infinite reverse;opacity:.6}.sep.wave .w3{animation:waveX 9s linear infinite;opacity:.35}
@keyframes waveX{from{translate:0 0}to{translate:-50% 0}}

/* ===== illustrations & cadres ===== */
.ill{display:block;margin:0 auto 22px}
.wavy{position:relative;display:block}
.wavy .ill.wv{animation:wavyA var(--wv,640ms) infinite}
.wavy .ill.wv.b{position:absolute;left:0;right:0;top:0;margin-left:auto;margin-right:auto;animation-name:wavyB}
@keyframes wavyA{0%,49.99%{opacity:1}50%,100%{opacity:0}}
@keyframes wavyB{0%,49.99%{opacity:0}50%,100%{opacity:1}}
@media (prefers-reduced-motion:reduce){.wavy .ill.wv{animation:none}.wavy .ill.wv.b{display:none}}
.ill.w25{width:25%}.ill.w30{width:30%}.ill.w35{width:35%}.ill.w40{width:40%}.ill.w45{width:45%}.ill.w50{width:50%}.ill.w55{width:55%}.ill.w60{width:60%}.ill.w70{width:70%}.ill.w80{width:80%}.ill.w85{width:85%}.ill.w100{width:100%}
.ill.bleed{width:116%;max-width:none;margin-left:-8%}
.divider{display:block;width:70%;margin:34px auto;opacity:.95}
.wm{position:absolute;width:44%;right:-6%;bottom:-2%;opacity:.42;pointer-events:none;animation:drift 9s ease-in-out infinite}
.hourblk{display:flex;align-items:center;justify-content:center;gap:14px;margin:10px auto 16px}.hourblk i{flex:0 0 34px;height:1px;background:var(--ink-30)}.hourblk span{font-family:var(--serif);font-weight:300;font-size:30px;letter-spacing:.06em;color:var(--ink);line-height:1}.hourblk small{font-family:var(--caps);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-60);margin-left:8px}
.badge{position:relative;display:inline-block;width:var(--bw,150px);aspect-ratio:var(--bar,150/112);margin:8px auto 18px;scale:.9;transition:scale 1.2s var(--slow) .3s}
.rv.in .badge,.rv.in ~ .badge{scale:1}
.badge img{position:absolute;inset:0;width:100%;height:100%}
.badge span{position:absolute;inset:var(--bt,0) var(--br,0) var(--bb,0) var(--bl,0);display:grid;place-items:center;font-family:var(--script);font-size:var(--bfs,30px);color:var(--ink);line-height:1}
.badge.css{width:auto;aspect-ratio:auto;padding:12px 26px;border:1px solid var(--accent-40);border-radius:999px;scale:1}.badge.css span{position:static;font-size:26px}
.frame{position:relative;display:grid;width:100%}
.frame>img.fr{grid-area:1/1;width:100%;height:100%;object-fit:fill;display:block;pointer-events:none}
.frame>.in{grid-area:1/1;padding:var(--pad,14%);display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:0}
.paper{background:var(--paper);box-shadow:0 2px 20px rgba(0,0,0,.08),0 30px 50px -40px rgba(40,30,10,.35);padding:34px 26px;position:relative;border-radius:2px}
.paper.tinted{background:var(--paper-2)}
.fbg{background-size:100% auto;background-position:center;background-repeat:no-repeat}

/* ===== guirlande lumineuse ===== */
.lightsbox{position:relative;width:112%;margin:-8px auto 16px;left:-6%}
.clockbox{position:relative;margin:0 auto 18px;display:block}
.clockbox img{display:block;width:100%}
.clockbox .hnd{position:absolute;left:var(--ccx);top:var(--ccy);width:var(--w);height:var(--l);translate:-50% -100%;transform:rotate(var(--a,0deg));transform-origin:50% 100%;background:var(--ink);clip-path:polygon(50% 0%,100% 16%,64% 100%,36% 100%,0% 16%);transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.clockbox .sh{clip-path:none;border-radius:99px}
.clockbox .sh{background:var(--accent-2,#E8A87C);opacity:.85}
.clockbox .hpin{position:absolute;left:var(--ccx);top:var(--ccy);width:2.6%;height:2.6%;translate:-50% -50%;border-radius:50%;background:var(--ink)}
.lightsbox img{display:block;width:100%}
.lampe{position:absolute;width:7%;padding-bottom:7%;height:0;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(255,220,155,1),rgba(255,206,120,.62) 36%,rgba(255,198,110,0) 72%);opacity:0;animation:lampe 5.2s ease-in-out infinite;mix-blend-mode:screen}

/* ===== compte à rebours ===== */
.flip{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 18px;margin:30px 0 0}
.flip>div{min-width:52px}
.flip:has(> :nth-child(4)) b{font-size:38px}.flip:has(> :nth-child(4)) span{font-size:9px;letter-spacing:.22em}
.flip b{display:block;font-family:var(--script);font-weight:400;font-size:48px;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.flip.serifnum b{font-family:var(--serif);font-weight:300;font-size:52px}
.flip span{display:block;font-family:var(--caps);font-size:11px;letter-spacing:.3em;text-transform:uppercase;margin-top:10px;color:var(--ink-50)}
.flip b.tick{animation:tick .5s var(--out)}
@keyframes tick{0%{opacity:.15;translate:0 -6px}100%{opacity:1;translate:0 0}}
.eyebrow{font-family:var(--caps);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-60);line-height:2;max-width:100%;margin:0 auto 22px}
.corners{position:absolute;top:0;width:34%;pointer-events:none}.corners.l{left:-4%}.corners.r{right:-4%;scale:-1 1}

/* ===== lettre / mot des mariés ===== */
.letter{text-align:left;font-style:italic;color:var(--ink-70);font-size:17px;line-height:1.75}
.letter .dear{font-style:normal;font-family:var(--script);font-size:34px;color:var(--ink);margin-bottom:14px;display:block}
.letter p{margin-bottom:14px}.letter .sign{font-style:normal;font-family:var(--script);font-size:32px;color:var(--ink);text-align:right;display:block;margin-top:10px}
.letter .tag{position:absolute;top:-22px;right:18px;width:74px;rotate:8deg}

/* ===== histoire / photos ===== */
#story p.lead{max-width:none}
.photos{position:relative;height:430px;margin:36px 0 0}
.ph{position:absolute;overflow:hidden;box-shadow:0 30px 50px -30px rgba(40,30,10,.35);background:var(--paper-2)}
.ph img{width:100%;height:100%;object-fit:cover;display:block}
.ph.a{left:0;top:0;width:62%;height:78%;border-radius:200px 200px 4px 4px}
.ph.b{right:0;bottom:0;width:52%;height:64%;border-radius:4px 4px 200px 200px}
.cap{position:absolute;font-family:var(--script);font-size:26px;color:var(--ink);rotate:-6deg}
.cap.a{left:4px;bottom:8px}.cap.b{right:4px;top:8px}
.strip{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 0 18px;margin:0 -28px;padding-left:28px;scrollbar-width:none}
.strip::-webkit-scrollbar{display:none}
.strip img{flex:0 0 66%;aspect-ratio:3/4;object-fit:cover;scroll-snap-align:center;box-shadow:0 30px 50px -30px rgba(40,30,10,.35)}
.strip.bw img{filter:grayscale(1) contrast(1.05)}
.marq{overflow:hidden;margin:0 -28px}
.marq .tr{display:flex;gap:12px;width:max-content;animation:marquee var(--mt,46s) linear infinite}
.marq:active .tr,.marq.paused .tr{animation-play-state:paused}
.marq figure{margin:0;width:220px;flex:0 0 auto}
.marq img{width:220px;aspect-ratio:3/4;object-fit:cover;display:block;box-shadow:0 20px 40px -30px rgba(40,30,10,.35)}
.marq.bw img{filter:grayscale(1) contrast(1.05)}
.marq.framed img{padding:8px;background:#fff}
.marq.oval img{border-radius:110px 110px 6px 6px}
.marq figcaption{font-family:var(--caps);font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:var(--ink-50);margin-top:10px;text-align:center}
.marq.rev .tr{animation-direction:reverse}
.marq figure.fpho{position:relative;width:228px}
.marq .fpho .pfr{position:relative;z-index:2;display:block;width:100%;height:auto;aspect-ratio:auto;box-shadow:none}
.marq .fpho .pin{position:absolute;inset:var(--pi);z-index:1;display:block;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 3.5%,#000 96.5%,transparent 100%),linear-gradient(90deg,transparent 0,#000 3.5%,#000 96.5%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0,#000 3.5%,#000 96.5%,transparent 100%),linear-gradient(90deg,transparent 0,#000 3.5%,#000 96.5%,transparent 100%);-webkit-mask-composite:source-in;mask-composite:intersect}
.marq .fpho .pin img{width:100%;height:100%;aspect-ratio:auto;object-fit:cover;display:block;box-shadow:none;border-radius:0}
.marq.oval .fpho .pin img{border-radius:0}
@keyframes marquee{to{transform:translateX(-50%)}}
.pframe{position:relative;width:86%;max-width:340px;margin:26px auto 0}.pframe .fr{display:block;width:100%}.pframe .phbox{position:absolute;display:block;overflow:hidden;z-index:1;border-radius:calc(var(--pfr,2.2%) * 1)}.pframe .phbox img{width:100%;height:100%;object-fit:cover;display:block}.pframe .fr{position:relative;z-index:3;pointer-events:none}.pcap{display:block;text-align:center;font-family:var(--script);font-size:26px;color:var(--ink-70);margin-top:14px}
.years{text-align:left;display:grid;gap:22px;margin-top:10px}
.years .y{display:grid;grid-template-columns:64px 1fr;gap:18px;align-items:start}
.years .y b{font-family:var(--serif);font-weight:300;font-size:30px;line-height:1;color:var(--accent-text)}
.years .y span{font-size:16px;color:var(--ink-70);font-style:italic;line-height:1.6}
.years.stack{gap:24px;padding-left:24px;margin-top:26px}
.years.stack::before{content:"";position:absolute;left:4px;top:10px;bottom:10px;width:1px;background:var(--ink-15)}
.years.stack{position:relative}
.years.stack .y{display:block;position:relative}
.years.stack .y::before{content:"";position:absolute;left:-23px;top:6px;width:7px;height:7px;border-radius:50%;background:var(--accent)}
.years.stack .y b{display:block;font-family:var(--caps);font-size:13px;font-weight:500;letter-spacing:.3em;line-height:1;margin-bottom:7px;color:var(--ink-70)}
.years.stack .y span{font-style:normal;font-size:15.5px}

/* ===== événements ===== */
.ev{padding:38px 0 42px;border-bottom:1px solid var(--ink-12)}
.ev:last-of-type{border-bottom:0}
.ev .caps{display:block;margin-bottom:12px}
.ev .sc{display:block;line-height:1.12}
.ev .where{font-size:16px;color:var(--ink-70);margin:10px 0 6px;letter-spacing:.02em}
.ev .addr{font-size:14px;color:var(--ink-50);margin:0 0 14px;font-style:italic}
.ev .when{font-size:16px;color:var(--ink-70);letter-spacing:.04em}
.ev .time{font-family:var(--script);font-size:34px;color:var(--ink);display:block;margin:10px 0 20px}
.ev .btns{margin-top:8px}
.evcards{display:grid;gap:18px}
.evcard{text-align:left;display:grid;grid-template-columns:96px 1fr;gap:18px;align-items:center;padding:20px 4px;border-top:1px solid var(--ink-12)}.evcards .evcard:last-child{border-bottom:1px solid var(--ink-12)}
.evcard img{width:96px;display:block}
.evcard .sc{font-size:30px;line-height:1.1}.evcard .when{font-size:14px;color:var(--ink-60);margin-top:4px}.evcard .btns{justify-content:flex-start;margin-top:10px}.evcard .btns .btn{padding:8px 12px;font-size:10px}
.split{display:grid;grid-template-columns:1fr 1fr;gap:16px;text-align:left}
.split .sc{font-size:30px}
.mapcard{margin-top:44px;position:relative}
.mapcard img{width:100%;display:block;box-shadow:0 30px 50px -30px rgba(40,30,10,.35)}

/* ===== programme ===== */
.day{font-family:var(--script);font-size:40px;margin:10px 0 6px}
.dsub{font-size:16px;color:var(--ink-50);letter-spacing:.04em;margin-bottom:26px}
.prog{text-align:center;display:grid;gap:22px;margin-bottom:44px}
.prog .t{display:block;font-family:var(--caps);font-size:13px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-70)}
.prog .n{display:block;font-size:17px;letter-spacing:.04em;margin-top:4px;color:var(--ink)}
.prog .n small{display:block;font-size:14px;color:var(--ink-50);font-style:italic}
.tl{position:relative;text-align:left;margin:10px 0 0}
.tl::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--ink-30);transform:scaleY(0);transform-origin:top;transition:transform 1.2s var(--out) .2s,background-color 1.2s linear}
.tl.in::before{transform:scaleY(1)}
.tl .it{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:max(48px,calc(var(--mw,12px) + 30px));align-items:center;padding:16px 0;transition:opacity .5s var(--out),scale .5s var(--out)}
.tl.spy .it img{opacity:.45;transition:opacity .5s var(--out)}.tl.spy .it.now img{opacity:1}
.tl .it img{width:72%;max-width:120px;max-height:120px;object-fit:contain;display:block;margin:0 auto}
.tl .it .tx{text-align:left}.tl .it:nth-child(even) .tx{text-align:right;order:-1}
.tl .it .t{display:block;font-family:var(--caps);font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-60)}
.tl .it .n{display:block;font-size:19px;color:var(--ink);line-height:1.3}
.tl .it .n small{display:block;font-size:14px;color:var(--ink-50);font-style:italic}
.tl .tlmark{position:absolute;left:50%;width:var(--mw,26px);height:var(--mw,26px);translate:-50% -50%;z-index:4;background:var(--msrc) 50% 50%/contain no-repeat,var(--mbg,radial-gradient(circle,var(--paper) 0 62%,transparent 63%));transition:top .5s cubic-bezier(.4,0,.2,1);pointer-events:none;opacity:0}
.tl.spy .tlmark{opacity:1}
.tl.hasmark .it.now::after{background:var(--paper);scale:1}
.tl .it::after{content:"";position:absolute;left:50%;top:50%;width:9px;height:9px;border-radius:50%;background:var(--paper);border:1px solid var(--ink);transform:translate(-50%,-50%);box-shadow:0 0 0 4px var(--paper);transition:background-color 1.2s linear,border-color 1.2s linear,box-shadow 1.2s linear,scale .5s var(--out)}
.tl .it.now::after{background:var(--ink);scale:1.3}
.rows{text-align:left;border-top:1px solid var(--ink-15)}
.rows .r{display:grid;grid-template-columns:78px 1fr 64px;gap:14px;align-items:center;min-height:88px;padding:14px 0;border-bottom:1px solid var(--ink-15)}
.rows .r .t{font-family:var(--caps);font-size:12px;letter-spacing:.2em;color:var(--ink-60)}
.rows .r .n{font-family:var(--caps);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);line-height:1.5}
.rows .r .n small{display:block;font-family:var(--serif);text-transform:none;letter-spacing:0;font-size:14px;color:var(--ink-50);font-style:italic}
.rows .r img{width:64px;height:64px;object-fit:contain}
.hstrip{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:0 28px;margin:0 -28px;padding:8px 28px 22px;scrollbar-width:none}
.hstrip::-webkit-scrollbar{display:none}
/* « Le déroulé » en cartes : on doit comprendre qu'il se fait glisser (relecture du 01/10) — un filet qui avance avec le
   défilement, et une fois, à l'arrivée à l'écran, les cartes glissent un peu vers la gauche puis reviennent */
.hbar{position:relative;height:2px;width:120px;margin:2px auto 0;background:var(--ink-12);overflow:hidden}
.hbar i{position:absolute;top:0;bottom:0;width:var(--v,34%);left:calc(var(--p,0) * (100% - var(--v,34%)));background:var(--ink-60);transition:left .15s linear}
.hstrip.nudge .st2{animation:hnudge 1.5s var(--io)}
@keyframes hnudge{0%,100%{transform:translateX(0)}45%{transform:translateX(-72px)}}
@media(prefers-reduced-motion:reduce){.hstrip.nudge .st2{animation:none}}
.hstrip .st2{flex:0 0 200px;scroll-snap-align:start;border:1px solid var(--ink-12);padding:22px 18px;text-align:center;background:var(--paper)}
.hstrip .st2 img{width:70%;max-height:110px;object-fit:contain;display:block;margin:0 auto 12px}
.hstrip .st2 .t{font-family:var(--caps);font-size:12px;letter-spacing:.24em;color:var(--ink-60);display:block}
.hstrip .st2 .n{display:block;font-size:17px;margin-top:4px;line-height:1.35}

/* ===== dress code ===== */
.dc .caps{display:block;margin-bottom:10px}
.dc .sc{font-size:40px}
.pal{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin:26px 0}
.pal i{width:36px;height:36px;border-radius:50%;box-shadow:inset 0 0 0 2px var(--paper),0 0 0 1px var(--ink-12),0 8px 14px -8px rgba(0,0,0,.35);position:relative}
.pal.named{gap:14px 12px}.pal.named i{display:block}.pal.named b{display:block;font-family:var(--caps);font-weight:400;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-50);margin-top:8px;max-width:58px}
.pal.named>div{text-align:center}
.dc p{font-size:16px;color:var(--ink-70);max-width:34ch;margin:0 auto;font-style:italic}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:18px;text-align:left;margin:22px 0 0}
.cols>div{border-top:1px solid var(--ink-15);padding-top:12px}
.cols b{display:block;font-family:var(--caps);font-size:11px;letter-spacing:.28em;text-transform:uppercase;font-weight:600;margin-bottom:8px;color:var(--ink)}
.cols span{font-size:15px;color:var(--ink-70);font-style:italic;line-height:1.55}
.note{font-size:14px;color:var(--ink-60);font-style:italic;border-top:1px solid var(--ink-15);padding-top:14px;margin:22px auto 0;max-width:36ch}
.ext{display:inline-flex;align-items:center;gap:6px;font-family:var(--caps);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink-30);padding-bottom:3px;margin-top:16px}
.walk{overflow:hidden}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start;margin:6px 0 10px}.duo figure{margin:0;text-align:center}.duo img{width:78%;height:230px;object-fit:contain;display:block;margin:0 auto 12px}.duo b{display:block;font-family:var(--caps);font-size:10.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink);font-weight:600;margin-bottom:6px}.duo span:last-child{font-size:14.5px;line-height:1.55;color:var(--ink-70);font-style:italic;display:block}
.pal-list{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 18px;margin:14px 0 6px;font-family:var(--caps);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-70)}.pal-list i{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:8px;vertical-align:-1px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.dl{margin:18px 0 0;text-align:left}.dl>div{display:grid;grid-template-columns:92px 1fr;gap:14px;padding:12px 0;border-top:1px solid var(--ink-12)}.dl>div:last-child{border-bottom:1px solid var(--ink-12)}.dl dt{font-family:var(--caps);font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--ink);font-weight:600;padding-top:3px}.dl dd{margin:0;font-size:15px;line-height:1.55;color:var(--ink-70);font-style:italic}
.dc.typo .serif.big{font-size:40px;line-height:1.05;margin-top:10px;font-weight:300}.dc.typo .rule{margin:16px auto 6px}
.notes{list-style:none;margin:18px 0 0;padding:0;text-align:left}.notes li{display:grid;grid-template-columns:34px 1fr;gap:12px;padding:14px 0;border-top:1px solid var(--ink-12)}.notes li:last-child{border-bottom:1px solid var(--ink-12)}.notes .num{font-family:var(--caps);font-size:11px;letter-spacing:.2em;color:var(--accent-text);padding-top:4px}.notes b{display:block;font-family:var(--caps);font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--ink);font-weight:600;margin-bottom:4px}.notes span:last-child{font-size:15px;line-height:1.55;color:var(--ink-70);font-style:italic}


/* ===== hébergement ===== */
.hotel{padding:22px 0;border-bottom:1px solid var(--ink-12)}
.hotel:last-child{border-bottom:0}
.hotel b{font-family:var(--script);font-size:32px;font-weight:400;display:block;color:var(--ink)}
.hotel .p{font-size:22px;font-weight:300;display:block;margin:4px 0 6px}
.hotel small{color:var(--ink-60);font-size:14px;letter-spacing:.04em;display:block}
.hotel a.book{display:inline-block;margin-top:12px;font-family:var(--caps);font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--ink);font-weight:600;text-decoration:none;border-bottom:1px solid var(--ink-30);padding-bottom:3px}
.hotel .ill{margin-bottom:12px}
.hotel .tags{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:10px}
.hotel .tags i,.code{white-space:nowrap;font-style:normal;font-family:var(--caps);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;border:1px solid var(--ink-15);padding:5px 10px;color:var(--ink-70)}
.code{cursor:pointer;background:var(--paper-2);border-color:var(--accent-40);color:var(--ink)}.code.ok{background:var(--ink);color:var(--paper)}
.hrows .hotel{display:grid;grid-template-columns:38% 1fr;gap:16px;align-items:center;text-align:left}
.hrows .hotel:nth-child(even) .ill{order:2}.hrows .hotel .ill{margin:0;width:100%}
.hrows .hotel b{font-size:24px;line-height:1.1}.hrows .hotel .p{font-size:18px}.hrows .hotel small{font-size:13px}.hrows .hotel .tags{justify-content:flex-start}
.hnum .hotel{text-align:left;display:grid;grid-template-columns:34px 1fr;gap:14px}
.hnum .hotel .num{padding-top:10px}.hnum .hotel b{font-family:var(--serif);font-size:24px;font-weight:400}
.addr{margin-top:26px}

/* ===== transport ===== */
.tips{display:grid;gap:14px;text-align:left}
.tip{display:grid;grid-template-columns:64px 1fr;gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--ink-12)}
.tip:last-child{border-bottom:0}
.tip img{width:64px;display:block}
.tip b{display:block;font-family:var(--caps);font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink);font-weight:600;margin-bottom:4px}
.tip span{font-size:15px;color:var(--ink-70);font-style:italic}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.tile{padding:18px 10px;border-top:1px solid var(--ink-12)}
.tile img{width:52px;display:block;margin:0 auto 10px}
.tile b{display:block;font-family:var(--caps);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink);font-weight:600;margin-bottom:6px}
.tile span{font-size:14px;color:var(--ink-70);font-style:italic;line-height:1.5}
.shuttle{display:grid;gap:22px;margin-top:22px;text-align:left}
.shuttle h4{margin:0 0 8px;font-family:var(--caps);font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--accent-text);font-weight:600}
.shuttle .st{display:grid;grid-template-columns:minmax(70px,max-content) 1fr;gap:12px;padding:8px 0;border-bottom:1px solid var(--ink-12);margin:0}
.shuttle .st b{white-space:nowrap;font-family:var(--caps);font-weight:600;font-size:13px;letter-spacing:.14em;color:var(--ink)}
.shuttle .st span{font-size:15px;color:var(--ink-70)}

/* ===== cadeaux ===== */
#gift p.lead{max-width:36ch}
.jauge{margin:30px auto 8px;max-width:320px}
.jauge .lb span:last-child{text-align:right}.jauge .bar{height:1px;background:var(--ink-30);position:relative}
.jauge .bar i{position:absolute;left:0;top:-1px;height:3px;width:0;background:var(--ink);transition:width 2s var(--slow)}
.jauge .lb{display:flex;justify-content:space-between;gap:14px;text-align:left;font-family:var(--caps);font-size:10px;letter-spacing:.24em;text-transform:uppercase;margin-top:12px;color:var(--ink-50)}
.ways{display:grid;gap:12px;margin-top:26px;text-align:left}
.way{border-top:1px solid var(--ink-12)}.ways .way:last-child{border-bottom:1px solid var(--ink-12)}
.way>button{width:100%;background:none;border:0;padding:16px 18px;display:flex;justify-content:space-between;align-items:center;gap:12px;font-family:var(--serif);font-size:19px;color:var(--ink);cursor:pointer;text-align:left}
.way>button i{font-style:normal;font-family:var(--caps);font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent-text);border:1px solid var(--accent-40);padding:3px 8px}
.way .body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease-out}
.way.open .body{grid-template-rows:1fr}
.way .body>div{overflow:hidden}
.way .inner{padding:0 18px 18px;font-size:15px;color:var(--ink-70);font-style:italic}
.way code{display:block;font-family:var(--serif);font-style:normal;font-size:18px;letter-spacing:.08em;color:var(--ink);margin:10px 0;word-break:break-all}
.way .copy{font-style:normal}

/* ===== rsvp ===== */
.f{display:grid;gap:26px;text-align:left}
.f>label,.f .fld{display:grid;gap:10px}
.f .lb{font-family:var(--caps);font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--ink-70);font-weight:600}
.f input[type=text],.f input[type=email],.f input[type=tel],.f textarea,.f select{border:0;border-bottom:1px solid var(--ink-30);background:transparent;padding:10px 0;font-family:var(--serif);font-size:20px;color:var(--ink);border-radius:0;width:100%;transition:border-color .3s}
.f input:focus,.f textarea:focus,.f select:focus{outline:none;border-color:var(--ink)}
.f.tried input:invalid{border-color:#b04a4a}
.choice{display:grid;gap:10px}
.choice label{border-top:1px solid var(--ink-12);padding:14px 6px;display:flex;gap:14px;align-items:center;font-size:18px;color:var(--ink);cursor:pointer;transition:.25s;border-radius:0}
.choice label:last-child{border-bottom:1px solid var(--ink-12)}.choice label:has(input:checked){border-color:var(--ink);background:var(--paper-2)}
.choice input{accent-color:var(--ink);width:18px;height:18px}
.choice.row{grid-template-columns:1fr 1fr}
.party{display:grid;gap:12px}
.party .pr{display:grid;grid-template-columns:1fr 1fr 28px;gap:10px;align-items:end}
.party .pr.kid input{border-color:var(--accent-40)}
.party .pr .x{border:0;background:none;color:var(--ink-50);font-size:22px;cursor:pointer;padding:6px 0}
.party .add{display:flex;gap:10px}
.party .pr.pre{grid-template-columns:28px 1fr 1fr}.party .pr .pm{grid-column:1/3}.party .pr .pnote{grid-column:1/-1}.party .pr.pre .pm{grid-column:2/-1}.party .pr.pre .pnote{grid-column:2/-1}.f .dnote{margin-top:10px}.party .pr .on{display:flex;align-items:center;justify-content:center;padding-bottom:10px}.party .pr .on input{width:20px;height:20px;accent-color:var(--accent,#5b86d6)}.party .pr.off input[type=text],.party .pr.off select{opacity:.4}
.party .add button{font-family:var(--caps);font-size:10px;letter-spacing:.24em;text-transform:uppercase;border:1px solid var(--ink-30);background:none;padding:10px 14px;cursor:pointer;color:var(--ink)}
.f .branch{display:none;gap:26px}.f .branch.on{display:grid;animation:up .6s var(--out)}
/* réponse v3 (16/10/2026, invitations/rsvp-form.js) : une fiche par personne, moments, régimes, âge, questions du couple */
.pcs{display:grid;gap:0}
.pc{display:grid;gap:12px;padding:16px 0 18px;border-top:1px solid var(--ink-12)}
.pc:last-child{border-bottom:1px solid var(--ink-12)}
.pc-h{display:flex;align-items:center;gap:12px;min-height:44px}
.pc-h .pc-name{flex:1;min-width:0}
.pc-who{font-family:var(--caps);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-50)}
.pc-nm{font-family:var(--serif);font-size:20px;color:var(--ink);flex:1;min-width:0;overflow-wrap:anywhere}
.pc-tag{font-family:var(--caps);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-50)}
.pc-on{display:flex;align-items:center}.pc-on input{width:20px;height:20px;accent-color:var(--ink)}
.pc .x{border:0;background:none;color:var(--ink-50);font-size:22px;cursor:pointer;min-width:44px;min-height:44px}
.pc-b{display:grid;gap:14px}
.pc.off .pc-b{display:none}.pc.off .pc-h{opacity:.5}
.pc-row{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center}.pc-row select{flex:1;min-width:160px}
.pc-l{display:block;font-family:var(--caps);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-50);margin-bottom:8px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips label{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:6px 14px;border:1px solid var(--ink-30);font-size:15px;color:var(--ink);cursor:pointer;border-radius:0;transition:.2s;background:transparent}
.chips label:has(input:checked){border-color:var(--ink);background:var(--paper-2)}
.chips input{accent-color:var(--ink);width:16px;height:16px;margin:0}
.pc-lk{background:none;border:0;padding:0;font:inherit;font-size:15px;color:var(--ink-70);text-align:left;cursor:pointer;text-decoration:underline;text-decoration-color:var(--ink-30);text-underline-offset:4px;min-height:32px}
.pc-lk b{font-weight:500;color:var(--ink)}
.pc-abs{font-size:14px;justify-self:start}
.pc-d{display:grid;gap:12px}
.pc-chk{display:inline-flex;align-items:center;gap:10px;font-size:15px;color:var(--ink);cursor:pointer;min-height:40px}.pc-chk input{accent-color:var(--ink);width:18px;height:18px}
.pc-err{margin:0;color:#b04a4a;font-size:14px}
.pc-ao{margin:14px 0 0;font-size:14px;color:var(--ink-50);font-style:italic}
.rqs{display:grid;gap:22px}.rqs:empty{display:none}.rq{display:grid;gap:4px}
.rsvp-by{margin:0;font-size:15px;color:var(--ink-70);text-align:center;font-style:italic}
.rsvp-again{display:grid;gap:6px;justify-items:center;text-align:center}.rsvp-again p{margin:0;font-size:15px;line-height:1.5;color:var(--ink-70);font-style:italic}
[data-back]{margin-top:6px}
.counter{display:flex;align-items:center;gap:22px}
.counter button{width:40px;height:40px;border-radius:50%;border:1px solid var(--ink-30);background:none;font-size:20px;cursor:pointer;color:var(--ink);transition:transform .3s}
.counter button:hover{transform:scale(1.08)}.counter button:active{transform:scale(.94)}
.counter b{font-size:30px;font-weight:300;min-width:24px;text-align:center}
.f .btn{width:100%;margin-top:8px}
.f .priv{font-size:13px;color:var(--ink-50);text-align:center;margin:0;font-style:italic}
.f .err{display:none;color:#b04a4a;font-size:14px;text-align:center}.f .err.on{display:block}
.hp{display:none!important}
#done{display:none;padding:20px 0 0}
#done.show{display:block;animation:up 1s var(--ease)}
@keyframes up{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
#done img{width:130px;margin:0 auto 20px;display:block;animation:stamp .8s var(--io);filter:drop-shadow(0 10px 12px rgba(30,20,0,.3))}
@keyframes stamp{0%{scale:2.2;opacity:0}60%{scale:.92;opacity:1}100%{scale:1}}
#done p{color:var(--ink-70);font-style:italic;font-size:17px}
#done .btns{margin-top:18px}
.confirm{position:fixed;inset:0;z-index:70;background:var(--paper);display:grid;place-items:center;opacity:0;pointer-events:none;transition:opacity .7s var(--io)}
.confirm.on{opacity:1;pointer-events:auto}
.confirm video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.confirm .sealbox{position:relative;width:60%;max-width:260px;text-align:center}
.confirm .sealbox img{width:100%;display:block;filter:drop-shadow(0 16px 20px rgba(30,20,0,.35));animation:stamp .9s var(--io)}
.confirm .sealbox .rip{position:absolute;left:50%;top:50%;width:100%;aspect-ratio:1;border:1px solid var(--ink-30);border-radius:50%;translate:-50% -50%;animation:radar 1.4s ease-out .3s 2}
.confirm .sc{margin-top:22px;animation:up 1s var(--out) .6s both}
#confetti{position:fixed;inset:0;pointer-events:none;z-index:80}

/* ===== faq / livre d'or / contact / pied ===== */
.q{border-bottom:1px solid var(--ink-12);text-align:left}
.q>button{width:100%;background:none;border:0;cursor:pointer;padding:18px 0;font-family:var(--serif);font-size:20px;display:flex;justify-content:space-between;gap:16px;align-items:center;color:var(--ink);text-align:left}
.q>button .num{margin-right:12px}.qn{counter-reset:qn}.qn .q{counter-increment:qn}.qn .q .num::before{content:counter(qn,decimal-leading-zero)}
.q>button::after{content:"+";color:var(--ink-50);font-size:22px;transition:rotate .3s var(--out);flex:0 0 auto}
.q.open>button::after{rotate:45deg}
.q .body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease-out}
.q.open .body{grid-template-rows:1fr}
.q .body>div{overflow:hidden}
.q .ans{padding:0 0 18px;font-size:16px;color:var(--ink-70);font-style:italic;line-height:1.65}
.q .ans ul{margin:8px 0 0;padding-left:18px}.q .ans a{color:var(--ink)}
.wishes{display:grid;gap:14px;text-align:left;margin-top:26px}
.wish{border:1px solid var(--ink-12);padding:16px 18px;font-style:italic;color:var(--ink-70);font-size:16px;background:var(--paper)}
.wish b{display:block;font-style:normal;font-family:var(--script);font-size:24px;color:var(--ink);margin-bottom:4px}
.menu{position:relative;padding:26px 8%}
.menu .mt{font-family:var(--caps);font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-60);margin:18px 0 6px}
.menu .md{font-size:18px;color:var(--ink);line-height:1.5}
.menu .md small{display:block;font-size:14px;color:var(--ink-50);font-style:italic}
.songs{display:grid;gap:10px;text-align:left;margin-top:24px}
.songs input{border:0;border-bottom:1px solid var(--ink-30);background:transparent;padding:10px 0;font-family:var(--serif);font-size:18px;color:var(--ink);width:100%;border-radius:0}
.songs input:focus{outline:none;border-color:var(--ink)}
.quote{font-family:var(--script);font-size:38px;line-height:1.25;color:var(--ink);max-width:16ch;margin:0 auto}
.quote small{display:block;font-family:var(--caps);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-50);margin-top:18px}
.cards{display:grid;gap:18px}
.card{border:1px solid var(--ink-12);padding:26px 22px;background:var(--paper);position:relative;border-radius:0}
.card .sc{font-size:38px}
.card .caps{margin-bottom:8px}
.card p{font-size:16px;color:var(--ink-70);font-style:italic;margin-top:10px}
.card .btns{margin-top:16px}
.contacts{display:grid;gap:14px;margin-top:22px}
.contact{border:1px solid var(--ink-12);padding:20px;background:var(--paper);text-align:left;display:grid;grid-template-columns:64px 1fr;gap:16px;align-items:center}
.contact.nopic{grid-template-columns:1fr}
.contact img{width:64px;height:64px;border-radius:50%;object-fit:cover}
.contact b{display:block;font-size:20px;color:var(--ink)}.contact small{display:block;font-family:var(--caps);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-50);margin:2px 0 10px}
.contact .btns{justify-content:flex-start}.contact .btns .btn{padding:8px 12px;font-size:10px;letter-spacing:.2em}
footer{text-align:center;padding:70px 28px 34px;position:relative;overflow:hidden}
footer .mono{width:28%;margin:0 auto 18px;display:block}
footer .sc.xl{font-size:44px}
footer .fl{position:absolute;width:90%;left:50%;bottom:-30%;transform:translateX(-50%) rotate(180deg);opacity:.9;pointer-events:none}
footer .made{margin-top:46px;font-family:'Jost',system-ui,sans-serif;font-weight:400;font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-50);position:relative}
footer .made a{color:inherit;text-decoration:none;border-bottom:1px solid var(--ink-30);padding-bottom:2px}
footer .made a:hover{color:var(--ink)}
footer .bigmono{width:46%;margin:0 auto 34px;display:block;scale:.7;opacity:.25;transition:scale 1.4s var(--out),opacity 1.4s var(--out)}
footer .bigmono.in{scale:.98;opacity:1}

html.shot .side.fly{animation:none!important}
html.kf .lang,html.kf .bar-cta,html.kf .son,html.kf .scrolldown,html.kf .wm,html.kf .demowm{display:none!important}
html.kf .cov>*,html.kf .pet{display:none!important}   /* image de fin : décor fixe seul — ni texte, ni pétale en vol */
html.shot .rv,html.shot .ly,html.shot .cov>*,html.shot .flyer,html.shot .lang,html.shot .son,html.shot .tl::before{transition:none!important}html.shot .ambi,html.shot .son,html.shot .bar-cta{display:none!important}
/* ===== flottants ===== */
.bar-cta{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translate(-50%,90px);z-index:40;display:flex;gap:4px;background:rgba(78,90,44,0.94);backdrop-filter:blur(10px);border-radius:999px;padding:5px;box-shadow:0 20px 40px -20px rgba(0,0,0,.6);transition:transform .8s var(--slow)}
body.open.scrolled .bar-cta{transform:translate(-50%,0)}
.bar-cta a{border:0;background:var(--paper);color:var(--ink);font-family:var(--caps);font-size:12px;letter-spacing:.28em;text-transform:uppercase;font-weight:600;padding:12px 20px;border-radius:999px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px}
.son{position:fixed;top:calc(16px + env(safe-area-inset-top));right:calc(16px + env(safe-area-inset-right));z-index:90;width:44px;height:44px;border-radius:50%;border:1px solid var(--ink-15,rgba(78,90,44,0.18));background:var(--paper-92,rgba(242,238,230,0.92));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--ink);display:grid;place-items:center;cursor:pointer;box-shadow:0 8px 24px -6px rgba(40,30,10,.25);opacity:0;scale:.8;transition:opacity .5s var(--ease) 1.2s,scale .5s var(--back) 1.2s,background .3s,color .3s}
.son:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.son:active{scale:.92;transition-delay:0s}
/* ===== Tablet & Desktop Responsive Polish (Displays mobile view consistently like Demo 8 & other demos) ===== */
@media (min-width: 481px) {
  html, body {
    background: #D3C0AA !important;
  }
  html:has(body.intro), body.intro, body.intro .ilayer {
    background: #D1B999 !important;
  }
  body {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    min-height: 100vh;
  }
  .stage {
    max-width: 480px;
    width: 100%;
    margin: 0 auto;
    position: relative;
    box-shadow: 0 16px 48px rgba(40, 30, 10, 0.22);
    background: var(--paper);
    overflow: clip;
  }
  .page {
    max-width: 480px;
    width: 100%;
  }
  #introBack.ilayer {
    position: fixed;
    max-width: 480px;
    left: 50% !important;
    transform: translateX(-50%);
    width: 100%;
  }
  .son {
    top: max(20px, calc(16px + env(safe-area-inset-top))) !important;
    bottom: auto !important;
    right: calc(50% - 240px + 16px) !important;
    z-index: 90 !important;
  }
  .lang {
    right: calc(50% - 240px + 18px) !important;
  }
  .bar-cta {
    left: calc(50% - 240px + 16px) !important;
    right: calc(50% - 240px + 16px) !important;
    width: auto !important;
    max-width: 448px;
  }
}
@media(max-width:480px){
html,body{background:#D3C0AA;transition:background-color .9s}
html.fsx:not(:has(body.intro)),html.fsx body:not(.intro){background:#F2EEE6}
html.fsx.fsattop:not(:has(body.intro)),html.fsx.fsattop body:not(.intro){background:#D3C0AA;transition:none}
html:has(body.intro),body.intro,body.intro .ilayer{background:#D1B999}
html.fsx body.intro .ilayer,html.fsx .ihalo{position:absolute;top:0;bottom:auto;height:var(--vhf);--vh:var(--vhf)}
html.fsx .page{min-height:var(--vhf)}
html:has(body.scrolled),body.scrolled{background:#F2EEE6}
html.fsx body section#cover{min-height:var(--fsmin,calc(max(var(--fsref,var(--vh)), var(--vhf)) + var(--fst)))!important;display:flow-root}
html.fsx body section#cover .cov{margin-top:var(--fst)}
html.fsx body #cover .cov.fit{bottom:auto;height:var(--fsref,var(--vh))}
html.fsx body .ilayer .skip{top:calc(var(--fst) + 16px)!important}
html.fsx .page{min-height:calc(var(--vhf) + var(--fst))}
html.fsx body.intro .ilayer,html.fsx .ihalo{height:calc(var(--vhf) + var(--fst));--vh:calc(var(--vhf) + var(--fst))}html.fsx body section#cover .cov{margin-top:0}
}
html .skip{top:calc(16px + env(safe-area-inset-top));right:calc(16px + env(safe-area-inset-right));height:44px;min-height:44px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;padding:0 calc(16px - .26em) 0 16px;border-width:1px;border-style:solid;border-radius:0;font-family:'Jost',system-ui,sans-serif;font-size:10.5px;font-weight:500;letter-spacing:.26em;line-height:1;text-transform:uppercase}html .lang-hidden{display:none!important;top:calc(16px + env(safe-area-inset-top));right:calc(16px + env(safe-area-inset-right));box-sizing:border-box;gap:2px;padding:3px;border-width:1px;border-style:solid;border-radius:999px}html .lang button{position:relative;box-sizing:border-box;height:25px;min-height:0;min-width:34px;margin:0;padding:0 calc(9px - .18em) 0 9px;border:0;border-radius:999px;font-family:'Jost',system-ui,sans-serif;font-size:10px;font-weight:500;letter-spacing:.18em;line-height:1;text-transform:uppercase}html .lang button::after{content:'';position:absolute;inset:-10px -1px}html.apercu .skip{top:60px}html .yyback{position:fixed;top:calc(16px + env(safe-area-inset-top));left:calc(16px + env(safe-area-inset-left));z-index:300;box-sizing:border-box;display:inline-flex;align-items:center;gap:7px;height:33px;margin:0;padding:0 calc(13px - .18em) 0 11px;border-width:1px;border-style:solid;border-radius:999px;font-family:'Jost',system-ui,sans-serif;font-size:10px;font-weight:500;letter-spacing:.18em;line-height:1;text-transform:uppercase;text-decoration:none;-webkit-tap-highlight-color:transparent;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}html .yyback::after{content:'';position:absolute;inset:-6px -2px}html .yyback svg{display:block;width:12px;height:10px}html.kf .yyback,html.shot .yyback{display:none}

/* ===== intro : video ===== */

.envbox{position:absolute;left:50%;top:50%;width:max(100%,calc(var(--vh,100vh) * .5625));aspect-ratio:9/16;transform:translate(-50%,-50%) scale(1);transform-origin:50% 50%;will-change:transform;transition:transform .5s var(--out)}
.envbox>*{position:absolute;inset:0}
.envbox{background:#F2EEE6}.envbox .vposter{width:100%;height:100%;object-fit:cover;display:block}
.envbox video{width:100%;height:100%;object-fit:cover;display:block;background:transparent}
.envbox.press{transform:translate(-50%,-50%) scale(.985)}
/* sans vidéo (économie d'énergie, données limitées, vidéo bloquée) : l'image de départ avance doucement dans la lumière */
.envbox.novid{transition:transform 1.6s var(--slow),filter 1.6s var(--ease);transform:translate(-50%,-50%) scale(1.09);filter:brightness(1.14) saturate(.92)}
video::-webkit-media-controls,video::-webkit-media-controls-start-playback-button,video::-webkit-media-controls-overlay-play-button{display:none!important;-webkit-appearance:none}
/* raccord sans lumière (17/10/2026, Swan Lake) : la dernière image de l'intro EST le haut de page ; le décor y est posé sans transition, seuls les textes arrivent */
body.rac #cover .ly,body.rac #cover .scene,body.rac #cover .scene *{transition:none!important}body.rac .ilayer{transition-duration:.22s}

/* ===== couverture ===== */
#cover{background:#F2EEE6;overflow:visible;position:relative;z-index:6}
.ilayer{transition:opacity 1s cubic-bezier(.4,0,.3,1)}   /* fondu des rideaux immobiles vers la page : seuls arbres, sol et texte apparaissent */
.scene .skyv{transition:opacity 1.8s var(--ease)}   /* la boucle (rideaux qui se balancent) prend le relais sans à-coup */
.ihalo{display:none!important}   /* raccord : les rideaux découvrent directement la page, sans lumière */
#cover .scene{overflow:visible;background:#F2EEE6}
.scene .full,.scene .skyv,.scene .skyv.full,body.open .scene .full{object-fit:cover!important;object-position:50% 50%;transform:none!important;transition:none!important}
video.skyv{background:transparent}
.scene .pbox{position:absolute;left:50%;top:50%;width:max(var(--cw,100%),calc(var(--ch,var(--vh,calc(100 * var(--vh,100vh) / 100))) * .5625));aspect-ratio:9/16;transform:translate(-50%,-50%);pointer-events:none;z-index:3}
.cov{min-height:0!important;position:absolute;left:0;right:0;top:calc(var(--ch,var(--vh,calc(100 * var(--vh,100vh) / 100))) / 2 - max(var(--ch,var(--vh,calc(100 * var(--vh,100vh) / 100))) / 2,var(--cw,100vw) * .8889));bottom:auto;height:calc(max(var(--ch,var(--vh,calc(100 * var(--vh,100vh) / 100))),var(--cw,100vw) * 1.7778) * .43);padding:0 12% 14px;justify-content:flex-end;align-items:center;text-align:center;color:#5E6B34;text-shadow:0 1px 10px rgba(255,255,255,.6);z-index:8}
#cover .cov .sc.xl{font-family:var(--script);font-size:31px;line-height:1.05;color:#5E6B34}
.cov .sc.xl .nm{display:block;line-height:.92}.cov .sc.xl .amp{display:block;font-size:.66em;line-height:.95;margin:.04em 0}
#cover .cov .caps{margin:0 0 16px;letter-spacing:.22em;font-size:11.5px;line-height:1.75;color:#525F2D}   /* 4,5:1 sur la broderie (#5E6B34 : 4,0) */
#cover .cov .date{display:block;margin-top:18px;font-family:var(--caps);font-size:14.5px;font-weight:400;letter-spacing:.1em;line-height:1;color:#525F2D;text-transform:none}
.twk{position:absolute;inset:0;z-index:3;pointer-events:none}.twk .sway{position:absolute;inset:0;will-change:transform}
.twk .swL{transform-origin:16% 100%;animation:sway 6s ease-in-out infinite}.twk .swR{transform-origin:85% 100%;animation:sway 7.3s ease-in-out infinite;animation-delay:-2.4s}
@keyframes sway{0%,100%{transform:rotate(-1.4deg)}50%{transform:rotate(1.4deg)}}
.twk .tw{position:absolute;border-radius:50%;background:radial-gradient(circle,#fff 0 30%,rgba(255,244,205,.6) 45%,rgba(255,244,205,0) 72%);opacity:0;animation-name:twk;animation-timing-function:ease-in-out;animation-iteration-count:infinite;filter:drop-shadow(0 0 2px rgba(255,240,200,.85))}
@keyframes twk{0%,100%{opacity:0;transform:scale(.4)}50%{opacity:1;transform:scale(1.15)}}
.twk.tfloor{z-index:7}
.cglow{position:absolute;left:50%;top:68%;width:34%;height:20%;transform:translateX(-50%);z-index:3;pointer-events:none;background:radial-gradient(ellipse at 50% 55%,rgba(255,247,232,.72),rgba(255,246,230,.26) 44%,rgba(255,246,230,0) 72%);mix-blend-mode:screen;animation:lamp 3.6s ease-in-out infinite}
@keyframes lamp{0%,100%{opacity:.08}50%{opacity:.6}}
.pearl-floor{position:absolute;left:50%;transform:translateX(-50%);width:123%;max-width:none;bottom:-15%;z-index:5;pointer-events:none}   /* déjà là sous l'intro : il apparaît dans le fondu, au moment même où les rideaux s'immobilisent */
#cover+section{padding-top:118px}   /* sous la nappe de perles, qui déborde de la couverture : recalculé par le script du thème */
@media(prefers-reduced-motion:reduce){.twk .sway,.cglow{animation:none}}

/* ===== thème ===== */
.sc{font-size:64px}.sc.md{font-size:48px}.day{font-size:46px}.flip b{font-size:56px}.dc .sc{font-size:44px!important}.hrows .hotel b{font-family:var(--serif);font-size:22px;font-weight:500}.hrows .hotel .p{font-size:17px}.menu{padding:6px 2%}.menu .mt{margin:12px 0 4px}.menu .md{font-size:17px;line-height:1.4}section{padding:52px 28px}section.tight{padding:38px 28px}.st{margin-bottom:18px}.rule{margin:14px auto 0}footer{padding:56px 28px 34px}.rows .r{min-height:76px}#wishes .f{gap:18px}.story-oval .frame{aspect-ratio:512/732}#menu .frame{aspect-ratio:600/900}.story-oval .frame,#menu .frame{grid-template-rows:minmax(0,1fr);min-height:0}.frame>.in{overflow:hidden}.story-oval .frame>.in{--fitk:.74}.story-oval .frame>img.fr{object-fit:contain}.story-oval .menu{padding:0 1%}.story-oval .menu .md{font-size:11.3px;line-height:1.26;font-style:italic}.story-oval .menu .mt{margin:6px 0 0;font-size:9.5px;letter-spacing:.26em;color:var(--accent-text)}.prog-classic{padding-bottom:45px!important}.prog-classic .rows .r img{display:none}.prog-classic .rows .r{min-height:0;padding:16px 0}.deroule{padding-top:0!important;display:flow-root}.deroule>.gvwrap{width:118%;max-width:none;margin:16px -9% -14%;display:block;position:relative;line-height:0}.deroule>.gvwrap video{display:block;width:100%;height:auto}.deroule .st{position:relative;z-index:3;margin-top:0}.deroule .tl .it:nth-child(even) .tx{order:0;text-align:left}.deroule .tl::before{background:none;border-left:2px dotted var(--ink-30);width:0;left:calc(50% - 1px)}.deroule .tl .it::after{background:url(assets/pearl/kit/perle-petite.webp?v=379256) center/contain no-repeat;border:0;width:15px;height:15px;box-shadow:none;filter:drop-shadow(0 1px 2px rgba(70,55,30,.35))}.deroule .tl .it.now::after{background:url(assets/pearl/kit/perle-petite.webp?v=379256) center/contain no-repeat;scale:1.5}.stay-c .hnum{max-width:340px;margin:0 auto}.stay-c .hnum .hotel{display:block!important;grid-template-columns:none;text-align:center}.stay-c .hnum .hotel .num{display:block;padding:0;margin:0 auto 8px}.stay-c .hnum .hotel>div{text-align:center}.venir-car{overflow:hidden}.venir-car img.ill{animation:drive 7s linear infinite;will-change:transform}@keyframes drive{0%{transform:translateX(-185%)}100%{transform:translateX(185%)}}@media(prefers-reduced-motion:reduce){.venir-car img.ill{animation:none}}#playlist .st{margin-bottom:14px}#playlist .mapc{margin:0 auto 14px;max-width:34ch}.ill.w20{width:20%}footer .bigmono{opacity:1!important;scale:1!important;width:30%;margin:0 auto 10px;filter:none}.paper-bg{display:none!important}

/* ===== Sacred Arabic Nikah Heading & English Translation in Theme Colors ===== */
.ar-heading{font-family:'Reem Kufi','El Messiri',sans-serif!important;font-size:clamp(22px,5.8vw,32px)!important;font-weight:700!important;line-height:1.65!important;color:var(--ink)!important;text-align:center;direction:rtl;max-width:440px;margin:0 auto 8px;letter-spacing:0!important;text-transform:none!important}
.ar-dua-english{font-family:var(--serif,'Cormorant Garamond',serif);font-style:italic;font-size:clamp(14px,3.8vw,16.5px);line-height:1.55;color:var(--accent-text);text-align:center;max-width:380px;margin:0 auto 14px}

/* ===== Pearl Cameo Scratch Reveal Frame (Big & Simple, Like Other Demos) ===== */
.cameo-scratch-container{width:min(340px,88vw);margin:24px auto 8px;display:flex;justify-content:center;position:relative}
.cameo-frame-aspect-box{position:relative;width:100%;aspect-ratio:512/732;display:flex;align-items:center;justify-content:center;user-select:none;-webkit-user-select:none}
.cameo-photo-base{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 20%;clip-path:ellipse(34.8% 34.8% at 50% 50%);-webkit-clip-path:ellipse(34.8% 34.8% at 50% 50%);z-index:1}
.cameo-scratch-clipper{position:absolute;inset:0;width:100%;height:100%;clip-path:ellipse(34.8% 34.8% at 50% 50%);-webkit-clip-path:ellipse(34.8% 34.8% at 50% 50%);z-index:5;transition:opacity .6s cubic-bezier(.22,1,.36,1)}
.scratch-canvas{width:100%;height:100%;cursor:crosshair;touch-action:none;display:block}
.cameo-frame-artwork{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:10;pointer-events:none;filter:drop-shadow(0 14px 28px rgba(40,30,10,.2))}
.scratch-reveal-cue{position:absolute;inset:0;z-index:15;display:flex;align-items:center;justify-content:center;pointer-events:none;transition:opacity .4s ease}
.scratch-reveal-label{font-family:var(--serif,'Cormorant Garamond',serif);font-style:italic;font-size:clamp(16px,4.2vw,19px);line-height:1.15;text-align:center;color:var(--ink,#3b4522);padding:9px 20px;background:rgba(255,253,245,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;border:1px solid rgba(184,155,94,.45);box-shadow:0 6px 20px rgba(40,30,10,.18);animation:pulse-cue 2.2s infinite ease-in-out}
@keyframes pulse-cue{0%,100%{transform:scale(1);opacity:.95}50%{transform:scale(1.06);opacity:1}}

/* ===== Ornate Square Frame Card (Ceremony & Reception - Like Demo 6 & Demo 5) ===== */
#menu{padding:56px 20px 62px!important}
#menu .frame{aspect-ratio:600/1040;max-width:440px;margin:16px auto;filter:drop-shadow(0 16px 36px rgba(40,30,10,.14))}
.frame-square-overlay{width:100%;height:100%;display:flex;flex-direction:column;justify-content:space-evenly;align-items:center;text-align:center;box-sizing:border-box;padding:6px 0}

.cartouche-header-group{display:flex;flex-direction:column;align-items:center;gap:3px;margin:0;width:100%}
.card-top-tag{font-family:var(--caps);font-size:11px;letter-spacing:.28em;color:var(--accent-text);text-transform:uppercase;font-weight:600;display:block}
.cartouche-script-title{font-family:var(--script);font-size:clamp(34px,8.6vw,44px);line-height:1.1;color:var(--ink);margin:2px 0 1px;font-weight:400}
.cartouche-celebrate-wrap{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin:2px 0 4px}
.celebrate-line{flex:1;max-width:34px;height:1px;background:var(--accent-40)}
.cartouche-subtitle-tag{font-family:var(--caps);font-size:10px;letter-spacing:.26em;color:var(--ink-70);text-transform:uppercase}

/* 1. DATE STRIP SCROLL ANIMATION: SATURDAY 23 OCTOBER 2027 */
.cartouche-date-strip{width:100%;margin:6px 0 10px;text-align:center;position:relative}
.cartouche-day-name{
  font-family:var(--caps);
  font-size:12px;
  letter-spacing:.2em;
  font-weight:700;
  color:var(--accent-text);
  text-transform:uppercase;
  margin-bottom:3px;
  opacity:0;
  transform:translateX(-26px);
  transition:opacity .8s var(--out) .1s, transform .8s var(--out) .1s, letter-spacing .8s var(--out) .1s;
  will-change:transform, opacity, letter-spacing;
}
.cartouche-date-strip.in .cartouche-day-name,
.frame.in .cartouche-day-name{
  opacity:1;
  transform:translateX(0);
  letter-spacing:.32em;
  animation:dayNameLivingPulse 3.8s ease-in-out 1.2s infinite alternate;
}

.cartouche-date-row{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;position:relative}
.cartouche-date-line{
  flex:1;
  max-width:32px;
  height:1.5px;
  background:linear-gradient(90deg,transparent,var(--accent) 70%,var(--accent-text) 100%);
  position:relative;
  transform:scaleX(0);
  transform-origin:right center;
  transition:transform .75s cubic-bezier(0.25, 1, 0.5, 1) .22s;
}
.cartouche-date-line.right-slide{
  background:linear-gradient(90deg,var(--accent-text) 0%,var(--accent) 30%,transparent 100%);
  transform-origin:left center;
}
.cartouche-date-line::after{content:'◆';position:absolute;top:50%;transform:translateY(-50%);font-size:7.5px;color:var(--accent);line-height:1}
.cartouche-date-line:not(.right-slide)::after{right:-2px}
.cartouche-date-line.right-slide::after{left:-2px}

.cartouche-date-strip.in .cartouche-date-line,
.frame.in .cartouche-date-line{
  transform:scaleX(1);
}

.cartouche-date-number{
  font-family:var(--serif);
  font-size:clamp(34px,9vw,44px);
  font-weight:700;
  line-height:.95;
  letter-spacing:.02em;
  color:var(--ink);
  background:linear-gradient(
    115deg,
    #3b4522 0%,
    #8C6318 20%,
    #FFF7D9 46%,
    #E5C56E 58%,
    #8A6218 80%,
    #3b4522 100%
  );
  background-size:250% 100%;
  background-position:100% 0;
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
  opacity:0;
  transform:scale(0.25) translateY(16px);
  will-change:transform, opacity, background-position;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0 4px;
}
.cartouche-date-strip.in .cartouche-date-number,
.frame.in .cartouche-date-number,
.cartouche-date-number.in{
  opacity:1;
  animation:dateNumberScrollPop 1.15s cubic-bezier(0.175, 0.885, 0.32, 1.275) .22s both,
             dateNumberLustre 5s ease-in-out 1.5s infinite alternate;
}

.cartouche-month-year{
  font-family:var(--caps);
  font-size:11.5px;
  letter-spacing:.2em;
  font-weight:600;
  color:var(--accent-text);
  text-transform:uppercase;
  margin-top:3px;
  opacity:0;
  transform:translateX(26px);
  transition:opacity .8s var(--out) .16s, transform .8s var(--out) .16s, letter-spacing .8s var(--out) .16s;
  will-change:transform, opacity, letter-spacing;
}
.cartouche-date-strip.in .cartouche-month-year,
.frame.in .cartouche-month-year{
  opacity:1;
  transform:translateX(0);
  letter-spacing:.3em;
}

/* 2. GRAND JUMA MASJID & VENUE 1 SCROLL ANIMATION */
.cartouche-event-item{width:100%;display:flex;flex-direction:column;align-items:center;gap:2.5px}
.cartouche-event-badge{font-family:var(--caps);font-size:11px;letter-spacing:.22em;font-weight:700;color:var(--ink);text-transform:uppercase;padding:2px 12px;background:rgba(184,155,94,.14);border-radius:999px;border:1px solid rgba(184,155,94,.3)}
.cartouche-time-highlight{font-family:var(--caps);font-size:11.5px;font-weight:600;letter-spacing:.14em;color:var(--accent-text);text-transform:uppercase;margin:2px 0}

.venue-block-nikah{
  opacity:0;
  transform:translateY(16px);
  transition:opacity .75s var(--out), transform .75s var(--out);
}
.venue-block-nikah.in,
.frame.in .venue-block-nikah{
  opacity:1;
  transform:translateY(0);
}

.venue-block-nikah .cartouche-venue-title{
  font-family:var(--serif);
  font-size:clamp(19px,5vw,23px);
  font-weight:600;
  color:var(--ink);
  line-height:1.25;
  margin:2px 0 1px;
  opacity:0;
  transform:translateY(16px) scale(0.96);
  filter:blur(4px);
  will-change:transform, opacity, filter;
}
.venue-block-nikah.in .cartouche-venue-title,
.frame.in .venue-block-nikah .cartouche-venue-title,
.cartouche-venue-title.nikah-title.in{
  opacity:1;
  transform:translateY(0) scale(1);
  filter:blur(0);
  animation:venueTitleReveal .9s cubic-bezier(0.16, 1, 0.3, 1) .14s both,
             venueGlowPulse 4.5s ease-in-out 1.2s infinite alternate;
}

.venue-block-nikah .cartouche-venue-location{
  font-family:var(--caps);
  font-size:10px;
  letter-spacing:.1em;
  color:var(--ink-70);
  text-transform:uppercase;
  font-weight:600;
  margin:0 0 6px;
  opacity:0;
  transform:translateY(10px);
  transition:opacity .75s var(--out) .28s, transform .75s var(--out) .28s, letter-spacing .75s var(--out) .28s;
  will-change:transform, opacity, letter-spacing;
}
.venue-block-nikah.in .cartouche-venue-location,
.frame.in .venue-block-nikah .cartouche-venue-location{
  opacity:1;
  transform:translateY(0);
  letter-spacing:.18em;
}

/* 3. LE MÉRIDIEN CONVENTION CENTRE & VENUE 2 SCROLL ANIMATION */
.venue-block-walima{
  opacity:0;
  transform:translateY(16px);
  transition:opacity .75s var(--out), transform .75s var(--out);
}
.venue-block-walima.in,
.frame.in .venue-block-walima{
  opacity:1;
  transform:translateY(0);
}

.venue-block-walima .cartouche-venue-title{
  font-family:var(--serif);
  font-size:clamp(19px,5vw,23px);
  font-weight:600;
  color:var(--ink);
  line-height:1.25;
  margin:2px 0 1px;
  opacity:0;
  transform:translateY(16px) scale(0.96);
  filter:blur(4px);
  will-change:transform, opacity, filter;
}
.venue-block-walima.in .cartouche-venue-title,
.frame.in .venue-block-walima .cartouche-venue-title,
.cartouche-venue-title.walima-title.in{
  opacity:1;
  transform:translateY(0) scale(1);
  filter:blur(0);
  animation:venueTitleReveal .9s cubic-bezier(0.16, 1, 0.3, 1) .22s both,
             venueGlowPulse 4.5s ease-in-out 1.5s infinite alternate;
}

.venue-block-walima .cartouche-venue-location{
  font-family:var(--caps);
  font-size:10px;
  letter-spacing:.1em;
  color:var(--ink-70);
  text-transform:uppercase;
  font-weight:600;
  margin:0 0 6px;
  opacity:0;
  transform:translateY(10px);
  transition:opacity .75s var(--out) .34s, transform .75s var(--out) .34s, letter-spacing .75s var(--out) .34s;
  will-change:transform, opacity, letter-spacing;
}
.venue-block-walima.in .cartouche-venue-location,
.frame.in .venue-block-walima .cartouche-venue-location{
  opacity:1;
  transform:translateY(0);
  letter-spacing:.18em;
}

/* Interactive Action Buttons & Dividers */
.cartouche-event-links{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  flex-wrap:wrap;
  margin-top:2px;
  opacity:0;
  transform:translateY(8px);
  transition:opacity .65s var(--out) .38s, transform .65s var(--out) .38s;
}
.venue-block-nikah.in .cartouche-event-links,
.frame.in .venue-block-nikah .cartouche-event-links,
.venue-block-walima.in .cartouche-event-links,
.frame.in .venue-block-walima .cartouche-event-links{
  opacity:1;
  transform:translateY(0);
}

.btn-cartouche-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;border-radius:999px;border:1px solid rgba(184,155,94,.55);background:rgba(255,255,255,.94);color:var(--ink);font-family:var(--caps);font-size:10px;letter-spacing:.2em;text-transform:uppercase;font-weight:600;text-decoration:none;box-shadow:0 2px 8px rgba(40,30,10,.06);transition:all .25s ease}
.btn-cartouche-pill:hover{background:var(--ink);color:#FFFDF5;border-color:var(--ink);transform:translateY(-1px);box-shadow:0 5px 14px rgba(40,30,10,.15)}
.btn-cartouche-pill svg{flex-shrink:0}

.cartouche-inner-divider{width:68%;height:1px;background:linear-gradient(90deg,transparent,rgba(184,155,94,.45) 50%,transparent 100%);margin:8px auto;position:relative}
.cartouche-inner-divider::after{content:'◆';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:7.5px;color:var(--accent);background:var(--paper);padding:0 5px}

/* ===== KEYFRAME ANIMATIONS FOR DATE & VENUES ===== */
@keyframes dateNumberScrollPop{
  0%{
    opacity:0;
    transform:scale(0.25) translateY(18px);
    filter:drop-shadow(0 0 0 rgba(184,155,94,0));
  }
  60%{
    opacity:1;
    transform:scale(1.15) translateY(-3px);
    filter:drop-shadow(0 2px 8px rgba(255,255,255,1)) drop-shadow(0 4px 16px rgba(184,155,94,0.65));
  }
  82%{
    transform:scale(0.97) translateY(1px);
  }
  100%{
    opacity:1;
    transform:scale(1) translateY(0);
    filter:drop-shadow(0 1px 3px rgba(255,255,255,0.9)) drop-shadow(0 2px 8px rgba(184,155,94,0.25));
  }
}

@keyframes dateNumberLustre{
  0%{background-position:100% 0}
  100%{background-position:0% 0}
}

@keyframes dayNameLivingPulse{
  0%,100%{
    color:var(--accent-text);
    letter-spacing:.32em;
  }
  50%{
    color:#9C7226;
    letter-spacing:.35em;
  }
}

@keyframes venueTitleReveal{
  0%{
    opacity:0;
    transform:translateY(16px) scale(0.95);
    filter:blur(4px);
    text-shadow:0 0 0 rgba(184,155,94,0);
  }
  65%{
    opacity:1;
    transform:translateY(-1px) scale(1.02);
    filter:blur(0);
    text-shadow:0 2px 14px rgba(184,155,94,0.55);
  }
  100%{
    opacity:1;
    transform:translateY(0) scale(1);
    filter:blur(0);
    text-shadow:0 1px 3px rgba(40,30,10,0.08);
  }
}

@keyframes venueGlowPulse{
  0%,100%{
    text-shadow:0 1px 3px rgba(40,30,10,0.08);
  }
  50%{
    text-shadow:0 2px 10px rgba(184,155,94,0.38), 0 0 2px rgba(184,155,94,0.45);
  }
}

@media(prefers-reduced-motion:reduce){
  .cartouche-date-strip,
  .cartouche-day-name,
  .cartouche-date-number,
  .cartouche-date-line,
  .cartouche-month-year,
  .venue-block-nikah,
  .venue-block-walima,
  .venue-block-nikah .cartouche-venue-title,
  .venue-block-walima .cartouche-venue-title,
  .venue-block-nikah .cartouche-venue-location,
  .venue-block-walima .cartouche-venue-location,
  .cartouche-event-links{
    opacity:1!important;
    transform:none!important;
    animation:none!important;
    transition:none!important;
    filter:none!important;
  }
}