/*
Theme Name: Cabinet Strategie
Theme URI: https://expertisestrategie.fr
Author: Expertise & Stratégie
Description: Thème éditorial premium pour cabinet de pensée stratégique. Serif d'autorité, palette graphite/ivoire/laiton, schema E-E-A-T, motion CSS-first.
Version: 1.0.6
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 8.0
License: GNU General Public License v2 or later
Text Domain: cabinet-strategie
*/

/* ============================================================
   CABINET STRATEGIE — design system unique (anti-footprint)
   Palette : graphite #20232A · ivoire #EFEBE3 · laiton #C2A24A
   Serif autorité (titres) · grotesque propre (corps)
   ============================================================ */

:root{
  --graphite:#20232A;
  --graphite-2:#2C313B;
  --graphite-soft:#3A4150;
  --ivoire:#EFEBE3;
  --ivoire-2:#E5E0D5;
  --laiton:#C2A24A;
  --laiton-2:#A8862F;
  --encre:#15171C;
  --bone:#FBF9F4;
  --gris:#6E7480;
  --line:rgba(32,35,42,.14);
  --line-light:rgba(239,235,227,.16);

  --serif:"Spectral",Georgia,"Times New Roman",serif;
  --sans:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;

  --wrap:1180px;
  --narrow:720px;
  --r:3px;
  --t:.5s cubic-bezier(.16,.84,.44,1);
  --shadow:0 1px 2px rgba(21,23,28,.04),0 12px 40px -20px rgba(21,23,28,.22);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  margin:0;
  font-family:var(--sans);
  font-size:clamp(1rem,.96rem + .25vw,1.075rem);
  line-height:1.72;
  color:var(--encre);
  background:var(--bone);
  font-feature-settings:"kern","liga","cv05";
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

h1,h2,h3,h4{
  font-family:var(--serif);
  font-weight:600;
  line-height:1.08;
  letter-spacing:-.01em;
  color:var(--graphite);
  margin:0 0 .5em;
  text-wrap:balance;
}
h1{font-size:clamp(2.4rem,1.6rem + 3.4vw,4.1rem);font-weight:700}
h2{font-size:clamp(1.85rem,1.3rem + 2vw,2.7rem)}
h3{font-size:clamp(1.3rem,1.05rem + 1vw,1.65rem)}
p{margin:0 0 1.25rem}
a{color:var(--graphite);text-decoration-color:var(--laiton);text-underline-offset:3px;transition:color var(--t)}
a:hover{color:var(--laiton-2)}

img{max-width:100%;height:auto;display:block}
::selection{background:var(--laiton);color:var(--bone)}

.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:clamp(1.1rem,4vw,2.5rem)}
.narrow{max-width:var(--narrow);margin-inline:auto}

/* ---------- Eyebrow / kicker ---------- */
.kicker{
  font-family:var(--sans);
  font-size:.74rem;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--laiton-2);
  display:inline-flex;align-items:center;gap:.6rem;
  margin:0 0 1.1rem;
}
.kicker::before{content:"";width:1.8rem;height:1px;background:var(--laiton)}

/* big section numerals */
.numeral{
  font-family:var(--serif);
  font-weight:300;
  font-size:clamp(2.5rem,2rem + 3vw,4.5rem);
  line-height:1;
  color:var(--laiton);
  display:block;
  font-variant-numeric:lining-nums;
}

/* ============================================================
   HEADER
   ============================================================ */
.site-header{
  position:sticky;top:0;z-index:60;
  background:color-mix(in srgb,var(--bone) 86%,transparent);
  backdrop-filter:blur(14px) saturate(1.3);
  border-bottom:1px solid var(--line);
}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:74px}
.brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;flex-shrink:0}
.brand-mark{
  width:34px;height:34px;flex:0 0 34px;
  border:1.5px solid var(--graphite);
  display:grid;place-items:center;
  font-family:var(--serif);font-weight:700;font-size:1.15rem;color:var(--graphite);
  position:relative;
}
.brand-mark::after{content:"";position:absolute;inset:3px;border:1px solid var(--laiton);opacity:.7}
.brand-name{font-family:var(--serif);font-weight:700;font-size:1.18rem;color:var(--graphite);line-height:1;letter-spacing:-.01em}
.brand-name small{display:block;font-family:var(--sans);font-size:.6rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--gris);margin-top:.28rem}

