/* Mise en page : reprend les repères du site actuel (bandeau nuit, menu autour du logo, hero au chat,
   titres Lora, étiquettes Oswald) et sert ses textes en panneaux dépliables, onglets et galerie.
   Rayons : photos et panneaux 18px, champs 12px, boutons en pilule. */
:root{
  --night:#24213F; --night-2:#302C55; --night-ink:#F2F1FB; --night-muted:#B9B6D9;
  --bg:#F5F5FA; --surface:#FFFFFF; --surface-2:#ECEBF4; --line:#DFDEEA;
  --ink:#1F1D36; --muted:#5A5874;
  --sky:#2C7AB2; --sky-soft:#E2EEF8; --sky-ink:#FFFFFF;
  --ok:#1F7F5C; --warn:#B53A30;
  --shadow:0 20px 44px -22px rgba(36,33,63,.45);
  --f-display:"Lora",Georgia,"Times New Roman",serif;
  --f-label:"Oswald","Arial Narrow",Arial,sans-serif;
  --f-body:"Nunito","Segoe UI",system-ui,sans-serif;
  --r:18px; --r-in:12px; --wrap:1200px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --night:#0F0E22; --night-2:#1E1C3B; --night-ink:#F2F1FB; --night-muted:#A9A6CC;
    --bg:#15142B; --surface:#1D1B37; --surface-2:#26244A; --line:#34315C;
    --ink:#ECEBFA; --muted:#A8A6C8;
    --sky:#7DC0EE; --sky-soft:#1F3550; --sky-ink:#10203A;
    --ok:#5CD3A2; --warn:#FF8A7E; --shadow:0 20px 44px -22px rgba(0,0,0,.75);
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --night:#0F0E22; --night-2:#1E1C3B; --night-ink:#F2F1FB; --night-muted:#A9A6CC;
  --bg:#15142B; --surface:#1D1B37; --surface-2:#26244A; --line:#34315C;
  --ink:#ECEBFA; --muted:#A8A6C8;
  --sky:#7DC0EE; --sky-soft:#1F3550; --sky-ink:#10203A;
  --ok:#5CD3A2; --warn:#FF8A7E; --shadow:0 20px 44px -22px rgba(0,0,0,.75);
  color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth; scroll-padding-top:90px}
body{margin:0; background:var(--bg); color:var(--ink); font-family:var(--f-body); font-size:17px; line-height:1.65; -webkit-font-smoothing:antialiased}
img{display:block; max-width:100%}
a{color:inherit}
button{font:inherit; color:inherit}
h1,h2,h3,h4{font-family:var(--f-display); font-weight:600; line-height:1.15; margin:0; text-wrap:balance}
h2{font-size:clamp(30px,3.6vw,44px); letter-spacing:-.01em}
h3{font-size:22px}
p{margin:0; text-wrap:pretty}
.wrap{max-width:var(--wrap); margin:0 auto; padding-inline:24px}
.muted{color:var(--muted)}
.num{font-variant-numeric:tabular-nums}
.ic{width:1.15em; height:1.15em; flex:none}
:focus-visible{outline:3px solid var(--sky); outline-offset:3px; border-radius:6px}
.skip{position:absolute; left:-999px; top:8px; background:var(--night); color:var(--night-ink); padding:8px 14px; border-radius:999px; z-index:40}
.skip:focus{left:16px}
.label{font-family:var(--f-label); font-weight:500; font-size:14px; letter-spacing:.14em; text-transform:uppercase; color:var(--sky)}
section{padding-block:96px 104px}
.head{max-width:62ch}
.head .label{display:block; margin-bottom:12px}
.head p{margin-top:16px; font-size:18px; color:var(--muted)}

/* Boutons */
.btn{display:inline-flex; align-items:center; gap:9px; height:50px; padding:0 24px; border-radius:999px; font:700 16px/1 var(--f-body); text-decoration:none; border:0; cursor:pointer; white-space:nowrap; transition:transform .2s, background-color .2s, box-shadow .2s}
.btn:active{transform:translateY(1px) scale(.98)}
.btn-primary{background:var(--sky); color:var(--sky-ink); box-shadow:var(--shadow)}
.btn-primary:hover{transform:translateY(-2px)}
.btn-dark{background:var(--night); color:var(--night-ink)}
.btn-dark:hover{transform:translateY(-2px)}
.btn-ghost{background:transparent; color:var(--ink); box-shadow:inset 0 0 0 1.5px var(--line)}
.btn-ghost:hover{box-shadow:inset 0 0 0 1.5px var(--ink)}
.btn .ic{width:19px; height:19px}
.link{display:inline-flex; align-items:center; gap:6px; font-weight:800; color:var(--sky); text-decoration:none; background:none; border:0; padding:0; cursor:pointer}
.link:hover{text-decoration:underline}

/* Bandeau du haut (repère du site actuel) */
.topbar{background:var(--night); color:var(--night-muted); font-size:13.5px}
.topbar .wrap{display:flex; align-items:center; gap:20px; min-height:38px; flex-wrap:wrap}
.topbar .proto{margin-right:auto; color:var(--night-ink); font-weight:700}
.topbar a{display:inline-flex; align-items:center; gap:6px; text-decoration:none; color:var(--night-ink)}
.topbar a:hover{text-decoration:underline}
@media (max-width:720px){ .topbar .hide-s{display:none} }

