/* Approved fox artwork and shared action semantics, 0.10.47. */
.dulpiLogo{display:inline-flex;flex:none;align-items:center;justify-content:center;line-height:0}
.dulpiLogo img{display:block;border-radius:20%}
#notificationsOpen,#notifyChanges,#notifyComposeSend{background:#0b55e8;border-color:#0b55e8;color:#fff}
#notificationsOpen:hover:not(:disabled),#notifyChanges:hover:not(:disabled),#notifyComposeSend:hover:not(:disabled){background:#0949ca}
/* Override the generic pale hover background without losing white-label contrast. */
button.primary:is(:hover,:active,:focus-visible):not(:disabled),
#notificationsOpen:is(:active,:focus-visible):not(:disabled),
#notifyChanges:is(:active,:focus-visible):not(:disabled),
#notifyComposeSend:is(:active,:focus-visible):not(:disabled){background:#0949ca;border-color:#0949ca;color:#fff}
#administrativeAdd,#addAttachments,#retryAttachments{background:#fff;border-color:#b7c8e6;color:#174ea6}
#administrativeAdd:hover:not(:disabled),#addAttachments:hover:not(:disabled),#retryAttachments:hover:not(:disabled){background:#edf3ff}
/* PDF opening/downloading is distinguished from generic file importing. */
button.pdfButton,a.pdfButton,#attachments a.pdfButton,.administrativeCard a.pdfButton{background:#df1020;border-color:#df1020;color:#fff}
button.pdfButton:hover:not(:disabled),a.pdfButton:hover,#attachments a.pdfButton:hover,.administrativeCard a.pdfButton:hover{background:#bd0d19}
/* Exact hues sampled from the linked Éduscol LPI infographic. */
:root{--project-pap:#5a97d7;--project-pps:#60c8ac;--project-pai:#f8a432;--project-ppre:#234c56;--project-ap:#eceef1}
#students .studentProjectTag[data-project-tag="PAP"]{background:var(--project-pap);border-color:var(--project-pap);color:#102f38}
#students .studentProjectTag[data-project-tag="PPS"]{background:var(--project-pps);border-color:var(--project-pps);color:#102f38}
#students .studentProjectTag[data-project-tag="PAI"]{background:var(--project-pai);border-color:var(--project-pai);color:#102f38}
#students .studentProjectTag[data-project-tag="PPRS"]{background:var(--project-ppre);border-color:var(--project-ppre);color:#fff}
#students .studentProjectTag[data-project-tag="AP"]{background:var(--project-ap);border-color:#d1d5db;color:#46556b}
#students .studentProjectTag,#students .updateNeededBadge,#students .lpiStatusBadge.missing{display:inline-block;box-sizing:border-box;max-width:100%;padding:1px 7px;border-width:1px;border-style:solid;border-radius:12px;font-family:inherit;font-size:11px;font-weight:600;line-height:1.6;overflow-wrap:anywhere}
#students .updateNeededBadge,#students .lpiStatusBadge.missing{border-color:#df1020;background:#df1020;color:#fff}
/* Keep names readable as they wrap; rows grow with their content. */
#workspace>aside>label{margin:10px 0 6px}
#workspace>aside>label input:not([type=checkbox]),#workspace>aside>label select{margin-top:4px}
#studentCount{margin:8px 0}
#students{gap:4px;grid-template-columns:minmax(0,1fr);grid-auto-rows:max-content;align-content:start}
#students button{display:block;height:auto;min-width:0;max-width:100%;padding:7px 13px;min-height:48px;white-space:normal;line-height:1.45}
#students .studentTitle{row-gap:5px}
#students .studentName{display:block;line-height:1.45}
#students small{margin-top:4px;line-height:1.5}
#students .lpiStatusBadge{margin-top:4px}
@media screen and (max-width:760px), screen and (max-width:950px) and (max-height:500px){#students{gap:6px}#students button{padding:10px 12px;min-height:60px}}
.recapModified{color:#46556b;font-size:12px;margin:14px 0}
.projectGuides{display:flex;align-items:center;flex-wrap:wrap;gap:4px 24px}
.projectGuides .projectGuide{display:inline-block;margin:0;background:transparent;color:#174ea6}
.homeReturn{width:100%;margin:0 0 12px;text-align:left}
.brandHome{border:0;background:transparent;padding:0;min-height:44px;width:44px;justify-self:start;flex:none;border-radius:8px;line-height:0}.brandHome:hover:not(:disabled){background:#f3f6ff}
.dashboard{margin:0 0 28px;padding:24px;background:#f7f8fa;border-radius:16px}.dashboard>p{color:#667085;font-size:12px}
#dashboardCards{display:grid;grid-template-columns:repeat(var(--dashboard-columns,3),minmax(0,1fr));gap:14px}
@media(max-width:1100px){#dashboardCards{grid-template-columns:repeat(min(var(--dashboard-columns,2),2),minmax(0,1fr))}}
@media(max-width:480px){#dashboardCards{grid-template-columns:1fr}}
.dashboardTile{position:relative;min-width:0;display:flex}
.dashboardCard{--tile-bg:#eaf0ff;--tile-accent:#345c9c;--tile-ink:#20242b;box-sizing:border-box;width:100%;min-height:156px;border:1px solid #e8eaef;border-radius:14px;background:#fff;padding:16px;box-shadow:0 2px 8px #172b4d04}
.dashboardCard[data-tone=pps],.dashboardCard[data-tone=support]{--tile-bg:#e1f3f1;--tile-accent:#26756c;--tile-ink:#174d47}
.dashboardCard[data-tone=provisional]{--tile-bg:var(--project-ap);--tile-accent:#596273;--tile-ink:#384555}
.dashboardCard[data-tone=attention]{--tile-bg:#fff0d5;--tile-accent:#946000;--tile-ink:#65420c}
.dashboardCard[data-tone=progress]{--tile-bg:#e6f5ea;--tile-accent:#287a43;--tile-ink:#20572e}
.dashboardCard[data-tone=action]{--tile-bg:#fff0f1;--tile-accent:#bd3042;--tile-ink:#7b2130}
.dashboardCard[data-tone=neutral]{--tile-bg:#edf0f4;--tile-accent:#596273;--tile-ink:#37465a}
.dashboardIcon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex:none;margin-bottom:12px;border-radius:10px;background:var(--tile-bg);color:var(--tile-accent)}
.dashboardValue{display:block;font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;color:#20242b;line-height:1.25}.dashboardCardTitle{display:block;font-size:13px;margin:5px 0 0;font-weight:400;line-height:1.5;color:#596273;overflow-wrap:anywhere}
.dashboardCardNote{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;color:#596273}
button.dashboardCard{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;text-align:left;white-space:normal;align-self:stretch;color:#20242b;font-family:inherit}
button.dashboardCard:is(:hover,:active){background:#fff;border-color:#b9c8e6;box-shadow:0 3px 12px #173b6410}
button.dashboardCard:focus-visible{outline:3px solid #0b55e8;outline-offset:3px}
.dashboardInfo{position:absolute;top:6px;right:6px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;min-height:36px;padding:8px;border:0;border-radius:50%;background:transparent;color:#687182}
.dashboardInfo:hover:not(:disabled){background:#f0f3f8;color:#174ea6}
.dashboardInfo:focus-visible{outline:2px solid #0b55e8;outline-offset:1px}
.dashboardInfoDialog{box-sizing:border-box;width:min(480px,calc(100vw - 28px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid #e1e6ee;border-radius:14px;padding:24px;color:#173b64;box-shadow:0 12px 40px #172b4d30}
.dashboardInfoDialog::backdrop{background:#172b4d70}.dashboardInfoDialog h2{font-size:20px;margin-top:0}.dashboardInfoDialog p{line-height:1.6}.dashboardInfoDialog button{float:right}
@media(max-width:760px){.dashboard{padding:16px}.dashboardInfo{width:44px;height:44px;min-height:44px}.dashboardCard{min-height:150px}}
.dashboardFilterBar{display:grid;gap:8px;margin:12px 0;padding:10px;border:1px solid #b8c9ef;border-radius:8px;background:#fff;font-size:12px}
.dashboardFilterBar[hidden]{display:none}
.dashboardFilterBar button{white-space:normal;font-size:12px}
.recapExportControls{margin-top:18px;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.recapExportControls[hidden]{display:none}
.brandActions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;min-width:0;max-width:100%}
.brandActions:has(>button:not([hidden])){margin-left:6px}
.brandActions .recapExportControls{margin:0;flex:none}
.brandActions button{white-space:nowrap}
.brandActions #createLpi{margin:0}
.brandActions:not(:has(>button:not([hidden]))){display:none}
@media(max-width:1200px){.brand{flex-wrap:wrap}.brandActions{flex:1 1 100%}}
@media screen and (max-width:760px), screen and (max-width:950px) and (max-height:500px){
 .brandActions{flex:1 1 100%;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;padding:4px 2px;scroll-padding:4px;overscroll-behavior-x:contain}
 .brandActions:has(>button:not([hidden])){margin-left:0}
 .brandActions button{flex:none;min-height:44px;font-size:12px;padding:6px 10px}
}
#recapExportDialog{box-sizing:border-box;width:min(540px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;border:1px solid #b7c8e6;border-radius:12px;padding:24px;color:#173b64}
#recapExportDialog::backdrop{background:#172b4d88}#recapExportDialog h2{font-size:21px;margin:0 0 18px}#recapExportDialog p{line-height:1.5}#recapExportDialog .actions{flex-wrap:wrap;gap:10px}#recapExportDialog button{white-space:normal;min-height:44px}
.recapExportControls label{flex-basis:100%;font-weight:600}
.recapExportControls select{width:auto;max-width:100%;min-width:0}
#exportAllRecaps{white-space:normal;display:inline-flex;align-items:center;justify-content:center;gap:8px;max-width:100%}
#exportAllRecaps svg{flex-shrink:0}
.dashboardNotes{font-size:12px;line-height:1.5;color:#536480;margin-top:16px}.dashboardNotes p{margin:8px 0}
.coverageDetails{margin:18px 0;font-size:13px;line-height:1.5}.coverageDetails summary{cursor:pointer;color:#174ea6;font-weight:600;padding:8px 0}
.coverageClassList{display:flex;flex-direction:column;gap:18px}.coverageClassList button{white-space:normal;text-align:left}
.coverageLevel{min-width:0}.coverageLevelGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:8px}
.coverageClassGroup{display:flex;flex-direction:column;gap:6px;padding:10px;border:1px solid #d5def0;border-radius:8px;min-width:0}.coverageClassGroup>button{flex:1}.coverageClassActions{display:flex;flex-wrap:wrap;gap:6px}.coverageClassActions button{font-size:12px;min-height:36px}
.coverageLevel[data-grade="6"]{--grade-color:#008cf0;--grade-rgb:0,159,255}
.coverageLevel[data-grade="5"]{--grade-color:#ff2844;--grade-rgb:255,48,72}
.coverageLevel[data-grade="4"]{--grade-color:#edca00;--grade-rgb:255,229,0}
.coverageLevel[data-grade="3"]{--grade-color:#00b85a;--grade-rgb:0,214,111}
.coverageClassGroup[data-grade]{background:rgba(var(--grade-rgb),var(--coverage-opacity,0));border-color:var(--grade-color);border-left-width:4px;color:#10213a}
.coverageLegend{color:#536480;font-size:12px}
.coverageGrade{color:#10213a;font-size:15px;font-weight:700;margin:0 0 8px}
.coverageLevel[data-grade] .coverageGrade{border-left:4px solid var(--grade-color);padding-left:8px}
.coverageClassGroup[data-grade] button{color:#10213a;border-color:#10213a66;background:transparent}
.coverageClassGroup[data-grade] button:hover,.coverageClassGroup[data-grade] button:active{color:#10213a;background:#ffffff40}
.coverageClassGroup[data-grade] button:focus-visible{outline:2px solid #10213a;outline-offset:2px;box-shadow:0 0 0 4px #fff}
.dashboardDetailList{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.dashboardDetailButton{display:grid;grid-template-columns:4ch minmax(0,1fr);align-items:center;gap:12px;text-align:left;white-space:normal;min-width:0;line-height:1.4}.dashboardDetailValue{text-align:right;font-size:19px;font-variant-numeric:tabular-nums}.dashboardDetails details>p{color:#536480;font-size:12px}
@media(max-width:400px){.dashboardDetailList{grid-template-columns:1fr}}
@media(max-width:400px){.coverageLevelGrid{grid-template-columns:1fr}}
.welcomeResources{border-top:1px solid #d5def0;padding-top:18px}.welcomeResources>summary{color:#174ea6;cursor:pointer;font-weight:600;padding:8px 0 20px}
#observationsSection{margin:18px 0 8px}#observations{min-height:62px}#observationsSection label{margin:0 0 6px}
/* Keep administrative decisions readable while giving room to the send action. */
@media(min-width:761px) and (hover:hover) and (pointer:fine){
 #decisionDialog{max-height:min(820px,calc(100dvh - 48px));box-shadow:0 18px 60px #172b4d55}
 #decisionForm{max-height:min(818px,calc(100dvh - 50px))}
 #decisionForm>.recordHeader{cursor:grab;user-select:none}
 #decisionDialog.dragging #decisionForm>.recordHeader{cursor:grabbing}
 #decisionDialogTitle:focus-visible{outline:2px solid #0b55e8;outline-offset:4px;border-radius:3px}
}
.administrativeCard{padding:12px 14px;margin:10px 0}.administrativeCard h3{margin:0 0 6px;font-size:16px}.administrativeCard p{margin:5px 0;line-height:1.4}.administrativeCard .decisionSummary{margin:8px 0;line-height:1.45}.administrativeCard .attachmentActions{gap:8px;margin-top:10px}.administrativeCard a{padding:8px 11px}
[data-view=administrative]>h2{margin:0 0 8px}[data-view=administrative]>p{margin:6px 0;line-height:1.4}[data-view=administrative]>.actions{margin-top:10px;padding:10px 0}#administrativeStatus:empty{display:none}
#recordActions{position:sticky;bottom:-24px;z-index:3;background:#fff;margin-top:12px;box-shadow:0 -5px 8px #fff}
/* On phones the stacked buttons can occupy a large part of the viewport. Keep
   them in the document flow so they never cover the pupil information. */
@media(max-width:800px){#recordActions{position:static;bottom:auto;box-shadow:none}}
@media(max-height:600px){#recordActions{position:static}}
.adminFilters{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1.2fr)}.adminFilters>label{min-width:0}
#adminAeshOpen{margin:0 0 14px}
#adminAeshDialog{box-sizing:border-box;width:min(720px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:20px;border:1px solid #c8d5ef;border-radius:12px;color:#173b64}
#adminAeshDialog::backdrop{background:#172b4d88}
#adminAeshDialog>.recordHeader{flex-wrap:nowrap;gap:12px}
#adminAeshDialog h2{min-width:0;margin:0}
#adminAeshDialog[open]{display:flex;flex-direction:column;overflow:hidden}
#adminAeshDialog>.recordHeader,#adminAeshDialog>.actions{flex-shrink:0}
#adminAeshDialog .adminAeshBody{overflow:auto;min-height:0;padding:0 3px}
#adminAeshDialog label:not(.adminAeshChoice){display:block;margin:12px 0}
#adminAeshDialog input[type=search],#adminAeshPupil{box-sizing:border-box;display:block;width:100%;min-width:0;min-height:44px;margin-top:6px}
#adminAeshChoices{margin:16px 0;min-width:0}
#adminAeshChoices .adminAeshChoice{display:flex;align-items:center;gap:12px;min-height:44px;margin:4px 0;line-height:1.5;overflow-wrap:anywhere}
#adminAeshChoices input{width:18px;height:18px;flex:0 0 18px;margin:0}
#adminAeshDialog .actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:12px}
#adminAeshDialog .actions button{white-space:normal}
@media(max-width:560px){#adminAeshDialog{padding:12px}#adminAeshDialog h2{font-size:20px}#adminAeshDialog input,#adminAeshDialog select{font-size:16px}#adminAeshDialog .actions button{flex:1 1 100%;min-height:40px}}
.adminFilters>label{display:flex;flex-direction:column;justify-content:flex-end;gap:6px}
.adminFilters input,.adminFilters select{box-sizing:border-box;width:100%;height:44px;min-height:44px;margin:0;line-height:normal}
.adminFilters input[type=search]{-webkit-appearance:none;appearance:none}
.attachmentHeader{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}
.attachmentHeader>strong{min-width:0;max-width:100%;overflow-wrap:anywhere}
.attachmentHeader>.pendingBadge{flex:none;max-width:100%;white-space:normal}
@media(max-width:560px){.adminFilters{grid-template-columns:1fr 1fr}.adminFilters>label:first-child{grid-column:1 / -1}}
@media(max-width:760px){.adminFilters input,.adminFilters select{font-size:16px}}
@media(max-height:500px){#adminFixed .activationSummary{margin:6px 0}#adminFixed>p{display:none}}
@media(max-width:400px){#dashboardCards{grid-template-columns:1fr;gap:8px}.dashboardCard{padding:12px}.dashboardCardTitle{overflow-wrap:anywhere;font-size:13px}}
@media print{#observationsSection{display:none}}
.welcome{max-width:1380px;margin:0 auto;color:#173b64}
.welcomeGrid{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr);gap:30px;align-items:start}
.welcome h1,.welcome h2{font-size:20px;margin:0 0 14px}.welcome h3{font-size:15px;margin:0 0 10px}
.welcomeGuide ol{padding:0;list-style:none;counter-reset:steps;margin:0}
.welcomeGuide li{position:relative;padding:0 0 18px 40px;counter-increment:steps}
.welcomeGuide li:before{content:counter(steps);position:absolute;left:0;top:0;background:#e9efff;color:#000091;width:28px;height:28px;display:grid;place-items:center;border-radius:50%;font-weight:700}
.welcomeGuide li p{margin:6px 0 0;color:#46556b;line-height:1.6}
.welcomeResources .welcomeGrid{grid-template-columns:minmax(0,1fr)}
.welcomeGuide ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px;align-items:start}
.welcomeGuide li{min-width:0;overflow-wrap:anywhere}
@media(max-width:760px){.welcomeGuide ol{grid-template-columns:minmax(0,1fr)}}
.welcomeNote{padding:18px;background:#f4f5f7;border-left:3px solid #b6bdc9;border-radius:8px;font-size:13px;line-height:1.6}
.welcomeNote p{margin:8px 0 0}
.welcomeInfographic{margin:0;min-width:0;border:1px solid #d5def0;border-radius:12px;padding:18px;background:white}
.welcomeInfographic figcaption p{margin:0 0 14px;color:#46556b}
.welcomeInfographic img{display:block;width:100%;height:auto;border-radius:5px}
.welcomeInfographic>a:focus-visible{outline:2px solid #0b55e8;display:block}
.welcomeSource{font-size:11px;color:#667085;line-height:1.5;margin:10px 0 0}
@media(max-width:1100px){.welcomeGrid{grid-template-columns:minmax(0,1fr)}.welcomeInfographic{max-width:780px}}
@media(max-width:760px){.welcomeGrid{gap:22px}.welcomeInfographic{padding:12px}.welcome .projectGuides{gap:4px 16px}}
@media print{.recapModified{color:#333}}

.coverageLevelGrid .coverageClassGroup{position:relative}
.coverageClassGroup>button.coverageComplete{display:block}
.coverageCompleteStar{position:absolute;top:5px;right:5px;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#fff;color:#d10d25;box-shadow:0 1px 3px #10213a26}

.coverageEmptyWarning{position:absolute;top:5px;right:5px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:22px;height:20px;padding-top:5px;clip-path:polygon(50% 0,100% 100%,0 100%);background:#fff;color:#d10d25;font-family:Arial,sans-serif;font-size:15px;font-weight:700;line-height:1}

.coverageClassGroup>button:has(.coverageCompleteStar,.coverageEmptyWarning){padding-right:34px}

.coverageCompleteStar svg{display:block;flex:none;width:14px;height:14px;fill:currentColor}