.nav{display:flex;align-items:center;gap:1.9rem}
.nav a{font-family:var(--sans);font-size:.92rem;font-weight:500;text-decoration:none;color:var(--graphite-soft);position:relative}
.nav a::after{content:"";position:absolute;left:0;bottom:-5px;width:0;height:1.5px;background:var(--laiton);transition:width var(--t)}
.nav a:hover{color:var(--graphite)}
.nav a:hover::after{width:100%}
.nav .btn-contact{
  border:1.5px solid var(--graphite);padding:.5rem 1.1rem;color:var(--graphite);
}
.nav .btn-contact::after{display:none}
.nav .btn-contact:hover{background:var(--graphite);color:var(--bone)}

.nav-toggle{display:none;background:none;border:0;cursor:pointer;padding:.4rem;flex-direction:column;gap:5px}
.nav-toggle span{width:24px;height:2px;background:var(--graphite);transition:var(--t)}

@media(max-width:880px){
  .nav-toggle{display:flex}
  .nav{
    position:absolute;top:74px;left:0;right:0;
    flex-direction:column;align-items:flex-start;gap:0;
    background:var(--bone);border-bottom:1px solid var(--line);
    padding:.5rem clamp(1.1rem,4vw,2.5rem) 1.5rem;
    max-height:0;overflow:hidden;transition:max-height .4s ease;
  }
  .nav.open{max-height:420px}
  .nav a{padding:.85rem 0;width:100%;border-bottom:1px solid var(--line);font-size:1.05rem}
  .nav .btn-contact{margin-top:.9rem;border-width:1.5px;text-align:center;width:100%}
}

/* ============================================================
   HERO
   ============================================================ */
.hero{position:relative;padding:clamp(3.5rem,3rem + 6vw,7rem) 0 clamp(3rem,2rem + 5vw,5.5rem);overflow:hidden;background:var(--bone)}
.hero::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(120% 90% at 85% -10%,rgba(194,162,74,.10),transparent 55%),
    radial-gradient(80% 60% at -5% 110%,rgba(32,35,42,.05),transparent 50%);
}
.hero .wrap{position:relative;z-index:1}
.hero-grid{display:grid;grid-template-columns:1.45fr .85fr;gap:clamp(2rem,4vw,4rem);align-items:end}
.hero h1{margin:.2em 0 .55em}
.hero-lead{font-size:clamp(1.1rem,1rem + .55vw,1.32rem);color:var(--graphite-soft);max-width:34ch;line-height:1.6;margin-bottom:2rem}
.hero-cta{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}

.hero-aside{border-left:1px solid var(--line);padding-left:clamp(1.2rem,2vw,2rem)}
.hero-aside .stat{margin-bottom:1.8rem}
.hero-aside .stat:last-child{margin-bottom:0}
.hero-aside .stat b{font-family:var(--serif);font-weight:700;font-size:clamp(2rem,1.5rem + 2vw,2.9rem);color:var(--graphite);display:block;line-height:1}
.hero-aside .stat span{font-size:.86rem;color:var(--gris);display:block;margin-top:.4rem}

