/*! cadavre.ex(quis) — système de design
 *  © 2026 Léonard Kondakji. Tous droits réservés. Voir mentions.html.
 *  Feuille reprise telle quelle du système, augmentée en fin de fichier des
 *  seuls objets propres à ce jeu.
 */
/* Fontes auto-hebergees, copiees du theme du site. Aucune requete sortante. */
@font-face{font-family:"Crimson Pro";font-style:normal;font-weight:400;font-display:swap;
  src:url(assets/fonts/crimson-pro-400.woff2) format("woff2");}
@font-face{font-family:"Crimson Pro";font-style:italic;font-weight:400;font-display:swap;
  src:url(assets/fonts/crimson-pro-400-italic.woff2) format("woff2");}
@font-face{font-family:"Courier Prime";font-style:normal;font-weight:400;font-display:swap;
  src:url(assets/fonts/courier-prime-400.woff2) format("woff2");}
@font-face{font-family:"Courier Prime";font-style:italic;font-weight:400;font-display:swap;
  src:url(assets/fonts/courier-prime-400-italic.woff2) format("woff2");}
@font-face{font-family:"Courier Prime";font-style:normal;font-weight:700;font-display:swap;
  src:url(assets/fonts/courier-prime-700.woff2) format("woff2");}

:root{
  color-scheme:light;
  --papier:#FFFFFF; --encre:#111111; --gris:#6E6E6E;
  --filet:#E6E6E6; --repere:#F0F0F0; --titre-couleur:#2E2E2E;
  --mono:"Courier New","Courier Prime","Nimbus Mono PS",monospace;
  --serif:"Crimson Pro",Georgia,serif;
  --titre:var(--serif); --titre-graisse:400; --titre-espacement:0;
  --titre-taille:1.16; --titre-interligne:1.28;
  --e1:.5rem; --e2:1rem; --e3:1.5rem; --e4:2.5rem; --e5:4rem;
  --marge:clamp(1.5rem,6vw,5.5rem);
  --gouttiere:clamp(2rem,5vw,4rem);
  --rythme:clamp(4.5rem,14vw,11rem);
  --mesure:64ch; --conteneur:1160px; --toucher:44px;
}
:root:not([data-theme="light"]),
:root[data-theme="dark"]{--papier:#FFFFFF;--encre:#111111;}
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-padding-top:6rem;}
:target{scroll-margin-top:6rem;}
body{
  margin:0; background:var(--papier); color:var(--encre);
  font-family:var(--mono); font-weight:400;
  font-size:1.0625rem; line-height:1.82;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  min-height:100dvh; display:flex; flex-direction:column;
}
main{flex:1 0 auto;padding-bottom:var(--rythme);}
img{max-width:100%;height:auto;display:block;}
a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.22em;}
:focus-visible{outline:2px solid var(--encre);outline-offset:3px;}
h1,h2,h3{font-family:var(--titre);font-weight:var(--titre-graisse);
  color:var(--titre-couleur);letter-spacing:var(--titre-espacement);margin:0;}
h1{font-size:calc(clamp(1.5rem,4.5vw,1.875rem) * var(--titre-taille));line-height:var(--titre-interligne);}
h2{font-size:calc(clamp(1.125rem,3vw,1.25rem) * var(--titre-taille));line-height:1.5;}
h3{font-size:calc(1rem * var(--titre-taille));line-height:1.5;}

/* Grille en tiers */
.tiers{position:relative;display:grid;grid-template-columns:1fr;column-gap:var(--gouttiere);
  max-width:var(--conteneur);margin-inline:auto;padding-inline:var(--marge);}
.tiers > *{grid-column:1;}
.reperes{position:fixed;inset:0;z-index:-1;display:none;pointer-events:none;}
.reperes i{display:block;position:absolute;top:0;bottom:0;left:0;right:0;
  max-width:var(--conteneur);margin-inline:auto;padding-inline:var(--marge);}
.reperes i::before,.reperes i::after{content:"";position:absolute;
  top:0;bottom:0;width:1px;background:var(--repere);}
.reperes i::before{left:calc(var(--marge) + (100% - 2 * var(--marge)) / 3);}
.reperes i::after{left:calc(var(--marge) + (100% - 2 * var(--marge)) * 2 / 3);}
body.sans-reperes .reperes{display:none;}

