/* Bonheurs Nature — « le royaume rose »
   Rose dragée, fuchsia du logo, mûre profonde et feuille d'or. Les photos vivent dans des arches
   de château bordées d'or ; les paillettes sont la signature : boutons pailletés et poussière de fée qui suit le pointeur sur tout le site. */

:root{
  --dragee:#fff4f8;
  --petale:#fce4ee;
  --rose:#f7c9dd;
  --lilas:#f3eafc;
  --fuchsia:#c4006a;
  --fuchsia-fonce:#a3005a;
  --fuchsia-vif:#e2338a;
  --mure:#4a1236;
  --mure-doux:#7a3d5f;
  --or:#8c5e14;
  --or-clair:#d9b45a;
  --blanc:#ffffff;
  --feuille-or:linear-gradient(135deg,#f7e6ae 0%,#d9b45a 28%,#a9781f 50%,#f3d98f 72%,#c39a3f 100%);
  --serif:'Fraunces',Georgia,'Times New Roman',serif;
  --script:'Pinyon Script','Snell Roundhand',cursive;
  --page:1240px;
  --gutter:clamp(16px,4vw,56px);
  --arch:999px 999px 26px 26px;
  --ombre:0 26px 60px -30px rgba(196,0,106,.42);
  --ombre-douce:0 14px 34px -22px rgba(74,18,54,.35);
  --pas:clamp(64px,9vw,128px);
}

*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--dragee);color:var(--mure);font:400 1.125rem/1.65 var(--serif);font-optical-sizing:auto;font-variation-settings:"SOFT" 50,"WONK" 0;overflow-x:hidden}
body.locked{overflow:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2,h3{font-family:var(--serif);font-weight:480;font-variation-settings:"SOFT" 100,"WONK" 1;line-height:1.08;letter-spacing:-.012em;margin:0;color:var(--mure);text-wrap:balance}
h1{font-size:clamp(2.6rem,5.4vw,4.6rem)}
h2{font-size:clamp(2rem,3.6vw,3rem)}
h3{font-size:1.5rem;line-height:1.2}
p{margin:0 0 1em;text-wrap:pretty}
p:last-child{margin-bottom:0}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--fuchsia);outline-offset:3px;border-radius:6px}
::selection{background:var(--rose);color:var(--mure)}

.page-width{width:min(100% - 2*var(--gutter),var(--page));margin-inline:auto}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip-link{position:absolute;left:12px;top:-60px;z-index:100;background:var(--mure);color:#fff;padding:10px 16px;border-radius:999px;text-decoration:none}
.skip-link:focus{top:12px}

/* ---------- Ornements ---------- */
.spark{width:.8em;height:.8em;fill:currentColor;flex:none}
.script-kicker{font-family:var(--script);font-size:clamp(1.9rem,3vw,2.5rem);line-height:1;color:var(--or);margin:0 0 .35em;font-weight:400;font-variation-settings:normal}
.small-note{font-size:.9rem;color:var(--mure-doux)}

/* Arche de château : un liseré de feuille d'or, puis la photo. */
.arch-frame{position:relative;padding:7px;border-radius:var(--arch);background:var(--feuille-or);box-shadow:var(--ombre)}
.arch-frame::before{content:"";position:absolute;inset:-12px;border:1px solid rgba(217,180,90,.7);border-radius:var(--arch);pointer-events:none}
.arch{position:relative;border-radius:var(--arch);overflow:hidden;background:var(--petale);aspect-ratio:3/4}
.arch img{width:100%;height:100%;object-fit:cover}
.arch.is-whole{background:var(--blanc)}
.arch.is-whole img{object-fit:contain;padding:18% 7% 7%;border-radius:22px}
.arch-wide .arch{aspect-ratio:4/3;border-radius:260px 260px 22px 22px}
.arch-wide,.arch-wide::before{border-radius:268px 268px 26px 26px}

/* Paillettes fixes autour des arches. */
.twinkles{position:absolute;inset:-6% -8%;pointer-events:none}
.twinkles i{position:absolute;width:var(--s,14px);aspect-ratio:1;background:var(--c,var(--or-clair));clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);animation:twinkle var(--d,3.2s) ease-in-out var(--delay,0s) infinite}
.twinkles i:nth-child(1){top:4%;left:12%;--s:18px;--delay:.2s}
.twinkles i:nth-child(2){top:14%;right:6%;--s:12px;--c:var(--fuchsia-vif);--delay:1.1s}
.twinkles i:nth-child(3){top:38%;left:2%;--s:10px;--c:#fff;--delay:2s}
.twinkles i:nth-child(4){top:56%;right:1%;--s:20px;--delay:.6s;--d:4s}
.twinkles i:nth-child(5){bottom:10%;left:8%;--s:14px;--c:var(--fuchsia-vif);--delay:1.6s}
.twinkles i:nth-child(6){bottom:2%;right:18%;--s:11px;--delay:2.6s}
.twinkles i:nth-child(7){top:-1%;right:30%;--s:9px;--c:#fff;--delay:.9s}
.twinkles i:nth-child(8){top:72%;left:-2%;--s:8px;--delay:3s}
.twinkles i:nth-child(9){top:26%;right:-3%;--s:9px;--c:#fff;--delay:1.9s}
@keyframes twinkle{0%,100%{transform:scale(.35) rotate(0deg);opacity:.25}50%{transform:scale(1) rotate(45deg);opacity:1}}

/* Médaillon : un bijou rond posé sur l'arche. */
.medallion{position:absolute;right:-6%;bottom:9%;width:clamp(110px,13vw,170px);aspect-ratio:1;border-radius:50%;padding:5px;background:var(--feuille-or);box-shadow:var(--ombre-douce)}
.medallion img{width:100%;height:100%;object-fit:cover;border-radius:50%;border:4px solid var(--blanc)}
.medallion-left{right:auto;left:-8%}

/* ---------- Boutons et liens ---------- */
.button{--g:rgba(255,255,255,.38);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:48px;padding:.75em 1.6em;border:0;border-radius:999px;background-color:var(--fuchsia);background-image:radial-gradient(circle at 18% 30%,var(--g) 0 1px,transparent 1.6px),radial-gradient(circle at 62% 72%,var(--g) 0 1px,transparent 1.6px),radial-gradient(circle at 84% 22%,rgba(255,226,150,.55) 0 1px,transparent 1.6px);background-size:29px 23px,41px 31px,37px 27px;color:#fff;font:600 1rem/1.15 var(--serif);font-variation-settings:"SOFT" 100;letter-spacing:.01em;text-decoration:none;text-align:center;cursor:pointer;overflow:hidden;isolation:isolate;box-shadow:0 12px 26px -14px rgba(196,0,106,.85),inset 0 1px 0 rgba(255,255,255,.35);transition:background-color .2s ease,transform .2s ease}
.button::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.5) 46%,rgba(255,232,170,.6) 52%,transparent 68%);transform:translateX(-120%);transition:transform .8s ease}
.button:hover{background-color:var(--fuchsia-fonce)}
.button:hover::after{transform:translateX(120%)}
.button:active{transform:translateY(1px)}
.button:disabled{opacity:.55;cursor:not-allowed}
.button:disabled::after{display:none}
.button-ghost{background:transparent;background-image:none;color:var(--fuchsia);box-shadow:inset 0 0 0 1.5px var(--fuchsia)}
.button-ghost:hover{background:var(--petale)}
.button-small{min-height:44px;padding:.55em 1.15em;font-size:.95rem}
.text-link{display:inline;padding:0;border:0;background:none;color:var(--fuchsia);font-weight:600;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.28em;cursor:pointer}
.text-link:hover{text-decoration-thickness:2px}
.instagram-link{display:inline-flex;align-items:center;gap:.5em;color:var(--fuchsia);font-weight:600;text-decoration:none;min-height:44px}
.instagram-link svg{width:22px;height:22px}
.instagram-link:hover span{text-decoration:underline;text-underline-offset:.25em}

/* ---------- Bandeau et en-tête ---------- */
.announcement{background:var(--mure);color:var(--petale);font-size:.875rem}
.announcement p{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.4em 1em;margin:0;padding:.55em var(--gutter);text-align:center}
.announcement a{text-decoration:none}
.announcement a:hover{text-decoration:underline}
.announcement .spark{color:var(--or-clair);width:.75em}

.site-header{position:sticky;top:0;z-index:40;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:24px;padding:10px var(--gutter);background:rgba(255,244,248,.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(217,180,90,.45)}
.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--fuchsia)}
.brand img{width:52px;height:auto;filter:drop-shadow(0 4px 8px rgba(196,0,106,.18))}
.brand span{font-family:var(--script);font-size:1.9rem;line-height:1;white-space:nowrap;font-variation-settings:normal}
.desktop-nav{display:none}
.header-actions{display:flex;align-items:center;gap:10px;justify-self:end}
.header-order{display:none}
.cart-link{position:relative;display:grid;place-items:center;width:46px;height:46px;border-radius:50%;color:var(--mure);text-decoration:none;background:var(--blanc);box-shadow:inset 0 0 0 1px var(--rose)}
.cart-link svg{width:24px;height:24px}
.cart-count{position:absolute;top:-4px;right:-4px;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--fuchsia);color:#fff;font-size:.75rem;font-weight:700;line-height:22px;text-align:center}
.menu-toggle{display:grid;place-content:center;gap:6px;width:46px;height:46px;border:0;border-radius:50%;background:var(--blanc);box-shadow:inset 0 0 0 1px var(--rose);cursor:pointer}
.menu-toggle span{display:block;width:20px;height:2px;border-radius:2px;background:var(--mure);transition:transform .25s ease}
.menu-toggle[aria-expanded="true"] span:first-child{transform:translateY(4px) rotate(45deg)}
.menu-toggle[aria-expanded="true"] span:last-child{transform:translateY(-4px) rotate(-45deg)}

