/* ── indicateurs ──────────────────────────────────────
   Le lot du 02/10/2026 : lire avant de répondre, les alertes du téléphone,
   la courbe de l'heure, la carte « Cette semaine », la météo de l'humeur,
   les équipes.

   Feuille ajoutée EN DERNIER dans index.html : classes neuves seulement
   (lecture-*, en-lecture, sv-alerte, toast.urgent, vg-resume, g-bien, cb-*,
   sm-*, eq-*, fe-meteo). Sa position ne change rien à l'ordre de cascade.
   Aucun seuil de rupture nouveau : tout ici tient de 360 px au bureau en
   s'enroulant (flex-wrap, minmax(0,1fr)).
   ───────────────────────────────────────────────────────────────────────── */

/* ── Lire avant de répondre ── */
.lecture-zone{font-size:.85rem;color:var(--ink-soft);margin:.1rem 0 .45rem;min-height:1.2em}
.lecture-zone:empty{display:none}
.en-lecture{opacity:.55;cursor:progress}

/* ── Les alertes : le bouton de l'en-tête, et le toast d'un cas urgent ── */
.sv-alerte{font-size:.9rem;padding:.05rem .55rem}
.sv-alerte[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent-ink);border-color:transparent}
.toast.urgent{border-left:4px solid var(--signal)}

/* ── « À aller voir » : la ligne de la classe, et ce qui est à valoriser ── */
.vg-resume{margin:-.2rem 0 .5rem;font-size:.85rem}
.vg-l.g-bien{border-left-color:var(--ok)}
.vg-r.g-bien{background:var(--ok-soft);color:var(--ok)}
.vg-r.g-a_suivre{background:var(--signal-soft);color:var(--signal)}

/* ── La courbe de l'heure ── */
.cb-bloc{margin:0 0 1rem}
.cb-titre{font-size:.95rem;margin-bottom:.25rem}
.cb-resume{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.4rem}
.cb-phrase{font-size:.88rem;padding:.25rem .5rem;border-radius:6px}
.cb-phrase.att{background:var(--signal-soft);color:var(--signal)}
.cb-phrase.ok{background:var(--surface-alt);color:var(--ink-soft)}
.cb-legende{display:flex;flex-wrap:wrap;gap:.2rem .9rem;font-size:.76rem;color:var(--ink-soft);margin-bottom:.15rem}
.cb-l::before{content:"";display:inline-block;width:1.1rem;height:0;vertical-align:middle;margin-right:.3rem}
.cb-l-avance::before{border-top:2px solid var(--accent)}
.cb-l-attendu::before{border-top:2px dashed var(--ink-faint)}
.cb-l-actifs::before{width:.55rem;height:.55rem;border-radius:2px;background:var(--accent);opacity:.35;border:0}
/* Le dessin est fait à la largeur réelle (js/courbe.js), plafonnée à
   40 rem : au-delà, une heure étalée sur 900 px ne se lit pas mieux. */
.cb-svg{display:block;width:100%;max-width:40rem;height:auto;touch-action:pan-y;user-select:none}
.cb-grille{stroke:var(--rule);stroke-width:1}
.cb-axe{font-family:var(--f-mono);font-size:10px;fill:var(--ink-faint)}
.cb-avance{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.cb-attendu{fill:none;stroke:var(--ink-faint);stroke-width:1.4;stroke-dasharray:4 3}
.cb-actifs{fill:var(--accent);opacity:.35}
.cb-curseur{stroke:var(--ink-soft);stroke-width:1}
.cb-point{fill:var(--accent);stroke:var(--surface);stroke-width:1.5}
.cb-et{font-size:11px;fill:var(--ink-soft)}
.cb-et-avance{fill:var(--accent-ink);font-weight:600}
.cb-lu{font-family:var(--f-mono);font-size:.78rem;min-height:1.3em}
.cb-table{font-size:.82rem}

/* ── Cette semaine ── */
.sm-pick{flex-wrap:wrap;gap:.5rem}
.sm-nav{display:flex;align-items:center;gap:.4rem;flex:1 1 16rem;min-width:0}
.sm-nav .btn{min-width:44px;padding:.4rem .6rem}
.sm-periode{flex:1;text-align:center;font-size:.88rem;font-weight:600;min-width:0}
.sm-tuiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin:.8rem 0 .4rem}
.sm-tuile{background:var(--surface-alt);border-radius:8px;padding:.55rem .65rem;display:flex;flex-direction:column;gap:.1rem}
.sm-v{font-family:var(--f-mono);font-size:1.45rem;font-weight:600;line-height:1.2}
.sm-l{font-size:.78rem;color:var(--ink-soft)}
.sm-e{font-family:var(--f-mono);font-size:.76rem}
.sm-e.bien{color:var(--ok)}
.sm-e.mal{color:var(--signal)}
.sm-e.neutre{color:var(--ink-faint)}
.sm-sec{border-top:1px solid var(--rule-soft);padding:.8rem 0 .3rem}
.sm-h{font-size:.98rem;margin-bottom:.35rem;display:flex;align-items:center}
.sm-el{cursor:pointer;min-height:44px}
.sm-el:hover{background:var(--surface-alt)}
.sm-el:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.sm-nouveau{margin-left:.4rem;font-size:.68rem;vertical-align:middle}
.sm-meteo-el{font-size:.85rem;letter-spacing:.05em}
.sm-concept{display:flex;flex-wrap:wrap;gap:.1rem .6rem;padding:.4rem .55rem;border-left:3px solid var(--rule);
  margin:.3rem 0;font-size:.88rem}
