:root{--blue:#0b4fb3;--blue2:#073b86;--light:#f5f9ff;--white:#fff;--text:#17324d;--muted:#6b7a90;--green:#16a34a;--red:#dc2626;--border:#d9e6f7;--shadow:0 18px 45px rgba(11,79,179,.14);--radius:22px}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:linear-gradient(135deg,#eef6ff,#fff);color:var(--text)}a{text-decoration:none;color:inherit}.app{min-height:100vh}.topbar{height:74px;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 40px;position:sticky;top:0;z-index:10}.brand{display:flex;gap:14px;align-items:center;font-weight:800;color:var(--blue)}.brand img{width:46px;height:46px;object-fit:contain}.nav{display:flex;gap:12px;align-items:center}.nav a,.btn{border:0;border-radius:999px;padding:12px 18px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:8px}.nav a{color:var(--text)}.btn-primary{background:var(--blue);color:white;box-shadow:0 12px 25px rgba(11,79,179,.22)}.btn-light{background:#eef5ff;color:var(--blue)}.btn-danger{background:#fee2e2;color:#991b1b}.btn-success{background:#dcfce7;color:#166534}.hero{padding:70px 40px 40px;max-width:1180px;margin:auto;display:grid;grid-template-columns:1.1fr .9fr;gap:36px;align-items:center}.hero h1{font-size:48px;line-height:1.05;margin:0 0 16px;color:#062f6b}.hero p{font-size:18px;color:var(--muted);line-height:1.7}.hero-card,.card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:28px}.grid{display:grid;gap:20px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.menu-card{padding:24px;border-radius:20px;background:#fff;border:1px solid var(--border);box-shadow:0 10px 25px rgba(15,58,120,.08);transition:.2s}.menu-card:hover{transform:translateY(-3px);border-color:#9bc3ff}.menu-card .icon{font-size:34px}.layout{display:grid;grid-template-columns:280px 1fr;min-height:calc(100vh - 74px)}.sidebar{background:#063b86;color:white;padding:28px 20px}.sidebar h3{margin-top:0}.side-link{display:block;padding:14px 16px;border-radius:14px;margin-bottom:8px;color:#eaf3ff}.side-link.active,.side-link:hover{background:rgba(255,255,255,.16)}.content{padding:34px}.page-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.page-title h1{margin:0;color:#062f6b}.table-wrap{overflow:auto;border-radius:18px;border:1px solid var(--border);background:white}table{width:100%;border-collapse:collapse;background:white}th,td{padding:15px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}th{background:#eef6ff;color:#073b86;text-transform:uppercase;font-size:12px;letter-spacing:.04em}.badge{display:inline-flex;padding:6px 11px;border-radius:999px;font-size:12px;font-weight:800}.badge-green{background:#dcfce7;color:#166534}.badge-red{background:#fee2e2;color:#991b1b}.badge-blue{background:#dbeafe;color:#1d4ed8}.form{display:grid;gap:18px}.field label{font-weight:800;font-size:14px}.field input,.field select,.field textarea{width:100%;margin-top:8px;padding:14px 15px;border:1px solid var(--border);border-radius:14px;background:#fff;font-size:15px}.question{border:2px solid var(--red);border-radius:18px;padding:20px;background:white;margin-bottom:18px}.question.answered{border-color:var(--green);background:#fbfffc}.option{display:flex;gap:10px;align-items:center;padding:10px 0}.exam-submit{display:none}.exam-submit.visible{display:inline-flex}.result-head{border:2px solid #111;padding:24px;background:white;color:#111}.result-head h1{text-align:center;margin-top:0}.result-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:18px 0}.footer-credit{text-align:center;padding:28px}.footer-credit a{color:var(--blue);font-weight:900}.trainer-card{max-width:520px;margin:auto;background:white;border-radius:28px;box-shadow:var(--shadow);overflow:hidden;border:1px solid var(--border)}.trainer-card-header{background:linear-gradient(135deg,var(--blue),var(--blue2));color:white;padding:26px;text-align:center}.trainer-card-body{padding:28px;display:grid;grid-template-columns:130px 1fr;gap:22px}.photo{width:120px;height:120px;border-radius:20px;background:#e8f1ff;object-fit:cover}.qr{width:110px;height:110px;border:2px dashed #8ab8ff;border-radius:12px;display:grid;place-items:center;color:var(--blue);font-weight:800}.status-band{padding:12px;text-align:center;font-weight:900}.login-page{min-height:100vh;display:grid;place-items:center;padding:30px}.login-card{width:min(460px,100%);background:#fff;border-radius:28px;padding:34px;border:1px solid var(--border);box-shadow:var(--shadow)}.login-card img{width:78px;display:block;margin:0 auto 15px}.empty{padding:50px;text-align:center;color:var(--muted)}@media(max-width:850px){.hero{grid-template-columns:1fr;padding:40px 18px}.grid-2,.grid-3{grid-template-columns:1fr}.layout{grid-template-columns:1fr}.sidebar{display:none}.topbar{padding:0 16px}.nav{display:none}.hero h1{font-size:36px}.content{padding:22px}}


/* Footer professionnel */
.site-footer{margin-top:70px;background:linear-gradient(135deg,#062f6b,#0b4fb3);color:#fff;border-top:1px solid rgba(255,255,255,.15)}
.site-footer .footer-inner{max-width:1180px;margin:auto;padding:42px 28px;display:grid;grid-template-columns:1.2fr .8fr .8fr;gap:28px;align-items:start}
.site-footer h3,.site-footer h4{margin:0 0 12px;color:#fff}.site-footer p{margin:0;color:#dbeafe;line-height:1.7}.footer-links{display:grid;gap:10px}.footer-links a{color:#eaf3ff}.designer-btn{display:inline-flex;margin-top:16px;background:#fff;color:#0b4fb3;padding:12px 18px;border-radius:999px;font-weight:900;box-shadow:0 14px 30px rgba(0,0,0,.18)}.footer-bottom{text-align:center;padding:14px 20px;border-top:1px solid rgba(255,255,255,.15);color:#dbeafe;font-size:14px}.notes-list{display:grid;gap:16px;margin-top:22px}.note-card{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px;border-radius:20px;background:#fff;border:1px solid var(--border);box-shadow:0 10px 25px rgba(15,58,120,.08)}.note-card h3{margin:0 0 5px;color:#062f6b}.note-card p{margin:0;color:var(--muted)}.page-shell{max-width:1080px;margin:auto;padding:42px 22px}.subtitle{color:var(--muted);line-height:1.7}@media(max-width:850px){.site-footer .footer-inner{grid-template-columns:1fr}.note-card{align-items:flex-start;flex-direction:column}}

/* Modèle PDF des résultats conforme au document fourni */
.pdf-page-body{background:#eceff3;font-family:"Arial Narrow",Arial,sans-serif;color:#111;margin:0;padding:24px}.pdf-a4-result{width:794px;min-height:1123px;margin:0 auto;background:#fff;padding:42px 52px;box-shadow:0 10px 35px rgba(0,0,0,.12)}.pdf-result-header{display:flex;align-items:center;gap:14px;margin-bottom:34px}.pdf-result-header img{width:90px;height:90px;object-fit:contain}.pdf-small-title{font-size:25px;line-height:1.05;color:#073b86;letter-spacing:-.5px}.pdf-big-title{font-size:28px;line-height:1.05;font-weight:900;color:#073b86;letter-spacing:-.6px}.pdf-result-title{text-align:center;font-size:25px;margin:18px 0 28px;text-decoration:underline;font-weight:900}.pdf-result-info{font-size:17px;line-height:1.75;margin:0 0 16px}.pdf-result-info p{margin:0 0 8px}.pdf-result-info span{display:inline-block;min-width:230px}.pdf-result-table{width:100%;border-collapse:collapse;font-size:15px;table-layout:fixed}.pdf-result-table th,.pdf-result-table td{border:1px solid #777;padding:4px 6px;height:24px;text-align:left;white-space:normal}.pdf-result-table th{text-align:center;font-weight:900;background:#fff;color:#111;font-size:16px;border-bottom:4px solid #555}.pdf-result-table .col-num{width:55px}.pdf-result-table .col-points{width:170px}.pdf-result-table .col-decision{width:120px}.pdf-actions{text-align:center;margin:22px 0}@page{size:A4;margin:0}@media print{body.pdf-page-body{background:white;padding:0}.pdf-a4-result{box-shadow:none;width:210mm;min-height:297mm;margin:0;padding:16mm 14mm}.no-print,.pdf-actions{display:none!important}}


/* Page Créer / Modifier un examen - interface personnalisée */
.exam-builder-hero{background:linear-gradient(135deg,#073b86,#0b4fb3);color:white;border-radius:26px;padding:30px;display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;box-shadow:var(--shadow);margin-bottom:24px}.exam-builder-hero h2{font-size:30px;margin:14px 0 10px}.exam-builder-hero p{color:#dbeafe;line-height:1.7;margin:0}.exam-level-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.exam-level-summary div{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.24);border-radius:18px;padding:18px;text-align:center}.exam-level-summary strong{display:block;font-size:28px}.exam-level-summary span{font-size:13px;color:#dbeafe}.exam-control-card h2,.exam-editor-grid h2{margin-top:0;color:#062f6b}.level-pills{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}.level-pill{border:1px solid var(--border);background:#fff;color:var(--blue);border-radius:999px;padding:12px 18px;font-weight:900;cursor:pointer}.level-pill.active,.level-pill:hover{background:var(--blue);color:#fff;box-shadow:0 10px 22px rgba(11,79,179,.22)}.exam-status-line{display:flex;gap:16px;flex-wrap:wrap;align-items:center;color:var(--muted);border-top:1px solid var(--border);padding-top:18px}.exam-editor-grid{margin:24px 0}.assertion-list{display:grid;gap:14px}.assertion-item{border:1px solid var(--border);border-radius:18px;padding:16px;background:#fbfdff}.muted-assertion{opacity:.78}.checkline{display:flex;gap:8px;align-items:center;font-weight:800;color:var(--blue);margin-top:10px}.form-actions{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.question-admin-list{display:grid;gap:12px}.question-admin-item{border:1px solid var(--border);border-radius:18px;padding:16px;background:#fff;display:grid;gap:12px}.question-admin-item.active{border-color:#8ab8ff;background:#f4f9ff}.question-admin-item span{display:block;color:var(--blue);font-size:12px;font-weight:900;text-transform:uppercase;margin-bottom:5px}.question-admin-item strong{color:#17324d}.question-actions{display:flex;gap:8px}.question-actions button{border:0;border-radius:999px;padding:8px 12px;background:#eef5ff;color:var(--blue);font-weight:800;cursor:pointer}.compact-title{margin-bottom:12px}.preview-question-box{border:2px solid var(--green);border-radius:20px;padding:20px;background:#fbfffc}.preview-question-box h3{margin-top:0;color:#166534}@media(max-width:850px){.exam-builder-hero{grid-template-columns:1fr}.exam-level-summary{grid-template-columns:1fr}.form-actions{display:grid}.form-actions .btn{justify-content:center}}


/* PDF RESULTAT - version corrigée proche du modèle fourni */
.pdf-page-body{background:#f3f4f6;font-family:"Arial Narrow",Arial,sans-serif;color:#111;margin:0;padding:18px}
.pdf-a4-result{box-sizing:border-box;width:794px;min-height:1123px;margin:0 auto;background:#fff;padding:44px 54px;box-shadow:0 10px 35px rgba(0,0,0,.12)}
.pdf-result-header-simple{margin:0 0 42px 0;text-align:left}
.pdf-result-header-simple img{width:365px;height:auto;display:block}
.pdf-result-title{text-align:center;font-size:25px;line-height:1.1;margin:0 0 28px;text-decoration:underline;font-weight:900;letter-spacing:-.2px}
.pdf-result-info{font-size:17px;line-height:1.55;margin:0 0 16px}
.pdf-result-info p{margin:0 0 12px}
.pdf-result-info span{display:inline-block;min-width:235px}
.pdf-result-table{width:100%;border-collapse:collapse;font-size:14px;table-layout:fixed;margin-top:4px}
.pdf-result-table th,.pdf-result-table td{border:1px solid #8b8b8b;padding:2px 5px;height:21px;line-height:1.05;text-align:left;vertical-align:middle;white-space:normal}
.pdf-result-table th{text-align:center;font-weight:900;background:#fff;color:#111;font-size:15px;border-bottom:4px solid #5d5d5d;height:23px;letter-spacing:.2px}
.pdf-result-table .col-num{width:46px}.pdf-result-table .col-points{width:160px}.pdf-result-table .col-decision{width:120px}
.pdf-actions{text-align:center;margin:18px 0}
@page{size:A4;margin:0}
@media print{body.pdf-page-body{background:#fff;padding:0}.pdf-a4-result{box-shadow:none;width:210mm;height:297mm;min-height:297mm;margin:0;padding:14mm 14mm 12mm 14mm}.pdf-result-header-simple{margin-bottom:28mm}.pdf-result-header-simple img{width:80mm}.pdf-result-title{font-size:18pt;margin-bottom:10mm}.pdf-result-info{font-size:12pt;line-height:1.45;margin-bottom:5mm}.pdf-result-info p{margin-bottom:4mm}.pdf-result-table{font-size:10pt}.pdf-result-table th,.pdf-result-table td{height:5.2mm;padding:0.6mm 1.5mm}.pdf-result-table th{font-size:10.5pt;height:5.8mm;border-bottom:1.2mm solid #555}.no-print,.pdf-actions{display:none!important}}

/* Outil de recadrage photo formateur */
.subtitle{margin:.45rem 0 0;color:var(--muted);line-height:1.55}.form-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:4px}.field-help{margin:8px 0 0;color:var(--muted);font-size:13px;line-height:1.45}.field-photo-crop{grid-column:span 2}.photo-input-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.photo-crop-picker{display:flex;gap:16px;align-items:center;margin-top:8px;flex-wrap:wrap}.photo-crop-preview{width:86px;height:96px;border-radius:18px;border:4px solid #fff;box-shadow:0 10px 24px rgba(15,58,120,.18);background:#eef5ff;display:grid;place-items:center;text-align:center;color:var(--muted);font-size:11px;font-weight:800;overflow:hidden;outline:1px solid var(--border)}.photo-crop-preview img{width:100%;height:100%;object-fit:cover;display:none}.photo-crop-preview.has-photo img{display:block}.modal-open{overflow:hidden}.crop-modal{position:fixed;inset:0;z-index:1000;background:rgba(4,26,55,.72);display:grid;place-items:center;padding:18px}.crop-panel{width:min(720px,100%);background:#fff;border-radius:28px;padding:22px;border:1px solid var(--border);box-shadow:0 30px 90px rgba(0,0,0,.35)}.crop-panel-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:16px}.crop-panel-head h2{margin:0;color:#062f6b}.crop-panel-head p{margin:6px 0 0;color:var(--muted);line-height:1.55}.crop-close{width:42px;height:42px;border:0;border-radius:50%;background:#eef5ff;color:var(--blue);font-size:28px;line-height:1;cursor:pointer;font-weight:800}.crop-stage{height:min(62vh,520px);min-height:360px;background:#0c1725;border-radius:22px;position:relative;overflow:hidden;touch-action:none;cursor:grab;user-select:none}.crop-stage.dragging{cursor:grabbing}.crop-stage img{position:absolute;left:0;top:0;max-width:none;transform-origin:0 0;will-change:transform;user-select:none;pointer-events:none}.crop-frame{position:absolute;border:4px solid #fff;border-radius:26px;box-shadow:0 0 0 1px rgba(0,0,0,.18),0 12px 35px rgba(0,0,0,.25);z-index:5;pointer-events:none}.crop-shade{position:absolute;background:rgba(0,0,0,.45);z-index:4;pointer-events:none}.crop-controls{display:grid;grid-template-columns:70px 1fr;gap:12px;align-items:center;margin-top:16px}.crop-controls label{font-weight:900;color:#062f6b}.crop-controls input{width:100%;accent-color:var(--blue)}.crop-actions{display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin-top:18px}@media(max-width:850px){.field-photo-crop{grid-column:span 1}.crop-stage{min-height:330px}.crop-panel{padding:16px;border-radius:22px}.crop-panel-head{align-items:flex-start}.crop-panel-head p{font-size:14px}}

/* Photo formateur : crop tool type photo de profil */
.photo-profile-control{display:flex;gap:18px;align-items:center;margin-top:8px;flex-wrap:wrap}.photo-profile-preview{width:110px;height:118px;border:5px solid #fff;border-radius:24px;background:#eef5ff;box-shadow:0 12px 28px rgba(15,58,120,.18);outline:1px solid var(--border);display:grid;place-items:center;text-align:center;color:var(--muted);font-size:12px;font-weight:900;line-height:1.25;overflow:hidden;cursor:pointer;padding:0}.photo-profile-preview img{width:100%;height:100%;object-fit:cover;display:none}.photo-profile-preview.has-photo img{display:block}.photo-profile-preview.has-photo span{display:none}.photo-profile-preview:hover{outline:2px solid #8ab8ff}.photo-profile-actions{display:grid;gap:10px;align-items:start}.photo-profile-actions .btn{width:max-content}.crop-stage:after{content:"Ajuste la photo dans le cadre";position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:6;background:rgba(255,255,255,.92);color:#062f6b;font-size:12px;font-weight:900;padding:7px 12px;border-radius:999px;pointer-events:none}.crop-frame{background:rgba(255,255,255,.05)}
.crop-frame:before,.crop-frame:after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:22px}.crop-frame:before{background:linear-gradient(90deg,transparent 33.333%,rgba(255,255,255,.55) 33.333%,rgba(255,255,255,.55) calc(33.333% + 1px),transparent calc(33.333% + 1px),transparent 66.666%,rgba(255,255,255,.55) 66.666%,rgba(255,255,255,.55) calc(66.666% + 1px),transparent calc(66.666% + 1px)),linear-gradient(180deg,transparent 33.333%,rgba(255,255,255,.55) 33.333%,rgba(255,255,255,.55) calc(33.333% + 1px),transparent calc(33.333% + 1px),transparent 66.666%,rgba(255,255,255,.55) 66.666%,rgba(255,255,255,.55) calc(66.666% + 1px),transparent calc(66.666% + 1px))}.crop-frame:after{box-shadow:inset 0 0 0 1px rgba(255,255,255,.72)}
@media(max-width:850px){.photo-profile-control{align-items:flex-start}.photo-profile-actions .btn{width:100%;justify-content:center}.photo-profile-preview{width:104px;height:112px}}

/* Page publique d'authentification de carte formateur */
.card-auth-page{max-width:930px}.card-auth-head{text-align:center;margin-bottom:24px}.card-auth-head h1{font-size:38px;margin:14px 0 10px;color:#062f6b}.trainer-auth-card{background:#fff;border:1px solid var(--border);border-radius:28px;box-shadow:var(--shadow);overflow:hidden;margin:22px auto;max-width:760px}.auth-status-band{padding:14px 18px;text-align:center;font-weight:950;text-transform:uppercase;letter-spacing:.06em;color:#fff}.auth-status-band.is-active{background:linear-gradient(135deg,#16a34a,#15803d)}.auth-status-band.is-suspended{background:linear-gradient(135deg,#dc2626,#991b1b)}.auth-card-body{display:grid;grid-template-columns:150px 1fr;gap:26px;align-items:center;padding:30px}.auth-photo{width:150px;height:170px;border-radius:22px;border:6px solid #fff;box-shadow:0 12px 30px rgba(15,58,120,.18);outline:1px solid var(--border)}.auth-info h2{font-size:34px;margin:0 0 6px;color:#062f6b}.auth-role{margin:0 0 18px;color:var(--blue);font-weight:950;letter-spacing:.2em}.auth-list{display:grid;gap:10px}.auth-list p{margin:0;padding:12px 14px;border:1px solid var(--border);background:#f8fbff;border-radius:14px}.auth-help-card{max-width:760px;margin:22px auto}.auth-help-card h2{margin-top:0;color:#062f6b}@media(max-width:720px){.auth-card-body{grid-template-columns:1fr;text-align:center}.auth-photo{margin:auto}.auth-info h2{font-size:28px}.card-auth-head h1{font-size:30px}}

/* Correctif important : le crop tool ne doit jamais s'afficher au chargement de la page.
   Il s'ouvre uniquement après sélection d'une photo dans le champ Photo du formateur. */
[hidden] { display: none !important; }
.crop-modal[hidden] { display: none !important; }
.crop-modal:not([hidden]) { display: grid; }

/* Export Excel : bloc d’informations utilisé seulement pour composer le classeur. */
.export-info-only {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.excel-info-row {
  font-weight: 500;
}

.excel-info-row .excel-label {
  font-weight: 800;
  color: var(--primary, #073267);
}


/* Surveillance de la page d’examen : arrêt automatique pour le candidat en cas de sortie */
.exam-live-page{max-width:980px;margin:auto}.exam-security-alert{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:18px;padding:15px 18px;margin:0 0 20px;font-weight:800;line-height:1.55}.exam-stopped-panel{background:#fff;border:1px solid #fecaca;border-radius:24px;box-shadow:0 20px 55px rgba(220,38,38,.16);padding:30px;text-align:center;margin:0 0 22px}.exam-stopped-panel[hidden]{display:none!important}.exam-stopped-icon{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;margin:0 auto 14px;background:#fee2e2;color:#991b1b;font-size:34px;font-weight:950}.exam-stopped-panel h2{margin:0 0 10px;color:#991b1b;font-size:30px}.exam-stopped-panel p{max-width:680px;margin:0 auto 18px;color:#6b1d1d;line-height:1.65;font-weight:700}.exam-stopped-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.exam-disabled{opacity:.42;filter:grayscale(.35);pointer-events:none;user-select:none}.question input:disabled{cursor:not-allowed}.exam-submit[aria-disabled="true"]{display:none!important}@media(max-width:720px){.exam-security-alert{font-size:14px}.exam-stopped-panel{padding:22px}.exam-stopped-panel h2{font-size:24px}.exam-stopped-actions .btn{width:100%;justify-content:center}}


/* Menu profil session */
.profile-menu{position:relative;display:inline-flex;align-items:center;margin-left:10px}.profile-menu summary{list-style:none}.profile-menu summary::-webkit-details-marker{display:none}.profile-toggle{border:1px solid var(--border);border-radius:999px;background:#eef5ff;color:var(--blue);padding:8px 12px;display:inline-flex;align-items:center;gap:9px;font-weight:900;cursor:pointer}.profile-avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff;font-size:13px;font-weight:950}.profile-name{max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-dropdown{position:absolute;right:0;top:calc(100% + 10px);width:230px;background:#fff;border:1px solid var(--border);border-radius:18px;box-shadow:0 20px 50px rgba(15,58,120,.18);padding:10px;z-index:100}.profile-dropdown a{display:block;padding:12px 14px;border-radius:13px;font-weight:800;color:var(--text)}.profile-dropdown a:hover{background:#eef5ff;color:var(--blue)}.profile-dropdown .profile-logout{color:#991b1b}.profile-dropdown .profile-logout:hover{background:#fee2e2;color:#991b1b}.topbar-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.profile-info-line{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--border);padding:13px 0}.profile-info-line strong{color:#062f6b}@media(max-width:850px){.profile-name{display:none}.profile-dropdown{right:-6px;width:220px}.profile-toggle{padding:7px 9px}.profile-avatar{width:28px;height:28px}}@media print{.profile-menu{display:none!important}}


/* ===== Menu mobile latéral (admin / formateur / étudiant) ===== */
.mobile-menu-toggle{display:none;border:0;background:var(--blue);color:#fff;border-radius:14px;padding:10px 13px;font-size:22px;font-weight:900;line-height:1;box-shadow:0 10px 22px rgba(11,79,179,.22);cursor:pointer;align-items:center;justify-content:center;min-width:46px;height:44px}
.mobile-menu-toggle span{display:block;margin-top:-2px}.mobile-menu-backdrop{display:none}
@media(max-width:850px){
  .topbar{height:70px;gap:10px;position:sticky;top:0;z-index:1000}.brand{min-width:0;gap:8px}.brand span{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand img{width:38px;height:38px}
  .mobile-menu-toggle{display:inline-flex;order:-1;flex:0 0 auto}
  .layout{display:block;min-height:calc(100vh - 70px)}
  .layout .sidebar{display:block;position:fixed;top:0;left:0;width:min(84vw,330px);height:100vh;z-index:1200;overflow-y:auto;padding:24px 18px;background:#063b86;box-shadow:25px 0 50px rgba(0,0,0,.28);transform:translateX(-105%);transition:transform .25s ease;border-radius:0 22px 22px 0}
  body.menu-open .layout .sidebar{transform:translateX(0)}
  body.menu-open{overflow:hidden}
  .mobile-menu-backdrop{display:block;position:fixed;inset:0;background:rgba(2,18,45,.45);z-index:1100;opacity:0;pointer-events:none;transition:opacity .2s ease}
  body.menu-open .mobile-menu-backdrop{opacity:1;pointer-events:auto}
  .sidebar h3{padding-right:45px;font-size:22px;margin-bottom:20px}.side-link{font-size:17px;padding:14px 16px;margin-bottom:10px;background:rgba(255,255,255,.05)}
  .content{padding:24px 16px 40px}.page-title{align-items:flex-start;gap:12px;flex-direction:column}.table-wrap{border-radius:16px}
}

.site-footer .footer-bottom a{color:inherit;font-weight:400;text-decoration:none;}
.site-footer .footer-bottom a:hover{text-decoration:underline;}

/* Footer Luvta2026 normal */
.site-footer .footer-bottom, .site-footer .footer-bottom a{font-weight:400!important;}
.site-footer .footer-bottom a{color:inherit!important;text-decoration:none!important;}
.site-footer .footer-bottom a:hover{text-decoration:underline!important;}


/* Sidebar mobile constant full menu */
@media(max-width:850px){
  .layout .sidebar{width:min(88vw,300px)!important;max-width:300px!important;padding:20px 14px!important;border-radius:0 22px 22px 0!important;}
  .sidebar h3{font-size:18px!important;margin:0 0 14px!important;color:#fff!important;}
  .side-link{display:block!important;font-size:14px!important;line-height:1.25!important;padding:12px 13px!important;margin-bottom:8px!important;border-radius:12px!important;}
  .content{min-width:0!important;width:100%!important;}
}

/* Formulaire Documents PDF harmonisé */
.fc-form-card{background:#fff;border:1px solid var(--border);border-radius:28px;box-shadow:var(--shadow);padding:30px;margin:24px 0}.fc-form-card-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:22px}.fc-form-card-head h2{margin:10px 0 8px;color:#062f6b;font-size:30px}.fc-form-card-head p{margin:0;color:var(--muted);line-height:1.6}.fc-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 20px}.fc-form-grid .field{display:flex;flex-direction:column}.fc-form-grid .field label{font-weight:900;color:#062f6b;margin-bottom:8px}.fc-form-grid input,.fc-form-grid select,.fc-form-grid textarea{width:100%;border:1px solid var(--border);border-radius:16px;background:#f8fbff;padding:15px 16px;font-size:15px;color:var(--text);outline:none;transition:.18s}.fc-form-grid textarea{min-height:112px;resize:vertical}.fc-form-grid input:focus,.fc-form-grid select:focus,.fc-form-grid textarea:focus{background:#fff;border-color:#8ab8ff;box-shadow:0 0 0 4px rgba(11,79,179,.08)}.fc-form-grid input[type=file]{background:#fff;border-style:dashed}.fc-form-grid .span-2{grid-column:1 / -1}.switch-line{display:flex;align-items:center;gap:12px;background:#eef5ff;border:1px solid var(--border);border-radius:16px;padding:15px 16px;font-weight:900;color:#062f6b}.switch-line input{width:20px;height:20px;accent-color:var(--blue)}.form-actions{display:flex;gap:12px;justify-content:flex-start;align-items:center}.document-list-card{margin-top:30px}.form-alerts{margin:12px 0 18px;display:flex;gap:10px;flex-wrap:wrap}
@media(max-width:850px){.fc-form-card{padding:22px 16px;border-radius:24px}.fc-form-card-head h2{font-size:25px}.fc-form-grid{grid-template-columns:1fr}.form-actions .btn{width:100%;justify-content:center}.switch-line{align-items:flex-start}.document-upload-card{margin-top:14px}}

/* Correction robuste du menu mobile */
@media(max-width:850px){
  .mobile-menu-toggle{display:inline-flex!important;position:relative!important;z-index:1401!important;}
  .layout .sidebar{display:block!important;position:fixed!important;top:0!important;left:0!important;width:min(86vw,315px)!important;max-width:315px!important;height:100dvh!important;z-index:1400!important;overflow-y:auto!important;padding:22px 15px!important;background:#063b86!important;box-shadow:26px 0 55px rgba(0,0,0,.32)!important;transform:translateX(-110%)!important;transition:transform .25s ease!important;border-radius:0 24px 24px 0!important;}
  body.menu-open .layout .sidebar{transform:translateX(0)!important;}
  .mobile-menu-backdrop{display:block!important;position:fixed!important;inset:0!important;background:rgba(2,18,45,.48)!important;z-index:1300!important;opacity:0;pointer-events:none;transition:opacity .2s ease;}
  body.menu-open .mobile-menu-backdrop{opacity:1!important;pointer-events:auto!important;}
  body.menu-open{overflow:hidden!important;}
}

/* Footer : liens normaux, sans gras */
.site-footer .footer-bottom,
.site-footer .footer-bottom a{font-weight:400!important;color:#dbeafe!important;text-decoration:none!important;}
.site-footer .footer-bottom a:hover{text-decoration:underline!important;}

/* Vidéo d’accueil étudiant */
.student-intro-video{
  width:100%;
  max-width:760px;
  margin:22px auto 0;
  aspect-ratio:16/9;
  border-radius:22px;
  overflow:hidden;
  box-shadow:0 24px 50px rgba(0,44,92,.14);
  background:#102b57;
}
.student-intro-video iframe{
  width:100%;
  height:100%;
  display:block;
  border:0;
}


/* Fix final menu mobile : ouverture garantie sur toutes les pages */
@media(max-width:850px){
  .mobile-menu-toggle{display:inline-flex!important;position:relative!important;z-index:2001!important;}
  aside.sidebar,.layout .sidebar{display:block!important;position:fixed!important;top:0!important;left:0!important;width:min(86vw,315px)!important;max-width:315px!important;height:100dvh!important;z-index:2000!important;overflow-y:auto!important;padding:22px 15px!important;background:#063b86!important;box-shadow:26px 0 55px rgba(0,0,0,.32)!important;transform:translateX(-110%)!important;transition:transform .25s ease!important;border-radius:0 24px 24px 0!important;}
  body.menu-open aside.sidebar,body.menu-open .layout .sidebar{transform:translateX(0)!important;}
  .mobile-menu-backdrop{display:block!important;position:fixed!important;inset:0!important;background:rgba(2,18,45,.50)!important;z-index:1990!important;opacity:0;pointer-events:none;transition:opacity .2s ease;}
  body.menu-open .mobile-menu-backdrop{opacity:1!important;pointer-events:auto!important;}
  body.menu-open{overflow:hidden!important;}
}
/* Footer : Église La Compassion et Luvta2026 identiques, sans gras */
.site-footer .footer-bottom,.site-footer .footer-bottom a{font-weight:400!important;color:#dbeafe!important;text-decoration:none!important;}
.site-footer .footer-bottom a:hover{text-decoration:underline!important;}

/* Correctif final menu mobile : fonctionnement sans dépendre uniquement du JavaScript */
.mobile-menu-state{position:absolute!important;left:-9999px!important;opacity:0!important;pointer-events:none!important}
@media(max-width:850px){
  .mobile-menu-toggle{display:inline-flex!important;position:relative!important;z-index:3001!important;cursor:pointer!important;user-select:none!important;touch-action:manipulation!important}
  #fc-menu-state:checked ~ .layout .sidebar,
  #fc-menu-state:checked ~ aside.sidebar,
  body.menu-open .layout .sidebar,
  body.menu-open aside.sidebar{transform:translateX(0)!important;visibility:visible!important;opacity:1!important;}
  #fc-menu-state:checked ~ .mobile-menu-backdrop,
  body.menu-open .mobile-menu-backdrop{display:block!important;opacity:1!important;pointer-events:auto!important;}
  #fc-menu-state:checked ~ .layout .sidebar .side-link{pointer-events:auto!important;}
  .mobile-menu-backdrop{cursor:pointer!important;}
}


/* ==========================================================
   Correctif final : inscription étudiant large + menu mobile
   ========================================================== */
.auth-layout-clean{
  display:block!important;
  grid-template-columns:1fr!important;
  min-height:calc(100vh - 74px)!important;
  width:100%!important;
}
.auth-layout-clean .content{
  width:100%!important;
  max-width:1280px!important;
  margin:0 auto!important;
  padding:34px!important;
}
.student-register-page .page-title{
  max-width:1220px!important;
}
.student-register-card{
  max-width:1220px!important;
  margin:0 auto!important;
  border-radius:28px!important;
  padding:28px!important;
}
.student-register-card .grid-2{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:20px 24px!important;
}
.student-register-card .field label{
  display:block!important;
  font-weight:900!important;
  color:#062f6b!important;
  margin-bottom:8px!important;
}
.student-register-card .field input,
.student-register-card .field select,
.student-register-card .field textarea{
  width:100%!important;
  margin-top:0!important;
  padding:15px 16px!important;
  border-radius:16px!important;
  background:#fff!important;
  border:1px solid var(--border)!important;
  font-size:15px!important;
}
.student-register-card .field input:focus,
.student-register-card .field select:focus,
.student-register-card .field textarea:focus{
  outline:none!important;
  border-color:#8ab8ff!important;
  box-shadow:0 0 0 4px rgba(11,79,179,.08)!important;
}
.student-register-card textarea{min-height:112px!important;resize:vertical!important;}
.student-register-actions{margin-top:8px!important;}

@media(max-width:850px){
  .auth-layout-clean .content{padding:22px 16px 40px!important;}
  .student-register-page .page-title{gap:14px!important;}
  .student-register-page .page-title h1{font-size:28px!important;line-height:1.1!important;}
  .student-register-card{padding:20px 16px!important;border-radius:24px!important;}
  .student-register-card .grid-2{grid-template-columns:1fr!important;gap:16px!important;}
  .student-register-card .field[style*="grid-column"]{grid-column:auto!important;}
  .student-register-actions .btn{width:100%!important;justify-content:center!important;}
}

/* Menu mobile stable : le checkbox fonctionne même si JS échoue */
.mobile-menu-state{position:absolute!important;left:-9999px!important;opacity:0!important;pointer-events:none!important;}
@media(max-width:850px){
  .mobile-menu-toggle{display:inline-flex!important;position:relative!important;z-index:4001!important;cursor:pointer!important;user-select:none!important;touch-action:manipulation!important;}
  aside.sidebar,.layout .sidebar{
    display:block!important;position:fixed!important;top:0!important;left:0!important;
    width:min(86vw,315px)!important;max-width:315px!important;height:100dvh!important;
    z-index:4000!important;overflow-y:auto!important;padding:22px 15px!important;
    background:#063b86!important;box-shadow:26px 0 55px rgba(0,0,0,.32)!important;
    transform:translateX(-110%)!important;transition:transform .25s ease!important;
    border-radius:0 24px 24px 0!important;visibility:visible!important;opacity:1!important;
  }
  #fc-menu-state:checked ~ .layout .sidebar,
  body.menu-open .layout .sidebar,
  body.menu-open aside.sidebar{transform:translateX(0)!important;}
  .mobile-menu-backdrop{display:block!important;position:fixed!important;inset:0!important;background:rgba(2,18,45,.52)!important;z-index:3990!important;opacity:0!important;pointer-events:none!important;transition:opacity .2s ease!important;}
  #fc-menu-state:checked ~ .mobile-menu-backdrop,
  body.menu-open .mobile-menu-backdrop{opacity:1!important;pointer-events:auto!important;}
}


/* =========================================================
   TABLEAUX RESPONSIVES STABLES
   - Le tableau reste dans un div scrollable
   - L'entête du tableau reste figé pendant le défilement
   - Empêche les tableaux de sortir de l'écran sur mobile
   ========================================================= */
.table-wrap,
.fc-table-scroll{
  width:100%!important;
  max-width:100%!important;
  overflow:auto!important;
  -webkit-overflow-scrolling:touch!important;
  border-radius:18px!important;
  border:1px solid var(--border)!important;
  background:#fff!important;
  box-shadow:0 12px 30px rgba(11,79,179,.08)!important;
  max-height:min(68vh,720px)!important;
  position:relative!important;
}
.table-wrap table,
.fc-table-scroll table{
  width:100%!important;
  min-width:760px!important;
  border-collapse:separate!important;
  border-spacing:0!important;
  margin:0!important;
  background:#fff!important;
}
.table-wrap thead th,
.fc-table-scroll thead th,
.table-wrap tr:first-child th,
.fc-table-scroll tr:first-child th{
  position:sticky!important;
  top:0!important;
  z-index:5!important;
  background:#eef6ff!important;
  box-shadow:0 1px 0 var(--border)!important;
}
.table-wrap th,
.table-wrap td,
.fc-table-scroll th,
.fc-table-scroll td{
  white-space:nowrap!important;
  vertical-align:middle!important;
}
.table-wrap td:last-child,
.fc-table-scroll td:last-child{
  min-width:160px!important;
}
.fc-table-hint{
  display:none;
  font-size:12px;
  color:#6b7a90;
  margin:8px 0 0;
}
@media(max-width:850px){
  .table-wrap,
  .fc-table-scroll{
    border-radius:16px!important;
    max-height:58vh!important;
    margin-top:8px!important;
  }
  .table-wrap table,
  .fc-table-scroll table{
    min-width:760px!important;
  }
  .fc-table-hint{display:block!important;}
  .content .card:has(.fc-table-scroll),
  .content .card:has(.table-wrap){padding:14px!important;}
}
@media print{
  .table-wrap,
  .fc-table-scroll{
    overflow:visible!important;
    max-height:none!important;
    box-shadow:none!important;
  }
  .table-wrap table,
  .fc-table-scroll table{
    min-width:0!important;
  }
  .table-wrap thead th,
  .fc-table-scroll thead th,
  .table-wrap tr:first-child th,
  .fc-table-scroll tr:first-child th{
    position:static!important;
  }
  .fc-table-hint{display:none!important;}
}

/* STYLE GLOBAL DES CHAMPS — encadrement doux comme les formulaires principaux */
input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="range"]),
select,
textarea {
  width: 100%;
  border: 1px solid var(--border) !important;
  border-radius: 16px !important;
  background: #fff !important;
  padding: 15px 18px !important;
  font-size: 15px !important;
  color: var(--text) !important;
  outline: none !important;
  box-shadow: none;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="range"]):focus,
select:focus,
textarea:focus {
  border-color: #8ab8ff !important;
  background: #fff !important;
  box-shadow: 0 0 0 4px rgba(11,79,179,.08) !important;
}

input::placeholder,
textarea::placeholder {
  color: #6b7280;
  opacity: .95;
}

textarea {
  min-height: 110px;
  resize: vertical;
}

input[type="file"] {
  padding: 13px 16px !important;
  border-style: dashed !important;
  background: #fff !important;
}

/* éviter les champs secs dans les formulaires simples ou anciens */
form .field,
form .form-field {
  margin-bottom: 16px;
}

form label {
  color: #062f6b;
  font-weight: 900;
}

@media(max-width:720px){
  input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="range"]),
  select,
  textarea{
    border-radius: 15px !important;
    padding: 14px 16px !important;
    font-size: 15px !important;
  }
}

/* Corrections générales : tableaux, menus, champs et cartes sans débordement */
.fc-table-scroll,.table-wrap{width:100%!important;max-width:100%!important;overflow:auto!important;-webkit-overflow-scrolling:touch!important;border-radius:18px!important;border:1px solid var(--border)!important;background:#fff!important;box-shadow:0 8px 24px rgba(15,58,120,.06)!important;}
.fc-table-scroll table,.table-wrap table{min-width:760px!important;margin:0!important;}
.fc-table-scroll thead th,.table-wrap thead th,.fc-table-scroll tr:first-child th,.table-wrap tr:first-child th{position:sticky!important;top:0!important;z-index:2!important;background:#eef6ff!important;}
.fc-table-hint{font-size:12px;color:var(--muted);margin:8px 4px 0;display:none}
.actions-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.inline-grade{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.mailbox-grid{align-items:start}.mail-item{border:1px solid var(--border);border-radius:18px;padding:14px 16px;margin-bottom:12px;background:#fff}.mail-item div{display:flex;justify-content:space-between;gap:12px}.mail-item small{color:var(--muted)}.mail-in{border-left:5px solid var(--blue)}.mail-out{border-left:5px solid var(--green);background:#fbfffc}
.field input,.field select,.field textarea,input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea{border:1px solid #cfe0f6!important;border-radius:18px!important;background:#fff!important;padding:14px 16px!important;outline:none!important;max-width:100%;}
.field input:focus,.field select:focus,.field textarea:focus,input:focus,select:focus,textarea:focus{border-color:#8ab8ff!important;box-shadow:0 0 0 4px rgba(11,79,179,.08)!important;}
@media(max-width:850px){.content{width:100%!important;max-width:100vw!important;overflow-x:hidden!important}.page-title{display:flex!important;align-items:flex-start!important;gap:12px!important;flex-wrap:wrap!important}.page-title h1{font-size:28px!important;line-height:1.12!important;word-break:normal!important}.grid-3,.grid-2{grid-template-columns:1fr!important}.card{padding:20px 16px!important}.actions-row .btn{white-space:nowrap}.fc-table-hint{display:block}.menu-card{min-width:0!important;overflow-wrap:anywhere}.hero,.page-shell{max-width:100%!important}}

/* Correctif responsive crop tool : toujours voir les boutons sur petits écrans */
.crop-modal:not([hidden]){
  padding: clamp(8px, 2.5vw, 18px) !important;
  align-items: center !important;
  justify-items: center !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
}
.crop-panel{
  width: min(720px, calc(100vw - 18px)) !important;
  max-height: calc(100dvh - 18px) !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
  padding: clamp(12px, 2.5vw, 22px) !important;
}
.crop-panel-head{
  flex: 0 0 auto !important;
  margin-bottom: clamp(8px, 1.8vh, 16px) !important;
}
.crop-stage{
  flex: 1 1 auto !important;
  min-height: 190px !important;
  height: min(50dvh, 430px) !important;
  max-height: 52dvh !important;
}
.crop-controls{
  flex: 0 0 auto !important;
  margin-top: clamp(8px, 1.6vh, 16px) !important;
}
.crop-actions{
  flex: 0 0 auto !important;
  position: sticky !important;
  bottom: 0 !important;
  z-index: 10 !important;
  background: #fff !important;
  padding-top: 10px !important;
  margin-top: 10px !important;
}
.crop-actions .btn{
  min-height: 46px !important;
}

@media (max-width: 640px){
  .crop-modal:not([hidden]){
    place-items: stretch !important;
  }
  .crop-panel{
    width: calc(100vw - 14px) !important;
    max-height: calc(100dvh - 14px) !important;
    border-radius: 18px !important;
  }
  .crop-panel-head h2{
    font-size: 1.15rem !important;
    line-height: 1.2 !important;
  }
  .crop-panel-head p{
    font-size: 12px !important;
    line-height: 1.35 !important;
  }
  .crop-close{
    width: 38px !important;
    height: 38px !important;
    font-size: 24px !important;
    flex: 0 0 auto !important;
  }
  .crop-stage{
    min-height: 210px !important;
    height: 42dvh !important;
    max-height: 42dvh !important;
    border-radius: 16px !important;
  }
  .crop-controls{
    grid-template-columns: 52px 1fr !important;
    gap: 8px !important;
  }
  .crop-actions{
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
  }
  .crop-actions .btn{
    width: 100% !important;
    min-width: 0 !important;
    padding-left: 10px !important;
    padding-right: 10px !important;
    font-size: 13px !important;
  }
}

@media (max-height: 620px){
  .crop-panel-head p{
    display: none !important;
  }
  .crop-stage{
    min-height: 160px !important;
    height: 38dvh !important;
    max-height: 38dvh !important;
  }
  .crop-stage:after{
    display: none !important;
  }
  .crop-actions .btn{
    min-height: 40px !important;
  }
}

.fc-table-exportbar{
  justify-content:flex-end;
  margin:10px 0 8px;
}
@media(max-width:700px){
  .fc-table-exportbar{justify-content:flex-start;overflow-x:auto;white-space:nowrap;padding-bottom:4px;}
}


/* === Correctifs responsive tableaux et formulaires === */
.content{min-width:0;max-width:100%;overflow-x:hidden;}
.table-wrap,.fc-table-scroll{width:100%;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch;border-radius:18px;border:1px solid var(--border);background:#fff;box-shadow:0 14px 34px rgba(15,58,120,.06);}
.table-wrap table,.fc-table-scroll table{min-width:760px;width:100%;border-collapse:collapse;}
.table-wrap thead th,.fc-table-scroll thead th{position:sticky;top:0;z-index:3;background:#eef6ff;}
.fc-table-hint{display:none;color:var(--muted);font-size:12px;margin:8px 0 14px;}
@media(max-width:850px){.fc-table-hint{display:block}.table-wrap table,.fc-table-scroll table{min-width:850px}.page-title h1{font-size:28px;line-height:1.15}.actions-row{display:flex;gap:10px;flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px}.actions-row .btn{white-space:nowrap;flex:0 0 auto}}

.password-reveal{display:flex;gap:8px;align-items:center;min-width:180px}.password-reveal input{border:1px solid var(--border);border-radius:999px;padding:9px 12px;max-width:125px;background:#fff}.password-reveal button{border:0;border-radius:999px;background:#eef5ff;color:var(--blue);font-weight:900;padding:9px 12px;cursor:pointer;white-space:nowrap}
.class-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:20px}.class-choice-card h2{font-size:25px;line-height:1.25}.class-meta{display:grid;gap:7px;color:var(--muted);margin:14px 0}.class-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.class-actions .btn{flex:1 1 160px;justify-content:center}.class-message{background:#f8fbff;border:1px solid var(--border);border-radius:18px;padding:14px;margin-top:12px}.deliberation-actions{margin-top:18px;display:flex;justify-content:flex-end}@media(max-width:850px){.class-card-grid{grid-template-columns:1fr}.class-choice-card h2{font-size:22px}.class-actions .btn{width:100%}.content .card{padding:22px 16px}}

.session-public-field.hidden-by-class{display:none!important;}

.class-detail-list{display:grid;gap:8px;margin-top:8px}.class-detail-list p{margin:0;padding:10px 12px;border:1px solid var(--border);border-radius:14px;background:#f8fbff}.plain-password{font-weight:800;color:#062f6b;white-space:nowrap}

.password-field-wrap{position:relative;display:block}.password-field-wrap input[type=password],.password-field-wrap input[type=text]{padding-right:54px!important}.password-eye{position:absolute;right:10px;top:50%;transform:translateY(-50%);border:0;background:#eef5ff;color:var(--blue);border-radius:999px;width:36px;height:36px;font-weight:900;cursor:pointer;display:grid;place-items:center}

/* ==========================================================
   Espace étudiant : page Mon Profil + responsive amélioré
   ========================================================== */
.student-profile-page{min-width:0!important;}
.student-profile-title{align-items:flex-start!important;gap:18px!important;}
.student-profile-title .subtitle{margin:8px 0 0!important;}
.student-profile-grid{display:grid;grid-template-columns:340px minmax(0,1fr);gap:22px;align-items:start;}
.student-profile-photo-card{text-align:center;position:sticky;top:96px;}
.student-profile-avatar{width:160px;height:160px;margin:0 auto 18px;border-radius:34px;background:linear-gradient(135deg,#eef6ff,#dbeafe);border:1px solid var(--border);display:grid;place-items:center;overflow:hidden;box-shadow:0 18px 36px rgba(11,79,179,.12);}
.student-profile-avatar img{width:100%;height:100%;object-fit:cover;display:block;}
.student-profile-avatar span{font-size:58px;font-weight:900;color:var(--blue);}
.student-profile-photo-card h2{margin:0 0 6px;color:#062f6b;line-height:1.2;overflow-wrap:anywhere;}
.student-profile-class{margin-top:18px;text-align:left;background:#f8fbff;border:1px solid var(--border);border-radius:20px;padding:16px;display:grid;gap:5px;}
.student-profile-class span{text-transform:uppercase;font-size:11px;font-weight:900;color:#6b7a90;letter-spacing:.08em;}
.student-profile-class strong{color:#062f6b;font-size:18px;}
.student-profile-class small{color:var(--muted);line-height:1.45;}
.student-profile-form-card{min-width:0;}
.student-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 20px;}
.student-form-grid .span-2{grid-column:1 / -1;}
.student-profile-form .field label{display:block;color:#062f6b;margin-bottom:8px;}
.student-profile-form .field input,
.student-profile-form .field select,
.student-profile-form .field textarea{margin-top:0!important;background:#f8fbff!important;border-radius:16px!important;outline:none;transition:.18s ease;}
.student-profile-form .field input:focus,
.student-profile-form .field select:focus,
.student-profile-form .field textarea:focus{background:#fff!important;border-color:#8ab8ff!important;box-shadow:0 0 0 4px rgba(11,79,179,.08)!important;}
.student-profile-form textarea{min-height:112px;resize:vertical;}
.student-profile-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:4px;}
.student-profile-actions .btn{justify-content:center;}
.muted-class{opacity:.86;}
@media(max-width:1050px){
  .student-profile-grid{grid-template-columns:300px minmax(0,1fr);}
}
@media(max-width:850px){
  .student-profile-title{display:grid!important;grid-template-columns:1fr!important;}
  .student-profile-title h1{font-size:30px!important;line-height:1.1!important;}
  .student-profile-title .btn{width:100%;justify-content:center;}
  .student-profile-grid{grid-template-columns:1fr;gap:16px;}
  .student-profile-photo-card{position:static;}
  .student-profile-avatar{width:132px;height:132px;border-radius:28px;}
  .student-form-grid{grid-template-columns:1fr;gap:16px;}
  .student-form-grid .span-2{grid-column:auto;}
  .student-profile-form-card,.student-profile-photo-card{padding:20px 16px!important;border-radius:24px!important;}
  .student-profile-actions .btn{width:100%;}
}
@media(max-width:420px){
  .student-profile-page{padding:18px 12px 34px!important;}
  .student-profile-title h1{font-size:26px!important;}
  .student-profile-avatar{width:116px;height:116px;border-radius:24px;}
  .student-profile-avatar span{font-size:46px;}
}

/* ==========================================================
   Correctif page Formateurs : un seul bouton + page dédiée
   ========================================================== */
.action-cell{min-width:120px!important;text-align:center!important;vertical-align:middle!important;}
.btn-manage{padding:10px 18px!important;justify-content:center!important;white-space:nowrap!important;}
.trainer-action-page .muted-text{color:var(--muted);line-height:1.6;margin:8px 0 0;}
.trainer-action-hero{display:flex;justify-content:space-between;align-items:center;gap:22px;background:linear-gradient(135deg,#ffffff,#eef6ff);border:1px solid var(--border);border-radius:30px;box-shadow:var(--shadow);padding:28px;margin-bottom:24px;}
.trainer-action-identity{display:flex;align-items:center;gap:20px;min-width:0;}
.trainer-action-photo{width:104px;height:112px;border-radius:26px;background:#e8f1ff;border:6px solid #fff;box-shadow:0 18px 36px rgba(15,58,120,.16);display:grid;place-items:center;overflow:hidden;color:var(--blue);font-weight:950;font-size:28px;flex:0 0 auto;}
.trainer-action-photo img{width:100%;height:100%;object-fit:cover;display:block;}
.trainer-action-identity h2{margin:4px 0 8px;color:#062f6b;font-size:34px;line-height:1.1;}
.trainer-action-identity p{margin:4px 0;color:var(--muted);font-weight:700;}
.mini-label{display:inline-flex;text-transform:uppercase;font-size:12px;letter-spacing:.06em;color:#6b7a90;font-weight:950;}
.trainer-action-status{display:grid;gap:10px;justify-items:end;flex:0 0 auto;}
.status-big{font-size:14px!important;padding:10px 16px!important;}
.trainer-action-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:22px;margin-bottom:24px;}
.action-panel h2,.assigned-classes-card h2{margin-top:0;color:#062f6b;}
.action-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px;}
.action-card-link{border:1px solid var(--border);border-radius:20px;background:#f8fbff;padding:18px;display:grid;gap:8px;min-height:124px;transition:.2s;}
.action-card-link:hover{transform:translateY(-2px);background:#fff;border-color:#9bc3ff;box-shadow:0 14px 30px rgba(15,58,120,.10);}
.action-card-link strong{color:#073b86;font-size:17px;}
.action-card-link span{color:var(--muted);font-size:13px;line-height:1.45;font-weight:700;}
.warning-box{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:17px;padding:14px 16px;margin:12px 0 16px;font-weight:800;line-height:1.55;}
.status-action-list{display:grid;gap:12px;margin-top:18px;}
.status-action-list form{margin:0;}
.status-action-list .btn{width:100%;justify-content:center;}
.section-head-inline{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px;}
.compact-table th,.compact-table td{padding:13px 14px!important;}
.empty-small{margin:0;color:var(--muted);font-weight:800;background:#f8fbff;border:1px dashed var(--border);border-radius:18px;padding:18px;}
@media(max-width:1000px){.trainer-action-grid{grid-template-columns:1fr}.action-card-grid{grid-template-columns:1fr}}
@media(max-width:850px){
  .trainer-action-hero{align-items:flex-start;flex-direction:column;padding:20px 16px;border-radius:24px;}
  .trainer-action-identity{align-items:flex-start;width:100%;}
  .trainer-action-photo{width:86px;height:96px;border-radius:22px;font-size:22px;}
  .trainer-action-identity h2{font-size:27px;}
  .trainer-action-status{justify-items:start;width:100%;}
  .section-head-inline{align-items:flex-start;flex-direction:column;}
  .btn-manage{width:100%;}
  .action-cell{min-width:100px!important;}
}

.student-count-link{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0 12px;border-radius:999px;background:#eef5ff;color:var(--blue);font-weight:900;border:1px solid var(--border);transition:.2s}.student-count-link:hover{background:var(--blue);color:#fff;transform:translateY(-1px)}


/* ==========================================================
   Badges de notification et suivi des TP
   ========================================================== */
.side-link{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px;}
.notif-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:#dc2626;color:#fff;font-size:12px;font-weight:950;line-height:1;box-shadow:0 8px 18px rgba(220,38,38,.22);flex:0 0 auto;}
.menu-card,.btn,.class-actions a{position:relative;}
.menu-card .notif-badge,.btn .notif-badge{margin-left:8px;vertical-align:middle;}
.class-alert-chip{display:inline-flex;align-items:center;gap:6px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:999px;padding:7px 11px;font-weight:900;font-size:13px;}
.tp-row td{transition:.18s ease;}
.tp-row.tp-needs-grade{background:#fff7ed!important;box-shadow:inset 5px 0 0 #f97316;}
.tp-row.tp-graded{background:#f0fdf4!important;box-shadow:inset 5px 0 0 #16a34a;}
.tp-row.tp-awaiting-submit{background:#f8fafc!important;box-shadow:inset 5px 0 0 #94a3b8;}
.tp-status-badges{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 14px;}
@media(max-width:850px){.notif-badge{min-width:20px;height:20px;font-size:11px}.side-link{gap:8px}}

/* Corrections finales espace étudiant / certificats */
@media(max-width:850px){
  .final-cert-actions{gap:8px!important;flex-wrap:nowrap!important;overflow-x:visible!important;}
  .final-cert-actions .btn{padding:9px 11px!important;font-size:12px!important;line-height:1.1!important;gap:5px!important;}
}


/* Bouton profil connecté : photo réelle si disponible */
.profile-avatar{overflow:hidden;flex:0 0 auto;line-height:1;}
.profile-avatar img{width:100%;height:100%;object-fit:cover;display:block;border-radius:50%;}
.profile-avatar.has-photo{background:#fff;border:2px solid #dbeafe;padding:0;}
.profile-toggle:hover{box-shadow:0 10px 24px rgba(11,79,179,.14);}
@media(max-width:850px){
  .profile-menu{margin-left:auto;}
  .profile-avatar.has-photo{border-width:1px;}
}

/* Pied de page : signature Luvta sur une ligne distincte */
.site-footer .footer-bottom{display:flex!important;flex-direction:column!important;align-items:center!important;gap:6px!important;text-align:center!important;}
.site-footer .footer-luvta{font-size:.9rem!important;opacity:.9!important;}

/* ==========================================================
   Tableaux mobile : texte compact et lisible sans chevauchement
   ========================================================== */
@media (max-width: 850px) {
  .table-wrap,
  .fc-table-scroll {
    border-radius: 14px !important;
  }

  .table-wrap table,
  .fc-table-scroll table {
    min-width: 700px !important;
  }

  .table-wrap th,
  .table-wrap td,
  .fc-table-scroll th,
  .fc-table-scroll td {
    font-size: 11px !important;
    line-height: 1.3 !important;
    padding: 9px 8px !important;
  }

  .table-wrap th,
  .fc-table-scroll th {
    font-size: 10px !important;
    letter-spacing: .02em !important;
  }

  .table-wrap td .btn,
  .fc-table-scroll td .btn,
  .table-wrap td button,
  .fc-table-scroll td button {
    font-size: 10px !important;
    padding: 7px 9px !important;
    gap: 5px !important;
  }

  .table-wrap td .badge,
  .fc-table-scroll td .badge {
    font-size: 10px !important;
    padding: 4px 7px !important;
  }
}

/* ==========================================================
   Uniformisation : tous les tableaux utilisent la même taille
   que la colonne « Page concernée » du journal des actions.
   Les tableaux PDF conservent leur propre mise en page.
   ========================================================== */
table:not(.pdf-result-table):not(.notes-table) th,
table:not(.pdf-result-table):not(.notes-table) td{
  font-size:12px!important;
  line-height:1.35!important;
}
table:not(.pdf-result-table):not(.notes-table) th{
  font-size:11px!important;
}
table:not(.pdf-result-table):not(.notes-table) td .btn,
table:not(.pdf-result-table):not(.notes-table) td button,
table:not(.pdf-result-table):not(.notes-table) td .badge,
table:not(.pdf-result-table):not(.notes-table) td a.btn{
  font-size:11px!important;
  line-height:1.2!important;
}
table:not(.pdf-result-table):not(.notes-table) td .btn,
table:not(.pdf-result-table):not(.notes-table) td button,
table:not(.pdf-result-table):not(.notes-table) td a.btn{
  padding:7px 10px!important;
}
@media(max-width:850px){
  table:not(.pdf-result-table):not(.notes-table) th,
  table:not(.pdf-result-table):not(.notes-table) td{
    font-size:12px!important;
  }
  table:not(.pdf-result-table):not(.notes-table) th{
    font-size:10px!important;
  }
  table:not(.pdf-result-table):not(.notes-table) td{
    padding:10px 9px!important;
  }
  table:not(.pdf-result-table):not(.notes-table) td .btn,
  table:not(.pdf-result-table):not(.notes-table) td button,
  table:not(.pdf-result-table):not(.notes-table) td a.btn{
    font-size:10px!important;
    padding:6px 8px!important;
  }
  table:not(.pdf-result-table):not(.notes-table) td .badge{
    font-size:10px!important;
    padding:5px 8px!important;
  }
}

/* ==========================================================
   CORRECTIF FINAL — Journal des actions
   « Ce qui s'est passé » et « Détails » :
   même taille que « Page concernée », y compris leur contenu.
   Les tableaux PDF/bulletins ne sont pas touchés.
   ========================================================== */
.table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3),
.table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4),
.fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3),
.fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4),
.journal-table tbody td:nth-child(3),
.journal-table tbody td:nth-child(4),
#journal-table tbody td:nth-child(3),
#journal-table tbody td:nth-child(4) {
  font-size: 12px !important;
  line-height: 1.35 !important;
}

/* Certains textes du journal sont contenus dans des balises internes
   (p, div, span, small, strong). Cette règle les uniformise réellement. */
.table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3) :not(.btn):not(button):not(.badge):not(svg):not(i),
.table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4) :not(.btn):not(button):not(.badge):not(svg):not(i),
.fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3) :not(.btn):not(button):not(.badge):not(svg):not(i),
.fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4) :not(.btn):not(button):not(.badge):not(svg):not(i),
.journal-table tbody td:nth-child(3) :not(.btn):not(button):not(.badge):not(svg):not(i),
.journal-table tbody td:nth-child(4) :not(.btn):not(button):not(.badge):not(svg):not(i),
#journal-table tbody td:nth-child(3) :not(.btn):not(button):not(.badge):not(svg):not(i),
#journal-table tbody td:nth-child(4) :not(.btn):not(button):not(.badge):not(svg):not(i) {
  font-size: 12px !important;
  line-height: 1.35 !important;
}

/* Les boutons et badges gardent leur format compact. */
.table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3) .btn,
.table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4) .btn,
.table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3) button,
.table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4) button,
.fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3) .btn,
.fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4) .btn,
.fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3) button,
.fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4) button {
  font-size: 11px !important;
  line-height: 1.2 !important;
}

@media (max-width: 850px) {
  .table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3),
  .table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4),
  .fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3),
  .fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4),
  .journal-table tbody td:nth-child(3),
  .journal-table tbody td:nth-child(4),
  #journal-table tbody td:nth-child(3),
  #journal-table tbody td:nth-child(4),
  .table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3) :not(.btn):not(button):not(.badge):not(svg):not(i),
  .table-wrap table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4) :not(.btn):not(button):not(.badge):not(svg):not(i),
  .fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(3) :not(.btn):not(button):not(.badge):not(svg):not(i),
  .fc-table-scroll table:not(.pdf-result-table):not(.notes-table) tbody td:nth-child(4) :not(.btn):not(button):not(.badge):not(svg):not(i),
  .journal-table tbody td:nth-child(3) :not(.btn):not(button):not(.badge):not(svg):not(i),
  .journal-table tbody td:nth-child(4) :not(.btn):not(button):not(.badge):not(svg):not(i),
  #journal-table tbody td:nth-child(3) :not(.btn):not(button):not(.badge):not(svg):not(i),
  #journal-table tbody td:nth-child(4) :not(.btn):not(button):not(.badge):not(svg):not(i) {
    font-size: 12px !important;
    line-height: 1.35 !important;
  }
}
