/* BioOS · du neurone formel à la plante — section scrollytelling GreenForge
   Règles scopées sous .bioos-sx (sauf html, pour le scroll-snap). */

@font-face{font-family:"GF Serif";font-style:normal;font-weight:300 700;src:url("../fonts/cormorant-garamond-wght.woff2") format("woff2");}
@font-face{font-family:"GF Serif";font-style:italic;font-weight:300 700;src:url("../fonts/cormorant-garamond-wght-italic.woff2") format("woff2");}
@font-face{font-family:"GF Sans";font-style:normal;font-weight:100 900;src:url("../fonts/inter-wght.woff2") format("woff2");}
@font-face{font-family:"GF Mono";font-style:normal;font-weight:100 800;src:url("../fonts/jetbrains-mono-wght.woff2") format("woff2");}.bioos-sx{
  color-scheme:light;
  --bg:#F3EFE4; --card:#F8F4EB; --paper:#FBF8F1; --ink:#1F3A2B; --muted:#6B7A6C; --soft:#9AA597; --line:#E2DACA;
  --gold:#C99A3E; --goldL:#E2AE45; --green:#2E5A41; --sage:#5E8C5A;
  --serif:"GF Serif", Georgia, serif; --sans:"GF Sans", system-ui, -apple-system, "Segoe UI", sans-serif; --mono:"GF Mono", ui-monospace, Menlo, monospace;
  box-sizing:border-box; padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){.bioos-sx:not([data-theme="dark"]){color-scheme:light}}.bioos-sx[data-theme="dark"],.bioos-sx[data-theme="light"]{color-scheme:light}.bioos-sx *,.bioos-sx,.bioos-sx *::before,.bioos-sx,.bioos-sx *::after,.bioos-sx{box-sizing:border-box}.bioos-sx{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:18px;line-height:1.6;-webkit-font-smoothing:antialiased}.bioos-sx .wrap{max-width:1320px;margin:0 auto;padding:0 clamp(20px,4vw,56px)}.bioos-sx .hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;scroll-snap-align:start;padding:6vh 0}.bioos-sx .eb{display:flex;align-items:center;gap:16px;font-size:13px;font-weight:600;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin:0 0 22px}.bioos-sx .eb::before,.bioos-sx .eb::after{content:"";width:34px;height:1.5px;background:currentColor}.bioos-sx .eb.l::before{display:none}.bioos-sx h1{font-family:var(--serif);font-weight:500;font-size:clamp(2.5rem,5.4vw,4.8rem);line-height:1.02;letter-spacing:-.01em;margin:0 0 24px;max-width:20ch;color:var(--ink)}.bioos-sx h1 em{color:var(--gold);font-weight:500}.bioos-sx .lead{font-size:clamp(1.05rem,1.45vw,1.22rem);color:var(--muted);max-width:58ch;margin:0}.bioos-sx .hint{margin-top:36px;font-size:13px;letter-spacing:.24em;text-transform:uppercase;color:var(--soft);display:flex;align-items:center;gap:12px}.bioos-sx .hint i{display:block;width:1.5px;height:36px;background:linear-gradient(var(--gold),transparent)}.bioos-sx .scrolly{display:grid;grid-template-columns:minmax(300px,.7fr) 1.3fr;gap:clamp(24px,4vw,64px)}.bioos-sx .steps{display:grid}.bioos-sx .steps>.stack,.bioos-sx .steps>.spacers{grid-area:1/1}.bioos-sx .stack{position:sticky;top:67px;height:calc(100vh - 67px);align-self:start;z-index:1}.bioos-sx .stxt{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;padding:6vh 0;opacity:0;transform:translateY(-10px);transition:opacity .28s ease,transform .35s ease;pointer-events:none}.bioos-sx .stxt.on{opacity:1;transform:none;pointer-events:auto;transition:opacity .55s ease .3s,transform .7s cubic-bezier(.2,.7,.2,1) .3s}.bioos-sx .stxt:not(.on){transform:translateY(-10px)}.bioos-sx .step{height:100vh;scroll-snap-align:start;scroll-snap-stop:always}.bioos-sx .num{font-family:var(--mono);font-size:15px;color:var(--gold);margin-bottom:12px;letter-spacing:.06em}.bioos-sx .stxt h2{font-family:var(--serif);font-weight:500;font-size:clamp(2rem,3.1vw,2.9rem);line-height:1.06;margin:0 0 18px;color:var(--ink)}.bioos-sx .stxt p{margin:0 0 14px;color:var(--muted);max-width:44ch}.bioos-sx .stxt p.note{font-size:15.5px;color:var(--soft)}.bioos-sx .legend{list-style:none;padding:0;margin:4px 0 14px;display:grid;grid-template-columns:repeat(3,auto);gap:6px 16px;font-size:14px;color:var(--muted);max-width:46ch}.bioos-sx .legend li{display:flex;align-items:center;gap:8px}.bioos-sx .legend li::before{content:"";width:11px;height:11px;border-radius:50%;background:var(--c);box-shadow:0 0 0 1px rgba(31,58,43,.25) inset;flex:none}.bioos-sx .gcard{border:1px solid var(--line);border-radius:14px;padding:12px 16px;margin:10px 0 0;max-width:44ch;background:var(--paper);opacity:.5;transition:opacity .35s,border-color .35s,box-shadow .35s}.bioos-sx .gcard.on{opacity:1;border-color:#D8B56E;box-shadow:0 8px 24px rgba(120,90,30,.12)}.bioos-sx .gcard b{display:block;font-size:12.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);margin-bottom:2px}.bioos-sx .gcard span{font-size:15px;color:var(--muted)}.bioos-sx .visual{position:sticky;top:67px;height:calc(100vh - 67px);display:flex;flex-direction:column;justify-content:center;gap:16px}.bioos-sx .card{position:relative;border:2px solid #D8B56E;border-radius:26px;background:var(--card);box-shadow:0 18px 50px rgba(120,95,40,.14),0 2px 6px rgba(120,95,40,.08);overflow:hidden}.bioos-sx #ill{display:block;width:100%;height:auto;max-height:calc(100vh - 190px)}.bioos-sx .chips{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.bioos-sx .chip{appearance:none;border:1px solid var(--line);background:var(--paper);border-radius:14px;padding:8px 2px 6px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;color:var(--soft);font:inherit;transition:all .3s}.bioos-sx .chip .n{font-family:var(--mono);font-size:13px}.bioos-sx .chip svg{width:32px;height:32px;display:block}.bioos-sx .chip.on{background:#fff;border-color:#D8B56E;color:var(--gold);box-shadow:0 8px 22px rgba(120,95,40,.12)}.bioos-sx .chip:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.bioos-sx .caption{text-align:center;font-size:12.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);min-height:1.4em}.bioos-sx .after{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:10vh 0;scroll-snap-align:start;border-top:1px solid var(--line)}.bioos-sx .after h3{font-family:var(--serif);font-weight:500;font-size:clamp(1.8rem,2.8vw,2.4rem);margin:0 0 12px}.bioos-sx .after p{color:var(--muted);max-width:68ch}.bioos-sx details{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:30px;padding:16px 0}.bioos-sx summary{cursor:pointer;font-size:13px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--gold);list-style:none;display:flex;justify-content:space-between}.bioos-sx summary::after{content:"+";font-size:18px}.bioos-sx details[open] summary::after{content:"−"}.bioos-sx summary:focus-visible{outline:2px solid var(--gold);outline-offset:4px}.bioos-sx details ul{margin:14px 0 0;padding-left:20px;color:var(--muted);max-width:80ch}.bioos-sx .small{font-size:13.5px;color:var(--soft);margin-top:22px}
@media (max-width:900px){.bioos-sx .scrolly{grid-template-columns:1fr}.bioos-sx .visual{order:-1;height:auto;top:0;z-index:2;background:var(--bg);padding:10px 0 8px;gap:8px}.bioos-sx #ill{max-height:46vh}.bioos-sx .chips{gap:3px}.bioos-sx .chip{padding:5px 1px;border-radius:10px}.bioos-sx .chip svg{width:18px;height:18px}.bioos-sx .chip .n{font-size:10px}.bioos-sx .caption{display:none}.bioos-sx .visual{height:60vh}.bioos-sx .stack{top:60vh;height:40vh}.bioos-sx .stxt{justify-content:flex-start;padding:10px 2px 0}.bioos-sx .stxt h2{font-size:1.5rem;margin-bottom:8px}.bioos-sx .stxt p{font-size:15px;margin-bottom:8px}
}
@media (prefers-reduced-motion: reduce){.bioos-sx .gcard,.bioos-sx .chip,.bioos-sx .stxt{transition:none}}.bioos-sx .flow{animation:bx-flow .9s linear infinite}.bioos-sx .flowR{animation:bx-flow .9s linear infinite reverse}@keyframes bx-flow{to{stroke-dashoffset:var(--o,-30px)}}.bioos-sx .pulse{animation:bx-pulse 2.4s ease-in-out infinite;transform-box:fill-box;transform-origin:center}@keyframes bx-pulse{50%{opacity:.55;transform:scale(1.12)}}@media (prefers-reduced-motion: reduce){.bioos-sx .flow,.bioos-sx .flowR,.bioos-sx .pulse{animation:none}}
#comprendre{scroll-margin-top:67px}

.bioos-sx .hero{background:#1a3b27;color:#f6efde}
.bioos-sx .hero h1{color:#f6efde}
.bioos-sx .hero h1 em{color:#e2ae45}
.bioos-sx .hero .lead{color:#efe6cf}
.bioos-sx .hero .hint{color:#e2d6b8}

.bioos-sx{background:#1a3b27}
.bioos-sx .stxt h2,
.bioos-sx .after h3{color:#f6efde}
.bioos-sx .stxt p,
.bioos-sx .after p,
.bioos-sx details ul{color:#e7efe4}
.bioos-sx .stxt p.note,
.bioos-sx .small{color:#c9d4c4}
.bioos-sx .after,
.bioos-sx details{border-color:rgba(246,239,222,.22)}
.bioos-sx .visual{background:transparent}

/* Intro épinglée : crossfade au scroll, polices du site */
.bioos-sx .sx-pin{
  position:relative;
  height:220vh;
  background:#1a3b27;
  color:#f6efde;
}
.bioos-sx .sx-pin__stage{
  position:sticky;
  top:67px;
  height:calc(100vh - 67px);
  height:calc(100svh - 67px);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:28px clamp(20px, 5vw, 72px) 40px;
  overflow:hidden;
}
.bioos-sx .sx-pin__bg{
  position:absolute;
  inset:-12px;
  z-index:0;
  pointer-events:none;
}
.bioos-sx .sx-pin__bg video{
  width:100%;
  height:100%;
  object-fit:cover;
  filter:blur(3px) saturate(.75) brightness(.72);
}
.bioos-sx .sx-pin__bg::after{
  content:"";
  position:absolute;
  inset:0;
  background:rgba(26,59,39,.48);
}
.bioos-sx .sx-pin .eb,
.bioos-sx .sx-pin__frame{
  position:relative;
  z-index:1;
}
@media (prefers-reduced-motion: reduce){
  .bioos-sx .sx-pin__bg{display:none}
}
.bioos-sx .sx-pin .eb{
  justify-content:center;
  color:#e2ae45;
  font-family:var(--sans), "Inter", system-ui, sans-serif;
  font-size:12px;
  font-weight:600;
  letter-spacing:.22em;
  margin:0 0 22px;
}
.bioos-sx .sx-pin__frame{
  display:grid;
  width:min(920px, 100%);
  align-items:center;
}
.bioos-sx .sx-slide{
  grid-area:1 / 1;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  will-change:opacity, transform;
}
.bioos-sx .sx-slide[data-sx-slide="b"]{opacity:0}
.bioos-sx .sx-slide h1,
.bioos-sx .sx-slide h2{
  font-family:var(--serif), "Cormorant Garamond", Georgia, serif;
  font-weight:500;
  font-size:clamp(32px, 4.4vw, 58px);
  line-height:1.12;
  letter-spacing:-.015em;
  color:#f6efde;
  max-width:16em;
  margin:0;
  text-wrap:balance;
}
.bioos-sx .sx-slide h1 em,
.bioos-sx .sx-slide h2 em{
  font-style:italic;
  font-weight:500;
  color:#f6efde;
}
.bioos-sx .gold-wrap{
  position:relative;
  display:table;
  margin:.14em auto 0;
}
.bioos-sx .gold-bar{
  position:absolute;
  left:0;
  bottom:.04em;
  height:3px;
  width:0;
  border-radius:2px;
  background:#c9a962;
  pointer-events:none;
}
.bioos-sx .sx-slide .lead{
  font-family:var(--sans), "Inter", system-ui, sans-serif;
  font-size:clamp(16px, 1.35vw, 19px);
  line-height:1.5;
  font-weight:400;
  color:#efe6cf;
  max-width:34em;
  margin:18px 0 0;
}
.bioos-sx .sx-pin .hint{
  justify-content:center;
  margin-top:32px;
  color:#e2d6b8;
  font-family:var(--sans), "Inter", system-ui, sans-serif;
  font-size:12px;
  letter-spacing:.22em;
}
.bioos-sx .stxt h2,
.bioos-sx .after h3{
  font-family:var(--serif), "Cormorant Garamond", Georgia, serif;
  font-weight:500;
  line-height:1.15;
  text-wrap:balance;
}
.bioos-sx .stxt p,
.bioos-sx .after p{
  font-family:var(--sans), "Inter", system-ui, sans-serif;
  line-height:1.5;
}
@media (max-width:900px){
  .bioos-sx .sx-pin{height:200vh}
  .bioos-sx .sx-pin__stage{
    top:56px;
    height:calc(100svh - 56px);
    padding:20px 22px 28px;
  }
  .bioos-sx .sx-pin .eb{font-size:11px;letter-spacing:.16em;gap:10px;margin-bottom:16px}
  .bioos-sx .sx-pin .eb::before,
  .bioos-sx .sx-pin .eb::after{width:16px}
  .bioos-sx .sx-slide h1,
  .bioos-sx .sx-slide h2{
    font-size:clamp(28px, 7.6vw, 38px);
    line-height:1.14;
    max-width:12em;
  }
  .bioos-sx .sx-slide .lead{font-size:15px;line-height:1.45;margin-top:14px}
  .bioos-sx .gold-bar{display:none}
  .bioos-sx .gold-wrap em{
    background-image:linear-gradient(#c9a962, #c9a962);
    background-repeat:no-repeat;
    background-position:0 calc(100% - 0.02em);
    background-size:var(--gold, 0%) 3px;
    -webkit-box-decoration-break:clone;
    box-decoration-break:clone;
    padding-bottom:.1em;
  }
  .bioos-sx .sx-pin .hint{margin-top:22px;font-size:11px;letter-spacing:.16em}
  .bioos-sx .visual{height:38vh}
  .bioos-sx #ill{max-height:30vh}
  .bioos-sx .stack{
    top:38vh;
    height:calc(100svh - 38vh - 56px);
    overflow:hidden;
  }
  .bioos-sx .stxt{
    overflow:auto;
    justify-content:flex-start;
    padding:12px 2px 20px;
  }
  .bioos-sx .stxt h2{font-size:clamp(22px, 5.8vw, 28px);line-height:1.15;margin-bottom:8px}
  .bioos-sx .stxt p{font-size:15px;line-height:1.45;margin-bottom:8px}
  .bioos-sx .stxt p.note{font-size:13.5px;line-height:1.4}
}
@media (min-width:901px){
  .bioos-sx .stxt h2{font-size:clamp(28px, 2.4vw, 40px)}
  .bioos-sx .stxt p{font-size:17px}
}
@media (prefers-reduced-motion: reduce){
  .bioos-sx .sx-pin{height:auto}
  .bioos-sx .sx-pin__stage{position:relative;top:auto;height:auto;min-height:70vh;overflow:visible}
  .bioos-sx .sx-pin__frame{display:flex;flex-direction:column;gap:36px}
  .bioos-sx .sx-slide,
  .bioos-sx .sx-slide[data-sx-slide="b"]{position:relative;opacity:1;transform:none}
  .bioos-sx .gold-bar{width:100%}
  .bioos-sx .gold-wrap em{background-size:100% 3px}
}

/* Menu fixe : le collage et l'arrêt du scroll commencent sous la barre. */
html[data-gf-chrome="pitch"]{scroll-padding-top:var(--sx-nav, 72px)}
.bioos-sx .wrap{max-width:1480px;padding-left:clamp(16px, 2vw, 28px);padding-right:clamp(16px, 2vw, 28px)}
.bioos-sx .scrolly{gap:clamp(16px, 2vw, 32px);grid-template-columns:minmax(260px, .58fr) minmax(0, 1.55fr);min-height:calc(100svh - var(--sx-nav, 72px) + 75vh)}
.bioos-sx .sx-pin__stage,
.bioos-sx .stack,
.bioos-sx .visual{
  top:var(--sx-nav, 72px);
  height:calc(100svh - var(--sx-nav, 72px));
}
#comprendre,
.bioos-sx .step{scroll-margin-top:var(--sx-nav, 72px)}
.bioos-sx #ill{max-height:calc(100svh - var(--sx-nav, 72px) - 150px)}

@media (max-width:900px){
  .bioos-sx .scrolly{grid-template-columns:1fr;gap:12px}
}
@media (prefers-reduced-motion: reduce){
  .bioos-sx .sx-pin__stage{position:relative;top:auto;height:auto}
}

/* Carte à hauteur fixe. Le numéro d'étape s'aligne sur le haut de la carte. */
.bioos-sx{
  --sx-below:100px;
  --sx-stage:calc(100svh - var(--sx-nav, 72px) - 132px);
}
.bioos-sx .chips{
  position:relative;
  z-index:3;
  width:100%;
  height:48px;
  margin:0;
  align-items:stretch;
}
.bioos-sx .chip{
  flex-direction:row;
  justify-content:center;
  align-items:center;
  gap:10px;
  height:48px;
  min-height:48px;
  max-height:48px;
  padding:0 14px;
  color:#1F3A2B;
  cursor:pointer;
}
.bioos-sx .chip .n{color:#B8872E;font-size:12px;line-height:1}
.bioos-sx .chip .t{
  font-family:var(--serif), Georgia, serif;
  font-size:16px;
  font-weight:600;
  line-height:1;
  letter-spacing:0;
  white-space:nowrap;
}
.bioos-sx .chip:hover{border-color:#D8B56E;background:#fff}
.bioos-sx .chip.on{
  background:#2E5A41;
  border-color:#2E5A41;
  color:#F6EDD2;
}
.bioos-sx .chip.on .n{color:#E2AE45}
.bioos-sx .chip{position:relative;overflow:hidden}
.bioos-sx .chip .load{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:3px;
  background:#E25C2A;
  transform:scaleX(var(--load, 0));
  transform-origin:left center;
  pointer-events:none;
}
.bioos-sx .chip:not(.on) .load{opacity:0}
@media (max-width:900px){
  .bioos-sx .chips{height:44px}
  .bioos-sx .chip{height:44px;min-height:44px;max-height:44px;padding:0 8px;gap:6px}
  .bioos-sx .chip .t{font-size:13px}
}
@media (min-width:901px){
  .bioos-sx .card{
    height:var(--sx-stage);
    flex:0 0 var(--sx-stage);
  }
  .bioos-sx #ill{
    width:100%;
    height:100%;
    max-height:none;
  }
  .bioos-sx .stxt{
    justify-content:flex-start;
    padding-top:calc((100svh - var(--sx-nav, 72px) - var(--sx-stage) - var(--sx-below)) / 2 + 10px);
  }
  .bioos-sx .num{line-height:1}
}
.bioos-sx .step{height:0;scroll-snap-align:none;scroll-snap-stop:normal}
.bioos-sx .after{
  min-height:0;
  display:block;
  padding:clamp(36px, 5vw, 64px) 0;
  scroll-snap-align:none;
}
.bioos-sx .after .pubs h3{
  margin-bottom:40px;
}

/* Le wrapper n'existe pour le layout qu'en mobile. */
.bioos-sx .sx-hold{display:contents}

/* Mobile : un seul écran collé. Le texte reste sous l'animation, il ne défile pas dessous. */
@media (max-width:900px){
  .bioos-sx .sx-hold{
    display:block;
    height:calc(100svh - var(--sx-nav, 64px) + 70vh);
  }
  .bioos-sx .scrolly{
    position:sticky;
    top:var(--sx-nav, 64px);
    z-index:2;
    display:flex;
    flex-direction:column;
    gap:12px;
    height:calc(100svh - var(--sx-nav, 64px));
    min-height:0;
    overflow:hidden;
  }
  .bioos-sx .visual{
    position:relative;
    top:auto;
    order:-1;
    z-index:1;
    flex:0 0 auto;
    height:min(50svh, 440px);
    max-height:none;
    min-height:0;
    overflow:hidden;
    justify-content:flex-start;
    gap:8px;
    padding:0;
  }
  .bioos-sx .card{
    flex:1 1 auto;
    min-height:0;
    display:flex;
    overflow:hidden;
  }
  .bioos-sx #ill{
    width:100%;
    height:100%;
    max-height:100%;
  }
  .bioos-sx .chips{
    flex:0 0 auto;
    height:auto;
    z-index:1;
  }
  .bioos-sx .steps{
    display:block;
    position:relative;
    flex:1 1 auto;
    min-height:0;
    height:calc(100% - min(50svh, 440px) - 12px);
    overflow:hidden;
  }
  .bioos-sx .stack{
    position:absolute;
    top:0;
    right:0;
    bottom:0;
    left:0;
    height:auto;
    margin:0;
    overflow:hidden;
    background:#1a3b27;
    align-self:stretch;
  }
  .bioos-sx .stxt{
    position:absolute;
    top:0;
    right:0;
    bottom:0;
    left:0;
    overflow:hidden;
    justify-content:flex-start;
    padding:2px 2px 10px;
  }
  .bioos-sx .stxt.on{
    opacity:1;
    transform:none;
  }
  .bioos-sx .stxt h2{
    font-size:clamp(22px, 6vw, 28px);
    line-height:1.12;
    margin-bottom:8px;
  }
  .bioos-sx .stxt p{
    font-size:15px;
    line-height:1.42;
    margin-bottom:8px;
  }
  .bioos-sx .stxt p.note{
    font-size:13.5px;
    line-height:1.4;
  }
  .bioos-sx .chip{
    height:auto;
    min-height:46px;
    max-height:none;
    flex-direction:column;
    justify-content:center;
    gap:2px;
    padding:5px 4px 7px;
  }
  .bioos-sx .chip .t{
    font-size:11px;
    line-height:1.15;
    white-space:normal;
    text-align:center;
  }
  .bioos-sx .steps{overflow:hidden}
}