@media(max-width:820px){.hero-grid{grid-template-columns:1fr;gap:2.5rem}.hero-aside{border-left:0;border-top:1px solid var(--line);padding-left:0;padding-top:2rem;display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.hero-aside .stat{margin-bottom:0}.hero-lead{max-width:46ch}}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn{
  display:inline-flex;align-items:center;gap:.6rem;
  font-family:var(--sans);font-size:.95rem;font-weight:600;
  padding:.85rem 1.7rem;text-decoration:none;cursor:pointer;border:1.5px solid transparent;
  transition:transform var(--t),background var(--t),color var(--t),box-shadow var(--t);
  border-radius:var(--r);
}
.btn svg{width:16px;height:16px;transition:transform var(--t)}
.btn:hover svg{transform:translateX(4px)}
.btn-primary{background:var(--graphite);color:var(--bone)}
.btn-primary:hover{background:var(--encre);color:var(--bone);box-shadow:var(--shadow)}
.btn-ghost{border-color:var(--graphite);color:var(--graphite)}
.btn-ghost:hover{background:var(--graphite);color:var(--bone)}
.btn-gold{background:var(--laiton);color:var(--encre)}
.btn-gold:hover{background:var(--laiton-2);color:var(--bone)}

/* ============================================================
   SECTIONS
   ============================================================ */
section{position:relative}
.section{padding:clamp(3.5rem,3rem + 4vw,6rem) 0}
.section--graphite{background:var(--graphite);color:var(--ivoire)}
.section--graphite h1,.section--graphite h2,.section--graphite h3{color:var(--ivoire)}
.section--graphite .kicker{color:var(--laiton)}
.section--graphite a{color:var(--ivoire);text-decoration-color:var(--laiton)}
.section--graphite p{color:var(--ivoire-2)}

.section-head{max-width:60ch;margin-bottom:clamp(2rem,1.5rem + 2vw,3.5rem)}
.section-head.center{margin-inline:auto;text-align:center}
.section-head p{color:var(--graphite-soft);font-size:1.1rem}
.section--graphite .section-head p{color:var(--ivoire-2)}

/* ---------- Pillars / framework grid ---------- */
.grid-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.card{
  background:var(--bone);padding:clamp(1.6rem,1.2rem + 1.5vw,2.4rem);
  transition:background var(--t);position:relative;
}
.card:hover{background:var(--ivoire)}
.section--graphite .grid-cards{background:var(--line-light);border-color:var(--line-light)}
.section--graphite .card{background:var(--graphite)}
.section--graphite .card:hover{background:var(--graphite-2)}
.card .numeral{font-size:2.2rem;margin-bottom:.7rem}
.card h3{margin-bottom:.5rem}
.card p{font-size:.97rem;margin-bottom:0;color:var(--graphite-soft)}
.section--graphite .card p{color:var(--ivoire-2)}

/* ---------- Article cards (notes de stratégie) ---------- */
.notes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr));gap:clamp(1.5rem,1rem + 2vw,2.6rem)}
.note-card{display:flex;flex-direction:column;background:var(--bone);border:1px solid var(--line);transition:transform var(--t),box-shadow var(--t),border-color var(--t);overflow:hidden}
.note-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--laiton)}
.note-card a.cover{display:block;aspect-ratio:16/10;overflow:hidden;background:var(--ivoire-2)}
.note-card a.cover img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.16,.84,.44,1)}
.note-card:hover a.cover img{transform:scale(1.05)}
.note-body{padding:1.5rem;display:flex;flex-direction:column;flex:1}
.note-meta{font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--laiton-2);font-weight:600;margin-bottom:.7rem}
.note-card h3{font-size:1.3rem;line-height:1.18}
.note-card h3 a{text-decoration:none}
.note-card h3 a:hover{color:var(--laiton-2)}
.note-excerpt{font-size:.95rem;color:var(--graphite-soft);margin:.6rem 0 1.2rem;flex:1}
.note-foot{font-size:.82rem;color:var(--gris);display:flex;align-items:center;gap:.5rem;margin-top:auto}
.read-more{font-weight:600;color:var(--graphite);text-decoration:none;font-size:.9rem;display:inline-flex;align-items:center;gap:.4rem}
.read-more:hover{color:var(--laiton-2)}

/* ---------- Method / steps ---------- */
.method{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:clamp(1.5rem,1rem + 2vw,3rem);counter-reset:step}
.method .step{position:relative;padding-top:1.5rem;border-top:2px solid var(--laiton)}
.method .step .numeral{font-size:1.6rem;font-weight:400}
.method .step h3{font-size:1.2rem;margin:.4rem 0 .5rem}
.method .step p{font-size:.95rem;margin-bottom:0}

