:root{
    --bg:#F3F5F6; --bg-2:#E6EEF2; --band:#E7EFF4;
    --ink:#072337; --ink-2:#12303F;
    --body:#3E4C57; --muted:#6E7A83; --faint:#9AA4AB;
    --accent:#A7834E; --accent-ink:#8A6A37; --rust:#7E3517;
    --btn:#072337; --btn-2:#0C3247; --on-accent:#EAF2F6; --field:#FFFFFF;
    --line:rgba(7,35,55,.12); --line-2:rgba(7,35,55,.22);
    --wrap:1080px;
    --serif:'Fraunces',Georgia,serif;
    --sans:'Inter',system-ui,-apple-system,sans-serif;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html{scroll-behavior:smooth}
  html,body{overflow-x:clip;max-width:100%}
  body{background:var(--bg);color:var(--body);font-family:var(--sans);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-wrap:break-word}
  .wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
  a{color:inherit;text-decoration:none}
  section{scroll-margin-top:84px}
  img{display:block;max-width:100%}

  .kicker{font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent-ink);font-weight:500}
  h1,h2,h3{font-family:var(--serif);font-weight:400;color:var(--ink);letter-spacing:-.01em;line-height:1.12}
  em{font-style:italic;color:var(--rust)}

  .btn{display:inline-block;font-size:13.5px;font-weight:500;padding:12px 20px;border-radius:6px;transition:transform .18s ease,background .18s ease,border-color .18s ease}
  .btn-primary{background:var(--btn);color:var(--on-accent)}
  .btn-primary:hover{background:var(--btn-2);transform:translateY(-1px)}
  .btn-ghost{border:1px solid var(--line-2);color:var(--ink-2)}
  .btn-ghost:hover{border-color:var(--accent-ink);transform:translateY(-1px)}

  header{position:sticky;top:0;z-index:50;background:transparent;transition:background .3s ease,border-color .3s ease;border-bottom:1px solid transparent}
  header.scrolled{background:rgba(243,245,246,.92);backdrop-filter:blur(8px);border-bottom-color:var(--line)}
  .nav{display:flex;align-items:center;justify-content:space-between;height:72px}
  .brand{font-family:var(--serif);font-size:18px;color:var(--ink)}
  .nav-links{display:flex;align-items:center;gap:24px}
  .nav-links a.link{font-size:13px;color:var(--body);transition:color .18s ease}
  .nav-links a.link:hover{color:var(--ink)}
  .burger{display:none;background:none;border:0;color:var(--ink);cursor:pointer;padding:8px;font-size:22px;line-height:1}

  .hero{padding:92px 0 72px}
  .hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:60px;align-items:center}
  .hero-media{border-radius:16px;overflow:hidden;border:1px solid var(--line-2);background:var(--bg-2)}
  .hero-media img{width:100%;height:100%;aspect-ratio:1/1;object-fit:cover;display:block}
  .hero .kicker{display:block;margin-bottom:24px}
  .hero h1{font-size:clamp(40px,6vw,58px);max-width:15ch}
  .hero p.lede{font-size:17px;line-height:1.75;color:var(--body);max-width:54ch;margin:28px 0 34px}
  .hero-cta{display:flex;gap:14px;flex-wrap:wrap}
  .badges{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:50px;padding-top:26px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
  .badges span{display:inline-flex;align-items:center;gap:8px}
  .badges span::before{content:"";width:5px;height:5px;background:var(--accent);border-radius:50%}

  .stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .stats-grid{display:grid;grid-template-columns:repeat(3,1fr)}
  .stat{padding:42px 0}
  .stat + .stat{border-left:1px solid var(--line);padding-left:38px}
  .stat .num{font-family:var(--serif);font-size:clamp(28px,7vw,38px);color:var(--accent);line-height:1.05;overflow-wrap:anywhere}
  .stat .lbl{font-size:13px;color:var(--muted);margin-top:10px}

  .block{padding:84px 0}
  .block > .kicker{display:block;margin-bottom:14px}
  .block h2{font-size:clamp(26px,3.4vw,34px);max-width:22ch;margin-bottom:20px}
  .prose{max-width:64ch}
  .prose p{margin-bottom:18px;color:var(--body)}
  .prose strong{color:var(--ink-2);font-weight:500}

  .cases{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:8px}
  .case{background:var(--bg);padding:32px 30px}
  .case::before{content:"";display:block;width:26px;height:2px;background:var(--accent);margin-bottom:18px}
  .case h3{font-family:var(--sans);font-size:16px;font-weight:500;color:var(--ink-2);margin-bottom:8px}
  .case p{font-size:13.5px;line-height:1.65;color:var(--muted)}

  .quote{background:var(--ink);color:#D7E3EC;margin:0;border-radius:0}
  .quote .wrap{padding:70px 28px}
  .quote blockquote{font-family:var(--serif);font-size:clamp(22px,3vw,30px);line-height:1.4;color:#EAF2F6;max-width:24ch;font-style:italic}
  .quote .src{font-size:13px;color:#7C93A3;margin-top:20px;letter-spacing:.02em}

  .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}
  .step .n{font-family:var(--serif);font-size:15px;color:var(--accent);margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--line)}
  .step h3{font-family:var(--sans);font-size:16.5px;font-weight:500;color:var(--ink-2);margin-bottom:10px}
  .step p{font-size:14px;line-height:1.7;color:var(--muted)}

  .refs{border-top:1px solid var(--line)}
  .refs .kicker{display:block;margin-bottom:26px;text-align:center}
  .ref-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px 30px}
  .ref-grid a{display:flex;align-items:center;justify-content:center;padding:14px;transition:transform .18s ease}
  .ref-grid a:hover{transform:translateY(-2px)}
  .ref-grid img{max-height:88px;max-width:100%;width:auto;object-fit:contain;mix-blend-mode:multiply;filter:grayscale(1);opacity:.82;transition:filter .2s ease,opacity .2s ease}
  .ref-grid a:hover img{filter:none;opacity:1}

  .bio{padding:84px 0;border-top:1px solid var(--line)}
  .bio-inner{display:grid;grid-template-columns:230px 1fr;gap:52px;align-items:start}
  .bio .portrait{border-radius:12px;overflow:hidden;border:1px solid var(--line);background:var(--bg-2)}
  .bio .portrait img{width:100%;height:auto}
  .bio h2{font-size:clamp(24px,3vw,30px);margin:14px 0 18px}
  .bio p{color:var(--body);margin-bottom:16px}
  .bio .creds{list-style:none;margin:20px 0 22px;padding:0;display:grid;gap:9px}
  .bio .creds li{font-size:14px;color:var(--body);padding-left:22px;position:relative}
  .bio .creds li::before{content:"";position:absolute;left:0;top:9px;width:9px;height:1px;background:var(--accent)}

  .cta-band{background:var(--band);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .cta-inner{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:60px 0}
  .cta-inner h2{font-size:clamp(24px,3vw,30px);max-width:24ch}

  .contact{padding:84px 0}
  .contact-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:56px;align-items:start}
  .contact .kicker{display:block;margin-bottom:14px}
  .contact h2{font-size:clamp(24px,3vw,30px);margin-bottom:16px}
  .coord{margin-top:26px;display:grid;gap:20px}
  .coord .k{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:5px}
  .coord .v{font-size:15px;color:var(--ink-2);overflow-wrap:anywhere}
  .coord a.v:hover{color:var(--accent-ink)}

  form{display:grid;gap:16px}
  .frow{display:grid;grid-template-columns:1fr 1fr;gap:16px}
  .f{display:flex;flex-direction:column;gap:7px}
  .f.full{grid-column:1 / -1}
  label{font-size:12px;letter-spacing:.05em;color:var(--muted);font-weight:500}
  label .req{color:var(--rust)}
  input,select,textarea{font-family:var(--sans);font-size:15px;color:var(--ink);background:var(--field);border:1px solid var(--line-2);border-radius:8px;padding:12px 14px;width:100%;transition:border-color .16s ease,box-shadow .16s ease}
  input::placeholder,textarea::placeholder{color:var(--faint)}
  input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-ink);box-shadow:0 0 0 3px rgba(138,106,55,.14)}
  textarea{resize:vertical;min-height:110px}
  fieldset{border:1px solid var(--line);border-radius:10px;padding:16px 16px 18px;grid-column:1 / -1}
  legend{font-size:12px;letter-spacing:.05em;color:var(--muted);font-weight:500;padding:0 8px}
  .creneau{display:grid;grid-template-columns:1fr 160px;gap:12px;margin-top:12px}
  .creneau:first-of-type{margin-top:4px}
  .consent{display:flex;gap:11px;align-items:flex-start;grid-column:1 / -1}
  .consent input{width:18px;height:18px;margin-top:3px;flex:none;accent-color:var(--accent-ink)}
  .consent label{font-size:13px;letter-spacing:0;color:var(--muted);font-weight:400;line-height:1.55}
  .actions{grid-column:1 / -1;display:flex;align-items:center;gap:16px;margin-top:4px}
  form button{font-family:var(--sans);font-size:14px;font-weight:500;color:var(--on-accent);background:var(--btn);border:0;border-radius:6px;padding:13px 24px;cursor:pointer;transition:background .18s ease,transform .18s ease}
  form button:hover{background:var(--btn-2);transform:translateY(-1px)}
  .note{font-size:12.5px;color:var(--faint)}
  .hp{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}
  .err{border-color:var(--rust)!important}
  .err-msg{color:var(--rust);font-size:12px;display:none}
  .err-msg.on{display:block}

  footer{background:#072337;padding:56px 0 42px;font-size:13px;color:#9DB4C4}
  .foot-top{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;padding-bottom:32px;border-bottom:1px solid rgba(255,255,255,.10)}
  .foot-brand{font-family:var(--serif);font-size:18px;color:#EAF2F6}
  .foot-cols{display:flex;gap:56px;flex-wrap:wrap}
  .foot-cols h4{font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:#7C93A3;margin-bottom:12px}
  .foot-cols a{display:block;color:#B9CAD5;padding:3px 0;transition:color .18s ease}
  .foot-cols a:hover{color:#EAF2F6}
  .foot-bottom{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:28px;color:#7C93A3;font-size:12.5px}
  .foot-bottom a{color:#B9CAD5}
  .foot-bottom a:hover{color:#C6A063}

  .js .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s cubic-bezier(.2,.6,.2,1),transform .7s cubic-bezier(.2,.6,.2,1)}
  .js .reveal.in{opacity:1;transform:none}
  @media (prefers-reduced-motion:reduce){
    html{scroll-behavior:auto}
    .js .reveal{opacity:1!important;transform:none!important;transition:none}
    .btn,.foot-cols a,.nav-links a.link,.ref-grid img{transition:none}
  }

  @media (max-width:880px){
    .hero-grid{grid-template-columns:1fr;gap:36px}
    .hero-media{max-width:460px}
    .bio-inner{grid-template-columns:1fr;gap:28px}
    .bio .portrait{max-width:220px}
    .contact-grid{grid-template-columns:1fr;gap:40px}
    .ref-grid{grid-template-columns:repeat(3,1fr)}
  }
  @media (max-width:720px){
    .burger{display:block}
    .nav-links{position:absolute;top:72px;left:0;right:0;flex-direction:column;align-items:flex-start;gap:0;background:var(--bg);border-bottom:1px solid var(--line);padding:8px 28px 20px;transform:translateY(-8px);opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}
    .nav-links.open{opacity:1;transform:none;pointer-events:auto}
    .nav-links a.link{padding:12px 0;width:100%;border-bottom:1px solid var(--line)}
    .nav-links .btn{margin-top:14px}
    .stats-grid{grid-template-columns:1fr}
    .stat + .stat{border-left:0;border-top:1px solid var(--line);padding-left:0}
    .cases{grid-template-columns:1fr}
    .steps{grid-template-columns:1fr;gap:32px}
    .ref-grid{grid-template-columns:repeat(2,1fr)}
    .frow{grid-template-columns:1fr}
    .creneau{grid-template-columns:1fr}
    .cta-inner{flex-direction:column;align-items:flex-start;gap:22px}
    .block,.bio,.contact{padding:60px 0}
    .hero{padding:60px 0 52px}
  }

/* ===== Pages document (CV, mentions légales) ===== */
.page-head{padding:84px 0 22px}
.page-head .kicker{display:block;margin-bottom:14px}
.page-head h1{font-size:clamp(30px,5vw,46px)}
.page-head .sub{color:var(--body);max-width:60ch;margin-top:16px}
.doc{padding:40px 0 88px;border-top:1px solid var(--line);margin-top:26px}
.doc h2{font-size:clamp(20px,2.6vw,26px);margin:46px 0 14px}
.doc h2:first-child{margin-top:0}
.doc h3{font-family:var(--sans);font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--accent-ink);margin:30px 0 12px}
.doc p{max-width:72ch;margin-bottom:14px;color:var(--body)}
.doc a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:2px}
.doc ul{max-width:72ch;margin:0 0 18px;padding:0;list-style:none;display:grid;gap:9px}
.doc ul li{padding-left:22px;position:relative;color:var(--body)}
.doc ul li::before{content:"";position:absolute;left:0;top:12px;width:9px;height:1px;background:var(--accent)}
.doc .meta{display:grid;grid-template-columns:190px 1fr;gap:9px 22px;max-width:660px;margin:6px 0 10px}
.doc .meta dt{color:var(--muted);font-size:14px}
.doc .meta dd{color:var(--ink-2);font-size:14px}
.doc .note{font-size:13px;color:var(--faint);border-left:2px solid var(--line-2);padding-left:16px;margin:22px 0}
@media (max-width:620px){.doc .meta{grid-template-columns:1fr;gap:2px 0}.doc .meta dd{margin-bottom:10px}}

/* ===== Accordéon (revue de presse) ===== */
.press{display:grid;gap:10px;margin-top:8px}
.acc{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;transition:border-color .18s ease}
.acc[open]{border-color:var(--line-2)}
.acc summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:16px;padding:20px 22px}
.acc summary::-webkit-details-marker{display:none}
.acc-tag{font-size:10.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:#fff;background:var(--accent);padding:5px 11px;border-radius:999px;white-space:nowrap}
.acc-tag.livre{background:var(--ink)}
.acc-tag.revue{background:var(--rust)}
.acc-tag.etude{background:#6E7A83}
.acc-title{font-family:var(--serif);font-size:17px;color:var(--ink);line-height:1.25}
.acc-meta{font-size:12px;color:var(--muted);white-space:nowrap}
.acc-chev{color:var(--faint);font-size:13px;transition:transform .2s ease}
.acc[open] .acc-chev{transform:rotate(180deg)}
.acc-body{padding:0 22px 22px;max-width:78ch}
.acc-body p{color:var(--body);font-size:14.5px;line-height:1.7;margin:0 0 14px}
.acc-body .by{font-size:12.5px;color:var(--muted);margin-bottom:10px}
.acc-body a.src-link{display:inline-block;font-size:13px;color:var(--accent-ink);text-decoration:none;border-bottom:1px solid var(--line-2);padding-bottom:1px}
.acc-body a.src-link:hover{border-color:var(--accent-ink)}
.press-lead{border-left:2px solid var(--accent);padding-left:22px;margin:0 0 34px;max-width:74ch}
@media (max-width:720px){
  .acc summary{grid-template-columns:auto 1fr auto;gap:12px;padding:16px 16px}
  .acc-meta{display:none}
  .acc-title{font-size:15.5px}
  .acc-body{padding:0 16px 18px}
}

/* ===== Hero plein cadre (image de fond + texte superposé) ===== */
.hero-full{position:relative;min-height:86vh;margin-top:-72px;display:flex;align-items:center;overflow:hidden;padding:0}
.hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(.5) contrast(1.05) brightness(.62)}
.hero-scrim{position:absolute;inset:0;background:linear-gradient(to bottom, rgba(7,35,55,.55) 0%, rgba(7,35,55,0) 18%), linear-gradient(100deg, rgba(7,35,55,.94) 0%, rgba(7,35,55,.9) 48%, rgba(7,35,55,.62) 66%, rgba(7,35,55,.3) 84%, rgba(7,35,55,.1) 100%)}
.hero-inner{position:relative;z-index:2;padding:172px 28px 84px;max-width:var(--wrap);width:100%}
.hero-full .kicker{display:block;margin-bottom:24px;color:#CBA262}
.hero-full h1{color:#F5EFE1;font-size:clamp(42px,6.2vw,62px);max-width:15ch;text-shadow:0 2px 24px rgba(4,18,30,.45)}
.hero-full em{color:#CBA262}
.hero-full p.lede{font-size:17px;line-height:1.75;color:#FFFFFF;max-width:52ch;margin:28px 0 34px;text-shadow:0 1px 3px rgba(3,14,24,.95), 0 0 24px rgba(3,14,24,.75)}
.hero-full .badges{border-top-color:rgba(255,255,255,.16);color:#9FB6C6}
.hero-full .badges span::before{background:#CBA262}
.hero-full .btn-primary{background:#CBA262;color:#0A1A24}
.hero-full .btn-primary:hover{background:#D8B679}
.hero-full .btn-ghost{border-color:rgba(255,255,255,.32);color:#EAF2F6}
.hero-full .btn-ghost:hover{border-color:#CBA262}

/* Nav claire tant qu'on est au-dessus du hero (home uniquement) */
body.has-hero header:not(.scrolled) .brand{color:#F5EFE1}
body.has-hero header:not(.scrolled) .nav-links a.link{color:#D6E1E9}
body.has-hero header:not(.scrolled) .nav-links a.link:hover{color:#fff}
body.has-hero header:not(.scrolled) .burger{color:#F5EFE1}
body.has-hero header:not(.scrolled) .nav-links .btn-primary{background:#CBA262;color:#0A1A24}

@media (max-width:720px){
  .hero-full{min-height:auto;align-items:flex-start}
  .hero-scrim{background:linear-gradient(180deg, rgba(7,35,55,.80) 0%, rgba(7,35,55,.52) 48%, rgba(7,35,55,.70) 100%)}
  .hero-inner{padding:168px 28px 60px}
  .hero-full p.lede{color:#FFFFFF}
}

/* Menu mobile ouvert au-dessus du hero : liens sombres sur fond clair du dropdown */
body.has-hero header:not(.scrolled) .nav-links.open a.link{color:var(--body)}
body.has-hero header:not(.scrolled) .nav-links.open a.link:hover{color:var(--ink)}

/* Home : header en overlay transparent par-dessus le hero (pas de bande) */
body.has-hero header{position:fixed;left:0;right:0;top:0}

/* ===== Fade-in du hero au chargement ===== */
@keyframes heroFadeIn{from{opacity:0}to{opacity:1}}
.hero-bg{animation:heroFadeIn 1.2s ease both}
.hero-full .hero-inner{animation:heroFadeIn 1s ease .15s both}
@media (prefers-reduced-motion:reduce){
  .hero-bg,.hero-full .hero-inner{animation:none}
}
