/* ===================================================================
   COCKPIT SCOLARITÉ — ISTEC
   Refonte visuelle · remplace cockpit-styles.css
   Mêmes noms de classes que la v1. Aucun framework.
   Typo : Poppins (titres/chiffres) + DM Sans (texte).

   À charger dans <head> AVANT ce fichier :
   <link href="https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600;9..40,700&family=Poppins:wght@500;600;700;800&display=swap" rel="stylesheet">

   Ce qui change :
   1. Échelle neutre plus froide et plus contrastée (tableaux lisibles)
   2. Ombres nettes à 2 niveaux au lieu de flous larges
   3. Hiérarchie : eyebrow → titre → sous-titre, tailles resserrées
   4. Badges à pastille (lecture du statut au coup d'œil)
   5. États de survol / focus homogènes sur TOUS les contrôles
   6. Bandeau vert plus sobre : la couleur devient une signature, pas un fond
   =================================================================== */

:root{
  /* surfaces */
  --bg:#f1f4ee; --panel:#ffffff; --panel-2:#f8faf6; --panel-3:#f3f6f0;
  /* texte */
  --ink:#171b13; --ink-2:#3a422f; --mut:#6b7464; --faint:#98a18d;
  /* traits */
  --line:#e2e7db; --line2:#eef1e9; --line3:#f5f7f2;
  /* vert ISTEC */
  --g1:#2f7d32; --g2:#5ba32b; --g-ink:#3b6d11; --g-deep:#1f5a22;
  --g-soft:#e9f3e0; --g-tint:#f5faf0; --g-line:#cfe3bd;
  /* secondaire */
  --b2:#2f6f86; --b2-soft:#e6f0f4; --b2-line:#c9dde6;
  /* sémantique */
  --amber:#a1650f; --amber-soft:#fdf4e3; --amber-line:#f0dcb4;
  --red:#b3261e; --red-soft:#fdedec; --red-line:#f3cecb;
  --violet:#6b34c9; --violet-soft:#f0e9fb;
  /* rayons */
  --r-xs:6px; --r-sm:8px; --r:11px; --r-md:13px; --r-lg:16px; --r-xl:20px;
  /* élévation */
  --sh-1:0 1px 2px rgba(23,27,19,.05);
  --sh-2:0 1px 2px rgba(23,27,19,.05), 0 8px 18px -12px rgba(23,27,19,.22);
  --sh-3:0 2px 6px -2px rgba(23,27,19,.08), 0 18px 40px -22px rgba(23,27,19,.4);
  --shadow:var(--sh-3);
  --ring:0 0 0 3px rgba(91,163,43,.2);
  --ring-red:0 0 0 3px rgba(179,38,30,.16);
  /* typo */
  --disp:'Poppins',system-ui,sans-serif; --body:'DM Sans',system-ui,sans-serif;
  /* gabarit */
  --topbar-h:60px; --sidenav-w:250px;
  --ease:cubic-bezier(.32,.72,.35,1);
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:14px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{font-feature-settings:"cv05","ss01"}
:focus-visible{outline:none;box-shadow:var(--ring)}
::selection{background:var(--g-soft);color:var(--g-deep)}
.wrap{max-width:min(1720px,100%);margin:0 auto;padding:0 28px}
a{color:var(--g-ink);text-decoration:none}
a:hover{color:var(--g-deep);text-decoration:underline;text-underline-offset:2px}

/* défilement discret */
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-thumb{background:#cbd3c2;border-radius:9px;border:3px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#b3bda8;background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}

/* ===================================================================
   1 · BARRE SUPÉRIEURE
   =================================================================== */
header.top{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.86);backdrop-filter:saturate(1.6) blur(12px);-webkit-backdrop-filter:saturate(1.6) blur(12px);border-bottom:1px solid var(--line);box-shadow:0 1px 0 rgba(23,27,19,.02)}
.top-in{display:flex;align-items:center;gap:14px;padding:10px 24px;min-height:var(--topbar-h);max-width:min(1720px,100%);margin:0 auto}
.top img{height:28px;width:auto;display:block}
.top .brandblock{display:flex;flex-direction:column;align-items:flex-start;line-height:1;flex-shrink:0;padding-right:14px;border-right:1px solid var(--line)}
.top .brandblock img{height:26px;width:auto;display:block}
.top .brandtag{font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-weight:700;border-left:none;padding-left:0;margin-top:4px}
.top .spacer{flex:1}
.top .save{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--mut);font-weight:600}
.top .save .led{width:7px;height:7px;border-radius:50%;background:var(--g2);box-shadow:0 0 0 3px rgba(91,163,43,.16)}
.top .save.dirty{color:#7c5312}
.top .save.dirty .led{background:var(--amber);box-shadow:0 0 0 3px rgba(161,101,15,.16)}
.top .save.offline{color:#a33327}
.top .save.offline .led{background:#c0392b;box-shadow:0 0 0 3px rgba(192,57,43,.16)}

/* sélecteur d'année — élément d'orientation permanent, donc lisible */
.yearpick{display:inline-flex;align-items:center;gap:7px;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:5px 12px 5px 13px;margin:0 4px;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}
.yearpick:hover{border-color:var(--g-line)}
.yearpick:focus-within{border-color:var(--g2);box-shadow:var(--ring)}
.yearpick-ic{font-size:12px;line-height:1;opacity:.6}
.yearpick select{font:inherit;font-family:var(--disp);font-size:12.5px;font-weight:600;color:var(--ink);border:0;background:transparent;cursor:pointer;padding:1px 0;outline:none;max-width:190px}

/* utilisateur */
#userBox{display:flex;align-items:center;gap:10px}
.userchip{font-size:12.5px;font-weight:600;color:var(--ink);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.usermenu{position:relative;display:inline-flex}
.useravatar{width:33px;height:33px;border-radius:50%;border:none;cursor:pointer;background:var(--g1);color:#fff;font-family:var(--disp);font-weight:700;font-size:12.5px;display:inline-flex;align-items:center;justify-content:center;transition:background .15s var(--ease),transform .1s var(--ease);box-shadow:0 0 0 2px var(--panel),0 0 0 3.5px #4bb050}
.useravatar:hover{background:var(--g-deep);box-shadow:0 0 0 2px var(--panel),0 0 0 3.5px #3a9a40}
.useravatar:active{transform:scale(.94)}
#userBox.st-saving .useravatar{box-shadow:0 0 0 2px var(--panel),0 0 0 3.5px var(--amber)}
#userBox.st-offline .useravatar{box-shadow:0 0 0 2px var(--panel),0 0 0 3.5px var(--red)}
.usermenu-pop{position:absolute;top:calc(100% + 10px);right:0;min-width:230px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-3);padding:6px;display:none;z-index:60}
.usermenu.open .usermenu-pop{display:block;animation:pop .16s var(--ease)}
.usermenu-pop .um-head{padding:9px 10px 11px;border-bottom:1px solid var(--line2);margin-bottom:5px}
.usermenu-pop .um-name{font-family:var(--disp);font-weight:700;font-size:14px;color:var(--ink)}
.usermenu-pop .um-mail{font-size:12px;color:var(--mut);margin-top:2px;word-break:break-all}
.usermenu-pop .um-role{font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);font-weight:700;padding:4px 10px 6px}
.usermenu-pop .um-item{display:block;width:100%;text-align:left;border:none;background:none;font-family:var(--body);font-size:13px;font-weight:600;color:var(--ink-2);padding:9px 10px;border-radius:var(--r-sm);cursor:pointer;transition:background .12s,color .12s}
.usermenu-pop .um-item:hover{background:var(--g-soft);color:var(--g-deep)}
.usermenu-pop .um-item.danger{color:var(--red)}
.usermenu-pop .um-item.danger:hover{background:var(--red-soft);color:var(--red)}

/* ===================================================================
   2 · MENU LATÉRAL (3 niveaux)
   Actif = filet vert + fond teinté. Pas d'aplat plein : moins de bruit
   quand plusieurs niveaux sont ouverts.
   =================================================================== */
body.has-nav{padding-left:var(--sidenav-w)}
.sidenav{display:none}
body.has-nav .sidenav{display:flex;flex-direction:column;position:fixed;left:0;top:0;bottom:0;width:var(--sidenav-w);background:var(--panel);border-right:1px solid var(--line);z-index:55;overflow-y:auto;overscroll-behavior:contain;padding:16px 12px 20px;transition:transform .22s var(--ease)}
.side-brand{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:2px 8px 16px;margin-bottom:10px;border-bottom:1px solid var(--line2)}
.side-brand img{height:30px;width:auto;display:block}
.side-brand .brandtag{font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--g-ink);font-weight:700}
.side-nav{display:flex;flex-direction:column;gap:1px}

.snav-item{display:flex;flex-direction:column}
.snav-pole{position:relative;display:flex;align-items:center;gap:11px;width:100%;padding:9px 11px;border:0;background:transparent;border-radius:var(--r-sm);font-family:var(--disp);font-weight:600;font-size:13.5px;color:var(--ink-2);cursor:pointer;text-align:left;transition:background .13s var(--ease),color .13s var(--ease)}
.snav-pole:hover{background:var(--panel-3);color:var(--ink)}
.snav-item.on>.snav-pole,.snav-pole.cur{color:var(--g-deep);background:var(--g-soft);font-weight:700}
.snav-item.on>.snav-pole::before{content:"";position:absolute;left:-12px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--g1)}
.snav-ic{font-size:14px;line-height:1;width:19px;text-align:center;flex-shrink:0;opacity:.85}
.snav-lb{flex:1;min-width:0}
.snav-cx{font-size:9px;opacity:.45;transition:transform .2s var(--ease)}
.snav-item.open .snav-cx{transform:rotate(180deg)}

.snav-sub{display:none;flex-direction:column;gap:1px;margin:3px 0 10px 14px;padding-left:11px;border-left:1px solid var(--line)}
.snav-item.open .snav-sub{display:flex}
.snav-leaf{position:relative;display:block;width:100%;text-align:left;border:0;background:transparent;border-radius:var(--r-sm);font-family:var(--body);font-weight:500;font-size:13px;color:var(--mut);padding:7px 10px;cursor:pointer;transition:background .13s,color .13s}
.snav-leaf:hover{background:var(--panel-3);color:var(--ink)}
.snav-leaf.on{color:var(--g-deep);background:var(--g-soft);font-weight:700}
.snav-leaf.on::before{content:"";position:absolute;left:-12px;top:6px;bottom:6px;width:2px;border-radius:2px;background:var(--g2)}
.snav-leaf.sub2{margin-left:6px;font-weight:400;font-size:12.5px}
.snav-group{display:flex;flex-direction:column;gap:1px;margin:6px 0 2px}
.snav-ghead{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.11em;color:var(--faint);padding:7px 10px 4px}
.snav-group.cur .snav-ghead{color:var(--g-ink)}

.nav-toggle{border:0;background:transparent;font-size:17px;line-height:1;color:var(--mut);cursor:pointer;padding:6px 10px;border-radius:var(--r-sm);margin-right:2px;transition:background .13s,color .13s}
.nav-toggle:hover{background:var(--panel-3);color:var(--ink)}
body.has-nav.nav-collapsed{padding-left:0}
body.has-nav.nav-collapsed .sidenav{transform:translateX(-100%)}

/* ancienne nav par onglets (conservée) */
.tabbar{background:rgba(255,255,255,.6);border-bottom:1px solid var(--line)}
nav.tabs{display:flex;flex-direction:column;gap:0;overflow:visible;flex:1 1 auto;min-width:0;margin:0;padding:0}
nav.tabs .poles{display:flex;gap:3px;align-items:center;padding:0;min-height:0;flex-wrap:nowrap}
.pole-item{position:relative;display:inline-flex}
.pole-item>.pole{appearance:none;border:none;background:none;font-family:var(--disp);font-weight:600;font-size:13.5px;color:var(--mut);padding:8px 12px;cursor:pointer;white-space:nowrap;border-radius:var(--r-sm);display:inline-flex;align-items:center;gap:7px;min-height:34px;transition:background .14s,color .14s,box-shadow .14s}
.pole-item>.pole:hover{color:var(--ink);background:var(--panel-3)}
.pole-item.on>.pole{color:#fff;background:var(--g1);box-shadow:0 4px 12px -8px rgba(47,125,50,.9)}
.pole-item>.pole .cur{font-weight:500;font-size:12.5px;opacity:.9;padding-left:9px;border-left:1px solid rgba(255,255,255,.38)}
.pole-item>.pole .caret{font-size:8px;opacity:.5;transition:transform .18s,opacity .18s}
.pole-item.has-sub:hover>.pole .caret,.pole-item.has-sub:focus-within>.pole .caret{opacity:.9}
.pole-drop{position:absolute;top:calc(100% + 9px);left:0;z-index:60;display:none;min-width:206px;flex-direction:column;gap:1px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-3);padding:6px}
.pole-drop::before{content:"";position:absolute;left:0;right:0;top:-9px;height:9px}
.pole-item.has-sub:hover .pole-drop,.pole-item.has-sub:focus-within .pole-drop{display:flex;animation:pop .15s var(--ease)}
.pole-item:last-child .pole-drop{left:auto;right:0}
.pole-drop .subtab{appearance:none;border:none;background:none;text-align:left;font-family:var(--body);font-weight:500;font-size:13px;color:var(--ink-2);padding:8px 12px;border-radius:var(--r-sm);cursor:pointer;white-space:nowrap;transition:background .12s,color .12s}
.pole-drop .subtab:hover{color:var(--ink);background:var(--panel-3)}
.pole-drop .subtab.on{color:var(--g-deep);background:var(--g-soft);font-weight:700}
.subtabs-m{display:none}
nav.tabs .sep{width:1px;height:20px;background:var(--line);margin:0 3px;flex-shrink:0}

/* barre de sélection programme / promo */
.selbar{border-top:1px solid var(--line);background:var(--g-tint)}
.selbar:empty{display:none}
.selbar .selbar-in{max-width:min(1720px,100%);margin:0 auto;padding:9px 28px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.selbar .promo-pick{margin-left:0}
.selbar .grpchips{margin-left:auto}

/* ===================================================================
   3 · GABARIT DE PAGE & BANDEAU DE TITRE
   =================================================================== */
main{padding:24px 0 72px}
.view{display:none}
.view.on{display:block;animation:rise .3s var(--ease)}
.view,.masthead{scroll-margin-top:calc(var(--topbar-h) + 10px)}
@keyframes rise{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes pop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}

/* Bandeau : vert profond uni + halo discret. Le dégradé multicolore et
   les rayures diagonales de la v1 sont supprimés (bruit visuel). */
.masthead{position:relative;margin-top:4px;border-radius:var(--r-lg);overflow:hidden;background:#265f28;background-image:linear-gradient(135deg,#1d4f20 0%,#2f7d32 78%);color:#fff;box-shadow:0 10px 28px -20px rgba(31,90,34,.85)}
.masthead .mh-accent{position:absolute;inset:0;pointer-events:none;background:radial-gradient(90% 130% at 92% -10%,rgba(150,214,110,.28),transparent 58%)}
.masthead .mh-in{position:relative;padding:24px 28px;display:flex;justify-content:space-between;align-items:flex-start;gap:18px 26px;flex-wrap:wrap}
.masthead .mh-txt{flex:1 1 300px;min-width:min(100%,280px)}
.mh-ey{display:flex;align-items:center;gap:9px;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:rgba(255,255,255,.72);flex-wrap:wrap}
.mh-tick{width:7px;height:7px;border-radius:50%;background:#9fd67e;display:inline-block;box-shadow:0 0 0 3px rgba(159,214,126,.22)}
.mh-sep{opacity:.4}
.mh-title{font-family:var(--disp);font-weight:700;font-size:28px;line-height:1.08;letter-spacing:-.022em;margin:11px 0 0}
.mh-sub{font-size:13.5px;line-height:1.5;color:rgba(255,255,255,.78);margin:7px 0 0;max-width:78ch}
.masthead.mh-sm{border-radius:var(--r-md)}
.masthead.mh-sm .mh-in{padding:15px 20px}
.masthead.mh-sm .mh-title{font-size:20px;margin:6px 0 0}
.masthead.mh-sm .mh-sub{font-size:12.5px;margin:4px 0 0}
.masthead .mh-tools{display:flex;flex-wrap:wrap;gap:9px 13px;align-items:center;justify-content:flex-end;flex-shrink:0}
.masthead .mh-tools:empty{display:none}
.masthead .mh-tools .selbar-in{display:flex;flex-wrap:wrap;gap:9px 13px;align-items:center;justify-content:flex-end;max-width:none;margin:0;padding:0}
.masthead .mh-tools .promo-pick{display:flex;flex-direction:column;gap:5px;align-items:flex-start;margin:0}
.masthead .mh-tools .promo-pick label{font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.62);font-weight:700}
.masthead .mh-tools .promo-pick select{appearance:none;-webkit-appearance:none;background-color:rgba(255,255,255,.14);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='white' viewBox='0 0 24 24'><path d='M7 10l5 5 5-5z'/></svg>");background-repeat:no-repeat;background-position:right 9px center;border:1px solid rgba(255,255,255,.28);color:#fff;font-family:var(--disp);font-weight:600;font-size:13px;border-radius:var(--r-sm);padding:7px 28px 7px 12px;min-height:34px;max-width:230px;cursor:pointer;transition:background-color .14s,border-color .14s}
.masthead .mh-tools .promo-pick select:hover{background-color:rgba(255,255,255,.2)}
.masthead .mh-tools .promo-pick select:focus{outline:none;border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.18)}
.masthead .mh-tools .promo-pick select option{color:var(--ink)}
.masthead .mh-tools .grpchips{margin:0}
.masthead .mh-tools .grpchips .gchip{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.26);color:rgba(255,255,255,.9)}
.masthead .mh-tools .grpchips .gchip:hover{border-color:rgba(255,255,255,.6);color:#fff;background:rgba(255,255,255,.2)}
.masthead .mh-tools .grpchips .gchip.on{background:#fff;color:var(--g-deep);border-color:#fff}
.masthead .mh-tools .grpchips .gchip .n{opacity:.65}

/* titres hors bandeau */
.eyebrow{display:flex;align-items:center;gap:9px;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--g-ink);font-weight:700}
.eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--g2);display:inline-block}
h1.title{font-family:var(--disp);font-weight:700;font-size:30px;line-height:1.08;letter-spacing:-.022em;margin:11px 0 0}
.lead{font-size:14.5px;line-height:1.6;color:var(--mut);margin:10px 0 0;max-width:78ch;text-wrap:pretty}
.sec-h{display:flex;align-items:center;gap:12px;margin:32px 0 14px;flex-wrap:wrap}
.sec-h .t{font-family:var(--disp);font-weight:700;font-size:17px;letter-spacing:-.015em;display:inline-flex;align-items:center}
.sec-h .t::before{content:"";display:inline-block;width:3px;height:15px;border-radius:3px;background:var(--g2);margin-right:10px}
.sec-h .s{font-size:12.5px;color:var(--faint)}
.sec-h .rule{flex:1;height:1px;background:var(--line);min-width:30px}
.muted{font-size:12.5px;color:var(--mut)}

/* ===================================================================
   4 · SURFACES & BOUTONS
   =================================================================== */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-1);transition:border-color .16s var(--ease),box-shadow .16s var(--ease)}
