:root{--ad-primary:#2563eb;--ad-primary-dark:#1e3a5f;--ad-primary-light:#dbeafe;--ad-success:#10b981;--ad-success-light:#d1fae5;--ad-success-dark:#065f46;--ad-warning:#f59e0b;--ad-warning-light:#fef3c7;--ad-warning-dark:#92400e;--ad-danger:#ef4444;--ad-danger-light:#fee2e2;--ad-danger-dark:#991b1b;--ad-orange:#f97316;--ad-orange-light:#ffedd5;--ad-text:#1f2937;--ad-text-secondary:#6b7280;--ad-text-muted:#9ca3af;--ad-bg:#f3f4f6;--ad-bg-white:#ffffff;--ad-border:#e5e7eb;--ad-radius:0.75rem;--ad-radius-lg:1rem;--ad-shadow-sm:0 1px 3px rgba(0, 0, 0, 0.08);--ad-shadow-md:0 4px 12px rgba(0, 0, 0, 0.1);--ad-shadow-lg:0 8px 24px rgba(0, 0, 0, 0.12);--ad-transition:0.2s ease;--ad-font:'Nunito',system-ui,sans-serif}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--ad-font);background:var(--ad-bg);min-height:100vh;color:var(--ad-text)}.analytics-page{max-width:1200px;margin:0 auto;padding:1rem 1.5rem 3rem}.analytics-header{background:linear-gradient(135deg,var(--ad-primary-dark),var(--ad-primary));color:#fff;padding:1.5rem 2rem;border-radius:var(--ad-radius-lg);margin-bottom:1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.analytics-header-predictive{background:linear-gradient(135deg,#4c1d95,#7c3aed)}.analytics-header-content h1{font-size:1.5rem;font-weight:800;margin-bottom:.25rem}.analytics-header-content h1 i{margin-right:.5rem}.analytics-header-content p{opacity:.9;font-size:.95rem}.analytics-back-link{display:inline-flex;align-items:center;gap:.5rem;color:var(--ad-primary);text-decoration:none;font-weight:600;font-size:.9rem;margin-bottom:1rem;transition:color var(--ad-transition)}.analytics-back-link:hover{color:var(--ad-primary-dark);text-decoration:underline}.analytics-classroom-select-wrap{flex-shrink:0}.analytics-classroom-select{padding:.5rem 2rem .5rem .75rem;border:2px solid rgba(255,255,255,.3);border-radius:.5rem;background:rgba(255,255,255,.15);color:#fff;font-family:var(--ad-font);font-size:.9rem;font-weight:600;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23FFFFFF' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .6rem center;transition:border-color var(--ad-transition),background var(--ad-transition)}.analytics-classroom-select:hover{border-color:rgba(255,255,255,.6);background:rgba(255,255,255,.25)}.analytics-classroom-select:focus{outline:0;border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.2)}.analytics-classroom-select option{color:var(--ad-text);background:var(--ad-bg-white)}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.5rem}.stat-card{background:var(--ad-bg-white);border-radius:var(--ad-radius);padding:1.25rem;text-align:center;border-left:4px solid var(--card-color,transparent);box-shadow:var(--ad-shadow-sm);transition:transform var(--ad-transition),box-shadow var(--ad-transition);position:relative;overflow:hidden}.stat-card::before{content:none}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--ad-shadow-md)}.stat-card-bordered::before{content:none}.stat-card-icon{font-size:1.25rem;margin-bottom:.5rem}.stat-card-value{font-size:1.75rem;font-weight:800;color:var(--ad-text);line-height:1.2}.stat-card-label{font-size:.8rem;color:var(--ad-text-secondary);margin-top:.25rem}.analytics-section{margin-bottom:2rem}.analytics-section-title{font-size:1.15rem;font-weight:700;color:var(--ad-text);margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.analytics-section-title i{color:var(--ad-primary)}.student-table-wrap{background:var(--ad-bg-white);border-radius:var(--ad-radius);overflow:hidden;box-shadow:var(--ad-shadow-sm);overflow-x:auto}.student-table{width:100%;border-collapse:collapse}.student-table th{background:#f9fafb;padding:.75rem 1rem;text-align:left;font-size:.8rem;font-weight:700;color:var(--ad-text-secondary);text-transform:uppercase;letter-spacing:.03em;border-bottom:2px solid var(--ad-border);white-space:nowrap}.student-table td{padding:.75rem 1rem;border-bottom:1px solid #f3f4f6;font-size:.9rem;vertical-align:middle}.student-table tr:last-child td{border-bottom:none}.student-table tbody tr:hover{background:#f9fafb}.student-table-empty{text-align:center;color:var(--ad-text-muted);padding:2.5rem 1rem;font-size:.9rem}.student-row-excellent{border-left:4px solid var(--ad-success)}.student-row-bon{border-left:4px solid var(--ad-primary)}.student-row-moyen{border-left:4px solid var(--ad-warning)}.student-row-fragile{border-left:4px solid var(--ad-danger)}.student-row-clickable{cursor:pointer;transition:background var(--ad-transition)}.student-row-clickable:focus{outline:2px solid var(--ad-primary);outline-offset:-2px}.actions-cell{display:flex;gap:.4rem;align-items:center}.risk-badge{display:inline-block;padding:.2rem .6rem;border-radius:2rem;font-size:.75rem;font-weight:700;white-space:nowrap}.risk-low{background:var(--ad-success-light);color:var(--ad-success-dark)}.risk-moderate{background:var(--ad-warning-light);color:var(--ad-warning-dark)}.risk-high{background:var(--ad-orange-light);color:#9a3412}.risk-critical{background:var(--ad-danger-light);color:var(--ad-danger-dark)}.risk-factor-tag{display:inline-block;padding:.15rem .5rem;border-radius:.25rem;font-size:.72rem;font-weight:600;background:#eff6ff;color:#1e40af;margin:.1rem .2rem .1rem 0}.risk-gauge{width:180px;height:90px;position:relative;overflow:hidden}.risk-gauge-track{width:180px;height:180px;border-radius:50%;background:conic-gradient(var(--ad-success) 0deg 60deg,var(--ad-warning) 60deg 120deg,var(--ad-orange) 120deg 150deg,var(--ad-danger) 150deg 180deg,var(--ad-border) 180deg 360deg);position:relative}.risk-gauge-track::after{content:'';position:absolute;top:25px;left:25px;width:130px;height:130px;border-radius:50%;background:var(--ad-bg-white)}.risk-gauge-fill{position:absolute;top:50%;left:50%;width:4px;height:65px;background:var(--ad-text);border-radius:2px;transform-origin:bottom center;transform:translateX(-50%) rotate(calc(-90deg + (var(--gauge-pct,0) * 1.8deg)));transition:transform .8s ease-out;z-index:1}.trajectory-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;font-size:1rem;font-weight:700}.trajectory-improving,.trend-up{background:var(--ad-success-light);color:var(--ad-success-dark)}.trend-slight-up{background:#d1fae5;color:#047857}.trajectory-stable,.trend-stable{background:#f3f4f6;color:var(--ad-text-secondary)}.trend-slight-down{background:var(--ad-warning-light);color:var(--ad-warning-dark)}.trajectory-declining,.trend-down{background:var(--ad-danger-light);color:var(--ad-danger-dark)}.timeline-vertical{position:relative;padding-left:2rem;margin:1rem 0}.timeline-vertical::before{content:'';position:absolute;top:0;left:.75rem;width:2px;height:100%;background:var(--ad-border)}.timeline-year{position:relative;margin-bottom:1.25rem}.timeline-year:last-child{margin-bottom:0}.timeline-dot{position:absolute;left:-1.5rem;top:.5rem;width:12px;height:12px;border-radius:50%;background:var(--ad-primary);border:2px solid var(--ad-bg-white);box-shadow:0 0 0 2px var(--ad-primary)}.timeline-dot-low{background:var(--ad-success);box-shadow:0 0 0 2px var(--ad-success)}.timeline-dot-moderate{background:var(--ad-warning);box-shadow:0 0 0 2px var(--ad-warning)}.timeline-dot-high{background:var(--ad-orange);box-shadow:0 0 0 2px var(--ad-orange)}.timeline-dot-critical{background:var(--ad-danger);box-shadow:0 0 0 2px var(--ad-danger)}.timeline-card{background:var(--ad-bg-white);border:1px solid var(--ad-border);border-radius:.5rem;padding:.75rem 1rem;box-shadow:var(--ad-shadow-sm)}.timeline-year-label{font-weight:700;font-size:.9rem;color:var(--ad-primary);margin-bottom:.25rem}.timeline-class{font-size:.85rem;color:var(--ad-text-secondary)}.timeline-score{font-size:.85rem;margin-top:.25rem}.timeline-event{font-size:.8rem;color:var(--ad-text-secondary);margin-top:.25rem;font-style:italic}.domain-scores-section{margin-top:1.25rem}.domain-scores-section h4,.prediction-domains h3,.prediction-fragile h3{font-size:.95rem;font-weight:700;color:var(--ad-text);margin-bottom:.75rem}.domain-bar-row{display:flex;align-items:center;gap:.75rem;margin-bottom:.6rem}.domain-bar-label{flex:0 0 140px;font-size:.8rem;font-weight:600;color:var(--ad-text-secondary);text-align:right}.domain-bar{flex:1;height:10px;background:#e5e7eb;border-radius:5px;overflow:hidden}.domain-bar-fill{height:100%;background:linear-gradient(90deg,var(--ad-primary),#60a5fa);border-radius:5px;transition:width .6s ease-out}.domain-bar-value{flex:0 0 40px;font-size:.8rem;font-weight:700;color:var(--ad-text)}.domain-bar-inline{position:relative;display:inline-block;font-size:.85rem;font-weight:700}.risk-factors-panel{background:var(--ad-bg-white);border:1px solid var(--ad-border);border-radius:var(--ad-radius);box-shadow:var(--ad-shadow-md);margin-bottom:1.5rem;overflow:hidden;animation:panelSlideIn .3s ease-out}@keyframes panelSlideIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;background:#f9fafb;border-bottom:1px solid var(--ad-border)}.panel-header h3{font-size:1rem;font-weight:700;display:flex;align-items:center;gap:.5rem}.panel-close{background:0 0;border:none;font-size:1.15rem;cursor:pointer;color:var(--ad-text-muted);padding:.25rem;border-radius:.25rem;transition:color var(--ad-transition),background var(--ad-transition)}.panel-close:hover{color:var(--ad-text);background:var(--ad-border)}.panel-body{padding:1.25rem}.risk-factors-detail-row td{background:#fafbfc;padding:0!important}.risk-factors-panel-inline{padding:1rem 1.25rem;font-size:.85rem}.risk-factors-panel-inline strong{display:block;margin:.5rem 0 .25rem;color:var(--ad-text)}.risk-factors-panel-inline ul{margin:0;padding-left:1.25rem}.risk-factors-panel-inline li{margin-bottom:.2rem;color:var(--ad-text-secondary)}.btn-expand-factors{display:inline-block;padding:.1rem .4rem;font-size:.7rem;font-weight:700;background:var(--ad-primary-light);color:var(--ad-primary);border:none;border-radius:.2rem;cursor:pointer;transition:background var(--ad-transition)}.btn-expand-factors:hover{background:#bfdbfe}.remediation-panel{background:var(--ad-bg-white);border:1px solid var(--ad-border);border-radius:var(--ad-radius);box-shadow:var(--ad-shadow-md);margin-bottom:1.5rem;overflow:hidden;animation:panelSlideIn .3s ease-out}.remediation-improvement{margin-top:1.25rem;padding:1rem;background:var(--ad-success-light);border-radius:.5rem}.remediation-improvement h4{font-size:.9rem;font-weight:700;color:var(--ad-success-dark);margin-bottom:.5rem}.improvement-indicator{display:flex;align-items:center;gap:.75rem}.improvement-value{font-size:1.5rem;font-weight:800;color:var(--ad-success)}.improvement-label{font-size:.85rem;color:var(--ad-success-dark)}.prediction-card{background:var(--ad-bg-white);border:1px solid var(--ad-border);border-radius:var(--ad-radius);box-shadow:var(--ad-shadow-sm);margin-bottom:1.25rem;overflow:hidden}.prediction-card-header{background:#f9fafb;padding:.75rem 1rem;font-weight:700;font-size:.9rem;border-bottom:1px solid var(--ad-border);display:flex;align-items:center;gap:.5rem;color:var(--ad-primary)}.prediction-card-body{padding:1rem}.prediction-card-body p{margin-bottom:.5rem;font-size:.9rem}.prediction-card-body p:last-child{margin-bottom:0}.prediction-domains{margin:1.25rem 0}.prediction-fragile{margin-top:1.5rem}.plan-table{width:100%;border-collapse:collapse;font-size:.85rem}.plan-table th{background:#f9fafb;padding:.6rem .75rem;text-align:left;font-size:.75rem;font-weight:700;color:var(--ad-text-secondary);text-transform:uppercase;letter-spacing:.03em;border-bottom:2px solid var(--ad-border)}.plan-table td{padding:.6rem .75rem;border-bottom:1px solid #f3f4f6;vertical-align:top}.plan-table tr:last-child td{border-bottom:none}.plan-exercises{margin:0;padding-left:1rem}.plan-exercises li{margin-bottom:.15rem}.btn-export,.btn-generate{padding:.6rem 1.25rem;border-radius:.5rem;border:none;cursor:pointer;font-family:var(--ad-font);font-size:.9rem;font-weight:600;display:inline-flex;align-items:center;gap:.5rem;transition:filter var(--ad-transition),transform var(--ad-transition)}.btn-export:hover,.btn-generate:hover{filter:brightness(1.1);transform:translateY(-1px)}.btn-export:active,.btn-generate:active{transform:translateY(0)}.btn-export:disabled,.btn-generate:disabled{opacity:.5;cursor:not-allowed;transform:none;filter:none}.btn-generate{background:linear-gradient(135deg,var(--ad-primary),#3b82f6);color:#fff}.btn-export{background:linear-gradient(135deg,var(--ad-success),#34d399);color:#fff}.btn-detail{padding:.35rem .5rem;border:1px solid var(--ad-border);border-radius:.375rem;background:var(--ad-bg-white);color:var(--ad-primary);cursor:pointer;font-size:.8rem;transition:background var(--ad-transition),color var(--ad-transition),border-color var(--ad-transition)}.btn-detail:hover{background:var(--ad-primary-light);border-color:var(--ad-primary)}.btn-detail:focus-visible{outline:2px solid var(--ad-primary);outline-offset:2px}.analytics-actions-bar{display:flex;gap:.75rem;flex-wrap:wrap;padding-top:.5rem}.loading-overlay{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:2rem;color:var(--ad-text-secondary);font-size:.9rem}.loading-overlay-fullpage{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:1000;color:#fff}.loading-spinner{width:36px;height:36px;border:3px solid var(--ad-border);border-top-color:var(--ad-primary);border-radius:50%;animation:spinLoader .7s linear infinite}.loading-overlay-fullpage .loading-spinner{border-color:rgba(255,255,255,.3);border-top-color:#fff}@keyframes spinLoader{to{transform:rotate(360deg)}}.strengths-weaknesses{display:flex;gap:1.5rem;margin-top:1.25rem}.sw-column{flex:1}.sw-column h4{font-size:.9rem;font-weight:700;margin-bottom:.5rem;display:flex;align-items:center;gap:.4rem}.sw-column ul{list-style:none;padding:0;margin:0}.sw-column li{padding:.3rem .5rem;font-size:.85rem;color:var(--ad-text-secondary);border-left:3px solid var(--ad-border);margin-bottom:.3rem;border-radius:0 .25rem .25rem 0}.sw-column:first-child li{border-left-color:var(--ad-success);background:var(--ad-success-light)}.sw-column:last-child li{border-left-color:var(--ad-danger);background:var(--ad-danger-light)}.transfer-list{list-style:none;padding:0;margin:.5rem 0}.transfer-list li{padding:.4rem 0;font-size:.85rem;color:var(--ad-text-secondary);border-bottom:1px dashed var(--ad-border)}.transfer-list li:last-child{border-bottom:none}.analytics-empty-state{text-align:center;padding:4rem 2rem;color:var(--ad-text-muted)}.analytics-empty-state i{font-size:3rem;margin-bottom:1rem;display:block}.analytics-empty-state a{color:var(--ad-primary);font-weight:600}.text-muted{color:var(--ad-text-muted)}[data-theme=dark]{--ad-primary-light:rgba(37, 99, 235, 0.18);--ad-success-light:rgba(16, 185, 129, 0.16);--ad-warning-light:rgba(245, 158, 11, 0.16);--ad-danger-light:rgba(239, 68, 68, 0.16);--ad-orange-light:rgba(249, 115, 22, 0.16);--ad-text:var(--text-strong, #f1f5f9);--ad-text-secondary:var(--text-body, #cbd5e1);--ad-text-muted:var(--text-soft, #94a3b8);--ad-bg:var(--surface-alt, #0f172a);--ad-bg-white:var(--surface, #1e293b);--ad-border:var(--surface-border, #334155)}[data-theme=dark] .analytics-back-link{color:#93c5fd}[data-theme=dark] .analytics-back-link:hover{color:#bfdbfe}[data-theme=dark] .panel-header,[data-theme=dark] .plan-table th,[data-theme=dark] .prediction-card-header,[data-theme=dark] .student-table th{background:var(--surface-alt,#0f172a)}[data-theme=dark] .plan-table td,[data-theme=dark] .student-table td{border-bottom-color:var(--surface-border,#334155)}[data-theme=dark] .student-table tbody tr:hover{background:rgba(148,163,184,.08)}[data-theme=dark] .domain-bar{background:var(--surface-border,#334155)}[data-theme=dark] .risk-factors-detail-row td{background:var(--surface-alt,#0f172a)}[data-theme=dark] .risk-factor-tag{background:rgba(37,99,235,.18);color:#93c5fd}[data-theme=dark] .trend-slight-up{background:rgba(16,185,129,.14);color:#6ee7b7}[data-theme=dark] .analytics-classroom-select option{background:var(--surface,#1e293b);color:var(--text-body,#cbd5e1)}@media screen and (max-width:768px){.analytics-page{padding:.75rem 1rem 2rem}.analytics-header{flex-direction:column;align-items:flex-start;padding:1.25rem 1.25rem}.analytics-header-content h1{font-size:1.25rem}.analytics-classroom-select-wrap{width:100%}.analytics-classroom-select{width:100%}.stats-row{grid-template-columns:repeat(2,1fr)}.stat-card-value{font-size:1.4rem}.student-table{font-size:.82rem}.student-table td,.student-table th{padding:.5rem .6rem}.domain-bar-label{flex:0 0 90px;font-size:.75rem}.strengths-weaknesses{flex-direction:column}.analytics-actions-bar{flex-direction:column}.btn-export,.btn-generate{width:100%;justify-content:center}.actions-cell{flex-direction:column;gap:.25rem}}@media screen and (max-width:480px){.stats-row{grid-template-columns:1fr}.stat-card{padding:.75rem;display:flex;align-items:center;gap:.75rem;text-align:left}.stat-card-icon{margin-bottom:0;font-size:1.5rem}.stat-card-value{font-size:1.25rem}.analytics-header-content h1{font-size:1.1rem}.risk-gauge{width:140px;height:70px}.risk-gauge-track{width:140px;height:140px}.risk-gauge-track::after{top:20px;left:20px;width:100px;height:100px}.risk-gauge-fill{height:50px}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important}.risk-gauge-fill{transition:none}.domain-bar-fill{transition:none}}@media print{body{background:#fff;color:#000}.analytics-page{max-width:100%;padding:0}.analytics-header{background:0 0!important;color:#000!important;border:2px solid #000;border-radius:0;padding:1rem}.analytics-header-content p{opacity:1}#globalLoading,.analytics-actions-bar,.analytics-back-link,.analytics-classroom-select-wrap,.btn-detail,.btn-expand-factors,.loading-overlay,.loading-overlay-fullpage,.panel-close{display:none!important}.prediction-card,.remediation-panel,.risk-factors-panel,.stat-card,.student-table-wrap{box-shadow:none;border:1px solid #ccc;break-inside:avoid}.stat-card:hover{transform:none}.risk-factors-detail-row{display:table-row!important}.remediation-panel,.risk-factors-panel{display:block!important}.student-table th{background:#f0f0f0!important}}