/* ============================================================
   Katalyst — design system du site (thème clair chaud).
   Partagé par toutes les pages. Grammaire 8 pt (doc 08).
   ============================================================ */
:root{
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px;
  --s7:48px; --s8:64px; --s9:80px; --s10:96px; --s11:128px; --s12:160px;
  --section:var(--s11); --gutter:40px; --maxw:1120px;
  --bg:#f5f1ea; --surface:#ffffff; --surface-2:#efe8dc; --ink-dark:#241f2b;
  --border:rgba(45,32,24,.12); --border-strong:rgba(45,32,24,.22);
  --text:#1e1922; --text-muted:#524c4f; --text-dim:#726b6c; --cream:#f3efe6;
  --accent:#8f6a35; --accent-strong:#75592a; --accent-ink:#ffffff; --accent-dim:rgba(143,106,53,.10);
  --brand:#3d2f55; --violet:#7a5aa8; --violet-dim:rgba(122,90,168,.10);
  --serif:"Cormorant Garamond",Georgia,serif;
  --sans:"DM Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --shadow-card:0 2px 6px rgba(45,32,24,.05), 0 20px 44px -28px rgba(45,32,24,.24);
  --shadow-soft:0 14px 38px -20px rgba(45,32,24,.22);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text-muted);font-family:var(--sans);font-weight:300;line-height:1.72;-webkit-font-smoothing:antialiased;letter-spacing:.004em}
img{display:block;max-width:100%}
.material-symbols-outlined{font-variation-settings:'wght' 300,'opsz' 24;vertical-align:middle}
::selection{background:var(--accent-dim);color:var(--text)}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}
h1,h2,h3{font-family:var(--serif);font-weight:300;color:var(--text);letter-spacing:-.01em}
h1{font-size:clamp(40px,5vw,62px);line-height:1.08}
h2{font-size:clamp(28px,3.4vw,40px);line-height:1.2}
h3{font-weight:400;font-size:clamp(22px,2vw,24px);line-height:1.2}
em{font-style:italic;color:var(--accent-strong)}
a{color:var(--accent-strong);text-decoration:none}
.lede{font-size:clamp(17px,1.5vw,19px);line-height:28px;color:var(--text-muted);max-width:60ch}
.lede + .lede{margin-top:var(--s4)}
.kicker{font-size:11.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--accent-strong);font-weight:500;display:inline-flex;align-items:center;gap:var(--s3);margin-bottom:var(--s4)}
.kicker:before{content:"";width:56px;height:1px;background:var(--accent)}

/* Header */
header.nav{position:sticky;top:0;z-index:40;backdrop-filter:blur(12px);background:color-mix(in srgb,var(--bg) 84%,transparent);border-bottom:1px solid var(--border)}
.nav-in{display:flex;align-items:center;justify-content:space-between;height:76px}
.brand{display:flex;align-items:center;gap:var(--s3)}
.brand .mark{width:36px;height:36px;flex:none;object-fit:contain}
.brand .name{font-family:var(--serif);font-size:22px;color:var(--brand);letter-spacing:.02em;line-height:1}
.brand .name b{font-weight:600}
nav.links{display:flex;align-items:center;gap:var(--s6)}
nav.links a{color:var(--text-muted);font-size:14px;transition:color .2s}
nav.links a:hover,nav.links a.active{color:var(--brand)}
.lang{display:inline-flex;border:1px solid var(--border);border-radius:999px;overflow:hidden;font-size:12px}
.lang span,.lang a{padding:5px 11px;color:var(--text-dim)}
.lang .on{background:var(--surface-2);color:var(--brand)}

/* Floating CTA — le seul or plein */
.cta-float{position:fixed;bottom:var(--s5);right:var(--s5);z-index:50;display:inline-flex;align-items:center;gap:9px;background:var(--accent);color:var(--accent-ink);font-weight:500;font-size:14.5px;padding:14px 22px;border-radius:999px;box-shadow:0 14px 32px -12px rgba(143,106,53,.55);transition:transform .2s,opacity .3s}
.cta-float:hover{transform:translateY(-2px)}
.cta-float .material-symbols-outlined{font-size:19px}
.cta-float.hide{opacity:0;pointer-events:none;transform:translateY(10px)}