.mobile-nav{position:fixed;left:0;right:0;z-index:39;display:flex;flex-direction:column;gap:2px;padding:12px var(--gutter) 28px;background:var(--dragee);border-bottom:1px solid var(--rose);box-shadow:0 30px 50px -30px rgba(74,18,54,.4);overflow:auto}
.mobile-nav>a,.mobile-nav .shop-nav-top>a{display:flex;align-items:center;min-height:52px;font-size:1.35rem;text-decoration:none;font-variation-settings:"SOFT" 100,"WONK" 1}
.mobile-nav>a[aria-current],.mobile-nav .shop-nav-top>a[aria-current]{color:var(--fuchsia)}
.mobile-nav .button{margin-top:16px;font-size:1.05rem}
.shop-nav{position:relative}
.shop-nav-top{display:flex;align-items:center;gap:2px}
.category-toggle{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:none;color:inherit;cursor:pointer}
.category-toggle svg{width:16px;height:16px;transition:transform .2s ease}
.category-toggle[aria-expanded="true"] svg{transform:rotate(180deg)}
.nav-categories{display:flex;flex-direction:column;padding:4px 0 8px 14px;border-left:1px solid var(--or-clair);margin-left:4px}
.nav-categories a{display:flex;align-items:center;min-height:44px;text-decoration:none;font-size:1.05rem}
.nav-categories a:hover{color:var(--fuchsia)}

@media (min-width:1191px){
  .site-header{gap:32px;padding-block:12px}
  .desktop-nav{display:flex;justify-content:center;align-items:center;gap:clamp(14px,1.8vw,30px)}
  .desktop-nav>a,.desktop-nav .shop-nav-top>a{position:relative;display:inline-flex;align-items:center;min-height:44px;text-decoration:none;font-size:1.02rem;white-space:nowrap}
  .desktop-nav>a::after,.desktop-nav .shop-nav-top>a::after{content:"";position:absolute;left:0;right:0;bottom:6px;height:1px;background:var(--fuchsia);transform:scaleX(0);transition:transform .25s ease}
  .desktop-nav>a:hover::after,.desktop-nav .shop-nav-top>a:hover::after,.desktop-nav a[aria-current]::after{transform:scaleX(1)}
  .desktop-nav a[aria-current]{color:var(--fuchsia)}
  .desktop-nav .category-toggle{width:32px;height:32px}
  .desktop-nav .nav-categories{position:absolute;top:calc(100% + 8px);left:-14px;min-width:220px;padding:10px;margin:0;border:0;border-radius:20px;background:var(--blanc);box-shadow:var(--ombre-douce),inset 0 0 0 1px var(--rose)}
  .desktop-nav .nav-categories a{padding:0 12px;border-radius:12px}
  .desktop-nav .nav-categories a:hover{background:var(--dragee)}
  .header-order{display:inline-flex}
  .menu-toggle,.mobile-nav{display:none!important}
}
/* Entre 1191 et 1400 px, le menu complet prend la place du nom : le logo seul reste. */
@media (min-width:1191px) and (max-width:1400px){
  .brand span{display:none}
  .desktop-nav{gap:clamp(12px,1.4vw,22px)}
}

/* ---------- Sections ---------- */
main{display:block}
.band{position:relative;padding-block:var(--pas);margin-block:calc(var(--pas)*.5)}
.band-rose{background:var(--petale)}
.band-lilac{background:var(--lilas)}
/* Bord festonné, comme le bord d'une boîte de dragées. */
.band::before,.band::after{content:"";position:absolute;left:0;right:0;height:16px;background-size:32px 32px;background-repeat:repeat-x}
.band::before{top:-15px;background-image:radial-gradient(circle at 16px 16px,var(--band) 15.5px,transparent 16px)}
.band::after{bottom:-15px;background-image:radial-gradient(circle at 16px 0,var(--band) 15.5px,transparent 16px)}
.band-rose{--band:var(--petale)}
.band-lilac{--band:var(--lilas)}
.section-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:12px 32px;margin-bottom:clamp(28px,4vw,48px)}
.section-head p{max-width:46ch;color:var(--mure-doux);margin:0}
.section-head-center{flex-direction:column;align-items:center;text-align:center}
.section-title{text-align:center;margin-bottom:clamp(28px,4vw,48px)}

