/* =====================================================================
   PlasticLab — feuille de style SOMBRE (ARCHIVISTE)
   Fond noir, lecture reposée, prêt pour les graphes sur fond sombre.
   ===================================================================== */

:root {
  --bg:        #0b0c0e;   /* fond quasi-noir */
  --bg-2:      #0f1114;   /* fond alterné */
  --card:      #15171b;   /* cartes / surfaces */
  --card-2:    #1b1e23;   /* surfaces plus claires (th, code) */
  --ink:       #e6e3db;   /* texte principal (blanc chaud) */
  --ink-soft:  #a7a49c;   /* texte secondaire */
  --line:      #2a2e35;   /* filets / bordures */
  --line-soft: #22262c;
  --accent:    #d0a978;   /* brun-or (chaud) */
  --accent-2:  #7db3e6;   /* bleu clair (liens) */
  --pour:      #5fd58a;   /* POUR / CONFIRMÉ */
  --contre:    #ef8080;   /* CONTRE / NUL */
  --warn:      #e6c766;   /* alerte / vulgarisation */
  --code-bg:   #1b1e23;
  --maxw:      1180px;   /* le site occupe l'écran (avant : 980) */
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; color-scheme: dark; }

body {
  margin: 0;
  font-family: "Iowan Old Style", "Palatino Linotype", Georgia, "Times New Roman", serif;
  color: var(--ink);
  background: var(--bg);
  line-height: 1.62;
  font-size: 18px;
}

a { color: var(--accent-2); text-decoration: none; }
a:hover { text-decoration: underline; }

.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 20px; }

/* --- Bandeau / en-tête --- */
header.site {
  border-bottom: 1px solid var(--line);
  background: var(--bg-2);
}
header.site .bar {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 16px; padding: 14px 0; flex-wrap: wrap;
}
header.site .brand {
  font-size: 1.5rem; font-weight: 700; letter-spacing: .5px;
  color: var(--ink); text-decoration: none;
}
header.site .brand small { font-weight: 400; color: var(--ink-soft); font-size: .8rem; display:block; letter-spacing: 0; }

nav.main { display: flex; flex-wrap: wrap; gap: 4px 14px; padding: 8px 0 14px; }
nav.main a { color: var(--ink-soft); font-size: .95rem; }
nav.main a:hover { color: var(--ink); text-decoration: none; }
nav.main a.active { color: var(--accent); font-weight: 700; }

.utility { display:flex; gap: 12px; align-items:center; font-size: .85rem; color: var(--ink-soft); }
.utility a { color: var(--ink-soft); }
.utility .sep { color: var(--line); }
.lang a { padding: 1px 5px; border: 1px solid var(--line); border-radius: 3px; }
.lang a.on { background: var(--ink); color: var(--bg); border-color: var(--ink); }

/* --- Bandeau embargo / DOI --- */
.embargo {
  background: #241f10; border-bottom: 1px solid #4a3f1c;
  color: var(--warn); font-size: .85rem; text-align: center; padding: 6px 10px;
}
.doi { background: #10231a; border-bottom: 1px solid #1e4632; color: var(--pour);
  text-align:center; padding: 6px; font-size: .9rem; }
.doi a { color: var(--pour); }

/* --- Contenu --- */
main { padding: 30px 0 70px; }
main.wrap { max-width: var(--maxw); }

