﻿/* ════════════════════════════════════════════════════════════════════════════
   EDUCATED 6 — ACCUEIL RAZOR (StartPage:Mode = Razor)
   Fichier : wwwroot/css/home-v6.css   Composant : NavigationV6/Home/EducatedHome.razor
   Reprend la maquette validée « Tableau de bord principal · synthèse des deux ».
   Toutes les classes sont préfixées edh- et rangées sous .edh.
   ════════════════════════════════════════════════════════════════════════════ */

.edh {
    padding: 18px 20px 32px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    font-family: "Geist", system-ui, sans-serif;
    font-size: 13px;
    line-height: 1.45;
    color: #14122B;
    font-variant-numeric: tabular-nums;
    -webkit-font-smoothing: antialiased;
    background: #F5F4FA;
    min-height: 100%;
    box-sizing: border-box;
}
.edh *, .edh *::before, .edh *::after { box-sizing: border-box; }
.edh button { font: inherit; color: inherit; }
.edh h1, .edh h2 { margin: 0; }

/* Mise en page */
.edh .edh-grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); gap: 16px; align-items: start; }
.edh .edh-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; align-items: start; }
@media (max-width: 1100px) {
    .edh .edh-grid { grid-template-columns: minmax(0, 1fr); }
    .edh .edh-kpis { grid-template-columns: minmax(0, 1fr); }
}
.edh .edh-empty { padding: 48px 20px; text-align: center; color: #4A4766; }
.edh .edh-small { font-size: 12px; }

/* Maquette */
.edh .edh-page { padding:18px 20px 32px;display:flex;flex-direction:column;gap:16px;max-width:1180px }
.edh .edh-card { background:#FFFFFF;border:1px solid #E9E7F3;border-radius:14px }
.edh .edh-sec { font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#6E6A8A }
.edh .edh-h2 { margin:0;font:600 15px 'Sora',sans-serif;letter-spacing:-0.01em;color:#14122B }
.edh .edh-muted { color:#4A4766 }
.edh .edh-night { position:relative;padding:18px 22px;border-radius:14px 14px 0 0;color:#fff;background:radial-gradient(520px 260px at 6% 0%,rgba(83,81,251,.55) 0%,rgba(83,81,251,0) 65%),radial-gradient(440px 250px at 100% 130%,rgba(255,168,0,.34) 0%,rgba(255,93,37,.30) 32%,rgba(255,93,37,0) 66%),linear-gradient(120deg,#140F3E 0%,#211A66 50%,#100C30 100%) }
.edh .edh-chip { display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:99px;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.92);background:rgba(255,255,255,.10);box-shadow:inset 0 0 0 1px rgba(255,255,255,.16) }
.edh .edh-chip i { width:6px;height:6px;border-radius:50%;background:#FF8A5C }
.edh .edh-go { display:inline-flex;align-items:center;gap:6px;margin-top:10px;height:34px;padding:0 14px;border-radius:9px;background:#FFFFFF;color:#241C6E;font-weight:600 }
.edh .edh-go:hover { background:#EEEEFF;color:#241C6E }
.edh .edh-sevbar { flex:1;display:flex;gap:3px;height:6px;min-width:160px }
.edh .edh-sevbar span { border-radius:99px }
.edh .edh-lg { display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#4A4766;white-space:nowrap;border:0;background:transparent;font-family:inherit;cursor:pointer;padding:4px 6px;border-radius:6px }
.edh .edh-lg:hover { background:#F3F2F9 }
.edh .edh-lg b { color:#14122B;font-weight:600 }
.edh .edh-lg i { width:7px;height:7px;border-radius:50%;display:inline-block }
.edh .edh-mod { position:relative;display:flex;flex-direction:column;gap:6px;padding:11px 12px;border:1px solid #E9E7F3;border-radius:12px;background:#FAF9FD;color:#14122B }
.edh .edh-mod:hover { border-color:#CBCAFE;background:#fff;box-shadow:0 10px 24px -18px rgba(36,28,110,.5);color:#14122B }
.edh .edh-mod:hover .edh-arr { color:#5351FB }
.edh .edh-mi { width:26px;height:26px;border-radius:8px;background:#EEEEFF;color:#5351FB;display:inline-flex;align-items:center;justify-content:center;flex:none }
.edh .edh-mod:hover .edh-mi { background:#DDDDFE }
.edh .edh-crit { width:8px;height:8px;border-radius:50%;background:#B4233B;box-shadow:0 0 0 3px #FCEBEE;flex:none }
.edh .edh-arr { margin-left:auto;color:#A09CB8 }
.edh .edh-big { font:700 20px 'Sora',sans-serif;letter-spacing:-0.02em }
.edh .edh-tag { display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 7px;border-radius:6px;font-size:11px;font-weight:600;background:#FFFFFF;border:1px solid #ECEAF5;color:#4A4766;white-space:nowrap }
.edh .edh-tag i { width:6px;height:6px;border-radius:50%;display:inline-block }
.edh .edh-fl { display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:99px;border:1px solid #E1DEEE;background:#fff;font:inherit;font-size:12px;font-weight:600;color:#4A4766;cursor:pointer }
.edh .edh-fl.on { background:#14122B;border-color:#14122B;color:#fff }
.edh .edh-fl i { width:6px;height:6px;border-radius:50%;display:inline-block }
.edh .edh-al { display:flex;align-items:center;gap:12px;padding:10px 14px;border-top:1px solid #F0EEF7;color:#14122B }
.edh .edh-al:hover { background:#FAF9FD;color:#14122B }
.edh .edh-ai { width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;flex:none }
.edh .edh-an { font:700 15px 'Sora',sans-serif;min-width:34px;text-align:right }
.edh .edh-mtag { display:inline-flex;align-items:center;height:18px;padding:0 6px;border-radius:5px;font-size:10.5px;font-weight:600;background:#F3F2F9;color:#4A4766;margin-left:4px;vertical-align:1px }
.edh .edh-kc { padding:14px 16px;display:flex;flex-direction:column;gap:10px }
.edh .edh-kh { display:flex;align-items:flex-end;justify-content:space-between;gap:8px }
.edh .edh-kv { font:700 24px 'Sora',sans-serif;letter-spacing:-0.02em;line-height:1 }
.edh .edh-delta { font-size:12px;font-weight:600 }
.edh .edh-hb { display:grid;grid-template-columns:86px minmax(0,1fr) 56px;align-items:center;gap:10px }
.edh .edh-hb .edh-t { height:8px;border-radius:4px;background:#EEEEFF;overflow:hidden }
.edh .edh-hb .edh-t span { display:block;height:8px;border-radius:4px;background:linear-gradient(90deg,#342484,#5351FB) }

/* Bandeau */
.edh .edh-night-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 16px; }
.edh .edh-night-text { flex: 1 1 300px; min-width: 0; }
.edh .edh-night-side { text-align: right; }
.edh .edh-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.edh .edh-chip-plain { text-transform: none; letter-spacing: .02em; }
.edh .edh-hello { margin: 8px 0 0; font: 700 26px/1.1 "Sora", sans-serif; letter-spacing: -.03em; color: #FFFFFF; }
.edh .edh-lead { margin: 6px 0 0; color: rgba(255, 255, 255, .75); }
.edh .edh-lead b { color: #FFFFFF; }
.edh .edh-points { font: 700 24px/1.1 "Sora", sans-serif; letter-spacing: -.02em; color: #FFFFFF; }
.edh .edh-points span { color: #FFB08F; }
.edh .edh-go { border: 0; cursor: pointer; }
.edh .edh-sevrow { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 10px 22px; border-bottom: 1px solid #E9E7F3; }

/* Modules */
.edh .edh-modules { padding: 14px 22px 18px; display: flex; flex-direction: column; gap: 10px; }
.edh .edh-sechead { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.edh .edh-modgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.edh .edh-mod { text-align: left; cursor: pointer; font: inherit; min-width: 0; }
.edh .edh-mod.is-on { border-color: #5351FB; background: #FFFFFF; box-shadow: 0 0 0 2px rgba(83, 81, 251, .18); }
.edh .edh-modhead { display: flex; align-items: center; gap: 8px; min-width: 0; }
.edh .edh-modhead b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.edh .edh-big-ok { color: #8A93A6; }
.edh .edh-big-info { color: #5351FB; }
.edh .edh-tags { display: flex; flex-wrap: wrap; gap: 4px; min-width: 0; }
.edh .edh-tag { max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.edh .edh-tag-ok { color: #8A93A6; font-weight: 500; }

/* Points d'attention */
.edh .edh-attention { overflow: hidden; }
.edh .edh-pahead { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 14px 14px 10px; }
.edh .edh-filters { display: flex; flex-wrap: wrap; gap: 6px; padding: 0 14px 12px; }
.edh .edh-fl-mod { background: #EEEEFF; border-color: #CBCAFE; color: #342484; }
.edh .edh-al { width: 100%; border: 0; border-top: 1px solid #F0EEF7; background: transparent; text-align: left; cursor: pointer; }
.edh .edh-alt { flex: 1; min-width: 0; }
.edh .edh-sub { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.edh .edh-none { padding: 18px 14px 22px; color: #4A4766; border-top: 1px solid #F0EEF7; }
.edh .edh-more { width: 100%; height: 38px; border: 0; border-top: 1px solid #F0EEF7; background: #FAF9FD; color: #5351FB; font-weight: 600; cursor: pointer; }
.edh .edh-more:hover { background: #F3F3FF; }

/* Tableaux de bord des modules : circuit et écrans */
.edh .edh-steps { display: grid; grid-template-columns: repeat(var(--edh-steps, 4), minmax(0, 1fr)); gap: 10px; counter-reset: step; }
@media (max-width: 1100px) { .edh .edh-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.edh .edh-step { display: flex; flex-direction: column; gap: 6px; padding: 11px 12px; border: 1px solid #E9E7F3; border-radius: 12px; background: #FAF9FD; min-width: 0; }
.edh .edh-stephead { display: flex; align-items: center; gap: 8px; border: 0; background: transparent; padding: 0; cursor: pointer; text-align: left; min-width: 0; }
.edh .edh-stephead b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.edh .edh-stephead:hover b, .edh .edh-stephead:hover .edh-arr { color: #5351FB; }
.edh .edh-stepn { width: 22px; height: 22px; border-radius: 50%; flex: none; display: inline-flex; align-items: center; justify-content: center; background: #5351FB; color: #FFFFFF; font: 700 11px "Sora", sans-serif; }
.edh .edh-tagbtn { cursor: pointer; }
.edh .edh-tagbtn:hover { border-color: #CBCAFE; color: #342484; }
.edh .edh-screens { padding-bottom: 8px; }
/* Module dashboard: the screens under the grid, full width, groups in columns */
.edh .edh-screens-wide .edh-scgroups { columns: 4 220px; column-gap: 20px; padding: 0 0 4px; }
.edh .edh-screens-wide .edh-scgroup { break-inside: avoid; }
/* Circuit : 2 étapes par ligne quand le bloc est étroit (largeur réelle du bloc, pas de la fenêtre) */
.edh .edh-modules { container-type: inline-size; }
@container (max-width: 820px) { .edh .edh-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container (max-width: 420px) { .edh .edh-steps { grid-template-columns: minmax(0, 1fr); } }
.edh .edh-scgroup { display: flex; flex-direction: column; gap: 2px; padding: 6px 14px 10px; border-top: 1px solid #F0EEF7; }
.edh .edh-scgroup .edh-sec { margin: 4px 0 4px; }
.edh .edh-sc { border: 0; background: transparent; text-align: left; padding: 5px 8px; margin: 0 -8px; border-radius: 7px; color: #14122B; cursor: pointer; font-weight: 500; }
.edh .edh-sc:hover { background: #F3F3FF; color: #342484; }

/* Messages reçus */
.edh .edh-inbox-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.edh .edh-title { margin: 0; font: 700 22px/1.15 "Sora", sans-serif; letter-spacing: -.02em; color: #14122B; }
.edh .edh-btn { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px; border-radius: 8px; border: 1px solid #DDDDFE; background: #FFFFFF; color: #342484; font-weight: 600; cursor: pointer; }
.edh .edh-btn:hover { background: #F3F3FF; border-color: #CBCAFE; }
.edh .edh-btn-primary { background: #5351FB; border-color: #5351FB; color: #FFFFFF; }
.edh .edh-btn-primary:hover { background: #342484; border-color: #342484; color: #FFFFFF; }
.edh .edh-inbox-grid { display: grid; grid-template-columns: minmax(300px, 1fr) minmax(0, 1.6fr); gap: 16px; align-items: start; }
@media (max-width: 1000px) { .edh .edh-inbox-grid { grid-template-columns: minmax(0, 1fr); } }
.edh .edh-inbox-list { overflow: hidden; max-height: calc(100vh - 220px); overflow-y: auto; }
.edh .edh-inbox-filters { padding-top: 12px; align-items: center; }
.edh .edh-check { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: #4A4766; margin-left: 4px; }
.edh .edh-search { padding: 0 14px 10px; }
.edh .edh-search input { width: 100%; height: 32px; padding: 0 10px; border: 1px solid #E1DEEE; border-radius: 8px; font: inherit; background: #FAF9FD; }
.edh .edh-search input:focus { outline: none; border-color: #5351FB; box-shadow: 0 0 0 3px rgba(83, 81, 251, .14); background: #FFFFFF; }
.edh .edh-msg { width: 100%; display: flex; align-items: center; gap: 10px; padding: 10px 14px; border: 0; border-top: 1px solid #F0EEF7; background: transparent; text-align: left; cursor: pointer; }
.edh .edh-msg:hover { background: #FAF9FD; }
.edh .edh-msg.is-on { background: #EEEEFF; }
.edh .edh-msg.is-unread b { color: #14122B; }
.edh .edh-msg:not(.is-unread) b { font-weight: 500; color: #4A4766; }
.edh .edh-msgt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.edh .edh-msgtop { display: flex; justify-content: space-between; gap: 8px; }
.edh .edh-msgtop b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.edh .edh-msgsub { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12.5px; color: #4A4766; }
.edh .edh-msgsub .edh-mtag { margin: 0 4px 0 0; }
.edh .edh-av { width: 32px; height: 32px; border-radius: 50%; flex: none; display: inline-flex; align-items: center; justify-content: center; background: #EEEEFF; color: #342484; font: 700 11px "Sora", sans-serif; }
.edh .edh-av-lg { width: 40px; height: 40px; font-size: 13px; }
.edh .edh-dot { width: 8px; height: 8px; border-radius: 50%; background: #5351FB; flex: none; }
.edh .edh-inbox-read { padding: 16px 18px 20px; min-height: 320px; }
.edh .edh-read-head { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding-bottom: 12px; border-bottom: 1px solid #F0EEF7; }
.edh .edh-read-from { display: flex; align-items: center; gap: 10px; min-width: 0; }
.edh .edh-read-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.edh .edh-read-subject { margin: 14px 0 8px; font: 600 17px/1.3 "Sora", sans-serif; color: #14122B; }
.edh .edh-read-body { white-space: pre-wrap; line-height: 1.6; color: #14122B; }
.edh .edh-read-file { margin-top: 14px; padding: 8px 10px; border-radius: 8px; background: #F3F3FF; color: #342484; font-size: 12.5px; }
.edh .edh-error { background: #FCEBEE; color: #9A1C31; }

/* Aujourd'hui */
.edh .edh-today { overflow: hidden; }
.edh .edh-evgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; padding: 0 14px 14px; }
.edh .edh-ev { display: flex; flex-direction: column; gap: 4px; padding: 10px 12px; border-radius: 10px; background: #FFFFFF; border: 1px solid #E9E7F3; color: #14122B; text-align: left; cursor: pointer; min-width: 0; }
.edh .edh-ev:hover { border-color: #CBCAFE; box-shadow: 0 10px 24px -18px rgba(36, 28, 110, .5); }
.edh .edh-ev b, .edh .edh-ev .edh-small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.edh .edh-evwhen { font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: #5351FB; }

/* Indicateurs */
.edh .edh-unit { font-size: 13px; margin-left: 4px; }
.edh .edh-delta-good { color: #166534; }
.edh .edh-delta-bad { color: #9A1C31; }
.edh .edh-delta-neutral { color: #4A4766; font-weight: 500; }
.edh .edh-hbl { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.edh .edh-hbv { text-align: right; }

/* Ruban masqué sur l'accueil (classe posée par home-v6.js) */
html.ed6-home .main-ribbon { display: none !important; }

/* L'accueil occupe toute la zone de l'écran (vue tableau de bord XAF) */
.dashboard-view:has(> * .edh),
.xaf-dashboard-view:has(.edh) { background: #F5F4FA; }

/* Pages Razor : pas de carte XAF autour de la page, le fond de la zone de travail suffit */
html.ed6-home .main-content .detail-view-content > .dxbl-fl,
html.ed6-home .main-content .detail-view-content > layout-editor > .dxbl-fl {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
}
html.ed6-home .main-content .edh { background: transparent; padding: 4px 0 24px; }
/* Pages à titre (Nouveau message, Messages reçus / envoyés, Actualités, Mes notifications) :
   le titre est hors carte, il prend de l'air par rapport au bord de l'onglet */
html.ed6-home .main-content .edh:has(> .edh-inbox-head) { padding: 10px 4px 28px; }
/* Fond de la fiche XAF qui porte une page Razor : celui de l'onglet (pas de panneau blanc collé aux bords) */
html.ed6-home .main-content .detail-view-content:has(.edh) { background: transparent !important; }

/* ── Éditeur de message (EducatedCompose.razor) : « Nouveau message » et « Répondre » ── */
.edh .edh-compose-card { padding: 18px 20px; max-width: 980px; }
.edh .edh-cp { display: flex; flex-direction: column; gap: 12px; }
.edh .edh-cp-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.edh .edh-cp-test { display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border-radius: 99px; background: #FFF4E5; color: #9A4A00; font-size: 11.5px; font-weight: 600; }
.edh .edh-cp-row { display: flex; align-items: flex-start; gap: 12px; }
.edh .edh-cp-lbl { flex: none; width: 88px; padding-top: 7px; font-size: 12px; font-weight: 600; color: #6B6889; }
.edh .edh-cp-row > :not(.edh-cp-lbl) { min-width: 0; }
.edh .edh-cp-input, .edh .edh-cp-select, .edh .edh-cp-notif textarea, .edh .edh-cp-find input {
    width: 100%; min-height: 34px; padding: 0 10px; border: 1px solid #E1DEEE; border-radius: 8px; font: inherit; color: #14122B; background: #FFFFFF; }
.edh .edh-cp-select { max-width: 420px; }
.edh .edh-cp-groups { flex: 1; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.edh .edh-cp-groups .edh-cp-select { flex: 1 1 220px; width: auto; max-width: 340px; }
.edh .edh-cp-all { height: 34px; }
.edh .edh-cp-all i { font-style: normal; font-weight: 700; opacity: .7; }
.edh .edh-cp-all.on, .edh .edh-cp-all.on:disabled { background: #E8F6EF; border-color: #BFE6D1; color: #0E6B45; opacity: 1; }
.edh .edh-cp-notif textarea { padding: 7px 10px; resize: vertical; line-height: 1.45; }
.edh .edh-cp-input:focus, .edh .edh-cp-select:focus, .edh .edh-cp-notif textarea:focus, .edh .edh-cp-find input:focus {
    outline: none; border-color: #5351FB; box-shadow: 0 0 0 3px rgba(83, 81, 251, .14); }
.edh .edh-cp-input, .edh .edh-cp-notif-field, .edh .edh-cp-chips { flex: 1; }
.edh .edh-cp-notif-field { display: flex; flex-direction: column; gap: 4px; }
.edh .edh-cp-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 3px; min-height: 34px; border: 1px solid #E1DEEE; border-radius: 8px; background: #FFFFFF; }
.edh .edh-cp-chip { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 4px 0 10px; border-radius: 99px; background: #EEEEFF; color: #342484; font-size: 12px; font-weight: 600; white-space: nowrap; }
.edh .edh-cp-chip.is-class { background: #E8F6EF; color: #0E6B45; }
.edh .edh-cp-chip i { font-style: normal; font-weight: 700; opacity: .75; }
.edh .edh-cp-chip button { width: 20px; height: 20px; border: 0; border-radius: 50%; background: transparent; color: inherit; font-size: 14px; line-height: 1; cursor: pointer; }
.edh .edh-cp-chip button:hover { background: rgba(20, 18, 43, .08); }
.edh .edh-cp-find { position: relative; flex: 1; min-width: 220px; }
.edh .edh-cp-find input { border: 0; min-height: 26px; padding: 0 6px; box-shadow: none !important; }
.edh .edh-cp-results { position: absolute; z-index: 20; top: calc(100% + 6px); left: 0; right: 0; max-height: 280px; overflow-y: auto; padding: 4px; border: 1px solid #E1DEEE; border-radius: 10px; background: #FFFFFF; box-shadow: 0 10px 30px rgba(20, 18, 43, .12); }
.edh .edh-cp-results button { display: flex; align-items: baseline; gap: 8px; width: 100%; padding: 7px 10px; border: 0; border-radius: 7px; background: transparent; text-align: left; font: inherit; color: #14122B; cursor: pointer; }
.edh .edh-cp-results button:hover { background: #F3F3FF; }
/* bloc simple : DxHtmlEditor insère ses balises de scripts dans le conteneur (pas de flex/gap) */
.edh .edh-cp-editor { display: block; }
.edh .edh-cp-editor > dxbl-resource-script, .edh .edh-cp-editor > script { display: none !important; }
.edh .edh-cp-editor .dxbl-html-editor { border-radius: 10px; }
.edh .edh-cp-note { padding: 6px 0 0 2px; }
.edh .edh-cp-opts { align-items: center; flex-wrap: wrap; }
.edh .edh-cp-opts .edh-cp-lbl { padding-top: 0; }
.edh .edh-cp-file { margin-left: auto; }
.edh .edh-btn-sm { height: 28px; font-size: 12px; position: relative; overflow: hidden; }
.edh .edh-cp-hidden { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.edh .edh-cp-error { padding: 8px 12px; border-radius: 8px; background: #FCEBEE; color: #9A1C31; font-size: 12.5px; }
.edh .edh-cp-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding-top: 12px; border-top: 1px solid #F0EEF7; }
.edh .edh-cp-foot-actions { display: flex; gap: 8px; }
.edh .edh-btn:disabled { opacity: .5; cursor: default; }
.edh .edh-cp-done { display: flex; align-items: flex-start; gap: 12px; padding: 14px; border-radius: 12px; background: #F1FAF5; }
.edh .edh-cp-done-ico { flex: none; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: #1E9E63; color: #FFFFFF; }
.edh .edh-cp-done-actions { margin-left: auto; display: flex; gap: 8px; flex: none; }
.edh .edh-cp-done-actions .edh-btn, .edh .edh-cp-foot-actions .edh-btn { white-space: nowrap; }
/* Dans le volet de lecture de « Messages reçus » */
.edh .edh-read-reply { margin-top: 16px; padding-top: 14px; border-top: 1px dashed #DDDAEE; }
.edh .edh-read-body.is-quoted { max-height: 140px; overflow: auto; padding: 8px 12px; border-left: 3px solid #DDDDFE; background: #FAF9FD; border-radius: 0 8px 8px 0; color: #4A4766; }
.edh .edh-cp-embedded .edh-cp-lbl { width: 76px; }
@media (max-width: 700px) {
    .edh .edh-cp-row { flex-direction: column; gap: 4px; }
    .edh .edh-cp-lbl { width: auto; padding-top: 0; }
}

/* ── Messages envoyés (EducatedOutbox.razor) ── */
.edh .edh-ob-head-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.edh .edh-ob-head-actions .edh-cp-select { width: auto; }
.edh .edh-ob-rate { flex: none; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%;
    background: conic-gradient(#1E9E63 var(--r, 0%), #ECEAF4 0); position: relative; }
.edh .edh-ob-rate::before { content: ""; position: absolute; inset: 4px; border-radius: 50%; background: #FFFFFF; }
.edh .edh-msg.is-on .edh-ob-rate::before { background: #F3F3FF; }
.edh .edh-ob-rate b { position: relative; font-size: 10.5px; color: #14122B; }
.edh .edh-mtag-sms { background: #FFF4E5; color: #9A4A00; }
.edh .edh-ob-body { line-height: 1.6; color: #14122B; overflow-wrap: anywhere; }
.edh .edh-ob-body p { margin: 0 0 8px; }
.edh .edh-ob-body ul, .edh .edh-ob-body ol { margin: 0 0 8px; padding-left: 22px; }
.edh .edh-ob-notif { margin-top: 10px; padding: 8px 10px; border-radius: 8px; background: #FAF9FD; color: #4A4766; font-size: 12.5px; }
.edh .edh-ob-notif .edh-muted { display: block; margin-bottom: 2px; font-weight: 600; }
.edh .edh-ob-rcpt-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 18px 0 8px; padding-top: 14px; border-top: 1px solid #F0EEF7; }
.edh .edh-ob-rcpts { display: flex; flex-direction: column; max-height: 420px; overflow-y: auto; }
.edh .edh-ob-rcpt { display: flex; align-items: center; gap: 10px; padding: 6px 2px; border-bottom: 1px solid #F5F4FA; }
.edh .edh-ob-rname { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.edh .edh-ob-read { font-size: 11.5px; font-weight: 600; color: #0E6B45; white-space: nowrap; }
.edh .edh-ob-unread { font-size: 11.5px; font-weight: 600; color: #9A4A00; white-space: nowrap; }

/* ── Contexte de l'expéditeur (« Messages reçus ») ── */
.edh .edh-ctx { margin-top: 12px; padding: 10px 12px; border: 1px solid #ECEAF4; border-radius: 12px; background: #FAF9FD; display: flex; flex-direction: column; gap: 8px; }
.edh .edh-ctx-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.edh .edh-ctx-fact { display: flex; flex-direction: column; gap: 1px; padding: 6px 10px; border-radius: 9px; background: #FFFFFF; border-left: 3px solid #E1DEEE; min-width: 0; }
.edh .edh-ctx-fact b { font-size: 13px; color: #14122B; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.edh .edh-ctx-fact.is-ok { border-left-color: #1E9E63; }
.edh .edh-ctx-fact.is-warn { border-left-color: #FF5D25; }
.edh .edh-ctx-fact.is-bad { border-left-color: #B4233B; }
.edh .edh-ctx-fact.is-bad b { color: #9A1C31; }
.edh .edh-ctx-links { display: flex; flex-wrap: wrap; gap: 6px; }
/* Actualités (EducatedNews.razor, maquette XafActualites) */
.edh .edh-nw-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.edh .edh-nw-bar .edh-filters { padding: 0; }
.edh .edh-nw-find input { width: 280px; max-width: 100%; height: 32px; padding: 0 10px; border: 1px solid #E1DEEE; border-radius: 8px; font: inherit; background: #FFFFFF; }
.edh .edh-nw-find input:focus { outline: none; border-color: #5351FB; box-shadow: 0 0 0 3px rgba(83, 81, 251, .14); }
.edh .edh-nw-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; align-items: start; }
.edh .edh-nw-grid.has-panel { grid-template-columns: minmax(0, 1fr) minmax(360px, 440px); }
@media (max-width: 1000px) { .edh .edh-nw-grid.has-panel { grid-template-columns: minmax(0, 1fr); } }
.edh .edh-nw-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; align-content: start; }
.edh .edh-nw-cards > .edh-empty { grid-column: 1 / -1; }
.edh .edh-nw-card { display: flex; flex-direction: column; padding: 0; overflow: hidden; text-align: left; cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.edh .edh-nw-card:hover { border-color: #CBCAFE; box-shadow: 0 10px 24px -18px rgba(36, 28, 110, .5); }
.edh .edh-nw-card.is-on { border-color: #5351FB; box-shadow: 0 0 0 3px rgba(83, 81, 251, .14); }
.edh .edh-nw-cover { position: relative; display: grid; place-items: center; height: 132px; background: #F3F2F9; color: #A09CB8; overflow: hidden; }
.edh .edh-nw-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.edh .edh-nw-cover.is-empty { background: linear-gradient(135deg, #EEEEFF 0%, #FFF1E8 100%); color: #8A86C9; }
.edh .edh-nw-play { position: absolute; right: 10px; bottom: 10px; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: rgba(20, 18, 43, .72); color: #FFFFFF; font-size: 11px; }
.edh .edh-nw-body { display: flex; flex-direction: column; gap: 6px; padding: 12px 14px 14px; min-width: 0; }
.edh .edh-nw-meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.edh .edh-nw-subject { font: 600 14px/1.3 "Sora", sans-serif; color: #14122B; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.edh .edh-nw-excerpt { color: #4A4766; font-size: 12.5px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.edh .edh-nw-tags .edh-mtag { margin: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.edh .edh-nw-st { display: inline-flex; align-items: center; gap: 5px; height: 20px; padding: 0 8px; border-radius: 99px; font-size: 11px; font-weight: 600; white-space: nowrap; }
.edh .edh-nw-st::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.edh .edh-nw-st.is-ok { background: #E8F6EF; color: #0E6B45; }
.edh .edh-nw-st.is-wait { background: #FFF4E5; color: #9A4A00; }
.edh .edh-nw-panel { position: sticky; top: 12px; display: flex; flex-direction: column; gap: 12px; padding: 16px; max-height: calc(100vh - 150px); overflow-y: auto; }
/* panneau défilant : les blocs gardent leur hauteur (sinon la zone image, overflow hidden, tombait à 0) */
.edh .edh-nw-panel > * { flex-shrink: 0; }
.edh .edh-nw-phead { display: flex; align-items: center; gap: 10px; }
.edh .edh-nw-phead .edh-h2 { flex: 1; }
.edh .edh-nw-x { width: 28px; height: 28px; border: 0; border-radius: 7px; background: transparent; font-size: 18px; line-height: 1; color: #6E6A8A; cursor: pointer; }
.edh .edh-nw-x:hover { background: #F3F2F9; color: #14122B; }
.edh .edh-nw-img { position: relative; border-radius: 12px; overflow: hidden; }
.edh .edh-nw-img > img { display: block; width: 100%; max-height: 220px; object-fit: cover; }
.edh .edh-nw-img-actions { position: absolute; right: 8px; bottom: 8px; display: flex; gap: 6px; }
.edh .edh-nw-drop { position: relative; display: flex; align-items: center; gap: 12px; padding: 18px 16px; border: 1.5px dashed #CBCAFE; border-radius: 12px; background: #FAF9FD; color: #5351FB; cursor: pointer; }
.edh .edh-nw-drop:hover { background: #F3F3FF; }
.edh .edh-nw-drop .edh-small { color: #6E6A8A; }
.edh .edh-nw-field { display: flex; flex-direction: column; gap: 5px; }
.edh .edh-nw-field > span:first-child { display: flex; align-items: center; justify-content: space-between; font-size: 12px; font-weight: 600; color: #6B6889; }
.edh .edh-nw-field textarea { width: 100%; padding: 7px 10px; border: 1px solid #E1DEEE; border-radius: 8px; font: inherit; color: #14122B; background: #FFFFFF; resize: vertical; line-height: 1.45; }
.edh .edh-nw-field textarea:focus { outline: none; border-color: #5351FB; box-shadow: 0 0 0 3px rgba(83, 81, 251, .14); }
.edh .edh-nw-count { font-style: normal; font-weight: 500; color: #8A86A6; }
.edh .edh-nw-count.is-over { color: #B4233B; }
.edh .edh-nw-link { align-self: flex-start; border: 0; background: transparent; padding: 0; color: #5351FB; font-size: 12px; font-weight: 600; cursor: pointer; }
.edh .edh-nw-link:hover { text-decoration: underline; }
.edh .edh-nw-video { position: relative; display: block; border-radius: 10px; overflow: hidden; }
.edh .edh-nw-video img { display: block; width: 100%; max-height: 180px; object-fit: cover; }
.edh .edh-nw-video span { position: absolute; inset: 0; margin: auto; display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: rgba(20, 18, 43, .72); color: #FFFFFF; }
.edh .edh-nw-file { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.edh .edh-nw-notify { display: flex; flex-direction: column; gap: 6px; padding: 12px; border-radius: 10px; background: #FAF9FD; border: 1px solid #F0EEF7; }
.edh .edh-nw-notify-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.edh .edh-nw-aud { display: flex; flex-wrap: wrap; gap: 10px; }
.edh .edh-nw-aud .edh-check { margin-left: 0; color: #14122B; font-size: 12.5px; }
.edh .edh-nw-info { padding: 8px 12px; border-radius: 8px; background: #E8F6EF; color: #0E6B45; font-size: 12.5px; }
.edh .edh-nw-foot-left { display: flex; align-items: center; gap: 10px; }
.edh .edh-nw-danger { border-color: #F3C4CD; color: #9A1C31; }
.edh .edh-nw-danger:hover { background: #FCEBEE; border-color: #E79AA8; }

/* « Concernant : Nom » — messages d'une personne, ouverts depuis le bandeau d'une fiche */
.edh .edh-fl-person { background: #EEEEFF; border-color: #CBCAFE; color: #342484; cursor: default; padding-right: 4px; }
    .edh .edh-fl-person button { width: 20px; height: 20px; border: 0; border-radius: 99px; background: transparent; color: inherit; font: 600 14px/1 inherit; cursor: pointer; }
    .edh .edh-fl-person button:hover { background: #DDDDFE; }

/* ════ Assiduité · Nom (EducatedAttendance.razor) — récapitulatif d'un apprenant ════ */
.edh.edh-at { display: flex; flex-direction: column; gap: 14px; }
.edh .edh-at-head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.edh .edh-at-photo { flex: none; width: 52px; height: 52px; border-radius: 14px; background: linear-gradient(160deg, #DDDDFE, #EEEEFF); display: grid; place-items: center; color: #342484; font: 700 18px "Sora", sans-serif; object-fit: cover; }
.edh .edh-at-t { flex: 1 1 260px; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.edh .edh-at-actions { display: flex; flex-wrap: wrap; gap: 6px; }

.edh .edh-at-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
@media (max-width: 900px) { .edh .edh-at-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.edh .edh-at-kpi { min-height: 104px; padding: 12px 14px; display: flex; flex-direction: column; gap: 6px; background: #FFFFFF; border: 1px solid #E9E7F3; border-radius: 12px; min-width: 0; }
    .edh .edh-at-kpi > b { font: 700 22px/1.2 "Sora", sans-serif; color: #14122B; }
    .edh .edh-at-kpi > b small { font: 600 13px "Geist", sans-serif; color: #6E6A8A; }
    .edh .edh-at-kpi.is-bad { border-color: #F6D5DB; background: #FFF8F9; }
    .edh .edh-at-kpi.is-warn { border-color: #FBD9C9; background: #FFF8F4; }
    .edh .edh-at-kpi .ed6p-bar i { background: #1E9E63; }
    .edh .edh-at-kpi.is-warn .ed6p-bar i { background: #FF5D25; }
    .edh .edh-at-kpi.is-bad .ed6p-bar i { background: #B4233B; }
.edh .edh-at-kh { display: flex; justify-content: space-between; gap: 8px; font-size: 12px; font-weight: 600; color: #6E6A8A; }
    .edh .edh-at-kh em { font-style: normal; }
    .edh .edh-at-kpi.is-ok .edh-at-kh em { color: #0E6B45; }
    .edh .edh-at-kpi.is-warn .edh-at-kh em { color: #9A3412; }
    .edh .edh-at-kpi.is-bad .edh-at-kh em { color: #9A1C31; }
.edh .edh-at-ks { font-size: 12px; color: #4A4766; overflow: hidden; text-overflow: ellipsis; }

.edh .edh-at-grid { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(280px, 1fr); gap: 12px; align-items: start; }
@media (max-width: 1100px) { .edh .edh-at-grid { grid-template-columns: minmax(0, 1fr); } }
.edh .edh-at-sec { padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.edh .edh-at-sechead { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
    .edh .edh-at-sechead h2 { margin: 0; font: 700 15px "Sora", sans-serif; color: #14122B; }

.edh .edh-at-table { width: 100%; border-collapse: collapse; font-size: 13px; }
    .edh .edh-at-table th { text-align: left; font-size: 11.5px; font-weight: 600; color: #6E6A8A; padding: 6px 8px; border-bottom: 1px solid #E9E7F3; white-space: nowrap; }
    .edh .edh-at-table td { padding: 8px; border-bottom: 1px solid #EFEEF6; color: #2B2846; vertical-align: middle; }
    .edh .edh-at-table tr:last-child td { border-bottom: 0; }
    .edh .edh-at-table .n { text-align: right; font-variant-numeric: tabular-nums; width: 1%; white-space: nowrap; }
    .edh .edh-at-table .bar { width: 34%; min-width: 150px; }
    .edh .edh-at-table td small { display: block; font-size: 11.5px; color: #6E6A8A; }
    .edh .edh-at-table tr.is-bad td:first-child { box-shadow: inset 3px 0 0 #B4233B; font-weight: 600; }
    .edh .edh-at-table tr.is-warn td:first-child { box-shadow: inset 3px 0 0 #FF5D25; }
.edh .edh-at-rate { display: flex; align-items: center; gap: 8px; }
    .edh .edh-at-rate .ed6p-bar { flex: 1; }
    .edh .edh-at-rate b { min-width: 44px; text-align: right; font-size: 12.5px; font-variant-numeric: tabular-nums; }
    .edh .edh-at-table tr .ed6p-bar i { background: #1E9E63; }
    .edh .edh-at-table tr.is-warn .ed6p-bar i { background: #FF5D25; }
    .edh .edh-at-table tr.is-bad .ed6p-bar i { background: #B4233B; }
    .edh .edh-at-table tr.is-bad .edh-at-rate b { color: #9A1C31; }
.edh .edh-at-events td.when { white-space: nowrap; color: #4A4766; }
.edh .edh-at-tag { display: inline-block; margin: 1px 4px 1px 0; padding: 1px 8px; border-radius: 99px; font-size: 11.5px; font-weight: 600; white-space: nowrap; }
    .edh .edh-at-tag.is-bad { background: #FCEBEE; color: #9A1C31; }
    .edh .edh-at-tag.is-warn { background: #FFEDE5; color: #9A3412; }
    .edh .edh-at-tag.is-gray { background: #F3F2F9; color: #4A4766; }

/* Par mois : colonnes (hauteur = taux), filet du seuil */
.edh .edh-at-months { position: relative; display: flex; align-items: flex-end; gap: 6px; height: 170px; padding-top: 16px; }
.edh .edh-at-month { flex: 1; min-width: 26px; height: 100%; display: flex; flex-direction: column; align-items: center; gap: 3px; }
.edh .edh-at-mv { font-size: 11.5px; font-weight: 600; color: #4A4766; }
.edh .edh-at-mcol { position: relative; flex: 1; width: 100%; max-width: 34px; display: flex; align-items: flex-end; background: #F3F2F9; border-radius: 6px; overflow: hidden; }
    .edh .edh-at-mcol::after { content: ""; position: absolute; z-index: 1; left: 0; right: 0; bottom: var(--th, 0); border-top: 1.5px dashed #B4233B; opacity: .6; }
    .edh .edh-at-mcol i { display: block; width: 100%; min-height: 2px; background: #1E9E63; border-radius: 6px 6px 0 0; }
    .edh .edh-at-month.is-warn .edh-at-mcol i { background: #FF5D25; }
    .edh .edh-at-month.is-bad .edh-at-mcol i { background: #B4233B; }
.edh .edh-at-ml { font-size: 11.5px; color: #6E6A8A; text-transform: capitalize; }
.edh .edh-at-legend { display: inline-flex; align-items: center; gap: 6px; }
    .edh .edh-at-legend i { width: 16px; border-top: 1px dashed #B4233B; }
.edh .edh-at-none { padding: 22px; display: flex; flex-direction: column; gap: 6px; }
.edh .edh-at-sk { background: #F3F2F9; border-color: transparent; animation: ed6p-sk 1.3s ease-in-out infinite; }

/* ════ Pilotage des absences (EducatedAbsencePilot.razor) — direction ════ */
.edh.edh-ap { display: flex; flex-direction: column; gap: 12px; }
.edh .edh-ap-head { display: flex; align-items: flex-end; gap: 8px; flex-wrap: wrap; }
.edh .edh-ap-t { flex: 1 1 100%; display: flex; flex-direction: column; gap: 3px; margin-bottom: 2px; }   /* titre seul, filtres en dessous */
.edh .edh-ap-head .edh-cp-select { height: 32px; max-width: 220px; }
.edh .edh-ap-seg { display: inline-flex; padding: 2px; border-radius: 9px; background: #EFEEF6; }
    .edh .edh-ap-seg button { height: 28px; padding: 0 11px; border: 0; border-radius: 7px; background: transparent; font: 500 12.5px "Geist", sans-serif; color: #4A4766; cursor: pointer; }
    .edh .edh-ap-seg button.on { background: #FFFFFF; color: #14122B; font-weight: 600; box-shadow: 0 1px 2px rgba(20, 18, 43, .12); }
/* Période « Dates » : premier et dernier jour */
.edh .edh-ap-date { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 4px 0 10px; border: 1px solid #E1DEEE; border-radius: 8px; background: #FFFFFF; font-size: 12.5px; color: #6E6A8A; }
    .edh .edh-ap-date input { height: 28px; border: 0; background: transparent; font: 500 13px "Geist", sans-serif; color: #14122B; }
    .edh .edh-ap-date input:focus { outline: none; }
    .edh .edh-ap-date:focus-within { border-color: #5351FB; box-shadow: 0 0 0 3px rgba(83, 81, 251, .14); }

.edh .edh-ap-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
@media (max-width: 1100px) { .edh .edh-ap-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.edh .edh-ap-k { min-height: 106px; padding: 12px 14px; display: flex; flex-direction: column; gap: 5px; background: #FFFFFF; border: 1px solid #E9E7F3; border-radius: 12px; min-width: 0; }
    .edh .edh-ap-k > b { font: 700 22px/1.2 "Sora", sans-serif; color: #14122B; }
    .edh .edh-ap-k > b small { font: 600 12.5px "Geist", sans-serif; color: #6E6A8A; }
    .edh .edh-ap-k.is-bad { border-color: #F6D5DB; background: #FFF8F9; }
    .edh .edh-ap-k.is-warn { border-color: #FBD9C9; background: #FFF8F4; }
    .edh .edh-ap-k .ed6p-bar i { background: #1E9E63; }
    .edh .edh-ap-k.is-warn .ed6p-bar i { background: #FF5D25; }
    .edh .edh-ap-k.is-bad .ed6p-bar i { background: #B4233B; }
    .edh .edh-ap-k .ed6p-bar.is-brand i { background: #1E9E63; }
.edh .edh-ap-kh { display: flex; justify-content: space-between; gap: 8px; font-size: 12px; font-weight: 600; color: #6E6A8A; }
    .edh .edh-ap-kh em { font-style: normal; text-align: right; }
    .edh .edh-ap-kh em.up, .edh .edh-ap-kh em.bad { color: #9A1C31; }
    .edh .edh-ap-kh em.down, .edh .edh-ap-kh em.ok { color: #0E6B45; }
.edh .edh-ap-ks { font-size: 12px; color: #4A4766; }

.edh .edh-ap-row { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); gap: 12px; align-items: start; }
    .edh .edh-ap-row.is-half { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
@media (max-width: 1100px) { .edh .edh-ap-row, .edh .edh-ap-row.is-half { grid-template-columns: minmax(0, 1fr); } }
.edh .edh-ap-sec { padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.edh .edh-ap-sh { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
    .edh .edh-ap-sh h2 { margin: 0; font: 700 15px "Sora", sans-serif; color: #14122B; }
.edh .edh-ap-th { color: #B4233B; }
.edh .edh-ap-link { border: 0; background: none; padding: 0; font: 600 12px "Geist", sans-serif; color: #5351FB; cursor: pointer; }
    .edh .edh-ap-link:hover { color: #342484; text-decoration: underline; }
.edh .edh-ap-chart { width: 100%; height: 190px; display: block; }

.edh .edh-ap-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
    .edh .edh-ap-table th { text-align: left; font-size: 11.5px; font-weight: 600; color: #6E6A8A; padding: 6px 8px; border-bottom: 1px solid #E9E7F3; white-space: nowrap; }
    .edh .edh-ap-table td { padding: 7px 8px; border-bottom: 1px solid #EFEEF6; vertical-align: middle; color: #2B2846; }
    .edh .edh-ap-table tr:last-child td { border-bottom: 0; }
    .edh .edh-ap-table td small { display: block; font-size: 11px; color: #6E6A8A; }
    .edh .edh-ap-table .n { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; width: 1%; }
    .edh .edh-ap-table .bar { width: 26%; min-width: 120px; }
    .edh .edh-ap-table td.up { color: #9A1C31; }
    .edh .edh-ap-table td.down { color: #0E6B45; }
    .edh .edh-ap-table tr.is-link { cursor: pointer; }
    .edh .edh-ap-table tr.is-link:hover td { background: #F6F6FF; }
    .edh .edh-ap-table tr.is-on td { background: #EEEEFF; }
    .edh .edh-ap-table tr.is-on td:first-child { box-shadow: inset 3px 0 0 #5351FB; }
.edh .edh-ap-table .ed6p-bar i, .edh .edh-ap-table .ed6p-bar.is-ok i { background: #1E9E63; }
.edh .edh-ap-table .ed6p-bar.is-warn i { background: #FF5D25; }
.edh .edh-ap-table .ed6p-bar.is-bad i { background: #B4233B; }
.edh .edh-ap-rate { display: flex; align-items: center; gap: 8px; }
    .edh .edh-ap-rate .ed6p-bar { flex: 1; }
    .edh .edh-ap-rate b { min-width: 46px; text-align: right; font-size: 12px; }
.edh .edh-ap-tag { display: inline-block; min-width: 24px; padding: 1px 8px; border-radius: 99px; font-size: 11.5px; font-weight: 600; text-align: center; white-space: nowrap; }
    .edh .edh-ap-tag.bad { background: #FCEBEE; color: #9A1C31; }
    .edh .edh-ap-tag.warn { background: #FFEDE5; color: #9A3412; }
    .edh .edh-ap-tag.none { background: #F3F2F9; color: #6E6A8A; }

.edh .edh-ap-students { display: flex; flex-direction: column; }
    .edh .edh-ap-students.is-all { max-height: 520px; overflow-y: auto; }
.edh .edh-ap-st { display: flex; align-items: center; gap: 10px; padding: 7px 4px; border: 0; border-bottom: 1px solid #EFEEF6; background: transparent; text-align: left; font: inherit; color: #14122B; cursor: pointer; border-radius: 6px; }
    .edh .edh-ap-st:last-child { border-bottom: 0; }
    .edh .edh-ap-st:hover { background: #F6F6FF; }
    .edh .edh-ap-st .edh-av { flex: none; width: 28px; height: 28px; font-size: 10px; }
.edh .edh-ap-stt { flex: 1; min-width: 0; display: flex; flex-direction: column; }
    .edh .edh-ap-stt b { font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.edh .edh-ap-go { flex: none; font-size: 12px; font-weight: 600; color: #5351FB; white-space: nowrap; }

.edh .edh-ap-heat { width: 100%; border-collapse: separate; border-spacing: 3px; font-size: 11.5px; }
    .edh .edh-ap-heat th { font-weight: 600; color: #6E6A8A; text-align: center; white-space: nowrap; }
    .edh .edh-ap-heat tbody th { text-align: left; width: 40px; }
    .edh .edh-ap-heat td span { display: block; height: 26px; line-height: 26px; border-radius: 6px; text-align: center; color: #14122B; font-variant-numeric: tabular-nums; }
.edh .edh-ap-none { padding: 22px; display: flex; flex-direction: column; gap: 6px; }
.edh .edh-ap-sk { background: #F3F2F9; border-color: transparent; animation: ed6p-sk 1.3s ease-in-out infinite; }
    .edh .edh-ap-kpis .edh-ap-sk { min-height: 106px; border-radius: 12px; }
.edh .edh-ap-foot { padding: 0 2px; }


/* ════════════════════════════════════════════════════════════════════════════
   ACCUEIL « F » (maquette validée AccueilF.dc.html, 27/10/2026) — préfixe edf-
   Bandeau blanc · compteurs-filtres · 8 tuiles de module · 6 indicateurs à
   mini-graphique · « À traiter » · « Aujourd'hui ».
   Règles de couleur : base neutre ; une couleur par état (critique #C0394F,
   à surveiller #E8692F, info #5351FB, à jour #2F8F5B), toujours en petit ;
   l'historique des graphiques en lavande, seule la valeur courante est colorée.
   ════════════════════════════════════════════════════════════════════════════ */
.edh.edf { gap: 12px; padding: 12px 16px 24px; container-type: inline-size; container-name: edf; }
html.ed6-home .main-content .edh.edf { padding: 4px 0 24px; }
.edf .edf-card { background: #FFFFFF; border: 1px solid #E7E6F0; border-radius: 16px; box-shadow: 0 1px 2px rgba(20,18,43,.04); }
.edf button.edf-card, .edf .edf-al, .edf .edf-ev { text-align: left; cursor: pointer; font: inherit; color: inherit; }
.edf .edf-mut { color: #8A87A3; }
.edf .edf-sec { font-size: 11.5px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; color: #8A87A3; }

/* Bandeau */
.edf .edf-banner { padding: 18px 24px 16px; display: flex; flex-direction: column; gap: 12px; border-radius: 18px; }
.edf .edf-bh { display: flex; align-items: center; gap: 16px; }
.edf .edf-bt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.edf .edf-title { margin: 0; font: 700 26px/1.15 "Geist", system-ui, sans-serif; letter-spacing: -.02em; color: #14122B; }
.edf .edf-name { background: linear-gradient(100deg, #FF5D25, #FFA800); -webkit-background-clip: text; background-clip: text; color: transparent; }
.edf .edf-t2 { color: #342484; }
.edf .edf-lead { margin: 0; font-size: 14px; color: #4A4766; }
.edf .edf-lead b, .edf .edf-crit { color: #9A1C31; }
/* « Commencer » + actions rapides */
.edf .edf-qa { position: relative; flex: none; display: inline-flex; height: 36px; border-radius: 10px; background: linear-gradient(135deg, #5351FB, #342484); box-shadow: 0 8px 18px -12px rgba(52,36,132,.8); }
.edf .edf-qa button { border: 0; background: transparent; color: #FFFFFF; font: 600 13px "Geist", sans-serif; cursor: pointer; display: inline-flex; align-items: center; gap: 7px; }
.edf .edf-qa-main { padding: 0 14px; }
.edf .edf-qa-main:disabled { opacity: .55; cursor: default; }
.edf .edf-qa-more { padding: 0 10px; border-left: 1px solid rgba(255,255,255,.25) !important; }
.edf .edf-qa-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 30; min-width: 220px; padding: 6px; border-radius: 12px; background: #FFFFFF; border: 1px solid #E7E6F0; box-shadow: 0 18px 40px -20px rgba(20,18,43,.45); display: flex; flex-direction: column; }
.edf .edf-qa-menu button { color: #14122B; font-weight: 500; padding: 8px 10px; border-radius: 8px; text-align: left; }
.edf .edf-qa-menu button:hover { background: #F3F2F9; }
/* Compteurs = filtres de la liste de travail */
.edf .edf-flt { display: flex; flex-wrap: wrap; gap: 6px; }
.edf .edf-flt button { display: inline-flex; align-items: center; gap: 7px; height: 30px; padding: 0 12px; border-radius: 9px; border: 1px solid #E7E6F0; background: #FFFFFF; font: 500 13px "Geist", sans-serif; color: #4A4766; cursor: pointer; }
.edf .edf-flt button b { font: 700 14px "Sora", sans-serif; color: #14122B; }
.edf .edf-flt button i { width: 8px; height: 8px; border-radius: 50%; }
.edf .edf-flt button:hover { border-color: #CBCAFE; }
.edf .edf-flt button.on { border-color: #342484; box-shadow: inset 0 0 0 1px #342484; color: #14122B; }
.edf .edf-flt button.dis { opacity: .5; }
.edf .edf-flt .edf-flt-mod { background: #F3F2F9; color: #342484; font-weight: 600; }

/* Tuiles de module */
.edf .edf-tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.edf .edf-tile { display: flex; align-items: center; gap: 12px; min-height: 66px; padding: 11px 14px; transition: border-color .12s, box-shadow .12s, transform .12s; }
.edf .edf-tile:hover { border-color: #CBCAFE; box-shadow: 0 1px 2px rgba(20,18,43,.04), 0 14px 30px -22px rgba(52,36,132,.45); transform: translateY(-1px); }
.edf .edf-ti { position: relative; flex: none; width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; background: #F4F4FA; color: #4A4766; }
.edf .edf-ti svg { width: 20px; height: 20px; }
.edf .edf-ti i { position: absolute; top: -3px; right: -3px; width: 11px; height: 11px; border-radius: 50%; border: 2px solid #FFFFFF; display: none; }
.edf .edf-tile.s-c .edf-ti i { display: block; background: #C0394F; }
.edf .edf-tile.s-w .edf-ti i { display: block; background: #E8692F; }
.edf .edf-tile.s-f .edf-ti i { display: block; background: #5351FB; }
.edf .edf-tile.s-ok .edf-ti { color: #8A87A3; }
.edf .edf-tt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.edf .edf-tt b { font-size: 14.5px; font-weight: 600; letter-spacing: -.005em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edf-tile.s-ok .edf-tt b { color: #3A3756; }
.edf .edf-tt > span { display: flex; gap: 8px; font-size: 13px; white-space: nowrap; overflow: hidden; }
.edf .edf-tt i { font-style: normal; font-weight: 500; color: #6E6A8A; }
.edf .edf-tt i + i::before { content: "·"; margin-right: 8px; color: #C9C6DC; }
.edf .edf-tt i.c { color: #A3243B; }
.edf .edf-tt i.ok { color: #2F8F5B; }
.edf .edf-tc { flex: none; color: #C9C6DC; transition: color .12s, transform .12s; }
.edf .edf-tile:hover .edf-tc { color: #5351FB; transform: translateX(2px); }

/* Corps : indicateurs + journée | liste de travail */
.edf .edf-main { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 12px; align-items: start; }
.edf .edf-col { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.edf .edf-cues { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; }
.edf .edf-cues > * { grid-column: span 2; }
.edf .edf-cue { display: flex; flex-direction: column; gap: 5px; padding: 14px 16px 12px; min-width: 0; }
.edf .edf-cue:hover { border-color: #CBCAFE; }
.edf .edf-cue:disabled { cursor: default; }
.edf .edf-ch { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: #5B5876; white-space: nowrap; }
.edf .edf-chip { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; font: 600 11.5px "Geist", sans-serif; }
.edf .edf-chip::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.edf .edf-cv { font: 700 25px/1.1 "Sora", sans-serif; letter-spacing: -.01em; white-space: nowrap; color: #14122B; }
.edf .edf-cv small { margin-left: 5px; font: 600 12px "Geist", sans-serif; color: #6E6A8A; letter-spacing: 0; }
.edf .edf-band { display: flex; flex-direction: column; justify-content: flex-end; height: 26px; margin-top: 2px; }
.edf .edf-cols { display: flex; align-items: flex-end; gap: 3px; height: 20px; }
.edf .edf-cols i { flex: 1; min-height: 3px; border-radius: 3px 3px 1px 1px; }
.edf .edf-seg { display: flex; gap: 2px; height: 6px; }
.edf .edf-seg i { border-radius: 2px; }
.edf .edf-seg i:first-child { border-radius: 4px 2px 2px 4px; }
.edf .edf-seg i:last-child { border-radius: 2px 4px 4px 2px; }
.edf .edf-cs { font-size: 12.5px; color: #6E6A8A; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edf-cs b { color: #14122B; font-weight: 600; }

/* Aujourd'hui */
.edf .edf-today { padding: 14px 18px 10px; display: flex; flex-direction: column; gap: 2px; }
.edf .edf-today .edf-sec { margin: 0 0 2px; }
.edf .edf-ev { display: flex; gap: 10px; padding: 8px 0; border: 0; border-bottom: 1px solid #EFEEF6; background: transparent; font-size: 12.5px; color: #8A87A3; }
.edf .edf-ev:last-child { border-bottom: 0; }
.edf .edf-ev:hover b { color: #342484; }
.edf .edf-evw { flex: none; min-width: 52px; font: 700 12px "Sora", sans-serif; color: #342484; padding-top: 1px; }
.edf .edf-ev b { display: block; color: #14122B; font-size: 13.5px; font-weight: 600; }
.edf .edf-none { padding: 10px 0; color: #8A87A3; font-size: 12.5px; }

/* À traiter */
.edf .edf-work { padding: 16px 18px 12px; display: flex; flex-direction: column; }
.edf .edf-wh { display: flex; align-items: baseline; gap: 10px; padding: 0 6px 6px; }
.edf .edf-wh h2 { margin: 0; font: 700 15px "Sora", sans-serif; color: #14122B; }
.edf .edf-wh .edf-mut { font-size: 12.5px; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edf-link { margin-left: auto; flex: none; border: 0; background: transparent; color: #342484; font: 600 13px "Geist", sans-serif; cursor: pointer; }
.edf .edf-al { display: flex; align-items: center; gap: 10px; padding: 9px 6px; border: 0; border-bottom: 1px solid #EFEEF6; background: transparent; border-radius: 8px; }
.edf .edf-al:hover { background: #FBFBFF; }
.edf .edf-dot { flex: none; width: 8px; height: 8px; border-radius: 50%; margin: 0 3px; }
.edf .edf-at { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.edf .edf-at b { font-size: 13.5px; font-weight: 600; }
.edf .edf-at > span { font-size: 12.5px; color: #8A87A3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edf-at em { font-style: normal; font-weight: 600; }
.edf .edf-an { flex: none; font: 700 14px "Sora", sans-serif; color: #14122B; }
.edf .edf-an.c { color: #A3243B; }
.edf .edf-wf { display: flex; justify-content: space-between; gap: 10px; padding: 10px 6px 0; font-size: 12px; color: #8A87A3; }
.edf .edf-empty-ok { display: flex; align-items: center; gap: 12px; padding: 16px 6px; color: #2F8F5B; font-size: 13.5px; }
.edf .edf-empty-ok > span:first-child { flex: none; width: 34px; height: 34px; border-radius: 10px; background: #F2F7F4; display: grid; place-items: center; font-size: 16px; }
.edf .edf-empty-ok b { display: block; color: #14122B; font-size: 14px; }

/* Largeur utile réduite (menu ouvert sur un 1366 ou moins) */
@container edf (max-width: 1150px) {
    .edf .edf-main { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); }
    .edf .edf-wh .edf-mut { display: none; }
    .edf .edf-tt > span { font-size: 12px; gap: 5px; }
    .edf .edf-tt b { font-size: 14px; }
    .edf .edf-tile { gap: 10px; padding: 11px 10px 11px 12px; }
    .edf .edf-cv { font-size: 23px; }
    .edf .edf-chip { font-size: 0; gap: 0; }
}
@container edf (max-width: 940px) {
    .edf .edf-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .edf .edf-main { grid-template-columns: minmax(0, 1fr); }
    .edf .edf-cues { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .edf .edf-cues > * { grid-column: auto; }
}


/* ════════════════════════════════════════════════════════════════════════════
   TABLEAUX DE BORD DES MODULES « F » (maquettes Module*F.dc.html, 27/10/2026)
   Même gabarit que l'accueil : bandeau, 4 tuiles (étapes du module), 6 indicateurs,
   tableau d'analyse, « À traiter » du module, liste utile.
   ════════════════════════════════════════════════════════════════════════════ */
.edf .edf-tile.s-n .edf-ti { color: #4A4766; }
.edf .edf-main > .edf-col:last-child { gap: 12px; }
/* Menu des écrans du module (bouton du bandeau) */
.edf .edf-qa-screens { max-height: 420px; overflow-y: auto; min-width: 260px; }
.edf .edf-qa-grp { padding: 8px 10px 3px; font-size: 11.5px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #8A87A3; }
.edf .edf-qa-grp:first-child { padding-top: 4px; }
.edf .edf-qa-none { padding: 8px 10px; font-size: 13px; color: #8A87A3; }
/* Tableau d'analyse */
.edf .edf-tbl { padding: 14px 18px 10px; min-width: 0; }
.edf .edf-tbl .edf-wh { padding: 0 0 6px; }
.edf .edf-tbl table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 13px; color: #14122B; }
.edf .edf-tbl th { padding: 6px 8px; font-size: 12px; font-weight: 500; color: #8A87A3; text-align: left; border-bottom: 1px solid #E7E6F0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edf-tbl td { padding: 6px 8px; border-bottom: 1px solid #F1F0F7; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edf-tbl tr:last-child td { border-bottom: 0; }
.edf .edf-tbl .n { text-align: right; font-variant-numeric: tabular-nums; }
.edf .edf-tbl b { font-weight: 700; }
.edf .edf-tbl b.w { color: #B4501F; }
.edf .edf-bar { display: block; height: 5px; border-radius: 3px; background: #F0EFF7; overflow: hidden; }
.edf .edf-bar i { display: block; height: 100%; border-radius: 3px; }
/* Liste utile */
.edf .edf-lst { padding: 14px 18px 8px; display: flex; flex-direction: column; min-width: 0; }
.edf .edf-lst .edf-wh { padding: 0 0 4px; }
.edf .edf-li { display: flex; align-items: center; gap: 11px; padding: 8px 0; border: 0; border-bottom: 1px solid #EFEEF6; background: transparent; text-align: left; cursor: pointer; font: inherit; color: #14122B; }
.edf .edf-li:last-of-type { border-bottom: 0; }
.edf .edf-li:hover b { color: #342484; }
.edf .edf-av { flex: none; width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center; background: #F4F4FA; color: #4A4766; font: 700 10.5px "Sora", sans-serif; }
.edf .edf-lw { flex: none; min-width: 52px; font: 700 12.5px "Sora", sans-serif; color: #342484; }
.edf .edf-lt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.edf .edf-lt b { font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edf-lt span { font-size: 12px; color: #6E6A8A; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edf-lv { flex: none; font: 700 13.5px "Sora", sans-serif; white-space: nowrap; }
.edf .edf-go { flex: none; font-size: 12.5px; font-weight: 600; color: #5351FB; }
@container edf (max-width: 1150px) {
    .edf .edf-tbl th, .edf .edf-tbl td { padding: 5px 6px; }
    .edf .edf-go { display: none; }
}

/* Panneaux des tableaux de bord (BoardSpec.Panels) : demandes par état, actualités, anniversaires */
.edf .edf-pnl { padding: 14px 18px 10px; display: flex; flex-direction: column; min-width: 0; }
.edf .edf-pnl .edf-wh { padding: 0 0 8px; }
.edf .edf-pnl .edf-wf { padding: 8px 0 0; align-items: center; }
.edf .edf-pnl .edf-empty-ok { padding: 10px 0 4px; }
.edf .edf-pst { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.edf .edf-pst-i { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; padding: 10px 12px; border: 1px solid #EFEEF6; border-radius: 11px; background: #FBFBFE; font: inherit; color: #14122B; text-align: left; cursor: pointer; }
.edf .edf-pst-i:hover:not(:disabled) { border-color: #CBCAFE; background: #F6F5FF; }
.edf .edf-pst-i:disabled { cursor: default; opacity: .75; }
.edf .edf-pst-i b { font: 700 22px/1.1 "Sora", sans-serif; }
.edf .edf-pst-i span { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: #6E6A8A; white-space: nowrap; }
.edf .edf-pst-i span i { width: 7px; height: 7px; border-radius: 50%; }
.edf .edf-pst-bar { margin: 10px 0 4px; }
.edf .edf-pst-h { margin: 8px 0 0; font-size: 11.5px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: #8A87A3; }
.edf .edf-pst-late { color: #B4501F; font-weight: 600; }
.edf .edf-news { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.edf .edf-news-i { display: flex; flex-direction: column; min-width: 0; padding: 0; border: 1px solid #EFEEF6; border-radius: 12px; background: #FFFFFF; overflow: hidden; font: inherit; color: #14122B; text-align: left; cursor: pointer; transition: border-color .12s, box-shadow .12s; }
.edf .edf-news-i:hover { border-color: #CBCAFE; box-shadow: 0 4px 14px rgba(52, 36, 132, .08); }
.edf .edf-news-img { height: 96px; display: grid; place-items: center; background: linear-gradient(160deg, #EEEEFF, #F7F6FF) center / cover no-repeat; color: #9C9AF8; }
.edf .edf-news-img svg { width: 30px; height: 30px; }
.edf .edf-news-t { display: flex; flex-direction: column; gap: 3px; padding: 10px 12px 12px; min-width: 0; }
.edf .edf-news-t small { font-size: 11.5px; color: #8A87A3; }
.edf .edf-news-t b { font-size: 13.5px; font-weight: 600; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.edf .edf-news-t > span { font-size: 12px; color: #6E6A8A; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.edf .edf-news-t em { align-self: flex-start; margin-top: 4px; padding: 1px 8px; border-radius: 99px; background: #F4F4FA; color: #6E6A8A; font-style: normal; font-size: 11px; font-weight: 600; }
.edf .edf-news-t em.ok { background: #E8F6EF; color: #0E6B45; }
.edf .edf-av.edf-bday { background: #FFF1EA; color: #B4501F; }
.edf .edf-pst-i .edf-ntf-bar { align-self: stretch; margin-top: 6px; }
.edf .edf-pst-i small { font-size: 12px; color: #6E6A8A; }
.edf .edf-pnl-notify .edf-lw { min-width: 46px; font-size: 12px; }
@container edf (max-width: 1150px) {
    .edf .edf-news { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .edf .edf-news-i:nth-child(3) { display: none; }
    .edf .edf-pst-i b { font-size: 19px; }
}

/* ════════════════════════════════════════════════════════════════════════════
   CONTRÔLE DES CRÉNEAUX (EducatedSlotControl.razor, maquette EmploisControleF) — préfixe edsc-
   ════════════════════════════════════════════════════════════════════════════ */
.edf.edsc .edsc-btn { flex: none; display: inline-flex; align-items: center; gap: 7px; height: 36px; padding: 0 14px; border: 1px solid #CBCAFE; border-radius: 10px; background: #FFFFFF; color: #342484; font: 600 13px "Geist", sans-serif; cursor: pointer; }
.edf.edsc .edsc-btn:hover { background: #F3F2FF; }
.edf .edsc-tabsrow { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.edf .edsc-tabsrow .edf-flt button { height: 34px; }
.edf .edsc-ok { color: #2F8F5B; font-weight: 700; }
.edf .edsc-find { flex: 1; min-width: 220px; height: 34px; display: flex; align-items: center; gap: 8px; padding: 0 12px; border: 1px solid #E1DEEE; border-radius: 9px; background: #FFFFFF; color: #8A87A3; }
.edf .edsc-find input { flex: 1; min-width: 0; border: 0; background: transparent; font: 400 13px "Geist", sans-serif; color: #14122B; }
.edf .edsc-find input:focus { outline: none; }
.edf .edsc-find:focus-within { border-color: #5351FB; box-shadow: 0 0 0 3px rgba(83, 81, 251, .14); }
.edf .edsc-main { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 12px; align-items: start; }
.edf .edsc-side { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.edf .edsc-list, .edf .edsc-card { padding: 16px 18px 12px; display: flex; flex-direction: column; min-width: 0; }
.edf .edsc-list .edf-wh, .edf .edsc-card .edf-wh { padding: 0 0 8px; }
.edf .edsc-tools { display: flex; align-items: center; gap: 10px; padding: 2px 0 10px; border-bottom: 1px solid #EFEEF6; font-size: 12.5px; }
.edf .edsc-seg { display: inline-flex; padding: 2px; border-radius: 9px; background: #EFEEF6; }
.edf .edsc-seg button { height: 28px; padding: 0 12px; border: 0; border-radius: 7px; background: transparent; font: 500 12.5px "Geist", sans-serif; color: #4A4766; cursor: pointer; }
.edf .edsc-seg button.on { background: #FFFFFF; color: #14122B; font-weight: 600; box-shadow: 0 1px 2px rgba(20, 18, 43, .12); }
.edf .edsc-right { margin-left: auto; }
.edf .edsc-group { padding: 12px 0 8px; border-bottom: 1px solid #EFEEF6; display: flex; flex-direction: column; gap: 8px; }
.edf .edsc-gh { display: flex; align-items: baseline; gap: 8px; font-size: 12.5px; min-width: 0; }
.edf .edsc-gh > b { font: 700 14px "Sora", sans-serif; color: #14122B; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edsc-gn { display: inline-flex; align-items: center; gap: 6px; color: #4A4766; white-space: nowrap; }
.edf .edsc-gn i { width: 7px; height: 7px; border-radius: 50%; }
.edf .edsc-line { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 10px; align-items: stretch; }
.edf .edsc-line.is-pair { grid-template-columns: 150px minmax(0, 1fr) minmax(0, 1fr); }
.edf .edsc-when { display: flex; flex-direction: column; gap: 1px; padding-top: 2px; font-size: 12.5px; color: #4A4766; }
.edf .edsc-when b { font: 700 13px "Sora", sans-serif; color: #342484; }
.edf .edsc-when em { font-style: normal; font-size: 12px; color: #A3243B; }
.edf .edsc-slot { display: flex; align-items: center; gap: 8px; min-width: 0; padding: 9px 10px 9px 12px; border: 1px solid #E7E6F0; border-radius: 10px; background: #FFFFFF; text-align: left; font: inherit; color: inherit; cursor: pointer; }
.edf .edsc-slot:hover { border-color: #CBCAFE; background: #FBFBFF; }
.edf .edsc-slot > span { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.edf .edsc-slot b { font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edsc-slot > span > span { font-size: 12px; color: #6E6A8A; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edsc-slot svg { flex: none; color: #C9C6DC; }
.edf .edsc-slot:hover svg { color: #5351FB; }
.edf .edsc-more { align-self: flex-start; margin-left: 160px; }
.edf .edsc-rest { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; padding: 10px 12px; border-radius: 10px; background: #F7F6FB; font-size: 13px; }
.edf .edsc-top { width: 100%; border-collapse: collapse; font-size: 13px; }
.edf .edsc-top td { padding: 6px 4px; border-bottom: 1px solid #F1F0F7; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edsc-top tr:last-child td { border-bottom: 0; }
.edf .edsc-top .n { text-align: right; width: 40px; }
.edf .edsc-barcell { width: 45%; }
.edf .edsc-days { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; align-items: end; height: 96px; padding-top: 6px; }
.edf .edsc-day { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 4px; height: 100%; font-size: 12px; color: #8A87A3; }
.edf .edsc-day b { font: 700 12.5px "Sora", sans-serif; color: #14122B; }
.edf .edsc-day i { width: 100%; border-radius: 4px 4px 2px 2px; }
.edf .edsc-tips { margin: 0; padding: 0; list-style: none; counter-reset: tip; display: flex; flex-direction: column; gap: 10px; font-size: 13px; color: #4A4766; }
.edf .edsc-tips li { counter-increment: tip; display: flex; gap: 10px; line-height: 1.4; }
.edf .edsc-tips li::before { content: counter(tip); flex: none; width: 22px; height: 22px; border-radius: 7px; background: #F3F2F9; color: #342484; font: 700 12px/22px "Sora", sans-serif; text-align: center; }
.edf .edsc-tips b { color: #14122B; }
@container edf (max-width: 1150px) {
    .edf .edsc-main { grid-template-columns: minmax(0, 1fr); }
    .edf .edsc-line, .edf .edsc-line.is-pair { grid-template-columns: 110px minmax(0, 1fr); }
    .edf .edsc-line.is-pair .edsc-slot:last-child { grid-column: 2; }
    .edf .edsc-more { margin-left: 120px; }
}
/* Conflits : « 2 séances en même temps », doubles réservations (même classe, même enseignant) */
.edf .edsc-when em { font-weight: 600; }
.edf .edsc-flags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 3px; }
.edf .edsc-flags i { font-style: normal; font-size: 12px; font-weight: 600; color: #A3243B; background: #FCEEF0; border-radius: 6px; padding: 1px 6px; }
.edf .edsc-line.is-severe .edsc-slot { border-color: #F1C9D0; }
.edf .edsc-sev { margin-left: auto; flex: none; font-size: 12.5px; font-weight: 600; color: #A3243B; }


/* ════════════════════════════════════════════════════════════════════════════
   NOTIFICATIONS ENVOYÉES (EducatedSentNotifications.razor, maquette NotificationsF) — préfixe edn-
   ════════════════════════════════════════════════════════════════════════════ */
.edf .edn-seg { flex: none; display: inline-flex; padding: 3px; border-radius: 10px; background: #F3F2F9; gap: 2px; }
.edf .edn-seg button { height: 30px; padding: 0 12px; border: 0; border-radius: 8px; background: transparent; font: 500 13px "Geist", sans-serif; color: #5B5876; white-space: nowrap; cursor: pointer; }
.edf .edn-seg button:hover { color: #14122B; }
.edf .edn-seg button.on { background: #FFFFFF; color: #14122B; font-weight: 600; box-shadow: 0 1px 2px rgba(20, 18, 43, .08); }
.edf.edn .edf-flt button i { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.edf .edn-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.edf .edn-k { padding: 14px 16px 12px; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.edf .edn-k .h { font-size: 12.5px; font-weight: 600; color: #6E6A8A; }
.edf .edn-k b { font: 700 26px/1.15 "Sora", sans-serif; color: #14122B; }
.edf .edn-k b small { font: 500 13px "Geist", sans-serif; color: #6E6A8A; margin-left: 6px; }
.edf .edn-k .s { font-size: 12.5px; color: #6E6A8A; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edn-k .s em { font-style: normal; font-weight: 600; color: #14122B; }
.edf .edn-k.is-warn { border-color: #FBD9C9; background: #FFFAF7; }
.edf .edn-seg3 { display: flex; height: 6px; gap: 2px; margin-top: 4px; }
.edf .edn-seg3 i { border-radius: 2px; min-width: 4px; }
.edf .edn-bar { display: block; height: 5px; border-radius: 3px; background: #F0EFF7; overflow: hidden; }
.edf .edn-bar i { display: block; height: 100%; border-radius: 3px; background: #5351FB; }
.edf .edn-bar2 { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 2px 0 4px; }
.edf .edn-day { font-size: 11.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #8A87A3; padding: 12px 4px 4px; }
.edf .edn-row { display: grid; grid-template-columns: 72px minmax(0, 1fr) 96px 92px 16px; gap: 14px; align-items: center; width: 100%; padding: 11px 6px; border: 0; border-top: 1px solid #EFEEF6; border-radius: 0; background: transparent; font: inherit; color: #14122B; text-align: left; cursor: pointer; }
.edf .edn-day + .edn-row { border-top-color: transparent; }
.edf .edn-row:hover { background: #FBFBFF; }
.edf .edn-row.sel { background: #F5F5FF; border-radius: 10px; border-top-color: transparent; box-shadow: inset 3px 0 0 #5351FB; }
.edf .edn-when { display: flex; flex-direction: column; gap: 1px; }
.edf .edn-when b { font: 700 13px "Sora", sans-serif; color: #342484; white-space: nowrap; }
.edf .edn-when span { font-size: 12px; color: #6E6A8A; white-space: nowrap; font-variant-numeric: tabular-nums; }
.edf .edn-msg { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.edf .edn-msg b { font-size: 13.5px; font-weight: 600; line-height: 1.35; color: #14122B; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.edf .edn-tags { display: flex; gap: 8px; align-items: center; overflow: hidden; }
.edf .edn-type { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 8px; border-radius: 6px; background: #F3F2F9; font-size: 12px; font-weight: 600; color: #4A4766; white-space: nowrap; }
.edf .edn-type svg { color: #5351FB; }
.edf .edn-who { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: #6E6A8A; white-space: nowrap; }
.edf .edn-who i { width: 7px; height: 7px; border-radius: 50%; }
.edf .edn-who b { color: #14122B; font-weight: 600; }
.edf .edn-n { display: flex; flex-direction: column; gap: 1px; text-align: right; }
.edf .edn-n b { font: 700 14px "Sora", sans-serif; color: #14122B; }
.edf .edn-n span { font-size: 12px; color: #6E6A8A; white-space: nowrap; }
.edf .edn-read { display: flex; flex-direction: column; gap: 5px; }
.edf .edn-read > span:first-child { font-size: 12.5px; font-weight: 600; color: #14122B; white-space: nowrap; }
.edf .edn-read small { font-weight: 400; color: #6E6A8A; font-size: 12px; }
.edf .edn-go { color: #A9A6BE; display: inline-flex; }
.edf .edn-fold { display: flex; align-items: center; gap: 8px; margin-top: 8px; padding: 10px 12px; border-radius: 10px; background: #F7F7FB; font-size: 13px; color: #4A4766; }
.edf .edn-fold b { color: #14122B; }
.edf .edn-fold .edf-link { margin-left: auto; }
.edf .edn-pub { display: flex; flex-direction: column; gap: 12px; padding-top: 4px; }
.edf .edn-pub .rw { display: grid; grid-template-columns: 96px minmax(0, 1fr) 58px; gap: 10px; align-items: center; font-size: 13px; color: #14122B; }
.edf .edn-pub .rw span:first-child { display: flex; align-items: center; gap: 7px; font-weight: 600; }
.edf .edn-pub .rw span:first-child i { width: 8px; height: 8px; border-radius: 50%; }
.edf .edn-pub .bar { display: block; height: 8px; border-radius: 4px; background: #F0EFF7; overflow: hidden; }
.edf .edn-pub .bar i { display: block; height: 100%; border-radius: 4px; }
.edf .edn-pub .rw b { text-align: right; font: 700 13px "Sora", sans-serif; }
.edf .edn-pub .m { font-size: 12px; color: #6E6A8A; margin-top: -6px; padding-left: 106px; }
.edf .edn-days { display: flex; align-items: flex-end; gap: 10px; padding-top: 6px; }
.edf .edn-days .d { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 5px; min-width: 0; }
.edf .edn-days .d b { font: 700 12px "Sora", sans-serif; color: #14122B; white-space: nowrap; }
.edf .edn-days .d .st { width: 100%; height: 80px; display: flex; flex-direction: column; justify-content: flex-end; gap: 1px; }
.edf .edn-days .d .st i { display: block; width: 100%; border-radius: 3px 3px 1px 1px; }
.edf .edn-days .d .st i.rd { border-radius: 1px; background: #5351FB; }
.edf .edn-days .d > span:last-child { font-size: 12px; color: #8A87A3; }
.edf .edn-leg { display: flex; gap: 14px; font-size: 12px; color: #6E6A8A; margin-top: 8px; }
.edf .edn-leg i { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 6px; }
.edf .edn-click { cursor: pointer; }
.edf .edn-click:hover td { background: #FBFBFF; }
.edf .edn-tip { display: flex; gap: 10px; align-items: flex-start; margin-top: 10px; padding: 10px 12px; border-radius: 10px; background: #FFF6F1; border: 1px solid #FBD9C9; font-size: 12.5px; color: #7A2E0E; line-height: 1.45; }
.edf .edn-tip b { color: #14122B; }
.edf .edn-tip svg { flex: none; color: #E8692F; margin-top: 1px; }
.edf .edn-dr { display: flex; flex-direction: column; gap: 14px; padding: 18px 20px 16px; min-width: 0; }
.edf .edn-dr .top { display: flex; align-items: center; gap: 8px; }
.edf .edn-dr .kk { font-size: 11.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #8A87A3; }
.edf .edn-dr .x { margin-left: auto; width: 28px; height: 28px; border: 0; border-radius: 8px; background: #F4F4FA; color: #4A4766; font-size: 16px; cursor: pointer; }
.edf .edn-dr .x:hover { background: #EBEAF6; }
.edf .edn-dr h3 { margin: 0; font: 700 16px/1.4 "Sora", sans-serif; color: #14122B; white-space: pre-line; overflow-wrap: anywhere; }
.edf .edn-dr .meta { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; font-size: 12.5px; color: #6E6A8A; }
.edf .edn-dr .st3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.edf .edn-dr .st3 span { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border-radius: 11px; border: 1px solid #EFEEF6; background: #FBFBFE; font-size: 12px; color: #6E6A8A; }
.edf .edn-dr .st3 b { font: 700 19px "Sora", sans-serif; color: #14122B; }
.edf .edn-dr .acts { display: flex; gap: 8px; flex-wrap: wrap; }
.edf .edn-dr .acts button { display: inline-flex; align-items: center; gap: 7px; height: 34px; padding: 0 12px; border-radius: 9px; border: 1px solid #DCD9EA; background: #FFFFFF; font: 600 13px "Geist", sans-serif; color: #342484; white-space: nowrap; cursor: pointer; }
.edf .edn-dr .acts button:hover:not(:disabled) { background: #F3F2FF; }
.edf .edn-dr .acts button:disabled { opacity: .55; cursor: default; }
.edf .edn-dr .acts button.pri { background: #5351FB; border-color: #5351FB; color: #FFFFFF; }
.edf .edn-dr .acts button.pri:hover { background: #4341E8; }
.edf .edn-info { padding: 9px 12px; border-radius: 10px; background: #F3F2FF; color: #342484; font-size: 12.5px; }
.edf .edn-rtabs { display: flex; }
.edf .edn-rtabs .edn-seg { flex-wrap: wrap; }
.edf .edn-rfind { min-width: 0; height: 32px; }
.edf .edn-rcs { display: flex; flex-direction: column; }
.edf .edn-rc { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto auto; gap: 10px; align-items: center; padding: 8px 0; border-top: 1px solid #EFEEF6; font-size: 13px; }
.edf .edn-rc .av { width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center; background: #F4F4FA; color: #4A4766; font: 700 10.5px "Sora", sans-serif; }
.edf .edn-rc .t { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.edf .edn-rc .t b { font-weight: 600; color: #14122B; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edn-rc .t span { font-size: 12px; color: #6E6A8A; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.edf .edn-rc .dv { font-size: 12px; color: #8A87A3; white-space: nowrap; }
.edf .edn-chip { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 99px; font-size: 12px; font-weight: 600; white-space: nowrap; }
.edf .edn-chip.ok { background: #E8F6EF; color: #0E6B45; }
.edf .edn-chip.no { background: #F4F4FA; color: #6E6A8A; }
.edf .edn-chip.na { background: #FFF1EA; color: #9A3412; }
.edf .edn-more { align-self: flex-start; margin: 8px 0 0; }
@container edf (max-width: 1150px) {
    .edf .edn-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .edf .edn-row { grid-template-columns: 60px minmax(0, 1fr) 80px 76px 12px; gap: 10px; }
}


/* ════════════════════════════════════════════════════════════════════════════
   Grilles complètes quel que soit le nombre d'éléments (profil limité à quelques modules,
   indicateurs masqués) : la dernière ligne s'étire au lieu de laisser un trou.
   Sélecteurs locaux à la grille (pas de :has()).
   ════════════════════════════════════════════════════════════════════════════ */
/* Tuiles : 4 colonnes */
.edf .edf-tiles > :last-child:nth-child(4n+1) { grid-column: span 4; }
.edf .edf-tiles > :nth-last-child(2):nth-child(4n+1),
.edf .edf-tiles > :last-child:nth-child(4n+2) { grid-column: span 2; }
.edf .edf-tiles > :last-child:nth-child(4n+3) { grid-column: span 2; }
/* Indicateurs : 3 par ligne (grille de 6) */
.edf .edf-cues > :last-child:nth-child(3n+1) { grid-column: span 6; }
.edf .edf-cues > :nth-last-child(2):nth-child(3n+1),
.edf .edf-cues > :last-child:nth-child(3n+2) { grid-column: span 3; }
@container edf (max-width: 940px) {
    .edf .edf-tiles > :last-child:nth-child(4n+1),
    .edf .edf-tiles > :nth-last-child(2):nth-child(4n+1),
    .edf .edf-tiles > :last-child:nth-child(4n+2),
    .edf .edf-tiles > :last-child:nth-child(4n+3) { grid-column: auto; }
    .edf .edf-tiles > :last-child:nth-child(odd) { grid-column: span 2; }
    .edf .edf-cues > :last-child:nth-child(3n+1),
    .edf .edf-cues > :nth-last-child(2):nth-child(3n+1),
    .edf .edf-cues > :last-child:nth-child(3n+2) { grid-column: auto; }
    .edf .edf-cues > :last-child:nth-child(odd) { grid-column: span 2; }
}
