
:root{
  --black:#080808; --ink:#111; --muted:#707070; --line:#e5e5e5; --soft:#f5f5f5;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:var(--ink);background:#fff}
img{display:block;width:100%}
a{color:inherit;text-decoration:none}
.topbar{height:76px;padding:0 5vw;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:rgba(255,255,255,.94);backdrop-filter:blur(18px);z-index:20;border-bottom:1px solid rgba(0,0,0,.06)}
.brand{display:inline-flex;align-items:baseline;gap:8px;letter-spacing:-.04em}
.brand-main{font-size:22px;font-weight:800}
.brand-sub{font-size:9px;letter-spacing:.2em;font-weight:600}
.nav{display:flex;align-items:center;gap:28px;font-size:13px}
.nav a:not(.nav-cta){color:#555}
.nav-cta{background:#111;color:#fff;padding:11px 17px;border-radius:999px}
.menu-btn{display:none;background:none;border:0;font:inherit}
.hero{min-height:calc(100vh - 76px);position:relative;display:flex;align-items:flex-end;overflow:hidden;background:#111}
.hero>img{position:absolute;inset:0;height:100%;object-fit:cover;object-position:center 55%}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.72) 0%,rgba(0,0,0,.45) 45%,rgba(0,0,0,.07) 75%),linear-gradient(0deg,rgba(0,0,0,.35),transparent 45%)}
.hero-copy{position:relative;color:#fff;padding:10vh 7vw 9vh;max-width:900px}
.kicker,.eyebrow{font-size:10px;letter-spacing:.22em;font-weight:700;color:#777}
.kicker{color:#ddd}
.hero h1,.section h2,.dark-section h2{font-size:clamp(48px,7vw,100px);line-height:.91;letter-spacing:-.065em;margin:24px 0 30px;font-weight:700}
.hero h1 span,.section h2 span,.dark-section h2 span{color:#8a8a8a}
.hero-lead{max-width:650px;font-size:clamp(17px,1.5vw,21px);line-height:1.55;color:#e3e3e3}
.hero-actions{display:flex;align-items:center;gap:28px;margin-top:32px}
.btn{display:inline-block;padding:15px 22px;border-radius:999px;font-size:13px;font-weight:600}
.btn-light{background:#fff;color:#111}
.text-link{font-size:13px;color:#ddd}
.section{padding:130px 8vw}
.intro{text-align:center}
.intro h2{margin-left:auto;margin-right:auto}
.wide-copy{max-width:820px;margin:0 auto;color:#646464;font-size:19px;line-height:1.75}
.three-cols{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.three-cols article{padding:64px 5vw;border-right:1px solid var(--line)}
.three-cols article:last-child{border-right:0}
.num{font-size:11px;color:#9a9a9a}
.three-cols h3{font-size:25px;margin:32px 0 16px;letter-spacing:-.03em}
.three-cols p{color:#666;line-height:1.7}
.feature-split{display:grid;grid-template-columns:.8fr 1.2fr;gap:8vw;align-items:center}
.feature-split img{height:min(720px,72vh);object-fit:cover;border-radius:2px}
.feature-copy h2{font-size:clamp(44px,5.8vw,80px)}
.feature-copy>p{color:#666;line-height:1.75;font-size:17px}
.checklist{list-style:none;padding:0;margin:34px 0 0;border-top:1px solid var(--line)}
.checklist li{padding:16px 0;border-bottom:1px solid var(--line);font-size:14px}
.section-head{display:flex;align-items:end;justify-content:space-between;gap:40px;margin-bottom:54px}
.section-head h2{font-size:clamp(44px,5.8vw,78px);margin-bottom:0}
.section-head>p{max-width:340px;color:#777;line-height:1.6}
.gallery-grid{display:grid;grid-template-columns:1.4fr .8fr .8fr;grid-auto-rows:320px;gap:12px}
.gallery-grid figure{margin:0;overflow:hidden;background:#eee}
.gallery-grid img{height:100%;object-fit:cover;transition:transform .55s ease}
.gallery-grid figure:hover img{transform:scale(1.025)}
.g1{grid-row:span 2}.g5{grid-column:span 2}
.dark-section{background:#080808;color:white;padding:130px 7vw}
.dark-copy{max-width:930px;margin-bottom:70px}
.dark-copy p{max-width:760px;color:#aaa;line-height:1.75;font-size:18px}
.light{color:#aaa}
.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.detail-card{background:#141414;padding-bottom:28px}
.detail-card img{height:420px;object-fit:cover}
.detail-card h3{font-size:20px;margin:26px 26px 10px}
.detail-card p{color:#999;line-height:1.65;margin:0 26px}
.steps h2{font-size:clamp(44px,5.8vw,78px)}
.steps-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:34px;margin-top:70px}
.steps-grid article{border-top:1px solid #ccc;padding-top:20px}
.steps-grid span{font-size:11px;color:#999}
.steps-grid h3{font-size:19px;line-height:1.25;margin:32px 0 12px}
.steps-grid p{color:#666;line-height:1.65}
.seo-copy{background:var(--soft);display:grid;grid-template-columns:1fr 1fr;gap:9vw}
.seo-copy h2{font-size:clamp(42px,5vw,68px)}
.seo-text{align-self:center;color:#626262;line-height:1.8;font-size:16px}
.quote{display:grid;grid-template-columns:.8fr 1.2fr;gap:9vw}
.quote-head h2{font-size:clamp(46px,5.8vw,78px)}
.quote-head>p:last-child{color:#666;line-height:1.75;max-width:470px}
.quote-form{display:flex;flex-direction:column;gap:22px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:22px}
label{display:flex;flex-direction:column;gap:8px;font-size:11px;color:#666}
input,select,textarea{width:100%;font:inherit;color:#111;background:transparent;border:0;border-bottom:1px solid #bbb;border-radius:0;padding:13px 2px;outline:none}
input:focus,select:focus,textarea:focus{border-color:#111}
.file small{color:#999}
.consent{flex-direction:row;align-items:flex-start;gap:10px;line-height:1.5}
.consent input{width:auto;margin-top:2px}
.submit{background:#111;color:#fff;border:0;border-radius:999px;padding:16px 22px;font:inherit;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:space-between;cursor:pointer}
.hp{position:absolute!important;left:-9999px!important}
footer{background:#080808;color:#fff;padding:54px 5vw;display:flex;justify-content:space-between;gap:40px;align-items:flex-end}
footer p{color:#888;font-size:12px;margin:14px 0 0}
.footer-links{display:flex;gap:24px;font-size:12px;color:#aaa}
.footer-brand .brand-main{font-size:18px}

@media (max-width:900px){
  .topbar{height:68px}
  .menu-btn{display:block}
  .nav{display:none;position:absolute;top:68px;left:0;right:0;background:#fff;padding:24px 5vw;flex-direction:column;align-items:flex-start;border-bottom:1px solid var(--line)}
  .nav.open{display:flex}
  .hero{min-height:82vh}
  .hero-copy{padding:80px 7vw 60px}
  .hero h1,.section h2,.dark-section h2{letter-spacing:-.05em}
  .hero-overlay{background:linear-gradient(90deg,rgba(0,0,0,.68),rgba(0,0,0,.25)),linear-gradient(0deg,rgba(0,0,0,.55),transparent 55%)}
  .section,.dark-section{padding:88px 7vw}
  .three-cols{grid-template-columns:1fr}
  .three-cols article{border-right:0;border-bottom:1px solid var(--line)}
  .three-cols article:last-child{border-bottom:0}
  .feature-split,.seo-copy,.quote{grid-template-columns:1fr}
  .feature-split img{height:58vh}
  .gallery-grid{grid-template-columns:1fr 1fr;grid-auto-rows:240px}
  .g1{grid-row:span 1;grid-column:span 2}
  .g5{grid-column:span 2}
  .detail-grid{grid-template-columns:1fr}
  .detail-card img{height:52vh}
  .steps-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .hero{min-height:88vh}
  .hero>img{object-position:56% center}
  .hero-actions{align-items:flex-start;flex-direction:column;gap:16px}
  .section-head{display:block}
  .section-head>p{margin-top:22px}
  .gallery-grid{grid-template-columns:1fr;grid-auto-rows:270px}
  .g1,.g5{grid-column:span 1}
  .steps-grid,.two{grid-template-columns:1fr}
  footer{display:block}
  .footer-links{margin-top:30px;flex-wrap:wrap}
}


/* ===== Configurateur d'escalier ===== */
.configurator{gap:18px}
.config-step{border-top:1px solid var(--line);padding:28px 0 12px}
.config-step:first-child{border-top:0;padding-top:0}
.config-step-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:24px}
.config-step-head>span{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#111;color:#fff;font-size:10px;flex:0 0 auto}
.config-step-head strong{display:block;font-size:18px;color:#111;letter-spacing:-.02em}
.config-step-head small{display:block;color:#888;font-size:12px;line-height:1.5;margin-top:4px}

.stair-types{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.type-card{position:relative;border:1px solid var(--line);border-radius:14px;padding:18px 14px;min-height:104px;cursor:pointer;justify-content:space-between;transition:.18s ease;color:#222}
.type-card input{position:absolute;opacity:0;pointer-events:none}
.type-card .type-icon{font-size:30px;line-height:1}
.type-card strong{font-size:12px}
.type-card:has(input:checked){border-color:#111;background:#111;color:#fff}
.type-card:focus-within{outline:2px solid #111;outline-offset:2px}

.measure-layout{display:grid;grid-template-columns:1.08fr .92fr;gap:26px;align-items:start}
.measure-sketch{background:#f4f4f2;border-radius:18px;padding:18px}
.sketch-top{display:flex;justify-content:space-between;gap:14px;align-items:baseline;margin-bottom:8px}
.sketch-top>span:first-child{font-size:14px;font-weight:700}
.sketch-note{font-size:9px;color:#888;text-transform:uppercase;letter-spacing:.1em}
#stair-svg{width:100%;height:auto;display:block}
.floor-line{fill:none;stroke:#8a8a8a;stroke-width:4;stroke-linecap:round}
.stair-line,.step-line,.quarter-outline,.quarter-inner,.turn-line{fill:none;stroke:#111;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}
.step-line{stroke-width:2.2}
.quarter-inner,.quarter-outline{stroke-width:4}
.turn-line{stroke-width:2;stroke-dasharray:5 5}
.dim{stroke:#858585;stroke-width:1.5}
.arrow-fill{fill:#858585}
.dim-text{font-size:20px;font-weight:800;fill:#555}
.hint-text{font-size:12px;font-weight:600;fill:#777}
.turn-label{font-size:13px;font-weight:700;fill:#333}
.inset-bg{fill:#fff;stroke:#ddd}
#stair-svg .is-highlight.dim{stroke:#111;stroke-width:3}
#stair-svg .is-highlight.dim-text{fill:#111;font-size:25px}
#stair-svg .is-dimmed{opacity:.22}
.measure-help{background:#fff;border-radius:12px;padding:16px 18px;margin-top:8px;min-height:86px}
.measure-help strong{font-size:13px}
.measure-help p{font-size:12px;line-height:1.55;color:#777;margin:6px 0 0}

.measure-fields{display:flex;flex-direction:column;gap:10px}
.measure-field{border:1px solid var(--line);border-radius:12px;padding:13px 14px;transition:.18s ease;cursor:text;background:#fff}
.measure-field>span{display:flex;align-items:center;gap:8px;font-size:12px;color:#555}
.measure-field b{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#eee;color:#111}
.measure-field.is-active{border-color:#111}
.measure-field.is-active b{background:#111;color:#fff}
.input-unit{display:flex;align-items:center;gap:8px}
.input-unit input{font-size:20px;font-weight:650;padding:8px 0 5px}
.input-unit em{font-style:normal;color:#999;font-size:11px}
.quarter-only{display:none}
.is-quarter .quarter-only{display:flex}
.more-measures{border-top:1px solid var(--line);margin-top:4px;padding-top:12px}
.more-measures summary{cursor:pointer;font-size:12px;font-weight:600;color:#555;margin-bottom:14px}
.more-measures label{font-size:10px}

.calc-step{padding-bottom:20px}
.calc-empty{padding:28px;border:1px dashed #cfcfcf;border-radius:14px;color:#888;text-align:center;font-size:13px}
.calc-result{border-radius:18px;background:#111;color:#fff;padding:24px}
.calc-main{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#333;border-radius:12px;overflow:hidden}
.calc-big{background:#111;padding:18px 13px}
.calc-big span{display:block;font-size:28px;font-weight:720;letter-spacing:-.04em}
.calc-big small{font-size:9px;color:#999;text-transform:uppercase;letter-spacing:.08em}
.comfort{margin-top:24px}
.comfort>div:first-child{display:flex;justify-content:space-between;gap:15px;font-size:12px}
.comfort strong{font-size:14px}
.comfort-bar{height:9px;background:#3a3a3a;border-radius:999px;position:relative;margin:10px 0}
.comfort-zone{position:absolute;left:35%;width:30%;height:100%;border-radius:999px;background:#8b8b8b}
.comfort-bar i{position:absolute;top:-4px;width:3px;height:17px;background:white;border-radius:2px;z-index:2;left:50%}
.comfort p,.calc-notes p{color:#aaa;font-size:11px;line-height:1.5}
.calc-notes{display:grid;grid-template-columns:1fr 1fr;gap:14px;border-top:1px solid #333;margin-top:18px;padding-top:16px}
.calc-notes strong{color:#fff}
.calc-disclaimer{font-size:10px;color:#999;line-height:1.5;margin:12px 0 0}

@media (max-width:900px){
  .measure-layout{grid-template-columns:1fr}
  .measure-sketch{position:relative}
}
@media (max-width:620px){
  .stair-types{grid-template-columns:1fr 1fr}
  .type-card{min-height:82px}
  .calc-main{grid-template-columns:1fr 1fr}
  .calc-notes{grid-template-columns:1fr}
  .sketch-top{display:block}
  .sketch-note{display:block;margin-top:3px}
}


/* Correctif V3 : croquis réellement dynamique */
#stair-svg .dim{stroke:#9a9a9a;stroke-width:1.6;fill:none;color:#9a9a9a}
#stair-svg .active-dim{stroke:#111;stroke-width:3;color:#111}
#stair-svg .dim-label{font-size:13px;font-weight:750;fill:#8a8a8a}
#stair-svg .active-label{fill:#111;font-size:16px}
#stair-svg .tread-line{stroke:#333;stroke-width:2}
#stair-svg .turn-arrow{fill:none;stroke:#111;stroke-width:2.5}
#stair-svg .info-box{fill:#fff;stroke:#d7d7d7}
#stair-svg .info-main{font-size:17px;font-weight:800;fill:#111}
#stair-svg .info-sub{font-size:11px;font-weight:600;fill:#777}

/* V4 — système JAK : volées droites + palier uniquement découpé */
#stair-svg .flight-box{fill:#fff;stroke:#111;stroke-width:3}
#stair-svg .turning-box{fill:#efefed;stroke:#111;stroke-width:3}
#stair-svg .winder-line{stroke:#111;stroke-width:2.4}


/* V5 — titre du configurateur au-dessus, croquis plus large */
.quote{
  display:block;
}
.quote-head{
  width:100%;
  max-width:980px;
  margin:0 0 46px;
}
.quote-head h2{
  max-width:900px;
  margin-bottom:18px;
}
.quote-head>p:last-child{
  max-width:760px;
}
.quote-form{
  width:100%;
}
.measure-layout{
  grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr);
  gap:34px;
}
.measure-sketch{
  padding:22px;
}
#stair-svg{
  width:100%;
  min-height:430px;
}
@media (max-width:900px){
  .quote-head{margin-bottom:34px}
  .measure-layout{grid-template-columns:1fr}
  #stair-svg{min-height:0}
}


/* V6 — sens de montée et indication du haut */
#stair-svg .direction-arrow{
  fill:none;
  stroke:#111;
  stroke-width:3.5;
  stroke-linecap:round;
  stroke-linejoin:round;
  color:#111;
}
#stair-svg .direction-label{
  fill:#111;
  font-size:11px;
  font-weight:800;
  letter-spacing:.08em;
}
#stair-svg .top-label{
  fill:#111;
  font-size:14px;
  font-weight:900;
  letter-spacing:.08em;
}


/* V7 — moteur de configuration basé sur les caissons JAK */
.module-plan{
  margin-top:22px;
  border-top:1px solid #333;
  padding-top:20px;
}
.module-plan-title{
  display:flex;
  justify-content:space-between;
  gap:20px;
  align-items:flex-end;
  margin-bottom:14px;
}
.module-plan-title strong{
  font-size:14px;
}
.module-plan-title span{
  color:#888;
  font-size:9px;
  text-transform:uppercase;
  letter-spacing:.08em;
  text-align:right;
}
.module-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:1px;
  background:#333;
  border-radius:10px;
  overflow:hidden;
}
.module-grid>div{
  background:#161616;
  padding:14px 12px;
}
.module-grid span{
  display:block;
  font-size:20px;
  font-weight:800;
}
.module-grid small{
  display:block;
  margin-top:4px;
  color:#8e8e8e;
  font-size:8px;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.module-detail{
  margin-top:14px;
  color:#aaa;
  font-size:11px;
  line-height:1.65;
}
.module-detail strong{color:#fff}
@media(max-width:620px){
  .module-plan-title{display:block}
  .module-plan-title span{display:block;text-align:left;margin-top:6px}
  .module-grid{grid-template-columns:1fr 1fr}
}


/* V8 — nombre exact de blocs + giron réglable 180 à 250 mm */
#stair-svg .module-box{
  fill:#fff;
  stroke:#111;
  stroke-width:2;
}
#stair-svg .module-number{
  fill:#111;
  font-size:10px;
  font-weight:800;
  pointer-events:none;
}
#stair-svg .angle-num{
  font-size:9px;
}
#stair-svg .tread-top{
  stroke:#111;
  stroke-width:2.4;
}


/* V9 — règles atelier + schéma recentré */
#stair-svg .landing-box{
  fill:#ececea;
  stroke:#111;
  stroke-width:2.4;
  stroke-dasharray:5 3;
}
.measure-sketch{
  overflow:hidden;
}
#stair-svg{
  display:block;
  margin:0 auto;
}


/* V12 — cote L = volée droite + largeur W du tournant */
#stair-svg .info-sub{
  paint-order:stroke;
  stroke:#f1f1ef;
  stroke-width:2px;
  stroke-linejoin:round;
}


/* V13 — ordre R puis L + croquis à échelle commune */
#stair-svg .scale-note{
  fill:#666;
  font-size:9px;
  font-weight:600;
  letter-spacing:.035em;
}


/* V14 — marches balancées rayonnant depuis le centre du tournant */
#stair-svg .turn-center{
  fill:#111;
  stroke:#fff;
  stroke-width:1.5;
}


/* V21 — bloc contact final dans la charte JAK Escaliers */
.help-contact{
  background:#fff;
  border-top:1px solid var(--line);
  padding:72px 5vw;
}
.help-contact-inner{
  max-width:1280px;
  margin:0 auto;
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(420px,.9fr);
  gap:72px;
  align-items:center;
}
.help-contact-person{
  display:grid;
  grid-template-columns:150px minmax(0,1fr);
  gap:34px;
  align-items:center;
}
.help-contact-person img{
  width:150px;
  height:150px;
  object-fit:cover;
  border-radius:50%;
  filter:grayscale(100%);
  border:1px solid #ddd;
}
.help-contact h2{
  margin:9px 0 14px;
  font-size:clamp(36px,4.4vw,62px);
  line-height:.95;
  letter-spacing:-.055em;
}
.help-contact-copy{
  max-width:610px;
  margin:0;
  color:#666;
  font-size:16px;
  line-height:1.7;
}
.help-contact-name{
  margin:18px 0 0;
  font-size:13px;
  font-weight:700;
}
.help-contact-name span{
  color:#888;
  font-weight:500;
}
.help-contact-actions{
  border-top:1px solid #dcdcdc;
}
.help-action{
  min-height:82px;
  display:grid;
  grid-template-columns:46px 1fr;
  gap:18px;
  align-items:center;
  border-bottom:1px solid #dcdcdc;
  transition:padding .2s ease, background .2s ease;
}
.help-action:hover{
  padding-left:10px;
  background:#fafafa;
}
.help-action-icon{
  width:42px;
  height:42px;
  border:1px solid #111;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:12px;
  font-weight:800;
  letter-spacing:-.03em;
}
.help-action span:last-child{
  display:flex;
  flex-direction:column;
  gap:4px;
}
.help-action small{
  color:#888;
  font-size:9px;
  text-transform:uppercase;
  letter-spacing:.13em;
}
.help-action strong{
  font-size:15px;
  font-weight:650;
}
.help-action-primary .help-action-icon{
  background:#111;
  color:#fff;
}

@media(max-width:900px){
  .help-contact-inner{
    grid-template-columns:1fr;
    gap:46px;
  }
}
@media(max-width:560px){
  .help-contact{
    padding:58px 7vw;
  }
  .help-contact-person{
    grid-template-columns:86px 1fr;
    gap:20px;
    align-items:start;
  }
  .help-contact-person img{
    width:86px;
    height:86px;
  }
  .help-contact h2{
    font-size:38px;
  }
  .help-contact-copy{
    grid-column:1/-1;
  }
  .help-contact-actions{
    margin-top:4px;
  }
}

/* V24 — icônes contact intégrées, aucun fichier externe nécessaire */
.help-action-icon svg{display:block}


/* V27 — estimation tarifaire intégrée au configurateur */
.price-estimate{
  margin-top:22px;
  padding-top:20px;
  border-top:1px solid #333;
}
.price-estimate-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:20px;
  margin-bottom:14px;
}
.price-estimate-head strong{
  font-size:14px;
}
.price-estimate-head span{
  color:#888;
  font-size:9px;
  text-transform:uppercase;
  letter-spacing:.08em;
  text-align:right;
}
.price-estimate-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.price-card{
  background:#181818;
  border:1px solid #303030;
  border-radius:12px;
  padding:20px;
}
.price-card-complete{
  background:#f4f4f2;
  color:#111;
  border-color:#f4f4f2;
}
.price-card small{
  display:block;
  color:#8d8d8d;
  font-size:8px;
  font-weight:750;
  letter-spacing:.12em;
  margin-bottom:10px;
}
.price-card h4{
  margin:0;
  font-size:13px;
  line-height:1.45;
  font-weight:650;
}
.price-range{
  margin:18px 0 12px;
  font-size:clamp(24px,3vw,34px);
  font-weight:800;
  letter-spacing:-.045em;
  white-space:nowrap;
}
.price-card p{
  margin:0;
  color:#8e8e8e;
  font-size:10px;
  line-height:1.55;
}
.price-card-complete p{
  color:#6f6f6f;
}
.price-note{
  margin:12px 0 0;
  color:#777;
  font-size:9px;
  line-height:1.55;
}
@media(max-width:620px){
  .price-estimate-head{display:block}
  .price-estimate-head span{display:block;text-align:left;margin-top:6px}
  .price-estimate-grid{grid-template-columns:1fr}
  .price-range{font-size:28px}
}
