/* Cursus — système visuel. La palette vient du logo : bleu profond, cyan,
   orange. Les jetons sont définis pour les trois états de thème, y compris
   celui où le navigateur n'a rien stampé. */
:root{
  --ground:#F5F7F9;--surface:#FFFFFF;--surface-2:#EDF1F5;--surface-3:#E1E8EF;
  --ink:#101722;--ink-2:#323C4A;--ink-3:#566172;
  --rule:#CFD7E0;--rule-soft:#E3E8EE;
  --accent:#0C4890;--accent-2:#1878A8;--cyan:#30B4CC;--accent-soft:#E5EDF7;
  --orange:#CC6030;--orange-soft:#FBEDE4;
  --ok:#2C6750;--ok-soft:#E2EFE9;
  --warn:#8A5A12;--warn-soft:#F6EEDD;
  --crit:#8E3320;--crit-soft:#F7E7E2;
  --ax1:#0C4890;--ax2:#2C6750;--ax3:#CC6030;--ax4:#6B3A6E;--ax5:#41566E;
  --serif:"Newsreader",Georgia,"Times New Roman",serif;
  --sans:"IBM Plex Sans",-apple-system,"Helvetica Neue",Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="clair"]){
    --ground:#10151E;--surface:#171E29;--surface-2:#1D2530;--surface-3:#263040;
    --ink:#EDF0F5;--ink-2:#C3CBD6;--ink-3:#9CA7B5;
    --rule:#29323F;--rule-soft:#212A36;
    --accent:#6FAEE4;--accent-2:#5BB4CE;--cyan:#57C9DB;--accent-soft:#16233A;
    --orange:#E08A5A;--orange-soft:#2C1D14;
    --ok:#7FC1A3;--ok-soft:#17291F;
    --warn:#D8A860;--warn-soft:#2A2116;
    --crit:#E18A74;--crit-soft:#2C1A16;
    --ax1:#6FAEE4;--ax2:#7FC1A3;--ax3:#E08A5A;--ax4:#BC91C0;--ax5:#9FB3CA;
  }
}
:root[data-theme="sombre"]{
  --ground:#10151E;--surface:#171E29;--surface-2:#1D2530;--surface-3:#263040;
  --ink:#EDF0F5;--ink-2:#C3CBD6;--ink-3:#9CA7B5;
  --rule:#29323F;--rule-soft:#212A36;
  --accent:#6FAEE4;--accent-2:#5BB4CE;--cyan:#57C9DB;--accent-soft:#16233A;
  --orange:#E08A5A;--orange-soft:#2C1D14;
  --ok:#7FC1A3;--ok-soft:#17291F;--warn:#D8A860;--warn-soft:#2A2116;
  --crit:#E18A74;--crit-soft:#2C1A16;
  --ax1:#6FAEE4;--ax2:#7FC1A3;--ax3:#E08A5A;--ax4:#BC91C0;--ax5:#9FB3CA;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);
     font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* ---------------- coquille ---------------- */
.app{display:grid;grid-template-columns:226px minmax(0,1fr);min-height:100vh}
@media (max-width:880px){.app{grid-template-columns:1fr}}
aside{background:var(--surface-2);border-right:1px solid var(--rule);
      padding:1rem 0 1.5rem;display:flex;flex-direction:column;gap:1.3rem;
      position:sticky;top:0;height:100vh;box-sizing:border-box;overflow-y:auto}
@media (max-width:880px){aside{border-right:0;border-bottom:1px solid var(--rule);padding-bottom:.6rem}}
.marque{display:flex;gap:.6rem;align-items:center;padding:0 1.1rem;text-decoration:none;color:inherit}
.marque img{width:26px;height:26px;flex:0 0 26px}
.marque b{font-family:var(--serif);font-weight:500;font-size:1.3rem;letter-spacing:-.01em;line-height:1}
.marque span{display:block;font-family:var(--mono);font-size:.74rem;letter-spacing:.14em;
             text-transform:uppercase;color:var(--ink-3);margin-top:.2rem}
nav.princ{display:flex;flex-direction:column}
@media (max-width:880px){nav.princ{flex-direction:row;overflow-x:auto;padding:0 .6rem}}
nav.princ a{display:flex;gap:.5rem;align-items:baseline;padding:.5rem 1.1rem;color:var(--ink-2);
            text-decoration:none;font-size:.9rem;border-left:3px solid transparent;white-space:nowrap}
nav.princ a .n{font-family:var(--mono);font-size:.81rem;color:var(--ink-3)}
nav.princ a:hover{background:var(--surface-3);color:var(--ink)}
nav.princ a[aria-current="page"]{background:var(--surface);color:var(--ink);font-weight:500;
            border-left-color:var(--accent)}
@media (max-width:880px){
  nav.princ a{border-left:0;border-bottom:3px solid transparent}
  nav.princ a[aria-current="page"]{border-left:0;border-bottom-color:var(--accent)}
}
.groupe{padding:0 1.1rem}
.groupe h3{font-family:var(--mono);font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;
           color:var(--ink-3);margin:0 0 .5rem;font-weight:500}
.groupe ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem;
           font-size:.87rem;color:var(--ink-2)}
.groupe li{display:flex;gap:.5rem;align-items:center}
.groupe .ct{margin-left:auto;font-family:var(--mono);font-size:.81rem;color:var(--ink-3)}
.dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px;background:var(--ax5)}
.ax1{background:var(--ax1)}.ax2{background:var(--ax2)}.ax3{background:var(--ax3)}
.ax4{background:var(--ax4)}.ax5{background:var(--ax5)}
.pied{margin-top:auto;padding:0 1.1rem;font-size:.87rem;color:var(--ink-3)}
.pied form{margin:.4rem 0 0}
@media (max-width:880px){
  aside{position:static;height:auto;overflow:visible}
  .groupe{display:none}
  .pied{margin-top:0;display:flex;gap:.8rem;align-items:center}
  .pied form{margin:0}
}

main{min-width:0;display:flex;flex-direction:column}
.topbar{border-bottom:1px solid var(--rule);padding:1rem 1.4rem;display:flex;flex-wrap:wrap;
        gap:.5rem 1rem;align-items:baseline;background:var(--surface)}
.topbar h1{font-size:1.1rem;font-weight:600;margin:0;letter-spacing:-.01em}
.topbar .sub{font-size:.87rem;color:var(--ink-3)}
.topbar .droite{margin-left:auto;display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}
.corps{padding:1.4rem;display:flex;flex-direction:column;gap:1.3rem;max-width:1080px}

/* ---------------- éléments ---------------- */
.puce{font-family:var(--mono);font-size:.81rem;padding:.16rem .45rem;border:1px solid var(--rule);
      color:var(--ink-2);background:var(--surface);white-space:nowrap}
.puce.a{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.puce.o{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}
.puce.w{border-color:var(--warn);color:var(--warn);background:var(--warn-soft)}
.puce.c{border-color:var(--crit);color:var(--crit);background:var(--crit-soft)}
.puce.q{border-style:dashed;color:var(--ink-3)}
.bouton{font:inherit;font-size:.91rem;padding:.38rem .8rem;border:1px solid var(--rule);
        background:var(--surface);color:var(--ink-2);cursor:pointer;border-radius:4px}
/* Un bouton ne se souligne pas, fût-il un lien : trois endroits le
   rattrapaient au cas par cas, c'est la règle qui manquait. */
a.bouton{display:inline-block;text-decoration:none}
.bouton:hover{border-color:var(--accent);color:var(--accent)}
.bouton.p{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:500}
.bouton.p:hover{color:#fff;filter:brightness(1.12)}
.bouton.lien{border:0;background:none;padding:.2rem 0;color:var(--accent);text-decoration:underline}
.carte{border:1px solid var(--rule);background:var(--surface);border-radius:6px}
.carte>h2{margin:0;padding:.7rem .95rem;border-bottom:1px solid var(--rule);background:var(--surface-2);
          font-family:var(--sans);font-size:.95rem;letter-spacing:0;text-transform:none;
          color:var(--ink);font-weight:600;display:flex;gap:.6rem;align-items:center}
.carte>h2 .d{font-family:var(--sans);font-size:.82rem;font-weight:400;color:var(--ink-3);letter-spacing:0;text-transform:none}
.carte>h2 .d{margin-left:auto}
.carte .pad{padding:.9rem}
.vide{padding:1.6rem .9rem;text-align:center;color:var(--ink-3);font-size:.9rem}
.alerte{border-left:3px solid var(--crit);background:var(--crit-soft);padding:.7rem .9rem;
        font-size:.91rem;border-radius:0 4px 4px 0}

/* ---------------- composeur du fil ---------------- */
.composeur{border:1px solid var(--rule);background:var(--surface);border-radius:6px;overflow:hidden}
.composeur textarea{width:100%;border:0;padding:.9rem;font:inherit;font-size:.95rem;resize:vertical;
                    min-height:78px;background:var(--surface);color:var(--ink);display:block}
.composeur textarea:focus{outline:0;background:var(--surface)}
.composeur .motif{border-top:1px solid var(--rule-soft);padding:.7rem .9rem;background:var(--accent-soft)}
.composeur .motif label{display:block;font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;
                        text-transform:uppercase;color:var(--ink-3);margin-bottom:.3rem}
.composeur .motif input{width:100%;font:inherit;font-size:.9rem;padding:.4rem .5rem;
                        border:1px solid var(--rule);border-radius:4px;background:var(--surface);color:var(--ink)}
.composeur .barre{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.6rem .9rem;
                  border-top:1px solid var(--rule-soft);background:var(--surface-2)}
.types{display:flex;flex-wrap:wrap;gap:.3rem}
.types label{font-family:var(--mono);font-size:.81rem;padding:.22rem .5rem;border:1px solid var(--rule);
             border-radius:999px;color:var(--ink-3);cursor:pointer;background:var(--surface)}
.types input{position:absolute;opacity:0;width:0;height:0}
.types input:checked+span{color:var(--accent)}
.types label:has(input:checked){border-color:var(--accent);background:var(--accent-soft);
             color:var(--accent);font-weight:500}
.types label:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:1px}
.composeur .envoi{margin-left:auto;display:flex;gap:.6rem;align-items:center}
.composeur .aide{font-family:var(--mono);font-size:.81rem;color:var(--ink-3)}
kbd{font-family:var(--mono);border:1px solid var(--rule);border-bottom-width:2px;border-radius:3px;
    padding:0 .28rem;background:var(--surface);color:var(--ink-2);font-size:.81rem}

/* ---------------- le fil ---------------- */
.fil{display:flex;flex-direction:column}
.fil .e{display:grid;grid-template-columns:6.6rem minmax(0,1fr);gap:1rem;padding:.85rem 0;
        border-top:1px solid var(--rule-soft)}
.fil .e:first-child{border-top:0}
@media (max-width:620px){.fil .e{grid-template-columns:1fr;gap:.3rem}}
.fil .quand{font-family:var(--mono);font-size:.81rem;color:var(--ink-3);padding-top:.1rem;line-height:1.4}
.fil .quand i{display:block;font-style:normal;opacity:.8}
.fil .t{display:flex;gap:.5rem;align-items:baseline;margin-bottom:.2rem;flex-wrap:wrap}
.fil .t .qui{font-size:.87rem;font-weight:500}
.fil .corps{font-size:.95rem;line-height:1.55;white-space:pre-wrap;overflow-wrap:break-word}
.fil .pourquoi{margin-top:.4rem;font-size:.91rem;color:var(--ink-2);border-left:3px solid var(--accent);
               background:var(--accent-soft);padding:.45rem .7rem;border-radius:0 4px 4px 0}
.fil .pourquoi b{font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;
                 color:var(--ink-3);display:block;margin-bottom:.15rem;font-weight:500}
.fil .e.decision .corps{font-family:var(--serif);font-size:1.08rem;line-height:1.4}
.fil .outils{margin-top:.35rem;display:flex;gap:.6rem;align-items:center}
.fil details summary{font-size:.87rem;color:var(--accent);cursor:pointer}
.fil .editeur{margin-top:.5rem;display:flex;flex-direction:column;gap:.4rem}
.fil .editeur textarea{font:inherit;font-size:.92rem;padding:.5rem;border:1px solid var(--rule);
                       border-radius:4px;background:var(--surface);color:var(--ink);min-height:70px}

/* ---------------- liste de projets ---------------- */
.groupeaxe{display:flex;gap:.55rem;align-items:center;padding:.5rem .9rem;background:var(--surface-2);
           border:1px solid var(--rule);border-bottom:0;font-weight:600;font-size:.91rem}
.groupeaxe .ct{margin-left:auto;font-family:var(--mono);font-size:.81rem;color:var(--ink-3);font-weight:400}
.liste{border:1px solid var(--rule);background:var(--surface)}
.liste+.groupeaxe{margin-top:.9rem}
.liste .it{display:grid;grid-template-columns:minmax(0,2fr) 8rem minmax(0,1fr);gap:1rem;
           padding:.75rem .9rem;border-bottom:1px solid var(--rule-soft);align-items:start}
.liste .it:last-child{border-bottom:0}
.liste .it:hover{background:var(--surface-2)}
@media (max-width:800px){.liste .it{grid-template-columns:1fr;gap:.35rem}}
.liste .titre{font-weight:500;font-size:.94rem;line-height:1.35}
.liste .titre a{color:inherit;text-decoration:none}
.liste .titre a:hover{color:var(--accent)}
.liste .meta{font-size:.81rem;color:var(--ink-3);margin-top:.22rem;display:flex;flex-wrap:wrap;gap:.5rem}
.liste .terme{font-family:var(--mono);font-size:.81rem;color:var(--ink-2)}
.liste .terme i{display:block;font-style:normal;font-size:.81rem;color:var(--ink-3)}

/* ---------------- tâches ---------------- */
.composeur .pourqui{border-top:1px solid var(--rule-soft);padding:.7rem .9rem;background:var(--orange-soft);
                    display:flex;flex-wrap:wrap;gap:.8rem}
.composeur .pourqui .ch{flex:1 1 150px;min-width:0}
.composeur .pourqui label{display:block;font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;
                          text-transform:uppercase;color:var(--ink-3);margin-bottom:.3rem}
.composeur .pourqui .opt{font-size:.9em;letter-spacing:0;text-transform:none;opacity:.75}
.composeur .pourqui select,.composeur .pourqui input{width:100%;font:inherit;font-size:.9rem;
        padding:.4rem .45rem;border:1px solid var(--rule);border-radius:4px;
        background:var(--surface);color:var(--ink)}
.taches{list-style:none;margin:0;padding:.2rem 0}
.taches li{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:.8rem;align-items:center;
           padding:.55rem .9rem;border-bottom:1px solid var(--rule-soft)}
.taches li:last-child{border-bottom:0}
.taches li:hover{background:var(--surface-2)}
@media (max-width:680px){
  .taches li{grid-template-columns:auto minmax(0,1fr);row-gap:.35rem}
  .taches li .quand,.taches li .reporter{grid-column:2}
}
.coche{width:18px;height:18px;border:1.5px solid var(--rule);border-radius:50%;background:var(--surface);
       cursor:pointer;padding:0;display:block}
.coche:hover{border-color:var(--ok);background:var(--ok-soft);box-shadow:inset 0 0 0 3px var(--surface)}
.taches .quoi{min-width:0}
.taches .i{display:block;font-size:.92rem;line-height:1.35}
.taches .s{display:block;font-size:.81rem;color:var(--ink-3);margin-top:.1rem}
.taches form.fait,.taches form.reporter{margin:0;display:flex;gap:.3rem}
.bouton.mini{font-size:.81rem;padding:.3rem .55rem;border-radius:3px}
.rien{display:flex;gap:.6rem;align-items:center;padding:1rem .9rem;color:var(--ink-3);font-size:.9rem}
.cols2{display:grid;gap:1.3rem;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));align-items:start}

/* ---------------- livrables ---------------- */
.livrables{list-style:none;margin:0;padding:0}
.livrables>li{padding:.8rem .9rem;border-bottom:1px solid var(--rule-soft)}
.livrables>li:last-child{border-bottom:0}
.livrables .entete{display:flex;flex-wrap:wrap;gap:.5rem;align-items:baseline}
.livrables .entete .t{font-weight:500;font-size:.95rem}
.livrables .entete .qui{font-size:.87rem;color:var(--ink-3)}
.livrables .entete .ech{margin-left:auto;font-family:var(--mono);font-size:.81rem;color:var(--ink-3)}
.versions{list-style:none;margin:.55rem 0 0;padding:0;border-left:2px solid var(--rule);
          display:flex;flex-direction:column}
.versions>li{display:grid;grid-template-columns:2.6rem minmax(0,1fr);gap:.6rem;
             padding:.4rem 0 .4rem .7rem;align-items:baseline}
.versions .n{font-family:var(--mono);font-size:.87rem;color:var(--ink-2);font-weight:500}
.versions .s{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;font-size:.87rem}
.versions .s .o{color:var(--ink-3);font-size:.87rem}
.versions .actions{grid-column:2;margin:.25rem 0 0;display:flex;flex-wrap:wrap;gap:.3rem}
.versions .note{grid-column:2;margin:.3rem 0 0;font-size:.87rem;color:var(--ink-2);
                border-left:3px solid var(--rule);padding-left:.6rem}
details.depot{margin-top:.6rem}
details.depot summary{font-size:.87rem;color:var(--accent);cursor:pointer}
details.depot form{margin-top:.6rem;display:flex;flex-direction:column;gap:.5rem;
                   background:var(--surface-2);border:1px solid var(--rule);
                   border-radius:5px;padding:.8rem}
details.depot .ligne{display:flex;flex-wrap:wrap;gap:.5rem}
details.depot .ligne>*{flex:1 1 170px;min-width:0}
details.depot input[type=text],details.depot input[type=date],details.depot select,
details.depot input[type=file]{font:inherit;font-size:.91rem;padding:.4rem .45rem;
    border:1px solid var(--rule);border-radius:4px;background:var(--surface);color:var(--ink)}
details.depot .attest{display:flex;gap:.5rem;align-items:flex-start;font-size:.87rem;color:var(--ink-2)}
details.depot button{align-self:flex-start}

/* ---------------- remarques ---------------- */
.remarques{list-style:none;margin:.5rem 0 0;padding:0;grid-column:2;
           display:flex;flex-direction:column;gap:.45rem}
.remarques>li{display:grid;grid-template-columns:2.6rem minmax(0,1fr);gap:.5rem;align-items:start}
.remarques .rep{font-family:var(--mono);font-size:.81rem;color:var(--ink-3);padding-top:.5rem}
.remarques .fond{border:1px solid var(--rule);border-radius:5px;background:var(--surface);
                 padding:.55rem .7rem}
.remarques li.a_traiter .fond{border-left:3px solid var(--crit)}
.remarques li.traitee .fond{border-left:3px solid var(--ok)}
.remarques li.ecartee .fond{border-left:3px solid var(--warn)}
.remarques .haut{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;margin-bottom:.3rem}
.remarques .haut .qui{font-size:.87rem;color:var(--ink-3);margin-left:auto}
.remarques .anc{margin:0 0 .25rem;font-family:var(--mono);font-size:.81rem;color:var(--ink-3)}
.remarques .quoi{margin:0;font-size:.91rem;line-height:1.45}
.remarques .reponse{margin-top:.45rem;font-size:.91rem;color:var(--ink-2);
                    border-left:3px solid var(--accent);background:var(--accent-soft);
                    padding:.4rem .6rem;border-radius:0 4px 4px 0}
.remarques .reponse b{display:block;font-family:var(--mono);font-size:.81rem;font-weight:500;
                      letter-spacing:.06em;color:var(--ink-3);margin-bottom:.15rem}
.remarques .reponse .ec{display:block;margin-top:.3rem;color:var(--warn);font-size:.87rem}
.remarques form.repondre{margin:.5rem 0 0;display:flex;flex-direction:column;gap:.4rem}
.remarques form.repondre textarea{font:inherit;font-size:.91rem;padding:.4rem .5rem;
    border:1px solid var(--rule);border-radius:4px;background:var(--surface);color:var(--ink);resize:vertical}
.remarques form.repondre .b{display:flex;gap:.35rem;flex-wrap:wrap}
.bouton.p.mini{font-size:.81rem;padding:.3rem .6rem}
details.depot textarea{font:inherit;font-size:.91rem;padding:.4rem .45rem;border:1px solid var(--rule);
    border-radius:4px;background:var(--surface);color:var(--ink);resize:vertical}

/* ---------------- écran de relecture ---------------- */
/* Deux volets qui tiennent la hauteur de la fenêtre : une barre de
   défilement par volet, aucune pour la page. Trois barres concurrentes
   rendaient l'écran impraticable. */
.corps.plein{padding:0;gap:0;max-width:none;flex:1 1 auto;min-height:0}
.relire{position:relative;display:grid;gap:1px;background:var(--rule);
        grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);flex:1 1 auto;min-height:0;
        height:calc(100vh - 62px)}
.relire.large{grid-template-columns:minmax(0,3fr) minmax(0,1fr)}
@media (max-width:1040px){
  .relire,.relire.large{grid-template-columns:1fr;height:auto}
  .voletdoc,.voletrem{max-height:70vh}
}
.voletdoc,.voletrem{background:var(--surface);display:flex;flex-direction:column;min-height:0;min-width:0}
.voletdoc>header,.voletrem>header{flex:0 0 auto;display:flex;gap:.6rem;align-items:center;
    padding:.5rem .9rem;border-bottom:1px solid var(--rule);background:var(--surface-2);
    font-size:.87rem;min-height:2.4rem}
.voletdoc>header .aide{font-family:var(--mono);font-size:.81rem;color:var(--ink-3)}
.voletdoc>header .d,.voletrem>header .d{margin-left:auto}
.voletdoc>header a.d{font-family:var(--mono);font-size:.81rem}
.voletrem>header form.d{margin:0}
.doccorps{flex:1 1 auto;overflow-y:auto;padding:1.1rem 1.4rem 3rem;font-size:.92rem;
          line-height:1.75;color:var(--ink-2)}
.doccorps h2,.doccorps h3,.doccorps h4,.doccorps h5{font-family:var(--sans);color:var(--ink);
    margin:1.4rem 0 .35rem;letter-spacing:0;text-transform:none;padding:0;border:0;background:none;
    position:static}
.doccorps h2{font-size:1.02rem;font-weight:600}
.doccorps h2::before{display:none}
.doccorps h3{font-size:.94rem;font-weight:600}
.doccorps h4,.doccorps h5{font-size:.91rem;font-weight:600;color:var(--ink-2)}
.doccorps>*:first-child{margin-top:0}
.doccorps p{margin:.45rem 0;max-width:none}
.doccorps img{max-width:100%;height:auto;display:block;margin:.6rem 0;
              border:1px solid var(--rule);border-radius:4px}
.doccorps .tw{margin:.7rem 0}
.doccorps table{min-width:0;font-size:.87rem}
.doccorps th,.doccorps td{padding:.35rem .5rem;border:1px solid var(--rule-soft);vertical-align:top}
.doccorps th{background:var(--surface-2);font-family:var(--sans);font-size:.87rem;
             text-transform:none;letter-spacing:0;color:var(--ink)}
.doccorps td p,.doccorps th p{margin:0}
/* les ancres : la couleur dit où en est la remarque */
.doccorps .anc{background:var(--warn-soft);border-bottom:1px dashed var(--warn);cursor:pointer;
               padding:0 1px;border-radius:2px}
.doccorps sup.repere,.doccorps .anc sup,.doccorps .pt sup{font-family:var(--mono);font-size:.66rem;
    color:var(--warn);margin-left:1px;font-weight:500}
.doccorps .pt{cursor:pointer;border-bottom:2px solid var(--warn);padding:0 2px}
.doccorps .anc.a_traiter{background:var(--crit-soft);border-bottom-color:var(--crit)}
.doccorps .anc.a_traiter sup{color:var(--crit)}
.doccorps .anc.repondue,.doccorps .pt.repondue{background:var(--accent-soft);border-bottom-color:var(--accent-2)}
.doccorps .anc.repondue sup{color:var(--accent-2)}
.doccorps .anc.ecartee{background:var(--warn-soft);border-bottom-color:var(--warn)}
.doccorps .anc.resolue,.doccorps .anc.acceptee,.doccorps .pt.resolue{background:var(--ok-soft);
    border-bottom:1px solid var(--ok)}
.doccorps .anc.resolue sup,.doccorps .anc.acceptee sup{color:var(--ok)}
.doccorps .anc.reportee{background:none;border-bottom:1px dotted var(--ink-3)}
.doccorps .anc.reportee sup{color:var(--ink-3)}
/* ancre héritée de la version précédente : un liseré, pas un aplat */
.doccorps .anc.herite{background:none;border-bottom-width:2px;border-bottom-style:solid}
.doccorps .anc.sel{background:var(--accent-soft);border-bottom:2px solid var(--accent)}
.doccorps .anc.sel sup{color:var(--accent)}
.doccorps .encours{background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent-soft);
                   border-bottom:2px solid var(--accent)}
/* comparaison : masquée par défaut, le texte se lit propre */
.doccorps del,.doccorps p.supprime{display:none}
.doccorps ins{text-decoration:none}
.relire.diff .doccorps del{display:inline;color:var(--crit);text-decoration:line-through;
    background:var(--crit-soft)}
.relire.diff .doccorps p.supprime{display:block;opacity:.85}
.relire.diff .doccorps ins{background:var(--ok-soft);color:var(--ok);
    box-shadow:inset 0 -1px 0 var(--ok)}
.relire.annoter .doccorps{cursor:text}
.relire.annoter .voletdoc{box-shadow:inset 0 0 0 2px var(--accent)}
.voletdoc .indice{flex:0 0 auto;margin:0;padding:.35rem .9rem;font-size:.87rem;
    background:var(--accent-soft);color:var(--accent);border-bottom:1px solid var(--rule)}
.voletdoc .indice kbd{font-family:var(--mono);font-size:.81rem;border:1px solid currentColor;
    border-radius:3px;padding:0 .25rem}
.vide{color:var(--ink-3);font-size:.91rem;padding:1rem .9rem;margin:0}

/* la frise des versions, dans la barre du haut */
.mt{display:flex;align-items:center;gap:0;font-family:var(--mono);font-size:.81rem}
.mt i{display:block;width:14px;height:1px;background:var(--rule)}
.mt a,.mt span{display:inline-flex;align-items:center;justify-content:center;min-width:1.9rem;
    height:1.55rem;padding:0 .35rem;border:1px solid var(--rule);border-radius:999px;
    color:var(--ink-2);text-decoration:none;background:var(--surface)}
.mt a:hover{border-color:var(--accent);color:var(--accent)}
.mt a[aria-current="page"]{background:var(--accent);border-color:var(--accent);color:var(--surface);font-weight:500}
.mt a.validee{border-color:var(--ok);color:var(--ok)}
.mt a.rt{min-width:1.4rem;border-style:dashed;color:var(--ink-3)}
.mt span{border-style:dashed;color:var(--ink-3)}
/* page du livrable : la frise des versions, sur sa propre ligne */
.frise-v{flex-basis:100%;list-style:none;margin:.35rem 0 -.2rem;padding:0;display:flex;
    overflow-x:auto;scrollbar-width:thin}
.frise-v li{position:relative;flex:0 0 auto;min-width:9.5rem;padding:0 1.4rem .3rem 0;
    display:flex;flex-direction:column;gap:.15rem;--c:var(--ink-3);--fond:var(--surface)}
/* le trait qui relie une version à la suivante */
.frise-v li:not(:last-child)::after{content:"";position:absolute;left:2.3rem;right:.2rem;top:1.05rem;
    height:2px;background:var(--rule)}
.frise-v li.a_corriger{--c:var(--warn)}
.frise-v li.en_relecture,.frise-v li.relue{--c:var(--accent-2)}
.frise-v li.validee{--c:var(--ok)}
.frise-v li.deposee{--c:var(--ink-2)}
.frise-v li.passee{--c:var(--ink-3)}
.frise-v li:not(:last-child).passee::after,.frise-v li.a_corriger:not(.passee)::after{background:var(--c)}
.frise-v .noeud{position:relative;z-index:1;display:inline-flex;align-items:center;gap:.5rem;
    align-self:flex-start;padding:.2rem .7rem .2rem .25rem;border-radius:999px;
    background:var(--surface);text-decoration:none;color:var(--ink-2)}
