/* Charte 3iL : bleu pétrole #005067, orange #e84e0f (couleurs du logo) */
:root {
  --c3il-bleu: #005067;
  --c3il-bleu-clair: #e5eef1;
  --c3il-orange: #e84e0f;
  --encre: #1f2328;
  --encre-2: #52514e;
  --r-background-color: #ffffff;
  --r-link-color: var(--c3il-orange);
}
body, .reveal-viewport { background: #ffffff; }
.reveal { font-family: system-ui, "Segoe UI", Roboto, sans-serif; font-size: 30px; color: var(--encre); }
.reveal h1, .reveal h2 { font-family: inherit; text-transform: none; color: var(--c3il-bleu); letter-spacing: -0.01em; }
.reveal h2 { font-size: 1.35em; margin: 0.2em 0 0.15em; }
.reveal h2::after { content: ""; display: block; width: 72px; height: 4px; margin: 0.25em auto 0; background: var(--c3il-orange); border-radius: 2px; }
.reveal .kicker { display: block; font-size: 0.62em; color: var(--encre-2); margin-bottom: 0.5em; }
.reveal img { max-height: 46vh; margin: 0.2em auto; border: 0; box-shadow: none; }
.reveal ul { font-size: 0.78em; line-height: 1.35; }
.reveal li { margin-bottom: 0.2em; }
.reveal li::marker { color: var(--c3il-orange); }
.reveal strong { color: var(--c3il-bleu); }

/* Intercalaires d'axe */
.reveal section.section h2 { font-size: 2.4em; margin-top: 2.2em; }
.reveal section.section h2::after { width: 140px; height: 6px; }
.reveal section.section p { font-size: 1.1em; color: var(--encre-2); }

/* Page de titre */
.reveal #title-slide { padding-top: 120px; }
.reveal #title-slide .title { font-size: 1.7em; color: var(--c3il-bleu); }
.reveal #title-slide .subtitle { color: var(--c3il-orange); font-size: 0.95em; }
.reveal #title-slide .author, .reveal #title-slide .date { color: var(--encre-2); font-size: 0.8em; }

/* Logo, barre de progression, flèches */
.logo3il { position: fixed; bottom: 18px; left: 22px; height: 34px; z-index: 30; }
.reveal .progress { color: var(--c3il-orange); height: 5px; }
.reveal .controls { color: var(--c3il-bleu); }
.reveal .slide-number { background: var(--c3il-bleu); }

/* Titres de niveau 1 (diapos horizontales) traités comme les autres titres */
.reveal h1 { font-size: 1.35em; margin: 0.2em 0 0.15em; }
.reveal h1::after { content: ""; display: block; width: 72px; height: 4px; margin: 0.25em auto 0; background: var(--c3il-orange); border-radius: 2px; }

/* Diapos d'axe : titre, question, sommaire des points */
.reveal section.section h1 { font-size: 2.1em; margin-top: 1.2em; }
.reveal section.section h1::after { width: 140px; height: 6px; }
.reveal .sommaire { width: 62%; margin: 0.8em auto 0; text-align: left; }
.reveal .sommaire ol { font-size: 0.8em; line-height: 1.5; color: var(--encre); }
.reveal .sommaire li::marker { color: var(--c3il-orange); font-weight: 700; }
.reveal .descendre { display: block; margin-top: 0.8em; font-size: 0.65em; color: var(--c3il-orange); font-weight: 700; }
.reveal img.grand { max-height: 74vh; }

/* ---------- Ajouts 22 octobre ---------- */

/* Phrase-clé en bas de diapo */
.reveal .phrase { display: block; margin: 0.7em auto 0; width: 86%; font-size: 0.8em; font-weight: 600; color: var(--c3il-bleu); border-left: 5px solid var(--c3il-orange); padding: 0.25em 0 0.25em 0.7em; text-align: left; }
.reveal .phrase strong { color: var(--c3il-orange); }

/* Encadré de condition (C0…C4) */
.reveal .condition { display: block; margin: 0.6em auto 0.3em; width: 86%; font-size: 0.74em; text-align: left; background: var(--c3il-bleu-clair); border-radius: 12px; padding: 0.5em 0.8em; color: var(--encre); }
.reveal .condition strong:first-child { color: var(--c3il-orange); }
.reveal .condition.neutre { background: #f4f6f8; }
.reveal .condition.neutre strong:first-child { color: var(--c3il-bleu); }
.reveal .tag { display: inline-block; font-size: 0.7em; font-weight: 700; color: #fff; background: var(--c3il-orange); border-radius: 999px; padding: 0.05em 0.55em; margin-left: 0.3em; vertical-align: 0.1em; }

/* Citations */
.reveal blockquote { width: 80%; margin: 0.4em auto 0.6em; padding: 0.4em 1em; font-size: 0.8em; background: #f4f6f8; border-left: 5px solid var(--c3il-bleu); box-shadow: none; border-radius: 0 10px 10px 0; text-align: left; }
.reveal blockquote p { margin: 0.15em 0; }

/* Tableaux */
.reveal table { font-size: 0.6em; margin: 0.4em auto; border-collapse: collapse; }
.reveal table th { background: var(--c3il-bleu); color: #fff; font-weight: 700; padding: 0.4em 0.7em; border: 0; }
.reveal table td { padding: 0.38em 0.7em; border: 0; border-bottom: 1px solid #d8dbe0; vertical-align: top; }
.reveal table tr:nth-child(even) td { background: #f7f9fa; }
.reveal table td strong { color: var(--c3il-bleu); }
.reveal section.dense table { font-size: 0.5em; }
.reveal section.grille-slide table { font-size: 0.82em; margin-top: 0.8em; }
.reveal section.grille-slide table td:first-child strong { color: var(--c3il-orange); font-size: 1.15em; }

/* Cartes, colonnes, bulles */
.reveal .trois { display: flex; gap: 18px; justify-content: center; margin: 0.6em auto; width: 92%; }
.reveal .carte { flex: 1; display: block; background: var(--c3il-bleu-clair); border-radius: 14px; padding: 0.55em 0.7em; font-size: 0.72em; text-align: left; }
.reveal .carte strong { color: var(--c3il-orange); font-size: 1.1em; margin-right: 0.2em; }
.reveal .trois.metre .carte { font-size: 0.62em; line-height: 1.4; }
.reveal .trois.metre .carte:last-child { background: #fbe3d6; }
.reveal .equation { margin: 0.8em auto; font-size: 0.8em; }
.reveal .equation .carte { display: inline-block; flex: none; padding: 0.35em 0.6em; font-size: 0.85em; }
.reveal .equation .carte.fort { background: var(--c3il-bleu); color: #fff; }
.reveal .deux { display: flex; gap: 24px; width: 90%; margin: 0.5em auto; text-align: left; }
.reveal .colonne { flex: 1; background: #f4f6f8; border-radius: 14px; padding: 0.5em 0.9em; font-size: 0.7em; }
.reveal .colonne p { margin: 0.3em 0; }
.reveal .colonne.recit { font-size: 0.72em; line-height: 1.45; }
.reveal .colonne.moins { background: #f4f6f8; }
.reveal .colonne.plus { background: var(--c3il-bleu-clair); }
.reveal .source { display: block; font-size: 0.85em; color: var(--encre-2); margin-top: 0.4em; }
.reveal .limites { width: 86%; margin: 0.5em auto 0; text-align: left; background: #fbe3d6; border-radius: 14px; padding: 0.4em 0.9em; }
.reveal .limites p { margin: 0.2em 0; font-size: 0.75em; color: #b84a1d; }
.reveal .limites ul { font-size: 0.68em; margin: 0.2em 0 0.2em 1em; }
.reveal .bulles { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; width: 90%; margin: 0.4em auto 0.6em; }
.reveal .bulle { background: #fdf3dc; color: #8a5a00; border-radius: 18px 18px 18px 4px; padding: 0.3em 0.8em; font-size: 0.7em; }
.reveal .chiffres { display: flex; justify-content: center; gap: 22px; margin: 0.4em auto 0.6em; }
.reveal .chiffre { display: block; width: 260px; background: #f4f6f8; border-radius: 14px; padding: 0.3em 0.5em 0.5em; font-size: 0.62em; color: var(--encre-2); }
.reveal .chiffre strong { display: block; font-size: 2.6em; line-height: 1.1; color: var(--c3il-bleu); }
.reveal .chiffre.alerte { background: #fbe3d6; }
.reveal .chiffre.alerte strong { color: var(--c3il-orange); }
.reveal .verdicts { width: 88%; margin: 0.5em auto 0; text-align: left; font-size: 0.7em; }
.reveal .verdicts .non, .reveal .verdicts .oui { display: block; padding: 0.3em 0.8em; border-radius: 10px; margin-bottom: 0.3em; }
.reveal .verdicts .non { background: #f4f6f8; color: var(--encre-2); text-decoration: line-through; text-decoration-color: #eb6834; }
.reveal .verdicts .oui { background: var(--c3il-bleu-clair); color: var(--encre); }
.reveal .sommaire .tag { font-size: 0.6em; }

/* Diapos de rupture (l'interruption) */
.reveal section.rupture h1 { font-size: 3em; color: #fff; margin-top: 1em; }
.reveal section.rupture h1::after { display: none; }
.reveal section.rupture blockquote { background: transparent; border: 0; color: #fff; font-size: 1.25em; text-align: center; width: 90%; }
.reveal section.rupture p { color: #fff; font-size: 1.3em; }
.reveal-viewport.sombre { background: var(--c3il-bleu); }
.reveal-viewport.sombre .slide-background.present { background: var(--c3il-bleu); }
.reveal-viewport.sombre .logo3il { display: none; }
.reveal section.rupture-orange h1 { color: var(--c3il-orange); }

/* Fin, références */
.reveal section.fin p { font-size: 0.85em; }
.reveal section.fin a { color: var(--c3il-orange); }
.reveal section.refs ul { font-size: 0.48em; line-height: 1.3; }
.reveal section.refs .colonne { background: transparent; padding: 0; }

/* Mini-grille : se construit pendant la partie II, reste affichée ensuite */
.grille-mini { position: fixed; top: 16px; right: 20px; z-index: 30; display: none; gap: 6px; font: 700 15px system-ui, "Segoe UI", Roboto, sans-serif; }
.grille-mini span { padding: 4px 9px; border-radius: 999px; background: var(--c3il-bleu-clair); color: var(--c3il-bleu); opacity: 0.18; transition: all .3s; }
.reveal-viewport.g0 .grille-mini, .reveal-viewport.g1 .grille-mini, .reveal-viewport.g3 .grille-mini, .reveal-viewport.g4 .grille-mini { display: flex; }
.reveal-viewport.g0 .c0,
.reveal-viewport.g1 .c0, .reveal-viewport.g1 .c1,
.reveal-viewport.g3 .c0, .reveal-viewport.g3 .c1, .reveal-viewport.g3 .c2, .reveal-viewport.g3 .c3,
.reveal-viewport.g4 span { opacity: 1; }
.reveal-viewport.on0 .c0, .reveal-viewport.on1 .c1, .reveal-viewport.on2 .c2, .reveal-viewport.on3 .c3, .reveal-viewport.on4 .c4 { background: var(--c3il-orange); color: #fff; }
/* pandoc enveloppe les spans dans un <p> : c'est lui qui doit être flex */
.reveal .trois > p { display: flex; gap: 18px; margin: 0; width: 100%; }
.reveal .bulles > p { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin: 0; }
.reveal .chiffres > p { display: flex; justify-content: center; gap: 22px; margin: 0; }
.reveal .verdicts > p { margin: 0; }

/* ---------- Réglages de lisibilité (Teams, multi-sites) ---------- */
.reveal ul { font-size: 0.86em; }
.reveal .phrase { font-size: 0.88em; }
.reveal .condition { font-size: 0.82em; }
.reveal table { font-size: 0.7em; width: auto; max-width: 96%; }
.reveal table colgroup col { width: auto !important; }
.reveal table td:first-child { white-space: nowrap; }
.reveal section.dense table { font-size: 0.56em; }
.reveal section.dense table td:first-child { white-space: normal; }
.reveal section.grille-slide table { font-size: 0.9em; }
.reveal .colonne { font-size: 0.8em; }
.reveal .colonne.recit { font-size: 0.8em; }
.reveal .carte { font-size: 0.82em; }
.reveal .trois.metre .carte { font-size: 0.7em; }
.reveal .bulle { font-size: 0.8em; }
.reveal .chiffre { font-size: 0.72em; width: 290px; }
.reveal .verdicts { font-size: 0.8em; }
.reveal .limites p { font-size: 0.85em; }
.reveal .limites ul { font-size: 0.78em; }
.reveal blockquote { font-size: 0.9em; }
.reveal section.rupture blockquote { font-size: 1.3em; }
.reveal section.refs ul { font-size: 0.58em; }
.reveal section.fin { padding-top: 120px; }
.reveal section.fin h1 { font-size: 2.4em; }
.reveal section.fin p { font-size: 1em; }
.reveal section.fin strong { font-size: 1.3em; color: var(--c3il-orange); }

/* La mini-grille en bas au centre : libre de tout titre */
.grille-mini { top: auto; bottom: 20px; right: auto; left: 50%; transform: translateX(-50%); font-size: 17px; }

/* ---------- Ouverture : faux titre, interruption, vrai titre ---------- */
.reveal #title-slide { padding-top: 70px; }
.reveal #title-slide .title { font-size: 1.05em; line-height: 1.35; width: 92%; margin: 0 auto 0.6em; letter-spacing: 0; }
.reveal #title-slide .subtitle { font-size: 0.8em; }
.reveal section.rupture h1 { font-size: 2.8em; margin-top: 2.2em; line-height: 1.2; }
.reveal section.titre-bis h1 { font-size: 2.6em; margin-top: 2.4em; line-height: 1.2; }
.reveal section.titre-bis h1::after { width: 160px; height: 7px; margin-top: 0.4em; }
.reveal section.titre-bis .auteur { display: block; margin-top: 1.4em; font-size: 0.8em; color: var(--encre-2); }
.reveal .quatre { width: 90%; margin: 2.6em auto 0; }
.reveal .quatre > p { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 1fr; gap: 22px; margin: 0; }
.reveal .quatre .carte { font-size: 1.2em; padding: 1.2em 1em; font-weight: 600; color: var(--c3il-bleu); }
.reveal .quatre .carte strong { font-size: 1.4em; margin-right: 0.4em; }

/* Numéro de diapo en bas à droite, à gauche des flèches de navigation */
.reveal .slide-number { right: 130px; bottom: 22px; left: auto; top: auto; font: 700 15px system-ui, "Segoe UI", Roboto, sans-serif; background: var(--c3il-bleu); color: #fff; padding: 4px 10px; border-radius: 999px; }
.reveal-viewport.sombre .slide-number { background: #fff; color: var(--c3il-bleu); }

/* ---------- Ajouts : question fondatrice, position mise en avant ---------- */
.reveal .question { display: block; margin: 0.4em auto 0.6em; font-size: 1.15em; font-weight: 700; color: var(--c3il-bleu); }
.reveal .question strong { color: var(--c3il-orange); }
.reveal .carte strong { display: block; margin-bottom: 0.2em; }
.reveal .quatre .carte strong { display: inline; }
.reveal .carte.moi { background: var(--c3il-bleu); color: #fff; }
.reveal .carte.moi strong { color: #fff; }

/* Diapo des posts : deux images et un tableau, on resserre */
.reveal section.serre img { margin: 0 0.6%; vertical-align: top; }
.reveal section.serre table { font-size: 0.6em; margin-top: 0.2em; }
.reveal section.serre .phrase { margin-top: 0.4em; }
.reveal section.dense-papier table { font-size: 0.56em; }
.reveal section.dense-papier ul { font-size: 0.78em; }

/* ---------- Collage de gros titres (partie 4) ---------- */
.reveal .collage { position: relative; width: 100%; height: 560px; margin-top: 0.3em; }
.reveal .collage > p { margin: 0; }
.reveal .coupure { position: absolute; display: block; padding: 0.35em 0.6em; background: #f7f3e8; color: #1a1a1a;
  font-family: Georgia, "Times New Roman", serif; font-weight: 700; line-height: 1.15; text-align: left;
  box-shadow: 0 6px 16px rgba(0,0,0,.18); border: 1px solid #e2dccb; }
.reveal .coupure.k1 { top: 2%;  left: 3%;  width: 46%; font-size: 1.5em; transform: rotate(-3deg); }
.reveal .coupure.k2 { top: 4%;  left: 54%; width: 42%; font-size: 0.95em; font-style: italic; transform: rotate(2.5deg); }
.reveal .coupure.k3 { top: 30%; left: 30%; width: 40%; font-size: 0.9em; transform: rotate(-1.5deg); background: #fff; }
.reveal .coupure.k4 { top: 31%; left: 1%;  width: 26%; font-size: 0.85em; transform: rotate(4deg); }
.reveal .coupure.k5 { top: 27%; left: 72%; width: 26%; font-size: 0.85em; font-style: italic; transform: rotate(-4deg); }
.reveal .coupure.k6 { top: 60%; left: 4%;  width: 34%; font-size: 1.05em; transform: rotate(-2deg); }
.reveal .coupure.k7 { top: 52%; left: 35%; width: 31%; font-size: 2.3em; font-family: Impact, "Arial Black", sans-serif; letter-spacing: 0.02em;
  background: #e84e0f; color: #fff; border: 0; text-align: center; transform: rotate(3deg); }
.reveal .coupure.k8 { top: 58%; left: 72%; width: 26%; font-size: 0.8em; transform: rotate(2deg); background: #fff; }
.reveal .mention { display: block; font-size: 0.5em; font-style: italic; color: var(--encre-2); margin-top: -0.6em; }
.reveal .coupure.k9  { top: 84%; left: 6%;  width: 20%; font-size: 1.7em; font-family: Impact, "Arial Black", sans-serif; text-align: center;
  background: #1f2328; color: #ffd400; border: 0; transform: rotate(-5deg); }
.reveal .coupure.k10 { top: 82%; left: 70%; width: 27%; font-size: 1em; font-family: Impact, "Arial Black", sans-serif; text-align: center;
  background: #ffd400; color: #1f2328; border: 0; transform: rotate(3deg); }

/* ---------- Diapo 37 : lecture animée d'un papier ---------- */
.reveal svg.lecture-anim { display: block; width: 84%; height: auto; margin: 0.2em auto 0; }
.reveal svg.lecture-anim .surligne { fill: #005067; fill-opacity: 0.1; stroke: #e84e0f; stroke-opacity: 0; stroke-width: 2; transition: all .4s; }
.reveal svg.lecture-anim .current-fragment .surligne { fill: #e84e0f; fill-opacity: 0.28; stroke-opacity: 1; }
.reveal svg.lecture-anim .badge circle { fill: #005067; transition: fill .4s; }
.reveal svg.lecture-anim .current-fragment .badge circle { fill: #e84e0f; }
.reveal svg.lecture-anim .badge { transform-box: fill-box; transform-origin: center; transition: transform .45s cubic-bezier(.3,1.6,.5,1); }
.reveal svg.lecture-anim .fragment:not(.visible) .badge { transform: scale(0.2); }
.reveal svg.lecture-anim .saut { stroke: #e84e0f; stroke-width: 2.5; stroke-dasharray: 6 5; stroke-dashoffset: 0; opacity: 0.5; }
.reveal svg.lecture-anim .fragment.current-fragment .saut { opacity: 1; animation: trace .7s ease-out; }
@keyframes trace { from { stroke-dasharray: 0 600; } to { stroke-dasharray: 600 0; } }
.reveal svg.lecture-anim .fragment.current-fragment .ligne { stroke: #e84e0f; stroke-width: 2; }
.reveal table tr.fragment:not(.visible) td { border-color: transparent; }

/* ---------- Diapo p-valeur animée ---------- */
.reveal svg.pv-anim { display: block; width: 74%; height: auto; margin: 0.2em auto 0; }
.reveal svg.pv-anim .barre { transform-box: fill-box; transform-origin: bottom; transition: transform .55s ease-out; }
.reveal svg.pv-anim .val { transition: opacity .4s; }
.reveal svg.pv-anim .fragment:not(.visible) .barre { transform: scaleY(0); }
.reveal svg.pv-anim .fragment:not(.visible) .val { opacity: 0; }
.reveal svg.pv-anim .pv-fleche { stroke-dasharray: 120; stroke-dashoffset: 0; transition: stroke-dashoffset .6s ease-out; }
.reveal svg.pv-anim .fragment:not(.visible) .pv-fleche { stroke-dashoffset: 120; }
.reveal svg.pv-anim .pv-queues .halo { animation: none; }
.reveal svg.pv-anim .pv-queues.current-fragment .halo { animation: pv-pulse 1s ease-in-out 2; }
@keyframes pv-pulse { 50% { stroke-width: 4; } }
.reveal svg.pv-anim .pv-verdict { transform-box: fill-box; transform-origin: center; transition: transform .45s cubic-bezier(.3,1.6,.5,1), opacity .3s; }
.reveal svg.pv-anim .pv-verdict.fragment:not(.visible) { transform: scale(0.6); }

/* ---------- Diapo compteurs animée ---------- */
.reveal svg.h-anim { display: block; width: 88%; height: auto; margin: 0.1em auto 0; }
.reveal svg.h-anim .pousse { transform-box: fill-box; transform-origin: bottom; transition: transform .55s ease-out; }
.reveal svg.h-anim .val { transition: opacity .4s; }
.reveal svg.h-anim .fragment:not(.visible) .pousse { transform: scaleY(0); }
.reveal svg.h-anim .fragment:not(.visible) .val { opacity: 0; }
.reveal svg.h-anim .trace { stroke-dasharray: 260; stroke-dashoffset: 0; transition: stroke-dashoffset .5s ease-out; }
.reveal svg.h-anim .fragment:not(.visible) .trace { stroke-dashoffset: 260; }
.reveal svg.h-anim .h-fourche.fragment { transform-box: fill-box; transform-origin: center top; transition: transform .45s ease-out, opacity .3s; }
.reveal svg.h-anim .h-fourche.fragment:not(.visible) { transform: translateY(-12px); }

/* ---------- Diapo « Qu'est-ce qu'un ordinateur ? » ---------- */
.reveal svg.ordi-anim { display: block; width: 90%; height: auto; margin: 0.2em auto 0; }
.reveal svg.ordi-anim .fragment.fade-up { transition: opacity .4s, transform .4s; }
.reveal svg.proto-anim { display: block; width: 94%; height: auto; margin: 0.3em auto 0; }
.reveal svg.proto-anim .fragment.fade-up { transition: opacity .4s, transform .4s; }

/* Coup de tampon (diapo « Qu'est-ce qu'un ordinateur ? ») */
.reveal .tampon { position: absolute; top: 250px; left: 50%; z-index: 5; width: 78%; padding: 0.35em 0.6em;
  transform: translateX(-50%) rotate(-5deg); background: rgba(255,255,255,.94); border: 6px solid var(--c3il-orange);
  border-radius: 10px; color: var(--c3il-orange); font-size: 1.15em; font-weight: 800; text-align: center;
  box-shadow: 0 8px 24px rgba(0,0,0,.15); }
.reveal .tampon.fragment { transition: opacity .15s, transform .35s cubic-bezier(.3,1.5,.5,1); }
.reveal .tampon.fragment:not(.visible) { transform: translateX(-50%) rotate(-5deg) scale(1.8); }

/* ---------- Diapos vulgarisées (fin) ---------- */
.reveal svg.vulga { display: block; width: 90%; height: auto; margin: 0.3em auto 0; }
.reveal svg.vulga .fragment.fade-up { transition: opacity .4s, transform .4s; }

/* ---------- Diapo « L'IA et la grille » animée ---------- */
.reveal svg.ia-anim { display: block; width: 90%; height: auto; margin: 0.2em auto 0; }
.reveal svg.ia-anim .robot { transition: opacity .4s; }
.reveal svg.ia-anim .ia-etape.visible:not(.current-fragment) .robot { opacity: .2; }
.reveal svg.ia-anim .barriere.fragment { transform-box: fill-box; transform-origin: top; transition: transform .4s cubic-bezier(.3,1.4,.5,1), opacity .2s; }
.reveal svg.ia-anim .barriere.fragment:not(.visible) { transform: scaleY(0.1); }

/* ---------- Diapo « Et si l'IA explique aussi ? » animée ---------- */
.reveal svg.expl-anim { display: block; width: 90%; height: auto; margin: 0.2em auto 0; }
.reveal svg.expl-anim .fragment.fade-up { transition: opacity .4s, transform .4s; }
.reveal svg.expl-anim .trace { stroke-dasharray: 220; stroke-dashoffset: 0; transition: stroke-dashoffset .5s ease-out; }
.reveal svg.expl-anim .fragment:not(.visible) .trace { stroke-dashoffset: 220; }
.reveal svg.expl-anim .branche rect, .reveal svg.expl-anim .branche text { transition: opacity .3s .3s; }
.reveal svg.expl-anim .branche.fragment:not(.visible) rect, .reveal svg.expl-anim .branche.fragment:not(.visible) text { opacity: 0; }

/* ---------- Diapo « Une question de recherche, un papier » animée ---------- */
.reveal svg.papier-anim { display: block; width: 88%; height: auto; margin: 0.1em auto 0; }
.reveal svg.papier-anim .fragment.fade-up { transition: opacity .4s, transform .4s; }
.reveal svg.papier-anim .crible, .reveal svg.papier-anim .ligne-papier { transition: opacity .35s, transform .35s; }
.reveal svg.papier-anim .fragment:not(.visible) .crible { opacity: 0; transform: translateY(-10px); }
.reveal svg.papier-anim .fragment:not(.visible) .ligne-papier { opacity: 0; }
.reveal svg.papier-anim .trois.current-fragment rect { animation: pv-pulse 1s ease-in-out 2; }

/* ---------- Diapo « Prédire avant de regarder » ---------- */
.reveal svg.predi-anim { display: block; width: 88%; height: auto; margin: 0.2em auto 0; }
.reveal svg.predi-anim .fragment.fade-up { transition: opacity .4s, transform .4s; }

/* Titre annoncé au programme, avant le faux titre */
.reveal section.titre-annonce h1 { font-size: 1.9em; margin-top: 1.8em; line-height: 1.25; }
.reveal section.titre-annonce h1::after { width: 160px; height: 7px; margin-top: 0.4em; }
.reveal section.titre-annonce .auteur { display: block; margin-top: 1.2em; font-size: 0.8em; color: var(--encre-2); }
.reveal section.titre-annonce .kicker { margin-top: 1.6em; font-size: 0.7em; }
.reveal .quatre .carte .sous-carte { display: block; margin-top: 0.5em; font-size: 0.6em; font-weight: 400; color: var(--c3il-orange); line-height: 1.3; }

/* Diapo « Comment ça fonctionne » : la boucle se construit étape par étape */
.reveal svg.boucle-anim { display: block; width: 74%; height: auto; margin: 0.2em auto 0; }
.reveal svg.boucle-anim .n { fill: #fff; stroke: #005067; stroke-width: 2; transition: stroke .4s, stroke-width .4s; }
.reveal svg.boucle-anim .current-fragment .n { stroke: #e84e0f; stroke-width: 3.5; }
.reveal svg.boucle-anim .t { font-size: 17px; font-weight: 700; fill: #005067; }
.reveal svg.boucle-anim .s { font-size: 13px; fill: #52514e; }
.reveal svg.boucle-anim .c { font-size: 13px; font-weight: 700; fill: #fff; }
.reveal svg.boucle-anim .fl { fill: none; stroke: #005067; stroke-width: 2.5; marker-end: url(#bf); stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset .6s ease-out; }
.reveal svg.boucle-anim .visible .fl { stroke-dashoffset: 0; }
.reveal svg.boucle-anim .badge { transform-box: fill-box; transform-origin: center; transition: transform .45s cubic-bezier(.3,1.6,.5,1) .3s; }
.reveal svg.boucle-anim .fragment:not(.visible) .badge { transform: scale(0.2); }
.reveal svg.boucle-anim g:not(.fragment) .fl { stroke-dashoffset: 0; } /* slides.html?statique */

/* Diapo « Le renversement » : le mur des moyens tombe, la méthode reste */
.reveal svg.renv-anim { display: block; width: 86%; height: auto; margin: 0.3em auto 0.2em; }
.reveal svg.renv-anim .n { fill: #fff; stroke: #005067; stroke-width: 2; }
.reveal svg.renv-anim .t { font-size: 17px; font-weight: 700; fill: #005067; }
.reveal svg.renv-anim .s { font-size: 13px; fill: #52514e; }
.reveal svg.renv-anim .o { font-size: 15px; font-weight: 700; fill: #e84e0f; }
.reveal svg.renv-anim .mur rect { fill: #005067; transition: fill .6s; }
.reveal svg.renv-anim .mur { transform-box: fill-box; transform-origin: right bottom; transition: transform .7s cubic-bezier(.55,0,.9,.4); }
.reveal svg.renv-anim .mur-label { transition: opacity .6s; }
.reveal svg.renv-anim .f-chute.visible ~ .mur, .reveal svg.renv-anim .f-chute:not(.fragment) ~ .mur { transform: rotate(90deg); }
.reveal svg.renv-anim .f-chute.visible ~ .mur rect, .reveal svg.renv-anim .f-chute:not(.fragment) ~ .mur rect { fill: #c9cdd3; }
.reveal svg.renv-anim .f-chute.visible ~ .mur-label, .reveal svg.renv-anim .f-chute:not(.fragment) ~ .mur-label { opacity: 0.3; }
.reveal svg.renv-anim .methode rect { fill: #b9cdd4; transition: fill .5s; }
.reveal svg.renv-anim .f-methode.visible ~ .methode rect, .reveal svg.renv-anim .f-methode:not(.fragment) ~ .methode rect { fill: #e84e0f; }
.reveal svg.renv-anim .fl, .reveal svg.renv-anim .flo { fill: none; stroke-width: 3; stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset .7s ease-out; }
.reveal svg.renv-anim .fl { stroke: #e84e0f; marker-end: url(#ro); }
.reveal svg.renv-anim .flo { stroke: #e84e0f; }
.reveal svg.renv-anim .f-methode .flo { marker-end: url(#ro); }
.reveal svg.renv-anim .visible .fl, .reveal svg.renv-anim .visible .flo, .reveal svg.renv-anim g:not(.fragment) > .fl, .reveal svg.renv-anim g:not(.fragment) > .flo { stroke-dashoffset: 0; }

/* Diapo « Philosophiae doctor » : les sciences quittent la philosophie */
.reveal svg.phd-anim { display: block; width: 84%; height: auto; margin: 0.1em auto 0; }
.reveal svg.phd-anim .t { font-size: 18px; font-weight: 700; fill: #005067; }
.reveal svg.phd-anim .s { font-size: 13px; fill: #52514e; }
.reveal svg.phd-anim .y { font-size: 12px; fill: #52514e; }
.reveal svg.phd-anim .e { font-size: 13px; font-weight: 700; fill: #1f2328; }
.reveal svg.phd-anim .g { font-size: 12.5px; font-style: italic; fill: #b84a1d; }
.reveal svg.phd-anim .o { font-size: 15px; font-weight: 700; fill: #8a5a00; }
.reveal svg.phd-anim .b { font-size: 15px; font-weight: 700; fill: #fff; }
.reveal svg.phd-anim .fl, .reveal svg.phd-anim .flo { fill: none; stroke-width: 4; stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset .6s ease-out; }
.reveal svg.phd-anim .fl { stroke: #005067; marker-end: url(#pa); }
.reveal svg.phd-anim .flo { stroke: #e84e0f; marker-end: url(#pao); }
.reveal svg.phd-anim .visible .fl, .reveal svg.phd-anim .visible .flo, .reveal svg.phd-anim g:not(.fragment) > .fl, .reveal svg.phd-anim g:not(.fragment) > .flo { stroke-dashoffset: 0; }

/* Diapo « Des révolutions, en informatique » : une carte par révolution */
.reveal svg.revo-anim { display: block; width: 92%; height: auto; margin: 0.4em auto 0; }
.reveal svg.revo-anim .carte-fond { fill: #f4f6f8; }
.reveal svg.revo-anim .carte-fond.fort { fill: #e5eef1; stroke: #005067; stroke-width: 2; }
.reveal svg.revo-anim .carte-fond.ref { fill: #fff; stroke: #c9cdd3; stroke-width: 1.5; stroke-dasharray: 5 4; }
.reveal svg.revo-anim .yr { font-size: 15px; font-weight: 800; fill: #1f2328; }
.reveal svg.revo-anim .av { font-size: 13px; fill: #52514e; }
.reveal svg.revo-anim .an { font-size: 12.5px; fill: #8a5a00; }
.reveal svg.revo-anim .ap { font-size: 14px; font-weight: 700; fill: #005067; }
.reveal svg.revo-anim .fd { stroke: #9aa0a6; stroke-width: 2; fill: none; }
.reveal svg.revo-anim .mot-fond { fill: #e84e0f; }
.reveal svg.revo-anim .mt { font-size: 14.5px; font-weight: 700; fill: #fff; }
.reveal svg.revo-anim .pt { fill: #005067; }
.reveal svg.revo-anim .cap { font-size: 14px; font-style: italic; fill: #52514e; }
.reveal svg.revo-anim .ref ~ .mot .mot-fond { fill: #9aa0a6; }
.reveal svg.revo-anim .ref ~ .pt { fill: #9aa0a6; }
.reveal svg.revo-anim .mot { transform-box: fill-box; transform-origin: center; transition: opacity .35s .45s, transform .45s cubic-bezier(.3,1.6,.5,1) .45s; }
.reveal svg.revo-anim .fragment:not(.visible) .mot { opacity: 0; transform: scale(0.6); }

/* Diapo « C'est quoi, le réel ? » : deux cartes de Toulouse, et un premier tampon */
.reveal svg.carte-anim { display: block; width: 78%; height: auto; margin: 0 auto; }
.reveal .tampon.carte-tampon { top: 200px; width: 70%; font-size: 1em; }
.reveal section#cest-quoi-le-réel blockquote { margin: 0.3em auto; font-size: 0.85em; }

/* Diapo « Qu'est-ce qu'un ordinateur ? » : C4 corrige la conclusion */
.reveal .correction { width: 86%; margin: 0.3em auto 0; }
.reveal .correction p { margin: 0.15em 0; }
.reveal .conclusion-fausse { display: block; font-size: 0.68em; color: var(--encre-2); text-align: left; padding: 0.2em 0.9em;
  text-decoration: line-through 0 transparent; transition: text-decoration-color .4s, opacity .4s; }
.reveal .correction:has(.condition.visible) .conclusion-fausse,
.reveal .correction:has(.condition:not(.fragment)) .conclusion-fausse:not(.fragment) { text-decoration: line-through 3px var(--c3il-orange); opacity: .6; }

/* Diapo « Le sujet : pas "l'IA", les LLM » */
.reveal svg.sujet-anim { display: block; width: 90%; height: auto; margin: 0.3em auto 0; }
.reveal svg.sujet-anim .nuage { font-size: 26px; font-weight: 800; font-style: italic; fill: #9aa0a6; }
.reveal svg.sujet-anim .pill { fill: #fff; stroke: #9aa0a6; stroke-width: 1.5; }
.reveal svg.sujet-anim .pill.llm { stroke: #e84e0f; stroke-width: 2.5; }
.reveal svg.sujet-anim .pt { font-size: 13px; fill: #1f2328; }
.reveal svg.sujet-anim .tt { font-size: 22px; font-weight: 800; fill: #005067; }
.reveal svg.sujet-anim .it { font-size: 13px; font-style: italic; fill: #52514e; }
.reveal svg.sujet-anim .s { font-size: 13px; fill: #52514e; }
.reveal svg.sujet-anim .c { font-size: 13px; font-weight: 700; fill: #fff; }
.reveal svg.sujet-anim .fl { fill: none; stroke: #e84e0f; stroke-width: 3; marker-end: url(#sj); stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset .6s ease-out; }
.reveal svg.sujet-anim .visible .fl, .reveal svg.sujet-anim g:not(.fragment) > .fl { stroke-dashoffset: 0; }
.reveal svg.sujet-anim .autres { transition: opacity .5s; }
.reveal svg.sujet-anim .f-zoom.visible ~ .autres.visible, .reveal svg.sujet-anim .f-zoom:not(.fragment) ~ .autres { opacity: 0.25; }

/* Diapo « N'importe qui peut faire de la recherche » */
.reveal svg.nq-anim { display: block; width: 90%; height: auto; margin: 0.4em auto 0.2em; }
.reveal svg.nq-anim .qui { font-size: 34px; font-weight: 800; fill: #005067; }
.reveal svg.nq-anim .cf { fill: #e5eef1; }
.reveal svg.nq-anim .num { font-size: 18px; font-weight: 800; fill: #fff; }
.reveal svg.nq-anim .ct { font-size: 19px; font-weight: 800; fill: #005067; }
.reveal svg.nq-anim .cs { font-size: 14px; fill: #52514e; }
.reveal svg.nq-anim .ce { font-size: 13px; font-style: italic; fill: #b84a1d; }
.reveal svg.nq-anim .fl { fill: none; stroke: #005067; stroke-width: 3; }

/* Diapo « Étape 2 · Poser la question » : la paire, le garde-fou, la question */
.reveal svg.question-anim { display: block; width: 90%; height: auto; margin: 0.3em auto 0; }
.reveal svg.question-anim .pr { font-size: 18px; fill: #1f2328; }
.reveal svg.question-anim .mot { fill: #fff; stroke: #e84e0f; stroke-width: 2.5; }
.reveal svg.question-anim .mt { font-size: 17px; font-weight: 800; fill: #e84e0f; }
.reveal svg.question-anim .note { font-size: 13px; font-style: italic; font-weight: 700; fill: #e84e0f; }
.reveal svg.question-anim .s { font-size: 13px; fill: #52514e; }
.reveal svg.question-anim .c { font-size: 13px; font-weight: 700; fill: #fff; }
.reveal svg.question-anim .acc { fill: none; stroke-width: 2.5; }
.reveal svg.question-anim .acc.qui { stroke: #e84e0f; }
.reveal svg.question-anim .acc.quoi { stroke: #005067; }
.reveal svg.question-anim .lq { font-size: 15px; font-weight: 800; fill: #e84e0f; }
.reveal svg.question-anim .lc { font-size: 15px; font-weight: 800; fill: #005067; }
.reveal svg.question-anim .qq { font-size: 20px; font-weight: 700; fill: #1f2328; }
.reveal svg.question-anim .qq .lq, .reveal svg.question-anim .qq .lc { font-size: 20px; }
.reveal svg.question-anim .ht { font-size: 16px; font-weight: 800; }

/* Diapo « Étape 6 · Confronter aux prédictions » : le tableau se remplit */
.reveal svg.confront-anim { display: block; width: 92%; height: auto; margin: 0.2em auto 0; }
.reveal svg.confront-anim .hd { font-size: 12.5px; font-weight: 800; letter-spacing: .03em; fill: #52514e; }
.reveal svg.confront-anim .sys { font-size: 18px; font-weight: 800; fill: #1f2328; }
.reveal svg.confront-anim .asym { fill: #e84e0f; }
.reveal svg.confront-anim .sym { fill: #f4f6f8; stroke: #c9cdd3; }
.reveal svg.confront-anim .cl { font-size: 13.5px; font-weight: 800; fill: #fff; }
.reveal svg.confront-anim .cl2 { font-size: 11.5px; fill: #fff; }
.reveal svg.confront-anim .eq { font-size: 20px; font-weight: 800; fill: #9aa0a6; }
.reveal svg.confront-anim .sc { font-size: 30px; font-weight: 800; }
.reveal svg.confront-anim .tg { font-size: 14px; font-weight: 800; }
.reveal svg.confront-anim .dir { font-size: 15px; fill: #1f2328; }
.reveal svg.confront-anim .lg { font-size: 15px; font-weight: 700; fill: #1f2328; }
.reveal svg.confront-anim .cell { transform-box: fill-box; transform-origin: center; transition: opacity .3s, transform .35s cubic-bezier(.3,1.5,.5,1); }
.reveal svg.confront-anim .fragment:not(.visible) .cell { opacity: 0; transform: scale(0.6); }

/* Diapo « Étape 7 · Conclure, sans dépasser » : ce qui reste dans le cadre */
.reveal svg.concl-anim { display: block; width: 92%; height: auto; margin: 0.2em auto 0; }
.reveal svg.concl-anim .cad { font-size: 12.5px; font-weight: 800; letter-spacing: .05em; fill: #005067; }
.reveal svg.concl-anim .t { font-size: 17px; font-weight: 800; fill: #005067; }
.reveal svg.concl-anim .s { font-size: 13px; fill: #52514e; }
.reveal svg.concl-anim .c { font-size: 12.5px; font-weight: 700; fill: #fff; }
.reveal svg.concl-anim .ok { font-size: 16px; font-weight: 800; fill: #0f7a53; }
.reveal svg.concl-anim .kob { fill: #fff; stroke: #e84e0f; stroke-width: 2; stroke-dasharray: 6 4; }
.reveal svg.concl-anim .kt { font-size: 18px; font-weight: 800; font-style: italic; fill: #1f2328; }
.reveal svg.concl-anim .kr { font-size: 13.5px; font-weight: 700; fill: #b84a1d; }
.reveal svg.concl-anim .fl { fill: none; stroke: #e84e0f; stroke-width: 2.5; stroke-dasharray: 1; stroke-dashoffset: 1; marker-end: url(#ck); transition: stroke-dashoffset .5s ease-out; }
.reveal svg.concl-anim .barre { stroke: #e84e0f; stroke-width: 3; stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset .4s ease-out .6s; }
.reveal svg.concl-anim .visible .fl, .reveal svg.concl-anim .visible .barre,
.reveal svg.concl-anim g:not(.fragment) > .fl, .reveal svg.concl-anim g:not(.fragment) > .barre { stroke-dashoffset: 0; }

/* Diapo « On écarte les jolies questions » : le tri par C2 */
.reveal svg.tri-anim { display: block; width: 88%; height: auto; margin: 0.1em auto 0; }
.reveal svg.tri-anim .bul rect { fill: #fdf3dc; }
.reveal svg.tri-anim .bul text { font-size: 15px; font-style: italic; fill: #8a5a00; }
.reveal svg.tri-anim .bul { transition: transform .9s cubic-bezier(.5,0,.3,1), opacity .3s ease; }
.reveal svg.tri-anim .f-tri.visible ~ .bul.visible { opacity: 1; }
.reveal svg.tri-anim .f-tri.visible ~ .bul, .reveal svg.tri-anim .f-tri:not(.fragment) ~ .bul { transform: translate(var(--dx), var(--dy)); }
.reveal svg.tri-anim .c { font-size: 13px; font-weight: 700; fill: #fff; }
.reveal svg.tri-anim .fe { font-size: 15px; font-weight: 700; fill: #fff; }
.reveal svg.tri-anim .bac { fill: #f4f6f8; stroke: #9aa0a6; stroke-width: 2.5; }
.reveal svg.tri-anim .bac.sci { fill: #fff; stroke: #005067; stroke-dasharray: 7 5; }
.reveal svg.tri-anim .bt { font-size: 16px; font-weight: 800; fill: #52514e; }
.reveal svg.tri-anim .bs { font-size: 12.5px; fill: #52514e; }
.reveal svg.tri-anim .tu { font-size: 14px; fill: #1f2328; }

/* Diapo « Et pour le fun, je l'ai publié » */
.reveal svg.pub-anim { display: block; width: 90%; height: auto; margin: 0.4em auto 0.2em; }
.reveal svg.pub-anim .t { font-size: 19px; font-weight: 800; fill: #005067; }
.reveal svg.pub-anim .s { font-size: 13.5px; fill: #52514e; }
.reveal svg.pub-anim .o { font-size: 12.5px; font-style: italic; font-weight: 700; fill: #b84a1d; }
.reveal svg.pub-anim .o2 { font-size: 13px; font-style: italic; font-weight: 700; fill: #b84a1d; }
.reveal svg.pub-anim .b { font-size: 19px; font-weight: 800; fill: #fff; }
.reveal svg.pub-anim .bs { font-size: 13.5px; fill: #fff; }
.reveal svg.pub-anim .fl { fill: none; stroke: #005067; stroke-width: 3; marker-end: url(#pb); stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset .5s ease-out; }
.reveal svg.pub-anim .visible .fl, .reveal svg.pub-anim g:not(.fragment) > .fl { stroke-dashoffset: 0; }

/* Diapo « Pour aujourd'hui… » : la bulle de pensée */
.reveal svg.pense-anim { display: block; width: 88%; height: auto; margin: 0.4em auto 0.2em; }
.reveal svg.pense-anim .pb { fill: #e5eef1; }
.reveal svg.pense-anim .q { font-size: 26px; font-weight: 700; font-style: italic; fill: #005067; }
.reveal svg.pense-anim .t { font-size: 20px; font-weight: 800; fill: #1f2328; }
.reveal svg.pense-anim .s { font-size: 14px; fill: #52514e; }
.reveal svg.pense-anim .ko { font-size: 15px; font-weight: 700; font-style: italic; fill: #9aa0a6; }
.reveal svg.pense-anim .ok { font-size: 15px; font-weight: 800; fill: #e84e0f; }

/* Diapo « Qui je suis » */
.reveal svg.moi-anim { display: block; width: 86%; height: auto; margin: 0.6em auto 0; }
.reveal svg.moi-anim .nom { font-size: 34px; font-weight: 800; fill: #005067; }
.reveal svg.moi-anim .t { font-size: 24px; font-weight: 800; fill: #005067; }
.reveal svg.moi-anim .lieu { font-size: 19px; font-weight: 700; fill: #1f2328; }
.reveal svg.moi-anim .s { font-size: 15px; fill: #52514e; }