.sm-concept.ko{border-left-color:var(--ko)}
.sm-concept.att{border-left-color:var(--signal)}
.sm-c-t{flex:1 1 14rem;min-width:0}
.sm-c-m{font-family:var(--f-mono);font-size:.76rem;color:var(--ink-soft)}
.sm-traj{margin:.4rem 0 .8rem}
.sm-traj-t{font-size:.88rem;margin-bottom:.35rem}
.sm-traj-l,.sm-traj-n{font-size:.82rem;color:var(--ink-soft);margin-top:.25rem}
.sm-traj-n{color:var(--ink)}
.sm-barre{display:flex;gap:2px;height:.7rem;border-radius:4px;overflow:hidden;background:var(--surface-alt)}
.sm-part{display:block;height:100%}
.sm-part.a_jour{background:var(--ok)}
.sm-part.juste{background:var(--accent);opacity:.55}
.sm-part.retard{background:var(--signal)}
.sm-part.decroche{background:var(--ko)}
.sm-part.sans_repere{background:var(--rule)}
/* La météo : du clair au sombre, pas un arc-en-ciel — et le nombre écrit à
   côté, l'émoji en tête : la couleur n'est jamais seule à dire. */
.sm-part.mA{background:var(--ok)}
.sm-part.mB{background:var(--ok);opacity:.5}
.sm-part.mC{background:var(--signal);opacity:.6}
.sm-part.mD{background:var(--ko)}
.sm-jour{display:grid;grid-template-columns:minmax(0,7.5rem) minmax(0,1fr);gap:.15rem .6rem;
  align-items:center;margin:.35rem 0;font-size:.82rem}
.sm-jour-d{color:var(--ink-soft)}
.sm-jour-n{grid-column:2;font-size:.8rem}
.sm-hors{display:flex;flex-wrap:wrap;gap:.3rem}
.sm-pastille{font-size:.8rem;background:var(--ok-soft);color:var(--ok);border-radius:999px;padding:.15rem .55rem}
.sm-rien{font-size:.85rem;margin-top:.5rem}
.sm-seance{display:flex;flex-direction:column;padding:.35rem 0;border-top:1px dashed var(--rule-soft);font-size:.86rem}
.sm-s-m{font-size:.78rem;color:var(--ink-soft);font-family:var(--f-mono)}
.sm-grille-meteo{display:flex;flex-direction:column;gap:.15rem}
.sm-gm-l{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem .5rem;font-size:.85rem}
.sm-gm-h{letter-spacing:.08em;overflow-wrap:anywhere}

/* ── Les équipes ── */
.eq-equipe{border-top:1px solid var(--rule-soft);padding:.8rem 0 .4rem}
.eq-nom{font-size:1rem;margin-bottom:.15rem}
.eq-sujet{font-weight:400;color:var(--ink-soft);font-size:.9rem}
.eq-jalons,.eq-jalons-etu{display:flex;flex-wrap:wrap;gap:.35rem;margin:.45rem 0 .6rem}
.eq-jalon{appearance:none;font:inherit;font-size:.8rem;border-radius:999px;padding:.25rem .7rem;
  border:1px solid var(--rule);background:var(--surface);color:var(--ink-soft)}
button.eq-jalon{min-height:44px;cursor:pointer}
.eq-jalon.valide{background:var(--ok-soft);color:var(--ok);border-color:transparent;font-weight:600}
.eq-jalon.a_reprendre{background:var(--signal-soft);color:var(--signal);border-color:transparent;font-weight:600}
.eq-membre{flex-wrap:wrap}
.eq-dernier{font-size:.8rem;color:var(--ink-soft);font-style:italic;flex-basis:100%}
.eq-apprecier{display:flex;gap:.3rem;margin-left:auto}
.eq-niv{appearance:none;width:44px;height:44px;border-radius:8px;border:1px solid var(--rule);
  background:var(--surface);font:inherit;font-size:1.05rem;font-weight:700;color:var(--ink-soft);cursor:pointer}
.eq-niv.on.moteur{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}
.eq-niv.on.present{background:var(--surface-alt);color:var(--ink);border-color:var(--ink-soft)}
.eq-niv.on.rien{background:var(--ko-soft);color:var(--ko);border-color:var(--ko)}
.eq-niv:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.eq-j{font-size:.85rem;margin:.3rem 0}
#eq-texte{width:100%;font-family:var(--f-mono);font-size:.85rem}
.eq-journal{display:flex;flex-direction:column;gap:.45rem;margin:.4rem 0}
.eq-journal textarea{width:100%;font:inherit;font-size:.92rem;background:var(--surface-alt);color:var(--ink);
  border:1px solid var(--rule);border-radius:7px;padding:.5rem .6rem}
.eq-q{font-size:.9rem;font-weight:600}
.eq-pairs{border-top:1px solid var(--rule-soft);margin-top:.6rem;padding-top:.6rem;display:flex;flex-direction:column;gap:.4rem}
.eq-p-l{display:flex;align-items:center;justify-content:space-between;gap:.6rem;font-size:.92rem;color:var(--ink)}
.eq-p-l input{width:5.5rem;text-align:right}
.eq-total{font-family:var(--f-mono);font-size:.88rem}
.eq-total.ok{color:var(--ok)}
.eq-total.att{color:var(--signal)}

/* ── La fiche d'un élève : sa météo ── */
.fe-meteo{display:flex;flex-wrap:wrap;gap:.25rem;font-size:1.1rem;margin-top:.35rem}
