:root{--navy:#071b45;--navy2:#0c2f72;--blue:#087de8;--cyan:#00b8f0;--orange:#ff8216;--ink:#152238;--muted:#758198;--bg:#f4f7fb;--card:#fff;--line:#e5ebf2;--green:#16a36a;--red:#d94a4a;--amber:#e89a12;--purple:#7656d8;--shadow:0 14px 36px rgba(20,45,83,.08);--radius:20px}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}.hidden{display:none!important}.muted{color:var(--muted)}.error{color:#b93434;font-size:13px;min-height:19px}.eyebrow{font-size:10.5px;letter-spacing:.16em;font-weight:900;color:#4b6c96;text-transform:uppercase}.eyebrow.light{color:#94cffa}.wide{width:100%}
.login-shell{min-height:100vh;display:grid;grid-template-columns:1.12fr .88fr;background:#fff}.login-visual{position:relative;overflow:hidden;padding:52px 6vw;background:radial-gradient(circle at 80% 10%,#0a54b4 0,#082b68 33%,#061b45 68%,#041332 100%);color:#fff;display:flex;flex-direction:column}.login-visual:after{content:"";position:absolute;inset:auto -15% -30% 20%;height:65%;background:linear-gradient(120deg,transparent,rgba(0,188,240,.13));transform:skewY(-10deg)}.orb{position:absolute;border-radius:999px;filter:blur(1px);opacity:.5}.orb-a{width:260px;height:260px;background:#0aa5ee;right:-80px;top:25%}.orb-b{width:170px;height:170px;background:#ff8216;left:-90px;bottom:10%}.login-brand{display:flex;align-items:center;gap:18px;z-index:1}.login-brand img{width:min(340px,60%);height:auto;filter:drop-shadow(0 8px 14px rgba(0,0,0,.16))}.connect-pill{border:1px solid rgba(255,255,255,.45);border-radius:999px;padding:8px 14px;font-size:12px;font-weight:900;letter-spacing:.17em}.login-copy{position:relative;z-index:1;margin:auto 0 3vh;max-width:650px}.login-copy h1{font-size:clamp(44px,5.3vw,78px);line-height:.98;margin:12px 0 22px;letter-spacing:-.045em}.login-copy p{font-size:18px;line-height:1.6;color:#c9ddf5;max-width:590px}.feature-chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:28px}.feature-chips span{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);padding:8px 12px;border-radius:999px;font-size:12px}.login-form-side{display:grid;place-items:center;padding:32px}.login-card{width:min(440px,100%)}.login-card h2{font-size:36px;margin:8px 0 4px;letter-spacing:-.03em}.login-card>p{margin:0 0 28px}.login-card small{display:block;text-align:center;margin-top:22px;color:#97a1b2;font-size:10px}.mobile-logo{display:none}.field{display:grid;gap:8px;margin:15px 0}.field>span{font-size:12px;font-weight:800;color:#4b596d}.field input,.field select,.field textarea,.search-input{width:100%;border:1px solid #dfe5ed;border-radius:13px;padding:12px 13px;background:#fbfcfe;outline:none;color:var(--ink)}.field textarea{min-height:112px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus,.search-input:focus{border-color:#72aeea;box-shadow:0 0 0 4px rgba(8,125,232,.08);background:#fff}.btn{border:0;border-radius:12px;padding:10px 14px;font-weight:850;cursor:pointer;background:#edf2f7;color:#30425a;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:.18s}.btn:hover{transform:translateY(-1px)}.btn.primary{background:linear-gradient(135deg,#0b58c3,#087de8);color:#fff;box-shadow:0 10px 20px rgba(8,105,220,.18)}.btn.dark{background:var(--navy);color:#fff}.btn.success{background:#e5f7ef;color:#0d7650}.btn.warn{background:#fff1d8;color:#8c5a00}.btn.danger{background:#fde8e8;color:#a83939}.btn.ghost{background:#fff;border:1px solid var(--line)}.btn.whatsapp{background:#e3f8eb;color:#136a42}.btn.small{font-size:11px;padding:7px 10px}
.app-shell{min-height:100vh;display:grid;grid-template-columns:270px 1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:270px;background:linear-gradient(180deg,#071b45,#071837 78%,#06142f);color:#fff;padding:22px 16px;display:flex;flex-direction:column;z-index:20;box-shadow:12px 0 40px rgba(7,27,69,.08)}.brand-lockup{display:grid;place-items:center;padding:0 14px 24px}.brand-lockup img{width:190px;max-height:75px;object-fit:contain}.brand-lockup span{font-size:10px;letter-spacing:.28em;font-weight:900;color:#9edaf7;margin-top:3px}.nav-label{font-size:9px;letter-spacing:.16em;color:#6981a8;font-weight:900;margin:14px 12px 7px}.sidebar nav{display:grid;gap:5px}.nav{position:relative;border:0;background:transparent;color:#aebbd0;text-align:left;padding:11px 12px;border-radius:12px;cursor:pointer;font-weight:760;display:flex;align-items:center;gap:11px}.nav i{font-style:normal;width:26px;height:26px;display:grid;place-items:center;border-radius:8px;background:rgba(255,255,255,.05);font-size:14px}.nav:hover,.nav.active{background:linear-gradient(90deg,rgba(0,159,237,.18),rgba(255,255,255,.04));color:#fff}.nav.active i{background:#087de8}.nav-badge{margin-left:auto;min-width:20px;height:20px;padding:0 6px;display:grid;place-items:center;border-radius:999px;background:var(--orange);color:#fff;font-size:9px;font-style:normal}.sidebar-user{margin-top:auto;border-top:1px solid rgba(255,255,255,.09);padding:18px 7px 0;display:grid;grid-template-columns:40px 1fr 32px;gap:9px;align-items:center}.avatar{width:40px;height:40px;border-radius:13px;background:linear-gradient(145deg,#0a89ee,#0753a9);display:grid;place-items:center;font-weight:950;color:#fff}.sidebar-user-copy b{display:block;font-size:12.5px}.sidebar-user-copy span{display:block;color:#879ab7;font-size:10px;margin-top:3px;line-height:1.2}.icon-btn{width:34px;height:34px;border:0;border-radius:10px;background:rgba(255,255,255,.07);color:#b9c5d8;cursor:pointer}.main{grid-column:2;min-width:0;padding:28px 34px 54px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.topbar h2{margin:3px 0 0;font-size:28px;letter-spacing:-.035em}.top-actions{display:flex;gap:10px;align-items:center}.date-chip{font-size:11px;color:#67758b;background:#fff;border:1px solid var(--line);padding:9px 12px;border-radius:11px}.mobile-menu{display:none;color:#36506f;background:#fff;border:1px solid var(--line)}.view{max-width:1420px}.hero{position:relative;overflow:hidden;background:linear-gradient(125deg,#081d49 0,#0b3f8f 62%,#087de8 100%);border-radius:26px;color:#fff;padding:28px 30px;margin-bottom:20px;box-shadow:0 18px 40px rgba(6,50,110,.18)}.hero:after{content:"";position:absolute;width:280px;height:280px;border:50px solid rgba(255,255,255,.06);border-radius:50%;right:-65px;top:-100px}.hero h3{font-size:28px;margin:5px 0 8px;letter-spacing:-.03em}.hero p{margin:0;color:#c8dcf5;max-width:760px;line-height:1.55}.hero-actions{position:relative;z-index:2;display:flex;gap:10px;flex-wrap:wrap;margin-top:19px}.hero .btn.ghost{background:rgba(255,255,255,.11);border-color:rgba(255,255,255,.18);color:#fff}.grid-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.kpi{background:#fff;border:1px solid var(--line);border-radius:18px;padding:17px 18px;box-shadow:0 8px 25px rgba(21,45,78,.04);display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center}.kpi span{font-size:11px;color:var(--muted);font-weight:850}.kpi b{font-size:28px;display:block;margin-top:3px}.kpi-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#eef6ff;color:#087de8;font-size:18px}.kpi.orange .kpi-icon{background:#fff2e6;color:#e97612}.kpi.green .kpi-icon{background:#eaf8f1;color:#159562}.kpi.purple .kpi-icon{background:#f0edff;color:#6f55c5}.module-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:20px}.module-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:21px;box-shadow:var(--shadow);position:relative;overflow:hidden}.module-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(var(--blue),var(--cyan))}.module-card.students:before{background:linear-gradient(var(--orange),#ffc05c)}.module-card h3{margin:5px 0 7px}.module-card p{font-size:13px;color:var(--muted);line-height:1.55;margin:0 0 15px}.module-icon{font-size:24px}.panel{background:#fff;border:1px solid var(--line);border-radius:20px;padding:19px;box-shadow:var(--shadow);margin-bottom:18px}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.panel-head h3{margin:0;font-size:16px}.panel-head p{margin:3px 0 0;font-size:11px;color:var(--muted)}.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}.split.wide-left{grid-template-columns:1.25fr .75fr}.toolbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:15px}.toolbar .search-input{max-width:330px}.toolbar select{border:1px solid var(--line);padding:9px 11px;border-radius:10px;background:#fff;color:#526175}.toolbar-spacer{flex:1}.tabs{display:flex;gap:6px;padding:5px;background:#eaf0f7;border-radius:13px;width:max-content;margin-bottom:16px}.tab{border:0;background:transparent;border-radius:9px;padding:8px 13px;font-weight:850;color:#65758b;cursor:pointer}.tab.active{background:#fff;color:#1a3f70;box-shadow:0 3px 12px rgba(35,62,96,.08)}.list{display:grid;gap:9px}.list-row{border:1px solid var(--line);border-radius:14px;padding:13px 14px;display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;cursor:pointer;background:#fff;transition:.16s}.list-row:hover{border-color:#c9d7e6;box-shadow:0 7px 18px rgba(30,60,100,.05);transform:translateY(-1px)}.list-row h4{font-size:13.5px;margin:1px 0 4px}.list-row p{margin:0;color:var(--muted);font-size:11.5px}.code{font-size:9.5px;font-weight:900;color:#7b8aa0;letter-spacing:.08em}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:9.5px;font-weight:900;white-space:nowrap;background:#eef2f6;color:#5d6979}.s-nouvelle,.s-brouillon{background:#eaf2ff;color:#3363aa}.s-a_traiter,.s-en_preparation,.s-a_verifier{background:#fff0d5;color:#986300}.s-en_validation{background:#efeaff;color:#674aaf}.s-validee,.s-confirme,.s-envoyee,.s-publiee{background:#e2f5eb;color:#116f4b}.s-modifications_demandees,.s-infos_requises{background:#fff1dc;color:#9a5d00}.s-refusee,.s-annulee{background:#fae5e5;color:#a43c3c}.s-planifiee{background:#e4f0ff;color:#2f65a8}.s-archivee{background:#eef0f2;color:#69727d}.empty{border:1px dashed #ced9e4;border-radius:15px;padding:30px;text-align:center;color:#8994a5;font-size:13px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .field{margin:0}.field.full{grid-column:1/-1}.check-grid{display:flex;gap:9px;flex-wrap:wrap}.check-pill{display:flex;gap:7px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:11.5px;background:#fff}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:17px}.detail-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:17px}.detail-head h3{font-size:23px;margin:5px 0}.meta-row{display:flex;gap:7px;flex-wrap:wrap}.meta{font-size:10.5px;background:#eef2f6;color:#617086;padding:6px 8px;border-radius:8px}.kv{display:grid;grid-template-columns:150px 1fr;gap:10px;border-bottom:1px solid #edf1f5;padding:10px 0;font-size:12.5px}.kv:last-child{border-bottom:0}.kv b{color:#67758a}.actions{display:flex;flex-wrap:wrap;gap:8px}.timeline{display:grid;gap:9px}.timeline-item{border-left:3px solid #d9e3ed;padding:2px 0 2px 11px}.timeline-item b{font-size:11.5px;display:block}.timeline-item span{font-size:10.5px;color:var(--muted)}.comment{background:#f6f8fb;border-radius:12px;padding:10px 11px;margin-top:8px}.comment b{font-size:11px}.comment p{font-size:12px;white-space:pre-wrap;margin:5px 0 0}.upload-box{border:1px dashed #b9c8d8;border-radius:15px;padding:17px;background:#fbfdff}.files{display:grid;gap:7px;margin-top:10px}.file-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 10px;background:#f2f6fa;border-radius:10px;font-size:11px}.file-row a{font-weight:850;color:#2264ad;text-decoration:none}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:15px}.data-table{width:100%;border-collapse:collapse;min-width:700px}.data-table th{font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:#758399;background:#f7f9fc;text-align:left;padding:10px;border-bottom:1px solid var(--line)}.data-table td{padding:10px;border-bottom:1px solid #edf1f5;font-size:11.5px}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fbfdff}.student-name{font-weight:850}.signal-number{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border-radius:999px;background:#fff1e5;color:#c9660c;font-size:10px;font-weight:900}.cycle-chip{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:9px;font-weight:900;background:#eef5ff;color:#316aa9}.class-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.class-card{border:1px solid var(--line);background:#fff;border-radius:16px;padding:15px;cursor:pointer}.class-card:hover{border-color:#bcd0e4;box-shadow:0 8px 20px rgba(30,55,90,.06)}.class-card h4{margin:5px 0;font-size:15px}.class-card p{margin:0;color:var(--muted);font-size:11px}.progress-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.mini-stat{border:1px solid var(--line);border-radius:12px;padding:9px;text-align:center}.mini-stat b{font-size:18px;display:block}.mini-stat span{font-size:9px;color:var(--muted)}.source-preview{border-radius:16px;overflow:hidden;background:#101826;min-height:260px;display:grid;place-items:center}.source-preview img{max-width:100%;max-height:620px;display:block}.source-preview iframe{width:100%;height:600px;border:0}.followup-row{display:grid;grid-template-columns:minmax(180px,1.5fr) repeat(6,70px) minmax(220px,1.4fr);gap:7px;align-items:center;padding:8px 0;border-bottom:1px solid #edf1f5}.followup-row.head{font-size:9px;color:#7b8798;font-weight:900;text-transform:uppercase;position:sticky;top:0;background:#fff;z-index:1}.followup-row .flag{display:grid;place-items:center}.followup-row input[type=checkbox]{width:18px;height:18px;accent-color:#087de8}.followup-row input[type=text]{width:100%;border:1px solid var(--line);border-radius:9px;padding:8px;font-size:11px}.alert-box{padding:12px 14px;border-radius:13px;background:#fff5e4;color:#845600;font-size:12px;line-height:1.5}.info-box{padding:12px 14px;border-radius:13px;background:#eaf5ff;color:#1d5c9a;font-size:12px;line-height:1.5}.message-preview{white-space:pre-wrap;background:#f7faf8;border:1px solid #dbe9df;border-radius:14px;padding:16px;line-height:1.6;font-size:12.5px}.user-row{display:grid;grid-template-columns:45px 1fr auto;gap:11px;align-items:center;border:1px solid var(--line);padding:12px;border-radius:14px;margin-top:8px}.user-row .avatar{background:#e8f2ff;color:#1463b1}.user-row h4{margin:0 0 3px;font-size:13px}.user-row p{margin:0;font-size:10.5px;color:var(--muted)}.dot{width:8px;height:8px;border-radius:999px;display:inline-block;margin-right:5px;background:#a5afbc}.dot.on{background:#1aa16b}.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px}.modal-backdrop{position:absolute;inset:0;background:rgba(5,20,45,.58);backdrop-filter:blur(4px)}.modal-card{position:relative;width:min(720px,95vw);max-height:90vh;overflow:auto;background:#fff;border-radius:22px;padding:24px;box-shadow:0 30px 90px rgba(0,0,0,.25)}.modal-close{position:absolute;right:14px;top:14px;border:0;background:#edf2f7;width:32px;height:32px;border-radius:10px;font-size:20px;cursor:pointer}.modal-card h3{margin:2px 0 16px}.section-title{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:#6e7b8e;font-weight:900;margin:18px 0 8px}#toast{position:fixed;right:22px;bottom:22px;z-index:120;background:#10243f;color:#fff;padding:12px 15px;border-radius:12px;box-shadow:0 15px 35px rgba(0,0,0,.2);opacity:0;transform:translateY(12px);pointer-events:none;transition:.2s;font-size:12px}#toast.show{opacity:1;transform:none}
@media(max-width:1120px){.grid-kpis{grid-template-columns:repeat(2,1fr)}.class-cards{grid-template-columns:repeat(2,1fr)}.split,.split.wide-left{grid-template-columns:1fr}.progress-stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:860px){.app-shell{grid-template-columns:82px 1fr}.sidebar{width:82px;padding:18px 10px}.brand-lockup img{width:62px}.brand-lockup span,.nav-label,.nav span,.sidebar-user-copy{display:none}.nav{justify-content:center}.nav i{width:36px;height:36px}.sidebar-user{grid-template-columns:40px;justify-content:center}.sidebar-user .icon-btn{display:none}.main{grid-column:2;padding:24px 20px}.login-shell{grid-template-columns:1fr}.login-visual{display:none}.mobile-logo{display:flex;align-items:center;gap:12px;margin-bottom:28px}.mobile-logo img{width:170px}.mobile-logo b{font-size:10px;letter-spacing:.18em;color:#2172bf}}
@media(max-width:650px){.app-shell{display:block}.sidebar{position:fixed;inset:auto 0 0 0;width:auto;height:70px;padding:7px 8px;display:flex;z-index:50}.brand-lockup,.nav-label,.sidebar-user,.sidebar nav:last-of-type{display:none}.sidebar #mainNav{display:flex;justify-content:space-around;width:100%}.nav{display:grid;place-items:center;padding:4px 10px;gap:1px}.nav span{display:block;font-size:8px}.nav i{width:30px;height:30px}.nav-badge{position:absolute;right:5px;top:2px}.main{padding:18px 12px 90px}.topbar{align-items:flex-start}.date-chip{display:none}.topbar h2{font-size:23px}.grid-kpis,.module-grid,.class-cards{grid-template-columns:1fr}.hero{padding:23px 20px}.hero h3{font-size:24px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.toolbar .search-input{max-width:none;flex:1}.detail-head{display:block}.actions{margin-top:10px}.kv{grid-template-columns:1fr}.followup-row{grid-template-columns:minmax(130px,1.2fr) repeat(6,46px) minmax(150px,1fr);min-width:780px}.followup-editor{overflow:auto}.modal-card{padding:20px 16px}.progress-stats{grid-template-columns:repeat(2,1fr)}}
.hero.compact{padding:22px 26px}.word-preview{border:1px solid var(--line);border-radius:14px;overflow:auto;max-height:430px;margin-top:14px}.word-row{display:grid;grid-template-columns:46px 1fr 1fr 44px;gap:8px;align-items:center;padding:8px 10px;border-bottom:1px solid #edf1f5;background:#fff}.word-row:last-child{border-bottom:0}.word-row.head{position:sticky;top:0;z-index:2;background:#f7f9fc;font-size:9px;font-weight:900;color:#758399;text-transform:uppercase}.word-row input{width:100%;border:1px solid var(--line);border-radius:9px;padding:8px 9px;background:#fbfcfe}.input-prefix{display:grid;grid-template-columns:auto 1fr;align-items:center;border:1px solid #dfe5ed;border-radius:13px;background:#fbfcfe;overflow:hidden}.input-prefix>span{padding-left:12px;color:#718096;font-weight:800}.input-prefix input{border:0!important;box-shadow:none!important;background:transparent!important}.hint{font-size:10.5px;color:var(--muted);line-height:1.5;margin:8px 0 14px}.actions .btn{white-space:nowrap}
@media(max-width:650px){.word-row{grid-template-columns:34px minmax(120px,1fr) minmax(120px,1fr) 38px;min-width:430px}.word-preview{overflow:auto}.actions .btn{font-size:10px;padding:8px 9px}}
.import-choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0 8px}.import-choice{border:1px solid var(--line);background:#fff;border-radius:18px;padding:22px;text-align:left;cursor:pointer;transition:.18s;box-shadow:0 8px 20px rgba(25,55,90,.04)}.import-choice:hover{transform:translateY(-2px);border-color:#a9c9e8;box-shadow:0 12px 28px rgba(25,70,120,.10)}.import-choice-icon{display:block;font-size:28px;margin-bottom:10px}.import-choice b{display:block;font-size:15px;color:#16395f;margin-bottom:6px}.import-choice small{display:block;color:var(--muted);line-height:1.45}@media(max-width:700px){.import-choice-grid{grid-template-columns:1fr}.split{grid-template-columns:1fr!important}}


.class-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.week-pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:900;white-space:nowrap}.week-pill.missing{background:#fde9e9;color:#a73a3a}.week-pill.imported{background:#e3f6ec;color:#0d744d}.week-pill.holiday{background:#fff3da;color:#8f6500}.week-status-card{display:flex;align-items:center;justify-content:space-between;gap:20px;border:1px solid var(--line);border-radius:20px;padding:20px 22px;margin-bottom:18px;background:#fff;box-shadow:var(--shadow)}.week-status-card.non_importe{border-left:5px solid var(--red)}.week-status-card.importe{border-left:5px solid var(--green)}.week-status-card.vacances{border-left:5px solid var(--amber)}.week-status-copy>span{font-size:10px;color:var(--muted);font-weight:850;text-transform:uppercase;letter-spacing:.06em}.week-status-copy h3{margin:5px 0 4px;font-size:20px}.week-status-copy p{margin:0;color:var(--muted);font-size:12px}.week-status-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.text-action{border:0;background:transparent;color:#6c7b8e;text-decoration:underline;text-underline-offset:3px;font-size:10.5px;font-weight:800;cursor:pointer;padding:8px}.history-simple{display:grid;gap:9px;margin-top:12px}.history-simple-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:13px;padding:12px 13px;background:#fff}.history-simple-row[data-history-batch]{cursor:pointer}.history-simple-row[data-history-batch]:hover{border-color:#bfd0e1;background:#fbfdff}.history-simple-row b{display:block;font-size:12px}.history-simple-row span{display:block;color:var(--muted);font-size:10.5px;margin-top:3px}
@media(max-width:700px){.week-status-card{display:block;padding:18px}.week-status-actions{justify-content:flex-start;margin-top:14px}.class-card-top{align-items:flex-start}.week-pill{font-size:8px}}


.followup-split{grid-template-columns:.78fr 1.22fr}.tracking-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}.tracking-table{width:100%;min-width:1050px;border-collapse:collapse;background:#fff}.tracking-table th,.tracking-table td{border-bottom:1px solid #e8eef5;border-right:1px solid #eef2f6;padding:7px 5px;text-align:center;font-size:10px}.tracking-table th{background:#f7f9fc;color:#65758b;font-size:8.5px;text-transform:uppercase;letter-spacing:.035em}.tracking-table .ped-head{background:#e8f2ff;color:#0d5fb8}.tracking-table .sup-head{background:#e9f8ef;color:#0f7a48}.tracking-table .track-name{text-align:left;min-width:160px;white-space:nowrap}.track-state{width:34px;height:30px;border:1px solid #d4deea;border-radius:8px;background:#f3f6f9;color:#6f7f92;font-weight:900;cursor:pointer}.track-state.t1{background:#e7f7ef;border-color:#bee7d2;color:#07844d}.track-state.t2{background:#fff4dc;border-color:#f2d18e;color:#aa6900}.track-state.t3{background:#fdeaea;border-color:#f2bcbc;color:#c93232}.auto-bilan{display:inline-flex;align-items:center;justify-content:center;min-width:92px;padding:6px 7px;border-radius:999px;font-size:8.5px;font-weight:900;white-space:nowrap}.auto-bilan.neutral{background:#eef2f6;color:#728096}.auto-bilan.good{background:#e4f6ed;color:#0d7b4a}.auto-bilan.warn{background:#fff1d3;color:#9c6500}.auto-bilan.bad{background:#fde5e5;color:#b72f2f}.missing-count{display:inline-grid;place-items:center;min-width:28px;height:28px;border-radius:999px;background:#eef6f1;color:#17754c;font-weight:900}.track-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;color:#6f7f92;font-size:9px}.track-legend b{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:6px;background:#f1f4f7;color:#203652;margin-right:3px}.student-history{min-width:1100px}.progress-stats{grid-template-columns:repeat(5,1fr)}
@media(max-width:950px){.followup-split{grid-template-columns:1fr}.progress-stats{grid-template-columns:repeat(2,1fr)}}


.signal-btn{position:relative;width:38px;height:38px;border:1px solid var(--line);border-radius:11px;background:#fff;cursor:pointer;font-size:17px;display:grid;place-items:center;box-shadow:0 4px 12px rgba(30,55,90,.04)}
.signal-btn:hover{border-color:#bfd0e2;background:#fbfdff}.signal-badge{position:absolute;right:-5px;top:-5px;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:#e34f4f;color:#fff;font-size:9px;font-style:normal;font-weight:900;display:grid;place-items:center;border:2px solid #f5f7fb}.status-ok{display:inline-flex;align-items:center;padding:8px 10px;border-radius:10px;background:#e7f7ef;color:#14744f;font-size:10px;font-weight:850}.notification-list{display:grid;gap:9px}.notification-row{width:100%;border:1px solid var(--line);background:#fff;border-radius:15px;padding:13px 14px;display:grid;grid-template-columns:42px 1fr 10px;gap:11px;align-items:center;text-align:left;cursor:pointer}.notification-row:hover{border-color:#b9d1e8;box-shadow:0 8px 20px rgba(30,55,90,.05)}.notification-row.unread{background:#f7fbff;border-color:#cfe2f5}.notification-icon{width:40px;height:40px;border-radius:12px;background:#edf5ff;display:grid;place-items:center;font-size:18px}.notification-copy b{display:block;font-size:12.5px;color:#17395f}.notification-copy small{display:block;margin-top:3px;color:#5f7086;font-size:11px;line-height:1.45}.notification-copy em{display:block;margin-top:5px;color:#95a0ae;font-size:9.5px;font-style:normal}.notification-row>i{width:8px;height:8px;border-radius:999px;background:#0b7de7}.messages-shell{display:grid;grid-template-columns:330px minmax(0,1fr);min-height:600px;background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--shadow)}.conversation-list{border-right:1px solid var(--line);background:#fbfcfe;padding:12px}.conversation-title{font-size:10px;font-weight:900;color:#708097;text-transform:uppercase;letter-spacing:.08em;padding:7px 8px 10px}.conversation-peer{width:100%;display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:9px;align-items:center;border:0;background:transparent;border-radius:12px;padding:10px;text-align:left;cursor:pointer}.conversation-peer:hover,.conversation-peer.active{background:#eaf4ff}.conversation-peer b{display:block;font-size:11.5px;color:#183b62}.conversation-peer small{display:block;margin-top:3px;font-size:9.5px;color:#7b899c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conversation-peer em{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#0a7de8;color:#fff;font-size:9px;font-style:normal;font-weight:900;display:grid;place-items:center}.mini-avatar{width:36px;height:36px;border-radius:11px;background:#e3effb;color:#0f64b5;display:grid;place-items:center;font-size:10px;font-weight:900}.mini-avatar.large{width:42px;height:42px}.conversation-thread{min-width:0;display:flex;flex-direction:column;background:#fff}.thread-head{height:68px;border-bottom:1px solid var(--line);padding:12px 16px;display:flex;gap:11px;align-items:center}.thread-head b{display:block;font-size:12.5px}.thread-head span{display:block;color:#7e8b9c;font-size:10px;margin-top:3px}.message-stream{flex:1;padding:18px;overflow:auto;max-height:500px;background:linear-gradient(180deg,#fbfdff,#f7fafc)}.bubble-wrap{display:flex;margin:8px 0}.bubble-wrap.mine{justify-content:flex-end}.message-bubble{max-width:min(650px,78%);padding:10px 12px;border-radius:14px;background:#fff;border:1px solid #dfe7ef;box-shadow:0 3px 10px rgba(20,45,80,.03)}.mine .message-bubble{background:#0b72d1;color:#fff;border-color:#0b72d1}.message-bubble p{margin:0;white-space:pre-wrap;font-size:11.5px;line-height:1.5}.message-bubble small{display:block;margin-top:5px;font-size:8.5px;opacity:.7}.message-compose{border-top:1px solid var(--line);padding:12px;display:grid;grid-template-columns:1fr auto;gap:10px}.message-compose textarea{resize:none;min-height:46px;max-height:120px;border:1px solid #dce5ee;border-radius:12px;padding:11px 12px;font:inherit;font-size:11.5px}.thread-placeholder{margin:auto;text-align:center;color:#7c8998;padding:40px}.thread-placeholder>span{font-size:36px}.thread-placeholder h3{color:#244361;margin:10px 0 6px}.thread-placeholder p{font-size:11px}.hidden{display:none!important}
@media(max-width:800px){.messages-shell{grid-template-columns:1fr}.conversation-list{border-right:0;border-bottom:1px solid var(--line);max-height:250px;overflow:auto}.conversation-thread{min-height:430px}.top-actions{gap:7px}.signal-btn{width:36px;height:36px}.notification-row{grid-template-columns:38px 1fr 8px}.notification-icon{width:36px;height:36px}.message-bubble{max-width:88%}}


.class-picker-panel{background:#fff;border:1px solid var(--line);border-radius:20px;padding:18px 19px;box-shadow:var(--shadow);margin-bottom:18px;display:grid;grid-template-columns:1fr auto;gap:15px 20px;align-items:end}.class-picker-copy h3{margin:4px 0 4px}.class-picker-copy p{margin:0;color:var(--muted);font-size:11px}.class-picker-controls{display:flex;align-items:end;gap:9px;flex-wrap:wrap}.class-picker-controls label{display:grid;gap:5px}.class-picker-controls label span{font-size:9px;text-transform:uppercase;letter-spacing:.06em;font-weight:900;color:#748399}.class-picker-controls select{min-width:180px;border:1px solid var(--line);border-radius:11px;background:#fff;padding:10px 11px;color:#294865}.class-picker-panel>#selectedClassStatus{grid-column:1/-1}.selected-class-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f8fbfe;border:1px solid #e1e9f2;border-radius:13px;padding:11px 13px}.selected-class-summary b{display:block;font-size:12px;color:#1d4168}.selected-class-summary span:not(.week-pill){display:block;color:#7b899b;font-size:10px;margin-top:3px}.compact-empty{padding:13px}.sheet-class-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;max-height:360px;overflow:auto;margin-top:13px}.sheet-class-choice{display:grid;grid-template-columns:auto 1fr;gap:9px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:10px 11px;background:#fff;cursor:pointer}.sheet-class-choice:hover{border-color:#bdd2e6;background:#fbfdff}.sheet-class-choice input{width:17px;height:17px;accent-color:#087de8}.sheet-class-choice b{display:block;font-size:11.5px}.sheet-class-choice small{display:block;color:#7c8999;font-size:9.5px;margin-top:2px}
@media(max-width:850px){.class-picker-panel{grid-template-columns:1fr}.class-picker-controls{align-items:stretch}.class-picker-controls label{flex:1}.class-picker-controls select{min-width:0;width:100%}.sheet-class-grid{grid-template-columns:1fr}}


:root{--control-h:46px}
body{font-size:15px}
.btn{min-height:46px;padding:12px 17px;border-radius:13px;font-size:13px;line-height:1.15}
.btn.small{min-height:39px;padding:9px 13px;font-size:12px;border-radius:11px}
.icon-btn{width:40px;height:40px;border-radius:11px;font-size:16px}
.signal-btn{width:44px;height:44px;border-radius:13px;font-size:19px}
.nav{min-height:48px;padding:12px 13px;font-size:13px}.nav i{width:30px;height:30px;font-size:16px}
.field{gap:9px;margin:17px 0}.field>span{font-size:13px}.field input,.field select,.field textarea,.search-input{min-height:46px;padding:13px 14px;border-radius:13px;font-size:14px}.field textarea{min-height:125px}
.toolbar select{min-height:44px;padding:11px 13px;font-size:13px}.toolbar .search-input{min-height:44px}
.check-grid{gap:10px}.check-pill{min-height:44px;padding:10px 13px;border-radius:12px;font-size:13px;display:flex;align-items:center;gap:8px}.check-pill input{width:18px;height:18px}
.tab{min-height:42px;padding:10px 15px;font-size:12.5px}.tabs{padding:6px;gap:7px}
.list-row{padding:16px 17px;min-height:70px}.list-row h4{font-size:15px}.list-row p{font-size:12.5px;line-height:1.45}.code{font-size:10.5px}.badge{padding:7px 11px;font-size:10.5px}
.panel{padding:22px}.panel-head h3{font-size:18px}.panel-head p{font-size:12px}.kv{min-height:46px;padding:10px 0}.kv b,.kv span{font-size:12.5px}
.data-table th{padding:12px 11px;font-size:10.5px}.data-table td{padding:13px 11px;font-size:12.5px;min-height:46px}.data-table .student-name{font-size:13.5px}
.class-picker-controls select{min-height:46px;padding:12px 13px;font-size:13px}.selected-class-summary{padding:14px 16px;min-height:60px}.selected-class-summary b{font-size:14px}.selected-class-summary span:not(.week-pill){font-size:11.5px}
.week-status-card{padding:22px}.week-status-copy h3{font-size:20px}.week-status-actions{gap:10px}
.import-choice{min-height:150px;padding:22px}.import-choice b{font-size:15px}.import-choice small{font-size:12px;line-height:1.5}.import-choice-icon{font-size:30px}
.word-row{min-height:52px;padding:10px 12px}.word-row input{min-height:40px;font-size:13px}


.tracking-table{min-width:1240px}.tracking-table th,.tracking-table td{padding:10px 8px;font-size:12px;min-height:52px}.tracking-table th{font-size:10px}.tracking-table .track-name{min-width:190px;font-size:13px}.track-state{width:46px;height:42px;border-radius:10px;font-size:16px}.auto-bilan{min-width:112px;padding:8px 10px;font-size:10px}.missing-count{min-width:34px;height:34px;font-size:12px}.track-legend{font-size:11px;gap:16px}.track-legend b{width:25px;height:25px}


.module-card.tasks:before{background:linear-gradient(#7656d8,#a58cff)}
.task-row-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.group-list{display:grid;gap:10px;max-height:310px;overflow:auto;margin:14px 0}.group-card{border:1px solid var(--line);border-radius:14px;padding:14px 15px;background:#fbfcfe}.group-card b{display:block;font-size:13.5px}.group-card span{display:block;margin-top:5px;color:var(--muted);font-size:11.5px;line-height:1.45}.soft{border:0;border-top:1px solid var(--line);margin:20px 0}


.supervisor .message-bubble{border:1px solid #c8b8f5;background:#f3efff;color:#3f2e78}.supervisor-label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px;color:#674aaf}.supervision-list{display:grid;gap:9px;max-height:450px;overflow:auto;margin-top:14px}.supervision-row{border:1px solid var(--line);border-radius:14px;background:#fff;min-height:66px;padding:13px 14px;display:grid;grid-template-columns:1fr auto;gap:12px;text-align:left;align-items:center;cursor:pointer}.supervision-row:hover{border-color:#b9d1e8;background:#fbfdff}.supervision-row b{display:block;font-size:13px}.supervision-row small{display:block;color:var(--muted);font-size:11px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:520px}.supervision-row em{font-size:10px;color:#8794a5;font-style:normal}.supervised-thread{max-height:430px;overflow:auto;background:#f7f9fc;border:1px solid var(--line);border-radius:15px;padding:13px;margin:14px 0}.supervised-msg{background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin:8px 0}.supervised-msg.is-supervisor{background:#f2edff;border-color:#cbbcf2}.supervised-msg b{font-size:11.5px}.supervised-msg p{font-size:12.5px;line-height:1.5;white-space:pre-wrap;margin:5px 0}.supervised-msg small{font-size:9.5px;color:#8794a5}


.file-row{min-height:50px;padding:10px 0}.file-row a{font-size:12.5px;font-weight:750}.upload-box{gap:10px}.upload-box input[type=file]{min-height:44px;padding:8px;border:1px dashed #cbd7e4;border-radius:11px;background:#fbfcfe}.media-note{font-size:11px;color:var(--muted);margin-top:8px}

@media(max-width:800px){
  .btn{min-height:48px}.btn.small{min-height:42px}.field input,.field select,.field textarea,.search-input{min-height:48px;font-size:16px}
  .tracking-table{min-width:1180px}.track-state{width:48px;height:44px}.data-table th,.data-table td{padding:12px 10px}
  .task-row-right{justify-content:flex-start}.supervision-row{grid-template-columns:1fr}.supervision-row em{margin-top:2px}
}


.manager-list{display:grid;gap:8px;max-height:48vh;overflow:auto;padding:1px 3px 1px 0}.manager-list .user-row{margin-top:0}.class-danger-actions{align-items:center;flex-wrap:wrap}.class-danger-actions .toolbar-spacer{min-width:16px}.compact-empty{padding:16px}.data-table td .actions{justify-content:flex-end}


html{overflow-x:hidden}body{overflow-x:hidden}.main{overflow-x:hidden}.view{width:100%;max-width:1420px;margin-inline:auto;min-width:0}.panel,.module-card,.kpi,.hero,.split>*{min-width:0}.panel-head>*,.detail-head>*,.topbar>*,.list-row>*,.user-row>*{min-width:0}
img,video,canvas,svg{max-width:100%;height:auto}.source-preview video{max-width:100%;max-height:70vh}.source-preview iframe{max-width:100%}
.table-wrap,.tracking-wrap{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;scrollbar-gutter:stable}.table-wrap table,.tracking-wrap table{margin:0}.table-wrap:focus-within,.tracking-wrap:focus-within{outline:2px solid rgba(8,125,232,.14);outline-offset:2px}.uc-page-hidden{display:none!important}
.table-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 2px 2px;color:#6c7a8d;font-size:12px}.table-pagination-summary{font-weight:750;white-space:nowrap}.table-pagination-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}.table-pagination-actions label{display:flex;align-items:center;gap:7px;font-weight:750;white-space:nowrap}.table-page-size{height:38px;min-width:72px;padding:0 28px 0 10px;border:1px solid var(--line);border-radius:10px;background:#fff;color:#344b65;font-weight:800}.table-page-buttons{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.page-btn{min-width:38px;height:38px;padding:0 10px;border:1px solid var(--line);border-radius:10px;background:#fff;color:#3d526d;font-weight:850;cursor:pointer}.page-btn:hover:not(:disabled){border-color:#a8c9e8;background:#f5faff}.page-btn.active{background:#087de8;border-color:#087de8;color:#fff}.page-btn:disabled{opacity:.4;cursor:not-allowed}.page-ellipsis{width:24px;text-align:center;color:#8995a5}.table-pagination.single-page .table-page-buttons{opacity:.75}
.tabs{max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.tab{flex:0 0 auto;white-space:nowrap}.actions,.form-actions,.hero-actions,.week-status-actions{max-width:100%}.actions .btn,.form-actions .btn,.hero-actions .btn,.week-status-actions .btn{max-width:100%}.toolbar>*{min-width:0}.toolbar .search-input{flex:1 1 260px}.toolbar select{max-width:100%}
.modal-card{width:min(760px,calc(100vw - 28px));max-height:min(92vh,900px);overscroll-behavior:contain}.modal-card .form-actions{position:relative}.message-compose{min-width:0}.message-compose textarea{min-width:0}.conversation-peer span{min-width:0}.notification-copy{min-width:0}
.data-table{min-width:700px}.student-history{min-width:1180px}.tracking-table{min-width:1280px}.data-table th,.data-table td,.tracking-table th,.tracking-table td{vertical-align:middle}.data-table td .actions{min-width:max-content}

@media(max-width:1120px){
  .main{padding-inline:24px}.panel-head,.detail-head{align-items:flex-start}.detail-head{flex-wrap:wrap}.detail-head>.actions{width:100%}.class-picker-controls{width:100%}.class-picker-controls label{flex:1 1 180px}
}
@media(max-width:860px){
  .main{padding:22px 16px 96px}.topbar{gap:12px}.top-actions{flex:0 0 auto}.panel{padding:18px}.hero{border-radius:20px}.hero.compact{padding:20px}.panel-head{flex-wrap:wrap}.panel-head>.actions{width:100%;justify-content:flex-start}.form-actions{justify-content:flex-start}.data-table{min-width:650px}.table-pagination{align-items:flex-start}.table-pagination-actions{justify-content:flex-start}
}
@media(max-width:650px){
  body{font-size:14px}.main{padding:14px 10px 92px}.topbar{margin-bottom:16px;gap:8px}.topbar h2{font-size:21px;max-width:52vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eyebrow{font-size:9px}.top-actions{gap:5px}.signal-btn,.icon-btn{width:42px;height:42px;min-width:42px}.sidebar{height:76px;padding:7px 6px}.sidebar #mainNav{justify-content:flex-start;gap:3px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:1px}.sidebar #mainNav::-webkit-scrollbar{display:none}.nav{flex:0 0 74px;min-width:74px;min-height:58px;padding:5px 4px}.nav span{font-size:8.5px;max-width:70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav i{width:31px;height:31px}.nav-badge{right:3px;top:1px}.hero,.hero.compact{padding:19px 16px;border-radius:18px}.hero h3{font-size:22px;line-height:1.1}.hero p{font-size:12.5px}.panel,.module-card{padding:15px;border-radius:17px}.panel-head h3{font-size:16px}.module-grid,.grid-kpis,.class-cards,.progress-stats{gap:10px}.kpi{padding:14px}.kpi b{font-size:23px}.detail-head h3{font-size:20px}.actions,.form-actions,.hero-actions,.week-status-actions{width:100%;gap:7px}.actions .btn,.form-actions .btn,.hero-actions .btn,.week-status-actions .btn{flex:1 1 auto;white-space:normal;text-align:center}.toolbar{align-items:stretch}.toolbar .search-input,.toolbar select,.toolbar .btn{flex:1 1 100%;max-width:none;width:100%}.tabs{width:100%;border-radius:11px}.tab{min-height:44px}.list-row{grid-template-columns:1fr;padding:14px}.list-row>.badge,.task-row-right{justify-self:start}.user-row{grid-template-columns:42px 1fr}.user-row>.btn{grid-column:1/-1;width:100%}.week-status-card{padding:16px}.week-status-actions{margin-top:12px}.selected-class-summary{align-items:flex-start;flex-direction:column}.class-picker-controls{display:grid;grid-template-columns:1fr;width:100%}.class-picker-controls label{width:100%}.class-picker-controls select{width:100%}.message-compose{grid-template-columns:1fr}.message-compose .btn{width:100%}.message-bubble{max-width:94%}.notification-row{padding:12px 9px}.source-preview{min-height:200px}.source-preview iframe{height:65vh}.modal{padding:8px}.modal-card{width:calc(100vw - 16px);max-height:94vh;padding:18px 13px;border-radius:18px}.modal-close{right:9px;top:9px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.field input,.field select,.field textarea,.search-input{font-size:16px}.data-table{min-width:620px}.student-history{min-width:1120px}.tracking-table{min-width:1180px}.tracking-table .track-name{position:sticky;left:0;z-index:2;background:#fff;box-shadow:5px 0 10px rgba(15,42,70,.04)}.tracking-table thead .track-name{z-index:4;background:#f7f9fc}.table-pagination{display:grid;grid-template-columns:1fr;gap:9px;padding-top:10px}.table-pagination-actions{display:grid;grid-template-columns:1fr;gap:8px;width:100%}.table-pagination-actions label{justify-content:space-between}.table-page-size{min-width:90px}.table-page-buttons{justify-content:flex-start;overflow-x:auto;flex-wrap:nowrap;padding-bottom:3px}.page-btn{flex:0 0 40px;min-width:40px;height:40px}.page-ellipsis{flex:0 0 22px}.file-row{align-items:flex-start;flex-direction:column}.file-row>*{max-width:100%}.file-row a{overflow-wrap:anywhere}.history-simple-row{align-items:flex-start;flex-direction:column}.supervision-row small{max-width:75vw}.manager-list{max-height:58vh}
}
@media(max-width:390px){
  .main{padding-inline:8px}.topbar h2{font-size:19px;max-width:45vw}.signal-btn,.icon-btn{width:40px;height:40px;min-width:40px}.nav{flex-basis:70px;min-width:70px}.panel,.module-card{padding:13px}.btn{padding-inline:13px}.btn.small{padding-inline:10px}.grid-kpis{grid-template-columns:1fr}.progress-stats{grid-template-columns:1fr 1fr}.page-btn{flex-basis:38px;min-width:38px}
}
@media(hover:none) and (pointer:coarse){
  .btn,.nav,.tab,.page-btn,.signal-btn,.icon-btn,.track-state,.conversation-peer,.notification-row{touch-action:manipulation}.btn:hover,.list-row:hover,.class-card:hover{transform:none}
}


.comp-domain-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0}.comp-domain-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:15px 16px;box-shadow:0 7px 22px rgba(21,45,78,.04)}.comp-domain-card b{display:block;font-size:13px}.comp-domain-card span{display:block;margin-top:5px;color:var(--muted);font-size:11px}.competency-table{min-width:1500px}.competency-table th{min-width:205px;white-space:normal;line-height:1.35}.competency-table th:first-child{min-width:55px}.competency-table th:nth-child(2){min-width:210px}.competency-table th span{display:block;color:#087de8;font-size:9px;text-transform:uppercase;margin-bottom:5px}.comp-student{position:sticky;left:0;background:#fff;z-index:2}.comp-cell{min-width:205px}.comp-cell select{width:100%;min-height:38px;border:1px solid #dfe6ee;border-radius:9px;background:#fff;padding:7px 8px;font-size:11px}.comp-cell .comp-remark{margin-top:6px}.save-state{font-size:11px;font-weight:800;color:#66778c;padding:8px 10px;background:#f2f6fa;border-radius:999px}.competency-bars{display:grid;gap:12px}.competency-bar>div{display:flex;justify-content:space-between;gap:15px;align-items:center}.competency-bar b{font-size:12px}.competency-bar span{font-size:11px;color:var(--muted);font-weight:800}.competency-bar progress{width:100%;height:12px;margin-top:6px;accent-color:#087de8}@media(max-width:900px){.comp-domain-strip{grid-template-columns:1fr 1fr}.competency-table{min-width:1450px}}@media(max-width:560px){.comp-domain-strip{grid-template-columns:1fr}}


.competency-table .comp-cell{min-width:190px}.competency-table .comp-cell .comp-score{width:100%}.competency-table .bilan-head{min-width:290px}.comp-bilan-cell{min-width:290px;vertical-align:middle}.multi-remarks{position:relative}.multi-remarks>summary{list-style:none;cursor:pointer;border:1px solid var(--line,#dbe3ef);border-radius:12px;padding:12px 14px;background:#fff;font-weight:700;white-space:nowrap}.multi-remarks>summary::-webkit-details-marker{display:none}.multi-remarks[open]>summary{border-color:#7aa7ff;box-shadow:0 0 0 3px rgba(35,112,255,.08)}.multi-remarks-menu{position:absolute;z-index:30;right:0;top:calc(100% + 6px);width:330px;max-height:360px;overflow:auto;background:#fff;border:1px solid var(--line,#dbe3ef);border-radius:14px;box-shadow:0 18px 45px rgba(15,35,70,.18);padding:10px}.multi-remarks-menu label{display:flex;gap:9px;align-items:flex-start;padding:8px;border-radius:9px;cursor:pointer;font-weight:500}.multi-remarks-menu label:hover{background:#f5f8fd}.multi-remarks-menu input[type=checkbox]{margin-top:2px}.multi-remarks-menu .custom-remark{display:block;border-top:1px solid #edf1f6;margin-top:6px;padding-top:10px}.multi-remarks-menu .custom-remark span{display:block;font-weight:700;margin-bottom:6px}.multi-remarks-menu .custom-remark input{width:100%;box-sizing:border-box;border:1px solid #dbe3ef;border-radius:9px;padding:9px}

/* Composants pédagogiques utilisant les couleurs et panneaux existants. */
.announcement-body{white-space:pre-wrap;line-height:1.65;overflow-wrap:anywhere;padding:16px;background:var(--bg);border-radius:var(--radius)}
.recipient-picker{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-height:300px;overflow:auto;padding:6px}
.school-custom-remark{min-width:180px;min-height:85px}.comp-bilan-cell{max-width:340px}.multi-remarks-menu textarea{width:100%;font:inherit;border:1px solid var(--line);border-radius:8px;padding:8px}
#schoolPrint{display:none}.print-heading{display:flex;gap:16px;align-items:center;margin-bottom:15px}.print-heading img{width:110px;object-fit:contain}
@media(max-width:600px){.recipient-picker{grid-template-columns:1fr}.grid-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media print{
 @page{size:A4 landscape;margin:10mm}
 .sidebar,.topbar,.hero-actions,.form-actions,.table-pagination,.modal,#toast,.actions,.nav,.signal-btn{display:none!important}
 .main{padding:0!important;margin:0!important}.app-shell{display:block!important}.view.hidden{display:none!important}.panel{box-shadow:none!important;border:0!important;padding:0!important}
 .table-wrap{overflow:visible!important}.uc-page-hidden{display:table-row!important}.data-table{min-width:0!important;width:100%!important;font-size:9px!important}.data-table td,.data-table th{padding:5px!important}thead{display:table-header-group}tr{break-inside:avoid}
 body.printing-school>*:not(#schoolPrint){display:none!important}body.printing-school #schoolPrint{display:block!important;font-size:9px;color:#111}#schoolPrint table{border-collapse:collapse;width:100%;table-layout:fixed}#schoolPrint th,#schoolPrint td{border:1px solid #bbb;padding:5px;overflow-wrap:anywhere;vertical-align:top}#schoolPrint th{background:#edf2f8}#schoolPrint h2{font-size:18px;margin:0 0 8px}#schoolPrint p{margin:3px 0}#schoolPrint table td:first-child{font-weight:700}
}

/* Navigation accessible sur les écrans de faible hauteur. */
@media(min-width:651px){.sidebar{overflow-y:auto;overscroll-behavior:contain}.sidebar-user{flex-shrink:0}}
#topLogout{white-space:nowrap;min-height:42px}
@media(max-width:650px){#topLogout{font-size:11px;padding:8px}.top-actions{flex-wrap:wrap;justify-content:flex-end}}

.user-category{border:1px solid var(--line);border-radius:14px;padding:12px;margin:10px 0}.user-category>summary{cursor:pointer;font-weight:850;padding:7px}.user-category .user-row{margin-top:8px}

#view-admin .timeline{max-height:65vh;overflow-y:auto;padding-right:8px}

/* Boutons harmonisés : couleurs douces et hiérarchie commune. */
:root{--button-blue:#285da8;--button-blue-hover:#204d8e;--button-border:#d4dfeb;--button-focus:#3877bd}
.btn{min-height:44px;padding:11px 17px;border:1px solid transparent;border-radius:14px;background:#edf2f8;color:#293f5b;font-size:13px;font-weight:650;line-height:1.35;letter-spacing:.01em;box-shadow:none;transition:background-color .16s,border-color .16s,box-shadow .16s;white-space:normal;text-align:center}
.btn:hover{transform:none;background:#e3ebf5;box-shadow:0 3px 9px rgba(31,59,94,.07)}
.btn.primary{background:var(--button-blue);color:#fff;border-color:var(--button-blue);box-shadow:0 3px 8px rgba(40,93,168,.12)}
.btn.primary:hover{background:var(--button-blue-hover);border-color:var(--button-blue-hover)}
.btn.dark{background:#243b59;border-color:#243b59;color:#fff}.btn.dark:hover{background:#1c304b}
.btn.ghost{background:#f8fafc;border-color:var(--button-border);color:#34506f}.btn.ghost:hover{background:#edf3fa;border-color:#b4c7dd}
.btn.success,.btn.whatsapp{background:#e5f4ed;color:#226447;border-color:#c9e6d7}.btn.success:hover,.btn.whatsapp:hover{background:#d7ede2;border-color:#a8d5bd}
.btn.warn{background:#fff2df;color:#805317;border-color:#f1d9b5}.btn.warn:hover{background:#fbe8ca;border-color:#e4c48f}
.btn.danger{background:#fbecee;color:#943d48;border-color:#efcdd2}.btn.danger:hover{background:#f7dfe3;border-color:#e6aeb8}
.btn.small{min-height:38px;padding:8px 12px;font-size:12px;border-radius:11px;font-weight:650}
.hero .btn.ghost{background:#e7eef8;border-color:#d5e0ee;color:#29496c}.hero .btn.ghost:hover{background:#dbe7f6;border-color:#b9cde4}
.hero .btn.primary{background:#dceafa;border-color:#dceafa;color:#163f72}.hero .btn.primary:hover{background:#cbdff6;border-color:#cbdff6}
.icon-btn,.signal-btn{display:inline-flex;align-items:center;justify-content:center;min-width:42px;min-height:42px;border:1px solid var(--button-border);border-radius:13px;background:#f8fafc;color:#34506f;box-shadow:none;cursor:pointer;transition:background-color .16s,border-color .16s}
.icon-btn:hover,.signal-btn:hover{background:#edf3fa;border-color:#b4c7dd;transform:none}
.sidebar-user .icon-btn{background:#243955;border-color:#354a65;color:#eef4fc}.sidebar-user .icon-btn:hover{background:#314967}
.text-action{display:inline-flex;align-items:center;gap:5px;border:0;border-radius:7px;padding:5px 7px;background:transparent;color:#285da8;font-weight:650;cursor:pointer;text-decoration:none}.text-action:hover{background:#eaf1fa;color:#204d8e;text-decoration:underline}
.tabs{gap:5px;flex-wrap:wrap;background:#eef2f7;padding:5px;border-radius:14px}.tab{border:1px solid transparent;border-radius:10px;background:transparent;color:#53667e;font-weight:650;min-height:40px;padding:9px 14px;cursor:pointer;box-shadow:none}.tab:hover{background:#e2eaf4}.tab.active{background:#fff;border-color:#d6e1ee;color:#254e83;box-shadow:0 2px 5px rgba(31,59,94,.05)}
.page-btn{border:1px solid var(--button-border);border-radius:10px;background:#f8fafc;color:#34506f;box-shadow:none}.page-btn:hover{background:#eaf1fa}.page-btn.active{background:#285da8;border-color:#285da8;color:#fff}
.btn:focus-visible,.icon-btn:focus-visible,.signal-btn:focus-visible,.text-action:focus-visible,.tab:focus-visible,.page-btn:focus-visible,.nav:focus-visible{outline:3px solid var(--button-focus);outline-offset:3px}
.btn:disabled,.icon-btn:disabled,.signal-btn:disabled,.tab:disabled,.page-btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}
@media(max-width:650px){.btn{min-height:46px;padding:11px 14px}.btn.small{min-height:42px}.tab{padding:9px 11px;font-size:12px}}
@media(prefers-reduced-motion:reduce){.btn,.icon-btn,.signal-btn,.nav{transition:none}}