h1 { font-size: 2rem; line-height: 1.2; margin: .2em 0 .5em; color: #f2efe7; }
h2 { font-size: 1.4rem; margin: 1.6em 0 .5em; border-bottom: 1px solid var(--line); padding-bottom: .2em; color: #f0ede5; }
h3 { font-size: 1.15rem; margin: 1.3em 0 .4em; color: var(--accent); }
h4 { font-size: 1rem; margin: 1.1em 0 .3em; color: var(--ink); }

p { margin: .6em 0; }

blockquote {
  margin: 1em 0; padding: .4em 1em; border-left: 3px solid var(--accent);
  background: #131519; color: var(--ink-soft); font-style: italic;
}
blockquote p:first-child { margin-top: 0; }
blockquote p:last-child { margin-bottom: 0; }

code { background: var(--code-bg); padding: 1px 5px; border-radius: 3px; color: #e8c9a0;
  font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace; font-size: .85em; }
pre { background: var(--code-bg); padding: 12px 14px; border-radius: 6px; overflow-x: auto; border: 1px solid var(--line-soft); }
pre code { background: none; padding: 0; color: var(--ink); }

hr { border: none; border-top: 1px solid var(--line); margin: 1.6em 0; }

/* --- Tables (défilent seules si larges) --- */
.table-wrap { overflow-x: auto; margin: 1em 0; border: 1px solid var(--line-soft); border-radius: 6px; }
table { border-collapse: collapse; width: 100%; font-size: .92rem; }
th, td { border: 1px solid var(--line); padding: 7px 10px; text-align: left; vertical-align: top; }
th { background: var(--card-2); color: #f0ede5; }
tr:nth-child(even) td { background: var(--bg-2); }

/* --- Étiquettes de statut --- */
.tag { display: inline-block; font-size: .72rem; font-weight: 700; letter-spacing: .5px;
  padding: 2px 8px; border-radius: 10px; text-transform: uppercase; }
.tag.clos   { background: #10231a; color: var(--pour);   border: 1px solid #1e4632; }
.tag.ouvert { background: #10202e; color: var(--accent-2); border: 1px solid #1d3a52; }
.tag.nul    { background: #2a1414; color: var(--contre); border: 1px solid #4d2222; }
.tag.borne, .tag.avorte { background: #241f10; color: var(--warn); border: 1px solid #4a3f1c; }

/* --- Encarts verbatim vs vulgarisation --- */
.verbatim, .vulgar { border-radius: 6px; padding: 4px 16px 12px; margin: 1em 0; }
.verbatim { border: 1px solid var(--line); background: var(--card); }
.vulgar   { border: 1px dashed var(--accent-2); background: #101820; }
.badge { display:inline-block; font-size:.7rem; font-weight:700; letter-spacing:.6px;
  text-transform: uppercase; padding: 2px 8px; border-radius: 3px; margin: 10px 0 4px; }
.badge.vb { background: #e6e3db; color: #0b0c0e; }
.badge.vg { background: var(--accent-2); color: #06121d; }

/* --- Cartes / grilles --- */
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px,1fr)); gap: 16px; }
.card { border: 1px solid var(--line); background: var(--card); border-radius: 8px; padding: 16px; }
.card h3 { margin-top: 0; }

/* --- Bloc de téléchargement zip --- */
.dl { border: 1px solid var(--line); border-radius: 6px; padding: 12px 14px; margin: 10px 0; background: var(--card); }
.dl .name { font-weight: 700; color: var(--ink); }
.dl .sha { font-family: monospace; font-size: .72rem; color: var(--ink-soft); word-break: break-all; }
.dl .meta { font-size: .8rem; color: var(--ink-soft); }
.btn { display: inline-block; background: var(--accent); color: #1a1206; padding: 6px 14px;
  border-radius: 5px; font-size: .9rem; font-weight: 600; }
.btn:hover { background: #e2bd8c; text-decoration: none; }

/* --- Sas / login --- */
.login { max-width: 360px; margin: 40px auto; }
.login label { display:block; font-size: .85rem; color: var(--ink-soft); margin: 10px 0 3px; }
.login input { width: 100%; padding: 9px 10px; border: 1px solid var(--line); border-radius: 5px;
  font-size: 1rem; background: var(--card-2); color: var(--ink); }
.login input:focus { outline: none; border-color: var(--accent-2); }
.login .err { color: var(--contre); background: #2a1414; padding: 8px 10px; border-radius: 5px; font-size: .9rem; border: 1px solid #4d2222; }
.login button { margin-top: 16px; width: 100%; }

.warn { color: var(--contre); }
.muted { color: var(--ink-soft); font-size: .85rem; }

/* --- Pied --- */
footer.site { border-top: 1px solid var(--line); color: var(--ink-soft); font-size: .82rem;
  padding: 24px 0 40px; background: var(--bg-2); }
footer.site .cols { display:flex; justify-content: space-between; gap: 20px; flex-wrap: wrap; }

/* --- Images / graphes : cadre sombre cohérent --- */
img, svg, figure { max-width: 100%; height: auto; }
figure { margin: 1.2em 0; background: var(--card); border: 1px solid var(--line-soft); border-radius: 8px; padding: 12px; }
figcaption { color: var(--ink-soft); font-size: .82rem; margin-top: 8px; text-align: center; }

@media (max-width: 600px) {
  body { font-size: 17px; }
  h1 { font-size: 1.6rem; }
}

/* =====================================================================
   HOME v2 — hero, badges, murs, grilles
   ===================================================================== */

/* --- Hero --- */
.hero { text-align:center; padding: 30px 0 26px; border-bottom: 1px solid var(--line); margin-bottom: 8px; }
.hero-domain { font-size: clamp(2.4rem, 7vw, 4.2rem); font-weight: 800; letter-spacing: -1px; color: #f4f1e9; line-height: 1; }
.hero-base { color: var(--accent); font-size: clamp(.95rem,2.5vw,1.2rem); margin: 8px 0 22px; font-style: italic; }
.hero-fraction { display:flex; flex-direction:column; gap: 2px; font-size: clamp(1.1rem, 3.4vw, 1.9rem); font-weight: 700; }
.hero-fraction .hf-a { color: var(--accent-2); }
.hero-fraction .hf-b { color: var(--warn); }
.hero-fraction .hf-c { color: var(--pour); }

/* --- Badges de statut --- */
.sbadge { display:inline-block; font-size:.68rem; font-weight:700; letter-spacing:.4px; text-transform:uppercase;
  padding: 2px 8px; border-radius: 10px; white-space: nowrap; }
.sbadge.confirme    { background:#10231a; color:var(--pour);     border:1px solid #1e4632; }
.sbadge.borne       { background:#241f10; color:var(--warn);     border:1px solid #4a3f1c; }
.sbadge.unique      { background:#101c2a; color:var(--accent-2); border:1px solid #1d3a52; }
.sbadge.instruction { background:#231018; color:#e69ab5;         border:1px solid #4d2236; }

.legend { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin: 14px 0 6px;
  padding: 10px 12px; background: var(--card); border:1px solid var(--line-soft); border-radius: 8px; }
.legend .legtitle { font-size:.85rem; color: var(--ink-soft); margin-right: 4px; }

/* --- 8 axiomes --- */
.axgrid { display:grid; grid-template-columns: repeat(auto-fill, minmax(220px,1fr)); gap: 12px; margin: 12px 0; }
.axcard { display:flex; gap:12px; padding:12px 14px; border:1px solid var(--line); border-radius:8px;
  background:var(--card); text-decoration:none; color:var(--ink); transition: border-color .15s; }
.axcard:hover { border-color: var(--accent-2); text-decoration:none; }
.axid { font-size:1.5rem; font-weight:800; color:var(--accent); min-width: 1.6em; text-align:center; }
.axname { font-weight:700; }
.axform { font-size:.9rem; color:#cfe0f0; margin: 2px 0; overflow-x:auto; }
.axnote { font-size:.8rem; }

/* --- Mur des émergences --- */
.emgrid { display:grid; grid-template-columns: repeat(auto-fill, minmax(230px,1fr)); gap: 12px; margin: 12px 0; }
.emcard { display:flex; flex-direction:column; padding:12px 14px; border:1px solid var(--line); border-radius:8px;
  background:var(--card); color:var(--ink); text-decoration:none; }
.emcard.has:hover { border-color: var(--accent); text-decoration:none; }
.emname { font-weight:700; font-size:.98rem; }
.emval { font-size:1.15rem; margin: 6px 0 8px; color:#f0ede5; overflow-x:auto; }
.emfoot { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-top:auto; }
.embanc { font-size:.72rem; color:var(--ink-soft); }
.emlink { font-size:.72rem; margin-top:8px; }
.emcard.has .emlink { color: var(--accent); }

/* --- En instruction --- */
.inscard { border:1px solid #4d2236; border-radius:10px; background:#170e13; padding:14px 18px; margin:12px 0; }
.inshead { display:flex; align-items:center; gap:10px; margin-bottom:4px; }
.insbanc { font-size:.78rem; color:var(--ink-soft); }
.inscard h3 { color:#e69ab5; margin:.2em 0 .3em; }
.insq { font-style:italic; color:var(--ink); }
.instable { width:100%; font-size:.9rem; margin:10px 0; }
.instable td { border:1px solid var(--line); padding:6px 9px; vertical-align:top; }
.instable .cname { font-weight:700; }
.instable .cval { color:var(--warn); white-space:nowrap; font-weight:700; }
.verdict-await { color:#e69ab5; font-weight:600; font-size:.9rem; margin-bottom:0; }

/* --- Bande d'échelle --- */
.scaleband { display:grid; grid-template-columns: 1.3fr 1fr; gap:20px; align-items:center;
  border:1px solid var(--line); border-radius:12px; background:var(--card); padding:20px 22px; margin: 20px 0; }
.scaleband h2 { border:none; margin:.1em 0 .4em; }
.scaleband .mini { font-size:.78rem; }
.scalenums { display:flex; flex-direction:column; gap:10px; }
.snum { display:flex; flex-direction:column; align-items:flex-end; border-right:3px solid var(--accent); padding-right:12px; }
.sn-v { font-size:1.3rem; color:#f0ede5; }
.sn-l { font-size:.78rem; color:var(--ink-soft); }

/* --- Grille des arcs --- */
.arcgrid { display:grid; grid-template-columns: repeat(auto-fill, minmax(260px,1fr)); gap:12px; margin:12px 0; }
.arccard { display:flex; gap:12px; align-items:center; padding:12px 14px; border:1px solid var(--line);
  border-radius:8px; background:var(--card); }
.arcnum { font-size:1.8rem; font-weight:800; color:var(--line); min-width:1.2em; text-align:center; }
.arcname { font-weight:700; font-size:.95rem; }
.arcmeta { display:flex; align-items:center; gap:8px; margin-top:4px; }

/* --- Journal --- */
.loglist { list-style:none; padding:0; margin:10px 0; }
.loglist li { padding:8px 0; border-bottom:1px solid var(--line-soft); }
.logdate { font-family:monospace; font-size:.8rem; color:var(--accent); margin-right:8px; }

@media (max-width: 620px) {
  .scaleband { grid-template-columns: 1fr; }
  .snum { align-items:flex-start; border-right:none; border-left:3px solid var(--accent); padding-right:0; padding-left:12px; }
}

/* --- Pied de gabarit campagne : synchro tronc + SHA --- */
.synchro { margin-top: 30px; padding-top: 12px; border-top: 1px solid var(--line);
  font-size: .78rem; color: var(--ink-soft); display:flex; flex-wrap:wrap; gap: 8px; align-items:center; }
.synchro .sep { color: var(--line); }
.synchro code { font-size: .9em; }

/* --- Genèse : frise, actes, deux voix --- */
.epigraph { border-left:3px solid var(--accent); background:#131519; padding:12px 18px; margin:16px 0;
  font-style:italic; font-size:1.05rem; color:#e9e4d8; }
.acts { counter-reset: act; }
.act { border:1px solid var(--line); border-radius:8px; background:var(--card); padding:14px 18px; margin:12px 0; }
.act h3::before { counter-increment: act; content: "Acte " counter(act) " — "; color:var(--accent); }
.yoann-note { border:1px dashed var(--accent); background:#171310; border-radius:8px; padding:10px 16px; margin:12px 0; }
.yoann-note .who { font-weight:700; color:var(--accent); font-size:.8rem; text-transform:uppercase; letter-spacing:.5px; }
.reclaim { border:1px dashed var(--contre); background:#1c1113; border-radius:8px; padding:14px 18px; margin:14px 0; color:#f0c9c9; }
.reclaim strong { color:#ef8080; }
.voix-table td { border:1px solid var(--line); padding:8px 11px; }
.voix-table .win-y { color:var(--accent); font-weight:700; }
.share { text-align:center; font-size:1.1rem; font-weight:700; color:var(--accent); margin:22px 0 0; }
.genese-cta { display:inline-block; margin-top:10px; padding:8px 16px; border:1px solid var(--accent);
  border-radius:6px; color:var(--accent); font-weight:600; }
.genese-cta:hover { background:var(--accent); color:#1a1206; text-decoration:none; }

/* --- Genèse : dépôts Zenodo + destins --- */
.deposit { border:1px solid var(--line); border-left:3px solid var(--accent-2); background:var(--card);
  border-radius:8px; padding:12px 16px; margin:12px 0; }
.deposit p { margin:.3em 0; }
.doipill { display:inline-block; font-family:monospace; font-size:.72rem; font-weight:700;
  background:#101c2a; color:var(--accent-2); border:1px solid #1d3a52; border-radius:4px;
  padding:2px 8px; margin-bottom:4px; letter-spacing:.3px; }
.destin { border:1px solid var(--line); border-radius:8px; background:var(--card); padding:10px 16px; margin:10px 0; }
.destin p { margin:.3em 0; }
.destin .sbadge { margin:0 4px 4px 0; }

/* --- Tampon de build (G-0 du site) --- */
.buildstamp { font-family:monospace; font-size:.72rem; color:var(--accent-2); }

/* --- Page émergence : carte d'identité --- */
.idcard { border:1px solid var(--line); border-left:4px solid var(--accent); border-radius:10px;
  background:var(--card); padding:16px 20px; margin:8px 0 18px; }
.idcard h1 { margin:.1em 0; }
.idval { font-size:1.8rem; color:#f4f1e9; margin:6px 0 10px; overflow-x:auto; }
.idmeta { display:flex; flex-wrap:wrap; align-items:center; gap:12px; }
.idbanc { font-size:.9rem; color:var(--ink-soft); }
.idcamp { font-weight:600; }

/* --- Hero CTAs + Jouer --- */
.hero-ctas { display:flex; gap:12px; justify-content:center; flex-wrap:wrap; margin-top:12px; }
.genese-cta.play { border-color:var(--pour); color:var(--pour); }
.genese-cta.play:hover { background:var(--pour); color:#06120b; }
nav.main a.navplay { color:var(--pour); font-weight:700; }
.replay-note { margin-top:16px; padding:10px 14px; border:1px dashed var(--pour); border-radius:8px;
  background:#0e1a13; font-size:.9rem; }
.pagesrc code { font-size:.9em; }

/* --- Antériorité Zenodo (bannière home) --- */
.anteriorite { border:1px solid var(--line); border-radius:8px; background:var(--card);
  padding:12px 16px; margin:16px 0; text-align:center; }
.anteriorite p { margin:.2em 0 .6em; font-size:.95rem; }
.doibadges { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; align-items:center; }
.doibadges .doipill { text-decoration:none; }
.doi-cite { font-weight:600; font-size:.85rem; }

/* --- Bloc fondateur « La maille » (Mission 11) --- */
.maille { border:1px solid var(--accent); border-radius:10px; background:#14110c;
  padding:16px 22px; margin:18px 0; }
.maille h2 { border:none; margin:.1em 0 .5em; color:var(--accent); }
.maille strong:first-of-type { }
.maille .sbadge { vertical-align:middle; }

/* --- Genèse au menu (Mission 14) --- */
nav.main a.navgenese { color: var(--accent); font-weight: 700; }

/* --- Carte des trous (revue émergences) --- */
.rvtable { font-size:.82rem; }
.rvtable td, .rvtable th { padding:5px 7px; }
.rv-ok { color:var(--pour); font-weight:700; font-size:.72rem; }
.rv-rq { color:var(--contre); font-weight:700; font-size:.72rem; }
.rv-pt { color:var(--warn); font-weight:700; font-size:.72rem; }
.rv-reason { font-size:.78rem; color:var(--ink-soft); }

/* ===== Mission 24 — la page-mur /emergences ===== */
.wall-chapeau{font-size:1.08rem;line-height:1.5;margin:.4rem 0 1.2rem;max-width:60ch}
.wall-sector{margin:1.8rem 0}
.sector-title{border-bottom:1px solid var(--line,#2a2a2a);padding-bottom:.35rem;margin-bottom:.9rem}
.wall-cta{margin:1.4rem 0 .4rem}
.wall-foot{margin-top:2rem;font-size:.9rem;line-height:1.5;max-width:70ch}
.legend a{margin-left:.5rem}

/* ===== Mission 26 — la couche narrative ===== */
.chapeau{border-left:3px solid var(--accent,#5b8def);background:rgba(91,141,239,.06);
  padding:.7rem .95rem;margin:.6rem 0 1.1rem;border-radius:0 6px 6px 0;line-height:1.55;font-size:.97rem}
.chapeau em{color:var(--accent,#5b8def);font-style:normal;font-weight:600}

/* ===== Mission 27 — le verdict en vitrine ===== */
.inscard.resolu{border-color:#2e7d52;background:rgba(46,125,82,.07)}
.verdict-rendu{line-height:1.55;margin:.5rem 0}
.verdict-rendu strong{color:#3fae74}

/* ===== SITE-002/003 — charpente : À VERSER, image-slots, dimensions ===== */
.averser{border:1px dashed #c9922e;background:rgba(201,146,46,.08);border-radius:6px;
  padding:.6rem .8rem;margin:.8rem 0;font-size:.92rem;line-height:1.5}
.averser-tag{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:#c9922e;margin-bottom:.35rem}
body.published .averser{display:none}          /* masqué au public une fois publié */
.imgslot{border:1px dashed #5b8def;background:rgba(91,141,239,.06);border-radius:6px;
  padding:.7rem .85rem;margin:1rem 0;text-align:left}
.imgslot img{max-width:100%;border-radius:4px;display:block;margin-bottom:.5rem}
.imgslot-tag{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:#5b8def;margin-bottom:.35rem}
.imgslot figcaption{font-size:.86rem;line-height:1.5;color:var(--muted,#9aa4b2)}
.dimlabel{display:inline-block;font-size:.68rem;font-weight:700;padding:.05rem .4rem;
  border-radius:999px;border:1px solid currentColor;margin-left:.4rem;vertical-align:middle}
.dim2d{color:#c98b6b}.dim3d{color:#3fae74}.dimboth{color:#5b8def}
/* frise histoire */
.frise{display:flex;flex-wrap:wrap;gap:.6rem;margin:1rem 0}
.frise-epoque{flex:1 1 150px;border:1px solid var(--line,#2a2a2a);border-radius:8px;
  padding:.7rem .8rem;text-decoration:none;color:inherit;transition:border-color .15s}
.frise-epoque:hover{border-color:#5b8def}
.frise-epoque .fe-num{font-size:.72rem;color:var(--muted,#9aa4b2)}
.frise-epoque .fe-t{font-weight:700;display:block;margin:.2rem 0}
/* passation : bloc d'amorçage à copier */
.bootblock{border:1px solid #3fae74;background:rgba(63,174,116,.06);border-radius:8px;
  padding:1rem 1.1rem;margin:1rem 0;line-height:1.6}
.synchro-route{font-size:.85rem;color:var(--muted,#9aa4b2);border-top:1px dashed var(--line,#2a2a2a);
  margin-top:1.4rem;padding-top:.6rem}

/* ===== SITE-004 — la timeline datée (histoire) ===== */
.timeline{margin:1rem 0;border-left:2px solid var(--line,#2a2a2a);padding-left:1rem}
.tl-ev{position:relative;margin:0 0 1.1rem}
.tl-ev::before{content:'';position:absolute;left:-1.42rem;top:.35rem;width:9px;height:9px;
  border-radius:50%;background:#5b8def}
.tl-date{font-size:.78rem;font-weight:700;color:#5b8def;letter-spacing:.02em}
.tl-t{font-weight:700;margin:.15rem 0 .3rem}
.tl-body p{margin:.2rem 0;line-height:1.55}
.tl-p{font-size:.82rem;margin-top:.25rem}

/* ===== SITE-007-FINAL — la page centrale (maquette /v3) ===== */
.maquette-flag{background:#c9922e;color:#111;font-weight:700;font-size:.85rem;
  padding:.4rem .8rem;border-radius:5px;margin-bottom:1.4rem;text-align:center}
.pitch{max-width:52ch;margin:1.5rem auto 2.5rem;line-height:1.65}
.pitch-hook{font-size:2rem;line-height:1.2;margin:.4rem 0 1.2rem;text-align:center}
.pitch-lead{font-size:1.12rem}
.pitch-fab-intro{margin-top:1.4rem}
.pitch-fab{list-style:none;padding:0;margin:.6rem 0 1.4rem}
.pitch-fab li{border-left:3px solid var(--accent,#5b8def);padding:.5rem 0 .5rem .9rem;margin:.5rem 0}
.pitch-fab a{text-decoration:none}
.pitch-close{font-size:1.08rem;border-top:1px solid var(--line,#2a2a2a);padding-top:1.2rem;margin-top:1.4rem}
.deux-regles,.miracles,.savons,.portes{max-width:60ch;margin:2.2rem auto}
.deux-regles p,.savons p{line-height:1.6;margin:.7rem 0}
.miracles,.portes{max-width:900px}
.miracles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.9rem;margin-top:1rem}
.miracle{border:1px solid var(--line,#2a2a2a);border-radius:8px;overflow:hidden;text-decoration:none;
  color:inherit;transition:border-color .15s;display:flex;flex-direction:column}
.miracle:hover{border-color:#5b8def}
.miracle img{width:100%;height:150px;object-fit:cover;background:#0d1017}
.miracle .m-slot{height:150px;display:flex;align-items:center;justify-content:center;
  background:rgba(91,141,239,.06);color:var(--muted,#9aa4b2);font-size:.9rem}
.miracle.avenir{opacity:.75}
.m-t{font-weight:700;padding:.55rem .7rem .1rem}
.m-p{padding:0 .7rem .7rem;font-size:.86rem;line-height:1.45}
.portes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.8rem;margin-top:1rem}
.porte{border:1px solid var(--line,#2a2a2a);border-radius:8px;padding:.8rem .9rem;text-decoration:none;
  color:inherit;display:flex;flex-direction:column;gap:.2rem;transition:border-color .15s}
.porte:hover{border-color:#5b8def}
.porte .p-t{font-weight:700}
.porte .p-d{font-size:.85rem}

/* ===== SITE-007-EXERGUE — exergue + figures de rapport ===== */
.exergue{max-width:56ch;margin:1rem auto 2rem;text-align:center}
.exergue blockquote{font-size:1.15rem;line-height:1.6;font-style:italic;
  border:none;padding:1.2rem 0;margin:0;color:var(--fg,#e6e9ef)}
.savons-cta{margin-top:1.2rem}
/* figures de rapport (charte) */
.figs{display:flex;flex-direction:column;gap:1rem;margin:1.4rem 0;max-width:680px}
.fig-rapport{border:1px solid var(--line,#2a2a2a);border-radius:10px;padding:1rem 1.1rem}
.fig-rapport.pending{border-style:dashed;border-color:#c9922e}
.fig-t{font-weight:700;margin-bottom:.7rem}
.fig-relation{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;
  background:rgba(91,141,239,.05);border-radius:8px;padding:.8rem 1rem}
.fig-side{text-align:center;min-width:90px}
.fig-num{font-size:1.7rem;font-weight:800;line-height:1.1}
.fig-side.pred .fig-num{color:#5b8def}
.fig-side.mes .fig-num{color:#3fae74}
.fig-lab{font-size:.78rem;margin-top:.2rem}
.fig-arrow{font-size:1.4rem;color:var(--muted,#9aa4b2)}
.fig-ecart{margin-left:auto;font-weight:700;font-size:.92rem;
  padding:.25rem .6rem;border:1px solid var(--line,#2a2a2a);border-radius:999px}
.fig-r{line-height:1.55;margin:.7rem 0 .4rem}
.fig-src{font-size:.8rem}
.fig-close{font-size:1.1rem;text-align:center;margin:1.8rem auto;max-width:60ch;line-height:1.55}

/* ===== SITE-008 — section « ce que ce monde nous a appris » ===== */
.appris{max-width:60ch;margin:2.4rem auto}
.appris>h2{text-align:center;margin-bottom:1.4rem}
.idee{border-top:1px solid var(--line,#2a2a2a);padding:1.4rem 0}
.idee:first-of-type{border-top:none}
.idee-yoann{font-size:1.18rem;line-height:1.5;font-style:italic;border-left:3px solid var(--accent,#5b8def);
  padding:.3rem 0 .3rem 1rem;margin:0 0 .7rem}
.idee-yoann cite{display:block;font-size:.82rem;font-style:normal;color:var(--muted,#9aa4b2);margin-top:.4rem}
.idee-t{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent,#5b8def);margin-bottom:.4rem}
.idee p{line-height:1.6;margin:.4rem 0}
.idee-preuve{font-size:.92rem}

/* ===== SITE-008-FIX — la page centrale REMPLIT l'écran (grand écran) ===== */
/* les sections occupent toute la largeur du conteneur (1180px), plus de ruban étroit */
.pitch,.appris,.deux-regles,.savons,.miracles,.portes,.figs{max-width:none}
/* mais le TEXTE de lecture garde une largeur lisible (aligné à gauche) */
.pitch-lead,.pitch>p,.pitch-fab-intro,.pitch-close,.deux-regles p,.savons p{max-width:74ch}
/* les 4 fabrications du pitch → grille 2×2 (remplit la largeur) */
.pitch-fab{display:grid;grid-template-columns:1fr 1fr;gap:.7rem 2rem}
/* les 4 idées apprises → grille 2×2 */
.appris{display:grid;grid-template-columns:1fr 1fr;gap:0 2.4rem;align-items:start}
.appris>h2{grid-column:1 / -1}
.idee{border-top:none;border-left:3px solid var(--line);padding:1rem 0 1rem 1.2rem;margin:.6rem 0}
/* l'exergue (frontispice) reste resserré et centré */
.exergue{max-width:62ch;margin-left:auto;margin-right:auto}
/* alignements : corps à gauche ; exergue, grand titre, intertitres centrés */
.pitch,.pitch-lead,.pitch p,.pitch-fab,.appris,.idee,.deux-regles,.savons{text-align:left}
.exergue,.pitch-hook,.appris>h2,.fig-close{text-align:center}
/* garde anti-débordement (formules MathJax, longues chaînes, SHA) */
body,.content,article{overflow-wrap:break-word}
.miracle img{max-width:100%}

@media (max-width: 640px){
  main{padding:20px 0 50px}
  .wrap{padding:0 14px}
  nav.main{gap:3px 10px}
  nav.main a{font-size:.9rem}
  .pitch-hook{font-size:1.55rem;line-height:1.25}
  .exergue blockquote{font-size:1.02rem}
  .pitch-lead,.pitch-close{font-size:1.02rem}
  .idee-yoann{font-size:1.05rem}
  .fig-close{font-size:1rem}
  .miracles-grid{grid-template-columns:1fr}
  .portes-grid{grid-template-columns:1fr}
  .pitch-fab{grid-template-columns:1fr}
  .appris{grid-template-columns:1fr}
  .frise{flex-direction:column}
  /* les figures de rapport s'empilent proprement */
  .fig-relation{flex-direction:column;align-items:flex-start;gap:.6rem}
  .fig-ecart{margin-left:0}
  .fig-side{min-width:0;text-align:left}
  .fig-num{font-size:1.5rem}
}