.pad{padding:16px 18px}
.card.hover{transition:transform .16s var(--ease),box-shadow .16s var(--ease),border-color .16s}
.card.hover:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--g-line)}

.btn{appearance:none;border:1px solid transparent;cursor:pointer;font-family:var(--body);font-weight:600;border-radius:var(--r-sm);font-size:13.5px;padding:9px 15px;line-height:1.2;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:background .14s var(--ease),border-color .14s,box-shadow .14s,transform .06s}
.btn-p{background:var(--g1);color:#fff;box-shadow:0 1px 2px rgba(31,90,34,.2)}
.btn-p:hover{background:#286c2b}
.btn-p:active{transform:translateY(1px)}
.btn-g,.btn:not(.btn-p):not(.btn-g){background:var(--panel);border-color:var(--line);color:var(--ink-2)}
.btn-g:hover,.btn:not(.btn-p):not(.btn-g):hover{border-color:var(--g-line);background:var(--g-tint);color:var(--g-deep)}
.btn-sm{padding:6px 11px;font-size:12.5px;border-radius:var(--r-xs)}
.btn[disabled]{opacity:.42;cursor:not-allowed;transform:none}
.btn:focus-visible{box-shadow:var(--ring)}
.lnk{border:none;background:none;color:var(--g-ink);cursor:pointer;font-size:14px;padding:2px 5px;border-radius:var(--r-xs);vertical-align:middle;transition:background .12s,color .12s}
.lnk:hover{background:var(--g-soft);color:var(--g-deep)}

/* ===================================================================
   5 · KPI / COMPTEURS
   Libellé au-dessus, chiffre dominant, filet vert au survol.
   =================================================================== */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.kpi{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:15px 17px 16px;box-shadow:var(--sh-1);overflow:hidden;transition:border-color .16s var(--ease),box-shadow .16s var(--ease),transform .16s var(--ease)}
.kpi::after{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--line2);transition:background .18s var(--ease)}
.kpi:hover{border-color:var(--g-line);box-shadow:var(--sh-2);transform:translateY(-1px)}
.kpi:hover::after{background:var(--g2)}
.kpi .v{font-family:var(--disp);font-weight:700;font-size:27px;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink)}
.kpi .v.small{font-size:20px}
.kpi .l{font-size:11.5px;color:var(--mut);margin-top:8px;font-weight:500;line-height:1.35}
.kpi .sub{font-size:11px;color:var(--faint);margin-top:3px}
.kpi.green .v{color:var(--g1)}
.kpi.green::after{background:linear-gradient(90deg,var(--g2),var(--g1))}
.kpi.blue .v{color:var(--b2)}
.kpi.blue::after{background:var(--b2)}
.kpi.red .v{color:var(--red)}
.kpi.red::after{background:var(--red)}

.gauge{display:flex;align-items:center;gap:18px}
.gauge .ring{--p:0;width:112px;height:112px;border-radius:50%;flex-shrink:0;background:conic-gradient(var(--g1) calc(var(--p)*1%),var(--line2) 0);display:grid;place-items:center}
.gauge .ring .inner{width:86px;height:86px;border-radius:50%;background:var(--panel);display:grid;place-items:center;text-align:center;box-shadow:inset 0 0 0 1px var(--line2)}
.gauge .ring .pct{font-family:var(--disp);font-weight:700;font-size:24px;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.gauge .ring .sub{font-size:10px;color:var(--mut);margin-top:2px}

.bar{display:block;height:7px;background:var(--line2);border-radius:99px;overflow:hidden}
.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--g2),var(--g1));border-radius:99px;transition:width .4s var(--ease)}
.bar.full>i{background:var(--g-deep)}

/* ===================================================================
   6 · CONTRÔLES DE FILTRE
   =================================================================== */
.v2-controls{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:13px 16px 14px;box-shadow:var(--sh-1)}
.v2-ctrl-row{display:flex;flex-wrap:wrap;gap:12px 14px;align-items:flex-end}
.v2-field{display:flex;flex-direction:column;gap:5px}
.v2-field label{font-size:9.5px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.1em}
.v2-field select,.v2-field input{font:inherit;font-size:13.5px;padding:8px 11px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel);min-width:158px;color:var(--ink);min-height:36px;transition:border-color .14s,box-shadow .14s}
.v2-field select{font-family:var(--disp);font-weight:500;cursor:pointer}
.v2-field select:hover,.v2-field input:hover{border-color:#cdd6c3}
.v2-field select:focus,.v2-field input:focus{outline:none;border-color:var(--g2);box-shadow:var(--ring)}
.v2-field input[type=search]{min-width:230px}
.v2-field input::placeholder{color:var(--faint)}

.search{position:relative;flex:1;min-width:250px}
.search input{width:100%;font-family:var(--body);font-size:14px;padding:11px 15px 11px 42px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel);color:var(--ink);outline:none;transition:border-color .14s,box-shadow .14s}
.search input:focus{border-color:var(--g2);box-shadow:var(--ring)}
.search svg{position:absolute;left:15px;top:50%;transform:translateY(-50%);opacity:.5}
.select{font-family:var(--disp);font-size:13.5px;font-weight:500;padding:9px 13px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel);color:var(--ink);outline:none;cursor:pointer;min-height:36px;transition:border-color .14s,box-shadow .14s}
.select:hover{border-color:#cdd6c3}
.select:focus{border-color:var(--g2);box-shadow:var(--ring)}
.inp{font-family:var(--body);font-size:13px;padding:7px 10px;border:1px solid var(--line);border-radius:var(--r-sm);outline:none;background:var(--panel);color:var(--ink);width:100%;transition:border-color .14s,box-shadow .14s}
.inp:focus{border-color:var(--g2);box-shadow:var(--ring)}

.chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink-2);font-weight:600;font-size:13px;padding:8px 12px;border-radius:var(--r-sm);cursor:pointer;transition:border-color .14s,background .14s,color .14s}
.chip:hover{border-color:var(--g-line);color:var(--ink)}
.chip .n{font-family:var(--disp);font-size:10.5px;font-weight:700;background:var(--panel-3);color:var(--mut);padding:2px 7px;border-radius:99px;font-variant-numeric:tabular-nums}
.chip.on{border-color:var(--g1);background:var(--g-soft);color:var(--g-deep)}
.chip.on .n{background:rgba(47,125,50,.14);color:var(--g-deep)}
.chip.b2.on{border-color:var(--b2);background:var(--b2-soft);color:var(--b2)}

.toggle,.seg{display:inline-flex;background:var(--panel-3);border:1px solid var(--line);border-radius:var(--r);padding:3px;gap:3px;flex-wrap:nowrap}
.toggle button,.seg button{border:none;background:none;font-family:var(--disp);font-weight:600;font-size:13px;padding:8px 15px;white-space:nowrap;border-radius:var(--r-sm);cursor:pointer;color:var(--mut);transition:background .14s,color .14s,box-shadow .14s}
.toggle button:hover,.seg button:hover{color:var(--ink);background:rgba(255,255,255,.8)}
.toggle button.on,.seg button.on{color:var(--ink);background:var(--panel);box-shadow:var(--sh-1);font-weight:700}
.toggle button.on.b2{color:var(--b2)}

.grpchips{display:inline-flex;gap:6px;flex-wrap:wrap;margin-left:12px;align-items:center}
.grpchips .gchip{appearance:none;border:1px solid var(--line);background:var(--panel);font-family:var(--body);font-weight:600;font-size:12px;color:var(--mut);padding:0 11px;cursor:pointer;border-radius:99px;min-height:30px;display:inline-flex;align-items:center;transition:background .14s,border-color .14s,color .14s}
.grpchips .gchip:hover{border-color:var(--g-line);color:var(--ink)}
.grpchips .gchip.on{background:var(--g1);color:#fff;border-color:var(--g1)}
.grpchips .gchip .n{font-size:10px;opacity:.7;margin-left:4px;font-variant-numeric:tabular-nums}

.promo-pick{display:inline-flex;align-items:center;gap:9px;margin-left:16px}
.promo-pick label{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-weight:700}
.promo-pick select{font-family:var(--disp);font-weight:600;font-size:13px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);padding:7px 11px;cursor:pointer;max-width:240px;min-height:34px}
.promo-pick select:focus{outline:none;border-color:var(--g2);box-shadow:var(--ring)}

/* ===================================================================
   7 · TABLEAUX DENSES
   En-têtes discrets, lignes hautes de 40px, filets très clairs,
   survol teinté vert, chiffres tabulaires.
   =================================================================== */
.v2-count{font-size:12.5px;color:var(--ink-2);margin:12px 2px 9px;font-weight:700}
.v2-count .muted{font-weight:400;color:var(--faint)}
.v2-tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);box-shadow:var(--sh-1)}
.v2-table{width:100%;border-collapse:collapse;font-size:13.5px}
.v2-table th{text-align:left;padding:11px 14px;background:var(--panel-2);color:var(--mut);font-family:var(--disp);font-weight:600;font-size:10px;text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid var(--line);white-space:nowrap}
.v2-table td{padding:10px 14px;border-bottom:1px solid var(--line3);vertical-align:middle;color:var(--ink-2)}
.v2-table tr:last-child td{border-bottom:none}
.v2-table tr:hover td{background:var(--g-tint)}
.v2-nom{font-weight:600;color:var(--ink);white-space:nowrap}
.v2-grp{color:var(--mut);white-space:nowrap}
.v2-table b{font-family:var(--disp);font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink)}
.v2-mail a{color:var(--mut);text-decoration:none;font-size:12.5px}
.v2-mail a:hover{color:var(--g-ink);text-decoration:underline;text-underline-offset:2px}

.dtable{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;box-shadow:var(--sh-1)}
.dtable th{text-align:left;font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);padding:11px 14px;background:var(--panel-2);border-bottom:1px solid var(--line)}
.dtable td{padding:10px 14px;border-bottom:1px solid var(--line3);font-size:13.5px;vertical-align:middle;color:var(--ink-2)}
.dtable tr:last-child td{border-bottom:none}
.dtable tr:hover td{background:var(--g-tint)}
.stnum{font-family:var(--disp);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--ink)}