/* Menu autour du logo */
header.nav{position:sticky; top:env(safe-area-inset-top, 0px); z-index:30; background:color-mix(in srgb, var(--surface) 92%, transparent); backdrop-filter:blur(12px); border-bottom:1px solid var(--line)}
.nav .wrap{display:grid; grid-template-columns:1fr auto 1fr; align-items:center; height:78px; gap:24px}
.nav ul{display:flex; gap:26px; list-style:none; margin:0; padding:0; align-items:center}
.nav ul.right{justify-content:flex-end}
.nav ul a:not(.btn){font-family:var(--f-label); font-weight:500; text-transform:uppercase; letter-spacing:.08em; font-size:14.5px; text-decoration:none; color:var(--muted); padding:6px 0; border-bottom:2px solid transparent; transition:color .2s, border-color .2s}
.nav ul a:not(.btn):hover, .nav ul a.on{color:var(--ink); border-bottom-color:var(--sky)}
.nav .btn{height:42px; padding:0 18px; font-size:14.5px}
.brand{display:block; width:84px}
.brand img{width:84px; height:auto}
.menu-btn{display:none; justify-self:end; width:46px; height:46px; border-radius:999px; border:1.5px solid var(--line); background:var(--surface); cursor:pointer; place-items:center}
.menu-btn .ic{width:22px; height:22px}
.drawer{display:none}
@media (max-width:1060px){
  .nav .wrap{grid-template-columns:auto 1fr auto; height:68px}
  .nav ul{display:none}
  .brand{width:64px} .brand img{width:64px}
  .menu-btn{display:grid}
  .drawer{display:block; position:fixed; inset:0; z-index:35; background:var(--surface); padding:calc(20px + env(safe-area-inset-top, 0px)) 24px 24px; transform:translateY(-100%); transition:transform .35s cubic-bezier(.2,.7,.2,1); visibility:hidden}
  .drawer.open{transform:none; visibility:visible}
  .drawer nav{display:grid; gap:4px; margin-top:28px}
  .drawer nav a{font-family:var(--f-display); font-size:26px; text-decoration:none; padding:10px 0; border-bottom:1px solid var(--line)}
  .drawer .close{float:right}
}

/* Hero (repère : le chat, le titre, la phrase) */
.hero{position:relative; background:var(--night); color:var(--night-ink); overflow:hidden; padding-block:0}
.hero .photo{position:absolute; inset:0; --pos:72% 40%}
.hero .photo img{width:100%; height:100%; object-fit:cover; object-position:var(--pos); animation:breathe 18s ease-in-out infinite alternate}
.hero .photo::after{content:""; position:absolute; inset:0; z-index:1; pointer-events:none; background:linear-gradient(90deg, var(--night) 0%, color-mix(in srgb, var(--night) 82%, transparent) 34%, transparent 66%)}
@keyframes breathe{from{transform:scale(1.04)} to{transform:scale(1)}}
/* Ouverture « rêve » : la photo découpée en bandes obliques (créées par le script) */
.slices{position:absolute; inset:0; overflow:hidden; animation:breathe 18s ease-in-out infinite alternate}
.slice{position:absolute; inset:0; background:var(--img) var(--pos)/cover no-repeat; will-change:transform, opacity, filter}
.hero .photo img[hidden]{display:none}
.hero .photo.sliced img{visibility:hidden}
.hero .wrap{position:relative; z-index:2; min-height:clamp(520px, 74vh, 700px); display:flex; flex-direction:column; justify-content:center; align-items:flex-start; padding-block:72px 120px}
.hero .label{color:var(--night-ink); opacity:.85}
.hero h1{font-size:clamp(46px,6.4vw,82px); font-weight:600; margin-top:14px; letter-spacing:-.015em; line-height:1.02}
.hero p{font-family:var(--f-display); font-size:clamp(19px,1.8vw,23px); line-height:1.5; max-width:30ch; margin-top:22px; color:var(--night-ink)}
.hero .ctas{display:flex; flex-wrap:wrap; gap:12px; margin-top:34px}
.hero .btn-ghost{color:var(--night-ink); box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--night-ink) 55%, transparent)}
.hero .btn-ghost:hover{box-shadow:inset 0 0 0 1.5px var(--night-ink)}
.hero .curve{position:absolute; left:0; right:0; bottom:-1px; width:100%; height:70px; display:block}
.hero .curve path{fill:var(--bg)}
.hero-in > *{animation:rise 1s cubic-bezier(.2,.7,.2,1) .5s both}
.hero-in > *:nth-child(2){animation-delay:.6s} .hero-in > *:nth-child(3){animation-delay:.7s} .hero-in > *:nth-child(4){animation-delay:.8s}
@keyframes rise{from{transform:translateY(16px)} to{transform:none}}
@media (max-width:720px){
  .hero .photo{position:relative; height:300px}
  .hero .photo{--pos:70% 42%}
  .hero .photo::after{background:linear-gradient(180deg, transparent 55%, var(--night) 100%)}
  .hero .wrap{min-height:0; padding-block:8px 96px}
  .topbar .proto{display:none}
}

