body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f7f9fc;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}*{box-sizing:border-box}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{color-scheme:light}body{color:#111827}.session-modal-overlay{background:#11182773;display:grid;inset:0;padding:1rem;place-items:center;position:fixed;z-index:1200}.session-modal{background:#fff;border:1px solid #d1d5db;border-radius:14px;box-shadow:0 20px 45px #0000002e;padding:1.2rem 1.1rem;width:min(100%,420px)}.session-modal h2{color:#111827;font-size:1.2rem;margin:0 0 .55rem}.session-modal p{color:#374151;line-height:1.4;margin:0 0 1rem}.session-modal button{background:#059669;border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:.95rem;font-weight:600;padding:.7rem 1rem}.session-modal button:hover{background:#047857}.login-page{background-position:50%;background-repeat:no-repeat;background-size:cover;display:grid;min-height:100vh;place-items:center}.login-card{background:#fff;border-radius:18px;box-shadow:0 20px 40px #0000001a;padding:2.5rem;width:min(420px,90vw)}.login-brand-block{grid-gap:.9rem;display:grid;gap:.9rem;margin-bottom:1.5rem}.login-brand-logo{height:auto;width:min(100%,230px)}.subtitle{color:#5f6f68;margin-bottom:0}.login-form{grid-gap:1rem;display:grid;gap:1rem}.login-form label{grid-gap:.5rem;color:#30403a;display:grid;font-weight:600;gap:.5rem}.login-form input{border:1px solid #d0ddd6;border-radius:10px;font-size:.95rem;padding:.75rem .9rem}.login-form button{background:#12724e;border:none;border-radius:10px;color:#fff;cursor:pointer;font-weight:600;margin-top:.5rem;padding:.75rem}.alert.error{background:#ffe6e6;border-radius:8px;color:#9b1c1c;margin-bottom:1rem;padding:.75rem}.helper{grid-gap:.35rem;color:#66736e;display:grid;gap:.35rem;margin-top:1.5rem}.muted{font-size:.85rem}.sidebar{background:#fff;border-right:1px solid #e5e9f2;gap:20px;max-height:calc(100vh - 48px);overflow-y:auto;padding:24px 18px}.sidebar,.sidebar-widgets{display:flex;flex-direction:column}.sidebar-widgets{border-bottom:1px solid #e5e9f2;border-top:1px solid #e5e9f2;gap:16px;padding:12px 0}.sidebar-brand-logo{display:block;height:auto;width:min(100%,176px)}.sidebar-menu{display:flex;flex-direction:column;gap:8px}.sidebar-group{grid-gap:6px;display:grid;gap:6px}.sidebar-sub{color:#6b7280;font-size:.85rem;padding-left:12px}.sidebar-link{background:#f7f9fc;border:none;border-radius:10px;color:#1f2937;cursor:pointer;font-weight:600;padding:10px 12px;text-align:left}.sidebar-link.active{background:#e0edff;color:#2563eb}.sidebar-footer{grid-gap:16px;display:grid;gap:16px;margin-top:auto}.user-block{align-items:center;display:flex;gap:12px}.avatar{background:#2563eb;border-radius:50%;color:#fff;display:grid;font-weight:700;height:42px;place-items:center;width:42px}.user-name{font-weight:600;margin:0}.user-role{color:#6b7280;font-size:.85rem;margin:4px 0 0}.logout{background:#0000;border:1px solid #ef4444;border-radius:10px;color:#ef4444;cursor:pointer;font-weight:600;padding:10px 12px}.submission-history{grid-gap:12px;background:#fff;border:1px solid #eef2f7;border-radius:12px;display:grid;gap:12px;padding:16px}.submission-history h4{font-size:1rem;margin:0}.submission-history ul{grid-gap:8px;display:grid;gap:8px;list-style:none;margin:0;padding:0}.submission-history li{grid-gap:4px;display:grid;gap:4px}.submission-history .title{font-weight:600}.submission-history .date{color:#6b7280;font-size:.85rem}.team-assignments{background:#fff;border:1px solid #eef2f7;border-radius:12px;padding:16px}.team-assignments h4{margin:0 0 12px}.team-assignments ul{grid-gap:10px;display:grid;gap:10px;list-style:none;margin:0;padding:0}.team-assignments li{align-items:center;display:flex;font-size:.9rem;gap:12px;justify-content:space-between}.team-assignments .assignment-main{grid-gap:4px;display:grid;gap:4px}.team-assignments .assignment-main small{color:#6b7280;font-size:.78rem}.team-assignments .assignment-empty{color:#6b7280;font-size:.88rem;margin:0}.performance-metrics{grid-gap:16px;background:#fff;border:1px solid #eef2f7;border-radius:12px;display:grid;gap:16px;padding:16px}.metric-header{display:flex;font-size:.9rem;justify-content:space-between;margin-bottom:6px}.bar{background:#e5e7eb;border-radius:999px;height:8px;overflow:hidden}.bar span{background:#10b981;display:block;height:100%}.bar.warning span{background:#f59e0b}.plan-form{grid-gap:20px;background:#fff;border-radius:16px;box-shadow:0 8px 20px #0000000d;display:grid;gap:20px;padding:20px}.form-header{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:16px}.form-header h3{margin:0 0 6px}.form-actions{margin-top:4px}.form-actions button{background:#2563eb;border:none;border-radius:10px;color:#fff;cursor:pointer;font-weight:600;padding:10px 16px}.form-actions button:disabled{cursor:not-allowed;opacity:.7}.form-error{background:#fee2e2;border-radius:8px;color:#b91c1c;margin-bottom:12px;padding:10px 12px}.form-section{grid-gap:12px;display:grid;gap:12px}.checklist{grid-gap:8px;color:#1f2937;display:grid;gap:8px;list-style:none;margin:0;padding:0}.plan-form label{grid-gap:6px;color:#374151;display:grid;font-weight:600;gap:6px}.plan-form input,.plan-form select{border:1px solid #d1d5db;border-radius:10px;max-width:100%;overflow:hidden;padding:10px 12px;text-overflow:ellipsis;white-space:nowrap;width:100%}.plan-form select option{overflow:hidden;padding:8px;text-overflow:ellipsis;white-space:normal}.file-hint{color:#6b7280;font-size:.8rem}.upload-zone{grid-gap:8px;background:#f8fafc;border:1.5px dashed #c7d2fe;border-radius:16px;display:grid;gap:8px;padding:20px;text-align:center}.upload-icon{font-size:1.8rem}.upload-button{align-items:center;background:#3b82f6;border-radius:10px;color:#fff;cursor:pointer;display:inline-flex;font-weight:600;gap:8px;justify-content:center;padding:10px 16px}.upload-hint{color:#6b7280;font-size:.85rem}.status-badge{align-items:center;border-radius:999px;display:inline-flex;font-size:.8rem;gap:6px}.status-badge .icon{font-size:.9rem}.status-badge.green{background:#10b98126;color:#10b981}.status-badge.orange{background:#f59e0b33;color:#f59e0b}.status-badge.red{background:#ef444426;color:#ef4444}.status-badge.gray{background:#6b728033;color:#6b7280}.status-badge.blue{background:#3b82f626;color:#3b82f6}.plan-table-card{background:#fff;border-radius:16px;box-shadow:0 8px 20px #0000000d;padding:20px}.plan-table-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.plan-table-header p{margin:6px 0 0}.view-toggle button{background:#fff;border:1px solid #d1d5db;border-radius:8px;cursor:pointer;font-size:.95rem;margin-left:8px;padding:6px 12px}.view-toggle .active{background:#2563eb;border-color:#2563eb;color:#fff}.table-wrapper .title{font-weight:600}.pdf-status{color:#6b7280;font-size:.85rem}.action-btn{background:#fff;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;padding:4px 8px}.date-block{grid-gap:4px;display:grid;gap:4px}.grid-view{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.plan-card{grid-gap:8px;border:1px solid #e5e7eb;border-radius:12px;display:grid;gap:8px;padding:16px}.plan-card .meta{grid-gap:4px;color:#6b7280;display:grid;font-size:.85rem;gap:4px}.card-actions{justify-content:space-between}.card-actions,.pagination{align-items:center;display:flex}.pagination{font-size:.9rem;gap:10px;justify-content:flex-end;margin-top:16px}.pagination button{background:#fff;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;padding:6px 10px}.pagination .page{background:#2563eb;border-radius:6px;color:#fff;padding:4px 10px}.pagination .active-page{background:#2563eb;border-color:#2563eb;color:#fff}.pagination button:disabled{cursor:not-allowed;opacity:.5}.action-stack{grid-gap:8px;display:grid;gap:8px}.view-grid-btn{background:#3b82f6!important;color:#fff!important;font-weight:600}.view-grid-btn:hover{background:#2563eb!important}.edit-btn{background:#fef3c7;border:1px solid #fbbf24;border-radius:8px;color:#d97706;cursor:pointer;font-weight:600;padding:6px 10px;transition:all .2s}.edit-btn:hover{background:#fcd34d;border-color:#f59e0b}.delete-btn{background:#fee2e2;border:1px solid #f87171;border-radius:8px;color:#dc2626;cursor:pointer;font-weight:600;padding:6px 10px;transition:all .2s}.delete-btn:hover{background:#fca5a5;border-color:#ef4444}.activity-panel{background:#fff;border-radius:16px;box-shadow:0 8px 20px #0000000d;padding:20px;position:-webkit-sticky;position:sticky;top:24px}.activity-panel h3{margin-top:0}.activity-panel ul{grid-gap:12px;display:grid;gap:12px;list-style:none;margin:0;padding:0}.activity-panel li{grid-gap:8px;align-items:start;display:grid;gap:8px;grid-template-columns:12px 1fr}.activity-panel .dot{border-radius:50%;height:10px;margin-top:4px;width:10px}.dot.success{background:#10b981}.dot.warning{background:#f59e0b}.dot.info{background:#3b82f6}.dot.error{background:#ef4444}.activity-panel .time{color:#6b7280;font-size:.8rem}.modal-overlay{background:#0f172a59}.modal{background:#fff;border-radius:16px;box-shadow:0 20px 40px #0003;padding:20px;width:min(520px,92vw)}.modal-large{display:flex;flex-direction:column;height:min(80vh,720px);width:min(980px,94vw)}.modal header{display:flex;gap:12px;justify-content:space-between;margin-bottom:16px}.modal header h3{margin:0}.modal button{background:#0000;border:none;cursor:pointer;font-size:1.2rem}.modal-body{display:grid;flex:1 1}.pdf-frame{border:1px solid #e5e7eb;border-radius:10px;height:100%;width:100%}.muted{color:#6b7280}.notice-toast{align-items:center;background:#e5f3ff;border:1px solid #bfdbfe;border-radius:12px;bottom:20px;box-shadow:0 12px 28px #0f172a2e;color:#111827;display:flex;gap:12px;max-width:min(92vw,440px);padding:12px 14px;position:fixed;right:20px;z-index:1600}.notice-toast button{background:#0000;border:none;color:#1f2937;cursor:pointer;font-size:14px;font-weight:700;line-height:1;padding:0}.notice-toast.notice-success{background:#dcfce7;border-color:#86efac}.notice-toast.notice-warning{background:#fef3c7;border-color:#fcd34d}.notice-toast.notice-error{background:#fee2e2;border-color:#fca5a5}.teacher-dashboard{background:#f7f9fc;display:grid;grid-template-columns:260px 1fr 280px;min-height:100vh}.teacher-main{display:flex;flex-direction:column;gap:24px;padding:24px 28px}.teacher-logout-btn{background:#fee2e2;border:1px solid #fca5a5;border-radius:8px;color:#b91c1c}.teacher-logout-btn,.teacher-refresh-btn{cursor:pointer;font-size:.85rem;font-weight:600;padding:6px 10px}.teacher-refresh-btn{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;color:#1d4ed8}.teacher-refresh-btn:hover:not(:disabled){background:#dbeafe}.teacher-refresh-btn:disabled{cursor:wait;opacity:.7}.teacher-logout-btn:hover{background:#fecaca}.filters{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;flex-wrap:wrap;gap:12px;padding:12px}.filters input,.filters select{background:#fff;border:1px solid #d7deea;border-radius:8px;font-size:.9rem;padding:8px 10px}.search-box{min-width:220px}.primary-button{background:#3b82f6;border:none;border-radius:10px;color:#fff;cursor:pointer;font-weight:600;padding:8px 14px}.teacher-panel{padding:24px 20px 24px 0}@media (max-width:1200px){.teacher-dashboard{grid-template-columns:240px 1fr}.teacher-panel{display:none}}@media (max-width:900px){.teacher-dashboard{grid-template-columns:1fr}}.validation-summary{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.summary-card{align-items:center;background:#fff;border-radius:14px;box-shadow:0 8px 20px #0000000d;display:flex;gap:14px;padding:16px}.summary-card .icon{font-size:1.6rem}.summary-card h3{font-size:1.4rem;margin:6px 0}.summary-card span{color:#6b7280;font-size:.85rem}.common-pagination{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:14px}.common-pagination button{background:#fff;border:1px solid #dbe2ea;border-radius:8px;color:#1f2937;cursor:pointer;font-size:.9rem;padding:6px 10px}.common-pagination .page-btn.active{background:#2563eb;border-color:#2563eb;color:#fff}.common-pagination button:disabled{cursor:not-allowed;opacity:.5}.plan-queue{background:#fff;border-radius:16px;box-shadow:0 8px 20px #0000000d;padding:20px}.queue-header{gap:16px;justify-content:space-between;margin-bottom:16px}.queue-filters,.queue-header{align-items:center;display:flex}.queue-filters{flex-wrap:wrap;gap:12px}.queue-filters select{background:#fff;padding:8px 10px}.queue-filters .filter-search,.queue-filters select{border:1px solid #d1d5db;border-radius:8px;font-size:.9rem}.queue-filters .filter-search{min-width:200px;outline:none;padding:8px 12px;transition:border-color .2s}.queue-filters .filter-search:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.queue-filters .filter-search::placeholder{color:#9ca3af}.action-group{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;color:#3b82f6;cursor:pointer;padding:8px 12px}.table-wrapper table{border-collapse:collapse;width:100%}.table-wrapper td,.table-wrapper th{border-bottom:1px solid #eef2f7;font-size:.9rem;padding:12px 10px;text-align:left}.table-wrapper .sort-label{align-items:center;display:inline-flex;gap:6px}.table-wrapper .sort-indicator{color:#64748b;font-size:.82rem;line-height:1}.table-wrapper thead .sort-row th{background:#fafafa;padding-bottom:10px;padding-top:4px}.table-wrapper thead .sort-row select{background:#fff;border:1px solid #d1d5db;border-radius:6px;font-size:.78rem;min-width:92px;padding:4px 6px;width:100%}.table-wrapper tbody tr{cursor:pointer}.table-wrapper tbody tr:hover{background:#f8fafc}.table-wrapper tbody tr.selected{background:#eff6ff}.status,.title{font-weight:600}.status{align-items:center;border-radius:999px;display:inline-flex;font-size:.8rem;padding:4px 10px}.status.valide,.status.validé{background:#10b98126;color:#10b981}.status.non-analyse{background:#94a3b833;color:#475569}.status.analyse{background:#3b82f626;color:#3b82f6}.status.non-valide{background:#ef44441f;color:#ef4444}.view-btn{background:#fff;border:1px solid #dbe2ea;border-radius:8px;color:#2563eb;cursor:pointer;font-weight:600;padding:6px 10px}.validation-interface{grid-gap:20px;background:#fff;border-radius:16px;box-shadow:0 8px 20px #0000000d;display:grid;gap:20px;padding:20px}.validation-header{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between}.validation-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-start;row-gap:8px}.validation-actions button{white-space:nowrap}.btn-draft{background:#f9fafb;border:1px solid #d1d5db;border-radius:10px;cursor:pointer;font-weight:600}.btn-draft,.btn-primary{padding:8px 12px}.btn-scroll-top{background:#1e293b;border:none;border-radius:999px;bottom:32px;box-shadow:0 4px 14px #00000040;color:#fff;cursor:pointer;font-size:.88rem;font-weight:700;letter-spacing:.3px;padding:10px 20px;position:fixed;right:32px;transition:background .2s,transform .15s;z-index:200}.btn-scroll-top:hover{background:#334155;transform:translateY(-2px)}.btn-generate-pdf{background:#dc2626;border:2px solid #dc2626;border-radius:10px;box-shadow:0 4px 12px #dc26264d;color:#fff;cursor:pointer;font-size:.95rem;font-weight:700;padding:10px 16px;transition:all .2s}.btn-generate-pdf:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c;box-shadow:0 6px 16px #dc262666;transform:translateY(-1px)}.btn-generate-pdf:disabled{cursor:not-allowed;opacity:.5}.btn-outline{color:#2563eb;padding:8px 12px}.btn-success{background:#10b981}.btn-danger,.btn-success{border:none;border-radius:10px;color:#fff;cursor:pointer;font-weight:600;padding:8px 12px}.btn-danger{background:#ef4444}.validation-summary{align-items:center;background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;display:flex;justify-content:space-between;padding:16px}.result-actions{display:flex;flex-wrap:wrap;gap:12px}.validation-summary h4{font-size:1.4rem;margin:6px 0 0}.validation-summary .status{border-radius:999px;font-weight:600;padding:6px 12px}.status.success{background:#10b98126;color:#10b981}.status.warning{background:#f59e0b26;color:#f59e0b}.status.danger{background:#ef444426;color:#ef4444}.grid-form{grid-gap:16px;display:grid;gap:16px}.grid-form h2{margin-top:8px}.grid-form .section-header{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-top:8px}.grid-form .section-header h3{margin:0}.grid-form .section-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.grid-form .section-toggle{align-items:center;background:#f8fafc;border:1px solid #dbe2ea;border-radius:999px;color:#334155;display:inline-flex;font-size:.92rem;font-weight:600;gap:8px;padding:6px 12px}.grid-form .section-toggle input{margin:0}.grid-form .section-toggle.is-partial{background:#fff7ed;border-color:#fdba74;color:#9a3412}.grid-form .section-clear-btn{background:#fff;border:1px solid #cbd5e1;border-radius:999px;color:#475569;cursor:pointer;font-weight:600;padding:6px 12px}.grid-form .section-clear-btn:hover{background:#f8fafc}.grid-form label{grid-gap:6px;display:grid;font-weight:600;gap:6px}.radio-group{grid-gap:10px;background:#fafafa;border-radius:12px;gap:10px;padding:14px}.radio-group p{margin:0}.radio-group-readonly{background:#f8fafc}.radio-group-readonly label{opacity:.7}.grid-form input,.grid-form select,.grid-form textarea{border:1px solid #d1d5db;border-radius:8px;padding:8px 10px}.grid-form table{border-collapse:collapse;margin-top:8px;width:100%}.grid-form td,.grid-form th{border:1px solid #e5e7eb;padding:10px;text-align:left;vertical-align:top}.grid-form th{background:#eff6ff}.grid-form .rubric col.critere{width:24%}.grid-form .rubric col.guide{width:44%}.grid-form .rubric col.choix{width:14%}.grid-form .rubric col.comment{width:18%}.grid-form .guide-cell{font-size:.95rem;line-height:1.35;white-space:normal;word-break:break-word}.grid-form .guide-item{margin:0 0 .45em}.grid-form .guide-item[data-active=true]{border-radius:6px;padding:2px 6px}.grid-form .guide-item[data-active=true][data-level=Excellent]{background:#10b98129}.grid-form .guide-item[data-active=true][data-level=Bien]{background:#3b82f629}.grid-form .guide-item[data-active=true][data-level=Insuffisant]{background:#ef444429}.radio-group{grid-gap:6px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;display:grid;gap:6px;padding:10px 12px}.criteria-block{grid-gap:8px;display:grid;gap:8px}.grid-form .hint{color:#6b7280;display:block;font-size:.88rem;font-weight:400;margin-top:4px}.chef-dashboard{background:#f7f9fc;display:grid;grid-template-columns:280px 1fr;grid-template-rows:auto 1fr;min-height:100vh}.chef-topbar{background:#2c3e50;box-shadow:0 2px 8px #0000001a;color:#fff;grid-column:1/-1;justify-content:space-between;padding:12px 24px;position:-webkit-sticky;position:sticky;top:0;z-index:1000}.chef-topbar,.topbar-left{align-items:center;display:flex}.topbar-left{gap:16px}.logo-small{display:block;filter:brightness(0) invert(1);height:auto;width:132px}.chef-topbar h1{font-size:1.1rem;font-weight:600;margin:0;opacity:.95}.topbar-right{align-items:center;display:flex;gap:16px}.user-name{font-size:.95rem;font-weight:500;opacity:.9}.btn-logout{background:#fff3;border:1px solid #ffffff4d;border-radius:8px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;padding:8px 16px;transition:all .2s}.btn-logout:hover{background:#ffffff4d;border-color:#ffffff80;transform:translateY(-1px)}.chef-main{grid-gap:24px;display:grid;gap:24px;padding:24px 28px}.chef-header{align-items:center;display:flex;gap:16px;justify-content:space-between}.chef-header h2{font-size:1.6rem;margin:0}.chef-actions{display:flex;flex-wrap:wrap;gap:12px}.error{background:#fee2e2;border:1px solid #fecaca;border-radius:8px;color:#b91c1c;padding:8px 10px}.btn-outline{background:#fff;border:1px solid #d1d5db;border-radius:10px;font-weight:600;padding:8px 14px}.btn-outline:disabled{cursor:wait;opacity:.7}.btn-refresh{background:#eff6ff;border:1px solid #93c5fd;border-radius:10px;color:#1d4ed8;cursor:pointer;font-weight:700;min-width:170px;padding:8px 14px}.btn-refresh:hover:not(:disabled){background:#dbeafe;border-color:#60a5fa}.btn-refresh:disabled{cursor:wait;opacity:.7}.btn-primary{background:#3b82f6;border:none;font-weight:600;padding:8px 14px}.chef-submitted-actions{grid-gap:8px;display:grid;gap:8px}.chef-submitted-btn{background:#fff;border:1px solid #dbe2ea;border-radius:8px;color:#2563eb;cursor:pointer;font-weight:600;min-width:140px;padding:6px 10px}.chef-submitted-grid-btn{background:#3b82f6;border-color:#3b82f6;color:#fff}.chef-submitted-grid-btn:hover{background:#2563eb;border-color:#2563eb}.chef-panel{grid-gap:16px;display:grid;gap:16px;padding:24px 20px 24px 0}@media (max-width:1200px){.chef-dashboard{grid-template-columns:220px 1fr}.chef-panel{display:none}}@media (max-width:900px){.chef-dashboard{grid-template-columns:1fr}}.layout{background:#f6f7fb;min-height:100vh}.layout-header{align-items:center;background:#12724e;box-shadow:0 4px 12px #00000014;color:#fff;display:flex;justify-content:space-between;padding:1.5rem 2rem}.layout-brand-group{align-items:center;display:flex;gap:.9rem}.layout-brand-icon{flex:0 0 auto;height:42px;width:42px}.layout-header h1{font-size:1.6rem;margin:0}.subtitle{margin:.35rem 0 0;opacity:.85}.layout-main{padding:2rem}.btn-outline{background:#0000;border:1px solid #ffffff80;border-radius:8px;color:#fff;cursor:pointer;padding:.5rem 1rem}.card{box-shadow:0 8px 20px #0000000d;padding:1.5rem}.page-center{display:grid;font-size:1.1rem;min-height:100vh;place-items:center}.conseiller-dashboard{background:#f7f9fc;display:grid;grid-template-columns:260px 1fr;min-height:100vh}.conseiller-main{display:flex;flex-direction:column;gap:24px;padding:24px 28px}.conseiller-logout-btn{background:#fee2e2;border:1px solid #fca5a5;border-radius:8px;color:#b91c1c}.conseiller-logout-btn,.conseiller-refresh-btn{cursor:pointer;font-size:.85rem;font-weight:600;padding:6px 10px}.conseiller-refresh-btn{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;color:#1d4ed8}.conseiller-refresh-btn:hover:not(:disabled){background:#dbeafe}.conseiller-refresh-btn:disabled{cursor:wait;opacity:.7}.conseiller-logout-btn:hover{background:#fecaca}.course-info strong{color:#1e293b;font-weight:600}.status-draft{background:#f3f4f6;color:#000}.status-submitted{background:#dbeafe;color:#000}.status-analyzed{background:#fef3c7;color:#000}.status-unknown{background:#f3f4f6;color:#000}.action-buttons button{border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600;padding:6px 12px;transition:all .2s;white-space:nowrap}.btn-visualiser{background:#f5f3ff;color:#6d28d9}.btn-visualiser:hover{background:#ede9fe}.btn-view-grid{background:#f0fdf4;color:#15803d}.btn-view-grid:hover{background:#dcfce7}.btn-validate{background:#10b981;color:#fff}.btn-validate:hover{background:#059669}.dashboard-stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.conseiller-stats-section{grid-gap:14px;background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;display:grid;gap:14px;padding:18px}.stats-section-header h3{color:#1e293b;font-size:1.1rem;margin:0}.stats-section-header p{color:#64748b;font-size:.92rem;margin:4px 0 0}.conseiller-validation-section{background:#fff;border-radius:16px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.conseiller-validation-header{align-items:center;background:linear-gradient(180deg,#fff,#f8fafc);border-bottom:1px solid #e5e7eb;display:flex;gap:16px;justify-content:space-between;padding:20px 24px}.conseiller-validation-header h3{color:#1e293b;font-size:1.2rem;margin:0}.conseiller-validation-header p{color:#64748b;font-size:.95rem;margin:6px 0 0}.conseiller-selection-chip{background:#fff;border:1px solid #cbd5e1;border-radius:999px;color:#334155;cursor:pointer;font-size:.85rem;font-weight:600;padding:8px 14px}.conseiller-selection-chip:hover{background:#f8fafc}.no-plans{color:#64748b;padding:60px 20px;text-align:center}.no-plans p{font-size:1rem;margin:0}.timeline-item.actuel .timeline-icon,.timeline-item.current .timeline-icon{animation:pulse 2s ease-in-out infinite;background:#3b82f6;color:#fff}.timeline{padding:24px}.actuel-badge{background:#dbeafe;color:#1e40af}.pending-badge{background:#f3f4f6;color:#6b7280}.dashboard-error,.dashboard-loading{font-size:1rem;padding:40px;text-align:center}.dashboard-loading{color:#64748b}.dashboard-error{color:#dc2626}@media (max-width:1200px){.conseiller-dashboard{grid-template-columns:240px 1fr}}@media (max-width:900px){.conseiller-dashboard{grid-template-columns:1fr}.dashboard-header{align-items:flex-start;flex-direction:column}.dashboard-filters{grid-template-columns:1fr}.plans-table{font-size:13px}.plans-table td,.plans-table th{padding:10px 12px}}.directeur-role-management{background:#f7f9fc;min-height:calc(100vh - 20px);padding:24px 28px}.directeur-role-management .role-management-header{background:#fff;border:1px solid #e5e7eb;border-radius:14px;margin-bottom:16px;padding:18px 20px}.directeur-role-management .role-management-header h1{color:#1f2937;font-size:1.75rem;margin:0}.directeur-role-management .subtitle{color:#6b7280;font-size:.95rem;margin-top:6px}.directeur-role-management .management-tabs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}.directeur-role-management .tab-button{align-items:center;background:#fff;border:1px solid #d7deea;border-radius:999px;color:#334155;cursor:pointer;display:inline-flex;font-weight:600;gap:8px;padding:8px 12px}.directeur-role-management .tab-button .tab-count{background:#eef2ff;border-radius:999px;color:#4338ca;font-size:.78rem;font-weight:700;padding:2px 8px}.directeur-role-management .tab-button.active{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.directeur-role-management .stats-strip{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px}.directeur-role-management .stat-pill{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;justify-content:space-between;padding:14px 16px}.directeur-role-management .stat-label{color:#6b7280;font-size:.85rem}.directeur-role-management .stat-value{color:#111827;font-size:1.2rem;font-weight:700}.directeur-role-management .management-section{background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 2px 8px #0f172a0a;margin-bottom:16px;padding:18px}.directeur-role-management .section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.directeur-role-management .section-header h2{color:#1f2937;font-size:1.2rem;margin:0}.directeur-role-management .filters{grid-gap:10px;display:grid;gap:10px;grid-template-columns:1.5fr 1fr;margin-bottom:14px}.directeur-role-management .filter-input,.directeur-role-management .filter-select,.directeur-role-management .modal-form input,.directeur-role-management .modal-form select{background:#fff;border:1px solid #d1d5db;border-radius:10px;font-size:.92rem;padding:10px 12px;width:100%}.directeur-role-management .filter-input:focus,.directeur-role-management .filter-select:focus,.directeur-role-management .modal-form input:focus,.directeur-role-management .modal-form select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.directeur-role-management .btn-primary{background:#3b82f6;border:1px solid #3b82f6;border-radius:10px;color:#fff;cursor:pointer;font-weight:600;padding:9px 14px}.directeur-role-management .btn-primary:hover{background:#2563eb;border-color:#2563eb}.directeur-role-management .btn-cancel:focus-visible,.directeur-role-management .btn-delete:focus-visible,.directeur-role-management .btn-edit:focus-visible,.directeur-role-management .btn-primary:focus-visible,.directeur-role-management .btn-save:focus-visible,.directeur-role-management .tab-button:focus-visible{outline:2px solid #1d4ed8;outline-offset:2px}.directeur-role-management .table-responsive{overflow-x:auto}.directeur-role-management table{border-collapse:collapse;width:100%}.directeur-role-management th{border-bottom:1px solid #e5e7eb;color:#6b7280;font-size:.8rem;letter-spacing:.04em;padding:10px 8px;text-align:left;text-transform:uppercase}.directeur-role-management td{border-bottom:1px solid #f3f4f6;color:#111827;font-size:.92rem;padding:10px 8px}.directeur-role-management tbody tr:hover{background:#f8fafc}.directeur-role-management .role-badge{background:#eff6ff;border-radius:999px;color:#1d4ed8;display:inline-block;font-size:.78rem;font-weight:600;padding:4px 10px}.directeur-role-management .role-badge-protected{background:#fff7ed;color:#c2410c}.directeur-role-management .protected-note{color:#b45309;display:inline-block;font-size:.76rem;font-weight:700;margin-left:8px}.directeur-role-management .btn-delete,.directeur-role-management .btn-edit{border:1px solid #0000;border-radius:8px;cursor:pointer;font-size:.82rem;font-weight:600;margin-right:6px;padding:5px 10px}.directeur-role-management .btn-edit{background:#3b82f6;border-color:#3b82f6;color:#fff}.directeur-role-management .btn-edit:hover{background:#2563eb;border-color:#2563eb}.directeur-role-management .btn-delete{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.directeur-role-management .btn-delete:hover{background:#fecaca;border-color:#f87171}.directeur-role-management .btn-delete:disabled,.directeur-role-management .btn-edit:disabled,.directeur-role-management .btn-primary:disabled,.directeur-role-management .btn-save:disabled{cursor:not-allowed;opacity:.55}.directeur-role-management .btn-delete:disabled:hover,.directeur-role-management .btn-edit:disabled:hover{background:inherit}.directeur-role-management .no-data{background:#f9fafb;border:1px dashed #d1d5db;border-radius:10px;color:#6b7280;padding:18px;text-align:center}.directeur-role-management .error-message{background:#fef2f2;border:1px solid #fecaca;border-radius:10px;color:#b91c1c;margin-bottom:14px;padding:10px 12px}.directeur-role-management .modal-overlay{align-items:center;background:#0f172a73;display:flex;inset:0;justify-content:center;position:fixed;z-index:2000}.directeur-role-management .modal-content{background:#fff;border:1px solid #e5e7eb;border-radius:14px;width:min(560px,92vw)}.directeur-role-management .modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:14px 16px}.directeur-role-management .modal-header h3{color:#1f2937;font-size:1.1rem;margin:0}.directeur-role-management .modal-close{background:#0000;border:none;color:#6b7280;cursor:pointer;font-size:1.1rem}.directeur-role-management .modal-form{padding:16px}.directeur-role-management .form-group{margin-bottom:12px}.directeur-role-management .form-group label{color:#374151;display:block;font-size:.88rem;font-weight:600;margin-bottom:6px}.directeur-role-management .form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}.directeur-role-management .btn-cancel,.directeur-role-management .btn-save{border-radius:9px;cursor:pointer;font-weight:600;padding:8px 12px}.directeur-role-management .btn-cancel{background:#fff;border:1px solid #d1d5db;color:#4b5563}.directeur-role-management .btn-save{background:#3b82f6;border:1px solid #3b82f6;color:#fff}@media (max-width:980px){.directeur-role-management{padding:16px}.directeur-role-management .stats-strip{grid-template-columns:1fr}.directeur-role-management .section-header{align-items:flex-start;flex-direction:column;gap:10px}.directeur-role-management .filters{grid-template-columns:1fr}.directeur-role-management .management-tabs{flex-direction:column}}.directeur-dashboard{background:#f7f9fc;display:grid;grid-template-columns:260px 1fr;min-height:100vh}.directeur-main{display:flex;flex-direction:column;gap:24px;padding:24px 28px}.directeur-main.roles-section{padding:0}.dashboard-header{align-items:center;display:flex;gap:16px;justify-content:space-between}.header-brand-group{align-items:center;display:flex;gap:.9rem}.header-brand-icon{flex:0 0 auto;height:42px;width:42px}.dashboard-header h2{color:#1e293b;font-size:1.6rem;margin:0}.dashboard-header .muted{color:#64748b;font-size:.95rem;margin-top:4px}.header-user{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:999px;display:flex;gap:12px;padding:6px 12px}.header-user .avatar{background:#3b82f6;border-radius:50%;color:#fff;display:grid;font-weight:700;height:32px;place-items:center;width:32px}.directeur-logout-btn{background:#fee2e2;border:1px solid #fca5a5;border-radius:8px;color:#b91c1c}.directeur-logout-btn,.directeur-refresh-btn{cursor:pointer;font-size:.85rem;font-weight:600;padding:6px 10px}.directeur-refresh-btn{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;color:#1d4ed8}.directeur-refresh-btn:hover:not(:disabled){background:#dbeafe}.directeur-refresh-btn:disabled{cursor:wait;opacity:.7}.directeur-logout-btn:hover{background:#fecaca}.dashboard-filters{grid-gap:16px;background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));padding:20px}.filter-group{display:flex;flex-direction:column}.filter-group label{color:#334155;display:block;font-size:14px;font-weight:600;margin-bottom:8px}.filter-group input,.filter-group select{background:#fff;border:1px solid #d7deea;border-radius:8px;font-size:14px;padding:10px 12px;transition:all .2s;width:100%}.filter-group input:focus,.filter-group select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.plans-container{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.table-wrapper{overflow-x:auto}.plans-table thead{background:#f8fafc;border-bottom:2px solid #e5e7eb}.plans-table th{color:#475569;padding:12px 16px}.plans-table thead .sort-row th{background:#eef2f7}.plans-table thead .sort-row select{border:1px solid #d1d5db}.plans-table td{border-bottom:1px solid #f1f5f9;color:#1e293b;padding:14px 16px}.plans-table tbody tr{cursor:pointer;transition:background-color .2s}.plans-table tbody tr:hover{background-color:#f8fafc}.plans-table tbody tr.selected-row{background-color:#eff6ff}.course-info{display:flex;flex-direction:column;gap:4px}.course-code{color:#1e293b;font-size:13px;font-weight:600}.course-title{color:#64748b;font-size:12px}.status-badge{color:#000!important;letter-spacing:.3px;padding:4px 10px;text-transform:uppercase}.status-pending{background:#fef3c7;color:#000}.status-analysis{background:#e0e7ff;color:#000}.status-validated{background:#d1fae5;color:#000}.status-rejected{background:#fee2e2;color:#000}.status-approved{background:#bbf7d0;color:#000}.action-buttons{flex-wrap:wrap}.action-buttons button,td button{border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600;padding:6px 12px;transition:all .2s}.btn-view-pdf{background:#eff6ff;color:#1e40af}.btn-view-pdf:hover{background:#dbeafe}.btn-open-timeline{background:#fff7ed;color:#c2410c}.btn-open-timeline:hover{background:#ffedd5}.btn-approve{background:#10b981}.btn-approve:hover{background:#059669}.btn-reject{background:#ef4444}.btn-reject:hover{background:#dc2626}.dashboard-stats{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.stat-card{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;padding:20px;text-align:center}.stat-card h3{color:#3b82f6;font-size:2rem;font-weight:700;margin:0 0 8px}.stat-card p{color:#64748b;font-size:.9rem;margin:0}.plans-list{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.plans-table-container{overflow-x:auto}.directeur-validation-section{background:#fff;border-radius:16px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.directeur-validation-header{align-items:center;background:linear-gradient(180deg,#fff,#f8fafc);border-bottom:1px solid #e5e7eb;display:flex;gap:16px;justify-content:space-between;padding:20px 24px}.directeur-validation-header h3{color:#1e293b;font-size:1.2rem;margin:0}.directeur-validation-header p{color:#64748b;font-size:.95rem;margin:6px 0 0}.directeur-selection-chip{background:#fff;border:1px solid #cbd5e1;border-radius:999px;color:#334155;cursor:pointer;font-size:.85rem;font-weight:600;padding:8px 14px}.directeur-selection-chip:hover{background:#f8fafc}.no-data{color:#64748b;font-size:1rem;padding:60px 20px}.timeline-modal-overlay{align-items:center;background:#0f172a73;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:1000}.timeline-modal{background:#fff;border-radius:18px;box-shadow:0 24px 60px #0f172a3d;max-height:80vh;overflow-y:auto;width:min(520px,100%)}.timeline-header{align-items:center;background:#fff;border-bottom:2px solid #e5e7eb;border-radius:18px 18px 0 0;padding:24px}.timeline-header h3{color:#1e293b;font-size:1.2rem;margin:0}.btn-close-timeline{background:#f1f5f9;border:none;border-radius:50%;cursor:pointer;display:grid;font-size:18px;height:32px;place-items:center;transition:all .2s;width:32px}.btn-close-timeline:hover{background:#e2e8f0}.timeline-plan-info{background:#f8fafc;border-bottom:1px solid #e5e7eb;padding:20px 24px}.timeline-plan-info h4{color:#1e293b;font-size:1rem;margin:0 0 8px}.timeline-plan-info p{color:#64748b;font-size:14px;margin:4px 0}.timeline-steps{padding:24px}.timeline-item{align-items:flex-start;display:flex;gap:16px;padding-bottom:24px}.timeline-item:not(:last-child):before{background:#e5e7eb;bottom:0;content:"";left:20px;position:absolute;top:40px;width:2px}.timeline-item.completed:not(:last-child):before{background:#10b981}.timeline-icon{background:#f1f5f9;color:#64748b;display:grid;flex-shrink:0;font-size:20px;place-items:center;position:relative}.timeline-item.completed .timeline-icon{background:#10b981;color:#fff}.timeline-item.current .timeline-icon{animation:pulse 2s ease-in-out infinite;background:#3b82f6;color:#fff}.timeline-item.pending .timeline-icon{background:#f9fafb;border:2px dashed #d1d5db;color:#9ca3af}@keyframes pulse{0%,to{box-shadow:0 0 0 0 #3b82f666}50%{box-shadow:0 0 0 8px #3b82f600}}.timeline-content{flex:1 1}.timeline-label{color:#1e293b;font-weight:600;margin-bottom:4px}.timeline-date{color:#64748b}.timeline-badge{border-radius:12px;color:#000!important;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.5px;margin-top:8px;padding:4px 10px;text-transform:uppercase}.current-step{background:#dbeafe;color:#1e40af;color:#000!important}.pending-step{background:#f3f4f6;color:#6b7280;color:#000!important}.error-message,.loading-message{font-size:1rem;padding:40px;text-align:center}.loading-message{color:#64748b}.error-message{color:#dc2626}@media (max-width:1200px){.directeur-dashboard{grid-template-columns:240px 1fr}}@media (max-width:900px){.directeur-dashboard{grid-template-columns:1fr}.dashboard-header{align-items:flex-start;flex-direction:column}.dashboard-filters{grid-template-columns:1fr}.plans-table{font-size:13px}.plans-table td,.plans-table th{padding:10px 12px}}.validation-pedagogique{background:#f7f9fc;display:flex;flex-direction:column;margin:0 auto;max-width:1400px;min-height:100vh;padding:24px 28px;position:relative}.validation-pedagogique.with-sidebar{grid-gap:24px;display:grid;gap:24px;grid-template-columns:1fr 400px;max-width:1800px}.validation-main-content{width:100%}.pedagogique-banner{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:16px;box-shadow:0 8px 24px #667eea40;color:#fff;font-size:1.5rem;font-weight:700;letter-spacing:-.3px;margin-bottom:28px;padding:24px 32px;text-align:center}.pedagogique-section{background:#fff;border:none;border-radius:16px;box-shadow:0 8px 20px #0000000d;margin-bottom:24px;padding:32px;transition:box-shadow .2s}.pedagogique-section:hover{box-shadow:0 12px 28px #00000014}.pedagogique-section h2{align-items:center;border-bottom:3px solid #f1f5f9;color:#1e293b;display:flex;font-size:1.5rem;font-weight:700;gap:12px;margin-bottom:24px;padding-bottom:16px}.pedagogique-section .radio-group{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:20px;padding:16px}.pedagogique-section .radio-group p{color:#334155;font-size:15px;font-weight:600;margin-bottom:14px}.pedagogique-section .radio-group label{align-items:center;color:#64748b;cursor:default;display:inline-flex;font-size:15px;margin-right:32px}.pedagogique-section .radio-group input[type=radio]{cursor:default;height:18px;margin-right:10px;width:18px}.conseiller-editable{background:linear-gradient(135deg,#fff8e1,#fffbf0);border:3px solid #ffa726;border-radius:12px;box-shadow:0 6px 16px #ffa72626;margin:20px 0;padding:24px;position:relative;transition:all .3s}.conseiller-editable:before{background:#ffa726;border-radius:20px;color:#fff;content:"✏️ Zone modifiable";font-size:13px;font-weight:700;left:20px;letter-spacing:.3px;padding:4px 16px;position:absolute;top:-12px}.conseiller-editable:hover{border-color:#ff9100;box-shadow:0 8px 24px #ffa72640}.badge-editable{background:#ffa726;border-radius:20px;color:#fff;font-size:12px;font-weight:700;letter-spacing:.5px;margin-left:12px;padding:6px 14px;text-transform:uppercase}.conseiller-editable input[type=radio]{accent-color:#ffa726;cursor:pointer;height:20px;width:20px}.conseiller-editable label{color:#1e293b;cursor:pointer;font-size:16px;font-weight:500}.action-buttons-fixed{background:#fff;border-radius:16px 16px 0 0;border-top:1px solid #e5e7eb;bottom:0;box-shadow:0 -8px 24px #0000000f;display:flex;gap:16px;justify-content:center;padding:24px 32px;position:-webkit-sticky;position:sticky;z-index:100}.btn-save-conformite{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:12px;box-shadow:0 6px 16px #667eea4d;color:#fff;cursor:pointer;font-size:15px;font-weight:700;letter-spacing:.3px;padding:14px 32px;transition:all .2s}.btn-save-conformite:hover{box-shadow:0 8px 20px #667eea66;transform:translateY(-2px)}.btn-save-conformite:active{transform:translateY(0)}.btn-approve{background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:12px;box-shadow:0 6px 16px #10b9814d;color:#fff;cursor:pointer;font-size:15px;font-weight:700;letter-spacing:.3px;padding:14px 32px;transition:all .2s}.btn-approve:hover{box-shadow:0 8px 20px #10b98166;transform:translateY(-2px)}.btn-approve:active{transform:translateY(0)}.btn-reject{background:linear-gradient(135deg,#ef4444,#dc2626);border:none;border-radius:12px;box-shadow:0 6px 16px #ef44444d;color:#fff;cursor:pointer;font-size:15px;font-weight:700;letter-spacing:.3px;padding:14px 32px;transition:all .2s}.btn-reject:hover{box-shadow:0 8px 20px #ef444466;transform:translateY(-2px)}.btn-reject:active{transform:translateY(0)}.commentaire-section{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:20px;padding:20px}.commentaire-section label{display:flex;flex-direction:column;gap:12px}.commentaire-section strong{color:#334155;font-size:15px;font-weight:600}.commentaire-section textarea{background:#fff;border:2px solid #e2e8f0;border-radius:10px;color:#1e293b;font-family:inherit;font-size:15px;padding:14px 16px;resize:vertical;transition:all .2s;width:100%}.commentaire-section textarea:focus{border-color:#667eea;box-shadow:0 0 0 4px #667eea1a;outline:none}.grid-readonly-section{background:#fff;border-radius:16px;box-shadow:0 8px 20px #0000000d;margin-bottom:24px;padding:32px}.grid-readonly-section h2{border-bottom:3px solid #f1f5f9;color:#1e293b;font-size:1.4rem;font-weight:700;margin-bottom:24px;padding-bottom:16px}.grid-readonly-section h3{color:#475569;font-size:1.1rem;font-weight:600;margin-bottom:16px;margin-top:28px}.conformite-readonly{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:20px;padding:20px}.conformite-item{align-items:center;display:flex;justify-content:space-between;padding:12px 0}.conformite-item strong{color:#334155;font-weight:600}.conformite-value{border-radius:20px;font-size:13px;font-weight:700;letter-spacing:.5px;padding:8px 18px;text-transform:uppercase}.conformite-value.oui{background:linear-gradient(135deg,#d1f4e0,#a7f3d0);border:2px solid #10b981;color:#065f46}.conformite-value.non{background:linear-gradient(135deg,#fee2e2,#fecaca);border:2px solid #ef4444;color:#991b1b}.sections-summary{margin-top:28px}.summary-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:20px}.summary-item{background:#fff;border:2px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 12px #0000000a;padding:20px;transition:all .2s}.summary-item:hover{border-color:#667eea;box-shadow:0 6px 16px #667eea1f;transform:translateY(-2px)}.summary-item strong{color:#1e293b;display:block;font-size:15px;font-weight:700;margin-bottom:10px}.summary-item p{color:#64748b;font-size:14px;line-height:1.5;margin:0}.validation-error,.validation-loading{font-size:18px;font-weight:600;padding:80px 20px;text-align:center}.validation-loading{color:#667eea}.validation-error{background:#fee2e2;border-radius:16px;color:#ef4444;margin:40px auto;max-width:600px;padding:40px}.commentaire-sidebar{background:#fff;border:2px solid #667eea;border-radius:16px;box-shadow:0 8px 24px #0000001a;height:-webkit-fit-content;height:fit-content;overflow:hidden;position:-webkit-sticky;position:sticky;top:24px}.sidebar-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;justify-content:space-between;padding:20px 24px}.sidebar-header h3{font-size:1.25rem;font-weight:700;margin:0}.btn-close-sidebar{align-items:center;background:#fff3;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:18px;height:32px;justify-content:center;transition:all .2s;width:32px}.btn-close-sidebar:hover{background:#ffffff4d;transform:rotate(90deg)}.sidebar-content{padding:24px}.element-name{background:#f8fafc;border-left:4px solid #667eea;border-radius:8px;margin-bottom:16px;padding:12px}.sidebar-actions{border-top:2px solid #f1f5f9;display:flex;gap:12px;padding:20px 24px}.btn-save-comment{background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:8px;color:#fff;cursor:pointer;flex:1 1;font-weight:600;padding:12px 20px;transition:all .3s}.btn-save-comment:hover{background:linear-gradient(135deg,#059669,#047857);box-shadow:0 4px 12px #10b9814d;transform:translateY(-2px)}.btn-cancel{background:#f1f5f9;border:none;border-radius:8px;color:#64748b;cursor:pointer;flex:1 1;font-weight:600;padding:12px 20px;transition:all .3s}.btn-cancel:hover{background:#e2e8f0}.btn-comment{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:6px 12px;transition:all .2s}.btn-comment:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 2px 8px #3b82f64d;transform:scale(1.05)}@media (max-width:768px){.validation-pedagogique{padding:16px}.grid-readonly-section,.pedagogique-section{padding:20px}.action-buttons-fixed{flex-direction:column;padding:20px}.btn-approve,.btn-reject,.btn-save-conformite{width:100%}.summary-grid{grid-template-columns:1fr}.conformite-item{align-items:flex-start;flex-direction:column;gap:10px}}.admin-shell{background:#f7f9fc;display:grid;grid-template-columns:250px 1fr;min-height:100vh}.admin-content{padding:24px 28px}.admin-sidebar-clean{background:#fff;border-right:1px solid #e5e7eb;display:flex;flex-direction:column;justify-content:space-between;padding:18px 14px}.admin-brand-clean{margin-bottom:2px}.admin-brand-logo{display:block;height:auto;width:min(100%,172px)}.admin-brand-sub{color:#6b7280;font-size:.82rem;margin-bottom:18px}.admin-nav-clean{grid-gap:8px;display:grid;gap:8px}.admin-nav-clean button{background:#fff;border:1px solid #dbe2ea;border-radius:10px;color:#334155;cursor:pointer;font-size:.9rem;font-weight:600;padding:9px 12px;text-align:left}.admin-nav-clean button:hover{background:#f8fafc;border-color:#cdd6e3}.admin-nav-clean button.active{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.admin-user-box{border-top:1px solid #e5e7eb;padding-top:10px}.admin-user-name{color:#1f2937;font-weight:700;margin-bottom:8px}.admin-logout-clean{background:#fff;border:1px solid #d1d5db;border-radius:9px;color:#374151;cursor:pointer;font-weight:600;padding:8px 10px;width:100%}.admin-logout-clean:hover{background:#f3f4f6}@media (max-width:980px){.admin-shell{grid-template-columns:1fr}.admin-sidebar-clean{border-bottom:1px solid #e5e7eb;border-right:none}.admin-content{padding:16px}}.admin-role-page{background:#f7f9fc;display:grid;grid-template-columns:250px 1fr;min-height:100vh}.admin-role-main{padding:24px}.admin-role-header h1{color:#1f2937;font-size:1.7rem;margin:0}.admin-role-header p{color:#64748b;margin:6px 0 0}.admin-role-kpi-strip{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-top:16px}.admin-role-kpi-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;flex-direction:column;gap:6px;padding:16px 18px}.admin-role-kpi-helper,.admin-role-kpi-label{color:#6b7280;font-size:.84rem}.admin-role-kpi-value{color:#111827;font-size:1.6rem;font-weight:700}.admin-role-card{background:#fff;border:1px solid #e5e7eb;border-radius:14px;margin-top:16px;padding:16px}.admin-role-toolbar{grid-gap:10px;display:grid;gap:10px;grid-template-columns:1.4fr 220px auto;margin-bottom:12px}.filter-select,.search-input{background:#fff;border:1px solid #d1d5db;border-radius:10px;font-size:.92rem;padding:10px 12px}.filter-select:focus,.search-input:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1f;outline:none}.btn-primary{background:#2563eb;border:1px solid #2563eb;border-radius:10px;color:#fff;cursor:pointer;font-weight:700;padding:9px 14px}.btn-primary:hover{background:#1d4ed8}.data-table-container{overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table thead{background:#eff6ff}.data-table th{color:#475569;font-size:.78rem;letter-spacing:.04em;padding:11px 10px;text-align:left;text-transform:uppercase}.data-table td{border-top:1px solid #f1f5f9;color:#0f172a;font-size:.9rem;padding:10px}.data-table tbody tr:hover{background:#f8fafc}.role-badge{border-radius:999px;display:inline-block;font-size:.72rem;padding:4px 9px}.role-badge.EN{background:#dbeafe;color:#1d4ed8}.role-badge.CE{background:#f3e8ff;color:#7e22ce}.role-badge.CP{background:#ffedd5;color:#c2410c}.role-badge.DA{background:#dcfce7;color:#166534}.role-badge.SC{background:#fee2e2;color:#b91c1c}.actions-cell{white-space:nowrap}.btn-icon{border:1px solid #0000;border-radius:8px;cursor:pointer;font-size:.86rem;margin-right:6px;padding:6px 9px}.btn-edit{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.btn-delete{background:#fef2f2;border-color:#fecaca;color:#dc2626}.error-message,.loading,.no-data{color:#6b7280;padding:16px;text-align:center}.error-message{background:#fef2f2;border:1px solid #fecaca;border-radius:10px;color:#b91c1c}.modal-overlay{background:#02061773;display:grid;inset:0;place-items:center;z-index:1200}.modal-content{border:1px solid #e5e7eb;border-radius:14px;width:min(560px,92vw)}.modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:14px 16px}.modal-close{background:#0000;border:none;color:#6b7280;cursor:pointer;font-size:1.15rem}.modal-form{padding:16px}.form-group{margin-bottom:12px}.form-group label{color:#374151;display:block;font-size:.88rem}.form-group input,.form-group select{border:1px solid #d1d5db;border-radius:10px;padding:10px 12px;width:100%}.form-actions{gap:8px;justify-content:flex-end;margin-top:14px}.btn-cancel,.btn-save{border-radius:9px;cursor:pointer;font-weight:700;padding:8px 12px}.btn-cancel{color:#4b5563}.btn-save{background:#2563eb;border:1px solid #2563eb;color:#fff}@media (max-width:980px){.admin-role-page,.admin-role-toolbar{grid-template-columns:1fr}}.admin-graph-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px}.admin-graph-header{margin-bottom:16px}.admin-graph-header h3{color:#1f2937;font-size:1.05rem;margin:0}.admin-graph-header p{color:#6b7280;font-size:.88rem;margin:6px 0 0}.admin-graph-empty{color:#6b7280;font-size:.92rem;padding:24px 0}.admin-bar-chart{grid-gap:14px;align-items:end;display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(74px,1fr));min-height:250px}.admin-bar-item{align-items:center;display:flex;flex-direction:column;gap:10px}.admin-bar-value{color:#334155;font-size:.85rem;font-weight:700}.admin-bar-track{align-items:flex-end;background:#f1f5f9;display:flex;height:180px;overflow:hidden}.admin-bar-fill,.admin-bar-track{border-radius:999px;width:100%}.admin-bar-label{color:#475569;font-size:.8rem;text-align:center}.admin-horizontal-chart{grid-gap:14px;display:grid;gap:14px}.admin-horizontal-item{grid-gap:8px;display:grid;gap:8px}.admin-horizontal-meta{align-items:center;color:#334155;display:flex;font-size:.9rem;gap:12px;justify-content:space-between}.admin-horizontal-track{background:#e2e8f0;border-radius:999px;height:12px;overflow:hidden}.admin-horizontal-fill{border-radius:999px;height:100%}.admin-donut-layout{grid-gap:20px;align-items:center;display:grid;gap:20px;grid-template-columns:180px 1fr}.admin-donut-wrap{height:160px;margin:0 auto;position:relative;width:160px}.admin-donut-svg{height:160px;transform:rotate(-90deg);width:160px}.admin-donut-base,.admin-donut-segment{fill:none;stroke-width:16}.admin-donut-base{stroke:#e5e7eb}.admin-donut-segment{stroke-linecap:butt}.admin-donut-center{align-items:center;color:#111827;display:flex;flex-direction:column;inset:0;justify-content:center;position:absolute}.admin-donut-center strong{font-size:1.7rem}.admin-donut-center span{color:#6b7280;font-size:.85rem}.admin-donut-legend{grid-gap:10px;display:grid;gap:10px}.admin-donut-legend-item{grid-gap:10px;align-items:center;color:#334155;display:grid;font-size:.9rem;gap:10px;grid-template-columns:12px 1fr auto}.admin-donut-dot{border-radius:999px;height:12px;width:12px}.admin-donut-legend-value{color:#0f172a}@media (max-width:768px){.admin-donut-layout{grid-template-columns:1fr}}.admin-dashboard{background:#0000;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;min-height:auto;padding:0}.admin-header{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;justify-content:space-between;margin-bottom:28px;padding:24px 28px}.admin-header h1{color:#2c3e50;font-size:1.6rem;font-weight:700;margin:0}.admin-actions{display:flex;flex-wrap:wrap;gap:15px}.btn-activity,.btn-primary,.btn-secondary,.btn-sessions{background:#3b82f6;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;padding:8px 14px;transition:all .2s ease}.btn-activity:hover,.btn-primary:hover,.btn-secondary:hover,.btn-sessions:hover{background:#2563eb;transform:translateY(-1px)}.btn-activity:disabled,.btn-primary:disabled,.btn-secondary:disabled,.btn-sessions:disabled{cursor:wait;opacity:.7;transform:none}.admin-kpi-strip{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:20px}.admin-kpi-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;flex-direction:column;gap:6px;padding:16px 18px}.admin-kpi-helper,.admin-kpi-label{color:#6b7280;font-size:.85rem}.admin-kpi-value{color:#111827;font-size:1.7rem;font-weight:700}.admin-graphs-grid{margin-bottom:28px}.admin-graphs-grid,.content-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.dashboard-section{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:24px}.dashboard-section.wide{grid-column:span 2}.dashboard-section h2{border-bottom:1px solid #e5e7eb;color:#2c3e50;font-size:1.1rem;font-weight:700;margin:0 0 20px;padding-bottom:12px}.role-stats{display:flex;flex-direction:column;gap:12px}.role-stat-item{align-items:center;background:#f8f9fa;border-radius:8px;display:flex;gap:15px;padding:12px;transition:all .3s ease}.role-stat-item:hover{background:#e9ecef}.role-badge{align-items:center;border-radius:10px;display:flex;font-size:14px;height:50px;justify-content:center;width:50px}.role-stat-details{display:flex;flex:1 1;flex-direction:column;gap:4px}.role-name{color:#2c3e50;font-weight:600}.role-count{color:#7f8c8d;font-size:13px}.status-chart{gap:15px}.status-bar,.status-chart{display:flex;flex-direction:column}.status-bar{gap:8px}.status-label{color:#2c3e50;display:flex;font-size:13px;font-weight:600;justify-content:space-between}.status-count{color:#7f8c8d}.status-progress{background:#ecf0f1;border-radius:5px;height:10px;overflow:hidden}.status-fill{height:100%;transition:width .5s ease}.rate-stats{display:flex;gap:20px;justify-content:space-around}.rate-item{flex-direction:column;gap:10px}.rate-circle,.rate-item{align-items:center;display:flex}.rate-circle{border-radius:50%;height:100px;justify-content:center;position:relative;width:100px}.rate-item.success .rate-circle{background:#10b981}.rate-item.approval .rate-circle{background:#3b82f6}.rate-item.reject .rate-circle{background:#ef4444}.rate-value{color:#fff;font-size:24px;font-weight:700}.rate-item p{color:#7f8c8d;font-size:13px;margin:0;text-align:center}.validation-stats{display:flex;flex-direction:column;gap:10px}.validation-item{background:#f8f9fa;border-radius:8px;display:flex;justify-content:space-between;padding:12px 15px}.validation-role{color:#2c3e50;font-weight:600}.validation-count{color:#7f8c8d;font-size:14px}.active-users-table table,.recent-plans-table table{border-collapse:collapse;width:100%}.active-users-table th,.recent-plans-table th{background:#f8f9fa;border-bottom:2px solid #ecf0f1;color:#2c3e50;font-size:13px;font-weight:600;padding:12px;text-align:left}.active-users-table td,.recent-plans-table td{border-bottom:1px solid #ecf0f1;color:#2c3e50;font-size:14px;padding:12px}.active-users-table tr:hover,.recent-plans-table tr:hover{background:#f8f9fa}.role-badge-small{background:#3b82f6;font-weight:600}.role-badge-small,.validation-badge{border-radius:12px;color:#fff;font-size:12px;padding:4px 12px}.validation-badge{background:#10b981;font-weight:700}.status-badge{border-radius:12px;color:#fff;display:inline-block;font-size:12px;font-weight:600;padding:4px 12px}.no-data{padding:20px!important}.activity-timeline{display:flex;flex-direction:column;gap:15px}.activity-item{background:#f9fafb;border-left:3px solid #3b82f6;border-radius:8px;display:flex;gap:15px;padding:15px}.activity-icon{align-items:center;background:#3b82f6;border-radius:50%;color:#fff;display:flex;flex-shrink:0;font-size:16px;height:40px;justify-content:center;width:40px}.activity-content{flex:1 1}.activity-text{color:#2c3e50;font-size:14px;margin:0 0 5px}.activity-text strong{color:#3b82f6}.activity-date{color:#95a5a6;font-size:12px}.top-teachers{display:flex;flex-direction:column;gap:12px}.teacher-item{align-items:center;background:#f8f9fa;border-radius:8px;display:flex;gap:15px;padding:12px;transition:all .3s ease}.teacher-item:hover{background:#e9ecef;transform:translateX(5px)}.teacher-rank{align-items:center;background:#3b82f6;border-radius:50%;color:#fff;display:flex;font-size:16px;font-weight:700;height:40px;justify-content:center;width:40px}.teacher-details{display:flex;flex-direction:column;gap:4px}.teacher-name{color:#2c3e50;font-weight:600}.teacher-stats{color:#7f8c8d;font-size:12px}.chef-stats{gap:12px}.chef-item,.chef-stats{display:flex;flex-direction:column}.chef-item{background:#f8f9fa;border-radius:8px;gap:8px;padding:12px}.chef-name{color:#2c3e50;font-size:14px;font-weight:600}.chef-progress{align-items:center;display:flex;gap:10px}.chef-bar{background:#ecf0f1;border-radius:4px;flex:1 1;height:8px;overflow:hidden}.chef-fill{background:#10b981;height:100%;transition:width .5s ease}.chef-count{color:#7f8c8d;font-size:12px;font-weight:600;min-width:50px;text-align:right}@media (max-width:768px){.admin-header{align-items:flex-start;flex-direction:column;gap:15px}.admin-actions{flex-direction:column;width:100%}.admin-actions button{width:100%}.content-grid,.stats-grid{grid-template-columns:1fr}.dashboard-section.wide{grid-column:span 1}.rate-stats{flex-direction:column}}.plans-management{background:#0000;min-height:auto;padding:0}.plans-header{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;justify-content:space-between;margin-bottom:25px;padding:25px 30px}.plans-header h1{color:#2c3e50;font-size:28px;font-weight:700;margin:0 0 5px}.plans-count{color:#7f8c8d;font-size:14px;margin:0}.plans-kpi-strip{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:25px}.plans-kpi-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;flex-direction:column;gap:6px;padding:16px 18px}.plans-kpi-helper,.plans-kpi-label{color:#6b7280;font-size:.84rem}.plans-kpi-value{color:#111827;font-size:1.6rem;font-weight:700}.plans-table-container{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden}.plans-table{border-collapse:collapse;width:100%}.plans-table thead{background:#eff6ff}.plans-table th{color:#334155;font-size:13px;font-weight:600;letter-spacing:.5px;padding:15px;text-align:left;text-transform:uppercase}.plans-table .sort-label{align-items:center;display:inline-flex;gap:6px}.plans-table .sort-indicator{color:#64748b;font-size:.82rem;line-height:1}.plans-table thead .sort-row th{background:#dbeafe;padding-bottom:10px;padding-top:6px}.plans-table thead .sort-row select{background:#fff;border:1px solid #cbd5e1;border-radius:6px;font-size:12px;min-width:90px;padding:4px 6px;width:100%}.plans-table td{border-bottom:1px solid #ecf0f1;color:#2c3e50;font-size:14px;padding:15px}.plans-table tbody tr{transition:all .3s ease}.plans-table tbody tr:hover{background:#f8f9fa}.plan-cours{color:#1d4ed8;font-weight:600}.status-select{border:none;border-radius:12px;cursor:pointer;font-size:12px;font-weight:600;padding:6px 12px;transition:all .3s ease}.status-select:hover{opacity:.9}.status-select option{background:#fff;color:#2c3e50}.action-buttons{display:flex;gap:8px}.btn-delete,.btn-view{align-items:center;border:none;border-radius:6px;cursor:pointer;display:inline-flex;font-size:13px;font-weight:600;gap:6px;line-height:1;padding:9px 13px;transition:all .3s ease}.btn-view{background:#3498db;color:#fff;justify-content:center;min-width:112px}.btn-view:hover{background:#2980b9;transform:translateY(-2px)}.btn-delete{background:#e74c3c;justify-content:center;min-width:112px}.btn-delete:hover{background:#c0392b;transform:translateY(-2px)}.no-data{color:#95a5a6;padding:40px!important}.modal-overlay{align-items:center;animation:fadeIn .3s ease;background:#0009;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.modal-content{animation:slideUp .3s ease;background:#fff;border-radius:12px;box-shadow:0 10px 40px #0000004d;max-width:500px;padding:30px;width:90%}.modal-content h2{color:#2c3e50;font-size:24px;margin:0 0 15px}.modal-content p{color:#7f8c8d;line-height:1.6;margin:0 0 10px}.modal-content p strong{color:#667eea}.warning-text{color:#e74c3c;font-size:13px;font-weight:600;margin-top:15px!important}.modal-actions{display:flex;gap:15px;justify-content:flex-end;margin-top:25px}.btn-cancel,.btn-confirm-delete{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;padding:12px 24px;transition:all .3s ease}.btn-cancel{background:#95a5a6;color:#fff}.btn-cancel:hover{background:#7f8c8d}.btn-confirm-delete{background:#e74c3c;color:#fff}.btn-confirm-delete:hover{background:#c0392b;box-shadow:0 6px 20px #e74c3c66;transform:translateY(-2px)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media (max-width:1200px){.plans-table{font-size:13px}.plans-table td,.plans-table th{padding:12px 10px}}@media (max-width:768px){.plans-header{align-items:flex-start;flex-direction:column;gap:15px}.btn-back{width:100%}.filters-section{flex-direction:column}.btn-reset,.filter-select{width:100%}.plans-table-container{overflow-x:auto}.plans-table{min-width:800px}}.admin-plan-detail{padding:0}.admin-plan-detail-header{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;gap:12px;justify-content:space-between;margin-bottom:18px;padding:20px}.admin-plan-detail-header h1{color:#1f2937;font-size:1.45rem;margin:0}.admin-plan-detail-header p{color:#64748b;margin:6px 0 0}.btn-back-list{background:#fff;border:1px solid #d1d5db;border-radius:10px;color:#374151;cursor:pointer;font-weight:600;padding:10px 14px}.btn-back-list:hover{background:#f3f4f6}.admin-plan-detail-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:2fr 1fr}.admin-plan-detail-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:18px}.admin-plan-detail-card h2{color:#1f2937;font-size:1.05rem;margin:0 0 12px}.admin-plan-fields{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.admin-plan-fields div{background:#f8fafc;border:1px solid #f1f5f9;border-radius:10px;padding:10px}.admin-plan-fields span{color:#64748b;display:block;font-size:.8rem;margin-bottom:4px}.admin-plan-fields strong{color:#0f172a;font-size:.92rem}.admin-plan-actions{grid-gap:10px;display:grid;gap:10px}.btn-action{background:#2563eb;border:1px solid #2563eb;border-radius:10px;color:#fff;cursor:pointer;font-weight:600;padding:10px 14px}.btn-action:hover{background:#1d4ed8}.admin-plan-note{color:#64748b;font-size:.86rem;margin-top:12px}.admin-plan-error{background:#fff1f2;border-color:#fecdd3;color:#b91c1c}@media (max-width:900px){.admin-plan-detail-grid,.admin-plan-fields{grid-template-columns:1fr}}.activity-logs{background:#0000;min-height:auto;padding:0}.activity-header{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;justify-content:space-between;margin-bottom:25px;padding:25px 30px}.activity-header h1{color:#2c3e50;font-size:28px;font-weight:700;margin:0 0 5px}.activity-count{color:#7f8c8d;font-size:14px;margin:0}.activity-kpi-strip{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:25px}.activity-kpi-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;flex-direction:column;gap:6px;padding:16px 18px}.activity-kpi-helper,.activity-kpi-label{color:#6b7280;font-size:.84rem}.activity-kpi-value{color:#111827;font-size:1.6rem;font-weight:700}.btn-back{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:12px 24px;transition:all .3s ease}.btn-back:hover{box-shadow:0 6px 20px #667eea66;transform:translateY(-2px)}.filters-section{background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;flex-wrap:wrap;gap:15px;margin-bottom:25px;padding:20px}.search-box{flex:1 1;min-width:250px;position:relative}.search-box i{color:#7f8c8d;left:15px;position:absolute;top:50%;transform:translateY(-50%)}.search-box input{border:1px solid #d1d5db;border-radius:8px;font-size:14px;padding:12px 15px 12px 45px;transition:all .3s ease;width:100%}.search-box input:focus{border-color:#2563eb;outline:none}.filter-select{background:#fff;border:1px solid #d1d5db;border-radius:8px;color:#2c3e50;cursor:pointer;font-size:14px;min-width:180px;padding:12px 15px;transition:all .3s ease}.filter-select:focus{border-color:#2563eb;outline:none}.date-filters{align-items:center;display:flex;gap:10px}.date-input{background:#fff;border:1px solid #d1d5db;border-radius:8px;color:#2c3e50;cursor:pointer;font-size:14px;padding:12px 15px;transition:all .3s ease}.date-input:focus{border-color:#2563eb;outline:none}.date-filters span{color:#7f8c8d;font-weight:600}.btn-filter{background:#3498db;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:12px 20px;transition:all .3s ease;white-space:nowrap}.btn-filter:hover{background:#2980b9}.btn-reset{background:#e74c3c;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:12px 20px;transition:all .3s ease;white-space:nowrap}.btn-reset:hover{background:#c0392b}.activity-timeline-container{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:30px}.activity-timeline{padding-left:50px;position:relative}.activity-timeline:before{background:#dbeafe;bottom:0;content:"";left:20px;position:absolute;top:0;width:3px}.timeline-item{border-bottom:1px solid #ecf0f1;margin-bottom:30px;padding-bottom:30px;position:relative}.timeline-item:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.timeline-icon{align-items:center;border-radius:50%;box-shadow:0 2px 8px #00000026;color:#fff;display:flex;font-size:16px;height:40px;justify-content:center;left:-36px;position:absolute;top:0;width:40px;z-index:1}.timeline-content{background:#f8f9fa;border-radius:10px;margin-left:10px;padding:20px;transition:all .3s ease}.timeline-content:hover{background:#eef2f7;transform:translateX(5px)}.timeline-header{align-items:flex-start;display:flex;gap:15px;justify-content:space-between;margin-bottom:12px}.timeline-title{align-items:center;display:flex;flex:1 1;gap:12px}.timeline-description{color:#2c3e50;font-size:15px;font-weight:600}.role-badge{border-radius:12px;color:#fff;font-size:11px;font-weight:700;letter-spacing:.5px;padding:4px 12px;text-transform:uppercase}.timeline-date{color:#95a5a6;font-size:13px;white-space:nowrap}.timeline-meta{align-items:center;color:#7f8c8d;display:flex;font-size:13px;gap:8px;margin-bottom:8px}.timeline-meta:last-child{margin-bottom:0}.timeline-meta i{color:#95a5a6;width:16px}.timeline-meta strong{color:#1d4ed8}.no-activity{align-items:center;color:#95a5a6;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.no-activity i{font-size:64px;margin-bottom:20px;opacity:.3}.loading-spinner,.no-activity p{font-size:18px;font-weight:600}.loading-spinner{color:#1f2937;height:60vh}@media (max-width:768px){.activity-header{align-items:flex-start;flex-direction:column;gap:15px}.btn-back{width:100%}.filters-section{flex-direction:column}.search-box{min-width:100%}.filter-select{width:100%}.date-filters{align-items:stretch;flex-direction:column;width:100%}.btn-filter,.btn-reset,.date-input{width:100%}.activity-timeline{padding-left:40px}.activity-timeline:before{left:15px}.timeline-icon{font-size:14px;height:35px;left:-31px;width:35px}.timeline-header{align-items:flex-start;flex-direction:column}.timeline-date{white-space:normal}}.sessions-management{background:#f7f9fc;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;min-height:100vh;padding:28px}.sessions-header{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:24px}.sessions-header h2{color:#2c3e50;font-size:1.6rem;font-weight:700;margin:0}.sessions-header-info{align-items:center;color:#666;display:flex;font-size:.9rem;gap:8px}.sessions-kpi-strip{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:20px}.sessions-kpi-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;flex-direction:column;gap:6px;padding:16px 18px}.sessions-kpi-helper,.sessions-kpi-label{color:#6b7280;font-size:.84rem}.sessions-kpi-value{color:#111827;font-size:1.6rem;font-weight:700}.header-actions{align-items:center;display:flex;gap:10px}.btn-add,.btn-back{border:none;border-radius:8px;cursor:pointer;font-size:.9rem;font-weight:600;padding:8px 14px;transition:all .2s ease}.btn-back{background:#f0f0f0;border:1px solid #d1d5db;color:#333}.btn-back:hover{background:#e5e7eb;transform:translateY(-1px)}.btn-add{background:#3b82f6;color:#fff}.btn-add:hover{background:#2563eb;transform:translateY(-1px)}.card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;margin-bottom:20px}.error-banner{background:#fee2e2;border:1px solid #fecaca;border-radius:8px;color:#991b1b;font-size:.9rem;margin-bottom:20px;padding:12px 16px}.session-form{margin-bottom:0;padding:20px}.form-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:18px}.form-group{display:flex;flex-direction:column}.form-group label{color:#2c3e50;font-size:.9rem;font-weight:600;margin-bottom:6px}.form-group input[type=date],.form-group input[type=text]{background:#fff;border:1px solid #d7deea;border-radius:8px;font-size:.95rem;padding:8px 10px;transition:all .2s ease}.form-group input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.form-group.checkbox{align-items:flex-start;justify-content:center}.form-group.checkbox label{align-items:center;cursor:pointer;display:flex;font-size:.9rem;gap:8px;margin-top:22px}.form-actions{display:flex;gap:10px;margin-top:20px}.btn-cancel,.btn-submit{border:none;border-radius:8px;cursor:pointer;font-size:.9rem;font-weight:600;padding:8px 14px;transition:all .2s ease}.btn-submit{background:#3b82f6;color:#fff}.btn-submit:hover{background:#2563eb;transform:translateY(-1px)}.btn-cancel{background:#fff;border:1px solid #d1d5db;color:#333}.btn-cancel:hover{background:#f3f4f6}.sessions-table-wrapper{overflow-x:auto}.sessions-table{border-collapse:collapse;width:100%}.sessions-table thead{background:#f3f4f6;border-bottom:2px solid #d1d5db}.sessions-table th{color:#2c3e50;font-size:.85rem;font-weight:700;letter-spacing:.5px;padding:12px 15px;text-align:left;text-transform:uppercase}.sessions-table td{border-bottom:1px solid #e5e7eb;color:#444;font-size:.95rem;padding:12px 15px}.sessions-table tbody tr:hover{background:#f9fafb}.code{color:#333}.code,.nom{font-weight:600}.created,.dates{color:#666;font-size:.9rem}.statut .badge{border-radius:12px;display:inline-block;font-size:.8rem;font-weight:600;padding:4px 10px}.badge.active{background:#d1fae5;color:#065f46}.badge.inactive{background:#fee2e2;color:#991b1b}.actions{display:flex;gap:8px}.btn-delete,.btn-edit{border:none;border-radius:6px;cursor:pointer;font-size:.8rem;font-weight:600;padding:4px 10px;transition:all .2s ease}.btn-edit{background:#3b82f6;color:#fff}.btn-edit:hover{background:#2563eb;transform:translateY(-1px)}.btn-delete{background:#ef4444;color:#fff}.btn-delete:hover{background:#dc2626;transform:translateY(-1px)}.no-data{color:#999;font-style:italic;padding:40px 15px;text-align:center}.loading-spinner{align-items:center;color:#666;display:flex;font-size:1rem;font-weight:500;height:100vh;justify-content:center}@media (max-width:992px){.sessions-header{align-items:flex-start;flex-direction:column;gap:12px}.header-actions{flex-wrap:wrap;width:100%}}@media (max-width:768px){.sessions-management{padding:16px}.sessions-header{align-items:flex-start;flex-direction:column}.sessions-header h2{font-size:1.4rem}.btn-add,.btn-back{width:100%}.sessions-table-wrapper{overflow-x:auto}.sessions-table{font-size:.85rem}.sessions-table td,.sessions-table th{padding:8px 10px}.btn-delete,.btn-edit{font-size:.75rem;padding:3px 8px}}
/*# sourceMappingURL=main.57a35faa.css.map*/