/* =============================================================
   PoolConcept — SPAS (fiche produit, template flexible)
   Même design system (noir + or champagne, Fraunces / Manrope / Pinyon).
   Sections optionnelles : 3D, vidéo néon, jour/nuit, tableau technique.
   Chaque section ne s'affiche que si le modèle a la donnée.
   ============================================================= */
:root{
  --noir:#0A0A0B; --noir-2:#111113; --noir-3:#17171A;
  --ivoire:#ECE8E1; --gris:#8C8C90;
  --or:#C2A36B; --or-clair:#D8BE8C;
  --hair:rgba(236,232,225,.12); --hair-or:rgba(194,163,107,.34);
  --serif:"Fraunces", Georgia, serif;
  --sans:"Manrope", system-ui, sans-serif;
  --script:"Pinyon Script", cursive;
  --ease:cubic-bezier(.22,.61,.36,1); --slow:cubic-bezier(.16,1,.3,1);
  --wrap:1280px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--noir);color:var(--ivoire);font-family:var(--sans);font-weight:300;line-height:1.6;
  -webkit-font-smoothing:antialiased;overflow-x:hidden}
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:clamp(1.2rem,4vw,3rem)}
.script{font-family:var(--script);font-weight:400;color:var(--or-clair)}
.eyebrow{font-size:.68rem;letter-spacing:.28em;text-transform:uppercase;color:var(--or)}
.sec{padding-block:clamp(3.4rem,8.5vh,6rem)}
.sec-head{margin-bottom:clamp(1.8rem,4.5vh,2.8rem)}
.sec-head h2{font-family:var(--serif);font-weight:300;font-size:clamp(1.8rem,4.2vw,3rem);line-height:1.1}
.lede{color:var(--gris);max-width:64ch;margin-top:1rem}
.reveal{opacity:0;transform:translateY(20px);transition:opacity .9s var(--ease),transform .9s var(--slow)}
.reveal.in{opacity:1;transform:none}
.reveal[data-d="1"]{transition-delay:.1s}.reveal[data-d="2"]{transition-delay:.2s}
[hidden]{display:none!important}

/* ---------- HERO ---------- */
.s-hero{position:relative;min-height:min(82vh,700px);display:flex;align-items:flex-end;overflow:hidden}
.s-hero .ph{position:absolute;inset:0;z-index:0}
.s-hero .ph img{width:100%;height:100%;object-fit:cover;filter:brightness(.8);transform:scale(1.05);
  transition:transform 2.2s var(--slow)}
body.ready .s-hero .ph img{transform:scale(1)}
.s-hero .veil{position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(10,10,11,.18) 0%,rgba(10,10,11,.45) 50%,rgba(10,10,11,.9) 100%)}
.s-hero .inner{position:relative;z-index:2;width:100%;padding-bottom:clamp(2.2rem,6vh,3.6rem)}
.s-hero .fil{font-size:.7rem;letter-spacing:.14em;color:var(--gris);margin-bottom:1rem}
.s-hero .fil a{color:var(--gris);text-decoration:none}.s-hero .fil a:hover{color:var(--or-clair)}
.s-hero .gamme{font-size:.66rem;letter-spacing:.24em;text-transform:uppercase;color:var(--or)}
.s-hero h1{font-family:var(--serif);font-weight:300;font-size:clamp(2.3rem,6vw,4.6rem);line-height:1.02;margin-top:.5rem;
  opacity:0;transform:translateY(16px);transition:opacity 1s var(--ease) .35s,transform 1s var(--slow) .35s}
body.ready .s-hero h1{opacity:1;transform:none}
.s-hero .tag{margin-top:.9rem;color:var(--gris);max-width:60ch;
  opacity:0;transform:translateY(12px);transition:opacity 1s var(--ease) .55s,transform 1s var(--slow) .55s}
body.ready .s-hero .tag{opacity:1;transform:none}
.s-hero .specs{display:flex;flex-wrap:wrap;gap:1rem 2rem;margin-top:1.6rem;
  opacity:0;transform:translateY(12px);transition:opacity 1s var(--ease) .75s,transform 1s var(--slow) .75s}