.frise-v .noeud b{display:inline-flex;align-items:center;justify-content:center;
    min-width:2.2rem;height:1.75rem;padding:0 .4rem;border-radius:999px;
    font-family:var(--mono);font-size:.87rem;font-weight:600;
    border:2px solid var(--c);color:var(--c);background:var(--fond)}
.frise-v .etat{font-size:.84rem;font-weight:500;color:var(--c)}
.frise-v a.noeud:hover b{box-shadow:0 0 0 3px var(--accent-soft)}
.frise-v a.noeud:hover .etat{text-decoration:underline}
.frise-v li.ici .noeud{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}
.frise-v li.ici .noeud b{background:var(--c);color:var(--surface)}
.frise-v .meta{padding-left:.35rem;font-size:.8rem;color:var(--ink-3);white-space:nowrap}
.frise-v .meta em{font-style:normal;color:var(--crit);font-weight:500}
.frise-v .rt{padding-left:.35rem;font-size:.8rem;color:var(--accent);text-decoration:none;align-self:flex-start}
.frise-v .rt:hover{text-decoration:underline}
.frise-v li.attendue .noeud b{border-style:dashed;border-color:var(--rule);color:var(--ink-3)}
.frise-v li.attendue .etat{color:var(--ink-3);font-weight:400}
.seg{display:inline-flex;border:1px solid var(--rule);border-radius:5px;overflow:hidden}
.seg button{font:inherit;font-size:.87rem;padding:.3rem .65rem;border:0;background:var(--surface);
    color:var(--ink-3);cursor:pointer}
.seg button+button{border-left:1px solid var(--rule)}
.seg button[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent);font-weight:500}
#bDiff[aria-pressed="true"]{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}

/* colonne des remarques */
.remliste{flex:1 1 auto;overflow-y:auto;min-height:0}
.remliste .grp{position:sticky;top:0;z-index:2;display:flex;align-items:baseline;gap:.5rem;
    padding:.45rem .9rem;background:var(--surface-2);border-bottom:1px solid var(--rule);
    font-size:.81rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2)}
.remliste .grp .d{margin-left:auto;font-family:var(--mono);font-weight:400;letter-spacing:0;
    text-transform:none;color:var(--ink-3)}
.rc{padding:.6rem .9rem .65rem;border-bottom:1px solid var(--rule-soft);cursor:pointer;
    box-shadow:inset 3px 0 0 var(--rule)}
.rc:hover{background:var(--surface-2)}
.rc:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
/* La barre de gauche disait le statut, que le badge répétait déjà, et la
   gravité n'avait aucun repère de position. On a échangé : la barre dit
   désormais « combien ça compte », le badge dit « où ça en est ». */
.rc.g-c{box-shadow:inset 3px 0 0 var(--crit)}
.rc.g-w{box-shadow:inset 3px 0 0 var(--warn)}
.rc.g-q{box-shadow:inset 3px 0 0 var(--rule)}
.rc.resolue .quoi,.rc.acceptee .quoi,.rc.reportee .quoi{color:var(--ink-3)}
.rc .tete{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;margin-bottom:.25rem}
.rc .rep{font-family:var(--mono);font-size:.87rem;color:var(--ink);font-weight:500;margin-right:.1rem}
.rc .cit{margin:0 0 .2rem;font-family:var(--mono);font-size:.81rem;color:var(--ink-3);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rc .quoi{margin:0;font-size:.91rem;line-height:1.45}
.rc .reponse{margin-top:.4rem;font-size:.87rem;color:var(--ink-2);
    border-left:3px solid var(--accent-2);background:var(--accent-soft);padding:.35rem .55rem;
    border-radius:0 4px 4px 0}
.rc .reponse b{display:block;font-family:var(--mono);font-size:.78rem;font-weight:500;
    letter-spacing:.04em;color:var(--ink-3);margin-bottom:.1rem}
.rc form.act{margin:.45rem 0 0;display:flex;flex-wrap:wrap;gap:.3rem;align-items:center}
.rc form.act .fait{font-size:.87rem;color:var(--ok)}
.rc details.act{margin-top:.4rem}
.rc details.act summary{font-size:.87rem;color:var(--accent);cursor:pointer}
.rc details.act form{margin:.4rem 0 0;display:flex;flex-direction:column;gap:.35rem}
.rc .attente{margin:.35rem 0 0;font-size:.81rem;color:var(--ink-3)}
.bouton.ok{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}
.lien{font:inherit;border:0;background:none;color:var(--ink-3);text-decoration:underline;cursor:pointer;padding:0}
.rc textarea,.bulle textarea{font:inherit;font-size:.91rem;
    padding:.4rem .5rem;border:1px solid var(--rule);border-radius:4px;background:var(--surface);
    color:var(--ink);resize:vertical;width:100%}
.rc .b,.bulle .b,.cloture .b{display:flex;gap:.35rem;flex-wrap:wrap;align-items:center}
.cloture{flex:0 0 auto;border-top:1px solid var(--rule);background:var(--surface-2);
    padding:.65rem .9rem;display:flex;flex-direction:column;gap:.45rem}
.cloture form{margin:0}
.cloture .msg{margin:0;font-size:.87rem;color:var(--crit)}
.cloture .msg.ok{color:var(--ok)}
.cloture .regle{margin:0;font-size:.87rem;color:var(--ink-2);line-height:1.45}
.cloture .prog{height:4px;background:var(--rule-soft);border-radius:2px;overflow:hidden}
.cloture .prog i{display:block;height:100%;background:var(--ok)}
.bouton[disabled]{opacity:.5;cursor:not-allowed}
.relire .plus{position:absolute;z-index:15;left:1rem;bottom:1rem;box-shadow:0 8px 20px -10px rgba(10,20,35,.5)}
.relire:not(.annoter) .plus{display:none}

/* la bulle : la remarque se crée à l'endroit du surlignage */
.bulle{position:absolute;z-index:20;width:min(330px,90vw);background:var(--surface);
       border:1px solid var(--accent);border-radius:6px;
       box-shadow:0 10px 28px -12px rgba(10,20,35,.4);padding:.6rem .7rem;
       display:flex;flex-direction:column;gap:.4rem}
.bulle .cible{margin:0;font-family:var(--mono);font-size:.81rem;color:var(--ink-3);
              overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bulle .sev{display:flex;gap:.25rem}
.bulle .sev label{font-family:var(--mono);font-size:.81rem;padding:.15rem .4rem;
    border:1px solid var(--rule);border-radius:999px;color:var(--ink-3);cursor:pointer;
    background:var(--surface)}
.bulle .sev input{position:absolute;opacity:0;width:0;height:0}
.bulle .sev label:has(input:checked){border-color:var(--accent);background:var(--accent-soft);
    color:var(--accent);font-weight:500}
.topbar h1 .retour{text-decoration:none;color:var(--ink-3);margin-right:.3rem}
.topbar h1 .retour:hover{color:var(--accent)}
.topbar h1 .ver{font-family:var(--mono);font-size:.9rem;color:var(--ink-3);font-weight:400}
.seg a.segl{font:inherit;font-size:.87rem;padding:.3rem .6rem;color:var(--ink-3);
            text-decoration:none;border-right:1px solid var(--rule);background:var(--surface)}
.seg a.segl:last-child{border-right:0}
.seg a.segl[aria-current="page"]{background:var(--accent-soft);color:var(--accent);font-weight:500}
.versions .ouvrir{grid-column:2;margin:.35rem 0 .1rem}
.versions .ouvrir .bouton{display:inline-block;text-decoration:none;font-size:.87rem}
/* suivi d'un livrable sur la page du projet */
.livrables .suivi{display:flex;flex-wrap:wrap;gap:.5rem .8rem;align-items:center;margin:.6rem 0 .2rem}
.livrables .suivi .mt{flex:0 0 100%}
.livrables .suivi .etat{margin:0;font-size:.91rem;color:var(--ink-2)}
.livrables .suivi .etat.ok{color:var(--ok)}
.livrables .suivi .bouton{text-decoration:none}
.depot .regle{margin:0;font-size:.87rem;color:var(--ink-2);border-left:3px solid var(--cyan);
    padding:.3rem .55rem;background:var(--accent-soft)}

/* ---------------- classeur (.xlsx) ---------------- */
.doccorps.genre-xlsx{padding:0;font-size:.87rem;line-height:1.3}
.classeur .onglets{position:sticky;top:0;z-index:4;display:flex;gap:2px;flex-wrap:wrap;
    padding:.4rem .6rem 0;background:var(--surface-2);border-bottom:1px solid var(--rule)}
.classeur .onglets a{font-family:var(--mono);font-size:.77rem;padding:.3rem .7rem;text-decoration:none;
    color:var(--ink-3);border:1px solid transparent;border-bottom:0;border-radius:4px 4px 0 0}
.classeur .onglets a[aria-current="true"]{background:var(--surface);color:var(--ink);border-color:var(--rule);
    margin-bottom:-1px}
.classeur .onglets .n{color:var(--warn);font-weight:500}
.classeur .bandeau{margin:0;padding:.35rem .8rem;font-family:var(--mono);font-size:.77rem;color:var(--ink-3);
    border-bottom:1px solid var(--rule-soft)}
.classeur .bandeau .diffseul{display:none}
.relire.diff .classeur .bandeau .diffseul{display:inline;color:var(--accent)}
.classeur .tw{margin:0;overflow:auto}
.doccorps .grille{border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:0;width:auto}
.doccorps .grille th,.doccorps .grille td{border:1px solid var(--rule-soft);padding:.18rem .45rem;
    white-space:nowrap;max-width:22rem;overflow:hidden;text-overflow:ellipsis;vertical-align:top;
    position:relative;font-size:.81rem}
.doccorps .grille thead th{position:sticky;top:0;z-index:2;background:var(--surface-2);color:var(--ink-3);
    font-family:var(--mono);font-weight:400;text-align:center;font-size:.77rem}
.doccorps .grille tbody th{position:sticky;left:0;z-index:1;background:var(--surface-2);color:var(--ink-3);
    font-family:var(--mono);font-weight:400;text-align:right;font-size:.77rem}
.doccorps .grille thead th.coin{left:0;z-index:3}
.doccorps .grille td.anc{border-bottom:1px solid var(--rule-soft);border-radius:0;padding:.18rem .45rem;cursor:pointer}
.doccorps .grille td.anc.a_traiter{--liseré:var(--crit)}
.doccorps .grille td.anc.repondue{--liseré:var(--accent-2)}
.doccorps .grille td.anc.resolue,.doccorps .grille td.anc.acceptee{--liseré:var(--ok)}
.doccorps .grille td.anc.reportee{--liseré:var(--ink-3)}
.doccorps .grille td.anc.sel{--liseré:var(--accent);background:var(--accent-soft)}
.doccorps .grille td.anc{box-shadow:
    inset 0 calc(var(--t,0) * 2px) 0 var(--liseré,var(--warn)),
    inset 0 calc(var(--b,0) * -2px) 0 var(--liseré,var(--warn)),
    inset calc(var(--l,0) * 2px) 0 0 var(--liseré,var(--warn)),
    inset calc(var(--r,0) * -2px) 0 0 var(--liseré,var(--warn))}
.doccorps .grille td.bt{--t:1}.doccorps .grille td.bb{--b:1}
.doccorps .grille td.bl{--l:1}.doccorps .grille td.br{--r:1}
.doccorps .grille td sup.repere{position:absolute;top:1px;right:2px;font-size:.66rem;margin:0}
.doccorps .grille td.encours{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}
.relire.annoter .doccorps .grille td{cursor:cell;user-select:none}
.relire.diff .doccorps .grille td.mod{background:var(--warn-soft)}
.relire.diff .doccorps .grille td.mod del{display:inline;margin-right:.35rem;font-size:.77rem}
.relire.diff .doccorps .grille .ajout,.relire.diff .doccorps .grille tr.ajout td{background:var(--ok-soft)}
/* le classeur défile dans sa propre grille : en-têtes de lignes et de colonnes restent visibles */
.doccorps.genre-xlsx{overflow:hidden;display:flex;flex-direction:column}
.classeur{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}
.classeur .feuille{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}
.classeur .feuille[hidden]{display:none}
.classeur .tw{flex:1 1 auto;min-height:0}

/* ---------------- présentation (.pptx) ---------------- */
.voletdoc .indice.avert{background:var(--warn-soft);color:var(--warn)}
.doccorps.genre-pptx{background:var(--surface-2)}
.diaporama{display:grid;grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));gap:.9rem;align-items:start}
.diaporama>.bandeau{grid-column:1/-1;margin:0;font-family:var(--mono);font-size:.77rem;color:var(--ink-3)}
.diaporama .diffseul{display:none}
.relire.diff .diaporama .diffseul{display:inline-flex}
.relire.diff .diaporama>.bandeau.diffseul{display:block}
.diapo{background:var(--surface);border:1px solid var(--rule);border-radius:6px;overflow:hidden;
    font-size:.87rem;line-height:1.45;cursor:pointer}
.diapo>header{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;padding:.4rem .6rem;
    border-bottom:1px solid var(--rule-soft)}
.diapo .rang{font-family:var(--mono);font-size:.77rem;color:var(--ink-3);min-width:1.2rem}
.diapo>header b{font-weight:600;color:var(--ink);font-size:.87rem;flex:1 1 8rem}
.diapo>header i{color:var(--ink-3);font-weight:400}
.diapo sup.repere{font-family:var(--mono);font-size:.72rem;padding:0 .25rem;border-radius:3px;
    background:var(--warn-soft);color:var(--warn)}
.diapo .vignette img{display:block;width:100%;height:auto;margin:0;border:0;border-radius:0;
    border-bottom:1px solid var(--rule-soft)}
.diapo .texte{padding:.35rem .6rem .5rem;color:var(--ink-2)}
.diapo .texte p{margin:.15rem 0}
.diapo .notes{padding:0 .6rem .45rem;font-size:.81rem;color:var(--ink-3)}
.diapo .notes summary{cursor:pointer}
.diapo.vise{box-shadow:0 0 0 2px var(--warn)}
.diapo.vise.a_traiter{box-shadow:0 0 0 2px var(--crit)}
.diapo.vise.repondue{box-shadow:0 0 0 2px var(--accent-2)}
.diapo.vise.resolue,.diapo.vise.acceptee{box-shadow:0 0 0 2px var(--ok)}
.diapo.vise.reportee{box-shadow:0 0 0 1px var(--ink-3)}
.diapo.vise.sel,.diapo.sel{box-shadow:0 0 0 3px var(--accent)}
.diapo.encours{box-shadow:0 0 0 3px var(--accent);background:var(--accent-soft)}
.relire.annoter .diapo:hover{box-shadow:0 0 0 2px var(--accent)}
.relire.diff .diapo.ajoutee{border-color:var(--ok)}
.relire.diff .diapo.modifiee{border-color:var(--warn)}

/* ---------------- script R ---------------- */
.doccorps.genre-r{padding:.6rem 0 3rem;font-size:.87rem;line-height:1.55}
.script{font-family:var(--mono);counter-reset:none;min-width:max-content}
.script .l{white-space:pre;padding:0 1rem 0 4.2rem;position:relative;min-height:1.55em;color:var(--ink)}
.script .l::before{content:attr(data-n);position:absolute;left:0;width:3.2rem;text-align:right;
    color:var(--ink-3);font-size:.81rem;user-select:none;padding-top:.1em}
.script .l.prose{font-family:var(--sans);color:var(--ink-2);white-space:pre-wrap}
.script .l.cloture{color:var(--ink-3)}
.script .l.code{background:var(--surface-2)}
.script .l.supprime{display:none}
.relire.diff .script .l.supprime{display:block;background:var(--crit-soft)}
.relire.diff .script .l.inseree{background:var(--ok-soft)}
.doccorps.genre-r{overflow:auto}
/* avec la vignette, le texte ne sert qu'à la comparaison */
.diapo:has(.vignette) .texte{display:none}
.relire.diff .diapo:has(.vignette) .texte{display:block}

/* ---------------- réunion ---------------- */
.presents{margin:0;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;font-size:.87rem;color:var(--ink-3)}
.reunion{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:1rem;align-items:start}
@media (max-width:1000px){.reunion{grid-template-columns:1fr}}
.reunion .principal,.reunion .lateral{display:flex;flex-direction:column;gap:1rem;min-width:0}
.reunion .carte>h2 .d{font-weight:400}
.odj{list-style:none;margin:0;padding:.3rem .9rem .5rem}
.odj li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.1rem .6rem;align-items:baseline;
    padding:.45rem 0;border-bottom:1px solid var(--rule-soft);font-size:.91rem}
.odj li:last-child{border-bottom:0}
.odj li .o{grid-column:2;font-size:.81rem;color:var(--ink-3)}
.odj li.traite .t{color:var(--ink-3);text-decoration:line-through;text-decoration-color:var(--rule)}
.odj li.vide{display:block;color:var(--ink-3)}
.odj .coche-point{margin:0}
.coche.faite{background:var(--ok);border-color:var(--ok)}
.reunion form.ajout,.reunion form.nouvelle{display:flex;gap:.4rem;padding:.6rem .9rem .8rem;flex-wrap:wrap;
    border-top:1px solid var(--rule-soft)}
.reunion form.nouvelle{flex-direction:column}
.reunion form.nouvelle.ligne{flex-direction:row}
.reunion form.nouvelle.ligne input[type=text]{flex:1 1 14rem}
.reunion input[type=text],.reunion input[type=date],.reunion select,.reunion textarea{font:inherit;font-size:.91rem;
    padding:.38rem .5rem;border:1px solid var(--rule);border-radius:4px;background:var(--surface);color:var(--ink)}
.reunion form.ajout input[type=text]{flex:1 1 auto}
.reunion textarea{width:100%;resize:vertical;line-height:1.5}
.reunion .seance{display:flex;flex-direction:column;gap:.45rem;padding:.6rem .9rem .8rem}
.reunion .seance textarea[name=notes]{font-family:var(--mono);font-size:.87rem}
.reunion .b{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}
.reunion .prochaine{margin-left:auto;font-size:.87rem;color:var(--ink-3);display:flex;gap:.4rem;align-items:center}
.decisions,.releve{list-style:none;margin:0;padding:.2rem .9rem .4rem}
.decisions>li,.releve>li{display:grid;grid-template-columns:1.8rem minmax(0,1fr);gap:.6rem;padding:.65rem 0;
    border-bottom:1px solid var(--rule-soft)}
.decisions>li:last-child,.releve>li:last-child{border-bottom:0}
.decisions .n,.releve .n{font-family:var(--mono);font-size:.95rem;color:var(--accent);font-weight:500}
.decisions .i,.releve .i{margin:0;font-size:.93rem;line-height:1.45;color:var(--ink)}
.decisions .m,.releve .m{margin:.25rem 0 0;font-size:.87rem;color:var(--ink-2)}
.decisions .m b,.releve .m b{font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;
    color:var(--ink-3);font-weight:500;margin-right:.35rem}
.decisions .m.manque{color:var(--crit)}
.reunion details.edit{margin-top:.3rem}
.reunion details.edit summary{font-size:.81rem;color:var(--accent);cursor:pointer}
.reunion details.edit form{display:flex;flex-direction:column;gap:.35rem;margin-top:.4rem}
.releve>li.scellee .i{color:var(--ink)}
.releve>li.scellee{background:linear-gradient(90deg,var(--ok-soft),transparent 40%)}
.releve .etat{margin:.4rem 0 0;font-size:.81rem;color:var(--ink-3);display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}
.releve .gestes{display:flex;gap:.6rem;align-items:flex-start;flex-wrap:wrap;margin-top:.45rem}
.releve .gestes form{margin:0}
.releve .amendements{margin:.35rem 0 0;padding-left:1rem;font-size:.81rem;color:var(--warn)}
.tout-signer{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin:0;padding:.6rem .9rem;
    background:var(--accent-soft);border-bottom:1px solid var(--rule-soft);font-size:.91rem}
.taches-seance{list-style:none;margin:0;padding:.2rem .9rem .5rem}
.taches-seance li{display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap;padding:.4rem 0;
    border-bottom:1px solid var(--rule-soft);font-size:.91rem}
.taches-seance li:last-child{border-bottom:0}
.taches-seance .o{font-size:.81rem;color:var(--ink-3)}
.taches-seance form{margin:0 0 0 auto}
.cloture-reunion{border-color:var(--accent);position:sticky;top:1rem}
.cloture-reunion .bilan{list-style:none;margin:0;padding:.6rem .9rem 0;font-size:.91rem;display:flex;flex-direction:column;gap:.25rem}
.cloture-reunion .bilan b{font-family:var(--mono);color:var(--accent)}
.cloture-reunion .manque{color:var(--crit)}
.cloture-reunion p{margin:0;padding:.5rem .9rem;font-size:.87rem;color:var(--ink-3)}
.cloture-reunion form{margin:0;padding:0 .9rem .9rem}
.reunion form.nouvelle>.bouton{align-self:flex-start}
.signatures table{width:100%;border-collapse:collapse;font-size:.87rem}
.signatures td{padding:.5rem .6rem;border-bottom:1px solid var(--rule-soft);vertical-align:top}
.signatures td.n{font-family:var(--mono);color:var(--accent);width:1.6rem}
.signatures td .o{display:block;font-size:.81rem;color:var(--ink-3);margin-top:.15rem}
.signatures tr.ok td:first-child{box-shadow:inset 3px 0 0 var(--ok)}
.signatures td form{margin:0}
.reunion .aide{margin:0;padding:.5rem .9rem .7rem;font-size:.81rem;color:var(--ink-3);line-height:1.45}
.notes-lues{margin:.2rem .9rem .9rem;padding:.6rem .7rem;background:var(--surface-2);border-radius:4px;
    font-family:var(--mono);font-size:.81rem;white-space:pre-wrap}
.reunions-liste{list-style:none;margin:0;padding:0}
.reunions-liste li{display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap;padding:.55rem .9rem;
    border-bottom:1px solid var(--rule-soft);font-size:.91rem}
.reunions-liste li:last-child{border-bottom:0}
.reunions-liste .o{font-size:.81rem;color:var(--ink-3)}
.reunions-liste .d{margin-left:auto}
.participants-choix{display:flex;flex-wrap:wrap;gap:.3rem .8rem;font-size:.87rem}
.reunion summary.titre-repli{padding:.7rem .9rem;cursor:pointer;font-size:.81rem;font-weight:600;letter-spacing:.08em;
    text-transform:uppercase;color:var(--ink-2);display:flex;gap:.5rem;align-items:baseline}
.reunion summary.titre-repli .d{margin-left:auto;font-family:var(--mono);font-weight:400;color:var(--ink-3)}
.etat-notes{font-family:var(--mono);font-size:.81rem;color:var(--ink-3);margin-right:auto}
.etat-notes.erreur{color:var(--crit)}
.reunion form.envoi{display:flex;flex-direction:column;gap:.4rem;margin:0 .9rem .9rem;padding:.7rem .8rem;
    border:1px solid var(--accent);border-radius:6px;background:var(--accent-soft)}
.reunion form.envoi .titre{margin:0;font-size:.81rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.nouvelle-reunion{max-width:34rem;display:flex;flex-direction:column;gap:.9rem;padding-bottom:1rem}
.nouvelle-reunion .champ{display:flex;flex-direction:column;gap:.35rem;margin:0 .9rem;border:0;padding:0;font-size:.91rem;color:var(--ink-2)}
.nouvelle-reunion .champ legend{padding:0;margin-bottom:.35rem}
.nouvelle-reunion input[type=date]{font:inherit;padding:.4rem .5rem;border:1px solid var(--rule);border-radius:4px;
    background:var(--surface);color:var(--ink);max-width:12rem}
.nouvelle-reunion .case{display:flex;gap:.45rem;align-items:center;color:var(--ink)}
.nouvelle-reunion .aide{font-size:.81rem;color:var(--ink-3)}
.nouvelle-reunion .b{display:flex;gap:.5rem;margin:0 .9rem}

/* ---------------- sous-navigation du projet, éléments clés, notes ---------------- */
.sousnav{position:sticky;top:0;z-index:5;display:flex;gap:.2rem;flex-wrap:wrap;margin:-.2rem 0 0;padding:.35rem;
    background:var(--surface);border:1px solid var(--rule);border-radius:6px}
.sousnav a{font-size:.87rem;padding:.3rem .65rem;border-radius:4px;color:var(--ink-2);text-decoration:none}
.sousnav a:hover{background:var(--accent-soft);color:var(--accent)}
[id]{scroll-margin-top:3.2rem}
.elements{margin:0;padding:.2rem .9rem .6rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));gap:0 1.2rem}
.element{padding:.65rem 0;border-bottom:1px solid var(--rule-soft);min-width:0}
.element dt{font-size:.81rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);
    display:flex;gap:.4rem;align-items:center}
.element dd{margin:.25rem 0 0}
.element .valeur{margin:0;font-size:.9rem;line-height:1.45;white-space:pre-wrap;color:var(--ink)}
.element .valeur.absent{color:var(--ink-3);font-style:italic}
.element .source{margin:.25rem 0 0;font-size:.81rem;color:var(--ink-3)}
.element.verrou .valeur{border-left:3px solid var(--accent);padding-left:.5rem}
.element details.edit summary,.epingler summary{font-size:.81rem;color:var(--accent);cursor:pointer}
.element details.edit form{display:flex;flex-direction:column;gap:.35rem;margin-top:.35rem}
.element textarea,.element input[type=text],.note-nouvelle textarea,.note-nouvelle select,.notes-privees textarea,
.epingler select{font:inherit;font-size:.91rem;padding:.35rem .5rem;border:1px solid var(--rule);border-radius:4px;
    background:var(--surface);color:var(--ink);width:100%}
.epingler select{width:auto}
.element .b,.note-nouvelle .b{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}
.element .histo{display:inline}
.element .histo ul{margin:.3rem 0 0;padding-left:1rem}
.epingler{margin-top:.3rem}
.epingler form{display:flex;gap:.4rem;margin-top:.3rem;flex-wrap:wrap}
.note-nouvelle{display:flex;flex-direction:column;gap:.4rem;padding:.7rem .9rem;border-bottom:1px solid var(--rule-soft)}
.note-nouvelle select{width:auto}
.notes-privees{list-style:none;margin:0;padding:0 .9rem .6rem}
.notes-privees li{padding:.6rem 0;border-bottom:1px solid var(--rule-soft)}
.notes-privees li:last-child{border-bottom:0}
.notes-privees .corps{margin:0;font-size:.91rem;white-space:pre-wrap}
.notes-privees .o{margin:.25rem 0 0;font-size:.81rem;color:var(--ink-3)}
.notes-privees details form{display:flex;flex-direction:column;gap:.35rem;margin-top:.35rem}

/* ---------------- timeline ---------------- */
.tl{border:1px solid var(--rule);border-radius:8px;background:var(--surface);overflow:hidden;min-height:8rem}
.tl-defil{overflow-x:auto;overflow-y:hidden;position:relative;overscroll-behavior-x:contain}
.tl-toile{position:relative}
.tl-fond{position:absolute;top:0;bottom:0;pointer-events:none;z-index:0}
.tl-bande{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--ink) 2.5%,transparent)}
.tl-passe{position:absolute;left:0;top:0;bottom:0;background:repeating-linear-gradient(135deg,transparent 0 6px,color-mix(in srgb,var(--ink) 3%,transparent) 6px 7px)}
.tl-filet{position:absolute;top:0;bottom:0;border-left:1px solid var(--rule-soft)}
.tl-filet.annee{border-left:1px solid var(--rule)}
.tl-ligne{display:flex;position:relative;z-index:1;border-bottom:1px solid var(--rule-soft)}
.tl-ligne:last-of-type{border-bottom:0}
.tl-nom{position:sticky;left:0;z-index:6;flex:0 0 var(--tl-nom,210px);width:var(--tl-nom,210px);box-sizing:border-box;padding:.45rem .7rem;
    background:var(--surface);border-right:1px solid var(--rule);display:flex;flex-direction:column;gap:.1rem;
    justify-content:center;min-width:0}