/* ---------- Accueil : héros ---------- */
.hero{position:relative;overflow:hidden;padding-block:clamp(40px,6vw,88px) clamp(56px,8vw,112px);background:radial-gradient(60% 70% at 78% 40%,#ffe3f0 0%,rgba(255,227,240,0) 70%),radial-gradient(40% 50% at 10% 90%,var(--lilas) 0%,rgba(243,234,252,0) 70%)}
.fairy-dust{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:45}
.hero-inner{position:relative;display:grid;gap:56px;align-items:center}
.hero-copy{position:relative;z-index:2;max-width:36rem}
.hero h1{font-size:clamp(2.9rem,6.4vw,5.4rem);line-height:1.02;margin-bottom:.35em}
.hero-lede{font-size:clamp(1.1rem,1.6vw,1.28rem);color:var(--mure-doux);max-width:34rem}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin:28px 0 22px}
.hero-note{font-size:1rem}
.hero-visual{position:relative;width:min(100%,460px);justify-self:center;margin-top:12px}
.hero-arch .arch{aspect-ratio:5/7}
.hero-arch .arch img{object-position:50% 62%}

@media (min-width:861px){
  .hero-inner{grid-template-columns:1.05fr .95fr}
  .hero-visual{justify-self:end;margin-right:4%}
}

/* ---------- Accueil : portes ---------- */
.doors-section{padding-block:var(--pas) calc(var(--pas)*.5)}
.doors{display:grid;gap:clamp(20px,4vw,48px);grid-template-columns:repeat(3,minmax(0,1fr))}
.door{display:flex;flex-direction:column;align-items:center;text-align:center;text-decoration:none;color:var(--mure)}
.door-arch{display:block;width:100%;max-width:300px;aspect-ratio:4/5;overflow:hidden;padding:6px;border-radius:var(--arch);background:var(--feuille-or);box-shadow:var(--ombre);margin-bottom:22px}
.door-arch img{width:100%;height:100%;object-fit:cover;border-radius:var(--arch);transition:transform .5s ease}
.door-title{font-size:1.9rem;line-height:1.1;font-variation-settings:"SOFT" 100,"WONK" 1;margin-bottom:6px}
.door-copy{max-width:28ch;color:var(--mure-doux);font-size:1.02rem}
.door:hover .door-title{color:var(--fuchsia)}
.door:hover .door-arch img{transform:scale(1.03)}

/* ---------- Cartes produit ---------- */
.product-grid{display:grid;gap:clamp(16px,2.2vw,32px);grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:1000px){.product-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (min-width:760px){.related-products .product-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.product{display:flex;flex-direction:column;min-width:0;padding:8px 8px 18px;border-radius:200px 200px 22px 22px;background:var(--blanc);box-shadow:var(--ombre-douce),inset 0 0 0 1px rgba(247,201,221,.7)}
.product-picture{display:block;aspect-ratio:4/5;border-radius:200px 200px 14px 14px;overflow:hidden;background:var(--petale)}
.product-picture img{width:100%;height:100%;object-fit:cover}
.product-picture.is-whole{background:var(--blanc)}
.product-picture.is-whole img{object-fit:contain;padding:24% 6% 6%;border-radius:20px}
.product-body{display:flex;flex-direction:column;flex:1;padding:16px 10px 0}
.product-name{font-size:1.32rem;line-height:1.15;margin-bottom:6px}
.product-name a{text-decoration:none}
.product-name a:hover{color:var(--fuchsia)}
.product-desc{font-size:.95rem;line-height:1.5;color:var(--mure-doux);margin-bottom:14px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.product-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:auto}
.product-price{font-weight:650;color:var(--fuchsia);font-variant-numeric:lining-nums;white-space:nowrap}
@media (max-width:520px){
  .product{padding:6px 6px 14px}
  .product-body{padding:12px 6px 0}
  .product-name{font-size:1.12rem}
  .product-desc{display:none}
  .product-foot .button-small{width:100%}
}

/* ---------- Accueil : bienvenue, trésors ---------- */
.welcome{display:grid;gap:clamp(40px,6vw,80px);align-items:center;padding-block:calc(var(--pas)*.5) var(--pas)}
.welcome-copy{max-width:34rem}
.welcome-copy h2{margin-bottom:.5em}
.welcome-copy p{color:var(--mure-doux)}
.welcome-copy .button{margin-top:12px}
@media (min-width:861px){.welcome{grid-template-columns:1.1fr .9fr}}

.treasures{padding-bottom:calc(var(--pas)*.5)}
.treasure-row{display:grid;gap:clamp(20px,3vw,40px);grid-template-columns:repeat(3,minmax(0,1fr))}
.treasure{margin:0;text-align:center}
.treasure-arch{display:block;max-width:280px;margin:0 auto 18px;aspect-ratio:3/4;border-radius:var(--arch);overflow:hidden;box-shadow:var(--ombre-douce),0 0 0 6px var(--blanc),0 0 0 7px var(--or-clair)}
.treasure-arch img{width:100%;height:100%;object-fit:cover}
.treasure figcaption strong{display:block;font-weight:500;font-size:1.35rem;font-variation-settings:"SOFT" 100,"WONK" 1;margin-bottom:4px}
.treasure figcaption span{display:block;max-width:30ch;margin-inline:auto;color:var(--mure-doux);font-size:1rem}

/* ---------- Accueil : mariages ---------- */
.weddings-layout{display:grid;gap:clamp(48px,6vw,80px);align-items:center}
.weddings-copy{max-width:32rem}
.weddings-copy h2{margin-bottom:.5em}
.weddings-copy p{color:var(--mure-doux)}
.weddings-copy .button{margin-top:12px}
.weddings-collage{position:relative;width:min(100%,520px);justify-self:center;padding:0 12% 10% 0}
.collage-main .arch{aspect-ratio:4/5}
.collage-round{position:absolute;right:0;bottom:0;width:44%;aspect-ratio:1;object-fit:cover;border-radius:50%;border:6px solid var(--blanc);box-shadow:var(--ombre-douce),0 0 0 7px var(--or-clair)}
@media (min-width:861px){.weddings-layout{grid-template-columns:.95fr 1.05fr}}

/* ---------- Accueil : abonnements ---------- */
.subscriptions-teaser{display:grid;gap:clamp(40px,6vw,80px);align-items:center;padding-block:calc(var(--pas)*.5)}
.subs-photo{width:min(100%,380px);justify-self:center}
.subs-copy{max-width:36rem}
.subs-copy h2{margin-bottom:.5em}
.subs-copy>p{color:var(--mure-doux)}
.plan-tickets{display:grid;gap:12px;margin:24px 0 14px}
.plan-ticket{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;padding:12px 22px;border-radius:999px;background:var(--blanc);text-decoration:none;box-shadow:inset 0 0 0 1px var(--rose);transition:box-shadow .2s ease}
.plan-ticket:hover{box-shadow:inset 0 0 0 2px var(--fuchsia)}
.plan-ticket-name{font-size:1.15rem;font-variation-settings:"SOFT" 100,"WONK" 1}
.plan-ticket-price{display:flex;align-items:baseline;gap:8px;font-weight:650;font-size:1.35rem;color:var(--fuchsia);white-space:nowrap}
.plan-ticket-price small{font-weight:400;font-size:.85rem;color:var(--mure-doux)}
.subs-copy .button{margin-top:10px}
@media (min-width:861px){.subscriptions-teaser{grid-template-columns:.8fr 1.2fr}}
@media (max-width:520px){.plan-ticket{flex-direction:column;align-items:flex-start;gap:2px;border-radius:24px}.plan-ticket-price{flex-wrap:wrap}}

/* ---------- Accueil : maisons ---------- */
.house-cards{display:grid;gap:clamp(20px,3vw,32px);grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))}
.house-card{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:22px;align-items:center;padding:12px;border-radius:30px;background:var(--blanc);box-shadow:var(--ombre-douce)}
.house-card img{width:100%;height:100%;min-height:220px;object-fit:cover;border-radius:999px 999px 18px 18px}
.house-card h3{margin-bottom:8px}
.house-card p{font-size:1rem}
.house-links{display:flex;flex-wrap:wrap;gap:6px 18px}
.house-card .hours div{grid-template-columns:1fr;gap:0}
.house-card .hours dd{text-align:left;font-weight:550}
@media (max-width:520px){.house-card{grid-template-columns:1fr}.house-card img{aspect-ratio:4/3;min-height:0;border-radius:999px 999px 18px 18px}}

.hours{display:grid;gap:6px;margin:0 0 14px;font-size:.98rem}
.hours div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding-bottom:6px;border-bottom:1px dotted var(--or-clair)}
.hours dt{color:var(--mure-doux)}
.hours dd{margin:0;text-align:right;font-variant-numeric:lining-nums}

