/* Ange & Brice: emerald theme. Colors and fonts come from config.php (CSS variables). */
body{--bs-body-bg:var(--bg);--bs-body-color:var(--ink);--bs-body-font-family:var(--sans);--bs-link-color:var(--accent);--bs-link-hover-color:var(--accent);--bs-border-color:color-mix(in srgb,var(--ink) 18%,transparent);--bs-secondary-color:var(--muted);
  background:var(--bg);color:var(--ink);font-size:1.05rem;line-height:1.7;-webkit-font-smoothing:antialiased}
html{scroll-behavior:smooth;scroll-padding-top:4.5rem}
html.locked,body.locked{overflow:hidden;height:100%}
:focus-visible{outline:3px solid var(--accent2)!important;outline-offset:3px}
h1,h2,h3,.navbar-brand,.names-sm,.env-names,.event-time,.wish p,.countdown b,.pass-name,.pass-h{font-family:var(--serif)}
h2{font-weight:600;font-size:clamp(2.2rem,5vw,3.4rem);line-height:1.08;margin-bottom:.6rem}
.py-section{padding:6rem 0}.narrow{max-width:46rem}.alt{background:var(--alt)}.muted{color:var(--muted)}
a{color:var(--accent)}
.orn{display:block;width:7.5rem;height:.8rem;margin:.9rem auto 1.6rem;color:var(--accent2)}
.col-md-7 .orn,.hero-text .orn{margin-left:0}
.text-center .orn,.hero-text.text-center .orn{margin-left:auto}
.btn-accent{background:var(--accent);color:var(--onaccent);border:1.5px solid var(--accent);font-weight:500}.btn-accent:hover,.btn-accent:focus{filter:brightness(1.08);color:var(--onaccent);background:var(--accent);border-color:var(--accent)}
.btn-accent:disabled{opacity:.7;color:var(--onaccent);background:var(--accent)}
.btn-line{border:1.5px solid var(--accent2);color:var(--ink);background:transparent}.btn-line:hover,.btn-line.active{background:var(--accent2);color:var(--bg);border-color:var(--accent2)}
/* Nav */
.site-nav{background:color-mix(in srgb,var(--bg) 84%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid color-mix(in srgb,var(--accent2) 28%,transparent)}
.navbar-brand{font-size:1.75rem;font-weight:600;color:var(--ink)!important}.navbar-brand span{color:var(--accent2);font-style:italic}
.nav-link{color:var(--muted)!important;font-weight:500}.nav-link:hover,.nav-link.active{color:var(--ink)!important}
.offcanvas{background:var(--bg);color:var(--ink)}
[data-bs-theme=dark] .navbar-toggler-icon{filter:invert(1)}
/* Hero (split) */
.hero{min-height:100svh;display:grid;align-items:center;padding:7rem 0 4rem;position:relative;overflow:hidden;
  background:radial-gradient(60rem 40rem at 85% 20%,color-mix(in srgb,var(--accent) 22%,transparent),transparent 60%),radial-gradient(50rem 40rem at 0% 100%,color-mix(in srgb,var(--accent) 14%,transparent),transparent 60%)}
.hero-top{font-size:1.1rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:.6rem}
.names{font-weight:600;font-size:clamp(4rem,12vw,8.5rem);line-height:.92;letter-spacing:-.015em;margin:0}
.names span{display:block}.names i{display:block;font-size:.4em;color:var(--accent2);font-weight:400;margin:.05em 0}
.hero-text .orn{margin:1.3rem 0 1rem}.hero-text.text-center .orn{margin-left:auto;margin-right:auto}
@media(min-width:992px){.hero-text.text-lg-start .orn{margin-left:0}}
.hero-date{font-size:1.25rem;letter-spacing:.03em}
.arch{width:min(82vw,25rem);aspect-ratio:3/4;margin:0 auto;border-radius:999px 999px 1.2rem 1.2rem;background:linear-gradient(160deg,var(--accent2),var(--accent));background-size:cover;background-position:center;box-shadow:0 0 0 10px var(--bg),0 0 0 11.5px var(--accent2),0 30px 60px rgba(0,0,0,.35)}
.countdown{display:flex;gap:.8rem;margin-top:1.4rem;flex-wrap:wrap}
.countdown div{min-width:4.6rem;padding:.7rem .5rem;text-align:center;border:1px solid color-mix(in srgb,var(--accent2) 45%,transparent);border-radius:.8rem;background:color-mix(in srgb,var(--ink) 6%,transparent)}
.countdown b{display:block;font-size:2.2rem;line-height:1;font-weight:600}.countdown span{font-size:.8rem;color:var(--muted)}
/* Sections */
.story-img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:999px 999px .6rem .6rem;box-shadow:0 0 0 8px var(--bg),0 0 0 9.5px var(--accent2)}
.event{display:grid;grid-template-columns:9rem 1fr;gap:1.5rem;padding:1.8rem 0;border-top:1px solid color-mix(in srgb,var(--accent2) 45%,transparent)}
.event-time{font-size:2.1rem;line-height:1.1;color:var(--accent2);font-weight:600}.event-time small{display:block;font:400 .85rem var(--sans);color:var(--muted);margin-top:.2rem}.event h3{font-size:1.9rem;font-weight:600}
@media(max-width:560px){.event{grid-template-columns:1fr;gap:.4rem}}
.prog-title{font-size:1.9rem;font-weight:600;margin:3rem 0 .8rem}
.programme{list-style:none;padding:0;margin:0}
.programme li{display:grid;grid-template-columns:7.5rem 1fr;gap:1rem;padding:.9rem 0;border-bottom:1px solid color-mix(in srgb,var(--accent2) 30%,transparent)}
.programme li span:first-child{font:600 1.4rem var(--serif);color:var(--accent2)}
.note{margin-top:2.2rem;padding:1.5rem 1.75rem;border:1px solid color-mix(in srgb,var(--accent2) 55%,transparent);border-radius:.8rem;text-align:center;background:color-mix(in srgb,var(--ink) 4%,transparent)}.note h3{font-size:1.6rem;font-weight:600}
/* Gallery */
.gallery{columns:3 15rem;column-gap:.7rem}.g-item{display:block;width:100%;padding:0;border:0;background:none;margin-bottom:.7rem;cursor:zoom-in;break-inside:avoid;border-radius:.5rem;overflow:hidden}
.g-item img{width:100%;height:auto;display:block;transition:opacity .2s,transform .5s}.g-item:hover img{opacity:.92;transform:scale(1.025)}
.g-item.hidden-by-filter{display:none}
.lb-stage{position:relative;display:flex;align-items:center;justify-content:center}.lb-stage img{max-height:80vh;width:auto;max-width:100%;object-fit:contain}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:3rem;height:3rem;border-radius:50%;border:0;background:rgba(0,0,0,.45);color:#fff;font-size:2rem;line-height:1;cursor:pointer}.lb-nav:hover{background:rgba(0,0,0,.7)}
#lb-prev{left:.4rem}#lb-next{right:.4rem}
.modal-backdrop.show{--bs-backdrop-opacity:.9}
/* Gifts, forms */
.qr-img{width:100%;max-width:11rem;background:#fff;padding:.6rem;border-radius:.6rem}
.gift-list li{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0;border-bottom:1px solid color-mix(in srgb,var(--accent2) 35%,transparent)}
.form-control,.form-select{background-color:color-mix(in srgb,var(--ink) 7%,var(--bg));border:1.5px solid color-mix(in srgb,var(--ink) 24%,transparent);color:var(--ink);border-radius:.7rem}
.form-select{--bs-form-select-bg-img:none}
.form-control::placeholder{color:var(--muted)}.form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 28%,transparent);background-color:color-mix(in srgb,var(--ink) 9%,var(--bg));color:var(--ink)}
.form-select option{background:var(--bg);color:var(--ink)}
.form-text{color:var(--muted)}
.was-validated .form-control:invalid,.was-validated .form-select:invalid{border-color:#f87171}
.status{font-weight:500;min-height:1.5rem}.status.err{color:#f87171}
.wish{border-left:2px solid var(--accent2);padding-left:1.25rem;margin-bottom:1.5rem}.wish p{font-style:italic;font-size:1.45rem;line-height:1.4;margin-bottom:.25rem}.wish footer{font-size:.9rem;color:var(--muted)}
.accordion-item{border-color:color-mix(in srgb,var(--accent2) 35%,transparent);color:var(--ink)}.accordion-button{color:var(--ink)!important}[data-bs-theme=dark] .accordion-button::after{filter:invert(1)}
.names-sm{font-size:2rem;color:var(--ink)}
.rsvp-bar{position:fixed;right:1rem;bottom:1rem;z-index:20;box-shadow:0 8px 24px rgba(0,0,0,.3);transition:opacity .3s}.rsvp-bar.gone{opacity:0;pointer-events:none}
/* RSVP ticket */
.ticket{margin-top:2rem;padding:2rem 1.5rem;border:1px solid color-mix(in srgb,var(--accent2) 55%,transparent);border-radius:1rem;background:color-mix(in srgb,var(--ink) 5%,transparent)}
.ticket h3{font-size:2rem;font-weight:600}.ticket img{background:#fff;padding:10px;border-radius:.9rem;border:3px solid var(--accent)}
/* Sub pages */
.sub-hero{padding:9rem 0 3rem}.sub-hero h1{font-size:clamp(3rem,8vw,5.5rem);font-weight:600;line-height:1}
.dropzone{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:2.4rem 1rem;border:2px dashed color-mix(in srgb,var(--accent) 65%,transparent);border-radius:1rem;background:color-mix(in srgb,var(--accent) 7%,transparent);text-align:center;cursor:pointer;transition:background .2s,border-color .2s}
.dropzone:hover,.dropzone.drag{background:color-mix(in srgb,var(--accent) 16%,transparent);border-color:var(--accent)}
.dz-icon{font-size:2rem;color:var(--accent);line-height:1}.dz-title{font:600 1.7rem var(--serif)}
.queue li{display:grid;grid-template-columns:3rem 1fr auto;gap:.8rem;align-items:center;padding:.5rem 0;border-bottom:1px solid color-mix(in srgb,var(--ink) 12%,transparent);font-size:.95rem}
.queue img{width:3rem;height:3rem;object-fit:cover;border-radius:.4rem;background:color-mix(in srgb,var(--ink) 10%,transparent)}
.queue .bar{height:.3rem;border-radius:1rem;background:color-mix(in srgb,var(--ink) 15%,transparent);overflow:hidden;margin-top:.25rem}.queue .bar i{display:block;height:100%;width:0;background:var(--accent);transition:width .2s}
.queue .st{font-size:.85rem;color:var(--muted)}.queue .ok .st{color:var(--accent)}.queue .bad .st{color:#f87171}
.chip{border:1.5px solid color-mix(in srgb,var(--accent2) 60%,transparent);background:transparent;color:var(--ink);padding:.35rem 1.1rem;border-radius:999px;font-weight:500}.chip.active,.chip:hover{background:var(--accent);border-color:var(--accent);color:var(--onaccent)}
.pass-wrap{padding:8rem 0 4rem}.pass-card{max-width:30rem;margin:0 auto;padding:2.5rem 1.5rem;border:1px solid color-mix(in srgb,var(--accent2) 55%,transparent);border-radius:1.4rem;background:color-mix(in srgb,var(--ink) 5%,transparent)}
.pass-h{font-size:2.6rem;font-weight:600}.pass-name{font-size:2rem;line-height:1.2;margin-bottom:.8rem}
.pass-qr{display:block;margin:1.2rem auto;background:#fff;padding:12px;border-radius:1rem;border:3px solid var(--accent);max-width:100%;height:auto}
.badge-ok,.badge-no{display:inline-block;padding:.25rem .9rem;border-radius:999px;font-weight:600;font-size:.9rem}.badge-ok{background:var(--accent);color:var(--onaccent)}.badge-no{background:color-mix(in srgb,var(--ink) 15%,transparent)}
.pass-dl{text-align:left;margin:1.2rem 0 0}.pass-dl div{padding:.6rem 0;border-top:1px solid color-mix(in srgb,var(--accent2) 30%,transparent)}.pass-dl dt{font:600 .75rem var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--accent2)}.pass-dl dd{margin:0}
/* Music */
/* Envelope intro */
@media(prefers-reduced-motion:no-preference){

  .js .reveal{opacity:0;transform:translateY(26px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}.js .reveal.in{opacity:1;transform:none}
  .hero .arch,.hero-text>*{animation:rise 1.1s both cubic-bezier(.2,.7,.2,1)}
  .hero-text>*:nth-child(2){animation-delay:.15s}.hero-text>*:nth-child(4){animation-delay:.3s}.hero-text>*:nth-child(5){animation-delay:.4s}.hero-text>*:nth-child(6){animation-delay:.5s}
}
@keyframes pulse{50%{box-shadow:0 10px 30px rgba(0,0,0,.4),0 0 0 14px color-mix(in srgb,var(--accent) 25%,transparent)}}
@keyframes rise{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}

/* ---------- Opening "Save the date" envelope ---------- */
#envelope{display:none;position:fixed;inset:0;z-index:2000;overflow:hidden;padding:16px;
  background:
    radial-gradient(ellipse at 80% 30%,rgba(255,255,255,.7),transparent 55%),
    radial-gradient(ellipse at 15% 85%,rgba(214,204,182,.35),transparent 50%),
    repeating-linear-gradient(90deg,rgba(150,130,100,.025) 0 2px,transparent 2px 7px),
    #f1ece2;
  color:#1d2f5e;font-family:'Lora',Georgia,serif;transition:opacity .8s ease .9s,visibility 0s linear 1.7s}
.js #envelope{display:grid;place-items:center}
.env-inner{width:min(520px,100%);text-align:center;display:flex;flex-direction:column;align-items:center;animation:envIn 1s cubic-bezier(.2,.8,.2,1) both}
.env-orn-top{width:150px;margin-bottom:.6rem}
.env-save{font-family:'Bodoni Moda','Playfair Display',Georgia,serif;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:#1d2f5e;font-size:clamp(1.5rem,5vw,2rem);margin:0 0 1rem}
.env-stage{position:relative;width:100%;aspect-ratio:1/.72;max-height:50vh}
.env-back{position:absolute;left:12%;right:12%;bottom:8%;height:48%;background:#152a5c;border-radius:4px;box-shadow:inset 0 30px 40px -20px rgba(0,0,0,.45)}
.env-photo{position:absolute;margin:0;background:#fff;padding:3.2% 3.2% 9%;box-shadow:0 10px 25px -8px rgba(30,30,50,.45);transition:transform 1s cubic-bezier(.5,0,.2,1) .05s}
.env-photo img{display:block;width:100%;height:100%;object-fit:cover}
.env-photo.p1{left:14%;top:4%;width:38%;aspect-ratio:3/4;transform:rotate(-7deg)}
.env-photo.p2{left:46%;top:12%;width:40%;aspect-ratio:3/4;transform:rotate(6deg)}
.env-front{position:absolute;left:12%;right:12%;bottom:8%;height:40%;background:linear-gradient(180deg,#1b3470,#132857);
  clip-path:polygon(0 0,50% 42%,100% 0,100% 100%,0 100%);border-radius:0 0 4px 4px;box-shadow:0 18px 30px -12px rgba(20,30,70,.5);transition:transform .9s ease}
.env-front::after{content:"";position:absolute;inset:0;background:linear-gradient(160deg,transparent 48%,rgba(0,0,0,.18) 50%,transparent 52%),linear-gradient(200deg,transparent 48%,rgba(0,0,0,.18) 50%,transparent 52%)}
.env-wax{position:absolute;left:50%;top:60%;width:15%;aspect-ratio:1;transform:translate(-50%,-50%);border:0;padding:0;border-radius:48% 52% 50% 46%;cursor:pointer;
  background:radial-gradient(circle at 35% 30%,#f2cf7c,#c48a2c 55%,#8f5a14);box-shadow:0 4px 10px rgba(60,30,0,.45),inset 0 0 0 4px rgba(255,230,170,.35);display:grid;place-items:center;transition:transform .5s,opacity .5s}
.env-wax svg{width:58%}
.env-flowers{position:absolute;width:40%;pointer-events:none;filter:drop-shadow(0 6px 8px rgba(20,30,60,.25))}
.env-flowers.tl{left:-4%;top:28%;transform:scaleX(-1) rotate(-15deg)}
.env-flowers.br{right:-6%;bottom:-6%}
.env-flowers .hy{animation:sway 6s ease-in-out infinite;transform-origin:105px 150px}.env-flowers .h2{transform-origin:165px 95px;animation-delay:-3s}
.env-dear{margin:1rem 0 0;font-style:italic;color:#4a5d8c}
.env-names{font-family:'Bodoni Moda','Playfair Display',Georgia,serif;font-size:clamp(2rem,7vw,2.8rem);color:#1d2f5e;margin-top:2.2rem;line-height:1.1}
.env-names i{color:#b98a3a;font-family:'Cormorant Garamond',serif}
.env-date{letter-spacing:.12em;text-transform:uppercase;font-size:.9rem;color:#4a5d8c;margin:.4rem 0 1.2rem}
.env-open{border:0;border-radius:999px;padding:.8rem 2.8rem;background:#047857;color:#fff;font:600 1.15rem 'Lora',Georgia,serif;letter-spacing:.06em;
  box-shadow:0 12px 24px -10px rgba(4,120,87,.6);cursor:pointer;transition:transform .2s,background .2s}
.env-open:hover,.env-open:focus-visible{transform:translateY(-2px);background:#065f46;outline:none}
/* opening: seal breaks, photos rise out of the envelope, then the page appears */
#envelope.open{opacity:0;visibility:hidden}
#envelope.open .env-wax{transform:translate(-50%,-50%) scale(1.4);opacity:0}
#envelope.open .env-photo.p1{transform:translateY(-60%) rotate(-12deg)}
#envelope.open .env-photo.p2{transform:translateY(-55%) rotate(10deg)}
#envelope.open .env-front{transform:translateY(25%)}
@keyframes envIn{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes sway{0%,100%{transform:rotate(0)}50%{transform:rotate(2deg)}}
@media (max-height:700px){.env-stage{max-height:46vh}.env-save{margin-bottom:.4rem}}
@media (prefers-reduced-motion:reduce){.env-inner,.env-flowers .hy{animation:none}}

/* ---------- Floating music button (equalizer bars; they dance while the song plays) ---------- */
.music-fab{position:fixed;left:1rem;bottom:1rem;z-index:1500;width:64px;height:64px;border-radius:50%;border:0;padding:0;
  display:flex;align-items:center;justify-content:center;gap:4px;cursor:pointer;
  background:radial-gradient(circle at 35% 30%,#f48a98,#e85d70);box-shadow:0 0 0 7px rgba(232,93,112,.18),0 10px 24px -6px rgba(180,30,60,.55);
  transition:transform .2s}
.music-fab:hover,.music-fab:focus-visible{transform:scale(1.06);outline:none}
.music-fab span{width:5px;border-radius:3px;background:#fff;height:9px;align-self:center;transform-origin:center bottom}
.music-fab span:nth-child(2){height:14px}.music-fab span:nth-child(3){height:20px}.music-fab span:nth-child(4){height:12px}
.music-fab span{align-self:auto;margin-top:auto;margin-bottom:22px}
.music-fab.active span{animation:eq .9s ease-in-out infinite}
.music-fab.active span:nth-child(2){animation-delay:-.3s}.music-fab.active span:nth-child(3){animation-delay:-.6s}.music-fab.active span:nth-child(4){animation-delay:-.15s}
.music-fab:not(.active){filter:saturate(.55);opacity:.85}
@keyframes eq{0%,100%{transform:scaleY(.45)}50%{transform:scaleY(1.15)}}
@media (prefers-reduced-motion:reduce){.music-fab.active span{animation:none}}

/* ---------- Responsive fixes ---------- */
@media (max-width:575.98px){
  .row.g-5{--bs-gutter-x:1.5rem;--bs-gutter-y:2rem}      /* wide gutters made phones scroll sideways */
  .container{padding-left:16px;padding-right:16px}
}
html,body{overflow-x:clip}
/* phone held sideways: photos on the left, text on the right, all on one screen */
.env-head,.env-text{display:contents}
@media (orientation:landscape) and (max-height:520px){
  .env-inner{width:min(820px,100%);display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto;column-gap:28px;align-items:center}
  .env-head{display:flex;flex-direction:column;align-items:center;grid-column:2;grid-row:1;align-self:end}
  .env-text{display:flex;flex-direction:column;align-items:center;grid-column:2;grid-row:2;align-self:start}
  .env-stage{grid-column:1;grid-row:1/3;max-height:none;height:min(80vh,320px);aspect-ratio:auto}
  .env-orn-top{margin:0 0 .3rem}.env-save{font-size:1.2rem;margin:0}
  .env-names{margin-top:.8rem;font-size:1.9rem}.env-date{margin:.2rem 0 .8rem}
  .env-photo.p1,.env-photo.p2{width:auto;height:72%}
}
/* gallery: even, centred grid whatever the number of photos */
.gallery{columns:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.7rem;justify-content:center}
.gallery .g-item{margin:0;aspect-ratio:3/2}.gallery .g-item img{width:100%;height:100%;object-fit:cover}
@media (min-width:992px){.gallery{grid-template-columns:repeat(auto-fit,minmax(15rem,20rem))}}
/* floating buttons never cover the countdown or the last lines of the page on phones */
@media (max-width:767.98px){
  .music-fab{width:48px;height:48px;left:.75rem;bottom:.75rem;gap:3px;box-shadow:0 0 0 5px rgba(232,93,112,.18),0 8px 18px -6px rgba(180,30,60,.55)}
  .music-fab span{width:4px;margin-bottom:16px}.music-fab span:nth-child(3){height:16px}
  .rsvp-bar{bottom:.75rem;right:.75rem}
  body{padding-bottom:72px}
}
@media (max-width:767.98px){
  .hero .arch{max-width:min(240px,62vw);max-height:38vh;margin-left:auto;margin-right:auto}
  .hero{padding-top:5.5rem}
  .hero .row{--bs-gutter-y:1.25rem}
}

/* =====================================================================
   Inner site, "ivory" look (same as the opening card): paper, navy, gold
   ===================================================================== */
body{background:
  radial-gradient(ellipse at 85% 0%,rgba(255,255,255,.65),transparent 50%),
  repeating-linear-gradient(90deg,rgba(150,130,100,.022) 0 2px,transparent 2px 7px),var(--bg);background-attachment:fixed}
.alt{background:color-mix(in srgb,var(--alt) 70%,transparent)}
h2{font-weight:400;letter-spacing:-.01em}
h2 + div .orn,.orn{color:var(--accent2)}
.btn-accent{border-radius:999px;letter-spacing:.03em;box-shadow:0 10px 22px -12px color-mix(in srgb,var(--accent) 80%,transparent)}
.btn-line{color:var(--accent)}.btn-line:hover,.btn-line.active{color:#fff}
/* nav */
.site-nav{background:color-mix(in srgb,var(--bg) 88%,transparent)}
.navbar-brand{font-weight:400}.navbar-brand span{font-family:'Cormorant Garamond',serif}
.nav-link{font-size:.95rem;letter-spacing:.04em}
/* hero */
.hero{background:none}
.hero-top{font-size:.9rem;letter-spacing:.28em;color:var(--accent2)}
.names{font-weight:400;font-size:clamp(3.6rem,10vw,7.5rem);color:var(--ink)}
.names i{font-family:'Cormorant Garamond',serif;font-style:italic}
.hero-date{letter-spacing:.14em;text-transform:uppercase;font-size:1rem;color:var(--muted)}
.arch{background-color:var(--alt);box-shadow:0 0 0 10px #fff,0 0 0 11px color-mix(in srgb,var(--accent2) 60%,transparent),0 30px 60px -20px rgba(29,47,94,.45)}
.countdown div{background:#fff;border-color:color-mix(in srgb,var(--accent2) 40%,transparent);box-shadow:0 8px 20px -14px rgba(29,47,94,.5)}
.countdown b{font-weight:400;color:var(--accent)}
/* story */
.story-img{box-shadow:0 0 0 8px #fff,0 0 0 9px color-mix(in srgb,var(--accent2) 55%,transparent),0 25px 50px -20px rgba(29,47,94,.45)}
#story p.fs-5{font-size:1.15rem!important;line-height:1.85}
/* day: reception card + timeline */
.event{background:#fff;border:0;border-radius:1rem;padding:1.8rem;box-shadow:0 18px 40px -26px rgba(29,47,94,.45);margin-top:1rem}
.event-time{font-weight:400}
.programme{position:relative;margin-left:.4rem}
.programme::before{content:"";position:absolute;left:7.5rem;top:.6rem;bottom:.6rem;width:1px;background:color-mix(in srgb,var(--accent2) 50%,transparent)}
.programme li{grid-template-columns:7.5rem 1fr;border:0;padding:.85rem 0;position:relative}
.programme li span:last-child{padding-left:1.6rem}
.programme li::after{content:"";position:absolute;left:calc(7.5rem - 5px);top:1.35rem;width:11px;height:11px;border-radius:50%;background:var(--bg);border:2px solid var(--accent2)}
.programme li span:first-child{font-weight:400}
@media(max-width:560px){.programme li{grid-template-columns:5.2rem 1fr}.programme::before{left:5.2rem}.programme li::after{left:calc(5.2rem - 5px)}.programme li span:first-child{font-size:1.15rem}}
.note{background:#fff;border-color:color-mix(in srgb,var(--accent2) 35%,transparent);box-shadow:0 18px 40px -28px rgba(29,47,94,.45)}
/* gallery: framed photos like the opening card */
.gallery{gap:1.4rem}
.gallery .g-item{background:#fff;padding:.6rem .6rem 2rem;border-radius:3px;overflow:visible;box-shadow:0 14px 30px -16px rgba(29,47,94,.5);transition:transform .4s cubic-bezier(.2,.7,.2,1),box-shadow .4s;aspect-ratio:auto}
.gallery .g-item img{aspect-ratio:3/2;height:auto;border-radius:1px}
.gallery .g-item:nth-child(3n+1){transform:rotate(-1.6deg)}.gallery .g-item:nth-child(3n+2){transform:rotate(1.2deg)}.gallery .g-item:nth-child(3n){transform:rotate(-.6deg)}
.gallery .g-item:hover{transform:rotate(0) translateY(-4px);box-shadow:0 22px 40px -18px rgba(29,47,94,.55)}
.gallery .g-item:hover img{transform:none;opacity:1}
/* forms as cards */
#rsvp-form,#wishes form,.uploader{background:#fff;padding:clamp(1.25rem,4vw,2.25rem);border-radius:1.1rem;box-shadow:0 22px 50px -30px rgba(29,47,94,.5)}
.form-control,.form-select{background-color:#FBF8F2;border:1px solid color-mix(in srgb,var(--ink) 16%,transparent)}
.form-control:focus,.form-select:focus{background-color:#fff}
.form-label{font-size:.9rem;letter-spacing:.04em;color:var(--muted)}
.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%231D2F5E' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}
.ticket{background:#fff;border-color:color-mix(in srgb,var(--accent2) 40%,transparent)}
/* wishes as cards */
.wish{background:#fff;border:0;border-left:3px solid var(--accent2);border-radius:.4rem 1rem 1rem .4rem;padding:1.2rem 1.4rem;box-shadow:0 14px 30px -22px rgba(29,47,94,.45)}
.wish p{font-family:'Cormorant Garamond',serif;font-size:1.5rem;color:var(--ink)}
/* FAQ */
.accordion-button{font-family:var(--sans);font-size:1.05rem;padding:1.1rem 0}
.accordion-button:not(.collapsed){color:var(--accent)!important}
/* footer, sub pages */
footer .names-sm{font-size:2.2rem}
.sub-hero{background:none}.sub-hero h1{font-weight:400}
.dropzone{background:#FBF8F2;border-color:color-mix(in srgb,var(--accent2) 60%,transparent)}
.dz-icon{color:var(--accent2)}
.chip{color:var(--accent)}
.pass-card{background:#fff;box-shadow:0 22px 50px -30px rgba(29,47,94,.5)}
.rsvp-bar{background:var(--accent);color:#fff;border-color:var(--accent)}
.story-img{max-width:340px;max-height:72vh;display:block;margin:0 auto}
.gallery{max-width:54rem;margin-left:auto;margin-right:auto}
@media (min-width:992px){.gallery{grid-template-columns:repeat(2,1fr);gap:2rem}}
@media (min-width:576px) and (max-width:991.98px){.gallery{grid-template-columns:repeat(2,1fr)}}

/* ---------- Flower borders on BOTH sides of EVERY section (scroll with the page) ----------
   Each section picks a left and a right bouquet (--fl / --fr) and where it sits (--yl / --yr).
   They live in the empty space beside the text column (--cw = width of that column). */
.hero,.py-section,.sub-hero,.pass-wrap,body>footer{position:relative;isolation:isolate;overflow-x:clip}
.hero::before,.hero::after,.py-section::before,.py-section::after,.sub-hero::before,.sub-hero::after,.pass-wrap::before,.pass-wrap::after,body>footer::before,body>footer::after{
  content:"";position:absolute;z-index:-1;pointer-events:none;background-repeat:no-repeat;background-size:contain;
  filter:drop-shadow(0 10px 14px rgba(29,47,94,.16));
  width:var(--fw);height:min(100%,var(--fh))}
.hero::before,.py-section::before,.sub-hero::before,.pass-wrap::before,body>footer::before{left:-6px;top:var(--yl,2rem);background-image:var(--fl);background-position:left top}
.hero::after,.py-section::after,.sub-hero::after,.pass-wrap::after,body>footer::after{right:-6px;top:var(--yr,2rem);background-image:var(--fr);background-position:right top}
:root{--F1:url(../img/flowers/left-top.webp);--F2:url(../img/flowers/right-top.webp);--F3:url(../img/flowers/extra-1.webp);--F4:url(../img/flowers/left-bottom.webp);
  --F5:url(../img/flowers/extra-2.webp);--F6:url(../img/flowers/extra-3.webp);--F7:url(../img/flowers/right-bottom.webp)}
.hero,.py-section,.sub-hero,.pass-wrap,body>footer{--cw:46rem;--fh:560px;--fl:var(--F1);--fr:var(--F2)}
.hero{--cw:1140px;--fl:var(--F1);--fr:var(--F2);--yl:5rem;--yr:5rem}
#story{--cw:62rem;--fl:var(--F3);--fr:var(--F6);--yl:1rem;--yr:8rem}
#day{--fl:var(--F4);--fr:var(--F5);--yl:4rem;--yr:1rem}
#photos{--cw:54rem;--fl:var(--F7);--fr:var(--F3);--yl:6rem;--yr:2rem}
#gifts{--fl:var(--F2);--fr:var(--F1)}
#rsvp{--fl:var(--F6);--fr:var(--F4);--yl:2rem;--yr:6rem}
#wishes{--fl:var(--F5);--fr:var(--F7);--yl:5rem;--yr:1rem}
#faq{--fl:var(--F1);--fr:var(--F6);--yl:1rem;--yr:3rem}
.sub-hero{--fl:var(--F1);--fr:var(--F2);--yl:4.5rem;--yr:4.5rem;--fh:420px}
#upload{--fl:var(--F4);--fr:var(--F5)}
#wall{--cw:1140px;--fl:var(--F3);--fr:var(--F6)}
.pass-wrap{--cw:30rem;--fl:var(--F3);--fr:var(--F7);--yl:6rem;--yr:6rem}
body>footer{--fh:220px;--fl:var(--F4);--fr:var(--F7);--yl:auto;--yr:auto}
body>footer::before,body>footer::after{top:auto;bottom:0;background-position-y:bottom}
/* right-hand copies of left-facing bouquets are mirrored so stems always come from the page edge */
#story::before,#rsvp::after,#upload::before,#day::before,body>footer::before{transform:scaleX(-1);background-position:right top}
body>footer::before{background-position:right bottom}
/* width = free space beside the text column */
.hero,.py-section,.sub-hero,.pass-wrap,body>footer{--fw:clamp(0px,calc((100vw - var(--cw)) / 2 - 18px),300px)}
/* tablets & phones: no side space, so a small bouquet in the top corners of each section */
@media (max-width:991.98px){
  /* small corner sprigs that sit in the empty space above each heading */
  .hero,.py-section,.sub-hero,.pass-wrap,body>footer{--fw:clamp(56px,17vw,92px);--fh:84px;--yl:.4rem;--yr:.4rem}
  .hero::before,.hero::after,.py-section::before,.py-section::after,.sub-hero::before,.sub-hero::after,.pass-wrap::before,.pass-wrap::after,body>footer::before,body>footer::after{opacity:.85}
  .hero{--yl:4.6rem;--yr:4.6rem}
}

/* returning visitors: opening card never shown (no flash) */
html.opened #envelope{display:none!important}

/* =====================================================================
   Premium sections (inspired by modern product sites, made for a wedding)
   ===================================================================== */
.kicker{font:500 .78rem var(--sans);letter-spacing:.3em;text-transform:uppercase;color:var(--accent2);margin-bottom:.5rem}
/* top strip + nav stack */
.site-top{z-index:1030}
.site-top .site-nav{position:relative}
.top-strip{background:var(--accent);color:#fff;font-size:.82rem;letter-spacing:.04em;text-align:center;padding:.38rem 0}
.top-strip a{color:#f3d9a4;text-decoration:none;font-weight:600;margin-left:.4rem;white-space:nowrap}.top-strip a:hover{color:#fff}
html{scroll-padding-top:6.5rem}
.hero{padding-top:8.5rem}.sub-hero{padding-top:11rem}.pass-wrap{padding-top:10rem}
/* glance tiles */
.glance{padding-top:4rem}
.tiles{display:grid;grid-template-columns:repeat(6,1fr);gap:1rem;margin-top:2.2rem}
.tile{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.35rem;padding:1.6rem .9rem 1.4rem;background:#fff;border-radius:1.1rem;text-decoration:none;color:var(--ink);
  box-shadow:0 16px 34px -26px rgba(29,47,94,.55);border:1px solid color-mix(in srgb,var(--accent2) 18%,transparent);transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s,border-color .35s}
.tile:hover{transform:translateY(-6px);box-shadow:0 26px 44px -26px rgba(29,47,94,.6);border-color:color-mix(in srgb,var(--accent2) 55%,transparent);color:var(--ink)}
.tile-ico{width:3.2rem;height:3.2rem;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--accent2) 12%,#fff);color:var(--accent);margin-bottom:.35rem;transition:background .35s,color .35s}
.tile:hover .tile-ico{background:var(--accent);color:#fff}.tile-ico svg{width:1.45rem;height:1.45rem}
.tile-t{font:400 1.25rem var(--serif)}.tile-s{font-size:.82rem;color:var(--muted);line-height:1.35}
@media(max-width:1199.98px){.tiles{grid-template-columns:repeat(3,1fr)}}
@media(max-width:575.98px){.tiles{grid-template-columns:repeat(2,1fr);gap:.7rem}.tile{padding:1.2rem .6rem}}
/* stats band */
.stats-band{background:linear-gradient(135deg,#16295a,#1d3772 55%,#18305f);color:#fff;padding:4.5rem 0;position:relative;overflow:hidden;isolation:isolate}
.stats-band::before{content:"";position:absolute;inset:-40% -10% auto auto;width:40rem;height:40rem;border-radius:50%;background:radial-gradient(circle,rgba(217,185,110,.18),transparent 60%);z-index:-1}
.stats-band h2{color:#fff}.stats-band .kicker{color:#e6c88a}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-top:2rem;text-align:center}
.stats div{padding:1rem;border-left:1px solid rgba(255,255,255,.14)}.stats div:first-child{border-left:0}
.stats b{display:block;font:400 clamp(2.8rem,6vw,4.2rem)/1 var(--serif);color:#f3d9a4}
.stats span{display:block;margin-top:.5rem;font-size:.85rem;letter-spacing:.06em;color:rgba(255,255,255,.78)}
@media(max-width:767.98px){.stats{grid-template-columns:repeat(2,1fr)}.stats div:nth-child(3){border-left:0}.stats div{border-top:1px solid rgba(255,255,255,.1)}.stats div:nth-child(-n+2){border-top:0}}
/* alternating split rows */
.split{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(1.5rem,4vw,4rem);align-items:center;margin-top:3.5rem}
.split-rev .split-img{order:2}
.split-img{margin:0;position:relative}
.split-img img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:1.2rem;box-shadow:0 30px 60px -30px rgba(29,47,94,.6)}
.split-img::after{content:"";position:absolute;inset:auto -14px -14px auto;width:60%;height:60%;border:1px solid color-mix(in srgb,var(--accent2) 60%,transparent);border-radius:1.2rem;z-index:-1}
.split-rev .split-img::after{inset:auto auto -14px -14px}
.split-txt h3{font:400 clamp(1.9rem,3.5vw,2.6rem)/1.1 var(--serif);margin-bottom:1rem}
.split-time{font:400 1.8rem var(--serif);color:var(--accent2);margin-bottom:.6rem}.split-time small{font:400 .8rem var(--sans);color:var(--muted)}
.day .container{max-width:1080px}
.prog-wrap{max-width:46rem;margin:4.5rem auto 0;background:#fff;border-radius:1.2rem;padding:2.2rem clamp(1.2rem,4vw,2.5rem);box-shadow:0 22px 50px -32px rgba(29,47,94,.5)}
@media(max-width:767.98px){.split{grid-template-columns:1fr}.split-rev .split-img{order:0}}
/* RSVP call-to-action band */
.cta-band{padding:3.5rem 0 0}
.cta-inner{display:flex;align-items:center;justify-content:space-between;gap:2rem;flex-wrap:wrap;background:linear-gradient(120deg,#1b3470,#23428a);color:#fff;border-radius:1.4rem;padding:clamp(1.8rem,4vw,3rem);box-shadow:0 30px 60px -30px rgba(27,52,112,.75);position:relative;overflow:hidden}
.cta-inner::after{content:"";position:absolute;right:-6rem;top:-6rem;width:20rem;height:20rem;border-radius:50%;border:1px solid rgba(243,217,164,.35)}
.cta-inner h2{color:#fff;margin:.2rem 0 .6rem}.cta-inner .kicker{color:#e6c88a}.cta-inner p{color:rgba(255,255,255,.82);max-width:34rem}
.cta-inner .btn-light{color:var(--accent);font-weight:600;position:relative;z-index:1}
#rsvp{padding-top:4rem}
/* wishes carousel */
.wcar{position:relative;margin-top:2rem}
.wcar-track{display:grid;grid-auto-flow:column;grid-auto-columns:min(100%,26rem);gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding:.5rem .25rem 1.4rem;scrollbar-width:none}
.wcar-track::-webkit-scrollbar{display:none}
.wcar-track .wish{scroll-snap-align:start;margin:0;min-height:9rem;display:flex;flex-direction:column;justify-content:space-between}
.wcar-nav{position:absolute;top:42%;transform:translateY(-50%);width:2.6rem;height:2.6rem;border-radius:50%;border:1px solid color-mix(in srgb,var(--accent2) 50%,transparent);background:#fff;color:var(--accent);font-size:1.5rem;line-height:1;z-index:2;box-shadow:0 8px 18px -10px rgba(29,47,94,.6)}
.wcar-nav.prev{left:-1.3rem}.wcar-nav.next{right:-1.3rem}.wcar-nav:hover{background:var(--accent);color:#fff}
@media(max-width:575.98px){.wcar-nav{display:none}.wcar-track{grid-auto-columns:86%}}
/* footer */
.site-foot{background:#fff;border-top:1px solid color-mix(in srgb,var(--accent2) 25%,transparent);padding:4rem 0 1.5rem;margin-top:2rem}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:2rem}
.foot-brand .names-sm{font-size:2rem}.foot-brand .names-sm span{color:var(--accent2);font-family:'Cormorant Garamond',serif;font-style:italic}
.foot-brand .orn{margin:1rem 0 0}
.foot-h{font:600 .75rem var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--accent2);margin-bottom:.9rem}
.site-foot a{color:var(--ink);text-decoration:none}.site-foot li{margin-bottom:.35rem}.site-foot li a:hover{color:var(--accent2)}
.foot-bottom{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;border-top:1px solid color-mix(in srgb,var(--ink) 10%,transparent);margin-top:2.5rem;padding-top:1.2rem}
@media(max-width:767.98px){.foot-grid{grid-template-columns:1fr 1fr}.foot-brand{grid-column:1/-1}}

/* =====================================================================
   Image motif (inspired by dynastiembativou.org): photos in soft organic
   "pebble" shapes, pastel circles behind them and a thin outline ring
   ===================================================================== */
:root{--peach:#F7E3C3;--lav:#E9E3F3;--mint:#DFF0E8;--sky:#E1ECF7}
.blob-fig{position:relative;margin:0 auto;isolation:isolate;width:100%;max-width:440px;aspect-ratio:4/5}
.blob-fig .blob{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2;
  border-radius:var(--br,42% 58% 55% 45% / 38% 42% 58% 62%);box-shadow:0 34px 60px -30px rgba(29,47,94,.55);
  animation:morph 14s ease-in-out infinite alternate}
.blob-fig .dot{position:absolute;border-radius:50%;z-index:0}
.blob-fig .d1{width:68%;aspect-ratio:1;background:var(--peach);top:-9%;left:-14%}
.blob-fig .d2{width:46%;aspect-ratio:1;background:var(--sky);bottom:-8%;right:-12%}
.blob-fig .ring{position:absolute;inset:6% -9% -6% 9%;border:1.5px solid color-mix(in srgb,var(--accent2) 55%,transparent);z-index:1;
  border-radius:55% 45% 48% 52% / 45% 55% 45% 55%;animation:morph2 18s ease-in-out infinite alternate}
.blob-a{--br:44% 56% 58% 42% / 40% 38% 62% 60%}
.blob-b{--br:58% 42% 40% 60% / 50% 58% 42% 50%}.blob-b .d1{background:var(--lav);left:auto;right:-14%}.blob-b .d2{background:var(--mint);right:auto;left:-10%}
.blob-c{--br:38% 62% 46% 54% / 58% 44% 56% 42%;aspect-ratio:5/4;max-width:520px}.blob-c .d1{background:var(--mint)}.blob-c .d2{background:var(--peach)}
.blob-d{--br:60% 40% 52% 48% / 42% 56% 44% 58%;aspect-ratio:5/4;max-width:520px}.blob-d .d1{background:var(--sky);left:auto;right:-12%}.blob-d .d2{background:var(--lav);right:auto;left:-10%}
.blob-fig .blob{animation-name:morph}.blob-b .blob,.blob-d .blob{animation-name:morphB}
@keyframes morph{0%{border-radius:44% 56% 58% 42% / 40% 38% 62% 60%}50%{border-radius:56% 44% 46% 54% / 52% 46% 54% 48%}100%{border-radius:40% 60% 52% 48% / 46% 56% 44% 54%}}
@keyframes morphB{0%{border-radius:58% 42% 40% 60% / 50% 58% 42% 50%}50%{border-radius:46% 54% 56% 44% / 42% 50% 50% 58%}100%{border-radius:54% 46% 44% 56% / 56% 44% 56% 44%}}
@keyframes morph2{0%{border-radius:55% 45% 48% 52% / 45% 55% 45% 55%}100%{border-radius:45% 55% 56% 44% / 56% 44% 54% 46%}}
@media (prefers-reduced-motion:reduce){.blob-fig .blob,.blob-fig .ring{animation:none}}
/* the split rows already had a frame; the blob replaces it */
.split-img.blob-fig::after{display:none}.split-img img{aspect-ratio:auto;box-shadow:0 34px 60px -30px rgba(29,47,94,.55)}
.hero-blob{max-width:430px}
@media(max-width:767.98px){.blob-fig{max-width:300px}.hero-blob{max-width:250px}.blob-c,.blob-d{max-width:340px}.hero .row{--bs-gutter-y:2.2rem}}
/* pastel circles drifting in section backgrounds, like the reference */
.glance,#story,#wishes{background-image:radial-gradient(circle at 6% 10%,var(--peach) 0 9rem,transparent 9.05rem),radial-gradient(circle at 96% 92%,var(--lav) 0 8rem,transparent 8.05rem)}
#faq{background-image:radial-gradient(circle at 94% 8%,var(--mint) 0 7rem,transparent 7.05rem),radial-gradient(circle at 4% 96%,var(--sky) 0 8rem,transparent 8.05rem)}
/* gallery photos as pebbles too (no white frames) */
.gallery .g-item{background:none;padding:0;box-shadow:none;border-radius:0;transform:none!important}
.gallery .g-item img{aspect-ratio:5/4;border-radius:46% 54% 42% 58% / 52% 44% 56% 48%;box-shadow:0 26px 46px -26px rgba(29,47,94,.55);transition:border-radius .8s cubic-bezier(.2,.7,.2,1),transform .5s}
.gallery .g-item:nth-child(4n+2) img{border-radius:58% 42% 52% 48% / 44% 56% 44% 56%}
.gallery .g-item:nth-child(4n+3) img{border-radius:40% 60% 56% 44% / 56% 46% 54% 44%}
.gallery .g-item:nth-child(4n) img{border-radius:54% 46% 40% 60% / 48% 58% 42% 52%}
.gallery .g-item:hover img{border-radius:1.4rem;transform:translateY(-4px)}
/* stats row in the reference style: light, right under the hero */
.stats-light{background:#fff;color:var(--ink);padding:3rem 0;border-block:1px solid color-mix(in srgb,var(--accent2) 18%,transparent)}
.stats-light::before{display:none}
.stats-light h2{color:var(--ink);font-size:clamp(1.6rem,3vw,2.2rem)}.stats-light .kicker{color:var(--accent2)}
.stats-light .stats b{color:var(--accent)}.stats-light .stats span{color:var(--muted)}
.stats-light .stats div{border-color:color-mix(in srgb,var(--ink) 10%,transparent)}
/* pill button with a round icon (reference "Plus d'infos") */
.btn-pill{display:inline-flex;align-items:center;gap:.9rem;padding:.55rem .6rem .55rem 1.6rem;border-radius:999px;background:#fff;color:var(--ink);text-decoration:none;font-weight:500;
  border:1px solid color-mix(in srgb,var(--ink) 14%,transparent);box-shadow:0 12px 26px -18px rgba(29,47,94,.5);transition:transform .25s,box-shadow .25s}
.btn-pill:hover{transform:translateY(-2px);color:var(--ink);box-shadow:0 18px 30px -18px rgba(29,47,94,.6)}
.pill-ico{width:2.3rem;height:2.3rem;border-radius:50%;display:grid;place-items:center;background:var(--peach);color:var(--accent)}.pill-ico svg{width:1.05rem}
/* wishes as testimonials */
.testi{background:#fff;border:0!important;border-radius:1.2rem!important;padding:1.6rem 1.5rem 1.3rem!important;box-shadow:0 18px 40px -26px rgba(29,47,94,.5)}
.testi .q{width:1.8rem;color:color-mix(in srgb,var(--accent2) 60%,transparent);margin-bottom:.6rem}
.testi p{font-family:var(--sans)!important;font-style:normal!important;font-size:1rem!important;line-height:1.65!important;color:var(--ink)}
.testi footer{display:flex;align-items:center;gap:.8rem;margin-top:1rem;font-size:.9rem}
.testi footer strong{display:block;font-weight:600}.testi footer small{color:var(--muted)}
.avatar{width:2.8rem;height:2.8rem;border-radius:50%;display:grid;place-items:center;font:600 1.15rem var(--serif);color:var(--accent);background:var(--peach);flex:none}
.wcar-track .testi:nth-child(4n+2) .avatar{background:var(--lav)}.wcar-track .testi:nth-child(4n+3) .avatar{background:var(--mint)}.wcar-track .testi:nth-child(4n) .avatar{background:var(--sky)}
/* no footer: keep breathing room under the last section */
main{padding-bottom:2rem}

/* hero monogram + invitation line, programme sub-lines */
.monogram{font:400 1.5rem 'Cormorant Garamond',serif;font-style:italic;color:var(--accent2);letter-spacing:.12em;margin-bottom:.4rem}
.hero-invite{font:italic 400 1.35rem/1.4 'Cormorant Garamond',Georgia,serif;color:var(--ink);margin:.9rem 0 0}
.prog-sub{display:block;font-size:.88rem;color:var(--muted);margin-top:.15rem}
/* emerald header strip + nav accents */
.top-strip{background:#047857}
.top-strip a{color:#f3d9a4}
.nav-link.active,.nav-link:hover{color:#047857!important}

/* ---------- Premium hero text (editorial invitation layout) ---------- */
.hero-text{text-align:center}
@media(min-width:992px){.hero-text{text-align:left}}
.monogram{display:inline-grid;place-items:center;width:3.6rem;height:3.6rem;border:1px solid color-mix(in srgb,var(--accent2) 70%,transparent);border-radius:50%;
  font-size:1.05rem;letter-spacing:.06em;margin-bottom:1.1rem;position:relative}
.monogram::after{content:"";position:absolute;inset:4px;border:1px solid color-mix(in srgb,var(--accent2) 35%,transparent);border-radius:50%}
.names-x{display:grid;grid-template-columns:auto;line-height:.86;margin:.4rem 0 0;font-weight:400;color:var(--ink);letter-spacing:-.02em}
.names-x .nx-a,.names-x .nx-b{font:400 clamp(3.6rem,9vw,7rem)/.9 var(--serif)}
.names-x .nx-amp{font:italic 400 clamp(3rem,7vw,5.4rem)/.6 'Cormorant Garamond',Georgia,serif;color:var(--accent2);margin:.05em 0 .12em}
@media(min-width:992px){.names-x .nx-amp{padding-left:1.4em}.names-x .nx-b{padding-left:1.1em}}
.hero-invite{font-size:clamp(1.25rem,2.2vw,1.55rem);color:color-mix(in srgb,var(--ink) 85%,transparent);margin:1.1rem 0 1.6rem}
/* date block: SAMEDI | 31 | OCTOBRE 2026 between gold rules */
.date-x{display:inline-grid;grid-template-columns:auto auto auto;align-items:center;gap:1.1rem;padding:.7rem 0;border-top:1px solid color-mix(in srgb,var(--accent2) 60%,transparent);border-bottom:1px solid color-mix(in srgb,var(--accent2) 60%,transparent)}
.dx-side{font:500 .82rem var(--sans);letter-spacing:.28em;text-transform:uppercase;color:var(--muted);min-width:6.5rem;text-align:center}
.dx-day{font:400 3.2rem/1 var(--serif);color:var(--accent);padding:0 1.1rem;border-left:1px solid color-mix(in srgb,var(--accent2) 45%,transparent);border-right:1px solid color-mix(in srgb,var(--accent2) 45%,transparent)}
.dx-city{font:italic 400 1.15rem 'Cormorant Garamond',serif;color:var(--accent2);margin:.6rem 0 1.4rem;letter-spacing:.04em}
/* countdown: no boxes, fine separators */
.cd-x{display:inline-flex;align-items:flex-start;gap:1.2rem;margin:0}
.cd-x div{min-width:auto;padding:0;border:0!important;background:none!important;box-shadow:none!important;text-align:center}
.cd-x b{font:400 2.4rem/1 var(--serif)!important;color:var(--ink)!important}
.cd-x span{display:block;margin-top:.35rem;font-size:.68rem!important;letter-spacing:.24em;text-transform:uppercase;color:var(--muted)}
.cd-sep{width:5px;height:5px;transform:rotate(45deg);background:var(--accent2);margin-top:1rem;flex:none}
.hero-cta{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.6rem;margin-top:2rem;justify-content:center}
@media(min-width:992px){.hero-cta{justify-content:flex-start}}
.link-x{color:var(--ink);text-decoration:none;font-weight:500;letter-spacing:.04em;border-bottom:1px solid color-mix(in srgb,var(--accent2) 70%,transparent);padding-bottom:.15rem;transition:color .2s,gap .2s}
.link-x:hover{color:var(--accent)}.link-x span{display:inline-block;transition:transform .25s}.link-x:hover span{transform:translateX(4px)}
@media(max-width:575.98px){.dx-side{min-width:auto;letter-spacing:.16em;font-size:.72rem}.dx-day{font-size:2.6rem;padding:0 .8rem}.date-x{gap:.7rem}.cd-x{gap:.8rem}.cd-x b{font-size:2rem!important}}
.monogram{width:4.2rem;height:4.2rem;font-size:.95rem;letter-spacing:.02em;white-space:nowrap;margin-bottom:.7rem}
.hero .hero-top{margin-bottom:.2rem}
.names-x .nx-a,.names-x .nx-b{font-size:clamp(3.4rem,8vw,6rem)}
.names-x .nx-amp{font-size:clamp(2.6rem,6vw,4.4rem)}
.hero-invite{margin:.8rem 0 1.2rem}
.dx-city{margin:.5rem 0 1rem}
.hero-cta{margin-top:1.5rem}
@media(min-width:992px) and (max-height:820px){.hero{padding-top:7.5rem;padding-bottom:2.5rem}.monogram{display:none}}
/* music button on the right; small RSVP button moves to the left */
.music-fab{left:auto!important;right:1rem}
.rsvp-bar{right:auto!important;left:1rem}
@media(max-width:767.98px){.music-fab{right:.75rem}.rsvp-bar{left:.75rem}}
.hero-invite{margin-bottom:1.6rem}
/* Bienvenue: centred, italic text */
#story .story-txt{text-align:center}
#story .story-txt .orn{margin-left:auto;margin-right:auto}
#story .story-txt p.fs-5{font-style:italic}
/* hero photo: crop a little lower so the toe at the bottom is hidden */
.hero-blob .blob{object-position:50% 20%}
/* hero RSVP button: phones/tablets only */
@media(min-width:992px){.hero-cta{display:none}}

/* venue block: text only, centred, italic */
.split-solo{grid-template-columns:1fr;max-width:44rem;margin-left:auto;margin-right:auto;text-align:center}
.split-solo .split-txt p{font-style:italic}

/* venue block sits closer to the section title */
.split-solo{margin-top:1rem}
/* Tenue block: centred, italic */
#tenue .split-txt{text-align:center}
#tenue .split-txt p{font-style:italic}
#tenue .note{text-align:center!important}
/* programme: centred stacked timeline, italic */
.prog-wrap .programme{margin:0;padding:0}
.prog-wrap .programme::before{display:none}
.prog-wrap .programme li{display:flex;flex-direction:column;align-items:center;text-align:center;padding:1rem 0;gap:.15rem}
.prog-wrap .programme li::after{display:none}
.prog-wrap .programme li+li::before{content:"";display:block;width:3rem;height:1px;background:color-mix(in srgb,var(--accent2) 60%,transparent);margin:0 auto 1.1rem}
.prog-wrap .programme li span:first-child{font-style:italic;font-size:1.5rem}
.prog-wrap .programme li span:last-child{padding-left:0;font-style:italic}
.prog-wrap .prog-sub{font-style:italic}
@media(max-width:560px){.prog-wrap .programme li{grid-template-columns:none}}
/* programme now comes before the dress code */
.day .prog-wrap{margin-top:3rem}
.day #tenue{margin-top:4rem}
/* more breathing room between venue, programme and dress code */
.day .prog-wrap{margin-top:6rem}
.day #tenue{margin-top:7rem}
@media(max-width:767.98px){.day .prog-wrap{margin-top:4rem}.day #tenue{margin-top:4.5rem}}
/* space between the venue text and the Maps button */
.split-solo .d-flex{margin-top:1.8rem}

/* no left bouquet on "Le jour de notre grand oui" */
#day::before{display:none}
/* bouquet beside the programme card, on its left */
.prog-wrap{position:relative}
.prog-wrap::before{content:"";position:absolute;top:2rem;right:calc(100% + 1rem);width:clamp(0px,calc((100vw - 46rem) / 2 - 2rem),260px);height:520px;
  background:url(../img/flowers/extra-1.webp) no-repeat right top/contain;filter:drop-shadow(0 10px 14px rgba(29,47,94,.16));pointer-events:none}
@media(max-width:991.98px){.prog-wrap::before{display:none}}
/* soft pastel circle + thin gold ring on the left of "Le jour de notre grand oui" */
#day{background-image:
  radial-gradient(circle at 9% 230px,transparent 0 7.6rem,color-mix(in srgb,var(--accent2) 55%,transparent) 7.6rem 7.7rem,transparent 7.75rem),
  radial-gradient(circle at 6% 190px,var(--peach) 0 8rem,transparent 8.05rem)}
@media(max-width:991.98px){#day{background-image:radial-gradient(circle at -4% 90px,var(--peach) 0 5rem,transparent 5.05rem)}}
/* two soft irregular circles to the right of the programme card */
.prog-wrap::after{content:"";position:absolute;top:6rem;left:calc(100% + 2.5rem);width:clamp(0px,calc((100vw - 46rem) / 2 - 3.5rem),220px);aspect-ratio:1;
  background:var(--lav);border-radius:58% 42% 47% 53% / 44% 56% 44% 56%;pointer-events:none;z-index:-1;
  box-shadow:calc(clamp(0px,calc((100vw - 46rem) / 2 - 3.5rem),220px) * -.25) calc(clamp(0px,calc((100vw - 46rem) / 2 - 3.5rem),220px) * .95) 0 calc(clamp(0px,calc((100vw - 46rem) / 2 - 3.5rem),220px) * -.18) var(--mint);
  animation:morphB 16s ease-in-out infinite alternate}
.day{isolation:isolate}
@media(max-width:991.98px){.prog-wrap::after{display:none}}
/* third, bigger circle lower down on the right of the programme */
.prog-wrap::after{--cw2:clamp(0px,calc((100vw - 46rem) / 2 - 3.5rem),220px);
  box-shadow:calc(var(--cw2) * -.25) calc(var(--cw2) * .95) 0 calc(var(--cw2) * -.18) var(--mint),
             calc(var(--cw2) * .05) calc(var(--cw2) * 2.25) 0 calc(var(--cw2) * .22) var(--peach)}

/* ---------- Médiathèque: minimalist carousel (active photo taller) ---------- */
.mcar{max-width:1140px;margin:2.5rem auto 0}
.mcar-track{display:flex;align-items:center;gap:1.6rem;overflow-x:auto;scroll-behavior:smooth;scroll-snap-type:x mandatory;scrollbar-width:none;padding:1rem .25rem;min-height:clamp(260px,32vw,420px)}
.mcar-track::-webkit-scrollbar{display:none}
.mcar-item{flex:0 0 calc((100% - 3 * 1.6rem) / 4);padding:0;border:0;background:none;scroll-snap-align:center;cursor:zoom-in;transition:flex-basis .5s}
.mcar-item img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:12px;transition:aspect-ratio .5s cubic-bezier(.2,.7,.2,1),box-shadow .5s,transform .5s;box-shadow:0 10px 24px -18px rgba(29,47,94,.45)}
.mcar-item.active img{aspect-ratio:3/4;box-shadow:0 22px 40px -22px rgba(29,47,94,.55)}
.mcar-item:hover img{transform:translateY(-3px)}
.mcar-ctrl{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.6rem;color:var(--ink)}
.mcar-arrow{border:0;background:none;padding:.2rem;color:var(--ink);line-height:0;cursor:pointer;transition:color .2s,transform .2s}
.mcar-arrow svg{width:22px;height:22px}.mcar-arrow:hover{color:var(--accent)}.mcar-arrow.prev:hover{transform:translateX(-2px)}.mcar-arrow.next:hover{transform:translateX(2px)}
.mcar-dots{display:flex;gap:.55rem}
.mcar-dot{width:11px;height:11px;border-radius:50%;border:1.5px solid var(--ink);background:transparent;padding:0;cursor:pointer;transition:background .25s}
.mcar-dot.on{background:var(--ink)}
@media(max-width:767.98px){.mcar-item{flex-basis:62%}.mcar-track{gap:1rem;min-height:auto}}

/* no side bouquets on the Médiathèque */
#photos::before,#photos::after{display:none}

/* ---------- RSVP form: minimalist step cards (connected) ---------- */
#rsvp-form.rsvp-steps{background:none;box-shadow:none;padding:0;max-width:44rem;margin:0 auto}
.step-card{background:#F6F8FB;border:1px solid #E6EAF0;border-radius:16px;padding:.5rem;box-shadow:0 18px 40px -30px rgba(29,47,94,.35)}
.step-head{display:flex;align-items:center;gap:.8rem;padding:.6rem .8rem .8rem}
.step-head h3{font:600 1rem var(--sans);margin:0;color:var(--ink);letter-spacing:0}
.step-head p{margin:0;font-size:.78rem;color:var(--muted)}
.step-ico{width:2.4rem;height:2.4rem;border-radius:50%;display:grid;place-items:center;background:#EAF3EE;color:var(--accent);border:1px solid #D7E8DE;flex:none}
.step-ico svg{width:1.15rem}
.step-body{background:#fff;border:1px solid #EDF0F4;border-radius:12px;padding:1.1rem 1.1rem 1.2rem;margin:0}
.step-body.row{--bs-gutter-x:1rem}
.ff-label{display:block;font:500 .8rem var(--sans);color:#4B5568;margin-bottom:.35rem;letter-spacing:0;font-style:normal}
.req{color:#E5484D;margin-left:.1rem}
.ff{position:relative}
.ff .form-control{background:#fff!important;border:1px solid #E3E7ED;border-radius:10px;height:2.9rem;font-size:.95rem;font-style:normal;padding:.5rem .9rem;box-shadow:none}
.ff textarea.form-control{height:auto;min-height:6rem}
.ff-ico .form-control{padding-left:2.5rem}
.ff-i{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);color:#8A94A6;line-height:0;pointer-events:none}.ff-i svg{width:1rem}
.ff .form-control:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.ff-hint{font-size:.78rem;color:var(--muted);margin:-.4rem 0 0}
.choice-row{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}
.choice{display:flex;align-items:center;gap:.75rem;border:1px solid #E3E7ED;border-radius:12px;padding:.85rem 1rem;cursor:pointer;background:#fff;transition:border-color .2s,box-shadow .2s}
.choice input{position:absolute;opacity:0;pointer-events:none}
.choice .dot{width:1.05rem;height:1.05rem;border-radius:50%;border:1.5px solid #C5CCD6;flex:none;transition:border .2s}
.choice strong{display:block;font:500 .95rem var(--sans);color:var(--ink)}.choice small{font-size:.75rem;color:var(--muted)}
.choice:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}
.choice:has(input:checked) .dot{border:5px solid var(--accent)}
.was-validated .choice-row:has(input:invalid) .choice{border-color:#f0a4a6}
.step-link{position:relative;height:3.2rem;display:grid;place-items:center}
.step-link::before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1.5px;background:color-mix(in srgb,var(--accent) 45%,transparent)}
.step-ok{position:relative;width:2.3rem;height:2.3rem;border-radius:50%;display:grid;place-items:center;color:#fff;
  background:radial-gradient(circle at 35% 30%,#34d399,var(--accent));box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 14%,transparent),0 8px 18px -6px color-mix(in srgb,var(--accent) 70%,transparent)}
.step-ok svg{width:1.05rem}
.step-submit{text-align:center;margin-top:1.8rem}
@media(max-width:575.98px){.choice-row{grid-template-columns:1fr}}

/* ---------- RSVP: minimalist step-by-step wizard ---------- */
#rsvp-form.wiz{max-width:58rem;display:grid;grid-template-columns:13rem 1fr;gap:2rem;align-items:start}
.wiz-nav{list-style:none;margin:0;padding:.4rem 0 0;position:relative}
.wiz-nav li{display:flex;align-items:center;gap:.8rem;padding:.55rem 0;font:500 .92rem var(--sans);color:#6B7489;position:relative}
.wiz-nav li span{width:1.45rem;height:1.45rem;border-radius:50%;border:1.5px solid #D9DFE7;background:#fff;flex:none;display:grid;place-items:center;position:relative;z-index:1;transition:all .3s}
.wiz-nav li+li::before{content:"";position:absolute;left:.7rem;top:-.55rem;height:1.1rem;width:1.5px;background:#D9DFE7}
.wiz-nav li.on{color:var(--ink)}
.wiz-nav li.on span{border-color:color-mix(in srgb,var(--accent) 45%,transparent);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 12%,transparent)}
.wiz-nav li.on span::after{content:"";width:.55rem;height:.55rem;border-radius:50%;background:var(--accent)}
.wiz-nav li.done span{background:var(--accent);border-color:var(--accent)}
.wiz-nav li.done span::after{content:"";width:.5rem;height:.28rem;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg) translate(1px,-1px)}
.wiz-step{display:none;background:#fff;border:1px solid #E6EAF0;border-radius:18px;padding:1.2rem 1.4rem 1.4rem;box-shadow:0 20px 44px -34px rgba(29,47,94,.4)}
.wiz-step.on{display:block;animation:wizIn .35s ease}
@keyframes wizIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.wiz-step .step-head{padding:0 0 1rem;border-bottom:1px solid #EEF1F5;margin-bottom:1.2rem}
.wiz-step .step-head h3{font-weight:500}
.wiz-step .step-ico{background:#F0F4F8;color:var(--accent);border-color:#E3E9F0}
.wiz-step .step-body{background:none;border:0;padding:0}
.wiz-foot{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1.4rem;padding-top:1.2rem;border-top:1px solid #EEF1F5}
.wiz-btn{height:3rem;border-radius:12px;font:500 1rem var(--sans);display:flex;align-items:center;justify-content:center;gap:.4rem;cursor:pointer;transition:filter .2s,box-shadow .2s,transform .2s}
.wiz-btn svg{width:1rem}
.wiz-back{background:#fff;border:1px solid #E3E7ED;color:var(--ink)}.wiz-back:hover{box-shadow:0 6px 14px -10px rgba(29,47,94,.5)}
.wiz-next{background:linear-gradient(180deg,#0a9468,var(--accent));border:0;color:#fff;box-shadow:0 10px 20px -12px color-mix(in srgb,var(--accent) 80%,transparent)}
.wiz-next:hover{filter:brightness(1.06);transform:translateY(-1px)}.wiz-next:disabled{opacity:.7}
@media(max-width:767.98px){
  #rsvp-form.wiz{grid-template-columns:1fr;gap:1.2rem}
  .wiz-nav{display:flex;justify-content:space-between;padding:0}
  .wiz-nav li{flex-direction:column;gap:.35rem;font-size:.72rem;text-align:center;flex:1;padding:0}
  .wiz-nav li+li::before{left:-50%;right:50%;top:.72rem;height:1.5px;width:auto}
  .wiz-step{padding:1rem}
}
/* minimal validation: no green borders, soft red only on missing fields */
.wiz .ff .form-control:valid,.was-validated .wiz .ff .form-control:valid{border-color:#E3E7ED;background-image:none;padding-right:.9rem}
.wiz .ff-ico .form-control:valid{padding-left:2.5rem}
.wiz .was-validated .ff .form-control:invalid,.wiz.was-validated .ff .form-control:invalid{border-color:#F0A4A6;background-image:none;box-shadow:0 0 0 3px rgba(229,72,77,.08)}
.wiz .ff .form-control:focus{border-color:var(--accent)!important}
/* RSVP wizard: centre everything inside the cards */
.wiz-step .step-head{flex-direction:column;text-align:center;gap:.5rem}
.wiz-step .step-body{text-align:center}
.wiz-step .step-body.row{justify-content:center}
.wiz-step .ff-label{text-align:center}
.wiz-step .ff .form-control{text-align:center}
.wiz-step .ff-ico .form-control{padding-left:2.5rem;padding-right:2.5rem}
.wiz-step .ff-hint{text-align:center;margin-top:-.2rem}
.wiz-step .choice{justify-content:center;text-align:left}
.wiz-step .step-body > .row{justify-content:center}
.wiz-foot:has(> span:first-child){grid-template-columns:1fr;justify-items:center}
.wiz-foot:has(> span:first-child) > span{display:none}
.wiz-foot:has(> span:first-child) .wiz-btn{width:min(100%,16rem)}

/* no right bouquet beside the RSVP form */
#rsvp::after{display:none}

/* tighter gap between the RSVP form and the wishes section */
#rsvp{padding-bottom:2.5rem}
#wishes{padding-top:3rem}
#rsvp .status:empty{display:none}

/* no left bouquet on the wishes section */
#wishes::before{display:none}

/* ---------- Wishes form: premium card, centred ---------- */
#wishes form.wish-card{max-width:38rem;margin-left:auto;margin-right:auto;background:#fff;border:1px solid #E6EAF0;border-radius:18px;padding:1.6rem 1.6rem 1.4rem;box-shadow:0 20px 44px -34px rgba(29,47,94,.4);text-align:center}
.wish-card .step-head{justify-content:center;padding:0 0 1rem;margin-bottom:1.1rem;border-bottom:1px solid #EEF1F5}
.wish-card .step-ico{width:2.8rem;height:2.8rem;background:#F0F4F8;color:var(--accent);border:1px solid #E3E9F0}
.wish-card .ff-label{text-align:center}
.wish-card .ff .form-control{text-align:center;font-style:normal}
.wish-card .ff-ico .form-control{padding-left:2.5rem;padding-right:2.5rem}
.wish-card .ff textarea.form-control{min-height:7.5rem;padding:.9rem 1rem 1.6rem;resize:vertical}
.wish-count{position:absolute;right:.9rem;bottom:.55rem;font-size:.72rem;color:#9AA3B2;pointer-events:none}
.wish-foot{grid-template-columns:1fr;justify-items:center}
.wish-foot .wiz-btn{width:min(100%,17rem);gap:.5rem}.wish-foot .wiz-btn svg{width:1.05rem}
.wish-card .status{text-align:center}.wish-card .status:empty{display:none}
.wish-card .ff .form-control:valid{border-color:#E3E7ED;background-image:none}
.wish-card.was-validated .ff .form-control:invalid{border-color:#F0A4A6;background-image:none;box-shadow:0 0 0 3px rgba(229,72,77,.08)}
.wish-card .ff .form-control:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}

/* ---------- Photo upload: clean card (template style) ---------- */
.uploader.up-card{max-width:40rem;margin:0 auto;background:#fff;border:1px solid #E6EAF0;border-radius:18px;padding:1.6rem 1.6rem 1.5rem;box-shadow:0 20px 44px -34px rgba(29,47,94,.4);text-align:left}
.up-field{margin-bottom:1rem}
.up-card .ff-label{text-align:left;font-size:.85rem}
.up-card .ff .form-control{height:2.9rem;border:1px solid #D9DFE7;border-radius:10px;background:#fff!important;font-style:normal;padding-right:2.6rem}
.up-card .ff .form-control:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}
.ff-clear{position:absolute;right:.6rem;top:50%;transform:translateY(-50%);width:1.8rem;height:1.8rem;border:0;background:none;color:#6B7489;border-radius:50%;display:none;place-items:center;cursor:pointer;padding:0}
.ff-clear svg{width:1rem}.ff-clear:hover{background:#F0F3F7;color:var(--ink)}
.ff-x.has-val .ff-clear{display:grid}
.up-drop{display:flex;flex-direction:column;align-items:center;gap:.45rem;margin-top:1.4rem;padding:2.4rem 1rem;border:1.5px dashed #C9D0DA!important;border-radius:12px;background:#fff!important;text-align:center;cursor:pointer;transition:border-color .2s,background .2s}
.up-drop:hover,.up-drop.drag{border-color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 4%,#fff)!important}
.up-cloud{width:2.4rem;height:2.4rem;color:var(--accent)}
.up-t{font-size:1.05rem;color:var(--ink)}.up-t u{color:var(--accent);text-underline-offset:3px}
.up-s{font-size:.82rem;color:var(--muted)}

/* ---------- Photo wall (media page): same minimalist carousel as the home page ---------- */
#grid.gallery{display:flex!important;align-items:center;gap:1.6rem;overflow-x:auto;scroll-behavior:smooth;scroll-snap-type:x mandatory;scrollbar-width:none;padding:1rem .25rem;max-width:1140px;margin:0 auto;min-height:clamp(260px,32vw,420px);grid-template-columns:none}
#grid.gallery::-webkit-scrollbar{display:none}
#grid .g-item{flex:0 0 calc((100% - 3 * 1.6rem) / 4);padding:0!important;background:none!important;box-shadow:none!important;border-radius:0;transform:none!important;scroll-snap-align:center;aspect-ratio:auto}
#grid .g-item.hidden-by-filter{display:none}
#grid .g-item img{width:100%;height:auto!important;aspect-ratio:1/1!important;object-fit:cover;border-radius:12px!important;box-shadow:0 10px 24px -18px rgba(29,47,94,.45);transition:aspect-ratio .5s cubic-bezier(.2,.7,.2,1),box-shadow .5s,transform .5s}
#grid .g-item.active img{aspect-ratio:3/4!important;box-shadow:0 22px 40px -22px rgba(29,47,94,.55)}
#grid .g-item:hover img{transform:translateY(-3px)}
@media(max-width:767.98px){#grid .g-item{flex-basis:62%}#grid.gallery{gap:1rem;min-height:auto}}
#grid.gallery{scroll-snap-type:x proximity;scroll-padding-left:.25rem}
#grid .g-item{scroll-snap-align:start}
/* guest videos */
.g-item[data-video]{position:relative}
.g-play{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);width:52px;height:52px;border-radius:50%;background:rgba(0,0,0,.45);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;padding-left:4px;pointer-events:none;backdrop-filter:blur(2px)}
.g-vid-ph{display:block;width:100%;aspect-ratio:4/5;background:linear-gradient(135deg,#0f3d30,#1D2F5E)}
#lb-vid{max-width:100%;max-height:78vh;background:#000}
/* designer credit */
.credit{text-align:center;font-size:.8rem;color:var(--muted);margin:2.5rem 1rem 1.5rem;line-height:1.7;position:relative;z-index:2}
.credit-heart{color:#d1243a}
.credit-sub{font-size:.75rem;opacity:.85}
.credit a{color:var(--accent);text-decoration:none;border-bottom:1px solid currentColor}
.credit a:hover{opacity:.8}

/* ===================== Premium polish (v64) ===================== */
/* --- Mobile menu: the blurred bar was trapping the panel; give it a solid bar below 1200px --- */
@media (max-width:1199.98px){
  .site-nav{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;background:var(--bg)!important}
  .site-nav .offcanvas{width:min(86vw,22rem);border-left:0;background:linear-gradient(170deg,#fffdf8 0%,var(--bg) 100%);box-shadow:-30px 0 60px -30px rgba(29,47,94,.35)}
  .offcanvas-backdrop.show{opacity:.35;backdrop-filter:blur(3px)}
  .site-nav .offcanvas-header{padding:1.4rem 1.5rem 1rem;border-bottom:1px solid color-mix(in srgb,var(--accent2) 30%,transparent)}
  .menu-brand{font-family:var(--serif);font-size:1.5rem;color:var(--ink);letter-spacing:.01em}
  .menu-brand i{color:var(--accent2);font-style:italic}
  .site-nav .offcanvas-body{display:flex;flex-direction:column;padding:1.2rem 1.5rem 2rem}
  .site-nav .navbar-nav{width:100%;gap:.15rem!important;margin:0!important}
  .site-nav .nav-link{font-family:var(--serif);font-size:1.45rem!important;letter-spacing:.01em!important;color:var(--ink)!important;padding:.7rem .2rem!important;border-bottom:1px solid color-mix(in srgb,var(--accent2) 16%,transparent);display:flex;align-items:center;justify-content:space-between;transition:color .25s,padding .25s}
  .site-nav .nav-link::after{content:"›";color:var(--accent2);font-size:1.3rem;opacity:.6;transition:transform .25s}
  .site-nav .nav-link:hover,.site-nav .nav-link.active{color:#047857!important;padding-left:.5rem!important}
  .site-nav .nav-link:hover::after{transform:translateX(4px)}
  .site-nav .offcanvas .nav-item{opacity:0;transform:translateX(18px);transition:opacity .45s ease,transform .45s cubic-bezier(.2,.7,.2,1)}
  .site-nav .offcanvas.show .nav-item,.site-nav .offcanvas.showing .nav-item{opacity:1;transform:none}
  .site-nav .offcanvas .nav-item:nth-child(2){transition-delay:.05s}.site-nav .offcanvas .nav-item:nth-child(3){transition-delay:.1s}
  .site-nav .offcanvas .nav-item:nth-child(4){transition-delay:.15s}.site-nav .offcanvas .nav-item:nth-child(5){transition-delay:.2s}
  .site-nav .offcanvas .nav-item:nth-child(6){transition-delay:.25s}.site-nav .offcanvas .nav-item:nth-child(7){transition-delay:.3s}
  .site-nav .offcanvas .nav-item:nth-child(8){transition-delay:.35s}
  .menu-foot{margin-top:auto!important;padding-top:1.5rem;justify-content:center}
  .menu-foot .btn{padding:.45rem 1.4rem!important;letter-spacing:.12em}
}
.nav-burger{width:2.6rem;height:2.6rem;display:inline-flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;border-radius:50%;background:transparent;transition:background .25s}
.nav-burger:hover,.nav-burger:focus-visible{background:color-mix(in srgb,var(--accent2) 14%,transparent);box-shadow:none}
.nav-burger span{display:block;width:22px;height:1.6px;background:var(--ink);border-radius:2px;transition:transform .3s,width .3s,opacity .3s}
.nav-burger span:nth-child(2){width:15px;margin-left:7px}
.nav-burger:hover span:nth-child(2){width:22px;margin-left:0}

/* --- "Ils nous ont écrit": premium testimonial wall --- */
.wall-head{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1rem}
.wall-head .kicker{font-size:.8rem;letter-spacing:.32em}
.wall-line{flex:0 1 4.5rem;height:1px;background:linear-gradient(90deg,transparent,var(--accent2),transparent)}
.wall-count{font-size:.85rem;color:var(--muted);margin:.4rem 0 0;letter-spacing:.05em}
.wall-count span{font-family:var(--serif);font-size:1.15rem;color:#047857}
.wcar{margin-top:1.4rem}
.wcar-track{grid-auto-columns:min(100%,24rem);gap:1.25rem;padding:1rem .4rem 1.6rem;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 2.5%,#000 97.5%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 2.5%,#000 97.5%,transparent 100%)}
.wcar-track .testi{position:relative;overflow:hidden;min-height:13rem;padding:2rem 1.7rem 1.5rem!important;border-radius:1.4rem!important;
  background:linear-gradient(#fff,#fff) padding-box,linear-gradient(140deg,color-mix(in srgb,var(--accent2) 70%,#fff),#fff 40%,#fff 60%,color-mix(in srgb,#047857 45%,#fff)) border-box!important;
  border:1px solid transparent!important;box-shadow:0 24px 50px -34px rgba(29,47,94,.55);transition:transform .5s cubic-bezier(.2,.7,.2,1),box-shadow .5s,opacity .5s;opacity:.72;transform:scale(.97)}
.wcar-track .testi.cur,.wcar-track .testi:hover{opacity:1;transform:none;box-shadow:0 30px 60px -32px rgba(29,47,94,.6)}
.wcar-track .testi::before{content:"\201C";position:absolute;top:-1.6rem;right:.9rem;font-family:var(--serif);font-size:9rem;line-height:1;color:color-mix(in srgb,var(--accent2) 16%,transparent);pointer-events:none}
.wcar-track .testi .q{display:none}
.wcar-track .testi p{font-family:'Cormorant Garamond',var(--serif)!important;font-style:italic!important;font-size:1.32rem!important;line-height:1.5!important;color:var(--ink);position:relative;margin:0}
.wcar-track .testi footer{margin-top:1.4rem;padding-top:1rem;border-top:1px solid color-mix(in srgb,var(--accent2) 22%,transparent)}
.wcar-track .testi .avatar{width:2.6rem;height:2.6rem;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:1.15rem;color:#fff!important;
  background:linear-gradient(135deg,#047857,#0f9f76)!important;box-shadow:0 0 0 3px #fff,0 0 0 4px color-mix(in srgb,var(--accent2) 55%,transparent)}
.wcar-track .testi:nth-child(3n+2) .avatar{background:linear-gradient(135deg,#B98A3A,#d8b06a)!important}
.wcar-track .testi:nth-child(3n) .avatar{background:linear-gradient(135deg,#1D2F5E,#3b5694)!important}
.wcar-track .testi footer strong{font-family:var(--serif);font-size:1.05rem;color:var(--ink)}
.wcar-track .testi footer small{letter-spacing:.08em;text-transform:uppercase;font-size:.68rem}
.wcar-nav{top:45%;width:2.9rem;height:2.9rem;background:rgba(255,255,255,.85);backdrop-filter:blur(6px);color:#047857;border:1px solid color-mix(in srgb,var(--accent2) 45%,transparent);transition:background .25s,color .25s,transform .25s}
.wcar-nav:hover{background:#047857;color:#fff;transform:translateY(-50%) scale(1.06)}
.wcar-dots{display:flex;justify-content:center;gap:.45rem;margin-top:.2rem}
.wdot{width:.5rem;height:.5rem;border-radius:1rem;border:0;padding:0;background:color-mix(in srgb,var(--accent2) 35%,transparent);transition:width .35s,background .35s}
.wdot.on{width:1.6rem;background:#047857}
@media(max-width:575.98px){.wcar-track{grid-auto-columns:84%;gap:.9rem}.wcar-track .testi{min-height:12rem;padding:1.7rem 1.35rem 1.3rem!important}.wcar-track .testi p{font-size:1.2rem!important}}

/* --- Forms: smoother, more refined --- */
.ff .form-control,.ff textarea,.ff select{transition:border-color .25s,box-shadow .25s,background-color .25s}
.ff .form-control:hover{border-color:color-mix(in srgb,var(--accent2) 45%,#E3E7ED)}
.ff .form-control:focus{border-color:#047857!important;box-shadow:0 0 0 4px rgba(4,120,87,.12)!important}
.ff-label{transition:color .25s}
.ff-label:has(+ .ff :focus),.wiz-step label:focus-within{color:#047857}
.ff-ico .ff-i{transition:color .25s}.ff-ico:focus-within .ff-i{color:#047857}
.wiz-btn.wiz-next,.up-card .btn-accent,#wish-form .wiz-btn{position:relative;overflow:hidden;background:linear-gradient(135deg,#047857,#0a9a70)!important;color:#fff!important;border:0!important;box-shadow:0 14px 28px -16px rgba(4,120,87,.75)}
.wiz-btn.wiz-next::after,.up-card .btn-accent::after,#wish-form .wiz-btn::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.28) 50%,transparent 70%);transform:translateX(-120%);transition:transform .8s}
.wiz-btn.wiz-next:hover::after,.up-card .btn-accent:hover::after,#wish-form .wiz-btn:hover::after{transform:translateX(120%)}
.wiz-btn.wiz-next:hover,#wish-form .wiz-btn:hover{transform:translateY(-2px);box-shadow:0 18px 32px -16px rgba(4,120,87,.85)}
.wiz-btn:active{transform:translateY(0) scale(.98)}
.wiz-btn[disabled],.wiz-btn.busy{opacity:.75;cursor:progress}
#wish-form,#rsvp form,.up-card{transition:box-shadow .4s}
#wish-form:focus-within,#rsvp .wiz:focus-within,.up-card:focus-within{box-shadow:0 30px 60px -36px rgba(4,120,87,.45)!important}
.status:not(:empty){animation:statusIn .45s cubic-bezier(.2,.7,.2,1)}
.status.ok,.status:not(.err):not(:empty){color:#047857}
@keyframes statusIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.site-nav .offcanvas .nav-item,.wcar-track .testi,.status{transition:none!important;animation:none!important}}
.wall-head .kicker{white-space:nowrap}
@media(max-width:575.98px){.wall-head{gap:.6rem}.wall-head .kicker{font-size:.72rem;letter-spacing:.24em}.wall-line{flex-basis:2.2rem}}
.nav-burger:focus{outline:0;box-shadow:none}.nav-burger:focus-visible{outline:2px solid color-mix(in srgb,#047857 55%,transparent);outline-offset:2px}
@media(min-width:768px){.wcar-track{grid-auto-columns:calc((100% - 1.25rem)/2)}}