/* ---------- Authority / quote band ---------- */
.band{background:var(--graphite);color:var(--ivoire);padding:clamp(3rem,2.5rem + 3vw,5rem) 0}
.band blockquote{margin:0;max-width:24ch;font-family:var(--serif);font-weight:500;font-size:clamp(1.6rem,1.2rem + 2vw,2.6rem);line-height:1.22;color:var(--ivoire)}
.band .quote-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,4vw,4rem);align-items:center}
.band cite{display:block;margin-top:1.8rem;font-style:normal;font-family:var(--sans);font-size:.92rem;color:var(--laiton)}
.band cite b{color:var(--ivoire);display:block;font-size:1rem}
@media(max-width:760px){.band .quote-grid{grid-template-columns:1fr;gap:1.5rem}.band blockquote{max-width:none}}

/* ============================================================
   ARTICLE / SINGLE
   ============================================================ */
.post-hero{padding:clamp(3rem,2.5rem + 4vw,5.5rem) 0 clamp(1.5rem,1rem + 2vw,2.5rem);border-bottom:1px solid var(--line)}
.post-hero .meta{font-size:.82rem;letter-spacing:.1em;text-transform:uppercase;color:var(--laiton-2);font-weight:600;margin-bottom:1.2rem}
.post-hero h1{max-width:18ch}
.post-hero .standfirst{font-size:clamp(1.15rem,1.05rem + .5vw,1.4rem);color:var(--graphite-soft);max-width:60ch;line-height:1.55;margin-top:1.2rem;font-family:var(--serif)}
.byline{display:flex;align-items:center;gap:.85rem;margin-top:2rem}
.byline img,.byline .avatar-ph{width:46px;height:46px;border-radius:50%;object-fit:cover;background:var(--ivoire-2);border:1px solid var(--line)}
.byline .who{font-size:.9rem;line-height:1.4}
.byline .who b{display:block;color:var(--graphite);font-size:.97rem}
.byline .who span{color:var(--gris)}

.featured-wrap{margin:clamp(1.5rem,1rem + 2vw,2.5rem) 0}
.featured-wrap img{width:100%;aspect-ratio:16/8;object-fit:cover;border:1px solid var(--line)}

.article-body{font-size:1.1rem;line-height:1.78}
.article-body > *{max-width:var(--narrow);margin-inline:auto}
.article-body h2{margin:2.4rem auto 1rem;font-size:clamp(1.6rem,1.3rem + 1.4vw,2.1rem)}
.article-body h2::before{content:"";display:block;width:2.4rem;height:2px;background:var(--laiton);margin-bottom:1rem}
.article-body h3{margin:2rem auto .8rem}
.article-body ul,.article-body ol{padding-left:1.3rem}
.article-body li{margin-bottom:.6rem}
.article-body blockquote{border-left:3px solid var(--laiton);padding:.3rem 0 .3rem 1.5rem;font-family:var(--serif);font-size:1.3rem;font-style:italic;color:var(--graphite);margin:2rem auto}
.article-body img{margin:2rem auto;border:1px solid var(--line)}
.article-body a{font-weight:500}
.article-body > p.chapeau,.article-body > p.lead,.article-body > p.standfirst,.article-body > p:first-of-type{font-family:var(--serif);font-size:clamp(1.18rem,1.05rem + .6vw,1.45rem);line-height:1.5;color:var(--graphite);margin-bottom:1.8rem}
.article-body > p.chapeau::first-letter,.article-body > p.lead::first-letter,.article-body > p.standfirst::first-letter,.article-body > p:first-of-type::first-letter{-webkit-initial-letter:2.2;initial-letter:2.2;font-weight:700;color:var(--laiton);margin-right:.6rem;font-family:var(--serif)}
.article-body figure{margin:2rem auto}
.article-body table{width:100%;border-collapse:collapse;margin:2rem auto;font-size:.95rem}
.article-body th,.article-body td{border:1px solid var(--line);padding:.7rem .9rem;text-align:left}
.article-body th{background:var(--ivoire);font-family:var(--sans);font-weight:600;color:var(--graphite)}
.article-body code{background:var(--ivoire);padding:.1em .4em;border-radius:var(--r);font-size:.9em}