/* ---------- Pages intérieures ---------- */
.page-intro{padding-block:clamp(48px,7vw,96px) clamp(28px,4vw,48px);max-width:44rem}
.page-intro h1{margin-bottom:.35em}
.intro-copy{font-size:clamp(1.08rem,1.5vw,1.25rem);color:var(--mure-doux)}
.page-intro-center{margin-inline:auto;text-align:center}
.page-intro-center .intro-copy{margin-inline:auto;max-width:38rem}

.page-hero{display:grid;gap:clamp(48px,6vw,80px);align-items:center;padding-block:clamp(48px,7vw,96px) clamp(40px,6vw,72px)}
.page-hero-copy{max-width:36rem}
.page-hero-copy h1{margin-bottom:.35em}
.page-hero-visual{position:relative;width:min(100%,420px);justify-self:center}
@media (min-width:861px){.page-hero{grid-template-columns:1.1fr .9fr}.page-hero-visual{justify-self:end;margin-right:4%}}

.finale{padding-block:calc(var(--pas)*.6) var(--pas);text-align:center}
.finale h2{margin-bottom:.4em}
.finale p{color:var(--mure-doux);max-width:36rem;margin-inline:auto}
.finale .button{margin-top:16px}

/* Étapes : vraies séquences, donc numérotées. */
.steps{counter-reset:etape;list-style:none;margin:0;padding:0;display:grid;gap:clamp(28px,3vw,40px);grid-template-columns:1fr}
@media (min-width:760px){.steps{grid-template-columns:repeat(3,minmax(0,1fr))}}
.steps li{counter-increment:etape;position:relative;padding-top:64px}
.steps li::before{content:counter(etape);position:absolute;top:0;left:0;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--blanc);color:var(--fuchsia);font-size:1.4rem;font-variation-settings:"SOFT" 100,"WONK" 1;box-shadow:0 0 0 1px var(--or-clair),0 0 0 5px var(--dragee),0 0 0 6px rgba(217,180,90,.5)}
.steps strong{display:block;font-weight:500;font-size:1.3rem;line-height:1.2;font-variation-settings:"SOFT" 100,"WONK" 1;margin-bottom:6px}
.steps span{display:block;color:var(--mure-doux);font-size:1rem}
.steps-inline{margin-top:28px;grid-template-columns:1fr;gap:18px}
.steps-inline li{padding:0 0 0 62px;min-height:48px}
.steps-inline strong{font-size:1.12rem}
.process{padding-block:calc(var(--pas)*.4) calc(var(--pas)*.6)}

/* ---------- À propos ---------- */
.story-layout{display:grid;gap:32px 72px}
.story-copy{max-width:40rem}
.story-copy .lead{font-size:clamp(1.25rem,2vw,1.55rem);line-height:1.45;color:var(--mure);font-variation-settings:"SOFT" 100,"WONK" 0}
.story-copy p{color:var(--mure-doux)}
@media (min-width:861px){.story-layout{grid-template-columns:.9fr 1.1fr}}
.values{padding-block:calc(var(--pas)*.4)}
.values-row{display:grid;gap:32px;grid-template-columns:1fr;text-align:center}
@media (min-width:700px){.values-row{grid-template-columns:repeat(3,minmax(0,1fr))}}
.values-row article{padding:8px 12px}
.value-icon{display:inline-grid;place-items:center;width:84px;height:84px;margin-bottom:16px;border-radius:50%;background:var(--blanc);color:var(--fuchsia);box-shadow:0 0 0 1px var(--or-clair),0 0 0 7px var(--dragee),0 0 0 8px rgba(217,180,90,.45)}
.value-icon svg{width:44px;height:44px}
.values-row h3{margin-bottom:8px}
.values-row p{color:var(--mure-doux);max-width:30ch;margin-inline:auto}
.atelier-strip{display:grid;gap:clamp(18px,3vw,40px);grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;padding-block:calc(var(--pas)*.6)}
.atelier-strip figure{margin:0}
.atelier-strip figcaption{margin-top:22px;text-align:center;color:var(--mure-doux);font-size:1rem;font-style:italic}


/* ---------- Nos maisons ---------- */
.shop-jumps{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-bottom:clamp(24px,4vw,48px)}
.location{display:grid;gap:clamp(40px,6vw,88px);align-items:center;padding-block:calc(var(--pas)*.6);scroll-margin-top:110px}
.location-photo{width:min(100%,480px);justify-self:center}
.location-copy{max-width:32rem}
.location-copy h2{margin-bottom:.35em}
.location-copy address{font-style:normal;font-size:1.15rem;margin-bottom:8px}
.info-block{margin:26px 0 18px;padding:22px 24px;border-radius:24px;background:var(--blanc);box-shadow:inset 0 0 0 1px var(--rose)}
.info-block h3{font-size:1.2rem;margin-bottom:12px}
.info-block .hours{margin-bottom:0}
.info-block .small-note{margin:12px 0 0}
.contact-lines{display:flex;flex-direction:column;gap:2px}
.contact-lines a{font-size:1.15rem;text-decoration:none;min-height:36px;display:inline-flex;align-items:center}
.contact-lines a:first-child{font-weight:650;color:var(--fuchsia)}
@media (min-width:861px){.location{grid-template-columns:1fr 1fr}.location-alt .location-photo{order:2}}
.delivery-layout{display:grid;gap:40px 72px;align-items:start}
.delivery-layout h2{margin-bottom:.5em}
.delivery-layout p{color:var(--mure-doux)}
.delivery-layout .button{margin-top:10px}
.delivery-towns{display:grid;gap:12px}
.delivery-towns details{border-radius:22px;background:var(--blanc);box-shadow:inset 0 0 0 1px var(--rose)}
.delivery-towns summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:60px;padding:0 24px;cursor:pointer;list-style:none;font-size:1.15rem;font-variation-settings:"SOFT" 100,"WONK" 1}
.delivery-towns summary::-webkit-details-marker{display:none}
.delivery-towns summary::after{content:"+";font-size:1.5rem;color:var(--fuchsia);transition:transform .2s ease}
.delivery-towns details[open] summary::after{transform:rotate(45deg)}
.delivery-towns details p{padding:0 24px 20px;margin:0;font-size:1rem}
@media (min-width:861px){.delivery-layout{grid-template-columns:1fr 1fr}}

