:root {
  --navy:#071833; --navy-2:#10284a; --gold:#c6a15b; --or-doux:#f8f1e3;
  --encre:#0e1a2d; --muted:#3a4b63; --papier:#f3f6fb; --carte:#ffffff;
  --ligne:#e1e7f0; --alerte:#8a2e2e; --ok:#0f6f4c; --info:#1c4e89;
  --ombre:0 10px 30px rgba(7,24,51,.06);
}
[data-theme="sombre"] {
  --encre:#e7eef8; --muted:#b7c3d6; --papier:#0b1730; --carte:#12203d; --ligne:#2c456e; --or-doux:#2a2418;
}
* { box-sizing:border-box; }
/* Les skins modifient les accents ; l'identité marine/or et les états métier restent stables. */
[data-skin="site-01"] { --accent-site:#176044; --accent-site-menu:#9ce2be; --fond-site:#eaf5ee; }
[data-skin="site-02"] { --accent-site:#235c9b; --accent-site-menu:#acd5ff; --fond-site:#edf4fc; }
[data-theme="sombre"][data-skin="site-01"] { --accent-site:#9ce2be; --fond-site:#19382e; }
[data-theme="sombre"][data-skin="site-02"] { --accent-site:#acd5ff; --fond-site:#1b3454; }
.choix-skin { display:flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); }
.mon-profil { position:relative; width:38px; height:38px; padding:0; overflow:hidden; border-radius:50%; background:var(--navy); color:var(--gold); font-weight:600; }
.mon-profil img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.mon-profil img[hidden] { display:none; }
.profil-apercu { display:block; width:128px; height:128px; object-fit:contain; border-radius:50%; margin:12px auto; }
.profil-apercu[hidden] { display:none; }
.profil-photo .profil-erreur { min-height:1.5em; color:var(--alerte); }
.choix-skin select { max-width:170px; min-height:36px; border:1px solid var(--ligne); border-radius:8px; padding:5px 8px; background:var(--carte); color:var(--encre); }
@media screen {
  [data-skin="site-01"] .barre, [data-skin="site-02"] .barre { border-bottom:3px solid var(--accent-site); }
  [data-skin="site-01"] .barre-lat .nav.actif, [data-skin="site-02"] .barre-lat .nav.actif { color:var(--accent-site-menu); border-inline-start-color:var(--accent-site-menu); }
  [data-skin="site-01"] .onglet.actif, [data-skin="site-02"] .onglet.actif { background:var(--fond-site); color:var(--accent-site); border-color:var(--accent-site); }
}
@media print { .choix-skin { display:none; } }
html, body { margin:0; min-height:100%; }
html { background:var(--papier); }
body { font:15px/1.5 "Segoe UI", Tahoma, sans-serif; background:transparent; color:var(--encre); }
.zone, .connexion { position:relative; z-index:0; }
.zone::before, .connexion::before {
  content:"";
  position:fixed;
  z-index:-1;
  pointer-events:none;
  background:url("/marque/perse-fond-v2.png") right 28px bottom 24px / min(480px, 42vw) auto no-repeat;
  opacity:.045;
}
.zone::before { top:0; bottom:0; inset-inline-start:272px; inset-inline-end:0; }
.connexion::before { inset:0; background-position:center; background-size:min(520px, 78vw) auto; }
[data-theme="sombre"] .zone::before, [data-theme="sombre"] .connexion::before { opacity:.065; }
@media (max-width:800px) { .zone::before { display:none; } }
@media print { .zone::before, .connexion::before { display:none; } }
button, input, select, textarea { font:inherit; color:inherit; }
button { cursor:pointer; }
img { max-width:100%; }
.app { display:flex; height:100vh; overflow:hidden; }
.barre-lat { width:272px; flex:0 0 272px; background:var(--navy); color:#fff; height:100vh; overflow:auto; display:flex; flex-direction:column; }
.marque-lat { display:flex; gap:12px; align-items:center; padding:18px 16px 12px; }
.marque-lat img { width:48px; height:48px; object-fit:contain; }
.marque-lat strong { display:block; letter-spacing:.04em; }
.marque-lat span { color:var(--gold); font-size:12px; }
.groupe { margin-top:8px; }
.groupe p { margin:0; padding:14px 18px 4px; color:#9fb0c9; font-size:11px; letter-spacing:.12em; text-transform:uppercase; }
.nav { width:100%; text-align:start; background:transparent; color:#e7eef8; border:0; border-radius:0; padding:9px 18px; border-inline-start:3px solid transparent; }
.nav.sous { padding-inline-start:22px; font-size:14px; }
.barre-lat .nav[data-groupe],
.barre-lat .groupe { --puce:#9fb0c9; }
.barre-lat .nav[data-groupe="tableau"], .barre-lat .groupe[data-groupe="tableau"] { --puce:#f4f7fb; }
.barre-lat .nav[data-groupe="presence"], .barre-lat .groupe[data-groupe="presence"] { --puce:#79c0ff; }
.barre-lat .nav[data-groupe="rh"], .barre-lat .groupe[data-groupe="rh"] { --puce:#ffb15a; }
.barre-lat .nav[data-groupe="reference"], .barre-lat .groupe[data-groupe="reference"] { --puce:#6ed6b0; }
.barre-lat .nav[data-groupe="paie"], .barre-lat .groupe[data-groupe="paie"] { --puce:#c9b0ff; }
.barre-lat .nav[data-groupe="transport"], .barre-lat .groupe[data-groupe="transport"] { --puce:#5ec8d6; }
.barre-lat .nav[data-groupe="eleves"], .barre-lat .groupe[data-groupe="eleves"] { --puce:#ff9a78; }
.barre-lat .nav[data-groupe="stocks"], .barre-lat .groupe[data-groupe="stocks"] { --puce:#d4e36a; }
.barre-lat .nav[data-groupe="courrier"], .barre-lat .groupe[data-groupe="courrier"] { --puce:#ff8eae; }
.barre-lat .nav[data-groupe="documents"], .barre-lat .groupe[data-groupe="documents"] { --puce:#aebcff; }
.barre-lat .nav[data-groupe="rapports"], .barre-lat .groupe[data-groupe="rapports"] { --puce:#e7a0ea; }
.barre-lat .nav[data-groupe="admin"], .barre-lat .groupe[data-groupe="admin"] { --puce:#ffe08a; }
.barre-lat .groupe > .groupe-titre,
.barre-lat .nav[data-groupe] { color:var(--puce); }
.barre-lat .nav.sous[data-teinte="0"] { --puce:#8ec8ff; }
.barre-lat .nav.sous[data-teinte="1"] { --puce:#ffc56b; }
.barre-lat .nav.sous[data-teinte="2"] { --puce:#7ee0b8; }
.barre-lat .nav.sous[data-teinte="3"] { --puce:#d2b6ff; }
.barre-lat .nav.sous[data-teinte="4"] { --puce:#ff9bb5; }
.barre-lat .nav.sous[data-teinte="5"] { --puce:#d7e56a; }
.barre-lat .nav.sous[data-teinte="6"] { --puce:#7ad7e8; }
.barre-lat .nav.sous { color:var(--puce); }
.barre-lat .nav::before { content:""; width:9px; height:9px; border-radius:50%; background:var(--puce, #9fb0c9); display:inline-block; margin-inline-end:10px; flex:0 0 9px; vertical-align:middle; }
.barre-lat .groupe .chev { border-right-color:var(--puce); border-bottom-color:var(--puce); }
.nav.actif, .nav:hover { background:var(--navy-2); }
.nav.actif { border-inline-start-color:var(--puce, var(--gold)); color:var(--puce, #fff); }
.pied-lat { margin-top:auto; padding:16px; color:#9fb0c9; font-size:12px; }
.zone { flex:1; min-width:0; }
.barre { display:flex; justify-content:space-between; gap:12px; align-items:center; padding:14px 22px; background:var(--carte); border-bottom:1px solid var(--ligne); position:sticky; top:0; z-index:5; }
.barre h1 { margin:0; font-size:20px; }
.outils { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.outils .signe { width:38px; height:38px; padding:0; display:inline-flex; align-items:center; justify-content:center; border-radius:10px; }
.outils .signe svg { width:18px; height:18px; display:block; }
.outils .signe .drapeau { width:22px; height:15px; border-radius:2px; box-shadow:0 0 0 1px var(--ligne); }
.outils .signe.actif { box-shadow:inset 0 0 0 2px var(--gold); }
.ghost { background:transparent; color:var(--encre); border:1px solid var(--ligne); border-radius:8px; padding:8px 12px; }
.principal { background:var(--navy); color:#fff; border:0; border-radius:8px; padding:9px 14px; }
.secondaire { background:var(--carte); color:var(--encre); border:1px solid var(--ligne); border-radius:8px; padding:9px 14px; }
a.secondaire { display:inline-flex; align-items:center; text-decoration:none; }
.or { background:var(--gold); color:#071833; border:0; border-radius:8px; padding:9px 14px; }
.zone { flex:1; min-width:0; height:100vh; display:flex; flex-direction:column; overflow:hidden; }
.contenu { flex:1; min-height:0; overflow:auto; padding:22px; }
.cadre-paie { width:calc(100% + 44px); height:calc(100vh - 88px); margin:-22px; border:0; display:block; background:transparent; }
.cadre-import-paie { width:100%; height:70vh; border:0; display:block; background:transparent; }
.intro { color:var(--muted); margin:0 0 16px; max-width:70ch; }
.edt-regles { margin:0 0 16px; padding-left:18px; }
.edt-grille td { min-width:110px; }
.edt-bloc { background:var(--or-doux); border-radius:8px; padding:4px 6px; margin:0 0 4px; font-size:12px; }
.grille { display:grid; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr)); gap:14px; }
.pastille { display:inline-flex; align-items:center; gap:6px; border-radius:99px; padding:3px 10px; font-size:12px; font-weight:650; line-height:1.3; }
.indicateur { background:var(--carte); border:1px solid var(--ligne); border-radius:14px; padding:16px; box-shadow:var(--ombre); }
.indicateur b { display:block; font-size:26px; line-height:1.15; overflow-wrap:anywhere; }
.indicateur span { color:var(--muted); font-size:13px; }
.carte { background:var(--carte); border:1px solid var(--ligne); border-radius:14px; padding:18px; margin-bottom:16px; box-shadow:var(--ombre); }
.carte h2, .carte h3 { margin:0 0 8px; }
.deux { display:grid; grid-template-columns:1.2fr .8fr; gap:14px; }
.barre-graphique { display:flex; align-items:center; gap:10px; margin:8px 0; }
.barre-graphique span { flex:1; min-width:0; }
.barre-graphique i { display:block; height:10px; border-radius:99px; background:linear-gradient(90deg, var(--navy), var(--gold)); min-width:4px; }
.pastille { display:inline-flex; align-items:center; gap:6px; border-radius:99px; padding:3px 10px; font-size:12px; font-weight:650; }
.demo { background:var(--or-doux); color:#7a5410; }
.copie { background:#e7f0fb; color:#14365f; }
.ok { color:var(--ok); }
.erreur { color:var(--alerte); }
.table-scroll { overflow-x:auto; }
table { width:100%; border-collapse:collapse; }
.fichier { display:inline-flex; align-items:center; width:auto; background:var(--navy); color:#fff; border-radius:8px; padding:9px 14px; cursor:pointer; }
input[type=file] { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }
.feuille, .table-scroll, table { background:var(--carte); }
th, td { text-align:start; padding:10px 8px; border-bottom:1px solid var(--ligne); vertical-align:top; background:var(--carte); color:var(--encre); }
th { color:#2f4058; font-size:13px; font-weight:700; letter-spacing:.02em; text-transform:uppercase; }
[data-theme="sombre"] th { color:#d7e1ef; }
th .tri { background:none; border:0; padding:0; color:inherit; font:inherit; letter-spacing:inherit; text-transform:inherit; cursor:pointer; }
th[aria-sort="ascending"] .tri::after { content:" ▲"; }
th[aria-sort="descending"] .tri::after { content:" ▼"; }
.liens-resp { display:flex; flex-direction:column; gap:8px; }
.lien-resp { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.lien-retirer { width:auto; white-space:nowrap; }
.lien-ligne { display:inline; width:auto; max-width:none; background:none; border:0; padding:0; color:var(--navy); font-weight:650; text-align:start; text-decoration:underline; cursor:pointer; }
.lien-ligne:hover { color:var(--info); }
.acces-ligne { display:grid; grid-template-columns:1.2fr 1fr auto; gap:8px; align-items:end; margin:8px 0; }
.acces-ligne label { margin:0; }
.barre-actions { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:0 0 12px; }
.ouvrir-fenetre { display:inline-flex; align-items:center; justify-content:center; width:auto; max-width:100%; justify-self:start; align-self:start; margin:0; background:var(--navy); color:#fff; border:0; border-radius:8px; padding:10px 18px; font-weight:650; box-shadow:0 1px 0 rgba(7,24,51,.28); }
.ouvrir-fenetre:hover { background:var(--navy-2); }
dialog.modale { border:1px solid var(--ligne); border-radius:16px; padding:18px; width:min(440px, calc(100vw - 32px)); background:var(--carte); color:var(--encre); }
dialog.modale::backdrop { background:rgba(7,24,51,.35); }
tr:hover td { background:color-mix(in srgb, var(--gold) 14%, var(--carte)); }
label { display:block; margin:12px 0 4px; font-weight:650; }
label.cache { display:none; }
input, select, textarea { width:100%; max-width:460px; padding:10px 12px; border:1px solid var(--ligne); border-radius:10px; background:var(--carte); }
input[type="month"] { width:11.5rem; max-width:100%; }
textarea { max-width:100%; min-height:110px; }
.filtre { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:0 0 12px; }
.filtre label { color:var(--muted); font-size:13px; }
.filtre .paire { display:inline-flex; align-items:center; gap:6px; }
.filtre input, .filtre select { max-width:240px; }
.filtre .choix { position:relative; }
.filtre .choix input { width:220px; }
.filtre .choix .propositions { position:absolute; z-index:7; top:calc(100% + 4px); left:0; width:280px; max-height:260px; overflow:auto; margin:0; padding:6px; background:var(--carte); border:1px solid var(--ligne); border-radius:12px; box-shadow:var(--ombre); }
.pages { display:flex; gap:8px; align-items:center; margin-top:12px; }
.vide { padding:18px 0; color:var(--muted); text-align:start; }
.toast { position:fixed; inset-inline-end:16px; bottom:16px; background:var(--navy); color:#fff; padding:12px 14px; border-radius:12px; border-inline-start:4px solid var(--gold); max-width:min(420px, calc(100% - 32px)); z-index:20; }
.toast.mauvais { border-inline-start-color:#e07a7a; }
.modal { position:fixed; inset:0; background:rgba(7,24,51,.45); display:flex; align-items:center; justify-content:center; padding:16px; z-index:30; }
.modal .carte { width:min(520px, 100%); }
.chargement { padding:40px; color:var(--muted); }
.connexion { min-height:100vh; display:grid; grid-template-columns:1.1fr .9fr; }
.connexion-visuel { background:var(--navy); color:#fff; display:flex; flex-direction:column; justify-content:center; padding:48px; }
.connexion-visuel h1 { font-size:42px; margin:12px 0; }
.connexion-carte { display:flex; align-items:center; justify-content:center; padding:24px; }
.lien-rapide { display:flex; flex-wrap:wrap; gap:8px; }
.menu-mobile { display:none; }
[dir="rtl"] body, [dir="rtl"] button, [dir="rtl"] input, [dir="rtl"] select, [dir="rtl"] textarea { font-family:Tahoma, "Segoe UI", sans-serif; }
[dir="rtl"] input[type="time"], [dir="rtl"] input[type="number"] { direction:ltr; text-align:end; }
@media (max-width:980px) {
  .grille, .deux, .connexion, .mail, .mail-filtres { grid-template-columns:1fr; }
  .connexion-visuel { display:none; }
}
@media (max-width:760px) {
  .zone::before { inset-inline-start:0; }
  .barre { z-index:16; }
  .barre-lat { position:fixed; z-index:15; top:0; transform:translateX(-105%); transition:transform .2s ease; }
  [dir="rtl"] .barre-lat { transform:translateX(105%); }
  .barre-lat.ouvert { transform:none; }
  .voile-menu:not([hidden]) { display:block; position:fixed; inset:0; border:0; background:rgba(7,24,51,.45); z-index:14; }
  .menu-mobile { display:inline-flex; }
  .contenu, .barre { padding-inline:14px; }
  .barre { flex-direction:column; align-items:stretch; gap:10px; }
  .barre h1 { font-size:18px; }
  .grille { grid-template-columns:1fr 1fr; }
  .indicateurs-pointage { gap:8px; }
  .indicateurs-pointage .indicateur { padding:8px 10px; border-radius:10px; }
  .indicateurs-pointage .indicateur b { font-size:18px; }
  .indicateurs-pointage .indicateur span { font-size:11px; line-height:1.2; }
  .pointage-reglages { margin:0 0 10px; }
  .pointage-reglages > summary { font-weight:650; cursor:pointer; }
  .feuille-pointage td, .feuille-pointage th { font-size:12px; padding:6px 4px; }
  .feuille-pointage th:nth-child(4), .feuille-pointage td:nth-child(4),
  .feuille-pointage th:nth-child(5), .feuille-pointage td:nth-child(5),
  .feuille-pointage th:nth-child(6), .feuille-pointage td:nth-child(6),
  .feuille-pointage th:nth-child(9), .feuille-pointage td:nth-child(9),
  .feuille-pointage th:nth-child(10), .feuille-pointage td:nth-child(10) { display:none; }
  .recherche-zone { min-width:0; flex:1 1 100%; }
  .outils .signe { min-height:34px; }
  #alerte-test { display:none; }
  button, input, select { min-height:44px; }
}
.nav-plie { margin-inline-start:auto; background:transparent; color:#fff; border:1px solid #ffffff33; border-radius:8px; width:32px; height:32px; }
.groupe { border-top:1px solid #ffffff14; }
.groupe-titre { display:flex; align-items:center; gap:8px; font-weight:650; }
.groupe .chev { margin-inline-start:auto; width:8px; height:8px; border-right:2px solid var(--gold); border-bottom:2px solid var(--gold); transform:rotate(45deg); }
.groupe.ouvert .chev { transform:rotate(-135deg); }
.groupe .sous-menu { display:none; flex-direction:column; }
.groupe.ouvert .sous-menu { display:flex; }
.onglets { display:flex; flex-wrap:wrap; gap:6px; margin:0 0 14px; position:sticky; top:0; z-index:4; background:var(--papier); padding:2px 0 8px; }
.feuille-corps .table-scroll { max-height:calc(100vh - 280px); overflow:auto; }
.feuille thead th { position:sticky; top:0; z-index:2; background:var(--carte); box-shadow:inset 0 -1px 0 var(--ligne); }
.onglet { background:var(--carte); border:1px solid var(--ligne); border-radius:999px; padding:8px 14px; }
.onglet.actif { background:var(--navy); color:#fff; border-color:var(--navy); }
.filtres, .feuille-barre { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:0 0 8px; }
.filtres select, .filtres input, .feuille-barre select, .feuille-barre input { width:auto; max-width:200px; flex:1 1 140px; }
.feuille-plier { width:32px; height:32px; display:inline-flex; align-items:center; justify-content:center; background:transparent; border:1px solid var(--ligne); border-radius:8px; }
.feuille-plier .chev { width:8px; height:8px; border-right:2px solid var(--navy); border-bottom:2px solid var(--navy); transform:rotate(-135deg); }
.feuille.plie .feuille-plier .chev { transform:rotate(45deg); }
.feuille.plie .feuille-corps { display:none; }
.colonnes-zone { position:relative; }
.colonnes-menu { position:absolute; z-index:7; inset-inline-start:0; top:calc(100% + 4px); min-width:200px; max-height:260px; overflow:auto; background:var(--carte); border:1px solid var(--ligne); border-radius:12px; padding:6px; box-shadow:var(--ombre); }
.colonnes-menu .ligne-check { margin:0; padding:6px 8px; white-space:nowrap; }
.matrice th, .matrice td { text-align:center; }
.matrice th:first-child { text-align:start; white-space:nowrap; }
.matrice input { width:auto; }
.carte-reel { height:480px; border-radius:14px; border:1px solid var(--ligne); background:#e7eef6; }
.carte-reel.attente-clic { cursor:crosshair; }
.segments-maps { display:flex; flex-wrap:wrap; gap:8px; margin:8px 0; }
.segments-maps a.principal, a.ghost[href] { display:inline-block; padding:8px 12px; border-radius:8px; text-decoration:none; }
.mail { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr); gap:14px; align-items:start; }
.role-cartes { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:8px; }
.role-carte { display:flex; flex-direction:column; gap:2px; border:1px solid var(--ligne); border-radius:12px; padding:10px; cursor:pointer; }
.role-carte input { width:auto; }
.role-carte:has(input:checked) { border-color:var(--navy); background:var(--or-doux); }
.recherche-zone { position:relative; min-width:220px; }
.recherche-zone .propositions { position:absolute; z-index:8; right:0; left:0; background:var(--carte); border:1px solid var(--ligne); border-radius:12px; }
.act { position:relative; display:inline-block; }
.act-menu { display:none; position:absolute; z-index:6; inset-inline-end:0; min-width:230px; background:var(--carte); border:1px solid var(--ligne); border-radius:12px; }
.act.ouvert .act-menu { display:block; }
.act-menu button { display:block; width:100%; text-align:start; background:none; border:0; padding:8px 12px; }
.act-menu button:disabled { color:var(--muted); }
.mail-filtres { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; margin:8px 0 12px; }
.mail-filtres label { display:flex; flex-direction:column; gap:4px; font-size:13px; color:var(--muted); }
.mail-classes { display:flex; flex-wrap:wrap; gap:8px 14px; max-height:168px; overflow:auto; margin:8px 0; }
.mail-classes label { display:flex; gap:6px; align-items:center; }
.mail-liste { max-height:420px; overflow:auto; }
.mail-personne { display:flex; gap:8px; align-items:flex-start; padding:8px 0; border-bottom:1px solid var(--ligne); }
.mail-personne small { display:block; color:var(--muted); font-weight:500; }
.compte-filtre { color:var(--muted); font-size:12px; }
@media (min-width:761px) {
  .pointage-reglages > summary { display:none; }
}
.cal-barre { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin:8px 0; }
.calendrier-bloc { width:min(420px, 100%); background:var(--carte); border:1px solid var(--ligne); border-radius:16px; padding:12px 14px 14px; margin:0 0 16px; box-shadow:var(--ombre); }
.cal-noms, .calendrier { display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); gap:2px; }
.cal-noms span { text-align:center; color:var(--muted); font-size:11px; letter-spacing:.04em; text-transform:uppercase; padding:2px 0 8px; }
.calendrier { margin:0; }
.jour-cal { position:relative; width:100%; aspect-ratio:1; height:auto; border:0; border-radius:12px; background:transparent; color:var(--encre); font-weight:650; }
.jour-cal:hover:not(:disabled) { background:var(--papier); }
.jour-cal.choisi { background:color-mix(in srgb, var(--gold) 28%, var(--carte)); color:var(--encre); }
.jour-cal.choisi:hover:not(:disabled) { background:color-mix(in srgb, var(--gold) 40%, var(--carte)); }
[data-theme="sombre"] .jour-cal.choisi { background:color-mix(in srgb, var(--gold) 48%, var(--carte)); color:#f8f1e3; }
[data-theme="sombre"] .jour-cal.choisi:hover:not(:disabled) { background:color-mix(in srgb, var(--gold) 62%, var(--carte)); }
.jour-cal.off { color:var(--muted); font-weight:500; }
.jour-cal:disabled { opacity:.4; }
.jour-cal.aujourdhui::after { content:""; position:absolute; left:50%; bottom:6px; width:5px; height:5px; margin-left:-2px; border-radius:50%; background:var(--gold); }
.jour-cal.ferie { outline:1.5px solid var(--gold); outline-offset:-3px; }
.calendrier-compact { width:max-content; max-width:100%; padding:8px 8px 10px; border-radius:12px; }
.calendrier-compact .cal-noms, .calendrier-compact .calendrier { grid-template-columns:repeat(7, 34px); justify-content:start; }
.calendrier-compact .cal-noms span { font-size:10px; letter-spacing:0; padding:0 0 4px; }
.calendrier-compact .jour-cal { width:34px; height:34px; min-height:0; aspect-ratio:auto; padding:0; border-radius:8px; font-size:13px; }
.calendrier-compact .jour-cal.aujourdhui::after { bottom:3px; width:4px; height:4px; }
.propositions { display:flex; flex-direction:column; gap:4px; max-width:460px; }
.propositions button { text-align:start; background:var(--carte); border:1px solid var(--ligne); border-radius:8px; padding:8px 10px; }
.pli { background:var(--carte); border:1px solid var(--ligne); border-radius:14px; padding:12px 16px; margin:12px 0; }
.pli summary { cursor:pointer; font-weight:700; }
.analyse-prop { border:1px solid var(--ligne); border-radius:12px; padding:10px 12px; margin:8px 0; background:var(--papier); }
.analyse-ba { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.analyse-ba small { color:var(--muted); }
.analyse-corriger { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:8px; }
.analyse-corriger[hidden] { display:none !important; }
.ligne-check { display:flex; align-items:center; gap:8px; font-weight:500; }
.ligne-check input { width:auto; }
.choix-menus { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:8px; }
dialog.modale.large { width:min(720px, calc(100vw - 32px)); }
.jours-coches { display:flex; flex-direction:column; gap:8px; margin:12px 0; }
.jour-coche { border:1px solid var(--ligne); border-radius:12px; padding:8px 10px; background:var(--papier); }
.jour-coche .heures-jour { display:none; margin-top:8px; }
.jour-coche.actif .heures-jour { display:flex; flex-direction:column; gap:8px; }
.plage, .plages-jour { display:grid; grid-template-columns:1fr 1fr 1fr auto; gap:8px; align-items:end; }
.plages-jour { grid-template-columns:1fr; }
.jour-coche .cours-plan, .jour-coche [data-ajout-cours] { grid-column:1 / -1; }
.plan-jours { display:flex; flex-direction:column; gap:8px; margin:12px 0; max-height:52vh; overflow:auto; }
.jour-plan { display:grid; grid-template-columns:7.5rem 1fr; gap:8px; align-items:start; }
.jour-plan > span { font-weight:650; }
.jour-plan label { display:flex; flex-direction:column; gap:4px; font-size:12px; color:var(--muted); }
.jour-plan input { max-width:none; }
.demande-fenetre { display:grid; grid-template-columns:minmax(220px, 280px) 1fr; gap:16px; align-items:start; }
.enfant-demande { display:grid; grid-template-columns:1.1fr 1.1fr 0.8fr 1fr 1.1fr 0.8fr auto; gap:8px; align-items:end; margin:8px 0; }
#dem-obs { min-height:52px; height:60px; resize:vertical; }
@media (max-width:900px) {
  .demande-fenetre, .enfant-demande { grid-template-columns:1fr; }
}
.cases-dossier label { margin:0; font-weight:550; }
.etat-lu { margin:4px 0 8px; font-weight:700; }
.etat-lu.complet { color:var(--ok); }
.piece-ligne { display:flex; flex-wrap:wrap; gap:8px; align-items:center; padding:12px 0; border-bottom:1px solid var(--ligne); }
.piece-ligne div { flex:1 1 220px; display:flex; flex-direction:column; gap:2px; }
.piece-ligne span { color:var(--muted); font-size:13px; }
#cadre-piece img, #cadre-piece iframe { width:100%; max-height:70vh; border:0; background:#fff; }
fieldset.jour-plan { display:block; grid-template-columns:none; border:1px solid var(--ligne); border-radius:12px; padding:8px 10px; margin:0; }
fieldset.jour-plan legend { font-weight:650; padding:0 4px; }
.cours-ligne { display:grid; grid-template-columns:1fr 1fr 8.5rem 1.2fr auto; gap:8px; align-items:end; margin:8px 0; }
.aucun-cours { margin:4px 0 8px; }
@media (max-width:760px) {
  .jour-plan, .cours-ligne { grid-template-columns:1fr 1fr; }
}
.abs-barre { display:flex; gap:12px; align-items:flex-start; margin:0 0 12px; }
.abs-barre > .principal { flex:0 0 auto; }
.types-abs { display:grid; grid-template-columns:1fr 1fr; gap:8px; max-height:220px; overflow:auto; margin:8px 0; }
.type-abs { display:flex; flex-direction:column; gap:2px; text-align:start; border:1px solid var(--ligne); background:var(--papier); color:var(--encre); border-radius:12px; padding:8px 10px; }
.type-abs.actif { border-color:var(--gold); background:color-mix(in srgb, var(--gold) 22%, var(--carte)); }
.type-abs span { color:var(--muted); font-size:12px; }
.recap-abs { margin:10px 0; padding:10px 12px; border-radius:12px; border:1px solid var(--ligne); background:color-mix(in srgb, var(--gold) 12%, var(--carte)); }
dialog.modale.large { max-height:calc(100vh - 48px); overflow:auto; }
.abs-types { display:flex; gap:6px; overflow:auto; flex:1; padding-bottom:4px; }
.abs-types button { border:1px solid var(--ligne); background:var(--carte); color:var(--encre); border-radius:99px; padding:6px 10px; white-space:nowrap; }
.abs-types button.actif { background:var(--navy); color:#fff; border-color:var(--navy); }
.abs-corps { display:grid; grid-template-columns:minmax(0, 1fr) 260px; gap:14px; align-items:start; }
.abs-corps > .abs-etats { order:2; }
.abs-corps > div { order:1; }
.abs-etats { display:flex; flex-direction:column; gap:4px; }
#plier-etats { align-self:flex-end; margin-bottom:6px; }
.abs-corps.replie { grid-template-columns:minmax(0, 1fr) auto; }
.abs-corps.replie .abs-etats button:not(#plier-etats) { display:none; }
.abs-etats button { display:flex; justify-content:space-between; gap:8px; text-align:start; background:transparent; border:0; border-radius:8px; padding:8px 10px; color:var(--encre); }
.abs-etats button.actif { background:color-mix(in srgb, var(--gold) 35%, var(--carte)); color:var(--encre); }
@media (max-width: 800px) { .abs-corps, .abs-barre { display:block; } .abs-types { margin-bottom:8px; } }
.pastille.erreur { background:#f8e8e8; color:var(--alerte); }
.pastille.ok { background:#e7f6ee; color:var(--ok); }
.legende { display:flex; gap:8px; flex-wrap:wrap; }
.fiche-identite { display:flex; flex-wrap:wrap; gap:8px 14px; align-items:baseline; margin:0 0 12px; }
.fiche-identite b { font-size:1.15rem; }
.fiche-identite span { color:var(--muted); }
.fiche-grille { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px 18px; margin:0 0 14px; }
.champ-fiche { display:flex; flex-direction:column; gap:4px; }
.champ-fiche span { color:var(--muted); font-size:13px; font-weight:500; }
.champ-fiche b, .champ-fiche input, .champ-fiche select { font-weight:600; min-height:38px; display:flex; align-items:center; padding:8px 10px; border:1px solid var(--ligne); border-radius:8px; background:var(--carte); color:var(--encre); width:100%; box-sizing:border-box; opacity:1; }
input:read-only, input:disabled, select:disabled, textarea:read-only { background:var(--carte); color:var(--encre); opacity:1; }
@media (max-width: 800px) { .fiche-grille { grid-template-columns:1fr; } }
.cal-nav { display:flex; align-items:center; justify-content:space-between; width:min(420px, 100%); margin:0 0 8px; }
.cal-nav button { width:36px; height:36px; border-radius:999px; border:1px solid var(--ligne); background:var(--carte); color:var(--encre); }
.aes-mardis { display:flex; flex-wrap:wrap; gap:8px; margin:4px 0 8px; }
.aes-mardi { border:1px solid var(--ligne); background:var(--carte); color:var(--encre); border-radius:10px; padding:8px 14px; font-weight:650; cursor:pointer; }
.aes-mardi.choisi { background:color-mix(in srgb, var(--gold) 28%, var(--carte)); }
.aes-mardi.dispense { text-decoration:line-through; opacity:.72; }
.aes-mardi.confirme { border-color:color-mix(in srgb, #059669 45%, var(--ligne)); }
.aes-bandeau-dispense { background:color-mix(in srgb, #dc2626 12%, var(--carte)); border:1px solid color-mix(in srgb, #dc2626 35%, var(--ligne)); border-radius:10px; padding:10px 14px; margin:0 0 14px; }
.dec-choix, .dec-sel { display:flex; flex-wrap:wrap; gap:8px; margin:8px 0; }
.dec-choix button, .dec-sel button { border:1px solid var(--ligne); background:var(--papier); color:var(--encre); border-radius:999px; padding:6px 10px; }
tr[data-marque="depart"] td { background:#fdecec; color:#b42318; }
tr[data-marque="nouveau"] td { background:#e9f7ee; color:#1b7a45; }
[data-theme="sombre"] tr[data-marque="depart"] td { background:#3a2430; color:#ffb4b4; }
[data-theme="sombre"] tr[data-marque="nouveau"] td { background:#1d332c; color:#b7ebc9; }

/* Navigation et graphiques : correctif Codex du 24 octobre 2026. */
.barre-lat [data-groupe="eleves"] { border-top:1px solid rgba(255,255,255,.2); margin-top:8px; padding-top:14px; }
.barre-graphique { display:grid; grid-template-columns:minmax(100px,180px) minmax(0,1fr) minmax(24px,max-content); gap:12px; }
.barre-graphique > span { width:auto; overflow-wrap:anywhere; }
.piste-graphique { width:100%; min-width:0; }
.piste-graphique i { max-width:100%; }
.barre-graphique > b { text-align:end; font-variant-numeric:tabular-nums; }
@media(max-width:480px) { .barre-graphique { grid-template-columns:minmax(85px,110px) minmax(0,1fr) minmax(24px,max-content); gap:8px; } }

/* Bandeau Pointages validé, tableau métier conservé. */
.pointage-compact{background:var(--carte);border:1px solid var(--ligne);border-radius:10px;padding:12px;margin-bottom:12px}
.pointage-commandes{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.pointage-commandes #jours-compte{color:var(--muted);font-size:12px;margin-inline:4px 12px}
.pointage-calendrier{position:relative}
.pointage-calendrier>summary{list-style:none;padding:8px 12px;border:1px solid var(--ligne);border-radius:8px;cursor:pointer;font-size:14px}
.pointage-calendrier>summary::-webkit-details-marker{display:none}
.pointage-calendrier-contenu{position:absolute;inset-inline-start:0;top:calc(100% + 6px);z-index:15;background:var(--carte);border:1px solid var(--ligne);border-radius:10px;padding:12px;width:260px;max-width:calc(100vw - 44px)}
.pointage-calendrier-contenu .calendrier-bloc{box-shadow:none;padding:4px;border:0;border-radius:0;margin:0;width:100%}
.pointage-filtres{display:flex;align-items:center;gap:12px;margin:0;flex-wrap:wrap}
.pointage-filtres>.paire:has(#filtre-nom){flex:0 1 380px;min-width:200px}
.pointage-filtres>.paire:has(#filtre-nom) .choix{flex:1;min-width:0}
.pointage-filtres>.paire:has(#filtre-site){flex:0 0 auto}
.pointage-filtres #filtre-nom{width:100%}
.pointage-filtres .choix .propositions{width:100%;min-width:220px;max-width:min(380px,calc(100vw - 48px));border-radius:8px}
.pointage-filtres .propositions:empty,.recherche-zone .propositions:empty{display:none}
.pointage-compact .pointage-commandes button,.pointage-compact .pointage-calendrier>summary,.pointage-compact input,.pointage-compact select{min-height:36px;font-size:14px}
.pointage-filtres:not(.filtres-ouverts)>.paire:not(:has(#filtre-nom)):not(:has(#filtre-site)){display:none}
.indicateurs-pointage{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:0;background:var(--carte);border:1px solid var(--ligne);border-radius:10px;overflow:hidden;margin-bottom:12px}
.indicateurs-pointage .indicateur{border:0;border-radius:0;box-shadow:none;background:transparent;padding:10px 12px;margin:0;min-width:0}
.indicateurs-pointage .indicateur b{font-size:21px}
.indicateurs-pointage .indicateur span{font-size:11px}
.indicateurs-pointage .indicateur+.indicateur{border-inline-start:1px solid var(--ligne)}
.zone:has(.pointage-compact)::before{display:none}
@media(max-width:1100px){.indicateurs-pointage{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:540px){.indicateurs-pointage{grid-template-columns:repeat(2,minmax(0,1fr))}.pointage-calendrier-contenu{position:static;width:100%;margin-top:8px}.pointage-filtres>.paire{width:100%}}
@media print{.pointage-compact{display:none}}

/* ==========================================================================
   THEMES GLOBAUX PERSÉ NEXT : ORIGINAL (OR), SITE 01 (VERT), SITE 02 (BLEU ROYAL & CYAN)
   Chaque thème transforme la totalité de l'interface (barre latérale, cartes,
   fonds, bordures, boutons, indicateurs et tableaux).
   ========================================================================== */

/* --- 1. NEXT ORIGINAL : MARINE NUIT ÉBÈNE & OR IMPÉRIAL --- */
:root, [data-skin="origine"] {
  --navy: #071833;
  --navy-2: #10284a;
  --gold: #c6a15b;
  --or: #c6a15b;
  --or-doux: #f8f1e3;
  --encre: #0e1a2d;
  --muted: #3a4b63;
  --papier: #f3f6fb;
  --carte: #ffffff;
  --ligne: #e1e7f0;
  --ombre: 0 10px 30px rgba(7, 24, 51, 0.06);
}
[data-theme="sombre"], [data-theme="sombre"][data-skin="origine"] {
  --navy: #051226;
  --navy-2: #0b1f3d;
  --gold: #c6a15b;
  --or: #c6a15b;
  --or-doux: #2a2418;
  --encre: #e7eef8;
  --muted: #b7c3d6;
  --papier: #0b1730;
  --carte: #12203d;
  --ligne: #243859;
}

/* --- 2. SITE 01 : VERT ÉMERAUDE PROFOND & JADE IMPÉRIAL --- */
[data-skin="site-01"] {
  --navy: #062b1b;
  --navy-2: #0b452c;
  --gold: #10b981;
  --or: #10b981;
  --or-doux: #e6f7ef;
  --encre: #052317;
  --muted: #3b6652;
  --papier: #edf9f2;
  --carte: #ffffff;
  --ligne: #caecd7;
  --ombre: 0 10px 30px rgba(6, 43, 27, 0.08);
}
[data-theme="sombre"][data-skin="site-01"] {
  --navy: #03170e;
  --navy-2: #072618;
  --gold: #34d399;
  --or: #34d399;
  --or-doux: #0b3823;
  --encre: #e6fcf1;
  --muted: #7fc3a1;
  --papier: #04130d;
  --carte: #082418;
  --ligne: #113d28;
}

/* --- 3. SITE 02 : BLEU ROYAL FRANÇAIS & CYAN LUMINEUX (AZUR DISTINCTIF) ---
   Distinct à 100% de l'Original : barre latérale Bleu Royal franc,
   accents Cyan Néon électriques et ambiance azuréenne impossible à confondre. */
[data-skin="site-02"] {
  --navy: #15468d;
  --navy-2: #1e5cb5;
  --gold: #0284c7;
  --or: #0284c7;
  --or-doux: #e0f2fe;
  --encre: #0c2340;
  --muted: #2d5a88;
  --papier: #f0f7ff;
  --carte: #ffffff;
  --ligne: #bae6fd;
  --ombre: 0 10px 30px rgba(2, 132, 199, 0.10);
}
[data-theme="sombre"][data-skin="site-02"] {
  --navy: #16366f;
  --navy-2: #1f4b99;
  --gold: #00e5ff;
  --or: #00e5ff;
  --or-doux: #0a254d;
  --encre: #f0f9ff;
  --muted: #7dd3fc;
  --papier: #071226;
  --carte: #0e2246;
  --ligne: #1d4ed8;
}

/* --- 4. THÈME AMÉTHYSTE : POURPRE IMPÉRIAL & VIOLET ROYAL --- */
[data-skin="amethyste"] {
  --navy: #3b0764;
  --navy-2: #581c87;
  --gold: #9333ea;
  --or: #a855f7;
  --or-doux: #f3e8ff;
  --encre: #1e0b36;
  --muted: #6b468a;
  --papier: #faf5ff;
  --carte: #ffffff;
  --ligne: #e9d5ff;
  --ombre: 0 10px 30px rgba(59, 7, 100, 0.08);
}
[data-theme="sombre"][data-skin="amethyste"] {
  --navy: #23063d;
  --navy-2: #380a61;
  --gold: #c084fc;
  --or: #c084fc;
  --or-doux: #320d57;
  --encre: #faf5ff;
  --muted: #d8b4fe;
  --papier: #120320;
  --carte: #1d0733;
  --ligne: #4c1d95;
}

/* --- ADAPTATION DES COMPOSANTS CLEFS AU THÈME ACTIF --- */
.barre-lat {
  background: var(--navy) !important;
  border-inline-end: 1px solid var(--ligne);
  transition: background 0.3s ease, border-color 0.3s ease;
}
.marque-lat span {
  color: var(--gold) !important;
}
.barre-lat .nav.actif {
  color: var(--gold) !important;
  background: rgba(198, 161, 91, 0.12);
  border-inline-start: 4px solid var(--gold) !important;
}
[data-skin="site-01"] .barre-lat .nav.actif {
  background: rgba(16, 185, 129, 0.16) !important;
  color: #34d399 !important;
  border-inline-start-color: #34d399 !important;
}
[data-skin="site-02"] .barre-lat .nav.actif {
  background: rgba(0, 229, 255, 0.18) !important;
  color: #00e5ff !important;
  border-inline-start-color: #00e5ff !important;
}
[data-skin="amethyste"] .barre-lat .nav.actif {
  background: rgba(192, 132, 252, 0.18) !important;
  color: #c084fc !important;
  border-inline-start-color: #c084fc !important;
}

.barre {
  background: var(--carte) !important;
  border-bottom: 2px solid var(--ligne) !important;
  transition: background 0.3s ease, border-color 0.3s ease;
}

button.principal, a.principal, .btn-primaire {
  background: var(--gold) !important;
  border-color: var(--gold) !important;
  color: #ffffff !important;
  transition: filter 0.2s ease;
}
[data-skin="origine"] button.principal {
  background: #c6a15b !important;
  border-color: #b59048 !important;
  color: #071833 !important;
}
[data-skin="site-02"] button.principal {
  background: linear-gradient(135deg, #0284c7 0%, #2563eb 100%) !important;
  border-color: #2563eb !important;
  color: #ffffff !important;
  box-shadow: 0 3px 10px rgba(37, 99, 235, 0.3) !important;
}
[data-theme="sombre"][data-skin="site-02"] button.principal {
  background: linear-gradient(135deg, #00b4d8 0%, #0077b6 100%) !important;
  border-color: #00e5ff !important;
  color: #ffffff !important;
  box-shadow: 0 0 14px rgba(0, 229, 255, 0.35) !important;
}
[data-skin="amethyste"] button.principal {
  background: linear-gradient(135deg, #9333ea 0%, #7c3aed 100%) !important;
  border-color: #7c3aed !important;
  color: #ffffff !important;
}
[data-theme="sombre"][data-skin="amethyste"] button.principal {
  background: linear-gradient(135deg, #a855f7 0%, #7c3aed 100%) !important;
  color: #ffffff !important;
  box-shadow: 0 0 14px rgba(192, 132, 252, 0.35) !important;
}
button.principal:hover {
  filter: brightness(1.1);
}

.carte, .panneau, .pointage-compact, .pointage-panneau-carte {
  background: var(--carte) !important;
  border: 1px solid var(--ligne) !important;
  transition: background 0.3s ease, border-color 0.3s ease;
}

.onglet.actif {
  background: var(--or-doux) !important;
  color: var(--gold) !important;
  border-color: var(--gold) !important;
}

.jour-cal.choisi {
  background: var(--gold) !important;
  color: #ffffff !important;
}
[data-skin="origine"] .jour-cal.choisi {
  color: #071833 !important;
}
[data-skin="site-02"] .jour-cal.choisi {
  background: #0284c7 !important;
  color: #ffffff !important;
}
[data-theme="sombre"][data-skin="site-02"] .jour-cal.choisi {
  background: #00e5ff !important;
  color: #041029 !important;
  font-weight: 700 !important;
}
[data-skin="amethyste"] .jour-cal.choisi {
  background: #9333ea !important;
  color: #ffffff !important;
}

input:focus, select:focus, textarea:focus {
  border-color: var(--gold) !important;
  box-shadow: 0 0 0 3px rgba(198, 161, 91, 0.2);
}
[data-skin="site-01"] input:focus, [data-skin="site-01"] select:focus, [data-skin="site-01"] textarea:focus {
  box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.2) !important;
}
[data-skin="site-02"] input:focus, [data-skin="site-02"] select:focus, [data-skin="site-02"] textarea:focus {
  box-shadow: 0 0 0 3px rgba(0, 229, 255, 0.3) !important;
}
[data-skin="amethyste"] input:focus, [data-skin="amethyste"] select:focus, [data-skin="amethyste"] textarea:focus {
  box-shadow: 0 0 0 3px rgba(168, 85, 247, 0.3) !important;
}

/* --- FILTRAGE INSTANTANÉ DE LA TABLE DE POINTAGE --- */
table tbody tr[data-nom-filtre="0"],
.feuille table tbody tr[data-nom-filtre="0"] {
  display: none !important;
}

/* --- PANNEAU DE POINTAGE THÉMATIQUE HARMONIEUX (MODE CLAIR & SOMBRE) --- */
.pointage-panneau-carte {
  background: var(--carte) !important;
  border: 1px solid var(--ligne) !important;
  border-radius: 12px;
  padding: 18px 20px;
  margin-bottom: 14px;
}
.pointage-filtres-ligne {
  display: flex;
  align-items: flex-end;
  gap: 16px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.pointage-champ-recherche {
  flex: 1 1 320px;
  min-width: 200px;
}
.pointage-champ-site {
  flex: 0 0 190px;
  min-width: 140px;
}
.pointage-actions-filtres {
  display: flex;
  gap: 10px;
}
.pointage-panneau-carte input,
.pointage-panneau-carte select {
  height: 38px;
  border-radius: 8px;
  border: 1px solid var(--ligne) !important;
  background: var(--papier) !important;
  color: var(--encre) !important;
  padding: 0 12px;
  font-size: 14px;
  box-sizing: border-box;
}
.cal-cadre-fixe {
  border: 1px solid var(--ligne) !important;
  border-radius: 12px;
  padding: 14px 16px;
  background: var(--papier) !important;
  width: 270px;
  box-sizing: border-box;
}
.cal-cadre-fixe .cal-barre {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}
.cal-cadre-fixe .cal-barre strong {
  color: var(--encre) !important;
  font-size: 14px;
  font-weight: 700;
  text-transform: capitalize;
}
.cal-cadre-fixe .cal-barre button {
  color: var(--encre) !important;
  background: none;
  border: none;
  font-size: 18px;
  cursor: pointer;
  padding: 0 6px;
  line-height: 1;
}
.cal-cadre-fixe .calendrier-bloc {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
  width: 100% !important;
}
.cal-cadre-fixe .cal-noms,
.cal-cadre-fixe .calendrier {
  display: grid !important;
  grid-template-columns: repeat(7, 1fr) !important;
  gap: 2px !important;
  width: 100% !important;
  justify-content: stretch !important;
}
.cal-cadre-fixe .cal-noms span {
  text-align: center;
  font-size: 10px;
  font-weight: 600;
  color: var(--muted) !important;
  padding: 0 0 6px 0;
  text-transform: uppercase;
}
.cal-cadre-fixe .jour-cal {
  width: 100% !important;
  height: 32px !important;
  font-size: 13px !important;
  border-radius: 6px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  box-sizing: border-box !important;
}
.indicateurs-pointage-cadre {
  border: 1px solid var(--ligne) !important;
  border-radius: 10px;
  padding: 16px 22px;
  background: var(--papier) !important;
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: repeat(4, 1fr);
  gap: 12px 24px;
  align-content: center;
  flex: 1 1 0;
}
.indicateurs-pointage-cadre .item-stat {
  display: flex;
  align-items: baseline;
  gap: 10px;
}
.indicateurs-pointage-cadre .item-stat b {
  font-size: 22px;
  font-weight: 700;
  color: var(--encre) !important;
  min-width: 32px;
}
.indicateurs-pointage-cadre .item-stat span {
  font-size: 13.5px;
  color: var(--muted) !important;
}


/* MODULE AES */
.aes-carte-atelier { background:var(--carte); border:1px solid var(--ligne); border-radius:14px; padding:18px; box-shadow:var(--ombre); display:flex; flex-direction:column; gap:12px; }
.aes-atelier-header { display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--ligne); padding-bottom:10px; }
.aes-coach { font-size:12.5px; color:var(--muted); font-weight:500; }
.aes-creneaux { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.aes-creneau-bloc { background:var(--fond); border:1px solid var(--ligne); border-radius:10px; padding:10px 12px; }
.aes-badge-creneau { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:0.04em; color:var(--or, #c6a15b); margin-bottom:6px; display:inline-block; }
.aes-eleves-tags { display:flex; flex-wrap:wrap; gap:5px; margin-top:6px; max-height:140px; overflow-y:auto; }
.aes-eleve-tag { font-size:11px; padding:2px 7px; border-radius:6px; background:var(--carte); border:1px solid var(--ligne); color:var(--texte); white-space:nowrap; }
.aes-eleve-tag span { color:var(--muted); font-size:10px; margin-left:3px; }
.aes-actions-seance { display:flex; flex-wrap:wrap; gap:8px; }
.aes-actions-seance .principal { min-height:40px; }
.aes-btn-print { display:inline-flex; align-items:center; gap:8px; padding:9px 16px; background:#071833; color:#c6a15b; border:1px solid #c6a15b; border-radius:8px; font-weight:700; font-size:13px; cursor:pointer; text-decoration:none; transition:opacity .15s; }
.aes-btn-print:hover { opacity:.88; }
.aes-badge-bus { display:inline-block; padding:2px 8px; border-radius:4px; font-weight:700; font-size:11px; }
.aes-badge-bus-1 { background:#e0f2fe; color:#0369a1; border:1px solid #bae6fd; }
.aes-badge-bus-2 { background:#fef3c7; color:#b45309; border:1px solid #fde68a; }
.aes-badge-sans { background:#f1f5f9; color:#475569; border:1px solid #e2e8f0; }

/* AES : listes lisibles, sans défilement imbriqué. */
.aes-effectifs-lisibles .aes-atelier-ligne { border-top:1px solid var(--ligne); margin:0; padding:0; }
.aes-atelier-ligne > summary { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:18px 8px; cursor:pointer; }
.aes-atelier-identite { display:grid; gap:5px; font-size:16px; }
.aes-atelier-identite .muted { font-size:13px; font-weight:400; }
.aes-atelier-comptes { display:flex; align-items:center; gap:28px; font-size:13px; }
.aes-atelier-comptes > span { white-space:nowrap; }
.aes-atelier-comptes strong { margin-left:8px; font-size:17px; }
.aes-atelier-total { min-width:85px; text-align:right; color:var(--muted); }
.aes-atelier-ligne > summary::after { content:'＋'; font-size:20px; }
.aes-atelier-ligne[open] > summary::after { content:'−'; }
.aes-listes-groupes { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; padding:0 8px 24px; }
.aes-listes-groupes h4 { margin:6px 0 14px; font-size:15px; }
.aes-listes-groupes table { width:100%; table-layout:auto; border-collapse:collapse; }
.aes-listes-groupes th,.aes-listes-groupes td { padding:11px 8px; text-align:left; white-space:normal; overflow-wrap:anywhere; border-bottom:1px solid var(--ligne); }
.aes-listes-groupes th { font-size:12px; color:var(--muted); }
.aes-listes-groupes td { font-size:14px; }
.aes-galerie-ateliers { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:12px; margin:12px 0 8px; }
.aes-carte-matiere { display:flex; flex-direction:column; gap:10px; text-align:left; padding:16px; border:1px solid var(--ligne); border-radius:14px; background:var(--carte); cursor:pointer; min-height:118px; }
.aes-carte-matiere:hover { border-color:var(--gold); }
.aes-carte-matiere.ouverte { border-color:var(--gold); box-shadow:0 0 0 2px rgba(198,161,91,.25); }
.aes-carte-matiere .aes-atelier-comptes { flex-wrap:wrap; gap:12px; font-size:12px; }
.aes-plateau-atelier { margin-top:18px; padding-top:8px; border-top:1px solid var(--ligne); }
.aes-plateau-entete { display:flex; flex-wrap:wrap; align-items:baseline; gap:12px 18px; margin-bottom:8px; }
.aes-plateau-entete h4 { margin:0; font-size:18px; }
.aes-plateau-groupes { padding:0; }
.aes-colonne-groupe { min-height:220px; border:2px dashed var(--ligne); border-radius:14px; padding:12px; background:var(--papier); }
.aes-colonne-groupe.cible, .aes-mini-depot.cible { border-color:var(--gold); background:var(--or-doux); }
.aes-tuiles { display:flex; flex-direction:column; gap:8px; }
.aes-tuile-eleve { display:grid; gap:2px; padding:10px 12px; border-radius:10px; background:var(--carte); border:1px solid var(--ligne); box-shadow:var(--ombre); cursor:grab; user-select:none; touch-action:manipulation; }
.aes-tuile-eleve span { font-size:12px; color:var(--muted); }
.aes-tuile-eleve:active { cursor:grabbing; }
.aes-tuile-eleve.prise { border-color:var(--gold); box-shadow:0 0 0 2px rgba(198,161,91,.35); }
.aes-depot-vide { margin:18px 8px; }
.aes-autres-titre { margin:22px 0 10px; font-size:15px; }
.aes-autres-ateliers { display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:10px; }
.aes-autre-matiere { display:grid; gap:6px; padding:12px; border:1px solid var(--ligne); border-radius:12px; background:var(--fond, var(--papier)); }
.aes-mini-groupes { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.aes-mini-depot { min-height:40px; font-size:12px; border:1px dashed var(--ligne); border-radius:8px; background:var(--carte); cursor:pointer; }
.aes-mini-depot:hover { border-color:var(--gold); }
@media(max-width:1000px) { .aes-listes-groupes { grid-template-columns:1fr; } .aes-atelier-ligne > summary { flex-wrap:wrap; gap:12px; } .aes-atelier-comptes { gap:16px; flex-wrap:wrap; } }

.jours-abs { display:block; max-width:52rem; white-space:normal; line-height:1.45; font-size:13px; color:var(--muted); }
.abs-jour { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:5px 0; }
.abs-jour button { font-size:12px; padding:2px 8px; min-height:28px; }


/* --- PERSÉ NEXT V2 : STYLES INTÉGRATION GLOBALE --- */

.outil-v2 { display:inline-flex; align-items:center; gap:6px; padding:6px 10px; border-radius:8px; font-size:13px; font-weight:600; text-decoration:none; cursor:pointer; border:1px solid var(--ligne); background:var(--carte); color:var(--encre); position:relative; }
.outil-v2:hover { border-color:var(--gold); }
.pastille-compteur { background:var(--alerte); color:#fff; font-size:11px; font-weight:700; border-radius:10px; padding:1px 6px; min-width:18px; text-align:center; }
.pastille-sante { width:8px; height:8px; border-radius:50%; background:#10b981; display:inline-block; }
.pastille-sante.warn { background:#f59e0b; }
.pastille-sante.crit { background:#ef4444; }

/* 1. Boîte unique */
.boite-filtres { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px; }
.boite-filtre { padding:7px 14px; border-radius:20px; border:1px solid var(--ligne); background:var(--carte); cursor:pointer; font-size:13px; font-weight:500; }
.boite-filtre.actif { background:var(--navy); color:#fff; border-color:var(--navy); }
.boite-liste { display:grid; gap:10px; }
.boite-item { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 18px; border-radius:12px; border:1px solid var(--ligne); background:var(--carte); box-shadow:var(--ombre); }
.boite-item:hover { border-color:var(--gold); }
.boite-item-corps { flex:1; min-width:0; }
.boite-item-titre { font-weight:600; font-size:15px; display:flex; align-items:center; gap:8px; }
.boite-item-detail { font-size:13px; color:var(--muted); margin-top:4px; }
.boite-item-action { display:flex; gap:8px; align-items:center; }

/* 2. Recherche universelle enrichie */
.recherche-groupe-titre { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:0.05em; color:var(--gold); padding:6px 12px 2px; }

/* 3. Assistant IA */
.assistant-panneau { display:flex; flex-direction:column; height:calc(100vh - 160px); min-height:500px; max-height:850px; background:var(--carte); border:1px solid var(--ligne); border-radius:14px; box-shadow:var(--ombre); overflow:hidden; }
.assistant-messages { flex:1; overflow-y:auto; padding:20px; display:flex; flex-direction:column; gap:14px; }
.assistant-bulle { max-width:85%; padding:14px 18px; border-radius:14px; font-size:14px; line-height:1.5; white-space:pre-wrap; }
.assistant-bulle.user { align-self:flex-end; background:var(--navy); color:#fff; border-bottom-right-radius:2px; }
.assistant-bulle.bot { align-self:flex-start; background:var(--papier); color:var(--encre); border:1px solid var(--ligne); border-bottom-left-radius:2px; }
.assistant-conf-bloc { margin-top:12px; padding:12px; border-radius:8px; background:var(--carte); border:1px dashed var(--gold); }
.assistant-suggestions { display:flex; flex-wrap:wrap; gap:8px; padding:10px 20px; border-top:1px solid var(--ligne); background:var(--papier); }
.assistant-chip { padding:6px 12px; border-radius:16px; font-size:12.5px; border:1px solid var(--ligne); background:var(--carte); cursor:pointer; }
.assistant-chip:hover { border-color:var(--gold); }
.assistant-form { display:flex; gap:8px; padding:12px 20px; border-top:1px solid var(--ligne); background:var(--carte); }
.assistant-input { flex:1; padding:10px 14px; border:1px solid var(--ligne); border-radius:10px; min-height:44px; resize:vertical; }

/* 4. Tuiles déplaçables */
.tuiles-plateau { display:grid; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); gap:16px; margin-top:16px; align-items:start; }
.tuiles-colonne { background:var(--papier); border:2px dashed var(--ligne); border-radius:14px; padding:14px; min-height:450px; display:flex; flex-direction:column; gap:10px; }
.tuiles-colonne.survol { border-color:var(--gold); background:var(--or-doux); }
.tuiles-colonne-header { display:flex; justify-content:space-between; align-items:baseline; padding-bottom:8px; border-bottom:1px solid var(--ligne); font-weight:700; }
.jauge-capacite { display:inline-block; font-size:12px; padding:2px 8px; border-radius:10px; font-weight:700; background:#e0f2fe; color:#0369a1; }
.jauge-capacite.pleine { background:#fef3c7; color:#b45309; }
.jauge-capacite.surcharge { background:#fee2e2; color:#b91c1c; }
.tuile-carte { padding:12px 14px; border-radius:10px; background:var(--carte); border:1px solid var(--ligne); box-shadow:var(--ombre); cursor:grab; user-select:none; }
.tuile-carte:active { cursor:grabbing; }
.tuile-carte.en-glissement { opacity:0.4; }
.tuile-carte.survol-tuile { border-color:var(--navy); outline:2px solid var(--or, #c6a15b); }
.tuile-ligne-ordre { display:flex; align-items:flex-start; gap:8px; }
.tuile-rang { flex:0 0 1.6em; font-weight:800; color:var(--navy); }
.tuile-corps { flex:1; min-width:0; }
.tuile-fleches { display:flex; flex-direction:column; gap:2px; }
.tuile-fleches button { padding:2px 6px; min-width:28px; line-height:1.1; }

/* 5. Simulations */
.simulation-grille { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-top:14px; }
@media (max-width:850px) { .simulation-grille { grid-template-columns:1fr; } }
.simulation-resultat-box { padding:18px; border-radius:12px; background:var(--or-doux); border:1px solid var(--gold); }

/* 6. Automatisations */
.auto-grille { display:grid; grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); gap:16px; margin-top:14px; }
.auto-carte { background:var(--carte); border:1px solid var(--ligne); border-radius:12px; padding:18px; box-shadow:var(--ombre); display:flex; flex-direction:column; justify-content:space-between; gap:14px; }
.auto-carte.active { border-inline-start:4px solid #10b981; }
.auto-carte.inactive { border-inline-start:4px solid #94a3b8; opacity:0.8; }

/* 7. Santé système */
.sante-grille { display:grid; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)); gap:16px; margin-top:14px; }
.sante-carte { background:var(--carte); border:1px solid var(--ligne); border-radius:12px; padding:18px; box-shadow:var(--ombre); }
.sante-carte h3 { margin:0 0 10px; font-size:16px; display:flex; justify-content:space-between; align-items:center; }
.statut-pilule { font-size:11px; font-weight:700; padding:2px 8px; border-radius:12px; text-transform:uppercase; }
.statut-pilule.ok { background:#dcfce7; color:#15803d; }
.statut-pilule.warn { background:#fef9c3; color:#a16207; }
.statut-pilule.error { background:#fee2e2; color:#b91c1c; }
