:root{
  --fond:#f6f3ec; --carte:#fdfcf9; --encre:#20211d; --encre-douce:#5c5a4f;
  --trait:#e0dcce; --accent:#b5651d; --accent-fonce:#8f4f16;
  --ok:#2f7d4f; --ok-fond:#e7f3ea; --alerte:#b23b3b; --alerte-fond:#f6e7e7;
  --focus:#2456b8;
  --ombre:0 1px 2px rgba(0,0,0,.05), 0 6px 18px rgba(0,0,0,.06);
  --rayon:12px; --largeur:900px;
  --police:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
}
[data-theme="sombre"]{
  --fond:#17181b; --carte:#1f2125; --encre:#e9e7e1; --encre-douce:#a5a299;
  --trait:#333;  --accent:#e0913f; --accent-fonce:#efb06c;
  --ok:#63c98b; --ok-fond:#1e2b22; --alerte:#e88; --alerte-fond:#2c2020;
  --focus:#8fb8ff;
  --ombre:0 1px 2px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--fond);color:var(--encre);font-family:var(--police);
  line-height:1.55;font-size:16px;-webkit-text-size-adjust:100%}
h1,h2,h3{line-height:1.2;margin:0 0 .5em}
a{color:var(--focus)}
img{max-width:100%}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}
.lien-evitement{position:absolute;left:-999px;top:0;background:var(--carte);
  padding:.6em 1em;border-radius:0 0 8px 0;z-index:20}
.lien-evitement:focus{left:0}

.barre{display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  padding:12px clamp(16px,4vw,28px);background:var(--carte);
  border-bottom:1px solid var(--trait);position:sticky;top:0;z-index:10}
.marque{font-weight:700;font-size:1.15rem;letter-spacing:.02em;
  background:none;border:none;color:var(--encre);cursor:pointer;padding:4px 0}
.barre nav{display:flex;gap:4px;flex-wrap:wrap;margin-right:auto}
.barre nav button,.barre-actions button{background:none;border:1px solid transparent;
  color:var(--encre-douce);padding:6px 10px;border-radius:8px;cursor:pointer;
  font-size:.92rem;font-family:inherit}
.barre nav button:hover,.barre-actions button:hover{background:var(--fond);color:var(--encre)}
.barre nav button[aria-current="page"]{color:var(--encre);background:var(--fond);
  border-color:var(--trait)}
.barre-actions{display:flex;gap:4px}
.barre-actions button[aria-pressed="true"]{border-color:var(--accent);color:var(--accent)}