body.ready .s-hero .specs{opacity:1;transform:none}
.s-hero .specs .k{font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gris)}
.s-hero .specs .v{font-family:var(--serif);font-size:1.2rem;color:var(--ivoire)}

/* ---------- Présentation : vidéo néon en split gauche/droite ---------- */
.s-split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.6rem,4vw,3.2rem);align-items:center}
.s-split.rev{direction:rtl}.s-split.rev>*{direction:ltr}
@media (max-width:820px){.s-split{grid-template-columns:1fr}.s-split.rev{direction:ltr}}
.s-split .media{position:relative;border:1px solid var(--hair);background:var(--noir-2);overflow:hidden;
  aspect-ratio:16/10}
.s-split .media video,.s-split .media img{width:100%;height:100%;object-fit:cover;display:block}
.s-split .txt p{color:var(--gris);margin-bottom:1rem}
.s-split .txt p:first-child{color:var(--ivoire);font-family:var(--serif);font-size:clamp(1.1rem,2vw,1.4rem);
  font-weight:300;line-height:1.5}

/* ---------- Modèle 3D (model-viewer) ---------- */
.s-3d{border:1px solid var(--hair-or);background:radial-gradient(120% 100% at 50% 0%,#1a1a1e 0%,var(--noir-2) 70%);
  padding:clamp(1rem,2.4vw,1.8rem)}
.s-3d #s3dHolder{width:100%;height:min(60vh,460px);position:relative;background:#0f0f12}
.s-3d model-viewer{width:100%;height:100%;--poster-color:transparent;background:transparent}
.s-3d model-viewer::part(default-progress-bar){background:var(--or)}
.s-3d .hint{text-align:center;margin-top:.8rem;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gris)}

/* ---------- Jour / Nuit : ligne qui se déplace toute seule (comme rénovation) ---------- */
.s-daynight{position:relative;border:1px solid var(--hair);overflow:hidden;aspect-ratio:16/9;user-select:none}
.s-daynight img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.s-daynight .night{z-index:1}
.s-daynight .day{z-index:2;clip-path:inset(0 50% 0 0);will-change:clip-path}
.s-daynight .line{position:absolute;top:0;bottom:0;left:50%;width:2px;z-index:3;
  background:linear-gradient(180deg,transparent,var(--or-clair),transparent);transform:translateX(-1px);will-change:left}
.s-daynight .line::after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%);
  border:1px solid var(--or-clair);border-radius:50%;background:rgba(10,10,11,.4);backdrop-filter:blur(2px)}
.s-daynight .tag{position:absolute;top:1rem;z-index:4;font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ivoire);background:rgba(10,10,11,.45);padding:.3rem .7rem;backdrop-filter:blur(2px)}
.s-daynight .tag.j{left:1rem}.s-daynight .tag.n{right:1rem}

/* ===========================================================
   TABLEAU TECHNIQUE — 2 colonnes, inversion au survol
   =========================================================== */
.tech-sec{background:var(--noir-2);border-block:1px solid var(--hair)}
.tech-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(2rem,5vw,4.5rem)}
@media (max-width:820px){.tech-grid{grid-template-columns:1fr;gap:0}}
.tech-col{display:flex;flex-direction:column}
.tech-row{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;padding:.95rem 1rem;
  border-bottom:1px solid var(--hair);position:relative;cursor:default;
  transition:background-color .28s var(--ease),color .28s var(--ease),padding-left .28s var(--ease)}
.tech-row:first-child{border-top:1px solid var(--hair)}
@media (max-width:820px){.tech-col:not(:first-child) .tech-row:first-child{border-top:0}}
.tech-row .k{font-size:.78rem;letter-spacing:.13em;text-transform:uppercase;color:var(--gris);white-space:nowrap;
  transition:color .28s var(--ease)}
.tech-row .v{font-family:var(--serif);font-weight:400;font-size:clamp(.98rem,1.5vw,1.16rem);color:var(--ivoire);
  text-align:right;transition:color .28s var(--ease)}
