:root{--blue:#10284a;--blue2:#164b86;--orange:#ff8a00;--bg:#f4f7fb;--card:#fff;--text:#15233a;--muted:#6b778c;--red:#e63838;--green:#13a35a;--grey:#8a94a6;--line:#e4e9f2}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:linear-gradient(135deg,#edf4ff,#fff7ec);color:var(--text)}.top{background:linear-gradient(135deg,var(--blue),var(--blue2));color:#fff;padding:18px 22px;display:flex;gap:18px;align-items:center;justify-content:space-between;box-shadow:0 4px 18px #10284a30}.top h1{margin:0;font-size:26px}.top p{margin:4px 0 0;color:#dbe8ff}.top nav{display:flex;gap:10px;flex-wrap:wrap}.top a{color:#fff;text-decoration:none;background:#ffffff22;border:1px solid #ffffff35;padding:10px 14px;border-radius:12px;font-weight:700}.top a:hover{background:#ffffff35}.user{background:var(--orange);color:#1b1b1b;font-weight:800;padding:10px 14px;border-radius:999px}.container{max-width:1280px;margin:24px auto;padding:0 16px}.card{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:0 12px 35px #10284a18;padding:22px;margin-bottom:18px}.login{max-width:460px;margin:60px auto}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}label{font-weight:800;margin-bottom:6px;display:block}input,textarea,select{width:100%;border:1px solid #cad4e2;border-radius:14px;padding:13px 14px;font-size:16px;background:#fff}textarea{min-height:96px;resize:vertical}.btn{border:0;border-radius:14px;padding:13px 18px;font-weight:900;cursor:pointer;text-decoration:none;display:inline-block;background:var(--blue2);color:#fff}.btn.orange{background:var(--orange);color:#161616}.btn.red{background:var(--red)}.btn.green{background:var(--green)}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.searchbar{display:flex;gap:12px;align-items:center}.searchbar input{font-size:18px}.tablewrap{overflow:auto;border-radius:18px;border:1px solid var(--line)}table{width:100%;border-collapse:collapse;background:#fff;min-width:1120px}th{background:#10284a;color:#fff;text-align:left;padding:13px;font-size:14px;position:sticky;top:0}td{border-bottom:1px solid var(--line);padding:12px;vertical-align:top}tr:hover{background:#f7fbff}.small{font-size:13px;color:var(--muted)}.badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:6px 10px;font-weight:900;font-size:13px;color:#fff;white-space:nowrap}.badge.red{background:var(--red)}.badge.green{background:var(--green)}.badge.grey{background:var(--grey)}.pill{background:#eef3fb;border:1px solid #d8e2ef;border-radius:999px;padding:6px 10px;display:inline-block;font-weight:800}.pass{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;background:#fff3df;border:1px dashed #ffad4d;color:#5a3100;border-radius:9px;padding:4px 8px;display:inline-block;margin-top:5px;font-weight:900}.alert{padding:12px 14px;border-radius:14px;background:#fff2e0;border:1px solid #ffd39b;margin-bottom:14px}.alert.red{background:#fff0f0;border-color:#ffb4b4;color:#8a1010}.alert.green{background:#ecfff4;border-color:#a6efc3;color:#0b6536}.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}.history{margin:0;padding-left:18px}.history li{margin-bottom:16px}.nowrap{white-space:nowrap}.errors-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.errorbox{border:1px solid var(--line);border-radius:16px;padding:14px;background:#f9fbff}.errorbox h4{margin:0 0 10px}.checkline{display:flex;gap:9px;align-items:flex-start;font-weight:600;margin:8px 0}.checkline input{width:auto;margin-top:3px}.student-portal .top{justify-content:center}.big-date{font-size:28px;font-weight:900}.mutedbox{background:#f6f8fb;border:1px solid var(--line);border-radius:16px;padding:14px}@media(max-width:850px){.top{align-items:flex-start;flex-direction:column}.grid,.grid3,.split,.errors-grid{grid-template-columns:1fr}.container{margin-top:14px}.card{padding:16px}.searchbar{flex-direction:column;align-items:stretch}table{min-width:980px}}

.inline-form{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.inline-form label{margin:0}.inline-form input,.inline-form select{min-width:230px}.checks-card{background:#f7fbff;border:1px solid var(--line);border-radius:16px;padding:10px 12px}
.sessions-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin-top:14px}.session-card{display:flex;flex-direction:column;gap:10px;text-decoration:none;color:var(--text);border:1px solid var(--line);border-radius:18px;padding:16px;background:#f8fbff;box-shadow:0 8px 20px #10284a12}.session-card:hover{border-color:var(--green);transform:translateY(-1px)}.session-date{font-size:24px;font-weight:900;color:var(--blue)}
.dtt-print-area{margin-top:18px}.dtt-page{background:#fff;color:#000;width:210mm;height:297mm;margin:0 auto 22px;padding:5mm 4.5mm 4mm;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif;font-size:11px;overflow:hidden}.dtt-top{display:grid;grid-template-columns:47mm 1fr 52mm;align-items:stretch;border:2px solid #000;border-bottom:0;height:34mm}.dtt-logos{display:flex;align-items:flex-start;gap:7mm;padding:8mm 0 0 8mm;overflow:hidden}.dtt-logos img:first-child{width:17mm;height:17mm;object-fit:contain}.dtt-logos img:last-child{width:27mm;height:16mm;object-fit:contain}.dtt-title-auto{text-align:center;padding-top:10mm;font-size:13px}.dtt-title-auto strong{font-size:15px;font-weight:900}.dtt-cachet{border-left:2px solid #000;padding:4px;text-align:center;font-size:11px}.dtt-eec{border:2px solid #000;text-align:center;font-weight:900;font-size:15px;padding:3px}.dtt-row-head{display:grid;grid-template-columns:35mm 1fr 40mm 1fr;border-left:2px solid #000;border-right:2px solid #000}.dtt-row-head>div{border-bottom:2px solid #000;border-right:2px solid #000;padding:5px;text-align:center;height:10mm;display:flex;align-items:center;justify-content:center}.dtt-row-head>div:last-child{border-right:0}.dtt-table{width:100%;min-width:0;border-collapse:collapse;background:#fff}.dtt-table th,.dtt-table td{border:1.35px solid #000;color:#000;padding:2px 4px;height:7.7mm;font-size:11px;background:#fff;line-height:1.05}.dtt-table th{text-align:center;font-weight:bold;height:8.5mm}.dtt-num{width:11mm}.dtt-cat{width:22mm}.center{text-align:center}.dtt-admin-title{border:2px solid #000;border-top:0;text-align:center;font-weight:bold;font-size:15px;padding:3px}.dtt-admin{display:grid;grid-template-columns:42% 58%;border-left:2px solid #000;border-right:2px solid #000;border-bottom:2px solid #000;height:41mm}.dtt-admin>div{padding:6px}.dtt-admin>div:first-child{border-right:2px solid #000}.dtt-admin p{margin:5px 0}.dtt-indent{padding-left:44mm}.dtt-footer{font-size:6.3px;margin-top:2px;text-align:center;line-height:1.05}.dtt-important{text-align:left;font-size:12px;margin-top:6px;margin-left:14mm}.dtt-important b{text-decoration:underline}.no-print{display:block}@page{size:A4 portrait;margin:0}@media print{body{background:#fff}.top,.no-print{display:none!important}.container{max-width:none;margin:0;padding:0}.dtt-print-area{margin:0}.dtt-page{border:0;margin:0;page-break-after:always;box-shadow:none}.dtt-page:last-child{page-break-after:auto}.card{box-shadow:none}}
.alert.orange{background:#fff2d6;border-color:#ffc25b;color:#7a4a00}.badge.orange{background:#ff8a00;color:#161616}.sold{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;font-weight:900;color:#fff}.green-dot{background:var(--green)}.red-dot{background:var(--red)}.bang{display:inline-flex;align-items:center;justify-content:center;background:var(--red);color:#fff;border-radius:999px;width:24px;height:24px;margin-left:6px}.month-list{display:grid;gap:12px}.month-card{border:1px solid var(--line);border-radius:18px;background:#fff;padding:10px}.month-card summary{cursor:pointer;font-weight:900;display:flex;gap:12px;align-items:center;justify-content:space-between;padding:8px}.session-card.complete{border-color:#ff8a00;background:#fff6eb}.smallbtn{padding:8px 10px;border-radius:10px;font-size:13px}.date-line{display:grid;grid-template-columns:180px 1fr;gap:10px;align-items:center;margin-bottom:8px}.date-line input{padding:10px}.card summary.btn{width:max-content}.dtt-print-area .dtt-page{page-break-after:always}@media print{.no-print,.top{display:none!important}.container{max-width:none;margin:0;padding:0}.dtt-page{margin:0!important;box-shadow:none!important;border:0!important}}

.date-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0}.date-line input[type=date]{max-width:190px}.smallbtn{padding:7px 10px;font-size:12px}.dtt-page{page-break-after:always}.dtt-page:last-child{page-break-after:auto}
/* Liste élèves simplifiée + tri colonnes */
.compact-table{min-width:900px}
th.sortable{cursor:pointer;user-select:none;position:relative;padding-right:26px}
th.sortable::after{content:'↕';position:absolute;right:9px;opacity:.65;font-size:12px}
th.sortable.sort-asc::after{content:'↑';opacity:1}
th.sortable.sort-desc::after{content:'↓';opacity:1}

/* Module suivi de leçons iPad hors ligne */
.draw-canvas{width:100%;height:auto;min-height:220px;background:#fff;border:2px dashed #cad4e2;border-radius:16px;touch-action:none;margin-top:8px}
.canvas-tools{display:flex;gap:8px;margin:6px 0}.lesson-list{display:grid;gap:10px;margin-top:14px}.lesson-item{border:1px solid var(--line);border-radius:16px;padding:12px;background:#f8fbff}.lesson-item.pending{border-color:#ffc25b;background:#fff7e8}.lesson-item.synced{border-color:#a6efc3;background:#effff6}.portal-buttons form{display:inline}.lesson-card{border:1px solid var(--line);border-radius:16px;padding:14px;margin:12px 0;background:#f8fbff}.lesson-drawing{max-width:100%;border:1px solid var(--line);border-radius:12px;margin-top:10px;background:#fff}.lesson-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}.lesson-meta .pill{font-size:13px}
/* v17 - vrai module leçons hors ligne */
.lesson-layout{grid-template-columns:360px 1fr}.offline-students{display:grid;gap:8px;max-height:540px;overflow:auto;margin-top:12px}.student-offline{width:100%;text-align:left;border:1px solid var(--line);background:#f8fbff;border-radius:14px;padding:11px;cursor:pointer;color:var(--text)}.student-offline b{display:block}.student-offline span,.student-offline small{display:block;color:var(--muted);margin-top:3px}.student-offline.active{border-color:var(--orange);background:#fff4e5;box-shadow:0 0 0 2px #ff8a0030}.competence-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.competence-box{border:1px solid var(--line);background:#f9fbff;border-radius:16px;padding:12px}.competence-box h4{margin:0 0 8px}.competence-line{display:grid;grid-template-columns:1fr 130px;gap:8px;align-items:center;margin:8px 0}.competence-line label{font-weight:650;margin:0}.competence-line input{width:auto}.competence-line select{padding:8px;border-radius:10px;font-size:13px}.lesson-history{margin-top:12px}@media(max-width:950px){.lesson-layout{grid-template-columns:1fr}.competence-line{grid-template-columns:1fr}}
.error-choice{border-bottom:1px solid #e7eef8;padding:6px 0}.error-detail{margin:6px 0 4px 28px;width:calc(100% - 28px);font-size:.92em}.absent-box{margin:14px 0;padding:12px;border:1px solid #ffd1d1;border-radius:14px;background:#fff8f8}.pill-choice{display:inline-flex;align-items:center;gap:6px;margin:6px 8px 6px 0;padding:8px 12px;border-radius:999px;border:1px solid #d9e3f0;background:white}.template-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin:8px 0 10px}.template-grid button{border:1px solid #cbd8ea;background:#fff;border-radius:12px;padding:9px;font-weight:700;cursor:pointer}.template-grid button.active,.template-grid button:hover{background:#0d5aa7;color:white;border-color:#0d5aa7}.pill.danger{background:#ffe2e2;color:#b00020}.canvas-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.history details form .errors-grid{margin-top:10px}

.portal-buttons.big{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.portal-btn{border:0;border-radius:20px;padding:22px 18px;font-size:20px;font-weight:900;color:#fff;cursor:pointer;box-shadow:0 12px 25px #10284a25;transition:.15s transform,.15s filter}
.portal-btn:hover,.portal-btn.active{transform:translateY(-2px);filter:brightness(1.08)}
.portal-btn.blue1{background:linear-gradient(135deg,#0f4c81,#2d9cdb)}
.portal-btn.blue2{background:linear-gradient(135deg,#1565c0,#42a5f5)}
.portal-btn.blue3{background:linear-gradient(135deg,#1e3a8a,#60a5fa)}
.portal-tab{animation:fadeIn .15s ease-out}
@keyframes fadeIn{from{opacity:.4;transform:translateY(4px)}to{opacity:1;transform:none}}
.redtext{color:#b91c1c;background:#fff0f0;border-left:5px solid #ef4444;padding:10px;border-radius:10px}
.greentext{color:#15803d;background:#ecfff4;border-left:5px solid #22c55e;padding:10px;border-radius:10px}
@media(max-width:850px){.portal-buttons.big{grid-template-columns:1fr}.portal-btn{font-size:18px}}

/* v23 - corrections portail élève */
.student-portal .access-card{padding:26px 28px}
.student-portal .portal-buttons.big{display:grid !important;grid-template-columns:repeat(3,minmax(220px,1fr));gap:22px;margin-top:18px}
.student-portal button.portal-btn{appearance:none;-webkit-appearance:none;border:0;border-radius:26px;padding:30px 24px;min-height:118px;font-size:25px;font-weight:950;color:#fff;cursor:pointer;box-shadow:0 18px 34px #10284a2e;transition:.15s transform,.15s filter,.15s box-shadow;display:flex;align-items:center;justify-content:center;gap:14px;text-align:center;line-height:1.1}
.student-portal button.portal-btn span{display:inline-block}
.student-portal button.portal-btn:hover,.student-portal button.portal-btn.active{transform:translateY(-3px);filter:brightness(1.08);box-shadow:0 22px 42px #10284a38}
.student-portal button.portal-btn.blue1{background:linear-gradient(135deg,#5cc8ff,#1b8fe8)}
.student-portal button.portal-btn.blue2{background:linear-gradient(135deg,#2089e5,#0057b8)}
.student-portal button.portal-btn.blue3{background:linear-gradient(135deg,#174a9a,#082f6f)}
.progress-panel{background:#f7fbff;border:1px solid #dce6f3;border-radius:18px;padding:16px;margin:12px 0 18px}
.progress-panel h4{margin:0 0 10px;color:#10284a}
.progress-wrap{margin:10px 0 14px}.progress-title{font-weight:850;margin-bottom:6px;color:#10284a}.progress-bar{height:28px;border-radius:999px;background:linear-gradient(90deg,#fee2e2 0 33.33%,#ffedd5 33.33% 66.66%,#dcfce7 66.66% 100%);border:1px solid #d8e2ef;overflow:hidden;position:relative}.progress-bar span{height:100%;min-width:38px;border-radius:999px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:950;transition:width .2s}.progress-wrap.red .progress-bar span{background:linear-gradient(135deg,#ef4444,#b91c1c)}.progress-wrap.orange .progress-bar span{background:linear-gradient(135deg,#f59e0b,#d97706)}.progress-wrap.green .progress-bar span{background:linear-gradient(135deg,#22c55e,#15803d)}
.progress-details{border:1px solid #dce6f3;border-radius:16px;background:#fff;padding:12px;margin:12px 0}.progress-details summary{cursor:pointer;font-size:18px;font-weight:950;color:#10284a;display:flex;justify-content:space-between;gap:12px}.progress-details summary span{background:#eef3fb;border-radius:999px;padding:4px 10px;color:#164b86}.big-date{font-size:30px}.big-date:empty::before{content:'—'}
@media(max-width:900px){.student-portal .portal-buttons.big{grid-template-columns:1fr}.student-portal button.portal-btn{font-size:21px;min-height:92px}}

/* v24 - boutons portail et curseurs plus visibles */
.student-portal .access-card{padding:30px!important}.student-portal .portal-buttons.big{display:grid!important;grid-template-columns:repeat(3,minmax(240px,1fr))!important;gap:24px!important;margin-top:18px!important}.student-portal .portal-btn{appearance:none!important;-webkit-appearance:none!important;border:0!important;border-radius:28px!important;padding:32px 24px!important;min-height:125px!important;font-size:26px!important;font-weight:950!important;color:#fff!important;cursor:pointer!important;box-shadow:0 18px 36px rgba(16,40,74,.28)!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:16px!important;text-align:center!important;line-height:1.1!important}.student-portal .portal-btn.blue1{background:linear-gradient(135deg,#79d7ff,#1e9bf0)!important}.student-portal .portal-btn.blue2{background:linear-gradient(135deg,#2f9cff,#075fce)!important}.student-portal .portal-btn.blue3{background:linear-gradient(135deg,#1b5fb8,#082f6f)!important}.student-portal .progress-bar{height:34px!important}.student-portal .progress-details{box-shadow:0 8px 20px rgba(16,40,74,.08)!important;border-radius:20px!important}.progress-range{height:18px!important;touch-action:pan-y}.progress-range::-webkit-slider-thumb{-webkit-appearance:none!important;appearance:none!important;width:34px!important;height:34px!important;border-radius:999px!important;background:#0d5aa7!important;border:4px solid #fff!important;box-shadow:0 3px 12px #10284a55!important}.progress-range::-moz-range-thumb{width:34px!important;height:34px!important;border-radius:999px!important;background:#0d5aa7!important;border:4px solid #fff!important;box-shadow:0 3px 12px #10284a55!important}.slider-row{grid-template-columns:260px 1fr!important;gap:18px!important}.slider-row label{font-size:16px;font-weight:900}
@media(max-width:900px){.student-portal .portal-buttons.big{grid-template-columns:1fr!important}.student-portal .portal-btn{font-size:22px!important;min-height:98px!important}.slider-row{grid-template-columns:1fr!important}}


.local-sync-banner{font-weight:800;margin-bottom:14px}
.local-sync-banner .btn.small{padding:8px 12px;margin-left:10px;font-size:13px;border-radius:10px}
.pending-local{border:2px dashed #f59e0b;background:#fff8e6}

/* Mode application iPad / écran de démarrage */
.app-splash{position:fixed;inset:0;background:#fff;z-index:99999;display:flex;align-items:center;justify-content:center;transition:opacity .55s ease,visibility .55s ease}.app-splash.hidden{opacity:0;visibility:hidden}.splash-card{width:min(680px,88vw);background:#fff;border-radius:0;padding:28px;text-align:center;box-shadow:none}.splash-card img{width:min(520px,78vw);height:auto;display:block;margin:0 auto 28px}.splash-card p{font-weight:900;color:#10284a;margin:18px 0 0;font-size:18px}.splash-loader{height:10px;width:240px;max-width:64vw;margin:0 auto;border-radius:999px;background:#e8eef7;overflow:hidden}.splash-loader:before{content:"";display:block;height:100%;width:46%;border-radius:999px;background:linear-gradient(90deg,#ff9800,#0b5aa8);animation:splashMove 1s infinite ease-in-out}@keyframes splashMove{0%{transform:translateX(-110%)}100%{transform:translateX(240%)}}
@media (display-mode: standalone){body{padding-top:env(safe-area-inset-top)}}


/* Module SMS et examens théoriques */
.sms-dot{display:inline-block;width:16px;height:16px;border-radius:50%;vertical-align:middle;box-shadow:0 0 0 3px #00000012}.sms-dot.green{background:#22c55e}.sms-dot.red{background:#ef4444}.sms-dot.orange{background:#f59e0b}.sms-dot.grey{background:#94a3b8}.theory-portal{border:2px solid #f59e0b;background:#fff8e8;border-radius:18px;padding:16px;margin:12px 0 18px}.theory-portal.validated{border-color:#22c55e;background:#ecfff4}.green-text{color:#15803d}.sms-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.sms-stat{padding:16px;border-radius:16px;background:#f7faff;border:1px solid var(--line);font-size:18px}.sms-message{max-width:520px;white-space:normal;line-height:1.35}.phone-choice{min-width:190px}
.sms-dot.black{background:#111827}.order-input{width:68px;padding:8px}.notes-mini{min-width:180px;min-height:62px;padding:8px}.inline-session-form{display:flex;gap:7px;align-items:flex-start;flex-wrap:wrap}.theory-confirm-banner{position:sticky;top:0;z-index:20;font-size:18px}.errorbox{border:2px solid #cad4e2!important;background:#fff!important}.errorbox h4{font-size:19px!important;font-weight:950!important;border-bottom:1px solid #d7dfeb;padding-bottom:8px}.greentext{color:#15803d!important}.portal-buttons.big{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.portal-btn{padding:22px;border-radius:20px;text-decoration:none;text-align:center;font-weight:900;color:#fff}.blue1{background:#2196f3}.blue2{background:#1565c0}.blue3{background:#0d47a1}@media(max-width:800px){.portal-buttons.big{grid-template-columns:1fr}}

/* Lisibilité des bilans d’examen dans le portail élève */
.portal-error-group{border:1px solid #cbd5e1;border-radius:10px;margin:12px 0;overflow:hidden;background:#fff}.portal-error-title{font-weight:800;font-size:1.08rem;padding:9px 12px;background:#f1f5f9;border-bottom:1px solid #cbd5e1}.portal-error-group ul{margin:0;padding:10px 14px 10px 32px}.portal-error-group li{margin:5px 0}.searchbar{align-items:center}.searchbar .btn{flex:0 0 auto}

/* v33 - restauration complète de "Mes leçons de conduite" dans le portail élève */
.progress-summary-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:18px;align-items:end}.portal-competence-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px}.portal-competence-box{border:1px solid #d5e1ef;border-radius:18px;background:#fff;overflow:hidden}.portal-competence-head{display:flex;justify-content:space-between;gap:12px;align-items:center;background:linear-gradient(135deg,#1565c0,#0d4d99);color:#fff;padding:14px 16px;font-size:16px}.portal-competence-head span{background:#ffffff25;border:1px solid #ffffff45;border-radius:999px;padding:5px 10px;font-weight:950}.portal-skill-list{padding:10px 14px}.portal-skill-row{display:grid;grid-template-columns:34px 34px minmax(150px,1.1fr) minmax(160px,1.7fr) 64px;gap:9px;align-items:center;padding:10px 0;border-bottom:1px solid #edf1f6}.portal-skill-row:last-child{border-bottom:0}.portal-skill-number{width:30px;height:30px;border-radius:999px;background:#e8f2ff;color:#0d5aa7;display:flex;align-items:center;justify-content:center;font-weight:950}.portal-skill-icon{text-align:center;font-size:20px}.portal-skill-name{font-weight:850;color:#17304f;line-height:1.15}.portal-skill-track{height:13px;border-radius:999px;background:linear-gradient(90deg,#fca5a5 0 33.33%,#fdba74 33.33% 66.66%,#86efac 66.66% 100%);position:relative;border:1px solid #d6dee9}.portal-skill-fill{position:absolute;inset:0 auto 0 0;border-radius:999px;opacity:.55}.portal-skill-fill.level-0,.portal-skill-fill.level-1,.portal-skill-fill.level-2{background:#ef4444}.portal-skill-fill.level-3,.portal-skill-fill.level-4{background:#f59e0b}.portal-skill-fill.level-5{background:#22c55e}.portal-skill-knob{position:absolute;top:50%;transform:translateY(-50%);width:26px;height:26px;border-radius:999px;background:#0d5aa7;border:4px solid #fff;box-shadow:0 3px 9px #10284a55}.portal-skill-pct{font-weight:950;text-align:center;border-radius:9px;padding:7px 4px;color:#fff;font-size:13px}.portal-skill-pct.level-0,.portal-skill-pct.level-1,.portal-skill-pct.level-2{background:#ef4444}.portal-skill-pct.level-3,.portal-skill-pct.level-4{background:#f59e0b}.portal-skill-pct.level-5{background:#22c55e}.progress-legend{display:flex;gap:18px;align-items:center;flex-wrap:wrap;background:#eaf5ff;border-radius:13px;padding:12px 14px;margin-top:18px;color:#334155}.progress-legend span{display:flex;align-items:center;gap:6px}.legend-dot{width:12px;height:12px;border-radius:999px;display:inline-block}.legend-dot.red{background:#ef4444}.legend-dot.orange{background:#f59e0b}.legend-dot.green{background:#22c55e}.lesson-card{border:1px solid #dbe4ef;border-radius:16px;padding:13px 15px;background:#fbfdff;margin:11px 0}.lesson-card summary{cursor:pointer;font-size:17px;color:#10284a}.lesson-card[open]{background:#fff;box-shadow:0 8px 20px #10284a10}.lesson-meta{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.lesson-drawing{max-width:100%;height:auto;border:1px solid #dbe4ef;border-radius:14px;margin-top:10px}
@media(max-width:1000px){.progress-summary-grid,.portal-competence-grid{grid-template-columns:1fr}.portal-skill-row{grid-template-columns:30px 30px minmax(125px,1fr) minmax(120px,1.3fr) 58px}}
@media(max-width:650px){.portal-skill-row{grid-template-columns:30px 30px 1fr 58px}.portal-skill-track{grid-column:3/5;margin-top:4px}.portal-skill-name{font-size:14px}.portal-skill-pct{grid-column:4;grid-row:1}.progress-panel{padding:12px}.progress-legend{gap:10px;font-size:13px}}

/* V5 - présentation des bilans de leçon dans le portail élève */
.lesson-highlight{margin:14px 0;padding:14px 16px;border-radius:14px;border:1px solid #dbe4ef;line-height:1.45}.lesson-highlight b{display:inline-block;margin-bottom:5px;font-size:18px}.lesson-highlight.objective{background:#f7fbff;border-color:#cfe0f4;color:#10284a}.lesson-highlight.correction{background:#fff0f0;border-color:#ffcaca;border-left:6px solid #ef4444;color:#b91c1c}.lesson-highlight.assessment{background:#f6f8fb;border-color:#d8e0eb;color:#334155}.lesson-highlight.next{background:#ecfff4;border-color:#b7efcd;border-left:6px solid #22c55e;color:#15803d}


/* SMS non lus, conversation et pièces manquantes */
.nav-badge{display:inline-flex;min-width:20px;height:20px;align-items:center;justify-content:center;margin-left:5px;padding:0 6px;border-radius:999px;background:#ef4444;color:#fff;font-size:12px;font-weight:900}.home-actions{display:flex;gap:10px;flex-wrap:wrap}.unread-inline{margin-left:8px}.fold-panel>summary{cursor:pointer;font-weight:900;font-size:19px;display:flex;align-items:center;gap:10px}.fold-content{padding-top:16px}.sms-thread{display:flex;flex-direction:column;gap:10px;max-height:430px;overflow:auto;padding:12px;background:#f5f7fb;border-radius:16px;margin-bottom:16px}.sms-bubble{max-width:78%;padding:11px 14px;border-radius:16px;line-height:1.4}.sms-bubble.incoming{align-self:flex-start;background:#fff;border:1px solid #d9e1ec}.sms-bubble.outgoing{align-self:flex-end;background:#dff1ff;border:1px solid #b8daf5}.sms-bubble small{display:block;margin-top:6px;color:#64748b}.doc-group{margin:16px 0;padding:14px;border:1px solid #dbe4ef;border-radius:14px;background:#fbfdff}.doc-group .checkline{margin:8px 0}.doc-group[hidden]{display:none!important}

.template-vars{display:flex;flex-wrap:wrap;gap:8px}.template-vars code{background:#eef3f8;border:1px solid #d8e1ea;border-radius:7px;padding:6px 9px}.template-field{margin:18px 0}.template-field textarea{width:100%;min-height:120px;resize:vertical;font-family:inherit;line-height:1.45}.template-field input{width:100%}.sms-counter{margin-top:5px;text-align:right}

.sort-unread-form select{min-width:210px}
.danger-zone{border:2px solid #fecaca;background:#fff7f7}
.danger-zone h3{color:#991b1b;margin-top:0}

/* Planning moniteurs */
.planning-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.planning-toolbar form{margin:0}
.planning-day h2{margin:0 0 12px;text-transform:capitalize}
.planning-list{display:flex;flex-direction:column;gap:10px}
.planning-item{display:grid;grid-template-columns:90px minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px;border:1px solid #dbe4ef;border-radius:14px;background:#fff}
.planning-time{display:flex;flex-direction:column;font-size:1.05rem}
.planning-time strong{font-size:1.35rem;color:#102f57}
.planning-time span{color:#667085}
.planning-student{display:flex;flex-direction:column;min-width:0}
.planning-student strong{font-size:1.1rem}
.planning-student span,.planning-student small{color:#667085}
.planning-action{white-space:nowrap}
@media(max-width:700px){
  .planning-item{grid-template-columns:72px minmax(0,1fr)}
  .planning-action{grid-column:1/-1}
  .planning-action .btn{display:block;text-align:center;width:100%}
}

.planning-action .badge{display:block;margin-top:7px;white-space:normal}

.practical-failure-fields[hidden],.practical-success-info[hidden]{display:none!important}
#examens-pratiques>summary{font-size:1.25rem;padding:4px 0}
#examens-pratiques[open]>summary{margin-bottom:18px}

.practical-list-actions{position:sticky;bottom:0;background:#fff;padding:14px 0 4px;z-index:5;border-top:1px solid #dbe4ef}
#practical-session-list-form input[type=time]{min-width:125px}
#practical-session-list-form td small{display:block;margin-top:5px;color:#667085}


/* Accès rapide depuis la liste des élèves */
.student-list-actions{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.student-list-actions .btn{white-space:nowrap}

/* Planning : durée et créneaux libres */
.planning-item{
  grid-template-columns:90px 105px minmax(0,1fr) auto;
}
.planning-duration{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:54px;
  padding:8px 10px;
  border-radius:14px;
  background:#dbeafe;
  color:#174b8a;
  font-size:1.55rem;
  line-height:1;
  font-weight:900;
  white-space:nowrap;
  box-shadow:inset 0 0 0 2px #93c5fd;
}
.planning-duration.duration-two-hours{
  background:#dcfce7;
  color:#166534;
  box-shadow:inset 0 0 0 2px #86efac;
  font-size:1.8rem;
}
.planning-empty{
  background:#fff8d9;
  border:2px dashed #e6a700;
}
.planning-empty .planning-time strong,
.planning-empty .planning-student strong{
  color:#8a5700;
}
.planning-empty .planning-duration{
  background:#ffed9d;
  color:#7a4a00;
  box-shadow:inset 0 0 0 2px #f5c842;
}
.planning-empty-label{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:105px;
  padding:12px 17px;
  border-radius:12px;
  background:#f59e0b;
  color:#fff;
  font-size:1.45rem;
  font-weight:950;
  letter-spacing:.08em;
}
@media(max-width:850px){
  .planning-item{grid-template-columns:72px 92px minmax(0,1fr)}
  .planning-action{grid-column:1/-1}
}
@media(max-width:520px){
  .planning-item{grid-template-columns:70px minmax(0,1fr)}
  .planning-duration{grid-column:2;font-size:1.35rem}
  .planning-student{grid-column:1/-1}
  .planning-action{grid-column:1/-1}
}


/* Correctif liste élèves : colonnes compactes + actions toujours accessibles */
.sortable-table.compact-table{table-layout:auto;min-width:1060px}
.sortable-table.compact-table th:nth-child(1),.sortable-table.compact-table td:nth-child(1){width:230px;min-width:230px}
.sortable-table.compact-table th:nth-child(2),.sortable-table.compact-table td:nth-child(2){width:125px;min-width:125px;max-width:125px}
.sortable-table.compact-table th:nth-child(3),.sortable-table.compact-table td:nth-child(3){width:130px;min-width:130px}
.sortable-table.compact-table th:nth-child(4),.sortable-table.compact-table td:nth-child(4){width:115px;min-width:115px}
.sortable-table.compact-table th:nth-child(5),.sortable-table.compact-table td:nth-child(5){width:90px;min-width:90px}
.sortable-table.compact-table th:nth-child(6),.sortable-table.compact-table td:nth-child(6){width:135px;min-width:135px}
.sortable-table.compact-table th:nth-child(7),.sortable-table.compact-table td:nth-child(7){width:245px;min-width:245px}
.sortable-table.compact-table td:nth-child(2),.sortable-table.compact-table th:nth-child(2){text-align:center}
.student-list-actions{display:flex;gap:6px;flex-wrap:nowrap;align-items:center}
.student-list-actions .btn{padding:10px 12px;font-size:13px;white-space:nowrap}
@media(max-width:1200px){
 .sortable-table.compact-table{min-width:1030px}
 .student-list-actions .btn{padding:9px 10px;font-size:12px}
}

/* V32.19 — prochaines leçons plus lisibles */
.upcoming-lessons-list{display:grid;gap:10px}
.upcoming-lesson-item{padding:12px 14px;border:1px solid #bfdbfe;background:#eff6ff;border-radius:12px}
.upcoming-lesson-main{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.upcoming-lesson-time{font-size:1.08rem;font-weight:800;color:#0f3f77;margin-top:3px}
.lesson-duration-badge{display:inline-flex;align-items:center;justify-content:center;min-width:58px;padding:7px 11px;border-radius:999px;background:#0f67c7;color:#fff;font-size:1rem;font-weight:900;line-height:1;box-shadow:0 2px 6px rgba(15,103,199,.18);white-space:nowrap}
@media(max-width:560px){.upcoming-lesson-item{padding:12px}.lesson-duration-badge{min-width:54px;font-size:.95rem}}