/* Flux de lecture */
.contenu{position:relative;z-index:1;}
.contenu > *{max-width:var(--mesure);margin-block:0;}
.contenu > * + *{margin-top:1.75em;}
.contenu > :first-child{margin-top:var(--rythme);}
/* Le bandeau de tete occupe une seule ligne de grille : les deux colonnes
   doivent donc partir du meme cran, sinon seule celle de gauche est aeree. */
.contenu > .tete{margin-top:var(--rythme);}
.contenu > .pleine,.contenu > .large{max-width:none;}

.contenu > h2,.contenu > h3{margin-top:calc(var(--rythme) * .55);margin-bottom:1.6rem;}

.meta{font-size:.75rem;color:var(--gris);}
.tete{padding-bottom:calc(var(--rythme) * .35);}

/* Action */
.action{display:inline-flex;align-items:center;justify-content:center;
  min-height:var(--toucher);padding:0 1.25rem;
  font-family:var(--mono);font-size:.8125rem;line-height:1;letter-spacing:.04em;
  color:var(--encre);background:transparent;
  border:1px solid var(--encre);border-radius:0;cursor:pointer;
  transition:background-color .12s linear,color .12s linear;}
.action:hover{background:var(--encre);color:var(--papier);}
.action--pleine{background:var(--encre);color:var(--papier);}
.action--pleine:hover{background:var(--papier);color:var(--encre);}
.action--nue{border-color:transparent;padding:0 .25rem;text-decoration:underline;text-underline-offset:.22em;}
.action--nue:hover{background:transparent;color:var(--encre);}
.action[disabled]{color:var(--gris);border-color:var(--filet);cursor:not-allowed;background:transparent;}
.action[disabled]:hover{background:transparent;color:var(--gris);}
.action[aria-pressed="true"]{background:var(--encre);color:var(--papier);}
.action[aria-pressed="true"]:hover{background:var(--papier);color:var(--encre);}
.barre{display:flex;flex-wrap:wrap;align-items:center;gap:var(--e2);}
.barre label.action{position:relative;overflow:hidden;}
.barre label.action input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer;}

/* Champ */
.champ{display:block;max-width:44ch;}
.champ__etiquette{display:flex;justify-content:space-between;gap:var(--e2);
  font-size:.75rem;color:var(--gris);margin-bottom:.45rem;}
.champ__valeur{color:var(--encre);}
.champ__aide{display:block;font-size:.75rem;color:var(--gris);line-height:1.5;margin-top:.45rem;max-width:46ch;}
.champ__saisie{display:block;width:100%;min-height:var(--toucher);padding:.6rem .75rem;
  font-family:var(--mono);font-size:1rem;line-height:1.5;color:var(--encre);
  background:var(--papier);border:1px solid var(--filet);border-radius:0;}
.champ__saisie:focus{border-color:var(--encre);}
.champ--erreur .champ__saisie{border-color:var(--encre);border-width:2px;}
.champ__erreur{display:block;font-size:.75rem;font-weight:700;line-height:1.5;
  margin-top:.45rem;max-width:46ch;}
.champ__saisie:disabled{color:var(--gris);border-color:var(--filet);cursor:not-allowed;}

/* Curseur de réglage : quantité continue, déduite de la table des états.
   Filet au repos, carré plein en encre pour la position, aucun arrondi. */
input[type=range]{-webkit-appearance:none;appearance:none;display:block;width:100%;
  height:var(--toucher);background:transparent;margin:0;cursor:pointer;}
input[type=range]::-webkit-slider-runnable-track{height:1px;background:var(--filet);}
input[type=range]::-moz-range-track{height:1px;background:var(--filet);}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:13px;height:13px;
  background:var(--encre);border:0;border-radius:0;margin-top:-6px;}
input[type=range]::-moz-range-thumb{width:13px;height:13px;background:var(--encre);border:0;border-radius:0;}