/* ---------- Mariages ---------- */
.service-list{list-style:none;margin:0;padding:0;display:grid;gap:18px;grid-template-columns:1fr}
@media (min-width:640px){.service-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1000px){.service-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
.service-list li{position:relative;padding:26px 26px 24px 64px;border-radius:24px;background:var(--blanc);box-shadow:var(--ombre-douce)}
.service-list .spark{position:absolute;left:26px;top:31px;width:20px;height:20px;color:var(--or-clair)}
.service-list h3{font-size:1.3rem;margin-bottom:6px}
.service-list p{color:var(--mure-doux);font-size:1rem}
.gallery-filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:28px}
.gallery-filters button,.catalog-filters a{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border:0;border-radius:999px;background:var(--blanc);color:var(--mure);font-size:1rem;text-decoration:none;cursor:pointer;box-shadow:inset 0 0 0 1px var(--rose)}
.gallery-filters button:hover,.catalog-filters a:hover{box-shadow:inset 0 0 0 1.5px var(--fuchsia)}
.gallery-filters button[aria-pressed="true"],.catalog-filters a[aria-current]{background:var(--fuchsia);color:#fff;box-shadow:none}
.portfolio-grid{columns:3 260px;column-gap:18px}
.portfolio-item{position:relative;display:block;width:100%;margin:0 0 18px;padding:0;border:0;border-radius:22px;overflow:hidden;background:var(--blanc);cursor:zoom-in;break-inside:avoid;box-shadow:var(--ombre-douce)}
.portfolio-item img{width:100%;height:auto}
.portfolio-item span{position:absolute;left:12px;bottom:12px;padding:6px 14px;border-radius:999px;background:rgba(255,244,248,.92);color:var(--mure);font-size:.92rem}
.event-inquiry{display:grid;gap:clamp(40px,6vw,80px);padding-block:var(--pas);scroll-margin-top:90px}
.inquiry-intro h2{margin-bottom:.4em}
.inquiry-intro p{color:var(--mure-doux);max-width:32rem}
.inquiry-intro img{width:min(100%,320px);margin-top:28px;aspect-ratio:4/5;object-fit:cover;border-radius:var(--arch);box-shadow:var(--ombre),0 0 0 6px var(--blanc),0 0 0 7px var(--or-clair)}
@media (min-width:861px){.event-inquiry{grid-template-columns:.8fr 1.2fr;align-items:start}}

/* ---------- Formulaires ---------- */
.inquiry-form{display:grid;gap:18px;padding:clamp(22px,3vw,36px);border-radius:30px;background:var(--blanc);box-shadow:var(--ombre-douce),inset 0 0 0 1px rgba(247,201,221,.8)}
.inquiry-form h2{font-size:1.75rem}
.form-pair{display:grid;gap:18px}
@media (min-width:640px){.form-pair{grid-template-columns:1fr 1fr}}
label{display:block;font-size:.98rem;font-weight:500}
label>span{font-weight:400;color:var(--mure-doux)}
input:not([type=radio]):not([type=checkbox]),select,textarea{display:block;margin-top:6px;width:100%;min-height:50px;padding:12px 16px;border:1.5px solid #ebc8d9;border-radius:16px;background:var(--dragee);font-size:1rem;font-weight:400;transition:border-color .2s ease,box-shadow .2s ease}
textarea{min-height:120px;resize:vertical;line-height:1.5}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--fuchsia);box-shadow:0 0 0 4px rgba(196,0,106,.14);background:var(--blanc)}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23c4006a' stroke-width='1.6'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:16px;padding-right:42px}
input[type=radio],input[type=checkbox]{accent-color:var(--fuchsia);width:20px;height:20px}
.form-note{font-size:.9rem;color:var(--mure-doux);margin:0}
.inquiry-form>.button{justify-self:start}
.email-fallback,.subscription-request{display:grid;gap:12px;padding:22px;border-radius:22px;background:var(--dragee);box-shadow:inset 0 0 0 1px var(--rose)}
.email-fallback h3,.subscription-request h3{font-size:1.3rem}
.email-fallback .button,.subscription-request .button{justify-self:start}
.email-fallback .text-link,.subscription-request .text-link{justify-self:start;min-height:44px}
.consent-label{display:grid;grid-template-columns:auto 1fr;align-items:start;gap:12px;font-weight:400;font-size:.95rem}
.consent-label input{margin-top:3px}
.consent-label span{color:var(--mure)}
.payment-status:empty{display:none}
.payment-status{padding:14px 18px;border-radius:16px;background:var(--lilas);font-size:.95rem}
.payment-contact{display:block;margin-top:6px;color:var(--fuchsia);font-weight:600}

/* ---------- Contact ---------- */
.contact-section{display:grid;gap:clamp(40px,6vw,80px);padding-bottom:var(--pas)}
.contact-intro .page-intro{padding-bottom:28px}
.contact-addresses{display:grid;gap:18px}
.contact-addresses address{display:flex;flex-direction:column;gap:2px;padding:24px;border-radius:26px;background:var(--blanc);font-style:normal;box-shadow:var(--ombre-douce)}
.contact-addresses h2{font-size:1.5rem;margin-bottom:6px}
.contact-addresses a{min-height:34px;display:inline-flex;align-items:center;text-decoration:none}
.contact-addresses .contact-phone{font-size:1.2rem;font-weight:650;color:var(--fuchsia)}
.contact-addresses .text-link{text-decoration:underline;margin-top:4px}
.contact-photo{position:relative;width:min(70%,300px);margin:44px auto 0}
.contact-form-wrap{align-self:start}
.contact-form-wrap>h2{margin-bottom:20px}
@media (min-width:861px){.contact-section{grid-template-columns:.85fr 1.15fr}.contact-form-wrap{padding-top:clamp(48px,7vw,96px)}}

/* ---------- Boutique ---------- */
.catalog-section{padding-bottom:var(--pas)}
.catalog-filters{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-bottom:22px}
.catalog-filters span{font-size:.85rem;opacity:.8}
.catalog-note{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-bottom:24px;padding-bottom:14px;border-bottom:1px dotted var(--or-clair);color:var(--mure-doux);font-size:.95rem}
.catalog-note p{margin:0}
.catalog-bottom{margin-top:var(--pas);padding:clamp(32px,5vw,56px);border-radius:999px 999px 36px 36px;background:var(--petale);text-align:center}
.catalog-bottom h2{font-size:clamp(1.7rem,3vw,2.4rem);margin-bottom:.4em}
.catalog-bottom p{color:var(--mure-doux)}
.catalog-bottom .button{margin-top:10px}
@media (max-width:640px){.catalog-bottom{border-radius:200px 200px 28px 28px;padding-top:72px}}