.tech-row:hover{background:var(--or);color:var(--noir);padding-left:1.5rem}
.tech-row:hover .k{color:rgba(10,10,11,.72)}.tech-row:hover .v{color:var(--noir)}
.tech-row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--or-clair);
  transform:scaleY(0);transition:transform .28s var(--ease)}
.tech-row:hover::before{transform:scaleY(1)}

/* ---------- Caractéristiques (atouts) ---------- */
.s-atouts{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1.2rem,2.6vw,2.2rem)}
@media (max-width:760px){.s-atouts{grid-template-columns:1fr}}
.s-atout{padding-top:1.3rem;border-top:1px solid var(--hair);position:relative}
.s-atout::after{content:"";position:absolute;top:0;left:0;height:1px;width:0;background:var(--or);transition:width 1.1s var(--slow)}
.s-atout.in::after{width:40%}
.s-atout h3{font-family:var(--serif);font-weight:300;font-size:clamp(1.1rem,2vw,1.45rem);margin-bottom:.5rem}
.s-atout p{color:var(--gris);font-size:.95rem}

/* ---------- Galerie ---------- */
.s-gal{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(.6rem,1.2vw,1rem)}
@media (max-width:760px){.s-gal{grid-template-columns:repeat(2,1fr)}}
.s-gal .pc-gitem{aspect-ratio:1/1}

/* ---------- Garantie Platinum ---------- */
.s-gar{background:var(--noir-2);border:1px solid var(--hair-or);padding:clamp(1.8rem,4vw,3rem)}
.s-gar h3{font-family:var(--serif);font-weight:300;font-size:clamp(1.4rem,2.8vw,2rem);margin-bottom:.9rem}
.s-gar p{color:var(--gris);max-width:64ch}
.s-gar ul{list-style:none;margin-top:1.4rem;display:flex;flex-wrap:wrap;gap:.7rem}
.s-gar li{border:1px solid var(--hair-or);padding:.6rem 1.1rem;font-size:.78rem;letter-spacing:.1em;color:var(--or-clair)}

/* ---------- Autres spas : carrousel ---------- */
.autres-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem}
.autres-nav{display:flex;gap:.5rem;flex:0 0 auto}
.autres-nav .ar{width:44px;height:44px;border:1px solid var(--hair);background:var(--noir-2);color:var(--ivoire);
  font-size:1.3rem;line-height:1;cursor:pointer;transition:.3s var(--ease)}
.autres-nav .ar:hover{border-color:var(--or);background:var(--or);color:var(--noir)}
.autres{--gap:clamp(.7rem,1.4vw,1.1rem);display:flex;gap:var(--gap);overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:none;-ms-overflow-style:none;scroll-behavior:smooth;margin-top:1.6rem}
.autres::-webkit-scrollbar{display:none}
.autre{flex:0 0 calc((100% - 3*var(--gap))/4);scroll-snap-align:start;padding:1.2rem;border:1px solid var(--hair);
  background:var(--noir-2);text-decoration:none;color:var(--ivoire);transition:.32s var(--ease)}
.autre:hover{background:var(--noir-3);border-color:var(--hair-or)}
.autre .k{font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--or)}
.autre h4{font-family:var(--serif);font-weight:300;font-size:1.05rem;margin-top:.5rem}
.autre .go{margin-top:.8rem;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gris)}
.autre:hover .go{color:var(--or-clair)}
@media (max-width:900px){.autre{flex:0 0 calc((100% - var(--gap))/2)}}
@media (max-width:560px){.autre{flex:0 0 82%}}

/* ---------- CTA ---------- */
.s-cta{text-align:center;padding-block:clamp(4rem,10vh,7rem);border-top:1px solid var(--hair)}
.s-cta h2{font-family:var(--serif);font-weight:300;font-size:clamp(1.8rem,4.4vw,3.2rem)}
.s-cta .btn{display:inline-flex;align-items:center;gap:.7rem;margin-top:1.7rem;padding:.95rem 2rem;border:1px solid var(--or);
  color:var(--ivoire);background:none;cursor:pointer;font-family:var(--sans);font-size:.72rem;letter-spacing:.2em;
  text-transform:uppercase;transition:.35s var(--ease)}