/* Liste et tableau */
.liste{list-style:none;margin:0;padding:0;border-top:1px solid var(--filet);counter-reset:pas;}
ol.liste li{counter-increment:pas;}
ol.liste li::before{content:counter(pas);float:left;width:2ch;margin-left:-1rem;color:var(--gris);}
ol.liste li{padding-left:2.5rem;}
.liste li{border-bottom:1px solid var(--filet);padding:.85rem 0 .85rem 1rem;border-left:1px solid transparent;}
.liste li[aria-selected="true"]{border-left-color:var(--encre);font-weight:700;}
table{border-collapse:collapse;width:100%;font-size:.8125rem;}
th,td{text-align:left;vertical-align:top;padding:.7rem 1.25rem .7rem 0;border-bottom:1px solid var(--filet);}
th{font-weight:400;color:var(--gris);border-bottom-color:var(--encre);}

/* Message et avancement */
.message{border-left:1px solid var(--encre);padding-left:var(--e2);
  font-size:.8125rem;color:var(--gris);line-height:1.6;}
.message:empty{display:none;}
.message b{font-weight:700;color:var(--encre);}
.avancement{display:block;height:1px;background:var(--filet);width:100%;max-width:44ch;}
.avancement span{display:block;height:1px;background:var(--encre);width:0;}

/* Réglages : trois colonnes calées sur les tiers */
.reglages{display:grid;grid-template-columns:1fr;column-gap:var(--gouttiere);row-gap:var(--e4);}
.reglages .champ{max-width:none;}

@media (min-width:900px){
  body{font-size:1.09375rem;}
  .tiers{grid-template-columns:1fr 1fr 1fr;}
  .tiers > *{grid-column:2 / 4;}
  body:not(.sans-reperes) .reperes{display:block;}
  .contenu{grid-column:1 / 4;display:grid;grid-template-columns:1fr 1fr 1fr;column-gap:var(--gouttiere);}
  .contenu > *{grid-column:2 / 4;}
  .contenu > .gauche{grid-column:1 / 2;}
  .contenu > .centre{grid-column:2 / 3;}
  .contenu > .droite{grid-column:3 / 4;}
  .contenu > .large{grid-column:1 / 3;}
  .contenu > .pleine{grid-column:1 / 4;}
  .pied__liens{grid-column:1 / 4;}
  .mention{grid-column:1 / 4;}
  .reglages{grid-template-columns:1fr 1fr 1fr;}
}
/* Application installee : plus de barre de navigateur, les marges du systeme
   doivent donc etre reprises par la page elle-meme. */
@media (display-mode:standalone){
  .tiers{padding-left:calc(var(--marge) + env(safe-area-inset-left));
         padding-right:calc(var(--marge) + env(safe-area-inset-right));}
  .enseigne{padding-top:calc(clamp(1.25rem,4vw,2rem) + env(safe-area-inset-top));}
  .pied{padding-bottom:calc(clamp(3.25rem,8vw,5rem) + env(safe-area-inset-bottom));}
}

@media (prefers-reduced-motion:reduce){*{transition:none !important;}}
@media print{
  :root{--marge:24mm;}
  .reperes,.barre,.reglages,.avancement{display:none;}
  .contenu > :first-child{margin-top:0;}
  a{text-decoration:none;}
}

/* En-tete et pied du site, repris tels quels du theme Recits 1.8.4. */
.lien-evitement{position:absolute;left:-9999px;font-family:var(--mono);font-size:.8125rem;}
.lien-evitement:focus{left:var(--marge);top:1rem;z-index:30;background:var(--papier);padding:.5rem .75rem;}

.enseigne{
  width:100%;position:sticky;top:0;z-index:20;background:var(--papier);
  display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;
  gap:.75rem 1.5rem;padding-block:clamp(1.25rem,4vw,2rem);
}
.enseigne__nom{font-family:var(--mono);font-size:.9375rem;letter-spacing:.06em;color:var(--encre);}
.enseigne__liens{display:flex;flex-wrap:wrap;gap:1.75rem;
  font-family:var(--mono);font-size:.875rem;color:var(--gris);}
.enseigne__liens a:hover{color:var(--encre);text-decoration:underline;text-underline-offset:.25em;}
.enseigne__liens a[aria-current="page"]{color:var(--encre);border-bottom:1px solid var(--encre);}

.pied{width:100%;flex-shrink:0;padding-block:clamp(2.75rem,7vw,4rem) clamp(3.25rem,8vw,5rem);}
.pied__liens{display:flex;flex-wrap:wrap;justify-content:center;gap:2rem;
  margin:0;padding:0;list-style:none;font-family:var(--mono);font-size:.875rem;color:var(--gris);}