.tl-nom b{font-size:.87rem;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tl-nom span{font-size:.77rem;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
.tl-nom .puce{align-self:flex-start;font-size:.72rem}
.tl-voie{position:relative;flex:1 1 auto;min-width:0}
.tl-titre{position:sticky;left:0;display:inline-flex;align-items:baseline;gap:.45rem;max-width:calc(100vw - 3rem);
    padding:.4rem .6rem 0;white-space:nowrap;overflow:hidden;z-index:5}
.tl-titre b{font-size:.86rem;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis}
.tl-titre span{font-size:.75rem;color:var(--ink-3);font-variant-numeric:tabular-nums}
.tl-titre .puce{font-size:.7rem}
.tl-axe{background:var(--surface-2);border-bottom:1px solid var(--rule);z-index:7}
.tl-axe .tl-nom{background:var(--surface-2)}
.tl-annee{position:absolute;top:20px;height:22px;box-sizing:border-box;border-left:1px solid var(--rule);overflow:hidden}
.tl-annee b{position:sticky;left:0;display:inline-block;padding:.2rem .4rem 0;font-family:var(--mono);font-size:.74rem;
    font-weight:600;color:var(--ink-2)}
.tl-mois{position:absolute;top:42px;height:22px;box-sizing:border-box;border-left:1px solid var(--rule-soft);padding:.2rem 0 0 .3rem;
    font-family:var(--mono);font-size:.7rem;color:var(--ink-3);white-space:nowrap;overflow:hidden}
.tl-jour,.tl-terminus{position:absolute;bottom:0;width:0;border-left:2px solid var(--cyan);z-index:4;pointer-events:none;opacity:.8}
.tl-terminus{border-left:2px dashed #CC6030}
.tl-jour-lib,.tl-terminus-lib{position:absolute;top:2px;z-index:2;font-family:var(--mono);font-size:.7rem;line-height:1;white-space:nowrap;
    padding:.2rem .4rem .25rem;border-radius:3px;color:#fff;background:var(--accent-2)}
.tl-terminus-lib{background:#CC6030}
.tl-jour-lib.droite,.tl-terminus-lib.droite{border-bottom-left-radius:0;margin-left:-1px}
.tl-jour-lib.gauche,.tl-terminus-lib.gauche{border-bottom-right-radius:0;margin-left:1px}
.tl-couloir.termine .tl-nom b,.tl-couloir.termine .tl-titre b{color:var(--ink-3)}
.tl-barre{position:absolute;height:20px;border-radius:5px;background:var(--accent);
    box-shadow:inset 0 0 0 1px rgba(0,0,0,.08);touch-action:none}
.tl-barre.estime{background:repeating-linear-gradient(90deg,var(--accent) 0 10px,transparent 10px 14px),var(--accent-soft)}
.tl-barre.termine{background:var(--ok);opacity:.6}
.tl-depasse{position:absolute;height:20px;background:repeating-linear-gradient(135deg,var(--crit-soft) 0 5px,var(--crit) 5px 7px);
    border-radius:0 5px 5px 0;opacity:.8;pointer-events:none}
.tl-barre[tabindex]{cursor:grab}
.tl-barre[tabindex]:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.tl-barre.glisse{cursor:grabbing;box-shadow:0 0 0 2px var(--cyan)}
.tl-barre.glisse::after{content:attr(data-apercu);position:absolute;top:-19px;left:0;white-space:nowrap;
    font-family:var(--mono);font-size:.72rem;color:var(--ink);background:var(--surface);padding:0 .25rem;border-radius:3px}
.tl-barre .poignee{position:absolute;top:0;bottom:0;width:9px;cursor:ew-resize}
.tl-barre .poignee.debut{left:-4px}.tl-barre .poignee.fin{right:-4px}
.tl-sans-fin{position:absolute;font:inherit;font-size:.77rem;color:var(--ink-3);border:1px dashed var(--rule);
    background:var(--surface);border-radius:4px;padding:.1rem .45rem;cursor:pointer;white-space:nowrap}
span.tl-sans-fin{cursor:default}
.tl-version{position:absolute;width:0;height:0;pointer-events:auto}
.tl-version::before{content:"";position:absolute;left:-4px;top:-4px;width:8px;height:8px;transform:rotate(45deg);
    background:var(--surface);border:1.5px solid var(--accent-2)}
.tl-version i{position:absolute;top:-7px;left:7px;font-style:normal;font-family:var(--mono);font-size:.66rem;color:var(--accent-2)}
.tl-evt{position:absolute;width:0;height:0;border:0;padding:0;background:none;font:inherit;cursor:default;touch-action:none;z-index:2}
button.tl-evt{cursor:grab}
.tl-evt::before{content:"";position:absolute;left:-7px;top:-7px;width:14px;height:14px;border-radius:50%;z-index:1;
    background:var(--warn);border:2px solid var(--surface);box-sizing:border-box;box-shadow:0 0 0 1px var(--warn)}
.tl-evt.aca::before{background:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.tl-evt.reg::before{background:var(--crit);box-shadow:0 0 0 1px var(--crit)}
.tl-evt.sci::before{background:var(--cyan);box-shadow:0 0 0 1px var(--accent-2)}
.tl-evt.mat::before{background:var(--ink-3);box-shadow:0 0 0 1px var(--ink-3)}
.tl-evt .tige{position:absolute;left:-.5px;top:0;width:0;border-left:1px solid var(--ink-3);opacity:.5}
.tl-evt i{position:absolute;left:-1px;font-style:normal;font-size:.75rem;line-height:18px;color:var(--ink-2);white-space:nowrap;
    background:var(--surface);border:1px solid var(--rule-soft);border-left:2px solid var(--warn);padding:0 .35rem;border-radius:0 3px 3px 0}
.tl-evt i.gauche{left:auto;right:-1px;border-left:1px solid var(--rule-soft);border-right:2px solid var(--warn);border-radius:3px 0 0 3px}
.tl-evt.aca i{border-left-color:var(--accent)}.tl-evt.aca i.gauche{border-left-color:var(--rule-soft);border-right-color:var(--accent)}
.tl-evt.reg i{border-left-color:var(--crit)}.tl-evt.reg i.gauche{border-left-color:var(--rule-soft);border-right-color:var(--crit)}
.tl-evt.sci i{border-left-color:var(--cyan)}.tl-evt.sci i.gauche{border-left-color:var(--rule-soft);border-right-color:var(--cyan)}
.tl-evt.mat i{border-left-color:var(--ink-3)}.tl-evt.mat i.gauche{border-left-color:var(--rule-soft);border-right-color:var(--ink-3)}
.tl-evt.glisse::before{box-shadow:0 0 0 3px var(--cyan)}
.tl-evt:focus-visible{outline:none}
.tl-evt:focus-visible::before{box-shadow:0 0 0 3px var(--ink)}
.tl-projet{border-top:1px solid var(--rule)}
.tl-prep{position:absolute;height:4px;background:var(--warn-soft);border-top:1px dashed var(--warn);pointer-events:none}
.tl-prep.retard{background:var(--crit-soft);border-top-color:var(--crit)}
.tl-liens{position:absolute;left:0;top:0;pointer-events:none;z-index:3;color:var(--ink-3)}
.tl-liens path{fill:none;stroke:currentColor;stroke-width:1.4}
.tl-liens path.risque{stroke:var(--crit);color:var(--crit);stroke-dasharray:4 3}
.tl-legende{display:flex;flex-wrap:wrap;gap:.3rem 1rem;align-items:center;margin:0;font-size:.81rem;color:var(--ink-3)}
.tl-legende span{display:inline-flex;align-items:center;gap:.35rem}
.tl-legende i{display:inline-block}
.l-barre{width:22px;height:8px;border-radius:2px;background:var(--accent)}
.l-barre.retard{background:repeating-linear-gradient(135deg,var(--crit-soft) 0 3px,var(--crit) 3px 5px)}
.l-version{width:7px;height:7px;transform:rotate(45deg);border:1.5px solid var(--accent-2)}
.l-evt{width:9px;height:9px;border-radius:50%;background:var(--warn)}
.l-prep{width:22px;height:3px;border-top:1px dashed var(--warn);background:var(--warn-soft)}
.l-dep{width:22px;border-top:1.5px solid var(--ink-3)}
.l-dep.risque{border-top:1.5px dashed var(--crit)}
.tl-legende .aide{margin-left:auto}
.tl-dialogue{border:1px solid var(--rule);border-radius:8px;padding:0;background:var(--surface);color:var(--ink);
    min-width:min(24rem,90vw);box-shadow:0 20px 50px -20px rgba(10,20,35,.5)}
.tl-dialogue::backdrop{background:rgba(12,25,45,.3)}
.tl-dialogue form{display:flex;flex-direction:column;gap:.6rem;padding:1rem 1.1rem}
.tl-dialogue .titre{margin:0;font-weight:600}
.tl-dialogue .texte{margin:0;font-size:.91rem;color:var(--ink-2)}
.tl-dialogue .champs{display:flex;gap:.8rem;flex-wrap:wrap}
.tl-dialogue label{display:flex;flex-direction:column;gap:.2rem;font-size:.81rem;color:var(--ink-3)}
.tl-dialogue input,.plan input,.plan select,.ajout-evt input,.ajout-evt select,.evts input,.evts select{font:inherit;font-size:.87rem;
    padding:.3rem .45rem;border:1px solid var(--rule);border-radius:4px;background:var(--surface);color:var(--ink)}
.tl-dialogue .b{display:flex;gap:.5rem;justify-content:flex-end}
#planifier h3{margin:1rem .9rem .3rem;font-size:.81rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2)}
#planifier h3 .o{text-transform:none;letter-spacing:0;font-weight:400;color:var(--ink-3)}
.plan{width:100%;border-collapse:collapse;font-size:.91rem}
.plan th{text-align:left;font-size:.81rem;font-weight:500;color:var(--ink-3);padding:.5rem .9rem;border-bottom:1px solid var(--rule)}
.plan td{padding:.45rem .9rem;border-bottom:1px solid var(--rule-soft);vertical-align:middle}
.plan .o,.evts .o{font-size:.81rem;color:var(--ink-3)}
.ligne-plan{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;margin:0}
.evts{list-style:none;margin:0;padding:0 .9rem}
.evts>li{display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap;padding:.45rem 0;border-bottom:1px solid var(--rule-soft);font-size:.91rem}
.evts .date{font-family:var(--mono);font-size:.81rem;color:var(--ink-2);min-width:6.5rem}
.evts details.edit{flex-basis:100%}
.evts details.edit summary{font-size:.81rem;color:var(--accent);cursor:pointer}
.evts details form{margin-top:.35rem}
.ajout-evt{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;padding:.7rem .9rem .9rem}

/* ---------------- formulaires de mise en service ---------------- */
.formulaire{display:flex;flex-direction:column;gap:.85rem;padding-bottom:1rem;max-width:46rem}
.formulaire>p{margin:0 .9rem;font-size:.91rem;color:var(--ink-2);line-height:1.5}
.formulaire .champ{display:flex;flex-direction:column;gap:.3rem;margin:0 .9rem;border:0;padding:0;font-size:.87rem;color:var(--ink-2);min-width:0}
.formulaire .champ legend{padding:0;margin-bottom:.4rem}
.formulaire input[type=text],.formulaire input[type=date],.formulaire input[type=email],.formulaire input[type=password],
.formulaire select,.formulaire textarea,.formulaire-court input,.formulaire-court textarea,.invitation-form input,
.invitation-form select,.reglages-projet select,.axes-reglages input,.axes-reglages select,.lien-copie input,.ajout input{
    font:inherit;font-size:.91rem;padding:.42rem .55rem;border:1px solid var(--rule);border-radius:4px;background:var(--surface);color:var(--ink)}
.formulaire .deux{display:grid;grid-template-columns:1fr 1fr;gap:.85rem;margin:0}
@media (max-width:640px){.formulaire .deux{grid-template-columns:1fr}}
.formulaire .deux .champ{margin:0 .9rem}
.formulaire .deux .champ:first-child{margin-right:0}.formulaire .deux .champ:last-child{margin-left:0}
.formulaire .case{display:flex;gap:.5rem;align-items:flex-start;margin:0 .9rem;font-size:.91rem;color:var(--ink)}
.formulaire .b{display:flex;gap:.5rem;margin:0 .9rem;flex-wrap:wrap}
.formulaire .aide{margin:0 .9rem;font-size:.81rem;color:var(--ink-3)}
.formulaire .choix-types{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:.45rem}
.formulaire .choix-types legend{grid-column:1/-1;float:left;width:100%}
.choix-type{display:block;cursor:pointer;position:relative}
.choix-type input{position:absolute;opacity:0;pointer-events:none}
.choix-type span{display:flex;flex-direction:column;gap:.15rem;padding:.55rem .7rem;border:1px solid var(--rule);border-radius:6px;
    background:var(--surface);height:100%;box-sizing:border-box}
.choix-type span b{font-family:var(--sans);font-weight:600;color:var(--ink);font-size:.91rem}
.choix-type span i{font-family:var(--sans);font-style:normal;font-size:.81rem;color:var(--ink-3)}
.choix-type input:checked+span{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}
.choix-type input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.apercu{margin:0 .9rem;padding:.6rem .8rem;border:1px dashed var(--accent-2);border-radius:6px;background:var(--surface-2)}
.apercu .titre{margin:0 0 .3rem;font-size:.81rem;letter-spacing:.07em;text-transform:uppercase;color:var(--accent-2);font-weight:600}
.apercu ul{margin:0;padding-left:1.1rem;font-size:.87rem;color:var(--ink-2);display:flex;flex-direction:column;gap:.15rem}
.apercu li.evt{list-style:circle;color:var(--warn)}
.lien-copie{display:flex;gap:.5rem;margin:0 .9rem}
.lien-copie input{flex:1 1 auto;font-family:var(--mono);font-size:.81rem}
.info{border-left:3px solid var(--ok);background:var(--ok-soft);padding:.6rem .9rem;border-radius:0 4px 4px 0;margin:0;font-size:.91rem}
.seg-radio{display:inline-flex;border:1px solid var(--rule);border-radius:5px;overflow:hidden;align-self:flex-start}
.seg-radio label{cursor:pointer}
.seg-radio input{position:absolute;opacity:0}
.seg-radio span{display:block;padding:.35rem .7rem;font-size:.87rem;color:var(--ink-3);background:var(--surface)}
.seg-radio label+label span{border-left:1px solid var(--rule)}
.seg-radio input:checked+span{background:var(--accent-soft);color:var(--accent);font-weight:500}
.seg-radio input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}
.axes-reglages{list-style:none;margin:0;padding:.3rem .9rem}
.axes-reglages li{display:flex;gap:.6rem;align-items:center;padding:.45rem 0;border-bottom:1px solid var(--rule-soft)}
.axes-reglages li.archive{opacity:.55}
.ligne-axe{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;margin:0;flex:1}
.ligne-axe input[type=text]{flex:1 1 12rem}
#axes form.ajout{display:flex;gap:.4rem;padding:.6rem .9rem .9rem}
#axes form.ajout input{flex:1 1 auto}
.equipe{list-style:none;margin:0;padding:.3rem .9rem}
.equipe li{display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap;padding:.4rem 0;border-bottom:1px solid var(--rule-soft);font-size:.91rem}
.equipe li:last-child{border-bottom:0}
.equipe .o{font-size:.81rem;color:var(--ink-3)}
.equipe form.d{margin:0 0 0 auto;display:flex;gap:.6rem}
.sous-titre{margin:.6rem .9rem 0;font-size:.81rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);font-weight:600}
.invitation-form{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;padding:.7rem .9rem .3rem;border-top:1px solid var(--rule-soft)}
.invitation-form input[type=email]{flex:1 1 14rem}
.reglages-projet{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-start;padding:.6rem .9rem .9rem;border-top:1px solid var(--rule-soft)}
.reglages-projet form.ligne{margin:0}
.reglages-projet details{flex:1 1 20rem}
.reglages-projet summary{font-size:.87rem;color:var(--accent);cursor:pointer}
.formulaire-court{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}
.formulaire-court .champ{display:flex;flex-direction:column;gap:.25rem;font-size:.87rem;color:var(--ink-2)}
.nouveau-projet{margin:.2rem 1rem .8rem;text-align:center;text-decoration:none}

/* ---------------- Aujourd'hui ---------------- */
.premier{background:var(--surface);border:1px solid var(--rule);border-left:4px solid var(--accent);border-radius:8px;
    padding:1.1rem 1.3rem 1.2rem;display:flex;flex-direction:column;gap:.35rem}
.premier.critique{border-left-color:var(--crit)}
.premier.calme{border-left-color:var(--ok)}
.premier .motif{margin:0;font-size:.87rem;color:var(--ink-3)}
.premier.critique .motif{color:var(--crit);font-weight:500}
.premier h2{margin:0;font-family:var(--serif);font-weight:500;font-size:1.45rem;line-height:1.25;letter-spacing:-.01em;
    text-transform:none;color:var(--ink);background:none;border:0;padding:0;text-wrap:balance}
.premier .contexte{margin:0;font-size:.87rem;color:var(--ink-2)}
.premier .contexte a{color:inherit}
.premier .gestes{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-top:.5rem}
.premier .gestes form{margin:0}
.reporter-form{display:inline-flex;gap:.35rem;margin:0}
.file{list-style:none;margin:0;padding:0}
.file li{display:grid;grid-template-columns:4.2rem minmax(0,1fr) auto;gap:.8rem;align-items:center;
    padding:.6rem .9rem;border-bottom:1px solid var(--rule-soft)}
.file li:last-child{border-bottom:0}
.file li.critique{box-shadow:inset 3px 0 0 var(--crit)}
.file .duree{font-family:var(--mono);font-size:.81rem;color:var(--ink-2);text-align:right;white-space:nowrap}
.file .quoi{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.file .t{font-size:.92rem;color:var(--ink);text-decoration:none;line-height:1.35}
.file a.t:hover{color:var(--accent)}
.file .m{font-size:.81rem;color:var(--ink-3)}
.file .m a{color:inherit}
.file li.critique .m{color:var(--crit)}
.file li.critique .m a{color:var(--ink-3)}
.file .gestes{display:flex;gap:.4rem;align-items:center}
.file .gestes form{margin:0}
.plus-tard{position:relative}
.plus-tard summary{font-size:.81rem;color:var(--ink-3);cursor:pointer;list-style:none;padding:.2rem .4rem;border-radius:4px}
.plus-tard summary::-webkit-details-marker{display:none}
.plus-tard summary:hover{color:var(--accent)}
.plus-tard[open] .reporter-form{position:absolute;right:0;top:1.7rem;z-index:10;background:var(--surface);
    border:1px solid var(--rule);border-radius:6px;padding:.4rem;box-shadow:0 8px 20px -12px rgba(10,20,35,.4)}
@media (max-width:700px){.file li{grid-template-columns:3.4rem minmax(0,1fr)}.file .gestes{grid-column:2}}
.silence{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;padding:.7rem 1rem;border-radius:8px;
    background:var(--crit-soft);border:1px solid color-mix(in srgb,var(--crit) 30%,transparent)}
.silence p{margin:0;flex:1 1 24rem;font-size:.91rem;color:var(--ink)}
.silence .gestes{display:flex;gap:.4rem}
.silence form{margin:0}
.horizon .hz-tete{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;padding-right:.9rem}
.horizon .hz-tete h2{border:0}
.horizon .hz-tete .seg button{font-size:.78rem;padding:.2rem .5rem}
.hz-bande{display:grid;grid-template-columns:repeat(var(--n),minmax(2.1rem,1fr));gap:3px;margin:.2rem .9rem .3rem;overflow-x:auto;padding-bottom:2px}
.hz-sem{display:flex;flex-direction:column;align-items:center;gap:.25rem;min-width:0;padding:.3rem 0 .4rem;border-radius:5px;
    background:var(--surface-2);text-decoration:none;color:var(--ink-3);border:1px solid transparent}
.hz-sem.charge{background:var(--accent-soft);color:var(--ink-2)}
.hz-sem.collision{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 45%,transparent)}
.hz-sem.courante{border-color:var(--accent-2)}
.hz-sem:hover{border-color:var(--accent)}
.hz-date{font-family:var(--mono);font-size:.78rem;line-height:1.15;text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}
.hz-date b{display:block;font-weight:600;color:var(--ink-2)}
.hz-pts{display:flex;flex-wrap:wrap;justify-content:center;gap:2px;min-height:9px;max-width:100%;padding:0 2px}
.hz-pts i,.hz-legende i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent-2)}
.hz-pts i.terminus,.hz-legende i.terminus{background:#CC6030}
.hz-pts i.livrable,.hz-legende i.livrable{background:transparent;box-shadow:inset 0 0 0 1.5px var(--ink-3)}
.hz-legende i.collision{border-radius:2px;background:var(--warn-soft);box-shadow:inset 0 0 0 1px var(--warn)}
.hz-pts em{font-style:normal;font-size:.78rem;line-height:8px}
.hz-legende{display:flex;flex-wrap:wrap;gap:.2rem 1rem;margin:.1rem .9rem .6rem;font-size:.8rem;color:var(--ink-3)}
.hz-legende span{display:inline-flex;align-items:center;gap:.3rem}
.hz-liste{list-style:none;margin:0;padding:0 .9rem .6rem}
.hz-semaine{padding:.35rem 0 .45rem;border-top:1px solid var(--rule-soft)}
.hz-semaine h3{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:.1rem 0 .3rem;font-size:.8rem;font-weight:600;
    letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}
.hz-semaine h3 .puce{text-transform:none;letter-spacing:0;font-size:.78rem}
.hz-semaine ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.15rem}
.hz-jalon{display:grid;grid-template-columns:5.2rem minmax(0,1.3fr) minmax(0,1fr);gap:.2rem .8rem;align-items:baseline;
    padding:.28rem .45rem;border-radius:5px;border-left:3px solid var(--accent-2)}
.hz-jalon:hover{background:var(--surface-2)}
.hz-jalon.terminus{border-left-color:#CC6030;background:color-mix(in srgb,#CC6030 7%,transparent)}
.hz-jalon.livrable{border-left-color:var(--ink-3);border-left-style:dashed}
.hz-quand{display:flex;flex-direction:column;line-height:1.2;font-variant-numeric:tabular-nums}
.hz-quand b{font-size:.86rem;font-weight:600;color:var(--ink)}
.hz-quand i{font-style:normal;font-family:var(--mono);font-size:.78rem;color:var(--ink-3)}
.hz-quoi{display:flex;flex-direction:column;min-width:0;text-decoration:none;color:var(--ink)}
.hz-quoi b{font-size:.9rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hz-quoi:hover b{color:var(--accent)}
.hz-genre{font-size:.78rem;color:var(--ink-3)}
.hz-jalon.terminus .hz-genre{color:#CC6030;font-weight:600}
.hz-projet{display:flex;align-items:baseline;gap:.4rem;min-width:0;font-size:.82rem}
.hz-projet a{color:var(--ink-2);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hz-projet a:hover{color:var(--accent)}
@media (max-width:640px){
  .hz-jalon{grid-template-columns:4.2rem minmax(0,1fr)}
  .hz-projet{grid-column:2}
  .hz-bande{gap:2px}
  .hz-date{font-size:.78rem}
}
.file.attend li{grid-template-columns:4.2rem minmax(0,1fr)}

/* ---------------- Vue d'ensemble ---------------- */
.compteurs{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.6rem}
.compteurs>div{background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:.6rem .8rem;
    display:flex;flex-direction:column;gap:.1rem}
.compteurs b{font-family:var(--serif);font-weight:500;font-size:1.6rem;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.compteurs span{font-size:.81rem;color:var(--ink-3)}
.compteurs .c b{color:var(--crit)}.compteurs .a b{color:var(--accent)}.compteurs .w b{color:var(--warn)}
.legende-signaux{display:flex;flex-wrap:wrap;gap:.3rem 1rem;align-items:center;margin:0;font-size:.81rem;color:var(--ink-3)}
.legende-signaux span{display:inline-flex;gap:.35rem;align-items:center}
.legende-signaux .aide{margin-left:auto}
.sl{display:inline-flex;align-items:center;justify-content:center;width:1.3rem;height:1.3rem;border-radius:4px;
    font-style:normal;font-family:var(--mono);font-size:.78rem;font-weight:500;color:var(--rule);
    border:1px dashed var(--rule);background:var(--surface)}
.sl.on{color:var(--surface);background:var(--accent);border:1px solid var(--accent)}
.sl.on.c{background:var(--crit);border-color:var(--crit)}
.sl.on.w{background:var(--warn);border-color:var(--warn)}
.creneaux{display:inline-flex;gap:.2rem}
.creneaux .sl:nth-child(2n+3){margin-left:.35rem}
.groupe-projets>h2 .dot{margin-right:.4rem}
.ligne-projet{display:grid;grid-template-columns:minmax(0,2.2fr) auto 6.5rem minmax(0,1.3fr) minmax(0,1.3fr);gap:.9rem;
    align-items:center;padding:.65rem .9rem;border-bottom:1px solid var(--rule-soft)}
.ligne-projet:last-child{border-bottom:0}
.ligne-projet.dort{opacity:.8}
.ligne-projet .p{display:flex;flex-direction:column;gap:.2rem;min-width:0}
.ligne-projet .titre{font-size:.92rem;color:var(--ink);text-decoration:none;line-height:1.3}
.ligne-projet .titre:hover{color:var(--accent)}
.ligne-projet .meta{font-size:.81rem;color:var(--ink-3);display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.ligne-projet .terme{font-family:var(--mono);font-size:.81rem;color:var(--ink-2);display:flex;flex-direction:column}
.ligne-projet .terme i{font-style:normal;color:var(--ink-3);font-size:.81rem}
.ligne-projet .attente{font-size:.87rem;color:var(--ink-2);min-width:0;overflow:hidden;text-overflow:ellipsis}
.ligne-projet .attente b{display:block;font-family:var(--mono);font-size:.78rem;font-weight:500;letter-spacing:.08em;
    text-transform:uppercase;color:var(--ink-3)}
.ligne-projet .attente.vous a{color:var(--accent)}
@media (max-width:1100px){.ligne-projet{grid-template-columns:minmax(0,1fr) auto}.ligne-projet .terme,.ligne-projet .attente{grid-column:1/-1}}
.vide-axe{opacity:.7}

/* ---------------- plan de charge ---------------- */
.transverse .tw{overflow-x:auto}
.grille-plan{min-width:760px;padding:.4rem .9rem .2rem}
.grille-plan .entete,.ligne-plan-projet{display:grid;grid-template-columns:15rem minmax(0,1fr);gap:.8rem;align-items:center}
.grille-plan .entete{height:1.4rem;border-bottom:1px solid var(--rule)}
.axe-mois{position:relative;height:100%}
.axe-mois i{position:absolute;top:.2rem;font-style:normal;font-family:var(--mono);font-size:.78rem;color:var(--ink-3);
    border-left:1px solid var(--rule);padding-left:.2rem;height:1.2rem}
.ligne-plan-projet{min-height:2.6rem;border-bottom:1px solid var(--rule-soft)}
.ligne-plan-projet .nom{display:flex;flex-direction:column;text-decoration:none;min-width:0}
.ligne-plan-projet .nom b{font-weight:500;font-size:.87rem;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ligne-plan-projet .nom span{font-size:.81rem;color:var(--ink-3)}
.ligne-plan-projet .piste{position:relative;height:2.2rem}
.ligne-plan-projet .barre{position:absolute;top:.8rem;height:.6rem;border-radius:3px;opacity:.85}
.ligne-plan-projet.dort .barre,.ligne-plan-projet.avenir .barre{opacity:.35}
.ligne-plan-projet .jalon{position:absolute;top:.35rem;width:0;height:1.5rem;border-left:2px solid #CC6030}
.ligne-plan-projet .jalon em{position:absolute;left:3px;top:-.1rem;font-style:normal;font-size:.78rem;color:#CC6030;white-space:nowrap;
    background:var(--surface);padding:0 .15rem}
.ligne-plan-projet .jour{position:absolute;top:0;bottom:0;border-left:1.5px solid var(--cyan)}
.transverse>.aide,.histo .aide{margin:.3rem .9rem .6rem;font-size:.81rem;color:var(--ink-3)}
.histo{border-top:1px solid var(--rule-soft);padding:.6rem .9rem 0}
.titre-histo{margin:0 0 .4rem;font-size:.81rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
.titre-histo span{text-transform:none;letter-spacing:0;font-weight:400;color:var(--ink-3)}
.barres{display:grid;grid-template-columns:repeat(12,1fr);gap:.4rem;height:8rem;align-items:end}
.barres .col{position:relative;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center}
.barres .col i{display:block;width:70%;background:var(--accent-2);opacity:.6;border-radius:3px 3px 0 0;min-height:1px}
.barres .col i.pic{background:var(--accent);opacity:1}
.barres .v{font-family:var(--mono);font-size:.78rem;color:var(--ink-2)}
.barres .m{font-family:var(--mono);font-size:.78rem;color:var(--ink-3);margin-top:.2rem}
.barres .soum{position:absolute;top:0;right:12%;font-family:var(--mono);font-size:.74rem;color:#fff;background:#CC6030;border-radius:50%;
    width:1rem;height:1rem;display:grid;place-items:center;font-weight:500}
.colonne-plan{list-style:none;margin:0;padding:.2rem .9rem .5rem}
.colonne-plan li{display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:.6rem;align-items:baseline;padding:.45rem 0;
    border-bottom:1px solid var(--rule-soft);font-size:.91rem}
.colonne-plan li:last-child{border-bottom:0}
.colonne-plan li .puce{justify-self:start}
.colonne-plan li a{color:var(--ink);text-decoration:none}
.colonne-plan li a:hover{color:var(--accent)}
.colonne-plan .o{display:block;font-size:.81rem;color:var(--ink-3)}
.colonne-plan li.vide{display:block}
.axe-objectifs{padding:.6rem .9rem .8rem;border-bottom:1px solid var(--rule-soft)}
.axe-objectifs:last-child{border-bottom:0}
.axe-titre{margin:0 0 .4rem;display:flex;gap:.45rem;align-items:center;font-size:.9rem}
.axe-titre .o,.objectif .o{font-size:.81rem;color:var(--ink-3)}
.objectif{margin:.35rem 0 .5rem 1.1rem}
.entete-obj{display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap}
.entete-obj .t{font-size:.91rem;color:var(--ink)}
.entete-obj .compte{font-family:var(--mono);font-size:.87rem;color:var(--accent);margin-left:auto}
.entete-obj .compte.atteint{color:var(--ok)}
.jauge{height:5px;background:var(--rule-soft);border-radius:3px;overflow:hidden;margin:.3rem 0}
.jauge i{display:block;height:100%;background:var(--accent)}
.objectif .o{margin:0}
.sans-objectif{margin:.2rem 0 .3rem 1.1rem;padding:.4rem .6rem;border-radius:4px;background:var(--warn-soft);color:var(--warn);font-size:.87rem}
.axe-objectifs details.edit{margin-left:1.1rem}
.axe-objectifs details.edit summary{font-size:.81rem;color:var(--accent);cursor:pointer}
.axe-objectifs details.edit form{margin-top:.35rem}
.axe-objectifs input,.axe-objectifs select,.revue-lignes input[type=text]{font:inherit;font-size:.87rem;padding:.3rem .45rem;border:1px solid var(--rule);
    border-radius:4px;background:var(--surface);color:var(--ink)}
.revue-bloc.due{border-color:var(--warn)}
.pad-revue{padding:.6rem .9rem .9rem;display:flex;flex-direction:column;gap:.4rem}
.pad-revue p{margin:0;font-size:.91rem;color:var(--ink-2)}
.pad-revue .o{font-size:.81rem;color:var(--ink-3)}
.pad-revue .b{display:flex;gap:.5rem}
.pad-revue form{margin:0}
.revue-lignes{list-style:none;margin:0;padding:0}
.revue-lignes li{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:1rem;align-items:center;padding:.65rem .9rem;
    border-bottom:1px solid var(--rule-soft)}
.revue-lignes li.continuer{box-shadow:inset 3px 0 0 var(--ok)}
.revue-lignes li.pause{box-shadow:inset 3px 0 0 var(--warn)}
.revue-lignes li.arreter{box-shadow:inset 3px 0 0 var(--crit)}
.revue-lignes .p{display:flex;flex-direction:column;min-width:0}
.revue-lignes .p a{color:var(--ink);text-decoration:none;font-size:.9rem}
.revue-lignes .o{font-size:.81rem;color:var(--ink-3)}
.revue-lignes .verdict{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;margin:0}
.revue-lignes .verdict input[type=text]{flex:1 1 12rem}
@media (max-width:900px){.revue-lignes li{grid-template-columns:1fr}}
.cloture-revue{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;padding:.8rem .9rem;margin:0;border-top:1px solid var(--rule)}
.cloture-revue p{margin:0;flex:1 1 18rem;font-size:.87rem;color:var(--ink-3)}
.dossier-projet{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;padding:.6rem .9rem;border-top:1px solid var(--rule-soft)}
.dossier-projet .o{font-size:.81rem;color:var(--ink-3)}
.dossier-projet form{margin:0}

/* ---------------- fiches ---------------- */
.filtre-fiches{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin:0}
.filtre-fiches input[type=search]{flex:1 1 18rem;font:inherit;font-size:.91rem;padding:.42rem .6rem;border:1px solid var(--rule);
    border-radius:5px;background:var(--surface);color:var(--ink)}
.liste-fiches{list-style:none;margin:0;padding:.2rem .9rem .5rem}
.liste-fiches li{padding:.55rem 0;border-bottom:1px solid var(--rule-soft);display:flex;gap:.5rem;flex-wrap:wrap;align-items:baseline}
.liste-fiches li:last-child{border-bottom:0}
.liste-fiches a{color:var(--ink);text-decoration:none;font-size:.9rem}
.liste-fiches a:hover{color:var(--accent)}
.liste-fiches .o{font-size:.81rem;color:var(--ink-3)}
.liste-fiches .extrait{flex-basis:100%;margin:.1rem 0 0;font-size:.87rem;color:var(--ink-2)}
.fiche-lue{padding:1.2rem 1.4rem;max-width:48rem}
.contenu-fiche{font-size:.95rem;line-height:1.65;color:var(--ink)}
.contenu-fiche h3,.contenu-fiche h4,.contenu-fiche h5{font-family:var(--serif);font-weight:500;margin:1rem 0 .3rem;text-transform:none;
    letter-spacing:0;background:none;border:0;padding:0;color:var(--ink)}
.contenu-fiche h3{font-size:1.25rem}.contenu-fiche h4{font-size:1.08rem}
.contenu-fiche p{margin:.5rem 0}
.contenu-fiche code{font-family:var(--mono);font-size:.85em;background:var(--surface-2);padding:.05rem .25rem;border-radius:3px}
.fiche-lue>.o{margin:1rem 0 0;font-size:.81rem;color:var(--ink-3)}
.rc .fiche-jointe{margin:.35rem 0 0;font-size:.87rem;display:flex;gap:.5rem;align-items:center}
.rc .fiche-jointe a{color:var(--accent-2)}
.rc form.inline{display:inline;margin:0}
.rc .joindre-fiche{margin-top:.3rem}
.rc .joindre-fiche summary{font-size:.81rem;color:var(--ink-3);cursor:pointer}
.rc .joindre-fiche form{display:flex;gap:.35rem;margin-top:.3rem;flex-wrap:wrap}
.rc .joindre-fiche select{font:inherit;font-size:.87rem;padding:.25rem .35rem;border:1px solid var(--rule);border-radius:4px;
    background:var(--surface);color:var(--ink);max-width:100%}
.rc .redite{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:.4rem 0 0;padding:.35rem .5rem;border-radius:4px;
    background:var(--warn-soft);font-size:.81rem;color:var(--warn)}
.taches .fiche-tache{display:block;font-size:.81rem;color:var(--accent-2);margin-top:.15rem}
.taches .joindre-fiche summary{font-size:.81rem;color:var(--ink-3);cursor:pointer}
.taches .joindre-fiche form{display:flex;gap:.3rem;margin-top:.25rem;flex-wrap:wrap}
.taches .joindre-fiche select{font:inherit;font-size:.81rem;padding:.2rem .3rem;border:1px solid var(--rule);border-radius:4px;background:var(--surface);color:var(--ink)}
.plan-enc{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:.2rem 1.2rem;margin:0;padding:.5rem .9rem}
.plan-enc div{padding:.35rem 0}
.plan-enc .large{grid-column:1/-1}
.plan-enc dt{font-size:.81rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.plan-enc dd{margin:.15rem 0 0;font-size:.91rem;color:var(--ink);white-space:pre-wrap}
.plan-enc .o{display:block;font-size:.81rem;color:var(--ink-3)}
.acceptations{margin:0;padding:0 .9rem .5rem;font-size:.81rem;color:var(--ink-3)}
.pad-plan{padding:0 .9rem .8rem;margin:0}
.pad-plan summary{font-size:.87rem;color:var(--accent);cursor:pointer}
.formulaire-court input[type=number]{width:6rem}
.apercus-recap{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:.8rem;padding:.7rem .9rem .9rem}
.apercus-recap>div{border:1px dashed var(--rule);border-radius:6px;padding:.6rem .7rem}
.apercus-recap .t{margin:0 0 .3rem;font-size:.87rem;font-weight:600;color:var(--ink)}
.apercus-recap ul{margin:0;padding-left:1rem;font-size:.87rem;color:var(--ink-2)}
.apercus-recap .o{margin:0;font-size:.81rem;color:var(--ink-3)}
.partage-invites{display:flex;flex-direction:column;gap:.35rem;padding:.6rem .9rem .8rem;margin:0;font-size:.91rem}
.partage-invites .o{font-size:.81rem;color:var(--ink-3)}
.partage-invites .bouton{align-self:flex-start;margin-top:.2rem}
.qr{margin:0 .9rem}.qr svg{width:180px;height:auto;display:block;background:#fff;border-radius:6px}
.formulaire code{font-family:var(--mono);font-size:.87rem;background:var(--surface-2);padding:.1rem .3rem;border-radius:3px;word-break:break-all}
.securite-plus{margin:0 .9rem;padding-top:.7rem;border-top:1px solid var(--rule-soft);font-size:.91rem}
.securite-plus p{margin:.25rem 0}
.securite-plus .o{font-size:.81rem;color:var(--ink-3)}
.sessions{margin:.2rem 0 .4rem;padding-left:1rem;font-size:.87rem;color:var(--ink-2)}
.fermer-sessions{margin:-.4rem 0 0;padding:0 .9rem}
.notice{max-width:52rem}
.notice h2+p{margin-top:.4rem}
.politique{margin:0 .9rem;padding-left:1.1rem;font-size:.91rem;color:var(--ink-2);display:flex;flex-direction:column;gap:.35rem}
.purge summary{font-size:.81rem;color:var(--crit);cursor:pointer}
.purge form{margin-top:.35rem}
.gerer-livrable{margin:0 0 0 .3rem;display:inline}
.groupe-elements{padding:.2rem 0 .4rem;border-bottom:1px solid var(--rule-soft)}
.groupe-elements:last-of-type{border-bottom:0}
.groupe-elements h3{margin:.6rem .9rem .1rem;font-size:.87rem;font-weight:600;color:var(--ink);display:flex;gap:.4rem;align-items:baseline}
.groupe-elements h3 .o{font-weight:400;font-size:.81rem;color:var(--ink-3)}
.ajout-element{margin:.2rem .9rem .5rem}
.ajout-element summary{font-size:.81rem;color:var(--accent);cursor:pointer}
.form-element{display:flex;flex-direction:column;gap:.35rem;margin-top:.4rem;max-width:40rem}
.form-element select,.form-element input,.form-element textarea{font:inherit;font-size:.91rem;padding:.35rem .5rem;border:1px solid var(--rule);
    border-radius:4px;background:var(--surface);color:var(--ink)}
.autonomie{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:.3rem}
.autonomie legend{font-size:.87rem;color:var(--ink-2);margin-bottom:.3rem}
.autonomie label{display:flex;gap:.5rem;align-items:flex-start;padding:.4rem .5rem;border:1px solid var(--rule-soft);border-radius:5px;cursor:pointer}
.autonomie label:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.autonomie span{display:flex;flex-direction:column;gap:.1rem}
.autonomie b{font-size:.87rem;font-weight:600;color:var(--ink)}
.autonomie i{font-style:normal;font-size:.81rem;color:var(--ink-3);line-height:1.4}
.aide-bouton{background:#CC6030;border-color:#CC6030;color:#fff;text-decoration:none}
.aide-bouton:hover{background:#b3522a;border-color:#b3522a;color:#fff}
.besoin-aide{margin:0 1rem;text-align:center}
.choix-sujet{display:flex!important;flex-direction:row!important;flex-wrap:wrap;gap:.35rem}
.choix-sujet legend{width:100%;margin-bottom:.35rem}
.choix-sujet label{cursor:pointer}
.choix-sujet input{position:absolute;opacity:0}
.choix-sujet span{display:block;padding:.35rem .7rem;border:1px solid var(--rule);border-radius:999px;font-size:.87rem;background:var(--surface)}
.choix-sujet input:checked+span{border-color:#CC6030;background:#fbeee7;color:#9a4520;font-weight:500}
.choix-sujet input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.aide-lue{padding:1rem 1.2rem;max-width:46rem}
.aide-lue .message{margin:.4rem 0;font-size:.95rem;white-space:pre-wrap;line-height:1.55}
.aide-lue .o{margin:0;font-size:.81rem;color:var(--ink-3)}
.reponse-aide{margin-top:.8rem;padding:.6rem .8rem;border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 5px 5px 0}
.aide-carte{border-color:#CC6030}

/* ---------------- réglages : lisibilité ---------------- */
.formulaire .intro{margin:0 .9rem;font-size:.87rem;color:var(--ink-3);line-height:1.45;max-width:42rem}
.carte>.intro{margin:.5rem .9rem .2rem;font-size:.87rem;color:var(--ink-3);line-height:1.45;max-width:46rem}
.sous-section{margin:.8rem .9rem 0;padding-top:.7rem;border-top:1px solid var(--rule-soft);font-size:.81rem;
    font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.bloc-reglage{display:flex;flex-direction:column;gap:.6rem;padding:.7rem .9rem;border-top:1px solid var(--rule-soft)}
.bloc-reglage .champ,.bloc-reglage .deux{margin:0}
.bloc-reglage .deux .champ{margin:0}
.bloc-reglage .b{margin:0}
.ligne-reglage{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:0;font-size:.91rem}
.ligne-reglage b{font-weight:600;color:var(--ink)}
.ligne-reglage select{font:inherit;font-size:.91rem;padding:.3rem .45rem;border:1px solid var(--rule);border-radius:4px;
    background:var(--surface);color:var(--ink)}
.sessions-repli summary{font-size:.87rem;color:var(--accent);cursor:pointer}
.sessions-repli form{margin:.4rem 0 0}
.sessions{margin:.4rem 0;padding-left:1rem;font-size:.87rem;color:var(--ink-2);display:flex;flex-direction:column;gap:.25rem}
.sessions .o{color:var(--ink-3);font-size:.81rem}
.puce{white-space:nowrap}
.carte>h2{flex-wrap:wrap;row-gap:.25rem}

/* ---------------- onglets de la page projet ---------------- */
.onglets-projet{position:sticky;top:0;z-index:5;display:flex;gap:.15rem;flex-wrap:wrap;align-items:center;
    margin:-.2rem 0 0;padding:.3rem .35rem;background:var(--surface);border:1px solid var(--rule);border-radius:8px}
.onglets-projet a{font-size:.91rem;padding:.42rem .8rem;border-radius:5px;color:var(--ink-2);text-decoration:none}
.onglets-projet a:hover{background:var(--surface-2);color:var(--ink)}
.onglets-projet a[aria-current="page"]{background:var(--accent);color:var(--surface);font-weight:500}
.onglets-projet .lien-timeline{margin-left:auto;border:1px solid var(--accent);color:var(--accent);font-weight:500}
.onglets-projet .lien-timeline:hover{background:var(--accent-soft);color:var(--accent)}
@media (max-width:700px){.onglets-projet a{font-size:.87rem;padding:.35rem .55rem}.onglets-projet .lien-timeline{margin-left:0}}
.carte>.intro{margin:.55rem .9rem .1rem}
.axes-vides{margin:0;font-size:.87rem;color:var(--ink-3);display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}
.axes-vides span{display:inline-flex;gap:.3rem;align-items:center}

/* ---------------- onglets, timeline, appels à créer ---------------- */
.onglets-projet{padding:.35rem;gap:.3rem;border-color:var(--rule);box-shadow:0 2px 8px -6px rgba(12,30,60,.35)}
.onglets-projet a{font-size:.95rem;font-weight:500;padding:.55rem 1rem;color:var(--ink);border:1px solid transparent;border-radius:6px}
.onglets-projet a:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-soft)}
.onglets-projet a[aria-current="page"]{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
.onglets-projet .lien-timeline{margin-left:auto;background:var(--orange);border-color:var(--orange);color:#fff;font-weight:600;
    display:inline-flex;gap:.45rem;align-items:center;box-shadow:0 2px 6px -3px rgba(204,96,48,.6)}
.onglets-projet .lien-timeline:hover{background:#b3522a;border-color:#b3522a;color:#fff}
.quand-reunion{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap;padding:.5rem .9rem;border-top:1px solid var(--rule-soft);background:var(--accent-soft)}
.quand-reunion .ch{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem}
.quand-reunion input{font:inherit;padding:.35rem .5rem;border:1px solid var(--rule);border-radius:4px;background:var(--surface);color:var(--ink)}
.quand-reunion .aide{margin:0;flex:1 1 18rem;font-size:.82rem;color:var(--ink-2)}
.lien-objet{display:inline-block;margin-top:.3rem;font-size:.87rem;font-weight:500}
.appel-creer{display:flex;gap:.9rem;align-items:center;flex-wrap:wrap;padding:.8rem .95rem;border-bottom:1px solid var(--rule-soft);background:var(--accent-soft)}
.appel-creer span{font-size:.87rem;color:var(--ink-2)}
.bouton.grand{font-size:.95rem;padding:.55rem 1.1rem;text-decoration:none}
.nouveau-projet{display:block;margin:.2rem 1rem .8rem;text-align:center;text-decoration:none;
    background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;font-size:.92rem;padding:.55rem .8rem;border-radius:6px}
.nouveau-projet:hover{filter:brightness(1.12);color:#fff}
.envoyer{display:inline-flex;gap:.4rem;align-items:center}
.envoyer .aide{font-size:.82rem;color:var(--ink-3)}
.envoi-decision,.envoi-tache{font-weight:600;border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.envoi-decision:hover,.envoi-tache:hover{background:var(--accent);color:#fff}
.quand-reunion .aide{font-family:var(--sans)}
.cloture .etape-titre{margin:0;font-weight:600;font-size:.95rem;color:var(--ink)}
.cloture .etape-titre.ok{color:var(--ok)}
.cloture .etape-texte{margin:0;font-size:.87rem;color:var(--ink-2);line-height:1.45}
.cloture .issue{display:flex;flex-direction:column;gap:.35rem;padding:.6rem .7rem;border:1px solid var(--rule);border-radius:6px;background:var(--surface)}
.cloture .issue-titre{margin:0;font-weight:600;font-size:.9rem;color:var(--ink)}
.cloture .issue-texte{margin:0;font-size:.85rem;color:var(--ink-2);line-height:1.4}
.cloture .issue-bloque{margin:0;font-size:.84rem;color:var(--crit)}
.cloture .issue .case{display:flex;gap:.45rem;align-items:flex-start;font-size:.84rem;color:var(--ink)}
.cloture .issue .bouton{align-self:flex-start}
.cloture{max-height:55vh;overflow-y:auto}
.voletdoc>header .telecharger{text-decoration:none}
.voletdoc>header .o{font-size:.82rem;color:var(--ink-3)}
.reunions-resume{list-style:none;margin:0;padding:0}
.reunions-resume>li{padding:.75rem .95rem;border-bottom:1px solid var(--rule-soft)}
.reunions-resume>li:last-child{border-bottom:0}
.entete-reunion{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
.titre-reunion{font-weight:600;font-size:.95rem}
.entete-reunion .o{margin-left:auto;font-size:.84rem;color:var(--ink-3)}
.corps-reunion{display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:.4rem 1.4rem;margin-top:.5rem}
.corps-reunion .bloc-titre{margin:0 0 .2rem;font-size:.8rem;font-weight:600;color:var(--ink-2)}
.corps-reunion ol,.corps-reunion ul{margin:0;padding-left:1.1rem;display:flex;flex-direction:column;gap:.3rem}
.corps-reunion li{font-size:.9rem;color:var(--ink)}
.corps-reunion li .t{margin-right:.35rem}
.corps-reunion li .qui{display:block;font-size:.83rem;color:var(--ink-2)}
.corps-reunion li .puce{margin-left:.1rem}
.bulle{width:min(400px,92vw)}
.bulle .reecrire{display:flex;gap:.4rem;align-items:baseline;font-size:.86rem;color:var(--ink);cursor:pointer}
.bulle .reecrire .aide{font-size:.8rem;color:var(--ink-3)}
.zone-reecriture{display:flex;flex-direction:column;gap:.25rem}
.zone-reecriture label{font-size:.82rem;font-weight:600;color:var(--ok)}
.zone-reecriture textarea{border-color:var(--ok)!important;background:var(--ok-soft)!important}
.bulle>.aide{margin:0;font-size:.8rem;color:var(--ink-3)}
.rc .proposition{margin:.35rem 0;padding:.4rem .55rem;border-radius:5px;background:var(--surface-2);font-size:.88rem;line-height:1.5}
.rc .proposition .lib{display:block;font-size:.81rem;font-weight:600;color:var(--ink-2);margin-bottom:.15rem}
.rc .proposition del{color:var(--crit);background:var(--crit-soft);text-decoration:line-through;margin-right:.3rem}
.rc .proposition ins{color:var(--ok);background:var(--ok-soft);text-decoration:none}
.rc form.sur-place{margin-top:.35rem}
.rc form.sur-place .aide{font-size:.82rem;color:var(--ink-3)}
.cloture .issue-bloque a{color:var(--crit);font-weight:500}

/* ---------------- administration ---------------- */
.compte-admin{display:inline-flex;align-items:center;justify-content:center;min-width:1.3rem;height:1.3rem;
    padding:0 .35rem;margin-left:.35rem;border-radius:999px;background:var(--crit);color:var(--surface);
    font-family:var(--mono);font-size:.8rem;font-weight:600}
.admin-attente{box-shadow:inset 3px 0 0 var(--warn)}
.admin-liste{list-style:none;margin:0 0 .8rem;padding:0;display:flex;flex-direction:column}
.admin-liste li{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;justify-content:space-between;
    padding:.6rem 0;border-bottom:1px solid var(--rule-soft)}
.admin-liste li:last-child{border-bottom:0}
.admin-liste .actions{display:flex;gap:.4rem;margin:0}
.admin-liste .o,.admin-table .o{color:var(--ink-3);font-size:.87rem}
.alerte-ligne .puce{margin:0 .2rem .25rem 0}
.defile{overflow-x:auto}
.admin-table{width:100%;border-collapse:collapse;font-size:.93rem}
.admin-table th{text-align:left;font-size:.8rem;font-weight:600;color:var(--ink-3);text-transform:uppercase;
    letter-spacing:.04em;padding:.4rem .6rem;border-bottom:1px solid var(--rule)}
.admin-table td{padding:.55rem .6rem;border-bottom:1px solid var(--rule-soft);vertical-align:top}
.admin-table .n{font-variant-numeric:tabular-nums;white-space:nowrap}
.admin-table th.n,.admin-table td.n:not(:first-child){text-align:right}
.admin-table .actions{text-align:right}
.admin-table .actions form{display:inline-flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem;margin:0}
.admin-table td:first-child{min-width:12rem}
.admin-table tr.suspendu td{opacity:.7}
.admin-table .crit{color:var(--crit)}
.admin-table.journal tr.signale td{background:var(--warn-soft)}
.admin-table.journal .puce{margin-right:.2rem}
.bouton.danger{color:var(--crit);border-color:var(--crit)}
.filtres{display:flex;flex-wrap:wrap;gap:.35rem}

/* ---------------- pages seules (mot de passe oublié) ---------------- */
.page-seule{display:grid;place-items:center;min-height:100vh;padding:1.5rem}
.boite-seule{width:100%;max-width:420px;display:flex;flex-direction:column;gap:.2rem}
.boite-seule .logo{margin:0 auto .8rem}
.boite-seule h1{font-family:var(--serif);font-weight:500;font-size:1.7rem;text-align:center;margin:0 0 .6rem}
.boite-seule .champ{margin-bottom:.9rem}
.boite-seule .champ label{display:block;font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.3rem}
.boite-seule .champ input{width:100%;font:inherit;padding:.55rem .65rem;border:1px solid var(--rule);border-radius:4px;background:var(--surface);color:var(--ink)}
.boite-seule form .bouton{width:100%}
.boite-seule .o{color:var(--ink-3);font-size:.92rem}
.lien-oubli{display:block;text-align:center;margin-top:1rem;font-size:.92rem}

/* ---------------- ouverture : le logo apparaît, puis le formulaire ---------------- */
@keyframes cursus-logo-ouverture{from{opacity:0;transform:scale(.86) rotate(-8deg)}to{opacity:1;transform:none}}
@keyframes cursus-entree{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.logo.ouverture{animation:cursus-logo-ouverture .7s cubic-bezier(.2,.8,.2,1) both}
.entree > :not(.logo){animation:cursus-entree .5s ease-out .35s both}
@media (prefers-reduced-motion:reduce){.logo.ouverture,.entree > :not(.logo){animation:none}}

/* ---------------- téléphone : une barre compacte en haut, une colonne ---------------- */
@media (max-width:880px){
  /* minmax(0,…) : la colonne prend la largeur de l'écran, pas celle du contenu le plus large */
  .app{grid-template-columns:minmax(0,1fr)}
  aside{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;
        gap:.5rem .4rem;padding:.55rem 0 0;border-bottom:1px solid var(--rule)}
  .marque{grid-column:1;grid-row:1;padding:0 .9rem}
  .marque span{display:none}
  .nouveau-projet{grid-column:2;grid-row:1;margin:0;padding:.35rem .6rem;font-size:.85rem;white-space:nowrap}
  .pied{grid-column:3;grid-row:1;padding:0 .9rem 0 0;font-size:.85rem}
  .pied .qui{display:none}
  nav.princ{grid-column:1/-1;grid-row:2;min-width:0;padding:0 .4rem;scrollbar-width:none}
  nav.princ::-webkit-scrollbar{display:none}
  nav.princ a{padding:.55rem .7rem}
  nav.princ a .n{display:none}
  .besoin-aide{grid-column:1/-1;grid-row:3;margin:0 .9rem .6rem}
  main{min-width:0}
  .topbar{padding:.8rem .9rem}
  .corps{padding:.9rem;gap:1rem}
}
@media (max-width:880px){
  /* plan de charge : 12 barres qui tiennent dans l'écran */
  .barres{grid-template-columns:repeat(12,minmax(0,1fr));gap:.15rem}
  .barres .col{min-width:0;font-size:.78rem}
  /* relecture : l'en-tête du document passe à la ligne */
  .voletdoc>header,.voletrem>header{flex-wrap:wrap;row-gap:.35rem}
  .voletdoc>header .d,.voletrem>header .d{margin-left:0}
}
@media (max-width:700px){
  /* relecture sur téléphone : le document dans un cadre à hauteur d'écran, les remarques à la suite, sans second ascenseur */
  .voletdoc{max-height:62vh}
  .voletrem{max-height:none}
  .remliste{overflow:visible}
  .doccorps{padding:.9rem .9rem 2rem}
}

/* ---------------- notifications ---------------- */
.marque-ligne{display:flex;align-items:center;justify-content:space-between;padding-right:.8rem}
.cloche{position:relative;display:inline-flex;align-items:center;justify-content:center;width:2.2rem;height:2.2rem;
    border-radius:999px;color:var(--ink-3);text-decoration:none}
.cloche:hover,.cloche[aria-current="page"]{background:var(--surface-3);color:var(--ink)}
.cloche.active{color:var(--accent)}
.cloche .nb{position:absolute;top:.05rem;right:-.1rem;min-width:1.15rem;height:1.15rem;padding:0 .28rem;border-radius:999px;
    background:var(--orange);color:#fff;font:600 .68rem/1.15rem var(--sans);text-align:center}
.avis-liste{list-style:none;margin:0;padding:0}
.avis-liste li{border-bottom:1px solid var(--rule-soft)}
.avis-liste li:last-child{border-bottom:0}
.avis-liste a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.15rem 1rem;padding:.75rem .95rem;color:inherit;text-decoration:none}
.avis-liste a:hover{background:var(--surface-2)}
.avis-liste b{grid-column:1;font-weight:600}
.avis-liste .quand{grid-column:2;grid-row:1;font-size:.82rem;color:var(--ink-3);white-space:nowrap}
.avis-liste .corps,.avis-liste .projet{grid-column:1;color:var(--ink-2);font-size:.92rem}
.avis-liste .projet{color:var(--ink-3);font-size:.84rem}
.avis-liste li.nouveau a{box-shadow:inset 3px 0 0 var(--orange)}
.avis-liste li.lu b{font-weight:500;color:var(--ink-2)}
@media (max-width:880px){
  .marque-ligne{grid-column:1;grid-row:1;padding-right:0}
  .marque-ligne .marque{padding:0 .5rem 0 .9rem}
}
.bloc-reglage.ligne-reglage{flex-direction:row;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}
.avis-details{flex-direction:row!important;flex-wrap:wrap;align-items:flex-end;gap:.6rem 1rem}
.avis-details .case{margin:0;flex:1 1 16rem;align-items:flex-start}
.avis-details .case input{margin-top:.2rem;flex:0 0 auto}
.avis-details .case .aide{display:block;margin:.15rem 0 0;color:var(--ink-3);font-size:.85rem}
#recapitulatifs summary{display:flex;flex-wrap:wrap;gap:.2rem .6rem;align-items:baseline;padding:.75rem .95rem;cursor:pointer;font-weight:600}
#recapitulatifs summary .d{font-weight:400;font-size:.87rem;color:var(--ink-3)}

.nouveau-projet .court{display:none}
@media (max-width:880px){
  .nouveau-projet .long{display:none}
  .nouveau-projet .court{display:inline}
  .marque-ligne{min-width:0;gap:.2rem;justify-content:flex-start}
  .marque-ligne .marque{min-width:0}
  .marque-ligne .cloche{flex:0 0 auto}
}
@media (max-width:640px){
  /* deux champs côte à côte deviennent une colonne alignée sur les autres */
  .formulaire .deux{margin:0 .9rem;gap:0}
  .formulaire .deux .champ{margin:0}
}

/* ---------------- page de confidentialité ---------------- */
.page-texte{padding-inline:16px;padding-block:1.5rem 3rem}
.texte-seul{max-width:46rem;margin:0 auto;display:flex;flex-direction:column;gap:1rem}
.retour-accueil{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--serif);font-size:1.4rem;color:var(--ink);text-decoration:none}
.lien-oubli.discret{margin-top:.4rem;font-size:.84rem;color:var(--ink-3)}
.genres-avis,.resume-avis{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem;flex:1 1 100%}
.genres-avis legend,.resume-avis legend{font-weight:600;font-size:.9rem;margin-bottom:.3rem;padding:0}
.genres-avis .case{margin:0;font-size:.92rem;flex:0 0 auto;align-items:center}
.fermer-compte summary{cursor:pointer;color:var(--crit);font-size:.92rem}
.fermer-compte p{margin:.5rem 0;font-size:.9rem;color:var(--ink-2)}
.fermer-compte .obstacles{margin:.4rem 0;padding-left:1.1rem;color:var(--warn);font-size:.9rem}

/* ---------------- prise en main ---------------- */
.premiers-pas{padding:1rem 1.1rem;box-shadow:inset 3px 0 0 var(--accent)}
.premiers-pas h2{margin:0 0 .4rem;font-size:1.1rem}
.premiers-pas p{margin:0 0 .8rem;color:var(--ink-2)}
.premiers-pas .b{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.premiers-pas form{margin:0}
.guide-roles{display:flex;flex-wrap:wrap;gap:.4rem}
.guide-roles a{padding:.35rem .75rem;border:1px solid var(--rule);border-radius:999px;text-decoration:none;color:var(--ink-2);font-size:.9rem;background:var(--surface)}
.guide-roles a.actif{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.guide{scroll-margin-top:1rem}
.guide h2{padding:.8rem 1rem 0}
.etapes{margin:.4rem 0 1rem;padding:0 1.2rem 0 2.6rem;display:flex;flex-direction:column;gap:.65rem;line-height:1.55;color:var(--ink-2)}
.etapes b{color:var(--ink)}
.pied .lien-guide{display:block;margin:.3rem 0 0;font-size:.85rem}
@media (max-width:880px){.pied .lien-guide{display:none}}

/* ---------------- fiches : bibliographie, pièces jointes ---------------- */
.biblio{margin:0;padding:.2rem 1.1rem .4rem 2.4rem;display:flex;flex-direction:column;gap:.9rem}
.biblio li{padding-bottom:.8rem;border-bottom:1px solid var(--rule-soft)}
.biblio li:last-child{border-bottom:0}
.biblio .citation{margin:0;line-height:1.5}
.biblio .citation a{color:var(--ink);text-decoration-color:var(--rule)}
.biblio .ids{margin:.25rem 0 0;display:flex;flex-wrap:wrap;gap:.3rem}
.biblio .ids a.puce{text-decoration:none}
.annotation{margin:.5rem 0 0;padding:.45rem .7rem;border-left:3px solid var(--accent-2);background:var(--accent-soft);
    border-radius:0 4px 4px 0;white-space:pre-wrap;color:var(--ink-2);font-size:.94rem}
.modifier-ref summary{cursor:pointer;font-size:.85rem;color:var(--accent);margin-top:.35rem}
.deux-ids{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.5rem}
.export-ris{margin:0 1rem .6rem}
.ajout-refs,.ajout-piece,.ajout-fiche-projet{padding:.8rem 1rem;border-top:1px solid var(--rule-soft);display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.ajout-refs{flex-direction:column;align-items:stretch}
.ajout-fiche-projet select{max-width:100%;flex:1 1 14rem}
.intro-carte{margin:0 1rem .5rem;color:var(--ink-3);font-size:.9rem}

/* ---------------- réunions : demande et ordre du jour ---------------- */
.demande-reunion{padding-bottom:.6rem}
.demande-reunion > p,.demande-reunion blockquote{margin:.4rem 1rem}
.valider-demande,.decliner-demande{margin:.6rem 1rem}
.decliner-demande summary{cursor:pointer;color:var(--ink-3);font-size:.9rem}
.odj li{grid-template-columns:auto minmax(0,1fr) auto}
.odj li > .o{grid-column:2}
.odj .retirer-point{margin:0;grid-column:3;grid-row:1}
.odj .retirer-point button{color:var(--ink-3)}
.odj .retirer-point button:hover{color:var(--crit)}

/* ---------------- nouveau projet : modèle à cocher ---------------- */
.apercu-choix{list-style:none;margin:.2rem 0 .8rem;padding:0;display:flex;flex-direction:column;gap:.25rem}
.apercu-choix label{display:flex;flex-wrap:wrap;gap:.2rem .5rem;align-items:baseline;font-size:.92rem;cursor:pointer}
.apercu-choix input{margin:0;align-self:center}
.apercu-choix i{font-style:normal;color:var(--ink-3);font-size:.85rem}
.apercu-choix label:has(input:not(:checked)) b{color:var(--ink-3);text-decoration:line-through}
.organiser-reunion{padding:0}
.organiser-reunion summary{cursor:pointer;padding:.6rem .95rem;font-size:.9rem;color:var(--accent)}
.organiser-corps{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:.8rem 1.4rem;padding:0 .95rem .9rem}

/* ---------------- candidature d'encadrant ---------------- */
.boite-large{max-width:560px}
.boite-seule select,.boite-seule textarea{width:100%;font:inherit;padding:.55rem .65rem;border:1px solid var(--rule);border-radius:4px;background:var(--surface);color:var(--ink)}
.deux-champs{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:0 .8rem}
.piege{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.case-seule{display:flex;gap:.5rem;align-items:flex-start;margin:.2rem 0 1rem;font-size:.92rem}
.nouveau-compte{margin:1.2rem 0 0;text-align:center;font-size:.92rem;color:var(--ink-2)}
.candidature{margin-top:.3rem;font-size:.9rem;color:var(--ink-2)}
.candidature blockquote{margin:.35rem 0 0}
.zone-suppression{margin-top:.8rem;padding-top:.7rem;border-top:1px solid var(--crit-soft)}
.zone-suppression .titre-zone{margin:0;font-weight:600;font-size:.9rem;color:var(--crit)}
/* type de projet : une couleur par type, lisible d'un coup d'œil */
.type-projet{--c:var(--ax5);display:inline-block;vertical-align:baseline;font-size:.81rem;font-weight:600;line-height:1.3;
    letter-spacing:.01em;padding:.1rem .55rem;border-radius:999px;white-space:nowrap;color:var(--c);
    background:color-mix(in srgb,var(--c) 13%,var(--surface));border:1px solid color-mix(in srgb,var(--c) 45%,transparent)}
.type-projet.t-m2{--c:var(--ax2)}
.type-projet.t-these_exercice{--c:var(--ax1)}
.type-projet.t-these_sciences{--c:var(--ax4)}
.type-projet.t-article{--c:var(--ax3)}
.type-projet.t-communication{--c:var(--accent-2)}
.topbar .sub .type-projet{margin-right:.35rem;font-size:.8rem}
.en-ligne{display:inline-flex;margin:0}
/* vue d'ensemble : qui travaille sur le projet */
.membre-etudiant{display:inline-flex;align-items:center;gap:.3rem;font-size:.84rem;font-weight:600;color:var(--ink)}
.membre-etudiant::before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:var(--accent-2)}
.membres-autres{display:flex;flex-wrap:wrap;gap:.15rem .8rem;font-size:.79rem;color:var(--ink-2)}
.membres-autres i{font-style:normal;color:var(--ink-3)}
/* rappels d'échéance */
.evts .rappels{display:flex;flex-wrap:wrap;gap:.3rem;flex-basis:100%;padding-left:7.1rem}
.evts .rappel{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;color:var(--ink-2);background:var(--warn-soft);
    border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-radius:4px;padding:.08rem .45rem}
.evts .rappel b{font-family:var(--mono);font-weight:600;color:var(--warn)}
.form-rappel{display:flex;flex-wrap:wrap;gap:.4rem .8rem;align-items:center}
.form-rappel input[type=number]{width:4.5rem}
.form-rappel .choisis{display:flex;flex-wrap:wrap;gap:.2rem .8rem;flex-basis:100%}
@media (max-width:640px){.evts .rappels{padding-left:0}}
.type-projet.t-organisation{--c:var(--warn)}
/* sondage de créneaux */
.sondage .creneaux{list-style:none;margin:.2rem 0 .6rem;padding:0;display:flex;flex-direction:column;gap:.45rem}
.sondage .creneau{display:flex;flex-direction:column;gap:.5rem;padding:.6rem .7rem .65rem;
    border:1px solid var(--rule);border-left:4px solid var(--rule);border-radius:6px;background:var(--surface)}
/* Une ligne jamais touchée ne doit pas pouvoir passer inaperçue : c'est ce
   qui a fait sauter un créneau à un participant sans que personne le voie. */
.sondage .creneau.a-faire{border-left-color:var(--warn)}
.sondage .creneau.fait{border-left-color:var(--ok)}
/* Le créneau le plus large se marque par le fond et son pourtour ; le liseré
   de gauche reste à l'état de MA réponse, qui ne doit jamais être masqué. */
.sondage .creneau.phare{border-top-color:var(--ok);border-right-color:var(--ok);
    border-bottom-color:var(--ok);background:var(--ok-soft)}
.sondage .creneau:target{outline:2px solid var(--accent);outline-offset:2px}
.sondage .quand{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}
.sondage .quand b{font-size:.95rem;font-weight:600}
.sondage .quand i{font-style:normal;font-family:var(--mono);font-size:.8rem;color:var(--ink-3)}
.sondage .quand .etat{margin-left:auto;font-size:.76rem;font-weight:500;color:var(--warn)}
.sondage .creneau.fait .quand .etat{color:var(--ok)}
.sondage .quand .puce{margin-left:auto}

/* Trois boutons de même taille, lisibles au pouce : la réponse se donne d'un
   geste, sans viser une pastille de 13 px. */
.sondage .seg{display:flex;gap:.35rem}
.sondage .seg .r{flex:1 1 0;min-width:0;min-height:2.9rem;display:flex;flex-direction:column;
    align-items:center;justify-content:center;gap:.05rem;line-height:1.15;cursor:pointer;
    border:1px solid var(--rule);border-radius:6px;background:var(--surface);color:var(--ink-3)}
.sondage .seg .r input{position:absolute;opacity:0;width:0;height:0}
.sondage .seg .r .s{font-size:.95rem}
.sondage .seg .r .l{font-size:.72rem}
.sondage .seg .r:hover{border-color:var(--ink-3)}
.sondage .seg .r:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.sondage .seg .r.oui:has(input:checked){border:2px solid var(--ok);background:var(--ok-soft);color:var(--ok);font-weight:600}
.sondage .seg .r.si_necessaire:has(input:checked){border:2px solid var(--warn);background:var(--warn-soft);color:var(--warn);font-weight:600}
.sondage .seg .r.non:has(input:checked){border:2px solid var(--crit);background:var(--crit-soft);color:var(--crit);font-weight:600}

/* Les autres, en une ligne : une jauge et une phrase, le détail sur demande.
   Le mur de pastilles de noms repoussait le bouton hors de l'écran. */
.sondage .autres{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;font-size:.78rem;color:var(--ink-3)}
.sondage .jauge{display:flex;width:4.6rem;height:5px;border-radius:3px;overflow:hidden;background:var(--surface-3)}
.sondage .jauge i{display:block}
.sondage .jauge .o{background:var(--ok)}
.sondage .jauge .s{background:var(--warn)}
.sondage .jauge .n{background:var(--crit)}
.sondage .qui-detail summary{cursor:pointer;color:var(--accent);font-size:.78rem}
.sondage .qui-detail .qui{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.3rem}
.sondage .qui{display:flex;flex-wrap:wrap;gap:.25rem;font-size:.81rem}
.sondage .qui .n{padding:.05rem .4rem;border-radius:3px;background:var(--surface-2);color:var(--ink-3)}
.sondage .qui .n.oui{background:var(--ok-soft);color:var(--ok)}
.sondage .qui .n.si{background:var(--warn-soft);color:var(--warn)}
.sondage .qui .n.non{background:var(--crit-soft);color:var(--crit)}
.sondage .retenir{margin-top:.1rem}

/* Où j'en suis : en tête, et répété en pied là où se pose le pouce. */
.sondage .avance{display:flex;align-items:center;gap:.6rem;margin:.1rem 0 .2rem}
.sondage .avance .rail{flex:1 1 auto;height:6px;border-radius:3px;background:var(--surface-3);overflow:hidden}
.sondage .avance .rail i{display:block;height:100%;background:var(--warn);transition:width .2s}
.sondage .avance .rail i.fini{background:var(--ok)}
.sondage .avance .compte{font-family:var(--mono);font-size:.8rem;color:var(--ink-2);white-space:nowrap}
@media (prefers-reduced-motion:reduce){.sondage .avance .rail i{transition:none}}

/* Collé en bas de l'écran, pas en bas du document : c'est là que se pose le
   pouce, et c'est là qu'il faut lire ce qui manque. Pas de marge négative —
   les deux pages qui s'en servent n'ont pas les mêmes retraits de carte. */
.sondage .pied-rep{position:sticky;bottom:0;z-index:3;display:flex;align-items:center;gap:.7rem;
    margin:.6rem 0 .2rem;padding:.6rem .8rem .65rem;
    background:var(--warn-soft);border:1px solid var(--warn);border-radius:7px;
    box-shadow:0 -3px 12px -8px rgba(12,30,60,.5)}
.sondage .pied-rep.fini{background:var(--ok-soft);border-color:var(--ok)}
.sondage .pied-rep .pastille{flex:0 0 auto;width:1.6rem;height:1.6rem;border-radius:50%;
    background:var(--warn);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.9rem}
.sondage .pied-rep.fini .pastille{background:var(--ok)}
/* « mot » et « t » sont déjà pris ailleurs — la page des invités a son
   propre .mot pour le message de l'organisateur. Des noms à soi, ici. */
.sondage .pied-rep .dire{flex:1 1 auto;min-width:0}
.sondage .pied-rep .quoi{margin:0;font-size:.86rem;font-weight:600;color:var(--warn)}
.sondage .pied-rep.fini .quoi{color:var(--ok)}
.sondage .pied-rep .plus{margin:.05rem 0 0;font-size:.78rem;color:var(--ink-2)}
.sondage .pied-rep .y-aller{flex:0 0 auto;font-size:.79rem;font-weight:500;padding:.35rem .6rem;
    border:1px solid var(--warn);border-radius:5px;color:var(--warn);text-decoration:none;background:var(--surface)}

/* Avec JavaScript, chaque ligne part seule : le bouton d'enregistrement n'a
   plus d'objet. Sans lui, il reste et le formulaire marche comme avant. */
form[data-sondage].auto .sans-js{display:none}
@media (max-width:880px){
  /* Au-dessus de la barre d'onglets, là où elle existe : la page des invités
     extérieurs n'en a pas, et son bandeau doit se coller en bas. */
  body:has(.onglets-bas) .sondage .pied-rep{bottom:3.6rem}
  .sondage .seg .r .l{font-size:.75rem}
}
/* Au large, la date tient la gauche et le choix la droite : trois boutons
   étirés sur toute la carte se lisent mal et visent mal. */
@media (min-width:881px){
  .sondage .creneau{display:grid;grid-template-columns:minmax(12rem,1fr) auto;
      align-items:center;column-gap:1.2rem;row-gap:.4rem}
  .sondage .quand{grid-column:1}
  .sondage .seg{grid-column:2;width:24rem}
  .sondage .autres,.sondage .retenir{grid-column:1/-1}
}
.sondage .b{display:flex;gap:.5rem;padding:0 0 .6rem}
@media (max-width:640px){.sondage .creneau{grid-template-columns:minmax(0,1fr)}}
.creneau-saisie{display:flex;gap:.4rem;margin-bottom:.3rem}
.creneau-saisie input[type=date]{flex:1 1 9rem;min-width:0}
.creneau-saisie input[type=time]{flex:0 0 6.5rem}
.sondages-ouverts{list-style:none;margin:.2rem .9rem .6rem;padding:0;display:flex;flex-direction:column;gap:.3rem}
.sondages-ouverts li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem;padding:.4rem .6rem;border-radius:6px;
    background:var(--warn-soft);border:1px solid color-mix(in srgb,var(--warn) 35%,transparent)}
.sondages-ouverts .o{font-size:.78rem;color:var(--ink-3)}
/* vue d'ensemble : sur téléphone, une carte par projet et des signaux en toutes lettres */
.signaux-mob{display:none}
@media (max-width:760px){
  .groupe-projets{padding-bottom:.5rem}
  .ligne-projet{display:flex;flex-direction:column;align-items:stretch;gap:.35rem;margin:.5rem .6rem;padding:.6rem .7rem;
      border:1px solid var(--rule);border-radius:8px;background:var(--surface)}
  .ligne-projet .titre{font-size:1rem;font-weight:600}
  .ligne-projet .creneaux,.legende-signaux{display:none}
  .signaux-mob{display:flex;flex-wrap:wrap;gap:.25rem .5rem}
  .signaux-mob .sig{display:inline-flex;align-items:center;gap:.35rem;max-width:100%;font-size:.8rem;color:var(--ink-2);
      background:var(--surface-2);border-radius:999px;padding:.1rem .5rem .1rem .15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .signaux-mob .sig.c{background:var(--crit-soft);color:var(--crit)}
  .signaux-mob .sig.w{background:var(--warn-soft);color:var(--warn)}
  .signaux-mob .sig.calme{padding-left:.5rem;color:var(--ink-3)}
  .signaux-mob .sl{width:1.15rem;height:1.15rem;font-size:.74rem}
  .ligne-projet .terme{flex-direction:row;align-items:baseline;gap:.4rem;font-family:inherit;font-size:.84rem}
  .ligne-projet .terme b{font-family:var(--mono);font-weight:600;color:var(--ink)}
  .ligne-projet .attente{display:flex;gap:.4rem;align-items:baseline;font-size:.84rem;white-space:normal}
  .ligne-projet .attente b{display:inline;flex:0 0 4.4rem}
  .compteurs{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem}
  .compteurs>div{padding:.45rem .6rem}
  .compteurs b{font-size:1.3rem}
  .compteurs span{font-size:.81rem}
  .membres-autres{gap:.1rem .6rem}
}
.rappels-livrable{display:flex;flex-wrap:wrap;gap:.3rem .6rem;align-items:baseline;margin-top:.25rem}
.rappels-livrable .rappels{display:flex;flex-wrap:wrap;gap:.3rem}
.rappels-livrable .rappel{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;color:var(--ink-2);
    background:var(--warn-soft);border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-radius:4px;padding:.08rem .45rem}
.rappels-livrable .rappel b{font-family:var(--mono);font-weight:600;color:var(--warn)}
.rappels-livrable details.edit summary{font-size:.81rem;color:var(--accent);cursor:pointer}
/* carte de l'instance (administration) */
.carte-instance .tete-carte{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;justify-content:space-between;padding-right:.9rem}
.carte-instance .tete-carte h2{border:0}
.barre-carte{display:flex;flex-wrap:wrap;gap:.35rem;padding:.5rem .9rem}
.filtre-carte{font:inherit;font-size:.8rem;padding:.16rem .6rem;border:1px solid var(--rule);border-radius:999px;
    background:var(--surface);color:var(--ink-2);cursor:pointer}
.filtre-carte[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}
.filtre-carte:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.toile-carte{background:var(--surface)}
.toile-carte svg{display:block;width:100%;height:auto}
.toile-carte .noeud{cursor:pointer}
.toile-carte .noeud:focus-visible circle{stroke:var(--ink);stroke-width:3}
.fiche-carte{display:flex;flex-wrap:wrap;gap:.3rem 1.2rem;align-items:baseline;margin:0;padding:.7rem .9rem;
    border-top:1px solid var(--rule-soft);font-size:.86rem;color:var(--ink-2);min-height:3rem}
.fiche-carte b{font-weight:600;color:var(--ink)}
.fiche-carte .mono{font-family:var(--mono);font-size:.78rem;color:var(--ink-3)}
.legende-carte{display:flex;flex-wrap:wrap;gap:.3rem 1rem;margin:0;padding:.6rem .9rem 0;font-size:.81rem;color:var(--ink-3)}
.legende-carte.roles{padding-bottom:.8rem}
.legende-carte span{display:inline-flex;align-items:center;gap:.4rem}
.legende-carte i{width:11px;height:11px;border-radius:50%;display:inline-block}
.legende-carte i.t-these_sciences{background:var(--ax1)}
.legende-carte i.t-these_exercice{background:var(--orange)}
.legende-carte i.t-m2{background:var(--ok)}
.legende-carte i.t-article{background:var(--ax4)}
.legende-carte i.t-communication{background:var(--cyan)}
.legende-carte i.t-organisation{background:var(--warn)}
.legende-carte i.personne{width:7px;height:7px;background:var(--ink-3)}
.legende-carte i.fleche{width:26px;height:9px;border-radius:0;position:relative;flex:0 0 26px}
.legende-carte i.fleche::before{content:"";position:absolute;left:0;right:5px;top:4px;border-top-width:2px;border-top-style:solid}
.legende-carte i.fleche::after{content:"";position:absolute;right:0;top:1.5px;border:4px solid transparent;border-left-width:6px}
.legende-carte i.fleche.porteur::before{border-top-color:var(--ax1)}
.legende-carte i.fleche.porteur::after{border-left-color:var(--ax1)}
.legende-carte i.fleche.coenc::before{border-top-color:var(--accent-2)}
.legende-carte i.fleche.coenc::after{border-left-color:var(--accent-2)}
.legende-carte i.fleche.etudiant::before{border-top-color:var(--ok)}
.legende-carte i.fleche.etudiant::after{border-left-color:var(--ok)}
.legende-carte i.fleche.appui::before{border-top-color:var(--ax5);border-top-style:dashed}
.legende-carte i.fleche.appui::after{border-left-color:var(--ax5)}
.legende-carte i.courbe{width:22px;height:8px;border-radius:0 0 12px 12px;border-bottom:1.6px solid var(--ax1);opacity:.45}
.legende-carte i.t-personnel{background:var(--ax5)}
/* ouvrir un livrable : un appel visible, pas un repli en bas de liste */
.ouvrir-livrable{margin:0 .9rem .9rem}
.ouvrir-livrable .appel-livrable{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem;cursor:pointer;
    padding:.5rem .8rem;border-radius:6px;background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);
    color:var(--accent);font-weight:600;font-size:.92rem;list-style:none}
.ouvrir-livrable .appel-livrable::-webkit-details-marker{display:none}
.ouvrir-livrable .appel-livrable .d{font-weight:400;color:var(--ink-3);font-size:.82rem}
.ouvrir-livrable[open] .appel-livrable{margin-bottom:.5rem}
.ouvrir-livrable .appel-livrable:hover{background:color-mix(in srgb,var(--accent) 16%,var(--surface))}
/* application installée : la barre qui remplace celle du navigateur */
.barre-app{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;padding:.35rem .9rem;
    border-bottom:1px solid var(--rule-soft);background:var(--surface-2)}
.barre-app .etat-reseau{font-size:.8rem;color:var(--warn)}
.barre-app.hors-ligne{background:var(--warn-soft)}
.raccourci{display:inline-flex;align-items:center;gap:.3rem;color:var(--ink-3);font-size:.78rem}
.raccourci kbd{font-family:var(--mono);font-size:.78rem;padding:.05rem .3rem;border:1px solid var(--rule);
    border-bottom-width:2px;border-radius:4px;background:var(--surface-2);color:var(--ink-2)}
@media (max-width:640px){.raccourci{display:none}}
/* dossier de publication */
.carte-grille{margin:0 .9rem .7rem;border:1px solid var(--rule);border-radius:8px;padding:.5rem .7rem;background:var(--surface)}
.carte-grille>summary{cursor:pointer;display:flex;flex-wrap:wrap;gap:.5rem;align-items:baseline}
.carte-grille .o{font-size:.82rem;color:var(--ink-3)}
.barre-avancement{height:5px;border-radius:3px;background:var(--surface-3);margin:.5rem 0;overflow:hidden}
.barre-avancement i{display:block;height:100%;background:var(--ok)}
.items-grille{list-style:none;margin:.4rem 0 0;padding:0}
.section-grille{margin:.7rem 0 .2rem;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.item-grille{border-top:1px solid var(--rule-soft);padding:.35rem 0}
.item-grille.etat-fait{background:color-mix(in srgb,var(--ok) 6%,transparent)}
.item-grille.etat-non_applicable{opacity:.6}
.ligne-item{display:grid;grid-template-columns:2.4rem minmax(0,1fr) auto;gap:.3rem .6rem;align-items:baseline;margin:0}
.ligne-item .num{font-family:var(--mono);font-size:.78rem;color:var(--ink-3)}
.ligne-item .txt{font-size:.88rem}
.ligne-item .txt .note{display:block;font-style:normal;font-size:.8rem;color:var(--ok)}
.ligne-item .detail{grid-column:2/-1;display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.25rem}
.ligne-item .detail input[type=text]{flex:1 1 14rem;min-width:0}
.item-grille:not(:focus-within):not(:hover) .detail{display:none}
.orientation{list-style:none;margin:.2rem 0 0;padding:0;display:flex;flex-direction:column;gap:.3rem}
.orientation li{display:flex;flex-wrap:wrap;gap:.6rem;align-items:baseline;justify-content:space-between;
    padding:.3rem .5rem;border-radius:5px;background:var(--surface-2);font-size:.88rem}
.ouvrir-grille{margin:0 .9rem .9rem}
.soumission{margin:0 .9rem .9rem;padding:.6rem .7rem;border:1px solid var(--rule);border-radius:8px;background:var(--surface)}
.ligne-soumission{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin:0}
.ligne-soumission input[type=text]{flex:1 1 9rem;min-width:0}
.points-relecteurs{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}
.point{border-left:3px solid var(--accent-2);padding:.35rem .6rem;background:var(--surface-2);border-radius:0 6px 6px 0}
.point.traite{border-left-color:var(--ok);opacity:.85}
.point .commentaire{margin:.25rem 0;font-size:.88rem;white-space:pre-wrap}
.reponse-point textarea{width:100%;font:inherit;font-size:.88rem;padding:.4rem .5rem;border:1px solid var(--rule);
    border-radius:5px;background:var(--surface);color:var(--ink)}
.reponse-point .ligne{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin-top:.3rem}
.ajout-soumission{margin:0 .9rem .9rem}
.alerte-ref{margin:.2rem 0 .3rem;padding:.3rem .5rem;border-left:3px solid var(--warn);background:var(--warn-soft);
    font-size:.82rem;color:var(--ink-2);border-radius:0 4px 4px 0}

/* ---------------- suivi doctoral : comité de suivi et portfolio ---------------- */
.grille-champs{display:flex;flex-wrap:wrap;gap:.5rem .7rem;align-items:flex-end;margin:.5rem .9rem .8rem}
.grille-champs label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--ink-2);flex:0 1 11rem;min-width:0}
.grille-champs label.large{flex:1 1 22rem}
.grille-champs input,.grille-champs select,.grille-champs textarea{font:inherit;font-size:.9rem;padding:.4rem .5rem;
    border:1px solid var(--rule);border-radius:5px;background:var(--surface);color:var(--ink);min-width:0}
.grille-champs textarea{resize:vertical}
.faits{list-style:none;margin:.3rem .9rem .8rem;padding:0;display:flex;flex-direction:column;gap:.35rem;font-size:.9rem}
.faits>li{padding:.3rem .55rem;border-radius:5px;background:var(--surface-2)}
.faits>li b{font-variant-numeric:tabular-nums}
/* Des chiffres courts ne méritent pas une ligne chacun : ils tiennent côte à côte. */
.faits.chiffres{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(15rem,100%),1fr));gap:.4rem}
.faits.chiffres>li{padding:.4rem .6rem}
.depots{list-style:none;margin:.4rem .9rem .2rem;padding:0;display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;font-size:.9rem}
.formulaire-csi{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(26rem,100%),1fr));gap:.6rem .9rem;
    margin:.5rem .9rem .9rem;align-items:start}
.formulaire-csi .gestes{grid-column:1/-1}
.formulaire-csi label{display:flex;flex-direction:column;gap:.25rem}
.formulaire-csi label b{font-size:.92rem;color:var(--ink)}
.formulaire-csi label .aide{font-size:.82rem;color:var(--ink-3);margin:0}
.formulaire-csi textarea{font:inherit;font-size:.9rem;padding:.45rem .55rem;border:1px solid var(--rule);
    border-radius:6px;background:var(--surface);color:var(--ink);resize:vertical}
.formulaire-csi label.prive{border-left:3px solid var(--accent-2);padding-left:.6rem}
.formulaire-csi .gestes{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.portfolio.bloc h2{display:flex;flex-wrap:wrap;gap:.5rem;align-items:baseline;font-size:1rem;line-height:1.35}
.portfolio.bloc h2 .num{flex:0 0 auto;font-family:var(--mono);font-size:.78rem;color:var(--surface);
    background:var(--accent);padding:.15rem .45rem;border-radius:4px}
.deux-regards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(16rem,100%),1fr));gap:.6rem;margin:.4rem .9rem .6rem}
.regard{padding:.5rem .6rem;border:1px solid var(--rule);border-radius:8px;background:var(--surface-2)}
.regard.a-moi{background:var(--accent-soft);border-color:var(--accent-soft)}
.regard h3{margin:0 0 .2rem;font-size:.85rem;font-weight:600;color:var(--ink-2);text-transform:uppercase;letter-spacing:.03em}
.regard .grille-champs{margin:.2rem 0 0}
.regard p{margin:.2rem 0 0;font-size:.88rem}
.liste-preuves,.liste-formations{list-style:none;margin:.3rem .9rem .6rem;padding:0;display:flex;flex-direction:column;gap:.3rem;min-width:0}
.liste-preuves>li,.liste-formations>li{display:flex;flex-wrap:wrap;gap:.3rem .6rem;align-items:baseline;
    padding:.3rem .55rem;border-radius:5px;background:var(--surface-2);font-size:.88rem}
.liste-preuves .t,.liste-formations .t{font-weight:500;flex:1 1 12rem}
.liste-preuves .q,.liste-formations .q{color:var(--ink-3);font-variant-numeric:tabular-nums}
.liste-formations .o{color:var(--ink-2)}
.liste-preuves .note{flex:1 1 100%;font-style:normal;font-size:.82rem;color:var(--ink-2)}

/* ---------------- lisibilité sur téléphone, mouvement, contrastes forcés ---------------- */
@media (max-width:700px){
  /* Le bas de l'échelle remonte d'un cran : c'est là que se lisent les motifs,
     les méta et les aides, c'est-à-dire l'essentiel de ce qu'on lit debout. */
  .file .m,.fil .quand,.aide,.intro,.intro-carte,.carte>h2 .d,.meta,.liste .terme i,
  .taches .s,.legende-signaux,.signaux-mob,.topbar .sub,.liste-fiches li,.faits,.depots{font-size:.9rem}
  .bouton.mini,.bouton.p.mini{font-size:.87rem;padding:.45rem .8rem}
  .lien.mini{font-size:.87rem;padding:.3rem 0}
  /* Cibles tactiles : 24 px au minimum (WCAG 2.2), davantage pour ce qui s'appuie souvent. */
  .file .gestes .bouton,.livrables .bouton,.creneaux i,.plus-tard summary{min-height:2.2rem;display:inline-flex;align-items:center}
}
@media (prefers-reduced-motion:reduce){
  *,::before,::after{transition:none !important;animation:none !important;scroll-behavior:auto !important}
}
@media (forced-colors:active){
  .barre-avancement,.barre-silence{forced-color-adjust:none;border:1px solid CanvasText;background:Canvas}
  .barre-avancement i,.barre-silence i{forced-color-adjust:none;background:Highlight}
  .puce,.sl,.creneaux i{border:1px solid CanvasText}
}

/* ---------------- tour de rôle : chez qui, depuis quand ---------------- */
.tour{font-size:.81rem;padding:.15rem .5rem;border-radius:11px;background:var(--surface-2);
    border:1px solid var(--rule);color:var(--ink-2);white-space:nowrap}
.tour.w{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}
.tour.c{background:var(--crit-soft);border-color:var(--crit);color:var(--crit)}

/* ---------------- frise à étapes ---------------- */
.frise{padding:.2rem .9rem .8rem}
.frise-etapes{max-width:54rem}
.frise .en-main{margin:0 0 .5rem;font-size:.88rem;color:var(--ink-2)}
.frise-etapes{list-style:none;margin:0;padding:0;display:flex;gap:0;align-items:flex-start}
.frise-etapes>li{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:.35rem;
    position:relative;text-align:center}
.frise-etapes>li::before,.frise-etapes>li::after{content:"";position:absolute;top:8px;height:2px;background:var(--rule)}
.frise-etapes>li::before{left:0;width:50%}
.frise-etapes>li::after{right:0;width:50%}
.frise-etapes>li:first-child::before,.frise-etapes>li:last-child::after{display:none}
.frise-etapes>li.faite::before,.frise-etapes>li.faite::after,.frise-etapes>li.courante::before{background:var(--ok)}
.frise-etapes .pt{width:18px;height:18px;border-radius:50%;background:var(--surface-3);border:1px solid var(--rule);
    box-sizing:border-box;position:relative;z-index:1}
.frise-etapes>li.faite .pt{background:var(--ok);border-color:var(--ok)}
.frise-etapes>li.courante .pt{background:var(--surface);border:3px solid var(--accent)}
.frise-etapes .lb{font-size:.85rem;color:var(--ink-3);line-height:1.3}
.frise-etapes>li.faite .lb{color:var(--ink-2)}
.frise-etapes>li.courante .lb{color:var(--accent);font-weight:600}
.frise-etapes .lb i{display:block;font-style:normal;font-weight:400;font-size:.81rem;color:var(--ink-3)}
.frise-etapes>li.courante .lb i{color:var(--accent)}
@media (max-width:700px){
  .frise-etapes{flex-direction:column;align-items:stretch;gap:.1rem}
  .frise-etapes>li{flex-direction:row;align-items:flex-start;gap:.6rem;text-align:left;padding:.35rem 0}
  .frise-etapes>li::before,.frise-etapes>li::after{top:auto;left:8px;width:2px;height:50%}
  .frise-etapes>li::before{top:0}
  .frise-etapes>li::after{bottom:0;right:auto}
  .frise-etapes .lb i{display:inline;margin-left:.35rem}
}

/* ---------------- blocs de la file du jour ---------------- */
.regle-tri{margin:0 0 .2rem;padding:.5rem .8rem;background:var(--surface);border:1px solid var(--rule-soft);
    border-radius:7px;font-size:.86rem;color:var(--ink-3)}
.regle-tri b{color:var(--ink-2)}
.bloc-file>h2.retard{color:var(--crit)}
.bloc-file{border-left:3px solid transparent}
#bloc-retard{border-left-color:var(--crit)}
#bloc-attente{border-left-color:var(--rule)}
.bloc-file>h2 form.lot{margin:0 0 0 auto}
.file li.attente{opacity:.92}
.file li.attente .duree{color:var(--ink-3)}

/* ---------------- dernier signe de vie ---------------- */
.ligne-projet{grid-template-columns:minmax(0,2.2fr) auto 7.5rem 6.5rem minmax(0,1.2fr) minmax(0,1.2fr)}
.ligne-projet .signe{display:flex;flex-direction:column;gap:.2rem;min-width:0}
.ligne-projet .signe b{font-family:var(--mono);font-size:.81rem;font-weight:500;color:var(--ink-2);white-space:nowrap}
.ligne-projet .signe i{font-style:normal;font-size:.78rem;color:var(--ink-3)}
.barre-silence{display:block;height:5px;border-radius:3px;background:var(--surface-3);overflow:hidden}
.barre-silence i{display:block;height:100%;background:var(--ink-3)}
.barre-silence i.w{background:var(--warn)}
.barre-silence i.c{background:var(--crit)}
@media (max-width:1100px){.ligne-projet{grid-template-columns:minmax(0,1fr) auto}
  .ligne-projet .signe{grid-column:1/-1;flex-direction:row;align-items:center;gap:.5rem}
  .ligne-projet .signe .barre-silence{flex:1 1 4rem}}

/* ---------------- barre d'onglets basse (téléphone) ---------------- */
.onglets-bas{display:none}
@media (max-width:880px){
  .onglets-bas{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:20;
      background:var(--surface);border-top:1px solid var(--rule);padding:.25rem .2rem calc(.25rem + env(safe-area-inset-bottom));
      box-shadow:0 -2px 10px -6px rgba(12,30,60,.45)}
  /* La relecture d'un document prend tout l'écran : la barre s'efface, la
     flèche « retour » du bandeau ramène au projet. */
  .corps.plein ~ .onglets-bas,body:has(.corps.plein) .onglets-bas{display:none}
  .onglets-bas a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;
      min-height:3.1rem;border-radius:7px;text-decoration:none;color:var(--ink-3)}
  .onglets-bas a span:last-child{font-size:.78rem;line-height:1.1}
  .onglets-bas a[aria-current="page"]{background:var(--accent-soft);color:var(--accent)}
  .onglets-bas a[aria-current="page"] span:last-child{font-weight:600}
  .onglets-bas .ic{position:relative;display:block;line-height:0}
  .onglets-bas .ic i{position:absolute;top:-5px;right:-8px;min-width:1.05rem;height:1.05rem;padding:0 .2rem;box-sizing:border-box;
      border-radius:.6rem;background:var(--crit);color:#fff;font-style:normal;font-size:.72rem;line-height:1.05rem;text-align:center}
  /* La latérale cède la place : ses sections principales vivent en bas. */
  /* Ce qui est descendu dans la barre du bas quitte la latérale — et rien
     d'autre : « Plan de charge » n'y étant plus, il doit y rester visible,
     sans quoi il devient inatteignable sur téléphone. */
  aside nav.princ a[href="/"],aside nav.princ a[href="/projets"],
  aside nav.princ a[href="/a-faire"],aside nav.princ a[href="/reglages"]{display:none}
  aside nav.princ{padding-bottom:.2rem}
  aside .marque-ligne .cloche{display:none}
  main>.corps{padding-bottom:4.6rem}
  main>.corps.plein{padding-bottom:.5rem}
}

/* ---------------- présence et verrou d'annotation ---------------- */
.indice.presence{background:var(--accent-soft);border-left:3px solid var(--accent-2);color:var(--ink-2)}
.indice.gel{background:var(--warn-soft);border-left:3px solid var(--warn);color:var(--ink-2)}
.voletdoc>header .gel-forme{margin:0 0 0 auto}
.presence-livrable{display:flex;gap:.5rem;flex-wrap:wrap;align-items:baseline;margin:.3rem 0 0;
    font-size:.86rem;color:var(--accent)}
.presence-livrable.gelee{color:var(--warn)}
.presence-livrable form{margin:0}
.onglets-projet .ct{display:inline-block;min-width:1.1rem;padding:0 .25rem;border-radius:.6rem;
    background:var(--surface-3);color:var(--ink-2);font-family:var(--mono);font-size:.78rem;text-align:center}
.onglets-projet a[aria-current="page"] .ct{background:rgba(255,255,255,.28);color:#fff}

/* ---------------- fiches en cartes, avec aperçu ---------------- */
.fiches-cartes{list-style:none;margin:0;padding:.3rem .9rem .9rem;display:grid;
    grid-template-columns:repeat(auto-fill,minmax(min(22rem,100%),1fr));gap:.7rem}
.fiche-carte{display:flex;flex-direction:column;gap:.25rem;padding:.7rem .8rem .6rem;
    background:var(--surface);border:1px solid var(--rule);border-left:4px solid var(--rule);border-radius:8px}
.fiche-carte .tete{display:flex;flex-wrap:wrap;gap:.4rem .5rem;align-items:baseline}
.fiche-carte .cat{font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;
    color:var(--ink-3);flex:0 0 100%}
.fiche-carte .titre{font-size:1rem;font-weight:500;color:var(--ink);text-decoration:none;line-height:1.3}
.fiche-carte .titre:hover{color:var(--accent)}
.fiche-carte .meta{margin:0;font-size:.81rem;color:var(--ink-3)}
.fiche-carte .extrait{margin:.2rem 0 0;font-size:.88rem;line-height:1.5;color:var(--ink-2)}
.fiche-carte .douteuse{margin:.15rem 0 0;font-size:.81rem;color:var(--crit)}
.fiche-carte .gestes{display:flex;gap:.6rem;align-items:baseline;margin-top:.35rem}
.fiche-carte .gestes form{margin:0}
.apercu-fiche-repli>summary{cursor:pointer;font-size:.85rem;color:var(--accent);padding:.15rem 0;
    display:inline-flex;gap:.3rem;align-items:center}
.apercu-fiche-repli>summary::marker{color:var(--ink-3)}
.apercu-fiche-repli[open]{flex:1 1 100%}
.apercu-fiche-repli .dedans{margin:.4rem 0 .2rem;padding:.6rem .7rem;background:var(--surface-2);border-radius:6px;
    max-height:24rem;overflow-y:auto}
.apercu-fiche .contenu-fiche{font-size:.9rem;max-width:none}
.apercu-fiche .vide{text-align:left;padding:0}
.apercu-fiche .pieces-apercu,.apercu-fiche .refs-apercu{margin:.5rem 0 0;padding-left:1.1rem;font-size:.86rem}
.apercu-fiche .refs-apercu li{margin:.3rem 0}
.apercu-fiche .refs-apercu i{display:block;font-style:normal;color:var(--ink-3);font-size:.84rem}
.apercu-fiche .ouvrir-entier{display:flex;gap:.6rem;flex-wrap:wrap;align-items:baseline;margin:.6rem 0 0;font-size:.86rem}
.apercu-fiche .q,.fiche-carte .q{color:var(--ink-3);font-size:.84rem}
/* Chaque catégorie porte sa teinte : on reconnaît une fiche de méthode d'un
   coup d'œil, sans lire son étiquette. */
.fiche-carte.cat-methodo{border-left-color:var(--accent)}
.fiche-carte.cat-methodo .cat{color:var(--accent)}
.fiche-carte.cat-stats{border-left-color:var(--accent-2)}
.fiche-carte.cat-stats .cat{color:var(--accent-2)}
.fiche-carte.cat-redaction{border-left-color:var(--ax4)}
.fiche-carte.cat-redaction .cat{color:var(--ax4)}
.fiche-carte.cat-reglementaire{border-left-color:var(--warn)}
.fiche-carte.cat-reglementaire .cat{color:var(--warn)}
.fiche-carte.cat-oral{border-left-color:var(--orange)}
.fiche-carte.cat-oral .cat{color:var(--orange)}
.fiche-carte.cat-biblio{border-left-color:var(--ok)}
.fiche-carte.cat-biblio .cat{color:var(--ok)}
/* La fiche entière : une mesure de lecture, pas une pleine largeur. */
.contenu-fiche{max-width:66ch}
.contenu-fiche ul,.contenu-fiche ol{margin:.5rem 0;padding-left:1.3rem}
.contenu-fiche li{margin:.2rem 0}
.contenu-fiche blockquote{margin:.6rem 0;padding:.3rem .8rem;border-left:3px solid var(--rule);color:var(--ink-2)}

/* ---------------- sondage : saisie des créneaux, réponse rapide ---------------- */
.saisie-creneaux .heure-commune{display:flex;flex-wrap:wrap;gap:.4rem .6rem;align-items:baseline;margin:.2rem 0 .6rem;
    font-size:.87rem;color:var(--ink-2)}
.saisie-creneaux .heure-commune select{font:inherit;font-size:.9rem;padding:.35rem .5rem;border:1px solid var(--rule);
    border-radius:5px;background:var(--surface);color:var(--ink)}
.saisie-creneaux .heure-commune .aide{flex:1 1 14rem}
.lignes-creneaux{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}
.creneau-saisie{display:flex;gap:.4rem;align-items:center;margin:0}
.creneau-saisie .rang{flex:0 0 1.2rem;font-family:var(--mono);font-size:.81rem;color:var(--ink-3);text-align:right}
.creneau-saisie input[type=date]{flex:1 1 9rem;min-width:0}
.creneau-saisie select{flex:0 1 13rem;min-width:0;font:inherit;font-size:.9rem;padding:.35rem .4rem;
    border:1px solid var(--rule);border-radius:5px;background:var(--surface);color:var(--ink)}
.creneau-saisie [data-vider]{flex:0 0 auto;color:var(--ink-3)}
.ajouts-creneaux{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;margin:.6rem 0 0}
.ajouts-creneaux .aide{margin:0;color:var(--ink-3)}
.ajouts-creneaux button[disabled]{opacity:.5;cursor:not-allowed}
.remplir-vite{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;margin:.2rem .9rem .6rem}
.remplir-vite .aide{margin:0;color:var(--ink-3)}
@media (max-width:640px){
  .creneau-saisie{flex-wrap:wrap}
  .creneau-saisie input[type=date]{flex:1 1 100%}
  .creneau-saisie select{flex:1 1 8rem}
}

/* ---------------- invités extérieurs d'un sondage ---------------- */
.externes{padding:.2rem .9rem .8rem;border-top:1px solid var(--rule-soft)}
.externes h3{margin:.6rem 0 .3rem;font-size:.95rem;font-weight:600}
.externes h3 .d{font-weight:400;color:var(--ink-3);font-size:.86rem}
.liste-externes{list-style:none;margin:0 0 .6rem;padding:0;display:flex;flex-direction:column;gap:.3rem}
.liste-externes li{display:flex;flex-wrap:wrap;gap:.4rem .6rem;align-items:baseline;padding:.3rem .5rem;
    border-radius:5px;background:var(--surface-2);font-size:.88rem}
.liste-externes .n{font-weight:500}
.liste-externes .q{color:var(--ink-3);font-size:.84rem}
.liste-externes form{margin:0}
.ajout-externe{display:flex;gap:.5rem;flex-wrap:wrap;align-items:flex-end;margin:0}
.ajout-externe .champ{flex:1 1 20rem;display:flex;flex-direction:column;gap:.25rem;font-size:.86rem;color:var(--ink-2)}
.ajout-externe textarea{font:inherit;font-size:.9rem;padding:.4rem .5rem;border:1px solid var(--rule);
    border-radius:5px;background:var(--surface);color:var(--ink);resize:vertical}
.ajout-externe .aide{flex:1 1 100%;margin:0;color:var(--ink-3)}
.sondage .qui .n.dehors{border:1px dashed var(--rule);font-style:italic}
.redeposer{margin:.3rem .9rem .5rem;padding:.4rem .6rem;border:1px dashed var(--rule);border-radius:6px;background:var(--surface-2)}
.redeposer>summary{cursor:pointer;font-size:.87rem;color:var(--accent)}
.redeposer form{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;margin:.5rem 0 .2rem}
.redeposer .aide{flex:1 1 100%;margin:0 0 .2rem;font-size:.84rem;color:var(--ink-2)}

/* ---------------- relecture à plusieurs ---------------- */
.collectif{margin:0 0 .5rem;padding:.55rem .7rem;border:1px solid var(--rule);border-radius:8px;background:var(--surface)}
.collectif.complet{border-color:var(--ok);background:var(--ok-soft)}
.collectif .tete{display:flex;gap:.5rem;align-items:baseline;justify-content:space-between;font-size:.9rem}
.collectif .compte{font-family:var(--mono);font-size:.86rem;color:var(--ink-2)}
.collectif .barre-avancement{margin:.35rem 0 .3rem}
.collectif .qui{display:flex;flex-wrap:wrap;gap:.3rem;margin:.2rem 0 0;font-size:.82rem}
.collectif .qui .n{padding:.05rem .4rem;border-radius:3px;background:var(--surface-2);color:var(--ink-3)}
.collectif .qui .n.oui{background:var(--ok-soft);color:var(--ok)}
.collectif .qui .n.si{background:var(--warn-soft);color:var(--warn)}
.collectif .actes{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin:.5rem 0 0}
.collectif .actes .aide{flex:1 1 100%;margin:.15rem 0 0;color:var(--ink-3)}
.collectif .aide{font-size:.84rem}
.relectures-livrable{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.35rem 0 0;font-size:.86rem}
.relectures-livrable b{font-weight:600;color:var(--ink-2)}
.relectures-livrable .barre-silence{flex:0 1 7rem;height:6px}
.relectures-livrable .barre-silence i{background:var(--ok)}
.relecteurs-livrable{margin:.3rem 0 0}
.relecteurs-livrable>summary{cursor:pointer;font-size:.86rem;color:var(--accent)}
.relecteurs-livrable form{margin:.4rem 0 .2rem;display:flex;flex-direction:column;gap:.25rem}
.relecteurs-livrable .aide{margin:0 0 .2rem;font-size:.84rem;color:var(--ink-2)}
.collectif .forcer{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin:.5rem 0 0;
    padding-top:.5rem;border-top:1px solid var(--rule-soft)}
.collectif .forcer input[type=text]{flex:1 1 13rem;min-width:0;font:inherit;font-size:.86rem;padding:.3rem .45rem;
    border:1px solid var(--rule);border-radius:5px;background:var(--surface);color:var(--ink)}
.collectif .forcer .aide{flex:1 1 100%;margin:.15rem 0 0;color:var(--ink-3)}

/* ---------------- numérotation des paragraphes d'un .docx ---------------- */
/* Word calcule ses numéros à la mise en page ; Cursus les recalcule et les
   pose en attribut, pour que le texte compté par les ancres reste intact. */
.doccorps [data-etiquette]{position:relative;padding-left:2.6rem}
.doccorps [data-etiquette]::before{content:attr(data-etiquette);position:absolute;left:0;top:0;width:2.2rem;
    text-align:right;color:var(--ink-3);font-variant-numeric:tabular-nums;user-select:none}
.doccorps [data-liste="1"]{padding-left:4rem}
.doccorps [data-liste="1"]::before{width:3.6rem}
.doccorps [data-liste="2"]{padding-left:5.4rem}
.doccorps [data-liste="2"]::before{width:5rem}
.doccorps [data-liste="3"]{padding-left:6.8rem}
.doccorps [data-liste="3"]::before{width:6.4rem}
.doccorps h2[data-etiquette]::before,.doccorps h3[data-etiquette]::before,
.doccorps h4[data-etiquette]::before{color:var(--ink-2)}

/* ---------------- attributs de caractère du document ---------------- */
/* Les sigles sont souvent saisis en petites capitales ou en capitales par
   attribut : sans les reprendre, « ecmo » restait en bas de casse à l'écran.
   Le texte, lui, n'est pas modifié — les ancres comptent dessus. */
.doccorps .mc{font-variant-caps:small-caps;letter-spacing:.02em}
.doccorps .maj{text-transform:uppercase}
.doccorps .g{font-weight:600}
.doccorps .it{font-style:italic}
.doccorps sup.x,.doccorps sub.x,.doccorps .anc sup.x,.doccorps .pt sup.x{font-family:inherit;
    font-size:.72em;color:inherit;background:none;padding:0;line-height:0}

/* ---------------- signature manuscrite ---------------- */
/* L'aperçu se montre sur un damier : une signature à fond transparent sur
   fond blanc ne dit pas si le fond a bien été détaché. */
.signature-apercu{align-items:flex-start}
.signature-apercu figure{margin:0;display:flex;flex-direction:column;gap:.35rem}
.signature-apercu img{max-width:min(22rem,100%);height:auto;border:1px solid var(--rule);border-radius:6px;
    padding:.5rem;background-color:var(--surface);
    background-image:linear-gradient(45deg,var(--surface-2) 25%,transparent 25%,transparent 75%,var(--surface-2) 75%),
        linear-gradient(45deg,var(--surface-2) 25%,transparent 25%,transparent 75%,var(--surface-2) 75%);
    background-size:14px 14px;background-position:0 0,7px 7px}
.signature-apercu figcaption{font-size:.8rem;color:var(--ink-3)}

/* La feuille à signer, et le cadre qu'on y déplace. */
.signer{display:grid;gap:1rem;grid-template-columns:minmax(0,1fr) minmax(min(20rem,100%),22rem);align-items:start}
@media (max-width:60rem){.signer{grid-template-columns:minmax(0,1fr)}}
.signer-barre{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center;justify-content:space-between;
    margin-bottom:.7rem}
.signer-navigation{display:flex;align-items:center;gap:.5rem}
.signer-rang{font-size:.88rem;color:var(--ink-2);font-variant-numeric:tabular-nums}
.signer-taille{display:flex;align-items:center;gap:.5rem;font-size:.88rem;color:var(--ink-2)}
.signer-taille input{width:9rem}
.signer-scene{position:relative;background:var(--surface-2);border-radius:8px;padding:.6rem;overflow:hidden}
.signer-page{display:none;position:relative;margin:0 auto;max-width:100%;
    box-shadow:0 1px 6px rgba(16,23,34,.18);background:#fff}
.signer-page.actif{display:block}
.signer-page img{display:block;width:100%;height:auto;cursor:crosshair;user-select:none}
.signer-cadre{position:absolute;cursor:grab;touch-action:none;border:1px dashed var(--accent);
    border-radius:3px;background:rgba(12,72,144,.06)}
.signer-cadre:active{cursor:grabbing}
.signer-cadre img{display:block;width:100%;height:100%;pointer-events:none}
/* Le texte posé s'affiche comme il sortira du PDF : même fonte de base, même
   corps rapporté à l'échelle de la page. Ce qu'on voit est ce qu'on aura. */
.signer-cadre.texte{padding:0;background:rgba(12,72,144,.04)}
.signer-cadre.texte span{display:block;white-space:pre;color:#191919;
    font-family:Helvetica,Arial,sans-serif;pointer-events:none}
.signer-outils{display:flex;gap:.3rem}
.signer-outils .seg{position:relative}
.signer-outils .seg input{position:absolute;opacity:0;width:0;height:0}
.signer-outils .seg span{display:inline-block;padding:.3rem .65rem;border:1px solid var(--rule);
    border-radius:6px;font-size:.86rem;color:var(--ink-2);cursor:pointer;background:var(--surface)}
.signer-outils .seg input:checked + span{background:var(--accent-soft);border-color:var(--accent);
    color:var(--accent);font-weight:600}
.signer-outils .seg input:disabled + span{opacity:.45;cursor:not-allowed}
.signer-outils .seg input:focus-visible + span{outline:2px solid var(--accent);outline-offset:2px}
.signer-reglages{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:flex-end;
    margin:0 0 .7rem;padding:.6rem;background:var(--surface-2);border-radius:7px}
.signer-reglages .champ{flex:1 1 20rem;margin:0}
.signer-reglages textarea{width:100%;font:inherit;font-size:.9rem;padding:.35rem .5rem;
    border:1px solid var(--rule);border-radius:5px;background:var(--surface);color:var(--ink);resize:vertical}
.signer-reglages .aide{flex:1 1 100%;margin:0}
.signer-liste{list-style:none;margin:.3rem 0 .9rem;padding:0;display:flex;flex-direction:column;gap:.3rem}
.signer-liste li{display:flex;gap:.5rem;align-items:baseline;justify-content:space-between;
    font-size:.86rem;color:var(--ink-2);background:var(--surface-2);border-radius:5px;padding:.3rem .5rem}
.signer-liste li.vide{background:none;color:var(--ink-3);padding-left:0}
.signer-liste li span{min-width:0;overflow-wrap:anywhere}

/* ---------------- un PDF déposé, affiché page à page ---------------- */
.pdfpages{display:flex;flex-direction:column;gap:1rem;align-items:center;padding:.5rem 0}
.pdfpage{margin:0;position:relative;width:100%;max-width:52rem;background:#fff;
    box-shadow:0 1px 6px rgba(16,23,34,.18);border-radius:2px}
.pdfpage img{display:block;width:100%;height:auto;border-radius:2px}
.pdfpage figcaption{position:absolute;right:.4rem;bottom:.3rem;font-size:.72rem;color:var(--ink-3);
    background:var(--surface);border-radius:4px;padding:.05rem .3rem;font-variant-numeric:tabular-nums}
.doccorps.genre-pdf{background:var(--surface-2);border-radius:8px}
.signer-resume{font-size:.88rem;color:var(--ink-2);background:var(--surface-2);border-radius:6px;
    padding:.5rem .6rem;margin:.2rem 0 .8rem}
.signer-valider .champ{margin-bottom:.7rem}

/* Listes et paires libellé/valeur des écrans de signature. */
.liste-serree{margin:.3rem 0 0;padding-left:1.15rem;display:flex;flex-direction:column;gap:.35rem}
.liste-serree li{font-size:.9rem;color:var(--ink-2)}
.fiche-lignes{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.35rem .9rem;margin:.4rem 0 .9rem}
.fiche-lignes dt{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);
    align-self:baseline}
.fiche-lignes dd{margin:0;color:var(--ink);min-width:0;overflow-wrap:anywhere}

/* ---------------- démonstration animée ---------------- */
/* Une maquette, pas une capture : des blocs qui bougent, assez reconnaissables
   pour qu'on s'y retrouve, assez schématiques pour ne pas mentir sur l'état
   d'un compte vide. Tout est dessiné avec les couleurs du thème, donc juste
   en clair comme en sombre. */
.demo{display:grid;gap:1rem;grid-template-columns:minmax(min(15rem,100%),17rem) minmax(0,1fr);
    align-items:start}
@media (max-width:62rem){.demo{grid-template-columns:minmax(0,1fr)}}

.demo-chapitres{display:flex;flex-direction:column;gap:.35rem}
@media (max-width:62rem){.demo-chapitres{flex-direction:row;overflow-x:auto;padding-bottom:.3rem}}
.demo-chapitre{display:flex;flex-direction:column;gap:.1rem;text-align:left;cursor:pointer;
    padding:.5rem .65rem;border:1px solid var(--rule);border-radius:7px;background:var(--surface);
    color:var(--ink-2);font:inherit;min-width:11rem}
.demo-chapitre b{font-size:.92rem;color:var(--ink)}
.demo-chapitre span{font-size:.78rem;color:var(--ink-3)}
.demo-chapitre.actif{border-color:var(--accent);background:var(--accent-soft)}
.demo-chapitre.actif b{color:var(--accent)}
.demo-chapitre:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.demo-plateau{display:flex;flex-direction:column;gap:.8rem}
.demo-scene{position:relative;border:1px solid var(--rule);border-radius:10px;overflow:hidden;
    background:var(--surface);box-shadow:0 2px 14px rgba(16,23,34,.10);color:var(--accent)}
.demo-chrome{display:flex;align-items:center;gap:.3rem;padding:.4rem .6rem;background:var(--surface-2);
    border-bottom:1px solid var(--rule-soft);font-size:.74rem;color:var(--ink-3)}
.demo-chrome i{width:.5rem;height:.5rem;border-radius:50%;background:var(--rule)}
.demo-chrome span{margin-left:.5rem}
.demo-fenetre{display:grid;grid-template-columns:3rem minmax(0,1fr);min-height:19rem}
@media (max-width:40rem){.demo-fenetre{grid-template-columns:2rem;min-height:15rem}
  .demo-cote u{display:none}}
.demo-cote{background:var(--surface-2);border-right:1px solid var(--rule-soft);padding:.5rem .4rem;
    display:flex;flex-direction:column;gap:.4rem;align-items:center}
.demo-marque{width:1.1rem;height:1.1rem;border-radius:4px;background:var(--accent)}
.demo-cote u{width:1.4rem;height:.3rem;border-radius:2px;background:var(--rule);display:block}

.demo-corps{position:relative;padding:.9rem 1rem}
.demo-vue{display:none;animation:demo-entre .45s ease both}
.demo-scene[data-vue="projet"] [data-vue="projet"],
.demo-scene[data-vue="relecture"] [data-vue="relecture"],
.demo-scene[data-vue="reunion"] [data-vue="reunion"],
.demo-scene[data-vue="timeline"] [data-vue="timeline"],
.demo-scene[data-vue="pdf"] [data-vue="pdf"],
.demo-scene[data-vue="doctorat"] [data-vue="doctorat"]{display:block}
@keyframes demo-entre{from{opacity:0;transform:translateY(.4rem)}to{opacity:1;transform:none}}

/* — vue projet : les versions d'un livrable */
.demo-titre{margin:0 0 .6rem;font-size:.95rem;color:var(--ink)}
.demo-versions{list-style:none;display:flex;gap:.5rem;margin:0 0 1rem;padding:0}
.demo-versions li{flex:0 0 auto;display:flex;flex-direction:column;gap:.3rem;align-items:center;
    padding:.45rem .7rem;border:1px solid var(--rule);border-radius:7px;background:var(--surface-2);
    opacity:.25;transition:opacity .4s,border-color .4s,background .4s}
.demo-versions li b{font-size:.78rem;color:var(--ink-2);font-variant-numeric:tabular-nums}
.demo-versions li i{width:1.6rem;height:.28rem;border-radius:2px;background:var(--rule)}
.demo-scene.v1 [data-v="1"],
.demo-scene.v2 [data-v="1"],.demo-scene.v2 [data-v="2"],
.demo-scene.signe [data-v="1"],.demo-scene.signe [data-v="2"],
.demo-scene.charge [data-v="1"],.demo-scene.memoire [data-v="1"]{opacity:1}
.demo-scene.v2 [data-v="2"],.demo-scene.signe [data-v="2"]{border-color:var(--accent);
    background:var(--accent-soft)}
.demo-scene.signe [data-v="2"] i{background:var(--ok)}
.demo-barres{display:flex;flex-direction:column;gap:.35rem}
.demo-barres i{height:.5rem;border-radius:3px;background:var(--surface-3);width:60%}
.demo-barres i:nth-child(2){width:80%}.demo-barres i:nth-child(3){width:45%}
.demo-scene.charge .demo-barres i:first-child,.demo-scene.memoire .demo-barres i:nth-child(2){
    background:var(--orange);width:92%}

/* — vue relecture : le document et le volet des remarques */
/* La mise en page est portée par la règle d'affichage ci-dessus, et non par
   un sélecteur d'attribut nu : sans portée, la vue restait visible en
   permanence et se superposait aux autres. */
.demo-scene[data-vue="relecture"] [data-vue="relecture"]{display:grid;
    grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:.8rem}
.demo-doc{display:flex;flex-direction:column;gap:.45rem;padding:.6rem;border:1px solid var(--rule-soft);
    border-radius:6px;background:var(--surface)}
.demo-doc i{height:.42rem;border-radius:3px;background:var(--surface-3)}
.demo-doc i:nth-child(odd){width:94%}.demo-doc i:nth-child(even){width:78%}
.demo-cible{transition:background .35s,box-shadow .35s}
.demo-scene.surligne .demo-cible{background:var(--warn);box-shadow:0 0 0 .22rem var(--warn-soft)}
.demo-scene.retour .demo-doc i:nth-child(5),.demo-scene.retour .demo-doc i:nth-child(6){
    background:var(--ok);opacity:.65}
.demo-scene.fiche .demo-doc i:nth-child(4){background:var(--ax4)}
.demo-volet{display:flex;flex-direction:column;gap:.5rem}
.demo-remarque{display:flex;flex-direction:column;gap:.3rem;padding:.5rem;border-radius:6px;
    border:1px solid var(--rule);background:var(--surface-2);opacity:0;transform:translateX(.5rem);
    transition:opacity .4s,transform .4s,border-color .4s}
.demo-remarque b{display:block;height:.32rem;width:45%;border-radius:2px;background:var(--orange)}
.demo-remarque i{height:.3rem;border-radius:2px;background:var(--rule)}
.demo-scene.remarque [data-rem="1"]{opacity:1;transform:none;border-color:var(--orange)}
.demo-scene.close [data-rem="2"],.demo-scene.retour [data-rem="2"],
.demo-scene.reponse [data-rem="2"],.demo-scene.fiche [data-rem="2"]{opacity:1;transform:none}
.demo-scene.reponse [data-rem="1"]{border-color:var(--ok)}
.demo-scene.reponse [data-rem="1"] b{background:var(--ok)}

/* — vue réunion : créneaux, ordre du jour, signatures */
.demo-grille{display:grid;grid-template-columns:repeat(6,1fr);gap:.3rem;margin-bottom:.8rem}
.demo-grille i{height:1.5rem;border-radius:4px;background:var(--surface-3);
    transition:background .35s,box-shadow .35s}
.demo-scene.sondage .demo-grille i:nth-child(3n){background:var(--ok-soft)}
.demo-scene.choisi .demo-grille [data-creneau="4"]{background:var(--ok);
    box-shadow:0 0 0 .2rem var(--ok-soft)}
.demo-points{list-style:none;margin:0 0 .8rem;padding:0;display:flex;flex-direction:column;gap:.35rem;
    opacity:0;transition:opacity .4s}
.demo-points li{height:.42rem;border-radius:3px;background:var(--surface-3);width:85%}
.demo-points li:nth-child(2){width:65%}.demo-points li:nth-child(3){width:75%}
.demo-scene.ordre .demo-points,.demo-scene.releve .demo-points{opacity:1}
.demo-scene.releve .demo-points li:first-child{background:var(--accent)}
.demo-scene.releve .demo-points li:nth-child(2){background:var(--ax2)}
.demo-signatures{display:flex;gap:.45rem}
.demo-signatures i{width:2.2rem;height:.7rem;border-radius:3px;background:var(--surface-3);opacity:0;
    transition:opacity .4s,background .4s}
.demo-scene.signatures .demo-signatures i{opacity:1;background:var(--ok)}
.demo-scene.signatures .demo-signatures i:last-child{background:var(--surface-3)}

/* — vue timeline */
.demo-frise{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}
.demo-frise i{height:.75rem;border-radius:4px;background:var(--accent-soft);
    border:1px solid var(--accent);opacity:0;transform:scaleX(.2);transform-origin:left;
    transition:opacity .5s,transform .6s,margin-left .6s}
.demo-scene.retro .demo-frise i{opacity:1;transform:none}
.demo-frise [data-piste="1"]{width:35%}
.demo-frise [data-piste="2"]{width:50%;margin-left:12%}
.demo-frise [data-piste="3"]{width:40%;margin-left:34%}
.demo-frise [data-piste="4"]{width:28%;margin-left:62%}
.demo-scene.glisse [data-piste="2"]{margin-left:26%}
.demo-scene.glisse [data-piste="3"]{margin-left:44%}
.demo-jalon{display:block;width:.9rem;height:.9rem;border-radius:50%;background:var(--orange);
    margin-left:88%;opacity:0;transition:opacity .4s,transform .4s;transform:scale(.4)}
.demo-scene.jalon .demo-jalon{opacity:1;transform:none}

/* — vue PDF : la page, le texte posé, le paraphe */
.demo-page{position:relative;max-width:16rem;margin:0 auto;padding:1rem .9rem 2.6rem;
    border:1px solid var(--rule);border-radius:3px;background:#fff;
    box-shadow:0 1px 8px rgba(16,23,34,.16)}
.demo-page i{display:block;height:.38rem;border-radius:2px;background:#DEE3EA;margin-bottom:.45rem}
.demo-page i:nth-child(2){width:70%}.demo-page i:nth-child(4){width:55%}
.demo-texte-pose{position:absolute;left:.9rem;bottom:1.9rem;height:.4rem;width:0;border-radius:2px;
    background:#2B3442;transition:width .6s ease}
.demo-scene.texte .demo-texte-pose{width:58%}
.demo-paraphe{position:absolute;right:.9rem;bottom:.5rem;width:4.6rem;height:1.5rem;
    color:#16246B;opacity:0;transition:opacity .5s}
.demo-paraphe path{stroke-dasharray:260;stroke-dashoffset:260}
.demo-scene.paraphe .demo-paraphe{opacity:1}
.demo-scene.paraphe .demo-paraphe path{animation:demo-trace 1.1s ease forwards}
@keyframes demo-trace{to{stroke-dashoffset:0}}

/* — vue doctorat : formulaire et jauges de compétences */
.demo-colonnes{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.9rem}
.demo-formulaire{display:flex;flex-direction:column;gap:.4rem}
.demo-formulaire i{height:.42rem;border-radius:3px;background:var(--surface-3)}
.demo-scene.prive .demo-formulaire i:last-child{background:var(--ax4);width:70%}
.demo-jauges{display:flex;flex-direction:column;gap:.5rem;justify-content:center}
.demo-jauges i{height:.5rem;border-radius:3px;background:var(--surface-3);position:relative;
    overflow:hidden}
.demo-jauges i::after{content:"";position:absolute;inset:0;width:0;background:var(--ok);
    transition:width .7s ease}
.demo-scene.portfolio .demo-jauges i::after{width:calc(var(--n) * 100%)}

.demo-curseur,.demo-bulle{display:none}

/* — le pupitre : légende et commandes */
.demo-pupitre{border:1px solid var(--rule);border-radius:9px;padding:.8rem .9rem;
    background:var(--surface)}
.demo-chapitre-vu{margin:0 0 .3rem;font-size:.8rem;color:var(--ink-3);text-transform:uppercase;
    letter-spacing:.04em}
.demo-chapitre-vu b{color:var(--ink-2)}
.demo-legende{margin:0 0 .8rem;font-size:.98rem;line-height:1.5;color:var(--ink);min-height:4.2em}
.demo-commandes{display:flex;align-items:center;gap:.5rem}
.demo-jauge{flex:1;height:.3rem;border-radius:2px;background:var(--surface-3);overflow:hidden}
.demo-jauge i{display:block;height:100%;background:var(--accent);width:0;transition:width .4s}
.demo-pupitre .aide{margin:.7rem 0 0}
.demo-sortie{margin-top:1.1rem}

@media (prefers-reduced-motion:reduce){
  .demo-vue,.demo-paraphe path{animation:none}
  .demo-scene *{transition-duration:.01ms !important}
}

/* ---------------- réunions thématiques ---------------- */
.thematique h3{margin:1.6rem 0 .3rem;font-size:.95rem;color:var(--ink)}
.thematique .intro{margin-top:0}
.depot-sujet{margin:.5rem 0 1rem;display:flex;flex-direction:column;gap:.4rem}
.depot-sujet .ligne{display:flex;gap:.5rem}
.depot-sujet input[type=text]{flex:1;min-width:0}
.depot-sujet textarea{width:100%;font:inherit;font-size:.9rem;padding:.35rem .5rem;
    border:1px solid var(--rule);border-radius:5px;background:var(--surface);color:var(--ink);resize:vertical}
.liste-sujets{list-style:none;margin:.4rem 0 0;padding:0;display:flex;flex-direction:column;gap:.45rem}
.liste-sujets li{display:flex;gap:.8rem;align-items:flex-start;justify-content:space-between;
    flex-wrap:wrap;padding:.55rem .7rem;border:1px solid var(--rule);border-radius:7px;
    background:var(--surface)}
.liste-sujets li.retenu{border-color:var(--accent);background:var(--accent-soft)}
.liste-sujets .quoi{flex:1 1 18rem;min-width:0}
.liste-sujets .quoi b{display:block;color:var(--ink);overflow-wrap:anywhere}
.liste-sujets .quoi p{margin:.25rem 0 0;font-size:.9rem;color:var(--ink-2);overflow-wrap:anywhere}
.liste-sujets .d{font-size:.8rem;color:var(--ink-3)}
.actions-sujet{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.actions-sujet select{font:inherit;font-size:.85rem;padding:.2rem .35rem;
    border:1px solid var(--rule);border-radius:5px;background:var(--surface);color:var(--ink)}
.etiquette{display:inline-block;margin-top:.25rem;font-size:.72rem;text-transform:uppercase;
    letter-spacing:.04em;padding:.1rem .4rem;border-radius:4px;background:var(--accent);color:#fff}
.etiquette.avert{background:var(--warn-soft);color:var(--warn)}
.liste-carnet{list-style:none;margin:.4rem 0 .9rem;padding:0;display:flex;flex-direction:column;gap:.35rem}
.liste-carnet li{display:flex;gap:.8rem;align-items:center;justify-content:space-between;
    flex-wrap:wrap;font-size:.9rem;color:var(--ink-2);background:var(--surface-2);
    border-radius:6px;padding:.35rem .6rem}
.sujets-clos{margin-top:.8rem}
.sujets-clos summary{cursor:pointer;font-size:.9rem;color:var(--ink-2)}

/* ---------------- projets terminés ---------------- */
/* Clos : au second plan, mais lisible. Le recul se fait par le fond, la
   bordure de section et l'étiquette — pas en affaiblissant le texte.
   L'opacité était la solution évidente ; mesure faite, elle fait tomber les
   libellés de 12 px sous le seuil AA bien avant d'être perceptible comme un
   grisé. Le fond, lui, ne coûte aucun contraste. */
.ligne-projet.termine{background:var(--surface-2)}
.groupe-termines{border-style:dashed}
.groupe-termines h2{color:var(--ink-2)}
.groupe-termines .intro{margin-top:0}
.dot.termine{background:var(--ink-3)}
/* On n'efface aucun signal : s'il en reste un sur un projet clos, c'est
   justement ce qu'il faut voir. Seule la barre de silence s'atténue — elle
   ne mesure plus rien d'utile une fois le projet terminé. */
.ligne-projet.termine .barre-silence{opacity:.45}

/* ---------------- volet des remarques : filtres et lisibilité ---------------- */
/* Trois informations de natures différentes se disputaient le même badge :
   la gravité, le statut, et l'état du passage dans le document. Chacune a
   maintenant sa forme — barre de gauche, badge, ligne discrète. */
.remfiltres{display:flex;flex-wrap:wrap;gap:.3rem;padding:.5rem .9rem;
    border-bottom:1px solid var(--rule);background:var(--surface-2)}
.rf{font:inherit;font-size:.82rem;cursor:pointer;display:inline-flex;align-items:baseline;gap:.3rem;
    padding:.22rem .5rem;border:1px solid var(--rule);border-radius:20px;
    background:var(--surface);color:var(--ink-2)}
.rf b{font-family:var(--mono);font-size:.8rem;font-weight:500}
.rf:hover:not(:disabled){border-color:var(--ink-3)}
.rf:disabled{opacity:.45;cursor:default}
.rf:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.rf.actif{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.rf.c.actif{background:var(--crit);border-color:var(--crit);color:#fff}
.rf.a.actif{background:var(--accent);border-color:var(--accent);color:#fff}
.rf.o.actif{background:var(--ok);border-color:var(--ok);color:#fff}
.remrappel{margin:0;padding:.45rem .9rem;font-size:.84rem;color:var(--ink-2);
    background:var(--accent-soft);border-bottom:1px solid var(--rule-soft)}

/* La gravité : un mot, sans cadre, pour ne pas concurrencer le statut. */
.rc .grav{font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.rc .grav.c{color:var(--crit)}
.rc .grav.w{color:var(--warn)}
.rc .grav.q{color:var(--ink-3);font-weight:500}

/* L'état du passage parle du document, pas de la remarque : il va près de la
   citation, en retrait. */
.rc .ancre{margin:.1rem 0 .25rem;font-size:.78rem;color:var(--ink-3)}
.rc .ancre.introuvable{color:var(--warn)}

/* Ce qui est réglé reste consultable mais cesse d'occuper la place. */
.rc.reglee-repliee .cit,.rc.reglee-repliee .echange,
.rc.reglee-repliee .proposition,.rc.reglee-repliee form.act,.rc.reglee-repliee .ancre{display:none}
.rc.masquee{display:none}

/* La sélection ne peut plus passer par la barre de gauche, prise par la
   gravité : elle se marque par le fond et un liseré. */
.rc.sel{background:var(--accent-soft);outline:2px solid var(--accent);outline-offset:-2px}

/* Les verdicts : un intitulé qui dit ce qu'on décide, puis des boutons aux
   places fixes. Ce qui change d'un état à l'autre, c'est l'emphase — jamais
   le vocabulaire ni l'ordre. */
.rc form.verdict{align-items:center}
.rc form.verdict .lib{font-size:.76rem;text-transform:uppercase;letter-spacing:.05em;
    color:var(--ink-3);margin-right:.15rem}

/* ---------------- l'échange d'une remarque, en bulles ---------------- */
/* Une remarque n'est pas un message, mais ce qui se dit à son sujet en est
   un : le relecteur écrit, l'auteur répond, on reprend. Jusqu'ici chaque
   écran ne montrait que son propre tour ; les bulles rendent la suite
   lisible — et seulement ici, à l'intérieur d'un point. */
/* « bulle » était déjà pris, et pour tout autre chose : la bulle d'annotation
   qui flotte sur le document (position:absolute, z-index:20). Réemployer ce
   nom sortait les propos du flux et les empilait par-dessus le volet. Ici
   c'est « propos », et chaque règle reste scopée sous .echange. */
.echange{display:flex;flex-direction:column;gap:.4rem;margin:.1rem 0 0}
.echange .propos{max-width:88%;position:static;width:auto;z-index:auto}
.echange .propos.moi{align-self:flex-start}
.echange .propos.lui{align-self:flex-end}
.echange .propos .dit{padding:.4rem .6rem;border-radius:10px;font-size:.91rem;line-height:1.45}
.echange .propos .dit p{margin:0}
.echange .propos.moi .dit{background:var(--surface-2);border-bottom-left-radius:3px;color:var(--ink)}
.echange .propos.lui .dit{background:var(--accent-soft);border-bottom-right-radius:3px;color:var(--ink)}
.echange .propos.ecart .dit{background:var(--warn-soft)}
.echange .propos .dit .lib{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;
    font-weight:600;color:var(--warn);margin-bottom:.1rem}
.echange .propos .qui{margin:.12rem 0 0;font-size:.74rem;color:var(--ink-3)}
.echange .propos.lui .qui{text-align:right}
.echange .propos .proposition{margin:0 0 .25rem}
/* Repliée, une remarque réglée ne montre plus son échange. */
.rc.reglee-repliee .echange{display:none}

/* ------------- l'issue de la relecture, repliée derrière son nom ------------- */
/* Les deux issues dépliées en permanence prenaient près de la moitié du volet :
   la liste des remarques n'en montrait plus qu'une et demie. Au repos il ne
   reste qu'une ligne, qui nomme l'acte et rappelle où en est la relecture. */
.cloture details.issues{display:flex;flex-direction:column;gap:.45rem}
.cloture details.issues>summary{display:grid;grid-template-columns:1fr auto;column-gap:.5rem;
    align-items:center;cursor:pointer;list-style:none;
    padding:.3rem .45rem;margin:-.3rem -.45rem;border-radius:5px}
.cloture details.issues>summary::-webkit-details-marker{display:none}
.cloture details.issues>summary:hover{background:var(--surface)}
.cloture details.issues>summary:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.cloture details.issues>summary .lib{grid-column:1;font-weight:600;font-size:.95rem;color:var(--ink)}
.cloture details.issues>summary .etat{grid-column:1;font-size:.84rem;color:var(--ink-2);line-height:1.4}
.cloture details.issues>summary::after{content:"›";grid-column:2;grid-row:1/-1;
    font-size:1.1rem;color:var(--ink-3);transform:rotate(90deg);transition:transform .15s}
.cloture details.issues[open]>summary::after{transform:rotate(-90deg)}
@media (prefers-reduced-motion:reduce){.cloture details.issues>summary::after{transition:none}}

/* La scène de relecture tenait sa hauteur d'une constante — 100vh moins 62 px
   de barre — qui ignorait la frise des versions posée juste au-dessus. Le
   volet dépassait donc du bas de l'écran de la hauteur de cette frise, et son
   pied tombait sous le pli. La chaîne est déjà une colonne flexible : il
   suffit de lui donner une hauteur ferme et de laisser la scène prendre ce
   qui reste. En dessous de 1040 px les deux volets s'empilent et la page
   reprend son défilement : la règle ne s'y applique pas. */
@media (min-width:1041px){
  body:has(.corps.plein) .app{height:100vh;grid-template-rows:minmax(0,1fr)}
  body:has(.corps.plein) .app>main{min-height:0}
  .relire{height:auto}
}

/* ================= À faire : attraper, ranger, prendre ================= */

/* Attraper, de n'importe quelle page. Replié, c'est un bouton rond à portée de
   pouce ; déplié, un champ et rien d'autre. Sans JavaScript le <details>
   s'ouvre tout de même et le formulaire part normalement. */
.attrape{position:fixed;right:1rem;bottom:1rem;z-index:25}
.attrape>summary{list-style:none;cursor:pointer;width:3.5rem;height:3.5rem;border-radius:50%;
    background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;
    box-shadow:0 8px 20px -8px rgba(10,20,35,.6)}
.attrape>summary::-webkit-details-marker{display:none}
.attrape>summary .plus{font-size:1.8rem;line-height:1}
.attrape>summary .dit{display:none}
.attrape>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.attrape[open]>summary{width:auto;height:auto;border-radius:7px 7px 0 0;padding:.5rem .8rem;gap:.4rem}
.attrape[open]>summary .plus{font-size:1.1rem}
.attrape[open]>summary .dit{display:inline;font-size:.92rem;font-weight:500}
.attrape-forme{display:flex;flex-direction:column;gap:.55rem;width:min(27rem,calc(100vw - 1.5rem));
    padding:.85rem .9rem .95rem;background:var(--surface);border:1px solid var(--accent);border-radius:7px 0 7px 7px;
    box-shadow:0 14px 34px -14px rgba(10,20,35,.55)}
.attrape-forme input[type=text]{font:inherit;font-size:1.05rem;padding:.85rem .75rem;
    border:1px solid var(--rule);border-radius:7px;background:var(--surface);color:var(--ink)}
.attrape-forme input[type=text]:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}
.attrape-forme .b{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin:0}
.attrape-forme .aide{margin:0;font-size:.79rem;color:var(--ink-3);line-height:1.35}
/* La catégorie n'est jamais exigée à la saisie — seulement offerte, pour les
   deux où l'on range le plus. Ces boutons envoient le formulaire eux aussi. */
.attrape-forme .chips{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;
    padding-top:.55rem;border-top:1px solid var(--rule-soft)}
.attrape-forme .chips .aide{flex:1 1 100%}
.attrape-forme .chip{font:inherit;display:inline-flex;align-items:center;gap:.35rem;font-size:.86rem;
    padding:.4rem .75rem;min-height:2.3rem;border:1px solid var(--rule);border-radius:999px;
    background:var(--surface);color:var(--ink-2);cursor:pointer}
.attrape-forme .chip:hover{border-color:var(--accent);color:var(--accent)}
.attrape-forme .chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* L'urgence se coche en notant : c'est à ce moment-là qu'on la sait. Une case
   et non un bouton — cocher n'envoie rien, la ligne part toujours par « Noter ». */
.attrape-forme .urge{display:flex;align-items:flex-start;gap:.55rem;cursor:pointer;
    padding:.5rem .6rem;border:1px solid var(--rule);border-radius:7px;background:var(--ground)}
.attrape-forme .urge input{flex:0 0 auto;width:1.15rem;height:1.15rem;margin:.1rem 0 0;accent-color:var(--crit)}
.attrape-forme .urge .dit{font-size:.9rem;line-height:1.3}
.attrape-forme .urge .aide{display:block;margin-top:.1rem}
.attrape-forme .urge:has(input:checked){border-color:var(--crit);background:var(--crit-soft)}
.attrape-forme .urge:has(input:checked) .dit{color:var(--crit);font-weight:600}
.attrape-forme .urge:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
/* Un repère qui ne dépend pas de la couleur seule : il a sa place dans la ligne. */
.feu{display:inline-block;flex:0 0 auto;width:.5rem;height:.5rem;border-radius:50%;
    background:var(--crit);box-shadow:0 0 0 3px var(--crit-soft);margin-right:.5rem;
    position:relative;top:-.08rem}
@media (max-width:880px){.attrape{bottom:4.4rem}}

/* Ranger : deux écrans, un geste chacun. */
.corps.tri{max-width:38rem}
.tri-ecran{display:flex;flex-direction:column;gap:.75rem}
.tri-pas{display:flex;align-items:center;gap:.7rem}
.tri-pas .numero{flex:0 0 auto;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--accent);
    color:#fff;display:flex;align-items:center;justify-content:center;font-size:.95rem;font-weight:600}
.tri-pas .etape{margin:0;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;
    font-weight:600;color:var(--ink-3)}
.tri-pas .demande{margin:.05rem 0 0;font-size:1.02rem;font-weight:600}
.tri-objet{display:block;margin:0;padding:.6rem .7rem .7rem;background:var(--surface);
    border:1px solid var(--rule);border-radius:8px}
.tri-objet .lib{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;
    font-weight:600;color:var(--ink-3);margin-bottom:.3rem}
.tri-objet input{width:100%;box-sizing:border-box;font:inherit;font-size:1.05rem;line-height:1.4;
    font-weight:500;padding:.45rem .5rem;border:1px solid var(--rule);border-radius:6px;
    background:var(--surface);color:var(--ink)}
.tri-objet input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}
p.tri-objet{padding:.75rem .85rem;font-size:1.05rem;line-height:1.4;font-weight:500}
.tri-detail{margin:-.4rem 0 0;padding:0 .85rem;font-size:.85rem;color:var(--ink-3);line-height:1.45}
.tri-range{display:flex;align-items:center;gap:.6rem;margin:0}
.tri-range .n{display:inline-flex;align-items:center;gap:.4rem;font-size:.85rem;font-weight:500;
    padding:.25rem .65rem;border-radius:999px;background:var(--accent-soft);color:var(--accent)}
.tri-range .n.neutre{background:var(--surface-2);color:var(--ink-3)}
.tri-range .lien{margin-left:auto}
.tri-groupe{margin:.2rem 0 -.2rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;
    font-weight:600;color:var(--ink-3)}

/* Chaque tuile est un bouton qui envoie : pas de « Suivant » à chercher. */
.tuiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}
.tuiles .tuile{font:inherit;min-height:3.9rem;display:flex;align-items:center;gap:.55rem;
    padding:.6rem .75rem;text-align:left;cursor:pointer;border:1px solid var(--rule);
    border-radius:8px;background:var(--surface);color:var(--ink)}
.tuiles .tuile:hover{border-color:var(--ink-3)}
.tuiles .tuile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tuiles .tuile .quoi{font-size:.92rem;line-height:1.25}
.tuiles .tuile.choisie{border:2px solid var(--accent);background:var(--accent-soft)}
.tuiles .tuile.choisie .quoi{font-weight:600}
.tuiles .tuile.projet{grid-column:1/-1;justify-content:space-between}
.tuiles.dates .tuile{flex-direction:column;align-items:flex-start;justify-content:center;gap:.1rem;min-height:4.2rem}
/* Urgente, la tâche se range à l'heure : mêmes tuiles, mais l'heure en gros,
   parce que c'est elle qu'on compare. */
.tuiles.heures .tuile{flex-direction:column;align-items:flex-start;justify-content:center;
    gap:.15rem;min-height:4.2rem;border-color:var(--crit-soft)}
.tuiles.heures .tuile:hover{border-color:var(--crit)}
.tuiles.heures .quand-date{font-size:1.05rem;font-weight:600;color:var(--crit)}
.tuiles.heures .tuile.choisie{border-color:var(--crit);background:var(--crit-soft)}
.tri-urgence{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0 0 .2rem;
    padding:.5rem .7rem;border-radius:7px;background:var(--crit-soft);
    color:var(--crit);font-size:.9rem;font-weight:600}
.tri-urgence .dit{flex:1 1 auto}
.tri-urgence .lien{color:var(--crit);font-weight:400}
.monte-urgence{margin:0}
.monte-urgence .lien{display:inline-flex;align-items:center;color:var(--crit)}
.sous-tuiles{margin:.5rem 0 0;font-size:.8rem;color:var(--ink-3);line-height:1.4}
.cache{display:none}
.tuiles .quand-date{font-family:var(--mono);font-size:.76rem;color:var(--ink-3)}
.tuiles .tuile.choisie .quand-date{color:var(--accent)}
.tuiles .dot.vide{background:var(--rule)}
.tri-autrement{background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:.6rem .75rem}
.tri-autrement>summary{cursor:pointer;font-size:.92rem;color:var(--accent)}
.tri-autrement .aide{margin:.4rem 0 .1rem;font-size:.8rem;color:var(--ink-3);line-height:1.45}
.tri-autrement input[type=text]{flex:1 1 11rem}
.tri-ecart{text-align:center;margin-top:.3rem}
.tri-ecart .lien{color:var(--crit)}

/* La boîte, et mes tâches. */
/* La boîte : une seule action, assez large pour qu'on la prenne sans viser. */
.boite{border-color:var(--warn)}
.tete-boite{display:flex;flex-wrap:wrap;gap:.6rem .9rem;align-items:center;
    padding:.7rem .9rem .75rem;background:var(--warn-soft);border-bottom:1px solid var(--warn)}
.tete-boite .dit{flex:1 1 11rem;min-width:0}
.tete-boite .t{margin:0;font-size:1rem;font-weight:600;color:var(--warn)}
.tete-boite .s{margin:.1rem 0 0;font-size:.82rem;color:var(--ink-2);line-height:1.4}
.tete-boite .ranger{flex:0 0 auto;min-height:2.75rem;display:inline-flex;align-items:center;
    padding:.5rem 1.1rem;font-size:.95rem;white-space:nowrap}
.liste-boite{list-style:none;margin:0;padding:.2rem .9rem .7rem;display:flex;flex-direction:column;gap:.1rem}
.liste-boite li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem .6rem;padding:.5rem 0;
    border-top:1px solid var(--rule-soft)}
.liste-boite li:first-child{border-top:0}
.liste-boite .quoi{flex:1 1 11rem;font-size:.94rem;line-height:1.35}
.liste-boite .n{display:inline-flex;align-items:center;gap:.3rem;font-size:.76rem;color:var(--ink-3)}
.liste-boite .q{font-size:.78rem;color:var(--ink-3)}

/* Mes tâches, par échéance. Une coche à gauche, le reste derrière « ··· » :
   quatre petits liens par ligne, c'était un mur. */
.bloc-taches{padding:0 .9rem}
.bloc-taches+.bloc-taches{margin-top:.5rem}
.titre-bloc{margin:.5rem 0 .25rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;
    font-weight:600;color:var(--ink-3);display:flex;align-items:baseline;gap:.4rem}
.titre-bloc .d{font-family:var(--mono);letter-spacing:0;text-transform:none}
.bloc-taches.retard .titre-bloc{color:var(--crit)}
.bloc-taches.aujourdhui .titre-bloc{color:var(--accent)}
.filtres-cat{display:flex;flex-wrap:wrap;gap:.35rem;padding:.6rem .9rem}
.filtres-cat .f{display:inline-flex;align-items:center;gap:.35rem;font-size:.84rem;padding:.3rem .65rem;
    border-radius:999px;border:1px solid var(--rule);background:var(--surface);color:var(--ink-2);
    text-decoration:none}
.filtres-cat .f.actif{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}
.filtres-cat .f.muet{color:var(--ink-3)}
.filtres-cat .f .n{font-family:var(--mono);font-size:.78rem}
.liste-taches{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem}
.liste-taches li{display:flex;align-items:flex-start;gap:.6rem;background:var(--surface);
    border:1px solid var(--rule);border-radius:7px;padding:.5rem .55rem .55rem .5rem}
.liste-taches .fini{margin:0;flex:0 0 auto}
.liste-taches .coche{font:inherit;width:2.1rem;height:2.1rem;border-radius:50%;cursor:pointer;
    border:1.5px solid var(--rule);background:var(--surface);color:transparent;
    display:flex;align-items:center;justify-content:center;font-size:.9rem;transition:color .1s}
.liste-taches .coche:hover{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}
.liste-taches .coche:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.liste-taches .quoi{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:.1rem}
.liste-taches .quoi .t{font-size:.94rem;line-height:1.35}
.liste-taches .quoi .m{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;
    font-size:.78rem;color:var(--ink-3)}
.bloc-taches.retard .liste-taches .quoi .m{color:var(--crit)}
/* Urgent et en retard ne sont pas la même chose, et ne doivent pas se lire
   pareil : le retard reste du texte coloré, l'urgence prend du poids — un rail
   plein et un fond. C'est une différence d'intensité, pas de teinte, parce que
   l'urgence est plus forte, pas d'une autre nature. */
.bloc-taches.urgent .titre-bloc{color:var(--crit)}
.bloc-taches.urgent .liste-taches li{border-color:var(--crit-soft);background:var(--crit-soft);
    box-shadow:inset 3px 0 0 var(--crit)}
.bloc-taches.urgent .liste-taches .quoi .t{font-weight:600}
.bloc-taches.urgent .liste-taches .quoi .m{color:var(--crit)}
.bloc-taches.urgent .liste-taches .coche{border-color:var(--crit)}
.liste-taches .quoi .m .heure-due b{font-weight:600}
.liste-taches .quoi .m .echu{text-decoration:underline;text-decoration-style:wavy;
    text-decoration-thickness:1px;text-underline-offset:.2rem}
.liste-taches .quoi .m .sans-heure{font-style:italic}
.liste-taches .autres{flex:0 0 auto;position:relative}
.liste-taches .autres>summary{list-style:none;cursor:pointer;width:2.1rem;height:2.1rem;
    border-radius:6px;display:flex;align-items:center;justify-content:center;
    color:var(--ink-3);font-size:1rem;letter-spacing:.05em}
.liste-taches .autres>summary::-webkit-details-marker{display:none}
.liste-taches .autres>summary:hover{background:var(--surface-2);color:var(--ink)}
.liste-taches .autres>summary:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.gestes-tache{position:absolute;right:0;top:2.3rem;z-index:5;display:flex;flex-direction:column;
    align-items:stretch;gap:.3rem;margin:0;padding:.5rem;min-width:11rem;
    background:var(--surface);border:1px solid var(--rule);border-radius:7px;
    box-shadow:0 10px 26px -12px rgba(10,20,35,.45)}
.gestes-tache .bouton,.gestes-tache .lien{text-align:left}

/* Le soir. */
.bilan-soir+.bilan-soir{margin-top:.8rem}
.bilan-soir .liste-serree .h{font-family:var(--mono);font-size:.8rem;color:var(--ink-3);margin-right:.35rem}
.liste-glisse{list-style:none;margin:0;padding:0 .9rem .8rem;display:flex;flex-direction:column;gap:.45rem}
.liste-glisse li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem;padding-top:.45rem;
    border-top:1px solid var(--rule-soft)}
.liste-glisse .quoi{flex:1 1 12rem;font-size:.92rem;line-height:1.35}
.liste-glisse .ou{font-size:.8rem;color:var(--ink-3)}

/* Les réglages du module. */
.reglage-af+.reglage-af{margin-top:.8rem}
.reglage-af .intro,.reglage-af .aide{padding:0 .9rem}
.reglage-af .indice{margin:.5rem .9rem .7rem;padding:.5rem .65rem;border-radius:6px;
    background:var(--accent-soft);font-size:.84rem;color:var(--accent);line-height:1.45}
.reglage-af .indice.attention{background:var(--warn-soft);color:var(--warn)}
.reglage-af .secret{margin:.5rem .9rem}
.reglage-af .secret code{display:block;font-family:var(--mono);font-size:.84rem;padding:.55rem .65rem;
    border:1px solid var(--rule);border-radius:6px;background:var(--surface-2);word-break:break-all}
.reglage-af .b{padding:0 .9rem .7rem;display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.liste-cats,.liste-dates{list-style:none;margin:0;padding:.3rem .9rem .5rem;display:flex;
    flex-direction:column;gap:.35rem}
.liste-cats li,.liste-dates li{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;
    padding:.4rem .5rem;border:1px solid var(--rule-soft);border-radius:6px}
.liste-cats .n,.liste-dates .q{font-family:var(--mono);font-size:.8rem;color:var(--ink-3)}
.liste-dates .quoi{flex:1 1 9rem;font-size:.9rem}
/* Sur téléphone, le champ, la couleur et le bouton ne tiennent pas sur une
   ligne : ils passent à la ligne au lieu de déborder de la carte. */
.renomme{display:flex;flex-wrap:wrap;flex:1 1 100%;gap:.35rem;margin:0;min-width:0}
.renomme input[type=text]{flex:1 1 8rem;min-width:0}
.renomme select{flex:0 1 7rem;min-width:0}
.renomme .bouton{flex:0 0 auto}
.liste-cats li{flex-wrap:wrap}
.liste-cats li>.n{margin-left:auto}
.ajout-cat,.ajout-date{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin:0;
    padding:.2rem .9rem .7rem}
.ajout-cat input[type=text],.ajout-date input[type=text]{flex:1 1 9rem;min-width:0}
.ajout-date .o{display:inline-flex;align-items:center;gap:.3rem;font-size:.85rem;color:var(--ink-3)}
.ajout-date input[type=number]{width:4.5rem}
.reglage-af input[type=text],.reglage-af input[type=number],.reglage-af input[type=time],
.reglage-af select{font:inherit;font-size:.9rem;padding:.45rem .5rem;border:1px solid var(--rule);
    border-radius:5px;background:var(--surface);color:var(--ink)}
.heures-jour{display:flex;flex-direction:column;gap:.55rem;padding:.4rem .9rem .3rem}
.heures-jour .champ{display:flex;flex-direction:column;gap:.15rem;font-size:.92rem}
.heures-jour .champ .aide{padding:0;font-size:.79rem;color:var(--ink-3)}
.heures-jour .champ input{align-self:flex-start;min-width:6rem}
.heures-jour .bouton{align-self:flex-start;margin-top:.2rem}
.cats-agenda{display:flex;flex-wrap:wrap;gap:.35rem;padding:0 .9rem .8rem}
.cats-agenda .bascule{font:inherit;display:inline-flex;align-items:center;gap:.35rem;font-size:.84rem;
    padding:.35rem .7rem;border-radius:999px;border:1px solid var(--rule);background:var(--surface);
    color:var(--ink-3);cursor:pointer;min-height:2.1rem}
.cats-agenda .bascule.on{border-color:var(--ok);background:var(--ok-soft);color:var(--ok);font-weight:600}
.cats-agenda .bascule:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.noter .champ{display:flex;flex-direction:column;gap:.25rem;padding:.7rem .9rem 0;font-size:.92rem}
.noter .champ input{font:inherit;font-size:1.05rem;padding:.75rem .7rem;border:1px solid var(--rule);
    border-radius:7px;background:var(--surface);color:var(--ink)}
.noter .champ input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}
.noter .b{padding:.7rem .9rem .3rem}
.noter .aide{padding:0 .9rem .8rem}

/* Prendre pour la journée, depuis la file. Le jour se ferme le matin : la
   liste ne s'allonge plus ensuite, et le bandeau dit où l'on en est. */
.file .prendre{margin:0}
.file .prise{font:inherit;display:inline-flex;align-items:center;gap:.3rem;font-size:.82rem;
    padding:.3rem .65rem;min-height:2.1rem;border:1px solid var(--rule);border-radius:999px;
    background:var(--surface);color:var(--ink-3);cursor:pointer}
.file .prise:hover{border-color:var(--ink-3)}
.file .prise:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.file .prise.on{border-color:var(--ok);background:var(--ok-soft);color:var(--ok);font-weight:600}
/* Sur étroit, l'intitulé s'efface mais la cible reste au doigt : 44 px. */
@media (max-width:520px){
  .file .prise .dit{display:none}
  .file .prise{min-width:2.75rem;min-height:2.75rem;justify-content:center;padding:.3rem}
}
.premier .gestes .prise{font-size:.86rem;padding:.4rem .9rem;min-height:2.75rem}
.heures-jour .case{display:flex;gap:.5rem;align-items:flex-start;font-size:.92rem;cursor:pointer}
.heures-jour .case input{margin-top:.25rem}
.heures-jour .case .aide{display:block;padding:0;font-size:.79rem;color:var(--ink-3)}

/* La fenêtre qui ne sert qu'à noter : son propre manifeste, sa propre icône,
   et rien de l'application autour. Elle ne peut pas se fermer elle-même —
   après l'envoi, le champ se vide et reprend le curseur. */
.page-noter{background:var(--ground);min-height:100vh}
.noter-seul{width:min(30rem,100%);margin:0 auto;padding:1.1rem .9rem 2rem;
    display:flex;flex-direction:column;gap:.75rem}
.noter-seul>header{display:flex;align-items:center;gap:.55rem}
.noter-seul>header b{font-family:var(--serif);font-weight:500;font-size:1.25rem}
.noter-seul>header .reste{margin-left:auto;font-size:.82rem;color:var(--accent)}
.noter-seul .attrape-forme.seule{width:auto;border-radius:8px;box-shadow:none}
.noter-seul .pied{margin:.3rem 0 0;font-size:.82rem;color:var(--ink-3);text-align:center}

/* Demander, et trancher ce qu'on me demande. */
.demander{width:min(34rem,100%);margin:0 auto;padding:1.4rem 1rem 2.5rem;
    display:flex;flex-direction:column;gap:1rem}
.demander>header{display:flex;align-items:flex-start;gap:.7rem}
.demander>header h1{font-family:var(--serif);font-weight:500;font-size:1.35rem;margin:0;line-height:1.25}
.demander>header .s{margin:.2rem 0 0;font-size:.86rem;color:var(--ink-3);line-height:1.4}
.demander .pied-legal{margin:0;font-size:.78rem;color:var(--ink-3);line-height:1.5;
    padding-top:.8rem;border-top:1px solid var(--rule-soft)}
.formulaire-demande{display:flex;flex-direction:column;gap:.8rem;margin:0}
.formulaire-demande .champ{display:flex;flex-direction:column;gap:.3rem;font-size:.86rem;
    color:var(--ink-2)}
.formulaire-demande .champ .aide{font-size:.78rem;color:var(--ink-3)}
/* Le libellé et sa nuance tiennent sur une ligne : en éléments de flex voisins
   dans une colonne, « facultatif » tombait sous le libellé comme un second titre. */
.formulaire-demande .champ .l{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem}
.formulaire-demande input,.formulaire-demande textarea,.formulaire-demande select{font:inherit;
    font-size:1rem;padding:.65rem .7rem;border:1px solid var(--rule);border-radius:7px;
    background:var(--surface);color:var(--ink);width:100%;box-sizing:border-box}
.formulaire-demande textarea{resize:vertical;line-height:1.45}
.formulaire-demande input:focus,.formulaire-demande textarea:focus,.formulaire-demande select:focus{
    border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}
.formulaire-demande .b{margin:.2rem 0 0}

/* L'antichambre : qui demande se lit avant ce qu'on demande, parce que c'est
   de cela que dépend la réponse. */
.liste-demandes{list-style:none;margin:0;padding:0 .9rem .8rem;display:flex;
    flex-direction:column;gap:.55rem}
.liste-demandes li{display:flex;flex-wrap:wrap;gap:.6rem;align-items:flex-start;
    padding:.7rem .75rem;border:1px solid var(--rule);border-radius:8px;background:var(--surface)}
.liste-demandes .quoi{flex:1 1 16rem;min-width:0}
.liste-demandes .quoi .t{margin:0;font-size:.98rem;line-height:1.35}
.liste-demandes .detail{margin:.3rem 0 0;font-size:.85rem;color:var(--ink-2);line-height:1.45;
    white-space:pre-wrap;overflow-wrap:anywhere}
.liste-demandes .qui{margin:.4rem 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;
    font-size:.8rem;color:var(--ink-3)}
.liste-demandes .qui>span:not(.sceau)::before{content:"·\00a0";color:var(--ink-3)}
.liste-demandes .qui>b{color:var(--ink-2)}
/* Ce qui est tranché se relit en colonnes : le verdict d'abord, c'est lui qu'on
   cherche en revenant trois semaines plus tard. */
.liste-tranchees{list-style:none;margin:0;padding:0 .9rem .8rem;display:flex;
    flex-direction:column;gap:.35rem}
.liste-tranchees li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.6rem;
    font-size:.88rem;padding-top:.35rem;border-top:1px solid var(--rule-soft)}
.liste-tranchees li:first-child{border-top:none}
.liste-tranchees .quoi{flex:1 1 14rem;min-width:0;color:var(--ink-2)}
.liste-tranchees .q{font-size:.8rem;color:var(--ink-3)}
.gestes-demande{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;flex:0 0 auto}
/* Un sceau qui dit ce qu'on sait, et surtout ce qu'on ne sait pas : un nom tapé
   dans un formulaire public n'est pas une identité. */
.sceau{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:600;
    text-transform:uppercase;letter-spacing:.04em;padding:.15rem .45rem;border-radius:4px}
.sceau.sur{background:var(--ok-soft);color:var(--ok)}
/* L'orange du reste du site tombe à 3,5 sur son propre fond, pour un texte de
   11 px en capitales : sous le seuil AA. Ce sceau-là porte donc sa teinte, plus
   sombre, mesurée à 5,0 en clair et 6,2 en sombre. */
.sceau.doute{background:var(--orange-soft);color:#A8491F}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .sceau.doute{color:var(--orange)}}
:root[data-theme="dark"] .sceau.doute{color:var(--orange)}
.sceau::before{content:"";width:.4rem;height:.4rem;border-radius:50%;background:currentColor}
.verdict{display:inline-block;min-width:5.2rem;font-size:.75rem;font-weight:600;
    text-transform:uppercase;letter-spacing:.04em}
.verdict.acceptee{color:var(--ok)}
.verdict.refusee{color:var(--ink-3)}
.liste-serree.adresses{padding-left:0;list-style:none}
.liste-serree.adresses li{display:flex;align-items:center;gap:.6rem}
.liste-serree.adresses .quoi{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.compte-admin.demande{background:var(--orange)}
.reglage-af h3{margin:1rem .9rem .2rem;font-size:.88rem;font-weight:600;color:var(--ink)}
.reglage-af h3:first-of-type{margin-top:.5rem}

/* Ce qui est fait : l'heure d'abord, c'est elle qui rend la journée lisible. */
.journee-faite+.journee-faite{margin-top:.7rem}
.liste-faites{list-style:none;margin:0;padding:.3rem .9rem .7rem;display:flex;
    flex-direction:column;gap:.1rem}
.liste-faites li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem;padding:.4rem 0;
    border-top:1px solid var(--rule-soft)}
.liste-faites li:first-child{border-top:0}
.liste-faites .h{flex:0 0 3rem;font-family:var(--mono);font-size:.82rem;color:var(--ink-3)}
.liste-faites .quoi{flex:1 1 7rem;min-width:0;font-size:.92rem;line-height:1.35}
.liste-faites .ou{display:inline-flex;align-items:center;gap:.3rem;font-size:.79rem;color:var(--ink-3)}
.liste-faites form{margin-left:auto}
.liste-faites form{opacity:0;transition:opacity .12s}
.liste-faites li:hover form,.liste-faites li:focus-within form{opacity:1}
@media (hover:none){.liste-faites form{opacity:1}}

/* La ligne d'une catégorie : deux étages au lieu de trois, et des couleurs
   qui se montrent au lieu de s'appeler « ax3 ». */
.liste-cats li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.4rem .5rem}
.renomme{grid-column:1;grid-row:1;display:flex;flex-direction:column;gap:.4rem;margin:0;min-width:0}
.renomme .l1,.renomme .l2{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}
.renomme .l1 input[type=text]{flex:1 1 8rem;min-width:0}
.renomme .l1 .n{flex:0 0 auto;font-family:var(--mono);font-size:.8rem;color:var(--ink-3);
    padding:0 .3rem}
.renomme .l2 .bouton{margin-left:auto}
.liste-cats .archive{grid-column:2;grid-row:1;margin:.35rem 0 0}
.tons{display:flex;gap:.3rem;flex-wrap:wrap}
.ton{position:relative;cursor:pointer;display:inline-flex}
.ton input{position:absolute;opacity:0;width:0;height:0}
.ton .pastille{display:block;width:1.65rem;height:1.65rem;border-radius:50%;
    border:2px solid transparent;box-shadow:inset 0 0 0 2px var(--surface)}
.ton .nom-ton{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.ton.ax1 .pastille{background:var(--ax1)}
.ton.ax2 .pastille{background:var(--ax2)}
.ton.ax3 .pastille{background:var(--ax3)}
.ton.ax4 .pastille{background:var(--ax4)}
.ton.ax5 .pastille{background:var(--ax5)}
.ton:has(input:checked) .pastille{border-color:var(--ink)}
.ton:has(input:focus-visible) .pastille{outline:2px solid var(--accent);outline-offset:2px}
.ajout-cat{align-items:center}
.jeton-neuf{margin:.3rem .9rem .5rem;padding:.6rem .7rem;border-radius:7px;
    background:var(--ok-soft);border:1px solid var(--ok)}
.jeton-neuf .t{margin:0 0 .4rem;font-size:.85rem;color:var(--ok);line-height:1.45}
.jeton-neuf .secret{margin:0}
.liste-cats.jetons li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}
.liste-cats.jetons .quoi{flex:1 1 8rem;font-size:.92rem}
.liste-cats.jetons .q{font-size:.79rem;color:var(--ink-3)}
.marche{margin:.3rem .9rem .6rem;padding-left:1.2rem;font-size:.9rem;line-height:1.55;color:var(--ink-2)}
.marche li+li{margin-top:.4rem}
.marche ul{margin:.25rem 0;padding-left:1rem}
.marche code{font-family:var(--mono);font-size:.84rem;background:var(--surface-2);
    padding:.05rem .3rem;border-radius:3px;word-break:break-all}
.commande{margin:.4rem 0 0;padding:.6rem .7rem;border-radius:6px;background:var(--surface-2);
    border:1px solid var(--rule);overflow-x:auto}
.commande code{font-family:var(--mono);font-size:.82rem;line-height:1.5;background:none;padding:0;
    white-space:pre}
.deux-lignes{width:100%;border-collapse:collapse;margin:.5rem 0 .2rem;font-size:.86rem}
.deux-lignes th,.deux-lignes td{text-align:left;vertical-align:top;padding:.4rem .5rem;
    border-bottom:1px solid var(--rule-soft);line-height:1.45}
.deux-lignes th{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
.deux-lignes td:first-child{white-space:nowrap;color:var(--ink-2)}
.deux-lignes .q{font-size:.76rem;color:var(--ink-3)}