/* Sections + bandes */
.section{padding:var(--section) 0}
.band-white{background:var(--surface);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.band-dark{background:var(--ink-dark)}
.reveal{opacity:0;transform:translateY(14px);transition:opacity .6s ease,transform .6s ease}
.reveal.in{opacity:1;transform:none}

/* Hero */
.hero{background:radial-gradient(720px 460px at 94% -6%, var(--violet-dim), transparent 60%),linear-gradient(180deg,#ffffff 0%, var(--bg) 78%)}
.hero-in{display:grid;grid-template-columns:1fr 1fr;gap:var(--s7);align-items:center;padding:var(--s10) 0}
.hero h1{max-width:none}
.hero .sub{margin-top:var(--s5);font-family:var(--serif);font-style:italic;font-size:clamp(19px,1.8vw,24px);color:var(--text-muted);max-width:36ch;line-height:1.4}
.hero .sub b{font-style:normal;font-family:var(--sans);color:var(--text);font-weight:500}
.scroll-cue{display:inline-flex;align-items:center;gap:var(--s2);margin-top:var(--s6);font-family:var(--sans);font-size:14px;color:var(--text-muted);text-decoration:none;border:1px solid var(--border);border-radius:999px;padding:9px 18px;transition:color .2s,border-color .2s,background .2s}
.scroll-cue:hover{color:var(--brand);border-color:var(--border-strong);background:var(--surface-2)}
.scroll-cue .material-symbols-outlined{font-size:18px;animation:cue-bob 1.7s ease-in-out infinite}
@keyframes cue-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(3px)}}
@media (prefers-reduced-motion:reduce){.scroll-cue .material-symbols-outlined{animation:none}}
section[id]{scroll-margin-top:var(--s8)}
.scroll-cue{margin-top:var(--s7);display:inline-flex;align-items:center;gap:9px;color:var(--text-dim);font-size:13px}
.scroll-cue .material-symbols-outlined{font-size:18px;color:var(--accent)}
.hero-media,.split-media{position:relative}
.hero-media img{width:100%;aspect-ratio:5/6;object-fit:cover;border-radius:18px;box-shadow:var(--shadow-soft)}
.hero-media .frame{position:absolute;inset:var(--s4) calc(var(--s4)*-1) calc(var(--s4)*-1) var(--s4);border:1px solid var(--accent);border-radius:18px;z-index:-1;opacity:.45}
.ph{position:absolute;left:var(--s3);bottom:var(--s3);background:rgba(255,255,255,.9);border:1px solid var(--border);color:var(--text-dim);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:4px 9px;border-radius:6px}

/* Recognition (home) */
.recog{display:grid;grid-template-columns:1fr .82fr;gap:var(--s7);align-items:center}
.recog-media img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:16px;box-shadow:var(--shadow-soft)}
.pullquote{margin-top:var(--s6);padding:var(--s5) var(--s6);border-left:2px solid var(--accent);border-radius:0 10px 10px 0;font-family:var(--serif);font-style:italic;font-size:23px;color:var(--text);background:var(--accent-dim)}

/* Signature (band-dark) */
.signature{text-align:center}
.signature .kicker{color:var(--accent-strong);justify-content:center;margin-bottom:var(--s6)}
.signature .line{font-family:var(--serif);font-weight:300;color:var(--cream);font-size:clamp(28px,3.7vw,48px);line-height:1.28;max-width:28ch;margin:0 auto}
.signature .line em{font-style:italic;color:var(--accent-strong)}
.signature .sub{margin:var(--s7) auto 0;color:rgba(243,239,230,.72);max-width:44ch;font-size:17px;line-height:1.6}

/* Split (2 colonnes texte + image) */
.split{display:grid;grid-template-columns:1fr .82fr;gap:var(--s7);align-items:center}
.split.rev .split-media{order:-1}
.split-media img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:16px;box-shadow:var(--shadow-soft)}
.quote{font-family:var(--serif);font-size:clamp(26px,3vw,38px);color:var(--text);line-height:1.24;max-width:22ch}
.after{margin-top:var(--s5);color:var(--text-muted);max-width:56ch;font-size:16.5px}
.after + .after{margin-top:var(--s4)}
.note-soft{margin-top:var(--s5);font-style:italic;color:var(--text-dim);font-family:var(--serif);font-size:19px}
.method{display:grid;grid-template-columns:.92fr 1.08fr;gap:var(--s7);align-items:center}
.method-media img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:16px;box-shadow:var(--shadow-soft)}
.method .quote{max-width:22ch}
.method .sig{margin-top:var(--s5);color:var(--text-muted);max-width:56ch;font-size:16.5px}

