/* Polices hébergées sur le site (aucun appel à Google Fonts) : latin + latin étendu */
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400 500; font-display: swap; src: url(fonts/jetbrains-mono-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400 500; font-display: swap; src: url(fonts/jetbrains-mono-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'League Spartan'; font-style: normal; font-weight: 300 900; font-display: swap; src: url(fonts/league-spartan-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'League Spartan'; font-style: normal; font-weight: 300 900; font-display: swap; src: url(fonts/league-spartan-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* ===================================================================
   HELONAT — v2 "Signal"
   Police : League Spartan (charte) + JetBrains Mono (labels)
   Couleurs : #00E676 #1DE9B6 #64FFDA #B2FF59 sur fond vert-noir
   =================================================================== */
:root{
  --c1:#00E676; --c2:#1DE9B6; --c3:#64FFDA; --c4:#B2FF59;
  --bg:#050B08; --bg-2:#07110C; --surface:#0B1711; --surface-2:#102118;
  --line:rgba(178,255,217,.09); --line-2:rgba(178,255,217,.18);
  --ink:#ECF7F1; --muted:#9DB5A9; --dim:#5E7669;
  --on-accent:#03110A;
  --gradient-h:linear-gradient(90deg,var(--c1) 0%,var(--c2) 35%,var(--c3) 65%,var(--c4) 100%);
  --gradient-d:linear-gradient(120deg,var(--c1) 0%,var(--c3) 55%,var(--c4) 100%);
  --glow:0 0 0 1px rgba(0,230,118,.25), 0 18px 60px -18px rgba(0,230,118,.55);
  --maxw:1320px;
  --edge:clamp(18px,4.2vw,56px);
  --r-s:12px; --r-m:20px; --r-l:32px;
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-io:cubic-bezier(.65,0,.35,1);
  --z-nav:50; --z-menu:45; --z-grain:80; --z-cursor:90; --z-curtain:100; --z-loader:110;
  --font:'League Spartan',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'JetBrains Mono',ui-monospace,'SFMono-Regular',Menlo,monospace;
  color-scheme:dark;
}
*,*::before,*::after{ box-sizing:border-box; }
html{ background:var(--bg); -webkit-text-size-adjust:100%; overflow-x:clip; }
html.lenis, html.lenis body{ height:auto; }
.lenis.lenis-smooth{ scroll-behavior:auto !important; }
.lenis.lenis-stopped{ overflow:hidden; }
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:var(--font); font-size:17px; line-height:1.6; font-weight:400;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  overflow-x:clip; min-height:100dvh;
}
h1,h2,h3,h4{ margin:0; font-weight:700; line-height:1.02; letter-spacing:-.035em; text-wrap:balance; }
p{ margin:0; text-wrap:pretty; }
a{ color:inherit; text-decoration:none; }
img,svg,canvas{ display:block; max-width:100%; }
button{ font:inherit; color:inherit; background:none; border:0; padding:0; cursor:pointer; }
ul,ol{ margin:0; padding:0; list-style:none; }
::selection{ background:var(--c1); color:var(--on-accent); }
:focus-visible{ outline:2px solid var(--c3); outline-offset:4px; border-radius:6px; }

.wrap{ width:100%; max-width:var(--maxw); margin:0 auto; padding-left:var(--edge); padding-right:var(--edge); }
.skip-link{ position:fixed; left:12px; top:-60px; z-index:200; background:var(--c1); color:var(--on-accent); padding:10px 16px; border-radius:10px; font-weight:700; transition:top .2s; }
.skip-link:focus{ top:12px; }

/* ---------- Type ---------- */
.mono{ font-family:var(--mono); font-size:.76rem; letter-spacing:.02em; text-transform:uppercase; font-weight:500; }
.eyebrow{ display:inline-flex; align-items:center; gap:10px; font-family:var(--mono); font-size:.74rem; font-weight:500; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
.eyebrow::before{ content:''; width:8px; height:8px; border-radius:2px; background:var(--gradient-d); box-shadow:0 0 14px rgba(0,230,118,.7); flex-shrink:0; }
.eyebrow .idx{ color:var(--c1); }
/* le dégradé n'est peint que dans la boîte : marge intérieure pour que les accents et jambages restent visibles */
.grad{ background:var(--gradient-d); -webkit-background-clip:text; background-clip:text; color:transparent; -webkit-text-fill-color:transparent; padding:.2em .1em .14em; margin:-.2em -.1em -.14em; -webkit-box-decoration-break:clone; box-decoration-break:clone; }
.outline{ color:transparent; -webkit-text-stroke:1.2px rgba(236,247,241,.55); }
.h-display{ font-size:clamp(2.9rem,9.4vw,9.6rem); font-weight:800; letter-spacing:-.055em; line-height:.9; }
.h-1{ font-size:clamp(2.4rem,6.4vw,6rem); font-weight:800; letter-spacing:-.05em; line-height:.94; }
.h-2{ font-size:clamp(2rem,4.6vw,4.2rem); font-weight:800; letter-spacing:-.045em; line-height:.98; }
.h-3{ font-size:clamp(1.4rem,2.2vw,1.9rem); font-weight:700; letter-spacing:-.03em; line-height:1.1; }
.lede{ font-size:clamp(1.08rem,1.35vw,1.3rem); color:var(--muted); line-height:1.55; max-width:52ch; }
.muted{ color:var(--muted); }
.body-l{ font-size:clamp(1.05rem,1.2vw,1.18rem); color:var(--muted); line-height:1.7; max-width:62ch; }
.body-l + .body-l{ margin-top:1em; }

/* ---------- Ambient layers ---------- */
.grain{ position:fixed; inset:-8%; z-index:var(--z-grain); pointer-events:none; opacity:.045;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
.progress{ position:fixed; top:0; left:0; right:0; height:2px; z-index:calc(var(--z-nav) + 1); background:var(--gradient-h); transform-origin:0 50%; transform:scaleX(0); pointer-events:none; }

/* ---------- Cursor ---------- */
.cursor, .cursor-dot{ position:fixed; top:0; left:0; z-index:var(--z-cursor); pointer-events:none; border-radius:50%; opacity:0; transition:opacity .3s; }
.has-cursor .cursor, .has-cursor .cursor-dot{ opacity:1; }
.cursor{ width:44px; height:44px; margin:-22px 0 0 -22px; border:1px solid rgba(100,255,218,.55); display:flex; align-items:center; justify-content:center;
  transition:opacity .3s, width .45s var(--ease-out), height .45s var(--ease-out), margin .45s var(--ease-out), background-color .3s, border-color .3s; }
.cursor-dot{ width:6px; height:6px; margin:-3px 0 0 -3px; background:var(--c1); }
.cursor.is-link{ width:64px; height:64px; margin:-32px 0 0 -32px; border-color:transparent; background:rgba(0,230,118,.14); }
.cursor.is-hidden, .cursor-dot.is-hidden{ opacity:0 !important; }

/* ---------- Page transition curtain ---------- */
.curtain{ position:fixed; inset:0; z-index:var(--z-curtain); pointer-events:none; display:grid; place-items:center; background:var(--bg-2); transform:translateY(100%); }
.curtain::before{ content:''; position:absolute; left:0; right:0; top:0; height:3px; background:var(--gradient-h); box-shadow:0 0 30px rgba(0,230,118,.8); }
.curtain-word{ font-weight:800; font-size:clamp(2rem,6vw,4rem); letter-spacing:-.05em; opacity:0; }
html.is-leaving .curtain{ pointer-events:all; transform:translateY(0); transition:transform .38s var(--ease-io); }
html.is-leaving .curtain-word{ opacity:1; transition:opacity .2s .15s; }
html.is-entering .curtain{ transform:translateY(0); }
html.is-entered .curtain{ transform:translateY(-100%); transition:transform .55s var(--ease-io); }

/* ---------- Loader (accueil, 1x par session) ---------- */
.loader{ position:fixed; inset:0; z-index:var(--z-loader); background:var(--bg); clip-path:inset(0 0 0 0); display:none; flex-direction:column; justify-content:space-between; padding:var(--edge); }
html.show-loader .loader{ display:flex; }
.loader-top, .loader-bot{ display:flex; justify-content:space-between; align-items:flex-end; gap:20px; }
.loader-word{ font-weight:800; font-size:clamp(3rem,16vw,15rem); letter-spacing:-.06em; line-height:.8; overflow:hidden; display:flex; }
.loader-word span{ display:inline-block; transform:translateY(105%); }
.loader-count{ font-family:var(--mono); font-size:clamp(.9rem,1.4vw,1.1rem); color:var(--c1); }
.loader-bar{ position:absolute; left:0; bottom:0; height:3px; width:100%; background:var(--gradient-h); transform-origin:0 50%; transform:scaleX(0); }

/* ---------- Header ---------- */
.nav{ position:fixed; top:0; left:0; right:0; z-index:var(--z-nav); padding:14px var(--edge) 0; transition:transform .6s var(--ease-out); pointer-events:none; }
.nav.is-hidden{ transform:translateY(-130%); }
.nav-inner{ pointer-events:auto; max-width:var(--maxw); margin:0 auto; display:flex; align-items:center; justify-content:space-between; gap:18px; height:64px; padding:0 10px 0 22px; border-radius:999px; border:1px solid transparent; transition:background-color .5s, border-color .5s, backdrop-filter .5s, box-shadow .5s; }
.nav.is-scrolled .nav-inner{ background:rgba(8,18,13,.93); border-color:var(--line); box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 20px 50px -20px rgba(0,0,0,.6); }
.brand{ display:inline-flex; align-items:center; gap:10px; font-weight:800; letter-spacing:.02em; font-size:1.05rem; flex-shrink:0; }
.brand img{ height:26px; width:auto; }
.nav-links{ position:relative; display:flex; align-items:center; gap:4px; }
/* Limelight : trait lumineux au-dessus du lien actif, qui glisse vers le lien survolé */
.limelight{ position:absolute; left:0; top:-13px; width:44px; height:4px; border-radius:99px; background:var(--c1); box-shadow:0 0 14px rgba(0,230,118,.85); pointer-events:none; opacity:0; transition:transform .45s var(--ease-out), opacity .3s; }
.limelight::after{ content:''; position:absolute; left:-30%; top:4px; width:160%; height:48px; clip-path:polygon(5% 100%,25% 0,75% 0,95% 100%); background:linear-gradient(to bottom, rgba(0,230,118,.3), transparent); }
.limelight.is-on{ opacity:1; }
.has-limelight a[aria-current="page"]::after{ display:none; }
@media (prefers-reduced-motion:reduce){ .limelight{ transition:opacity .3s; } }
.nav-links a{ position:relative; padding:9px 12px; border-radius:999px; font-size:.93rem; font-weight:500; color:var(--muted); transition:color .3s, background-color .3s; }
.nav-links a:hover{ color:var(--ink); background:rgba(255,255,255,.04); }
.nav-links a[aria-current="page"]{ color:var(--ink); }
.nav-links a[aria-current="page"]::after{ content:''; position:absolute; left:50%; bottom:3px; width:4px; height:4px; margin-left:-2px; border-radius:50%; background:var(--c1); box-shadow:0 0 10px var(--c1); }
.nav-right, .nav-tools{ display:flex; align-items:center; gap:10px; }
.burger{ display:none; width:48px; height:48px; border-radius:50%; border:1px solid var(--line-2); position:relative; background:rgba(8,18,13,.9); }
.burger span{ position:absolute; left:15px; right:15px; height:1.5px; background:var(--ink); border-radius:2px; transition:transform .5s var(--ease-out), top .5s var(--ease-out); }
.burger span:nth-child(1){ top:19px; } .burger span:nth-child(2){ top:27px; }
.menu-open .burger span:nth-child(1){ top:23px; transform:rotate(45deg); }
.menu-open .burger span:nth-child(2){ top:23px; transform:rotate(-45deg); }
@media (max-width:1280px){ .nav-links{ display:none; } .burger{ display:block; } .nav .btn--sm{ display:none; } .nav-inner{ padding:0 0 0 12px; } .nav.is-scrolled .nav-inner{ background:transparent; border-color:transparent; box-shadow:none; -webkit-backdrop-filter:none; backdrop-filter:none; } .nav .brand{ padding:10px 16px; border-radius:999px; transition:background-color .4s; } .nav.is-scrolled .brand{ background:rgba(8,18,13,.92); } }

/* Grand écran : liens au centre, logo centré entre le bord du bandeau et « Accueil » */
/* margin-left : compense le retrait intérieur du bandeau (22 px) et celui du lien Accueil (12 px) */
@media (min-width:1281px){ .nav-inner{ display:grid; grid-template-columns:1fr auto 1fr; } .nav-inner > .brand{ justify-self:center; margin-left:7px; } .nav-right{ justify-self:end; } }
/* Sans liens de navigation (≤ 1280 px) : logo centré, recherche à gauche, menu à droite */
@media (max-width:1280px){ .nav-inner{ display:grid; grid-template-columns:1fr auto 1fr; padding:0; } .nav-inner > .brand{ grid-column:2; grid-row:1; } .nav-right{ display:contents; } .nav-tools{ grid-column:1; grid-row:1; justify-self:start; } .nav .search-btn, .nav .theme-btn{ width:48px; height:48px; } .nav .burger{ grid-column:3; grid-row:1; justify-self:end; } }

/* ---------- Fullscreen menu ---------- */
.menu{ position:fixed; inset:0; z-index:var(--z-menu); background:var(--bg-2); display:flex; flex-direction:column; padding:96px var(--edge) calc(28px + env(safe-area-inset-bottom)); overflow-y:auto; clip-path:circle(0% at calc(100% - 44px) 44px); transition:clip-path .9s var(--ease-io); visibility:hidden; }
.menu-open .menu{ clip-path:circle(150% at calc(100% - 44px) 44px); visibility:visible; }
.menu::before{ content:''; position:absolute; width:70vmax; height:70vmax; right:-30vmax; bottom:-30vmax; border-radius:50%; background:radial-gradient(circle, rgba(0,230,118,.22), transparent 60%); pointer-events:none; }
.menu-links{ display:flex; flex-direction:column; perspective:900px; }
.menu-links a{ display:flex; align-items:baseline; gap:16px; padding:10px 0; border-bottom:1px solid var(--line); font-size:clamp(2rem,9vw,4rem); font-weight:800; letter-spacing:-.045em; line-height:1.05; opacity:0; transform:translateY(40px) rotateX(-50deg); transform-origin:50% 100%; transition:opacity .5s, transform .7s var(--ease-out), color .3s; }
.menu-links a:hover, .menu-links a[aria-current="page"]{ color:var(--c3); }
.menu-open .menu-links a{ opacity:1; transform:none; }
.menu-open .menu-links a:nth-child(1){ transition-delay:.25s; } .menu-open .menu-links a:nth-child(2){ transition-delay:.3s; } .menu-open .menu-links a:nth-child(3){ transition-delay:.35s; } .menu-open .menu-links a:nth-child(4){ transition-delay:.4s; } .menu-open .menu-links a:nth-child(5){ transition-delay:.45s; } .menu-open .menu-links a:nth-child(6){ transition-delay:.5s; }
.menu-foot{ margin-top:auto; padding-top:32px; display:grid; gap:18px; opacity:0; transition:opacity .5s .55s; position:relative; }
.menu-open .menu-foot{ opacity:1; }
.menu-foot a{ font-weight:600; }
.menu-foot .btn{ justify-self:start; }

/* ---------- Buttons (3D magnetic keys) ---------- */
.btn{
  --tx:0px; --ty:0px; --rx:0deg; --ry:0deg; --lift:0px; --mx:50%; --my:50%;
  position:relative; isolation:isolate; display:inline-flex; align-items:center; gap:14px;
  height:58px; padding:0 8px 0 28px; border-radius:999px; font-weight:600; font-size:1.02rem; letter-spacing:-.01em; white-space:nowrap;
  transform:perspective(600px) translate3d(var(--tx),calc(var(--ty) + var(--lift)),0) rotateX(var(--rx)) rotateY(var(--ry));
  transition:transform .6s var(--ease-out), box-shadow .45s var(--ease-out), background-color .3s, border-color .3s, color .3s;
  will-change:transform; -webkit-tap-highlight-color:transparent;
}
.btn::before{ content:''; position:absolute; inset:0; border-radius:inherit; z-index:-1; opacity:0; transition:opacity .35s; background:radial-gradient(140px circle at var(--mx) var(--my), rgba(255,255,255,.6), transparent 65%); mix-blend-mode:soft-light; }
.btn:hover::before{ opacity:1; }
.btn:hover{ --lift:-3px; }
.btn:active{ --lift:3px; transition-duration:.12s; }
.btn-label{ position:relative; display:inline-block; overflow:hidden; line-height:1.25; }
.btn-label > span{ display:block; transition:transform .85s var(--ease-io); }  /* défilement du texte au survol : plus lent et progressif */
.btn-label > span + span{ position:absolute; left:0; top:100%; }
.btn:hover .btn-label > span{ transform:translateY(-100%); }
.btn-icon{ width:42px; height:42px; border-radius:50%; display:grid; place-items:center; flex-shrink:0; overflow:hidden; position:relative; }
.btn-icon svg{ width:18px; height:18px; transition:transform .55s var(--ease-out); }
.btn:hover .btn-icon svg{ transform:rotate(-45deg); }
.btn--primary{ background:var(--gradient-h); color:var(--on-accent);
  box-shadow:0 6px 0 -1px #0B7E47, 0 18px 40px -12px rgba(0,230,118,.6), inset 0 1px 0 rgba(255,255,255,.55), inset 0 -2px 0 rgba(0,0,0,.08); }
.btn--primary:hover{ box-shadow:0 9px 0 -1px #0B7E47, 0 26px 60px -12px rgba(0,230,118,.75), inset 0 1px 0 rgba(255,255,255,.55), inset 0 -2px 0 rgba(0,0,0,.08); }
.btn--primary:active{ box-shadow:0 2px 0 -1px #0B7E47, 0 10px 24px -12px rgba(0,230,118,.6), inset 0 1px 0 rgba(255,255,255,.55); }
.btn--primary .btn-icon{ background:var(--on-accent); color:var(--c1); }
.btn--ghost{ color:var(--ink); background:rgba(255,255,255,.03); border:1px solid var(--line-2);
  box-shadow:0 6px 0 -1px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.06); }
.btn--ghost:hover{ border-color:rgba(0,230,118,.55); box-shadow:0 9px 0 -1px rgba(0,0,0,.5), 0 20px 50px -20px rgba(0,230,118,.5), inset 0 1px 0 rgba(255,255,255,.08); }
.btn--ghost .btn-icon{ background:rgba(255,255,255,.06); border:1px solid var(--line-2); }
.btn--ghost:hover .btn-icon{ background:var(--c1); color:var(--on-accent); border-color:transparent; }
.btn--dark{ background:var(--on-accent); color:var(--ink); box-shadow:0 6px 0 -1px #000, 0 18px 40px -14px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.08); }
.btn--dark .btn-icon{ background:var(--c1); color:var(--on-accent); }
.btn--sm{ height:48px; padding:0 6px 0 20px; font-size:.94rem; gap:10px; }
.btn--sm .btn-icon{ width:36px; height:36px; }
.btn--sm.btn--primary{ box-shadow:0 4px 0 -1px #0B7E47, 0 12px 30px -12px rgba(0,230,118,.6), inset 0 1px 0 rgba(255,255,255,.55); }
.btn--noicon{ padding:0 28px; }
.btn-row{ display:flex; flex-wrap:wrap; gap:16px 14px; align-items:center; }
@media (max-width:480px){ .btn{ height:54px; font-size:.98rem; padding-left:22px; } .btn--noicon{ padding:0 22px; } }

.link-arrow{ display:inline-flex; align-items:center; gap:10px; font-weight:600; color:var(--ink); padding-bottom:4px; background:linear-gradient(var(--c1),var(--c1)) 0 100%/0% 1px no-repeat, linear-gradient(var(--line-2),var(--line-2)) 0 100%/100% 1px no-repeat; transition:background-size .6s var(--ease-out), color .3s; }
.link-arrow:hover{ background-size:100% 1px, 100% 1px; color:var(--c3); }
.link-arrow svg{ width:16px; height:16px; transition:transform .5s var(--ease-out); }
.link-arrow:hover svg{ transform:translateX(4px); }

/* ---------- Reveal system ---------- */
.js [data-reveal]{ opacity:0; transform:translate3d(0,48px,0) rotateX(-14deg); transform-origin:50% 0; transition:opacity 1s var(--ease-out), transform 1.2s var(--ease-out); transition-delay:var(--d,0s); }
.js [data-reveal="fade"]{ transform:none; }
.js [data-reveal="scale"]{ transform:scale(.92) translateY(30px); }
.js [data-reveal="left"]{ transform:translate3d(-50px,0,0) rotateY(12deg); }
.js [data-reveal].in{ opacity:1; transform:none; }
.js [data-stagger] > *{ opacity:0; transform:translate3d(0,40px,0) rotateX(-12deg); transform-origin:50% 0; transition:opacity .9s var(--ease-out), transform 1.1s var(--ease-out); }
.js [data-stagger].in > *{ opacity:1; transform:none; }
[data-stagger].in > *:nth-child(2){ transition-delay:.08s; } [data-stagger].in > *:nth-child(3){ transition-delay:.16s; } [data-stagger].in > *:nth-child(4){ transition-delay:.24s; } [data-stagger].in > *:nth-child(5){ transition-delay:.32s; } [data-stagger].in > *:nth-child(6){ transition-delay:.4s; }
.persp{ perspective:1200px; }
/* split words */
/* marge intérieure : accents, jambages et approche négative restent visibles dans le masque */
.sw{ display:inline-block; overflow:hidden; vertical-align:top; padding:.16em .06em .12em; margin:-.16em -.06em -.12em; }
.sw > span{ display:inline-block; }
.js [data-split] .sw > span{ transform:translateY(110%) rotateX(-80deg) rotateZ(4deg); transform-origin:0 100%; opacity:0; transition:transform 1.1s var(--ease-out), opacity .6s; transition-delay:calc(var(--i,0) * 55ms + var(--d,0s)); }
.js [data-split].in .sw > span{ transform:none; opacity:1; }
[data-split]{ perspective:800px; }

/* ---------- Sections ---------- */
.section{ position:relative; padding:clamp(88px,13vw,180px) 0; }
.section--tight{ padding:clamp(64px,9vw,120px) 0; }
.section--alt{ background:var(--bg-2); }
.section-head{ display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:24px 40px; margin-bottom:clamp(40px,6vw,80px); }
.section-head .eyebrow{ grid-column:1 / -1; }
.section-head .lede{ grid-column:1 / -1; }
@media (min-width:900px){ .section-head .lede{ grid-column:auto; justify-self:end; max-width:40ch; } }
.divider{ height:1px; background:var(--line); }

/* ---------- HERO (accueil) ---------- */
.hero{ position:relative; min-height:100svh; display:flex; flex-direction:column; justify-content:flex-end; padding:120px 0 clamp(28px,4vw,48px); overflow:hidden; isolation:isolate; }
.hero-canvas, .orb-fallback{ position:absolute; inset:0; z-index:-1; }
.hero-canvas canvas{ width:100% !important; height:100% !important; }
@media (max-width:899px){ .hero .hero-canvas{ opacity:.55; } }
.orb-fallback{ background:
  radial-gradient(38vmax 38vmax at 68% 42%, rgba(0,230,118,.35), transparent 60%),
  radial-gradient(30vmax 30vmax at 78% 60%, rgba(100,255,218,.22), transparent 60%),
  radial-gradient(24vmax 24vmax at 55% 30%, rgba(178,255,89,.16), transparent 60%); }
.has-webgl .orb-fallback{ opacity:0; transition:opacity 1s; }
.hero::after{ content:''; position:absolute; inset:auto 0 0 0; height:40%; z-index:-1; background:linear-gradient(0deg, var(--bg), transparent); pointer-events:none; }
.hero-content{ position:relative; transform-style:preserve-3d; will-change:transform; }
.hero-kicker{ display:flex; flex-wrap:wrap; gap:10px 28px; align-items:center; margin-bottom:clamp(20px,3vw,34px); }
.hero-title{ max-width:14ch; }
.hero-title .line{ display:block; }
.hero-grid{ margin-top:clamp(28px,4vw,48px); display:grid; grid-template-columns:minmax(0,1fr) auto; gap:28px 40px; align-items:end; }
.hero-bottom{ margin-top:clamp(40px,6vw,72px); padding-top:22px; border-top:1px solid var(--line); display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; }
.hero-bottom .mono{ color:var(--dim); display:block; margin-bottom:6px; }
.hero-bottom b{ font-weight:600; font-size:1rem; }
.hero-bottom a b{ transition:color .3s; } .hero-bottom a:hover b{ color:var(--c1); }
.scroll-cue{ display:inline-flex; align-items:center; gap:12px; color:var(--muted); justify-self:end; }
.scroll-cue i{ width:1px; height:44px; background:var(--line-2); position:relative; overflow:hidden; display:block; }
.scroll-cue i::after{ content:''; position:absolute; left:0; top:-40%; width:100%; height:40%; background:var(--c1); animation:cue 1.8s var(--ease-io) infinite; }
@keyframes cue{ to{ top:100%; } }
@media (max-width:900px){ .hero-grid{ grid-template-columns:1fr; } .hero-bottom{ grid-template-columns:1fr 1fr; } .scroll-cue{ display:none; } }

/* ---------- Marquee ---------- */
.marquee{ position:relative; padding:clamp(28px,4vw,48px) 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); overflow:hidden; background:var(--bg); }
.marquee-row{ display:flex; width:max-content; will-change:transform; }
.marquee-track{ display:flex; align-items:center; flex-shrink:0; animation:marq 38s linear infinite; }
.marquee-row.rev .marquee-track{ animation-direction:reverse; animation-duration:46s; }
.marquee-item{ display:inline-flex; align-items:center; gap:clamp(18px,3vw,40px); padding-right:clamp(18px,3vw,40px); font-size:clamp(2.4rem,7vw,6.4rem); font-weight:800; letter-spacing:-.05em; line-height:1.05; white-space:nowrap; }
.marquee-item .star{ width:clamp(20px,3vw,40px); height:clamp(20px,3vw,40px); color:var(--c1); flex-shrink:0; }
.marquee-row + .marquee-row{ margin-top:6px; }
@keyframes marq{ to{ transform:translateX(-100%); } }

/* ---------- Manifesto (mots au scroll) ---------- */
.manifesto{ font-size:clamp(1.7rem,4.2vw,3.7rem); font-weight:700; letter-spacing:-.04em; line-height:1.12; max-width:24ch; }
.manifesto .mw{ opacity:.14; transition:opacity .2s; }
.no-gsap .manifesto .mw{ opacity:1; }
.manifesto .grad{ opacity:1; }
.manifesto-foot{ margin-top:clamp(36px,5vw,60px); display:flex; flex-wrap:wrap; gap:24px 60px; align-items:center; }

/* ---------- Services — horizontal 3D coverflow ---------- */
.hs{ position:relative; background:var(--bg-2); overflow:hidden; }
.hs-pin{ min-height:100svh; display:flex; flex-direction:column; justify-content:center; padding:clamp(96px,10vw,120px) 0 clamp(40px,5vw,64px); }
.hs-head{ display:flex; justify-content:space-between; align-items:end; gap:24px; flex-wrap:wrap; margin-bottom:clamp(28px,4vw,48px); }
.hs-count{ font-family:var(--mono); color:var(--muted); font-size:.85rem; }
.hs-count b{ color:var(--c1); font-weight:500; }
.hs-viewport{ perspective:1600px; perspective-origin:50% 50%; }
.hs-track{ pointer-events:none; position:relative; display:flex; gap:clamp(16px,2.4vw,32px); padding:20px var(--edge); width:max-content; transform-style:preserve-3d; will-change:transform; }
.svc-card{ pointer-events:auto; --spot-x:50%; --spot-y:0%; position:relative; width:min(460px,80vw); min-height:min(540px,68svh); flex-shrink:0; display:flex; flex-direction:column; padding:clamp(22px,2.4vw,32px); border-radius:var(--r-l); background:linear-gradient(160deg, var(--surface-2), var(--surface) 60%); border:1px solid var(--line); overflow:hidden; isolation:isolate; transform-style:preserve-3d; will-change:transform; transition:border-color .4s, box-shadow .5s var(--ease-out); }
.svc-card::before{ content:''; position:absolute; inset:0; z-index:-1; background:radial-gradient(420px circle at var(--spot-x) var(--spot-y), rgba(0,230,118,.16), transparent 60%); opacity:0; transition:opacity .4s; }
.svc-card:hover{ border-color:rgba(0,230,118,.4); box-shadow:0 40px 80px -30px rgba(0,230,118,.35); }
.svc-card:hover::before{ opacity:1; }
.svc-top{ display:flex; justify-content:space-between; align-items:center; }
.svc-num{ font-family:var(--mono); font-size:.8rem; color:var(--c1); white-space:nowrap; }
.svc-tag{ font-family:var(--mono); font-size:.68rem; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; border:1px solid var(--line-2); padding:6px 10px; border-radius:999px; }
.svc-visual{ position:relative; margin:clamp(18px,2.5vw,30px) 0; flex:1; min-height:170px; border-radius:var(--r-m); overflow:hidden; display:grid; place-items:center; background:radial-gradient(circle at 50% 45%, rgba(0,230,118,.14), transparent 65%), rgba(255,255,255,.015); border:1px solid var(--line); transform:translateZ(40px); }
.svc-visual svg{ width:62%; max-width:220px; height:auto; overflow:visible; }
.svc-q{ font-size:clamp(1.55rem,2.4vw,2.1rem); font-weight:800; letter-spacing:-.04em; line-height:1.02; transform:translateZ(30px); }
.svc-desc{ margin-top:12px; color:var(--muted); font-size:.98rem; line-height:1.55; }
.svc-foot{ margin-top:20px; display:flex; justify-content:space-between; align-items:center; gap:12px; padding-top:18px; border-top:1px solid var(--line); }
.svc-name{ font-weight:600; }
.svc-go{ width:46px; height:46px; border-radius:50%; display:grid; place-items:center; border:1px solid var(--line-2); transition:background-color .35s, color .35s, transform .6s var(--ease-out), border-color .35s; flex-shrink:0; }
.svc-go svg{ width:18px; height:18px; }
.svc-card:hover .svc-go{ background:var(--c1); color:var(--on-accent); border-color:transparent; transform:rotate(-45deg); }
.svc-card--end{ justify-content:center; align-items:flex-start; gap:22px; background:var(--gradient-d); color:var(--on-accent); border:0; }
.svc-card--end .h-3{ font-size:clamp(1.8rem,3vw,2.6rem); font-weight:800; }
@media (min-width:900px) and (max-height:820px){ .hs-pin{ padding:84px 0 24px; } .hs-head{ margin-bottom:18px; } .svc-card{ min-height:0; } .svc-visual{ min-height:110px; margin:14px 0; } }
@media (max-width:899px){
  .hs-pin{ min-height:0; }
  .hs-viewport{ overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
  .hs-viewport::-webkit-scrollbar{ display:none; }
  .hs-track{ transform:none !important; }
  .svc-card{ scroll-snap-align:center; min-height:500px; transform:none !important; }
}
/* SVG line art anim */
.draw path, .draw circle, .draw rect, .draw line, .draw polyline{ fill:none; stroke:url(#gH); stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.draw .soft{ stroke:rgba(178,255,217,.22); }
.draw .fill{ fill:url(#gH); stroke:none; }
.spin-slow{ transform-box:fill-box; transform-origin:center; animation:spin 22s linear infinite; }
.float-y{ animation:floatY 5s ease-in-out infinite; }
@keyframes spin{ to{ transform:rotate(360deg); } }
@keyframes floatY{ 50%{ transform:translateY(-8px); } }

/* ---------- Méthode ---------- */
.method{ position:relative; }
.method-steps{ position:relative; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(16px,2vw,28px); }
.step{ position:relative; padding:clamp(24px,3vw,36px); border-radius:var(--r-l); border:1px solid var(--line); background:linear-gradient(180deg, rgba(255,255,255,.025), transparent); min-height:320px; display:flex; flex-direction:column; overflow:hidden; transform-style:preserve-3d; }
.step-n{ font-size:clamp(4.5rem,9vw,8rem); font-weight:800; letter-spacing:-.06em; line-height:.8; }
.step h3{ margin-top:auto; font-size:clamp(1.4rem,2.2vw,1.9rem); }
.step p{ margin-top:10px; color:var(--muted); }
.step--accent{ background:var(--gradient-d); color:var(--on-accent); border:0; }
.step--accent p{ color:rgba(3,17,10,.75); }
.step--accent .step-n{ color:var(--on-accent); -webkit-text-stroke:0; }
.method-line{ position:absolute; left:0; right:0; top:50%; height:2px; z-index:-1; }
@media (max-width:900px){ .method-steps{ grid-template-columns:1fr; } .step{ min-height:240px; } }

/* ---------- Stacking value cards ---------- */
.stack{ position:relative; display:grid; gap:clamp(20px,3vw,32px); }
.stack-card{ position:sticky; top:calc(96px + var(--i,0) * 22px); min-height:min(560px,72svh); border-radius:var(--r-l); padding:clamp(26px,4vw,56px); display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:clamp(24px,4vw,64px); align-items:stretch; overflow:hidden; isolation:isolate; transform-origin:50% 0; border:1px solid var(--line-2); background:var(--surface); box-shadow:0 -30px 60px -30px rgba(0,0,0,.8); }
.stack-card:nth-child(1){ --i:0; } .stack-card:nth-child(2){ --i:1; background:#0E1F16; } .stack-card:nth-child(3){ --i:2; background:#12271C; }
.stack-card .stack-left{ display:flex; flex-direction:column; justify-content:flex-end; gap:40px; }
.stack-word{ font-size:clamp(3rem,8.4vw,7.6rem); font-weight:800; letter-spacing:-.06em; line-height:.86; }
.stack-card p{ color:var(--muted); font-size:clamp(1.05rem,1.3vw,1.25rem); max-width:44ch; line-height:1.6; }
.stack-art{ position:relative; border-radius:var(--r-m); overflow:hidden; min-height:220px; background:var(--gradient-d); }
.stack-card:nth-child(2) .stack-art{ background:linear-gradient(135deg,var(--c2),var(--c4)); }
.stack-card:nth-child(3) .stack-art{ background:linear-gradient(135deg,var(--c3),var(--c1)); }
.stack-art::after{ content:''; position:absolute; inset:0; background:radial-gradient(circle at 30% 20%, rgba(255,255,255,.35), transparent 50%), radial-gradient(circle at 80% 90%, rgba(3,17,10,.35), transparent 55%); }
.stack-art svg{ position:absolute; inset:0; width:100%; height:100%; z-index:1; }
.stack-art svg *{ fill:none; stroke:rgba(3,17,10,.7); stroke-width:1.4; }
.stack-shade{ position:absolute; inset:0; z-index:5; background:#000; opacity:0; pointer-events:none; border-radius:inherit; }
@media (max-width:820px){ .stack-card{ grid-template-columns:1fr; top:calc(84px + var(--i,0) * 14px); min-height:0; } .stack-art{ min-height:180px; order:-1; } }

/* ---------- Statement ---------- */
.statement{ font-size:clamp(2.2rem,6.6vw,6.2rem); font-weight:800; letter-spacing:-.055em; line-height:.95; max-width:17ch; }

/* ---------- Ressources list + floating preview ---------- */
.res-list{ border-top:1px solid var(--line); }
.res-row{ position:relative; display:grid; grid-template-columns:70px minmax(0,1fr) auto 50px; gap:20px; align-items:center; padding:clamp(22px,3vw,34px) 0; border-bottom:1px solid var(--line); transition:padding .6s var(--ease-out), color .3s; }
.res-row::before{ content:''; position:absolute; inset:0; z-index:-1; background:linear-gradient(90deg, rgba(0,230,118,.08), transparent 70%); transform:scaleY(0); transform-origin:50% 100%; transition:transform .6s var(--ease-out); }
.res-row:hover::before{ transform:scaleY(1); }
.res-row:hover{ padding-left:18px; }
.res-row .mono{ color:var(--dim); }
.res-title{ font-size:clamp(1.3rem,2.6vw,2.3rem); font-weight:700; letter-spacing:-.035em; line-height:1.1; }
.res-cat{ color:var(--muted); font-size:.95rem; }
.res-arrow{ width:44px; height:44px; border-radius:50%; border:1px solid var(--line-2); display:grid; place-items:center; transition:background-color .35s, color .35s, transform .6s var(--ease-out); }
.res-arrow svg{ width:18px; height:18px; }
.res-row:hover .res-arrow{ background:var(--c1); color:var(--on-accent); transform:rotate(-45deg); border-color:transparent; }
@media (max-width:760px){ .res-row{ grid-template-columns:40px minmax(0,1fr) 44px; } .res-cat{ display:none; } }

/* ---------- Trust ---------- */
.trust-row{ display:grid; grid-template-columns:repeat(var(--n,3),minmax(0,1fr)); border:1px solid var(--line); border-radius:var(--r-m); overflow:hidden; }
.trust-row > a{ min-height:150px; display:grid; place-items:center; padding:26px 30px; border-right:1px solid var(--line); transition:background-color .4s; }
.trust-row > a:last-child{ border-right:0; }
.trust-row > a:hover{ background:rgba(0,230,118,.05); }
.trust-logo img{ max-height:78px; width:auto; max-width:100%; opacity:.82; transition:opacity .4s, transform .6s var(--ease-out); }
.trust-logo:hover img{ opacity:1; transform:scale(1.04); }
.trust-next{ align-content:center; gap:6px; text-align:center; }
.trust-next .mono{ color:var(--c1); }
.trust-next b{ font-size:1.15rem; font-weight:700; letter-spacing:-.01em; }
@media (max-width:760px){ .trust-row{ grid-template-columns:1fr; } .trust-row > a{ border-right:0; border-bottom:1px solid var(--line); min-height:120px; } .trust-row > a:last-child{ border-bottom:0; } }
.socials{ display:flex; flex-wrap:wrap; gap:10px; }
.socials a{ display:inline-flex; align-items:center; gap:10px; height:46px; padding:0 18px; border-radius:999px; border:1px solid var(--line-2); font-weight:500; transition:border-color .3s, background-color .3s, transform .5s var(--ease-out); }
.socials a:hover{ border-color:var(--c1); background:rgba(0,230,118,.08); transform:translateY(-2px); }
.socials svg{ width:17px; height:17px; }

/* ---------- CTA final ---------- */
.cta{ position:relative; overflow:hidden; isolation:isolate; padding:clamp(100px,14vw,200px) 0; text-align:left; }
.cta-glow{ position:absolute; z-index:-1; width:90vmax; height:90vmax; left:50%; top:60%; margin:-45vmax 0 0 -45vmax; border-radius:50%; background:radial-gradient(circle, rgba(0,230,118,.28), rgba(29,233,182,.08) 35%, transparent 62%); pointer-events:none; }
.cta-title{ font-size:clamp(2.6rem,7.2vw,7rem); font-weight:800; letter-spacing:-.055em; line-height:.9; }
.cta-row{ margin-top:clamp(36px,5vw,64px); display:flex; flex-wrap:wrap; gap:32px 48px; align-items:center; justify-content:space-between; }
.cta-circle{ --tx:0px; --ty:0px; position:relative; width:clamp(150px,17vw,210px); aspect-ratio:1; border-radius:50%; display:grid; place-items:center; text-align:center; background:var(--gradient-d); color:var(--on-accent); font-weight:700; font-size:1.05rem; line-height:1.15; padding:20px; transform:translate3d(var(--tx),var(--ty),0); transition:transform .7s var(--ease-out), box-shadow .5s; box-shadow:0 30px 80px -20px rgba(0,230,118,.6); }
.cta-circle:hover{ box-shadow:0 40px 100px -20px rgba(0,230,118,.85); }
.cta-circle .in-label{ transition:transform .5s var(--ease-out); }
.cta-circle:hover .in-label{ transform:scale(1.06); }
.cta-contact{ display:grid; gap:6px; }
.cta-contact a{ font-size:clamp(1.4rem,3vw,2.4rem); font-weight:700; letter-spacing:-.03em; transition:color .3s; }
.cta-contact a:hover{ color:var(--c1); }
/* Variante pages services : bouton en avant, coordonnées discrètes juste dessous */
.cta--svc{ padding:clamp(64px,8vw,112px) 0; }
.cta--svc .cta-glow{ width:90%; height:100%; left:5%; top:0; margin:0; background:radial-gradient(closest-side, rgba(0,230,118,.22), rgba(29,233,182,.06) 60%, transparent 100%); }  /* halo contenu dans la section : pas de bord visible */
.cta-stack{ margin-top:clamp(28px,3.5vw,40px); display:flex; flex-direction:column; align-items:flex-start; gap:18px; }
.btn--xl{ height:68px; padding:0 10px 0 34px; font-size:1.15rem; gap:16px; }
.btn--xl .btn-icon{ width:50px; height:50px; }
.cta-mini{ display:flex; flex-wrap:wrap; align-items:baseline; gap:6px 20px; font-size:.95rem; color:var(--muted); }
.cta-mini a{ color:var(--ink); font-weight:600; transition:color .3s; }
.cta-mini a:hover{ color:var(--c1); }

/* ---------- Footer ---------- */
.foot{ position:relative; border-top:1px solid var(--line); padding:clamp(60px,8vw,100px) 0 calc(24px + env(safe-area-inset-bottom)); overflow:hidden; background:var(--bg); }
.foot-cols{ display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:36px; }
.foot-cols h4{ font-family:var(--mono); font-size:.72rem; font-weight:500; text-transform:uppercase; letter-spacing:.06em; color:var(--dim); margin-bottom:18px; }
.foot-cols ul{ display:grid; gap:10px; }
.foot-cols a{ color:var(--muted); transition:color .3s; }
.foot-cols a:hover{ color:var(--ink); }
.foot-cols p{ color:var(--muted); max-width:36ch; }
.foot-word{ margin-top:clamp(50px,8vw,100px); font-size:clamp(3.6rem,19.5vw,19rem); font-weight:800; letter-spacing:-.04em; line-height:.78; white-space:nowrap; display:flex; justify-content:space-between; user-select:none; }
.foot-word span{ display:inline-block; padding:.26em .05em .14em; margin:-.26em -.05em -.14em; background:linear-gradient(180deg, var(--ink) 20%, rgba(236,247,241,.08)); -webkit-background-clip:text; background-clip:text; color:transparent; -webkit-text-fill-color:transparent; transition:transform 1.1s var(--ease-out); }
.js .foot-word span{ transform:translateY(60%) rotateX(-60deg); }
.js .foot-word.in span{ transform:none; }
.foot-word.in span:nth-child(2){ transition-delay:.05s; } .foot-word.in span:nth-child(3){ transition-delay:.1s; } .foot-word.in span:nth-child(4){ transition-delay:.15s; } .foot-word.in span:nth-child(5){ transition-delay:.2s; } .foot-word.in span:nth-child(6){ transition-delay:.25s; } .foot-word.in span:nth-child(7){ transition-delay:.3s; }
.foot-word{ perspective:900px; }
.foot-legal{ margin-top:28px; padding-top:22px; border-top:1px solid var(--line); display:flex; flex-wrap:wrap; gap:14px 28px; justify-content:space-between; font-size:.88rem; color:var(--dim); }
.foot-legal nav{ display:flex; flex-wrap:wrap; gap:14px 22px; }
.foot-legal a:hover{ color:var(--ink); }
.to-top{ display:inline-flex; align-items:center; gap:8px; }
.to-top svg{ width:14px; height:14px; }
@media (max-width:900px){ .foot-cols{ grid-template-columns:1fr 1fr; } .foot-cols > div:first-child{ grid-column:1 / -1; } }
@media (max-width:480px){ .foot-cols{ grid-template-columns:1fr; } }

/* ===================== SOUS-PAGES ===================== */
.page-hero{ position:relative; min-height:min(88svh,860px); display:flex; flex-direction:column; justify-content:flex-end; padding:140px 0 clamp(40px,6vw,80px); overflow:hidden; isolation:isolate; }
.page-hero--short{ min-height:min(70svh,680px); }
.page-hero .hero-canvas{ left:30%; }
@media (max-width:900px){ .page-hero .hero-canvas{ left:0; opacity:.6; } }
.page-hero::after{ content:''; position:absolute; inset:auto 0 0 0; height:45%; z-index:-1; background:linear-gradient(0deg, var(--bg), transparent); pointer-events:none; }
.page-hero-inner{ transform-style:preserve-3d; will-change:transform; }
.crumbs{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; font-family:var(--mono); font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--dim); margin-bottom:clamp(22px,3vw,34px); }
.crumbs a{ color:var(--muted); transition:color .3s; }
.crumbs a:hover{ color:var(--c1); }
.crumbs .sep{ opacity:.5; }
.crumbs [aria-current]{ color:var(--ink); }
.page-hero h1{ max-width:18ch; }
.page-hero .lede{ margin-top:clamp(20px,2.6vw,30px); }
.page-hero-meta{ margin-top:clamp(36px,5vw,64px); padding-top:20px; border-top:1px solid var(--line); display:flex; flex-wrap:wrap; justify-content:space-between; gap:18px 40px; align-items:center; }
.page-hero-meta .mono{ color:var(--dim); }
.big-index{ position:absolute; right:var(--edge); top:110px; font-size:clamp(6rem,20vw,18rem); font-weight:800; letter-spacing:-.07em; line-height:.8; z-index:-1; color:transparent; -webkit-text-stroke:1px rgba(178,255,217,.14); pointer-events:none; }

/* Split with sticky head */
.split{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(32px,6vw,100px); align-items:start; }
.split-sticky{ position:sticky; top:120px; }
@media (max-width:900px){ .split{ grid-template-columns:1fr; } .split-sticky{ position:static; } }
.block + .block{ margin-top:clamp(40px,5vw,64px); padding-top:clamp(40px,5vw,64px); border-top:1px solid var(--line); }
.block .eyebrow{ margin-bottom:18px; }

.check-list{ display:grid; gap:12px; }
.check-list li{ display:flex; gap:18px; align-items:flex-start; padding:22px 24px; border-radius:var(--r-m); border:1px solid var(--line); background:rgba(255,255,255,.02); font-size:1.08rem; line-height:1.45; transition:border-color .4s, background-color .4s, transform .6s var(--ease-out); }
.check-list li:hover{ border-color:rgba(0,230,118,.35); background:rgba(0,230,118,.05); transform:translateX(6px); }
.check-list .ck{ width:28px; height:28px; border-radius:8px; background:var(--gradient-d); display:grid; place-items:center; flex-shrink:0; box-shadow:0 0 20px rgba(0,230,118,.4); }
.check-list .ck svg{ width:14px; height:14px; stroke:var(--on-accent); fill:none; stroke-width:2.6; }

.links-stack{ display:grid; gap:14px; justify-items:start; margin-top:28px; }
/* Pages services : « Ce que vous obtenez » sur toute la largeur, sous le problème et l'approche */
.svc-gets{ margin-top:clamp(56px,7vw,96px); padding-top:clamp(40px,5vw,64px); border-top:1px solid var(--line); }
.svc-gets .eyebrow{ margin-bottom:18px; }
.svc-gets .check-list{ grid-template-columns:repeat(var(--cols,2),minmax(0,1fr)); }
.svc-gets .links-stack{ grid-auto-flow:column; justify-content:start; gap:14px 36px; }
@media (max-width:900px){ .svc-gets .check-list{ grid-template-columns:1fr; } .svc-gets .links-stack{ grid-auto-flow:row; } }

/* Tilt card (generic) */
.tilt{ --rx:0deg; --ry:0deg; --spot-x:50%; --spot-y:50%; position:relative; isolation:isolate; transform:perspective(1000px) rotateX(var(--rx)) rotateY(var(--ry)); transform-style:preserve-3d; transition:transform .7s var(--ease-out), border-color .4s, box-shadow .5s; will-change:transform; }
.tilt::before{ content:''; position:absolute; inset:0; z-index:-1; border-radius:inherit; background:radial-gradient(380px circle at var(--spot-x) var(--spot-y), rgba(0,230,118,.14), transparent 60%); opacity:0; transition:opacity .4s; }
.tilt:hover::before{ opacity:1; }
.tilt.is-tilting{ transition:transform .15s linear, border-color .4s, box-shadow .5s; }

/* Next card */
.next-card{ display:grid; grid-template-columns:minmax(0,1fr) auto; gap:24px; align-items:end; padding:clamp(28px,4vw,56px); border-radius:var(--r-l); border:1px solid var(--line-2); background:linear-gradient(150deg,var(--surface-2),var(--bg-2)); overflow:hidden; }
.next-card .h-2{ margin-top:14px; transition:color .4s; }
.next-card:hover{ border-color:rgba(0,230,118,.45); box-shadow:0 40px 90px -40px rgba(0,230,118,.45); }
.next-card:hover .h-2{ color:var(--c3); }
.next-card .res-arrow{ width:64px; height:64px; }
.next-card:hover .res-arrow{ background:var(--c1); color:var(--on-accent); transform:rotate(-45deg); border-color:transparent; }

/* Services hub */
.problem-grid{ display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:clamp(14px,1.8vw,22px); }
.problem-card{ grid-column:span 2; display:flex; flex-direction:column; min-height:380px; padding:clamp(24px,2.6vw,34px); border-radius:var(--r-l); border:1px solid var(--line); background:linear-gradient(170deg,var(--surface-2),var(--surface) 70%); overflow:hidden; }
.problem-card:nth-child(4), .problem-card:nth-child(5){ grid-column:span 3; }
.problem-card:hover{ border-color:rgba(0,230,118,.4); box-shadow:0 40px 80px -36px rgba(0,230,118,.4); }
.problem-card .svc-top{ margin-bottom:auto; }
.problem-card h3{ margin-top:48px; font-size:clamp(1.6rem,2.6vw,2.3rem); font-weight:800; letter-spacing:-.04em; transform:translateZ(30px); }
.problem-card p{ margin-top:14px; color:var(--muted); max-width:44ch; }
.problem-card .svc-foot{ margin-top:26px; }
@media (max-width:980px){ .problem-grid{ grid-template-columns:1fr 1fr; } .problem-card, .problem-card:nth-child(4), .problem-card:nth-child(5){ grid-column:auto; } .problem-card:nth-child(5){ grid-column:1 / -1; } }
@media (max-width:640px){ .problem-grid{ grid-template-columns:1fr; } .problem-card{ min-height:320px; } }

.loop{ display:grid; grid-template-columns:1fr auto 1.3fr auto 1fr; gap:16px; align-items:center; }
.loop-node{ padding:clamp(22px,3vw,34px); border-radius:var(--r-l); border:1px solid var(--line-2); text-align:center; font-weight:700; font-size:clamp(1.2rem,2vw,1.6rem); letter-spacing:-.03em; background:rgba(255,255,255,.02); }
.loop-node.accent{ background:var(--gradient-d); color:var(--on-accent); border:0; padding:clamp(30px,4vw,48px); box-shadow:0 30px 80px -30px rgba(0,230,118,.6); }
.loop-arrow{ color:var(--c1); }
.loop-arrow svg{ width:34px; height:34px; }
@media (max-width:760px){ .loop{ grid-template-columns:1fr; } .loop-arrow{ justify-self:center; transform:rotate(90deg); } }

.facts{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(14px,1.8vw,22px); }
.fact{ padding:clamp(24px,3vw,36px); border-radius:var(--r-l); border:1px solid var(--line); background:rgba(255,255,255,.015); display:flex; gap:22px; align-items:flex-start; }
.fact .mono{ color:var(--c1); padding-top:5px; }
.fact p{ font-size:clamp(1.1rem,1.5vw,1.35rem); line-height:1.4; letter-spacing:-.015em; }
@media (max-width:760px){ .facts{ grid-template-columns:1fr; } }

/* Info list */
.info-list{ display:grid; border-top:1px solid var(--line); }
.info-list > *{ display:grid; grid-template-columns:minmax(120px,.5fr) minmax(0,1fr); gap:18px; padding:20px 0; border-bottom:1px solid var(--line); align-items:baseline; }
.info-list .mono{ color:var(--dim); }
.info-list b{ font-weight:600; font-size:1.08rem; }
.info-list a b{ transition:color .3s; } .info-list a:hover b{ color:var(--c1); }
@media (max-width:480px){ .info-list > *{ grid-template-columns:1fr; gap:4px; } }

/* Portfolio */
.cases{ display:grid; gap:clamp(18px,2.4vw,28px); }
.case{ display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:clamp(24px,4vw,64px); padding:clamp(24px,3.5vw,48px); border-radius:var(--r-l); border:1px solid var(--line); background:linear-gradient(160deg,var(--surface),var(--bg-2)); overflow:hidden; }
.case:hover{ border-color:rgba(0,230,118,.35); }
.case-visual{ position:relative; border-radius:var(--r-m); min-height:260px; overflow:hidden; background:var(--gradient-d); display:flex; align-items:flex-end; padding:22px; }
.case:nth-child(2) .case-visual{ background:linear-gradient(135deg,var(--c2),var(--c4)); }
.case:nth-child(3) .case-visual{ background:linear-gradient(135deg,var(--c3),var(--c1)); }
.case:nth-child(4) .case-visual{ background:linear-gradient(135deg,var(--c4),var(--c2)); }
.case:nth-child(5) .case-visual{ background:linear-gradient(135deg,var(--c1),var(--c4)); }
.case-visual::before{ content:''; position:absolute; inset:0; background:radial-gradient(circle at 25% 15%, rgba(255,255,255,.4), transparent 50%); }
.case-visual .case-n{ position:relative; font-size:clamp(4rem,9vw,7.5rem); font-weight:800; letter-spacing:-.07em; line-height:.8; color:var(--on-accent); }
.case-visual .svc-tag{ position:absolute; top:18px; left:18px; color:var(--on-accent); border-color:rgba(3,17,10,.3); }
.case h2{ font-size:clamp(1.6rem,2.8vw,2.5rem); font-weight:800; letter-spacing:-.04em; }
.case p{ margin-top:14px; color:var(--muted); line-height:1.65; }
.case-result{ margin-top:22px; padding:18px 20px; border-radius:var(--r-s); border:1px solid rgba(0,230,118,.25); background:rgba(0,230,118,.06); font-weight:500; line-height:1.5; }
.case-result .mono{ color:var(--c1); display:block; margin-bottom:6px; }
.case .link-arrow{ margin-top:24px; }
@media (max-width:860px){ .case{ grid-template-columns:1fr; } .case-visual{ min-height:180px; } }

/* Note (contenu provisoire) */
.note{ display:flex; gap:14px; align-items:flex-start; padding:16px 20px; border-radius:var(--r-s); border:1px dashed var(--line-2); background:rgba(255,255,255,.02); color:var(--muted); font-size:.92rem; }
.note svg{ width:18px; height:18px; flex-shrink:0; color:var(--c1); margin-top:2px; }
.note strong{ color:var(--ink); font-weight:600; }

/* Contact */
.contact-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.05fr); gap:clamp(36px,6vw,96px); align-items:start; }
@media (max-width:960px){ .contact-grid{ grid-template-columns:1fr; } }
.big-phone{ display:inline-flex; align-items:center; gap:14px; font-size:clamp(1.5rem,2.6vw,2.2rem); font-weight:800; letter-spacing:-.045em; line-height:1; transition:color .3s; }
.big-phone:hover{ color:var(--c1); }
.big-phone .ico{ width:clamp(40px,3.4vw,48px); aspect-ratio:1; border-radius:50%; background:var(--gradient-d); display:grid; place-items:center; flex-shrink:0; box-shadow:0 0 24px rgba(0,230,118,.35); }
.big-phone .ico svg{ width:42%; height:42%; stroke:var(--on-accent); fill:none; stroke-width:2; }
.form-card{ padding:clamp(24px,3.6vw,48px); border-radius:var(--r-l); border:1px solid var(--line-2); background:linear-gradient(160deg, rgba(16,33,24,.8), rgba(7,17,12,.9));  box-shadow:0 50px 100px -50px rgba(0,230,118,.35), inset 0 1px 0 rgba(255,255,255,.05); }
.form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:640px){ .form-grid{ grid-template-columns:1fr; } }
.field{ position:relative; }
.field.full{ grid-column:1 / -1; }
.field input, .field select, .field textarea{ width:100%; font:inherit; font-size:1.02rem; color:var(--ink); background:rgba(255,255,255,.03); border:1px solid var(--line-2); border-radius:14px; padding:26px 16px 10px; transition:border-color .3s, background-color .3s, box-shadow .3s; -webkit-appearance:none; appearance:none; }
.field select{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239DB5A9' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 14px center; background-size:18px; padding-right:44px; }
.field select option{ background:var(--bg-2); color:var(--ink); }
.field textarea{ min-height:140px; resize:vertical; }
.field label{ position:absolute; left:17px; top:18px; font-size:1rem; color:var(--dim); pointer-events:none; transform-origin:0 0; transition:transform .35s var(--ease-out), color .3s; }
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color:var(--c1); background:rgba(0,230,118,.04); box-shadow:0 0 0 4px rgba(0,230,118,.12); }
.field input:focus + label, .field input:not(:placeholder-shown) + label,
.field textarea:focus + label, .field textarea:not(:placeholder-shown) + label,
.field select + label{ transform:translateY(-10px) scale(.74); color:var(--c3); }
.field.invalid input, .field.invalid select{ border-color:#FF6B6B; }
.field .err{ display:none; margin-top:6px; font-size:.82rem; color:#FF8A8A; }
.field.invalid .err{ display:block; }
.form-foot{ margin-top:20px; display:flex; flex-wrap:wrap; gap:16px 20px; align-items:center; }
.form-foot .note-s{ font-size:.85rem; color:var(--dim); max-width:36ch; }
.form-status{ display:none; margin-top:18px; padding:16px 18px; border-radius:var(--r-s); border:1px solid rgba(0,230,118,.35); background:rgba(0,230,118,.07); font-weight:500; }
.form-status.show{ display:block; }
#contactMailLink{ margin-top:14px; }
#contactMailLink[hidden]{ display:none; }

/* Article layout */
.article-layout{ display:grid; grid-template-columns:240px minmax(0,1fr); gap:clamp(32px,6vw,96px); align-items:start; }
.toc{ position:sticky; top:120px; }
.toc .mono{ color:var(--dim); display:block; margin-bottom:16px; }
.toc ol{ display:grid; gap:4px; border-left:1px solid var(--line); }
.toc a{ display:block; padding:7px 0 7px 16px; margin-left:-1px; border-left:1px solid transparent; color:var(--dim); font-size:.92rem; line-height:1.35; transition:color .3s, border-color .3s; }
.toc a:hover{ color:var(--ink); }
.toc a.active{ color:var(--ink); border-left-color:var(--c1); }
@media (max-width:1000px){ .article-layout{ grid-template-columns:1fr; } .toc{ display:none; } }
.prose{ max-width:70ch; counter-reset:h2; }
.prose > p:first-child{ font-size:clamp(1.2rem,1.6vw,1.45rem); color:var(--ink); line-height:1.55; letter-spacing:-.01em; }
.prose h2{ counter-increment:h2; font-size:clamp(1.6rem,2.8vw,2.4rem); font-weight:800; letter-spacing:-.04em; margin:clamp(56px,7vw,88px) 0 20px; scroll-margin-top:110px; }
.prose h2::before{ content:counter(h2, decimal-leading-zero); display:block; font-family:var(--mono); font-size:.8rem; letter-spacing:.04em; font-weight:500; color:var(--c1); margin-bottom:14px; }
.prose h3{ font-size:clamp(1.2rem,1.7vw,1.45rem); font-weight:700; letter-spacing:-.025em; margin:36px 0 12px; }
.prose p, .prose li{ color:var(--muted); font-size:1.1rem; line-height:1.8; }
.prose p + p{ margin-top:1.1em; }
.prose strong{ color:var(--ink); font-weight:600; }
.prose ul{ list-style:none; display:grid; gap:10px; margin:14px 0; }
.prose ul li{ position:relative; padding-left:22px; }
.prose ul li::before{ content:''; position:absolute; left:0; top:.72em; width:8px; height:8px; border-radius:2px; background:var(--gradient-d); }
.prose a{ color:var(--ink); text-decoration:underline; text-decoration-color:var(--c1); text-underline-offset:4px; }
.prose .article-cta-note{ margin-top:clamp(48px,6vw,72px); padding:clamp(24px,3vw,36px); border-radius:var(--r-l); border:1px solid rgba(0,230,118,.3); background:linear-gradient(150deg, rgba(0,230,118,.09), transparent 70%); }
.prose .article-cta-note p{ color:var(--ink); font-size:1.15rem; }
.legal .prose h2::before{ display:none; }
.legal .prose h2{ font-size:clamp(1.4rem,2.2vw,1.9rem); margin-top:56px; }
.legal .prose h2:first-child{ margin-top:0; }

.read-progress{ position:fixed; left:0; top:0; height:3px; width:100%; z-index:calc(var(--z-nav) + 2); transform-origin:0 50%; transform:scaleX(0); background:var(--gradient-h); box-shadow:0 0 16px rgba(0,230,118,.6); }

/* Hub ressources cards */
.res-cards{ display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:clamp(14px,1.8vw,22px); }
.res-card{ grid-column:span 2; position:relative; display:flex; flex-direction:column; min-height:360px; padding:clamp(24px,2.6vw,32px); border-radius:var(--r-l); border:1px solid var(--line); background:linear-gradient(170deg,var(--surface-2),var(--surface) 75%); overflow:hidden; }
.res-card:nth-child(1), .res-card:nth-child(2){ grid-column:span 3; }
.res-card:hover{ border-color:rgba(0,230,118,.4); box-shadow:0 40px 80px -36px rgba(0,230,118,.4); }
.res-ico{ width:56px; height:56px; border-radius:16px; background:var(--gradient-d); display:grid; place-items:center; box-shadow:0 0 30px rgba(0,230,118,.35); transform:translateZ(40px); }
.res-ico svg{ width:24px; height:24px; stroke:var(--on-accent); fill:none; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.res-card h3{ margin-top:auto; padding-top:48px; font-size:clamp(1.5rem,2.4vw,2.1rem); font-weight:800; letter-spacing:-.04em; transform:translateZ(24px); }
.res-card p{ margin-top:12px; color:var(--muted); }
@media (max-width:980px){ .res-cards{ grid-template-columns:1fr 1fr; } .res-card, .res-card:nth-child(1), .res-card:nth-child(2){ grid-column:auto; } .res-card:nth-child(5){ grid-column:1 / -1; } }
@media (max-width:640px){ .res-cards{ grid-template-columns:1fr; } .res-card{ min-height:300px; } }

/* Mission split big */
.mission-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(32px,6vw,96px); align-items:start; }
.mission-grid > .body-l{ margin-top:0; }
.svc-lead{ font-size:clamp(1.2rem,1.7vw,1.55rem); color:var(--ink); line-height:1.5; }
@media (min-width:760px){ .svc-lead{ text-align:justify; } }
@media (max-width:900px){ .mission-grid{ grid-template-columns:1fr; } }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; transition-delay:0s !important; }
  .js [data-reveal], .js [data-stagger] > *, .js [data-split] .sw > span, .js .foot-word span{ opacity:1 !important; transform:none !important; }
  .manifesto .mw{ opacity:1 !important; }
  .grain{ animation:none; }
  .marquee-track{ animation:none; }
}

/* Portfolio — projets clients */
.showcase{ display:grid; gap:clamp(72px,10vw,140px); }
.show{ display:grid; grid-template-columns:minmax(0,1.45fr) minmax(0,.75fr); gap:clamp(28px,5vw,72px); align-items:center; }
.show--rev{ grid-template-columns:minmax(0,.75fr) minmax(0,1.45fr); }
.show--rev .show-stage{ order:2; }
.show-stage{ perspective:1600px; }
.show-frame{ position:relative; border-radius:18px; overflow:hidden; background:#0B1510; border:1px solid var(--line-2); box-shadow:0 70px 140px -50px rgba(0,230,118,.4), 0 30px 60px -30px rgba(0,0,0,.8); transform-origin:50% 100%; will-change:transform; }
.show-bar{ display:flex; align-items:center; gap:7px; height:36px; padding:0 14px; background:#0F1C15; border-bottom:1px solid var(--line); }
.show-bar i{ width:10px; height:10px; border-radius:50%; background:rgba(255,255,255,.14); }
.show-bar i:first-child{ background:var(--c1); }
.show-bar span{ margin-left:10px; font-family:var(--mono); font-size:.7rem; color:var(--dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.show-frame img{ width:100%; height:auto; display:block; }
.show-logo{ margin:22px 0 20px; }
.show-logo img{ height:72px; width:auto; }
.show-logo--light{ display:flex; width:max-content; padding:12px 18px; border-radius:14px; background:#fff; }
.show-logo--light img{ height:48px; }
.show-info h2{ font-size:clamp(1.6rem,2.6vw,2.3rem); font-weight:800; letter-spacing:-.04em; }
.show-info p{ margin-top:14px; color:var(--muted); line-height:1.65; }
.show-info .show-label{ margin-top:24px; font-family:var(--mono); font-size:.76rem; letter-spacing:.1em; text-transform:uppercase; color:var(--dim); }
.show-info .show-label + p{ margin-top:6px; }
.show-info .show-link{ margin-top:24px; }
@media (max-width:900px){ .show, .show--rev{ grid-template-columns:1fr; } .show--rev .show-stage{ order:0; } }

/* Agence — carte de France animée */
.agence-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(40px,6vw,96px); align-items:center; }
.agence-grid .manifesto{ font-size:clamp(1.6rem,2.9vw,2.8rem); max-width:22ch; }
@media (max-width:960px){ .agence-grid{ grid-template-columns:1fr; } .fr-wrap{ max-width:560px; width:100%; justify-self:center; } }
.fr-wrap{ position:relative; margin:0; perspective:1400px; border-radius:var(--r-l); }
.fr-stage{ position:relative; will-change:transform; }
.fr-img{ display:block; width:100%; height:auto; }
.fr-img.on-light{ display:none; }
:root[data-theme="light"] .fr-img.on-dark{ display:none; }
:root[data-theme="light"] .fr-img.on-light{ display:block; }
.fr-live{ position:absolute; left:0; top:0; width:100%; height:auto; pointer-events:none; will-change:transform; }
.fr-wrap:not(.on) .fr-live *, .fr-wrap:not(.on) .fr-glow{ animation-play-state:paused !important; }  /* hors écran : animations en pause */
.fr-map{ width:100%; height:auto; overflow:visible; }
.fr-regions path{ fill:rgba(0,230,118,.03); stroke:rgba(100,255,218,.18); stroke-width:.8; stroke-linejoin:round; }
.fr-dot{ fill:rgba(178,255,217,.24); opacity:0; transform-box:fill-box; transform-origin:center; transform:scale(.2); transition:opacity .6s var(--ease-out), transform .9s var(--ease-out); transition-delay:var(--d); }
.fr-wrap.in .fr-dot{ opacity:1; transform:none; }
.fr-arc{ fill:none; stroke:url(#gFr); stroke-width:1.3; stroke-opacity:.6; stroke-linecap:round; stroke-dasharray:1; stroke-dashoffset:1; transition:stroke-dashoffset 1.5s var(--ease-out) var(--d); }
.fr-wrap.in .fr-arc{ stroke-dashoffset:0; }
.fr-packet{ fill:none; stroke:#F2FFF8; stroke-width:2.4; stroke-linecap:round; stroke-dasharray:2.5 97.5; stroke-dashoffset:100; opacity:0; transition:opacity .4s 2s; }
.fr-wrap.in .fr-packet{ opacity:.95; animation:frPacket var(--t) linear infinite; animation-delay:calc(var(--p) + 2.2s); }
@keyframes frPacket{ to{ stroke-dashoffset:0; } }
.fr-core{ fill:#00E676; transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .7s var(--ease-out) var(--d); }
.fr-wrap.in .fr-core{ transform:scale(1); }
.fr-ring{ fill:none; stroke:#64FFDA; stroke-width:1.2; opacity:0; transform-box:fill-box; transform-origin:center; }
.fr-wrap.in .fr-ring{ animation:frPing 2.8s var(--ease-out) infinite; animation-delay:calc(var(--d) + 1s); }
.fr-node:nth-child(3n) .fr-ring{ animation-duration:3.6s; }
.fr-node:nth-child(4n+1) .fr-core{ fill:#B2FF59; }
@keyframes frPing{ 0%{ transform:scale(1); opacity:.9; } 100%{ transform:scale(5); opacity:0; } }
.fr-glow{ position:absolute; left:8%; top:10%; width:84%; height:80%; border-radius:50%; background:radial-gradient(closest-side, rgba(0,230,118,.3), rgba(0,230,118,0)); pointer-events:none; will-change:transform, opacity; animation:frGlow 6s ease-in-out infinite; }
@keyframes frGlow{ 50%{ transform:scale(1.08); opacity:.7; } }
.fr-legend{ display:flex; flex-wrap:wrap; gap:10px 22px; justify-content:center; margin-top:22px; font-family:var(--mono); font-size:.7rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); }
.fr-legend span{ display:inline-flex; align-items:center; gap:8px; }
.fr-legend i{ width:8px; height:8px; border-radius:50%; background:var(--c1); box-shadow:0 0 10px var(--c1); }
.fr-legend i.alt{ background:var(--c3); box-shadow:0 0 10px var(--c3); }
.fr-legend i.alt2{ background:var(--c4); box-shadow:0 0 10px var(--c4); }
.show-screen{ display:block; position:relative; aspect-ratio:1440/900; overflow:hidden; background:#0B1510; }
.show-poster{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.show-hint{ margin-top:16px; display:flex; align-items:center; justify-content:center; gap:10px; font-family:var(--mono); font-size:.7rem; text-transform:uppercase; letter-spacing:.06em; color:var(--dim); }
.show-hint i{ width:7px; height:7px; border-radius:50%; background:var(--c1); box-shadow:0 0 10px var(--c1); animation:frGlow 1.6s ease-in-out infinite; }

/* ===================== v3 — Notion ===================== */
.statement--m{ margin-top:clamp(48px,7vw,96px); font-size:clamp(1.7rem,3.8vw,3.3rem); max-width:28ch; }
/* Qui sommes-nous — deux profils */
.duo{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(14px,2vw,24px); }
.duo-card{ padding:clamp(26px,3.4vw,44px); border-radius:var(--r-l); border:1px solid var(--line); background:linear-gradient(165deg,var(--surface-2),var(--surface) 70%); }
.duo-card h3{ margin:14px 0 16px; font-size:clamp(1.5rem,2.4vw,2.1rem); font-weight:800; letter-spacing:-.04em; }
.duo-card p{ color:var(--muted); line-height:1.7; }
.duo-card strong{ color:var(--ink); font-weight:600; }
.duo-card:hover{ border-color:rgba(0,230,118,.35); }
@media (max-width:820px){ .duo{ grid-template-columns:1fr; } }
/* Méthode en 5 étapes */
.flow{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; }
.flow li{ position:relative; padding:24px 22px 26px; border-radius:var(--r-m); border:1px solid var(--line-2); background:rgba(255,255,255,.02); min-height:150px; display:flex; flex-direction:column; justify-content:space-between; gap:18px; }
.flow li .mono{ color:var(--c1); }
.flow li b{ font-size:clamp(1.1rem,1.5vw,1.35rem); font-weight:700; letter-spacing:-.02em; line-height:1.2; }
.flow li:not(:last-child)::after{ content:''; position:absolute; right:-10px; top:50%; width:10px; height:2px; background:var(--gradient-h); }
.flow li:last-child{ background:var(--gradient-d); border:0; color:var(--on-accent); }
.flow li:last-child .mono{ color:var(--on-accent); }
@media (max-width:900px){ .flow{ grid-template-columns:1fr; } .flow li{ min-height:0; flex-direction:row; align-items:center; } .flow li:not(:last-child)::after{ right:auto; left:32px; top:auto; bottom:-10px; width:2px; height:10px; } }

/* Services — cartes problématique (titre, description au survol, bouton) */
.solution-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(14px,1.8vw,22px); }
.solution-card{ position:relative; display:flex; flex-direction:column; min-height:400px; padding:clamp(22px,2.4vw,30px); border-radius:var(--r-l); border:1px solid var(--line); background:linear-gradient(170deg,var(--surface-2),var(--surface) 70%); overflow:hidden; }
.solution-mid{ flex:1; display:flex; flex-direction:column; justify-content:center; text-align:center; padding:20px 4px; }
.solution-mid h2{ font-size:clamp(1.35rem,2vw,1.8rem); font-weight:800; letter-spacing:-.035em; line-height:1.12; transition:transform .6s var(--ease-out); }
.solution-mid p{ color:var(--muted); line-height:1.6; max-height:0; opacity:0; overflow:hidden; transform:translateY(12px); transition:max-height .6s var(--ease-out), opacity .45s, transform .6s var(--ease-out), margin .6s var(--ease-out); }
.solution-card:hover .solution-mid p, .solution-card:focus-within .solution-mid p{ max-height:12em; opacity:1; transform:none; margin-top:16px; }
.solution-card:hover .solution-mid h2, .solution-card:focus-within .solution-mid h2{ transform:translateY(-6px); }
.solution-card:hover{ border-color:rgba(0,230,118,.45); box-shadow:0 40px 80px -36px rgba(0,230,118,.45); }
.solution-link{ display:flex; justify-content:space-between; align-items:center; gap:12px; padding-top:18px; border-top:1px solid var(--line); font-weight:600; color:var(--c3); }
.solution-link::after{ content:''; position:absolute; inset:0; border-radius:inherit; }
.solution-card:hover .svc-go{ background:var(--c1); color:var(--on-accent); border-color:transparent; transform:rotate(-45deg); }
@media (hover:none), (max-width:760px){ .solution-mid p{ max-height:none; opacity:1; transform:none; margin-top:14px; } }
@media (max-width:980px){ .solution-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:640px){ .solution-grid{ grid-template-columns:1fr; } .solution-card{ min-height:0; } }

/* Ressources — galerie d'articles */
.chips{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:clamp(28px,4vw,48px); }
.chip{ display:inline-flex; align-items:center; gap:8px; height:42px; padding:0 16px; border-radius:999px; border:1px solid var(--line-2); font-weight:500; font-size:.94rem; color:var(--muted); transition:border-color .3s, color .3s, background-color .3s; }
.chip span{ font-family:var(--mono); font-size:.7rem; color:var(--dim); }
.chip:hover{ color:var(--ink); border-color:rgba(0,230,118,.5); }
.chip.is-active{ background:var(--c1); color:var(--on-accent); border-color:transparent; }
.chip.is-active span{ color:var(--on-accent); }
.post-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(16px,2vw,26px); }
.post-card{ display:flex; flex-direction:column; border-radius:var(--r-l); border:1px solid var(--line); background:var(--surface); overflow:hidden; }
.post-card:hover{ border-color:rgba(0,230,118,.4); box-shadow:0 40px 80px -40px rgba(0,230,118,.4); }
.post-cover{ aspect-ratio:16/10; overflow:hidden; }
.post-cover .cover-art{ width:100%; height:100%; transition:transform 1s var(--ease-out); }
.post-card:hover .cover-art{ transform:scale(1.06); }
.post-body{ display:flex; flex-direction:column; gap:10px; padding:22px 22px 24px; flex:1; }
.post-cat{ font-family:var(--mono); font-size:.72rem; font-weight:500; letter-spacing:.08em; text-transform:uppercase; color:var(--c1); }
.post-body h3{ font-size:1.28rem; font-weight:700; letter-spacing:-.025em; line-height:1.22; }
.post-body p{ color:var(--muted); font-size:.98rem; line-height:1.55; }
.post-meta{ margin-top:auto; padding-top:12px; display:flex; justify-content:space-between; align-items:center; font-family:var(--mono); font-size:.72rem; color:var(--dim); text-transform:uppercase; letter-spacing:.05em; }
.post-meta .svc-go{ width:38px; height:38px; }
.post-card:hover .svc-go{ background:var(--c1); color:var(--on-accent); border-color:transparent; transform:rotate(-45deg); }
.post-card--big{ grid-column:1 / -1; flex-direction:row; }
.post-card--big .post-cover{ flex:1.25; aspect-ratio:auto; min-height:320px; }
.post-card--big .post-body{ flex:1; padding:clamp(24px,3.4vw,44px); justify-content:center; }
.post-card--big h3{ font-size:clamp(1.6rem,2.8vw,2.4rem); font-weight:800; letter-spacing:-.04em; }
@media (max-width:980px){ .post-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:640px){ .post-grid{ grid-template-columns:1fr; } .post-card--big{ flex-direction:column; } .post-card--big .post-cover{ aspect-ratio:16/10; min-height:0; } }
.cover-art .cv-dots circle{ fill:rgba(178,255,217,.14); }
.cover-art .cv-rings circle{ fill:none; stroke:rgba(178,255,217,.07); }
.cover-art .cv-glyph *{ stroke-width:2.2; }
.article-cover{ border-radius:var(--r-l); overflow:hidden; border:1px solid var(--line-2); aspect-ratio:16/8; margin-bottom:clamp(32px,4vw,48px); box-shadow:0 50px 100px -50px rgba(0,230,118,.35); }
.article-cover .cover-art{ width:100%; height:100%; }

/* Articles — visuels */
.viz{ margin:clamp(32px,4vw,48px) 0; padding:clamp(20px,3vw,32px); border-radius:var(--r-l); border:1px solid var(--line-2); background:linear-gradient(160deg,var(--surface-2),var(--bg-2)); }
.viz-title{ display:block; font-family:var(--mono); font-size:.72rem; font-weight:500; letter-spacing:.08em; text-transform:uppercase; color:var(--c1); margin-bottom:20px; }
.prose .viz b, .prose .viz small{ display:block; }
.vs-steps{ display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:12px; }
.vs-steps li{ position:relative; padding:18px 16px; border-radius:var(--r-m); background:rgba(255,255,255,.03); border:1px solid var(--line); }
.prose .viz li{ padding-left:16px; }
.prose .viz li::before, .prose .takeaway li::before{ display:none; }
.vs-n{ display:inline-grid; place-items:center; width:32px; height:32px; border-radius:50%; background:var(--gradient-d); color:var(--on-accent); font-family:var(--mono); font-size:.72rem; font-weight:500; margin-bottom:12px; }
.viz b{ color:var(--ink); font-weight:700; font-size:1.02rem; line-height:1.25; }
.viz small{ color:var(--muted); font-size:.88rem; line-height:1.4; margin-top:4px; }
.prose .vs-steps li:not(:last-child)::after{ content:"\2192"; position:absolute; right:-11px; top:22px; color:var(--c1); font-size:.9rem; }
.vs-signs{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; }
.vs-signs li{ padding:16px; border-radius:var(--r-m); border:1px solid var(--line); background:rgba(255,255,255,.02); }
.vs-signs .vs-n{ background:transparent; border:1px solid var(--c1); color:var(--c1); }
.vs-compare{ display:grid; border-radius:var(--r-m); overflow:hidden; border:1px solid var(--line); }
.vc-row{ display:grid; grid-template-columns:minmax(90px,.7fr) repeat(var(--cols),minmax(0,1fr)); }
.vc-row > span{ padding:14px 16px; border-bottom:1px solid var(--line); color:var(--muted); font-size:.95rem; line-height:1.45; }
.vc-row:last-child > span{ border-bottom:0; }
.vc-head > span{ background:rgba(0,230,118,.08); }
.vc-h{ color:var(--ink) !important; font-weight:700; }
.vc-l{ color:var(--ink) !important; font-weight:600; }
@media (max-width:560px){ .vc-row{ grid-template-columns:1fr; border-bottom:1px solid var(--line); padding-bottom:10px; } .vc-row:last-child{ border-bottom:0; } .vc-head{ display:none; } .vc-row > span{ border-bottom:0; padding:6px 16px; } .vc-row > span[data-h]::before{ content:attr(data-h) " : "; color:var(--c1); font-weight:600; } .vc-l{ padding-top:14px !important; } }
.vs-pillars{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.vp-item{ flex:1 1 130px; padding:18px 16px; border-radius:var(--r-m); border:1px solid var(--line); background:rgba(255,255,255,.02); text-align:center; }
.vp-res{ background:var(--gradient-d); border:0; }
.vp-res b{ color:var(--on-accent) !important; }
.vp-op{ font-size:1.6rem; font-weight:800; color:var(--c1); }
.vs-nest{ position:relative; padding:26px; border-radius:var(--r-m); border:1.5px dashed rgba(0,230,118,.45); margin-top:8px; }
.vn-label{ position:absolute; top:-12px; left:18px; padding:2px 10px; background:var(--surface-2); font-family:var(--mono); font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--c3); }
.vn-chips{ display:flex; flex-wrap:wrap; gap:10px; }
.vn-chip{ padding:10px 16px; border-radius:999px; border:1px solid var(--line-2); color:var(--ink); font-weight:500; }
.vn-key{ background:var(--gradient-d); color:var(--on-accent); border:0; font-weight:700; }
.prose .vn-note{ margin-top:16px; font-size:.95rem; color:var(--muted); }
.vs-funnel{ display:grid; gap:8px; justify-items:center; }
.prose .vs-funnel li{ width:var(--w); min-width:min(220px,100%); max-width:100%; text-align:center; padding:14px 16px; border-radius:var(--r-s); background:linear-gradient(90deg, rgba(0,230,118,.12), rgba(100,255,218,.08)); border:1px solid rgba(0,230,118,.3); }
.vs-funnel li:last-child{ background:var(--gradient-d); }
.vs-funnel li:last-child b, .vs-funnel li:last-child small{ color:var(--on-accent); }
.vs-bar{ display:flex; height:46px; border-radius:999px; overflow:hidden; gap:3px; }
.vb-seg{ transform-origin:0 50%; }
.vb-0{ background:var(--c1); } .vb-1{ background:var(--c3); } .vb-2{ background:var(--c4); }
.vb-legend{ display:flex; flex-wrap:wrap; gap:10px 22px; margin:16px 0 0; }
.prose .vb-legend li{ display:flex; align-items:center; gap:8px; padding:0; font-size:.95rem; }
.vb-legend i{ width:12px; height:12px; border-radius:3px; display:inline-block; }
.js .viz .vb-seg{ transform:scaleX(0); transition:transform 1.2s var(--ease-out); }
.js .viz.in .vb-seg{ transform:none; }
.vs-hub{ width:100%; max-width:520px; margin:0 auto; display:block; overflow:visible; }
.vh-lines line{ stroke:url(#gH); stroke-width:1.6; stroke-dasharray:1; stroke-dashoffset:1; transition:stroke-dashoffset 1s var(--ease-out) var(--d); }
.viz.in .vh-lines line{ stroke-dashoffset:0; }
.vh-node circle{ fill:#0F2219; stroke:rgba(100,255,218,.45); stroke-width:1.2; }
.vh-node text, .vh-ct{ font-family:var(--font); font-size:12px; font-weight:600; fill:var(--ink); text-anchor:middle; }
.js .vh-node{ opacity:0; transition:opacity .6s var(--d); }
.js .viz.in .vh-node{ opacity:1; }
.vh-center{ fill:url(#gH); }
.vh-ct{ fill:var(--on-accent); font-weight:800; font-size:13px; }
.vs-quiz{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.vs-quiz label{ display:flex; gap:12px; align-items:flex-start; padding:12px 14px; border-radius:var(--r-s); border:1px solid var(--line); cursor:pointer; transition:border-color .3s, background-color .3s; font-size:.96rem; color:var(--muted); line-height:1.4; }
.prose .vs-quiz li{ padding:0; }
.vs-quiz input{ appearance:none; -webkit-appearance:none; flex-shrink:0; width:20px; height:20px; border-radius:6px; border:1.5px solid var(--line-2); margin:1px 0 0; display:grid; place-items:center; transition:background-color .2s, border-color .2s; }
.vs-quiz input:checked{ background:var(--c1); border-color:var(--c1); }
.vs-quiz input:checked::after{ content:''; width:10px; height:6px; border-left:2px solid var(--on-accent); border-bottom:2px solid var(--on-accent); transform:rotate(-45deg) translate(1px,-1px); }
.vs-quiz label:has(input:checked){ border-color:rgba(0,230,118,.5); background:rgba(0,230,118,.06); color:var(--ink); }
.prose .vq-result{ margin-top:18px; padding:16px 18px; border-radius:var(--r-s); background:rgba(0,230,118,.07); border:1px solid rgba(0,230,118,.25); color:var(--ink); font-weight:500; }
@media (max-width:640px){ .vs-quiz{ grid-template-columns:1fr; } }
.takeaway{ margin:clamp(40px,5vw,56px) 0 0; padding:clamp(22px,3vw,32px); border-radius:var(--r-l); background:linear-gradient(150deg, rgba(0,230,118,.12), rgba(100,255,218,.04) 60%, transparent); border:1px solid rgba(0,230,118,.35); }
.takeaway ul{ display:grid; gap:12px; margin:0; }
.prose .takeaway li{ display:flex; gap:14px; align-items:flex-start; padding:0; color:var(--ink); }
.takeaway .ck{ width:24px; height:24px; border-radius:7px; background:var(--gradient-d); display:grid; place-items:center; flex-shrink:0; }
.takeaway .ck svg{ width:12px; height:12px; stroke:var(--on-accent); fill:none; stroke-width:2.8; }
.inline-cta{ margin:clamp(32px,4vw,48px) 0; padding:22px 24px; border-left:3px solid var(--c1); border-radius:0 var(--r-m) var(--r-m) 0; background:rgba(0,230,118,.05); }
.prose .inline-cta p{ color:var(--ink); font-size:1.2rem; font-weight:700; letter-spacing:-.02em; margin:0 0 14px; }
.prose .inline-cta .link-arrow, .prose .viz a, .prose .takeaway a{ text-decoration:none; }

.prose--nonum h2::before{ display:none; }
.article-layout > *{ min-width:0; }
.prose .viz, .prose .takeaway, .prose .inline-cta{ max-width:100%; }
.vs-hub text{ font-size:11px; }
@media (max-width:560px){ .btn{ max-width:100%; white-space:normal; height:auto; min-height:54px; padding-top:7px; padding-bottom:7px; text-align:left; } .btn-label{ line-height:1.2; } }

/* ---------- Recherche ---------- */
.search-btn, .theme-btn{ width:44px; height:44px; flex-shrink:0; border-radius:50%; border:1px solid var(--line-2); display:grid; place-items:center; color:var(--ink); background:rgba(8,18,13,.55); cursor:pointer; transition:border-color .3s, color .3s; }
.search-btn:hover, .theme-btn:hover{ border-color:var(--c1); color:var(--c1); }
.search-btn svg, .theme-btn svg{ width:18px; height:18px; }
dialog.search{ width:min(680px, calc(100vw - 32px)); max-height:min(620px, calc(100svh - 80px)); margin:10vh auto auto; padding:0; display:none; flex-direction:column; border:1px solid var(--line-2); border-radius:var(--r-l); background:var(--surface); color:var(--ink); box-shadow:0 60px 120px -40px rgba(0,0,0,.9); overflow:hidden; }
dialog.search[open]{ display:flex; }
dialog.search::backdrop{ background:rgba(3,8,5,.74); }
.search-field{ display:flex; align-items:center; gap:14px; padding:16px 18px 16px 22px; border-bottom:1px solid var(--line); }
.search-field > svg{ width:20px; height:20px; color:var(--c1); flex-shrink:0; }
.search-field input{ flex:1; min-width:0; background:transparent; border:0; outline:0; color:var(--ink); font:inherit; font-size:1.15rem; }
.search-field input::-webkit-search-cancel-button{ display:none; }
.search-close{ font-family:var(--mono); font-size:.68rem; color:var(--muted); background:transparent; border:1px solid var(--line-2); border-radius:8px; padding:5px 9px; cursor:pointer; }
.search-results{ list-style:none; margin:0; padding:8px; overflow-y:auto; }
.search-results:empty{ display:none; }
.search-results a{ display:grid; gap:3px; padding:12px 14px; border-radius:12px; }
.search-results a:hover, .search-results a:focus-visible{ background:rgba(0,230,118,.08); outline:none; }
.search-results .mono{ font-size:.66rem; color:var(--c1); letter-spacing:.06em; text-transform:uppercase; }
.search-results b{ font-weight:700; letter-spacing:-.01em; }
.search-results small{ color:var(--muted); font-size:.88rem; line-height:1.45; }
.search-status{ margin:0; padding:12px 22px 16px; color:var(--dim); font-size:.86rem; }
@media (max-width:760px){ dialog.search{ margin-top:72px; } .search-btn, .theme-btn{ width:48px; height:48px; } }

/* ---------- Mobile et tablette : ajustements ---------- */
@media (max-width:760px){
  /* en-têtes de section : le bouton ou les réseaux passent sous le titre au lieu de l'écraser */
  .section-head{ grid-template-columns:minmax(0,1fr); align-items:start; }
  /* sphère 3D : petite, en haut à droite, sans passer derrière le titre */
  .hero .hero-canvas{ opacity:.35; }
}
@media (max-width:900px){ .flow li{ justify-content:flex-start; gap:18px; } }
/* sphère 3D des pages intérieures : petite, en haut à droite, sans passer derrière le titre */
@media (max-width:900px){ .page-hero .hero-canvas{ top:56px; bottom:auto; left:42%; right:-14%; height:clamp(230px,40vw,360px); opacity:.55; } }
@media (max-width:760px){ .page-hero--short .hero-canvas{ opacity:.35; } }

/* Tarifs — prix de départ */
.price-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(14px,1.8vw,22px); }
.price-card{ display:flex; flex-direction:column; gap:24px; padding:clamp(22px,2.4vw,30px); border-radius:var(--r-l); border:1px solid var(--line); background:linear-gradient(170deg,var(--surface-2),var(--surface) 70%); transition:border-color .4s; }
.price-card:hover{ border-color:rgba(0,230,118,.45); }
.price-name{ font-size:clamp(1.35rem,1.9vw,1.7rem); font-weight:800; letter-spacing:-.03em; line-height:1.15; }
@media (min-width:641px){ .price-name{ min-height:2.3em; } }  /* prix alignés d'une carte à l'autre quand un nom tient sur 2 lignes */
.price-from{ display:flex; flex-direction:column; gap:8px; }
.price-from .mono{ font-size:.74rem; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; }
.price-from b{ font-size:clamp(2.1rem,3.2vw,2.9rem); font-weight:800; letter-spacing:-.04em; line-height:1; color:var(--c1); white-space:nowrap; }
.price-list{ flex:1; }
.price-list li{ display:flex; justify-content:space-between; align-items:baseline; gap:16px; padding:12px 0; border-top:1px solid var(--line); color:var(--muted); line-height:1.4; }
.price-list b{ color:var(--ink); font-weight:600; white-space:nowrap; }
.price-pack{ margin-top:clamp(14px,1.8vw,22px); display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:24px 48px; padding:clamp(24px,3vw,36px); border-radius:var(--r-l); border:1px solid rgba(0,230,118,.3); background:linear-gradient(150deg, rgba(0,230,118,.09), transparent 70%); }
.price-pack > div{ max-width:44ch; }
@media (max-width:980px){ .price-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:640px){ .price-grid{ grid-template-columns:1fr; } }

/* Bandeau cookies : Accepter et Refuser au même niveau (CNIL) */
.consent{ position:fixed; left:clamp(12px,2vw,24px); bottom:calc(clamp(12px,2vw,24px) + env(safe-area-inset-bottom)); z-index:calc(var(--z-nav) + 3); width:min(430px, calc(100% - 24px)); display:grid; gap:16px; padding:20px 22px; border-radius:var(--r-m); border:1px solid var(--line-2); background:rgba(8,18,13,.94); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); box-shadow:0 30px 60px -20px rgba(0,0,0,.7); font-size:.94rem; line-height:1.55; color:var(--muted); }
.consent[hidden]{ display:none; }
.consent b{ display:block; color:var(--ink); font-size:1.05rem; margin-bottom:4px; }
.consent a{ color:var(--ink); text-decoration:underline; text-decoration-color:var(--c1); text-underline-offset:3px; }
.consent-btns{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.consent-btn{ height:46px; border-radius:999px; border:1px solid var(--line-2); background:transparent; color:var(--ink); font:inherit; font-weight:600; cursor:pointer; transition:background-color .3s, border-color .3s, color .3s; }
.consent-btn:hover, .consent-btn:focus-visible{ background:var(--c1); border-color:transparent; color:var(--on-accent); }
.link-btn{ background:none; border:0; padding:0; font:inherit; color:inherit; cursor:pointer; text-align:left; }
.link-btn:hover{ color:var(--ink); }
.prose .link-btn{ color:var(--ink); text-decoration:underline; text-decoration-color:var(--c1); text-underline-offset:4px; }

/* ==================================================================
   Thème clair (bouton soleil / lune de l'en-tête, choix gardé dans le navigateur)
   Verts plus profonds pour rester lisibles sur fond clair.
   ================================================================== */
.theme-btn .i-moon{ display:none; }
:root[data-theme="light"] .theme-btn .i-sun{ display:none; }
:root[data-theme="light"] .theme-btn .i-moon{ display:block; }
.trust-logo .on-light{ display:none; }
:root[data-theme="light"] .trust-logo .on-dark{ display:none; }
:root[data-theme="light"] .trust-logo .on-light{ display:inline; }

:root[data-theme="light"]{
  color-scheme:light;
  --c1:#00A152; --c2:#00897B; --c3:#007A6B; --c4:#4C8C00;
  --bg:#F3F7F4; --bg-2:#E9F1EC; --surface:#FFFFFF; --surface-2:#F5FAF7;
  --line:rgba(8,48,28,.11); --line-2:rgba(8,48,28,.2);
  --ink:#0A1A12; --muted:#46594F; --dim:#728579;
  --on-accent:#FFFFFF;
  --gradient-h:linear-gradient(90deg,#00A152 0%,#00897B 50%,#4C8C00 100%);
  --gradient-d:linear-gradient(120deg,#00A152 0%,#00897B 55%,#4C8C00 100%);
  --glow:0 0 0 1px rgba(0,161,82,.2), 0 18px 50px -20px rgba(0,161,82,.4);
}
:root[data-theme="light"] #gH stop:nth-of-type(1), :root[data-theme="light"] #gFr stop:nth-of-type(1){ stop-color:#00A152; }
:root[data-theme="light"] #gH stop:nth-of-type(2), :root[data-theme="light"] #gFr stop:nth-of-type(2){ stop-color:#00897B; }
:root[data-theme="light"] #gH stop:nth-of-type(3), :root[data-theme="light"] #gFr stop:nth-of-type(3){ stop-color:#4C8C00; }

/* verres dépolis, boutons ronds, bandeau cookies */
:root[data-theme="light"] .nav.is-scrolled .nav-inner{ background:rgba(255,255,255,.96); box-shadow:0 20px 50px -24px rgba(8,48,28,.25); }
:root[data-theme="light"] .burger,
:root[data-theme="light"] .search-btn,
:root[data-theme="light"] .theme-btn{ background:rgba(255,255,255,.94); }
:root[data-theme="light"] .nav.is-scrolled .brand{ background:rgba(255,255,255,.96); }
:root[data-theme="light"] .consent{ background:rgba(255,255,255,.96); box-shadow:0 30px 60px -24px rgba(8,48,28,.3); }
:root[data-theme="light"] dialog.search{ box-shadow:0 60px 120px -40px rgba(8,48,28,.4); }
:root[data-theme="light"] dialog.search::backdrop{ background:rgba(10,26,18,.35); }

/* surfaces et champs */
:root[data-theme="light"] .btn--ghost{ background:rgba(255,255,255,.7); }
:root[data-theme="light"] .btn--ghost:hover{ box-shadow:0 9px 0 -1px rgba(8,48,28,.18), 0 20px 50px -20px rgba(0,161,82,.4); }
:root[data-theme="light"] .btn--ghost .btn-icon{ background:rgba(8,48,28,.05); }
:root[data-theme="light"] .btn--dark{ box-shadow:0 6px 0 -1px rgba(8,48,28,.25), 0 18px 40px -14px rgba(8,48,28,.3); }
:root[data-theme="light"] .form-card{ background:var(--surface); box-shadow:0 50px 100px -50px rgba(0,161,82,.3); }
:root[data-theme="light"] .field input, :root[data-theme="light"] .field select, :root[data-theme="light"] .field textarea{ background:var(--surface-2); }
:root[data-theme="light"] .check-list li{ background:var(--surface); }

/* textes en contour et grands chiffres */
:root[data-theme="light"] .outline{ color:rgba(0,122,70,.2); -webkit-text-stroke-color:transparent; }  /* lettres creuses = lettres blanches sur fond clair : on les remplit en vert pâle */
:root[data-theme="light"] .big-index{ -webkit-text-stroke-color:rgba(8,48,28,.13); }
:root[data-theme="light"] .foot-word span{ background:linear-gradient(180deg, var(--ink) 20%, rgba(10,26,18,.06)); -webkit-background-clip:text; background-clip:text; }
:root[data-theme="light"] .draw .soft{ stroke:rgba(8,48,28,.22); }
:root[data-theme="light"] .cover-art .cv-dots circle{ fill:rgba(8,48,28,.12); }
:root[data-theme="light"] .cover-art .cv-rings circle{ stroke:rgba(8,48,28,.08); }
:root[data-theme="light"] .fr-regions path{ fill:rgba(0,161,82,.05); stroke:rgba(0,122,107,.3); }
:root[data-theme="light"] .fr-packet{ stroke:#00A152; }

/* blocs pleins en dégradé vert : texte blanc */
:root[data-theme="light"] .step--accent p{ color:rgba(255,255,255,.88); }
:root[data-theme="light"] .stack-art svg *{ stroke:rgba(255,255,255,.8); }
:root[data-theme="light"] .case-visual .svc-tag{ border-color:rgba(255,255,255,.45); }
:root[data-theme="light"] .stack-shade{ background:var(--bg); }
:root[data-theme="light"] .grain{ opacity:.03; }

:root[data-theme="light"] .fr-dot{ fill:rgba(0,122,107,.26); }
:root[data-theme="light"] .stack-card:nth-child(2){ background:#EEF6F1; }
:root[data-theme="light"] .stack-card:nth-child(3){ background:#E4F0E9; }
:root[data-theme="light"] .stack-card{ box-shadow:0 -24px 50px -30px rgba(8,48,28,.22); }

/* Petits téléphones : le bouton clair / sombre passe dans le menu (l'en-tête garde recherche, logo, menu) */
.theme-switch{ display:inline-flex; align-items:center; gap:12px; justify-self:start; height:48px; padding:0 20px; border-radius:999px; border:1px solid var(--line-2); background:transparent; color:var(--ink); font:inherit; font-weight:600; cursor:pointer; }
.theme-switch svg{ width:18px; height:18px; }
.theme-switch .i-moon{ display:none; }
:root[data-theme="light"] .theme-switch .i-sun{ display:none; }
:root[data-theme="light"] .theme-switch .i-moon{ display:block; }
@media (min-width:481px){ .theme-switch{ display:none; } }
@media (max-width:480px){ .nav .theme-btn{ display:none; } }
/* Mode clair : pas de mots « fantômes » pâles dans le texte révélé au défilement */
:root[data-theme="light"] .manifesto .mw{ opacity:1 !important; }
/* Pages services : petite ligne discrete (mots-cles et zone) */
.seo-line{ margin-top:clamp(28px,4vw,40px); max-width:90ch; font-size:.82rem; line-height:1.65; color:var(--dim); }