/* pull stat / framework callout */
.callout{max-width:var(--narrow);margin:2.5rem auto;background:var(--ivoire);border:1px solid var(--line);border-left:3px solid var(--laiton);padding:1.5rem 1.8rem}
.callout .numeral{font-size:2.4rem;margin-bottom:.3rem}
.callout p{margin:0;font-size:1rem;color:var(--graphite-soft)}

/* TOC */
.toc{max-width:var(--narrow);margin:2rem auto;background:var(--bone);border:1px solid var(--line);padding:1.4rem 1.6rem}
.toc strong{font-family:var(--sans);font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--laiton-2);display:block;margin-bottom:.8rem}
.toc ol{margin:0;padding-left:1.2rem;columns:2;column-gap:2rem}
.toc li{margin-bottom:.4rem}
.toc a{font-size:.92rem;text-decoration:none;color:var(--graphite-soft)}
.toc a:hover{color:var(--laiton-2)}
@media(max-width:600px){.toc ol{columns:1}}

/* ---------- FAQ ---------- */
.faq{max-width:var(--narrow);margin:2.5rem auto}
.faq details{border-bottom:1px solid var(--line);padding:1.1rem 0}
.faq summary{font-family:var(--serif);font-weight:600;font-size:1.15rem;color:var(--graphite);cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:1rem;align-items:center}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--sans);font-size:1.5rem;color:var(--laiton);transition:transform var(--t);flex-shrink:0}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{margin:.9rem 0 0;color:var(--graphite-soft)}

/* ---------- author box ---------- */
.author-card{max-width:var(--narrow);margin:3rem auto;background:var(--ivoire);border:1px solid var(--line);padding:clamp(1.6rem,1.2rem + 1.5vw,2.2rem);display:flex;gap:1.5rem;align-items:flex-start}
.author-card img,.author-card .avatar-ph{width:80px;height:80px;border-radius:50%;flex:0 0 80px;object-fit:cover;background:var(--graphite);border:2px solid var(--laiton)}
.author-card .ac-body h4{margin:0 0 .3rem;font-size:1.2rem}
.author-card .ac-role{font-size:.84rem;letter-spacing:.08em;text-transform:uppercase;color:var(--laiton-2);font-weight:600;margin-bottom:.8rem}
.author-card p{font-size:.96rem;color:var(--graphite-soft);margin:0}
@media(max-width:560px){.author-card{flex-direction:column}}

/* ---------- contact / lead ---------- */
.lead-band{background:var(--graphite);color:var(--ivoire)}
.lead-band .lead-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,4vw,4rem);align-items:start}
.lead-band h2{color:var(--ivoire)}
.lead-band p{color:var(--ivoire-2)}
.lead-band .eagle-contact-form label{color:var(--ivoire);font-size:.9rem;font-weight:500}
.lead-band .eagle-contact-form input,.lead-band .eagle-contact-form textarea{background:var(--graphite-2);border:1px solid var(--line-light);color:var(--ivoire);padding:.75rem .9rem;border-radius:var(--r);font-size:.97rem}
.lead-band .eagle-contact-form input:focus,.lead-band .eagle-contact-form textarea:focus{outline:2px solid var(--laiton);outline-offset:1px;border-color:transparent}
.lead-band .eagle-contact-form button{background:var(--laiton);color:var(--encre);border:0;padding:.85rem 1.8rem;font-weight:600;font-family:var(--sans);cursor:pointer;border-radius:var(--r);transition:background var(--t)}
.lead-band .eagle-contact-form button:hover{background:var(--laiton-2);color:var(--bone)}
.lead-band .ecf-status{color:var(--laiton)}
@media(max-width:760px){.lead-band .lead-grid{grid-template-columns:1fr;gap:2rem}}

/* page (contact / legal / about content) */
.page-body .eagle-contact-form input,.page-body .eagle-contact-form textarea{background:var(--bone);border:1px solid var(--line);padding:.75rem .9rem;border-radius:var(--r)}
.page-body .eagle-contact-form button{background:var(--graphite);color:var(--bone);border:0;padding:.85rem 1.8rem;font-weight:600;cursor:pointer;border-radius:var(--r)}
.page-body .eagle-contact-form button:hover{background:var(--encre)}