/* Le concept */
.concept .cols{display:grid; grid-template-columns:1fr 1fr; gap:28px; margin-top:44px; align-items:start}
.panel{background:var(--surface); border-radius:var(--r); padding:30px 30px 26px; box-shadow:0 1px 0 var(--line)}
.panel h3{display:flex; align-items:center; gap:12px}
.panel h3 .ic{color:var(--sky); width:26px; height:26px}
.panel > p{margin-top:12px}
.more{display:grid; grid-template-rows:0fr; transition:grid-template-rows .5s cubic-bezier(.2,.7,.2,1)}
.more > div{overflow:hidden; min-height:0}
.panel .more > div > p{margin-top:12px}
.more.open{grid-template-rows:1fr}
.toggle{margin-top:14px}
.ic.chev{transition:transform .35s}
[aria-expanded="true"] .ic.chev{transform:rotate(180deg)}
.quote{margin-top:44px; display:grid; grid-template-columns:auto 1fr; gap:28px; align-items:center}
.quote img{width:96px; opacity:.9}
html[data-theme="dark"] .quote img{filter:invert(1)}
@media (prefers-color-scheme: dark){ html:not([data-theme="light"]) .quote img{filter:invert(1)} }
.quote blockquote{margin:0; font-family:var(--f-display); font-style:italic; font-size:clamp(22px,2.4vw,30px); line-height:1.35; max-width:34ch}
.recos{display:flex; flex-wrap:wrap; gap:10px; margin-top:24px}
.chip{display:inline-flex; align-items:center; gap:8px; padding:8px 14px; border-radius:999px; background:var(--surface); box-shadow:inset 0 0 0 1px var(--line); font-weight:700; font-size:15px}
.chip.star{background:var(--sky-soft); box-shadow:none}
.chip .ic{color:var(--sky)}
.rule{margin-top:44px; display:grid; grid-template-columns:1fr 1.2fr; gap:32px; align-items:center; background:var(--night); color:var(--night-ink); border-radius:var(--r); padding:30px 34px}
.rule p{color:var(--night-muted)}
.rule strong{color:var(--night-ink)}
.days{display:grid; grid-template-columns:repeat(5,1fr); gap:8px}
.day{border-radius:var(--r-in); padding:12px 6px 10px; text-align:center; background:var(--night-2); font-size:14px; color:var(--night-muted)}
.day b{display:block; font-family:var(--f-display); font-size:22px; color:var(--night-ink)}
.day.edge{background:var(--sky); color:var(--sky-ink)}
.day.edge b{color:var(--sky-ink)}
.days-cap{grid-column:1/-1; font-size:14px; color:var(--night-muted); margin-top:4px}
@media (max-width:860px){ .concept .cols, .rule{grid-template-columns:1fr} .quote{grid-template-columns:1fr} .quote img{width:72px} .rule{padding:24px} }

/* Atouts : liste dépliable + photo qui suit */
.atouts .grid{display:grid; grid-template-columns:1fr 1.05fr; gap:48px; margin-top:44px; align-items:start}
.alist{display:grid; gap:10px}
.aitem{background:var(--surface); border-radius:var(--r); box-shadow:0 1px 0 var(--line); transition:box-shadow .3s}
.aitem.open{box-shadow:inset 0 0 0 1.5px var(--sky), var(--shadow)}
.aitem > button{display:flex; align-items:center; gap:14px; width:100%; text-align:left; background:none; border:0; padding:18px 20px; cursor:pointer}
.badge{width:42px; height:42px; border-radius:12px; background:var(--sky-soft); color:var(--sky); display:grid; place-items:center; flex:none}
.badge .ic{width:22px; height:22px}
.aitem .t{flex:1; min-width:0}
.aitem .t b{display:block; font-family:var(--f-display); font-size:19px; font-weight:600}
.aitem .t span{display:block; font-size:14.5px; color:var(--muted)}
.aitem .ic.chev{color:var(--muted)}
.aitem .more > div > div{padding:0 20px 20px 76px; display:grid; gap:10px}
.aitem .mobile-ph{display:none; border-radius:var(--r-in); margin-top:4px; aspect-ratio:3/2; object-fit:cover; width:100%; height:auto}
.stage{position:sticky; top:110px; border-radius:var(--r); overflow:hidden; aspect-ratio:4/3.3; background:var(--surface-2); box-shadow:var(--shadow)}
.stage img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transform:scale(1.03); transition:opacity .6s, transform 1.2s cubic-bezier(.2,.7,.2,1)}
.stage img.on{opacity:1; transform:none}
@media (max-width:900px){
  .atouts .grid{grid-template-columns:1fr}
  .stage{display:none}
  .aitem .mobile-ph{display:block}
  .aitem .more > div > div{padding:0 18px 18px}
}

