:root{--blue:#0757e8;--navy:#031c55;--bg:#f4f7fc;--text:#17233b;--muted:#66728b;--line:#dfe6f1}*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;color:var(--text);background:var(--bg)}a{color:var(--blue);text-decoration:none}.sidebar{position:fixed;inset:0 auto 0 0;width:255px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:20}.brand{padding:25px 22px}.brand img{width:100%;height:72px;object-fit:contain}.sidebar nav{padding:8px 14px;display:grid;gap:5px;overflow:auto}.sidebar nav a{padding:12px 16px;border-radius:12px;color:#3d4961;font-weight:700}.sidebar nav a:hover,.sidebar nav a.active{background:#edf4ff;color:var(--blue)}.sep{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:#98a2b5;padding:18px 16px 5px}.logout{margin:auto 18px 20px;padding:12px 16px;border-radius:12px;background:#fff1f1;color:#bd2929;font-weight:700}.shell{margin-left:255px}.top{height:78px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:15px;padding:0 28px;position:sticky;top:0;z-index:10}.top>div:nth-child(2){display:grid}.top small{color:var(--muted)}.avatar{margin-left:auto;width:42px;height:42px;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center;font-weight:800}.switch{margin-left:auto}.switch select,input,textarea,select{border:1px solid var(--line);border-radius:10px;padding:11px 12px;background:#fff;font:inherit}.iconbtn{display:none;border:0;background:none;font-size:24px}main{padding:28px;max-width:1450px;margin:auto}.pagehead h1{margin:0 0 6px;font-size:30px}.pagehead p{margin:0 0 24px;color:var(--muted)}.heroCard{background:linear-gradient(120deg,#031c55,#0757e8);color:#fff;border-radius:24px;padding:36px;display:flex;justify-content:space-between;overflow:hidden}.heroCard h2{font-size:32px;max-width:650px;margin:12px 0}.dna{font-size:140px;opacity:.25;transform:rotate(25deg)}.pill,.tag{display:inline-block;background:#e8f1ff;color:var(--blue);border-radius:99px;padding:6px 10px;font-size:12px;font-weight:800}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0}.stats article,.panel,.listpanel,.coursecard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px}.stats b{font-size:30px;display:block;color:var(--navy)}.stats span,.panel small{color:var(--muted)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.sectiontitle,.toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.line{display:flex;align-items:center;gap:14px;padding:14px 0;border-top:1px solid var(--line)}.line time{background:#edf4ff;color:var(--blue);padding:10px;border-radius:10px;font-weight:800}.line div{display:grid;gap:3px}.round{width:45px;height:45px;border-radius:13px;background:#edf4ff;display:grid;place-items:center;font-size:20px}.announcement,.flash{padding:14px 18px;border-radius:12px;margin:16px 0;background:#e9f5ff;border-left:4px solid var(--blue)}.announcement span{margin-left:10px}.flash.err{background:#fff0f0;border-color:#d22;color:#9b2020}.toolbar{background:#fff;padding:15px;border:1px solid var(--line);border-radius:15px}.btn,button{border:1px solid var(--line);border-radius:10px;padding:10px 15px;background:#fff;font-weight:800;cursor:pointer}.btn.primary{background:var(--blue);color:#fff;border-color:var(--blue)}.inline{display:flex;gap:8px;align-items:center}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.coursecard{padding:0;overflow:hidden}.cover{height:155px;background:linear-gradient(135deg,#dbe9ff,#f4f8ff);display:grid;place-items:center}.cover span{font-size:60px}.cover img{width:100%;height:100%;object-fit:cover}.coursebody{padding:20px}.coursebody details{margin:15px 0}.resource{display:grid;padding:12px;margin-top:8px;border:1px solid var(--line);border-radius:10px}.resource span{font-size:10px;color:var(--blue)}.calendar{display:grid;gap:12px}.event{display:grid;grid-template-columns:130px 1fr;background:#fff;border-radius:15px;border-left:7px solid var(--blue);padding:18px}.event.france{border-color:#0757e8}.event.local{border-color:#16a085}.event.class{border-color:#f39c12}.event time{display:grid;font-weight:700}.event time b{font-size:22px}.legend span{margin-right:10px}.legend span:before{content:'';display:inline-block;width:10px;height:10px;border-radius:50%;background:#0757e8;margin-right:5px}.legend .local:before{background:#16a085}.legend .class:before{background:#f39c12}.chat{display:grid;grid-template-columns:270px 1fr;background:#fff;border:1px solid var(--line);border-radius:18px;min-height:620px;overflow:hidden}.channels{border-right:1px solid var(--line);padding:12px}.channels a{display:grid;padding:14px;border-radius:11px;color:var(--text)}.channels a.active{background:#edf4ff}.channels small{color:var(--muted)}.conversation{display:grid;grid-template-rows:auto 1fr auto;min-width:0}.conversation header{padding:18px;border-bottom:1px solid var(--line)}.messages{padding:20px;overflow:auto;max-height:500px}.msg{max-width:70%;background:#f0f3f8;border-radius:14px;padding:12px;margin:10px 0}.msg.mine{margin-left:auto;background:#e8f1ff}.msg p{margin:5px 0}.composer{display:flex;gap:10px;padding:15px;border-top:1px solid var(--line)}.composer textarea{flex:1;resize:none}.listpanel article{display:flex;align-items:center;gap:15px;padding:17px;border-bottom:1px solid var(--line)}.listpanel article>div:nth-child(2){flex:1}.listpanel h3,.listpanel p{margin:3px 0}dialog{border:0;border-radius:18px;padding:0;box-shadow:0 20px 70px #001a4d55;width:min(520px,90vw)}dialog::backdrop{background:#00163b88}dialog form{padding:25px;display:grid;gap:13px}label{display:grid;gap:6px;font-weight:700}textarea{min-height:90px}.actions{display:flex;justify-content:flex-end;gap:8px}footer{text-align:center;padding:30px;color:var(--muted)}.loginbody{min-height:100vh;display:grid;place-items:center;background:linear-gradient(130deg,#031c55,#0757e8)}.loginwrap{width:min(1050px,94vw);min-height:620px;background:#fff;border-radius:25px;display:grid;grid-template-columns:1.1fr .9fr;overflow:hidden;box-shadow:0 30px 100px #00153f99}.loginart{background:linear-gradient(145deg,#061f58,#0a62ff);color:#fff;padding:60px;display:flex;flex-direction:column;justify-content:center}.loginart img{width:100%;filter:brightness(0) invert(1);margin-bottom:45px}.loginart h1{font-size:40px}.loginbox{padding:60px;display:grid;align-content:center;gap:18px}.loginbox h2{font-size:32px;margin:0}.loginbox p,.loginbox small{color:var(--muted)}@media(max-width:900px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.shell{margin-left:0}.iconbtn{display:block}.stats,.cards{grid-template-columns:1fr 1fr}.grid2{grid-template-columns:1fr}.loginwrap{grid-template-columns:1fr}.loginart{display:none}}@media(max-width:600px){main{padding:16px}.stats,.cards{grid-template-columns:1fr}.top{padding:0 15px}.chat{grid-template-columns:1fr}.channels{display:flex;overflow:auto;border-right:0;border-bottom:1px solid var(--line)}.channels a{min-width:170px}.event{grid-template-columns:1fr}.inline{flex-wrap:wrap}.loginbox{padding:30px}}/* v1.2 — navigation marine, cartes parcours, calendrier mensuel et PWA */
.sidebar{background:linear-gradient(180deg,#031c55,#06143a);border-right:0;color:#fff;box-shadow:8px 0 28px #00133222}.brand{background:#fff;margin:16px;border-radius:18px;padding:12px}.brand img{height:76px}.sidebar nav a{color:#dce7ff}.sidebar nav a:hover,.sidebar nav a.active{background:#ffffff18;color:#fff}.sep{color:#7fa2ec}.logout{background:#ffffff12;color:#fff;border:1px solid #ffffff22}.iconbtn{display:flex;width:42px;height:42px;align-items:center;justify-content:center;flex-direction:column;gap:5px;border:0;background:#edf4ff}.iconbtn span{width:20px;height:2px;background:#031c55;border-radius:3px}.overlay{display:none;position:fixed;inset:0;background:#00133288;z-index:19}.notifyBtn{border:0;background:#edf4ff;font-size:18px;width:42px;height:42px;padding:0}.globalBanner{margin-left:255px;padding:12px 28px;background:#0757e8;color:#fff;display:flex;gap:12px;align-items:center}.pathwayCard{display:block;color:inherit;transition:.18s transform,.18s box-shadow}.pathwayCard:hover{transform:translateY(-4px);box-shadow:0 16px 35px #031c5520}.cardFoot{display:flex;justify-content:space-between;align-items:center;margin:18px 0 10px;color:var(--muted)}.cardFoot b{color:var(--blue)}.pathHero{background:#fff;border:1px solid var(--line);border-radius:22px;overflow:hidden;margin:16px 0 24px;display:grid;grid-template-columns:minmax(220px,34%) 1fr}.pathHero img{width:100%;height:100%;min-height:260px;object-fit:cover}.pathHero>div{padding:34px;align-self:center}.pathHero h2{font-size:32px;margin:10px 0}.resourceGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:20px 0}.resourceCard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px;color:var(--text);min-height:240px;display:flex;flex-direction:column}.resourceCard:hover{border-color:#9dbcf3;box-shadow:0 12px 28px #031c5514}.resourceIcon{font-size:38px;margin-bottom:18px}.resourceCard>span{font-size:11px;color:var(--blue);font-weight:800}.resourceCard h3{margin:8px 0}.resourceCard p{color:var(--muted);flex:1}.resourceCard b{color:var(--blue)}.backlink{display:inline-block;margin-bottom:8px;font-weight:800}.calendarTools{flex-wrap:wrap}.monthNav{display:flex;align-items:center;gap:12px}.monthNav h2{min-width:190px;text-align:center;margin:0}.monthCalendar{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:auto}.weekdays,.monthGrid{display:grid;grid-template-columns:repeat(7,minmax(135px,1fr));min-width:945px}.weekdays div{padding:13px;text-align:center;font-weight:800;background:#031c55;color:#fff;border-right:1px solid #ffffff18}.dayCell{min-height:145px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:8px;position:relative;background:#fff}.mutedDay{background:#f7f9fc}.today{box-shadow:inset 0 0 0 2px var(--blue)}.dayNum{font-weight:800;color:#59657c}.dayEvents{display:grid;gap:4px;margin-top:8px}.calEvent{min-height:24px;padding:4px 7px;border-radius:6px;font-size:11px;overflow:hidden;white-space:nowrap;color:#fff;background:#0757e8}.calEvent.local{background:#16a085}.calEvent.class{background:#f39c12}.calEvent.multi{margin-left:-8px;margin-right:-8px;border-radius:0}.calEvent.startSeg{margin-left:0;border-radius:7px 0 0 7px}.calEvent.endSeg{margin-right:0;border-radius:0 7px 7px 0}.calEvent.startSeg.endSeg{border-radius:7px;margin:0}.checkRow{display:grid;grid-template-columns:1fr 1fr;gap:8px}.checkRow label{display:flex;align-items:center;gap:8px;font-weight:600}.announcementPopup{z-index:1000}.announcementPopup>div{padding:32px;text-align:center;position:relative}.popupClose{position:absolute;right:12px;top:12px;border:0;font-size:24px}.announcementPopup .round{margin:auto}.announcementPopup p{color:var(--muted);line-height:1.6}.toast{background:#031c55;color:#fff;padding:14px 18px;border-radius:12px;box-shadow:0 12px 35px #00133244;animation:toastIn .2s ease}#toastHost{position:fixed;right:20px;bottom:20px;z-index:2000;display:grid;gap:10px}@keyframes toastIn{from{transform:translateY(10px);opacity:0}}@media(max-width:1100px){.resourceGrid{grid-template-columns:repeat(2,1fr)}}@media(max-width:900px){.globalBanner{margin-left:0}.overlay.show{display:block}.sidebar{transform:translateX(-100%);transition:.22s}.sidebar.open{transform:none}.pathHero{grid-template-columns:1fr}.pathHero img{max-height:260px}.top .switch select{max-width:150px}}@media(max-width:600px){.resourceGrid{grid-template-columns:1fr}.pathHero>div{padding:22px}.pathHero h2{font-size:26px}.checkRow{grid-template-columns:1fr}.globalBanner{padding:10px 16px;align-items:flex-start;flex-direction:column;gap:3px}.top>div:nth-child(2){max-width:145px}.top>div:nth-child(2) strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.avatar{display:none}}
/* v1.3 — gestion complète, visio et canaux internes */
.sidebar,.shell,.globalBanner,.visioReminder{transition:.22s ease}.sidebar-collapsed .sidebar{transform:translateX(-255px)}.sidebar-collapsed .shell{margin-left:0}.sidebar-collapsed .globalBanner,.sidebar-collapsed .visioReminder{margin-left:0}.iconbtn{display:flex}.cardMain{display:block;color:inherit}.adminCardActions{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);background:#f9fbff}.adminCardActions form{display:inline}.btn.danger{color:#b42318;border-color:#f1b7b2;background:#fff5f4}.statusLine{display:flex;justify-content:space-between;gap:8px}.statusBadge{display:inline-flex;align-items:center;width:max-content;padding:5px 9px;border-radius:99px;background:#eef2f7;color:#475467;font-size:11px;font-weight:900;text-transform:uppercase}.statusBadge.published,.statusBadge.confirmed,.statusBadge.live{background:#dcfae6;color:#067647}.statusBadge.draft,.statusBadge.upcoming,.statusBadge.scheduled{background:#eef4ff;color:#3538cd}.statusBadge.archived,.statusBadge.ended{background:#f2f4f7;color:#475467}.statusBadge.cancelled{background:#fee4e2;color:#b42318}.statusBadge.postponed,.statusBadge.moved{background:#fef0c7;color:#b54708}.resourceCardWrap{background:#fff;border-radius:18px;overflow:hidden;border:1px solid var(--line)}.resourceCardWrap .resourceCard{border:0;border-radius:0}.form2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dialogBody{padding:26px;position:relative}.notice{background:#eef4ff;border-left:4px solid var(--blue);padding:12px;border-radius:9px;margin:12px 0}.notice.internal{background:#fff8e8;border-color:#eaaa08}.calEvent{width:100%;text-align:left;border:0;cursor:pointer}.calEvent.cancelled{text-decoration:line-through;opacity:.6}.calEvent.postponed,.calEvent.moved{background:#b54708}.visioReminder{margin-left:255px;background:#fff4d6;color:#7a4b00;padding:11px 28px;display:flex;gap:14px;align-items:center;border-bottom:1px solid #f5d58b}.visioReminder.live{background:#dff8e8;color:#075f35}.visioReminder b:last-child{margin-left:auto}.visioGrid{grid-template-columns:repeat(3,1fr)}.visioCard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px}.visioHero{background:#fff;border:1px solid var(--line);border-radius:18px;padding:24px;display:flex;justify-content:space-between;gap:20px;margin-bottom:18px}.visioLayout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px}.videoStage,.liveChat{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden}.videoEmbed{position:relative;padding-top:56.25%;background:#06143a}.videoEmbed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.hint{padding:12px 18px;color:var(--muted);font-size:13px}.externalMeet,.emptyState{min-height:420px;display:grid;place-content:center;text-align:center;padding:30px}.liveChat{display:grid;grid-template-rows:auto 1fr auto;max-height:720px}.liveChat h3{padding:18px;margin:0;border-bottom:1px solid var(--line)}.liveChat .messages{max-height:none}.liveChat .composer{flex-direction:column}.visioAlerts{display:grid;gap:10px;margin:18px 0}.visioAlertCard{background:#fff;border:1px solid var(--line);border-left:5px solid var(--blue);border-radius:14px;padding:16px;display:flex;align-items:center;gap:15px}.visioAlertCard.live{border-left-color:#079455;background:#f0fdf4}.visioAlertCard .btn{margin-left:auto}@media(max-width:1000px){.visioLayout{grid-template-columns:1fr}.visioGrid{grid-template-columns:1fr 1fr}.liveChat{max-height:560px}}@media(max-width:900px){.sidebar-collapsed .sidebar{transform:translateX(-100%)}.visioReminder{margin-left:0}.sidebar-collapsed .shell{margin-left:0}}@media(max-width:600px){.form2{grid-template-columns:1fr}.visioGrid{grid-template-columns:1fr}.visioReminder{align-items:flex-start;flex-direction:column;gap:3px;padding:10px 16px}.visioReminder b:last-child{margin-left:0}.visioHero{flex-direction:column}.adminCardActions{flex-wrap:wrap}}
/* v1.4 — écrans d'administration fiables et calendrier réparé */
.editorCard{background:#fff;border:1px solid var(--line);border-radius:20px;padding:28px;max-width:900px}.editorCard form{display:grid;gap:14px}.editorCard label{display:grid;gap:7px;font-weight:700}.editorCard textarea{min-height:120px}.editorCard hr{border:0;border-top:1px solid var(--line);margin:24px 0}.managementList article{grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center}.rowActions{display:flex;gap:8px;flex-wrap:wrap}.rowActions form{display:inline}.statusBadge.active{background:#dcfae6;color:#067647}.statusBadge.inactive,.statusBadge.ended{background:#f2f4f7;color:#475467}.statusBadge.scheduled{background:#eef4ff;color:#3538cd}.dayNum{display:block;min-height:20px}.calEvent{display:block;text-decoration:none}.monthGrid{grid-auto-rows:minmax(145px,auto)}
@media(max-width:760px){.editorCard{padding:18px}.managementList article{grid-template-columns:auto 1fr}.managementList article>.statusBadge,.managementList article>.rowActions{grid-column:2}.monthCalendar{border-radius:12px}.weekdays,.monthGrid{grid-template-columns:repeat(7,minmax(120px,1fr));min-width:840px}}

.calEvent{width:100%;border:0;text-align:left;cursor:pointer;font:inherit}.eventDialog{width:min(760px,94vw);max-height:90vh;overflow:auto;border:0;border-radius:22px;padding:24px}.modalHead{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.modalHead .iconbtn{font-size:28px}.eventDetails{display:grid;gap:12px}.note{padding:14px;border-radius:14px;background:#eef5ff}.note.internal{background:#fff4d8}.inlineEditor{margin-top:20px}.inlineEditor summary{display:inline-flex;cursor:pointer;list-style:none}.inlineEditor form{margin-top:18px}.uploadChoice{display:grid;grid-template-columns:1fr 1fr;gap:14px}.formPreview{max-width:240px;max-height:160px;object-fit:cover;border-radius:14px}.toolbar small{display:block;margin-top:4px}@media(max-width:700px){.uploadChoice{grid-template-columns:1fr}.eventDialog{padding:16px}.monthCalendar{overflow-x:auto}.monthGrid,.weekdays{min-width:760px}}

/* v1.6 — bandeaux globaux et connexion dynamique aux données Établissement */
.globalBanner,.visioReminder{margin-left:0!important;width:100%;}
.globalBanner{position:relative;padding:12px 22px;background:rgba(7,87,232,.12);color:#123b78;border-bottom:1px solid rgba(7,87,232,.16);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;align-items:center;gap:14px;}
.globalBanner .bannerContent{display:flex;align-items:center;gap:12px;min-width:0;flex:1;}
.globalBanner .bannerContent strong{color:#073b91;white-space:nowrap;}
.globalBanner .bannerContent span{overflow:hidden;text-overflow:ellipsis;}
.globalBanner .bannerLink{font-weight:800;white-space:nowrap;}
.bannerClose{width:34px;height:34px;min-width:34px;padding:0;border:0;background:rgba(255,255,255,.58);color:#17345f;border-radius:50%;font-size:22px;line-height:1;display:grid;place-items:center;}
.visioReminder{background:rgba(255,193,7,.14);border-bottom-color:rgba(181,113,0,.16);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);}
.visioReminder.live{background:rgba(18,183,106,.13);}
@media(max-width:600px){.globalBanner .bannerContent{display:grid;gap:2px}.globalBanner .bannerContent strong{white-space:normal}.globalBanner{flex-direction:row;align-items:flex-start}.bannerClose{margin-left:auto}}

/* v1.8 — espace public épuré et administration séparée */
.sidebar{overflow:hidden}.sidebar nav{flex:1;align-content:start}.sidebarBottom{margin-top:auto;padding:12px 14px 18px;display:grid;gap:8px}.sidebarBottom .logout{margin:0}.publicNav{padding-top:14px!important}.sidebar nav a,.adminEntry,.backPublic{display:flex;align-items:center;gap:12px}.navIcon{width:25px;min-width:25px;text-align:center;font-size:18px}.adminEntry,.backPublic{padding:13px 15px;border-radius:13px;font-weight:850}.adminEntry{background:linear-gradient(135deg,#1e73ff,#0651d7);color:#fff;box-shadow:0 10px 25px #001c5d44}.adminEntry:hover{transform:translateY(-1px);background:linear-gradient(135deg,#3984ff,#0757e8)}.backPublic{background:#ffffff16;color:#fff;border:1px solid #ffffff20}.backPublic:hover{background:#ffffff22}.logout.subtle{background:transparent;border-color:#ffffff15;color:#bcd0f9}.sidebarContext{margin:0 16px 10px;padding:15px;border-radius:15px;background:#ffffff10;border:1px solid #ffffff12;display:grid;gap:4px}.sidebarContext span{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#8facf0}.sidebarContext strong{color:#fff}.navGroup{font-size:10px;text-transform:uppercase;letter-spacing:.11em;color:#7795d9;padding:20px 15px 6px}.adminNav{gap:3px!important}.admin-mode .sidebar{background:linear-gradient(180deg,#071837,#020a19)}.admin-mode .sidebar nav a.active{background:linear-gradient(90deg,#1d6cff33,#ffffff10);box-shadow:inset 3px 0 #4c8cff}.topIdentity{display:grid}.eyebrow{font-size:10px;letter-spacing:.13em;font-weight:900;color:#7890b7}.pagehead{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.pagehead h1{margin-top:5px}.btn.quiet{background:#fff;color:#34415b}.adminPagehead{padding-bottom:4px}.adminWelcome{background:linear-gradient(125deg,#06183c,#0b4db9);border-radius:24px;padding:32px;color:#fff;display:flex;justify-content:space-between;align-items:center;gap:25px;box-shadow:0 18px 50px #07265b27}.adminWelcome h2{font-size:30px;max-width:760px;margin:10px 0}.adminWelcome p{max-width:780px;color:#d9e7ff;margin:0;line-height:1.6}.adminPill{background:#ffffff19;color:#fff}.adminWelcomeActions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.adminWelcomeActions .btn:not(.primary){background:#ffffff13;color:#fff;border-color:#ffffff28}.adminStats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0}.adminStats>a{background:#fff;border:1px solid var(--line);border-radius:18px;padding:21px;display:grid;gap:5px;color:var(--text);transition:.16s}.adminStats>a:hover{transform:translateY(-2px);box-shadow:0 12px 30px #031c5513;border-color:#b6c9ea}.adminStats span{font-weight:750;color:#52617a}.adminStats b{font-size:31px;color:#082867}.adminStats small{color:var(--muted)}.adminWorkflowGrid{display:grid;grid-template-columns:.92fr 1.08fr;gap:18px}.adminPanel{background:#fff;border:1px solid var(--line);border-radius:20px;padding:22px;margin-bottom:18px}.adminPanel h2{margin:4px 0 0}.quickActions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quickActions>a{display:flex;align-items:center;gap:13px;border:1px solid var(--line);border-radius:15px;padding:15px;color:var(--text);background:#fbfcff}.quickActions>a:hover{border-color:#9dbcf3;background:#f5f9ff}.quickActions div{display:grid;gap:3px}.quickActions small{color:var(--muted)}.quickIcon{width:40px;height:40px;border-radius:12px;background:#eaf2ff;color:#0757e8;display:grid;place-items:center;font-size:21px;font-weight:900}.adminEventLine{display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:center;gap:13px;padding:12px 0;border-top:1px solid var(--line);color:var(--text)}.adminEventLine time{width:48px;height:52px;border-radius:12px;background:#edf4ff;color:#0757e8;display:grid;place-content:center;text-align:center;line-height:1}.adminEventLine time b{font-size:20px}.adminEventLine time span{font-size:9px;font-weight:900;margin-top:3px}.adminEventLine>div{display:grid;gap:4px}.adminEventLine small{color:var(--muted)}.emptyCompact{padding:25px;text-align:center;color:var(--muted);background:#f7f9fc;border-radius:14px}.moduleGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.moduleGrid>a{border:1px solid var(--line);border-radius:16px;padding:19px;display:grid;gap:7px;color:var(--text);min-height:155px}.moduleGrid>a:hover{background:#f6f9ff;border-color:#a9c2ef}.moduleGrid>a>span{font-size:26px;color:#0757e8}.moduleGrid small{color:var(--muted);line-height:1.45}.admin-mode main{max-width:1600px}.admin-mode body,.admin-mode{background:#f3f6fb}
@media(max-width:1100px){.adminStats{grid-template-columns:1fr 1fr}.adminWorkflowGrid{grid-template-columns:1fr}.moduleGrid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.pagehead{display:block}.pagehead .btn{margin-bottom:15px}.adminWelcome{display:grid;padding:24px}.adminWelcome h2{font-size:25px}.adminWelcomeActions{justify-content:flex-start}.adminStats{grid-template-columns:1fr 1fr}.quickActions{grid-template-columns:1fr}.moduleGrid{grid-template-columns:1fr 1fr}.adminEventLine{grid-template-columns:50px 1fr}.adminEventLine .statusBadge{grid-column:2}}
@media(max-width:460px){.adminStats,.moduleGrid{grid-template-columns:1fr}.adminWelcomeActions .btn{width:100%;text-align:center}.switch{max-width:120px}.switch select{max-width:120px}}

/* v1.9 — vues administratives dédiées et écrans Branches / Classes améliorés */
.adminIntroCard{background:linear-gradient(125deg,#06183c,#0b4db9);color:#fff;border-radius:22px;padding:28px 30px;display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:18px;box-shadow:0 16px 42px #06245b20}.adminIntroCard h2{font-size:27px;margin:7px 0 8px}.adminIntroCard p{margin:0;max-width:850px;color:#dce8ff;line-height:1.55}.adminIntroCard .eyebrow{color:#a9c5ff}.compactStats{grid-template-columns:repeat(4,minmax(0,1fr))}.compactStats>div{background:#fff;border:1px solid var(--line);border-radius:17px;padding:19px;display:grid;gap:4px}.compactStats>div b{font-size:25px;color:#082867;overflow:hidden;text-overflow:ellipsis}.branchGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.branchCard{background:#fff;border:1px solid var(--line);border-radius:21px;padding:22px;display:grid;gap:17px;box-shadow:0 8px 25px #031c5508}.branchCard.isInactive{opacity:.72}.branchCard>header{display:flex;gap:14px;align-items:flex-start}.branchCard h2{margin:6px 0 3px}.branchCard p{margin:0;color:var(--muted)}.branchIcon{width:48px;height:48px;border-radius:14px;background:#edf4ff;color:#0757e8;display:grid;place-items:center;font-size:23px;font-weight:900}.linkedSchool{background:#f7f9fd;border:1px solid #e7edf6;border-radius:15px;padding:15px;display:grid;gap:4px}.linkedSchool span{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#7b879d;font-weight:800}.linkedSchool small{color:var(--muted)}.branchActions{display:flex;gap:9px;flex-wrap:wrap}.localAdminBox{border-top:1px solid var(--line);padding-top:13px}.localAdminBox summary{cursor:pointer;font-weight:800;color:#375078}.stackForm{display:grid;gap:10px;margin-top:12px}.wideDialog{width:min(760px,94vw)}.form2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.checkLine{display:flex;align-items:center;gap:10px}.checkLine input{width:auto}.passwordConfirm{display:flex;gap:14px;align-items:center;background:#fff8e8;border:1px solid #f1dfaf;border-radius:15px;padding:14px}.passwordConfirm>span{font-size:25px}.passwordConfirm label{flex:1}.classSyncIntro .syncBadge{min-width:150px;background:#ffffff14;border:1px solid #ffffff22;border-radius:16px;padding:14px 18px;display:grid;text-align:center}.syncBadge span{font-size:11px;color:#c9dcff}.syncBadge strong{font-size:28px}.classGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.classCard{background:#fff;border:1px solid var(--line);border-radius:20px;padding:20px;display:grid;gap:18px;box-shadow:0 8px 24px #031c5508}.classCardTop{display:flex;align-items:center;gap:13px}.classAvatar{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#0757e8,#082867);color:#fff;display:grid;place-items:center;font-weight:900}.classCard h2{margin:7px 0 0}.classMetrics{display:grid;grid-template-columns:1fr 1fr;gap:10px}.classMetrics>div{background:#f6f8fc;border-radius:13px;padding:13px;display:grid}.classMetrics b{font-size:24px;color:#082867}.classMetrics span{font-size:12px;color:var(--muted)}.classCard footer{padding:0;display:flex;justify-content:space-between;align-items:center;font-size:12px}.adminEmpty{background:#fff;border:1px solid var(--line);border-radius:20px;padding:45px;text-align:center}.adminEmpty>div{font-size:42px;color:#0757e8}.adminEmpty p{max-width:650px;margin:10px auto 20px;color:var(--muted)}
@media(max-width:1050px){.branchGrid{grid-template-columns:1fr}.classGrid{grid-template-columns:1fr 1fr}.compactStats{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.adminIntroCard{display:grid;padding:22px}.adminIntroCard .btn{width:100%;text-align:center}.form2{grid-template-columns:1fr}.classGrid,.compactStats{grid-template-columns:1fr}.passwordConfirm{align-items:flex-start}.classSyncIntro .syncBadge{min-width:0}}


/* Logs, présence et appel */
.logOnlineGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}.logOnlineGrid article{padding:16px;border:1px solid rgba(20,52,105,.12);border-radius:16px;background:rgba(245,249,255,.75);display:flex;flex-direction:column;gap:5px}.logOnlineGrid span,.logOnlineGrid small{color:#65728a}.filterBar{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:18px 0}.filterBar label{min-width:150px}.logTable td{vertical-align:top}.logTable td small,.table td small{display:block;color:#718096;margin-top:4px}.logTable pre{max-width:520px;white-space:pre-wrap;overflow:auto;font-size:12px}.attendanceSummary{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:12px;margin-bottom:18px}.attendanceSummary>div{background:white;border:1px solid rgba(20,52,105,.12);border-radius:18px;padding:18px;display:flex;flex-direction:column}.attendanceSummary b{font-size:28px;color:#09295f}.attendanceSummary span{color:#718096}.attendanceBadge{display:inline-flex;padding:6px 10px;border-radius:999px;font-weight:700;background:#edf2f7}.attendanceBadge.present{background:#dcfce7;color:#166534}.attendanceBadge.late{background:#fef3c7;color:#92400e}.attendanceBadge.absent{background:#fee2e2;color:#991b1b}.attendanceBadge.left_early{background:#ffedd5;color:#9a3412}.attendanceBadge.excused{background:#e0e7ff;color:#3730a3}.inlineAttendance{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.miniCheck{display:flex!important;flex-direction:row!important;align-items:center;gap:5px!important;font-size:12px}.btn.small{padding:7px 10px;font-size:12px}.formStack{display:grid;gap:14px;max-width:720px}@media(max-width:800px){.attendanceSummary{grid-template-columns:repeat(2,1fr)}.logTable{min-width:980px}}

/* ===== Logs administratifs lisibles — v2.1 ===== */
.logLegend{display:flex;gap:9px;flex-wrap:wrap;margin:18px 0}.logLegend span,.logLevelBadge{display:inline-flex;align-items:center;border-radius:999px;padding:6px 10px;font-size:11px;font-weight:900}.logLegend .critical,.logLevelBadge.critical{background:#ffe8ea;color:#a70d21}.logLegend .warning,.logLevelBadge.warning{background:#fff3d7;color:#895b00}.logLegend .success,.logLevelBadge.success{background:#e6f7ed;color:#176c3b}.logLegend .info,.logLevelBadge.info{background:#eaf2ff;color:#174f9e}.logList{display:grid;gap:11px}.logCard{position:relative;display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:14px;border:1px solid var(--line);border-radius:17px;padding:16px;background:#fff}.logCard:hover{box-shadow:0 10px 26px #061d4a12;transform:translateY(-1px)}.logLevelDot{height:100%;min-height:58px;border-radius:999px}.level-critical .logLevelDot{background:#d3263d}.level-warning .logLevelDot{background:#e8a20d}.level-success .logLevelDot{background:#2b9b5d}.level-info .logLevelDot{background:#4c83d8}.logCardMain{min-width:0}.logCardTop{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.logCardTop time{font-size:12px;color:var(--muted)}.logCard h3{font-size:16px;margin:8px 0 5px}.logCard p{margin:3px 0}.logUri{font-size:12px;color:#52617a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modalOverlay[hidden]{display:none!important}.modalOverlay{position:fixed;inset:0;background:#03102899;backdrop-filter:blur(5px);z-index:10000;display:grid;place-items:center;padding:20px}.modalCard{background:#fff;border-radius:22px;width:min(900px,100%);max-height:90vh;overflow:auto;padding:22px;box-shadow:0 28px 100px #020b1f66}.modalHead{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;position:sticky;top:-22px;background:#fff;padding:22px 0 15px;z-index:2;border-bottom:1px solid var(--line)}.modalClose{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:#f6f8fc;font-size:25px;cursor:pointer}.logDetailSummary{display:flex;justify-content:space-between;gap:12px;padding:16px 0;font-size:14px}.logDetailGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.logDetailGrid>div{border:1px solid var(--line);border-radius:13px;padding:12px;display:grid;gap:5px;min-width:0}.logDetailGrid span{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:850}.logDetailGrid strong{font-size:13px;overflow-wrap:anywhere}.rawJson{margin-top:16px;border:1px solid var(--line);border-radius:14px;overflow:hidden}.rawJson summary{cursor:pointer;padding:13px 15px;font-weight:850;background:#f7f9fd}.rawJson pre{margin:0;padding:16px;background:#071225;color:#dce9ff;overflow:auto;font-size:12px;line-height:1.55}.modalOpen{overflow:hidden}.securityNotice{margin:16px 0;padding:16px;border-radius:15px;background:#edf5ff;border:1px solid #c9defd}.securityNotice p{margin:5px 0 0;color:#455774}.emptyState{text-align:center;padding:35px 15px;color:var(--muted)}
@media(max-width:760px){.logCard{grid-template-columns:7px minmax(0,1fr)}.logCard .logDetailsBtn{grid-column:2;width:100%;margin-top:5px}.logDetailGrid{grid-template-columns:1fr}.logDetailSummary{display:grid}.modalOverlay{padding:8px}.modalCard{border-radius:17px;padding:16px}.modalHead{top:-16px;padding-top:16px}.logCardTop{align-items:flex-start}}
