/* EasyStudies Extranet DEV V1.3.0 — interface mobile-first, sans dependances externes */
:root{color-scheme:light;--blue:#155a9a;--blue-strong:#103e70;--blue-soft:#e7f2fd;--orange:#ed8728;--orange-strong:#d66a12;--orange-soft:#fff0df;--ink:#223248;--muted:#5e6f83;--bg:#f5f8fd;--card:#fff;--line:#dfe6f1;--shadow:0 9px 30px rgba(23,57,99,.07);--radius:17px;--tap:44px;--good:#23673b;--warn:#995d15;--danger:#aa3340;--nav-height:72px;--max:1370px}
*,*::before,*::after{box-sizing:border-box}
html{font-size:16px;scroll-behavior:auto;scroll-padding-top:92px}
body{margin:0;min-width:0;width:100%;max-width:100%;overflow-x:clip;font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);color:var(--ink);line-height:1.5;-webkit-text-size-adjust:100%}
body.nav-open{overflow:hidden}
button,input,select,textarea{font:inherit;max-width:100%}
button{min-height:var(--tap);background:var(--blue);color:#fff;border:1px solid transparent;border-radius:11px;padding:10px 16px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-align:center;line-height:1.3;transition:background .12s,box-shadow .12s,transform .12s}
button:hover{background:var(--blue-strong)}button:active{transform:translateY(1px)}button:disabled{opacity:.52;cursor:not-allowed;transform:none}
button:focus-visible,summary:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #ffad54;outline-offset:3px}
button.secondary{background:var(--blue-soft);color:var(--blue-strong);border-color:#cee3f8}button.secondary:hover{background:#d4eafb}
button.danger{background:#a83b4b}button.danger:hover{background:#8c2938}
button .es-icon{flex:none;width:18px;height:18px}button.icon-button{width:44px;height:44px;min-width:44px;padding:0;background:transparent;color:inherit;border-radius:12px}
button.icon-button:hover{background:#ffffff21}
a{color:var(--blue);text-underline-offset:3px}h1,h2,h3{line-height:1.25;letter-spacing:-.025em;overflow-wrap:anywhere}h1{font-size:clamp(1.37rem,2.3vw,1.9rem);margin:0 0 9px}h2{font-size:1.18rem}h3{font-size:1.04rem}p{overflow-wrap:anywhere}small{font-size:.78rem}
.es-icon{display:inline-block;width:21px;height:21px;vertical-align:middle;flex-shrink:0}
.top{background:linear-gradient(118deg,#123f76 0%,#1767a7 77%,#1b74ab 100%);color:white;min-height:var(--nav-height);position:sticky;top:0;z-index:40;box-shadow:0 4px 18px #0a315a18}
.top-inner{width:min(100%,var(--max));min-height:var(--nav-height);margin:0 auto;padding:9px clamp(12px,3vw,28px);display:flex;align-items:center;justify-content:space-between;gap:10px}
.brand-lockup,.userbar{display:flex;align-items:center;gap:12px;min-width:0}.brand-emblem{width:46px;height:46px;flex:none;display:grid;place-items:center;background:#ffffff26;border:1px solid #ffffff30;border-radius:13px}.brand-emblem svg{width:27px;height:27px}.brand-text{min-width:0;line-height:1.2}.brand{font-size:clamp(1.19rem,2.3vw,1.45rem);font-weight:850;letter-spacing:-.05em;white-space:nowrap}.brand span{color:#ffac59}.brand-text small{display:block;font-size:.62rem;letter-spacing:.09em;font-weight:700;opacity:.92;margin-top:5px;white-space:nowrap}.devflag{font-weight:800;display:inline-block;background:var(--orange);color:#3c2108;border-radius:6px;padding:3px 6px;font-size:.65rem;letter-spacing:0;margin-left:4px;vertical-align:2px}.identity{display:flex;flex-direction:column;align-items:flex-end;min-width:0}.identity strong{font-size:.86rem;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.identity small{opacity:.81;font-size:.73rem}.menu-toggle{display:none!important}.nav-scrim[hidden]{display:none!important}
.layout{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:calc(100vh - var(--nav-height));max-width:var(--max);margin:auto;position:relative}
.sidebar{background:linear-gradient(#f0f5fc,#f6f9fd);border-right:1px solid var(--line);padding:26px 12px;position:sticky;top:var(--nav-height);height:calc(100dvh - var(--nav-height));overflow-y:auto;display:flex;flex-direction:column;gap:4px}
.nav-heading{font-size:.68rem;letter-spacing:.11em;font-weight:800;color:#728499;padding:0 15px 14px}.sidebar button{justify-content:flex-start;background:transparent;color:#425a76;gap:13px;padding:13px 15px;width:100%;font-size:.9rem;border-radius:12px;font-weight:650;text-align:left;min-height:50px}.sidebar button svg{color:#567a9e}.sidebar button:hover{background:#e2eefb;color:#173e70}.sidebar button.active{background:#dbeafa;color:#104c84;box-shadow:inset 3px 0 0 var(--orange)}.sidebar button.active svg{color:var(--orange-strong)}.nav-spacer{flex:1}.sidebar-note{display:flex;align-items:center;gap:8px;color:#7c8796;font-size:.72rem;padding:9px 12px;margin:0}.sidebar-note svg{width:15px;height:15px}
.main{padding:clamp(15px,2.6vw,32px);min-width:0;max-width:100%;width:100%;grid-column:2}.context-back{grid-column:2;max-height:0;z-index:1;position:relative}.context-back .back-link{position:absolute;right:clamp(15px,2.6vw,32px);top:22px;border:1px solid var(--line);background:#fff;color:var(--blue-strong);font-size:.8rem;min-height:36px;padding:5px 10px;box-shadow:0 2px 8px #142e4d0b}.context-back .back-link:hover{background:var(--blue-soft)}
.main h1{padding-right:105px;margin-bottom:9px}.main p.lead{margin:0 0 23px;color:var(--muted);font-size:.96rem}.main>h1::before{content:'';display:inline-block;background:var(--orange);width:5px;height:.9em;margin-right:11px;border-radius:5px;vertical-align:-.04em}
.card{min-width:0;max-width:100%;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(15px,2vw,24px);margin-bottom:18px;box-shadow:var(--shadow);overflow-wrap:anywhere}.card .card{box-shadow:none;background:#fbfdff;border-color:#e6ebf2;padding:15px;margin:12px 0}.card h2{margin-top:0;color:#184774}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,205px),1fr));gap:14px}.grid>.card{margin:0 0 16px}.metric{position:relative;overflow:hidden}.metric>span{color:var(--muted);font-size:.84rem}.metric>strong{display:block;color:var(--blue-strong);font-size:clamp(1.8rem,3.3vw,2.4rem);letter-spacing:-.055em;margin:5px 0 14px}.metric:after{content:'';position:absolute;background:radial-gradient(circle,#ffdcae 0%,transparent 70%);width:130px;height:130px;top:-66px;right:-55px;pointer-events:none;opacity:.55}
.muted{color:var(--muted)}.small{font-size:.8rem}.pill{display:inline-flex;align-items:center;border-radius:100px;padding:4px 11px;background:#e5f0fc;color:#154d84;font-size:.73rem;font-weight:750;max-width:100%;white-space:normal}.pill.published{background:#e2f4e6;color:var(--good)}.pill.draft{background:var(--orange-soft);color:var(--warn)}
.toolbar,.buttonrow{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin:12px 0 19px;min-width:0}.toolbar input,.toolbar .stack{flex:1;min-width:min(100%,160px)}.buttonrow{margin:12px 0 0}.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:14px}.field{min-width:0;display:flex;flex-direction:column;gap:7px;margin-bottom:13px}.field label{font-size:.85rem;font-weight:730;color:#314a66}.field input,.field textarea,.field select,textarea,input,select{width:100%;border:1px solid #c7d3e3;border-radius:11px;padding:12px 13px;min-height:45px;background:#fff;color:var(--ink);font-size:1rem}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue)}.field textarea,textarea{min-height:100px;resize:vertical}.field input[type=checkbox],.field input[type=radio],input[type=checkbox],input[type=radio]{min-height:auto;width:auto;accent-color:var(--blue)}.field input[type=number],input[type=number]{max-width:100%}.checkrow{display:flex;flex-wrap:wrap;gap:8px}.checkrow label{display:inline-flex;align-items:center;gap:8px;border:1px solid #d4e4f4;background:#f3f8fd;padding:8px 12px;border-radius:10px;max-width:100%}
.sectionhead{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:14px}.sectionhead h2{margin:0;font-size:1.13rem}.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.two>.card{min-width:0}.stack>*+*{margin-top:10px}
/* Desktop : tableaux natifs, sans largeur minimale imposee */
.tablewrap{max-width:100%;width:100%;overflow-x:auto;overflow-y:visible}table{border-collapse:collapse;table-layout:auto;width:100%;max-width:100%;font-size:.85rem}th,td{text-align:left;border-bottom:1px solid var(--line);padding:12px 9px;vertical-align:middle;overflow-wrap:anywhere;word-break:normal}th{font-size:.7rem;color:var(--muted);background:#f6faff;text-transform:uppercase;letter-spacing:.025em;white-space:normal}td button{padding:8px 12px;min-height:38px;font-size:.76rem}.row-actions-menu>summary{display:none}.row-actions-content{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.row-actions-content button{white-space:normal}
.empty{padding:25px;color:var(--muted);text-align:center;border:1px dashed #ccd9e8;border-radius:12px;background:#fafcff}.alert{padding:13px 14px;border-radius:10px;margin:15px 0;background:#ffe9e9;border:1px solid #efc6c8;color:#98263c;overflow-wrap:anywhere}.success{background:#e8f7ed;color:#186039;border-color:#b1dfbc}
.rating{border:1px solid #dfebf6;background:#f0f6fc;border-radius:13px;padding:14px;text-align:center}.rating b{display:block;color:var(--blue-strong);font-size:1.6rem;margin:7px 0}.rating input{width:100%;padding:0;min-height:30px;accent-color:var(--orange)}
.loginwrap{display:flex;min-height:100dvh;align-items:center;justify-content:center;padding:20px;background:radial-gradient(circle at 80% 15%,#f5ac55a6,transparent 25%),linear-gradient(140deg,#123f77 0%,#1b6ba6 100%)}.login{max-width:448px;width:100%;border-radius:24px;background:white;padding:clamp(22px,6vw,38px);box-shadow:0 22px 56px #082e526b}.login h1{color:var(--blue-strong);margin:0 0 9px}.login p{color:var(--muted)}.login button[type=submit]{width:100%;margin-top:7px;background:var(--orange);color:#2d200e}.login button[type=submit]:hover{background:#f6a343}.login-brand{display:flex;align-items:center;gap:14px;font-weight:840;font-size:1.45rem;color:var(--blue-strong);letter-spacing:-.04em;margin-bottom:27px}.login-mark{width:48px;height:48px;display:grid;place-items:center;border-radius:13px;color:white;background:var(--blue)}.login-mark svg{width:29px;height:29px}.brand-accent{color:var(--orange-strong)}
.toast{position:fixed;right:16px;bottom:18px;max-width:min(90vw,440px);padding:13px 18px;color:white;background:#123f73;border-left:5px solid var(--orange);border-radius:10px;z-index:180;box-shadow:0 12px 35px #061b3570}.screen-loading{padding:9vh 12px;text-align:center;color:var(--muted)}.errorline{color:var(--danger);font-weight:600}.nowrap{white-space:normal}.clickable{cursor:pointer}.clickable:hover{background:#f5f9ff}.grade-entry-card{border-top:4px solid var(--orange)}.grade-single-form{background:#f8fbff;border:1px solid var(--line);padding:18px;border-radius:14px;margin-top:14px}.grade-single-form h3{margin-top:0}.grade-single-form button[type=submit]{background:var(--orange-strong)}.grade-single-form button[type=submit]:hover{background:#b85d12}
.mobile-tabbar{display:none}.nav-scrim{display:none}
@media(max-width:1099px){.layout{grid-template-columns:208px minmax(0,1fr)}.sidebar{padding:19px 8px}.sidebar button{padding:11px}.main{padding:18px}.two{gap:10px}}
@media(max-width:800px){
 :root{--nav-height:64px}
 .menu-toggle{display:inline-flex!important}.brand-emblem{display:none}.top-inner{padding:7px 12px}.brand-lockup{gap:8px}.brand{font-size:1.22rem}.brand-text small{font-size:.55rem}.identity{max-width:150px}.identity strong{font-size:.75rem}.identity small{font-size:.68rem}
 .layout{display:block;min-height:calc(100dvh - var(--nav-height));max-width:100%}.main{padding:16px 12px calc(90px + env(safe-area-inset-bottom,0px));width:100%;max-width:100%}
 .main h1{padding-right:0}.main h1{font-size:1.42rem}.main p.lead{font-size:.87rem}
 .context-back{position:relative;max-height:none;display:block;margin:11px 12px 0}.context-back .back-link{position:static;min-height:38px}
 .sidebar{position:fixed;z-index:85;top:0;bottom:0;left:0;height:100dvh;width:min(85vw,310px);padding:24px 14px;transform:translateX(-110%);transition:transform .2s ease;background:#fff;box-shadow:10px 0 28px #06274530;border-right:1px solid var(--line);overscroll-behavior:contain}
 .sidebar.is-open{transform:translateX(0)}.sidebar button{min-height:52px;font-size:.94rem}.nav-heading{padding:12px 15px 16px}.nav-scrim:not([hidden]){display:block;position:fixed;inset:0;background:#0b1e34a8;z-index:80}
 .mobile-tabbar{display:flex;position:fixed;z-index:35;bottom:0;left:0;right:0;min-height:calc(65px + env(safe-area-inset-bottom,0px));padding:7px max(4px,env(safe-area-inset-left,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(4px,env(safe-area-inset-right,0px));background:#fff;border-top:1px solid #dce5ef;box-shadow:0 -6px 22px #19436c12;align-items:stretch;justify-content:space-around;gap:2px}
 .mobile-tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:11px;background:none;color:#5c7289;padding:4px 2px;gap:3px;min-width:0;min-height:49px;border:0;font-weight:650}
 .mobile-tabbar button svg{width:21px;height:21px}.mobile-tabbar button span{font-size:clamp(.61rem,2.5vw,.72rem);overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.mobile-tabbar button.active{background:#eaf3fc;color:#155a9a}.mobile-tabbar button.active svg{stroke:var(--orange-strong)}
 .card{padding:15px;margin-bottom:14px}.two{grid-template-columns:1fr;gap:0}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.grid>.card{margin:0 0 5px}.metric>strong{font-size:1.75rem}.metric>button{padding:9px;width:100%;font-size:.78rem}
 /* Les tableaux deviennent des cartes empilees : aucun balayage horizontal */
 .tablewrap{overflow:visible!important;min-width:0}.tablewrap table,.tablewrap tbody,.tablewrap tr,.tablewrap td{display:block;width:100%!important;min-width:0!important;max-width:100%!important}.tablewrap thead{display:none!important}.tablewrap table{border:0!important}.tablewrap tbody{display:grid;grid-template-columns:1fr;gap:10px}
 .tablewrap tr{border:1px solid #dfebf5;background:#fff;border-radius:14px;padding:10px 12px;box-shadow:0 3px 10px #163c650a}
 .tablewrap td{border:0!important;display:flex;justify-content:space-between;align-items:flex-start;gap:9px;flex-wrap:wrap;padding:6px 0;line-height:1.35;overflow-wrap:anywhere;word-break:break-word;white-space:normal!important}
 .tablewrap td+td{border-top:1px solid #eff2f7!important}.tablewrap td::before{content:attr(data-label);color:#6b7c8e;font-size:.76rem;font-weight:700;max-width:43%;flex:0 0 39%;min-width:0}
 .tablewrap td:last-child{align-items:center}.tablewrap td button:not(.mobile-tab){min-height:39px;max-width:100%;white-space:normal}
 .tablewrap td>.row-actions-menu{margin-left:auto;min-width:0;max-width:100%}.row-actions-menu{position:relative}.row-actions-menu>summary{list-style:none;display:inline-flex;align-items:center;gap:7px;padding:7px 12px;min-height:40px;cursor:pointer;border-radius:10px;border:1px solid #ccdbea;color:var(--blue-strong);background:#eff6fe;font-weight:750;font-size:.8rem}.row-actions-menu>summary::-webkit-details-marker{display:none}.row-actions-menu>summary .es-icon{width:20px;height:20px}
 .row-actions-menu[open]>.row-actions-content{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:8px;margin-top:7px;padding:9px;border:1px solid #dbe7f5;background:#f8fbff;border-radius:11px;box-shadow:0 5px 15px #12345812}.row-actions-content button{width:100%;justify-content:flex-start;text-align:left}
 .sectionhead{align-items:flex-start}.sectionhead button{max-width:100%}.toolbar{gap:8px}.toolbar>button{max-width:100%}.buttonrow{gap:8px}.grade-single-form{padding:14px}
 .loginwrap{padding:15px}.login{border-radius:20px}
}
@media(max-width:370px){.brand{font-size:1.07rem}.brand-text small{font-size:.49rem}.identity strong{max-width:85px}.identity small{font-size:.62rem}.userbar{gap:4px}.main{padding-left:10px;padding-right:10px}.grid{grid-template-columns:1fr 1fr;gap:6px}.grid>.card{padding:12px}.metric>strong{font-size:1.5rem}.metric>span{font-size:.75rem}.card{padding:12px}.sectionhead{gap:7px}.sectionhead h2{font-size:1.05rem}.toolbar>button{padding:8px 10px}}
@media(max-width:340px){.identity strong{display:none}.brand-text small{letter-spacing:0}.grid{grid-template-columns:1fr}.mobile-tabbar button span{font-size:.59rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
@media(min-width:801px){.row-actions-menu:not([open])>.row-actions-content{display:flex!important}.row-actions-menu{display:block}}
/* Action menus accessibles: commandes toujours accessibles en grand ecran */
.row-action-toggle{display:none!important}
@media(max-width:800px){
 .row-action-toggle{display:inline-flex!important;background:#eff6fe;color:var(--blue-strong);border:1px solid #ccdbea;min-height:40px;padding:7px 11px;font-weight:750;font-size:.8rem}
 .row-actions-menu>.row-actions-content{display:none!important}
 .row-actions-menu.is-open>.row-actions-content{display:flex!important;flex-direction:column;align-items:stretch;gap:8px;margin-top:7px;padding:9px;border:1px solid #dbe7f5;background:#f8fbff;border-radius:11px;box-shadow:0 5px 15px #12345812}
}
/* Empêche tout defilement lateral au sein des listes sur desktop et tablette. */
@media(min-width:801px){.tablewrap{overflow-x:visible}.tablewrap table{table-layout:fixed}.tablewrap td,.tablewrap th{overflow-wrap:anywhere}.row-actions-content{max-width:100%}}
/* V1.4.0 — tableaux de bord, listes compactes, filtres et statistiques */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,175px),1fr));gap:10px;margin:16px 0 18px}
.stat-tile{display:grid;grid-template-columns:22px 1fr;align-items:center;column-gap:9px;row-gap:5px;padding:13px;border:1px solid #dce7f4;background:#fff;border-radius:13px;min-width:0;box-shadow:0 3px 11px #123b5e08}
.stat-tile>.es-icon{color:var(--blue)}.stat-tile span{font-size:.78rem;color:var(--muted);font-weight:680;overflow-wrap:anywhere}.stat-tile strong{font-size:clamp(1.12rem,2.8vw,1.65rem);color:var(--blue-strong);grid-column:1/-1;line-height:1.15}
.compact-list{display:flex;flex-direction:column;gap:7px;margin:10px 0}
.compact-row{display:flex;align-items:center;gap:10px;min-width:0;padding:9px 12px;border:1px solid #deebf6;border-radius:13px;background:white;text-align:left;color:var(--ink);font-weight:400;min-height:58px;width:100%}
button.compact-row{cursor:pointer;background:white;color:var(--ink);box-shadow:none}button.compact-row:hover{background:#f1f7fe;border-color:#afd1f1}button.compact-row .es-icon{flex-shrink:0}
.avatar-icon{flex:0 0 37px;min-height:37px;display:grid;place-items:center;border-radius:11px;background:#e8f3ff;color:#155a9a}.avatar-icon .es-icon{width:19px;height:19px}
.compact-details{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px;overflow-wrap:anywhere}.compact-details strong{font-size:.93rem;line-height:1.28}.compact-details small{color:var(--muted);font-size:.74rem;line-height:1.24}
.score-chip{border-radius:8px;padding:5px 8px;background:#fff2e3;color:#9b4b0b;white-space:nowrap;font-weight:800;font-size:.82rem}
.row-text-action{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;color:var(--blue);font-weight:700;font-size:.79rem}.row-text-action .es-icon{width:16px;height:16px}
.filter-card{display:grid;grid-template-columns:minmax(120px,.65fr) minmax(140px,1.35fr) auto;align-items:end;gap:9px;background:white;border:1px solid var(--line);border-radius:14px;padding:12px;margin:12px 0 15px;min-width:0}
.filter-card .field{margin:0;min-width:0}.filter-card label{display:block;margin-bottom:4px;font-size:.76rem;font-weight:750}.filter-card input,.filter-card select{width:100%;margin:0}
.page-controls{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:14px}.page-controls button{min-height:40px;font-size:.76rem}
.fold-card{padding:0!important;overflow:hidden}.fold-card>summary{display:flex;align-items:center;gap:10px;padding:14px 17px;font-weight:800;cursor:pointer;list-style:none;color:var(--blue-strong)}.fold-card>summary::-webkit-details-marker{display:none}.fold-card>summary::after{content:'⌄';margin-left:auto;color:var(--orange);font-size:1.15rem}.fold-card[open]>summary::after{content:'⌃'}.fold-card[open]>summary{background:#f4f9fe;border-bottom:1px solid var(--line)}.fold-content{padding:16px}
.exam-focus{border-top:4px solid var(--orange)!important}.exam-focus .field{max-width:680px}.exam-focus h2{margin:17px 0 10px}.exam-focus h3{font-size:.99rem;margin:14px 0 9px}.exam-action-header{display:flex;justify-content:space-between;gap:10px;align-items:center;border-top:1px solid var(--line);margin-top:17px;padding-top:7px}
.chart-bars{display:flex;flex-direction:column;gap:11px;margin:10px 0 15px;max-width:830px}.chart-bar{display:grid;grid-template-columns:minmax(76px,120px) minmax(60px,1fr) 50px;align-items:center;gap:9px;font-size:.81rem}.chart-caption{font-weight:700;color:#435773;white-space:normal}.chart-track{width:100%;height:15px;background:#e6eef9;border-radius:10px;overflow:hidden}.chart-fill{height:100%;background:#2378be;border-radius:10px}.chart-fill.orange{background:#ed8728}.chart-bar strong{font-size:.84rem;color:var(--blue-strong);font-variant-numeric:tabular-nums}
.progress-wrap{width:100%;max-width:850px}.progress-wrap svg{display:block;width:100%;height:auto;background:#f8fbff;border-radius:10px}.chart-scale{display:flex;justify-content:space-between;gap:9px;color:var(--muted);font-size:.72rem;margin-top:6px}
.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:9px;margin:10px 0}.quick-grid button{min-width:0;white-space:normal}
.compact-button{min-height:38px;padding:7px 11px;font-size:.78rem}.icon-compact{padding:8px!important;min-height:38px!important;min-width:38px}
.document-row{padding:12px;border:1px solid #e2eaf3;border-radius:12px;background:#fff;min-width:0}.document-row .sectionhead{margin:0 0 8px}.document-row p{margin:8px 0;font-size:.88rem}
.mini-loading{color:var(--muted);padding:12px 8px;font-size:.87rem;background:#f8fbff;border-radius:10px}.panel-body{min-width:0}
#student-overview.stats-grid{margin-top:10px}
#main section.card{scroll-margin-top:105px}
@media(max-width:800px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.stat-tile{padding:10px}.stat-tile strong{font-size:1.32rem}.filter-card{grid-template-columns:1fr 1fr}.filter-card>button{grid-column:1/-1;width:100%}.compact-row{padding:8px 9px;gap:7px;min-height:54px}.avatar-icon{flex-basis:33px;min-height:33px}.compact-details strong{font-size:.86rem}.row-text-action{font-size:.73rem}.fold-content{padding:11px}.exam-focus{padding:12px!important}}
@media(max-width:359px){.filter-card{grid-template-columns:1fr}.filter-card>button{grid-column:auto}.chart-bar{grid-template-columns:66px minmax(30px,1fr) 36px;gap:4px;font-size:.73rem}.stat-tile{padding:9px}.compact-details small{font-size:.68rem}.row-text-action{font-size:0;gap:0}.row-text-action .es-icon{font-size:initial;width:18px;height:18px}}
/* EasyStudies Extranet DEV V1.5.0 — Fiche responsive / Consultation / Bulletin */
#student-overview{display:block!important;width:100%!important;max-width:100%!important;margin:9px 0 19px!important;min-width:0!important}
.student-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;gap:10px;min-width:0}
.student-summary-tile{width:100%;min-width:0;max-width:none;min-height:102px;padding:14px;display:flex;flex-direction:column;align-items:flex-start;gap:7px;justify-content:center;text-align:left;background:#fff;color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow)}
.student-summary-tile:hover{background:#f0f8ff}.student-summary-tile .es-icon{color:var(--blue)}
.student-summary-tile span{font-weight:680;font-size:.79rem;color:var(--muted);overflow-wrap:anywhere}.student-summary-tile strong{font-size:1.35rem;color:var(--blue-strong)}
.bilan-read{width:100%;max-width:980px;margin:0 auto}.bilan-read .main h1{padding-right:0}
.bilan-ratings{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0 23px}
.bilan-rating{border:1px solid #dce8f5;background:#f5faff;border-radius:13px;padding:15px;display:flex;flex-direction:column;gap:7px;min-width:0}
.bilan-rating .es-icon{color:var(--blue)}.bilan-rating span{font-size:.78rem;font-weight:650;color:var(--muted)}.bilan-rating strong{font-size:clamp(1rem,2.5vw,1.45rem);color:var(--blue-strong)}
.bilan-detail-section{padding:13px 0 16px;border-top:1px solid var(--line);break-inside:avoid}
.bilan-detail-section h3{display:flex;align-items:center;gap:9px;color:var(--blue-strong);margin:0 0 9px}
.bilan-text{white-space:pre-line;line-height:1.6;font-size:.96rem;overflow-wrap:anywhere}
.grade-result .sectionhead{align-items:center}.grade-result .score-chip{font-size:.9rem}
.grade-comment-box{padding:13px 15px;margin:10px 0;border-left:4px solid var(--orange);background:#f5f9fe;border-radius:7px;white-space:pre-line;line-height:1.55}
.grade-comment-box[hidden]{display:none!important}.grade-comment-box p{margin:7px 0}
.whisker-chart{width:100%;max-width:880px;overflow:hidden;margin:10px 0 18px}
.whisker-chart svg{display:block;width:100%;height:auto;background:#f7faff;border:1px solid #dfe8f3;border-radius:12px}
.whisker-legend{display:flex;flex-wrap:wrap;gap:6px 14px;padding:9px 4px;color:var(--muted);font-size:.8rem}
.whisker-legend strong{color:var(--blue-strong)}
.bulletin-cover{border-bottom:3px solid var(--orange);margin:0 0 20px;padding:8px 0 16px}
.bulletin-cover h1{padding-right:0!important;margin-bottom:8px}.bulletin-select{display:flex;align-items:center;gap:7px;color:var(--blue-strong);font-weight:720}.bulletin-select select{width:auto;min-width:120px}
.bulletin-grade{padding:13px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:minmax(130px,1fr) minmax(180px,2fr);gap:14px;break-inside:avoid}
.bulletin-grade>div{display:flex;flex-direction:column;gap:4px}.bulletin-grade span{font-size:.86rem;color:var(--muted);overflow-wrap:anywhere}
.bulletin-grade details{min-width:0}.bulletin-grade summary{color:var(--blue-strong);font-weight:650;cursor:pointer}
.bulletin-grade details p{white-space:pre-line;margin:8px 0;padding:8px 12px;background:#f4f8fc;border-radius:7px;font-size:.87rem;overflow-wrap:anywhere}
.student-bulletin{border-top:2px solid #c7dbe9;padding:15px 0;break-inside:avoid}.student-bulletin h3{margin:0}
@media(max-width:860px){.student-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.bilan-ratings{grid-template-columns:repeat(2,minmax(0,1fr))}.bulletin-grade{grid-template-columns:1fr;gap:5px}}
@media(max-width:450px){.student-summary-grid{gap:9px}.student-summary-tile{padding:12px;min-height:98px}.student-summary-tile span{font-size:.82rem}.student-summary-tile strong{font-size:1.38rem}.bilan-rating{padding:11px}.bilan-read{padding:13px}.bulletin-select{flex-wrap:wrap}.whisker-legend{font-size:.72rem}}
@media(max-width:270px){.student-summary-grid,.bilan-ratings{grid-template-columns:1fr}}
@media print{
 @page{size:A4;margin:12mm}
 body{background:#fff!important;color:#101827!important;font-size:10pt}
 .top,.sidebar,.mobile-tabbar,.nav-scrim,.context-back,.no-print,.toolbar,.toast,.quick-grid button{display:none!important}
 .layout{display:block!important;max-width:none!important;min-height:0!important}.main{display:block!important;width:100%!important;padding:0!important;max-width:none!important;grid-column:auto!important}
 .card{box-shadow:none!important;border:0!important;padding:0!important;margin:0 0 14px!important}
 .print-bulletin{display:block!important}.print-bulletin .stats-grid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:5px!important}
 .print-bulletin .stat-tile{border:1px solid #bbc6d1!important;break-inside:avoid;padding:7px!important}
 .print-bulletin .stat-tile strong{font-size:11pt!important}
 .print-bulletin .tablewrap{overflow:visible!important}.print-bulletin .tablewrap table{display:table!important;width:100%!important;font-size:8pt}
 .print-bulletin .tablewrap thead{display:table-header-group!important}.print-bulletin .tablewrap tbody{display:table-row-group!important}
 .print-bulletin .tablewrap tr{display:table-row!important;border:0!important;box-shadow:none!important}.print-bulletin .tablewrap td{display:table-cell!important;width:auto!important;max-width:none!important;padding:4px!important;border-bottom:1px solid #ddd!important}
 .print-bulletin .tablewrap td::before{display:none!important}.print-bulletin .tablewrap th{display:table-cell!important;padding:4px!important}
 .student-bulletin{page-break-inside:avoid!important}.bulletin-grade details p{display:block!important}
 details:not([open]) summary+*{display:block!important}
}

/* EasyStudies Extranet V1.5.1 : actions compactes et états de devoirs accessibles. */
/* Garde TOUTES les commandes de chaque document sur une seule ligne, même en mobile. */
#student-results .document-row .buttonrow,
#student-bilans .document-row .buttonrow,
#student-comments .document-row .buttonrow,
#student-homeworks .document-row .buttonrow{
 display:flex;flex-direction:row;align-items:center;justify-content:flex-start;
 flex-wrap:nowrap;gap:5px;max-width:100%;min-width:0;overflow-x:auto;
 overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#b8cbdc transparent;
 margin-top:11px;padding:2px 0 5px;overscroll-behavior-x:contain;
}
#student-results .document-row .buttonrow button,
#student-bilans .document-row .buttonrow button,
#student-comments .document-row .buttonrow button,
#student-homeworks .document-row .buttonrow button{
 display:inline-flex;flex:0 0 auto;min-height:35px;min-width:0;width:auto;
 white-space:nowrap;padding:6px 9px;gap:5px;font-size:.76rem;line-height:1.1;
}
#student-results .document-row .buttonrow .es-icon,
#student-bilans .document-row .buttonrow .es-icon,
#student-comments .document-row .buttonrow .es-icon,
#student-homeworks .document-row .buttonrow .es-icon{width:15px;height:15px}
.homework-states{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0 7px}
.homework-state{display:inline-flex;align-items:center;gap:5px;border-radius:8px;padding:5px 9px;border:1px solid transparent;font-size:.76rem;font-weight:750;white-space:nowrap;line-height:1.3}
.homework-state .es-icon{width:16px;height:16px}
.homework-state-1{color:#99283a;background:#fee8eb;border-color:#f6c7cf}
.homework-state-2{color:#98530b;background:#fff0d8;border-color:#f7d69a}
.homework-state-3{color:#206339;background:#e3f6e9;border-color:#b7e2c3}
.homework-state-unknown{color:#4c6074;background:#eef1f6;border-color:#d8e2e9}
.homework-row{border-left:4px solid #c5d0dc}
.homework-row-1{border-left-color:#c8324b}
.homework-row-2{border-left-color:#e38b19}
.homework-row-3{border-left-color:#258d4c}
@media(max-width:420px){
 #student-results .document-row .buttonrow button,
 #student-bilans .document-row .buttonrow button,
 #student-comments .document-row .buttonrow button,
 #student-homeworks .document-row .buttonrow button{font-size:.7rem;padding:6px;gap:4px}
 #student-results .document-row .buttonrow .es-icon,
 #student-bilans .document-row .buttonrow .es-icon,
 #student-comments .document-row .buttonrow .es-icon,
 #student-homeworks .document-row .buttonrow .es-icon{width:13px;height:13px}
 .homework-state{font-size:.69rem;padding:5px 6px;gap:4px}
 .homework-state .es-icon{width:14px;height:14px}
}

/* V1.5.1 consolidée — statistiques, accordéons, notes, bilans. */
#global-statistics-fold{padding:12px 16px}
.global-class-list{display:grid;gap:8px}
.global-class{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.global-class>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:10px 12px;min-height:43px}
.global-class>summary::-webkit-details-marker{display:none}
.global-class>summary strong:first-child{color:var(--blue-strong)}
.global-class-mean{margin-left:auto;color:var(--blue-strong);font-weight:750;font-size:.84rem}
.global-class>summary .es-icon{width:16px;height:16px;transition:transform .15s}
.global-class[open]>summary .es-icon{transform:rotate(90deg)}
.global-values{border-top:1px solid var(--line);padding:9px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.global-value{background:#f4f8fe;border-radius:9px;padding:9px 5px;text-align:center;min-width:0;display:grid;gap:3px}
.global-value small{color:var(--muted);font-size:.72rem}.global-value strong{font-size:clamp(.98rem,2vw,1.32rem);color:var(--blue-strong)}
.paired-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0}
.paired-card{min-width:0;border-radius:11px;background:#f3f8ff;padding:10px;display:grid;gap:5px}
.paired-heading{font-weight:750;color:var(--blue-strong);font-size:.82rem}
.paired-value{min-width:0;display:flex;justify-content:space-between;align-items:center;gap:3px}
.paired-value+ .paired-value{border-top:1px solid #dce6f1;padding-top:6px}
.paired-value small{font-size:.7rem;color:var(--muted)}.paired-value strong{font-size:clamp(.95rem,2.1vw,1.3rem);color:var(--ink)}
.student-panel{padding:10px 14px}.student-panel-head{margin:0!important;gap:8px}
.student-panel-toggle{flex:1;min-width:0;background:transparent!important;color:var(--blue-strong)!important;padding:8px 0;justify-content:flex-start;min-height:44px;text-align:left;font-size:1.02rem}
.student-panel-toggle:hover{color:var(--blue)!important}.student-panel-toggle .panel-chevron{margin-left:auto;width:17px;height:17px;transition:transform .2s}
.student-panel-toggle[aria-expanded="true"] .panel-chevron{transform:rotate(90deg)}
.student-panel .panel-body[hidden]{display:none!important}.student-panel .panel-body{padding-top:9px;border-top:1px solid var(--line)}
#student-results .grade-comment-box{margin:5px 0 7px;padding:9px 10px;font-size:.85rem}
#student-results .grade-comment-box p{margin:3px 0 0}
.mini-bilan-ratings{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}
.mini-bilan-rating{min-width:0;display:grid;gap:3px;padding:8px;border:1px solid var(--line);border-radius:8px;background:#f7f9fb}
.mini-bilan-rating small{font-size:.71rem}.mini-bilan-rating strong{font-size:.9rem;display:flex;align-items:center;gap:4px}.mini-bilan-rating svg{width:15px;height:15px}
.mini-bilan-rating.positive,.bilan-rating.rating-positive{background:#eaf7ee;color:#24613a;border-color:#c6e9d1}
.mini-bilan-rating.moderate,.bilan-rating.rating-moderate{background:#fff5e6;color:#93500d;border-color:#f2d5a4}
.mini-bilan-rating.negative,.bilan-rating.rating-negative{background:#fff0f1;color:#923447;border-color:#e8c1c7}
.bilan-visible-comment{padding:7px 10px;background:#f5f9fe;border-radius:8px;white-space:pre-line}.bilan-visible-comment svg{width:16px;height:16px}
.bulletin-grade{display:flex;flex-direction:column;gap:7px;padding:11px 0}
.bulletin-subject-head{display:flex!important;flex-direction:row!important;align-items:center;justify-content:space-between;gap:10px}
.bulletin-score{font-size:1.16rem;color:var(--blue-strong);white-space:nowrap}
.bulletin-statline{display:flex;flex-wrap:wrap;gap:5px 12px;color:var(--muted);font-size:.78rem}
.bulletin-statline span{white-space:nowrap}.bulletin-inline-comment{margin:1px 0 3px;padding:8px 10px;background:#f4f8fd;border-left:3px solid var(--orange);border-radius:6px;font-size:.83rem;white-space:pre-line}
.bulletin-inline-comment .es-icon{width:15px;height:15px;color:var(--blue)}
@media(max-width:620px){.mini-bilan-ratings{grid-template-columns:repeat(2,minmax(0,1fr))}.global-values{gap:4px}.global-value{padding:7px 3px}.global-class>summary{gap:5px}.paired-card{padding:7px}.paired-value{display:grid;gap:0}.paired-value strong{font-size:1.04rem}}
@media print{.student-panel .panel-body[hidden]{display:block!important}.global-class:not([open]) .global-values{display:grid!important}}

/* EasyStudies V1.5.2 : tableaux de bord, listes internes et photos */
.dashboard-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0 20px}
button.dashboard-stat{width:100%;text-align:left;cursor:pointer;font:inherit;min-width:0;min-height:94px}
button.dashboard-stat strong{font-size:clamp(.95rem,1.65vw,1.34rem);overflow-wrap:anywhere}
button.dashboard-stat:hover{border-color:#89b6df;background:#f4f9ff}
.level-count-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 12px}
.level-count{display:flex;align-items:center;justify-content:space-between;background:#f3f7fc;padding:8px 13px;border-radius:8px;gap:14px;min-width:0}
.level-count strong{color:var(--blue-strong)}
.note-list-line{display:flex;align-items:center;gap:11px;width:100%;min-height:65px;padding:9px 12px;text-align:left;background:#fff;color:var(--ink);border:0;border-bottom:1px solid var(--line);border-radius:0;cursor:pointer;font:inherit}
.note-list-line:hover{background:#f2f8ff}.note-list-line .compact-details{flex:1;min-width:0}.note-list-line .score-chip{flex-shrink:0}
/* Grands commentaires accessibles et lisibles sans réduire inutilement la hauteur des lignes. */
.filter-card{padding:10px!important;gap:8px!important;align-items:end}
.filter-card .field label{font-size:.75rem}.filter-card select,.filter-card input{min-height:36px;padding:7px 9px}
.student-photo-title{display:flex;align-items:center;gap:14px;margin-bottom:8px}
.student-photo-title h1{margin:0}.student-photo-title .lead{margin:5px 0}
#student-avatar-button,.header-avatar{position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;border-radius:50%;border:2px solid #d6e5f4;background:#e3edf7;color:#174b7d;padding:0;cursor:pointer}
#student-avatar-button{width:74px;height:74px}.header-avatar{width:40px;height:40px}
#student-avatar-button::before,.header-avatar::before{content:'◉';position:absolute;opacity:.4;font-size:1.6rem}
#student-avatar-button img,.header-avatar img{position:relative;width:100%;height:100%;object-fit:cover;z-index:1}
#student-avatar-button:disabled{cursor:default}
.avatar-dialog{position:fixed;inset:0;background:#101e33aa;display:grid;place-items:center;z-index:2000;padding:14px}
.avatar-dialog-box{background:white;border-radius:16px;padding:22px;max-width:470px;width:100%;box-shadow:0 12px 50px #11263b44}
.avatar-dialog-box .buttonrow{display:flex;flex-wrap:wrap;gap:8px}
@media(max-width:580px){.dashboard-tiles{gap:8px}.dashboard-stat{padding:10px!important}.dashboard-stat span{font-size:.75rem}.level-count-grid{gap:5px}.level-count{padding:7px}.student-photo-title{gap:9px}#student-avatar-button{width:60px;height:60px}}
.avatar-preview{display:block;max-width:150px;max-height:150px;aspect-ratio:1;object-fit:cover;border-radius:50%;margin:10px auto;border:2px solid #c0d5eb}
.avatar-preview[hidden],#avatar-confirm[hidden]{display:none!important}
/* Listes visibles sans défilement interne. */
#student-results .document-row,#student-bilans .document-row,#student-comments .document-row,#student-homeworks .document-row{padding:8px 10px;margin-bottom:5px}
#student-results .grade-comment-box{padding:7px 10px;margin:5px 0}
#student-results .grade-comment-box p{margin:2px 0}

/* V1.5.3 : pas de piège de scroll sur les listes pédagogiques */
.collection-more{padding:12px 6px 4px;display:flex;justify-content:center}
.collection-more button{min-height:42px;width:min(100%,360px);display:flex;gap:10px;align-items:center;justify-content:center}
.collection-header{margin-bottom:18px}
.collection-header h1{margin:15px 0 3px}
.collection-header .lead{margin-top:4px}
.level-fold .fold-content{padding:16px}
#student-results,#student-bilans,#student-comments,#student-homeworks,#student-home-notes,#exam-note-list{max-height:none!important;overflow-y:visible!important;overscroll-behavior-y:auto!important}
@media(max-width:580px){.collection-more button{width:100%}.level-fold .fold-content{padding:10px}}

/* Actions des documents : toutes accessibles sur une ligne sans scroll horizontal */
#student-results .document-row .buttonrow,
#student-bilans .document-row .buttonrow,
#student-comments .document-row .buttonrow,
#student-homeworks .document-row .buttonrow{
 overflow-x:visible;overscroll-behavior-x:auto;
}
@media(max-width:580px){
 #student-results .document-row .buttonrow button,
 #student-bilans .document-row .buttonrow button,
 #student-comments .document-row .buttonrow button,
 #student-homeworks .document-row .buttonrow button{flex:1 1 0;justify-content:center;overflow:hidden;padding:6px 4px;font-size:.71rem;}
 #student-results .document-row .buttonrow button .es-icon,
 #student-bilans .document-row .buttonrow button .es-icon,
 #student-comments .document-row .buttonrow button .es-icon,
 #student-homeworks .document-row .buttonrow button .es-icon{flex:0 0 14px;}
}

/* V1.5.4 — Correctifs ergonomiques consolides, sans changement des regles metier. */
/* Desktop : menu, Retour et contenu doivent cohabiter sur la premiere ligne de grille. */
@media (min-width:801px) {
 .layout>.sidebar {grid-column:1;grid-row:1}
 .layout>.context-back,.layout>.main {grid-column:2;grid-row:1}
}
/* Header : photo a gauche du nom dans un meme groupe, deconnexion independante. */
.top-inner {display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:10px}
.brand-lockup {min-width:0}
.brand-text {min-width:0;overflow:hidden}
.userbar {min-width:0;max-width:100%;justify-content:flex-end;margin-left:0;gap:8px}
.profile-lockup {display:flex;align-items:center;justify-content:flex-end;min-width:0;max-width:100%;gap:9px}
.profile-lockup .header-avatar {flex:0 0 40px;width:40px;height:40px}
.profile-lockup .identity {min-width:0;max-width:min(29vw,220px);flex:0 1 auto;align-items:flex-start;text-align:left}
.profile-lockup .identity strong {display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-lockup .identity small {display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.userbar .logout {flex:0 0 44px}
@media (max-width:800px) {
 .top-inner {padding:7px 8px;column-gap:5px}
 .brand-lockup {gap:4px}
 .brand-text {flex:1 1 auto;overflow:hidden}
 .brand {display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(1rem,3.2vw,1.22rem)}
 .brand-text small {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.5rem;letter-spacing:0}
 .userbar {gap:4px}
 .profile-lockup {gap:5px}
 .profile-lockup .header-avatar {flex-basis:36px;width:36px;height:36px}
 .profile-lockup .identity {max-width:clamp(48px,19vw,110px)}
 .profile-lockup .identity strong {font-size:.71rem}
 .profile-lockup .identity small {font-size:.62rem}
 .userbar .logout {width:38px;min-width:38px;flex-basis:38px}
 .menu-toggle {width:38px;min-width:38px}
}
@media (max-width:370px) {
 .top-inner {padding:6px;column-gap:3px}
 .brand-lockup {gap:2px}
 .brand {font-size:.98rem}
 .brand-text small {font-size:.44rem}
 .menu-toggle {width:34px;min-width:34px}
 .profile-lockup .header-avatar {flex-basis:32px;width:32px;height:32px}
 .profile-lockup .identity {max-width:clamp(40px,17vw,63px)}
 .profile-lockup .identity strong {font-size:.66rem}
 .profile-lockup .identity small {font-size:.55rem}
 .userbar .logout {width:34px;min-width:34px;flex-basis:34px}
}

/* Identité visuelle EasyStudies App — production (V1.5.5). */
.brand-emblem .es-brand-pictogram,.login-mark .es-brand-pictogram{display:block;width:100%;height:100%;object-fit:contain;border-radius:12px;}
.login-mark{background:transparent;overflow:hidden;}
.es-prod-name{color:#155a9a;}
.es-app-label{font-size:.7em;color:#ed8728;font-weight:850;white-space:nowrap;}

/* EasyStudies V1.5.6 — Planning, photographies et alignement des profils. */
.student-photo-title{display:grid;grid-template-columns:74px minmax(0,1fr);gap:14px;align-items:center;min-height:86px}
.student-photo-title>div{display:flex;flex-direction:column;justify-content:center;min-height:74px;min-width:0}
.student-photo-title h1{margin:0 0 5px;line-height:1.18}
.student-photo-title .lead{margin:0;line-height:1.35}
.student-photo-title #student-avatar-button{justify-self:center;align-self:center;margin:0}
.compact-student .avatar-icon{background:transparent;min-height:40px;flex:0 0 40px;overflow:hidden;border-radius:50%}
.compact-student .es-student-list-avatar{display:block;width:40px;height:40px;border-radius:50%;object-fit:cover;border:1px solid #d0dfee;background:#edf3fa}
.es-plan-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:0 0 18px}
.es-plan-filters label{display:flex;flex-direction:column;gap:5px;color:#415a77;font-size:.82rem;font-weight:650;min-width:min(230px,100%)}
.es-plan-filters select{width:100%;margin:0;background:white}
.es-plan-folds{display:grid;gap:11px}
.es-plan-fold{border:1px solid #d4e2f2;border-radius:13px;background:#fff;box-shadow:0 3px 14px #102c4a0a;overflow:hidden}
.es-plan-fold>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;list-style:none;cursor:pointer;padding:14px 16px;background:#f3f7fd}
.es-plan-fold>summary::-webkit-details-marker{display:none}
.es-plan-fold>summary:focus-visible{outline:3px solid #2b71ba;outline-offset:-3px}
.es-plan-fold-title{display:flex;align-items:center;gap:12px;min-width:0}
.es-plan-fold-title>svg{flex:0 0 20px;color:#1764a7}
.es-plan-fold-title>span{min-width:0;display:flex;flex-direction:column;gap:3px}
.es-plan-fold-title strong{font-size:.95rem;color:#173b70}
.es-plan-fold-title small{font-size:.77rem;color:#4c627b;line-height:1.35}
.es-plan-chevron{color:#1764a7;flex:0 0 20px;transition:transform .15s ease}
.es-plan-fold[open] .es-plan-chevron{transform:rotate(90deg)}
.es-plan-people{padding:3px 14px 8px}
.es-plan-person{padding:11px 2px;display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid #e8eff7;min-width:0}
.es-plan-person:last-child{border:0}
.es-plan-person-main{display:flex;align-items:center;min-width:0;gap:11px;flex:1}
.es-plan-photo{display:block;flex:0 0 37px;width:37px;height:37px;border-radius:50%;border:1px solid #d6e4f0;object-fit:cover;background:#eef4fb}
.es-plan-person-text{min-width:0;display:flex;flex-direction:column;gap:3px;line-height:1.3}
.es-plan-person-text strong{font-size:.88rem;overflow-wrap:anywhere}
.es-plan-person-text span{font-size:.78rem;color:#52677c}
.es-plan-person-admin{display:flex;align-items:center;justify-content:flex-end;gap:13px;flex-wrap:wrap}
.es-plan-solde{white-space:nowrap;font-size:.83rem;font-variant-numeric:tabular-nums;font-weight:650;color:#226a42}
.es-plan-solde.negative{color:#b91c1c}
.es-plan-actions{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.es-plan-contact{width:34px;height:34px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:white;text-decoration:none;transition:filter .15s;background:#1e70b7}
.es-plan-contact:hover{color:white;filter:brightness(.88)}
.es-plan-contact--parents{background:#c03545}
.es-plan-contact--shared{background:#7563a8}
.es-plan-contact>svg{width:17px;height:17px}
.es-plan-student-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,245px),1fr));gap:14px}
.es-plan-card{padding:18px;background:white;border:1px solid #d9e6f3;border-radius:14px;box-shadow:0 5px 20px #0f2d4b0b;display:flex;align-items:flex-start;flex-direction:column;gap:5px}
.es-plan-card-day{font-size:.9rem;font-weight:700;color:#165b9a;display:flex;align-items:center;gap:7px;margin-bottom:7px}
.es-plan-card-time{font-size:1.75rem;color:#173b70;line-height:1.1}
.es-plan-start-caption{font-size:.72rem;color:#61788f}
.es-plan-card h2{font-size:1.03rem;margin:12px 0 0}
.es-plan-card p{font-size:.83rem;color:#52677c;margin:4px 0}
.es-plan-zoom{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 12px;background:#185d99;color:white;text-decoration:none;border-radius:10px;margin-top:11px;font-size:.84rem;font-weight:650;width:100%}
.es-plan-zoom:hover{color:white;background:#124b80}
.es-plan-alert{color:#a25e15!important}
.es-plan-onsite{font-weight:600;color:#226a42!important}
@media(max-width:640px){
 .student-photo-title{grid-template-columns:60px minmax(0,1fr);min-height:70px;gap:10px}
 .student-photo-title>div{min-height:60px}
 .student-photo-title h1{font-size:1.25rem}
 .es-plan-person{align-items:flex-start;flex-wrap:wrap}
 .es-plan-person-admin{width:100%;justify-content:space-between;padding-left:48px;gap:9px}
 .es-plan-contact{width:35px;height:35px}
 .es-plan-fold>summary{padding:12px}
 .es-plan-people{padding:0 10px 6px}
 .es-plan-filters label{flex:1 1 140px;min-width:0}
}

/* V1.6.0 — responsive profiles, multi-select and communications. */
.es-profile-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.85fr);gap:14px;align-items:start}
.es-profile-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}
.es-profile-identity{display:flex;gap:15px;align-items:center;min-width:0}
.es-profile-identity h1{font-size:clamp(1.15rem,2.3vw,1.65rem);margin:0 0 4px;overflow-wrap:anywhere}
.es-profile-identity .lead{margin:0}.es-profile-avatar{width:78px;height:78px;max-width:78px;max-height:78px;object-fit:cover;flex:none;border-radius:50%;background:#eef4fb;border:1px solid #d9e5f2}
.es-profile-actions{display:flex;flex-wrap:wrap;gap:8px}.es-profile-actions button{display:inline-flex;align-items:center;gap:7px;min-height:39px}
.es-profile-row{display:flex;justify-content:space-between;gap:14px;align-items:start;padding:9px 0;border-bottom:1px solid #edf2fa;font-size:.87rem}
.es-profile-row:last-of-type{border:0}.es-profile-row>span{color:#59708b;min-width:95px}.es-profile-row>strong{text-align:right;overflow-wrap:anywhere;min-width:0;font-weight:600}
.es-profile-balance{font-size:clamp(1.5rem,3.8vw,2.15rem);font-weight:800;font-variant-numeric:tabular-nums;color:#153d70;margin:8px 0}
.es-qr-box{display:flex;justify-content:center;align-items:center;margin:9px auto 7px;background:white;padding:10px;border:1px solid #e0e9f1;border-radius:12px;width:max-content;max-width:100%}
.es-qr-box .es-qr{width:min(240px,65vw);height:auto;max-width:100%;display:block}
.es-progress-fold{border:1px solid #dae7f1;border-radius:10px;margin:8px 0;padding:10px}.es-progress-fold summary{cursor:pointer;font-weight:650;color:#194e83}
.es-config form{display:flex;flex-direction:column;gap:13px;align-items:flex-start}.es-config form>label{display:flex;gap:8px;align-items:center;font-size:.93rem}
.es-inline-profile{margin-left:auto}.student-photo-title:has(.es-inline-profile){grid-template-columns:74px minmax(0,1fr) auto}
.es-msg-target{border:1px solid #deebf6;border-radius:11px;padding:12px;margin:10px 0;background:#f9fbff}.es-msg-target strong{display:block;margin-bottom:7px}.es-msg-target .buttonrow{display:flex;flex-wrap:wrap;gap:7px}
.es-subject-picker{border:1px solid #cbdced;border-radius:11px;background:#fff;overflow:hidden}.es-subject-picker>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;padding:13px 15px;cursor:pointer;font-weight:650;color:#174a7e}
.es-subject-picker>summary::-webkit-details-marker{display:none}.es-subject-picker[open]>summary{background:#f2f7fd}.es-subject-picker .es-subject-picker-body{padding:12px;display:grid;gap:10px}
.es-subject-picker-body>input{width:100%;box-sizing:border-box}
.es-subject-scroll{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:5px;max-height:225px;overflow:auto;overscroll-behavior:contain;border:1px solid #e4eef8;border-radius:8px;padding:8px}
.es-subject-choice{display:flex;align-items:center;gap:8px;margin:0;padding:7px 8px;border-radius:6px;font-size:.82rem;cursor:pointer;overflow-wrap:anywhere}.es-subject-choice:has(input:checked){background:#e7f2fe}.es-subject-choice[hidden]{display:none}.es-subject-choice input{margin:0;flex:none}
.es-bilan-other{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.es-bilan-other>div{display:flex;flex-wrap:wrap;gap:7px}.es-subject-selected{padding:7px 1px;line-height:1.5;font-size:.79rem;color:#4d647b;overflow-wrap:anywhere;min-height:18px}
@media(max-width:740px){.es-profile-grid{grid-template-columns:minmax(0,1fr)}.es-profile-header{display:block}.es-profile-actions{margin-top:14px}.student-photo-title:has(.es-inline-profile){grid-template-columns:60px minmax(0,1fr)}.student-photo-title .es-inline-profile{grid-column:2;justify-self:start;margin:1px 0 0}.es-subject-scroll{grid-template-columns:1fr 1fr}}
@media(max-width:420px){.es-subject-scroll{grid-template-columns:1fr}.es-profile-actions button{flex:1 1 30%}.es-profile-avatar{width:64px;height:64px}.es-profile-row{font-size:.79rem}.es-profile-row>span{min-width:76px}}
@media print{.es-profile-actions,.es-inline-profile,.es-config,.es-subject-picker button{display:none!important}}

/* V1.6.1 — profils rapides, coordonnées lisibles et actions compactes. */
.es-directory-filters{display:grid;grid-template-columns:minmax(125px,.9fr) minmax(120px,.85fr) minmax(220px,2fr);gap:10px;align-items:end;padding:13px 15px;margin:0 0 13px;border:1px solid var(--line);background:#fff;border-radius:13px}
.es-directory-filters .field{margin:0;min-width:0}
.es-directory-filters .field label{display:block;font-size:.75rem;font-weight:700;color:#49627c;margin-bottom:3px}
.es-directory-filters select,.es-directory-filters input{width:100%;min-width:0;min-height:42px;font-size:.85rem}
.es-directory-input{display:flex;position:relative;gap:0;align-items:stretch}
.es-directory-input input{padding-right:47px;flex:1}
.es-directory-input button{position:absolute;right:2px;top:2px;bottom:2px;min-height:0;width:40px;padding:0;border-radius:8px}
.es-profile-header{padding:15px 19px}
.es-profile-header .es-profile-identity h1{padding:0;margin:0 0 3px}
.es-profile-header .lead{font-size:.83rem;margin:0;color:#536b84}
.es-profile-grid{grid-template-columns:minmax(0,1fr) minmax(205px,260px);gap:12px}
.es-profile-main{min-width:0}
.es-profile-main .card{margin-bottom:12px}
.es-profile-finances{padding:15px 17px}
.es-finance-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}
.es-finance-item h2{margin:0;font-size:.85rem;color:#506982}
.es-finance-item+.es-finance-item{border-left:1px solid var(--line);padding-left:12px}
.es-profile-finances .es-profile-balance{font-size:clamp(1.35rem,3vw,1.85rem);margin:2px 0 0;line-height:1.3}
.es-profile-balance.es-balance-danger{color:#b42334}
.es-profile-balance.es-balance-warning{color:#a7640b}
.es-profile-balance.es-balance-good{color:#237246}
.es-profile-balance.es-balance-neutral{color:#536b84}
.es-profile-contact{padding:13px 17px}
.es-profile-contact h2{margin:0 0 8px;font-size:1.03rem}
.es-contact-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:51px;padding:5px 0;border-top:1px solid #e8eef6}
.es-contact-label{display:flex;align-items:center;gap:8px;font-size:.82rem;font-weight:650;color:#365875;flex:0 0 92px}
.es-contact-label svg{width:17px;height:17px}
.es-contact-buttons{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:7px;align-items:center;min-width:0}
.es-contact-btn{width:44px;min-width:44px;height:44px;min-height:44px;padding:0;border:1px solid transparent;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;gap:0;flex:none;text-decoration:none;box-shadow:0 2px 6px #0b305d15;cursor:pointer;transition:filter .15s,transform .15s}
.es-contact-btn:hover{filter:brightness(.9);color:#fff}
.es-contact-btn:focus-visible{outline:3px solid #ffad54;outline-offset:2px}
.es-contact-btn svg{width:21px;height:21px;color:white}
.es-contact-btn.es-contact-student{background:#176bb4;color:#fff}
.es-contact-btn.es-contact-parents{background:#c76a17;color:#fff}
.es-contact-btn.es-contact-both{background:linear-gradient(100deg,#176bb4 0%,#176bb4 50%,#c76a17 50%,#c76a17 100%);color:#fff;gap:1px}
.es-contact-btn.es-contact-both svg{width:18px;height:18px}
.es-profile-personal{padding:0!important;overflow:hidden}
.es-profile-personal>summary,.es-profile-progress-details>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;padding:13px 17px;font-size:.92rem;font-weight:750;color:#184c80;list-style:none}
.es-profile-personal>summary::-webkit-details-marker,.es-profile-progress-details>summary::-webkit-details-marker{display:none}
.es-profile-personal>summary svg,.es-profile-progress-details>summary svg{width:18px;height:18px;transition:transform .15s}
.es-profile-personal[open]>summary svg,.es-profile-progress-details[open]>summary svg{transform:rotate(90deg)}
.es-profile-personal-inner{padding:0 17px 13px}
.es-profile-personal .es-profile-row{padding:8px 0;font-size:.83rem}
.es-profile-qr{margin-bottom:12px;min-width:0;padding:15px;align-self:start}
.es-profile-qr h2{margin-bottom:8px}
.es-profile-qr .es-qr-box{margin:0 auto 10px;padding:8px}
.es-profile-qr .es-qr-box .es-qr{width:min(174px,55vw)}
.es-profile-qr .buttonrow{display:flex;justify-content:center;gap:7px;flex-wrap:wrap}
.es-profile-qr .buttonrow button{font-size:.76rem;min-height:39px;padding:7px 10px}
.es-profile-progress-details{padding:0!important}
.es-profile-progress-details>#es-profile-progress{padding:0 17px 14px}
.student-photo-title .lead{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.student-photo-title .es-inline-profile{min-width:0;min-height:32px;padding:4px 11px;font-size:.76rem;border-radius:7px;margin-left:0}
.student-photo-title:has(.es-inline-profile){grid-template-columns:74px minmax(0,1fr)}
.es-teacher-label{color:#ac3548!important}
@media(max-width:740px){
 .es-profile-grid{grid-template-columns:minmax(0,1fr)}
 .es-profile-header{display:block}
 .es-profile-qr{max-width:100%}
 .student-photo-title:has(.es-inline-profile){grid-template-columns:60px minmax(0,1fr)}
 .student-photo-title .es-inline-profile{grid-column:auto;justify-self:auto;margin:0}
}
@media(max-width:590px){
 .es-directory-filters{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;padding:10px}
 .es-directory-search{grid-column:1/-1}
 .es-profile-row>strong{max-width:67%}
 .es-contact-row{gap:6px}
}
@media(max-width:340px){.es-contact-label{flex-basis:76px}.es-contact-buttons{gap:4px}.es-contact-btn{width:42px;min-width:42px;height:44px}}
@media print{.es-profile-contact,.es-directory-filters,.es-profile-qr .buttonrow{display:none!important}}

/* EasyStudies V1.6.2.1 — Centrage optique de la photo des fiches élèves (PC + mobile).
   Le bouton Profil partage la ligne d'identifiant et augmente sa hauteur ;
   un petit décalage optique corrige la photo visuellement trop basse. */
.student-photo-title {align-items:center;}
.student-photo-title > div {align-self:center;min-width:0;}
.student-photo-title h1 {padding-right:0;}
.student-photo-title #student-avatar-button {
  align-self:center;
  justify-self:center;
  display:grid;
  place-items:center;
  margin:0;
  line-height:0;
  transform:translateY(-12px);
}
/* Maintient le meme decalage lors du clic ou du toucher (sinon button:active reinitialise transform). */
.student-photo-title #student-avatar-button:active { transform:translateY(-11px); }

.student-photo-title #student-avatar-button img {
  display:block;
  width:100%;
  height:100%;
  border-radius:50%;
  object-fit:cover;
  object-position:50% 50%;
}
/* Photo sur la page Profil dédiée : assurer un centrage propre, sans déformer l'image. */
.es-profile-identity > .es-profile-avatar {
  display:block;
  align-self:center;
  object-fit:cover;
  object-position:50% 50%;
}
/* EasyStudies V1.6.2.2 : leger relevement de la photo du profil ELEVE
   (ne modifie ni la fiche professeur ni les autres avatars). */
.es-profile-header .es-profile-identity > .es-profile-avatar {
  translate:0 -6px;
}
