:root{
  --bg:      #FBF6EC;
  --ink:     #2B1B0E;
  --rust:    #4B3118;
  --line:    rgba(43,27,14,0.12);
  --muted:   rgba(43,27,14,0.6);
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:"Inter","Segoe UI",Helvetica,Arial,sans-serif;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3,.display{ font-family:"Fraunces","Iowan Old Style",Georgia,serif; color:var(--rust); font-weight:500; letter-spacing:-0.01em; }
em{ font-style:italic; font-weight:400; }
a{ color:inherit; }
img{ max-width:100%; display:block; }

.container{ max-width:1180px; margin:0 auto; padding:0 6vw; }

/* ---------- reveal-on-scroll (progressive enhancement) ---------- */
.reveal{ transition:opacity .9s ease, transform .9s ease; }
html.js .reveal{ opacity:0; transform:translateY(16px); }
html.js .reveal.is-visible{ opacity:1; transform:none; }

/* ---------- header ---------- */
header{
  position:sticky; top:0; z-index:60;
  display:flex; align-items:center; justify-content:space-between;
  padding:22px 6vw;
  background:rgba(251,246,236,0.88);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);
}
header img.logo-mark{ height:34px; width:auto; }
nav{ display:flex; gap:2.4rem; font-size:0.72rem; letter-spacing:0.14em; text-transform:uppercase; font-weight:500; }
nav a{ text-decoration:none; color:var(--muted); transition:color .2s; }
nav a:hover, nav a.active{ color:var(--rust); }
.btn-ghost{
  padding:0.55rem 1.4rem; border:1px solid var(--rust); color:var(--rust);
  border-radius:100px; text-decoration:none; font-size:0.7rem; font-weight:500;
  letter-spacing:0.1em; text-transform:uppercase; white-space:nowrap; transition:background .25s, color .25s;
}
.btn-ghost:hover{ background:var(--rust); color:var(--bg); }

/* ---------- generic ctas ---------- */
.btn-primary{
  padding:0.95rem 2.1rem; background:var(--rust); color:var(--bg); text-decoration:none;
  border-radius:100px; font-size:0.72rem; font-weight:500; letter-spacing:0.1em; text-transform:uppercase;
  display:inline-block; transition:opacity .2s;
}
.btn-primary:hover{ opacity:0.82; }
.link-arrow{
  text-decoration:none; font-size:0.78rem; font-weight:500; letter-spacing:0.04em;
  color:var(--rust); border-bottom:1px solid var(--rust); padding-bottom:2px;
}
.link-arrow:after{ content:"→"; margin-left:0.4em; display:inline-block; transition:transform .2s; }
.link-arrow:hover:after{ transform:translateX(3px); }

/* ---------- hero (accueil) ---------- */
.hero{
  min-height:88vh; display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; padding:8vw 6vw; position:relative;
}
.hero img.mark{ width:min(9vw,88px); margin-bottom:2.4rem; opacity:0.92; }
.hero-eyebrow{ font-size:0.72rem; letter-spacing:0.22em; text-transform:uppercase; color:var(--muted); margin-bottom:1.6rem; }
.hero h1{
  font-size:clamp(2.1rem,4.6vw,3.6rem); line-height:1.18; font-weight:500;
  max-width:16ch; margin:0 0 1.8rem;
}
.hero p{ font-size:1.05rem; line-height:1.75; max-width:44ch; color:var(--muted); margin:0 0 2.6rem; }
.hero-disciplines{
  margin-top:4rem; display:flex; gap:1.4rem; font-size:0.72rem; letter-spacing:0.14em;
  text-transform:uppercase; color:var(--muted);
}
.hero-disciplines span:not(:last-child):after{ content:"·"; margin-left:1.4rem; opacity:0.5; }

/* ---------- page header (pages internes) ---------- */
.page-header{ padding:8vw 6vw 2vw; text-align:left; }
.page-header .kicker{ margin-bottom:1rem; }
.page-header h1{ font-size:clamp(2.2rem,4.8vw,3.4rem); font-weight:500; max-width:14ch; margin:0 0 1.4rem; }
.page-header p{ max-width:52ch; line-height:1.75; color:var(--muted); font-size:1.02rem; }