/* Tarifs */
.tarifs{background:var(--surface)}
.season{display:inline-grid; grid-template-columns:1fr 1fr; gap:4px; padding:4px; border-radius:999px; background:var(--bg); box-shadow:inset 0 0 0 1px var(--line); margin-top:28px}
.season button{border:0; background:transparent; border-radius:999px; padding:10px 20px; font-weight:800; font-size:15px; color:var(--muted); cursor:pointer; transition:background-color .25s, color .25s}
.season button[aria-pressed="true"]{background:var(--night); color:var(--night-ink)}
.season-note{display:block; margin-top:10px; font-size:14.5px; color:var(--muted)}
.formules{display:grid; grid-template-columns:repeat(3, 1fr); gap:24px; margin-top:32px}
.formule{background:var(--bg); border-radius:var(--r); overflow:hidden; display:flex; flex-direction:column}
.formule .ph{aspect-ratio:16/8; overflow:hidden}
.formule .ph img{width:100%; height:100%; object-fit:cover; transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.formule:hover .ph img{transform:scale(1.04)}
.formule .body{padding:26px 28px 28px; display:flex; flex-direction:column; gap:12px; flex:1}
.formule .size{font-family:var(--f-label); font-weight:500; letter-spacing:.1em; text-transform:uppercase; color:var(--sky); font-size:14px}
.prices{display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:auto; padding-top:8px}
.price{background:var(--surface); border-radius:var(--r-in); padding:14px 6px; text-align:center}
.price span{display:block; font-size:13.5px; color:var(--muted); font-weight:700}
.price b{display:block; font-family:var(--f-display); font-size:clamp(20px, 2vw, 28px); font-weight:600; line-height:1.15; white-space:nowrap; transition:opacity .2s, transform .2s}
.price b.flip{opacity:0; transform:translateY(-6px)}
.formule small{font-size:13.5px; color:var(--muted)}
.extras-h{margin-top:64px; display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:12px}
.extras-h p{color:var(--muted); font-size:15px}
.extras{display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:20px; align-items:start}
.extra{background:var(--bg); border-radius:var(--r); transition:box-shadow .3s}
.extra.open{box-shadow:inset 0 0 0 1.5px var(--sky)}
.extra > button{display:grid; grid-template-columns:auto 1fr auto auto; align-items:center; gap:12px; width:100%; text-align:left; background:none; border:0; padding:16px 18px; cursor:pointer}
.extra .badge{width:40px; height:40px; background:var(--surface)}
.extra b{font-family:var(--f-label); font-weight:500; letter-spacing:.08em; text-transform:uppercase; font-size:16px}
.extra .p{font-family:var(--f-display); font-weight:600; font-size:20px}
.extra .ic.chev{color:var(--muted)}
.extra .more > div > p{padding:0 18px 18px; font-size:15px; color:var(--muted)}
.misc{display:flex; flex-wrap:wrap; gap:10px; margin-top:18px}
@media (max-width:900px){ .formules{grid-template-columns:1fr} .extras{grid-template-columns:1fr 1fr} .price b{font-size:28px} }
@media (max-width:560px){ .extras{grid-template-columns:1fr} .price b{font-size:26px} .formule .body{padding:22px 20px} }

/* Simulateur */
.sim-wrap{margin-top:64px; display:grid; grid-template-columns:.85fr 1.15fr; gap:48px; align-items:start}
.sim-wrap .side ul{list-style:none; padding:0; margin:22px 0 0; display:grid; gap:12px}
.sim-wrap .side li{display:flex; gap:12px}
.sim-wrap .side li .ic{width:22px; height:22px; color:var(--sky); margin-top:3px}
.sim{background:var(--bg); border-radius:var(--r); padding:30px}
.sim .grid{display:grid; grid-template-columns:1fr 1fr; gap:18px}
.field{display:flex; flex-direction:column; gap:7px; min-width:0}
.field label, .field .lab{font-weight:800; font-size:14px}
.field input, .field select, .field textarea{font:600 16px var(--f-body); color:var(--ink); background:var(--surface); border:1.5px solid var(--line); border-radius:var(--r-in); padding:12px 14px; min-height:48px; width:100%}
.field input:focus, .field select:focus, .field textarea:focus{outline:none; border-color:var(--sky)}
.field .help{font-size:13.5px; color:var(--muted)}
.field .err{font-size:13.5px; color:var(--warn); font-weight:700; display:none}
.field.invalid input, .field.invalid select{border-color:var(--warn)}
.field.invalid .err{display:block}
.seg{display:grid; grid-template-columns:1fr 1fr; background:var(--surface); border:1.5px solid var(--line); border-radius:var(--r-in); padding:4px; gap:4px}
.seg.three{grid-template-columns:repeat(3,1fr)}
.seg button{border:0; background:transparent; border-radius:9px; min-height:42px; font-weight:700; font-size:15px; color:var(--muted); cursor:pointer; transition:background-color .2s, color .2s}
.seg button[aria-pressed="true"]{background:var(--night); color:var(--night-ink)}
.span2{grid-column:span 2}
.opts{display:flex; flex-wrap:wrap; gap:8px}
.opt{position:relative}
.opt input{position:absolute; opacity:0; inset:0; margin:0; cursor:pointer}
.opt span{display:inline-flex; align-items:center; gap:6px; padding:8px 13px; border-radius:999px; background:var(--surface); box-shadow:inset 0 0 0 1.5px var(--line); font-weight:700; font-size:14px; transition:background-color .2s, box-shadow .2s}
.opt input:checked + span{background:var(--sky-soft); box-shadow:inset 0 0 0 1.5px var(--sky)}
.opt input:focus-visible + span{outline:3px solid var(--sky); outline-offset:2px}
.result{margin-top:24px; padding-top:22px; border-top:1px dashed var(--line)}
.result .line{display:flex; justify-content:space-between; gap:16px; font-size:15.5px; color:var(--muted); padding:2px 0}
.result .total{display:flex; justify-content:space-between; align-items:baseline; margin-top:10px}
.result .total b{font-family:var(--f-display); font-weight:600; font-size:44px; line-height:1}
.result .warn{margin-top:12px; font-size:14.5px; font-weight:700; background:var(--sky-soft); border-radius:var(--r-in); padding:10px 14px}
.result .note{margin-top:12px; font-size:13.5px; color:var(--muted)}
.sim .btn{margin-top:20px; width:100%; justify-content:center}
@media (max-width:900px){ .sim-wrap{grid-template-columns:1fr; gap:32px} }
@media (max-width:520px){ .sim{padding:20px} .sim .grid{grid-template-columns:1fr} .span2{grid-column:auto} }

/* Visiter : galerie */
.visit .top{display:grid; grid-template-columns:1.2fr .8fr; gap:48px; align-items:end}
.hours{background:var(--surface); border-radius:var(--r); padding:8px 22px}
.hours div{display:flex; justify-content:space-between; gap:16px; padding:10px 0; border-bottom:1px solid var(--line); font-size:15.5px}
.hours div:last-child{border-bottom:0}
.hours .today{font-weight:800}
.hours .today span:first-child::after{content:" (aujourd'hui)"; font-weight:600; color:var(--sky)}
.hours .closed{color:var(--muted)}
.gal-wrap{margin-top:40px}
.gallery{display:flex; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:12px; scrollbar-width:thin}
.gallery button{flex:0 0 auto; width:min(520px, 86vw); aspect-ratio:3/2; border:0; padding:0; border-radius:var(--r); overflow:hidden; scroll-snap-align:start; cursor:zoom-in; background:var(--surface-2)}
.gallery button:nth-child(3n+2){width:min(420px, 72vw)}
.gallery img{width:100%; height:100%; object-fit:cover; transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.gallery button:hover img{transform:scale(1.05)}
.gal-nav{display:flex; gap:10px; margin-top:14px; justify-content:flex-end}
.gal-nav button{width:46px; height:46px; border-radius:999px; border:1.5px solid var(--line); background:var(--surface); cursor:pointer; display:grid; place-items:center}
.gal-nav .ic{width:20px; height:20px}
.visit-cta{display:flex; flex-wrap:wrap; align-items:center; gap:16px 24px; margin-top:32px; padding:22px 26px; border-radius:var(--r); background:var(--sky-soft)}
.visit-cta p{flex:1; min-width:240px; font-size:15.5px}
dialog.lb{border:0; padding:0; background:transparent; max-width:min(1000px, 94vw); width:100%}
dialog.lb::backdrop{background:rgba(10,9,25,.85)}
dialog.lb img{width:100%; height:auto; border-radius:var(--r)}
dialog.lb .bar{display:flex; gap:10px; align-items:center; margin-top:12px}
dialog.lb button{width:46px; height:46px; border-radius:999px; border:0; background:var(--surface); color:var(--ink); cursor:pointer; display:grid; place-items:center}
dialog.lb .count{color:#FFFFFF; font-weight:700; margin-right:auto}
@media (max-width:900px){ .visit .top{grid-template-columns:1fr; gap:28px} }

/* Se préparer : les 8 étapes de son site */
.prep .bar{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:end; gap:16px}
.steps{list-style:none; margin:40px 0 0; padding:0; position:relative; display:grid; gap:12px}
.steps::before{content:""; position:absolute; left:27px; top:28px; bottom:28px; width:2px; background:var(--line)}
.step{position:relative; display:grid; grid-template-columns:56px 1fr; gap:18px; align-items:start}
.step .n{width:56px; height:56px; border-radius:50%; background:var(--surface); border:2px solid var(--line); display:grid; place-items:center; font-family:var(--f-display); font-weight:600; font-size:22px; position:relative; z-index:1; transition:background-color .3s, color .3s, border-color .3s}
.step.open .n{background:var(--sky); border-color:var(--sky); color:var(--sky-ink)}
.step .box{background:var(--surface); border-radius:var(--r); box-shadow:0 1px 0 var(--line); min-width:0}
.step .box > button{display:flex; align-items:center; gap:14px; width:100%; text-align:left; background:none; border:0; padding:15px 20px; min-height:56px; cursor:pointer}
.step .box > button b{flex:1; font-family:var(--f-display); font-size:20px; font-weight:600}
.step .box > button .ic.chev{color:var(--muted)}
.step .inner{padding:0 20px 22px; display:grid; gap:12px; max-width:76ch}
.callout{border-radius:var(--r-in); padding:14px 16px; background:var(--sky-soft); font-size:15.5px}
.callout b{display:block; margin-bottom:2px}
.callout.warn{background:var(--surface-2)}
.check{list-style:none; margin:0; padding:0; display:grid; gap:8px}
.check li{display:flex; gap:10px}
.check .ic{color:var(--ok); width:21px; height:21px; margin-top:3px}
.needs{display:grid; grid-template-columns:repeat(3,1fr); gap:10px}
.needs div{background:var(--bg); border-radius:var(--r-in); padding:14px; font-size:15px}
.needs b{display:block; font-family:var(--f-display); font-size:17px; margin-bottom:4px}
.pull{font-family:var(--f-display); font-style:italic; font-size:19px; border-left:3px solid var(--sky); padding-left:14px}
@media (max-width:640px){ .step{grid-template-columns:40px 1fr; gap:12px} .step .n{width:40px; height:40px; font-size:17px} .steps::before{left:19px} .needs{grid-template-columns:1fr} }

/* Réservation */
.resa{background:var(--surface)}
.resa .grid{display:grid; grid-template-columns:.8fr 1.2fr; gap:56px; margin-top:44px; align-items:start}
.how{list-style:none; margin:0; padding:0; display:grid; gap:20px}
.how li{display:grid; grid-template-columns:44px 1fr; gap:14px}
.how .badge{width:44px; height:44px}
.how b{display:block; font-family:var(--f-display); font-size:19px}
.how p{color:var(--muted); font-size:15.5px; margin-top:2px}
.paper{margin-top:26px; padding-top:20px; border-top:1px solid var(--line); font-size:15px; color:var(--muted)}
form.book{display:grid; gap:22px; background:var(--bg); border-radius:var(--r); padding:30px; min-width:0}
form.book fieldset{border:0; margin:0; padding:0 0 22px; border-bottom:1px solid var(--line); min-width:0}
form.book legend{font-family:var(--f-display); font-weight:600; font-size:20px; padding:0; margin-bottom:14px}
form.book textarea{min-height:100px; resize:vertical}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:16px}
.grid3{display:grid; grid-template-columns:repeat(3,1fr); gap:14px}
.grid2 .full{grid-column:1/-1}
.span2c{grid-column:span 2}
form.book .help{font-size:13.5px; color:var(--muted)}
.radio{position:relative; display:grid}
.radio input{position:absolute; opacity:0; inset:0; margin:0; cursor:pointer}
.radio span{display:grid; place-items:center; min-height:42px; border-radius:9px; font-weight:700; font-size:15px; color:var(--muted); transition:background-color .2s, color .2s}
.radio input:checked + span{background:var(--night); color:var(--night-ink)}
.radio input:focus-visible + span, .carte input:focus-visible + span{outline:3px solid var(--sky); outline-offset:2px}
.formules-choix{display:grid; grid-template-columns:repeat(3,1fr); gap:10px}
.carte{position:relative; display:grid}
.carte input{position:absolute; opacity:0; inset:0; margin:0; cursor:pointer}
.carte span{display:block; padding:14px; border-radius:var(--r-in); background:var(--surface); box-shadow:inset 0 0 0 1.5px var(--line); font-size:14px; color:var(--muted); transition:box-shadow .2s, background-color .2s}
.carte b{display:block; font-family:var(--f-display); font-size:17px; color:var(--ink); margin-bottom:2px}
.carte input:checked + span{background:var(--sky-soft); box-shadow:inset 0 0 0 2px var(--sky)}
.field.invalid .formules-choix .carte span{box-shadow:inset 0 0 0 1.5px var(--warn)}
details.plus{margin-top:14px}
details.plus summary{cursor:pointer; font-weight:800; font-size:14.5px; color:var(--sky); list-style:none; display:inline-flex; align-items:center; gap:6px}
details.plus summary::-webkit-details-marker{display:none}
details.plus summary::before{content:"+"; display:inline-grid; place-items:center; width:20px; height:20px; border-radius:6px; background:var(--sky-soft)}
details.plus[open] summary::before{content:"-"}
details.plus[open] > .grid2, details.plus[open] > .grid3{margin-top:14px; animation:deplie .35s cubic-bezier(.2,.7,.2,1)}
@keyframes deplie{from{opacity:.2; transform:translateY(-6px)} to{opacity:1; transform:none}}
#b-chats{display:grid; gap:12px}
.chat-carte{background:var(--surface); border-radius:var(--r-in); padding:16px 18px; animation:deplie .35s cubic-bezier(.2,.7,.2,1)}
.chat-tete{display:flex; justify-content:space-between; align-items:center; margin-bottom:10px}
.chat-tete b{font-family:var(--f-display); font-size:17px}
.chat-retirer{font-size:14px; color:var(--muted)}
#b-ajout-chat{margin-top:12px}
.hp{position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden}
.consent[hidden]{display:none}
.consent{display:flex; gap:10px; align-items:flex-start; font-size:15px}
.consent input{width:20px; height:20px; margin-top:2px; accent-color:var(--sky); flex:none}
.consent.invalid span{color:var(--warn); font-weight:700}
.alerte{border-radius:var(--r-in); padding:14px 16px; background:color-mix(in srgb, var(--warn) 12%, var(--surface)); color:var(--ink); font-size:15px}
.alerte ul{margin:6px 0 0; padding-left:18px}
.btn[disabled]{opacity:.65; cursor:progress}
.err-txt{color:var(--warn) !important; font-weight:700}
.actions{display:flex; flex-wrap:wrap; align-items:center; gap:16px}
.actions small{color:var(--muted); font-size:14px; flex:1; min-width:200px}
.done{background:var(--surface); border-radius:var(--r); padding:28px}
.done h3{display:flex; align-items:center; gap:10px}
.done h3 .ic{color:var(--ok); width:28px; height:28px}
.done p{margin-top:10px; color:var(--muted)}
@media (max-width:900px){ .resa .grid{grid-template-columns:1fr; gap:36px} }
@media (max-width:700px){ .grid3{grid-template-columns:1fr 1fr} .formules-choix{grid-template-columns:1fr} }
@media (max-width:600px){ form.book{padding:20px} .grid2{grid-template-columns:1fr} .grid3{grid-template-columns:1fr} .span2c{grid-column:auto} }

/* Engagements */
.engage{background:var(--night); color:var(--night-ink)}
.engage .label{color:var(--night-muted)}
.engage ul{list-style:none; margin:40px 0 0; padding:0; display:grid; grid-template-columns:repeat(5,1fr); gap:28px}
.engage li .ic{width:30px; height:30px; color:var(--sky)}
.engage li p{margin-top:12px; font-size:15.5px; color:var(--night-muted)}
.engage li strong{color:var(--night-ink); display:block; font-family:var(--f-display); font-size:18px; margin-bottom:4px; font-weight:600}
@media (max-width:1000px){ .engage ul{grid-template-columns:1fr 1fr} }
@media (max-width:560px){ .engage ul{grid-template-columns:1fr} }

/* Contact */
.contact .grid{display:grid; grid-template-columns:1fr 1fr 1fr; gap:40px; margin-top:36px}
.contact h3{font-size:20px; margin-bottom:12px}
.contact address{font-style:normal}
.contact .links{display:grid; gap:10px; margin-top:14px}
.contact .links a{display:flex; align-items:center; gap:10px; font-weight:700; text-decoration:none}
.contact .links a:hover{text-decoration:underline}
.contact .links .ic{width:20px; height:20px; color:var(--sky)}
.contact p{color:var(--muted); font-size:15.5px}
.contact p + p{margin-top:8px}
@media (max-width:900px){ .contact .grid{grid-template-columns:1fr; gap:32px} }

footer{border-top:1px solid var(--line); padding-block:28px 36px; font-size:14px; color:var(--muted)}
footer .wrap{display:flex; flex-wrap:wrap; justify-content:space-between; gap:16px}
footer nav{display:flex; flex-wrap:wrap; gap:20px}
footer a{text-decoration:none}
footer a:hover{text-decoration:underline}

.mbar{display:none}
@media (max-width:640px){
  .mbar{display:grid; grid-template-columns:1fr 1.4fr; gap:10px; position:fixed; left:12px; right:12px; bottom:calc(12px + env(safe-area-inset-bottom, 0px)); z-index:25; padding:8px; background:var(--surface); border-radius:999px; box-shadow:var(--shadow)}
  .mbar .btn{height:46px; justify-content:center; padding:0 12px}
  body{padding-bottom:84px}
  section{padding-block:72px 80px}
  .wrap{padding-inline:16px}
}

/* Apparitions : visibles au repos, léger glissement à l'entrée */
.js .rv:not(.in){transform:translateY(14px)}
.js .rv{transition:transform .7s cubic-bezier(.2,.7,.2,1); transition-delay:var(--d,0s)}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *, *::before, *::after{animation:none !important; transition:none !important}
  .js .rv:not(.in){transform:none}
}

/* ---------- Pages intérieures : hero compact, une photo fixe ---------- */
.hero.hero-page .wrap{min-height:clamp(340px, 46vh, 460px); padding-block:56px 96px}
.hero.hero-page h1{font-size:clamp(36px,4.6vw,58px)}
.hero.hero-page p{max-width:44ch}
.fil{font-size:14px; color:var(--night-muted); margin-bottom:14px}
.fil a{color:var(--night-ink); text-decoration:none}
.fil a:hover{text-decoration:underline}
@media (max-width:720px){ .hero.hero-page .wrap{min-height:0; padding-block:8px 80px} .hero.hero-page .photo{height:220px} }

/* ---------- Accueil : introduction ---------- */
.intro-grid{display:grid; grid-template-columns:.9fr 1.1fr; gap:56px; align-items:start}
.intro-texte{display:grid; gap:14px}
.lead{font-family:var(--f-display); font-style:italic; font-size:21px; line-height:1.5}
@media (max-width:900px){ .intro-grid{grid-template-columns:1fr; gap:24px} }

/* ---------- Accueil : aperçu des pages ---------- */
.themes{padding-top:0}
.themes-grid{display:grid; grid-template-columns:repeat(3,1fr); grid-auto-rows:minmax(260px,auto); gap:18px; margin-top:36px}
.theme{position:relative; display:flex; flex-direction:column; justify-content:flex-end; border-radius:var(--r); overflow:hidden; text-decoration:none; color:var(--night-ink); background:var(--night); min-height:260px}
.theme img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.theme::after{content:""; position:absolute; inset:0; background:linear-gradient(180deg, color-mix(in srgb, var(--night) 10%, transparent) 0%, color-mix(in srgb, var(--night) 55%, transparent) 45%, color-mix(in srgb, var(--night) 94%, transparent) 100%)}
.theme:hover img{transform:scale(1.05)}
.theme-txt{position:relative; z-index:1; padding:22px 24px; display:block; font-size:15px; color:var(--night-muted)}
.theme-txt b{display:block; font-family:var(--f-display); font-size:22px; color:var(--night-ink); margin-bottom:6px}
.plus-lien{display:flex; width:fit-content; align-items:center; gap:6px; margin-top:12px; font-weight:800; color:var(--night-ink)}
.plus-lien .ic{transition:transform .25s}
.theme:hover .plus-lien .ic{transform:translateX(4px)}
.theme.t-large{grid-column:span 2; grid-row:span 2}
.theme.t-accent{background:var(--sky); grid-column:span 2}
.theme.t-accent::after{display:none}
.theme.t-accent .theme-txt, .theme.t-accent .theme-txt b, .theme.t-accent .plus-lien{color:var(--sky-ink)}
@media (max-width:900px){ .themes-grid{grid-template-columns:1fr 1fr} .theme.t-large{grid-row:span 1} }
@media (max-width:560px){ .themes-grid{grid-template-columns:1fr} .theme.t-large, .theme.t-accent{grid-column:auto} }

/* ---------- Se préparer : cartes d'astuces ---------- */
.astuces-s{padding-top:0}
.astuces{display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:32px; align-items:start}
.astuce{background:var(--surface); border-radius:var(--r); box-shadow:0 1px 0 var(--line); transition:box-shadow .3s}
.astuce.open{box-shadow:inset 0 0 0 1.5px var(--sky)}
.astuce > button{display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:12px; width:100%; text-align:left; background:none; border:0; padding:16px 18px; cursor:pointer}
.astuce > button > .ic:first-child{width:24px; height:24px; color:var(--sky)}
.astuce b{font-family:var(--f-display); font-size:17px; font-weight:600}
.astuce .ic.chev{color:var(--muted)}
.astuce .more > div > p{padding:0 18px 18px 54px; font-size:15px; color:var(--muted)}
.prep .head p{margin-top:12px}
@media (max-width:900px){ .astuces{grid-template-columns:1fr 1fr} }
@media (max-width:560px){ .astuces{grid-template-columns:1fr} }

/* ---------- Découvrir & visiter : questions fréquentes ---------- */
.faq-s{background:var(--surface)}
.faq-grid{display:grid; grid-template-columns:.8fr 1.2fr; gap:56px; align-items:start}
.faq-grid .head p a{color:var(--sky); font-weight:800; text-decoration:none}
.parking{display:grid; grid-template-columns:auto 1fr; gap:14px; margin-top:28px; padding:18px 20px; border-radius:var(--r); background:var(--sky-soft)}
.parking > .ic{width:28px; height:28px; color:var(--sky)}
.parking p{font-size:15px; margin:0; color:var(--ink)}
.parking b{display:block; font-family:var(--f-display); font-size:18px}
.faq{display:grid; gap:10px}
.faq-item{background:var(--bg); border-radius:var(--r); transition:box-shadow .3s}
.faq-item.open{box-shadow:inset 0 0 0 1.5px var(--sky)}
.faq-item > button{display:flex; align-items:center; gap:14px; width:100%; text-align:left; background:none; border:0; padding:16px 20px; cursor:pointer}
.faq-item > button b{flex:1; font-family:var(--f-display); font-size:18px; font-weight:600}
.faq-item .ic.chev{color:var(--muted)}
.faq-item .more > div > p{padding:0 20px 18px; color:var(--muted)}
@media (max-width:900px){ .faq-grid{grid-template-columns:1fr; gap:28px} }

/* ---------- Mentions légales ---------- */
.legal-wrap{max-width:78ch}
.legal h2{font-size:24px; margin:36px 0 10px}
.legal h2:first-child{margin-top:0}
.legal p{color:var(--muted); margin-top:10px}
.legal dl{display:grid; grid-template-columns:auto 1fr; gap:10px 24px; margin:18px 0 0}
.legal dt{font-weight:800}
.legal dd{margin:0; color:var(--muted)}
@media (max-width:560px){ .legal dl{grid-template-columns:1fr; gap:2px} .legal dd{margin-bottom:10px} }

/* ---------- Bandeau d'appel (bas des pages) ---------- */
.appel{padding-block:0 96px}
.engage + .appel, .faq-s + .appel{padding-top:72px}
.appel .boite{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:20px 32px; padding:32px 36px; border-radius:var(--r); background:var(--night); color:var(--night-ink)}
.appel h2{font-size:clamp(24px,2.6vw,32px)}
.appel p{color:var(--night-muted); margin-top:6px}
.nav ul a[aria-current]{color:var(--ink); border-bottom-color:var(--sky)}

/* Accueil : le h1 porte la recherche visée et le nom */
.hero h1 .label{display:block; font-size:14px; letter-spacing:.14em; margin-bottom:14px}
.hero h1 .h1-titre{display:block}