.pied a:hover{color:var(--encre);text-decoration:underline;text-underline-offset:.25em;}
.mention{margin:1.75rem 0 0;text-align:center;font-family:var(--mono);font-size:.75rem;color:var(--gris);}

.enseigne a,.pied a{text-decoration:none;}
.enseigne__liens li,.pied__liens li{list-style:none;}
.menu-liste{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0;}
.enseigne__liens .menu-liste{gap:1.75rem;}
.pied__liens .menu-liste{gap:2rem;}
@media print{.enseigne,.pied{display:none;}}

/* Progression en sections numerotees */
.introduction > *{margin-block:0;}
.introduction > * + *{margin-top:1.25rem;}
.introduction p{max-width:46ch;font-size:.8125rem;line-height:1.75;color:var(--gris);}
.section-app{padding-block:calc(var(--rythme) * .45);border-top:1px solid var(--filet);}
.section-app__entete{display:grid;grid-template-columns:3rem 1fr;gap:var(--e2);align-items:start;margin-bottom:var(--e4);}
.section-app__entete > *{margin-block:0;}
.section-app__entete > div > *{margin-block:0;}
.section-app__entete > div > * + *{margin-top:.35rem;}
.barre--principale{align-items:stretch;margin-top:var(--e4);}
.champ--court{width:min(100%,18rem);}

@media (max-width:640px){
  .enseigne__liens,.enseigne__liens .menu-liste{gap:1rem 1.25rem;}
  .pied__liens,.pied__liens .menu-liste{gap:1rem 1.5rem;}
  .section-app__entete{grid-template-columns:2rem 1fr;}
  .barre .action{flex:1 1 100%;}
}

/* ------------------------------------------------------------------
   Jeu : objets deduits, non decrits par le document.

   Le pli se tient comme une zone delimitee par un filet, sans fond ni
   ombre. Un fragment pose n'y laisse qu'un trait, long de ce qu'il est,
   rapporte a la mesure de 64 signes du systeme. L'encre dit vos
   fragments, le filet dit ceux de la machine. C'est la seule chose qui
   s'affiche avant la cloture, et elle ne dit rien du sens.
   ------------------------------------------------------------------ */
.pli{display:block;width:100%;padding:var(--e4) var(--e3);
  min-height:clamp(12rem,30vh,19rem);
  border:1px solid var(--filet);background:var(--papier);}
.pli__lignes{display:block;}
.pli__ligne{display:block;height:1px;max-width:100%;background:var(--filet);}
.pli__ligne + .pli__ligne{margin-top:1.15rem;}
.pli__ligne--sien{background:var(--encre);}
.pli__vide{margin:0;font-size:.75rem;color:var(--gris);}
.pli__phrase{margin:0;font-family:var(--titre);font-weight:var(--titre-graisse);
  color:var(--titre-couleur);
  font-size:calc(clamp(1.75rem,7vw,2.75rem) * var(--titre-taille));
  line-height:var(--titre-interligne);}

/* Au devoilement, les fragments se relisent un a un. Les votres portent la
   graisse 700 et un filet gauche : c'est le signal de selection du systeme. */
.fragments{list-style:none;margin:0;padding:0;font-size:.75rem;color:var(--gris);line-height:1.7;}
.fragments li{padding-left:1rem;border-left:1px solid transparent;}
.fragments li.sien{font-weight:700;color:var(--encre);border-left-color:var(--encre);}

/* Une section pleine largeur ne dispense pas de la mesure de lecture. */
.section-app > p,.section-app .message,.fragments,.closes{max-width:var(--mesure);}
.closes{list-style:none;margin:0;padding:0;border-top:1px solid var(--filet);}
.closes li{padding:var(--e3) 0 var(--e3) var(--e2);border-bottom:1px solid var(--filet);
  border-left:1px solid transparent;}
.closes .phrase{display:block;font-family:var(--titre);font-weight:var(--titre-graisse);
  color:var(--titre-couleur);
  font-size:calc(clamp(1.125rem,3vw,1.25rem) * var(--titre-taille));line-height:1.5;}
.closes .quand{display:block;font-size:.75rem;color:var(--gris);margin-top:.45rem;}

[hidden]{display:none !important;}
@media print{.pli{border:0;padding:0;min-height:0;}.pli__lignes{display:none;}}