/* ---------- Fiche produit ---------- */
.product-page{padding-block:28px var(--pas)}
.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:clamp(28px,4vw,48px);font-size:.92rem;color:var(--mure-doux)}
.breadcrumbs a{text-decoration:none}
.breadcrumbs a:hover{color:var(--fuchsia);text-decoration:underline}
.breadcrumbs .spark{width:.6em;color:var(--or-clair)}
.product-detail{display:grid;gap:clamp(40px,6vw,88px);align-items:start}
.product-visual{margin:0;width:min(100%,520px);justify-self:center}
.product-visual figcaption{margin-top:24px;font-size:.88rem;color:var(--mure-doux);text-align:center}
.product-category{font-family:var(--script);font-size:2rem;line-height:1;color:var(--or);margin-bottom:.2em;font-variation-settings:normal}
.product-details h1{font-size:clamp(2.3rem,4.4vw,3.6rem);margin-bottom:.2em}
.detail-price{font-size:1.7rem;margin-bottom:.5em}
.detail-description{color:var(--mure-doux);max-width:36rem}
.product-form{display:grid;gap:22px;margin:28px 0}
.size-choice{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin:0;padding:0;border:0}
.size-choice legend{padding:0;margin-bottom:10px;font-weight:500}
.size-choice label{position:relative;display:block;cursor:pointer}
.size-choice input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.size-choice label>span{display:grid;justify-items:center;gap:2px;padding:14px 10px;border-radius:20px;background:var(--blanc);text-align:center;box-shadow:inset 0 0 0 1.5px var(--rose);transition:box-shadow .2s ease,background .2s ease}
.size-choice strong{font-weight:550;font-size:1.08rem;color:var(--mure)}
.size-choice small{color:var(--mure-doux);font-size:.95rem}
.size-choice input:checked+span{background:var(--petale);box-shadow:inset 0 0 0 2px var(--fuchsia)}
.size-choice input:focus-visible+span{outline:3px solid var(--fuchsia);outline-offset:3px}
.single-variant label{max-width:220px}
.gift-field>span{color:var(--mure);font-weight:500}
.gift-field small{font-size:.9rem;color:var(--mure-doux);font-weight:400}
.gift-help{display:flex;justify-content:space-between;gap:12px;margin-top:-12px;font-size:.88rem;color:var(--mure-doux)}
.product-purchase{display:flex;flex-wrap:wrap;align-items:end;gap:14px}
.product-quantity{display:grid;gap:6px}
.product-quantity label{font-weight:500}
.stepper{display:flex;align-items:center;border-radius:999px;background:var(--blanc);box-shadow:inset 0 0 0 1.5px var(--rose)}
.stepper button{width:46px;height:48px;border:0;background:none;font-size:1.3rem;color:var(--fuchsia);cursor:pointer;border-radius:999px}
.stepper button:disabled{color:#d7b3c4;cursor:not-allowed}
.stepper input{width:48px!important;min-height:48px!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;text-align:center;box-shadow:none!important;-moz-appearance:textfield}
.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.add-to-cart{flex:1;min-width:230px;min-height:52px}
.purchase-total{padding-left:.6em;border-left:1px solid rgba(255,255,255,.5);font-variant-numeric:lining-nums}
.buy-now{width:100%}
.product-error{margin:0;color:var(--fuchsia-fonce);font-weight:600}
.product-error:empty{display:none}
.product-practical{display:grid;gap:14px;margin-top:8px;padding:22px 24px;border-radius:24px;background:var(--petale)}
.product-practical h2{font-size:1.15rem;margin-bottom:4px}
.product-practical p{font-size:.98rem;color:var(--mure-doux)}
@media (min-width:640px){.product-practical{grid-template-columns:1fr 1fr}}
@media (min-width:900px){.product-detail{grid-template-columns:1fr 1fr}.product-visual{position:sticky;top:120px}}
.related-products{margin-top:var(--pas)}

/* ---------- Panier ---------- */
.cart-page{padding-bottom:var(--pas)}
#cart-content{display:grid;gap:14px;margin-bottom:32px}
.cart-row{display:grid;grid-template-columns:96px 1fr;gap:6px 20px;align-items:center;padding:14px;border-radius:26px;background:var(--blanc);box-shadow:var(--ombre-douce)}
.cart-image-link{grid-row:span 3;align-self:start}
.cart-row img{width:96px;height:118px;object-fit:cover;border-radius:999px 999px 14px 14px}
.cart-row h2{font-size:1.3rem;margin-bottom:2px}
.cart-row h2 a{text-decoration:none}
.cart-row p{margin:0;font-size:.95rem;color:var(--mure-doux)}
.cart-message{margin-top:6px!important;padding:8px 12px;border-radius:12px;background:var(--dragee);font-style:italic;white-space:pre-wrap;overflow-wrap:anywhere}
.remove-item{margin-top:6px;padding:0;min-height:36px;border:0;background:none;color:var(--fuchsia);text-decoration:underline;text-underline-offset:.25em;cursor:pointer;font-size:.92rem}
.quantity-control{display:inline-flex;align-items:center;justify-self:start;border-radius:999px;box-shadow:inset 0 0 0 1.5px var(--rose)}
.quantity-control button{width:42px;height:42px;border:0;background:none;color:var(--fuchsia);font-size:1.2rem;cursor:pointer;border-radius:999px}
.quantity-control button:disabled{color:#d7b3c4;cursor:not-allowed}
.quantity-control span{min-width:28px;text-align:center}
.line-total{font-weight:650;color:var(--fuchsia);justify-self:start}
@media (min-width:760px){
  .cart-row{grid-template-columns:110px 1fr auto auto;gap:24px;padding:16px 24px 16px 16px}
  .cart-image-link{grid-row:auto}
  .cart-row img{width:110px;height:134px}
  .line-total{justify-self:end;min-width:80px;text-align:right;font-size:1.15rem}
}
.empty-cart{display:grid;justify-items:center;gap:10px;padding:clamp(40px,6vw,72px) 24px;border-radius:999px 999px 36px 36px;background:var(--petale);text-align:center}
.empty-cart h2{font-size:clamp(1.7rem,3vw,2.4rem)}
.empty-cart p{color:var(--mure-doux)}
.checkout-layout{display:grid;gap:28px;align-items:start}
.cart-summary{display:grid;gap:10px;padding:28px;border-radius:30px;background:var(--petale)}
.cart-summary h2{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:1.7rem}
.cart-summary h2 span{color:var(--fuchsia)}
.cart-summary p{color:var(--mure-doux);font-size:.98rem}
.cart-summary .summary-label,.subscription-summary .summary-label{font-family:var(--script);font-size:1.9rem;line-height:1;color:var(--or);margin:0;font-variation-settings:normal}
@media (min-width:900px){.checkout-layout{grid-template-columns:1.35fr .65fr}.cart-summary{position:sticky;top:120px}}

/* ---------- Abonnements ---------- */
.subscription-checkout{display:grid;gap:28px;padding-bottom:var(--pas)}
.plan-list{display:grid;gap:14px;margin:0;padding:0;border:0}
.plan-list legend,.subscription-details .inquiry-form h2{font-size:1.75rem;font-variation-settings:"SOFT" 100,"WONK" 1;margin-bottom:16px;padding:0}
.subscription-plan{position:relative;display:grid;grid-template-columns:1fr auto;gap:8px 20px;align-items:center;padding:20px 24px;border-radius:26px;background:var(--blanc);cursor:pointer;font-weight:400;box-shadow:inset 0 0 0 1.5px var(--rose);transition:box-shadow .2s ease,background .2s ease}
.subscription-plan input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.subscription-plan:has(input:checked){background:var(--petale);box-shadow:inset 0 0 0 2px var(--fuchsia)}
.subscription-plan:has(input:focus-visible){outline:3px solid var(--fuchsia);outline-offset:3px}
.plan-title strong{display:block;font-weight:500;font-size:1.3rem;font-variation-settings:"SOFT" 100,"WONK" 1}
.plan-title span{color:var(--mure-doux);font-size:.98rem}
.plan-price{text-align:right}
.plan-price strong{display:block;font-size:1.5rem;font-weight:650;color:var(--fuchsia)}
.plan-price span{font-size:.88rem;color:var(--mure-doux)}
.plan-select{grid-column:1/-1;justify-self:start;padding:4px 14px;border-radius:999px;background:var(--dragee);font-size:.85rem;color:var(--mure-doux)}
.subscription-plan:has(input:checked) .plan-select{background:var(--fuchsia);color:#fff}
.subscription-details{display:grid;gap:28px;align-items:start}
.subscription-summary{display:grid;gap:10px;padding:28px;border-radius:999px 999px 30px 30px;background:var(--petale);text-align:center;padding-top:64px}
.subscription-summary h2{font-size:1.8rem}
.summary-amount{font-size:1.4rem;font-weight:650;color:var(--fuchsia)}
.subscription-summary p{color:var(--mure-doux);font-size:.98rem}
@media (min-width:900px){.subscription-details{grid-template-columns:1.3fr .7fr}.subscription-summary{position:sticky;top:120px}}

/* ---------- Commande, mentions ---------- */
.order-page{padding-bottom:var(--pas);text-align:center}
.status-card{max-width:40rem;margin:0 auto 28px;padding:28px;border-radius:30px;background:var(--blanc);box-shadow:var(--ombre-douce)}
.status-card:empty{display:none}
.status-card h2{font-size:1.6rem;margin-bottom:8px}
.status-card p{color:var(--mure-doux)}
.status-card .button{margin-top:14px}
.legal-page{padding-bottom:var(--pas)}
.legal-copy{max-width:42rem;margin-inline:auto;padding:clamp(24px,4vw,48px);border-radius:30px;background:var(--blanc);box-shadow:var(--ombre-douce)}
.legal-copy h2{font-size:1.5rem;margin:1.4em 0 .4em}
.legal-copy h2:first-child{margin-top:0}
.legal-copy p{color:var(--mure-doux)}

/* ---------- Fenêtres ---------- */
dialog{border:0;padding:0;color:var(--mure);background:transparent}
dialog::backdrop{background:rgba(74,18,54,.55);backdrop-filter:blur(4px)}
.bouquet-dialog{width:min(100% - 24px,640px);max-height:calc(100dvh - 24px);overflow:auto;padding:clamp(24px,4vw,40px);border-radius:32px;background:var(--dragee);box-shadow:0 40px 80px -30px rgba(74,18,54,.6)}
.bouquet-dialog h2{font-size:clamp(1.8rem,3.5vw,2.4rem);margin-bottom:22px;padding-right:40px}
.bouquet-dialog .inquiry-form{box-shadow:none;padding:0;background:none}
.dialog-close{position:absolute;top:14px;right:14px;z-index:2;display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--blanc);color:var(--mure);font-size:1.6rem;line-height:1;cursor:pointer;box-shadow:inset 0 0 0 1px var(--rose)}
.dialog-close:hover{color:var(--fuchsia)}
.gallery-dialog{width:min(100% - 24px,920px);max-height:calc(100dvh - 24px);overflow:visible}
.gallery-dialog figure{margin:0;padding:12px;border-radius:28px;background:var(--dragee)}
.gallery-dialog img{width:100%;max-height:calc(100dvh - 190px);object-fit:contain;border-radius:18px;background:var(--blanc)}
.gallery-dialog figcaption{padding:12px 6px 2px;text-align:center;font-size:1.1rem}
.gallery-dialog .dialog-close{top:24px;right:24px}
.gallery-controls{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:12px;color:#fff}
.gallery-controls button{width:48px;height:48px;border:0;border-radius:50%;background:var(--blanc);color:var(--fuchsia);font-size:1.6rem;line-height:1;cursor:pointer}

.toast{position:fixed;left:50%;bottom:20px;z-index:60;display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;max-width:calc(100% - 32px);padding:14px 22px;border-radius:999px;background:var(--mure);color:var(--petale);box-shadow:0 20px 40px -18px rgba(74,18,54,.7);transform:translateX(-50%)}
.toast a{color:#fff;font-weight:650}

/* La dernière bande colorée se fond directement dans le pied de page. */
main>.band:last-child{margin-bottom:0}
main>.band:last-child::after{display:none}
main:has(>.band:last-child)+.site-footer{margin-top:0}

/* ---------- Pied de page ---------- */
.site-footer{position:relative;margin-top:calc(var(--pas)*.5);padding:calc(var(--pas)*.8) var(--gutter) 28px;background:var(--mure);color:var(--petale)}
.site-footer::before{content:"";position:absolute;left:0;right:0;top:-15px;height:16px;background-image:radial-gradient(circle at 16px 16px,var(--mure) 15.5px,transparent 16px);background-size:32px 32px;background-repeat:repeat-x}
.footer-inner{width:min(100%,var(--page));margin:0 auto;display:grid;gap:40px;grid-template-columns:1fr}
@media (min-width:600px){.footer-inner{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.footer-inner{grid-template-columns:1.2fr .9fr 1fr 1fr}}
.footer-brand img{width:96px;margin-bottom:14px}
.footer-brand p{font-size:1rem;color:#f2cfe0;max-width:30ch}
.site-footer .instagram-link{color:var(--rose)}
.site-footer h2{font-size:1.25rem;color:#fff;margin-bottom:12px}
.footer-nav{display:flex;flex-direction:column}
.footer-nav a,.site-footer address a{display:inline-flex;align-items:center;min-height:36px;text-decoration:none;color:var(--petale)}
.footer-nav a:hover,.site-footer address a:hover{color:#fff;text-decoration:underline;text-underline-offset:.25em}
.site-footer address{display:flex;flex-direction:column;font-style:normal;font-size:1rem}
.site-footer address p{color:#f2cfe0;margin-bottom:8px}
.footer-bottom{width:min(100%,var(--page));margin:48px auto 0;padding-top:20px;display:flex;flex-wrap:wrap;gap:8px 28px;border-top:1px solid rgba(217,180,90,.35);font-size:.9rem;color:#e8bfd2}
.footer-bottom a{text-decoration:none}
.footer-bottom a:hover{text-decoration:underline}

/* ---------- Petits écrans ---------- */
@media (max-width:860px){
  .hero-visual{width:min(86%,400px)}
  .medallion{right:-8%;bottom:6%}
  .medallion-left{left:-8%}
  .page-hero-visual{width:min(84%,380px)}
  .weddings-collage{width:min(92%,460px)}
}
@media (max-width:520px){
  body{font-size:1.06rem}
  .brand span{font-size:1.55rem}
  .brand img{width:44px}
  .site-header{gap:10px}
  .hero-actions .button{flex:1 1 100%}
  .announcement p{font-size:.8rem}
  .announcement .spark,.announcement span{display:none}
}
@media (max-width:380px){.brand span{display:none}}

/* Sur téléphone : les trois portes tiennent sur une ligne, les trésors défilent de côté. */
@media (max-width:640px){
  .doors{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
  .door-arch{padding:4px;margin-bottom:10px}
  .door-title{font-size:1.15rem}
  .door-copy{display:none}
  .treasure-row{grid-auto-flow:column;grid-auto-columns:74%;grid-template-columns:none;overflow-x:auto;scroll-snap-type:x mandatory;padding:8px 4px 16px;margin-inline:calc(var(--gutter)*-1);padding-inline:var(--gutter);scrollbar-width:thin}
  .treasure{scroll-snap-align:center}
  .atelier-strip{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:72%;overflow-x:auto;scroll-snap-type:x mandatory;margin-inline:calc(var(--gutter)*-1);padding:16px var(--gutter) 20px}
  .atelier-strip figure{scroll-snap-align:center}
}

/* ---------- Animations et transitions ---------- */
:root{--ease:cubic-bezier(.22,1,.36,1);--ease-pop:cubic-bezier(.34,1.56,.64,1)}

/* Survol : les cartes se soulèvent, les photos respirent. */
.product,.house-card,.plan-ticket,.service-list li,.contact-addresses address,.treasure-arch{transition:translate .35s ease,box-shadow .35s ease}
.product:hover,.house-card:hover,.service-list li:hover,.contact-addresses address:hover{translate:0 -6px;box-shadow:0 34px 56px -32px rgba(196,0,106,.5),inset 0 0 0 1px rgba(247,201,221,.7)}
.plan-ticket:hover{translate:0 -3px}
.treasure:hover .treasure-arch{translate:0 -6px}
.product-picture img,.portfolio-item img,.house-card img,.treasure-arch img{transition:scale .8s var(--ease)}
.product:hover .product-picture img,.portfolio-item:hover img,.house-card:hover img,.treasure:hover .treasure-arch img{scale:1.06}

/* Ouverture de page : le texte s'élève ligne à ligne, l'arche s'ouvre, le médaillon éclot. */
@keyframes rise{from{opacity:0;transform:translateY(30px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
@keyframes arch-open{from{opacity:0;transform:translateY(56px) scale(.94)}to{opacity:1;transform:none}}
@keyframes unveil{from{clip-path:inset(100% 0 0 0);scale:1.2}to{clip-path:inset(0 0 0 0);scale:1}}
@keyframes bloom{0%{opacity:0;transform:scale(.3) rotate(-25deg)}65%{opacity:1;transform:scale(1.08) rotate(4deg)}100%{opacity:1;transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}
.js-motion :is(.hero-copy,.page-hero-copy,.page-intro,.product-details)>*{animation:rise 1s var(--ease) backwards}
.js-motion :is(.hero-copy,.page-hero-copy,.page-intro,.product-details)>:nth-child(2){animation-delay:.1s}
.js-motion :is(.hero-copy,.page-hero-copy,.page-intro,.product-details)>:nth-child(3){animation-delay:.2s}
.js-motion :is(.hero-copy,.page-hero-copy,.page-intro,.product-details)>:nth-child(4){animation-delay:.3s}
.js-motion :is(.hero-copy,.page-hero-copy,.page-intro,.product-details)>:nth-child(5){animation-delay:.4s}
.js-motion :is(.hero-copy,.page-hero-copy,.page-intro,.product-details)>:nth-child(n+6){animation-delay:.5s}
.js-motion :is(.hero-visual,.page-hero-visual)>.arch-frame,.js-motion .product-visual{animation:arch-open 1.2s var(--ease) .15s backwards}
.js-motion :is(.hero-visual,.page-hero-visual,.product-visual) .arch img{animation:unveil 1.5s var(--ease) .3s backwards}
.js-motion .medallion{animation:bloom 1s var(--ease-pop) .9s backwards}
.js-motion .twinkles{animation:fade 1.2s ease 1.1s backwards}
.js-motion .breadcrumbs{animation:fade .8s ease backwards}
/* Grilles visibles dès l'arrivée (boutique, contact) : elles se posent en cascade. */
.js-motion main :is(.product-grid,.doors,.contact-addresses,.catalog-filters)>*{animation:rise .9s var(--ease) .25s backwards}
.js-motion main :is(.product-grid,.doors,.contact-addresses,.catalog-filters)>:nth-child(4n+2){animation-delay:.35s}
.js-motion main :is(.product-grid,.doors,.contact-addresses,.catalog-filters)>:nth-child(4n+3){animation-delay:.45s}
.js-motion main :is(.product-grid,.doors,.contact-addresses,.catalog-filters)>:nth-child(4n+4){animation-delay:.55s}

/* Au défilement : chaque bloc éclot en sortant d'un léger flou, les grilles suivent en cascade. */
.js-motion .reveal{opacity:0;transform:translateY(36px);filter:blur(6px);transition:opacity .9s var(--ease) calc(var(--i,0)*110ms),transform 1s var(--ease) calc(var(--i,0)*110ms),filter .9s var(--ease) calc(var(--i,0)*110ms),translate .35s ease,box-shadow .35s ease}
.js-motion .reveal.is-visible{opacity:1;transform:none;filter:none}
/* Les arches s'ouvrent comme une fenêtre de château : le cadre d'or monte, la photo se dévoile de bas en haut. */
.js-motion .reveal-arch{opacity:0;transform:translateY(48px) scale(.95);transition:opacity 1s var(--ease),transform 1.2s var(--ease)}
.js-motion .reveal-arch img{clip-path:inset(100% 0 0 0);scale:1.2;transition:clip-path 1.3s var(--ease) .2s,scale 1.8s var(--ease) .2s}
.js-motion .reveal-arch.is-visible{opacity:1;transform:none}
.js-motion .reveal-arch.is-visible img{clip-path:inset(0 0 0 0);scale:var(--repos,1)}

/* Profondeur : dans les arches, la photo glisse doucement pendant le défilement. */
@keyframes drift{from{translate:0 -4%}to{translate:0 4%}}
@supports (animation-timeline:view()){
  .js-motion main section:not(.hero):not(.page-hero):not(.product-page) .arch:not(.is-whole) img{--repos:1.1;scale:var(--repos);animation:drift linear both;animation-timeline:view();animation-range:entry 0% exit 100%}
  .js-motion main section:not(.hero):not(.page-hero):not(.product-page) .reveal-arch:not(.is-visible) .arch:not(.is-whole) img{scale:1.2}
}

/* Passage d'une partie à l'autre : les bords festonnés ondulent, les séparateurs dorés se dessinent. */
.js-motion .band::before,.js-motion .band::after{transition:background-position 1.8s var(--ease)}
.js-motion .band:not(.in-view)::before{background-position-x:128px}
.js-motion .band:not(.in-view)::after{background-position-x:-128px}
.divider{display:flex;align-items:center;justify-content:center;gap:18px;color:var(--or-clair);margin-block:clamp(4px,2vw,20px)}
.divider span{flex:0 1 180px;height:1px;background:linear-gradient(90deg,transparent,var(--or-clair));transform-origin:right}
.divider span:last-child{background:linear-gradient(90deg,var(--or-clair),transparent);transform-origin:left}
.divider .spark{width:20px;height:20px}
.js-motion .divider.reveal span{transform:scaleX(0);transition:transform 1.3s var(--ease) .25s}
.js-motion .divider.reveal .spark{transform:scale(0) rotate(-120deg);transition:transform 1s var(--ease-pop)}
.js-motion .divider.is-visible span,.js-motion .divider.is-visible .spark{transform:none}

/* Menus, fenêtres et notifications apparaissent au lieu de surgir. */
@keyframes drop{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
@keyframes pop-in{from{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:none}}
@keyframes toast-in{from{opacity:0;transform:translate(-50%,24px)}to{opacity:1;transform:translate(-50%,0)}}
.mobile-nav:not([hidden]){animation:drop .35s var(--ease)}
.mobile-nav:not([hidden])>*{animation:rise .5s var(--ease) backwards}
.mobile-nav:not([hidden])>:nth-child(2){animation-delay:.04s}
.mobile-nav:not([hidden])>:nth-child(3){animation-delay:.08s}
.mobile-nav:not([hidden])>:nth-child(4){animation-delay:.12s}
.mobile-nav:not([hidden])>:nth-child(5){animation-delay:.16s}
.mobile-nav:not([hidden])>:nth-child(6){animation-delay:.2s}
.mobile-nav:not([hidden])>:nth-child(7){animation-delay:.24s}
.nav-categories:not([hidden]){animation:drop .25s var(--ease)}
dialog[open]{animation:pop-in .45s var(--ease)}
dialog[open]::backdrop{animation:fade .35s ease}
.toast:not([hidden]){animation:toast-in .45s var(--ease)}
.email-fallback:not([hidden]),.subscription-request:not([hidden]){animation:pop-in .45s var(--ease)}
.subscription-plan,.size-choice label>span{transition:box-shadow .25s ease,background .25s ease,translate .25s ease}
.subscription-plan:hover,.size-choice label:hover>span{translate:0 -2px}

/* D'une page à l'autre : l'en-tête reste en place, le contenu se fond et remonte doucement. */
@view-transition{navigation:auto}
.announcement{view-transition-name:bandeau}
.site-header{view-transition-name:entete}
::view-transition-old(root){animation:vt-out .25s ease both}
::view-transition-new(root){animation:vt-in .55s var(--ease) both}
@keyframes vt-out{to{opacity:0;transform:translateY(-14px)}}
@keyframes vt-in{from{opacity:0;transform:translateY(22px)}}

/* ---------- Mouvement réduit ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
  .twinkles i{opacity:.8;transform:scale(.8)}
}