/* Portrait (about + home teaser) */
.about{display:grid;grid-template-columns:300px 1fr;gap:var(--s7);align-items:center}
.portrait{position:relative;aspect-ratio:4/5;border-radius:16px;overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow-soft)}
.portrait img{width:100%;height:100%;object-fit:cover}
.about h2 .me{font-style:italic;color:var(--accent-strong)}
.link-arrow{display:inline-flex;align-items:center;gap:7px;color:var(--accent-strong);font-size:15px;font-weight:400}
.link-arrow .material-symbols-outlined{font-size:18px;transition:transform .2s}
.link-arrow:hover .material-symbols-outlined{transform:translateX(3px)}

/* Offer cards (home) */
.offers{display:grid;grid-template-columns:1.12fr .88fr;gap:var(--s5);margin-top:var(--s2)}
.offer{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:var(--s7);display:flex;flex-direction:column;box-shadow:var(--shadow-card);transition:transform .25s,box-shadow .25s}
.offer:hover{transform:translateY(-4px);box-shadow:0 6px 14px rgba(45,32,24,.07),0 28px 52px -30px rgba(45,32,24,.32)}
section.band-white .offer{background:var(--bg)}
.offer.featured{border-top:2px solid var(--accent)}
.offer .tag{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-dim);margin-bottom:var(--s4);display:inline-flex;align-items:center;gap:8px}
.offer.featured .tag{color:var(--accent-strong)}
.offer h3{margin-bottom:var(--s3)}
.offer p{color:var(--text-muted);font-size:15px;flex:1}
.offer .link-arrow{margin-top:var(--s6)}

/* Feature cards (what's included / frame) */
.chip{width:46px;height:46px;border-radius:12px;background:var(--surface-2);border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;margin-bottom:var(--s4)}
.chip .material-symbols-outlined{font-size:24px;color:var(--accent)}
.feat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--s5);margin-top:var(--s7)}
.feat-grid.center{display:flex;flex-wrap:wrap;justify-content:center}
.feat-grid.feat-2{grid-template-columns:repeat(2,1fr)}
.feat-grid.feat-3{grid-template-columns:repeat(3,1fr)}
.feat-grid + .feat-grid{margin-top:var(--s5)}
.feat{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:var(--s6);box-shadow:var(--shadow-card)}
a.feat{display:block;text-decoration:none;color:inherit;transition:transform .2s,box-shadow .2s,border-color .2s}
a.feat:hover{transform:translateY(-3px);border-color:var(--border-strong);box-shadow:0 6px 14px rgba(45,32,24,.07),0 28px 52px -30px rgba(45,32,24,.32)}
a.feat h3{color:var(--text)}
.feat-grid.center .feat{flex:0 1 340px}
.feat h3{font-weight:500;font-size:19px;margin-bottom:var(--s2)}
.feat p{font-size:14px;color:var(--text-muted)}

/* Pricing (visible) */
.price-intro{max-width:62ch}
.tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:var(--s5);margin-top:var(--s7)}
.tier{border:1px solid var(--border);border-radius:14px;padding:var(--s6);background:var(--bg);display:flex;flex-direction:column;box-shadow:var(--shadow-card)}
.tier.featured{border-top:2px solid var(--accent)}
.tier .name{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3);margin-bottom:var(--s2)}
.tier .name h3{font-weight:500}
.tier .most{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-strong);white-space:nowrap}
.tier .meta{font-size:12.5px;color:var(--text-dim);margin-bottom:var(--s4)}
.tier .price{font-family:var(--serif);font-size:38px;color:var(--text);line-height:1;margin-bottom:var(--s4)}
.tier p{font-size:14px;color:var(--text-muted);flex:1}
.tier .plus{margin-top:var(--s4);font-size:12.5px;color:var(--accent-strong);display:flex;align-items:flex-start;gap:7px}
.tier .plus .material-symbols-outlined{font-size:15px;margin-top:1px}

/* Invitation */
.invite{text-align:center}
.invite .kicker{margin-bottom:var(--s6);justify-content:center}
.invite h2{margin:0 auto;line-height:1.24}
.invite p{max-width:48ch;margin:var(--s6) auto 0;color:var(--text-muted);line-height:1.6}
.btn-ghost{margin-top:var(--s6);display:inline-flex;align-items:center;gap:9px;border:1px solid var(--accent);color:var(--accent-strong);border-radius:999px;padding:14px 28px;font-size:15px;transition:background .2s}
.btn-ghost:hover{background:var(--accent-dim)}