/* saisie de notes — en-tête vert conservé, contraste renforcé */
.ntable{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;box-shadow:var(--sh-1)}
.ntable th{text-align:left;font-family:var(--disp);font-weight:600;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#fff;padding:11px 12px;background:var(--g-deep)}
.ntable th.cn{width:44px;text-align:center}
.ntable th.cnote{width:124px}
.ntable th.cabs{width:64px;text-align:center}
.ntable td{padding:6px 12px;border-bottom:1px solid var(--line3);vertical-align:middle}
.ntable tr:last-child td{border-bottom:none}
.ntable tr:hover td{background:var(--g-tint)}
.ntable td.n{text-align:center;color:var(--faint);font-variant-numeric:tabular-nums;font-size:12px}
.ntable td.nm{font-weight:500;font-size:13.5px;color:var(--ink)}
.ntable td.abs{text-align:center}
.ntable tr.gsep td{background:var(--g-soft);font-family:var(--disp);font-weight:700;font-size:11px;color:var(--g-deep);padding:8px 12px;letter-spacing:.08em;text-transform:uppercase}
.ntable tr.gsep:hover td{background:var(--g-soft)}
.ntable tr.filled td.nm{color:var(--g-deep)}
.noteinp{width:94px;font-family:var(--disp);font-weight:700;font-size:14px;text-align:center;padding:7px 8px;border:1px solid var(--line);border-radius:var(--r-sm);outline:none;background:var(--panel);font-variant-numeric:tabular-nums;transition:border-color .13s,box-shadow .13s}
.noteinp:hover{border-color:#cdd6c3}
.noteinp:focus{border-color:var(--g2);box-shadow:var(--ring)}
.noteinp.bad{border-color:var(--red);box-shadow:var(--ring-red)}
.cominp{width:100%;font-family:var(--body);font-size:13px;padding:7px 10px;border:1px solid var(--line);border-radius:var(--r-sm);outline:none;background:var(--panel);color:var(--ink)}
.cominp:focus{border-color:var(--g2);box-shadow:var(--ring)}
.absbox{width:17px;height:17px;accent-color:var(--g1);cursor:pointer}

table.alloc{width:100%;border-collapse:collapse;font-size:13px}
table.alloc th{text-align:left;font-family:var(--disp);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);font-weight:600;padding:9px 10px;border-bottom:1px solid var(--line)}
table.alloc td{padding:7px 10px;border-bottom:1px solid var(--line3);vertical-align:middle}
table.alloc tr:hover td{background:var(--g-tint)}
table.alloc tr.bad td{background:#fff5f2}
table.alloc select{font-family:var(--disp);font-weight:600;font-size:12.5px;border:1px solid var(--line);border-radius:var(--r-xs);padding:4px 8px;background:var(--panel);cursor:pointer;max-width:200px}
table.alloc select:focus{outline:none;border-color:var(--g2);box-shadow:var(--ring)}

/* ===================================================================
   8 · BADGES-PASTILLES
   Pastille de couleur + libellé : le statut se lit sans lire le texte.
   =================================================================== */
.v2b{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 9px;border-radius:99px;font-size:11.5px;font-weight:600;background:var(--panel-3);color:var(--mut);line-height:1.5;border:1px solid transparent;white-space:nowrap}
.v2b::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.8;flex:none}
.v2b-ok{background:var(--g-soft);color:#2f6b1a;border-color:#d5e8c4}
.v2b-wait{background:var(--amber-soft);color:#8b5a05;border-color:var(--amber-line)}
.v2b-out{background:var(--red-soft);color:#a8211a;border-color:var(--red-line)}
.v2b-tr{background:#e8effb;color:#1d4ed8;border-color:#cfdcf6}

.pill{display:inline-flex;align-items:center;gap:6px;font-family:var(--disp);font-weight:600;font-size:10.5px;padding:3px 9px;border-radius:99px;border:1px solid transparent;letter-spacing:.01em;white-space:nowrap;transition:background .14s}
.pill::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.8;flex:none}
.pill.done{color:#2f6b1a;background:var(--g-soft);border-color:#d5e8c4}
.pill.part{color:#8b5a05;background:var(--amber-soft);border-color:var(--amber-line)}
.pill.none{color:#a8211a;background:var(--red-soft);border-color:var(--red-line)}

.tag{display:inline-flex;align-items:center;gap:5px;font-size:12px;line-height:1.25;color:#3f5326;background:var(--g-tint);border:1px solid #dde9d0;border-radius:var(--r-xs);padding:4px 8px}
.tag .sem{font-family:var(--disp);font-size:9px;font-weight:600;color:var(--mut);background:#e3ebd9;border-radius:4px;padding:1px 5px}
.tag .tagx{margin-left:4px;cursor:pointer;font-weight:700;color:var(--mut);opacity:.5;font-size:13px;line-height:1;transition:color .12s,opacity .12s}
.tag .tagx:hover{color:var(--red);opacity:1}
.tag.addtag{cursor:pointer;color:var(--g-ink);background:var(--panel);border:1px dashed var(--g-line);font-weight:600}
.tag.addtag:hover{background:var(--g-tint);border-color:var(--g2);color:var(--g-deep)}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.addsel{font-family:var(--body);font-size:12px;font-weight:600;color:var(--ink);border:1px solid var(--g2);border-radius:var(--r-xs);padding:3px 7px;background:var(--panel);cursor:pointer;max-width:260px}
.addsel:focus{outline:none;box-shadow:var(--ring)}
.gpill{font-family:var(--disp);font-weight:600;font-size:10.5px;padding:3px 8px;border-radius:99px;background:var(--panel-3);color:var(--mut);border:1px solid var(--line2)}
.gpill b{color:var(--g1)}
.tot{font-family:var(--disp);font-weight:700;font-size:12px;color:#fff;background:var(--ink);padding:3px 9px;border-radius:99px;font-variant-numeric:tabular-nums}
.conv-badge{display:inline-block;font-size:10px;font-weight:700;border-radius:var(--r-xs);padding:1px 6px;margin-left:6px}
.conv-badge.sent{background:var(--g-soft);color:#2f4d18;border:1px solid #cfe3bd}
.conv-badge.todo{background:var(--amber-soft);color:#8a5a16;border:1px solid var(--amber-line)}
.conv-status{font-size:12.5px;font-weight:600;border-radius:var(--r-sm);padding:6px 11px;white-space:nowrap}
.conv-status.sent{background:var(--g-soft);color:#2f4d18}
.conv-status.todo{background:var(--amber-soft);color:#8a5a16}
.conv-filter .chip{font-size:12px}
.doss-alt{display:inline-block;background:var(--red-soft);color:var(--red);border:1px solid var(--red-line);border-radius:99px;font-size:10.5px;font-weight:700;padding:1px 8px;margin-left:6px;white-space:nowrap}

/* ===================================================================
   9 · ENCARTS & ALERTES
   =================================================================== */
.empty{margin-top:16px;padding:32px;text-align:center;background:var(--panel);border:1px dashed #d2dac8;border-radius:var(--r-md);color:var(--mut);font-size:13.5px}
.info-box{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--g2);border-radius:var(--r-sm);padding:13px 17px;font-size:13.5px;color:var(--ink-2);line-height:1.55}
.note-box{background:var(--amber-soft);border:1px solid var(--amber-line);border-radius:var(--r-sm);padding:13px 17px;font-size:13px;color:#6b4f25;line-height:1.55}
.alert{border-radius:var(--r-md);padding:14px 16px;margin:0 0 2px;border:1px solid;box-shadow:var(--sh-1)}
.alert.info{background:#eff4fb;border-color:#d5e0f1}
.alert.amber{background:var(--amber-soft);border-color:var(--amber-line)}
.alert.red{background:var(--red-soft);border-color:var(--red-line)}
.alert.ok{background:var(--g-soft);border-color:#cfe7bd}
.alert-top{display:flex;align-items:flex-start;gap:12px}
.alert-ico{width:34px;height:34px;border-radius:var(--r-sm);flex:none;display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1}
.alert.info .alert-ico{background:#dbe8f8;color:#2b5fb0}
.alert.amber .alert-ico{background:#f7e5c4;color:#8b5a05}
.alert.red .alert-ico{background:#f8d5d3;color:var(--red)}
.alert.ok .alert-ico{background:#d8ecc8;color:#3c7a17}
.alert-h{font-family:var(--disp);font-weight:700;font-size:14.5px;color:var(--ink);letter-spacing:-.01em}
.alert-s{font-size:12.5px;color:var(--mut);margin-top:3px;line-height:1.45}
.alert details{margin-top:2px}
.alert summary{cursor:pointer;font-size:12.5px;font-weight:600;color:var(--ink-2);padding:8px 0 2px;list-style:none}
.alert summary::-webkit-details-marker{display:none}
.alert summary::before{content:"▸ ";opacity:.5}
.alert details[open] summary::before{content:"▾ "}
.alert summary:hover{color:var(--g-deep)}
.alert-list{margin-top:8px;display:flex;flex-direction:column;gap:6px;max-height:340px;overflow:auto;padding-right:4px}
.alert-row{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.75);border:1px solid var(--line);border-radius:var(--r-sm);padding:7px 10px}
.ar-chip{flex:none;font-family:var(--disp);font-weight:700;font-size:10.5px;color:#fff;background:var(--g1);border-radius:var(--r-xs);padding:2px 7px}
.ar-chip.b2{background:var(--b2)}
.ar-name{flex:1;min-width:0;font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ar-bar{flex:none;display:block;width:56px;height:5px;border-radius:99px;background:var(--line2);overflow:hidden}
.ar-bar i{display:block;height:100%;border-radius:99px;background:var(--g1)}
.ar-cnt{flex:none;font-size:11.5px;color:var(--mut);font-variant-numeric:tabular-nums;min-width:42px;text-align:right}
.ar-btn{flex:none;border:1px solid var(--g-line);color:var(--g-deep);background:var(--panel);border-radius:var(--r-sm);padding:5px 11px;font-size:12px;font-weight:600;cursor:pointer;font-family:var(--disp);transition:background .13s,border-color .13s}
.ar-btn:hover{background:var(--g-soft);border-color:var(--g1)}

.scaffold{display:flex;gap:18px;align-items:flex-start;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--g2);border-radius:var(--r-md);padding:20px 22px;box-shadow:var(--sh-1)}
.sc-ic{flex:none;width:44px;height:44px;border-radius:var(--r);background:var(--g-soft);display:flex;align-items:center;justify-content:center}
.sc-t{font-family:var(--disp);font-weight:700;font-size:16px;color:var(--g-deep);letter-spacing:-.01em}
.sc-p{font-size:13.5px;line-height:1.6;color:var(--mut);margin:7px 0 0;max-width:78ch}
.badge-fe{display:inline-block;margin-top:13px;font-family:var(--disp);font-weight:600;font-size:12px;color:#185fa5;background:var(--b2-soft);border:1px solid var(--b2-line);border-radius:var(--r-sm);padding:6px 11px}
.sc-ses{display:inline-block;margin-top:12px;font-family:var(--disp);font-weight:600;font-size:12.5px;color:var(--g-deep);background:var(--g-soft);border:1px solid var(--g-line);border-radius:var(--r-sm);padding:6px 11px}
.sc-ses.jury{color:#8a5a00;background:var(--amber-soft);border-color:var(--amber-line)}
.dec-box{margin-top:16px;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;max-width:520px}
.dec-h{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-weight:700;padding:9px 14px;background:var(--panel-2);border-bottom:1px solid var(--line2)}
.dec-row{display:flex;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid var(--line3);font-size:13px}
.dec-row:last-child{border-bottom:none}
.dec-k{font-family:var(--disp);font-weight:600;min-width:104px}
.dec-t{font-size:11px;color:var(--g-deep);background:var(--g-soft);border-radius:var(--r-xs);padding:2px 8px;font-family:var(--disp);font-weight:600}
.dec-v{color:var(--mut)}

/* ===================================================================
   10 · LISTES ÉTUDIANTS / MATIÈRES
   =================================================================== */
.grid-stu{display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:12px}
.stu{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:13px 15px;box-shadow:var(--sh-1);transition:border-color .15s,box-shadow .15s}
.stu:hover{border-color:var(--g-line);box-shadow:var(--sh-2)}
.stu .row1{display:flex;align-items:center;justify-content:space-between;gap:12px}
.stu .who{display:flex;align-items:center;gap:10px;min-width:0}
.stu .grp,.rowlist .grp{font-family:var(--disp);font-weight:600;font-size:10px;color:var(--g-deep);background:var(--g-soft);padding:3px 7px;border-radius:var(--r-xs);flex-shrink:0;letter-spacing:.02em}
.stu .nm{font-family:var(--disp);font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stu .cnt,.rowlist .cnt{display:inline-flex;align-items:center;justify-content:center;min-width:23px;height:23px;padding:0 7px;font-family:var(--disp);font-weight:700;font-size:11.5px;color:var(--g-deep);background:var(--g-soft);border-radius:99px;flex-shrink:0;font-variant-numeric:tabular-nums}

.rowlist{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--panel);box-shadow:var(--sh-1)}
.rowlist .r{display:flex;align-items:center;gap:12px;padding:8px 14px;border-top:1px solid var(--line3);transition:background .12s}
.rowlist .r:first-child{border-top:none}
.rowlist .r:hover{background:var(--g-tint)}
.rowlist .nm{font-family:var(--disp);font-weight:600;font-size:13.5px;min-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rowlist .tags{display:flex;gap:6px;flex-wrap:wrap;flex:1;min-width:0;margin-top:0}
.rowlist .cnt{margin-left:auto}
button.rmmat{border:none;background:none;color:var(--mut);cursor:pointer;font-size:15px;line-height:1;opacity:.5;border-radius:var(--r-xs);padding:2px 6px;transition:color .12s,background .12s,opacity .12s}
button.rmmat:hover{color:var(--red);background:var(--red-soft);opacity:1}

.mat{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;box-shadow:var(--sh-1)}
.mat .head{display:flex;align-items:center;gap:12px;padding:13px 17px;cursor:pointer;transition:background .13s}
.mat .head:hover{background:var(--g-tint)}
.mat .mname{font-family:var(--disp);font-weight:700;font-size:15px;flex:1;min-width:0;letter-spacing:-.01em}
.mat .gcounts{display:flex;gap:6px;flex-wrap:wrap}
.mat .body{display:none;border-top:1px solid var(--line2);padding:4px 0 8px;background:var(--panel-2)}
.mat.open .body{display:block}
.mat .caret{transition:transform .2s var(--ease);color:var(--faint);font-size:11px}
.mat.open .caret{transform:rotate(90deg)}
.glist .gh{font-family:var(--disp);font-weight:700;font-size:11px;color:var(--g-deep);padding:12px 17px 6px;display:flex;gap:8px;align-items:center;text-transform:uppercase;letter-spacing:.08em}
.listrow{display:flex;align-items:center;gap:12px;padding:7px 17px;border-top:1px solid var(--line3);font-size:13.5px}
.listrow:hover{background:var(--g-tint)}
.listrow .ix{width:28px;flex-shrink:0;font-family:var(--disp);font-weight:600;font-size:11.5px;color:var(--faint);font-variant-numeric:tabular-nums;text-align:right}
.listrow .nm{flex:1;min-width:0;font-weight:500}
.listrow .sem{font-family:var(--disp);font-size:9px;font-weight:600;color:var(--mut);background:#e3ebd9;border-radius:4px;padding:2px 6px}

/* cartes promo (accueil) */
.prog-block{margin-top:6px}
.prog-h{display:flex;align-items:center;gap:12px;margin:22px 0 12px}
.prog-name{font-family:var(--disp);font-weight:700;font-size:15px;letter-spacing:-.01em}
.prog-h .rule{flex:1;height:1px;background:var(--line)}
.promo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:11px}
.promo-card{position:relative;text-align:left;cursor:pointer;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:14px 15px;box-shadow:var(--sh-1);overflow:hidden;transition:transform .15s var(--ease),box-shadow .15s var(--ease),border-color .15s;font:inherit}
.promo-card::after{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--line2);transition:background .18s}
.promo-card:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--g-line)}
.promo-card.act::after{background:linear-gradient(90deg,var(--g2),var(--g1))}
.pc-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pc-name{font-family:var(--disp);font-weight:700;font-size:14px;letter-spacing:-.01em}
.pc-st{font-family:var(--disp);font-weight:600;font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;padding:3px 8px;border-radius:99px;white-space:nowrap}
.pc-st.on{color:#2f6b1a;background:var(--g-soft)}
.pc-st.wait{color:var(--mut);background:var(--panel-3)}
.pc-kpi{display:flex;gap:14px;margin-top:10px;font-size:12px;color:var(--mut)}
.pc-kpi b{font-family:var(--disp);color:var(--ink);font-size:15px;font-variant-numeric:tabular-nums}
.pc-meta{margin-top:9px;font-size:11.5px;color:var(--mut);line-height:1.45}
.pc-ses{margin-top:9px;font-family:var(--disp);font-weight:600;font-size:10.5px;color:var(--g-deep);background:var(--g-soft);border-radius:var(--r-xs);padding:3px 8px;display:inline-block;white-space:nowrap}
.pc-ses.jury{color:#8a5a00;background:var(--amber-soft)}
.pc-bars{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.pc-bl{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--mut)}
.pc-bl .bar{flex:1;min-width:60px}
.pc-bl>span:first-child{min-width:46px}
.reussite{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600}
.reussite .rdot{width:7px;height:7px;border-radius:50%}
.reussite .rdot.ok{background:var(--g2)}
.reussite .rdot.mid{background:var(--amber)}
.reussite .rdot.low{background:#c0392b}
.reussite .rdot.na{background:#cfd8c6}

.topstu{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line3)}
.topstu:first-child{border-top:none}
.topstu .r{width:20px;font-family:var(--disp);font-weight:700;color:var(--faint);font-size:11.5px;text-align:right;font-variant-numeric:tabular-nums}
.topstu .pg{font-family:var(--disp);font-weight:600;font-size:9.5px;color:var(--g-deep);background:var(--g-soft);padding:2px 7px;border-radius:var(--r-xs)}
.topstu .nm{flex:1;font-weight:500;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topstu .n{font-family:var(--disp);font-weight:700;font-size:13px;color:var(--g1);font-variant-numeric:tabular-nums}

/* ===================================================================
   11 · PLANNING / SALLES
   =================================================================== */
.legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px;align-items:stretch}
.legend .cap{flex:1;min-width:300px}
.roomtag{display:inline-flex;align-items:baseline;gap:6px;font-size:12.5px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);padding:5px 10px}
.roomtag b{font-family:var(--disp);font-weight:600}
.roomtag .c{color:var(--g1);font-family:var(--disp);font-weight:700;font-variant-numeric:tabular-nums}
.lane-h{display:flex;gap:0;padding-left:62px;margin-top:6px}
.lane-h>div{flex:1;padding:8px 0;font-family:var(--disp);font-weight:600;font-size:13.5px}
.timeline{position:relative;display:flex;gap:0}
.axis{position:relative;width:62px;flex-shrink:0}
.axis .t{position:absolute;left:0;width:54px;text-align:right;font-size:11px;color:var(--faint);font-family:var(--disp);font-weight:600;transform:translateY(-7px);font-variant-numeric:tabular-nums}
.lane{flex:1;position:relative;border-left:1px solid var(--line)}
.lane .ln{position:absolute;left:0;right:0;height:1px;background:var(--line3)}
.exam{position:absolute;left:6px;right:8px}
.exam .inner{height:100%;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--g2);border-radius:var(--r-sm);padding:8px 11px;overflow:hidden;box-shadow:var(--sh-1)}
.exam.b2 .inner{border-left-color:var(--b2)}
.exam .er{display:flex;align-items:center;justify-content:space-between;gap:8px}
.exam .tm{font-family:var(--disp);font-weight:600;font-size:10.5px;color:var(--g-deep);font-variant-numeric:tabular-nums}
.exam.b2 .tm{color:var(--b2)}
.exam .nn{display:inline-flex;align-items:center;gap:4px;font-family:var(--disp);font-weight:700;font-size:10.5px;color:var(--g-deep);background:var(--g-soft);padding:2px 7px;border-radius:var(--r-xs)}
.exam.b2 .nn{color:var(--b2);background:var(--b2-soft)}
.exam .lb{font-size:12.5px;font-weight:600;line-height:1.3;margin-top:4px;color:var(--ink)}
.exam .rooms{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.exam .rm{font-size:10.5px;font-family:var(--disp);font-weight:600;color:#2f5e16;background:var(--g-tint);border:1px solid #dde9d0;border-radius:4px;padding:2px 7px}
.exam.b2 .rm{color:#1f5266;background:var(--b2-soft);border-color:var(--b2-line)}
.grid-rooms{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px}
.roomcard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;box-shadow:var(--sh-1)}
.roomcard .rh{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;background:var(--panel-2);border-bottom:1px solid var(--line2)}
.roomcard .rn{font-family:var(--disp);font-weight:700;font-size:15px}
.roomcard .rc{font-family:var(--disp);font-weight:700;font-size:11.5px;color:var(--g-deep);background:var(--g-soft);padding:3px 8px;border-radius:99px}
.bk{display:flex;align-items:center;gap:9px;padding:9px 16px;border-top:1px solid var(--line3);font-size:12.5px}
.bk .d{width:40px;flex-shrink:0;font-family:var(--disp);font-weight:600;font-size:10px;color:var(--faint);text-transform:uppercase}
.bk .h{width:92px;flex-shrink:0;font-family:var(--disp);font-weight:600;font-size:11px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.bk .sw{width:8px;height:8px;border-radius:2px;flex-shrink:0}
.bk .l{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bk .sv{flex-shrink:0;font-family:var(--disp);font-weight:700;font-size:10.5px;color:#8b5a05;background:var(--amber-soft);padding:2px 7px;border-radius:var(--r-xs)}

.occ-badge{font-family:var(--disp);font-weight:700;font-size:11.5px;padding:5px 11px;border-radius:99px;white-space:nowrap}
.occ-badge.ok{color:#2f6b1a;background:var(--g-soft)}
.occ-badge.bad{color:#fff;background:#c2410c}
.occ-badge.warn{color:#7a5b00;background:#fdebb2}
.issue{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line3);font-size:13px}
.issue:first-child{border-top:none}
.ic-t{flex:none;font-family:var(--disp);font-weight:700;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:var(--r-xs);min-width:74px;text-align:center}
.issue.err .ic-t{color:#fff;background:#c2410c}
.issue.warn .ic-t{color:#7a5b00;background:#fdebb2}
.ic-m{flex:1;color:var(--mut);min-width:0}
.occ-grid{border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--panel);box-shadow:var(--sh-1)}
.occ-row{display:flex;align-items:stretch;border-top:1px solid var(--line3);min-height:40px}
.occ-row:first-child{border-top:none}
.occ-row.occ-head{min-height:26px;background:var(--panel-2)}
.occ-room{flex:none;width:104px;display:flex;align-items:center;justify-content:space-between;gap:6px;padding:0 11px;border-right:1px solid var(--line2)}
.orr{font-family:var(--disp);font-weight:700;font-size:12.5px}
.orc{font-size:11px;color:var(--faint);font-family:var(--disp);font-weight:600;font-variant-numeric:tabular-nums}
.occ-track{position:relative;flex:1;min-width:0}
.occ-axis{height:26px}
.occ-t{position:absolute;top:6px;transform:translateX(-50%);font-size:9.5px;color:var(--faint);font-family:var(--disp);font-weight:600}
.occ-ln{position:absolute;top:0;bottom:0;width:1px;background:var(--line3)}
.occ-blk{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(45deg,#eef0eb,#eef0eb 5px,#e4e7e0 5px,#e4e7e0 10px);opacity:.8}
.occ-b{position:absolute;top:4px;bottom:4px;border-radius:var(--r-xs);padding:2px 6px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;box-shadow:var(--sh-1)}
.occ-b.b1{background:var(--g-soft);border:1px solid var(--g-line)}
.occ-b.b2{background:var(--b2-soft);border:1px solid var(--b2-line)}
.occ-b.bad{outline:2px solid #c2410c;outline-offset:-1px}
.ob-l{font-family:var(--disp);font-weight:700;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25;color:var(--ink)}
.ob-m{font-size:9px;color:var(--mut);line-height:1.15;white-space:nowrap}
.apc{font-family:var(--disp);font-weight:600;font-size:10px;padding:2px 7px;border-radius:var(--r-xs)}
.apc.b1{color:var(--g-deep);background:var(--g-soft)}
.apc.b2{color:#185fa5;background:var(--b2-soft)}
.cons-tag{display:inline-block;background:var(--red-soft);border:1px solid var(--red-line);color:#7f241a;border-radius:var(--r-xs);padding:1px 7px;margin:1px 2px;font-size:11px}
.cons-tag i{color:#9a7a73;font-style:normal;font-size:10px}
.cons-tag.rm b{cursor:pointer;margin-left:4px}
.cons-cell{max-width:360px}

.eprrow{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line3);font-size:13.5px}
.eprrow:last-child{border-bottom:none}
.eprrow:hover{background:var(--g-tint)}
.eprrow .tm{font-family:var(--disp);font-weight:700;font-size:12px;min-width:108px;font-variant-numeric:tabular-nums}
.eprrow .pc{font-family:var(--disp);font-weight:600;font-size:10px;padding:2px 8px;border-radius:var(--r-xs)}
.eprrow .pc.b1{color:var(--g-deep);background:var(--g-soft)}
.eprrow .pc.b2{color:var(--b2);background:var(--b2-soft)}
.eprrow .lb{flex:1;min-width:0;font-weight:500}
.eprrow .rm{font-size:10.5px;font-family:var(--disp);font-weight:600;color:#2f5e16;background:var(--g-tint);border:1px solid #dde9d0;border-radius:4px;padding:2px 7px}
.eprrow .sv{font-family:var(--disp);font-weight:700;font-size:10.5px;color:#8b5a05;background:var(--amber-soft);padding:2px 7px;border-radius:var(--r-xs)}

.daycard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:15px 17px;border-top:3px solid var(--g2);box-shadow:var(--sh-1)}
.daycard.b2top{border-top-color:var(--b2)}
.daycard .dn{font-family:var(--disp);font-weight:700;font-size:15px}
.daycard .dm{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}
.daycard .mx .v{font-family:var(--disp);font-weight:700;font-size:20px;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.daycard .mx .l{font-size:10.5px;color:var(--mut);margin-top:4px}

#planBodyGrid{display:grid;grid-template-columns:340px 1fr;gap:16px}
.convlist{margin-top:12px;max-height:580px;overflow:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel)}
.convitem{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line3);cursor:pointer;transition:background .12s}
.convitem:last-child{border-bottom:none}
.convitem:hover{background:var(--g-tint)}
.convitem.sel{background:var(--g-soft)}
.convitem .nm{flex:1;font-weight:500;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.convitem .meta{font-size:11px;color:var(--mut);font-family:var(--disp);font-weight:600;white-space:nowrap}

/* ===================================================================
   12 · CALENDRIER
   =================================================================== */
.cal-legend{display:flex;flex-wrap:wrap;gap:8px 14px}
.cal-leg{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;color:var(--mut)}
.cal-dot{width:8px;height:8px;border-radius:50%;flex:none}
.calnext{font-size:13px;color:var(--mut);margin:0 0 16px}
.calnext b{color:var(--g1)}
.calwrap{display:grid;grid-template-columns:300px 1fr;gap:26px;align-items:start}
.calhead{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:12px}
.calhead .mname{font-family:var(--disp);font-weight:700;font-size:15px;min-width:140px;text-align:center;color:var(--ink)}
.calnav{width:30px;height:30px;border:1px solid var(--line);background:var(--panel);border-radius:var(--r-sm);cursor:pointer;font-size:15px;line-height:1;color:var(--ink-2);display:flex;align-items:center;justify-content:center;transition:border-color .13s,color .13s,background .13s}
.calnav:hover{border-color:var(--g-line);color:var(--g-deep);background:var(--g-tint)}
.calg{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.calg .wd{text-align:center;font-size:9.5px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.06em;padding-bottom:3px}
.calg .cell{aspect-ratio:1/1;border-radius:var(--r-sm);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.calg .cell.ev{background:var(--g-tint);font-weight:700;color:var(--ink)}
.calg .cell.today{outline:1.5px solid var(--g1);outline-offset:-1.5px;color:var(--g-deep);font-weight:700}
.calg .dots{display:flex;gap:3px;height:6px;align-items:center}
.calg .dots i{width:5px;height:5px;border-radius:50%}
.calist{display:flex;flex-direction:column}
.cle{display:flex;gap:11px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line3)}
.cle:last-child{border-bottom:none}
.cle .cd{flex:none;width:96px;font-weight:700;font-size:12.5px;color:var(--ink);font-variant-numeric:tabular-nums}
.cle .cdot{width:8px;height:8px;border-radius:50%;flex:none;margin-top:4px}
.cle .cb{font-size:12.5px;color:var(--ink-2);line-height:1.4}
.cle .cn{display:block;font-size:11.5px;color:var(--b2);margin-top:2px}
.cle.past{opacity:.45}
.calempty{font-size:13px;color:var(--faint);padding:12px 0}
.caltoggle{display:flex;justify-content:flex-end;margin-bottom:14px}
.calcap{font-size:9.5px;color:var(--faint);margin:0 0 8px;font-weight:700;text-transform:uppercase;letter-spacing:.1em}
.calweek{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.calweek .wcell{border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 4px 10px;text-align:center;min-height:72px;display:flex;flex-direction:column;align-items:center;gap:5px;background:var(--panel)}
.calweek .wcell.today{border-color:var(--g1);box-shadow:inset 0 0 0 1px var(--g1)}
.calweek .wd{font-size:9px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.06em}
.calweek .dn{font-size:16px;font-weight:700;color:var(--ink);font-family:var(--disp);line-height:1;font-variant-numeric:tabular-nums}
.calweek .wcell.empty{background:var(--panel-2)}
.calweek .wcell.empty .dn{color:#c2c9ba;font-weight:600}
.calweek .wdots{display:flex;gap:3px;height:6px;align-items:center}
.calweek .wdots i{width:5px;height:5px;border-radius:50%}

/* ===================================================================
   13 · PROFESSEURS / CONTRÔLES QUALITÉ / JURY
   =================================================================== */
.prof-card{padding:15px 17px;margin-bottom:10px}
.prof-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.prof-name{font-family:var(--disp);font-weight:700;font-size:15px;color:var(--ink);letter-spacing:-.01em}
.prof-mail{font-size:12.5px;color:var(--mut);margin-top:2px}
.prof-act{display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.prof-last{font-size:11.5px;color:var(--faint);white-space:nowrap}
.prof-last.warn{color:#8b5a05;font-weight:600}
.prof-mats{margin-top:12px;display:flex;flex-direction:column}
.pm-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--line3)}
.pm-row:first-child{border-top:none}
.pm-chip{flex:none;font-family:var(--disp);font-weight:700;font-size:10.5px;color:#fff;background:var(--g1);border-radius:var(--r-xs);padding:2px 7px}
.pm-chip.b2{background:var(--b2)}
.pm-name{flex:1;min-width:0;font-size:13px;color:var(--ink-2)}
.pm-bar{flex:none;display:block;width:70px;height:5px;border-radius:99px;background:var(--line2);overflow:hidden}
.pm-bar i{display:block;height:100%;background:var(--g1);border-radius:99px}
.pm-cnt{flex:none;font-size:11.5px;color:var(--mut);font-variant-numeric:tabular-nums;min-width:42px;text-align:right}
.prof-done{margin-top:8px}
.prof-done summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--ink-2);padding:8px 0}
.prof-donelist{display:flex;flex-direction:column;margin-top:6px}
.pd-row{display:flex;justify-content:space-between;gap:12px;padding:7px 2px;border-bottom:1px solid var(--line3);font-size:13px}
.pd-row:last-child{border-bottom:none}
.pd-name{color:var(--ink-2)}
.pd-cnt{color:var(--faint)}

.qc-card{padding:4px 16px}
.qc-row{display:flex;align-items:center;gap:11px;padding:9px 0;border-top:1px solid var(--line3)}
.qc-row:first-child{border-top:none}
.qc-loc{flex:1;min-width:0;font-size:13px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qc-loc small{color:var(--mut)}
.qc-val{flex:none;font-weight:700;font-size:11.5px;color:#a8211a;background:var(--red-soft);border:1px solid var(--red-line);border-radius:var(--r-xs);padding:2px 8px;white-space:nowrap}
.qc-part{padding:13px 16px;margin-bottom:10px}
.qc-parthead{display:flex;align-items:center;gap:11px}
.qc-pname{flex:1;min-width:0;font-family:var(--disp);font-weight:700;font-size:14px;color:var(--ink)}
.qc-miss{margin-top:9px;font-size:12.5px;color:var(--mut);line-height:1.55}
.qc-miss small{color:var(--faint)}

.jnote{display:inline-block;background:var(--panel-3);border:1px solid var(--line2);border-radius:var(--r-xs);padding:1px 6px;margin:1px 2px;font-size:11px;font-variant-numeric:tabular-nums}
.jnote.bad{background:var(--red-soft);border-color:var(--red-line);color:#7f241a}
tr.jr-admis{background:rgba(91,163,43,.06)}
tr.jr-rattrapage{background:rgba(161,101,15,.07)}
tr.jr-ajourne,tr.jr-redoublement{background:rgba(179,38,30,.06)}

/* ===================================================================
   14 · MODULE STAFF (to-do équipe)
   =================================================================== */
.staff-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin:16px 0 10px}
.staff-toolbar .stf{display:flex;flex-direction:column;gap:5px}
.staff-toolbar .stf label{font-size:9.5px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.1em}
.staff-toolbar select{font:inherit;font-family:var(--disp);font-size:13.5px;padding:7px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel);color:var(--ink);min-height:34px}
.staff-toolbar select:focus{outline:none;border-color:var(--g2);box-shadow:var(--ring)}
.staff-form{background:var(--g-tint);border:1px solid var(--g-line);border-radius:var(--r-md);padding:16px;margin:6px 0 14px;display:flex;flex-direction:column;gap:11px}
.staff-form .sf-row{display:flex;flex-wrap:wrap;gap:12px}
.staff-form label{display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.06em}
.staff-form .sf-full{flex:1 1 100%}
.staff-form input,.staff-form select,.staff-form textarea{font:inherit;font-size:13.5px;font-weight:400;text-transform:none;letter-spacing:0;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel);color:var(--ink)}
.staff-form input:focus,.staff-form select:focus,.staff-form textarea:focus{outline:none;border-color:var(--g2);box-shadow:var(--ring)}
.staff-form .sf-full input,.staff-form .sf-full textarea{width:100%}
.staff-form .sf-actions{display:flex;gap:8px}
.staff-group{margin:18px 0 0}
.sg-head{display:flex;align-items:center;gap:8px;margin:0 2px 8px}
.sg-nm{font-family:var(--disp);font-weight:700;color:var(--ink);font-size:13.5px}
.sg-n{background:var(--g-soft);color:var(--g-deep);border-radius:99px;font-size:11.5px;font-weight:700;padding:1px 9px;font-variant-numeric:tabular-nums}
.staff-task{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:9px 12px;margin-bottom:6px;box-shadow:var(--sh-1);transition:border-color .14s,box-shadow .14s}
.staff-task:hover{border-color:var(--g-line);box-shadow:var(--sh-2)}
.staff-task.done{opacity:.55;box-shadow:none}
.staff-task.done .st-titre{text-decoration:line-through}
.st-chip{border:1px solid transparent;border-radius:99px;font:inherit;font-size:11.5px;font-weight:600;padding:4px 11px;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:filter .13s}
.st-chip:hover{filter:brightness(.96)}
.st-faire{background:var(--amber-soft);color:#8b5a05;border-color:var(--amber-line)}
.st-cours{background:#e8effb;color:#1d4ed8;border-color:#cfdcf6}
.st-fait{background:var(--g-soft);color:#2f6b1a;border-color:#d5e8c4}
.st-main{flex:1;min-width:0}
.st-titre{font-size:13.5px;font-weight:600;color:var(--ink)}
.st-det{font-size:12.5px;color:var(--mut);margin-top:2px}
.st-meta{display:flex;align-items:center;gap:8px;flex-shrink:0}
.st-typ{background:var(--violet-soft);color:var(--violet);border-radius:99px;font-size:10.5px;font-weight:600;padding:2px 8px;white-space:nowrap}
.st-prio{background:var(--red-soft);color:var(--red);border-radius:99px;font-size:10.5px;font-weight:600;padding:2px 8px}
.st-ech{font-size:12px;color:var(--mut);white-space:nowrap;font-variant-numeric:tabular-nums}
.st-ech.od{color:var(--red);font-weight:700}
.st-del{border:0;background:transparent;color:#c5cbbe;font-size:18px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:var(--r-xs);flex-shrink:0;transition:color .12s,background .12s}
.st-del:hover{color:var(--red);background:var(--red-soft)}

/* dossier administratif */
.doss-sel,.doss-ech,select.doss-x{font:inherit;font-size:12.5px;padding:5px 9px;border:1px solid var(--line);border-radius:var(--r-xs);background:var(--panel);color:var(--ink);cursor:pointer}
.doss-sel:focus,.doss-ech:focus,select.doss-x:focus{outline:none;border-color:var(--g2);box-shadow:var(--ring)}
.doss-ech{min-width:60px}
input.doss-x[type=date]{font:inherit;font-size:12.5px;padding:4px 8px;border:1px solid var(--line);border-radius:var(--r-xs);color:var(--ink)}
input.doss-x[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--g1)}

/* ===================================================================
   15 · IMPORT / MODALES / TOASTS / PRÉSENCE
   =================================================================== */
.impsteps{display:grid;gap:11px}
.impstep{border:1px solid var(--line);border-radius:var(--r-md);padding:13px 15px;background:var(--panel);transition:border-color .15s,box-shadow .15s}
.impstep:hover{border-color:var(--g-line);box-shadow:var(--sh-2)}
.impstep-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.impstep-n{width:23px;height:23px;border-radius:50%;background:var(--g1);color:#fff;font-family:var(--disp);font-weight:700;font-size:12px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.impstep-t{font-family:var(--disp);font-weight:700;font-size:13.5px;color:var(--ink)}
.impstep-d{font-size:13px;color:var(--mut);margin-top:6px;line-height:1.55}
.impstep-d code,.imp-recap code,.cfg-field code{background:var(--panel-3);border:1px solid var(--line2);border-radius:4px;padding:1px 5px;font-size:11.5px;font-family:ui-monospace,Menlo,monospace}
.impstep .req{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;background:var(--g-soft);color:var(--g-deep);border-radius:var(--r-xs);padding:2px 7px}
.impstep .opt{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;background:var(--panel-3);color:var(--mut);border-radius:var(--r-xs);padding:2px 7px}
.imp-recap{margin:8px 0 4px;padding-left:18px;font-size:13px;color:var(--ink-2)}
.imp-recap li{margin:3px 0}
.import-prev{max-height:300px;overflow:auto;margin-top:10px}

#modalHost{display:none}
#modalHost.show{display:flex;position:fixed;inset:0;z-index:9000;align-items:center;justify-content:center;padding:24px;background:rgba(20,30,15,.42);backdrop-filter:blur(3px);animation:fade .16s var(--ease)}
.modal-card{background:var(--panel);border-radius:var(--r-lg);max-width:680px;width:100%;max-height:85vh;overflow:auto;box-shadow:0 30px 70px -20px rgba(0,0,0,.4);animation:rise .22s var(--ease)}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:15px 20px;border-bottom:1px solid var(--line)}
.modal-title{font-family:var(--disp);font-weight:700;font-size:15.5px}
.modal-x{border:none;background:none;font-size:18px;cursor:pointer;color:var(--mut);line-height:1;padding:4px 8px;border-radius:var(--r-xs);transition:background .12s,color .12s}
.modal-x:hover{background:var(--panel-3);color:var(--ink)}
.modal-body{padding:18px 20px}
.bulk-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.bulk-row{display:flex;align-items:center;gap:12px;justify-content:space-between;border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 12px}
.bulk-row .bn{font-weight:600}

#toastHost{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:9999;pointer-events:none}
.toast{background:var(--ink);color:#fff;font-size:13px;font-weight:500;padding:10px 16px;border-radius:var(--r);box-shadow:0 8px 28px rgba(0,0,0,.26);opacity:0;transform:translateY(8px);transition:opacity .2s var(--ease),transform .2s var(--ease);max-width:340px}
.toast.show{opacity:1;transform:translateY(0)}

#netBanner{display:none;background:var(--red-soft);border-bottom:1px solid var(--red-line);color:#7f241a;font-size:12.5px;font-weight:600;padding:8px 16px;text-align:center}
#netBanner.show{display:block}

#presenceBar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#presenceBar:empty{display:none}
.pres-ava{display:inline-flex;align-items:center;gap:7px;background:var(--g-soft);border:1px solid var(--g-line);color:var(--g-deep);border-radius:99px;padding:4px 11px 4px 4px;font-size:12px;font-weight:600;line-height:1}
.pres-dot{width:23px;height:23px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:10.5px;font-weight:700}
.pres-pg{color:var(--mut);font-weight:500}
.pres-cell{outline:2px solid var(--amber);outline-offset:-2px;border-radius:var(--r-xs);background:rgba(161,101,15,.06)!important}
.pres-flag{position:absolute;top:-9px;right:6px;background:var(--amber);color:#fff;font-size:9.5px;font-weight:700;border-radius:var(--r-xs);padding:1px 6px;white-space:nowrap;z-index:5;pointer-events:none}
.pres-chip{position:relative;display:inline-flex;align-items:center;cursor:default;outline:none}
.pres-mini{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:9.5px;font-weight:700;border:2px solid var(--panel);margin-left:-7px}
.pres-chip .pres-mini:first-child{margin-left:0}
.pres-more{font-size:11px;font-weight:700;color:var(--mut);margin-left:4px}
.pres-pop{position:absolute;top:calc(100% + 8px);right:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-3);padding:8px;min-width:200px;display:none;z-index:50}
.pres-chip:hover .pres-pop,.pres-chip:focus .pres-pop,.pres-chip:focus-within .pres-pop{display:block}
.pres-line{display:flex;align-items:center;gap:8px;padding:4px 6px;white-space:nowrap}
.pres-line .pres-mini{margin-left:0}
.pres-nm{font-size:12.5px;font-weight:600;color:var(--ink)}
.pres-line .pres-pg{font-size:11px;color:var(--mut);margin-left:auto;padding-left:10px}

.savechip{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--g-deep);background:var(--g-soft);border:1px solid var(--g-line);border-radius:var(--r-sm);padding:8px 12px}
.savechip .led{width:7px;height:7px;border-radius:50%;background:var(--g2)}
.savechip.dirty{color:#6b4f25;background:var(--amber-soft);border-color:var(--amber-line)}
.savechip.dirty .led{background:var(--amber)}
.savechip.offline{color:#7f241a;background:var(--red-soft);border-color:var(--red-line)}
.savechip.offline .led{background:#c0392b}
.saisie-head{position:sticky;top:var(--topbar-h);z-index:20;background:var(--bg);padding:10px 0 14px}
.seltop{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.massbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px;padding:10px 14px;background:var(--g-soft);border:1px solid var(--g-line);border-radius:var(--r-md);position:sticky;top:8px;z-index:20}
.massbar .mass-count{font-family:var(--disp);font-weight:700;color:var(--g-deep)}

.ocr-text{white-space:pre-wrap;background:#12170f;color:#d7e6cb;padding:13px;border-radius:var(--r-sm);max-height:320px;overflow:auto;font-size:12px;font-family:ui-monospace,Menlo,monospace;margin-top:10px}
.sheet-frame{width:100%;height:520px;border:1px solid var(--line);border-radius:var(--r-md);margin-top:10px;background:var(--panel)}
.cfg-field{display:flex;flex-direction:column;gap:6px;margin-top:14px;font-size:12.5px;font-weight:600;color:var(--ink-2)}
.cfg-field textarea.inp{font-family:inherit;resize:vertical;min-height:120px}
.card.pad .sec-h{margin-bottom:6px}
.diag-sum{display:inline-block;font-weight:700;border-radius:var(--r-sm);padding:6px 12px;margin-bottom:10px;font-size:13px}
.diag-sum.ok{background:var(--g-soft);color:#2f4d18}
.diag-sum.ko{background:var(--red-soft);color:#7f241a}
.diag-list{display:flex;flex-direction:column;gap:2px}
.diag-row{display:flex;align-items:center;gap:10px;font-size:13px;padding:6px 0;border-bottom:1px solid var(--line3)}
.diag-ic{width:19px;height:19px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700;flex-shrink:0}
.diag-ic.ok{background:var(--g2)}
.diag-ic.ko{background:#c0392b}
.diag-nm{font-weight:600;color:var(--ink-2)}
.diag-dt{margin-left:auto;color:var(--mut);font-size:12px}

/* ===================================================================
   16 · AUTHENTIFICATION
   =================================================================== */
#authScreen{display:none}
#authScreen.show{display:flex;position:fixed;inset:0;z-index:10000;align-items:center;justify-content:center;padding:24px;background:var(--bg);overflow:auto}
body.auth-on{overflow:hidden}
.auth-card{position:relative;overflow:hidden;width:100%;max-width:406px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:0 24px 60px -24px rgba(20,30,15,.28);padding:36px 32px;text-align:center}
.auth-accent{position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--g-deep),var(--g2))}
.auth-brand{display:flex;align-items:center;gap:14px;justify-content:center;margin:6px 0 20px}
.auth-brand .auth-logo{height:42px;width:auto;margin:0}
.auth-logo{height:44px;width:auto;object-fit:contain;margin-bottom:14px}
.auth-brandtxt{text-align:left}
.auth-brandname{font-family:var(--disp);font-weight:700;font-size:20px;color:var(--ink);line-height:1.05;letter-spacing:-.02em}
.auth-brandsub{font-size:11.5px;font-weight:600;color:var(--mut)}
.auth-eyebrow{font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-bottom:14px}
.auth-title{font-family:var(--disp);font-size:22px;font-weight:700;color:var(--ink);margin:0 0 6px;letter-spacing:-.02em}
.auth-sub{font-size:13.5px;color:var(--mut);margin:0 0 20px;line-height:1.45}
.auth-form{display:flex;flex-direction:column;gap:13px;text-align:left}
.auth-form label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.07em}
.auth-form input{font:inherit;font-size:14px;font-weight:400;text-transform:none;letter-spacing:0;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel-2);color:var(--ink)}
.auth-form input:focus{outline:none;border-color:var(--g2);box-shadow:var(--ring);background:var(--panel)}
.auth-form .btn{margin-top:5px;justify-content:center;padding:11px 16px;font-size:14px}
.auth-form .btn:disabled{opacity:.55;cursor:default}
.auth-link{margin-top:16px;background:none;border:none;color:var(--g-ink);font:inherit;font-size:13px;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.auth-msg{font-size:13px;font-weight:600;border-radius:var(--r-sm);padding:10px 12px;margin-bottom:16px;text-align:left}
.auth-msg.err{background:var(--red-soft);border:1px solid var(--red-line);color:#7f241a}
.auth-msg.ok{background:var(--g-soft);border:1px solid var(--g-line);color:#2f4d18}

/* ===================================================================
   17 · OBJECTIF ATTEINT
   =================================================================== */
@keyframes goalPop{0%{transform:scale(.6);opacity:0}45%{transform:scale(1.12);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes goalFade{0%{opacity:0;transform:translateY(6px)}15%{opacity:1;transform:translateY(0)}80%{opacity:1}100%{opacity:0;transform:translateY(-8px)}}
@keyframes confettiFall{0%{transform:translateY(0) rotate(0);opacity:1}100%{transform:translateY(102vh) rotate(540deg);opacity:.9}}
#goalToast{position:fixed;left:50%;top:calc(var(--topbar-h) + 14px);transform:translateX(-50%);z-index:9998;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.goal-badge{background:var(--g1);color:#fff;font-family:var(--disp);font-weight:700;font-size:13.5px;padding:10px 18px;border-radius:99px;box-shadow:0 10px 30px -10px rgba(47,125,50,.6);animation:goalFade 2.6s var(--ease) forwards;display:flex;align-items:center;gap:8px}
.goal-badge .gb-ic{display:inline-flex;width:21px;height:21px;border-radius:50%;background:rgba(255,255,255,.25);align-items:center;justify-content:center;animation:goalPop .5s var(--ease)}
.bar.full i{animation:goalPop .5s var(--ease)}
.confetti{position:fixed;top:-10px;width:8px;height:13px;z-index:9997;pointer-events:none;border-radius:2px;animation:confettiFall linear forwards}

/* ===================================================================
   18 · DOCUMENTS IMPRIMABLES (feuilles, convocations)
   =================================================================== */
.sheet{max-width:800px;margin:0 auto 22px;background:var(--panel);padding:32px 36px 28px;box-shadow:var(--sh-3);min-height:1030px;display:flex;flex-direction:column;border-radius:var(--r-sm)}
.sheet .sh{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;border-bottom:2px solid var(--ink);padding-bottom:14px}
.sheet .brand{display:flex;align-items:center;gap:10px}
.sheet .brand img{height:28px}
.sheet .brand .bt{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-weight:700;border-left:1px solid var(--line);padding-left:10px}
.sheet .sp{font-family:var(--disp);font-weight:600;font-size:11px;color:var(--g1);margin-top:12px;letter-spacing:.08em;text-transform:uppercase}
.sheet .ssub{font-family:var(--disp);font-weight:700;font-size:19px;line-height:1.2;margin-top:4px;max-width:42ch;letter-spacing:-.015em}
.sheet.b2 .sp{color:var(--b2)}
.meta{flex-shrink:0;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;min-width:215px}
.meta .mr{display:flex;border-bottom:1px solid var(--line2)}
.meta .mr:last-child{border-bottom:none}
.meta .mk{width:78px;padding:7px 10px;background:var(--panel-2);font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);font-weight:700}
.meta .mv{flex:1;padding:7px 10px;font-size:12.5px;font-weight:600}
.meta .mv.room{color:var(--g1);font-weight:700;font-size:13px}
table.att{width:100%;border-collapse:collapse;margin-top:16px;font-size:12.5px}
table.att th{padding:8px 12px;background:var(--g-deep);color:#fff;font-family:var(--disp);font-weight:600;font-size:10.5px;border:1px solid var(--g-deep);text-align:left;letter-spacing:.05em;text-transform:uppercase}
table.att th.n{width:36px;text-align:center}
table.att th.em{width:230px}
table.att td{border:1px solid var(--line);padding:7px 12px}
table.att td.n{text-align:center;color:var(--faint);font-variant-numeric:tabular-nums}
table.att td.nm{font-weight:500}
table.att tr.alt{background:var(--panel-2)}
table.att tr.blank td{padding:9px 12px;color:#cdd3c7}
.sheet .foot{margin-top:auto;padding-top:18px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}
.sheet .foot .note{font-size:11px;color:var(--faint);line-height:1.5;max-width:46ch}
.sheet .sig .sl{font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);font-weight:700;margin-bottom:24px}
.sheet .sig .line{width:240px;border-top:1px solid #b9beb2}
.sheet-stub{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel);margin:6px auto;max-width:800px}
.sheet-stub .ss-lab{font-size:13px;color:var(--ink-2)}

.conv{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:32px 36px;box-shadow:var(--sh-3)}
.conv .ch{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;border-bottom:2px solid var(--ink);padding-bottom:16px}
.conv .ch img{height:30px}
.conv .lab{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-weight:700;border-left:1px solid var(--line);padding-left:10px}
.conv h2{font-family:var(--disp);font-weight:700;font-size:22px;margin:16px 0 0;letter-spacing:-.02em}
.conv .who{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px}
.conv .who .b{background:var(--panel-2);border:1px solid var(--line2);border-radius:var(--r-sm);padding:9px 14px}
.conv .who .k{font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);font-weight:700}
.conv .who .val{font-family:var(--disp);font-weight:700;font-size:14.5px;margin-top:2px}
.convtable{width:100%;border-collapse:collapse;margin-top:18px;font-size:13px}
.convtable th{background:var(--g-deep);color:#fff;font-family:var(--disp);font-weight:600;font-size:10.5px;text-align:left;padding:9px 12px;border:1px solid var(--g-deep);text-transform:uppercase;letter-spacing:.05em}
.convtable td{border:1px solid var(--line);padding:9px 12px}
.convtable td.rm{font-family:var(--disp);font-weight:700;color:var(--g1)}
.conv .cn{margin-top:18px;font-size:11.5px;color:var(--mut);line-height:1.55}

footer.f{margin-top:44px;padding-top:18px;border-top:1px solid var(--line);font-size:11.5px;color:var(--faint);line-height:1.6}

/* ===================================================================
   18b · FILE DE TRAITEMENT (accueil)
   Nouveau composant : la liste priorisée des décisions du jour.
   Une ligne = un dossier + son action. Le filet de gauche porte
   l'urgence, la ligne entière est cliquable.
   =================================================================== */
.queue{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--panel);box-shadow:var(--sh-1)}
.q-head{display:flex;align-items:center;gap:12px;padding:13px 18px;border-bottom:1px solid var(--line2);background:var(--panel-2)}
.q-head .t{font-family:var(--disp);font-weight:700;font-size:14.5px;letter-spacing:-.01em;flex:1}
.q-head .s{font-size:11.5px;font-weight:600;color:var(--mut);background:var(--panel);border:1px solid var(--line);border-radius:99px;padding:3px 10px}
.q-row{display:flex;align-items:center;gap:13px;padding:11px 18px 11px 0;border-top:1px solid var(--line3);cursor:pointer;transition:background .12s}
.q-row:first-of-type{border-top:none}
.q-row:hover{background:var(--g-tint)}
.q-pri{flex:none;width:3px;align-self:stretch;margin:6px 0;border-radius:0 3px 3px 0;background:var(--line)}
.q-row.crit .q-pri{background:var(--red)}
.q-row.warn .q-pri{background:var(--amber)}
.q-row.calm .q-pri{background:var(--g2)}
.q-ic{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-family:var(--disp);font-weight:700;font-size:11.5px;background:var(--panel-3);color:var(--mut)}
.q-row.crit .q-ic{background:var(--red-soft);color:#a8211a}
.q-row.warn .q-ic{background:var(--amber-soft);color:#8b5a05}
.q-row.calm .q-ic{background:var(--g-soft);color:#2f6b1a}
.q-main{flex:1;min-width:0}
.q-t{display:block;font-size:13.5px;font-weight:600;color:var(--ink);letter-spacing:-.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-d{display:block;font-size:12px;color:var(--mut);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-when{flex:none;font-size:11.5px;color:var(--mut);font-variant-numeric:tabular-nums;white-space:nowrap}
.q-row.crit .q-when{color:var(--red);font-weight:700}
.q-act{flex:none;display:flex;gap:6px;opacity:.55;transition:opacity .14s}
.q-row:hover .q-act{opacity:1}
.q-foot{display:flex;align-items:center;gap:12px;padding:11px 18px;border-top:1px solid var(--line2);background:var(--panel-2);font-size:12.5px;color:var(--mut)}
@media (max-width:780px){
  .q-row{flex-wrap:wrap;padding-bottom:12px}
  .q-act{opacity:1;width:100%;padding-left:45px}
}

/* ===================================================================
   18c · RECHERCHE GLOBALE, VUES ENREGISTRÉES, SÉLECTION EN LOT
   =================================================================== */

/* — accessibilité : lien d'évitement — */
.skip-link{position:absolute;left:-9999px;top:0;z-index:10001;background:var(--g-deep);color:#fff;font-weight:700;font-size:13px;padding:10px 16px;border-radius:0 0 var(--r-sm) 0}
.skip-link:focus{left:0;text-decoration:none}

/* — palette de commande (⌘K) — */
.cmdk-overlay{display:none;position:fixed;inset:0;z-index:9500;background:rgba(20,30,15,.36);backdrop-filter:blur(3px);padding:12vh 20px 20px;justify-content:center;align-items:flex-start}
.cmdk-overlay.show{display:flex;animation:fade .14s var(--ease)}
.cmdk{width:100%;max-width:640px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 30px 70px -20px rgba(0,0,0,.42);overflow:hidden;animation:rise .2s var(--ease)}
.cmdk-in{display:flex;align-items:center;gap:11px;padding:14px 18px;border-bottom:1px solid var(--line2)}
.cmdk-in .ic{font-size:15px;opacity:.45}
.cmdk-input{flex:1;border:0;outline:0;background:transparent;font-family:var(--body);font-size:16px;color:var(--ink)}
.cmdk-input::placeholder{color:var(--faint)}
.cmdk-esc{font-family:var(--disp);font-size:10px;font-weight:700;color:var(--mut);border:1px solid var(--line);border-radius:var(--r-xs);padding:3px 7px}
.cmdk-list{max-height:min(52vh,420px);overflow:auto;padding:6px}
.cmdk-sec{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.11em;color:var(--faint);padding:11px 12px 5px}
.cmdk-item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;background:transparent;border-radius:var(--r-sm);padding:9px 12px;cursor:pointer;font:inherit}
.cmdk-item:hover,.cmdk-item.act{background:var(--g-soft)}
.cmdk-ic{flex:none;width:28px;height:28px;border-radius:var(--r-xs);display:grid;place-items:center;background:var(--panel-3);color:var(--mut);font-family:var(--disp);font-weight:700;font-size:10.5px}
.cmdk-item:hover .cmdk-ic,.cmdk-item.act .cmdk-ic{background:var(--panel);color:var(--g-deep)}
.cmdk-txt{flex:1;min-width:0}
.cmdk-t{display:block;font-size:13.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmdk-d{display:block;font-size:11.5px;color:var(--mut);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmdk-k{flex:none;font-family:var(--disp);font-size:9.5px;font-weight:700;color:var(--mut);background:var(--panel-3);border-radius:var(--r-xs);padding:3px 7px;white-space:nowrap}
.cmdk-empty{padding:34px 20px;text-align:center;color:var(--mut);font-size:13.5px}
.cmdk-foot{display:flex;align-items:center;gap:16px;padding:9px 16px;border-top:1px solid var(--line2);background:var(--panel-2);font-size:11px;color:var(--faint)}
.cmdk-foot kbd{font-family:var(--disp);font-size:10px;font-weight:700;background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:1px 5px;margin-right:4px}

/* déclencheur dans la barre supérieure */
.searchbtn{display:flex;align-items:center;gap:9px;min-width:0;flex:0 1 250px;height:36px;padding:0 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel-2);color:var(--faint);font:inherit;font-size:13px;cursor:pointer;transition:border-color .14s,background .14s}
.searchbtn:hover{border-color:var(--g-line);background:var(--panel)}
.searchbtn .sb-t{flex:1;min-width:0;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.searchbtn .sb-k{flex:none;font-family:var(--disp);font-size:10px;font-weight:700;border:1px solid var(--line);border-radius:var(--r-xs);padding:2px 6px;background:var(--panel)}
@media (max-width:1100px){.top .save{display:none}}

/* — vues enregistrées — */
.svbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 12px}
.sv-tab{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink-2);font:inherit;font-size:12.5px;font-weight:600;padding:0 12px;height:32px;border-radius:99px;cursor:pointer;white-space:nowrap;transition:border-color .14s,background .14s,color .14s}
.sv-tab:hover{border-color:var(--g-line);color:var(--ink)}
.sv-tab.on{background:var(--g1);border-color:var(--g1);color:#fff}
.sv-tab .n{font-size:10.5px;font-weight:700;background:var(--panel-3);color:var(--mut);border-radius:99px;padding:1px 7px;font-variant-numeric:tabular-nums}
.sv-tab.on .n{background:rgba(255,255,255,.22);color:#fff}
.sv-add{display:inline-flex;align-items:center;gap:6px;border:1px dashed var(--g-line);background:transparent;color:var(--g-ink);font:inherit;font-size:12.5px;font-weight:600;padding:0 12px;height:32px;border-radius:99px;cursor:pointer;white-space:nowrap;transition:background .14s,border-color .14s}
.sv-add:hover{background:var(--g-tint);border-color:var(--g2)}

/* — sélection multiple dans les tableaux denses — */
.v2-table th.selcol,.v2-table td.selcol,.dtable th.selcol,.dtable td.selcol{width:42px;padding-left:14px;padding-right:0}
.selbox{width:16px;height:16px;accent-color:var(--g1);cursor:pointer;vertical-align:middle}
.v2-table tr.sel td,.dtable tr.sel td{background:var(--g-soft)}
.v2-table tr.sel:hover td,.dtable tr.sel:hover td{background:#e2efd6}
.massbar{display:none}
.massbar.show{display:flex;animation:rise .18s var(--ease)}
.massbar .mass-sep{width:1px;height:20px;background:var(--g-line);margin:0 2px}
.massbar .mass-clear{margin-left:auto;border:0;background:none;color:var(--g-deep);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}

/* — état vide actionnable — */
.empty{display:flex;flex-direction:column;align-items:center;gap:4px}
.empty-ic{font-size:24px;opacity:.35;margin-bottom:4px}
.empty-t{font-family:var(--disp);font-weight:700;font-size:15px;color:var(--ink)}
.empty-p{font-size:13px;color:var(--mut);max-width:46ch;line-height:1.5;margin:0}
.empty-act{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:12px}

/* — accessibilité : la ligne focalisée au clavier se signale comme au survol — */
.v2-table tr:focus-within td,.dtable tr:focus-within td,.q-row:focus-within{background:var(--g-tint)}
.q-row:focus-visible{outline:2px solid var(--g1);outline-offset:-2px;box-shadow:none}

/* ===================================================================
   19 · RESPONSIVE
   =================================================================== */
@media (max-width:1200px){.top .pole-item>.pole .cur{display:none}}
@media (max-width:1000px){.masthead .mh-tools{justify-content:flex-start}}
/* ≤900px : le menu latéral devient un tiroir — voir section 21 · MOBILE en fin de fichier */
@media (max-width:820px){#planBodyGrid{grid-template-columns:1fr}}
@media (max-width:780px){
  .kpis{grid-template-columns:1fr 1fr}
  .grid-stu{grid-template-columns:1fr}
  .saisie-head{position:static}
  .calwrap{grid-template-columns:1fr;gap:18px}
}
@media (max-width:640px){.v2-field select,.v2-field input,.v2-field input[type=search]{min-width:130px}}
@media (max-width:600px){
  :root{--topbar-h:56px}
  .wrap{padding:0 14px}
  .top-in{flex-wrap:wrap;gap:8px 12px;padding:8px 14px}
  .top .brandtag{display:none}
  .top img{height:24px}
  nav.tabs .poles{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
  nav.tabs .poles::-webkit-scrollbar{height:0}
  .pole-item>.pole{padding:8px 11px;font-size:13px}
  .pole-item>.pole .cur,.pole-item>.pole .caret{display:none}
  .pole-drop{display:none!important}
  .subtabs-m{display:flex;gap:4px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:4px 0 6px;margin-top:4px;border-top:1px solid var(--line)}
  .subtabs-m::-webkit-scrollbar{height:0}
  .subtabs-m .subtab{appearance:none;border:none;background:none;font-family:var(--body);font-weight:600;font-size:13px;color:var(--mut);padding:7px 12px;cursor:pointer;white-space:nowrap;border-radius:var(--r-sm);flex:0 0 auto}
  .subtabs-m .subtab.on{color:var(--g-deep);background:var(--g-soft)}
  .masthead .mh-in,.masthead.mh-sm .mh-in{padding:15px 16px}
  .masthead .mh-title,.masthead.mh-sm .mh-title{font-size:19px}
  .masthead .mh-sub,.masthead.mh-sm .mh-sub{font-size:12.5px}
  .kpis{grid-template-columns:1fr 1fr;gap:10px}
  .seltop{flex-direction:column;align-items:stretch}
  .seltop>.select,.seltop .inp,.seltop select,.seltop #profList{width:100%!important;min-width:0!important}
  .ntable,.dtable,table.alloc{display:block;overflow-x:auto;white-space:nowrap}
  .rowlist .nm{min-width:108px;font-size:13px}
  .rowlist .r{gap:8px;padding:8px 11px}
  .grpchips,.promo-pick{flex-wrap:wrap}
  .selbar .selbar-in{padding:8px 14px;gap:8px}
  .selbar .promo-pick{width:100%}
  .selbar .promo-pick select{flex:1;max-width:none}
  .selbar .grpchips{margin-left:0;width:100%}
}

/* ===================================================================
   20 · IMPRESSION
   =================================================================== */
@media print{
  @page{size:A4 portrait;margin:10mm}
  html,body{background:#fff}
  body.has-nav{padding-left:0}
  header.top,.tabbar,.sidenav,.selbar,.no-print,.sheet-stub{display:none!important}
  main{padding:0}
  .wrap{max-width:none;padding:0}
  .view{display:none!important}
  .view.on{display:block!important}
  .card,.kpi,.v2-tablewrap,.staff-task{box-shadow:none}
  .masthead{background:#fff;color:#000;box-shadow:none;border:1px solid #ddd}
  .masthead .mh-accent,.masthead .mh-tools{display:none}
  .mh-ey{color:var(--g1)}
  .mh-sub{color:#333}
  .mh-tick{background:var(--g1)}
  .sheet{box-shadow:none;margin:0 auto;break-after:page;min-height:auto;border-radius:0}
  .sheet:last-child{break-after:auto}
  .mat,.roomcard,.stu,.exam,.ntable tr{break-inside:avoid}
  .occ-b{box-shadow:none}
  table.alloc select{border:none;-webkit-appearance:none;appearance:none}
  .conv{box-shadow:none;border:none;padding:0}
  body[data-pm="conv"] header.top,body[data-pm="conv"] .tabbar{display:none!important}
  body[data-pm="conv"] .view.on>*:not(#planBody){display:none!important}
  body[data-pm="conv"] #planBody>*:not(#planBodyGrid){display:none!important}
  body[data-pm="conv"] #planBodyGrid>*:not(#convArea){display:none!important}
  body[data-pm='view'] header.top,body[data-pm='view'] .tabbar,body[data-pm='view'] #netBanner,body[data-pm='view'] .no-print{display:none!important}
  body[data-pm='bulkconv']>*:not(#bulkPrintHost){display:none!important}
  #bulkPrintHost{display:none}
  body[data-pm='bulkconv'] #bulkPrintHost{display:block}
  body[data-pm='bulkconv'] #bulkPrintHost .conv{break-after:page;page-break-after:always;box-shadow:none;border:none;padding:0 0 18px}
}

/* ===== v4 — écran Étudiants (Listes) : dense, plat, pastilles à point ===== */
.v4-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:6px 2px 12px}
.v4-head h1{font-family:'Poppins',sans-serif;font-weight:700;font-size:19px;letter-spacing:-.03em;margin:0;color:#14170f}
.v4-statbar{display:flex;align-items:center;flex-wrap:wrap}
.v4-stat{display:flex;align-items:baseline;gap:6px;padding:0 15px;border-left:1px solid #e3e6dd;white-space:nowrap}
.v4-stat:first-child{border-left:0;padding-left:2px}
.v4-stat .v{font-family:'Poppins',sans-serif;font-weight:700;font-size:16px;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.v4-stat .l{font-size:12px;color:#727866}
.v4-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 10px;border:1px solid #e3e6dd;border-radius:8px;background:#fbfcfa}
.v4-filters input[type=search]{height:30px;min-width:210px;border:1px solid #e3e6dd;border-radius:6px;background:#fff;font:inherit;font-size:12.5px;padding:0 10px;color:#14170f}
.v4-filters select{height:30px;border:1px solid #e3e6dd;border-radius:6px;background:#fff;font-family:'Poppins',sans-serif;font-size:12.5px;font-weight:600;color:#3b4133;padding:0 8px;cursor:pointer}
.v4-filters .imp{margin-left:auto;height:30px;padding:0 13px;border:1px solid #1c4d1f;background:#1c4d1f;color:#fff;border-radius:6px;font:inherit;font-weight:600;font-size:12.5px;cursor:pointer;transition:background .15s,border-color .15s}
.v4-filters .imp:hover{background:#2f7d32;border-color:#2f7d32}
.v4-tablewrap{overflow:auto;border:1px solid #e3e6dd;border-radius:8px;margin-top:12px;background:#fff}
.v4-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px;font-variant-numeric:tabular-nums}
.v4-table th{position:sticky;top:0;z-index:2;background:#fbfcfa;height:30px;text-align:left;font-family:'Poppins',sans-serif;font-weight:600;font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:#727866;padding:0 10px;border-bottom:1px solid #e3e6dd;white-space:nowrap}
.v4-table td{height:31px;padding:0 10px;border-bottom:1px solid #eef0e9;white-space:nowrap;color:#3b4133}
.v4-table tbody tr:hover td{background:#f4f9ef}
.v4-table .c-nom{font-weight:600;color:#14170f}
.v4-table .c-id{color:#9ba190;font-size:11.5px}
.v4-table .c-niv{font-family:'Poppins',sans-serif;font-weight:700;font-size:11.5px}
.v4-table a{color:#3b6d11}
.v4-table a:hover{text-decoration:underline}
.v4-tag{display:inline-block;font-size:9.5px;font-weight:700;color:#a8211a;background:#fdeceb;border:1px solid #f3cecb;border-radius:4px;padding:0 4px;margin-left:4px;vertical-align:1px}
.v4-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 8px;border-radius:99px;font-size:11.5px;font-weight:600;line-height:1}
.v4-pill .dot{width:5px;height:5px;border-radius:50%;flex:none}
.v4-foot{display:flex;align-items:center;gap:12px;height:26px;padding:0 4px;margin-top:8px;font-size:11px;color:#727866}
.v4-foot .sync{width:6px;height:6px;border-radius:50%;background:#5ba32b;flex:none}

/* ===== v4 — COQUILLE (menu latéral plat clair + barre du haut) ===== */
body.has-nav{padding-left:224px}
body.has-nav .sidenav{width:224px;background:#f7f8f4;border-right:1px solid #e3e6dd;padding:8px 10px}
.side-brand{border-bottom:1px solid #e3e6dd;padding:10px 8px 12px;margin-bottom:6px}
.side-brand .brandtag{font-size:8.5px;letter-spacing:.16em;color:#9ba190}
.snav-pole{font-family:'Poppins',sans-serif;font-weight:600;font-size:12.5px;color:#3b4133;padding:8px 9px;border-radius:6px}
.snav-pole:hover{background:#edf0e8;color:#14170f}
.snav-item.on>.snav-pole,.snav-pole.cur{background:#edf0e8;color:#1c4d1f}
.snav-ic{font-size:13px;width:20px;text-align:center}
.snav-cx{font-size:8px;opacity:.5}
.snav-sub{border-left:1px solid #e3e6dd;margin:2px 0 6px 12px;padding-left:8px}
.snav-leaf{font-family:'DM Sans',sans-serif;font-weight:500;font-size:12.5px;color:#3b4133;padding:6px 10px;border-radius:6px;position:relative}
.snav-leaf:hover{background:#edf0e8;color:#14170f}
.snav-leaf.on{background:#e9f3e0;color:#1c4d1f;font-weight:700}
.snav-leaf.on::before{content:"";position:absolute;left:-9px;top:7px;bottom:7px;width:2.5px;border-radius:0 3px 3px 0;background:#2f7d32}
.snav-leaf.sub2{margin-left:8px;font-size:12px;color:#6b7264}
.snav-ghead{font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:#9ba190;padding:8px 10px 3px}
header.top{background:#fff;border-bottom:1px solid #e3e6dd;box-shadow:none}
.top-in{min-height:46px;gap:11px;padding:6px 14px}
.nav-toggle{width:26px;height:26px;border:1px solid #e3e6dd;background:#fff;border-radius:5px;color:#6b7264;font-size:11px;padding:0;line-height:1}
.nav-toggle:hover{border-color:#c8dfb4;color:#2f7d32;background:#f4f9ef}
.v4-crumb{font-size:12px;color:#727866;white-space:nowrap}
.v4-crumb b{color:#14170f;font-weight:600}
.v4-crumb .sep{opacity:.4;margin:0 5px}
.yearpick{background:#fff;border:1px solid #e3e6dd;border-radius:5px;padding:0 8px;height:28px;margin:0}
.yearpick select{font-family:'Poppins',sans-serif;font-size:12px;font-weight:600;color:#14170f}
@media (max-width:900px){ body.has-nav{padding-left:0} }

/* ===== v4 — MENU LATÉRAL (fidèle capture Claude Design) ===== */
.side-brand{display:block;padding:14px 10px 14px;border-bottom:1px solid #e3e6dd;margin-bottom:4px}
.v4-brand{display:block;font-family:'Poppins',sans-serif;font-weight:800;font-size:15px;letter-spacing:-.035em;line-height:1;color:#14170f}
.v4-brand .g{color:#2f7d32}
.v4-brandsub{display:block;font-size:8.5px;font-weight:700;letter-spacing:.17em;text-transform:uppercase;color:#9ba190;margin-top:6px}
.v4g{margin-bottom:2px}
.v4g-h{display:flex;align-items:center;width:100%;border:0;background:none;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:8.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#9ba190;padding:14px 8px 6px}
.v4g-h span:first-child{flex:1;text-align:left}
.v4g-h .cx{font-size:7.5px;transition:transform .22s;opacity:.8}
.v4g.collapsed .cx{transform:rotate(-90deg)}
.v4g.collapsed .v4g-body{display:none}
.v4nav{display:flex;align-items:center;gap:9px;width:100%;text-align:left;border:0;background:none;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:12.5px;font-weight:500;color:#3b4133;padding:7px 10px;border-radius:6px;margin-bottom:1px;transition:background .16s,color .16s}
.v4nav:hover{background:#edf0e8;color:#14170f}
.v4nav.on{background:#e9f3e0;color:#1c4d1f;font-weight:700}
.v4nav .lb{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v4nav .cx2{font-size:8px;opacity:.5;transition:transform .22s}
.v4nav.has-sub:not(.open) .cx2{transform:rotate(-90deg)}
.v4badge{font-family:'Poppins',sans-serif;font-size:10px;font-weight:700;font-variant-numeric:tabular-nums;color:#9ba190}
.v4nav.on .v4badge{color:#3b6d11}
.v4sub{display:none}
.v4sub.open{display:block}
.v4nav.sub{padding-left:22px;font-size:12px;color:#6b7264;font-weight:500}
.v4nav.sub.on{color:#1c4d1f;font-weight:700}
.v4nav.sub2{padding-left:32px;font-size:11.5px}
.v4sub2head{font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:#9ba190;padding:6px 10px 2px 22px}

/* ===== v4 — badge alerte + sélection multiple (Étudiants) ===== */
.v4badge.alert{color:#a8211a}
.v4-table th.ck,.v4-table td.ck{width:34px;padding-left:14px;padding-right:0}
.v4ck{width:13px;height:13px;accent-color:#2f7d32;cursor:pointer;vertical-align:middle}
.v4-table tbody tr.sel td{background:#f4f9ef}
.v4bulk{display:flex;align-items:center;gap:11px;padding:8px 12px;margin-bottom:10px;background:#e9f3e0;border:1px solid #cfe3bd;border-radius:8px}
.v4bulk .n{font-family:'Poppins',sans-serif;font-weight:700;color:#1c4d1f;font-size:12.5px;white-space:nowrap}
.v4bulk select{height:28px;border:1px solid #cfe3bd;border-radius:6px;background:#fff;font:inherit;font-size:12.5px;font-weight:600;color:#3b4133;padding:0 8px;cursor:pointer}
.v4bulk .lnk{border:0;background:none;color:#1c4d1f;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}

/* v4 — sous-titre d'en-tête plat (écrans Dossier/Staff/à venir) */
.v4-headsub{font-size:12.5px;color:#727866}

/* ===== v4 — STAFF kanban « Tableau de la scolarité » ===== */
.khead{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:2px 0 14px}
.kh-l{display:flex;align-items:center;gap:12px}
.kh-title{font-family:'Poppins',sans-serif;font-weight:800;font-size:19px;letter-spacing:-.03em;color:#14170f}
.kh-avs{display:flex;padding-left:6px}
.kav{width:26px;height:26px;border-radius:50%;background:#e7f3e0;color:#2f6b1a;display:inline-flex;align-items:center;justify-content:center;font-family:'Poppins',sans-serif;font-weight:700;font-size:9.5px;margin-left:-6px;border:2px solid #fff}
.kh-r{display:flex;align-items:center;gap:10px;margin-left:auto;flex-wrap:wrap}
.kseg{display:inline-flex;background:#eef0e9;border:1px solid #e3e6dd;border-radius:8px;padding:2px}
.kseg button{border:0;background:none;font:inherit;font-size:12.5px;font-weight:600;color:#6b7264;padding:5px 12px;border-radius:6px;cursor:pointer}
.kseg button.on{background:#fff;color:#14170f;box-shadow:0 1px 2px rgba(0,0,0,.07)}
.kbtn-new{border:0;background:#14170f;color:#fff;font:inherit;font-weight:600;font-size:12.5px;padding:7px 14px;border-radius:8px;cursor:pointer;transition:background .15s}
.kbtn-new:hover{background:#2f7d32}
.kpills{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.kpill{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid #e3e6dd;border-radius:99px;padding:5px 13px;font-size:12.5px;color:#6b7264}
.kpill b{font-family:'Poppins',sans-serif;font-weight:700;color:#14170f;font-variant-numeric:tabular-nums}
.kpill.red b{color:#a8211a}
.kpill.green b{color:#2f6b1a}
/* Tableau : hauteur fixe → barre de défilement horizontale toujours visible en bas (pas besoin de descendre) ;
   les colonnes défilent verticalement en interne. */
.kboard{display:flex;gap:14px;overflow-x:auto;overflow-y:hidden;padding-bottom:6px;align-items:stretch;height:calc(100dvh - 250px);min-height:340px}
.kcol{flex:0 0 288px;max-width:288px;height:100%;min-height:0}
.kcol-in{background:#f1f3ee;border:1px solid #e3e6dd;border-radius:12px;padding:10px;max-height:100%;overflow-y:auto}
.kcol-h{display:flex;align-items:center;gap:8px;padding:4px 6px 10px}
.kcol-dot{width:8px;height:8px;border-radius:50%;flex:none}
.kcol-nm{flex:1;font-family:'Poppins',sans-serif;font-weight:700;font-size:13.5px;color:#14170f;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kcol-al{font-size:11px;font-weight:700;color:#a8211a;white-space:nowrap}
.kcol-n{font-family:'Poppins',sans-serif;font-size:12px;font-weight:700;color:#9ba190;font-variant-numeric:tabular-nums}
.kcol-add{width:100%;border:0;background:none;color:#6b7264;font:inherit;font-size:12.5px;text-align:left;padding:8px 6px;border-radius:8px;cursor:pointer;margin-top:2px}
.kcol-add:hover{background:#e6e9e1;color:#14170f}
.kcard{background:#fff;border:1px solid #e6e8e2;border-radius:10px;margin-bottom:8px;overflow:hidden;cursor:pointer;transition:box-shadow .15s,border-color .15s}
.kcard:hover{box-shadow:0 3px 10px -4px rgba(0,0,0,.18);border-color:#d7dad3}
.kcard.done{opacity:.66}
.kc-bar{height:34px}
.kc-in{padding:9px 11px 10px}
.kc-labs{display:flex;gap:4px;margin-bottom:6px}
.kc-lab{width:26px;height:5px;border-radius:3px}
.kc-titre{font-size:13.5px;font-weight:600;color:#14170f;line-height:1.32}
.kcard.done .kc-titre{text-decoration:line-through}
.kc-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;font-size:11.5px;color:#727866}
.kc-ech.od{color:#a8211a;font-weight:700}
.kc-st{display:inline-flex;align-items:center;gap:5px;margin-left:auto;font-weight:600;color:#3b4133}
.kc-st .dot{width:7px;height:7px;border-radius:50%}
.kc-btns{display:flex;gap:6px;margin-top:9px}
.kc-btn{flex:1;border:1px solid #e3e6dd;background:#fbfcfa;color:#3b4133;font:inherit;font-size:11.5px;font-weight:600;padding:5px 0;border-radius:6px;cursor:pointer;transition:border-color .14s,background .14s,color .14s}
.kc-btn:hover{border-color:#c8dfb4;background:#f4f9ef;color:#2f7d32}
.kc-ord{display:inline-flex;gap:2px;margin-left:2px;flex:none}
.kc-ordb{border:1px solid #e3e6dd;background:#fbfcfa;color:#6b7264;width:19px;height:19px;border-radius:5px;cursor:pointer;font-size:9px;line-height:1;padding:0;display:inline-flex;align-items:center;justify-content:center}
.kc-ordb:hover{border-color:#c8dfb4;background:#f4f9ef;color:#2f7d32}
.kmodal{position:fixed;inset:0;z-index:200;background:rgba(20,23,15,.42);display:flex;align-items:flex-start;justify-content:center;padding:38px 16px;overflow:auto}
.kmodal-box{background:#fff;border-radius:14px;width:min(560px,100%);box-shadow:0 24px 60px -18px rgba(0,0,0,.5);max-height:calc(100dvh - 76px);display:flex;flex-direction:column}
.kmodal-h{display:flex;align-items:center;padding:15px 18px;border-bottom:1px solid #eef0e9;font-family:'Poppins',sans-serif;font-weight:700;font-size:15px;color:#14170f;flex:none}
.kmodal-h span{flex:1}
.kmodal-x{border:0;background:none;font-size:22px;color:#9ba190;cursor:pointer;line-height:1}
.kmodal-b{padding:16px 18px;display:flex;flex-direction:column;gap:12px;overflow-y:auto;flex:1 1 auto;min-height:0}
.kmodal-b>label,.kf-row>label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:#4b5563}
.kf-row{display:flex;gap:12px;flex-wrap:wrap}
.kf-row>label{flex:1;min-width:140px}
.kmodal-b input,.kmodal-b select,.kmodal-b textarea{font:inherit;font-size:14px;font-weight:400;padding:8px 10px;border:1px solid #d7dad3;border-radius:8px;background:#fff;color:#1f2937}
.kf-full input,.kf-full textarea{width:100%;box-sizing:border-box}
.kcol-picks{display:flex;gap:6px;flex-wrap:wrap}
.kcol-pick{width:24px;height:24px;border-radius:6px;border:2px solid transparent;cursor:pointer;padding:0}
.kcol-pick.on{border-color:#14170f}
.kcol-pick.none{background:#f1f4ee;color:#9ba190;display:inline-flex;align-items:center;justify-content:center;font-size:12px}
.kck-lab{font-size:12px;font-weight:600;color:#4b5563;margin-bottom:6px}
.kck-row{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;color:#1f2937}
.kck-row input[type=checkbox]{width:15px;height:15px;accent-color:#2f7d32}
.kck-row span{flex:1}
.kck-del{border:0;background:none;color:#c0c4bd;font-size:16px;cursor:pointer}
.kck-add{display:flex;gap:8px;margin-top:6px}
.kck-add input{flex:1}
.kmodal-f{display:flex;align-items:center;gap:8px;padding:13px 18px;border-top:1px solid #eef0e9;flex:none}
.klink-del{border:0;background:none;color:#a8211a;font:inherit;font-weight:600;font-size:13px;cursor:pointer}

/* v4 — kanban drag & drop */
.kcard[draggable=true]{cursor:grab}
.kcard[draggable=true]:active{cursor:grabbing}
.kcard.kdrag{opacity:.45}
.kcol-in.kover{background:#e9f3e0;border-color:#c8dfb4;border-style:dashed}

/* ===== Menu latéral SOMBRE (style maquette Claude Design) — le fond noir fait ressortir le contenu ===== */
body.has-nav .sidenav{background:linear-gradient(180deg,#0f1319,#0c1016);border-right:1px solid #05080c}
body.has-nav .sidenav::-webkit-scrollbar{width:8px}
body.has-nav .sidenav::-webkit-scrollbar-thumb{background:#232d3a;border-radius:8px}
.side-brand{border-bottom:1px solid #232d3a}
.v4-brand{color:#fff}
.v4-brand .g{color:#7ec24a}
.v4-brandsub{color:#8b97a5}
.v4g-h{color:#66727f}
.v4g-h .cx{color:#66727f}
.v4nav{color:#aeb8c4}
.v4nav:hover{background:#161d27;color:#fff}
.v4nav.on{background:#1e2733;color:#fff;position:relative}
.v4nav.on::before{content:"";position:absolute;left:2px;top:7px;bottom:7px;width:3px;border-radius:3px;background:#5aa031}
.v4nav.sub{color:#8b97a5}
.v4nav.sub:hover{color:#fff}
.v4nav.sub.on{color:#fff}
.v4sub2head{color:#66727f}
.v4badge{color:#8b97a5}
.v4nav.on .v4badge{color:#7ec24a}
.v4badge.alert{color:#ff7a6b}
/* Roster équipe en bas du menu sombre */
.side-crew{margin-top:auto;padding:12px 6px 4px;border-top:1px solid #232d3a}
.side-crew:empty{display:none}
.sc-lab{font-size:8.5px;letter-spacing:.13em;text-transform:uppercase;color:#5f6b7a;font-weight:700;padding:0 6px 8px}
.sc-list{display:flex;flex-direction:column;gap:1px}
.sc-item{display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;cursor:pointer;padding:5px 6px;border-radius:7px;transition:background .14s}
.sc-item:hover{background:#161d27}
.sc-item.on{background:#1e2733}
.sc-av{position:relative;width:24px;height:24px;border-radius:7px;display:grid;place-items:center;font-family:'Poppins',sans-serif;font-weight:700;font-size:10px;color:#fff;flex:none}
.sc-dot{position:absolute;right:-2px;bottom:-2px;width:8px;height:8px;border-radius:50%;background:#5aa031;border:2px solid #0f1319}
.sc-nm{flex:1;text-align:left;font-size:12px;color:#aeb8c4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-item:hover .sc-nm,.sc-item.on .sc-nm{color:#fff}
.sc-sign{font-size:12px;flex:none}
.sc-avw{position:relative;flex:none;display:inline-grid;place-items:center}
/* Rendu avatars (global — le roster du menu est visible sur toutes les pages) */
.av-patch{display:grid;place-items:center;color:#fff;font-family:'Poppins',sans-serif;font-weight:700;flex:none}
.av-emb{font-size:1.45em;line-height:1}
.av-sq{border-radius:24%}
.av-circle{border-radius:50%}
.av-shield{border-radius:14%;clip-path:polygon(0 0,100% 0,100% 60%,50% 100%,0 60%)}
.av-hex{clip-path:polygon(25% 4%,75% 4%,100% 50%,75% 96%,25% 96%,0 50%)}
.av-photo{position:relative;display:inline-block;overflow:visible;line-height:0;background:transparent}
.av-photo>img{width:100%;height:100%;object-fit:cover;border-radius:26%;display:block}
.av-stk{position:absolute;pointer-events:none;line-height:0}
.av-stk svg{width:100%;height:100%;display:block;overflow:visible}
.sc-av.av-photo{border-radius:0;overflow:visible}
.sc-av.av-photo>img{border-radius:7px}

/* ===================================================================
   21 · MOBILE — téléphone & petite tablette
   Principes : (1) le menu latéral devient un tiroir superposé (☰ l'ouvre,
   un onglet ou le voile le ferme) ; (2) la barre du haut tient sur UNE ligne ;
   (3) aucun défilement horizontal de page : ce qui est large (tableaux,
   kanban) défile dans son propre cadre ; (4) modales et chat en plein écran ;
   (5) champs à 16px pour éviter le zoom automatique d'iOS au focus.
   =================================================================== */
@media (max-width:900px){
  html{overflow-x:clip}
  body.has-nav{padding-left:0}
  body.has-nav .sidenav,body.has-nav.nav-collapsed .sidenav{display:flex;position:fixed;left:0;top:0;bottom:0;width:min(300px,86vw);max-height:none;border-bottom:0;transform:translateX(-100%);transition:transform .22s var(--ease);z-index:1200;padding-bottom:calc(20px + env(safe-area-inset-bottom))}
  body.has-nav.nav-open .sidenav{transform:none;box-shadow:18px 0 50px -20px rgba(0,0,0,.6)}
  .nav-backdrop{display:none;position:fixed;inset:0;z-index:1190;background:rgba(10,14,8,.45);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
  .nav-backdrop.on{display:block;animation:fade .18s var(--ease)}
  body.nav-open{overflow:hidden}
  .v4nav{padding:10px 10px;font-size:13.5px}
  .v4nav.sub{padding-top:9px;padding-bottom:9px;font-size:13px}
  .v4nav.sub2{padding-top:8px;padding-bottom:8px}
  .side-crew .sc-item{padding:7px 6px}
  .snav-item.on>.snav-pole::before,.snav-leaf.on::before{display:none}
  button,.v4nav,.gchip,.sv-tab{-webkit-tap-highlight-color:transparent}
  .nav-toggle{width:34px;height:34px;font-size:15px;flex:none}
}

@media (max-width:600px){
  /* — barre du haut : une seule ligne, fil d'Ariane tronqué, avatars des autres masqués — */
  .top-in{flex-wrap:nowrap;gap:8px;padding:6px 10px;min-height:52px}
  .v4-crumb{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .v4-crumb .sep{margin:0 4px}
  .v4-crumb>span:not(.sep){display:none}   /* badge « Lecture seule » : le libellé du rôle reste dans le menu utilisateur */
  .top .spacer{flex:0 0 0}
  #presenceBar,#undoBox{display:none!important}
  .userchip{display:none}
  .yearpick{padding:0 6px;margin:0;height:30px}
  .yearpick .yearpick-ic{display:none}
  .yearpick select{max-width:104px;font-size:12px}
  .useravatar{width:30px;height:30px;font-size:11.5px}
  .usermenu-pop{position:fixed;top:calc(var(--topbar-h) + 6px);right:8px;left:8px;min-width:0}
  #netBanner{font-size:12px;padding:6px 10px}

  /* — gabarit — */
  .wrap{padding:0 12px}
  main{padding:12px 0 96px}
  .masthead{margin-top:0;border-radius:var(--r-md)}
  .masthead .mh-in{gap:12px}
  .masthead .mh-txt{flex-basis:100%}
  .masthead .mh-tools,.masthead .mh-tools .selbar-in{justify-content:flex-start;width:100%}
  .masthead .mh-tools .promo-pick{width:100%}
  .masthead .mh-tools .promo-pick select{max-width:none;width:100%}
  .card{border-radius:var(--r-sm)}
  .btn{min-height:38px}

  /* — filtres : deux champs par ligne, la recherche sur toute la largeur — */
  .v2-controls{padding:11px 12px 12px}
  .v2-ctrl-row{gap:10px}
  .v2-field{flex:1 1 calc(50% - 5px);min-width:0}
  .v2-field select,.v2-field input,.v2-field input[type=search]{min-width:0;width:100%}
  .v2-field:has(input[type=search]){flex-basis:100%}

  /* — tableaux : ceux qui dépassent défilent dans leur cadre (classe posée par mobileFitTables) — */
  .m-tbl-scroll{display:block;overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}
  .v2-tablewrap,.v4-tablewrap{-webkit-overflow-scrolling:touch}
  .v2-table td,.v2-table th{padding:9px 10px}
  .v2-table{font-size:13px}

  /* — grilles fixes → 2 colonnes (ou 1) ; #root/body pour primer sur les <style> injectés par app.js — */
  .kpis,#root .h-kpis,#root .gk,#root .eq-kpis,#root .ip-kpis{grid-template-columns:1fr 1fr}
  #root .h-tiles{grid-template-columns:repeat(3,1fr)}
  #root .ip-dstat,#root .org-progs,#root .org-bino,#root .org-cap{grid-template-columns:1fr}
  .grid-rooms{grid-template-columns:1fr}
  .kpi .v{font-size:23px}

  /* — kanban : colonnes presque plein écran avec accroche au défilement — */
  .kboard{height:auto;max-height:calc(100dvh - 210px);scroll-snap-type:x mandatory;gap:10px}
  .kcol{flex:0 0 min(288px,84vw);max-width:none;scroll-snap-align:start}

  /* — modales : feuille ancrée en bas, pleine largeur — */
  #modalHost.show,.kmodal,body .hmodal-ov{padding:0;align-items:flex-end}
  .modal-card,.kmodal-box,body .hmodal{max-width:none;width:100%;border-radius:18px 18px 0 0;max-height:92dvh}
  .modal-body{padding:14px 16px}
  .kmodal-box{max-height:92dvh}
  .cmdk-overlay{padding:8px}

  /* — chat flottant : plein écran ; tiroir impayés : pleine largeur — */
  body .chat-panel{right:0;left:0;bottom:0;top:auto;width:auto;max-width:none;height:min(640px,100dvh);max-height:100dvh;border-radius:0;border:0}
  body .chat-fab{right:14px;bottom:calc(14px + env(safe-area-inset-bottom));width:50px;height:50px;font-size:21px}
  body .ip-drawer{width:100vw}
  body .cp-shell{height:calc(100dvh - var(--topbar-h))}
  body .cp-list{width:100%}

  /* — toasts, connexion — */
  .toast{max-width:calc(100vw - 32px);font-size:12.5px}
  #toastHost{bottom:calc(16px + env(safe-area-inset-bottom))}
  #authScreen.show{padding:14px}
  .auth-card{padding:28px 20px}

  /* — champs de saisie à 16px : iOS ne zoome plus au focus — */
  .v2-field select,.v2-field input,.inp,.auth-form input,.kmodal-b input,.kmodal-b select,.kmodal-b textarea,
  body .hmodal input,body .hmodal select,body .hmodal textarea,
  .modal-body input:not([type=checkbox]):not([type=radio]),.modal-body select,.modal-body textarea,
  body .cp-search,body .chat-in input,body .chat-in textarea{font-size:16px}
}

/* ==== 22 · MOBILE (≤600) — 2e passe 06/09 : liste des étudiants en cartes, chat maître/détail, accueil ====
   Préfixe #root partout : ces règles doivent primer sur les <style> injectés par app.js (home-css2, cp-css, etu-css…). */
.cp-back{display:none}
@media (max-width:600px){
  /* — Étudiants › Listes : le tableau à 9 colonnes devient une pile de cartes — */
  #root .v4-head{gap:6px 10px;padding:4px 0 8px}
  #root .v4-head h1{font-size:18px}
  #root .v4-statbar{flex-basis:100%;gap:4px 0}
  #root .v4-stat{padding:0 9px;gap:4px}
  #root .v4-stat:first-child{padding-left:0}
  #root .v4-stat .v{font-size:14px}
  #root .v4-stat .l{font-size:11px}
  #root .etu-subtabs{display:flex;width:100%;margin:4px 0 10px}
  #root .etu-subtabs button{flex:1 1 auto;padding:7px 6px;font-size:12.5px;white-space:nowrap}
  #root .v4-filters{padding:8px;gap:6px}
  #root .v4-filters input[type=search]{flex:1 1 100%;min-width:0;height:38px;font-size:16px}
  #root .v4-filters select{flex:1 1 calc(50% - 3px);min-width:0;max-width:calc(50% - 3px);height:38px;font-size:16px;font-weight:500;padding:0 4px}
  #root .v4-filters .imp,#root .v4-filters #v2-file{display:none}   /* l'import Yparéo (fichier CSV) se fait depuis un ordinateur */
  #root .v4-tablewrap{border:0;background:transparent;overflow:visible;margin-top:10px}
  #root .v4-table{display:block;font-size:13px}
  #root .v4-table thead{display:none}
  #root .v4-table tbody{display:flex;flex-direction:column;gap:8px}
  #root .v4-table tbody tr{display:flex;flex-wrap:wrap;align-items:center;gap:5px 6px;background:#fff;border:1px solid #e3e6dd;border-radius:12px;padding:10px 12px 11px;box-shadow:0 1px 2px rgba(20,23,15,.04)}
  #root .v4-table tbody tr.sel{background:#f4f9ef;border-color:#cfe3bd}
  #root .v4-table tbody tr:hover td{background:transparent}
  #root .v4-table tbody tr::before{content:'';order:2;flex-basis:100%;height:0}   /* saut de ligne après le nom + la case */
  #root .v4-table td{display:block;height:auto;padding:0;border:0;white-space:normal;line-height:1.35}
  #root .v4-table td.c-nom{order:0;flex:1 1 0;min-width:0;font-size:14.5px;font-weight:600;color:#14170f}
  #root .v4-table td.ck{order:1;width:auto;padding:0;flex:none}
  #root .v4-table td.ck .v4ck{width:18px;height:18px}
  #root .v4-table td.c-id{display:none}
  #root .v4-table td.na{display:none}   /* valeurs vides (tiret) masquees sur la carte */
  #root .v4-table td.c-prog,#root .v4-table td.c-niv,#root .v4-table td.c-grp{order:3;font-size:12px;color:#727866}
  #root .v4-table td.c-niv{font-family:'Poppins',sans-serif;font-weight:700;color:#3b4133}
  #root .v4-table td.c-niv::before,#root .v4-table td.c-grp::before{content:'·';margin-right:6px;color:#b6bbae;font-weight:400}
  #root .v4-table td.c-sit,#root .v4-table td.c-stat{order:4;font-size:12px;color:#727866}
  #root .v4-table td.c-sit{flex-basis:100%;margin-top:2px}
  #root .v4-table td.c-sit .v4-pill{font-size:11.5px;padding:4px 10px 4px 9px}
  #root .v4-table td.c-mail{order:5;flex-basis:100%;min-width:0;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #root .v4-table td[colspan]{flex-basis:100%;text-align:center}
  #root .v4-foot{height:auto;padding:4px 2px}
  #root .v4bulk{flex-wrap:wrap;gap:8px;padding:8px 10px}
  #root .v4bulk select{flex:1 1 100%;height:36px;font-size:16px}

  /* — Chat d'équipe (page) : liste des conversations OU discussion, jamais les deux — */
  #root .v-chatpage{margin:-12px -12px 0}
  #root .cp-shell{height:calc(100dvh - var(--topbar-h));min-height:0;border-top:0;border-radius:0}
  #root .cp-list{width:100%;border-right:0}
  #root .cp-main{display:none}
  #root .cp-shell.m-open .cp-list{display:none}
  #root .cp-shell.m-open .cp-main{display:flex}
  #root .cp-side{display:none}
  #root .cp-back{display:inline-flex;align-items:center;justify-content:center;flex:none;width:34px;height:34px;margin-left:-4px;border:0;border-radius:9px;background:#eef2e6;color:#1f3b12;font-size:22px;line-height:1;cursor:pointer}
  #root .cp-mhead{padding:8px 10px;gap:8px}
  #root .cp-mhead-avs{display:none}
  #root .cp-mhead-t{min-width:0;flex:1 1 auto}
  #root .cp-mhead-t b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #root .cp-mhead-t span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #root .cp-mhead-btns{gap:4px}
  #root .cp-hbtn{padding:5px 8px;font-size:13px}
  #root .cp-hbtn .lb{display:none}   /* icones seules : l'en-tete tient sur 375 px */
  #root .cp-pop{right:8px;left:8px;width:auto}
  #root .cp-input{padding:8px 10px calc(8px + env(safe-area-inset-bottom))}
  #root .cp-inbox{padding:3px 4px 3px 10px}
  #root .cp-send{width:40px;height:40px;font-size:17px}
  #root .cp-conv{padding:10px 9px}
  #root .cp-lhead{padding:12px 14px 6px}

  /* — Accueil : les 5 chiffres du bandeau passent en grille (3 + 2), en-têtes qui reviennent à la ligne — */
  #root .h2-hero{padding:16px 14px}
  #root .h2-hello{font-size:22px}
  #root .h2-narr{font-size:13.5px}
  #root .h2-inline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 8px;margin-top:14px;padding-top:12px}
  #root .hx,#root .hx:first-child{padding:0;border-left:0;min-width:0}
  #root .hx .v{font-size:22px}
  #root .hx .l{font-size:11px;line-height:1.2}
  #root .h2-obj{padding:16px 14px}
  #root .h2-obj-v{font-size:32px}
  #root .h2-obj-v span{display:block;margin:6px 0 0}
  #root .h2-alert{flex-wrap:wrap;padding:10px 12px}
  #root .h2-atx{flex:1 1 200px}
  #root .hcal-h{flex-wrap:wrap;gap:6px 8px}
  #root .hcal-t{flex-basis:100%;font-size:15px}
  #root .hcal-wl{font-size:13px}
  #root .hcal-seg{margin-left:0}
  #root .hcal-seg button{padding:4px 9px;font-size:12px}
  #root .hcal-ol{display:none}
  #root .hcal-add{margin-left:auto;padding:6px 10px;font-size:12px}
  #root .hcal-leg{gap:8px 12px}
  #root .mf-h{flex-wrap:wrap;gap:4px 10px}
  #root .mf-row{flex-wrap:wrap;gap:6px 10px;padding:10px 0}
  #root .mf-body{flex:1 1 180px}
  #root .h2-chg-n{width:76px}
  #root .cg-bar{width:56px}
}

/* v135 — badges du menu à plat (pas de pastille : un simple chiffre, aucune hauteur ajoutée) */
.sidenav .v4nav .v4badge,.sidenav .v4nav .v4badge.alert{display:inline;background:none;border:0;box-shadow:none;padding:0;margin:0;min-width:0;width:auto;height:auto;line-height:1;font-size:9.5px;border-radius:0;font-family:'Poppins',sans-serif;font-weight:700;font-variant-numeric:tabular-nums;color:#8b97a5}
.sidenav .v4nav .v4badge.alert{color:#ff7a6b}
.sidenav .v4nav.on .v4badge{color:#7ec24a}
/* v135 — roster équipe repliable en bas du menu */
.sc-tog{display:flex;align-items:center;gap:6px;width:100%;border:0;background:none;cursor:pointer;text-align:left;font-family:inherit}
.sc-tog .sc-cx{margin-left:auto;font-size:8px;transition:transform .2s;opacity:.8}
.sc-tog:not(.open) .sc-cx{transform:rotate(-90deg)}
.sc-tog:hover{color:#aeb8c4}