/* ============================================================
   ARCHIVE / BLOG INDEX
   ============================================================ */
.archive-head{padding:clamp(3rem,2.5rem + 3vw,5rem) 0 clamp(2rem,1.5rem + 2vw,3rem);border-bottom:1px solid var(--line);background:var(--bone)}
.archive-head h1{max-width:20ch}
.archive-head p{font-size:1.15rem;color:var(--graphite-soft);max-width:60ch;margin-top:1rem}

.pagination{display:flex;gap:.5rem;justify-content:center;margin-top:3rem;flex-wrap:wrap}
.pagination .page-numbers{display:inline-grid;place-items:center;min-width:42px;height:42px;padding:0 .6rem;border:1px solid var(--line);text-decoration:none;font-weight:600;font-size:.92rem;color:var(--graphite);transition:var(--t)}
.pagination .page-numbers:hover,.pagination .current{background:var(--graphite);color:var(--bone);border-color:var(--graphite)}

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer{background:var(--encre);color:var(--ivoire-2);padding:clamp(3rem,2.5rem + 3vw,4.5rem) 0 2rem}
.footer-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:clamp(2rem,4vw,4rem);padding-bottom:2.5rem;border-bottom:1px solid var(--line-light)}
.footer-grid .brand-name,.footer-grid .brand-mark{color:var(--ivoire)}
.footer-grid .brand-mark{border-color:var(--ivoire-2)}
.footer-about{font-size:.95rem;color:var(--ivoire-2);max-width:42ch;margin-top:1.2rem;line-height:1.65}
.footer-col h4{font-family:var(--sans);font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--laiton);margin-bottom:1.1rem;font-weight:600}
.footer-col ul{list-style:none;margin:0;padding:0}
.footer-col li{margin-bottom:.7rem}
.footer-col a{color:var(--ivoire-2);text-decoration:none;font-size:.95rem;transition:color var(--t)}
.footer-col a:hover{color:var(--laiton)}
.footer-bottom{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding-top:1.8rem;font-size:.84rem;color:var(--gris)}
.footer-bottom a{color:var(--gris);text-decoration:none}
.footer-bottom a:hover{color:var(--ivoire-2)}
@media(max-width:760px){.footer-grid{grid-template-columns:1fr;gap:2rem}}

/* skip link */
.skip-link{position:absolute;left:-9999px;top:0;background:var(--graphite);color:var(--bone);padding:.7rem 1.2rem;z-index:100}
.skip-link:focus{left:1rem;top:1rem}

/* ============================================================
   MOTION (CSS-first, reduced-motion safe)
   ============================================================ */
/* Reveal : contenu TOUJOURS visible par défaut (SEO + sûreté).
   Le mouvement n'est qu'une amélioration ajoutée par JS (.js-reveal + .in)
   ou par scroll-timeline natif, sans jamais laisser le contenu caché. */
@media (prefers-reduced-motion:no-preference){
  .js-reveal{opacity:0;transform:translateY(20px);will-change:opacity,transform}
  .js-reveal.in{opacity:1;transform:none;transition:opacity .7s ease,transform .7s cubic-bezier(.16,.84,.44,1)}

  /* hero cinematic entrance */
  .hero h1,.hero .kicker,.hero-lead,.hero-cta,.hero-aside{animation:rise .9s cubic-bezier(.16,.84,.44,1) both}
  .hero .kicker{animation-delay:.05s}
  .hero h1{animation-delay:.13s}
  .hero-lead{animation-delay:.26s}
  .hero-cta{animation-delay:.38s}
  .hero-aside{animation-delay:.5s}
  @keyframes rise{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
}

/* thin moving brass rule under header on hero (decorative, compositor only) */
.rule-anim{height:1px;background:linear-gradient(90deg,transparent,var(--laiton),transparent);background-size:200% 100%}
@media (prefers-reduced-motion:no-preference){.rule-anim{animation:slide 6s linear infinite}@keyframes slide{to{background-position:200% 0}}}

/* utility */
.center{text-align:center}
.mt-3{margin-top:2rem}
.divider{height:1px;background:var(--line);max-width:var(--wrap);margin:0 auto}