/* Contact */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s6);align-items:start}
.cbox{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:var(--s7);box-shadow:var(--shadow-card)}
.cbox.featured{border-top:2px solid var(--accent)}
.cbox h3{font-weight:500;font-size:22px;margin-bottom:var(--s3)}
.cbox .small{font-size:14.5px;color:var(--text-muted)}
.cal-embed{position:relative;overflow:hidden;margin-top:var(--s5);min-height:340px;border-radius:14px;border:1px solid var(--border);background:linear-gradient(180deg,var(--surface),var(--bg));display:flex;align-items:center;justify-content:center;padding:var(--s6)}
.cal-face{position:absolute;inset:0;padding:var(--s5);opacity:.42;pointer-events:none;user-select:none;display:flex;flex-direction:column;gap:var(--s3)}
.cal-head{display:flex;align-items:center;justify-content:space-between;font-family:var(--serif);font-size:18px;color:var(--text-muted)}
.cal-nav{display:inline-flex;gap:var(--s2);color:var(--text-dim)}
.cal-nav .material-symbols-outlined{font-size:18px}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;flex:1}
.cal-dow{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);text-align:center}
.cal-day{display:flex;align-items:center;justify-content:center;padding:6px 0;font-size:12.5px;color:var(--text-muted);border-radius:8px;background:color-mix(in srgb,var(--surface) 65%,transparent)}
.cal-day.out{background:transparent}
.cal-day.free{color:var(--accent-strong);border:1px solid var(--accent);background:var(--accent-dim)}
.cal-day.today{background:var(--violet);color:#fff}
.cal-front{position:relative;z-index:1;display:flex;justify-content:center;text-align:center;padding:var(--s7) var(--s8);border-radius:999px;background:radial-gradient(120% 140% at 50% 50%, color-mix(in srgb,var(--surface) 92%,transparent) 45%, transparent 100%)}
.cal-front .btn-ghost{margin-top:0}
@media (prefers-reduced-motion:no-preference){
  .cta-float::after{content:"";position:absolute;inset:0;border-radius:999px;border:2px solid var(--accent);opacity:0;pointer-events:none;animation:cta-pulse 4.6s ease-out infinite}
}
@keyframes cta-pulse{0%{transform:scale(1);opacity:.5}16%{opacity:0}100%{transform:scale(1.42);opacity:0}}
.field{margin-top:var(--s4)}
label{display:block;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);margin-bottom:7px}
input,textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-family:var(--sans);font-size:15px;color:var(--text)}
input:focus,textarea:focus{outline:none;border-color:var(--accent)}
textarea{min-height:130px;resize:vertical}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.btn-send{margin-top:var(--s5);display:inline-flex;align-items:center;gap:9px;border:1px solid var(--accent);color:var(--accent-strong);background:transparent;border-radius:999px;padding:12px 24px;font-size:15px;font-family:var(--sans);cursor:pointer;transition:background .2s}
.btn-send:hover{background:var(--accent-dim)}
.spam-note{margin-top:var(--s4);font-size:12.5px;color:var(--text-dim);display:flex;align-items:center;gap:7px}
.spam-note .material-symbols-outlined{font-size:16px;color:var(--accent)}
.ok-msg{display:none;margin-top:var(--s5);padding:var(--s4) var(--s5);border-radius:10px;background:var(--accent-dim);color:var(--text);font-size:14.5px}

