/* Polices auto-hébergées (ex-Google Fonts) — servies depuis /assets/fonts, plus aucune requête tierce */
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:300;font-display:swap;src:url("/assets/fonts/cormorant-garamond-latin-300-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/cormorant-garamond-latin-400-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/cormorant-garamond-latin-600-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Cormorant Garamond";font-style:italic;font-weight:300;font-display:swap;src:url("/assets/fonts/cormorant-garamond-latin-300-italic.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Jost";font-style:normal;font-weight:300;font-display:swap;src:url("/assets/fonts/jost-latin-300-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Jost";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/jost-latin-400-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Jost";font-style:normal;font-weight:500;font-display:swap;src:url("/assets/fonts/jost-latin-500-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Jost";font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/jost-latin-600-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* Samantha Esthétique — feuille de style */
:root{
  --fuchsia:#C71F65; --fuchsia-fonce:#8E0F45; --fuchsia-clair:#F7E4EC;
  --violet:#6B2A8E; --violet-clair:#EDE3F5;
  --blanc:#FFFFFF; --gris:#F4F5F7; --gris-ligne:#E4E5EA; --gris-texte:#585866;
  --encre:#161219;
  --liseré:linear-gradient(120deg,#FFFFFF 0%,#F3D9E6 35%,#C9A6E0 70%,#FFFFFF 100%);
  --serif:"Cormorant Garamond",Georgia,serif;
  --sans:"Jost","Helvetica Neue",Arial,sans-serif;
  --ombre:0 18px 50px -28px rgba(22,18,25,.45);
  --enveloppe:1220px;
  --rose-liseré:rgba(199,31,101,.28);
  --rayon-image:14px;
}
[hidden]{display:none!important}   /* un élément masqué ne doit jamais intercepter un appui */

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--blanc);color:var(--encre);font-family:var(--sans);font-weight:300;font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3,h4{margin:0;font-weight:400;line-height:1.12}
p{margin:0 0 1em}
.enveloppe{width:min(100% - 2.5rem,var(--enveloppe));margin-inline:auto}
.saut-contenu{position:absolute;left:-9999px}
.saut-contenu:focus{left:1rem;top:1rem;z-index:99;background:var(--fuchsia);color:#fff;padding:.6rem 1rem;border-radius:4px}
:focus-visible{outline:2px solid var(--violet);outline-offset:3px}

/* ---------- typographie ---------- */
.h1,.h2,.h3{font-family:var(--serif)}
.h1{font-size:clamp(2.6rem,6vw,4.6rem);font-weight:300;letter-spacing:-.015em}
.h2{font-size:clamp(1.9rem,3.6vw,2.9rem);font-weight:300;margin-bottom:.5em}
.h3{font-size:clamp(1.35rem,2.2vw,1.75rem);font-weight:400}
.sur-titre{font-family:var(--sans);font-size:.72rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--fuchsia);margin:0 0 .9rem}
.chapeau{font-size:clamp(1.05rem,1.6vw,1.25rem);color:var(--gris-texte);max-width:62ch}

/* ---------- boutons ---------- */
.btn{display:inline-block;padding:.85rem 1.8rem;border-radius:100px;background:var(--fuchsia);color:#fff;text-decoration:none;font-size:.9rem;letter-spacing:.08em;text-transform:uppercase;font-weight:500;border:1px solid var(--fuchsia);transition:.25s}
.btn:hover{background:var(--fuchsia-fonce);border-color:var(--fuchsia-fonce);transform:translateY(-2px)}
.btn-ligne{background:transparent;color:var(--fuchsia)}
.btn-ligne:hover{background:var(--fuchsia);color:#fff}
.btn-clair{background:#fff;color:var(--fuchsia);border-color:#fff}
.btn-clair:hover{background:var(--fuchsia-clair);color:var(--fuchsia-fonce);border-color:var(--fuchsia-clair)}
.btn-ligne-clair{background:transparent;color:#fff;border-color:rgba(255,255,255,.6)}
.btn-ligne-clair:hover{background:#fff;color:var(--fuchsia)}
.btn-mini{font-size:.78rem;letter-spacing:.06em;text-decoration:none;padding:.35rem .9rem;border-radius:100px;border:1px solid var(--gris-ligne);transition:.2s}
.btn-mini:hover{border-color:var(--fuchsia);color:var(--fuchsia)}
.btn-mini-plein{background:var(--fuchsia);color:#fff;border-color:var(--fuchsia)}
.btn-mini-plein:hover{background:var(--fuchsia-fonce);color:#fff}

/* ---------- en-tête ---------- */
.entete{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-bottom:1px solid var(--gris-ligne)}
.entete-haut{background:var(--encre);color:#fff;font-size:.8rem}
.entete-haut-in{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.45rem 0;flex-wrap:wrap}
.etoiles{color:#F2C14E;letter-spacing:.08em}
.entete-actions{display:flex;align-items:center;gap:.65rem}
.entete-haut .btn-mini{border-color:rgba(255,255,255,.35);color:#fff}
.entete-haut .btn-mini:hover{border-color:#fff}
.lien-tel{text-decoration:none;letter-spacing:.06em}
.entete-in{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:.9rem 0}
.logo{text-decoration:none;display:flex;flex-direction:column;line-height:1}
.logo-nom{font-family:var(--serif);font-size:1.75rem;letter-spacing:.02em}
.logo-sub{font-size:.62rem;letter-spacing:.34em;text-transform:uppercase;color:var(--fuchsia);margin-top:.3rem}
.nav{display:flex;gap:.2rem;align-items:center;flex-wrap:wrap}
.nav-groupe{position:relative}
.nav-cat{display:inline-flex;align-items:center;gap:.3rem;padding:.55rem .7rem;text-decoration:none;font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;border-radius:4px;transition:.2s;white-space:nowrap}
.nav-cat:hover,.nav-cat.actif{color:var(--fuchsia)}
.nav-cat.actif{font-weight:500}
.fleche{width:5px;height:5px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.5}
.nav-groupe > .nav-cat:only-child .fleche{display:none}
.nav-sous{position:absolute;top:100%;left:0;min-width:270px;background:#fff;border:1px solid var(--gris-ligne);border-top:2px solid var(--fuchsia);box-shadow:var(--ombre);padding:.5rem 0;opacity:0;visibility:hidden;transform:translateY(8px);transition:.22s;z-index:70}
.nav-groupe:hover .nav-sous,.nav-groupe:focus-within .nav-sous{opacity:1;visibility:visible;transform:none}
.nav-sous a{display:block;padding:.5rem 1.1rem;text-decoration:none;font-size:.88rem;transition:.15s}
.nav-sous a:hover{background:var(--fuchsia-clair);color:var(--fuchsia-fonce);padding-left:1.4rem}
.burger{display:none;background:none;border:0;cursor:pointer;padding:.5rem;flex-direction:column;gap:5px}
.burger span{display:block;width:24px;height:1.5px;background:var(--encre);transition:.25s}

/* ---------- bandeau libre ---------- */
.bandeau-libre{background:var(--violet);color:#fff;text-align:center;font-size:.9rem}
.bandeau-libre p{margin:0;padding:.7rem 0}
.bandeau-libre a{color:#fff;margin-left:.6rem;text-underline-offset:3px}

/* ---------- hero ---------- */
.hero{position:relative;min-height:min(88vh,760px);display:flex;align-items:flex-end;overflow:hidden;background:var(--encre)}
.hero-media{position:absolute;inset:0;z-index:0}
.hero-media video,.hero-media img{width:100%;height:100%;object-fit:cover}
.hero-media img.kenburns{animation:kenburns 26s ease-in-out infinite alternate}
@keyframes kenburns{from{transform:scale(1) translate(0,0)}to{transform:scale(1.12) translate(-1.5%,-2%)}}
.hero::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(22,18,25,.35) 0%,rgba(22,18,25,.15) 35%,rgba(140,15,70,.55) 100%)}
.hero-texte{position:relative;z-index:2;color:#fff;padding:4rem 0 3.4rem;max-width:52rem}
.hero-texte .h1{color:#fff;text-shadow:0 2px 30px rgba(0,0,0,.35)}
.hero-texte p{color:rgba(255,255,255,.92);font-size:1.1rem;max-width:46rem;margin-top:1.2rem}
.hero-actions{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:2rem}
.hero-petit{min-height:min(56vh,460px);border-radius:0 0 var(--rayon-image) var(--rayon-image);border-bottom:2px solid var(--fuchsia)}
.hero{border-bottom:2px solid var(--fuchsia)}
.hero-petit .hero-texte{padding:3rem 0 2.4rem}

/* ---------- bande promos défilante ---------- */
.defilante{background:var(--encre);color:#fff;overflow:hidden;padding:.75rem 0;border-block:1px solid rgba(255,255,255,.08)}
.defilante-piste{display:flex;gap:3rem;width:max-content;animation:defile 42s linear infinite}
.defilante:hover .defilante-piste{animation-play-state:paused}
@keyframes defile{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.defilante a{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none;font-size:.86rem;letter-spacing:.05em;white-space:nowrap}
.defilante .puce{width:6px;height:6px;border-radius:50%;background:var(--fuchsia)}
.defilante .prix{color:#F2C14E}

/* ---------- sections ---------- */
.section{padding:clamp(3.5rem,7vw,6.5rem) 0}
.section-gris{background:var(--gris)}
.section-tete{margin-bottom:3rem}

/* grille de catégories : très grandes images + liseré */
.grille-cat{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.6rem}
.carte-cat{position:relative;display:block;text-decoration:none;overflow:hidden;border-radius:var(--rayon-image);aspect-ratio:4/5;background:var(--encre);padding:3px;background-image:var(--liseré)}
.carte-cat-in{position:relative;height:100%;overflow:hidden;background:var(--encre);border-radius:calc(var(--rayon-image) - 3px)}
.carte-cat img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s cubic-bezier(.2,.7,.3,1);opacity:.88}
.carte-cat:hover img{transform:scale(1.07);opacity:1}
.carte-cat-texte{position:absolute;inset:auto 0 0 0;padding:1.8rem 1.6rem;color:#fff;background:linear-gradient(180deg,transparent,rgba(22,18,25,.88))}
.carte-cat-texte h3{font-family:var(--serif);font-size:1.7rem}
.carte-cat-texte p{margin:.5rem 0 0;font-size:.9rem;color:rgba(255,255,255,.85)}
.carte-cat-texte .plus{display:inline-block;margin-top:.9rem;font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;border-bottom:1px solid var(--fuchsia);padding-bottom:2px}
.carte-cat.large{aspect-ratio:16/10;grid-column:span 2}
@media(max-width:800px){.carte-cat.large{grid-column:span 1;aspect-ratio:4/5}}

/* liste de soins */
.grille-soins{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.3rem}
.carte-soin{display:flex;flex-direction:column;text-decoration:none;background:#fff;border:1px solid var(--rose-liseré);border-radius:var(--rayon-image);transition:.3s;overflow:hidden}
.carte-soin:hover{border-color:var(--fuchsia);box-shadow:var(--ombre);transform:translateY(-4px)}
.carte-soin .vignette{aspect-ratio:3/2;overflow:hidden;background:var(--gris);border-bottom:1px solid var(--rose-liseré)}
.carte-soin .vignette img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.carte-soin:hover .vignette img{transform:scale(1.06)}
.carte-soin-in{padding:1.3rem 1.4rem 1.5rem;flex:1;display:flex;flex-direction:column}
.carte-soin h3{font-family:var(--serif);font-size:1.3rem;margin-bottom:.4rem}
.carte-soin p{font-size:.92rem;color:var(--gris-texte);flex:1}
.carte-soin .meta{display:flex;justify-content:space-between;align-items:center;gap:.6rem;margin-top:1rem;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--fuchsia)}
.etiquette-promo{display:inline-block;background:var(--fuchsia);color:#fff;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;padding:.2rem .6rem;border-radius:2px}

/* offres en encadrés illustrés */
.grille-offres{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.3rem}
.offre{position:relative;overflow:hidden;background:var(--encre);color:#fff;padding:3px;background-image:var(--liseré);border-radius:var(--rayon-image)}
.offre-in{position:relative;height:100%;background:var(--encre);padding:0;border-radius:calc(var(--rayon-image) - 3px);overflow:hidden}
.offre img{width:100%;aspect-ratio:3/2;object-fit:cover}
.offre-texte{padding:1.4rem 1.5rem 1.6rem}
.offre h3{font-family:var(--serif);font-size:1.35rem;color:#fff}
.offre .prix{font-size:2rem;font-family:var(--serif);color:#fff;display:block;margin:.4rem 0 .2rem}
.offre .barre{text-decoration:line-through;opacity:.6;font-size:1rem;margin-left:.5rem}
.offre .cond{font-size:.82rem;color:rgba(255,255,255,.7)}
.offre .eco{position:absolute;top:1rem;right:1rem;background:var(--fuchsia);padding:.3rem .7rem;font-size:.75rem;letter-spacing:.1em;z-index:2}

/* images de contenu isolées */
.soin-texte img,.aside img{border-radius:var(--rayon-image);border:1px solid var(--rose-liseré)}

/* ---------- page soin ---------- */
.soin-corps{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:3.5rem;align-items:start}
@media(max-width:960px){.soin-corps{grid-template-columns:1fr}}
.soin-texte h2{font-family:var(--serif);font-size:clamp(1.6rem,2.6vw,2.1rem);margin:2.6rem 0 .8rem;font-weight:300}
.soin-texte h2:first-child{margin-top:0}
.soin-texte ul{padding-left:1.1rem;color:var(--gris-texte)}
.soin-texte li{margin-bottom:.5rem}
.encart{border-left:2px solid var(--fuchsia);background:var(--fuchsia-clair);padding:1.3rem 1.5rem;margin:2rem 0}
.encart p:last-child{margin-bottom:0}
.aside{position:sticky;top:110px;border:1px solid var(--gris-ligne);padding:1.6rem}
.aside dl{margin:0 0 1.4rem}
.aside dt{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--fuchsia);margin-top:1rem}
.aside dd{margin:.25rem 0 0;font-size:.95rem}
.aside .btn{width:100%;text-align:center}

/* morphing avant / après */
.morph{position:relative;overflow:hidden;user-select:none;touch-action:none;aspect-ratio:3/2;background:var(--gris);padding:3px;background-image:var(--liseré);border-radius:var(--rayon-image)}
.morph-in{position:relative;height:100%;overflow:hidden;border-radius:calc(var(--rayon-image) - 3px)}
.morph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.morph .apres{clip-path:inset(0 0 0 50%)}
.morph-poignee{position:absolute;top:0;bottom:0;left:50%;width:2px;background:#fff;box-shadow:0 0 12px rgba(0,0,0,.4);z-index:3;cursor:ew-resize}
.morph-poignee::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:42px;height:42px;border-radius:50%;background:#fff;box-shadow:0 4px 18px rgba(0,0,0,.3)}
.morph-poignee::before{content:"↔";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:4;color:var(--fuchsia);font-size:1.1rem}
.morph-etiq{position:absolute;bottom:.8rem;z-index:2;background:rgba(22,18,25,.7);color:#fff;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;padding:.25rem .7rem}
.morph-etiq.g{left:.8rem}.morph-etiq.d{right:.8rem}

/* ---------- tarifs ---------- */
.tarifs-bloc{padding:clamp(3rem,6vw,5rem) 0;background:linear-gradient(180deg,#EFEFF3,#F7F5F7)}
.tarifs-sous-titre{font-family:var(--serif);font-size:1.4rem;margin:2rem 0 .8rem;font-weight:400}
.tarifs-defile{overflow-x:auto;border-radius:var(--rayon-image);
  box-shadow:0 2px 4px rgba(22,18,25,.06),0 12px 26px -16px rgba(199,31,101,.4)}
.tarifs-table{width:100%;border-collapse:collapse;background:#fff;font-size:.95rem;
  border:1px solid var(--rose-liseré);border-radius:var(--rayon-image);overflow:hidden}
.tarifs-grille{table-layout:fixed;min-width:520px}
.tarifs-table th,.tarifs-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--gris-ligne)}
.tarifs-table thead th{background:var(--encre);color:#fff;font-weight:500;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase}
.tarifs-table tbody th{font-weight:400}
/* colonnes de prix : largeur fixe, contenu et en-tête alignés à droite */
.tarifs-table td{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.tarifs-grille thead th + th{width:130px;text-align:right}
.tarifs-grille td{width:130px}
.tarifs-grille th:first-child{width:auto}
.tarifs-grille tbody th{word-break:break-word;white-space:normal}
.tarifs-table tbody tr:hover{background:var(--fuchsia-clair)}
.ligne-promo th{color:var(--fuchsia);font-weight:500}
.ligne-note{display:block;font-size:.8rem;color:var(--gris-texte)}
.tarifs-cartes{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.1rem}
.tarifs-carte{background:#fff;border:1px solid var(--rose-liseré);border-radius:var(--rayon-image);
  padding:1.1rem 1.3rem 1.2rem;display:flex;flex-direction:column;transition:.25s;
  box-shadow:0 2px 4px rgba(22,18,25,.06),0 10px 24px -14px rgba(199,31,101,.35)}
.tarifs-carte:hover{border-color:var(--fuchsia);transform:translateY(-4px);
  box-shadow:0 4px 8px rgba(22,18,25,.08),0 18px 34px -16px rgba(199,31,101,.55)}
.carte-promo{border-color:var(--fuchsia);border-width:2px;box-shadow:0 4px 10px rgba(199,31,101,.18),0 16px 30px -16px rgba(199,31,101,.5)}
.tc-nom{font-size:1rem;color:var(--encre);line-height:1.35}
.tc-note{font-size:.8rem;color:var(--gris-texte);margin-top:.2rem}
.tc-prix{margin-top:auto;padding-top:.8rem;font-family:var(--serif);font-size:1.75rem;font-weight:400;color:var(--fuchsia);
  border-top:1px solid var(--fuchsia-clair)}
.tarifs-note,.tarifs-pied{font-size:.86rem;color:var(--gris-texte);margin-top:1rem}
.tarifs-cta{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:2rem}
.ancres{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2.5rem}
.ancres a{text-decoration:none;font-size:.8rem;letter-spacing:.06em;padding:.4rem 1rem;border:1px solid var(--gris-ligne);border-radius:100px;transition:.2s}
.ancres a:hover{border-color:var(--fuchsia);color:var(--fuchsia)}

/* ---------- bloc rdv ---------- */
.bloc-rdv{background:linear-gradient(120deg,var(--fuchsia-fonce),var(--fuchsia) 55%,var(--violet));color:#fff;padding:clamp(3rem,6vw,4.5rem) 0}
.bloc-rdv-in{display:flex;align-items:center;justify-content:space-between;gap:2.5rem;flex-wrap:wrap}
.bloc-rdv .h2{color:#fff}
.bloc-rdv p{color:rgba(255,255,255,.9);max-width:52ch;margin:0}
.bloc-rdv-actions{display:flex;gap:.8rem;flex-wrap:wrap;margin:0}

/* ---------- formulaires ---------- */
.form{display:grid;gap:1rem;max-width:620px}
.champ{display:flex;flex-direction:column;gap:.35rem}
.champ label{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gris-texte)}
.champ input,.champ select,.champ textarea{font-family:inherit;font-size:1rem;padding:.75rem .9rem;border:1px solid var(--gris-ligne);background:#fff;border-radius:2px}
.champ input:focus,.champ select:focus,.champ textarea:focus{border-color:var(--fuchsia);outline:none}
.champ-case{flex-direction:row;align-items:flex-start;gap:.6rem}
.champ-case label{text-transform:none;letter-spacing:0;font-size:.9rem;color:var(--encre)}
.pot-de-miel{position:absolute;left:-9999px}
.message{padding:.9rem 1.2rem;border-left:3px solid var(--fuchsia);background:var(--fuchsia-clair);margin-bottom:1.5rem}
.message.erreur{border-color:#B3261E;background:#FCE8E6}
.message.ok{border-color:#1E7B4D;background:#E6F4EC}

/* ---------- réservation ---------- */
.etapes{display:flex;gap:.5rem;margin-bottom:2rem;flex-wrap:wrap}
.etape{flex:1;min-width:150px;padding:.7rem 1rem;border-top:2px solid var(--gris-ligne);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gris-texte)}
.etape.actif{border-color:var(--fuchsia);color:var(--fuchsia)}
.creneaux{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:.5rem}
.creneau{padding:.6rem;text-align:center;border:1px solid var(--gris-ligne);background:#fff;cursor:pointer;font-family:inherit;font-size:.95rem;transition:.2s;border-radius:2px}
.creneau:hover{border-color:var(--fuchsia);color:var(--fuchsia)}
.creneau.choisi{background:var(--fuchsia);color:#fff;border-color:var(--fuchsia)}
.jour-titre{font-family:var(--serif);font-size:1.2rem;margin:1.6rem 0 .7rem}

/* ---------- bot ---------- */
.bot-ouvrir{position:fixed;right:1.2rem;bottom:1.2rem;z-index:80;width:58px;height:58px;border-radius:50%;border:0;background:var(--fuchsia);color:#fff;font-size:1.5rem;cursor:pointer;box-shadow:0 10px 30px -8px rgba(199,31,101,.7);transition:.25s}
.bot-ouvrir:hover{transform:scale(1.06);background:var(--fuchsia-fonce)}
.bot-fenetre{position:fixed;right:1.2rem;bottom:5.4rem;z-index:81;width:min(380px,calc(100vw - 2.4rem));max-height:min(560px,70vh);background:#fff;border:1px solid var(--gris-ligne);box-shadow:var(--ombre);display:none;flex-direction:column;border-radius:6px;overflow:hidden}
.bot-fenetre.ouvert{display:flex}
.bot-tete{background:var(--encre);color:#fff;padding:.9rem 1.1rem;display:flex;justify-content:space-between;align-items:center}
.bot-tete strong{font-family:var(--serif);font-weight:400;font-size:1.05rem}
.bot-tete button{background:none;border:0;color:#fff;font-size:1.3rem;cursor:pointer;line-height:1}
.bot-fil{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.7rem}
.bot-msg{max-width:88%;padding:.6rem .9rem;border-radius:12px;font-size:.92rem;line-height:1.5}
.bot-msg.bot{background:var(--gris);border-bottom-left-radius:3px}
.bot-msg.moi{background:var(--fuchsia);color:#fff;align-self:flex-end;border-bottom-right-radius:3px}
.bot-liens{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}
.bot-liens a,.bot-sugg button{font-size:.78rem;padding:.35rem .8rem;border:1px solid var(--gris-ligne);border-radius:100px;background:#fff;text-decoration:none;cursor:pointer;font-family:inherit;transition:.2s}
.bot-liens a:hover,.bot-sugg button:hover{border-color:var(--fuchsia);color:var(--fuchsia)}
.bot-sugg{display:flex;flex-wrap:wrap;gap:.4rem;padding:0 1rem .6rem}
.bot-saisie{display:flex;border-top:1px solid var(--gris-ligne)}
.bot-saisie input{flex:1;border:0;padding:.85rem 1rem;font-family:inherit;font-size:.95rem}
.bot-saisie input:focus{outline:none}
.bot-saisie button{border:0;background:var(--fuchsia);color:#fff;padding:0 1.2rem;cursor:pointer;font-size:1.1rem}

/* ---------- pied ---------- */
.pied{background:var(--encre);color:rgba(255,255,255,.75);padding:4rem 0 1.5rem;font-size:.9rem}
.pied-in{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:2.5rem}
.pied a{text-decoration:none;transition:.2s}
.pied a:hover{color:#F195BE}
.pied .logo-nom{color:#fff;font-size:1.5rem;margin-bottom:.8rem}
.pied-titre{color:#fff;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;margin-bottom:.9rem}
.pied p{margin:0 0 .45rem}
.pied-reseaux{display:flex;gap:1rem;margin-top:1rem}
.pied-note{color:#F195BE;margin-top:.8rem}
.pied-bas{margin-top:3rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.12);font-size:.8rem;color:rgba(255,255,255,.5)}
.pied-mention{margin-top:.5rem;font-size:.75rem}

/* ---------- apparitions ---------- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.3,1)}
.reveal.vu{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .reveal{opacity:1;transform:none}
  .hero-media img.kenburns{animation:none}
}

/* ---------- mobile ---------- */
@media(max-width:1080px){
  .burger{display:flex}
  .nav{position:fixed;inset:0 0 0 auto;width:min(340px,86vw);background:#fff;flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:0;padding:5rem 0 2rem;transform:translateX(100%);transition:transform .3s;overflow-y:auto;overflow-x:hidden;box-shadow:var(--ombre);z-index:65}
  .nav.ouvert{transform:none}
  .nav-groupe{width:100%}
  .nav-cat{width:100%;justify-content:space-between;padding:.95rem 1.4rem;border-bottom:1px solid var(--gris-ligne);
    white-space:normal;overflow-wrap:anywhere;text-align:left;gap:.8rem}
  .nav-cat .fleche{flex:0 0 auto}
  .nav-sous a{white-space:normal;overflow-wrap:anywhere}
  .nav-sous{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;border-top:0;display:none;background:var(--gris);padding:.3rem 0}
  .nav-groupe.ouvert .nav-sous{display:block}
  .nav-groupe.ouvert .fleche{transform:rotate(-135deg) translateY(-2px)}
  body.menu-ouvert{overflow:hidden}
  .voile-menu{position:fixed;inset:0;background:rgba(22,18,25,.5);z-index:62}
}
@media(max-width:640px){
  body{font-size:16px}
  .entete-haut-in{justify-content:center;font-size:.75rem}
  .hero{min-height:78vh}
  .soin-corps{gap:2rem}
  .aside{position:static}
  .tarifs-table{font-size:.88rem}
  .tarifs-grille{min-width:440px}
  .tarifs-table th,.tarifs-table td{padding:.6rem .7rem}
  .tarifs-grille thead th + th,.tarifs-grille td{width:100px}
}

/* ---------- impression ---------- */
.impression-seule{display:none}
@media print{
  @page{size:A4 portrait;margin:12mm 11mm 14mm}

  /* tout ce qui n'a pas sa place sur une carte imprimée */
  .entete,.pied,.bot-ouvrir,.bot-fenetre,.bloc-rdv,.defilante,.bandeau-libre,.hero,.ancres,
  .tarifs-cta,.maillage,.section-encheres,.encadre-accueil,.saut-contenu,.voile-menu,
  .grille-cat,.grille-offres,.roue-voile,script,.btn,button,form,iframe,video{display:none!important}
  .impression-seule{display:block!important}

  *{box-shadow:none!important;text-shadow:none!important;animation:none!important;transition:none!important}
  html,body{background:#fff!important;color:#000;font-size:9.5pt;line-height:1.35}
  .enveloppe{width:100%!important;max-width:none!important;margin:0!important}
  .section,.tarifs-bloc{padding:0!important;background:#fff!important;margin:0}
  .reveal{opacity:1!important;transform:none!important}
  a{color:#000;text-decoration:none}
  a[href]:after{content:""}

  /* en-tête de la carte imprimée */
  .impression-entete{display:flex!important;justify-content:space-between;align-items:flex-end;
    border-bottom:2px solid #C71F65;padding-bottom:6pt;margin-bottom:10pt}
  .impression-entete h1{font-family:var(--serif);font-size:19pt;font-weight:400;margin:0}
  .impression-entete .ie-coord{text-align:right;font-size:8pt;line-height:1.5;color:#333}
  .impression-note{font-size:8pt;color:#333;margin:0 0 12pt;padding:5pt 7pt;border:1px solid #E4C4D4;background:#FBF3F7}

  /* titres de blocs */
  h2.h2,.tarifs-sous-titre{font-family:var(--serif);font-size:12pt;font-weight:400;color:#C71F65;
    margin:10pt 0 4pt;break-after:avoid;page-break-after:avoid}
  .section-tete,.chapeau{display:none}
  section[id]{margin-bottom:8pt!important}

  /* tableaux : en-tête répété en haut de chaque page, lignes jamais coupées */
  .tarifs-defile{overflow:visible!important;border-radius:0!important;border:0!important}
  .tarifs-table{border:1px solid #BBB!important;border-radius:0!important;font-size:8.5pt;
    min-width:0!important;page-break-inside:auto}
  .tarifs-table thead{display:table-header-group}
  .tarifs-table tr{page-break-inside:avoid}
  .tarifs-table th,.tarifs-table td{padding:2.5pt 5pt;border-bottom:1px solid #DDD}
  .tarifs-table thead th{background:#F0EDEF!important;color:#000!important;font-size:7pt;letter-spacing:.1em;
    -webkit-print-color-adjust:exact;print-color-adjust:exact}
  .tarifs-table tbody tr:hover{background:none!important}
  .ligne-promo th{color:#C71F65!important;font-weight:600}
  .ligne-note{font-size:7pt;color:#555}

  /* listes de prix en cartes : trois colonnes serrées */
  .tarifs-cartes{grid-template-columns:repeat(3,1fr)!important;gap:4pt!important}
  .tarifs-carte{border:1px solid #DDD!important;border-radius:0!important;padding:4pt 6pt!important;
    break-inside:avoid;page-break-inside:avoid}
  .tc-nom{font-size:8.5pt}
  .tc-note{font-size:7pt}
  .tc-prix{font-size:11pt;margin-top:3pt;padding-top:3pt;border-top:1px solid #EEE;color:#C71F65!important;
    -webkit-print-color-adjust:exact;print-color-adjust:exact}
  .tarifs-note,.tarifs-pied{font-size:7.5pt;color:#333;margin:3pt 0 0}
  .encart{border:1px solid #E4C4D4!important;background:#FBF3F7!important;padding:5pt 7pt;font-size:8pt;
    break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact}

  /* pages de soins et de protocoles imprimées proprement */
  .soin-corps{display:block!important}
  .aside{display:none}
  .soin-texte h2{font-size:11pt}
  .morph,.carte-soin,.grille-soins{display:none!important}
}

/* ---------- roue de la chance ---------- */
.roue-voile{position:fixed;inset:0;z-index:95;background:rgba(22,18,25,.72);display:flex;align-items:center;justify-content:center;padding:1.2rem;backdrop-filter:blur(3px)}
.roue-boite{position:relative;background:#fff;max-width:430px;width:100%;padding:2.2rem;text-align:center;border-radius:var(--rayon-image);box-shadow:var(--ombre);max-height:92dvh;overflow-y:auto;overflow-x:hidden}
.roue-fermer{position:absolute;top:.6rem;right:.9rem;background:none;border:0;font-size:1.6rem;cursor:pointer;color:var(--gris-texte);line-height:1}
.roue-texte{font-size:.9rem;color:var(--gris-texte)}
.roue-plateau{position:relative;width:min(280px,100%);aspect-ratio:1;margin:1.4rem auto;max-width:100%}
.roue-disque{width:100%;height:100%;border-radius:50%;border:6px solid #fff;box-shadow:0 0 0 3px var(--fuchsia),0 14px 40px -14px rgba(0,0,0,.5);overflow:hidden;background:var(--encre)}
.roue-disque svg{width:100%;height:100%;display:block}
.roue-aiguille{position:absolute;top:-6px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-top:20px solid var(--fuchsia);z-index:2}
.roue-form{display:grid;gap:.7rem;margin-top:1rem}
.roue-form input[type=email]{padding:.75rem .9rem;border:1px solid var(--gris-ligne);font-family:inherit;font-size:1rem}
.roue-case{display:flex;gap:.5rem;align-items:flex-start;font-size:.82rem;color:var(--gris-texte);text-align:left}
.roue-resultat{margin-top:1rem;padding:1rem;background:var(--fuchsia-clair);border-left:3px solid var(--fuchsia);text-align:left}

/* ---------- vente aux enchères en tête d'accueil ---------- */
.section-encheres{padding:clamp(2rem,4vw,3rem) 0 0}
.encart-enchere{display:grid;grid-template-columns:minmax(0,42%) minmax(0,1fr);align-items:stretch;
  border-radius:var(--rayon-image);overflow:hidden;margin-bottom:1.4rem;
  background:linear-gradient(130deg,var(--encre) 0%,#2E2440 55%,var(--fuchsia-fonce) 100%);
  box-shadow:0 6px 14px rgba(22,18,25,.12),0 28px 56px -26px rgba(199,31,101,.6)}
.ee-photo{display:block;position:relative;overflow:hidden;min-height:250px}
.ee-photo img{width:100%;height:100%;object-fit:cover;transition:transform 1s cubic-bezier(.2,.7,.3,1)}
.ee-photo:hover img{transform:scale(1.05)}
.ee-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 60%,rgba(46,36,64,.55))}
.ee-texte{padding:clamp(1.6rem,3vw,2.4rem);color:#fff;display:flex;flex-direction:column;justify-content:center}
.ee-etiquette{display:flex;align-items:center;gap:.5rem;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--fuchsia-clair);margin:0 0 .7rem}
.ee-point{width:8px;height:8px;border-radius:50%;background:var(--fuchsia);animation:battement 1.8s ease-in-out infinite}
.encart-enchere .h2{color:#fff;font-size:clamp(1.5rem,2.6vw,2.1rem);margin-bottom:.4rem}
.ee-desc{color:rgba(255,255,255,.82);font-size:.95rem;margin-bottom:1.2rem}
.ee-chiffres{display:flex;flex-wrap:wrap;gap:1.8rem;margin:.6rem 0 1.4rem}
.ee-chiffres > div{display:flex;flex-direction:column}
.ee-montant{font-family:var(--serif);font-size:2.6rem;line-height:1;color:#fff}
.ee-valeur{font-family:var(--serif);font-size:1.6rem;line-height:1.5;color:rgba(255,255,255,.6);text-decoration:line-through}
.ee-temps{font-family:var(--serif);font-size:1.6rem;line-height:1.5;color:#F2C14E;font-variant-numeric:tabular-nums;white-space:nowrap}
.ee-legende{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-top:.35rem}
.ee-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin:0}
.ee-info{font-size:.85rem;color:rgba(255,255,255,.72)}
@media(max-width:820px){
  .encart-enchere{grid-template-columns:1fr}
  .ee-photo{min-height:210px;aspect-ratio:16/9}
  .ee-photo::after{background:linear-gradient(180deg,transparent 55%,rgba(46,36,64,.6))}
  .ee-chiffres{gap:1.2rem}
  .ee-montant{font-size:2.1rem}
}
.nav-encheres{color:var(--fuchsia);font-weight:500}
.nav-encheres .pastille{width:7px;height:7px;border-radius:50%;background:var(--fuchsia);display:inline-block;margin-left:.4rem;animation:battement 1.8s ease-in-out infinite}
@keyframes battement{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}
a.entete-note{text-decoration:none;transition:.2s;border-bottom:1px solid transparent}
a.entete-note:hover{border-bottom-color:#F2C14E}

/* ---------- encadré vedette en haut de l'accueil ---------- */
.encadre-accueil{padding:clamp(2.5rem,5vw,4rem) 0 clamp(1.5rem,3vw,2.5rem)}
.encadre-vedette{margin:0 auto;text-align:center}
.ev-cadre{display:block;padding:3px;background-image:var(--liseré);border-radius:var(--rayon-image);
  box-shadow:0 4px 10px rgba(22,18,25,.08),0 22px 44px -22px rgba(199,31,101,.55)}
.ev-cadre img{width:100%;height:auto;display:block;border-radius:calc(var(--rayon-image) - 3px)}
.encadre-vedette figcaption{margin-top:1.6rem}
.encadre-vedette .h2{margin-bottom:.6rem}
.encadre-vedette p{color:var(--gris-texte);max-width:62ch;margin-inline:auto}
.ev-action{margin-top:1.4rem}

/* ---------- maillage interne et plan du site ---------- */
.maillage-colonnes{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;margin-top:2rem}
.maillage-groupe h3{font-family:var(--sans);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--fuchsia);margin-bottom:.9rem}
.maillage-groupe ul{list-style:none;margin:0;padding:0}
.maillage-groupe li{padding:.45rem 0;border-bottom:1px solid var(--gris-ligne)}
.maillage-groupe li:last-child{border-bottom:0}
.maillage-groupe a{text-decoration:none;font-size:.95rem;transition:.2s;display:inline-block}
.maillage-groupe a:hover{color:var(--fuchsia);transform:translateX(3px)}
.maillage-note{display:block;font-size:.8rem;color:var(--gris-texte)}
.plan-colonnes{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2.2rem;margin-top:2.5rem}
.plan-bloc h2{font-family:var(--serif);font-size:1.4rem;font-weight:400;margin-bottom:.4rem}
.plan-bloc h2 a{text-decoration:none}
.plan-bloc h2 a:hover{color:var(--fuchsia)}
.plan-intro{font-size:.88rem;color:var(--gris-texte);margin-bottom:.9rem}
.plan-sous{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--fuchsia);margin:.8rem 0 .4rem}
.plan-sous a{text-decoration:none}
.plan-bloc ul{list-style:none;margin:0;padding:0}
.plan-bloc li{padding:.35rem 0;border-bottom:1px solid var(--gris-ligne)}
.plan-bloc li:last-child{border-bottom:0}
.plan-bloc a{text-decoration:none;font-size:.93rem}
.plan-bloc a:hover{color:var(--fuchsia)}
.plan-note{font-size:.8rem;color:var(--gris-texte)}
.btn-langue{font-weight:500;letter-spacing:.12em}

/* ---------- invitation à installer l'application ---------- */
.invite-app{
  position:fixed;left:.7rem;right:.7rem;z-index:90;
  bottom:calc(.7rem + env(safe-area-inset-bottom, 0px));
  display:flex;align-items:center;gap:.8rem;
  background:rgba(255,255,255,.92);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);
  border:.5px solid rgba(0,0,0,.12);border-radius:18px;padding:.75rem .85rem;
  box-shadow:0 10px 34px -12px rgba(22,18,25,.4);
  transform:translateY(140%);transition:transform .45s cubic-bezier(.32,.72,0,1);
}
.invite-app.visible{transform:translateY(0)}
.ia-icone{width:44px;height:44px;border-radius:11px;flex:none}
.ia-texte{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1}
.ia-texte strong{font-size:.92rem;font-weight:500}
.ia-texte span{font-size:.76rem;color:var(--gris-texte);line-height:1.3}
.invite-app .btn-mini{flex:none;white-space:nowrap}
.ia-fermer{background:none;border:0;font-size:1.5rem;line-height:1;color:var(--gris-texte);cursor:pointer;padding:0 .1rem;flex:none}

.ia-fond{position:fixed;inset:0;z-index:96;background:rgba(22,18,25,.45);opacity:0;pointer-events:none;transition:opacity .25s}
.ia-fond.ouvert{opacity:1;pointer-events:auto}
.ia-guide{
  position:fixed;left:0;right:0;bottom:0;z-index:97;background:#fff;
  border-radius:22px 22px 0 0;padding:.6rem 1.3rem calc(1.6rem + env(safe-area-inset-bottom, 0px));
  transform:translateY(102%);pointer-events:none;transition:transform .35s cubic-bezier(.32,.72,0,1);
  box-shadow:0 -10px 44px rgba(0,0,0,.25);max-height:86dvh;overflow-y:auto;
}
.ia-guide.ouvert{transform:translateY(0);pointer-events:auto}
.ia-guide h2{font-family:var(--serif);font-size:1.5rem;font-weight:400;margin:.4rem 0 1.2rem;text-align:center}
.ia-etapes{list-style:none;margin:0 0 1.2rem;padding:0;display:grid;gap:.9rem}
.ia-etapes li{display:flex;align-items:center;gap:.8rem;font-size:.95rem;line-height:1.35}
.ia-num{width:28px;height:28px;border-radius:50%;background:var(--fuchsia);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:.85rem;flex:none}
.ia-etapes svg{color:var(--fuchsia);flex:none}
.ia-note{font-size:.85rem;color:var(--gris-texte);margin-bottom:1.2rem}
.ia-guide .btn{width:100%;text-align:center}
@media (min-width:760px){ .invite-app{left:auto;right:1.2rem;max-width:400px} }

/* ---------- espace cliente, conçu pour le téléphone ---------- */
.espace{display:grid;gap:.9rem}
.esp-rdv{
  display:grid;gap:.15rem;text-decoration:none;color:#fff;border-radius:18px;padding:1.3rem 1.4rem;
  background:linear-gradient(140deg,var(--encre),#2E2440 55%,var(--fuchsia-fonce));
  box-shadow:0 10px 28px -14px rgba(199,31,101,.65);
}
.esp-rdv-vide{background:linear-gradient(140deg,#3A3340,#5A4C63)}
.esp-etiquette{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--fuchsia-clair);
  display:flex;align-items:center;gap:.45rem}
.esp-point{width:8px;height:8px;border-radius:50%;background:var(--fuchsia);animation:battement 1.8s ease-in-out infinite}
.esp-date{font-size:.95rem;color:rgba(255,255,255,.85);margin-top:.35rem}
.esp-heure{font-family:var(--serif);font-size:2.4rem;line-height:1.05;font-variant-numeric:tabular-nums}
.esp-quoi{font-size:.95rem;color:rgba(255,255,255,.9);line-height:1.35;margin-top:.2rem}

.esp-tuiles{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem}
.esp-tuile{background:#fff;border:1px solid var(--rose-liseré);border-radius:16px;padding:1rem .7rem;
  text-align:center;display:flex;flex-direction:column;gap:.2rem;
  box-shadow:0 2px 4px rgba(22,18,25,.05),0 10px 22px -16px rgba(199,31,101,.4)}
.et-n{font-family:var(--serif);font-size:1.9rem;line-height:1;color:var(--fuchsia)}
.et-l{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gris-texte);line-height:1.25}
.et-sous{font-size:.72rem;color:var(--gris-texte)}

.esp-enchere{display:grid;gap:.4rem;text-decoration:none;border-radius:16px;padding:1.1rem 1.2rem;
  background:linear-gradient(130deg,#2E2440,var(--fuchsia-fonce));color:#fff}
.esp-enchere .ee-titre{font-family:var(--serif);font-size:1.2rem;line-height:1.25;color:#fff}
.esp-ligne{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap}
.esp-ligne strong{font-family:var(--serif);font-size:1.7rem;font-weight:400}
.esp-ligne em{font-style:normal;color:#F2C14E;font-variant-numeric:tabular-nums;font-size:.95rem}

.esp-alerte{background:var(--fuchsia-clair);border-radius:16px;padding:1.1rem 1.2rem}
.esp-alerte p{margin:0 0 .4rem;font-size:.9rem;line-height:1.4}
.esp-liens{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.esp-liens a{display:flex;align-items:center;gap:.65rem;text-decoration:none;color:var(--encre);
  background:#fff;border:1px solid var(--gris-ligne);border-radius:14px;padding:.9rem 1rem;
  font-size:.88rem;min-height:52px}
.esp-liens a span{color:var(--fuchsia);font-size:1.1rem;width:20px;text-align:center;flex:none}
.esp-liens a:active{background:var(--gris)}
@media (min-width:760px){ .esp-liens{grid-template-columns:repeat(3,1fr)} }
.esp-push{display:flex;align-items:center;gap:.9rem;width:100%;text-align:left;cursor:pointer;
  background:#fff;border:1px solid var(--rose-liseré);border-radius:16px;padding:1rem 1.1rem;
  box-shadow:0 2px 4px rgba(22,18,25,.05),0 10px 22px -16px rgba(199,31,101,.4);font:inherit}
.esp-push:active{transform:scale(.99);background:var(--gris)}
.esp-push.inactif{opacity:.62;cursor:default}
.ep-cloche{font-size:1.5rem;flex:none}
.ep-texte{display:flex;flex-direction:column;gap:.15rem}
.ep-texte strong{font-size:.95rem;font-weight:500;color:var(--encre)}
.ep-texte span{font-size:.8rem;color:var(--gris-texte);line-height:1.3}


/* ======================================================================
   Confort tactile — téléphones et tablettes
   ====================================================================== */
@media (max-width: 1024px){
  /* Sous 16 px, Safari agrandit la page dès qu'on touche un champ, et il faut
     repincer l'écran pour revenir. C'est l'irritant numéro un des formulaires. */
  input,select,textarea{font-size:16px!important}

  /* Apple recommande 44 px de côté minimum pour une cible tactile. */
  .btn,button,select,.nav-cat,.pied a,.maillage-groupe a,.plan-bloc a{min-height:44px}
  .btn,button{display:inline-flex;align-items:center;justify-content:center}
  .btn-mini{min-height:38px}
  .champ-case input[type=checkbox],.champ-case input[type=radio]{width:24px;height:24px;min-height:24px}

  /* Espacement des listes de liens : on ne doit pas viser entre deux lignes. */
  .maillage-groupe li,.plan-bloc li{padding:.6rem 0}
}

/* L'assistant et la pastille restent au-dessus de la barre gestuelle. */
.bot-ouvrir{bottom:calc(1.2rem + env(safe-area-inset-bottom, 0px))!important}
.bot-fenetre{bottom:calc(5rem + env(safe-area-inset-bottom, 0px))!important}

/* Couleur de la barre d'état selon le thème du téléphone. */
@media (prefers-color-scheme: dark){
  .hero,.encart-enchere,.section-encheres{color-scheme:dark}
}


/* Tablettes : l'espace cliente s'étale au lieu d'empiler bêtement. */
@media (min-width: 700px) and (max-width: 1024px){
  .espace{grid-template-columns:1fr 1fr;align-items:start}
  .esp-rdv,.esp-tuiles,.esp-push{grid-column:1 / -1}
  .esp-liens{grid-template-columns:repeat(3,1fr)}
}


/* ======================================================================
   Application installée : il n'y a plus de barre Safari au-dessus.
   Sans ces marges, la bande noire du haut passe SOUS l'îlot dynamique
   et le bouton du menu devient intouchable — on croit qu'il ne marche pas.
   ====================================================================== */
@media (display-mode: standalone), (display-mode: minimal-ui){
  .entete-haut{padding-top:env(safe-area-inset-top, 0px)}
  .entete{top:0}
  .enveloppe{
    padding-left:max(1.2rem, env(safe-area-inset-left));
    padding-right:max(1.2rem, env(safe-area-inset-right));
  }
  .nav{padding-top:calc(5rem + env(safe-area-inset-top, 0px))}
  .burger{position:relative;z-index:70}
}
/* Safari sur iPhone en mode plein écran ancienne façon */
@supports (-webkit-touch-callout: none){
  @media (display-mode: standalone){
    body{min-height:100dvh}
  }
}

/* Le bouton du menu doit rester une cible confortable, jamais recouverte. */
@media(max-width:1080px){
  .burger{min-width:44px;min-height:44px;display:flex;flex-direction:column;
    justify-content:center;align-items:center;gap:5px;padding:0;position:relative;z-index:70}
  .burger span{display:block;width:22px;height:2px;background:currentColor;border-radius:2px;
    transition:transform .25s, opacity .25s}
  .burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .burger[aria-expanded="true"] span:nth-child(2){opacity:0}
  .burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  /* la croix doit rester visible par-dessus le panneau ouvert */
  body.menu-ouvert .entete{z-index:70}
}


/* La roue sur petit écran : on rend l'espace au plateau plutôt qu'aux marges. */
@media (max-width: 480px){
  .roue-voile{padding:.7rem;align-items:flex-end}
  .roue-boite{padding:1.6rem 1.1rem calc(1.6rem + env(safe-area-inset-bottom, 0px));
    border-radius:20px 20px 0 0;max-height:94dvh}
  .roue-plateau{width:min(300px,100%);margin:1.1rem auto}
  .roue-boite .h2{font-size:1.6rem}
  .roue-boite .btn{width:100%}
}


/* ======================================================================
   Menu mobile — correction du référentiel de position.
   `.entete` porte un backdrop-filter, ce qui en fait le référentiel de
   ses descendants en position:fixed. Le panneau de navigation se
   retrouvait alors calé sur l'en-tête au lieu de l'écran : coincé en
   haut à droite, de la hauteur de l'en-tête. On retire l'effet de flou
   sous 1080 px, là où le menu est un panneau plein écran.
   ====================================================================== */
@media(max-width:1080px){
  .entete{
    -webkit-backdrop-filter:none!important;
    backdrop-filter:none!important;
    filter:none!important;
    background:#fff;
  }
  .nav{
    top:0!important;right:0!important;bottom:auto!important;left:auto!important;
    height:100dvh;max-height:100dvh;
    width:min(340px,86vw);
    padding-top:calc(4.5rem + env(safe-area-inset-top, 0px));
    padding-bottom:calc(2rem + env(safe-area-inset-bottom, 0px));
  }
  body.menu-ouvert{overflow:hidden;position:relative}
  .voile-menu{z-index:64}
  .nav{z-index:66}
  body.menu-ouvert .entete{z-index:67}
}


/* Filet de sécurité : aucun élément ne doit pouvoir faire glisser la page
   latéralement. `clip` coupe le débordement sans casser les en-têtes collants,
   contrairement à `hidden`. */
html{overflow-x:clip}
body{overflow-x:clip;max-width:100%}
@supports not (overflow:clip){
  html,body{overflow-x:hidden}
}
.defilante{overflow:hidden}

/* ------------------------------------------------ annonces et pastilles */
.annonce-encadre{padding:2.2rem 0 0}
.annonce-carte{position:relative;border-radius:18px;padding:2.3rem 2.4rem;border:5px solid transparent;background:linear-gradient(165deg,#F6CFE1 0%,#FBE7F0 42%,#FFFFFF 100%) padding-box,linear-gradient(120deg,var(--fuchsia) 0%,#E289B5 45%,var(--violet) 100%) border-box;box-shadow:0 26px 60px -18px rgba(142,15,69,.5),0 10px 24px -8px rgba(107,42,142,.28);text-align:center}
.annonce-carte h2{font-family:var(--serif);font-size:clamp(1.6rem,3.4vw,2.4rem);margin:.5rem 0 .4rem;color:var(--encre)}
.annonce-carte p{max-width:640px;margin:0 auto .9rem;color:var(--gris-texte)}
.annonce-badge{display:inline-block;font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;padding:.32rem .85rem;border-radius:100px;background:var(--fuchsia);color:#fff}
.genre-nouveaute .annonce-badge{background:var(--violet)}
.genre-info .annonce-badge{background:var(--encre)}
.annonce-carte .bouton-plein{display:inline-block;background:var(--fuchsia);color:#fff;border-radius:100px;padding:.65rem 1.6rem;font-weight:600;text-decoration:none;transition:.2s}
.annonce-carte .bouton-plein:hover{background:var(--fuchsia-fonce)}
.genre-nouveaute .bouton-plein{background:var(--violet)}
.annonce-echeance{display:block;margin-top:.7rem;font-size:.82rem;color:var(--gris-texte);letter-spacing:.04em}

.annonce-pastille{position:fixed;left:1.2rem;bottom:1.2rem;z-index:79;display:flex;align-items:center;gap:.2rem;background:#fff;border:1px solid var(--rose-liseré);border-radius:100px;box-shadow:0 12px 34px -12px rgba(142,15,69,.5);max-width:min(340px,calc(100vw - 6.5rem));animation:pastille-entree .45s ease}
.annonce-pastille + .annonce-pastille{bottom:4.6rem}
.annonce-pastille a{display:flex;align-items:center;gap:.55rem;padding:.55rem .35rem .55rem .55rem;text-decoration:none;color:var(--encre);font-size:.88rem;font-weight:500;line-height:1.25}
.annonce-pastille .ap-badge{flex:0 0 auto;font-size:.62rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;background:var(--fuchsia);color:#fff;border-radius:100px;padding:.3rem .6rem}
.annonce-pastille.genre-nouveaute .ap-badge{background:var(--violet)}
.annonce-pastille.genre-info .ap-badge{background:var(--encre)}
.annonce-pastille .ap-fermer{flex:0 0 auto;border:0;background:none;color:var(--gris-texte);font-size:1.05rem;padding:.4rem .7rem .4rem .2rem;cursor:pointer;line-height:1}
.annonce-pastille .ap-fermer:hover{color:var(--fuchsia)}
@keyframes pastille-entree{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
@media (max-width:640px){.annonce-carte{padding:1.5rem 1.2rem}.annonce-pastille{left:.7rem;bottom:.9rem}}

/* ---------------------------------------------- images des pages libres */
figure.pl-image{margin:1.6rem auto;text-align:center;max-width:720px}
figure.pl-image img{max-width:100%;height:auto;border-radius:var(--rayon-image);box-shadow:var(--ombre)}
figure.pl-image a img{transition:transform .3s ease,box-shadow .3s ease}
figure.pl-image a:hover img{transform:scale(1.015);box-shadow:0 24px 60px -22px rgba(142,15,69,.5)}
figure.pl-image figcaption{margin-top:.55rem;font-size:.85rem;color:var(--gris-texte);letter-spacing:.02em}

/* ------------------------------------ texte de présentation de catégorie */
.cat-presentation h2{margin-bottom:1rem}
.cat-presentation p{color:var(--gris-texte);margin-bottom:1rem;line-height:1.75}

/* accents de texte enrichi */
.tr-fuchsia{color:var(--fuchsia)}
.tr-violet{color:var(--violet)}

/* titres saisis dans les textes enrichis */
h2:not([class]){font-family:var(--serif);font-size:clamp(1.5rem,2.4vw,1.9rem);margin:2.2rem 0 .7rem;font-weight:300}
h3:not([class]){font-family:var(--serif);font-size:clamp(1.2rem,2vw,1.45rem);margin:1.8rem 0 .5rem;font-weight:400;color:var(--encre)}
.tr-blanc{color:#FFFFFF}
.tr-noir{color:var(--encre)}

/* --------------------------- vitrine duo : annonce + enchère côte à côte */
.duo-vitrine{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem;align-items:stretch}
.duo-vitrine .annonce-carte{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}
.encart-enchere.compact{grid-template-columns:1fr;margin-bottom:0;height:100%}
.encart-enchere.compact .ee-photo{aspect-ratio:16/9;min-height:0}
.encart-enchere.compact .ee-photo::after{background:linear-gradient(180deg,transparent 55%,rgba(46,36,64,.6))}
.encart-enchere.compact .ee-texte{padding:1.4rem 1.6rem}
.encart-enchere.compact .h2{font-size:clamp(1.2rem,1.8vw,1.5rem)}
.encart-enchere.compact .ee-montant{font-size:2rem}
.encart-enchere.compact .ee-chiffres{gap:1.2rem;margin:.4rem 0 1rem}
@media (max-width:900px){.duo-vitrine{grid-template-columns:1fr}}

/* Menu mobile ouvert : les éléments flottants (bot, pastilles d'annonce,
   invitation à installer l'app) ne doivent ni le recouvrir ni intercepter
   les taps — ils réapparaissent à la fermeture. */
/* Menu ouvert : l'en-tête (empilé au-dessus du panneau pour garder le X
   accessible) laisse passer les taps vers le menu situé dessous. */
body.menu-ouvert .entete{pointer-events:none}
body.menu-ouvert .entete [data-burger]{pointer-events:auto}
body.menu-ouvert .bot-ouvrir,
body.menu-ouvert .bot-fenetre,
body.menu-ouvert .annonce-pastille,
body.menu-ouvert .invite-app{opacity:0;pointer-events:none}

/* --- assistant : teaser, actions, rappel --- */
.bot-teaser{position:fixed;right:1.2rem;bottom:5.6rem;z-index:80;display:flex;align-items:center;gap:.55rem;background:#fff;border:1px solid var(--gris-ligne);border-radius:14px 14px 2px 14px;box-shadow:0 12px 34px -10px rgba(20,20,30,.35);padding:.65rem .6rem .65rem .95rem;font-size:.92rem;color:var(--encre);opacity:0;transform:translateY(8px);transition:.35s;cursor:pointer;max-width:min(260px,70vw)}
.bot-teaser.visible{opacity:1;transform:none}
.bot-teaser button{border:0;background:transparent;font-size:1.05rem;line-height:1;color:#98A0AF;cursor:pointer;padding:.15rem .3rem}
.bot-teaser button:hover{color:var(--encre)}
.bot-actions{display:flex;gap:.5rem;padding:.55rem .7rem .7rem;border-top:1px solid var(--gris-ligne);background:#fff}
.bot-actions a.bot-wa,.bot-actions .bot-rappel-btn{flex:1;text-align:center;font-size:.83rem;font-weight:600;padding:.5rem .4rem;border-radius:100px;cursor:pointer;text-decoration:none}
.bot-actions a.bot-wa{background:#25D366;color:#fff;border:0}
.bot-actions a.bot-wa:hover{background:#1EBE58}
.bot-actions .bot-rappel-btn{background:#fff;color:var(--fuchsia);border:1.5px solid var(--fuchsia)}
.bot-actions .bot-rappel-btn:hover{background:var(--fuchsia);color:#fff}
.bot-rappel{display:flex;flex-direction:column;gap:.45rem;position:relative}
.bot-rappel label{font-size:.8rem;color:#6A7180}
.bot-rappel input[type=tel]{font:inherit;padding:.5rem .6rem;border:1px solid var(--gris-ligne);border-radius:6px}
.bot-rappel button{font:inherit;font-weight:600;background:var(--fuchsia);color:#fff;border:0;border-radius:100px;padding:.5rem;cursor:pointer}
.bot-liens a.bot-wa{background:#25D366;color:#fff;border-radius:100px;padding:.35rem .7rem}
.btn-compte{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--fuchsia);color:var(--fuchsia);white-space:nowrap}
.btn-compte:hover{background:var(--fuchsia);color:#fff}
@media (max-width:640px){
  .entete-actions .lien-tel{white-space:nowrap}
  .btn-compte{padding:.42rem;border-radius:50%}
  .btn-compte svg{width:15px;height:15px}
  .btn-compte .btn-compte-txt{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
}
.annonce-carte-image{padding:0;overflow:hidden;border:0;background:transparent}
.annonce-carte-image img{display:block;width:100%;height:auto;border-radius:inherit}
.annonce-carte-image a{display:block;line-height:0}
/* vitrine : l'annonce + 1 à 3 ventes en cours */
.vitrine-n3{grid-template-columns:repeat(3,1fr)}
.vitrine-n4{grid-template-columns:repeat(2,1fr)}
.vitrine-n3 .encart-enchere.compact .ee-texte,.vitrine-n4 .encart-enchere.compact .ee-texte{padding:1.1rem 1.2rem}
.vitrine-n3 .encart-enchere.compact .ee-montant,.vitrine-n4 .encart-enchere.compact .ee-montant{font-size:1.6rem}
.vitrine-n3 .encart-enchere.compact .h2{font-size:clamp(1.05rem,1.4vw,1.25rem)}
@media (max-width:1080px){.vitrine-n3{grid-template-columns:1fr 1fr}.vitrine-n3 .annonce-carte{grid-column:1/-1}}
@media (max-width:900px){.vitrine-n3,.vitrine-n4{grid-template-columns:1fr}.vitrine-n3 .annonce-carte{grid-column:auto}}