main{max-width:var(--largeur);margin:0 auto;padding:clamp(20px,4vw,40px) clamp(16px,4vw,28px)}
.vue{display:none;animation:apparait .18s ease}
.vue.active{display:block}
body.sans-anim .vue{animation:none}
@keyframes apparait{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

button{font-family:inherit}
.primaire{background:var(--accent);color:#fff;border:none;padding:10px 18px;
  border-radius:9px;font-weight:600;cursor:pointer;font-size:.98rem}
.primaire:hover{background:var(--accent-fonce)}
.primaire:disabled{opacity:.5;cursor:not-allowed}
.secondaire{background:var(--carte);color:var(--encre);border:1px solid var(--trait);
  padding:10px 16px;border-radius:9px;cursor:pointer;font-weight:600;font-size:.95rem}
.secondaire:hover{border-color:var(--accent)}
.danger{background:none;border:1px solid var(--alerte);color:var(--alerte);
  padding:9px 15px;border-radius:9px;cursor:pointer;font-weight:600}
.grand{padding:13px 26px;font-size:1.05rem}
.lien{background:none;border:none;color:var(--focus);cursor:pointer;padding:4px 0;
  font-size:.92rem;text-decoration:underline;font-family:inherit}

/* accueil */
.surtitre{text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;
  color:var(--encre-douce);font-weight:700;margin:0 0 14px}
#vue-accueil h1{font-size:clamp(1.9rem,6vw,3rem)}
#vue-accueil h1 span{color:var(--accent)}
.chapo{font-size:1.1rem;max-width:60ch;color:var(--encre-douce)}
.accueil-actions{display:flex;gap:12px;flex-wrap:wrap;margin:26px 0}
.accueil-loop{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:12px;list-style:none;padding:0;margin:28px 0 0;counter-reset:l}
.accueil-loop li{background:var(--carte);border:1px solid var(--trait);
  border-radius:var(--rayon);padding:14px 16px;position:relative;counter-increment:l}
.accueil-loop li::before{content:counter(l);position:absolute;top:10px;right:12px;
  font-weight:700;color:var(--accent);opacity:.5}
.accueil-loop b{display:block;margin-bottom:3px}
.accueil-loop span{font-size:.86rem;color:var(--encre-douce)}

.entete-vue{margin-bottom:22px}
.entete-vue p{color:var(--encre-douce);max-width:62ch}
.jauge{height:8px;background:var(--trait);border-radius:99px;overflow:hidden;margin:14px 0 6px}
.jauge i{display:block;height:100%;background:var(--accent);width:0;transition:width .4s}
body.sans-anim .jauge i{transition:none}
.jauge-txt{font-size:.9rem;color:var(--encre-douce);margin:0}

/* liste chantiers */
.chantier{background:var(--carte);border:1px solid var(--trait);border-radius:var(--rayon);
  padding:18px;margin-bottom:14px;box-shadow:var(--ombre)}
.chantier.verrouille{opacity:.55}
.chantier-tete{display:flex;gap:14px;align-items:flex-start}
.chantier-num{font-weight:700;font-size:1.4rem;color:var(--accent);min-width:1.6em}
.chantier h3{margin:0 0 2px}
.chantier-tete p{margin:0;color:var(--encre-douce);font-size:.92rem}
.chantier-etat{margin-left:auto;font-size:.8rem;font-weight:700;padding:3px 9px;
  border-radius:99px;background:var(--fond);border:1px solid var(--trait);white-space:nowrap}
.chantier-etat.fait{background:var(--ok-fond);color:var(--ok);border-color:transparent}
.seance-puces{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.puce{border:1px solid var(--trait);background:var(--fond);border-radius:99px;
  padding:6px 12px;font-size:.85rem;cursor:pointer;color:var(--encre)}
.puce:hover{border-color:var(--accent)}
.puce.seul::before{content:"✓ ";color:var(--ok)}
.puce.avec_aide::before{content:"✓ ";color:var(--accent)}
.puce.livrable{font-weight:700}

/* vue chantier */
.retour{background:none;border:none;color:var(--focus);cursor:pointer;padding:4px 0;
  font-size:.9rem;margin-bottom:10px;font-family:inherit}
.fil{text-transform:uppercase;letter-spacing:.06em;font-size:.72rem;font-weight:700;
  color:var(--encre-douce);margin:0 0 4px}
.type-consigne{display:flex;gap:10px;flex-wrap:wrap;align-items:baseline;
  font-size:.9rem;color:var(--encre-douce);margin-top:-2px}
#type-badge{background:var(--accent);color:#fff;font-weight:700;font-size:.75rem;
  padding:3px 9px;border-radius:99px;white-space:nowrap}

.loop{display:flex;flex-direction:column;gap:14px;margin-top:18px}
.etape{background:var(--carte);border:1px solid var(--trait);border-radius:var(--rayon);
  padding:16px 18px}
.etape h3{display:flex;align-items:center;gap:10px;font-size:1rem;margin:0 0 10px}
.etape h3 span{background:var(--fond);border:1px solid var(--trait);width:1.7em;
  height:1.7em;border-radius:50%;display:grid;place-items:center;font-size:.85rem;
  color:var(--accent);font-weight:700}
.etape ol,.etape ul{margin:.3em 0;padding-left:1.3em}
.etape li{margin:.25em 0}
#bloc-notion code,.sortie,pre{font-family:var(--mono)}
#bloc-notion code{background:var(--fond);padding:1px 5px;border-radius:5px;font-size:.9em}
.consigne{white-space:pre-wrap;font-weight:500}
.exemple-saisie{background:var(--fond);border-left:3px solid var(--accent);
  padding:8px 12px;border-radius:0 8px 8px 0;font-size:.9rem;color:var(--encre-douce)}
.mini-titre{text-transform:uppercase;letter-spacing:.05em;font-size:.72rem;
  font-weight:700;color:var(--encre-douce);margin:16px 0 6px}

.editeur{border:1px solid var(--trait);border-radius:9px;overflow:hidden}
.editeur .cm-editor{max-height:60vh}
.editeur.fige{opacity:.92}
.lint-resume{font-size:.85rem;margin:6px 0 0;min-height:1.2em}
.lint-resume.err{color:var(--alerte)}
.lint-resume.ok{color:var(--ok)}

.actions-code{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}
.etat-moteur{font-size:.85rem;color:var(--encre-douce)}
.sortie{background:#111;color:#e6e6e6;padding:12px 14px;border-radius:9px;
  white-space:pre-wrap;word-break:break-word;font-size:.9rem;margin:0;min-height:2.5em}
[data-theme="sombre"] .sortie{background:#0c0d0f}

.retour-zone{border:1px solid var(--trait);border-radius:9px;padding:14px;
  background:var(--fond);font-size:.95rem}
.retour-zone.ok{border-color:var(--ok);background:var(--ok-fond)}
.retour-zone.ko{border-color:var(--alerte);background:var(--alerte-fond)}
.retour-zone h4{margin:0 0 6px}
.checks{list-style:none;padding:0;margin:10px 0 0}
.checks li{padding:4px 0;font-size:.92rem}
.checks li.c-ok::before{content:"✓ ";color:var(--ok);font-weight:700}
.checks li.c-ko::before{content:"○ ";color:var(--alerte);font-weight:700}
.checks .detail{display:block;margin-left:1.3em;color:var(--encre-douce);
  font-size:.86rem;white-space:pre-wrap}
.trace{background:#111;color:#f0d0d0;padding:10px 12px;border-radius:8px;
  font-family:var(--mono);font-size:.82rem;white-space:pre-wrap;margin:8px 0}
.compare-cols{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.compare-cols pre{background:var(--fond);border:1px solid var(--trait);padding:8px;
  border-radius:8px;font-size:.85rem;white-space:pre-wrap;margin:0}

.aide{margin-top:14px;border:1px dashed var(--trait);border-radius:9px;padding:4px 12px}
.aide summary{cursor:pointer;padding:8px 0;font-weight:600}
.aide-note{font-size:.85rem;color:var(--encre-douce)}
.aide-boutons{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}
.aide-boutons button{background:var(--fond);border:1px solid var(--trait);
  border-radius:8px;padding:7px 11px;font-size:.85rem;cursor:pointer;color:var(--encre)}
.aide-boutons button:disabled{opacity:.45;cursor:not-allowed}
#aide-contenu{font-size:.92rem}
#aide-contenu pre{background:var(--fond);border:1px solid var(--trait);padding:10px;
  border-radius:8px;white-space:pre-wrap;font-size:.85rem}

.verrou{background:var(--carte);border:1px solid var(--accent);border-radius:var(--rayon);
  padding:18px;margin-top:16px}
.verrou label{display:block;font-weight:600;margin:10px 0 4px;font-size:.92rem}
.verrou textarea{width:100%;min-height:60px;border:1px solid var(--trait);border-radius:8px;
  padding:8px;font-family:inherit;font-size:.95rem;background:var(--fond);color:var(--encre)}
.verrou fieldset{border:1px solid var(--trait);border-radius:8px;margin:12px 0;padding:10px 12px}
.verrou legend{font-weight:600;font-size:.92rem;padding:0 6px}
.verrou fieldset label{font-weight:400;display:flex;gap:8px;align-items:flex-start;margin:6px 0}
.v-item{font-size:.88rem;margin-top:4px}
.v-item.ok{color:var(--ok)} .v-item.ko{color:var(--alerte)}
#verrou-retour{margin-top:10px}

.pied-seance{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0 0}

/* carnet / savoirs */
.carte-item{background:var(--carte);border:1px solid var(--trait);border-radius:var(--rayon);
  padding:16px;margin-bottom:12px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.carte-item h3{margin:0;font-family:var(--mono);font-size:1rem}
.carte-item p{margin:2px 0 0;color:var(--encre-douce);font-size:.88rem}
.carte-item .primaire,.carte-item .secondaire{margin-left:auto}
.reglages{margin-top:26px;padding-top:18px;border-top:1px solid var(--trait)}
.reglages p{color:var(--encre-douce);font-size:.92rem;max-width:60ch}
.reglages-boutons{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.savoir{background:var(--carte);border:1px solid var(--trait);border-radius:var(--rayon);
  padding:14px 16px;margin-bottom:10px}
.savoir b{display:block}
.savoir a{font-size:.86rem}
.vide{color:var(--encre-douce);font-style:italic}

#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);
  background:var(--encre);color:var(--fond);padding:11px 18px;border-radius:10px;
  font-size:.92rem;opacity:0;pointer-events:none;transition:.25s;max-width:90vw;z-index:30}
#toast.montre{opacity:1;transform:translateX(-50%)}
body.sans-anim #toast{transition:none}

@media (max-width:620px){
  .barre{gap:10px}
  .barre nav{order:3;width:100%;margin:0}
  .compare-cols{grid-template-columns:1fr}
  .carte-item .primaire,.carte-item .secondaire{margin-left:0;width:100%}
}