/* Blog */
.filters{display:flex;gap:var(--s2);flex-wrap:wrap;margin-top:var(--s7)}
.filters button{border:1px solid var(--border);background:transparent;border-radius:999px;padding:8px 16px;font-family:var(--sans);font-size:13px;color:var(--text-muted);cursor:pointer;transition:all .2s}
.filters button.on{background:var(--surface-2);color:var(--brand);border-color:var(--border-strong)}
.blog-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s5);flex-wrap:wrap}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--s5);margin-top:var(--s3)}
.more-sentinel{display:flex;justify-content:center;gap:7px;padding:var(--s7) 0 var(--s3)}
.more-sentinel[hidden]{display:none}
.more-sentinel span{width:7px;height:7px;border-radius:50%;background:var(--text-dim);animation:dot-bob 1s ease-in-out infinite}
.more-sentinel span:nth-child(2){animation-delay:.15s}
.more-sentinel span:nth-child(3){animation-delay:.3s}
@keyframes dot-bob{0%,100%{opacity:.25;transform:translateY(0)}50%{opacity:.75;transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.more-sentinel span{animation:none;opacity:.4}}
.acard{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-card);transition:transform .25s,box-shadow .25s}
.acard:hover{transform:translateY(-4px);box-shadow:0 6px 14px rgba(45,32,24,.07),0 28px 52px -30px rgba(45,32,24,.32)}
.acard .thumb{aspect-ratio:16/10;overflow:hidden;background:var(--surface-2)}
.acard .thumb img{width:100%;height:100%;object-fit:cover}
.acard .body{padding:var(--s5) var(--s5) var(--s6);display:flex;flex-direction:column;gap:var(--s3);flex:1}
.acard .cat{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--violet);display:inline-flex;align-items:center;gap:7px}
.acard .cat .dot{width:6px;height:6px;border-radius:50%;background:var(--violet)}
.acard h3{font-weight:400;font-size:20px;line-height:1.22;color:var(--text)}
.acard .date{margin-top:auto;font-size:12.5px;color:var(--text-dim)}

/* Footer */
footer{background:var(--surface);border-top:1px solid var(--border);padding:var(--s6) 0;color:var(--text-dim)}
.foot-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--s3);font-size:12.5px}
.foot-bottom a{color:var(--text-muted)}

/* Article (blog post) */
.article-head{padding:var(--s10) 0 var(--s6)}
.article-head .kicker{color:var(--violet)}
.article-head .kicker:before{background:var(--violet)}
.article-head h1{max-width:24ch}
.article-head .date{margin-top:var(--s4);font-size:13px;color:var(--text-dim);letter-spacing:.04em}
.article-banner{width:100%;max-height:460px;object-fit:cover;border-radius:18px;box-shadow:var(--shadow-soft);margin-top:var(--s2)}
.article{max-width:760px;margin:0 auto;padding:var(--s9) var(--gutter)}
.article>*{max-width:none}
.article h2{font-family:var(--serif);font-weight:400;color:var(--text);font-size:clamp(24px,2.6vw,30px);line-height:1.25;margin:var(--s7) 0 var(--s3)}
.article h3{font-family:var(--serif);font-weight:500;color:var(--text);font-size:clamp(20px,2vw,23px);line-height:1.3;margin:var(--s6) 0 var(--s2)}
.article p{font-size:17px;line-height:1.8;color:var(--text-muted);margin-bottom:var(--s4)}
.article ul,.article ol{margin:var(--s3) 0 var(--s5) var(--s6)}
.article li{font-size:17px;line-height:1.75;color:var(--text-muted);margin-bottom:var(--s2)}
.article blockquote{margin:var(--s5) 0;padding:var(--s4) var(--s6);border-left:2px solid var(--accent);background:var(--accent-dim);border-radius:0 10px 10px 0;font-family:var(--serif);font-style:italic;font-size:21px;color:var(--text)}
.article strong{color:var(--text);font-weight:600}
.article em{color:var(--text);font-style:italic}
.article a{color:var(--accent-strong);text-decoration:underline;text-underline-offset:3px}
/* aphorisme autonome (ligne en italique) : léger pull-quote */
.article p.insight{font-family:var(--serif);font-style:normal;font-size:clamp(20px,2.2vw,25px);
  line-height:1.4;color:var(--text);margin:var(--s6) 0;padding-left:var(--s5);border-left:2px solid var(--accent)}
.article p.insight em{font-style:italic;color:var(--text)}
/* ligne de référence (Ref: …) : petite et discrète */
.article p.ref{font-size:13px;color:var(--text-dim);margin-top:calc(var(--s2) * -1);margin-bottom:var(--s5)}
.article p.ref em{font-style:italic;color:var(--text-dim)}
.article .back{margin-top:var(--s8);font-size:14px}

@media(max-width:860px){
  :root{--section:var(--s9);--gutter:24px}
  nav.links{display:none}
  .hero-in,.recog,.split,.method,.offers,.about,.contact-grid,.feat-2,.feat-3{grid-template-columns:1fr}
  .hero-in{gap:var(--s6);padding:var(--s8) 0}
  .hero-media .frame{display:none}
  .recog-media,.split-media,.method-media{order:-1}
  .portrait{max-width:260px}
}
