:root{--navy:#063d28;--navy2:#174f38;--ivory:#edf3ee;--paper:#fffef9;--violet:#0d6b43;--violet-soft:#e2f0e8;--coral:#9a5b00;--coral-soft:#fff0c7;--lime:#ffb438;--line:#c8d4cb;--muted:#607166;--shadow:0 18px 50px rgba(6,61,40,.14)}
*{box-sizing:border-box}html{background:var(--ivory)}body{margin:0;background:var(--ivory);color:var(--navy);font:16px/1.55 Arial,sans-serif}button,input,select{font:inherit}button{color:inherit}.loading{min-height:100vh;display:grid;place-content:center;justify-items:center;gap:24px;color:var(--muted)}
.brand{display:flex;align-items:center}.brand picture{display:block;width:min(100%,215px)}.brand img{display:block;width:100%;height:auto}.auth-card .brand,.setup-card .brand,.loading .brand{width:max-content;max-width:100%;padding:14px 17px;border-radius:15px;background:var(--navy);box-shadow:0 10px 28px rgba(6,61,40,.16)}.auth-card .brand picture,.setup-card .brand picture,.loading .brand picture{width:min(100%,235px)}
.auth-shell,.setup-shell{min-height:100vh;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 15% 10%,var(--violet-soft),transparent 32%),radial-gradient(circle at 85% 90%,var(--coral-soft),transparent 32%),var(--ivory)}.auth-card,.setup-card{width:min(700px,100%);padding:42px;border:1px solid rgba(6,61,40,.09);border-radius:24px;background:var(--paper);box-shadow:0 26px 80px rgba(6,61,40,.14)}.auth-card .brand,.setup-card .brand{margin-bottom:34px}.kicker{color:var(--coral);font-size:12px;font-weight:800;letter-spacing:.16em}.auth-card h1,.setup-card h1{margin:12px 0 10px;font-size:clamp(38px,7vw,64px);line-height:1;letter-spacing:-.055em}.auth-card>p,.setup-card>p{max-width:560px;margin:0;color:var(--muted);font-size:16px}.auth-card form,.setup-card form{display:grid;gap:18px;margin-top:30px}.auth-card label,.setup-card label{display:flex;flex-direction:column;gap:8px;color:var(--muted);font-size:14px;font-weight:700}.auth-card input,.setup-card input,.setup-card select{width:100%;padding:13px;border:1px solid var(--line);border-radius:10px;background:white;color:var(--navy);outline:0}.auth-card input:focus,.setup-card input:focus{border-color:var(--violet);box-shadow:0 0 0 4px rgba(13,107,67,.14)}.primary-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:13px 20px;border:0;border-radius:10px;background:var(--lime);color:var(--navy);font-size:15px;font-weight:800;text-decoration:none;cursor:pointer}.primary-button:hover{background:#ffc45a}.primary-button:disabled{opacity:.55;cursor:wait}.auth-note{margin-top:20px;color:var(--muted);font-size:14px}.alert{padding:13px 15px;border-radius:10px;background:var(--coral-soft);color:#815300;font-size:14px}.success{background:#e2f0e8;color:#075b37}.setup-card{width:min(820px,100%)}.setup-card fieldset{display:grid;gap:14px;margin:0;padding:20px;border:1px solid var(--line);border-radius:14px}.setup-card legend{padding:0 8px;font-size:15px;font-weight:800}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.setup-card small{font-size:12px;font-weight:400}
.app-shell{min-height:100vh;display:grid;grid-template-columns:260px minmax(0,1fr)}.sidebar{position:fixed;inset:0 auto 0 0;width:260px;display:flex;flex-direction:column;padding:28px 18px;color:#fff;background:linear-gradient(180deg,var(--navy),#0a4b31);z-index:20}.sidebar .brand{padding:0 8px}.sidebar .brand picture{width:210px}.space-label{margin:30px 12px 14px;color:rgba(255,255,255,.58);font-size:11px;font-weight:800;letter-spacing:.17em}.sidebar nav{display:grid;gap:5px}.sidebar nav button{display:flex;align-items:center;gap:12px;width:100%;padding:13px 14px;border:0;border-radius:11px;background:transparent;color:rgba(255,255,255,.8);font-size:15px;font-weight:700;text-align:left;cursor:pointer}.sidebar nav button:hover{color:#fff;background:rgba(255,255,255,.09)}.sidebar nav button.active{color:var(--navy);background:var(--lime)}.sidebar nav span{width:22px;font-size:19px}.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:4px;padding:16px 10px 0;border-top:1px solid rgba(255,255,255,.14);color:rgba(255,255,255,.68);font-size:12px}.sidebar-footer b{color:#fff}.sidebar-footer a{color:inherit;text-decoration:none}.sidebar-footer a:hover{color:var(--lime)}.app-main{grid-column:2;min-width:0}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 4vw;position:sticky;top:0;z-index:10;border-bottom:1px solid var(--line);background:rgba(246,244,234,.94);backdrop-filter:blur(14px)}.topbar-title{display:flex;flex-direction:column}.topbar-title span{color:var(--coral);font-size:11px;font-weight:800;letter-spacing:.15em}.topbar-title b{font-size:17px}.identity{display:flex;align-items:center;gap:11px}.avatar{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:var(--navy);color:var(--lime);font-size:13px;font-weight:900}.identity>span{display:flex;flex-direction:column}.identity b{font-size:14px}.identity small{color:var(--muted);font-size:12px}.logout{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:transparent;font-size:13px;cursor:pointer}.content{width:min(1180px,calc(100% - 8vw));margin:0 auto;padding:40px 0 76px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px}.page-heading h1{margin:8px 0 5px;font-size:clamp(38px,5vw,58px);line-height:1;letter-spacing:-.05em}.page-heading p{margin:0;color:var(--muted);font-size:16px}.hero{margin-top:26px;padding:34px 38px;border-radius:22px;background:var(--navy);color:#fff;box-shadow:var(--shadow);overflow:hidden;position:relative}.hero:after{content:"";position:absolute;width:270px;height:270px;right:-90px;top:-100px;border:55px solid var(--lime);border-radius:50%}.hero h2{position:relative;z-index:1;margin:0;font-size:34px}.hero p{position:relative;z-index:1;max-width:570px;margin:12px 0 0;color:rgba(255,255,255,.76);font-size:16px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:18px}.metric{padding:24px;border:1px solid rgba(6,61,40,.09);border-radius:17px;background:var(--paper);box-shadow:0 12px 30px rgba(6,61,40,.06)}.metric span{display:block;color:var(--muted);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.metric strong{display:block;margin-top:12px;font-size:34px}.panel{padding:26px;border:1px solid rgba(6,61,40,.09);border-radius:18px;background:var(--paper);box-shadow:0 14px 34px rgba(6,61,40,.06)}.admin-grid{display:grid;grid-template-columns:minmax(300px,.7fr) minmax(0,1.3fr);gap:16px;margin-top:28px;align-items:start}.panel h2{margin:7px 0 18px;font-size:25px}.invite-form{display:grid;gap:15px}.invite-form label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:14px;font-weight:700}.invite-form input,.invite-form select,.user-row select{padding:11px;border:1px solid var(--line);border-radius:9px;background:white;color:var(--navy)}.activation-box{margin-top:18px;padding:14px;border-radius:10px;background:#e2f0e8;color:#075b37}.activation-box input{width:100%;margin-top:8px;padding:9px;border:1px solid #a8cdb8;border-radius:7px}.activation-box button{margin-top:8px;border:0;background:transparent;color:#075b37;font-weight:800;cursor:pointer}.user-list{display:grid}.user-row{display:grid;grid-template-columns:42px 1fr 135px auto;align-items:center;gap:12px;min-height:76px;border-top:1px solid var(--line)}.user-row:first-child{border-top:0}.user-row .avatar{width:38px;height:38px}.user-row>div{display:flex;flex-direction:column;min-width:0}.user-row b,.user-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-row small{color:var(--muted);font-size:12px}.status-button{padding:7px 9px;border:0;border-radius:8px;background:#e2f0e8;color:#075b37;font-size:12px;font-weight:800;cursor:pointer}.status-button.off{background:var(--coral-soft);color:#815300}.empty{padding:32px 0;color:var(--muted);text-align:center}.mobile-menu{display:none}
@media(max-width:980px){.metric-grid{grid-template-columns:1fr 1fr}.admin-grid{grid-template-columns:1fr}.app-shell{grid-template-columns:220px minmax(0,1fr)}.sidebar{width:220px}}
@media(max-width:720px){.app-shell{display:block}.sidebar{width:min(84vw,300px);transform:translateX(-105%);transition:.25s}.sidebar.open{transform:translateX(0)}.app-main{min-width:0}.topbar{padding:0 16px}.mobile-menu{display:block;border:0;background:transparent;font-size:24px}.topbar-title{display:none}.identity>span{display:none}.content{width:calc(100% - 28px);padding-top:24px}.page-heading{align-items:flex-start;flex-direction:column}.hero{padding:28px}.metric-grid{grid-template-columns:1fr 1fr}.user-row{grid-template-columns:40px 1fr}.user-row select,.user-row .status-button{grid-column:2}.auth-card,.setup-card{padding:27px}.form-grid{grid-template-columns:1fr}}
@media(max-width:430px){.metric-grid{grid-template-columns:1fr}.auth-shell,.setup-shell{padding:14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.activation-box p{margin:6px 0;color:#4d6816;font-size:13px}.status-button.danger{background:var(--coral-soft);color:#96382d}.pending-panel{margin-top:16px}.pending-row{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:72px;border-top:1px solid var(--line)}.pending-row:first-child{border-top:0}.pending-row>div{display:flex;flex-direction:column}.pending-row small{color:var(--muted);font-size:12px}.pending-row>span{padding:6px 10px;border-radius:999px;background:#fff2cc;color:#806017;font-size:12px;font-weight:800}.pending-row>.pending-actions{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-end;gap:7px}.pending-actions button{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:transparent;font-size:12px;font-weight:800;cursor:pointer}.pending-actions button.danger{border-color:var(--coral-soft);color:#96382d;background:var(--coral-soft)}
@media(max-width:720px){.pending-row{align-items:flex-start;flex-wrap:wrap;padding:13px 0}.pending-row>.pending-actions{width:100%;justify-content:flex-start}}
.muted{color:var(--muted);font-size:14px}.empty-state{min-height:150px;display:grid;place-content:center;text-align:center}.empty-state b{font-size:20px}.empty-state p{margin:6px 0;color:var(--muted)}.subject-badge{display:inline-flex;width:max-content;padding:6px 10px;border-radius:999px;background:var(--violet-soft);color:var(--violet);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.07em}.course-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:28px}.course-grid.compact{margin-top:16px}.course-card{display:flex;flex-direction:column}.course-card-head{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:13px}.course-card h2{margin:16px 0 5px;font-size:24px}.course-card>p{margin:0 0 14px;color:var(--muted)}.progress-track{height:7px;margin:9px 0;border-radius:20px;background:#e8e4dc;overflow:hidden}.progress-track i{display:block;height:100%;border-radius:20px;background:var(--violet)}.course-card>small,.student-card small,.family-card small{color:var(--muted);font-size:12px}.lesson-stack{margin-top:18px}.lesson-row{display:grid;grid-template-columns:32px 1fr;gap:10px;padding:12px 0;border-top:1px solid var(--line)}.lesson-row>b{color:#aaa398;font-size:12px}.lesson-row>span{display:flex;flex-direction:column}.lesson-row strong{font-size:14px}.lesson-row small{margin-top:3px;color:var(--muted);font-size:12px}.resource-list,.assignment-summary{display:grid;gap:7px;margin-top:16px;padding-top:15px;border-top:1px solid var(--line)}.resource-list>b,.assignment-summary>b{font-size:13px}.resource-list a{display:flex;align-items:center;gap:8px;color:var(--violet);font-size:13px;text-decoration:none}.resource-list a small{margin-left:auto;color:var(--muted)}.assignment-summary>span{display:flex;justify-content:space-between;font-size:13px}.assignment-summary small{color:var(--muted)}
.homework-list,.correction-grid,.session-list,.notification-list{display:grid;gap:14px;margin-top:28px}.homework-item{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,.6fr);gap:24px;align-items:center}.homework-item h2,.correction-item h2,.session-item h2,.student-card h2,.family-card h2,.progress-card h2{margin:10px 0 5px;font-size:22px}.homework-item p,.correction-item p,.session-item p,.student-card p,.family-card p,.progress-card p{margin:0;color:var(--muted)}.homework-item>div>small,.correction-item>div>small{display:block;margin-top:9px;color:var(--muted)}.homework-action{display:grid;gap:10px}.homework-action form{display:grid;gap:9px}.homework-action>a,.document-link{display:block;padding:10px;border-radius:9px;background:var(--violet-soft);color:var(--violet);font-size:13px;text-decoration:none}.file-drop{position:relative;overflow:hidden;padding:15px;border:1px dashed #bbb4a8;border-radius:10px;color:var(--muted);text-align:center;font-size:13px;font-weight:700;cursor:pointer}.file-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}.feedback-box{display:flex;align-items:center;gap:13px;margin-top:15px;padding:12px;border-radius:10px;background:#e8f7c7}.feedback-box strong{font-size:21px;color:#4d6816}.feedback-box span{font-size:13px}.graded-label{padding:10px;border-radius:9px;background:#e8f7c7;color:#4d6816;text-align:center;font-weight:800}
.content-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-top:28px;align-items:start}.feature-form{display:grid;gap:13px}.feature-form h2{margin:0 0 4px}.feature-form label,.correction-item form label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:13px;font-weight:700}.feature-form input,.feature-form select,.feature-form textarea,.correction-item input,.correction-item textarea{width:100%;padding:11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font:inherit;outline:0}.feature-form input:focus,.feature-form select:focus,.feature-form textarea:focus,.correction-item input:focus,.correction-item textarea:focus{border-color:var(--violet);box-shadow:0 0 0 3px rgba(108,92,231,.1)}.section-block{margin-top:38px}.section-block>h2{margin:7px 0;font-size:27px}.correction-item{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.65fr);gap:24px}.correction-item form{display:grid;gap:11px}.student-grid,.progress-grid,.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:28px}.student-card,.family-card{display:grid;grid-template-columns:50px 1fr;gap:15px;align-items:start}.student-card .avatar,.family-card .avatar{width:48px;height:48px}.student-card h2,.family-card h2{margin-top:0}.session-form{margin-top:28px}.session-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.session-form-grid>button{align-self:end}.session-item{display:grid;grid-template-columns:62px 1fr auto;gap:17px;align-items:center}.session-item>time{width:58px;height:66px;display:grid;place-content:center;text-align:center;border-radius:11px;background:var(--violet-soft)}.session-item time strong{font-size:24px;line-height:1}.session-item time span{color:var(--violet);font-size:11px;font-weight:800;text-transform:uppercase}.session-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.session-actions a,.session-actions button{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--navy);font-size:12px;text-decoration:none;cursor:pointer}.session-actions a{border-color:var(--violet);color:var(--violet)}.session-actions .danger{color:#96382d}.status-pill{padding:7px 10px;border-radius:999px;background:#fff2cc;color:#806017;font-size:12px;font-weight:800}.status-pill.completed{background:#e8f7c7;color:#4d6816}.status-pill.cancelled{background:var(--coral-soft);color:#96382d}
.notification-item{display:grid;grid-template-columns:10px 1fr;gap:13px;width:100%;text-align:left;cursor:pointer}.notification-item i{width:9px;height:9px;margin-top:6px;border-radius:50%;background:var(--coral)}.notification-item span{display:flex;flex-direction:column;gap:4px}.notification-item b{font-size:15px}.notification-item small{color:var(--muted);font-size:13px}.notification-item.read{opacity:.62}.notification-item.read i{background:#c8c2b7}.score-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0}.score-pair>div{padding:15px;border-radius:12px;background:var(--violet-soft)}.score-pair strong{display:block;font-size:27px}.score-pair span{color:var(--muted);font-size:12px}.simple-list{display:grid}.simple-list>div{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 0;border-top:1px solid var(--line)}.simple-list>div:first-child{border-top:0}.simple-list span{display:flex;flex-direction:column}.simple-list small{color:var(--muted)}.simple-list strong{font-size:13px}.settings-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.settings-grid h2{margin:8px 0}.settings-grid p{color:var(--muted)}
@media(max-width:1100px){.content-tools{grid-template-columns:1fr 1fr}.content-tools>*:last-child{grid-column:span 2}.course-grid{grid-template-columns:1fr}.settings-grid{grid-template-columns:1fr}}
@media(max-width:820px){.content-tools{grid-template-columns:1fr}.content-tools>*:last-child{grid-column:auto}.homework-item,.correction-item{grid-template-columns:1fr}.student-grid,.progress-grid{grid-template-columns:1fr}.session-item{grid-template-columns:58px 1fr}.session-actions{grid-column:2;justify-content:flex-start}}
@media(max-width:560px){.session-form-grid{grid-template-columns:1fr}.score-pair{grid-template-columns:1fr}.homework-item,.correction-item{padding:20px}}
/* Typographie renforcée pour une lecture confortable sur téléphone et ordinateur. */
body{font-size:17px}.sidebar nav button,.primary-button{font-size:16px}.page-heading p,.hero p{font-size:17px}.kicker,.space-label,.topbar-title span{font-size:13px}.identity b,.auth-card label,.setup-card label,.invite-form label,.feature-form label,.correction-item form label{font-size:15px}.identity small,.sidebar-footer,.metric span,.course-card>small,.student-card small,.family-card small,.lesson-row>b,.lesson-row small,.pending-row small,.user-row small,.score-pair span{font-size:14px}.subject-badge,.status-button,.pending-row>span,.pending-actions button,.session-actions a,.session-actions button,.status-pill{font-size:13px}.resource-list>b,.assignment-summary>b,.resource-list a,.assignment-summary>span,.homework-action>a,.document-link,.file-drop,.feedback-box span,.notification-item small,.simple-list strong{font-size:14px}.feature-form input,.feature-form select,.feature-form textarea,.correction-item input,.correction-item textarea,.auth-card input,.setup-card input,.setup-card select,.invite-form input,.invite-form select,.user-row select{font-size:16px}
.messaging-layout{display:grid;grid-template-columns:minmax(290px,360px) minmax(0,1fr);gap:16px;margin-top:28px;align-items:start}.conversation-sidebar{padding:18px}.new-conversation{border-bottom:1px solid var(--line);padding-bottom:16px}.new-conversation summary{padding:8px 4px;color:var(--violet);font-weight:800;cursor:pointer}.new-conversation form{display:grid;gap:12px;padding-top:14px}.new-conversation label,.message-composer label,.session-report-editor label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:15px;font-weight:700}.new-conversation input,.new-conversation select,.new-conversation textarea,.message-composer textarea,.session-report-editor input,.session-report-editor select,.session-report-editor textarea{width:100%;padding:11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font:inherit;outline:0}.new-conversation input:focus,.new-conversation select:focus,.new-conversation textarea:focus,.message-composer textarea:focus,.session-report-editor input:focus,.session-report-editor select:focus,.session-report-editor textarea:focus{border-color:var(--violet);box-shadow:0 0 0 3px rgba(108,92,231,.1)}.conversation-list{display:grid;margin-top:12px}.conversation-preview{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:13px 9px;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;cursor:pointer}.conversation-preview:first-child{border-top:0}.conversation-preview:hover,.conversation-preview.active{border-radius:11px;background:var(--violet-soft)}.conversation-preview .avatar{width:40px;height:40px}.conversation-preview-copy{display:flex;flex-direction:column;min-width:0}.conversation-preview-copy b,.conversation-preview-copy small,.conversation-preview-copy em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conversation-preview-copy b{font-size:15px}.conversation-preview-copy small{color:var(--violet);font-size:13px}.conversation-preview-copy em{color:var(--muted);font-size:13px;font-style:normal}.unread-badge{min-width:24px;height:24px;display:grid;place-items:center;border-radius:999px;background:var(--coral);color:#fff;font-size:12px}.message-thread{padding:0;overflow:hidden}.message-thread-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:24px;border-bottom:1px solid var(--line)}.message-thread-head h2{margin:4px 0}.message-thread-head p{margin:0;color:var(--muted)}.thread-head-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.quiet-button{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--navy);font-size:13px;font-weight:700;cursor:pointer}.message-stream{min-height:360px;max-height:560px;display:flex;flex-direction:column;gap:12px;padding:24px;overflow-y:auto;background:#faf8f2}.message-bubble{width:min(78%,620px);padding:13px 15px;border:1px solid var(--line);border-radius:6px 16px 16px 16px;background:#fff}.message-bubble.own{align-self:flex-end;border-color:transparent;border-radius:16px 6px 16px 16px;background:var(--violet-soft)}.message-bubble>div{display:flex;align-items:center;justify-content:space-between;gap:12px}.message-bubble b{font-size:14px}.message-bubble small{color:var(--muted);font-size:12px}.message-bubble p{margin:7px 0 0;overflow-wrap:anywhere}.message-composer{display:grid;gap:10px;padding:20px 24px;border-top:1px solid var(--line)}.message-composer>div{display:flex;align-items:center;justify-content:space-between;gap:15px}.message-composer small{color:var(--muted);font-size:13px}.conversation-empty{min-height:520px;display:grid;place-content:center;text-align:center}.conversation-empty>span{font-size:46px}.conversation-empty h2{margin:12px 0 4px}.conversation-empty p{max-width:460px;margin:0;color:var(--muted)}.conversation-closed{padding:18px 24px;background:#fff2cc;color:#806017;font-weight:700}.session-item-detailed{align-items:start}.session-detail-area{grid-column:1/-1}.session-report-summary{margin-top:8px;padding:20px;border-radius:13px;background:#f0edff}.session-report-summary>div{display:flex;align-items:center;justify-content:space-between;gap:15px}.session-report-summary>div small{color:var(--muted);font-size:13px}.session-report-summary dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px;margin:16px 0 0}.session-report-summary dl div{padding-top:10px;border-top:1px solid rgba(108,92,231,.18)}.session-report-summary dt{color:var(--muted);font-size:13px;font-weight:800}.session-report-summary dd{margin:4px 0 0;white-space:pre-line}.session-report-editor{margin-top:12px;padding:16px;border:1px solid var(--line);border-radius:12px}.session-report-editor summary{color:var(--violet);font-weight:800;cursor:pointer}.session-report-editor form{display:grid;gap:12px;margin-top:15px}.report-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:900px){.messaging-layout{grid-template-columns:1fr}.conversation-empty{min-height:300px}.message-stream{max-height:480px}.session-report-summary dl{grid-template-columns:1fr}}
@media(max-width:560px){.message-thread-head,.message-composer>div,.session-report-summary>div{align-items:flex-start;flex-direction:column}.thread-head-actions{justify-content:flex-start}.message-bubble{width:92%}.message-stream{padding:16px}.message-composer{padding:16px}.report-form-grid{grid-template-columns:1fr}}

/* Groupes de discussion administrés. */
.group-creator{margin-bottom:10px;padding:0 0 16px;border-bottom:1px solid var(--line)}.group-creator summary{color:var(--navy)}.field-label{display:block;color:var(--muted);font-size:15px;font-weight:700}.group-member-picker{display:grid;gap:12px;max-height:310px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#faf8f2;overflow-y:auto}.group-member-picker fieldset{display:grid;gap:6px;margin:0;padding:0;border:0}.group-member-picker legend{width:100%;margin-bottom:4px;padding:0;color:var(--violet);font-size:13px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.group-member-option{display:grid!important;grid-template-columns:20px minmax(0,1fr);gap:9px!important;align-items:center;padding:8px 9px;border-radius:9px;background:#fff;color:var(--navy)!important;cursor:pointer}.group-member-option:hover{background:var(--violet-soft)}.group-member-option input{width:18px!important;height:18px;margin:0;accent-color:var(--violet)}.group-member-option span{display:flex;flex-direction:column;gap:2px}.group-member-option b{font-size:14px}.group-member-option small{color:var(--muted);font-size:12px}.form-help{margin:0;color:var(--muted);font-size:13px}.group-avatar{background:var(--lime);color:var(--navy);font-size:12px;letter-spacing:.04em}.group-member-summary{display:flex;flex-wrap:wrap;gap:7px;padding:12px 24px;border-bottom:1px solid var(--line);background:#fff}.group-member-summary>span{padding:6px 9px;border-radius:999px;background:var(--violet-soft);color:var(--navy);font-size:13px;font-weight:800}.group-member-summary small{margin-left:4px;color:var(--muted);font-size:11px;font-weight:700}.group-manager{padding:14px 24px;border-bottom:1px solid var(--line);background:#fff}.group-manager summary{color:var(--violet);font-weight:900;cursor:pointer}.group-manager form{display:grid;gap:12px;margin-top:14px}.group-manager label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:15px;font-weight:700}.group-manager input,.group-manager textarea{width:100%;padding:11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font:inherit;outline:0}.group-manager input:focus,.group-manager textarea:focus{border-color:var(--violet);box-shadow:0 0 0 3px rgba(13,107,67,.12)}
@media(max-width:560px){.group-member-summary,.group-manager{padding-right:16px;padding-left:16px}.group-member-picker{max-height:250px}}

/* Contacts famille-école et exercices interactifs. */
.relationship-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:17px;padding-top:15px;border-top:1px solid var(--line)}.relationship-actions>b{width:100%;font-size:14px}.relationship-actions button{display:inline-flex;align-items:center;gap:7px;padding:9px 12px;border:1px solid var(--violet);border-radius:9px;background:var(--violet-soft);color:var(--violet);font-size:14px;font-weight:800;cursor:pointer}.relationship-actions button:hover{background:var(--violet);color:#fff}.relationship-empty{margin-top:14px!important;padding-top:12px;border-top:1px solid var(--line);font-size:14px!important}.exercise-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:28px}.exercise-grid.compact{margin-top:16px}.exercise-card{display:flex;flex-direction:column}.exercise-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.exercise-card h2{margin:15px 0 6px;font-size:24px}.exercise-card p{margin:0;color:var(--muted)}.exercise-card small{display:block;margin:10px 0 18px;color:var(--muted);font-size:14px}.exercise-card .primary-button{margin-top:auto}.exercise-state{padding:6px 9px;border-radius:999px;background:#e8f7c7;color:#4d6816;font-size:13px;font-weight:800}.exercise-state.new{background:#fff2cc;color:#806017}.exercise-workspace{margin-top:24px;padding:30px}.exercise-workspace-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px}.exercise-workspace-head h2{margin:7px 0 5px;font-size:30px}.exercise-workspace-head p{margin:0;color:var(--muted)}#exercise-answer-form{display:grid;gap:16px}.quiz-question{margin:0;padding:22px;border:1px solid var(--line);border-radius:14px;background:#faf8f2}.quiz-question legend{padding:0 8px;color:var(--coral);font-size:14px;font-weight:800}.quiz-question h3{margin:0 0 17px;font-size:20px;line-height:1.35}.answer-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.answer-options.compact{grid-template-columns:repeat(2,minmax(120px,220px))}.answer-options label{cursor:pointer}.answer-options input{position:absolute;opacity:0}.answer-options span{display:block;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff}.answer-options input:checked+span{border-color:var(--violet);background:var(--violet-soft);box-shadow:0 0 0 2px rgba(108,92,231,.08)}.short-answer{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:15px;font-weight:700}.short-answer input{padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--navy);font:inherit}.quiz-result{margin-top:24px;padding:24px;border-radius:15px}.quiz-result.passed{background:#e8f7c7}.quiz-result.retry{background:#fff2cc}.quiz-result>h2{margin:5px 0;font-size:42px}.quiz-result>p{margin:0 0 20px}.answer-review-list{display:grid;gap:10px}.answer-review{padding:15px;border-radius:11px;background:rgba(255,255,255,.76)}.answer-review>b{font-size:15px}.answer-review.correct>b{color:#4d6816}.answer-review.incorrect>b{color:#96382d}.answer-review p{margin:5px 0}.answer-review small{display:block;color:var(--muted);font-size:14px}.answer-review>div{margin-top:8px;padding:9px;border-radius:8px;background:var(--violet-soft);white-space:pre-line}.exercise-builder{margin-top:28px}.exercise-builder-header{display:grid;grid-template-columns:1fr 1.2fr .65fr;gap:13px}.question-builder-card{display:grid;gap:12px;margin-top:12px;padding:20px;border:1px solid var(--line);border-radius:14px;background:#faf8f2}.question-builder-head{display:flex;align-items:center;justify-content:space-between}.question-builder-head>b{font-size:18px}.question-builder-grid{display:grid;grid-template-columns:1fr 150px;gap:12px}.question-builder-card label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:15px;font-weight:700}.question-builder-card input,.question-builder-card select,.question-builder-card textarea{width:100%;padding:11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font:inherit}.question-builder-card [hidden]{display:none}.builder-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px}.exercise-empty{margin-top:28px}.result-table{padding-top:10px;padding-bottom:10px}.result-table article{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 0;border-top:1px solid var(--line)}.result-table article:first-child{border-top:0}.result-table span{display:flex;flex-direction:column;min-width:0}.result-table small{color:var(--muted);font-size:14px}.result-table strong{font-size:20px}.result-pass{color:#4d6816}.result-retry{color:#96382d}
@media(max-width:820px){.exercise-grid{grid-template-columns:1fr}.exercise-builder-header{grid-template-columns:1fr}.exercise-workspace{padding:20px}.answer-options{grid-template-columns:1fr}.exercise-workspace-head{flex-direction:column}.question-builder-grid{grid-template-columns:1fr}}
@media(max-width:520px){.builder-actions{align-items:stretch;flex-direction:column}.builder-actions>*{width:100%}.answer-options.compact{grid-template-columns:1fr}.result-table article{align-items:flex-start}.exercise-workspace{padding:17px}}

/* Gestion dynamique et réinitialisation. */
.user-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.delete-user-button,.danger-button{padding:9px 12px;border:1px solid #c8493b;border-radius:9px;background:#fff1ed;color:#96382d;font:inherit;font-size:14px;font-weight:800;cursor:pointer}.danger-button{min-height:46px;background:#b83b30;color:#fff}.delete-user-button:hover,.danger-button:hover{background:#96382d;color:#fff}.danger-button:disabled,.delete-user-button:disabled{opacity:.55;cursor:wait}.status-button:disabled{opacity:.58;cursor:not-allowed}.course-manager{margin-top:18px;padding-top:15px;border-top:1px solid var(--line)}.course-manager summary{color:var(--violet);font-size:15px;font-weight:800;cursor:pointer}.course-manager form{display:grid;gap:12px;margin-top:16px;padding:16px;border-radius:12px;background:#faf8f2}.course-manager label,.reset-zone label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:15px;font-weight:700}.course-manager input,.course-manager select,.reset-zone input{width:100%;padding:11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font:inherit}.course-manager-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.reset-zone{margin-top:20px;border:2px solid #e8a399;background:#fff9f6}.reset-zone h2{margin-bottom:8px}.reset-zone>p{max-width:850px;color:#7a4740}.reset-zone form{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:13px;margin-top:20px}.reset-zone .kicker{color:#a82e25}
@media(max-width:900px){.reset-zone form{grid-template-columns:1fr 1fr}.reset-zone form button{grid-column:1/-1}.course-manager-actions{align-items:stretch;flex-direction:column}.course-manager-actions>*{width:100%}}
@media(max-width:720px){.user-actions{grid-column:2;justify-content:flex-start}.reset-zone form{grid-template-columns:1fr}.reset-zone form button{grid-column:auto}}

/* Abonnements, paiements et coupons. */
.billing-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:28px}.billing-plan{display:flex;flex-direction:column}.billing-plan>h2{margin-bottom:5px}.billing-plan>strong{font-size:32px;color:var(--violet)}.billing-plan>p{min-height:52px;color:var(--muted)}.billing-plan form{display:grid;gap:12px;margin-top:auto;padding-top:17px;border-top:1px solid var(--line)}.billing-plan label,.billing-admin-tools label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:15px;font-weight:700}.billing-plan input,.billing-plan select,.billing-admin-tools input,.billing-admin-tools select,.billing-admin-tools textarea{width:100%;padding:11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font:inherit}.billing-admin-tools{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:28px;align-items:start}.billing-table{padding-top:8px;padding-bottom:8px}.billing-table article{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(150px,.6fr) auto;align-items:center;gap:18px;padding:15px 0;border-top:1px solid var(--line)}.billing-table article:first-child{border-top:0}.billing-table article>span{display:flex;flex-direction:column}.billing-table small{color:var(--muted);font-size:14px}.payment-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.payment-actions button{padding:9px 12px;border:1px solid #6a9b27;border-radius:8px;background:#e8f7c7;color:#4d6816;font-weight:800;cursor:pointer}.payment-actions button.danger{border-color:#e8a399;background:#fff1ed;color:#96382d}.billing-offer-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.billing-offer-list article{display:flex;align-items:center;justify-content:space-between;gap:15px}.billing-offer-list article>span:first-child{display:flex;flex-direction:column}.billing-offer-list small{color:var(--muted)}
@media(max-width:1050px){.billing-plan-grid{grid-template-columns:1fr 1fr}}
@media(max-width:800px){.billing-admin-tools,.billing-plan-grid,.billing-offer-list{grid-template-columns:1fr}.billing-table article{grid-template-columns:1fr auto}.billing-table article>span:first-child{grid-column:1/-1}.payment-actions{justify-content:flex-start}}

/* Pilotage administrateur. */
.pilotage-heading{align-items:center}.report-download{white-space:nowrap}.pilotage-metrics{margin-top:30px}.pilotage-metrics .metric{min-height:150px}.pilotage-metrics .metric strong{font-size:clamp(28px,3vw,42px);letter-spacing:-.04em}.pilotage-metrics .metric small{display:block;margin-top:8px;color:#5d7d22;font-size:14px;font-weight:800}.pilotage-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.75fr);gap:16px;margin-top:16px}.pilotage-grid.lower{grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr)}.growth-panel,.profile-panel,.activity-panel,.alerts-panel{min-height:330px}.growth-chart{height:225px;display:flex;align-items:flex-end;gap:13px;margin-top:25px;padding:18px 8px 0;border-bottom:1px solid var(--line);background:repeating-linear-gradient(to bottom,transparent 0,transparent 54px,rgba(16,32,58,.06) 55px)}.growth-column{height:100%;flex:1;display:flex;align-items:center;justify-content:flex-end;flex-direction:column;gap:7px}.growth-column b{font-size:13px}.growth-column i{display:block;width:min(48px,78%);min-height:7px;border-radius:8px 8px 2px 2px;background:linear-gradient(180deg,var(--coral),#ff9b7f)}.growth-column span{min-height:24px;color:var(--muted);font-size:12px;font-weight:800}.profile-total{display:flex;align-items:baseline;gap:9px;margin:20px 0}.profile-total strong{font-size:45px;line-height:1}.profile-total span{color:var(--muted)}.profile-list{display:grid}.profile-list>div{display:grid;grid-template-columns:1fr auto 44px;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line)}.profile-list>div>span{display:flex;align-items:center;gap:9px}.profile-list i{width:10px;height:10px;border-radius:50%;background:var(--violet)}.profile-list>div:nth-child(2) i{background:var(--coral)}.profile-list>div:nth-child(3) i{background:var(--lime)}.profile-list>div:nth-child(4) i{background:var(--navy)}.profile-list small{color:var(--muted);text-align:right}.activity-list{display:grid}.activity-list article{display:grid;grid-template-columns:42px 1fr;align-items:center;gap:13px;padding:12px 0;border-top:1px solid var(--line)}.activity-list article:first-child{border-top:0}.activity-list article>div{display:flex;flex-direction:column}.activity-list small{color:var(--muted);font-size:13px}.activity-icon{width:39px;height:39px;display:grid;place-items:center;border-radius:12px;background:var(--violet-soft);color:var(--violet);font-weight:900}.activity-icon.payment{background:#e8f7c7;color:#4d6816}.activity-icon.account{background:var(--coral-soft);color:#96382d}.alerts-panel{display:flex;flex-direction:column}.alerts-panel h2{margin-bottom:8px}.alerts-panel a{display:grid;grid-template-columns:62px 1fr;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--line);color:var(--navy);text-decoration:none}.alerts-panel a strong{font-size:28px;color:var(--coral)}.alerts-panel a span{font-weight:700}.invoice-download{display:inline-flex;align-items:center;justify-content:center;padding:8px 10px;border:1px solid var(--violet);border-radius:8px;color:var(--violet);font-size:13px;font-weight:800;text-decoration:none}.gateway-banner{margin-top:18px;padding:14px 16px;border-radius:12px;background:#e8f7c7;color:#4d6816}.gateway-choice{display:flex;gap:8px}.gateway-choice .primary-button,.gateway-choice .quiet-button{flex:1}.manual-payment-fields[hidden]{display:none}
@media(max-width:980px){.pilotage-grid,.pilotage-grid.lower{grid-template-columns:1fr}.pilotage-heading{align-items:flex-start}.growth-panel,.profile-panel,.activity-panel,.alerts-panel{min-height:auto}}
@media(max-width:620px){.pilotage-heading .report-download{width:100%}.growth-chart{gap:6px}.growth-column i{width:72%}.pilotage-metrics .metric{min-height:120px}.profile-list>div{grid-template-columns:1fr auto 40px}}

/* Identité visuelle et coordonnées officielles. */
.public-contact{display:flex;flex-wrap:wrap;gap:9px 18px;margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.public-contact a{color:var(--violet);font-size:14px;font-weight:800;text-decoration:none}.public-contact a:hover{text-decoration:underline}.contact-panel p{display:flex;flex-direction:column;gap:8px}.contact-panel a{color:var(--violet);font-weight:800;text-decoration:none}.contact-panel a:hover{text-decoration:underline}.feature-form input:focus,.feature-form select:focus,.feature-form textarea:focus,.correction-item input:focus,.correction-item textarea:focus,.new-conversation input:focus,.new-conversation select:focus,.new-conversation textarea:focus,.message-composer textarea:focus,.session-report-editor input:focus,.session-report-editor select:focus,.session-report-editor textarea:focus{box-shadow:0 0 0 3px rgba(13,107,67,.12)}.session-report-summary{background:var(--violet-soft)}.session-report-summary dl div{border-top-color:rgba(13,107,67,.18)}.answer-options input:checked+span{box-shadow:0 0 0 2px rgba(13,107,67,.1)}.growth-chart{background:repeating-linear-gradient(to bottom,transparent 0,transparent 54px,rgba(6,61,40,.07) 55px)}.growth-column i{background:linear-gradient(180deg,var(--lime),#e79b20)}.pilotage-metrics .metric small{color:var(--violet)}.gateway-banner{background:var(--violet-soft);color:#075b37}

/* Application mobile installable (PWA). */
html{min-height:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100%;overflow-x:hidden}button,a,input,select,textarea{touch-action:manipulation}.sidebar{padding-top:max(28px,env(safe-area-inset-top));padding-bottom:max(28px,env(safe-area-inset-bottom))}.sidebar nav{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}.sidebar .brand,.sidebar .space-label,.sidebar-footer{flex-shrink:0}.install-app-button{min-height:44px;padding:9px 12px;border:1px solid currentColor;border-radius:9px;background:transparent;color:inherit;font-weight:800;cursor:pointer}.public-contact .install-app-button{flex-basis:100%;color:var(--navy);border-color:var(--lime);background:var(--coral-soft)}.sidebar-footer .install-app-button{margin-top:8px;color:var(--navy);border-color:var(--lime);background:var(--lime)}.install-app-button[hidden]{display:none!important}.nav-backdrop,.mobile-bottom-nav{display:none}.network-status{position:fixed;z-index:100;right:16px;bottom:max(16px,env(safe-area-inset-bottom));left:16px;padding:12px 16px;border-radius:12px;background:#815300;color:#fff;font-size:14px;font-weight:800;text-align:center;box-shadow:0 12px 30px rgba(6,61,40,.22)}.pwa-help{position:fixed;z-index:120;inset:0;display:grid;place-items:end center;padding:20px max(20px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));background:rgba(6,61,40,.58)}.pwa-help>div{width:min(520px,100%);padding:24px;border-radius:22px;background:var(--paper);box-shadow:0 20px 60px rgba(0,0,0,.25)}.pwa-help b{font-size:22px}.pwa-help p{margin:8px 0 18px;color:var(--muted)}.pwa-help button{width:100%;min-height:48px;border:0;border-radius:10px;background:var(--lime);color:var(--navy);font-weight:800}

@media(max-width:720px){
  body{padding-bottom:calc(72px + env(safe-area-inset-bottom))}.app-shell{min-height:calc(100vh - 72px)}
  .sidebar{width:min(88vw,330px);z-index:40;padding-left:max(18px,env(safe-area-inset-left));box-shadow:18px 0 45px rgba(3,31,20,.28)}.sidebar .brand picture{width:min(210px,68vw)}.sidebar nav button{min-height:48px;font-size:16px}.sidebar-footer{font-size:13px}
  .nav-backdrop{position:fixed;z-index:35;inset:0;display:block;border:0;background:rgba(3,31,20,.55);opacity:0;pointer-events:none;transition:opacity .25s}.nav-backdrop.open{opacity:1;pointer-events:auto}.menu-open{overflow:hidden}
  .topbar{height:calc(68px + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(14px,env(safe-area-inset-right)) 0 max(14px,env(safe-area-inset-left));gap:10px}.mobile-menu{flex:0 0 44px;width:44px;height:44px;border-radius:11px!important;background:var(--paper)!important;font-size:25px!important}.topbar-title{display:flex;min-width:0;margin-right:auto}.topbar-title span{font-size:10px}.topbar-title b{overflow:hidden;font-size:16px;text-overflow:ellipsis;white-space:nowrap}.identity{gap:7px}.identity .avatar{display:none}.identity .logout{width:44px;height:44px;padding:0;font-size:0;background:var(--paper)}.identity .logout:before{content:'↪';font-size:21px;font-weight:800}
  .content{width:calc(100% - 28px);padding:24px 0 34px}.page-heading{gap:14px}.page-heading h1{font-size:clamp(34px,10vw,44px)}.page-heading p{font-size:16px}.panel{padding:20px;border-radius:16px}.hero{margin-top:20px;padding:25px 22px}.hero h2{max-width:85%;font-size:29px}.hero:after{width:180px;height:180px;right:-90px;top:-80px;border-width:38px}.metric{padding:20px}.metric strong{font-size:30px}
  .mobile-bottom-nav{position:fixed;z-index:30;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));min-height:calc(64px + env(safe-area-inset-bottom));padding:5px max(5px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(5px,env(safe-area-inset-left));border-top:1px solid var(--line);background:rgba(255,254,249,.97);box-shadow:0 -8px 24px rgba(6,61,40,.08);backdrop-filter:blur(14px)}.mobile-bottom-nav button{display:flex;min-width:0;min-height:54px;align-items:center;justify-content:center;flex-direction:column;gap:1px;padding:3px;border:0;border-radius:10px;background:transparent;color:var(--muted)}.mobile-bottom-nav button span{font-size:21px;line-height:1}.mobile-bottom-nav button small{max-width:100%;overflow:hidden;font-size:11px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.mobile-bottom-nav button.active{background:var(--coral-soft);color:var(--navy)}
  .network-status{bottom:calc(78px + env(safe-area-inset-bottom))}.public-contact{flex-direction:column;align-items:stretch}.public-contact a,.public-contact button{font-size:15px}.auth-shell,.setup-shell{padding:max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}.auth-card,.setup-card{padding:24px}.auth-card .brand,.setup-card .brand{margin-bottom:26px}.auth-card h1,.setup-card h1{font-size:clamp(38px,12vw,52px)}
}

@media(max-width:390px){.topbar-title span{display:none}.topbar-title b{font-size:15px}.mobile-bottom-nav button small{font-size:10px}.content{width:calc(100% - 22px)}.panel{padding:17px}.metric-grid{gap:10px}}

/* Studio et bibliothèque de cours vidéo. */
.video-studio{margin-top:28px;padding:30px}.video-studio-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:24px}.video-studio-head h2{margin:7px 0 5px;font-size:30px}.video-studio-head p{max-width:680px;margin:0;color:var(--muted)}.secure-video-badge{flex-shrink:0;padding:8px 12px;border-radius:999px;background:var(--violet-soft);color:var(--violet);font-size:13px;font-weight:800}.video-studio-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:24px;align-items:start}.video-stage{position:relative;aspect-ratio:16/9;overflow:hidden;border-radius:18px;background:linear-gradient(145deg,var(--navy),#0a4b31);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}.video-stage video{width:100%;height:100%;display:block;object-fit:contain;background:#032b1c}.video-placeholder{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:8px;padding:25px;color:#fff;text-align:center}.video-placeholder[hidden]{display:none}.video-placeholder>span{width:62px;height:62px;display:grid;place-items:center;border:2px solid var(--lime);border-radius:50%;color:var(--lime);font-size:25px}.video-placeholder b{font-size:21px}.video-placeholder small{max-width:370px;color:rgba(255,255,255,.72)}.recording-indicator{position:absolute;top:15px;left:15px;display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:999px;background:rgba(3,31,20,.82);color:#fff;font-weight:800}.recording-indicator[hidden]{display:none}.recording-indicator i{width:10px;height:10px;border-radius:50%;background:#ff5b4d;box-shadow:0 0 0 5px rgba(255,91,77,.2);animation:record-pulse 1.4s infinite}@keyframes record-pulse{50%{opacity:.45}}.video-publish-form{margin:0}.video-source-actions,.video-record-actions{display:flex;flex-wrap:wrap;gap:8px}.video-source-actions>*{flex:1}.video-record-actions .primary-button{flex:1}.video-upload-progress{display:grid;gap:7px}.video-upload-progress[hidden]{display:none}.video-upload-progress>div{height:9px;overflow:hidden;border-radius:999px;background:var(--violet-soft)}.video-upload-progress i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--lime),#e79b20);transition:width .2s}.video-upload-progress span{color:var(--muted);font-size:14px;font-weight:800}.video-studio-note{margin:0;color:var(--muted);font-size:14px}.video-studio-note.error{color:#96382d;font-weight:800}.video-submit{width:100%}.course-video-section{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.course-video-section>b{display:block;margin-bottom:12px}.course-video-list{display:grid;gap:12px}.course-video-card{display:grid;grid-template-columns:minmax(180px,.85fr) minmax(0,1.15fr);gap:14px;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#faf8f2}.course-video-card>video{width:100%;height:100%;min-height:140px;object-fit:contain;background:#032b1c}.course-video-copy{min-width:0;padding:15px 15px 15px 0}.course-video-copy h3{margin:5px 0;font-size:20px}.course-video-copy p{margin:0 0 8px;color:var(--muted);white-space:pre-line}.course-video-copy small{color:var(--muted);font-size:13px}.video-manager{grid-column:1/-1;padding:0 14px 14px}.video-manager summary{color:var(--violet);font-size:14px;font-weight:800;cursor:pointer}.video-manager form{display:grid;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.video-manager label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:14px;font-weight:700}.video-manager input,.video-manager textarea,.video-manager select{width:100%;padding:10px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font:inherit}.video-manager form>div{display:flex;flex-wrap:wrap;gap:8px}.video-manager .danger-button{padding:8px 10px}.video-publish-form input[type=file]{padding:9px;background:#fff}

@media(max-width:900px){.video-studio-grid{grid-template-columns:1fr}.video-studio-head{flex-direction:column}.secure-video-badge{align-self:flex-start}}
@media(max-width:620px){.video-studio{padding:17px}.video-studio-head h2{font-size:26px}.video-stage{border-radius:13px}.video-placeholder small{font-size:13px}.video-source-actions,.video-record-actions{align-items:stretch;flex-direction:column}.video-source-actions>*,.video-record-actions>*{width:100%}.course-video-card{grid-template-columns:1fr}.course-video-card>video{aspect-ratio:16/9;height:auto}.course-video-copy{padding:4px 14px 14px}}
@media(prefers-reduced-motion:reduce){.recording-indicator i{animation:none}}

/* Évite que les contrôles de fenêtre Windows recouvrent l’en-tête d’une PWA déjà installée. */
@media(display-mode:window-controls-overlay){body{padding-top:env(titlebar-area-height,32px)}.sidebar{top:env(titlebar-area-height,32px)}.topbar{top:env(titlebar-area-height,32px)}}

/* Planification et affectations du superviseur. */
.availability-editor,.student-availability-editor{margin-top:28px}.availability-heading,.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.availability-heading h2,.student-availability-editor h2,.section-heading h2{margin:6px 0}.availability-heading p,.student-availability-editor>p{margin:0;color:var(--muted)}.availability-count,.section-heading>span{flex-shrink:0;padding:7px 11px;border-radius:999px;background:var(--violet-soft);color:var(--violet);font-size:13px;font-weight:800}.availability-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:end;gap:12px;margin-top:22px;padding:17px;border-radius:13px;background:#faf8f2}.availability-form label,.match-fields label{display:flex;min-width:0;flex-direction:column;gap:6px;color:var(--muted);font-size:14px;font-weight:700}.availability-form input,.availability-form select,.match-fields input,.match-fields select{width:100%;padding:11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font:inherit}.availability-list,.assignment-list{display:grid;margin-top:17px}.availability-list article,.assignment-list article{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-top:1px solid var(--line)}.availability-list article>span,.assignment-list article>span{display:flex;min-width:0;flex-direction:column}.availability-list small,.assignment-list small{color:var(--muted)}.quiet-button.danger{color:#96382d}.supervision-metrics{margin-top:28px}.supervision-section{margin-top:32px}.supervision-match-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px}.supervision-match{display:flex;flex-direction:column}.match-people{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px}.match-people span{display:flex;min-width:0;flex-direction:column}.match-people small{color:var(--coral);font-size:12px;font-weight:800}.match-people i{color:var(--violet);font-size:22px;font-style:normal}.supervision-match>p{color:var(--muted)}.match-fields{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(160px,1fr) minmax(100px,.6fr);gap:10px;margin:5px 0 15px}.supervision-match>.primary-button{margin-top:auto}.supervision-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px}.supervision-columns .panel>h2{margin-bottom:8px}
@media(max-width:980px){.availability-form{grid-template-columns:1fr 1fr}.availability-form button{min-height:48px}.supervision-match-grid,.supervision-columns{grid-template-columns:1fr}}
@media(max-width:620px){.availability-heading,.section-heading{flex-direction:column}.availability-form,.match-fields{grid-template-columns:1fr}.availability-count,.section-heading>span{align-self:flex-start}.match-people{grid-template-columns:1fr}.match-people i{display:none}.availability-list article,.assignment-list article{align-items:flex-start;flex-direction:column}.availability-list button,.assignment-list button{width:100%}}

/* Avatars personnels. */
.profile-avatar{overflow:hidden;flex-shrink:0;border:2px solid rgba(255,255,255,.38);background:linear-gradient(145deg,var(--navy),var(--violet));font-family:"Segoe UI Emoji","Apple Color Emoji",sans-serif}.profile-avatar>span{display:block;line-height:1;transform:translateY(1px)}.avatar-initials{background:var(--navy)}.avatar-scholar{background:linear-gradient(145deg,#ffb438,#f27649)}.avatar-mentor{background:linear-gradient(145deg,#7cc59c,#0d6b43)}.avatar-scientist{background:linear-gradient(145deg,#71b7e6,#235c9d)}.avatar-creator{background:linear-gradient(145deg,#ef92bc,#9f4ca2)}.avatar-coder{background:linear-gradient(145deg,#4e6578,#15283a)}.avatar-explorer{background:linear-gradient(145deg,#835ccc,#3c2a76)}.avatar-reader{background:linear-gradient(145deg,#efb074,#a7602c)}.avatar-champion{background:linear-gradient(145deg,#ffe278,#db8f16)}.profile-avatar:not(.avatar-initials){font-size:25px}.identity-avatar-button{display:grid;width:46px;height:46px;place-items:center;padding:0;border:0;border-radius:13px;background:transparent;cursor:pointer}.identity-avatar-button:hover,.identity-avatar-button:focus-visible{outline:3px solid rgba(13,107,67,.18)}.identity-avatar-button .avatar{width:42px;height:42px;display:grid}.profile-card{margin-top:28px;padding:32px}.profile-summary{display:flex;align-items:center;gap:20px;padding-bottom:25px;border-bottom:1px solid var(--line)}.profile-current-avatar{width:92px;height:92px;border-width:4px;border-color:#fff;box-shadow:0 10px 28px rgba(6,61,40,.18);font-size:27px}.profile-current-avatar:not(.avatar-initials){font-size:52px}.profile-summary h2{margin:4px 0;font-size:30px}.profile-summary p{margin:0;color:var(--muted)}#avatar-form{margin-top:27px}#avatar-form fieldset{margin:0;padding:0;border:0}#avatar-form legend{margin-bottom:15px;font-size:18px;font-weight:800}.avatar-gallery{display:grid;grid-template-columns:repeat(5,minmax(110px,1fr));gap:14px}.avatar-choice{position:relative;display:flex;align-items:center;flex-direction:column;gap:9px;padding:15px 10px;border:2px solid transparent;border-radius:17px;background:#faf8f2;color:var(--muted);font-size:14px;font-weight:800;text-align:center;cursor:pointer;transition:.18s}.avatar-choice:hover{transform:translateY(-2px);border-color:#c2dacc}.avatar-choice.selected{border-color:var(--violet);background:var(--violet-soft);color:var(--navy);box-shadow:0 10px 24px rgba(13,107,67,.12)}.avatar-choice input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.avatar-gallery-image{width:76px;height:76px;border:4px solid #fff;border-radius:21px;box-shadow:0 8px 20px rgba(6,61,40,.14);font-size:21px}.avatar-gallery-image:not(.avatar-initials){font-size:43px}.avatar-choice i{position:absolute;top:8px;right:8px;width:24px;height:24px;display:none;place-items:center;border-radius:50%;background:var(--violet);color:#fff;font-style:normal}.avatar-choice.selected i{display:grid}.profile-actions{display:flex;align-items:center;justify-content:space-between;gap:25px;margin-top:25px;padding-top:20px;border-top:1px solid var(--line)}.profile-actions p{max-width:650px;margin:0;color:var(--muted)}.profile-actions .primary-button{white-space:nowrap}.message-bubble-head{display:flex;align-items:center;gap:9px}.message-bubble-head .avatar{width:34px;height:34px;font-size:11px}.message-bubble-head .profile-avatar:not(.avatar-initials){font-size:21px}.group-member-option .avatar{width:38px;height:38px;font-size:12px}.group-member-option .profile-avatar:not(.avatar-initials){font-size:23px}
@media(max-width:980px){.avatar-gallery{grid-template-columns:repeat(3,minmax(110px,1fr))}}
@media(max-width:620px){.identity-avatar-button .avatar{display:grid}.profile-card{padding:20px}.profile-summary{align-items:flex-start}.profile-current-avatar{width:74px;height:74px}.profile-current-avatar:not(.avatar-initials){font-size:42px}.profile-summary h2{font-size:24px}.avatar-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.avatar-gallery-image{width:66px;height:66px}.avatar-gallery-image:not(.avatar-initials){font-size:37px}.profile-actions{align-items:stretch;flex-direction:column}.profile-actions .primary-button{width:100%}}
.group-member-option{grid-template-columns:20px 38px minmax(0,1fr)}.group-member-option>.profile-avatar{display:grid;place-items:center}.group-member-option>.profile-avatar>span{display:block}.message-bubble-head{justify-content:flex-start!important}.message-bubble-head>span{display:flex;flex-direction:column}.conversation-preview .profile-avatar:not(.avatar-initials){font-size:24px}

/* Photos personnelles de profil. */
.avatar-photo{background:var(--navy)}.avatar-photo img{display:block;width:100%;height:100%;object-fit:cover}.profile-photo-tools{display:grid;grid-template-columns:minmax(260px,.75fr) minmax(430px,1.25fr);align-items:center;gap:30px;margin-top:27px;padding:24px;border-radius:17px;background:#faf8f2}.profile-photo-tools h2{margin:5px 0 8px}.profile-photo-tools p{margin:0;color:var(--muted)}.profile-photo-tools form{display:grid;grid-template-columns:84px minmax(170px,1fr) auto;align-items:center;gap:11px}.profile-photo-preview{grid-row:1/3}.profile-upload-preview{width:78px;height:78px;display:grid;border:4px solid #fff;border-radius:21px;box-shadow:0 8px 20px rgba(6,61,40,.14);font-size:22px}.profile-upload-preview:not(.avatar-initials):not(.avatar-photo){font-size:43px}.profile-photo-picker{display:flex;min-width:0;flex-direction:column;gap:5px;color:var(--navy);font-size:14px;font-weight:800}.profile-photo-picker input{max-width:100%;color:var(--muted);font:inherit}.profile-photo-picker input::file-selector-button{margin-right:9px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--navy);font-weight:800;cursor:pointer}.profile-photo-delete{grid-column:3}
@media(max-width:980px){.profile-photo-tools{grid-template-columns:1fr}.profile-photo-tools form{grid-template-columns:84px minmax(0,1fr) auto}}
@media(max-width:700px){.profile-photo-tools{padding:18px}.profile-photo-tools form{grid-template-columns:72px minmax(0,1fr)}.profile-photo-preview{grid-row:1/2}.profile-upload-preview{width:68px;height:68px}.profile-photo-tools form>.primary-button,.profile-photo-delete{grid-column:1/-1;width:100%}}

/* Messagerie moderne et éditeur enrichi. */
.message-stream{gap:16px;background:linear-gradient(180deg,#f8f7f2 0%,#f4f7f4 100%)}.message-bubble{position:relative;padding:14px 16px;box-shadow:0 6px 18px rgba(6,61,40,.06);transition:box-shadow .18s,transform .18s}.message-bubble:hover{box-shadow:0 10px 25px rgba(6,61,40,.11)}.message-bubble.own{background:#e1f1e8}.message-bubble-head>span{margin-right:auto}.message-bubble-actions{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:3px!important;opacity:0;transition:opacity .18s}.message-bubble:hover .message-bubble-actions,.message-bubble:focus-within .message-bubble-actions{opacity:1}.message-bubble-actions button{width:30px;height:30px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:16px;cursor:pointer}.message-bubble-actions button:hover,.message-bubble-actions button:focus-visible{background:rgba(13,107,67,.1);color:var(--violet)}.message-bubble>.message-rich-body{display:block;margin-top:10px}.message-rich-body p{margin:0;line-height:1.55}.message-rich-body p+p{margin-top:9px}.message-rich-body ul,.message-rich-body ol{margin:7px 0;padding-left:24px}.message-rich-body li{margin:3px 0;line-height:1.48}.message-rich-body blockquote{margin:8px 0;padding:8px 12px;border-left:4px solid var(--lime);border-radius:0 8px 8px 0;background:rgba(171,227,50,.12);color:#385346}.message-rich-body code{padding:2px 5px;border-radius:5px;background:rgba(6,61,40,.09);font-family:Consolas,monospace;font-size:.92em}.message-rich-body a{color:var(--violet);font-weight:700;text-decoration:underline;overflow-wrap:anywhere}.field-label{display:block;color:var(--muted);font-size:14px;font-weight:800}.message-composer>.rich-message-editor{display:block}.rich-message-editor{position:relative;min-width:0;border:1px solid var(--line);border-radius:14px;background:#fff;transition:border-color .18s,box-shadow .18s}.rich-message-editor:focus-within{border-color:var(--violet);box-shadow:0 0 0 3px rgba(13,107,67,.1)}.rich-editor-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:3px;padding:7px 9px;border-bottom:1px solid var(--line);background:#fbfcfa;border-radius:14px 14px 0 0}.rich-editor-toolbar>button,.emoji-control>button{min-width:32px;height:32px;padding:0 8px;border:0;border-radius:7px;background:transparent;color:var(--navy);font:inherit;font-size:13px;font-weight:750;cursor:pointer}.rich-editor-toolbar>button:hover,.rich-editor-toolbar>button:focus-visible,.rich-editor-toolbar>button.active,.emoji-control>button:hover,.emoji-control>button:focus-visible{background:var(--violet-soft);color:var(--violet)}.rich-editor-toolbar>span{width:1px;height:22px;margin:0 3px;background:var(--line)}.rich-message-editor textarea{display:block;width:100%;min-height:96px;resize:vertical;padding:13px 14px!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:#fff!important;color:var(--navy);font:inherit;line-height:1.5;outline:0}.rich-editor-footer{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;padding:7px 12px;border-top:1px solid #edf0eb;color:var(--muted)}.rich-editor-footer small{font-size:11px}.rich-editor-footer kbd{padding:1px 4px;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;background:#fff;font-family:inherit}.rich-editor-footer span{flex-shrink:0;font-size:11px}.rich-editor-footer .near-limit{color:#b14738;font-weight:800}.emoji-control{position:relative;display:inline-flex}.emoji-picker{position:absolute;top:38px;right:-75px;z-index:20;width:252px;max-height:220px;grid-template-columns:repeat(6,1fr);gap:4px;padding:10px;border:1px solid var(--line);border-radius:13px;background:#fff;box-shadow:0 18px 45px rgba(6,61,40,.18);overflow-y:auto}.emoji-picker:not([hidden]){display:grid}.emoji-picker button{width:34px;height:34px;padding:0;border:0;border-radius:8px;background:transparent;font-size:21px;cursor:pointer}.emoji-picker button:hover,.emoji-picker button:focus-visible{background:var(--violet-soft);transform:scale(1.08)}.message-composer .emoji-picker{top:auto;bottom:38px}.rich-message-preview{padding:12px 14px;border-top:1px solid var(--line);background:#faf8f2;border-radius:0 0 14px 14px}.rich-message-preview>span{display:block;margin-bottom:7px;color:var(--violet);font-size:10px;font-weight:900;letter-spacing:.12em}.rich-message-preview .message-rich-body{font-size:14px}.rich-message-preview p{margin:0}.rich-message-preview ul,.rich-message-preview ol{margin:6px 0;padding-left:22px}.rich-message-preview blockquote{margin:6px 0;padding-left:10px;border-left:3px solid var(--lime)}.message-send-row{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:15px!important}.message-send-row .primary-button{min-width:115px}.new-conversation .rich-editor-toolbar{padding:5px}.new-conversation .rich-editor-toolbar>button,.new-conversation .emoji-control>button{min-width:29px;height:29px;padding:0 6px;font-size:12px}.new-conversation .rich-message-editor textarea{min-height:88px}.new-conversation .rich-editor-footer small{display:none}
@media(max-width:620px){.message-bubble{width:94%;padding:12px}.message-bubble-actions{opacity:1}.rich-editor-toolbar{gap:2px;padding:6px}.rich-editor-toolbar>button,.emoji-control>button{min-width:30px;padding:0 6px}.rich-editor-toolbar>span{display:none}.rich-editor-footer{align-items:flex-start!important;flex-direction:column}.rich-editor-footer small{line-height:1.45}.message-send-row{align-items:stretch!important;flex-direction:column}.message-send-row .primary-button{width:100%}.emoji-picker{right:-45px;width:232px;grid-template-columns:repeat(6,1fr)}}

/* Réactions rapides aux messages. */
.message-bubble>.message-reactions{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:5px;margin-top:9px}.message-bubble.own>.message-reactions{justify-content:flex-end}.reaction-pill{display:inline-flex;align-items:center;gap:4px;height:28px;padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--navy);cursor:pointer}.reaction-pill:hover,.reaction-pill.mine{border-color:#77b995;background:#e9f6ee}.reaction-pill span{font-size:16px}.reaction-pill b{font-size:11px}.quick-reaction-menu{position:relative}.quick-reaction-menu summary{width:29px;height:28px;display:grid;place-items:center;border:1px solid transparent;border-radius:999px;color:var(--muted);font-size:17px;cursor:pointer;list-style:none}.quick-reaction-menu summary::-webkit-details-marker{display:none}.quick-reaction-menu summary:hover,.quick-reaction-menu[open] summary{border-color:var(--line);background:#fff;color:var(--violet)}.quick-reaction-menu summary small{position:absolute;margin:13px 0 0 17px;font-size:10px;font-weight:900}.quick-reaction-menu>div{position:absolute;bottom:35px;left:0;z-index:18;display:flex;gap:3px;padding:7px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 12px 30px rgba(6,61,40,.16)}.message-bubble.own .quick-reaction-menu>div{right:0;left:auto}.quick-reaction-menu button{width:34px;height:34px;padding:0;border:0;border-radius:8px;background:transparent;font-size:20px;cursor:pointer}.quick-reaction-menu button:hover{background:var(--violet-soft);transform:scale(1.08)}

/* Messagerie compacte v18 : participants, pièces jointes et gestion des messages. */
.message-thread{position:relative}.participant-toggle{display:inline-flex;align-items:center;gap:5px;padding:8px 11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font:inherit;font-size:13px;font-weight:800;cursor:pointer}.participant-toggle:hover,.participant-toggle[aria-expanded="true"]{border-color:#77b995;background:var(--violet-soft);color:var(--violet)}.participant-backdrop{position:absolute;inset:0;z-index:29;background:rgba(4,31,21,.22);backdrop-filter:blur(1px)}.participant-backdrop[hidden],.conversation-participants[hidden],.rich-editor-toolbar[hidden],.selected-files[hidden]{display:none!important}.conversation-participants{position:absolute;z-index:30;top:0;right:0;width:min(390px,92%);height:100%;display:flex;flex-direction:column;border-left:1px solid var(--line);background:#fff;box-shadow:-18px 0 45px rgba(6,61,40,.18)}.conversation-participants>header{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:22px;border-bottom:1px solid var(--line)}.conversation-participants h3{margin:4px 0 0;font-size:21px}.conversation-participants>header>button{width:36px;height:36px;padding:0;border:0;border-radius:9px;background:var(--violet-soft);color:var(--violet);font-size:25px;cursor:pointer}.participant-list{flex:1;min-height:0;padding:8px 17px;overflow-y:auto}.participant-row{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:11px;padding:11px 4px;border-bottom:1px solid #edf0eb}.participant-row .avatar{width:40px;height:40px;display:grid}.participant-row>span{display:flex;min-width:0;flex-direction:column}.participant-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.participant-row small{color:var(--muted)}.conversation-participants>.group-manager{margin:0;padding:14px 18px;border-top:1px solid var(--line);max-height:58%;overflow-y:auto}.conversation-participants .group-member-picker{max-height:260px}
.rich-editor-actions{display:flex!important;align-items:center!important;gap:4px!important;padding:6px 8px;border-top:1px solid #edf0eb;color:var(--muted)}.composer-icon-button{position:relative;min-width:34px;height:34px;display:inline-grid;place-items:center;padding:0 8px;border:0;border-radius:8px;background:transparent;color:var(--navy);font:inherit;font-size:18px;cursor:pointer}.composer-icon-button:hover,.composer-icon-button:focus-visible,.composer-icon-button.active{background:var(--violet-soft);color:var(--violet)}button[data-toggle-formatting]{grid-template-columns:auto auto;gap:0;font-size:14px}button[data-toggle-formatting] i{margin:8px 0 0 -2px;font-size:10px;font-style:normal}.attachment-button input{display:none}.composer-spacer{flex:1}.rich-editor-actions>[data-character-count]{font-size:11px;white-space:nowrap}.rich-editor-actions>.near-limit{color:#b14738;font-weight:800}.composer-send-button{width:36px;height:34px;padding:0;border:0;border-radius:9px;background:var(--lime);color:#052f20;font-size:18px;font-weight:900;cursor:pointer}.composer-send-button:hover{filter:brightness(.96);transform:translateX(1px)}.composer-send-button:disabled{opacity:.5;cursor:wait}.rich-editor-toolbar>small{margin-left:auto;padding:0 5px;color:var(--muted);font-size:11px}.message-composer .rich-message-editor textarea{min-height:48px;max-height:180px;resize:none;border-radius:14px 14px 0 0!important}.message-composer .rich-editor-toolbar+textarea{border-radius:0!important}.selected-files{display:flex!important;align-items:center!important;flex-wrap:wrap!important;justify-content:flex-start!important;gap:6px!important;padding:8px 10px;border-top:1px solid #edf0eb;background:#faf8f2}.selected-files span{max-width:230px;padding:5px 8px;border-radius:8px;background:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.selected-files small{color:var(--muted)}.selected-files button{margin-left:auto;padding:5px 8px;border:0;background:transparent;color:#a13f34;font:inherit;font-size:12px;font-weight:800;cursor:pointer}.message-composer{padding:14px 20px;background:#fff}.message-composer .emoji-picker{bottom:42px;left:0;right:auto}
.message-action-menu{position:relative;align-self:flex-start}.message-action-menu>summary{width:32px;height:30px;display:grid;place-items:center;border-radius:8px;color:var(--muted);font-weight:900;letter-spacing:1px;cursor:pointer;list-style:none}.message-action-menu>summary::-webkit-details-marker{display:none}.message-action-menu>summary:hover,.message-action-menu[open]>summary{background:rgba(13,107,67,.1);color:var(--violet)}.message-action-menu>div{position:absolute;z-index:17;top:32px;right:0;width:145px;display:grid!important;gap:2px!important;padding:6px;border:1px solid var(--line);border-radius:11px;background:#fff;box-shadow:0 12px 28px rgba(6,61,40,.16)}.message-action-menu button{width:100%;padding:8px;border:0;border-radius:7px;background:transparent;color:var(--navy);font:inherit;font-size:13px;font-weight:700;text-align:left;cursor:pointer}.message-action-menu button:hover{background:var(--violet-soft)}.message-action-menu button.danger-text{color:#a13f34}.message-bubble.own .message-action-menu>div{right:0}.message-deleted{display:block!important;margin-top:9px;color:var(--muted);font-style:italic}.message-inline-edit{display:grid;gap:8px;margin-top:10px}.message-inline-edit textarea{width:100%;min-height:80px;padding:10px;border:1px solid #77b995;border-radius:9px;color:var(--navy);font:inherit;line-height:1.45;resize:vertical}.message-inline-edit>div{display:flex;justify-content:flex-end;gap:7px}.message-inline-edit .primary-button{padding:8px 12px}
.message-bubble>.message-attachments{display:grid;justify-content:stretch;gap:7px;margin-top:10px}.message-attachment{display:grid;grid-template-columns:38px minmax(0,1fr);gap:0 10px;padding:9px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--navy);text-decoration:none}.message-attachment:hover{border-color:#77b995;background:#f5fbf7}.message-attachment>span{grid-row:1/3;width:38px;height:38px;display:grid;place-items:center;border-radius:8px;background:var(--violet-soft);color:var(--violet);font-size:11px;font-weight:900}.message-attachment b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-attachment small{color:var(--muted)}
@media(max-width:700px){.message-thread-head{align-items:flex-start;flex-direction:column}.thread-head-actions{width:100%;justify-content:flex-start}.participant-toggle span{display:none}.conversation-participants{position:fixed;top:0;right:0;height:100dvh;width:min(380px,94vw)}.participant-backdrop{position:fixed}.rich-editor-toolbar>small{display:none}.rich-editor-toolbar>span{display:none}.message-composer{padding:10px}.rich-editor-actions>[data-character-count]{display:none}.message-bubble{width:96%}.message-action-menu>div{position:fixed;top:auto;right:12px!important;bottom:12px;width:190px}.message-attachment{grid-template-columns:34px minmax(0,1fr)}.message-attachment>span{width:34px;height:34px}.selected-files span{max-width:180px}}

/* Format des messages v19 : identité au-dessus des messages reçus, message personnel épuré. */
.message-stream .message-bubble{width:min(94%,820px);display:grid;grid-template-columns:42px minmax(0,1fr);align-items:start;gap:10px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.message-stream .message-bubble:hover{box-shadow:none;transform:none}.message-stream .message-bubble.own{width:min(78%,640px);display:block;align-self:flex-end;background:transparent}.message-bubble>.message-avatar{display:block!important;margin-top:24px}.message-avatar .avatar{width:40px;height:40px;display:grid;font-size:12px}.message-avatar .profile-avatar:not(.avatar-initials){font-size:24px}.message-bubble>.message-column{display:block!important;min-width:0}.message-meta{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:9px!important;min-height:24px;padding:0 2px 3px}.message-meta b{color:var(--navy);font-size:13px}.message-meta small{color:var(--muted);font-size:12px}.message-content{position:relative;display:block!important;min-width:0;padding:12px 15px;border:1px solid var(--line);border-radius:4px 13px 13px 13px;background:#fff;box-shadow:0 5px 16px rgba(6,61,40,.05)}.message-bubble.own .message-content{border-color:#c6dfd1;border-radius:13px 4px 13px 13px;background:#e1f1e8}.message-content>.message-rich-body{display:block;margin:0;padding-right:28px}.message-content>.message-rich-body p:first-child{margin-top:0}.message-content>.message-deleted{margin:0;padding-right:28px}.message-content>.message-attachments{display:grid;justify-content:stretch;gap:7px;margin-top:10px}.message-content>.message-action-menu{position:absolute;z-index:4;top:5px;right:5px;opacity:0;transition:opacity .15s}.message-bubble:hover .message-content>.message-action-menu,.message-bubble:focus-within .message-content>.message-action-menu{opacity:1}.message-column>.message-reactions{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:5px;margin:5px 0 0 10px}.message-bubble.own .message-column>.message-reactions{justify-content:flex-end;margin-right:8px}.message-bubble.own .quick-reaction-menu>div{right:0;left:auto}
@media(max-width:700px){.message-stream .message-bubble{width:100%;grid-template-columns:36px minmax(0,1fr);gap:7px}.message-stream .message-bubble.own{width:90%}.message-bubble>.message-avatar{margin-top:22px}.message-avatar .avatar{width:34px;height:34px}.message-content{padding:10px 12px}.message-content>.message-action-menu{opacity:1}.message-meta{gap:6px!important}.message-meta b{max-width:62%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-meta small{font-size:11px}}

/* Compteurs de navigation v20. */
.sidebar nav .nav-label{min-width:0;flex:1;overflow:hidden;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.nav-count{min-width:22px;height:22px;display:inline-grid;place-items:center;flex-shrink:0;padding:0 6px;border:2px solid #fff;border-radius:999px;background:#d92d20;color:#fff;font-size:11px!important;font-weight:900;line-height:1;box-shadow:0 3px 8px rgba(90,13,8,.28)}.nav-count[hidden]{display:none!important}.sidebar nav button.active .nav-count{border-color:var(--lime)}.mobile-bottom-nav button{position:relative}.mobile-bottom-nav .nav-count{position:absolute;top:1px;left:calc(50% + 8px);min-width:19px;height:19px;padding:0 5px;border-width:1px;font-size:10px!important}

/* Contraste visuel et affectations pédagogiques v21. */
html,body{background:#edf3ee}body{background-image:radial-gradient(circle at 8% 5%,rgba(255,180,56,.11),transparent 28rem),radial-gradient(circle at 92% 14%,rgba(13,107,67,.11),transparent 32rem);background-attachment:fixed}.app-main{min-height:100vh}.topbar{border-bottom-color:#bdcbc0;background:rgba(237,243,238,.94);box-shadow:0 4px 18px rgba(6,61,40,.055)}.panel,.metric{border-color:#bdcbc0;box-shadow:0 14px 34px rgba(6,61,40,.085)}.panel{background:rgba(255,254,249,.98)}.metric{background:#fffef9}.course-card,.student-card,.family-card,.progress-card,.homework-item,.correction-item,.session-item,.notification-item{border-color:#bdcbc0}.admin-grid,.course-grid,.student-grid,.progress-grid,.settings-grid,.supervision-columns,.supervision-match-grid,.messaging-layout{gap:20px}.section-heading p{max-width:760px;margin:5px 0 0;color:var(--muted)}.admin-pedagogical-links,.pedagogical-link-editor{margin-top:22px}.pedagogical-link-form{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(190px,1fr) auto;align-items:end;gap:12px;margin-top:22px;padding:18px;border:1px solid #d4ded6;border-radius:14px;background:#f3f7f3}.pedagogical-link-form label{display:flex;min-width:0;flex-direction:column;gap:7px;color:var(--muted);font-size:14px;font-weight:750}.pedagogical-link-form input,.pedagogical-link-form select{width:100%;min-height:46px;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font:inherit}.pedagogical-link-form input:focus,.pedagogical-link-form select:focus{border-color:var(--violet);outline:3px solid rgba(13,107,67,.1)}.admin-pedagogical-links>.assignment-list{margin-top:8px}
@media(max-width:1050px){.pedagogical-link-form{grid-template-columns:1fr 1fr}.pedagogical-link-form .primary-button{min-height:48px}}
@media(max-width:620px){body{background-image:linear-gradient(180deg,rgba(13,107,67,.045),transparent 280px)}.pedagogical-link-form{grid-template-columns:1fr;padding:14px}.panel,.metric{box-shadow:0 10px 24px rgba(6,61,40,.075)}}

/* Dossier pédagogique individuel v22. */
.pedagogical-directory{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:20px;margin-top:28px}.pedagogical-student-card{display:grid;grid-template-columns:72px minmax(0,1fr);align-items:start;gap:17px}.pedagogical-student-card>.avatar{width:68px;height:68px;display:grid;font-size:18px}.pedagogical-student-card h2{margin:5px 0 3px}.pedagogical-student-card p{margin:0 0 10px;color:var(--muted)}.pedagogical-student-card .primary-button{margin-top:16px}.pedagogical-open-button{display:block;margin-top:14px}.pedagogical-record-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:8px 0 4px}.pedagogical-record-heading h1{margin:8px 0 5px;font-size:clamp(34px,5vw,58px);line-height:1}.pedagogical-record-heading p{margin:0;color:var(--muted)}.pedagogical-record-heading [data-pedagogical-back]{margin-bottom:18px}.pedagogical-record-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.pedagogical-record-actions a{text-decoration:none}.pedagogical-metrics{margin-top:25px}.pedagogical-metric small{display:block;margin-top:7px;color:var(--muted)}.pedagogical-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:20px;margin-top:20px}.pedagogical-layout>.panel{min-width:0}.pedagogical-profile,.pedagogical-results,.pedagogical-observations{grid-column:1/-1}.pedagogical-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:20px}.pedagogical-section-head h2{margin:5px 0 0}.pedagogical-section-head>span{padding:6px 10px;border-radius:999px;background:#edf5ef;color:var(--violet);font-size:12px;font-weight:800;text-align:right}.pedagogical-form{display:grid;gap:15px}.pedagogical-form.compact{margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}.pedagogical-form h3{margin:0}.pedagogical-form label{display:grid;gap:7px;color:var(--muted);font-size:14px;font-weight:750}.pedagogical-form input,.pedagogical-form textarea,.pedagogical-form select{width:100%;min-height:46px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font:inherit}.pedagogical-form textarea{resize:vertical;line-height:1.5}.pedagogical-form input:focus,.pedagogical-form textarea:focus,.pedagogical-form select:focus{border-color:var(--violet);outline:3px solid rgba(13,107,67,.1)}.pedagogical-form .primary-button{justify-self:start}.pedagogical-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0}.pedagogical-profile-grid>div{min-height:100px;padding:16px;border:1px solid #d9e2da;border-radius:12px;background:#f7faf7}.pedagogical-profile-grid>.wide{grid-column:1/-1;min-height:80px}.pedagogical-profile-grid dt{margin-bottom:8px;color:var(--violet);font-size:12px;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.pedagogical-profile-grid dd{margin:0;line-height:1.55;white-space:pre-line}.pedagogical-missing{color:var(--muted);font-style:italic}.pedagogical-goal-list,.observation-list,.personal-exercise-list,.pedagogical-session-list,.pedagogical-result-list,.subject-progress-list,.competency-table{display:grid;gap:10px}.pedagogical-goal{display:grid;grid-template-columns:auto minmax(0,1fr);gap:11px;padding:14px;border:1px solid #d8e1da;border-radius:12px;background:#fbfcfa}.pedagogical-goal.achieved{border-color:#9dcaad;background:#f1faf4}.pedagogical-goal.paused{background:#f5f4ef}.goal-state{align-self:start;padding:5px 8px;border-radius:999px;background:#e8f2eb;color:var(--violet);font-size:11px;font-weight:900;white-space:nowrap}.pedagogical-goal>div:nth-child(2){display:grid;gap:4px}.pedagogical-goal small,.pedagogical-goal p{margin:0;color:var(--muted)}.goal-actions{grid-column:2;display:flex;flex-wrap:wrap;gap:7px}.goal-actions button{padding:6px 9px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--violet);font:inherit;font-size:12px;font-weight:800;cursor:pointer}.competency-table>article{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:14px;border:1px solid #d8e1da;border-radius:12px}.competency-table>article>div{display:grid;gap:3px}.competency-table small{color:var(--muted)}.competency-table p{margin:4px 0 0;color:var(--muted)}.competency-level,.exercise-personal-state{padding:6px 9px;border-radius:999px;background:#eef3ef;color:var(--navy);font-size:11px;font-weight:900;white-space:nowrap}.competency-level.acquired,.competency-level.mastered,.exercise-personal-state.completed{background:#dff2e5;color:#075a38}.competency-level.developing{background:#fff0cc;color:#765000}.pedagogical-observation{position:relative;display:grid;gap:10px;padding:15px 135px 15px 17px;border-left:4px solid var(--lime);border-radius:4px 12px 12px 4px;background:#f7faf7}.pedagogical-observation>div{display:grid;gap:3px}.pedagogical-observation small{color:var(--muted)}.pedagogical-observation p{margin:0;line-height:1.55;white-space:pre-line}.pedagogical-observation>button{position:absolute;top:13px;right:13px}.personal-exercise-list>article,.pedagogical-result-list>article{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px;border-bottom:1px solid #e1e7e2}.personal-exercise-list>article>div,.pedagogical-result-list>article>div{display:grid;gap:3px}.personal-exercise-list small,.personal-exercise-list span,.pedagogical-result-list small{color:var(--muted)}.subject-progress-list{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));margin-bottom:24px}.subject-progress-list>article{display:grid;gap:8px;padding:14px;border:1px solid #d8e1da;border-radius:12px}.subject-progress-list>article>div{height:8px;border-radius:999px;background:#dfe8e1;overflow:hidden}.subject-progress-list>article>div>span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--violet),var(--lime))}.subject-progress-list small{color:var(--muted)}.pedagogical-result-list>article{grid-template-columns:auto minmax(0,1fr) auto}.pedagogical-result-list>article>span{padding:5px 8px;border-radius:7px;background:#f0f5f1;color:var(--violet);font-size:11px;font-weight:900}.pedagogical-session-list>article{padding:15px;border:1px solid #d8e1da;border-radius:12px}.pedagogical-session-list>article>div{display:grid;gap:4px}.pedagogical-session-list small{color:var(--muted)}.pedagogical-session-list p{margin:9px 0 0;line-height:1.5}.form-help{margin:18px 0 0;padding:12px;border-radius:9px;background:#f4f7f4;color:var(--muted)}
@media(max-width:980px){.pedagogical-layout{grid-template-columns:1fr}.pedagogical-profile,.pedagogical-results,.pedagogical-observations{grid-column:auto}.pedagogical-record-heading{align-items:flex-start;flex-direction:column}.pedagogical-record-actions{width:100%}.pedagogical-record-actions .primary-button{width:100%;text-align:center}.competency-table>article{grid-template-columns:minmax(0,1fr) auto}.competency-table>article>.quiet-button{grid-column:1/-1;justify-self:start}}

/* Accès sécurisé et e-mails — version 23 */
.auth-form-actions{display:flex;align-items:center;justify-content:space-between;gap:14px}.auth-form-actions .primary-button{min-width:190px}.auth-link-button{padding:8px 2px;border:0;background:transparent;color:var(--violet);font:inherit;font-size:14px;font-weight:800;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.auth-link-button:hover{color:var(--navy)}.auth-card label small{color:var(--muted);font-size:13px;font-weight:500;line-height:1.45}.mail-status{display:flex;align-items:center;gap:14px;margin-top:22px;padding:15px 18px;border:1px solid #e7c56d;border-radius:13px;background:#fff7dc;color:#72520a}.mail-status:before{content:"!";flex:0 0 auto;width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#ffb438;color:#063d28;font-weight:900}.mail-status b,.mail-status span{display:block}.mail-status span{margin-top:2px;font-size:14px}.mail-status code{padding:2px 5px;border-radius:4px;background:rgba(6,61,40,.08)}.mail-status.active{border-color:#a7cfb4;background:#eaf6ee;color:#075b37}.mail-status.active:before{content:"✓";background:#0d6b43;color:#fff}
@media(max-width:620px){.auth-form-actions{align-items:stretch;flex-direction:column}.auth-form-actions .primary-button,.auth-link-button{width:100%}.mail-status{align-items:flex-start}.mail-status span{line-height:1.5}}
@media(max-width:620px){.pedagogical-directory{grid-template-columns:1fr}.pedagogical-student-card{grid-template-columns:54px minmax(0,1fr);padding:17px}.pedagogical-student-card>.avatar{width:52px;height:52px}.pedagogical-record-heading h1{font-size:36px}.pedagogical-profile-grid{grid-template-columns:1fr}.pedagogical-profile-grid>.wide{grid-column:auto}.pedagogical-section-head{align-items:flex-start;flex-direction:column}.pedagogical-section-head>span{text-align:left}.pedagogical-goal{grid-template-columns:1fr}.goal-actions{grid-column:auto}.competency-table>article{grid-template-columns:1fr}.pedagogical-observation{padding:15px}.pedagogical-observation>button{position:static;justify-self:start}.pedagogical-result-list>article{grid-template-columns:1fr}.personal-exercise-list>article{grid-template-columns:1fr}.pedagogical-form .form-grid{grid-template-columns:1fr}}