/* ---------- section shell ---------- */
section{ padding:6vw 0; }
.kicker{ font-size:0.72rem; letter-spacing:0.2em; text-transform:uppercase; color:var(--muted); }
.section-title{ font-size:clamp(1.9rem,3.6vw,2.6rem); font-weight:500; margin:0.6rem 0 1.6rem; max-width:14ch; }
.section-sub{ max-width:52ch; line-height:1.75; color:var(--muted); font-size:1.02rem; margin-bottom:3.5rem; }
.rule{ border:0; border-top:1px solid var(--line); margin:0; }

/* ---------- discipline index list ---------- */
.index-row{
  display:grid; grid-template-columns:64px 1fr 1.4fr; gap:2.4rem; align-items:baseline;
  padding:2.6rem 0; border-top:1px solid var(--line);
}
.index-list .index-row:last-child{ border-bottom:1px solid var(--line); }
.index-num{ font-size:0.85rem; color:var(--muted); font-variant-numeric:tabular-nums; }
.index-name{ font-family:"Fraunces",serif; font-size:clamp(1.5rem,2.6vw,2.1rem); font-weight:500; color:var(--rust); }
.index-desc{ line-height:1.75; color:var(--muted); font-size:0.98rem; max-width:52ch; }
.index-desc a{ display:inline-block; margin-top:1rem; }

/* ---------- formules list ---------- */
.formule-row{
  display:grid; grid-template-columns:1fr 1.6fr; gap:2.4rem; padding:2.4rem 0; border-top:1px solid var(--line);
  align-items:baseline;
}
.formule-list .formule-row:last-of-type{ border-bottom:1px solid var(--line); }
.formule-row h3{ font-size:1.3rem; font-weight:500; margin:0; }
.formule-row p{ line-height:1.75; color:var(--muted); margin:0; font-size:0.98rem; }
.formule-note{ font-size:0.85rem; color:var(--muted); margin-top:2rem; font-style:italic; }

/* ---------- quiet cta band ---------- */
.band{
  text-align:center; padding:5vw 6vw; border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.band h2{ font-size:clamp(1.5rem,2.8vw,2.1rem); font-weight:500; margin:0 auto 1.8rem; max-width:20ch; }

/* ---------- photo placeholder panel ---------- */
.photo-panel{
  aspect-ratio:16/9; border-radius:2px; overflow:hidden; position:relative;
  background:linear-gradient(160deg, #EFE3CC, var(--bg));
}
.photo-panel svg{ position:absolute; inset:0; width:100%; height:100%; opacity:0.55; }
.photo-caption{ font-size:0.78rem; color:var(--muted); margin-top:1rem; font-style:italic; }

/* ---------- infos ---------- */
.infos{ display:grid; grid-template-columns:repeat(3,1fr); gap:4vw; }
.infos h3{ font-family:"Inter",sans-serif; text-transform:uppercase; letter-spacing:0.14em; font-size:0.7rem; color:var(--muted); margin:0 0 1rem; font-weight:500; }
.infos p{ line-height:1.8; margin:0 0 0.4rem; }
.infos a{ text-decoration:underline; text-underline-offset:3px; }

.booking-frame{
  border:1px solid var(--line); border-radius:2px; padding:1.5rem; min-height:200px;
}

footer{
  background:var(--rust); color:var(--bg); padding:5vw 6vw 2rem;
}
footer .foot-top{ display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:2.5rem; padding-bottom:3rem; }
footer img{ height:30px; width:auto; margin-bottom:1.4rem; opacity:0.95; }
footer .foot-col{ font-size:0.85rem; line-height:2; opacity:0.8; }
footer .foot-col a{ text-decoration:none; }
footer .foot-nav{ display:flex; flex-direction:column; gap:0.7rem; font-size:0.72rem; text-transform:uppercase; letter-spacing:0.12em; }
footer .foot-nav a{ text-decoration:none; opacity:0.85; }
footer .copyright{ border-top:1px solid rgba(251,246,236,0.18); padding-top:1.4rem; font-size:0.7rem; opacity:0.55; }

@media (max-width:880px){
  nav{ display:none; }
  .infos{ grid-template-columns:1fr; }
  .index-row{ grid-template-columns:1fr; gap:0.8rem; }
  .formule-row{ grid-template-columns:1fr; gap:0.6rem; }
  footer .foot-top{ flex-direction:column; }
}