.s-cta .btn:hover{background:var(--or);color:var(--noir)}

a:focus-visible,button:focus-visible{outline:2px solid var(--or-clair);outline-offset:3px}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001s!important;transition-duration:.001s!important}
  .reveal{opacity:1;transform:none}.s-daynight .day{clip-path:inset(0 50% 0 0)!important}}

/* ---------- Sous-titre + prix (hero) ---------- */
.s-hero .soustitre{font-family:var(--serif);font-weight:300;font-size:clamp(1.1rem,2.2vw,1.5rem);color:var(--or-clair);
  margin-top:.7rem;opacity:0;transform:translateY(12px);
  transition:opacity 1s var(--ease) .5s,transform 1s var(--slow) .5s}
body.ready .s-hero .soustitre{opacity:1;transform:none}
.s-hero .prix{display:inline-flex;align-items:center;gap:.6rem;margin-top:1.4rem;padding:.7rem 1.3rem;
  border:1px solid var(--hair-or);background:rgba(194,163,107,.08);font-size:.9rem;letter-spacing:.1em;
  color:var(--or-clair);opacity:0;transform:translateY(12px);
  transition:opacity 1s var(--ease) .7s,transform 1s var(--slow) .7s}
body.ready .s-hero .prix{opacity:1;transform:none}

/* ---------- Ventilation des jets + emblème ECO ---------- */
.s-jets{display:grid;grid-template-columns:1fr auto;gap:clamp(1.5rem,4vw,3.5rem);align-items:center}
@media (max-width:720px){.s-jets{grid-template-columns:1fr}}
.jets-txt h2{font-family:var(--serif);font-weight:300;font-size:clamp(1.6rem,3.6vw,2.6rem);margin:.4rem 0 1.1rem}
.jets-txt ul{list-style:none;display:flex;flex-direction:column;gap:.6rem}
.jets-txt li{position:relative;padding-left:1.5rem;color:var(--gris);font-size:1.02rem}
.jets-txt li::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;
  background:var(--or);transform:rotate(45deg)}

/* emblème ECO — dessiné en CSS/SVG, noir + or, dans le ton de la page */
.eco{display:flex;align-items:center;gap:1rem;padding:1.2rem 1.5rem;border:1px solid var(--hair-or);
  background:radial-gradient(120% 120% at 30% 20%,rgba(194,163,107,.10),var(--noir-2));min-width:230px}
.eco svg{width:66px;height:66px;flex:0 0 auto}
.eco .ring{fill:none;stroke:var(--hair-or);stroke-width:2}
.eco .leaf{fill:none;stroke:var(--or-clair);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:200;stroke-dashoffset:200;animation:ecoDraw 1.6s var(--ease) .3s forwards}
.eco .stem{fill:none;stroke:var(--or);stroke-width:2;stroke-linecap:round;
  stroke-dasharray:60;stroke-dashoffset:60;animation:ecoDraw 1s var(--ease) 1.1s forwards}
@keyframes ecoDraw{to{stroke-dashoffset:0}}
.eco .eco-t{display:flex;flex-direction:column;gap:.25rem}
.eco .eco-t b{font-family:var(--serif);font-weight:400;font-size:1.05rem;color:var(--or-clair);letter-spacing:.02em}
.eco .eco-t span{font-size:.74rem;color:var(--gris);letter-spacing:.03em}
/* Présentation sans vidéo : texte pleine largeur, même style que le split */
#sPresNoVideo .txt{max-width:74ch}
#sPresNoVideo .txt p{color:var(--gris);margin-bottom:1rem}
#sPresNoVideo .txt p:first-child{color:var(--ivoire);font-family:var(--serif);
  font-size:clamp(1.1rem,2vw,1.4rem);font-weight:300;line-height:1.5}

/* badge ÉCO déplacé hors du bloc jets (modèles sans ventilation de jets) */
.eco--solo{margin-top:clamp(1.6rem,4vw,2.6rem);max-width:420px}