/* SchoolInvest V28.3.1 — CSS extrait mécaniquement du HTML officiel. */

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        /* Garde-fou : aucun scroll horizontal sur la page entière */
        html, body {
            max-width: 100%;
            overflow-x: hidden;
        }
        /* Empêche le zoom iOS au focus des inputs (font-size < 16px déclenche
           un auto-zoom du navigateur Safari). Appliqué uniquement sur mobile. */
        @media (max-width: 768px) {
            input, select, textarea {
                font-size: 16px;
            }
        }

        :root {
            --primary-color: #1a1a1a;
            --secondary-color: #2d2d2d;
            --accent-color: #4a90e2;
            --accent-dark: #3a7bc8;
            --success-color: #7ed321;
            --warning-color: #f5a623;
            --error-color: #d0021b;
            --text-color: #333;
            --text-light: #666;
            --bg-light: #f8f9fa;
            --border-color: #e0e0e0;
            --white: #ffffff;
            --gray-100: #f1f3f5;
            --gray-200: #e9ecef;
            --gray-300: #dee2e6;
            --gray-400: #ced4da;
            --gray-500: #adb5bd;
            --gray-600: #868e96;
            --gray-700: #495057;
            --gray-800: #343a40;
            --shadow-premium: 0 2px 8px rgba(0,0,0,0.05);
            --shadow-premium-lg: 0 4px 16px rgba(0,0,0,0.08);
        }

        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background-color: #f2f3f5;
            color: var(--text-color);
            line-height: 1.6;
        }

        .page {
            display: none;
        }

        .page.active {
            display: block;
        }

        /* Login Page */
        .login-container {
            min-height: 100vh;
            display: flex;
        }

        .login-left {
            flex: 1;
            background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%);
            color: var(--white);
            padding: 60px;
            display: flex;
            flex-direction: column;
            justify-content: center;
        }

        .login-left h1 {
            font-size: 3rem;
            margin-bottom: 20px;
            font-weight: 700;
        }

        .login-left p {
            font-size: 1.2rem;
            opacity: 0.9;
            max-width: 500px;
        }

        .login-right {
            flex: 1;
            background: var(--white);
            padding: 60px;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .login-form-container {
            width: 100%;
            max-width: 400px;
        }

        .login-form h2 {
            font-size: 2rem;
            margin-bottom: 30px;
            color: var(--primary-color);
        }

        .form-group {
            margin-bottom: 20px;
        }

        .form-group label {
            display: block;
            font-weight: 500;
            margin-bottom: 8px;
            color: var(--text-color);
        }

        .form-group input, .form-group select, .form-group textarea {
            width: 100%;
            padding: 12px 16px;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            font-size: 1rem;
            transition: all 0.3s ease;
            font-family: inherit;
        }

        .form-group input:focus, .form-group select:focus, .form-group textarea:focus {
            outline: none;
            border-color: var(--accent-color);
            box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.1);
        }

        .btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            padding: 12px 24px;
            border: none;
            border-radius: 8px;
            font-size: 1rem;
            font-weight: 500;
            cursor: pointer;
            transition: all 0.3s ease;
            text-decoration: none;
        }

        .btn-primary {
            background: linear-gradient(135deg, var(--accent-color), var(--accent-dark));
            color: var(--white);
            box-shadow: 0 4px 12px rgba(74, 144, 226, 0.3);
        }

        .btn-primary:hover {
            background: linear-gradient(135deg, var(--accent-dark), var(--accent-color));
            box-shadow: 0 6px 16px rgba(74, 144, 226, 0.4);
        }

        .btn-secondary {
            background: var(--gray-200);
            color: var(--text-color);
        }

        .btn-secondary:hover {
            background: var(--gray-300);
        }

        .btn-outline {
            background: transparent;
            border: 2px solid var(--accent-color);
            color: var(--accent-color);
        }

        .btn-outline:hover {
            background: var(--accent-color);
            color: var(--white);
            box-shadow: 0 4px 12px rgba(74, 144, 226, 0.25);
        }

        .btn-sm {
            padding: 8px 16px;
            font-size: 0.875rem;
        }

        /* App Layout */
        .app-container {
            display: flex;
            min-height: 100vh;
        }

        /* Sidebar */
        .sidebar {
            width: 260px;
            background: var(--white);
            border-right: 1px solid var(--border-color);
            padding: 20px 0;
            position: fixed;
            height: 100vh;
            overflow-y: auto;
        }

        .sidebar-header {
            padding: 0 20px 20px;
            border-bottom: 1px solid var(--border-color);
        }

        .logo {
            font-size: 1.5rem;
            font-weight: 700;
            color: var(--primary-color);
        }

        .sidebar-nav {
            padding: 20px 0;
        }

        .nav-item {
            padding: 12px 20px;
            display: flex;
            align-items: center;
            gap: 12px;
            color: var(--text-color);
            text-decoration: none;
            transition: all 0.3s ease;
            cursor: pointer;
            border-left: 3px solid transparent;
        }

        .nav-item:hover {
            background: var(--bg-light);
        }

        .nav-item.active {
            background: var(--bg-light);
            border-left-color: var(--accent-color);
            color: var(--accent-color);
            font-weight: 500;
        }

        .nav-item .icon {
            width: 20px;
            height: 20px;
        }

        .nav-badge {
            margin-left: auto;
            background: var(--accent-color);
            color: var(--white);
            padding: 2px 8px;
            border-radius: 12px;
            font-size: 0.75rem;
            font-weight: 600;
        }


        /* ===== ADMIN MENU PROTÉGÉ — V1 ===== */
        .admin-menu-separator {
            margin: 12px 20px 8px;
            border-top: 1px solid var(--border-color);
        }
        .admin-lock-item {
            margin-top: 4px;
        }
        .admin-lock-hint {
            margin-left: auto;
            font-size: 0.72rem;
            color: var(--text-light);
        }
        .admin-submenu {
            display: none;
            padding: 4px 0 8px;
            background: #fafafa;
            border-top: 1px solid rgba(0,0,0,0.03);
            border-bottom: 1px solid rgba(0,0,0,0.03);
        }
        .admin-submenu.open {
            display: block;
        }
        .admin-submenu .nav-item {
            padding-left: 42px;
            font-size: 0.92rem;
            border-left-color: transparent;
        }
        .admin-submenu .nav-item.active {
            border-left-color: var(--accent-color);
            background: var(--bg-light);
        }
        .permission-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
            gap: 12px;
        }
        .permission-card {
            border: 1px solid var(--border-color);
            border-radius: 12px;
            padding: 14px;
            background: var(--white);
        }
        .permission-card strong { display:block; margin-bottom:6px; }
        .role-pill {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            padding: 5px 9px;
            border-radius: 999px;
            background: var(--gray-100);
            color: var(--text-color);
            font-size: .78rem;
            font-weight: 700;
            margin: 2px 4px 2px 0;
        }
        .capability-list {
            display:flex;
            flex-wrap:wrap;
            gap:6px;
        }
        .capability-list span {
            padding: 5px 8px;
            border-radius: 999px;
            background: #eef5ff;
            color: #24507a;
            font-size: .76rem;
            font-weight: 700;
        }

        .sidebar-footer {
            position: absolute;
            bottom: 0;
            width: 100%;
            padding: 20px;
            border-top: 1px solid var(--border-color);
        }

        .user-info {
            display: flex;
            align-items: center;
            gap: 12px;
        }

        .user-avatar {
            width: 40px;
            height: 40px;
            border-radius: 50%;
            background: var(--accent-color);
            color: var(--white);
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: 600;
        }

        .user-details {
            flex: 1;
        }

        .user-name {
            font-weight: 500;
            font-size: 0.9rem;
        }

        .user-role {
            font-size: 0.75rem;
            color: var(--text-light);
        }

        /* Main Content */
        .main-content {
            flex: 1;
            margin-left: 260px;
            padding: 40px;
        }

        .page-header {
            margin-bottom: 20px;
        }

        .page-title {
            font-size: 2rem;
            font-weight: 700;
            color: var(--primary-color);
            margin-bottom: 8px;
        }

        .page-subtitle {
            color: var(--text-light);
            font-size: 1rem;
        }

        /* Cards */
        .card {
            background: var(--white);
            border-radius: 12px;
            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.06);
            border: 1px solid rgba(0, 0, 0, 0.04);
            padding: 24px;
            margin-bottom: 20px;
        }

        .card-title {
            font-size: 1.2rem;
            font-weight: 700;
            margin-bottom: 16px;
            color: var(--primary-color);
        }

        /* Grid */
        .grid {
            display: grid;
            gap: 24px;
        }

        .grid-2 {
            grid-template-columns: repeat(2, 1fr);
        }

        .grid-3 {
            grid-template-columns: repeat(3, 1fr);
        }

        .grid-4 {
            grid-template-columns: repeat(4, 1fr);
        }

        /* Stats Card */
        .stats-card {
            background: var(--white);
            border-radius: 8px;
            padding: 24px;
            box-shadow: var(--shadow-premium);
            border-left: 4px solid var(--accent-color);
        }

        .stats-value {
            font-size: 2.5rem;
            font-weight: 700;
            color: var(--primary-color);
            margin-bottom: 8px;
        }

        .stats-label {
            color: var(--text-light);
            font-size: 0.9rem;
        }

        /* Badge */
        .badge {
            display: inline-block;
            padding: 4px 12px;
            border-radius: 12px;
            font-size: 0.75rem;
            font-weight: 600;
        }

        .badge-blue {
            background: var(--accent-color);
            color: var(--white);
        }

        .badge-green {
            background: var(--success-color);
            color: var(--white);
        }

        .badge-orange {
            background: var(--warning-color);
            color: var(--white);
        }

        .badge-red {
            background: var(--error-color);
            color: var(--white);
        }

        .badge-gray {
            background: var(--gray-400);
            color: var(--white);
        }

        /* Progress Circle */
        .progress-circle {
            width: 120px;
            height: 120px;
            margin: 0 auto;
            position: relative;
        }

        .progress-circle svg {
            transform: rotate(-90deg);
        }

        .progress-circle-bg {
            fill: none;
            stroke: var(--gray-200);
            stroke-width: 8;
        }

        .progress-circle-fill {
            fill: none;
            stroke: var(--accent-color);
            stroke-width: 8;
            stroke-linecap: round;
            transition: stroke-dashoffset 0.5s ease;
        }

        .progress-text {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            font-size: 1.5rem;
            font-weight: 700;
            color: var(--primary-color);
        }

        /* Table */
        .table-container {
            overflow-x: auto;
        }

        table {
            width: 100%;
            border-collapse: collapse;
        }

        thead {
            background: var(--bg-light);
        }

        th {
            padding: 12px;
            text-align: left;
            font-weight: 600;
            color: var(--text-color);
            font-size: 0.875rem;
        }

        td {
            padding: 16px 12px;
            border-bottom: 1px solid var(--border-color);
        }

        tbody tr:hover {
            background: var(--bg-light);
        }

        /* Task Item */
        .task-item {
            padding: 16px;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            margin-bottom: 12px;
            background: var(--white);
        }

        .task-header {
            display: flex;
            align-items: center;
            gap: 12px;
            margin-bottom: 8px;
        }

        .task-title {
            font-weight: 600;
            flex: 1;
        }

        .task-description {
            color: var(--text-light);
            font-size: 0.9rem;
            margin-bottom: 12px;
            white-space: pre-wrap;
            word-wrap: break-word;
            overflow-wrap: break-word;
        }

        .task-meta {
            display: flex;
            gap: 16px;
            font-size: 0.875rem;
            color: var(--text-light);
        }

        /* Appointment Card */
        .appointment-card {
            border-left: 4px solid var(--accent-color);
            padding: 20px;
            background: var(--white);
            border-radius: 12px;
            margin-bottom: 16px;
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
            cursor: pointer;
            transition: all 0.3s ease;
        }

        .appointment-card:hover {
            box-shadow: 0 12px 32px rgba(0, 0, 0, 0.12);
            transform: translateY(-1px);
        }

        .appointment-date {
            font-size: 1.3rem;
            font-weight: 700;
            color: var(--primary-color);
            margin-bottom: 8px;
        }

        .appointment-title {
            font-size: 1rem;
            margin-bottom: 8px;
        }

        .appointment-meta {
            display: flex;
            gap: 12px;
            font-size: 0.875rem;
            color: var(--text-light);
        }

        /* Bascule table/cartes admin (par défaut desktop : table visible, cartes cachées) */
        .desktop-only-table { display: block; }
        .mobile-only-cards  { display: none; }

        /* Filters */
        .filters {
            display: flex;
            gap: 12px;
            margin-bottom: 24px;
            flex-wrap: wrap;
        }

        .filter-btn {
            padding: 8px 16px;
            border: 1px solid var(--border-color);
            background: var(--white);
            border-radius: 8px;
            cursor: pointer;
            transition: all 0.3s ease;
        }

        .filter-btn.active {
            background: var(--accent-color);
            color: var(--white);
            border-color: var(--accent-color);
            font-weight: 600;
        }

        /* Timeline */
        .timeline {
            position: relative;
            padding-left: 30px;
        }

        .timeline::before {
            content: '';
            position: absolute;
            left: 0;
            top: 0;
            bottom: 0;
            width: 2px;
            background: var(--border-color);
        }

        .timeline-item {
            position: relative;
            margin-bottom: 24px;
        }

        .timeline-item::before {
            content: '';
            position: absolute;
            left: -35px;
            top: 5px;
            width: 12px;
            height: 12px;
            border-radius: 50%;
            background: var(--accent-color);
            border: 3px solid var(--white);
        }

        .timeline-date {
            font-size: 0.875rem;
            color: var(--text-light);
            margin-bottom: 4px;
        }

        .timeline-content {
            background: var(--white);
            padding: 16px;
            border-radius: 8px;
            box-shadow: var(--shadow-premium);
        }

        /* Tabs */
        .tabs {
            display: flex;
            gap: 0;
            border-bottom: 2px solid var(--border-color);
            margin-bottom: 24px;
        }

        .tab {
            padding: 12px 24px;
            cursor: pointer;
            border-bottom: 2px solid transparent;
            margin-bottom: -2px;
            color: var(--text-light);
            font-weight: 500;
            font-size: 1rem;
            transition: all 0.3s ease;
        }

        .tab:hover {
            color: var(--text-color);
        }

        .tab.active {
            color: var(--accent-color);
            border-bottom-color: var(--accent-color);
            font-weight: 700;
        }

        .tab-content {
            display: none;
        }

        .tab-content.active {
            display: block;
        }

        /* Modal Overlay */
        .modal-overlay {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: rgba(0, 0, 0, 0.5);
            display: none;
            align-items: center;
            justify-content: center;
            z-index: 2000;
        }

        .modal-overlay.active {
            display: flex;
        }

        .modal {
            background: var(--white);
            border-radius: 8px;
            max-width: 800px;
            width: 90%;
            max-height: 90vh;
            overflow-y: auto;
            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
        }

        .modal-header {
            padding: 24px;
            border-bottom: 1px solid var(--border-color);
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .modal-title {
            font-size: 1.5rem;
            font-weight: 600;
        }

        .modal-close {
            background: none;
            border: none;
            font-size: 1.5rem;
            cursor: pointer;
            color: var(--text-light);
        }

        .modal-body {
            padding: 24px;
        }

        .modal-footer {
            padding: 24px;
            border-top: 1px solid var(--border-color);
            display: flex;
            justify-content: flex-end;
            gap: 12px;
        }

        /* Formation Content Styles */
        .formation-content {
            line-height: 1.8;
        }

        .formation-content h2 {
            font-size: 2rem;
            color: var(--primary-color);
            margin-top: 40px;
            margin-bottom: 20px;
            padding-bottom: 10px;
            border-bottom: 2px solid var(--accent-color);
        }

        .formation-content h3 {
            font-size: 1.5rem;
            color: var(--secondary-color);
            margin-top: 30px;
            margin-bottom: 15px;
        }

        .formation-content h4 {
            font-size: 1.2rem;
            color: var(--text-color);
            margin-top: 20px;
            margin-bottom: 10px;
        }

        .formation-content p {
            margin-bottom: 16px;
            color: var(--text-color);
        }

        .formation-content ul, .formation-content ol {
            margin-left: 25px;
            margin-bottom: 16px;
        }

        .formation-content li {
            margin-bottom: 8px;
        }

        .formation-content .highlight-box {
            background: var(--bg-light);
            border-left: 4px solid var(--accent-color);
            padding: 20px;
            margin: 20px 0;
            border-radius: 4px;
        }

        .formation-content .quote {
            font-style: italic;
            color: var(--text-light);
            border-left: 4px solid var(--border-color);
            padding-left: 20px;
            margin: 20px 0;
        }


        /* Formation imported styles */
        .section {
            padding: 40px 0;
            border-bottom: 1px solid var(--border-color);
        }
        .section:last-child { border-bottom: none; }
        .section-title {
            font-size: 2rem;
            font-weight: 700;
            margin-bottom: 32px;
            color: var(--primary-color);
        }
        .content-block {
            background: var(--bg-light);
            padding: 24px;
            margin-bottom: 20px;
            border-radius: 8px;
            border-left: 4px solid var(--accent-color);
        }
        .content-block h3 {
            font-size: 1.3rem;
            margin-bottom: 12px;
            color: var(--primary-color);
        }
        .content-block h4 {
            font-size: 1.05rem;
            margin-bottom: 10px;
            color: var(--secondary-color);
        }
        /* Variantes du content-block (utilisées dans la formation invest pour
           les encadrés disclaimer / conclusion sans casser le style global) */
        .content-block.alert {
            border-left-color: var(--warning-color);
            background: #fff8e6;
        }
        .content-block.success {
            border-left-color: var(--success-color);
            background: #f3fbe9;
        }
        /* Mini-tableau premium réutilisable */
        .formation-content .mini-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 0.95rem;
            background: var(--white);
            border-radius: 6px;
            overflow: hidden;
        }
        .formation-content .mini-table thead th {
            background: var(--primary-color);
            color: var(--white);
            text-align: left;
            padding: 12px 14px;
            font-weight: 600;
            font-size: 0.9rem;
        }
        .formation-content .mini-table tbody td {
            padding: 12px 14px;
            border-bottom: 1px solid var(--border-color);
            vertical-align: top;
        }
        .formation-content .mini-table tbody tr:last-child td {
            border-bottom: none;
        }
        .formation-content .mini-table tbody tr:nth-child(even) {
            background: var(--bg-light);
        }
        @media (max-width: 768px) {
            /* === Mobile : formation 2 (et formation 1 sécurisée) ===
               Ces règles ciblent uniquement .formation-content donc elles
               n'affectent pas le reste de l'application. Elles s'appliquent
               également à la formation 1 mais sans la modifier visuellement
               car celle-ci n'utilise pas de tableaux ; les seuls changements
               qui la concernent sont des resserrements de paddings sains. */

            /* CASCADE ANTI-DÉBORDEMENT : du main-content jusqu'à la formation,
               on borne la largeur à 100% et on coupe tout débordement. C'est
               cette cascade qui empêche Safari iOS de zoomer la page entière
               quand un élément interne (titre long, table) dépasse. */
            #studentDashboardContent {
                width: 100%;
                max-width: 100vw;
                overflow-x: hidden;
            }
            #studentDashboardContent .formation-layout {
                width: 100%;
                max-width: 100%;
                overflow-x: hidden;
            }

            /* H1 page-title de la formation : titre long de la formation 2
               ("Les bases de l'investissement") doit pouvoir se replier. */
            #studentDashboardContent .page-header .page-title {
                font-size: 1.4rem;
                line-height: 1.2;
                overflow-wrap: anywhere;
                hyphens: auto;
                max-width: 100%;
                margin-bottom: 8px;
            }
            #studentDashboardContent .page-header .page-subtitle {
                overflow-wrap: anywhere;
                max-width: 100%;
            }

            /* Sections : moins de padding vertical sur mobile + largeur bornée */
            .formation-content .section {
                padding: 24px 0;
                width: 100%;
                max-width: 100%;
                overflow-x: hidden;
            }
            /* Titres de section H2 : sans .section-title certains débordent en
               majuscules. On force une taille raisonnable + retour à la ligne
               même au milieu d'un mot si besoin. overflow-wrap: anywhere est
               plus agressif que break-word et coupe au pixel près si nécessaire. */
            .formation-content h2,
            .formation-content .section-title {
                font-size: 1.3rem;
                line-height: 1.2;
                margin-bottom: 16px;
                word-break: normal;
                overflow-wrap: anywhere;
                hyphens: auto;
                max-width: 100%;
            }

            /* Content-block : padding réduit + bornage strict de la largeur,
               overflow-wrap agressif sur tous les enfants. */
            .formation-content .content-block,
            .formation-content .highlight-box,
            .formation-content .quote {
                width: 100%;
                max-width: 100%;
                overflow-x: hidden;
                word-wrap: break-word;
                overflow-wrap: anywhere;
            }
            .formation-content .content-block {
                padding: 18px 16px;
                margin-bottom: 14px;
            }
            .formation-content .content-block h3 {
                font-size: 1.15rem;
                line-height: 1.25;
                overflow-wrap: anywhere;
                margin-bottom: 10px;
            }
            .formation-content .content-block h4 {
                font-size: 1rem;
                line-height: 1.3;
                overflow-wrap: anywhere;
            }
            .formation-content p,
            .formation-content li,
            .formation-content strong,
            .formation-content em {
                overflow-wrap: anywhere;
                word-break: normal;
                max-width: 100%;
            }
            .formation-content .content-block p,
            .formation-content .content-block li {
                font-size: 0.95rem;
                line-height: 1.55;
            }

            /* Listes : margin-left réduite pour ne pas grignoter la largeur,
               tout en gardant les puces visibles. */
            .formation-content ul,
            .formation-content ol {
                margin-left: 18px;
                padding-left: 0;
            }
            .formation-content li {
                margin-bottom: 6px;
            }

            /* Highlight-box et quote : padding mobile + word-break */
            .formation-content .highlight-box {
                padding: 14px 16px;
                margin: 14px 0;
                word-wrap: break-word;
                overflow-wrap: break-word;
            }
            .formation-content .quote {
                padding-left: 14px;
                padding-right: 4px;
                margin: 14px 0;
                font-size: 0.95rem;
                word-wrap: break-word;
                overflow-wrap: break-word;
            }

            /* Mini-table : transformation en CARTES verticales sur mobile.
               L'en-tête (thead) est masqué, et chaque cellule devient une
               ligne label/valeur empilée. Cela élimine tout scroll horizontal
               et garde la même information accessible sans déformation. */
            .formation-content .mini-table {
                display: block;
                background: transparent;
                border-radius: 0;
                font-size: 0.95rem;
            }
            .formation-content .mini-table thead {
                display: none; /* labels affichés via data-label sur chaque td */
            }
            .formation-content .mini-table tbody,
            .formation-content .mini-table tr,
            .formation-content .mini-table td {
                display: block;
                width: 100%;
            }
            .formation-content .mini-table tr {
                background: var(--white);
                border: 1px solid var(--border-color);
                border-radius: 8px;
                padding: 12px 14px;
                margin-bottom: 12px;
            }
            .formation-content .mini-table tbody tr:nth-child(even) {
                background: var(--white);
            }
            .formation-content .mini-table td {
                padding: 4px 0;
                border-bottom: none;
            }
            .formation-content .mini-table td::before {
                content: attr(data-label);
                display: block;
                font-size: 0.75rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.04em;
                color: var(--text-light);
                margin-bottom: 2px;
            }
            /* La 1re cellule (entreprise) n'a pas de label : on la met en gras
               et plus grand pour servir de titre de carte. */
            .formation-content .mini-table td:first-child {
                font-size: 1.05rem;
                font-weight: 700;
                color: var(--primary-color);
                padding-bottom: 8px;
                margin-bottom: 4px;
                border-bottom: 1px solid var(--border-color);
            }
            .formation-content .mini-table td:first-child::before {
                display: none;
            }

            /* La carte qui contient la formation ne doit jamais laisser son
               contenu sortir. On cible uniquement la card du layout formation
               pour ne pas affecter les autres cartes (dashboard, élèves...). */
            .formation-layout .card {
                width: 100%;
                max-width: 100%;
                overflow-x: hidden;
            }

            /* Garde-fou général : aucun élément interne ne dépasse la largeur */
            .formation-content,
            .formation-content * {
                max-width: 100%;
            }
            .formation-content img,
            .formation-content video,
            .formation-content iframe {
                height: auto;
            }
        }
        .highlight-box {
            background: var(--white);
            border-left: 4px solid var(--accent-color);
            padding: 18px 20px;
            margin: 20px 0;
            border-radius: 6px;
            box-shadow: var(--shadow-premium);
        }
        .quote {
            font-style: italic;
            color: var(--text-light);
            border-left: 4px solid var(--gray-300);
            padding-left: 20px;
            margin: 20px 0;
        }

        /* Login magic-link feedback */
        .login-message {
            padding: 12px 14px;
            border-radius: 6px;
            font-size: 0.9rem;
            line-height: 1.5;
            white-space: pre-line;
        }
        .login-message.success {
            background: #eafaf1;
            border-left: 4px solid var(--success-color);
            color: #1e6f3e;
        }
        .login-message.error {
            background: #fdecee;
            border-left: 4px solid var(--error-color);
            color: #8a1220;
        }
        .login-message.info {
            background: #eaf3fc;
            border-left: 4px solid var(--accent-color);
            color: #1e4a7a;
        }

        /* Login footer (legal links) */
        .login-footer {
            margin-top: 40px;
            padding-top: 24px;
            border-top: 1px solid var(--border-color);
            text-align: center;
        }
        .login-footer-links {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: 10px;
            font-size: 0.82rem;
        }
        .login-footer-links a {
            color: var(--text-light);
            text-decoration: none;
            cursor: pointer;
            transition: color 0.15s;
        }
        .login-footer-links a:hover {
            color: var(--accent-color);
            text-decoration: underline;
        }
        .login-footer-sep {
            color: var(--gray-400);
        }
        .login-footer-copy {
            margin-top: 14px;
            font-size: 0.78rem;
            color: var(--gray-500);
        }

        /* Legal pages */
        .legal-container {
            min-height: 100vh;
            background: var(--bg-light);
            padding: 40px 20px;
        }
        .legal-wrapper {
            max-width: 820px;
            margin: 0 auto;
        }
        .legal-back {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            background: none;
            border: none;
            color: var(--accent-color);
            font-size: 0.95rem;
            cursor: pointer;
            padding: 8px 0;
            margin-bottom: 20px;
        }
        .legal-back:hover {
            text-decoration: underline;
        }
        .legal-card {
            background: var(--white);
            border-radius: 10px;
            box-shadow: var(--shadow-premium-lg);
            padding: 48px 56px;
        }
        .legal-card h1 {
            font-size: 1.8rem;
            font-weight: 700;
            color: var(--primary-color);
            margin-bottom: 8px;
        }
        .legal-card .legal-subtitle {
            color: var(--text-light);
            font-size: 0.95rem;
            margin-bottom: 32px;
            padding-bottom: 20px;
            border-bottom: 1px solid var(--border-color);
        }
        .legal-card h2 {
            font-size: 1.2rem;
            font-weight: 700;
            color: var(--primary-color);
            margin: 28px 0 12px;
        }
        .legal-card h3 {
            font-size: 1rem;
            font-weight: 600;
            color: var(--secondary-color);
            margin: 20px 0 8px;
        }
        .legal-card p, .legal-card li {
            color: var(--text-color);
            font-size: 0.95rem;
            line-height: 1.7;
        }
        .legal-card p {
            margin-bottom: 12px;
        }
        .legal-card ul, .legal-card ol {
            margin: 8px 0 16px 22px;
        }
        .legal-card li {
            margin-bottom: 6px;
        }
        .legal-card strong {
            color: var(--primary-color);
        }
        .legal-highlight {
            background: #fff9ec;
            border-left: 4px solid var(--warning-color);
            padding: 16px 20px;
            margin: 20px 0;
            border-radius: 6px;
        }
        .legal-highlight p:last-child {
            margin-bottom: 0;
        }
        .legal-info-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 10px 24px;
            margin: 16px 0 24px;
            font-size: 0.92rem;
        }
        .legal-info-grid dt {
            color: var(--text-light);
            font-weight: 500;
        }
        .legal-info-grid dd {
            margin: 0;
            color: var(--text-color);
            font-weight: 500;
        }
        .faq-item {
            border: 1px solid var(--border-color);
            border-radius: 8px;
            margin-bottom: 12px;
            background: var(--white);
        }
        .faq-question {
            padding: 16px 20px;
            font-weight: 600;
            color: var(--primary-color);
            cursor: pointer;
            display: flex;
            justify-content: space-between;
            align-items: center;
            user-select: none;
        }
        .faq-question::after {
            content: '+';
            font-size: 1.4rem;
            font-weight: 300;
            color: var(--text-light);
            transition: transform 0.2s;
        }
        .faq-item.open .faq-question::after {
            content: '−';
        }
        .faq-answer {
            display: none;
            padding: 0 20px 18px;
            color: var(--text-color);
            font-size: 0.93rem;
            line-height: 1.7;
        }
        .faq-item.open .faq-answer {
            display: block;
        }
        @media (max-width: 700px) {
            .legal-card { padding: 32px 24px; }
            .legal-info-grid { grid-template-columns: 1fr; gap: 4px; }
            .legal-info-grid dt { margin-top: 8px; }
        }

        /* Formation TOC (table of contents) */
        .formation-layout {
            display: grid;
            grid-template-columns: 260px 1fr;
            gap: 24px;
            align-items: start;
        }
        .formation-toc {
            position: sticky;
            top: 20px;
            background: var(--white);
            border: 1px solid var(--border-color);
            border-radius: 8px;
            padding: 16px;
            box-shadow: var(--shadow-premium);
            max-height: calc(100vh - 40px);
            overflow-y: auto;
        }
        .formation-toc-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 12px;
            padding-bottom: 12px;
            border-bottom: 1px solid var(--border-color);
        }
        .formation-toc-title {
            font-size: 0.85rem;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            color: var(--text-light);
            margin: 0;
        }
        .formation-toc-toggle {
            display: none;
            background: none;
            border: none;
            cursor: pointer;
            font-size: 1.3rem;
            line-height: 1;
            color: var(--primary-color);
            padding: 4px 8px;
            border-radius: 4px;
        }
        .formation-toc-toggle:hover {
            background: var(--bg-light);
        }
        .formation-toc-list {
            list-style: none;
            padding: 0;
            margin: 0;
        }
        .formation-toc-list li {
            margin: 0;
        }
        .formation-toc-list a {
            display: block;
            padding: 10px 12px;
            color: var(--text-color);
            text-decoration: none;
            border-radius: 6px;
            font-size: 0.9rem;
            line-height: 1.35;
            border-left: 3px solid transparent;
            transition: background 0.15s, border-color 0.15s, color 0.15s;
            cursor: pointer;
        }
        .formation-toc-list a:hover {
            background: var(--bg-light);
            color: var(--primary-color);
        }
        .formation-toc-list a.active {
            background: var(--bg-light);
            border-left-color: var(--accent-color);
            color: var(--primary-color);
            font-weight: 600;
        }
        .formation-toc-number {
            display: inline-block;
            font-weight: 700;
            color: var(--accent-color);
            margin-right: 8px;
        }
        /* Mobile: TOC collapsible */
        @media (max-width: 900px) {
            .formation-layout {
                grid-template-columns: 1fr;
            }
            .formation-toc {
                position: static;
                max-height: none;
                width: 100%;
                max-width: 100%;
                overflow-x: hidden;
            }
            /* Liens du sommaire : retours à la ligne propres pour les libellés
               longs ("Évolution des cours + consensus" par exemple). */
            .formation-toc-list a {
                white-space: normal;
                overflow-wrap: anywhere;
                word-break: normal;
            }
            /* Bouton ≡ : forcé visible sur mobile et toujours cliquable.
               Le !important neutralise toute règle plus spécifique qui
               pourrait par accident le masquer (héritage, débordements). */
            .formation-toc-toggle {
                display: inline-block !important;
                pointer-events: auto !important;
                /* Tap-target confortable pour iOS */
                min-width: 44px;
                min-height: 44px;
            }
            .formation-toc-list {
                display: none;
            }
            .formation-toc.open .formation-toc-list {
                display: block;
            }
        }

        /* ===== STUDENT DASHBOARD : HERO PREMIUM ===== */
        /* Bloc d'accueil au-dessus du dashboard élève. Dégradé sombre,
           progression intégrée, boutons d'action alignés. Cible uniquement
           cette nouvelle classe pour ne pas affecter admin / formations. */
        .student-hero {
            background: linear-gradient(135deg, #1a2a4f 0%, #2c3e6b 100%);
            color: #ffffff;
            border-radius: 16px;
            padding: 28px 28px 24px 28px;
            margin-bottom: 24px;
            box-shadow: 0 12px 32px rgba(26, 42, 79, 0.25);
            position: relative;
            overflow: hidden;
        }
        .student-hero::after {
            /* Léger halo lumineux décoratif en haut à droite */
            content: '';
            position: absolute;
            top: -60px; right: -60px;
            width: 220px; height: 220px;
            background: radial-gradient(circle, rgba(74,144,226,0.35) 0%, transparent 70%);
            pointer-events: none;
        }
        .student-hero-greeting {
            font-size: 1.75rem;
            font-weight: 700;
            line-height: 1.15;
            margin-bottom: 8px;
            color: #ffffff;
            position: relative;
            z-index: 1;
        }
        .student-hero-subtitle {
            font-size: 0.95rem;
            color: rgba(255,255,255,0.75);
            line-height: 1.45;
            margin-bottom: 20px;
            position: relative;
            z-index: 1;
        }
        .student-hero-actions {
            display: flex;
            gap: 10px;
            flex-wrap: wrap;
            position: relative;
            z-index: 1;
        }
        /* Bouton fantôme à utiliser SUR le hero (fond sombre).
           Il a son propre style pour rester lisible sur dégradé sombre. */
        .btn-hero-ghost {
            background: rgba(255,255,255,0.1);
            color: #ffffff;
            border: 1.5px solid rgba(255,255,255,0.25);
            transition: all 0.2s ease;
        }
        .btn-hero-ghost:hover {
            background: rgba(255,255,255,0.18);
            border-color: rgba(255,255,255,0.4);
        }

        /* Cartes statistiques avec petit icône en haut à gauche */
        .student-stat-card {
            position: relative;
        }
        .student-stat-icon {
            width: 40px;
            height: 40px;
            border-radius: 10px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            font-size: 1.2rem;
            margin-bottom: 12px;
        }

        @media (max-width: 768px) {
            .student-hero {
                padding: 22px 18px 20px 18px;
                border-radius: 14px;
                margin-bottom: 18px;
            }
            .student-hero-greeting {
                font-size: 1.45rem;
            }
            .student-hero-subtitle {
                font-size: 0.9rem;
                margin-bottom: 16px;
            }
            .student-hero-actions .btn {
                flex: 1 1 auto;
                min-width: 0;
                font-size: 0.875rem;
                padding: 10px 12px;
            }
        }
        /* ===== fin STUDENT DASHBOARD HERO ===== */



        /* ===== STUDENT PROGRAM BLOCK : PC + MOBILE ===== */
        .student-program-card {
            overflow: hidden;
        }
        .program-intro-box {
            background: #f8fbff;
            border-left: 4px solid var(--accent-color);
            padding: 18px 20px;
            border-radius: 10px;
            margin-bottom: 18px;
        }
        .program-intro-box p {
            margin-bottom: 10px;
            line-height: 1.55;
        }
        .program-grid {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 18px;
            align-items: start;
        }
        .program-card {
            background: #ffffff;
            border: 1px solid var(--border-color);
            border-left: 4px solid var(--accent-color);
            border-radius: 12px;
            padding: 18px;
            min-width: 0;
        }
        .program-card h3 {
            margin-bottom: 14px;
            font-size: 1.15rem;
            color: var(--primary-color);
        }
        .program-step {
            display: flex;
            gap: 12px;
            align-items: flex-start;
            padding: 12px 0;
            border-bottom: 1px solid #eef1f4;
            min-width: 0;
        }
        .program-step:last-child {
            border-bottom: none;
        }
        .program-step-num {
            flex: 0 0 30px;
            width: 30px;
            height: 30px;
            border-radius: 50%;
            background: var(--accent-color);
            color: white;
            font-weight: 700;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            font-size: 0.9rem;
            margin-top: 2px;
        }
        .program-step div {
            min-width: 0;
            overflow-wrap: anywhere;
        }

        @media (max-width: 768px) {
            /* Programme élève : version smartphone propre, sans débordement */
            .student-program-card {
                padding: 16px !important;
                margin-left: 0 !important;
                margin-right: 0 !important;
                width: 100% !important;
                max-width: 100% !important;
                overflow-x: hidden !important;
            }
            .student-program-card .card-title {
                font-size: 1.1rem;
                line-height: 1.25;
                margin-bottom: 12px;
            }
            .program-intro-box {
                padding: 14px 14px;
                margin-bottom: 14px;
                border-radius: 10px;
            }
            .program-intro-box p {
                font-size: 0.95rem;
                line-height: 1.5;
                margin-bottom: 9px;
                overflow-wrap: anywhere;
            }
            .program-grid {
                display: grid !important;
                grid-template-columns: 1fr !important;
                gap: 14px !important;
                width: 100% !important;
                max-width: 100% !important;
            }
            .program-card {
                width: 100% !important;
                max-width: 100% !important;
                padding: 14px !important;
                border-radius: 12px;
                overflow-x: hidden;
            }
            .program-card h3 {
                font-size: 1.05rem;
                margin-bottom: 10px;
                overflow-wrap: anywhere;
            }
            .program-step {
                gap: 10px;
                padding: 10px 0;
            }
            .program-step-num {
                flex-basis: 26px;
                width: 26px;
                height: 26px;
                font-size: 0.8rem;
            }
            .program-step strong {
                font-size: 0.95rem;
                line-height: 1.25;
            }
            .program-step .text-muted {
                display: block;
                font-size: 0.86rem !important;
                line-height: 1.4;
                margin-top: 2px;
            }

            /* Bloc question à mon coach : version smartphone lisible */
            .task-qa-box {
                width: 100% !important;
                max-width: 100% !important;
                margin-top: 16px;
            }
            .task-qa-textarea {
                width: 100% !important;
                min-height: 180px !important;
                display: block !important;
                font-size: 16px !important;
                line-height: 1.5 !important;
                padding: 14px !important;
            }
            .task-qa-actions {
                width: 100%;
            }
            .task-qa-actions .btn {
                width: 100% !important;
                justify-content: center;
            }
        }
        /* ===== fin STUDENT PROGRAM BLOCK ===== */


        /* ===== OPPORTUNITÉS COLLECTIVES - RESPONSIVE ADMIN ===== */
        .opportunities-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
            gap: 16px;
            margin-bottom: 24px;
        }
        .opportunity-card {
            background: var(--white);
            border: 1px solid var(--border-color);
            border-radius: 14px;
            box-shadow: var(--shadow-premium-lg);
            overflow: hidden;
        }
        .opportunity-card-header {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            gap: 14px;
            padding: 16px 18px;
            border-bottom: 1px solid var(--border-color);
            background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
        }
        .opportunity-title {
            font-size: 1.08rem;
            font-weight: 800;
            color: var(--primary-color);
            line-height: 1.25;
            overflow-wrap: anywhere;
        }
        .opportunity-subtitle {
            margin-top: 5px;
            font-size: 0.86rem;
            color: var(--text-light);
            line-height: 1.35;
            overflow-wrap: anywhere;
        }
        .opportunity-score {
            flex: 0 0 auto;
            min-width: 58px;
            padding: 8px 10px;
            border-radius: 12px;
            background: #eef9f0;
            color: #155724;
            text-align: center;
            font-size: 1.3rem;
            font-weight: 800;
            border: 1px solid #ccefd4;
            line-height: 1.05;
        }
        .opportunity-body {
            padding: 16px 18px 18px;
        }
        .slot-row {
            display: flex;
            justify-content: space-between;
            align-items: center;
            gap: 10px;
            padding: 10px 0;
            border-bottom: 1px solid var(--gray-200);
        }
        .slot-row:last-child {
            border-bottom: none;
        }
        .slot-pill {
            display: inline-flex;
            align-items: center;
            padding: 7px 10px;
            border-radius: 999px;
            background: var(--gray-100);
            color: var(--text-color);
            font-weight: 600;
            font-size: 0.88rem;
            white-space: nowrap;
        }

        @media (max-width: 768px) {
            /* Page Opportunités : lisible et sans débordement sur smartphone */
            #adminDashboardContent .opportunities-grid {
                grid-template-columns: 1fr;
                gap: 14px;
                width: 100%;
                max-width: 100%;
            }
            #adminDashboardContent .opportunity-card {
                width: 100%;
                max-width: 100%;
                border-radius: 12px;
            }
            #adminDashboardContent .opportunity-card-header {
                flex-direction: column;
                gap: 10px;
                padding: 14px;
            }
            #adminDashboardContent .opportunity-title {
                font-size: 1rem;
            }
            #adminDashboardContent .opportunity-subtitle {
                font-size: 0.82rem;
            }
            #adminDashboardContent .opportunity-score {
                align-self: stretch;
                width: 100%;
                display: flex;
                align-items: baseline;
                justify-content: center;
                gap: 6px;
                padding: 10px;
                font-size: 1.25rem;
            }
            #adminDashboardContent .opportunity-body {
                padding: 14px;
            }
            #adminDashboardContent .slot-row {
                flex-direction: column;
                align-items: stretch;
                gap: 8px;
            }
            #adminDashboardContent .slot-pill {
                justify-content: center;
                width: 100%;
                white-space: normal;
                text-align: center;
            }
            #adminDashboardContent .slot-row .btn,
            #adminDashboardContent .opportunity-body .btn {
                width: 100%;
            }
            #adminDashboardContent #opportunityFilter,
            #adminDashboardContent #opportunitySearch {
                width: 100% !important;
                min-width: 0 !important;
                max-width: 100% !important;
                flex: 1 1 100% !important;
            }
            #adminDashboardContent .page-header.flex-between {
                align-items: stretch;
            }
            #adminDashboardContent .page-header.flex-between .btn {
                width: 100%;
            }
        }
        /* ===== fin OPPORTUNITÉS COLLECTIVES RESPONSIVE ===== */


        .spe-collective-line, .spe-priority-row {
            display:flex;
            justify-content:space-between;
            align-items:center;
            gap:12px;
            padding:10px 0;
            border-bottom:1px solid var(--border-color);
        }
        .spe-collective-line:last-child, .spe-priority-row:last-child { border-bottom:none; }
        @media (max-width: 768px) {
            .spe-collective-line, .spe-priority-row { align-items:stretch; flex-direction:column; }
            .spe-collective-line .btn, .spe-priority-row .btn { width:100%; }
        }

        /* Utility Classes */
        .mb-1 { margin-bottom: 8px; }
        .mb-2 { margin-bottom: 16px; }
        .mb-3 { margin-bottom: 24px; }
        .mt-1 { margin-top: 8px; }
        .mt-2 { margin-top: 16px; }
        .mt-3 { margin-top: 24px; }
        .flex { display: flex; }
        .flex-between { display: flex; justify-content: space-between; align-items: center; }
        .flex-center { display: flex; align-items: center; justify-content: center; }
        .gap-1 { gap: 8px; }
        .gap-2 { gap: 16px; }
        .gap-3 { gap: 24px; }
        .text-center { text-align: center; }
        .text-muted { color: var(--text-light); opacity: 0.85; }
        .font-bold { font-weight: 700; }
        .hidden { display: none !important; }

        /* Responsive */
        /* Mobile topbar + overlay (cachés en desktop, affichés sur mobile) */
        .mobile-topbar {
            display: none;
        }
        .sidebar-overlay {
            display: none;
        }

        @media (max-width: 768px) {
            /* --- CORRECTION CRITIQUE : casser le flex desktop sur mobile ---
               .app-container est en display:flex côté desktop pour aligner
               sidebar + main-content. Sur mobile, les enfants (topbar, overlay,
               sidebar, main) deviendraient des items flex côte à côte, ce qui
               pousse le contenu à droite. On force le block layout. */
            .app-container {
                display: block;
                width: 100%;
                max-width: 100%;
                overflow-x: hidden;
            }

            /* --- Topbar mobile : barre fixe en haut, contient le hamburger --- */
            .mobile-topbar {
                display: flex;
                align-items: center;
                justify-content: space-between;
                gap: 12px;
                position: sticky;
                top: 0;
                z-index: 90;
                background: var(--white);
                border-bottom: 1px solid var(--border-color);
                padding: 12px 16px;
                height: 56px;
                width: 100%;
                max-width: 100%;
                box-shadow: 0 1px 3px rgba(0,0,0,0.04);
            }
            .mobile-menu-btn {
                width: 40px;
                height: 40px;
                border: 1px solid var(--border-color);
                background: var(--white);
                border-radius: 8px;
                font-size: 1.4rem;
                line-height: 1;
                cursor: pointer;
                color: var(--primary-color);
                display: flex;
                align-items: center;
                justify-content: center;
                padding: 0;
            }
            .mobile-menu-btn:active {
                background: var(--bg-light);
            }
            .mobile-topbar-title {
                font-weight: 700;
                font-size: 1rem;
                color: var(--primary-color);
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
                flex: 1;
                text-align: center;
            }

            /* --- Sidebar : drawer hors écran par défaut --- */
            .sidebar {
                position: fixed;
                top: 0;
                left: 0;
                bottom: 0;
                width: 280px;
                max-width: 85vw;
                transform: translateX(-100%);
                transition: transform 0.25s ease;
                z-index: 1001;
                box-shadow: 2px 0 12px rgba(0,0,0,0.1);
            }
            .sidebar.open {
                transform: translateX(0);
            }

            /* --- Overlay sombre derrière la sidebar quand elle est ouverte --- */
            .sidebar-overlay {
                display: block;
                position: fixed;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                background: rgba(0,0,0,0.4);
                z-index: 1000;
                opacity: 0;
                pointer-events: none;
                transition: opacity 0.25s ease;
            }
            .sidebar-overlay.open {
                opacity: 1;
                pointer-events: auto;
            }

            /* --- Contenu principal : prend toute la largeur, padding réduit --- */
            .main-content {
                display: block;
                width: 100%;
                max-width: 100%;
                margin-left: 0;
                padding: 16px;
                min-height: calc(100vh - 56px);
                overflow-x: hidden;
            }

            /* --- Garde-fou : aucun élément ne peut dépasser la largeur écran --- */
            img, video, iframe, pre {
                max-width: 100%;
                height: auto;
            }

            /* --- Bascule table desktop ↔ cartes mobile pour les listes admin --- */
            .desktop-only-table { display: none; }
            .mobile-only-cards  { display: block; }
            /* Les blocs de contenu en formation (cartes, sections) restent
               contenus dans la largeur de leur parent. */
            .formation-content, .formation-content * {
                max-width: 100%;
            }
            /* Empêche les longs mots/URLs de pousser la largeur */
            .card, .appointment-card, .page-header {
                word-wrap: break-word;
                overflow-wrap: break-word;
            }

            /* --- Grilles : tout en colonne --- */
            .grid-2, .grid-3, .grid-4 {
                grid-template-columns: 1fr;
                gap: 12px;
            }

            /* --- Login : déjà géré, on garde --- */
            .login-container {
                flex-direction: column;
            }
            .login-left {
                padding: 32px 20px;
            }
            .login-right {
                padding: 32px 20px;
            }

            /* --- Filtres tâches : grille 2 colonnes, tous visibles, textes complets --- */
            .filters {
                display: grid;
                grid-template-columns: repeat(2, 1fr);
                gap: 8px;
                overflow: visible;
                margin-left: 0;
                margin-right: 0;
                padding-left: 0;
                padding-right: 0;
            }
            .filter-btn {
                padding: 10px 12px;
                font-size: 0.88rem;
                text-align: center;
                white-space: normal;
                overflow: visible;
                text-overflow: unset;
                min-height: 44px;
            }

            /* --- Onglets RDV : pleine largeur, distribués équitablement, textes complets --- */
            .tabs {
                display: flex;
                justify-content: space-between;
                overflow: visible;
                flex-wrap: nowrap;
                gap: 0;
            }
            .tab {
                flex: 1;
                text-align: center;
                padding: 12px 8px;
                font-size: 0.95rem;
                white-space: normal;
                overflow: visible;
                text-overflow: unset;
                min-height: 44px;
            }

            /* --- Page header : titres mobile lisibles, non coupés --- */
            .page-header {
                margin-bottom: 16px;
            }
            .page-title {
                font-size: 1.7rem;
                line-height: 1.15;
                word-break: normal;
            }
            .page-subtitle {
                font-size: 0.9rem;
            }
            .section-title {
                font-size: 1.8rem;
                line-height: 1.2;
                word-break: normal;
            }

            /* --- Cards plus aérées tout en restant compactes --- */
            .card {
                padding: 16px;
                margin-bottom: 12px;
            }
            .card-title {
                font-size: 1rem;
                margin-bottom: 12px;
            }

            /* --- Stats cards : plus serrées --- */
            .stats-card {
                padding: 14px 16px;
            }
            .stats-value {
                font-size: 1.6rem;
            }
            .stats-label {
                font-size: 0.8rem;
            }

            /* --- Boutons : taille tap-target confortable (44px min Apple HIG) --- */
            .btn {
                min-height: 42px;
                padding: 10px 16px;
                font-size: 0.92rem;
            }
            .btn-sm {
                min-height: 34px;
                padding: 6px 12px;
                font-size: 0.82rem;
            }

            /* --- Appointment cards : empilage propre des actions sur mobile --- */
            .appointment-card {
                padding: 14px;
            }
            .appointment-card .flex-between {
                flex-direction: column;
                align-items: stretch;
                gap: 12px;
            }
            /* Les blocs d'actions deviennent des colonnes pleine largeur :
               chaque bouton fait 100% de la carte, empilé verticalement. */
            .appointment-card .flex.gap-2,
            .appointment-card .flex.gap-1 {
                width: 100%;
                flex-direction: column;
                gap: 8px;
            }
            .appointment-card .flex.gap-2 > .btn,
            .appointment-card .flex.gap-1 > .btn {
                width: 100%;
                margin: 0;
            }

            /* --- Tableaux admin : scroll horizontal au lieu de tronquer --- */
            .table-container {
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
            }
            table {
                min-width: 600px;
            }

            /* --- Modales : presque plein écran sur mobile --- */
            .modal {
                width: 95%;
                max-width: 95%;
                max-height: 90vh;
                overflow-y: auto;
            }
            .modal-body {
                padding: 16px;
            }

            /* --- Formation TOC : déjà responsive ailleurs, on s'assure que
                   le sommaire ne mange pas tout l'écran --- */
            .formation-layout {
                grid-template-columns: 1fr;
            }

            /* --- Login footer : liens en colonne pour ne pas déborder --- */
            .login-footer-links {
                gap: 6px;
                font-size: 0.78rem;
            }

            /* --- Quand la sidebar est ouverte, on bloque le scroll body --- */
            body.sidebar-open {
                overflow: hidden;
            }
        }


        /* ===== PATCH CHATGPT — PILOTAGE: scroll horizontal fiable ===== */
        .main-content { min-width: 0; }
        #adminDashboardContent { min-width: 0; }
        .pilotage-matrix-card, #pMatrixContainer { min-width: 0; max-width: 100%; overflow: visible !important; }
        .pilotage-scroll-toolbar {
            display:flex; align-items:center; gap:8px; justify-content:center;
            margin:8px 0 6px 0; color:var(--text-light); font-size:.82rem;
        }
        .pilotage-scroll-btn {
            border:1px solid var(--accent-color); background:#fff; color:var(--accent-color);
            border-radius:6px; padding:5px 10px; cursor:pointer; font-weight:700;
        }
        .pilotage-scroll-btn:hover { background:var(--accent-color); color:#fff; }
        .pilotage-scroll-top {
            display:block; width: 100%; overflow-x: scroll !important; overflow-y: hidden !important; height: 26px;
            border: 1px solid var(--border-color); border-radius: 8px; background: #f7f7f7;
            margin: 4px 0 8px 0; position:relative; z-index:50;
        }
        .pilotage-scroll-top-inner { height: 1px; width: 4600px; min-width: 4600px; }
        .pilotage-scroll-wrapper {
            display:block; width: 100%; max-width: 100%; min-width:0;
            overflow-x: scroll !important; overflow-y: auto !important;
            max-height: 62vh; border-radius: 10px; border: 1px solid var(--border-color);
            box-shadow: var(--shadow-premium-lg); background: #fff; position: relative;
            overscroll-behavior: contain; scrollbar-gutter: stable both-edges;
        }
        .pilotage-scroll-wrapper::-webkit-scrollbar,
        .pilotage-scroll-top::-webkit-scrollbar { height: 16px; width: 12px; }
        .pilotage-scroll-wrapper::-webkit-scrollbar-track,
        .pilotage-scroll-top::-webkit-scrollbar-track { background: #e9ecef; border-radius: 8px; }
        .pilotage-scroll-wrapper::-webkit-scrollbar-thumb,
        .pilotage-scroll-top::-webkit-scrollbar-thumb { background: #6c757d; border-radius: 8px; border: 2px solid #e9ecef; }
        .pilotage-matrix-table {
            border-collapse: separate !important; border-spacing: 0 !important; font-size: 0.82rem;
            width: 4600px !important; min-width: 4600px !important; table-layout: fixed !important;
        }
        .pm-fixed { position: sticky; background: #fff; }
        .pm-fixed-0 { left: 0; min-width: 150px; width: 150px; max-width: 150px; }
        .pm-fixed-1 { left: 150px; min-width: 210px; width: 210px; max-width: 210px; }
        .pm-fixed-2 { left: 360px; min-width: 95px; width: 95px; max-width: 95px; text-align: right; }
        .pm-fixed-3 { left: 455px; min-width: 65px; width: 65px; max-width: 65px; text-align: center; border-right: 3px solid var(--border-color) !important; }
        .pilotage-matrix-table thead th { position: sticky; z-index: 12; }
        .pilotage-matrix-table thead .pm-fixed { z-index: 30 !important; background: var(--primary-color) !important; color: #fff !important; }
        .pilotage-matrix-table tbody .pm-fixed { z-index: 10; }
        .pilotage-matrix-table .pm-total .pm-fixed { background: var(--gray-100) !important; z-index: 11; }
        .pilotage-matrix-table .pm-besoin .pm-fixed { background: #fff9e8 !important; z-index: 11; }

        .pilotage-matrix-table .pm-summary-head { min-width: 70px; width: 70px; max-width: 70px; }
        .pilotage-matrix-table td:nth-child(5),
        .pilotage-matrix-table td:nth-child(6),
        .pilotage-matrix-table td:nth-child(7),
        .pilotage-matrix-table td:nth-child(8) { min-width: 70px; width: 70px; max-width: 70px; }
        .pm-module-cell { min-width: 110px; width: 110px; max-width: 110px; text-align: center; }
        .pm-no-wrap { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        /* Neutralise les garde-fous overflow uniquement sur les conteneurs de l'admin/pilotage */
        #adminDashboard.active .main-content { overflow-x: visible !important; }

        /* PATCH FINAL SCROLL PILOTAGE : le body reste protégé, mais la matrice a son propre scroll */
        #adminDashboard.active #adminDashboardContent { overflow-x: visible !important; }
        #adminDashboard.active #pMatrixContainer { overflow-x: visible !important; }
        #pmxMainScroll, #pmxTopScroll { overflow-x: scroll !important; }
        #pmxMainScroll table.pilotage-matrix-table { width: 4600px !important; min-width: 4600px !important; max-width: none !important; }
    

        /* ===== PATCH MOBILE CHATGPT — PILOTAGE: scroll horizontal smartphone =====
           Sur mobile, les 4 colonnes sticky (520px) prenaient plus que la largeur
           de l'écran et bloquaient visuellement le swipe horizontal. On désactive
           le sticky uniquement sur mobile pour rendre la matrice scrollable comme
           l'onglet Contrôle. Desktop inchangé. */
        @media (max-width: 768px) {
            #adminDashboard.active #adminDashboardContent,
            #adminDashboard.active .main-content,
            #adminDashboard.active #pMatrixContainer {
                overflow-x: visible !important;
                min-width: 0 !important;
                max-width: 100vw !important;
            }

            #pmxTopScroll,
            #pmxMainScroll,
            .pilotage-scroll-top,
            .pilotage-scroll-wrapper {
                width: 100% !important;
                max-width: calc(100vw - 32px) !important;
                overflow-x: auto !important;
                overflow-y: auto !important;
                -webkit-overflow-scrolling: touch !important;
                touch-action: pan-x pan-y !important;
            }

            #pmxTopInner,
            .pilotage-scroll-top-inner {
                width: 4200px !important;
                min-width: 4200px !important;
            }

            #pmxMainScroll table.pilotage-matrix-table,
            .pilotage-matrix-table {
                width: 4200px !important;
                min-width: 4200px !important;
                max-width: none !important;
                table-layout: fixed !important;
            }

            /* Important : on retire les sticky columns sur smartphone.
               Sinon les colonnes fixes couvrent tout l'écran et empêchent
               d'accéder naturellement aux modules à droite. */
            .pilotage-matrix-table .pm-fixed,
            .pilotage-matrix-table thead .pm-fixed,
            .pilotage-matrix-table tbody .pm-fixed,
            .pilotage-matrix-table .pm-total .pm-fixed,
            .pilotage-matrix-table .pm-besoin .pm-fixed {
                position: static !important;
                left: auto !important;
                z-index: auto !important;
            }

            .pilotage-matrix-table .pm-fixed-0 { width: 140px !important; min-width: 140px !important; max-width: 140px !important; }
            .pilotage-matrix-table .pm-fixed-1 { width: 180px !important; min-width: 180px !important; max-width: 180px !important; }
            .pilotage-matrix-table .pm-fixed-2 { width: 85px !important; min-width: 85px !important; max-width: 85px !important; }
            .pilotage-matrix-table .pm-fixed-3 { width: 55px !important; min-width: 55px !important; max-width: 55px !important; }

            .pilotage-scroll-toolbar {
                position: sticky;
                top: 0;
                z-index: 60;
                background: #f2f3f5;
                padding: 6px 0;
            }
            .pilotage-scroll-btn {
                min-height: 36px;
                padding: 6px 10px;
            }
        }


        /* ===== PATCH MOBILE FLUIDE — Pilotage comme Contrôle =====
           Sur smartphone, on évite le double scroll vertical/horizontal dans le même bloc.
           La page gère le scroll vertical, la matrice gère seulement l'horizontal.
           Cela rend le swipe latéral beaucoup plus fluide, comme dans l'onglet Contrôle. */
        @media (max-width: 768px) {
            #adminDashboard.active #adminDashboardContent {
                overflow-x: hidden !important;
                max-width: 100vw !important;
            }
            #adminDashboard.active #pMatrixContainer {
                overflow: visible !important;
                max-width: 100% !important;
            }
            #pmxTopScroll,
            .pilotage-scroll-top {
                display: none !important;
            }
            #pmxMainScroll,
            .pilotage-scroll-wrapper {
                width: 100% !important;
                max-width: calc(100vw - 32px) !important;
                overflow-x: auto !important;
                overflow-y: visible !important;
                max-height: none !important;
                -webkit-overflow-scrolling: touch !important;
                touch-action: pan-x pan-y !important;
                overscroll-behavior-x: contain !important;
                overscroll-behavior-y: auto !important;
                scrollbar-width: auto !important;
            }
            #pmxMainScroll table.pilotage-matrix-table,
            .pilotage-matrix-table {
                width: 4200px !important;
                min-width: 4200px !important;
                max-width: none !important;
                table-layout: fixed !important;
            }
            .pilotage-matrix-table th,
            .pilotage-matrix-table td {
                touch-action: pan-x pan-y !important;
            }
            .pilotage-scroll-toolbar {
                position: static !important;
                background: transparent !important;
                font-size: .78rem !important;
            }
        }


        /* ===== PATCH FINAL MOBILE RAPIDE — Pilotage =====
           Accélère fortement le déplacement horizontal sur smartphone.
           Le swipe est amplifié en JS et les boutons déplacent par grands blocs. */
        @media (max-width: 768px) {
            #pmxMainScroll,
            .pilotage-scroll-wrapper {
                cursor: grab;
                scroll-behavior: auto !important;
                -webkit-overflow-scrolling: touch !important;
                max-width: calc(100vw - 16px) !important;
            }
            .pilotage-scroll-btn {
                min-width: 110px !important;
                font-size: .9rem !important;
                font-weight: 800 !important;
            }
        }



        /* ===== PATCH CHATGPT — MOBILE : colonne ÉLÈVE figée dans Pilotage + Contrôle =====
           Objectif : sur smartphone, quand on scrolle horizontalement, garder le nom de l'élève visible.
           On ne fige qu'une seule colonne pour ne pas bloquer le swipe horizontal. */
        @media (max-width: 768px) {
            /* PILOTAGE : on réactive uniquement la 1ère colonne sticky (Élève).
               Les colonnes Email/Payé/Droits restent non figées pour garder un scroll fluide. */
            #pmxMainScroll .pilotage-matrix-table .pm-fixed-0,
            #pmxMainScroll .pilotage-matrix-table thead .pm-fixed-0,
            #pmxMainScroll .pilotage-matrix-table tbody .pm-fixed-0 {
                position: sticky !important;
                left: 0 !important;
                z-index: 80 !important;
                width: 145px !important;
                min-width: 145px !important;
                max-width: 145px !important;
                background: #ffffff !important;
                box-shadow: 3px 0 6px rgba(0,0,0,0.12) !important;
                border-right: 2px solid var(--border-color) !important;
            }
            #pmxMainScroll .pilotage-matrix-table thead .pm-fixed-0 {
                z-index: 120 !important;
                background: var(--primary-color) !important;
                color: #ffffff !important;
            }
            #pmxMainScroll .pilotage-matrix-table .pm-total .pm-fixed-0 {
                background: var(--gray-100) !important;
                color: var(--primary-color) !important;
                z-index: 100 !important;
            }
            #pmxMainScroll .pilotage-matrix-table .pm-besoin .pm-fixed-0 {
                background: #fff9e8 !important;
                color: var(--primary-color) !important;
                z-index: 100 !important;
            }
            #pmxMainScroll .pilotage-matrix-table .pm-fixed-0.pm-no-wrap,
            #pmxMainScroll .pilotage-matrix-table .pm-fixed-0 .pm-no-wrap {
                white-space: nowrap !important;
                overflow: hidden !important;
                text-overflow: ellipsis !important;
            }

            /* CONTRÔLE - Récap par élève : 1ère colonne Élève figée */
            #controlRecapTable .table-container {
                overflow-x: auto !important;
                -webkit-overflow-scrolling: touch !important;
            }
            #controlRecapTable table th:first-child,
            #controlRecapTable table td:first-child {
                position: sticky !important;
                left: 0 !important;
                z-index: 40 !important;
                width: 145px !important;
                min-width: 145px !important;
                max-width: 145px !important;
                background: #ffffff !important;
                box-shadow: 3px 0 6px rgba(0,0,0,0.12) !important;
                border-right: 2px solid var(--border-color) !important;
                white-space: nowrap !important;
                overflow: hidden !important;
                text-overflow: ellipsis !important;
            }
            #controlRecapTable table th:first-child {
                z-index: 70 !important;
                background: var(--bg-light) !important;
            }

            /* CONTRÔLE - Détail paiements : colonne Élève = 2ème colonne */
            #controlPaymentsTable .table-container {
                overflow-x: auto !important;
                -webkit-overflow-scrolling: touch !important;
            }
            #controlPaymentsTable table th:nth-child(2),
            #controlPaymentsTable table td:nth-child(2) {
                position: sticky !important;
                left: 0 !important;
                z-index: 40 !important;
                width: 145px !important;
                min-width: 145px !important;
                max-width: 145px !important;
                background: #ffffff !important;
                box-shadow: 3px 0 6px rgba(0,0,0,0.12) !important;
                border-right: 2px solid var(--border-color) !important;
                white-space: nowrap !important;
                overflow: hidden !important;
                text-overflow: ellipsis !important;
            }
            #controlPaymentsTable table th:nth-child(2) {
                z-index: 70 !important;
                background: var(--bg-light) !important;
            }

            /* CONTRÔLE - Détail RDV : colonne Élève = 3ème colonne */
            #controlAppointmentsTable .table-container {
                overflow-x: auto !important;
                -webkit-overflow-scrolling: touch !important;
            }
            #controlAppointmentsTable table th:nth-child(3),
            #controlAppointmentsTable table td:nth-child(3) {
                position: sticky !important;
                left: 0 !important;
                z-index: 40 !important;
                width: 145px !important;
                min-width: 145px !important;
                max-width: 145px !important;
                background: #ffffff !important;
                box-shadow: 3px 0 6px rgba(0,0,0,0.12) !important;
                border-right: 2px solid var(--border-color) !important;
                white-space: nowrap !important;
                overflow: hidden !important;
                text-overflow: ellipsis !important;
            }
            #controlAppointmentsTable table th:nth-child(3) {
                z-index: 70 !important;
                background: var(--bg-light) !important;
            }
        }


        /* ===== TASK Q/A élève ↔ coach : zone d'échange lisible ===== */
        .task-qa-box,
        .admin-task-response-box {
            margin-top: 18px;
            padding: 18px;
            border: 1px solid #e5e7eb;
            border-radius: 14px;
            background: #fbfcff;
            box-shadow: 0 4px 14px rgba(0,0,0,0.035);
        }
        .task-qa-title {
            font-size: 1rem;
            font-weight: 700;
            color: var(--primary-color);
            margin-bottom: 6px;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .task-qa-textarea {
            display: block;
            width: 100% !important;
            min-height: 150px !important;
            padding: 14px 16px;
            margin-top: 10px;
            border: 1px solid #d8dde6;
            border-radius: 12px;
            background: #ffffff;
            resize: vertical;
            font-family: inherit;
            font-size: 0.95rem;
            line-height: 1.55;
            color: var(--text-color);
            transition: border-color 0.2s ease, box-shadow 0.2s ease;
        }
        .task-qa-textarea:focus {
            outline: none;
            border-color: var(--accent-color);
            box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.12);
        }
        .task-qa-actions {
            display: flex;
            justify-content: flex-end;
            gap: 10px;
            margin-top: 10px;
            flex-wrap: wrap;
        }
        .task-qa-thread {
            margin-top: 14px;
            padding-top: 12px;
            border-top: 1px solid #edf0f4;
        }
        .task-qa-thread-title {
            font-size: 0.82rem;
            font-weight: 700;
            color: var(--text-light);
            text-transform: uppercase;
            letter-spacing: 0.04em;
            margin-bottom: 10px;
        }
        .task-qa-message {
            max-width: 88%;
            padding: 12px 14px;
            border-radius: 12px;
            margin-bottom: 10px;
            white-space: pre-wrap;
            overflow-wrap: anywhere;
            line-height: 1.45;
        }
        .task-qa-message.student {
            background: #eaf3ff;
            border: 1px solid #cfe3ff;
            margin-right: auto;
        }
        .task-qa-message.coach {
            background: #eafaf1;
            border: 1px solid #c8eed8;
            margin-left: auto;
        }
        .task-qa-message-label {
            display: block;
            font-size: 0.78rem;
            font-weight: 700;
            color: var(--text-light);
            margin-bottom: 4px;
        }
        .task-qa-question,
        .task-qa-answer {
            display: none; /* remplacé par le fil de discussion ci-dessus */
        }
        @media (max-width: 768px) {
            .task-qa-box,
            .admin-task-response-box {
                padding: 14px;
                border-radius: 12px;
            }
            .task-qa-textarea {
                min-height: 170px !important;
                font-size: 16px; /* évite le zoom iOS */
            }
            .task-qa-actions .btn {
                width: 100%;
            }
        }

        /* ============================================================
           LOT 2 — REFONTE PAGE TÂCHES (CRM)
           Additif. Réutilise la charte existante (badge, btn, card).
           ============================================================ */
        .tasks-statbar {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
            gap: 12px;
            margin-bottom: 20px;
        }
        .tasks-stat {
            background: var(--white);
            border: 1px solid var(--border-color);
            border-radius: 12px;
            padding: 14px 16px;
            cursor: pointer;
            transition: border-color .15s, box-shadow .15s, transform .05s;
            text-align: left;
            display: flex;
            flex-direction: column;
            gap: 4px;
        }
        .tasks-stat:hover { box-shadow: var(--shadow-premium-lg); }
        .tasks-stat:active { transform: translateY(1px); }
        .tasks-stat.active {
            border-color: var(--accent-color);
            box-shadow: 0 0 0 2px rgba(74,144,226,.18);
        }
        .tasks-stat-value { font-size: 1.6rem; font-weight: 700; line-height: 1; }
        .tasks-stat-label { font-size: .8rem; color: var(--text-light); }
        .tasks-stat.is-alert .tasks-stat-value { color: var(--error-color); }
        .tasks-stat.is-wait  .tasks-stat-value { color: var(--warning-color); }

        .tasks-toolbar {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            align-items: center;
            margin-bottom: 16px;
        }
        .tasks-search {
            flex: 1 1 220px;
            min-width: 180px;
            padding: 9px 12px;
            border: 1px solid var(--border-color);
            border-radius: 10px;
            font-size: .95rem;
        }
        .tasks-search:focus { outline: 2px solid var(--accent-color); outline-offset: 0; }
        .tasks-viewtoggle { display: inline-flex; border: 1px solid var(--border-color); border-radius: 10px; overflow: hidden; }
        .tasks-viewtoggle button {
            border: none; background: var(--white); padding: 9px 14px;
            cursor: pointer; font-size: .9rem; color: var(--text-light);
        }
        .tasks-viewtoggle button.active { background: var(--accent-color); color: #fff; }

        .tasks-group { margin-bottom: 14px; border: 1px solid var(--border-color); border-radius: 12px; overflow: hidden; }
        .tasks-group-head {
            display: flex; justify-content: space-between; align-items: center;
            padding: 12px 16px; background: var(--gray-100); cursor: pointer;
            font-weight: 600; user-select: none;
        }
        .tasks-group-head:hover { background: var(--gray-200); }
        .tasks-group-head .chev { transition: transform .2s; }
        .tasks-group.collapsed .chev { transform: rotate(-90deg); }
        .tasks-group.collapsed .tasks-group-body { display: none; }
        .tasks-group-body { padding: 8px 12px; }
        .tasks-group-count { font-size: .8rem; color: var(--text-light); font-weight: 500; }

        th.sortable { cursor: pointer; user-select: none; white-space: nowrap; }
        th.sortable:hover { color: var(--accent-color); }
        th.sortable .arrow { opacity: .4; font-size: .75rem; }
        th.sortable.sorted .arrow { opacity: 1; color: var(--accent-color); }

        .task-card-row {
            border: 1px solid var(--border-color); border-radius: 10px;
            padding: 12px 14px; margin-bottom: 10px; background: var(--white);
        }
        .task-card-row .tcr-top { display: flex; justify-content: space-between; gap: 8px; align-items: flex-start; }
        .task-card-row .tcr-title { font-weight: 600; word-break: break-word; }
        .task-card-row .tcr-meta { font-size: .85rem; color: var(--text-light); margin-top: 4px; display: flex; flex-wrap: wrap; gap: 10px; }
        .tasks-empty-search { padding: 30px; text-align: center; color: var(--text-light); }





        .ckp-mini-edit {
            border: 1px solid rgba(79,70,229,.18);
            background: #fff;
            color: #4F46E5;
            border-radius: 9px;
            padding: 6px 8px;
            font-size: 11px;
            font-weight: 800;
            cursor: pointer;
            white-space: nowrap;
        }
        .ckp-mini-edit:hover {
            background: #EEF2FF;
            border-color: rgba(79,70,229,.35);
        }

    

        /* ============================================================
           PILOTAGE ÉLÈVES — page de pilotage commercial + coaching
           Page ajoutée sans supprimer Élèves / Contrôle / Rendez-vous.
           ============================================================ */
        .spe-page { --spe-blue:#2563eb; --spe-green:#16a34a; --spe-orange:#f97316; --spe-red:#dc2626; --spe-ink:#172033; --spe-muted:#6b7280; }
        .spe-actions { display:flex; gap:10px; flex-wrap:wrap; align-items:center; justify-content:flex-end; }
        .spe-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(135px,1fr)); gap:12px; margin:18px 0; }
        .spe-kpi { background:#fff; border:1px solid #e7eaf0; border-radius:14px; padding:14px 16px; box-shadow:0 8px 22px rgba(15,23,42,.055); border-left:4px solid var(--spe-blue); }
        .spe-kpi.good { border-left-color:var(--spe-green); } .spe-kpi.warn { border-left-color:var(--spe-orange); } .spe-kpi.danger { border-left-color:var(--spe-red); }
        .spe-kpi b { display:block; font-size:1.35rem; line-height:1; color:var(--spe-ink); margin-bottom:6px; }
        .spe-kpi span { font-size:.78rem; color:var(--spe-muted); font-weight:600; }
        .spe-toolbar { background:#fff; border:1px solid #e7eaf0; border-radius:14px; padding:14px; display:grid; grid-template-columns:1.2fr .75fr .75fr auto; gap:10px; align-items:end; margin-bottom:14px; box-shadow:0 8px 22px rgba(15,23,42,.04); }
        .spe-toolbar label { display:block; font-size:.75rem; color:var(--spe-muted); font-weight:700; margin-bottom:6px; text-transform:uppercase; letter-spacing:.03em; }
        .spe-toolbar input, .spe-toolbar select { width:100%; padding:10px 12px; border:1px solid #d9dee8; border-radius:10px; font-family:inherit; font-size:.92rem; background:#fff; }
        .spe-shell { display:grid; grid-template-columns:minmax(680px,1fr) minmax(360px,420px); gap:14px; align-items:start; }
        .spe-panel { background:#fff; border:1px solid #e7eaf0; border-radius:16px; box-shadow:0 10px 28px rgba(15,23,42,.055); overflow:hidden; }
        .spe-panel-head { padding:14px 16px; border-bottom:1px solid #edf0f5; display:flex; justify-content:space-between; align-items:center; gap:10px; }
        .spe-panel-title { font-size:1rem; font-weight:800; color:var(--spe-ink); }
        .spe-table-wrap { max-height:calc(100vh - 350px); min-height:360px; overflow:auto; }
        .spe-table { width:100%; border-collapse:separate; border-spacing:0; table-layout:fixed; min-width:0; }
        .spe-table th { position:sticky; top:0; background:#f8fafc; z-index:3; padding:9px 8px; font-size:.68rem; color:#64748b; text-transform:uppercase; letter-spacing:.035em; border-bottom:1px solid #e7eaf0; text-align:left; }
        .spe-table td { padding:10px 8px; border-bottom:1px solid #eef2f7; vertical-align:middle; font-size:.86rem; }
        .spe-table tbody tr { cursor:pointer; transition:background .12s; }
        .spe-table tbody tr:hover { background:#f8fbff; }
        .spe-table tbody tr.selected { background:#eef4ff; box-shadow: inset 3px 0 0 var(--spe-blue); }
        .spe-student { display:flex; align-items:center; gap:10px; min-width:0; }
        .spe-avatar { width:36px; height:36px; border-radius:12px; display:flex; align-items:center; justify-content:center; font-weight:800; color:#fff; flex:0 0 auto; box-shadow:0 8px 16px rgba(15,23,42,.14); }
        .spe-name { font-weight:800; color:var(--spe-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
        .spe-email { color:var(--spe-muted); font-size:.76rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:150px; }
        .spe-pill { display:inline-flex; align-items:center; justify-content:center; min-width:24px; padding:4px 9px; border-radius:999px; font-size:.75rem; font-weight:800; background:#eef2ff; color:#3730a3; }
        .spe-pill.green { background:#dcfce7; color:#166534; } .spe-pill.orange { background:#ffedd5; color:#9a3412; } .spe-pill.red { background:#fee2e2; color:#991b1b; } .spe-pill.gray { background:#f1f5f9; color:#475569; }
        .spe-mini-actions { display:flex; gap:6px; flex-wrap:nowrap; align-items:center; }
        .spe-rdv-stack { display:flex; align-items:center; gap:5px; flex-wrap:nowrap; }
        .spe-rdv-stack .spe-pill { min-width:22px; padding:3px 7px; }
        .spe-rdv-label { font-size:.66rem; color:#64748b; margin-right:2px; }
        .spe-alert-stack { display:flex; align-items:center; gap:5px; flex-wrap:nowrap; }
        .spe-detail { position:sticky; top:18px; max-height:calc(100vh - 60px); overflow:auto; }
        .spe-detail-empty { padding:28px; color:var(--spe-muted); text-align:center; }
        .spe-detail-hero { padding:16px; border-bottom:1px solid #edf0f5; background:linear-gradient(135deg,#f8fbff,#ffffff); }
        .spe-detail-top { display:flex; gap:12px; align-items:center; margin-bottom:14px; }
        .spe-detail-top .spe-avatar { width:48px; height:48px; border-radius:16px; font-size:1.05rem; }
        .spe-detail-title { font-size:1.1rem; font-weight:900; color:var(--spe-ink); line-height:1.2; }
        .spe-detail-sub { color:var(--spe-muted); font-size:.84rem; }
        .spe-progress { height:8px; background:#eef2f7; border-radius:999px; overflow:hidden; margin-top:10px; }
        .spe-progress i { display:block; height:100%; background:linear-gradient(90deg,#4f46e5,#2563eb); border-radius:999px; }
        .spe-detail-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; }
        .spe-metric { background:#f8fafc; border:1px solid #edf0f5; border-radius:12px; padding:10px; }
        .spe-metric b { display:block; font-size:1rem; color:var(--spe-ink); }
        .spe-metric span { font-size:.75rem; color:var(--spe-muted); }
        .spe-section { padding:14px 16px; border-bottom:1px solid #edf0f5; }
        .spe-section:last-child { border-bottom:none; }
        .spe-section h3 { font-size:.88rem; text-transform:uppercase; letter-spacing:.04em; color:#64748b; margin-bottom:10px; }
        .spe-list { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:8px; }
        .spe-line { padding:9px 10px; border:1px solid #edf0f5; border-radius:11px; background:#fff; }
        .spe-line-main { display:flex; justify-content:space-between; gap:10px; align-items:flex-start; }
        .spe-line-title { font-weight:800; color:var(--spe-ink); font-size:.88rem; }
        .spe-line-meta { color:var(--spe-muted); font-size:.77rem; margin-top:2px; }
        .spe-module-grid { display:grid; grid-template-columns:1fr; gap:8px; }
        .spe-module { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:9px 10px; border-radius:11px; border:1px solid #f1e4c5; background:#fffbeb; }
        .spe-module b { font-size:.86rem; color:#92400e; }
        .spe-collective-strip { background:#fff; border:1px solid #e7eaf0; border-radius:16px; padding:14px; margin:0 0 14px; box-shadow:0 8px 22px rgba(15,23,42,.04); }
        .spe-strip-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; }
        .spe-strip-title { font-size:.92rem; font-weight:900; color:var(--spe-ink); }
        .spe-strip-sub { color:var(--spe-muted); font-size:.8rem; }
        .spe-module-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
        .spe-module-group { border:1px solid #edf0f5; border-radius:14px; padding:10px; background:#fbfdff; }
        .spe-module-group h4 { font-size:.74rem; text-transform:uppercase; letter-spacing:.05em; color:#64748b; margin-bottom:8px; }
        .spe-module-card { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px; border:1px solid #e8edf7; border-radius:12px; background:#fff; margin-bottom:8px; }
        .spe-module-card:last-child { margin-bottom:0; }
        .spe-module-card.active { border-color:#c7d2fe; background:#eef2ff; }
        .spe-module-card b { font-size:.86rem; color:var(--spe-ink); display:block; }
        .spe-module-card small { display:block; color:var(--spe-muted); font-size:.75rem; margin-top:2px; }
        .spe-planning-group { border:1px solid #edf0f5; border-radius:14px; overflow:hidden; margin-bottom:12px; background:#fff; }
        .spe-planning-group-title { padding:10px 12px; background:#f8fafc; font-weight:900; font-size:.78rem; text-transform:uppercase; letter-spacing:.04em; color:#475569; display:flex; justify-content:space-between; align-items:center; }
        .spe-plan-intro { padding:11px 12px; border:1px solid #dbeafe; border-radius:12px; background:#eff6ff; color:#334155; font-size:.82rem; line-height:1.35; margin-bottom:12px; }
        .spe-plan-row { display:block; padding:13px 12px 12px; border-top:1px solid #edf0f5; background:#fff; }
        .spe-plan-row.need { background:#fff7ed; border-left:3px solid #f97316; }
        .spe-plan-row.done { background:#fbfdff; border-left:3px solid #22c55e; }
        .spe-plan-row.empty { background:#fff; border-left:3px solid #e2e8f0; }
        .spe-plan-title { font-weight:900; color:var(--spe-ink); font-size:.92rem; line-height:1.18; max-width:100%; }
        .spe-plan-sub { color:#64748b; font-size:.75rem; margin-top:4px; }
        .spe-plan-meta { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; margin-top:10px; }
        .spe-plan-meta .spe-pill { width:100%; min-width:0; justify-content:flex-start; padding:6px 8px; border-radius:10px; font-size:.72rem; line-height:1.1; }
        .spe-plan-actions { margin-top:10px; padding-top:10px; border-top:1px dashed #e5e7eb; display:grid; grid-template-columns:auto minmax(110px,1fr) minmax(95px,1fr); gap:8px; align-items:center; }
        .spe-plan-actions .btn { width:100%; min-height:34px; padding:7px 9px; font-size:.78rem; white-space:nowrap; }
        .spe-plan-open-note { font-size:.76rem; color:#64748b; padding:0 12px 10px; line-height:1.35; }
        .spe-count-wrap { display:inline-flex; align-items:center; justify-content:center; gap:5px; padding:4px; border:1px solid #e2e8f0; border-radius:11px; background:#fff; min-height:34px; }
        .spe-count-btn { border:1px solid #d8deea; background:#fff; color:#334155; width:28px; height:28px; border-radius:8px; font-weight:900; cursor:pointer; line-height:1; }
        .spe-count-btn:hover { border-color:#2563eb; color:#2563eb; background:#eff6ff; }
        .spe-note { padding:12px 14px; border-radius:12px; background:#f8fafc; color:#64748b; font-size:.86rem; }
        @media (max-width: 1180px) { .spe-shell { grid-template-columns:1fr; } .spe-detail { position:static; max-height:none; } .spe-table-wrap { max-height:none; min-height:0; } .spe-toolbar { grid-template-columns:1fr 1fr; } }
        @media (min-width: 1181px) { .spe-col-student{width:30%;} .spe-col-paid{width:12%;} .spe-col-rdv{width:22%;} .spe-col-alerts{width:12%;} .spe-col-status{width:12%;} .spe-col-actions{width:12%;} }



        /* ===== V13 UX SIMPLE — Pilotage : cartes lisibles, zéro débordement ===== */
        .spe-shell { display:block !important; }
        .spe-table-wrap { max-height:none !important; min-height:0 !important; overflow:visible !important; }
        .spe-pilot-list { display:grid; gap:12px; padding:12px; }
        .spe-pilot-card { border:1px solid #e6ebf3; border-radius:16px; background:#fff; padding:14px; box-shadow:0 8px 20px rgba(15,23,42,.045); display:grid; grid-template-columns:minmax(220px,1.4fr) minmax(130px,.7fr) minmax(230px,1fr); gap:12px; align-items:center; min-width:0; }
        .spe-pilot-card.is-priority { border-color:#bfdbfe; background:#f8fbff; box-shadow:inset 3px 0 0 var(--spe-blue), 0 8px 20px rgba(15,23,42,.045); }
        .spe-pilot-main { display:flex; align-items:center; gap:12px; min-width:0; }
        .spe-pilot-name { font-weight:900; color:#172033; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
        .spe-pilot-email { color:#64748b; font-size:.82rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
        .spe-pilot-money b { display:block; color:#0f172a; font-size:.98rem; }
        .spe-pilot-money small { display:block; color:#64748b; font-size:.72rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
        .spe-pilot-right { min-width:0; }
        .spe-pilot-chips { display:grid; grid-template-columns:repeat(4,minmax(44px,1fr)); gap:6px; margin-bottom:10px; }
        .spe-row-chip { min-width:0 !important; }
        .spe-pilot-actions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
        .spe-pilot-actions .btn { width:100%; min-width:0; padding:8px 9px; font-size:.82rem; white-space:nowrap; }
        .spe-pilot-status { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; }
        .spe-work-left .spe-panel { overflow:hidden; }
        @media (max-width: 1280px) {
            .spe-pilot-card { grid-template-columns:minmax(220px,1fr); align-items:stretch; }
            .spe-pilot-actions { grid-template-columns:repeat(2,minmax(0,1fr)); }
            .spe-pilot-actions .btn:first-child { grid-column:auto; }
        }
        @media (max-width: 768px) {
            .spe-pilot-list { padding:10px; gap:10px; }
            .spe-pilot-card { padding:12px; border-radius:14px; }
            .spe-pilot-chips { grid-template-columns:repeat(2,minmax(0,1fr)); }
            .spe-pilot-actions { grid-template-columns:1fr; }
        }

        /* RDV collectif — sélection intelligente */
        .gs-smart-toolbar{display:grid;grid-template-columns:1fr .72fr auto auto;gap:8px;align-items:center;margin-bottom:10px;}
        .gs-smart-toolbar input,.gs-smart-toolbar select{padding:9px 11px;border:1px solid var(--border-color);border-radius:10px;font-size:.9rem;font-family:inherit;min-width:0;}
        .gs-count-pill{display:inline-flex;align-items:center;justify-content:center;padding:8px 10px;border-radius:999px;background:#eef2ff;color:#1d4ed8;font-weight:800;font-size:.78rem;white-space:nowrap;}
        .gs-students-list{max-height:285px;overflow-y:auto;border:1px solid var(--border-color);border-radius:12px;padding:8px;background:#fbfcff;}
        .gs-student-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 10px;border:1px solid #e7eaf0;border-radius:12px;background:#fff;margin-bottom:8px;cursor:pointer;transition:.15s ease;}
        .gs-student-card:hover{border-color:#93c5fd;box-shadow:0 8px 18px rgba(37,99,235,.08);}
        .gs-student-card.is-relevant{background:#f8fbff;border-color:#bfdbfe;}
        .gs-student-main{min-width:0;}
        .gs-student-name{font-weight:800;font-size:.9rem;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
        .gs-student-meta{font-size:.76rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
        .gs-status-stack{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end;max-width:170px;}
        .gs-mini-badge{font-size:.68rem;font-weight:800;padding:3px 7px;border-radius:999px;white-space:nowrap;}
        .gs-mini-badge.need{background:#fee2e2;color:#991b1b;}
        .gs-mini-badge.planned{background:#e0e7ff;color:#3730a3;}
        .gs-mini-badge.done{background:#dcfce7;color:#166534;}
        .gs-mini-badge.other{background:#f1f5f9;color:#475569;}
        .gs-info-box{background:#f8fbff;border:1px solid #bfdbfe;border-radius:12px;padding:10px 12px;margin-bottom:12px;color:#1e3a8a;font-size:.86rem;line-height:1.45;}
        @media (max-width: 768px){
            .gs-smart-toolbar{grid-template-columns:1fr;}
            .gs-student-card{grid-template-columns:auto 1fr;}
            .gs-status-stack{grid-column:2;justify-content:flex-start;max-width:none;}
        }

        @media (max-width: 768px) { .spe-actions .btn, .spe-toolbar .btn { width:100%; } .spe-toolbar { grid-template-columns:1fr; } .spe-kpis { grid-template-columns:repeat(2,1fr); } .spe-table-wrap { overflow-x:auto; } .spe-table{min-width:720px;} .spe-detail-grid { grid-template-columns:1fr 1fr; } .spe-module-columns { grid-template-columns:1fr; } .spe-plan-actions { grid-template-columns:1fr 1fr; } .spe-count-wrap { grid-column:1 / -1; justify-content:flex-start; } .spe-plan-meta { grid-template-columns:1fr; } }

    

        /* ===== DOSSIER ELEVE V2 — vue complète sans casser Messages ===== */
        .dossier-page { max-width: 1280px; margin: 0 auto; }
        .dossier-back { display:inline-flex; align-items:center; gap:8px; border:1px solid var(--border-color); background:#fff; color:var(--text-color); border-radius:10px; padding:10px 14px; cursor:pointer; font-weight:600; margin-bottom:16px; }
        .dossier-back:hover { border-color:var(--accent-color); color:var(--accent-color); }
        .dossier-hero { background:linear-gradient(135deg,#1a1a1a,#2f3a55); color:#fff; border-radius:20px; padding:26px; box-shadow:0 18px 45px rgba(20,30,50,.22); display:grid; grid-template-columns:auto 1fr auto; gap:22px; align-items:center; margin-bottom:18px; overflow:hidden; position:relative; }
        .dossier-hero:after { content:''; position:absolute; right:-70px; top:-70px; width:230px; height:230px; border-radius:50%; background:rgba(74,144,226,.28); }
        .dossier-avatar { width:72px; height:72px; border-radius:20px; display:flex; align-items:center; justify-content:center; font-size:1.4rem; font-weight:800; position:relative; z-index:1; }
        .dossier-hero h1 { margin:0 0 6px; font-size:1.8rem; color:#fff; }
        .dossier-hero p { margin:0; color:rgba(255,255,255,.72); }
        .dossier-health { background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.22); border-radius:16px; padding:14px 18px; min-width:180px; position:relative; z-index:1; }
        .dossier-health b { display:block; font-size:1.7rem; color:#fff; }
        .dossier-health span { font-size:.82rem; color:rgba(255,255,255,.72); }
        .dossier-tabs { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:18px; }
        .dossier-tab { border:1px solid var(--border-color); background:#fff; border-radius:999px; padding:9px 14px; font-size:.9rem; font-weight:700; color:var(--text-color); }
        .dossier-tab.on { background:var(--accent-color); color:#fff; border-color:var(--accent-color); }
        .dossier-grid { display:grid; grid-template-columns: 1.25fr .75fr; gap:18px; align-items:start; }
        .dossier-card { background:#fff; border:1px solid var(--border-color); border-radius:18px; box-shadow:0 8px 24px rgba(0,0,0,.06); padding:20px; margin-bottom:18px; }
        .dossier-card h2 { font-size:1rem; margin:0 0 14px; color:var(--primary-color); display:flex; align-items:center; gap:8px; }
        .dossier-kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
        .dossier-kpi { background:var(--bg-light); border:1px solid var(--border-color); border-radius:14px; padding:14px; }
        .dossier-kpi b { display:block; font-size:1.35rem; color:var(--primary-color); }
        .dossier-kpi span { color:var(--text-light); font-size:.8rem; }
        .dossier-progress { height:9px; background:#eef0f4; border-radius:999px; overflow:hidden; margin-top:10px; }
        .dossier-progress i { display:block; height:100%; background:var(--accent-color); border-radius:999px; }
        .dossier-list { display:grid; gap:10px; }
        .dossier-line { border:1px solid var(--border-color); border-radius:14px; padding:13px 14px; display:flex; justify-content:space-between; gap:12px; align-items:flex-start; background:#fff; }
        .dossier-line strong { display:block; color:var(--primary-color); }
        .dossier-line small { color:var(--text-light); }
        .dossier-pill { border-radius:999px; padding:5px 9px; font-size:.75rem; font-weight:800; white-space:nowrap; background:#eef3ff; color:#2457c5; }
        .dossier-pill.warn { background:#fff3d8; color:#a14f00; }
        .dossier-pill.ok { background:#eaf8ef; color:#1f7a3a; }
        .dossier-empty { background:var(--bg-light); color:var(--text-light); border-radius:12px; padding:14px; font-size:.9rem; }
        .dossier-actions { display:flex; gap:8px; flex-wrap:wrap; margin-top:14px; }
        .dossier-mini-profile { display:grid; gap:10px; }
        .dossier-info { display:flex; justify-content:space-between; gap:12px; padding:10px 0; border-bottom:1px solid var(--border-color); }
        .dossier-info:last-child { border-bottom:none; }
        .dossier-info span { color:var(--text-light); }
        .dossier-info b { text-align:right; }
        @media (max-width: 900px) { .dossier-hero{grid-template-columns:1fr;text-align:left}.dossier-grid{grid-template-columns:1fr}.dossier-kpis{grid-template-columns:repeat(2,1fr)} }
        @media (max-width: 560px) { .dossier-kpis{grid-template-columns:1fr}.dossier-hero{padding:20px}.dossier-hero h1{font-size:1.45rem} }

        /* ===== DOSSIER ELEVE V3 — batch UX sécurisé ===== */
        .ckp-dossier-btn{ margin-left:auto; border:1px solid #DDE3F0; background:#fff; color:#28324A; border-radius:999px; padding:8px 12px; font-size:12px; font-weight:800; cursor:pointer; display:inline-flex; align-items:center; gap:6px; box-shadow:0 4px 12px rgba(15,23,42,.04); }
        .ckp-dossier-btn:hover{ border-color:var(--accent-color); color:var(--accent-color); background:#F8FBFF; }
        .dossier-quick-actions{ display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; position:relative; z-index:1; }
        .dossier-quick-btn{ border:1px solid rgba(255,255,255,.24); background:rgba(255,255,255,.12); color:#fff; border-radius:999px; padding:9px 12px; font-size:.82rem; font-weight:800; cursor:pointer; }
        .dossier-quick-btn:hover{ background:rgba(255,255,255,.2); }
        .dossier-section-title{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:14px; }
        .dossier-section-title h2{ margin:0; }
        .dossier-two{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
        .dossier-note-box{ border:1px dashed var(--border-color); background:#fbfcff; border-radius:14px; padding:14px; color:var(--text-light); font-size:.9rem; line-height:1.45; }
        .dossier-timeline{ display:grid; gap:10px; }
        .dossier-timeline-item{ border-left:3px solid var(--accent-color); background:#fff; border-radius:12px; padding:11px 13px; box-shadow:0 4px 14px rgba(0,0,0,.04); }
        .dossier-timeline-item b{ display:block; font-size:.9rem; color:var(--primary-color); }
        .dossier-timeline-item span{ display:block; font-size:.8rem; color:var(--text-light); margin-top:2px; }
        .dossier-tab{ cursor:pointer; }
        .dossier-tab:hover{ border-color:var(--accent-color); color:var(--accent-color); }
        @media (max-width: 900px){ .dossier-quick-actions{ justify-content:flex-start; }.dossier-two{ grid-template-columns:1fr; } }

        /* ===== DOSSIER ELEVE V4 — onglets remplis sans nouvelle donnée ===== */
        .dossier-hero-metrics{ display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; position:relative; z-index:1; }
        .dossier-hero-chip{ background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.18); color:#fff; border-radius:999px; padding:7px 10px; font-size:.78rem; font-weight:800; }
        .dossier-priority{ border:1px solid var(--border-color); border-radius:16px; padding:14px; background:linear-gradient(180deg,#fff,#fafbff); }
        .dossier-priority strong{ display:block; margin-bottom:4px; color:var(--primary-color); }
        .dossier-priority small{ color:var(--text-light); line-height:1.4; display:block; }
        .dossier-action-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 0; border-bottom:1px solid var(--border-color); }
        .dossier-action-row:last-child{ border-bottom:none; }
        .dossier-action-row div{ min-width:0; }
        .dossier-status-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
        .dossier-status-box{ border-radius:15px; border:1px solid var(--border-color); padding:14px; background:var(--bg-light); }
        .dossier-status-box b{ display:block; font-size:1.1rem; color:var(--primary-color); }
        .dossier-status-box span{ color:var(--text-light); font-size:.78rem; }
        .dossier-message-card{ border:1px solid var(--border-color); border-radius:16px; padding:14px; background:#fff; box-shadow:0 5px 18px rgba(0,0,0,.04); }
        .dossier-message-card + .dossier-message-card{ margin-top:10px; }
        .dossier-message-head{ display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:8px; }
        .dossier-message-head b{ color:var(--primary-color); }
        .dossier-message-text{ color:var(--text-color); line-height:1.5; white-space:pre-wrap; }
        .dossier-alert-strip{ display:grid; gap:10px; margin-bottom:14px; }
        .dossier-alert{ border:1px solid var(--border-color); border-left:4px solid var(--accent-color); border-radius:14px; padding:12px 14px; background:#fff; display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
        .dossier-alert.warn{ border-left-color:var(--warning-color); background:#fffaf0; }
        .dossier-alert.danger{ border-left-color:var(--error-color); background:#fff5f6; }
        .dossier-alert.ok{ border-left-color:var(--success-color); background:#f6fff4; }
        .dossier-alert strong{ display:block; color:var(--primary-color); margin-bottom:2px; }
        .dossier-alert small{ color:var(--text-light); line-height:1.35; }
        .dossier-timeline-grid{ display:grid; gap:10px; }
        .dossier-timeline-entry{ position:relative; border:1px solid var(--border-color); border-radius:14px; padding:12px 14px 12px 42px; background:#fff; }
        .dossier-timeline-entry:before{ content:''; position:absolute; left:16px; top:17px; width:10px; height:10px; border-radius:50%; background:var(--accent-color); box-shadow:0 0 0 4px rgba(74,144,226,.12); }
        .dossier-timeline-entry b{ display:block; color:var(--primary-color); font-size:.92rem; }
        .dossier-timeline-entry small{ color:var(--text-light); display:block; margin-top:3px; }
        .dossier-quick-summary{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:18px; }
        .dossier-summary-card{ background:#fff; border:1px solid var(--border-color); border-radius:16px; padding:15px; box-shadow:0 6px 18px rgba(0,0,0,.045); }
        .dossier-summary-card span{ display:block; color:var(--text-light); font-size:.78rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; margin-bottom:6px; }
        .dossier-summary-card b{ display:block; color:var(--primary-color); font-size:1rem; line-height:1.25; }
        @media (max-width: 900px){ .dossier-quick-summary{ grid-template-columns:1fr; } }
        .dossier-pay-total{ font-size:2rem; font-weight:900; color:var(--primary-color); margin:4px 0 2px; }
        @media (max-width: 900px){ .dossier-status-grid{ grid-template-columns:1fr; } .dossier-action-row{ align-items:flex-start; flex-direction:column; } }
        /* ===== fin DOSSIER ELEVE V4 ===== */

        /* ===== fin DOSSIER ELEVE V3 ===== */
        /* ===== fin DOSSIER ELEVE V2 ===== */



/* ===== V12 — Pilotage élèves : recherche/résultats à gauche, collectifs à droite ===== */
.spe-pilotage-workspace{
    display:grid;
    grid-template-columns:minmax(0,1.18fr) minmax(360px,.82fr);
    gap:16px;
    align-items:start;
    margin-top:14px;
    width:100%;
    max-width:100%;
}
.spe-work-left,.spe-work-right{min-width:0;max-width:100%;}
.spe-work-left .spe-toolbar{margin-bottom:14px;grid-template-columns:minmax(0,1.4fr) minmax(160px,.8fr) minmax(150px,.7fr) !important;}
.spe-work-left .spe-shell{grid-template-columns:1fr !important;gap:14px !important;}
.spe-work-left .spe-detail{position:static !important;max-height:none !important;overflow:visible !important;}
.spe-work-left .spe-table-wrap{max-height:58vh;min-height:300px;overflow:auto;-webkit-overflow-scrolling:touch;}
.spe-work-right{position:sticky;top:18px;align-self:start;}
.spe-work-right .spe-collective-card{margin:0 !important;}
.spe-work-right .spe-kpis{grid-template-columns:repeat(2,minmax(0,1fr)) !important;gap:10px !important;margin:12px 0 !important;}
.spe-work-right .spe-kpi{padding:12px 13px !important;}
.spe-work-right .spe-kpi b{font-size:1.15rem !important;}
.spe-work-right .grid-2{grid-template-columns:1fr !important;}
.spe-work-right .spe-priority-row{gap:10px;}
@media (min-width:769px) and (max-width:1450px){
    .spe-pilotage-workspace{grid-template-columns:minmax(0,1fr) minmax(340px,.75fr);gap:14px;}
    .spe-work-left .spe-toolbar{grid-template-columns:1fr 1fr !important;}
    .spe-work-left .spe-toolbar .spe-search-field{grid-column:1 / -1;}
}
@media (max-width:1180px){
    .spe-pilotage-workspace{grid-template-columns:1fr !important;}
    .spe-work-right{position:static;}
    .spe-work-left .spe-table-wrap{max-height:none;min-height:0;}
}
@media (max-width:768px){
    .spe-pilotage-workspace{gap:12px;margin-top:10px;}
    .spe-work-left .spe-toolbar{grid-template-columns:1fr !important;padding:12px !important;}
    .spe-work-left .spe-shell{gap:12px !important;}
    .spe-work-right .spe-kpis{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
    .spe-work-right .spe-collective-card{padding:14px !important;}
}
@media (max-width:480px){
    .spe-work-right .spe-kpis{grid-template-columns:1fr !important;}
}
/* Retire le petit scroll horizontal de la sidebar sur Windows/Safari */
.sidebar{overflow-x:hidden !important;}
.sidebar *{max-width:100%;}



/* ===== V14 — Pilotage élèves UX simplifiée + programmation modules préservée ===== */
.spe-main-kpis{
    display:grid !important;
    grid-template-columns:repeat(4,minmax(0,1fr)) !important;
    gap:12px !important;
    margin:18px 0 16px !important;
}
.spe-main-kpis .spe-kpi{min-height:92px !important;padding:16px 18px !important;}
.spe-main-kpis .spe-kpi b{font-size:1.55rem !important;line-height:1.05 !important;}
.spe-page .page-subtitle{max-width:880px;}
.spe-pilotage-workspace{grid-template-columns:minmax(0,1.22fr) minmax(330px,.78fr) !important;}
.spe-work-right .spe-collective-card{padding:16px 18px !important;}
.spe-collective-card .card-title{font-size:1.05rem !important;}
.spe-collective-help{font-size:.82rem;color:var(--text-light);line-height:1.4;margin-top:2px;}
.spe-collective-mini-stats{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 12px;}
.spe-collective-mini-stats span{background:#f8fafc;border:1px solid var(--border-color);border-radius:999px;padding:6px 9px;font-size:.75rem;font-weight:800;color:#334155;}
.spe-pilot-list{display:grid;gap:12px;padding:12px;}
.spe-pilot-card{display:block !important;padding:0 !important;overflow:hidden;border-radius:16px !important;}
.spe-pilot-row{display:grid;grid-template-columns:minmax(190px,1fr) minmax(130px,.45fr) minmax(240px,.85fr);gap:12px;align-items:center;padding:14px 14px;}
.spe-pilot-main{min-width:0;}
.spe-pilot-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.spe-pilot-email{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.spe-pilot-money{min-width:0;}
.spe-pilot-right{display:flex;flex-direction:column;gap:10px;min-width:0;align-items:stretch;}
.spe-pilot-chips{display:grid !important;grid-template-columns:repeat(4,minmax(48px,1fr));gap:6px;min-width:0;}
.spe-row-chip{min-width:0 !important;padding:8px 7px !important;}
.spe-row-chip b{font-size:.95rem !important;}
.spe-row-chip span{font-size:.62rem !important;}
.spe-pilot-actions{display:grid !important;grid-template-columns:1fr 1fr 1fr;gap:7px;min-width:0;}
.spe-pilot-actions .btn{width:100%;padding:9px 10px !important;min-height:38px;white-space:nowrap;}
.spe-module-toggle{border-top:1px solid #eef2f7;background:#fbfdff;}
.spe-module-toggle summary{cursor:pointer;list-style:none;padding:12px 14px;font-weight:900;color:var(--accent-color);display:flex;align-items:center;justify-content:space-between;gap:10px;}
.spe-module-toggle summary::-webkit-details-marker{display:none;}
.spe-module-toggle summary span:first-child:before{content:'▸ ';font-size:.9rem;}
.spe-module-toggle[open] summary span:first-child:before{content:'▾ ';}
.spe-module-toggle summary small{font-weight:800;color:#64748b;background:#eef4ff;border-radius:999px;padding:4px 8px;}
.spe-module-panel{padding:0 14px 14px;}
.spe-plan-intro{padding:12px 14px !important;margin-bottom:10px !important;border-radius:14px !important;font-size:.85rem !important;}
.spe-plan-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start;}
.spe-planning-group{margin-bottom:0 !important;}
.spe-planning-group-title{padding:10px 12px !important;}
.spe-plan-row{display:grid !important;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 12px !important;}
.spe-plan-meta{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px;}
.spe-plan-actions{display:grid !important;grid-template-columns:auto minmax(110px,1fr) minmax(92px,1fr);gap:6px;align-items:center;min-width:260px;}
.spe-plan-actions .btn{width:100%;padding:8px 9px !important;min-height:34px;white-space:nowrap;}
.spe-count-wrap{display:flex;gap:5px;}
.spe-count-btn{min-width:32px;height:34px;}
.spe-pilot-help{font-size:.76rem;color:var(--text-light);line-height:1.35;}
.spe-empty-right{border:1px dashed var(--border-color);border-radius:14px;background:#f8fafc;padding:12px;color:var(--text-light);font-size:.86rem;line-height:1.4;}
@media (max-width:1400px){
    .spe-pilotage-workspace{grid-template-columns:1fr !important;}
    .spe-work-right{position:static !important;}
    .spe-plan-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:1180px){
    .spe-main-kpis{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
    .spe-pilot-row{grid-template-columns:1fr;align-items:start;}
    .spe-pilot-right{width:100%;}
}
@media (max-width:820px){
    .spe-main-kpis{grid-template-columns:1fr 1fr !important;}
    .spe-work-left .spe-toolbar{grid-template-columns:1fr !important;}
    .spe-pilot-list{padding:10px;}
    .spe-pilot-row{padding:13px;}
    .spe-pilot-actions{grid-template-columns:1fr;}
    .spe-plan-grid{grid-template-columns:1fr;}
    .spe-plan-row{grid-template-columns:1fr;}
    .spe-plan-actions{grid-template-columns:1fr 1fr;min-width:0;width:100%;}
    .spe-plan-actions .spe-count-wrap{grid-column:1 / -1;}
    .spe-count-btn{flex:1;}
}
@media (max-width:520px){
    .spe-main-kpis{grid-template-columns:1fr !important;}
    .spe-pilot-chips{grid-template-columns:repeat(2,minmax(0,1fr));}
    .spe-module-toggle summary{align-items:flex-start;flex-direction:column;}
}
/* ===== fin V14 ===== */


/* ===== V15 — UX métier simplifiée : 1 page = 1 mission ===== */
.v15-page{max-width:1480px;margin:0 auto;width:100%;}
.v15-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.v15-header h1{font-size:2rem;margin:0 0 6px;color:var(--primary-color)}
.v15-sub{color:var(--text-light);font-size:1rem;max-width:780px}
.v15-actions{display:flex;gap:10px;flex-wrap:wrap}
.v15-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.v15-kpi{background:#fff;border-radius:14px;padding:16px 18px;border:1px solid var(--border-color);box-shadow:var(--shadow-premium);border-left:4px solid var(--accent-color);min-width:0}
.v15-kpi b{display:block;font-size:1.55rem;line-height:1.1;margin-bottom:6px}.v15-kpi span{color:var(--text-light);font-size:.88rem}.v15-kpi.warn{border-left-color:var(--warning-color)}.v15-kpi.danger{border-left-color:var(--error-color)}
.v15-toolbar{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:14px;margin-bottom:14px;box-shadow:var(--shadow-premium);display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}
.v15-toolbar label{display:block;text-transform:uppercase;font-size:.75rem;color:var(--gray-700);font-weight:800;margin-bottom:6px}.v15-toolbar input,.v15-toolbar select{width:100%;min-height:44px;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;font-size:1rem}
.v15-card{background:#fff;border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-premium);overflow:hidden;margin-bottom:12px}
.v15-card-head{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(130px,.7fr) minmax(220px,1fr) minmax(260px,1.1fr);gap:14px;align-items:center;padding:16px}
.v15-student{display:flex;align-items:center;gap:12px;min-width:0}.v15-avatar{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;box-shadow:0 8px 18px rgba(0,0,0,.12);flex:0 0 auto}.v15-name{font-weight:800;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v15-meta{font-size:.86rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v15-pay b{display:block;font-size:1rem}.v15-pay span{font-size:.78rem;text-transform:uppercase;color:#7a869a;font-weight:800}
.v15-mini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.v15-mini div{background:#f8fafc;border:1px solid var(--border-color);border-radius:10px;text-align:center;padding:8px 6px;min-width:0}.v15-mini b{display:block;font-size:.95rem}.v15-mini span{font-size:.68rem;text-transform:uppercase;font-weight:800;color:#59677c}
.v15-card-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v15-card-actions .btn{width:100%;min-width:0;padding:9px 10px;font-size:.9rem}
.v15-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.v15-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:.75rem;font-weight:800;background:#edf2ff;color:#2754c5}.v15-pill.red{background:#ffe5e5;color:#a61b1b}.v15-pill.orange{background:#fff1d6;color:#9a4b00}.v15-pill.green{background:#def8e8;color:#0b6b36}
.v15-list-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:14px 0 10px}.v15-list-head h2{margin:0;font-size:1.15rem}.v15-list-head p{margin:3px 0 0;color:var(--text-light);font-size:.9rem}
.v15-empty{background:#f8fafc;border:1px dashed var(--border-color);border-radius:14px;padding:20px;color:var(--text-light)}
.v15-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.52);z-index:3000;display:flex;align-items:center;justify-content:center;padding:18px}
.v15-modal{background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.28);width:min(980px,96vw);max-height:92vh;overflow:auto}.v15-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:18px 20px;border-bottom:1px solid var(--border-color);position:sticky;top:0;background:#fff;z-index:2}.v15-modal-header h2{margin:0;font-size:1.25rem}.v15-modal-body{padding:18px 20px}.v15-close{border:none;background:#f1f3f5;border-radius:10px;width:36px;height:36px;font-size:1.2rem;cursor:pointer}
.v15-program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v15-program{border:1px solid var(--border-color);border-radius:14px;overflow:hidden;background:#fff}.v15-program h3{font-size:.9rem;text-transform:uppercase;color:#5b6b82;background:#f8fafc;padding:12px 14px;margin:0;border-bottom:1px solid var(--border-color)}
.v15-module-row{display:grid;grid-template-columns:minmax(180px,1fr) 210px 270px;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid #edf0f3}.v15-module-row:last-child{border-bottom:none}.v15-module-title{font-weight:800;line-height:1.25;overflow-wrap:anywhere}.v15-module-stats{display:flex;gap:6px;flex-wrap:wrap}.v15-module-stats span{border-radius:8px;padding:5px 7px;font-size:.75rem;font-weight:800}.v15-done{background:#dcfce7;color:#166534}.v15-plan{background:#eaf0ff;color:#273fb6}.v15-need{background:#ffe1e1;color:#a31313}.v15-module-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap}.v15-module-actions .btn{padding:7px 10px;font-size:.82rem;min-height:36px}
.v15-collectifs-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px}.v15-collective-list .spe-priority-row{background:#fff;border:1px solid var(--border-color);border-radius:14px;margin-bottom:10px;padding:14px}.v15-side-card{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:16px;padding:16px;box-shadow:var(--shadow-premium)}
@media (max-width:1180px){.v15-card-head{grid-template-columns:1fr 1fr}.v15-card-actions{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr))}.v15-collectifs-grid{grid-template-columns:1fr}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr}}
@media (max-width:760px){.v15-page{padding:0}.v15-header h1{font-size:1.55rem}.v15-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v15-toolbar{grid-template-columns:1fr}.v15-card-head{grid-template-columns:1fr;gap:12px}.v15-mini{grid-template-columns:repeat(4,minmax(0,1fr))}.v15-card-actions{grid-template-columns:1fr 1fr}.v15-card-actions .btn{font-size:.88rem}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr;align-items:start}.v15-module-actions{justify-content:stretch}.v15-module-actions .btn{flex:1 1 45%}.v15-modal-backdrop{align-items:flex-end;padding:0}.v15-modal{width:100vw;max-height:92vh;border-radius:18px 18px 0 0}.v15-kpi{padding:14px}.v15-kpi b{font-size:1.25rem}}

/* --- bloc CSS extrait --- */

/* ============================================================
   COACHING ENGINE — Séances de coaching (V1 simple)
   CSS isolé pour ne pas dépendre du style global.
   ============================================================ */
.sce-page, .sce-page * { box-sizing:border-box; }
.sce-page { --sce-ink:#172033; --sce-muted:#64748b; --sce-blue:#2563eb; --sce-green:#16a34a; --sce-orange:#f97316; --sce-red:#dc2626; --sce-line:#e7eaf0; }
.sce-header { display:flex; justify-content:space-between; align-items:flex-start; gap:14px; margin-bottom:16px; }
.sce-actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.sce-layout { display:grid; grid-template-columns:minmax(260px,320px) minmax(0,1fr) minmax(260px,340px); gap:14px; align-items:start; }
.sce-panel { background:#fff; border:1px solid var(--sce-line); border-radius:16px; box-shadow:0 10px 28px rgba(15,23,42,.055); overflow:hidden; }
.sce-panel-head { padding:14px 16px; border-bottom:1px solid #edf0f5; background:#f8fafc; }
.sce-panel-title { font-size:.9rem; font-weight:900; color:var(--sce-ink); text-transform:uppercase; letter-spacing:.04em; }
.sce-panel-body { padding:14px 16px; }
.sce-section { border:1px solid #edf0f5; border-radius:14px; background:#fff; margin-bottom:12px; overflow:hidden; }
.sce-section:last-child { margin-bottom:0; }
.sce-section h3 { margin:0; padding:11px 13px; background:#fbfdff; border-bottom:1px solid #edf0f5; color:var(--sce-ink); font-size:.88rem; font-weight:900; }
.sce-section-content { padding:12px 13px; color:#334155; font-size:.9rem; line-height:1.45; }
.sce-list { margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:8px; }
.sce-list li { display:flex; gap:8px; align-items:flex-start; }
.sce-check { width:18px; height:18px; margin-top:2px; accent-color:var(--sce-blue); flex:0 0 auto; }
.sce-muted { color:var(--sce-muted); font-size:.82rem; }
.sce-chip { display:inline-flex; align-items:center; justify-content:center; padding:4px 9px; border-radius:999px; font-size:.75rem; font-weight:800; background:#eef2ff; color:#3730a3; }
.sce-chip.green { background:#dcfce7; color:#166534; }
.sce-chip.orange { background:#ffedd5; color:#9a3412; }
.sce-chip.gray { background:#f1f5f9; color:#475569; }
.sce-main-card { background:#fff; border:1px solid var(--sce-line); border-radius:16px; box-shadow:0 10px 28px rgba(15,23,42,.055); padding:16px; margin-bottom:14px; }
.sce-main-card h2 { font-size:1.05rem; margin:0 0 10px; color:var(--sce-ink); }
.sce-textarea { width:100%; min-height:150px; resize:vertical; border:1px solid #d9dee8; border-radius:12px; padding:12px; font:inherit; font-size:.93rem; line-height:1.45; background:#fff; }
.sce-textarea:focus { outline:none; border-color:var(--sce-blue); box-shadow:0 0 0 3px rgba(37,99,235,.10); }
.sce-two { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.sce-action-row { display:flex; gap:8px; align-items:center; margin-bottom:8px; }
.sce-input { width:100%; padding:10px 12px; border:1px solid #d9dee8; border-radius:10px; font:inherit; }
.sce-timeline { display:flex; flex-direction:column; gap:10px; }
.sce-timeline-item { border:1px solid #edf0f5; border-radius:12px; padding:10px; background:#fbfdff; }
.sce-score { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; }
.sce-score label { display:block; font-size:.78rem; color:var(--sce-muted); font-weight:800; margin-bottom:4px; }
.sce-score input { width:100%; }
.sce-empty { padding:34px; text-align:center; color:var(--sce-muted); background:#fff; border:1px dashed #cbd5e1; border-radius:16px; }
.sce-shell { display:grid; grid-template-columns:minmax(260px,330px) minmax(0,1fr); gap:14px; align-items:start; }
.sce-left-list { max-height:calc(100vh - 330px); min-height:360px; overflow:auto; padding-right:2px; }
.sce-timeline-item.sce-late { border-color:#fed7aa; background:#fff7ed; }
.sce-timeline-item.sce-today { border-color:#bfdbfe; background:#eff6ff; }
.sce-row-top { display:flex; justify-content:space-between; gap:8px; align-items:flex-start; }
.sce-row-name { min-width:0; }
.sce-row-name strong { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sce-row-date { display:flex; flex-wrap:wrap; gap:5px; margin-top:6px; }
.sce-filters { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px; }
.sce-filter-btn { border:1px solid #d9dee8; background:#fff; color:var(--sce-ink); border-radius:999px; padding:8px 11px; font-size:.82rem; font-weight:850; cursor:pointer; transition:.15s; }
.sce-filter-btn:hover { border-color:#93c5fd; color:var(--sce-blue); }
.sce-filter-btn.active { background:var(--sce-blue); border-color:var(--sce-blue); color:#fff; box-shadow:0 8px 18px rgba(37,99,235,.18); }
.sce-quick-search { width:100%; border:1px solid #d9dee8; border-radius:12px; padding:10px 12px; font:inherit; margin-bottom:12px; }
.sce-quick-search:focus { outline:none; border-color:var(--sce-blue); box-shadow:0 0 0 3px rgba(37,99,235,.10); }
.sce-mobile-only { display:none; }
@media (max-width: 1100px) { .sce-shell, .sce-layout { grid-template-columns:1fr; } .sce-header { flex-direction:column; } .sce-actions { justify-content:flex-start; } .sce-left-list { max-height:none; min-height:0; overflow:visible; } }
@media (max-width: 768px) { .sce-page .page-title { font-size:1.45rem; } .sce-two, .sce-score { grid-template-columns:1fr; } .sce-panel-body, .sce-main-card { padding:12px; } .sce-actions .btn { width:100%; } .sce-mobile-only { display:inline-flex; } .sce-header { gap:10px; } .sce-layout { gap:10px; } .sce-row-top { flex-direction:column; } .sce-chip { align-self:flex-start; } }


/* ===== V15 — UX métier simplifiée : 1 page = 1 mission ===== */
.v15-page{max-width:1480px;margin:0 auto;width:100%;}
.v15-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.v15-header h1{font-size:2rem;margin:0 0 6px;color:var(--primary-color)}
.v15-sub{color:var(--text-light);font-size:1rem;max-width:780px}
.v15-actions{display:flex;gap:10px;flex-wrap:wrap}
.v15-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.v15-kpi{background:#fff;border-radius:14px;padding:16px 18px;border:1px solid var(--border-color);box-shadow:var(--shadow-premium);border-left:4px solid var(--accent-color);min-width:0}
.v15-kpi b{display:block;font-size:1.55rem;line-height:1.1;margin-bottom:6px}.v15-kpi span{color:var(--text-light);font-size:.88rem}.v15-kpi.warn{border-left-color:var(--warning-color)}.v15-kpi.danger{border-left-color:var(--error-color)}
.v15-toolbar{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:14px;margin-bottom:14px;box-shadow:var(--shadow-premium);display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}
.v15-toolbar label{display:block;text-transform:uppercase;font-size:.75rem;color:var(--gray-700);font-weight:800;margin-bottom:6px}.v15-toolbar input,.v15-toolbar select{width:100%;min-height:44px;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;font-size:1rem}
.v15-card{background:#fff;border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-premium);overflow:hidden;margin-bottom:12px}
.v15-card-head{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(130px,.7fr) minmax(220px,1fr) minmax(260px,1.1fr);gap:14px;align-items:center;padding:16px}
.v15-student{display:flex;align-items:center;gap:12px;min-width:0}.v15-avatar{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;box-shadow:0 8px 18px rgba(0,0,0,.12);flex:0 0 auto}.v15-name{font-weight:800;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v15-meta{font-size:.86rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v15-pay b{display:block;font-size:1rem}.v15-pay span{font-size:.78rem;text-transform:uppercase;color:#7a869a;font-weight:800}
.v15-mini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.v15-mini div{background:#f8fafc;border:1px solid var(--border-color);border-radius:10px;text-align:center;padding:8px 6px;min-width:0}.v15-mini b{display:block;font-size:.95rem}.v15-mini span{font-size:.68rem;text-transform:uppercase;font-weight:800;color:#59677c}
.v15-card-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v15-card-actions .btn{width:100%;min-width:0;padding:9px 10px;font-size:.9rem}
.v15-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.v15-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:.75rem;font-weight:800;background:#edf2ff;color:#2754c5}.v15-pill.red{background:#ffe5e5;color:#a61b1b}.v15-pill.orange{background:#fff1d6;color:#9a4b00}.v15-pill.green{background:#def8e8;color:#0b6b36}
.v15-list-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:14px 0 10px}.v15-list-head h2{margin:0;font-size:1.15rem}.v15-list-head p{margin:3px 0 0;color:var(--text-light);font-size:.9rem}
.v15-empty{background:#f8fafc;border:1px dashed var(--border-color);border-radius:14px;padding:20px;color:var(--text-light)}
.v15-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.52);z-index:3000;display:flex;align-items:center;justify-content:center;padding:18px}
.v15-modal{background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.28);width:min(980px,96vw);max-height:92vh;overflow:auto}.v15-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:18px 20px;border-bottom:1px solid var(--border-color);position:sticky;top:0;background:#fff;z-index:2}.v15-modal-header h2{margin:0;font-size:1.25rem}.v15-modal-body{padding:18px 20px}.v15-close{border:none;background:#f1f3f5;border-radius:10px;width:36px;height:36px;font-size:1.2rem;cursor:pointer}
.v15-program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v15-program{border:1px solid var(--border-color);border-radius:14px;overflow:hidden;background:#fff}.v15-program h3{font-size:.9rem;text-transform:uppercase;color:#5b6b82;background:#f8fafc;padding:12px 14px;margin:0;border-bottom:1px solid var(--border-color)}
.v15-module-row{display:grid;grid-template-columns:minmax(180px,1fr) 210px 270px;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid #edf0f3}.v15-module-row:last-child{border-bottom:none}.v15-module-title{font-weight:800;line-height:1.25;overflow-wrap:anywhere}.v15-module-stats{display:flex;gap:6px;flex-wrap:wrap}.v15-module-stats span{border-radius:8px;padding:5px 7px;font-size:.75rem;font-weight:800}.v15-done{background:#dcfce7;color:#166534}.v15-plan{background:#eaf0ff;color:#273fb6}.v15-need{background:#ffe1e1;color:#a31313}.v15-module-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap}.v15-module-actions .btn{padding:7px 10px;font-size:.82rem;min-height:36px}
.v15-collectifs-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px}.v15-collective-list .spe-priority-row{background:#fff;border:1px solid var(--border-color);border-radius:14px;margin-bottom:10px;padding:14px}.v15-side-card{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:16px;padding:16px;box-shadow:var(--shadow-premium)}
@media (max-width:1180px){.v15-card-head{grid-template-columns:1fr 1fr}.v15-card-actions{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr))}.v15-collectifs-grid{grid-template-columns:1fr}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr}}
@media (max-width:760px){.v15-page{padding:0}.v15-header h1{font-size:1.55rem}.v15-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v15-toolbar{grid-template-columns:1fr}.v15-card-head{grid-template-columns:1fr;gap:12px}.v15-mini{grid-template-columns:repeat(4,minmax(0,1fr))}.v15-card-actions{grid-template-columns:1fr 1fr}.v15-card-actions .btn{font-size:.88rem}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr;align-items:start}.v15-module-actions{justify-content:stretch}.v15-module-actions .btn{flex:1 1 45%}.v15-modal-backdrop{align-items:flex-end;padding:0}.v15-modal{width:100vw;max-height:92vh;border-radius:18px 18px 0 0}.v15-kpi{padding:14px}.v15-kpi b{font-size:1.25rem}}

/* --- bloc CSS extrait --- */

        /* COCKPIT — CSS intégré, scopé .ckp (isolation réelle) */

  /* Reset local scopé au cockpit */
  .ckp, .ckp *, .ckp *::before, .ckp *::after{ box-sizing:border-box; margin:0; padding:0; }
  .ckp{
    --bg:#FBFBFC; --surf:#FFFFFF; --surf2:#F5F5F7; --line:#ECECEF; --line2:#E4E4E9;
    --ink:#17171F; --ink2:#56565F; --ink3:#9A9AA3;
    --acc:#4F46E5; --acc-hover:#4338CA; --accw:#EEF0FF; --acci:#3730A3;
    --amber:#B45309; --amberbg:#FEF3E2; --blue:#1D4ED8; --bluebg:#E7EEFE;
    --green:#15803D; --greenbg:#E6F4EA; --red:#B91C1C; --redbg:#FDECEC;
    --radius:14px; --radius-sm:10px;
    --shadow:0 1px 2px rgba(20,20,40,.04), 0 4px 16px rgba(20,20,40,.05);
    --shadow-pop:0 8px 30px rgba(20,20,40,.10);
    --ease:cubic-bezier(.4,0,.2,1);
    display:grid; grid-template-columns:330px minmax(0,1fr);
    height:calc(100vh - 120px); min-height:560px; max-width:1480px; margin:0 auto;
    background:var(--bg); border:1px solid var(--line); border-radius:18px; overflow:hidden;
    box-shadow:var(--shadow);
  }
  .ckp svg{ display:block; width:18px; height:18px; flex-shrink:0; }
  .ckp-logo svg{ width:18px; height:18px; }
  .ckp ::-webkit-scrollbar{ width:10px; height:10px; }
  .ckp ::-webkit-scrollbar-thumb{ background:#DCDCE2; border-radius:6px; border:3px solid transparent; background-clip:padding-box; }
  .ckp ::-webkit-scrollbar-thumb:hover{ background:#C7C7D0; background-clip:padding-box; }

  /* ───── Colonne gauche ───── */
  .ckp-left{ background:var(--surf); border-right:1px solid var(--line); display:flex; flex-direction:column; min-width:0; min-height:0; }
  .ckp-brand{ display:flex; align-items:center; gap:11px; padding:20px 18px 16px; }
  .ckp-logo{ width:32px; height:32px; border-radius:9px; background:var(--acc); color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 2px 8px rgba(79,70,229,.35); }
  .ckp-brand b{ font-size:15px; font-weight:600; letter-spacing:-.01em; }
  .ckp-brand small{ display:block; font-size:11.5px; color:var(--ink3); font-weight:500; margin-top:1px; }
  .ckp-nav{ padding:6px 12px; overflow:auto; flex:1; }
  .ckp-grp{ font-size:11px; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--ink3); margin:18px 10px 8px; }
  .ckp-grp:first-child{ margin-top:6px; }
  .ckp-item{ display:flex; align-items:center; gap:11px; padding:7px 11px; border-radius:var(--radius-sm); cursor:pointer; color:var(--ink2); font-size:13.5px; font-weight:500; margin-bottom:2px; transition:background .15s var(--ease), color .15s var(--ease); }
  .ckp-item:hover{ background:var(--surf2); color:var(--ink); }
  .ckp-item.on{ background:var(--accw); color:var(--acci); font-weight:600; }
  .ckp-item .ic{ width:18px; height:18px; flex-shrink:0; color:currentColor; opacity:.85; }
  .ckp-item.on .ic{ opacity:1; }
  .ckp-item .ct{ margin-left:auto; font-size:11.5px; font-weight:600; color:var(--ink3); background:var(--surf2); padding:1px 8px; border-radius:20px; min-width:24px; text-align:center; }
  .ckp-item.on .ct{ background:#fff; color:var(--acci); }
  .ckp-item.hot .ct{ background:var(--amberbg); color:var(--amber); }
  .ckp-soon{ font-size:9px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--ink3); background:var(--surf2); padding:2px 6px; border-radius:5px; margin-left:7px; }
  .ckp-banner{ display:flex; align-items:flex-start; gap:10px; max-width:1480px; margin:0 auto 12px; padding:12px 14px; border:1px solid #F7D794; background:#FFF7E6; color:#7C4A03; border-radius:12px; font-size:13px; line-height:1.45; }
  .ckp-banner svg{ width:18px; height:18px; flex-shrink:0; margin-top:1px; }
  .ckp-coach{ display:flex; align-items:center; gap:10px; padding:7px 11px; font-size:13px; color:var(--ink2); }
  .ckp-cdot{ width:8px; height:8px; border-radius:50%; }

  /* ───── Colonne centrale ───── */

  /* Messages — filtres remontés en haut pour libérer la colonne gauche */
  .ckp-top{ padding:14px 14px 10px; border-bottom:1px solid var(--line); background:var(--surf); }
  .ckp-topbrand{ display:flex; align-items:center; gap:10px; margin-bottom:10px; }
  .ckp-topbrand .ckp-logo{ width:31px; height:31px; border-radius:9px; }
  .ckp-topbrand b{ font-size:15px; font-weight:650; letter-spacing:-.01em; }
  .ckp-topbrand small{ display:block; font-size:11.5px; color:var(--ink3); font-weight:500; margin-top:1px; }
  .ckp-filterbar{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
  .ckp-chipfilter{ border:1px solid var(--line2); background:#fff; color:var(--ink2); border-radius:999px; padding:6px 9px; font-size:12px; font-weight:650; cursor:pointer; display:inline-flex; align-items:center; gap:6px; transition:background .15s, color .15s, border-color .15s; }
  .ckp-chipfilter:hover{ background:var(--surf2); color:var(--ink); }
  .ckp-chipfilter.on{ background:var(--acc); color:#fff; border-color:var(--acc); box-shadow:0 4px 12px rgba(79,70,229,.18); }
  .ckp-chipfilter .ct{ font-size:10.5px; font-weight:750; background:var(--surf2); color:var(--ink3); border-radius:999px; padding:1px 6px; min-width:20px; text-align:center; }
  .ckp-chipfilter.on .ct{ background:rgba(255,255,255,.18); color:#fff; }
  .ckp-left{ display:none !important; }
  .ckp-search{ padding-top:10px; }

  .ckp-mid{ background:var(--surf); border-right:1px solid var(--line); display:flex; flex-direction:column; min-width:0; min-height:0; }
  .ckp-search{ padding:12px 14px 8px; }
  .ckp-sbox{ display:flex; align-items:center; gap:9px; background:var(--surf2); border:1.5px solid transparent; border-radius:var(--radius-sm); padding:0 12px; height:40px; transition:border-color .15s, background .15s, box-shadow .15s; }
  .ckp-sbox:focus-within{ background:#fff; border-color:var(--acc); box-shadow:0 0 0 3px var(--accw); }
  .ckp-sbox .ic{ width:17px; height:17px; color:var(--ink3); flex-shrink:0; }
  .ckp-sbox input{ border:none; background:transparent; outline:none; flex:1; font-size:13.5px; color:var(--ink); height:100%; font-family:inherit; }
  .ckp-listhd{ display:flex; align-items:center; justify-content:space-between; padding:4px 16px 8px; }
  .ckp-listhd .t{ font-size:13px; font-weight:600; }
  .ckp-listhd .srt{ font-size:12px; color:var(--ink3); display:flex; align-items:center; gap:5px; cursor:pointer; }
  .ckp-listhd .srt svg{ width:14px; height:14px; }
  .ckp-list{ overflow-y:auto; overflow-x:hidden; flex:1 1 auto; min-height:0; padding:0 9px 10px; overscroll-behavior:contain; }

  .ckp-card{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:11px; padding:9px 11px; border-radius:var(--radius); cursor:pointer; margin-bottom:3px; border:1px solid transparent; transition:background .15s var(--ease), border-color .15s, box-shadow .15s; position:relative; }
  .ckp-card:hover{ background:var(--surf); border-color:var(--line2); box-shadow:var(--shadow); }
  .ckp-card.sel{ background:var(--accw); }
  .ckp-card.sel::before{ content:""; position:absolute; left:0; top:11px; bottom:11px; width:3px; border-radius:0 3px 3px 0; background:var(--acc); }
  .ckp-av{ width:38px; height:38px; border-radius:11px; display:flex; align-items:center; justify-content:center; font-weight:600; font-size:14px; flex-shrink:0; }
  .ckp-cbody{ min-width:0; }
  .ckp-ctop{ display:flex; align-items:center; gap:8px; }
  .ckp-cname{ font-size:13.5px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; letter-spacing:-.01em; }
  .ckp-ctime{ margin-left:auto; font-size:11px; color:var(--ink3); white-space:nowrap; font-weight:500; }
  .ckp-cmsg{ font-size:12.5px; color:var(--ink2); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .ckp-cmeta{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:6px; font-size:10.8px; color:var(--ink3); }
  .ckp-cmeta span{ min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .ckp-cmeta b{ color:var(--ink2); font-weight:700; flex-shrink:0; }
  .ckp-mini-progress{ height:3px; background:var(--surf2); border-radius:99px; overflow:hidden; margin-top:6px; }
  .ckp-mini-progress i{ display:block; height:100%; background:var(--acc); border-radius:99px; }
  .ckp-card.sel .ckp-mini-progress{ background:#fff; }
  .ckp-card.unread .ckp-cname{ font-weight:700; }
  .ckp-card.unread .ckp-cmsg{ color:var(--ink); font-weight:500; }
  .ckp-bdot{ width:8px; height:8px; border-radius:50%; background:var(--acc); flex-shrink:0; }
  .ckp-pills{ display:flex; align-items:center; gap:5px; margin-top:6px; flex-wrap:wrap; }
  .ckp-pill{ font-size:10.5px; font-weight:600; padding:2.5px 9px; border-radius:7px; display:inline-flex; align-items:center; gap:4px; line-height:1.3; }
  .ckp-pill svg{ width:11px; height:11px; }
  .ckp-pill.todo{ background:var(--amberbg); color:var(--amber); }
  .ckp-pill.wait{ background:var(--bluebg); color:var(--blue); }
  .ckp-pill.done{ background:var(--greenbg); color:var(--green); }
  .ckp-pill.q{ background:var(--redbg); color:var(--red); }
  .ckp-pill.corr{ background:var(--accw); color:var(--acci); }
  .ckp-pill.ghost{ background:transparent; color:var(--ink3); border:1px solid var(--line2); }

  /* ───── Colonne droite ───── */
  .ckp-right{ background:var(--surf); display:flex; min-width:0; min-height:0; overflow:hidden; }
  .ckp-conv{ display:flex; flex-direction:column; flex:1 1 0; min-width:0; min-height:0; }
  .ckp-rhd{ display:flex; align-items:center; gap:12px; padding:15px 18px; border-bottom:1px solid var(--line); }
  .ckp-rhd h3{ font-size:15.5px; font-weight:600; letter-spacing:-.01em; }
  .ckp-rhd p{ font-size:12px; color:var(--ink3); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .ckp-iconbtn{ width:34px; height:34px; border-radius:10px; border:1px solid var(--line2); background:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; color:var(--ink2); transition:background .15s, border-color .15s; }
  .ckp-iconbtn:hover{ background:var(--surf2); color:var(--ink); }
  .ckp-iconbtn svg{ width:18px; height:18px; }
  .ckp-srow{ display:flex; align-items:center; gap:7px; padding:11px 18px; border-bottom:1px solid var(--line); background:var(--bg); }
  .ckp-slbl{ font-size:11.5px; color:var(--ink3); font-weight:600; margin-right:2px; }
  .ckp-chip{ font-size:12px; font-weight:600; padding:6px 12px; border-radius:9px; border:1px solid var(--line2); background:#fff; cursor:pointer; color:var(--ink2); transition:all .15s var(--ease); }
  .ckp-chip:hover{ border-color:var(--ink3); }
  .ckp-chip.on{ background:var(--acc); border-color:var(--acc); color:#fff; box-shadow:0 2px 8px rgba(79,70,229,.3); }
  .ckp-sla{ margin-left:auto; font-size:11.5px; color:var(--ink3); display:flex; align-items:center; gap:5px; }
  .ckp-sla svg{ width:14px; height:14px; }

  .ckp-thread{ flex:1 1 auto; min-height:0; overflow-y:auto; overflow-x:hidden; padding:20px; display:flex; flex-direction:column; gap:14px; background:var(--bg); overscroll-behavior:contain; }
  .ckp-day{ align-self:center; font-size:11px; color:var(--ink3); font-weight:600; background:var(--surf); border:1px solid var(--line); padding:3px 12px; border-radius:20px; }
  .ckp-msg{ max-width:72%; display:flex; flex-direction:column; gap:5px; }
  .ckp-msg.them{ align-self:flex-start; }
  .ckp-msg.me{ align-self:flex-end; align-items:flex-end; }
  .ckp-bub{ padding:11px 14px; font-size:13.5px; line-height:1.5; border-radius:16px; }
  .ckp-msg.them .ckp-bub{ background:var(--surf); border:1px solid var(--line); border-bottom-left-radius:5px; }
  .ckp-msg.me .ckp-bub{ background:var(--acc); color:#fff; border-bottom-right-radius:5px; box-shadow:0 2px 10px rgba(79,70,229,.22); }
  .ckp-mm{ font-size:10.5px; color:var(--ink3); padding:0 4px; }

  /* Étape 3 — Centre premium : question / réponse / validation / suite */
  .ckp-workflow{ display:flex; flex-direction:column; gap:12px; width:100%; max-width:760px; margin:0 auto; }
  .ckp-wcard{ background:var(--surf); border:1px solid var(--line); border-radius:16px; box-shadow:0 1px 3px rgba(15,23,42,.04); overflow:hidden; }
  .ckp-wcard-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px; border-bottom:1px solid var(--line); background:#fff; }
  .ckp-wtitle{ display:flex; align-items:center; gap:9px; min-width:0; font-size:13px; font-weight:800; color:var(--ink); }
  .ckp-wtitle i{ width:26px; height:26px; border-radius:9px; display:inline-flex; align-items:center; justify-content:center; font-style:normal; background:var(--accw); color:var(--acc); flex-shrink:0; }
  .ckp-wtag{ font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; border-radius:999px; padding:4px 8px; background:var(--surf2); color:var(--ink3); white-space:nowrap; }
  .ckp-wtag.todo{ background:var(--amberbg); color:var(--amber); }
  .ckp-wtag.done{ background:var(--greenbg); color:var(--green); }
  .ckp-wbody{ padding:13px 14px; font-size:13px; line-height:1.55; color:var(--ink2); white-space:pre-wrap; overflow-wrap:anywhere; }
  .ckp-wempty{ color:var(--ink3); font-style:italic; }
  .ckp-wfoot{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 14px; border-top:1px solid var(--line); background:var(--bg); font-size:11.5px; color:var(--ink3); }
  .ckp-wbtn{ border:1px solid var(--line2); background:#fff; color:var(--ink2); border-radius:9px; padding:6px 10px; cursor:pointer; font-size:11.5px; font-weight:700; }
  .ckp-wbtn:hover{ border-color:var(--acc); color:var(--acc); }
  .ckp-thread-log{ margin-top:4px; border-top:1px dashed var(--line2); padding-top:10px; display:flex; flex-direction:column; gap:10px; }
  .ckp-thread-log-title{ font-size:11px; font-weight:800; color:var(--ink3); text-transform:uppercase; letter-spacing:.05em; text-align:center; }

  .ckp-composer{ padding:15px 18px 17px; border-top:1px solid var(--line); }
  .ckp-compose-hint{ font-size:11.5px; color:var(--ink3); margin:0 0 8px 4px; }
  .ckp-compose-hint b{ color:var(--ink2); font-weight:700; }
  .ckp-cb{ display:flex; align-items:center; gap:10px; background:var(--surf2); border:1.5px solid transparent; border-radius:var(--radius); padding:6px 6px 6px 14px; transition:border-color .15s, background .15s, box-shadow .15s; }
  .ckp-cb:focus-within{ background:#fff; border-color:var(--acc); box-shadow:0 0 0 3px var(--accw); }
  .ckp-cb .att{ width:20px; height:20px; color:var(--ink3); cursor:pointer; flex-shrink:0; }
  .ckp-cb input{ flex:1; border:none; background:transparent; outline:none; font-size:13.5px; height:34px; font-family:inherit; }
  .ckp-send{ height:36px; padding:0 16px; border-radius:10px; background:var(--acc); color:#fff; border:none; cursor:pointer; font-size:13px; font-weight:600; display:flex; align-items:center; gap:7px; transition:background .15s, transform .08s; box-shadow:0 2px 8px rgba(79,70,229,.3); }
  .ckp-send:hover{ background:var(--acc-hover); }
  .ckp-send svg{ width:15px; height:15px; }

  /* ───── Contexte ───── */
  .ckp-ctx{ width:236px; flex-shrink:0; border-left:1px solid var(--line); background:var(--surf); overflow-y:auto; overflow-x:hidden; min-height:0; padding:20px 16px; }
  .ckp-ctxhd{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:11px; padding-bottom:18px; border-bottom:1px solid var(--line); }
  .ckp-ctxhd .ckp-av{ width:62px; height:62px; border-radius:18px; font-size:21px; }
  .ckp-ctxhd h3{ font-size:15px; font-weight:600; }
  .ckp-ctxhd p{ font-size:12px; color:var(--ink3); }
  .ckp-ctxtabs{ display:grid; grid-template-columns:repeat(3,1fr); gap:4px; margin:14px 0 4px; background:var(--surf2); border:1px solid var(--line); border-radius:12px; padding:4px; position:sticky; top:0; z-index:2; }
  .ckp-ctxtab{ border:none; background:transparent; border-radius:9px; height:30px; font-size:11.5px; font-weight:700; color:var(--ink3); cursor:pointer; }
  .ckp-ctxtab.on{ background:#fff; color:var(--acc); box-shadow:0 1px 5px rgba(15,23,42,.08); }
  .ckp-info-row{ display:flex; justify-content:space-between; gap:10px; font-size:12px; padding:8px 0; border-bottom:1px solid var(--line); }
  .ckp-info-row:last-child{ border-bottom:none; }
  .ckp-info-row span{ color:var(--ink3); }
  .ckp-info-row b{ color:var(--ink); text-align:right; font-weight:700; }
  .ckp-mini-note{ font-size:11.5px; color:var(--ink3); line-height:1.45; background:var(--surf2); border:1px solid var(--line); border-radius:10px; padding:9px 10px; }
  .ckp-cs{ margin-top:20px; }
  .ckp-cs h4{ font-size:11px; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--ink3); margin-bottom:10px; }
  .ckp-pw{ background:var(--surf2); border-radius:5px; height:8px; overflow:hidden; }
  .ckp-pw>i{ display:block; height:100%; background:var(--acc); border-radius:5px; }
  .ckp-pv{ display:flex; justify-content:space-between; font-size:12px; margin-top:7px; color:var(--ink2); }
  .ckp-tl{ position:relative; padding-left:18px; }
  .ckp-tl::before{ content:""; position:absolute; left:4px; top:5px; bottom:5px; width:2px; background:var(--line); }
  .ckp-tli{ position:relative; padding-bottom:15px; }
  .ckp-tli:last-child{ padding-bottom:0; }
  .ckp-tli::before{ content:""; position:absolute; left:-17px; top:3px; width:9px; height:9px; border-radius:50%; background:var(--acc); box-shadow:0 0 0 3px var(--accw); }
  .ckp-tlt{ font-size:12.5px; font-weight:600; }
  .ckp-tld{ font-size:11px; color:var(--ink3); margin-top:1px; }
  .ckp-mc{ background:var(--surf); border:1px solid var(--line); border-radius:var(--radius-sm); padding:10px 12px; margin-bottom:7px; transition:border-color .15s, box-shadow .15s; }
  .ckp-mc:hover{ border-color:var(--line2); box-shadow:var(--shadow); }
  .ckp-mct{ font-size:12.5px; font-weight:600; }
  .ckp-mcd{ font-size:11px; color:var(--ink3); margin-top:2px; }
  .ckp-mc{ cursor:pointer; }
  .ckp-mc.sel{ border-color:#4F46E5; background:#F5F3FF; box-shadow:0 8px 24px rgba(79,70,229,.12); }
  .ckp-task-detail{ margin-top:10px; border:1px solid var(--line); border-radius:var(--radius-sm); background:#fff; padding:12px; }
  .ckp-task-detail-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:8px; }
  .ckp-task-detail-title{ font-size:13px; font-weight:700; color:var(--ink); line-height:1.3; }
  .ckp-task-detail-meta{ font-size:11px; color:var(--ink3); margin-top:3px; }
  .ckp-task-detail-desc{ margin-top:10px; padding:10px; border-radius:10px; background:#F8FAFC; color:var(--ink2); font-size:12px; line-height:1.5; max-height:160px; overflow:auto; white-space:pre-wrap; }
  .ckp-task-detail-qa{ margin-top:10px; display:grid; gap:8px; }
  .ckp-task-detail-qa .qa-row{ border:1px solid var(--line); border-radius:10px; padding:9px 10px; background:#fff; }
  .ckp-task-detail-qa b{ display:block; font-size:10px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink3); margin-bottom:4px; }
  .ckp-task-detail-qa span{ font-size:12px; color:var(--ink2); line-height:1.45; white-space:pre-wrap; }
  .ckp-ctxbtn{ width:100%; height:38px; border-radius:10px; border:1px solid var(--line2); background:#fff; cursor:pointer; font-size:12.5px; font-weight:600; color:var(--ink2); display:flex; align-items:center; justify-content:center; gap:8px; margin-top:7px; transition:background .15s, border-color .15s; }
  .ckp-ctxbtn:hover{ background:var(--surf2); color:var(--ink); }
  .ckp-ctxbtn svg{ width:16px; height:16px; }

  /* ───── Responsive ───── */
  @media (max-width:1340px){
    .ckp-ctx{ display:none; }
  }
  @media (max-width:1080px){
    .ckp{ grid-template-columns:300px minmax(0,1fr); }
  }
  @media (max-width:820px){
    body{ padding:0; }
    .ckp{ grid-template-columns:1fr; height:100vh; border-radius:0; border:none; max-width:none; }
    .ckp-left{ display:none; }
    .ckp-right{ display:none; }
    .ckp.show-fiche .ckp-mid{ display:none; }
    .ckp.show-fiche .ckp-right{ display:flex; }
    .ckp.show-fiche .ckp-ctx{ display:none; }
    .ckp-back{ display:flex !important; }
  }
  .ckp-back{ display:none; }

    

/* ===== V15 — UX métier simplifiée : 1 page = 1 mission ===== */
.v15-page{max-width:1480px;margin:0 auto;width:100%;}
.v15-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.v15-header h1{font-size:2rem;margin:0 0 6px;color:var(--primary-color)}
.v15-sub{color:var(--text-light);font-size:1rem;max-width:780px}
.v15-actions{display:flex;gap:10px;flex-wrap:wrap}
.v15-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.v15-kpi{background:#fff;border-radius:14px;padding:16px 18px;border:1px solid var(--border-color);box-shadow:var(--shadow-premium);border-left:4px solid var(--accent-color);min-width:0}
.v15-kpi b{display:block;font-size:1.55rem;line-height:1.1;margin-bottom:6px}.v15-kpi span{color:var(--text-light);font-size:.88rem}.v15-kpi.warn{border-left-color:var(--warning-color)}.v15-kpi.danger{border-left-color:var(--error-color)}
.v15-toolbar{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:14px;margin-bottom:14px;box-shadow:var(--shadow-premium);display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}
.v15-toolbar label{display:block;text-transform:uppercase;font-size:.75rem;color:var(--gray-700);font-weight:800;margin-bottom:6px}.v15-toolbar input,.v15-toolbar select{width:100%;min-height:44px;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;font-size:1rem}
.v15-card{background:#fff;border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-premium);overflow:hidden;margin-bottom:12px}
.v15-card-head{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(130px,.7fr) minmax(220px,1fr) minmax(260px,1.1fr);gap:14px;align-items:center;padding:16px}
.v15-student{display:flex;align-items:center;gap:12px;min-width:0}.v15-avatar{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;box-shadow:0 8px 18px rgba(0,0,0,.12);flex:0 0 auto}.v15-name{font-weight:800;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v15-meta{font-size:.86rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v15-pay b{display:block;font-size:1rem}.v15-pay span{font-size:.78rem;text-transform:uppercase;color:#7a869a;font-weight:800}
.v15-mini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.v15-mini div{background:#f8fafc;border:1px solid var(--border-color);border-radius:10px;text-align:center;padding:8px 6px;min-width:0}.v15-mini b{display:block;font-size:.95rem}.v15-mini span{font-size:.68rem;text-transform:uppercase;font-weight:800;color:#59677c}
.v15-card-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v15-card-actions .btn{width:100%;min-width:0;padding:9px 10px;font-size:.9rem}
.v15-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.v15-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:.75rem;font-weight:800;background:#edf2ff;color:#2754c5}.v15-pill.red{background:#ffe5e5;color:#a61b1b}.v15-pill.orange{background:#fff1d6;color:#9a4b00}.v15-pill.green{background:#def8e8;color:#0b6b36}
.v15-list-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:14px 0 10px}.v15-list-head h2{margin:0;font-size:1.15rem}.v15-list-head p{margin:3px 0 0;color:var(--text-light);font-size:.9rem}
.v15-empty{background:#f8fafc;border:1px dashed var(--border-color);border-radius:14px;padding:20px;color:var(--text-light)}
.v15-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.52);z-index:3000;display:flex;align-items:center;justify-content:center;padding:18px}
.v15-modal{background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.28);width:min(980px,96vw);max-height:92vh;overflow:auto}.v15-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:18px 20px;border-bottom:1px solid var(--border-color);position:sticky;top:0;background:#fff;z-index:2}.v15-modal-header h2{margin:0;font-size:1.25rem}.v15-modal-body{padding:18px 20px}.v15-close{border:none;background:#f1f3f5;border-radius:10px;width:36px;height:36px;font-size:1.2rem;cursor:pointer}
.v15-program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v15-program{border:1px solid var(--border-color);border-radius:14px;overflow:hidden;background:#fff}.v15-program h3{font-size:.9rem;text-transform:uppercase;color:#5b6b82;background:#f8fafc;padding:12px 14px;margin:0;border-bottom:1px solid var(--border-color)}
.v15-module-row{display:grid;grid-template-columns:minmax(180px,1fr) 210px 270px;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid #edf0f3}.v15-module-row:last-child{border-bottom:none}.v15-module-title{font-weight:800;line-height:1.25;overflow-wrap:anywhere}.v15-module-stats{display:flex;gap:6px;flex-wrap:wrap}.v15-module-stats span{border-radius:8px;padding:5px 7px;font-size:.75rem;font-weight:800}.v15-done{background:#dcfce7;color:#166534}.v15-plan{background:#eaf0ff;color:#273fb6}.v15-need{background:#ffe1e1;color:#a31313}.v15-module-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap}.v15-module-actions .btn{padding:7px 10px;font-size:.82rem;min-height:36px}
.v15-collectifs-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px}.v15-collective-list .spe-priority-row{background:#fff;border:1px solid var(--border-color);border-radius:14px;margin-bottom:10px;padding:14px}.v15-side-card{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:16px;padding:16px;box-shadow:var(--shadow-premium)}
@media (max-width:1180px){.v15-card-head{grid-template-columns:1fr 1fr}.v15-card-actions{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr))}.v15-collectifs-grid{grid-template-columns:1fr}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr}}
@media (max-width:760px){.v15-page{padding:0}.v15-header h1{font-size:1.55rem}.v15-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v15-toolbar{grid-template-columns:1fr}.v15-card-head{grid-template-columns:1fr;gap:12px}.v15-mini{grid-template-columns:repeat(4,minmax(0,1fr))}.v15-card-actions{grid-template-columns:1fr 1fr}.v15-card-actions .btn{font-size:.88rem}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr;align-items:start}.v15-module-actions{justify-content:stretch}.v15-module-actions .btn{flex:1 1 45%}.v15-modal-backdrop{align-items:flex-end;padding:0}.v15-modal{width:100vw;max-height:92vh;border-radius:18px 18px 0 0}.v15-kpi{padding:14px}.v15-kpi b{font-size:1.25rem}}

/* --- bloc CSS extrait --- */

/* Pilotage élèves — version lisible sans scroll horizontal PC */
.spe-shell { grid-template-columns:minmax(680px,1fr) minmax(360px,420px); }
.spe-table-wrap { overflow-y:auto; overflow-x:hidden; max-height:calc(100vh - 350px); min-height:360px; }
.spe-table, .spe-table thead, .spe-table tbody, .spe-table tr, .spe-table th, .spe-table td { display:block; width:100%; }
.spe-table thead { display:none; }
.spe-table tbody { display:flex; flex-direction:column; gap:8px; padding:10px; }
.spe-table tbody tr { display:grid; grid-template-columns:minmax(240px,1.45fr) minmax(105px,.55fr) minmax(220px,1fr) minmax(210px,.9fr); gap:12px; align-items:center; border:1px solid #e7eaf0; border-radius:14px; background:#fff; padding:10px 12px; box-shadow:0 5px 14px rgba(15,23,42,.035); }
.spe-table tbody tr:hover { background:#f8fbff; border-color:#dbeafe; }
.spe-table tbody tr.selected { background:#eef4ff; border-color:#bfdbfe; box-shadow:inset 3px 0 0 var(--spe-blue), 0 8px 18px rgba(37,99,235,.08); }
.spe-table td { padding:0; border:0; min-width:0; }
.spe-row-money { display:flex; flex-direction:column; gap:5px; }
.spe-row-label { display:block; font-size:.62rem; font-weight:900; letter-spacing:.045em; color:#94a3b8; text-transform:uppercase; margin-bottom:2px; }
.spe-row-paid { font-weight:900; color:#0f172a; }
.spe-row-coaching { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; }
.spe-row-chip { border:1px solid #e7eaf0; background:#f8fafc; border-radius:10px; padding:6px 4px; text-align:center; min-width:0; }
.spe-row-chip b { display:block; font-size:.88rem; line-height:1; color:#0f172a; }
.spe-row-chip span { display:block; margin-top:4px; font-size:.58rem; font-weight:900; color:#64748b; text-transform:uppercase; letter-spacing:.035em; white-space:nowrap; }
.spe-row-chip.good { background:#ecfdf5; border-color:#bbf7d0; }
.spe-row-chip.warn { background:#fff7ed; border-color:#fed7aa; }
.spe-row-chip.danger { background:#fef2f2; border-color:#fecaca; }
.spe-row-alerts { display:flex; flex-direction:column; gap:7px; align-items:flex-start; min-width:0; }
.spe-status-line { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.spe-status-line .spe-pill { font-size:.68rem; padding:4px 8px; min-width:auto; }
.spe-mini-actions { display:grid; grid-template-columns:1fr 1fr; gap:6px; width:100%; align-items:center; }
.spe-mini-actions .btn { min-width:0; width:100%; padding:8px 9px; white-space:nowrap; }
@media (max-width: 1380px) and (min-width: 1181px) {
  .spe-shell { grid-template-columns:minmax(660px,1fr) minmax(330px,380px); }
  .spe-table tbody tr { grid-template-columns:minmax(210px,1.25fr) minmax(92px,.48fr) minmax(190px,.9fr) minmax(190px,.82fr); gap:8px; padding:9px; }
  .spe-email { max-width:190px; }
  .spe-mini-actions { grid-template-columns:1fr 1fr; }
  .spe-mini-actions .btn { min-width:0; padding:7px 7px; font-size:.82rem; }
  .spe-status-line .spe-pill { font-size:.65rem; padding:4px 7px; }
}
@media (max-width: 1180px) {
  .spe-shell { grid-template-columns:1fr; }
  .spe-detail { position:static; max-height:none; }
  .spe-table-wrap { max-height:none; min-height:0; overflow:visible; }
}
@media (max-width: 768px) {
  .spe-table tbody { padding:8px; }
  .spe-table tbody tr { grid-template-columns:1fr; gap:10px; padding:12px; }
  .spe-row-money { flex-direction:row; justify-content:space-between; align-items:center; }
  .spe-row-coaching { grid-template-columns:repeat(2,1fr); }
  .spe-row-alerts { align-items:stretch; }
  .spe-mini-actions { justify-content:stretch; }
  .spe-mini-actions .btn { flex:1 1 120px; min-width:0; }
}


/* ===== V15 — UX métier simplifiée : 1 page = 1 mission ===== */
.v15-page{max-width:1480px;margin:0 auto;width:100%;}
.v15-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.v15-header h1{font-size:2rem;margin:0 0 6px;color:var(--primary-color)}
.v15-sub{color:var(--text-light);font-size:1rem;max-width:780px}
.v15-actions{display:flex;gap:10px;flex-wrap:wrap}
.v15-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.v15-kpi{background:#fff;border-radius:14px;padding:16px 18px;border:1px solid var(--border-color);box-shadow:var(--shadow-premium);border-left:4px solid var(--accent-color);min-width:0}
.v15-kpi b{display:block;font-size:1.55rem;line-height:1.1;margin-bottom:6px}.v15-kpi span{color:var(--text-light);font-size:.88rem}.v15-kpi.warn{border-left-color:var(--warning-color)}.v15-kpi.danger{border-left-color:var(--error-color)}
.v15-toolbar{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:14px;margin-bottom:14px;box-shadow:var(--shadow-premium);display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}
.v15-toolbar label{display:block;text-transform:uppercase;font-size:.75rem;color:var(--gray-700);font-weight:800;margin-bottom:6px}.v15-toolbar input,.v15-toolbar select{width:100%;min-height:44px;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;font-size:1rem}
.v15-card{background:#fff;border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-premium);overflow:hidden;margin-bottom:12px}
.v15-card-head{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(130px,.7fr) minmax(220px,1fr) minmax(260px,1.1fr);gap:14px;align-items:center;padding:16px}
.v15-student{display:flex;align-items:center;gap:12px;min-width:0}.v15-avatar{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;box-shadow:0 8px 18px rgba(0,0,0,.12);flex:0 0 auto}.v15-name{font-weight:800;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v15-meta{font-size:.86rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v15-pay b{display:block;font-size:1rem}.v15-pay span{font-size:.78rem;text-transform:uppercase;color:#7a869a;font-weight:800}
.v15-mini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.v15-mini div{background:#f8fafc;border:1px solid var(--border-color);border-radius:10px;text-align:center;padding:8px 6px;min-width:0}.v15-mini b{display:block;font-size:.95rem}.v15-mini span{font-size:.68rem;text-transform:uppercase;font-weight:800;color:#59677c}
.v15-card-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v15-card-actions .btn{width:100%;min-width:0;padding:9px 10px;font-size:.9rem}
.v15-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.v15-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:.75rem;font-weight:800;background:#edf2ff;color:#2754c5}.v15-pill.red{background:#ffe5e5;color:#a61b1b}.v15-pill.orange{background:#fff1d6;color:#9a4b00}.v15-pill.green{background:#def8e8;color:#0b6b36}
.v15-list-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:14px 0 10px}.v15-list-head h2{margin:0;font-size:1.15rem}.v15-list-head p{margin:3px 0 0;color:var(--text-light);font-size:.9rem}
.v15-empty{background:#f8fafc;border:1px dashed var(--border-color);border-radius:14px;padding:20px;color:var(--text-light)}
.v15-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.52);z-index:3000;display:flex;align-items:center;justify-content:center;padding:18px}
.v15-modal{background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.28);width:min(980px,96vw);max-height:92vh;overflow:auto}.v15-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:18px 20px;border-bottom:1px solid var(--border-color);position:sticky;top:0;background:#fff;z-index:2}.v15-modal-header h2{margin:0;font-size:1.25rem}.v15-modal-body{padding:18px 20px}.v15-close{border:none;background:#f1f3f5;border-radius:10px;width:36px;height:36px;font-size:1.2rem;cursor:pointer}
.v15-program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v15-program{border:1px solid var(--border-color);border-radius:14px;overflow:hidden;background:#fff}.v15-program h3{font-size:.9rem;text-transform:uppercase;color:#5b6b82;background:#f8fafc;padding:12px 14px;margin:0;border-bottom:1px solid var(--border-color)}
.v15-module-row{display:grid;grid-template-columns:minmax(180px,1fr) 210px 270px;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid #edf0f3}.v15-module-row:last-child{border-bottom:none}.v15-module-title{font-weight:800;line-height:1.25;overflow-wrap:anywhere}.v15-module-stats{display:flex;gap:6px;flex-wrap:wrap}.v15-module-stats span{border-radius:8px;padding:5px 7px;font-size:.75rem;font-weight:800}.v15-done{background:#dcfce7;color:#166534}.v15-plan{background:#eaf0ff;color:#273fb6}.v15-need{background:#ffe1e1;color:#a31313}.v15-module-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap}.v15-module-actions .btn{padding:7px 10px;font-size:.82rem;min-height:36px}
.v15-collectifs-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px}.v15-collective-list .spe-priority-row{background:#fff;border:1px solid var(--border-color);border-radius:14px;margin-bottom:10px;padding:14px}.v15-side-card{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:16px;padding:16px;box-shadow:var(--shadow-premium)}
@media (max-width:1180px){.v15-card-head{grid-template-columns:1fr 1fr}.v15-card-actions{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr))}.v15-collectifs-grid{grid-template-columns:1fr}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr}}
@media (max-width:760px){.v15-page{padding:0}.v15-header h1{font-size:1.55rem}.v15-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v15-toolbar{grid-template-columns:1fr}.v15-card-head{grid-template-columns:1fr;gap:12px}.v15-mini{grid-template-columns:repeat(4,minmax(0,1fr))}.v15-card-actions{grid-template-columns:1fr 1fr}.v15-card-actions .btn{font-size:.88rem}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr;align-items:start}.v15-module-actions{justify-content:stretch}.v15-module-actions .btn{flex:1 1 45%}.v15-modal-backdrop{align-items:flex-end;padding:0}.v15-modal{width:100vw;max-height:92vh;border-radius:18px 18px 0 0}.v15-kpi{padding:14px}.v15-kpi b{font-size:1.25rem}}

/* --- bloc CSS extrait --- */

    /* Base anti-débordement WebKit : Safari conserve souvent la largeur minimale
       des enfants flex/grid, contrairement à Chrome. */
    html, body {
        width: 100%;
        min-width: 0;
        -webkit-text-size-adjust: 100%;
    }

    *, *::before, *::after {
        min-width: 0;
    }

    .app-container,
    .main-content,
    #adminDashboardContent,
    #studentDashboardContent,
    .page,
    .card,
    .grid,
    .grid-2,
    .grid-3,
    .grid-4 {
        min-width: 0 !important;
        max-width: 100%;
    }

    /* Les enfants flex/grid doivent pouvoir rétrécir proprement dans Safari. */
    .flex,
    .flex-between,
    .sce-header,
    .sce-actions,
    .ckp-card,
    .ckp-ctop,
    .slot-row,
    .opportunity-card-header,
    .appointment-card .flex-between {
        min-width: 0 !important;
    }

    .flex > *,
    .flex-between > *,
    .sce-header > *,
    .sce-actions > *,
    .ckp-card > *,
    .ckp-ctop > *,
    .slot-row > * {
        min-width: 0 !important;
    }

    /* Scroll interne fiable : Safari exige min-height:0 sur les parents. */
    .main-content,
    .sce-page,
    .sce-shell,
    .sce-layout,
    .sce-panel,
    .sce-panel-body,
    .sce-left-list,
    .ckp,
    .ckp-mid,
    .ckp-list,
    .ckp-thread,
    .ckp-context {
        min-height: 0 !important;
    }

    /* Correction spécifique page Séances : sur Mac/Safari, la zone disponible est
       souvent plus étroite que le viewport à cause de la sidebar. On passe donc
       plus tôt sur un layout 2 colonnes propre, puis 1 colonne. */
    .sce-page {
        width: 100%;
        max-width: 100%;
        overflow-x: hidden;
    }

    .sce-layout {
        width: 100%;
        max-width: 100%;
        display: grid !important;
        grid-template-columns: minmax(250px, 310px) minmax(420px, 1fr) minmax(250px, 310px);
        gap: 14px;
        align-items: start;
    }

    .sce-shell {
        width: 100%;
        max-width: 100%;
        display: grid !important;
        grid-template-columns: minmax(250px, 330px) minmax(0, 1fr);
        gap: 14px;
        align-items: start;
    }

    .sce-panel,
    .sce-main-card,
    .sce-section,
    .sce-section-content,
    .sce-row-name,
    .sce-row-name strong,
    .sce-muted,
    .sce-chip {
        overflow-wrap: anywhere;
    }

    /* Quand la largeur réelle du contenu est moyenne, 3 colonnes ne tiennent pas
       dans Safari. On garde la liste + méthode en haut et le contexte en dessous. */
    @media (max-width: 1400px) {
        .sce-layout {
            grid-template-columns: minmax(260px, 330px) minmax(0, 1fr) !important;
        }
        .sce-layout > .sce-panel:nth-child(3) {
            grid-column: 1 / -1;
        }
        .sce-layout > .sce-panel:nth-child(3) .sce-panel-body {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 12px;
        }
        .sce-layout > .sce-panel:nth-child(3) .sce-section {
            margin-bottom: 0;
        }
    }

    @media (max-width: 1050px) {
        .sce-layout,
        .sce-shell {
            grid-template-columns: 1fr !important;
        }
        .sce-layout > .sce-panel:nth-child(3) {
            grid-column: auto;
        }
        .sce-layout > .sce-panel:nth-child(3) .sce-panel-body {
            display: block;
        }
        .sce-left-list {
            max-height: none !important;
            min-height: 0 !important;
            overflow: visible !important;
        }
    }

    /* Fix Cockpit / Messages : colonnes fixes plus tolérantes sur Safari. */
    .ckp {
        width: 100%;
        max-width: 1480px;
        min-width: 0 !important;
        grid-template-columns: minmax(250px, 330px) minmax(0, 1fr) !important;
        overflow: hidden;
    }

    .ckp-mid,
    .ckp-main,
    .ckp-thread,
    .ckp-context,
    .ckp-cbody,
    .ckp-cname,
    .ckp-cmsg,
    .ckp-cmeta {
        min-width: 0 !important;
        max-width: 100%;
    }

    @media (max-width: 1350px) {
        .ckp {
            height: auto !important;
            min-height: 560px;
        }
    }

    /* Les grilles de KPI ne doivent jamais écraser le texte verticalement. */
    .stats-card,
    .spe-kpi-card,
    .si-kpi,
    .team-link-card,
    .team-card,
    .student-stat-card {
        min-width: 0 !important;
        overflow-wrap: anywhere;
    }

    .stats-value,
    .stats-label,
    .page-title,
    .page-subtitle,
    .card-title {
        overflow-wrap: anywhere;
    }

    /* Safari rend parfois les boutons/liens trop larges si white-space est forcé. */
    .btn,
    button,
    a {
        max-width: 100%;
    }

    /* Images et iframes ne doivent jamais imposer une largeur à leur colonne. */
    img, video, iframe, canvas, svg {
        max-width: 100%;
    }


/* ===== V15 — UX métier simplifiée : 1 page = 1 mission ===== */
.v15-page{max-width:1480px;margin:0 auto;width:100%;}
.v15-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.v15-header h1{font-size:2rem;margin:0 0 6px;color:var(--primary-color)}
.v15-sub{color:var(--text-light);font-size:1rem;max-width:780px}
.v15-actions{display:flex;gap:10px;flex-wrap:wrap}
.v15-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.v15-kpi{background:#fff;border-radius:14px;padding:16px 18px;border:1px solid var(--border-color);box-shadow:var(--shadow-premium);border-left:4px solid var(--accent-color);min-width:0}
.v15-kpi b{display:block;font-size:1.55rem;line-height:1.1;margin-bottom:6px}.v15-kpi span{color:var(--text-light);font-size:.88rem}.v15-kpi.warn{border-left-color:var(--warning-color)}.v15-kpi.danger{border-left-color:var(--error-color)}
.v15-toolbar{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:14px;margin-bottom:14px;box-shadow:var(--shadow-premium);display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}
.v15-toolbar label{display:block;text-transform:uppercase;font-size:.75rem;color:var(--gray-700);font-weight:800;margin-bottom:6px}.v15-toolbar input,.v15-toolbar select{width:100%;min-height:44px;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;font-size:1rem}
.v15-card{background:#fff;border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-premium);overflow:hidden;margin-bottom:12px}
.v15-card-head{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(130px,.7fr) minmax(220px,1fr) minmax(260px,1.1fr);gap:14px;align-items:center;padding:16px}
.v15-student{display:flex;align-items:center;gap:12px;min-width:0}.v15-avatar{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;box-shadow:0 8px 18px rgba(0,0,0,.12);flex:0 0 auto}.v15-name{font-weight:800;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v15-meta{font-size:.86rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v15-pay b{display:block;font-size:1rem}.v15-pay span{font-size:.78rem;text-transform:uppercase;color:#7a869a;font-weight:800}
.v15-mini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.v15-mini div{background:#f8fafc;border:1px solid var(--border-color);border-radius:10px;text-align:center;padding:8px 6px;min-width:0}.v15-mini b{display:block;font-size:.95rem}.v15-mini span{font-size:.68rem;text-transform:uppercase;font-weight:800;color:#59677c}
.v15-card-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v15-card-actions .btn{width:100%;min-width:0;padding:9px 10px;font-size:.9rem}
.v15-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.v15-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:.75rem;font-weight:800;background:#edf2ff;color:#2754c5}.v15-pill.red{background:#ffe5e5;color:#a61b1b}.v15-pill.orange{background:#fff1d6;color:#9a4b00}.v15-pill.green{background:#def8e8;color:#0b6b36}
.v15-list-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:14px 0 10px}.v15-list-head h2{margin:0;font-size:1.15rem}.v15-list-head p{margin:3px 0 0;color:var(--text-light);font-size:.9rem}
.v15-empty{background:#f8fafc;border:1px dashed var(--border-color);border-radius:14px;padding:20px;color:var(--text-light)}
.v15-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.52);z-index:3000;display:flex;align-items:center;justify-content:center;padding:18px}
.v15-modal{background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.28);width:min(980px,96vw);max-height:92vh;overflow:auto}.v15-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:18px 20px;border-bottom:1px solid var(--border-color);position:sticky;top:0;background:#fff;z-index:2}.v15-modal-header h2{margin:0;font-size:1.25rem}.v15-modal-body{padding:18px 20px}.v15-close{border:none;background:#f1f3f5;border-radius:10px;width:36px;height:36px;font-size:1.2rem;cursor:pointer}
.v15-program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v15-program{border:1px solid var(--border-color);border-radius:14px;overflow:hidden;background:#fff}.v15-program h3{font-size:.9rem;text-transform:uppercase;color:#5b6b82;background:#f8fafc;padding:12px 14px;margin:0;border-bottom:1px solid var(--border-color)}
.v15-module-row{display:grid;grid-template-columns:minmax(180px,1fr) 210px 270px;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid #edf0f3}.v15-module-row:last-child{border-bottom:none}.v15-module-title{font-weight:800;line-height:1.25;overflow-wrap:anywhere}.v15-module-stats{display:flex;gap:6px;flex-wrap:wrap}.v15-module-stats span{border-radius:8px;padding:5px 7px;font-size:.75rem;font-weight:800}.v15-done{background:#dcfce7;color:#166534}.v15-plan{background:#eaf0ff;color:#273fb6}.v15-need{background:#ffe1e1;color:#a31313}.v15-module-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap}.v15-module-actions .btn{padding:7px 10px;font-size:.82rem;min-height:36px}
.v15-collectifs-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px}.v15-collective-list .spe-priority-row{background:#fff;border:1px solid var(--border-color);border-radius:14px;margin-bottom:10px;padding:14px}.v15-side-card{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:16px;padding:16px;box-shadow:var(--shadow-premium)}
@media (max-width:1180px){.v15-card-head{grid-template-columns:1fr 1fr}.v15-card-actions{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr))}.v15-collectifs-grid{grid-template-columns:1fr}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr}}
@media (max-width:760px){.v15-page{padding:0}.v15-header h1{font-size:1.55rem}.v15-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v15-toolbar{grid-template-columns:1fr}.v15-card-head{grid-template-columns:1fr;gap:12px}.v15-mini{grid-template-columns:repeat(4,minmax(0,1fr))}.v15-card-actions{grid-template-columns:1fr 1fr}.v15-card-actions .btn{font-size:.88rem}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr;align-items:start}.v15-module-actions{justify-content:stretch}.v15-module-actions .btn{flex:1 1 45%}.v15-modal-backdrop{align-items:flex-end;padding:0}.v15-modal{width:100vw;max-height:92vh;border-radius:18px 18px 0 0}.v15-kpi{padding:14px}.v15-kpi b{font-size:1.25rem}}

/* --- bloc CSS extrait --- */

/* ============================================================
   SCHOOLINVEST V11 — STABILISATION VISUELLE PC / MAC / SAFARI
   Objectif : garder les pages lisibles à 100% zoom, éviter les
   colonnes trop étroites, limiter les scrolls horizontaux et
   conserver toutes les informations.
   ============================================================ */

/* 1) Base : largeur fluide, pas de colonne qui force le viewport */
html, body { width:100%; min-width:0; -webkit-text-size-adjust:100%; }
body { overflow-x:hidden; }
*, *::before, *::after { box-sizing:border-box; }

/* Safari : les enfants flex/grid doivent pouvoir rétrécir sans casser la page */
.app-container, .main-content, #adminDashboardContent, #studentDashboardContent,
.page, .card, .grid, .grid-2, .grid-3, .grid-4,
.sce-page, .sce-shell, .sce-layout, .sce-panel, .sce-panel-body,
.spe-page, .spe-shell, .spe-panel, .spe-table-wrap,
.ckp, .ckp-mid, .ckp-right, .ckp-conv, .ckp-thread, .ckp-ctx,
.dossier-page, .dossier-hero, .dossier-grid, .dossier-card {
    min-width:0 !important;
    max-width:100%;
}

/* Évite les mots coupés lettre par lettre. Les anciennes règles `anywhere`
   sauvaient certains débordements, mais sur Safari elles peuvent transformer
   un texte en colonne verticale quand la carte devient trop étroite. */
.main-content, .main-content *,
.sce-page, .sce-page *,
.spe-page, .spe-page *,
.ckp, .ckp *,
.dossier-page, .dossier-page * {
    word-break:normal;
}
.main-content p, .main-content span, .main-content div,
.sce-section-content, .sce-muted, .text-muted,
.card-title, .page-title, .page-subtitle {
    overflow-wrap:break-word;
}

/* 2) Densité desktop : l’outil doit être beau à 100% de zoom */
@media (min-width: 769px) {
    :root { --si-sidebar-w:230px; --si-page-pad:28px; }
    .sidebar { width:var(--si-sidebar-w) !important; }
    .sidebar-footer { width:var(--si-sidebar-w) !important; }
    .main-content {
        margin-left:var(--si-sidebar-w) !important;
        width:calc(100% - var(--si-sidebar-w)) !important;
        padding:var(--si-page-pad) !important;
    }
    .nav-item { padding:11px 18px !important; gap:10px !important; }
    .sidebar-header { padding-left:18px !important; padding-right:18px !important; }
    .logo { font-size:1.35rem !important; }
    .card { padding:clamp(16px, 1.25vw, 22px) !important; }
    .page-title { font-size:clamp(1.55rem, 1.7vw, 2rem) !important; }
}

/* Desktop moyen / MacBook / partage Teams : on réduit la sidebar et les marges */
@media (min-width: 769px) and (max-width: 1450px) {
    :root { --si-sidebar-w:210px; --si-page-pad:18px; }
    .nav-item { font-size:.92rem !important; padding:10px 16px !important; }
    .sidebar-footer { padding:14px !important; }
    .user-avatar { width:34px !important; height:34px !important; }
    .btn { padding:10px 14px; }
    .btn-sm { padding:7px 10px; font-size:.82rem; }
}

/* 3) Grilles globales : ne jamais forcer 3 colonnes dans une zone trop étroite */
.grid, .grid-2, .grid-3, .grid-4 { min-width:0 !important; }
.grid-2 { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
.grid-3 { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }
.grid-4 { grid-template-columns:repeat(4,minmax(0,1fr)) !important; }

@media (min-width: 769px) and (max-width: 1450px) {
    .grid-4 { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
    .grid-3 { grid-template-columns:1fr !important; }
    .grid-2 { grid-template-columns:1fr !important; }
}
@media (max-width: 768px) {
    .grid-2, .grid-3, .grid-4 { grid-template-columns:1fr !important; }
}

/* 4) Page Séances : le problème principal venait des 3 colonnes internes.
   À largeur moyenne, on garde liste + contenu, mais le contenu passe en cartes
   verticales lisibles. À largeur plus faible, tout s’empile proprement. */
.sce-page { width:100%; max-width:100%; overflow-x:hidden; }
.sce-shell { grid-template-columns:minmax(280px,340px) minmax(0,1fr) !important; }
.sce-layout { grid-template-columns:minmax(260px,320px) minmax(0,1fr) minmax(260px,320px) !important; }
.sce-panel, .sce-main-card { min-width:0 !important; }
.sce-left-list { -webkit-overflow-scrolling:touch; }
.sce-section-content { line-height:1.42; }
.sce-list li { min-width:0; }

@media (min-width: 1351px) and (max-width: 1700px) {
    .sce-shell { grid-template-columns:minmax(270px,330px) minmax(0,1fr) !important; }
    .sce-layout { grid-template-columns:1fr !important; }
    .sce-panel-body { padding:12px 14px !important; }
    .sce-left-list { max-height:calc(100vh - 270px) !important; }
}
@media (min-width: 769px) and (max-width: 1350px) {
    .sce-shell, .sce-layout { grid-template-columns:1fr !important; }
    .sce-left-list { max-height:none !important; min-height:0 !important; overflow:visible !important; }
    .sce-header { flex-direction:column !important; align-items:stretch !important; }
    .sce-actions { justify-content:flex-start !important; }
}
@media (max-width: 768px) {
    .sce-shell, .sce-layout { grid-template-columns:1fr !important; gap:12px !important; }
    .sce-left-list { max-height:none !important; min-height:0 !important; overflow:visible !important; }
    .sce-panel-head, .sce-panel-body, .sce-main-card { padding:12px !important; }
    .sce-row-top, .sce-action-row { flex-direction:column !important; align-items:stretch !important; }
}

/* 5) Pilotage élèves : la fiche droite ne doit pas écraser le tableau.
   Sur écrans moyens, elle passe sous la liste, mais reste visible. */
.spe-page { width:100%; max-width:100%; overflow-x:hidden; }
.spe-shell { grid-template-columns:minmax(0,1fr) minmax(320px,390px) !important; }
.spe-table-wrap { -webkit-overflow-scrolling:touch; }
.spe-table { table-layout:auto !important; }
.spe-detail { min-width:0 !important; }

@media (min-width: 769px) and (max-width: 1580px) {
    .spe-shell { grid-template-columns:1fr !important; }
    .spe-detail { position:static !important; max-height:none !important; overflow:visible !important; }
    .spe-table-wrap { max-height:none !important; min-height:0 !important; }
    .spe-toolbar { grid-template-columns:1fr 1fr !important; }
}
@media (max-width: 768px) {
    .spe-shell, .spe-toolbar { grid-template-columns:1fr !important; }
    .spe-kpis { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
    .spe-table-wrap { overflow-x:auto !important; }
    .spe-table { min-width:760px !important; }
    .spe-module-columns { grid-template-columns:1fr !important; }
}
@media (max-width: 480px) { .spe-kpis { grid-template-columns:1fr !important; } }

/* 6) Messages : la fiche contexte est utile, mais elle ne doit pas rendre le
   centre minuscule. Sur largeur moyenne, on affiche le dossier complet plutôt
   que de comprimer trois colonnes. */
.ckp { width:100%; max-width:1480px !important; margin-left:auto; margin-right:auto; }
.ckp-thread { padding:clamp(14px, 1.25vw, 20px) !important; }
.ckp-workflow { max-width:820px !important; }
.ckp-ctx { width:240px !important; }

@media (min-width: 769px) and (max-width: 1580px) {
    .ckp { grid-template-columns:minmax(260px,310px) minmax(0,1fr) !important; height:auto !important; min-height:620px !important; }
    .ckp-ctx { display:none !important; }
    .ckp-thread { min-height:420px !important; }
}
@media (max-width: 950px) {
    .ckp { grid-template-columns:1fr !important; height:auto !important; min-height:0 !important; border-radius:14px !important; }
    .ckp-mid { border-right:none !important; }
    .ckp-right { display:block !important; border-top:1px solid var(--line); }
    .ckp-conv { min-height:560px; }
}
@media (max-width: 768px) {
    .ckp { border-radius:0 !important; border:none !important; }
    .ckp-filterbar { gap:6px !important; }
    .ckp-chipfilter { padding:6px 8px !important; font-size:11.5px !important; }
    .ckp-rhd, .ckp-srow, .ckp-composer { padding-left:12px !important; padding-right:12px !important; }
    .ckp-thread { padding:12px !important; }
    .ckp-wcard { border-radius:14px !important; }
    .ckp-msg { max-width:92% !important; }
}

/* 7) Dossier élève : hero et onglets lisibles à 100%, sans débordement */
.dossier-page { width:100%; max-width:1180px !important; margin:0 auto !important; }
.dossier-hero { grid-template-columns:auto minmax(0,1fr) auto !important; gap:18px !important; padding:clamp(20px, 2vw, 26px) !important; }
.dossier-hero h1 { font-size:clamp(1.45rem, 2vw, 1.85rem) !important; }
.dossier-health { min-width:145px !important; }
.dossier-tabs { gap:7px !important; }
.dossier-tab { padding:8px 12px !important; font-size:.85rem !important; }
.dossier-grid { grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr) !important; }
.dossier-kpis { grid-template-columns:repeat(4,minmax(0,1fr)) !important; }

@media (min-width: 769px) and (max-width: 1350px) {
    .dossier-page { max-width:100% !important; }
    .dossier-hero { grid-template-columns:1fr !important; }
    .dossier-health { width:100%; min-width:0 !important; }
    .dossier-grid { grid-template-columns:1fr !important; }
    .dossier-kpis { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
}
@media (max-width: 768px) {
    .dossier-hero { grid-template-columns:1fr !important; border-radius:16px !important; }
    .dossier-health { width:100%; min-width:0 !important; }
    .dossier-grid, .dossier-two { grid-template-columns:1fr !important; }
    .dossier-kpis, .dossier-status-grid { grid-template-columns:1fr !important; }
    .dossier-line, .dossier-action-row { flex-direction:column !important; align-items:stretch !important; }
    .dossier-tabs { overflow-x:auto; flex-wrap:nowrap !important; padding-bottom:4px; -webkit-overflow-scrolling:touch; }
    .dossier-tab { flex:0 0 auto; }
}

/* 8) Équipe / tableaux : éviter les lignes ultra-compressées */
#adminDashboardContent .table-container { max-width:100%; }
#adminDashboardContent .table-container table { width:100%; }
#adminDashboardContent td, #adminDashboardContent th { overflow-wrap:break-word; }

@media (min-width: 769px) and (max-width: 1450px) {
    /* Les gros tableaux deviennent des cartes lisibles au lieu de colonnes écrasées. */
    #adminDashboardContent .table-container { overflow:visible !important; }
    #adminDashboardContent .table-container table,
    #adminDashboardContent .table-container thead,
    #adminDashboardContent .table-container tbody,
    #adminDashboardContent .table-container tr,
    #adminDashboardContent .table-container th,
    #adminDashboardContent .table-container td { display:block; width:100%; min-width:0 !important; }
    #adminDashboardContent .table-container thead { display:none; }
    #adminDashboardContent .table-container tr { border:1px solid var(--border-color); border-radius:14px; padding:12px; margin-bottom:12px; background:#fff; box-shadow:0 4px 14px rgba(0,0,0,.04); }
    #adminDashboardContent .table-container td { border-bottom:1px solid var(--border-color); padding:8px 4px !important; }
    #adminDashboardContent .table-container td:last-child { border-bottom:none; }
    #adminDashboardContent .table-container td .flex { justify-content:flex-start; }
}

/* 9) Formulaires et boutons : ne jamais créer de largeur cachée */
input, select, textarea, button, .btn { min-width:0; max-width:100%; }
.btn { white-space:normal; }
.flex, .flex-between { min-width:0; }
.flex > *, .flex-between > * { min-width:0; }

/* 10) Mobile : priorité à la clarté, une colonne, gros boutons, aucun débordement */
@media (max-width: 768px) {
    .main-content { padding:14px !important; }
    .page-header.flex-between, .flex-between { flex-direction:column; align-items:stretch; gap:10px; }
    .page-header .btn, .card .btn { width:100%; }
    .card { padding:14px !important; border-radius:14px !important; }
    .table-container { overflow-x:auto; -webkit-overflow-scrolling:touch; }
    .stats-value { font-size:1.55rem !important; }
}


/* ===== V15 — UX métier simplifiée : 1 page = 1 mission ===== */
.v15-page{max-width:1480px;margin:0 auto;width:100%;}
.v15-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.v15-header h1{font-size:2rem;margin:0 0 6px;color:var(--primary-color)}
.v15-sub{color:var(--text-light);font-size:1rem;max-width:780px}
.v15-actions{display:flex;gap:10px;flex-wrap:wrap}
.v15-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.v15-kpi{background:#fff;border-radius:14px;padding:16px 18px;border:1px solid var(--border-color);box-shadow:var(--shadow-premium);border-left:4px solid var(--accent-color);min-width:0}
.v15-kpi b{display:block;font-size:1.55rem;line-height:1.1;margin-bottom:6px}.v15-kpi span{color:var(--text-light);font-size:.88rem}.v15-kpi.warn{border-left-color:var(--warning-color)}.v15-kpi.danger{border-left-color:var(--error-color)}
.v15-toolbar{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:14px;margin-bottom:14px;box-shadow:var(--shadow-premium);display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}
.v15-toolbar label{display:block;text-transform:uppercase;font-size:.75rem;color:var(--gray-700);font-weight:800;margin-bottom:6px}.v15-toolbar input,.v15-toolbar select{width:100%;min-height:44px;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;font-size:1rem}
.v15-card{background:#fff;border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-premium);overflow:hidden;margin-bottom:12px}
.v15-card-head{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(130px,.7fr) minmax(220px,1fr) minmax(260px,1.1fr);gap:14px;align-items:center;padding:16px}
.v15-student{display:flex;align-items:center;gap:12px;min-width:0}.v15-avatar{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;box-shadow:0 8px 18px rgba(0,0,0,.12);flex:0 0 auto}.v15-name{font-weight:800;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v15-meta{font-size:.86rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v15-pay b{display:block;font-size:1rem}.v15-pay span{font-size:.78rem;text-transform:uppercase;color:#7a869a;font-weight:800}
.v15-mini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.v15-mini div{background:#f8fafc;border:1px solid var(--border-color);border-radius:10px;text-align:center;padding:8px 6px;min-width:0}.v15-mini b{display:block;font-size:.95rem}.v15-mini span{font-size:.68rem;text-transform:uppercase;font-weight:800;color:#59677c}
.v15-card-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v15-card-actions .btn{width:100%;min-width:0;padding:9px 10px;font-size:.9rem}
.v15-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.v15-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:.75rem;font-weight:800;background:#edf2ff;color:#2754c5}.v15-pill.red{background:#ffe5e5;color:#a61b1b}.v15-pill.orange{background:#fff1d6;color:#9a4b00}.v15-pill.green{background:#def8e8;color:#0b6b36}
.v15-list-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:14px 0 10px}.v15-list-head h2{margin:0;font-size:1.15rem}.v15-list-head p{margin:3px 0 0;color:var(--text-light);font-size:.9rem}
.v15-empty{background:#f8fafc;border:1px dashed var(--border-color);border-radius:14px;padding:20px;color:var(--text-light)}
.v15-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.52);z-index:3000;display:flex;align-items:center;justify-content:center;padding:18px}
.v15-modal{background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.28);width:min(980px,96vw);max-height:92vh;overflow:auto}.v15-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:18px 20px;border-bottom:1px solid var(--border-color);position:sticky;top:0;background:#fff;z-index:2}.v15-modal-header h2{margin:0;font-size:1.25rem}.v15-modal-body{padding:18px 20px}.v15-close{border:none;background:#f1f3f5;border-radius:10px;width:36px;height:36px;font-size:1.2rem;cursor:pointer}
.v15-program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v15-program{border:1px solid var(--border-color);border-radius:14px;overflow:hidden;background:#fff}.v15-program h3{font-size:.9rem;text-transform:uppercase;color:#5b6b82;background:#f8fafc;padding:12px 14px;margin:0;border-bottom:1px solid var(--border-color)}
.v15-module-row{display:grid;grid-template-columns:minmax(180px,1fr) 210px 270px;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid #edf0f3}.v15-module-row:last-child{border-bottom:none}.v15-module-title{font-weight:800;line-height:1.25;overflow-wrap:anywhere}.v15-module-stats{display:flex;gap:6px;flex-wrap:wrap}.v15-module-stats span{border-radius:8px;padding:5px 7px;font-size:.75rem;font-weight:800}.v15-done{background:#dcfce7;color:#166534}.v15-plan{background:#eaf0ff;color:#273fb6}.v15-need{background:#ffe1e1;color:#a31313}.v15-module-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap}.v15-module-actions .btn{padding:7px 10px;font-size:.82rem;min-height:36px}
.v15-collectifs-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px}.v15-collective-list .spe-priority-row{background:#fff;border:1px solid var(--border-color);border-radius:14px;margin-bottom:10px;padding:14px}.v15-side-card{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:16px;padding:16px;box-shadow:var(--shadow-premium)}
@media (max-width:1180px){.v15-card-head{grid-template-columns:1fr 1fr}.v15-card-actions{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr))}.v15-collectifs-grid{grid-template-columns:1fr}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr}}
@media (max-width:760px){.v15-page{padding:0}.v15-header h1{font-size:1.55rem}.v15-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v15-toolbar{grid-template-columns:1fr}.v15-card-head{grid-template-columns:1fr;gap:12px}.v15-mini{grid-template-columns:repeat(4,minmax(0,1fr))}.v15-card-actions{grid-template-columns:1fr 1fr}.v15-card-actions .btn{font-size:.88rem}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr;align-items:start}.v15-module-actions{justify-content:stretch}.v15-module-actions .btn{flex:1 1 45%}.v15-modal-backdrop{align-items:flex-end;padding:0}.v15-modal{width:100vw;max-height:92vh;border-radius:18px 18px 0 0}.v15-kpi{padding:14px}.v15-kpi b{font-size:1.25rem}}

/* --- bloc CSS extrait --- */

/* V20 — Accueil stable uniquement. Ne modifie pas les autres pages. */
.v20-home-page{display:grid;gap:14px;min-width:0;width:100%;}
.v20-home-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start;}
.v20-home-line{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid var(--border-color);background:#fff;border-radius:12px;padding:10px 12px;margin-bottom:8px;min-width:0;}
.v20-home-line b{font-size:.9rem;line-height:1.2;}
.v20-home-line span{font-size:.8rem;color:var(--text-light);line-height:1.35;}
.v20-home-line > div{min-width:0;overflow-wrap:anywhere;}
.v20-home-line .btn{flex:0 0 auto;}
@media (max-width:980px){.v20-home-grid{grid-template-columns:1fr;}.v18-header{flex-direction:column;}.v18-actions{justify-content:flex-start;}}
@media (max-width:640px){.v20-home-line{align-items:stretch;flex-direction:column;}.v20-home-line .btn{width:100%;}.v18-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important;}}

/* --- bloc CSS extrait --- */

                    .home-hero {
                        background: linear-gradient(135deg, #111827 0%, #263853 100%);
                        color: #fff;
                        border-radius: 18px;
                        padding: 28px;
                        box-shadow: 0 18px 42px rgba(17,24,39,.20);
                        margin-bottom: 22px;
                        position: relative;
                        overflow: hidden;
                    }
                    .home-hero:after {
                        content:'';
                        position:absolute;
                        right:-70px;
                        top:-80px;
                        width:240px;
                        height:240px;
                        border-radius:50%;
                        background: rgba(74,144,226,.28);
                    }
                    .home-hero h1 { color:#fff; font-size:2rem; margin-bottom:8px; position:relative; z-index:1; }
                    .home-hero p { color:rgba(255,255,255,.78); max-width:880px; position:relative; z-index:1; }
                    .home-pill-row { display:flex; gap:10px; flex-wrap:wrap; margin-top:18px; position:relative; z-index:1; }
                    .home-pill { background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.18); padding:8px 12px; border-radius:999px; font-size:.86rem; font-weight:700; }
                    .home-kpi-grid { display:grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap:14px; margin-bottom:20px; }
                    .home-kpi { background:#fff; border:1px solid var(--border-color); border-radius:14px; padding:16px; box-shadow:var(--shadow-premium); }
                    .home-kpi-value { font-size:1.8rem; font-weight:800; margin-bottom:4px; }
                    .home-kpi-label { font-size:.82rem; color:var(--text-light); }
                    .home-section-grid { display:grid; grid-template-columns: 1.05fr .95fr; gap:18px; align-items:start; }
                    .home-card { background:#fff; border:1px solid var(--border-color); border-radius:16px; padding:20px; box-shadow:var(--shadow-premium); margin-bottom:16px; }
                    .home-card h2 { font-size:1.18rem; margin-bottom:10px; }
                    .home-step { display:flex; gap:12px; padding:12px 0; border-bottom:1px solid var(--gray-200); }
                    .home-step:last-child { border-bottom:none; }
                    .home-step-num { width:30px; height:30px; border-radius:50%; background:var(--accent-color); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:800; flex:0 0 30px; }
                    .home-accordion details { background:#fff; border:1px solid var(--border-color); border-radius:12px; margin-bottom:10px; overflow:hidden; }
                    .home-accordion summary { cursor:pointer; padding:14px 16px; font-weight:800; list-style:none; display:flex; justify-content:space-between; align-items:center; }
                    .home-accordion summary::-webkit-details-marker { display:none; }
                    .home-accordion summary:after { content:'+'; color:var(--accent-color); font-size:1.2rem; }
                    .home-accordion details[open] summary:after { content:'−'; }
                    .home-accordion .acc-body { padding:0 16px 16px; color:var(--text-color); font-size:.94rem; line-height:1.65; }
                    .role-grid { display:grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap:12px; }
                    .role-card { border:1px solid var(--border-color); border-radius:12px; padding:14px; background:var(--bg-light); }
                    .role-card strong { display:block; margin-bottom:6px; }
                    .mini-check { display:flex; align-items:flex-start; gap:8px; margin:8px 0; }
                    .mini-check span:first-child { color:var(--success-color); font-weight:800; }
                    .home-alert { background:#fff8e8; border-left:4px solid var(--warning-color); border-radius:12px; padding:14px 16px; font-size:.94rem; }
                    @media (max-width: 900px) {
                        .home-kpi-grid, .home-section-grid, .role-grid { grid-template-columns: 1fr; }
                        .home-hero { padding:22px 18px; }
                        .home-hero h1 { font-size:1.55rem; }
                    }
                

/* ===== V15 — UX métier simplifiée : 1 page = 1 mission ===== */
.v15-page{max-width:1480px;margin:0 auto;width:100%;}
.v15-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.v15-header h1{font-size:2rem;margin:0 0 6px;color:var(--primary-color)}
.v15-sub{color:var(--text-light);font-size:1rem;max-width:780px}
.v15-actions{display:flex;gap:10px;flex-wrap:wrap}
.v15-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.v15-kpi{background:#fff;border-radius:14px;padding:16px 18px;border:1px solid var(--border-color);box-shadow:var(--shadow-premium);border-left:4px solid var(--accent-color);min-width:0}
.v15-kpi b{display:block;font-size:1.55rem;line-height:1.1;margin-bottom:6px}.v15-kpi span{color:var(--text-light);font-size:.88rem}.v15-kpi.warn{border-left-color:var(--warning-color)}.v15-kpi.danger{border-left-color:var(--error-color)}
.v15-toolbar{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:14px;margin-bottom:14px;box-shadow:var(--shadow-premium);display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}
.v15-toolbar label{display:block;text-transform:uppercase;font-size:.75rem;color:var(--gray-700);font-weight:800;margin-bottom:6px}.v15-toolbar input,.v15-toolbar select{width:100%;min-height:44px;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;font-size:1rem}
.v15-card{background:#fff;border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-premium);overflow:hidden;margin-bottom:12px}
.v15-card-head{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(130px,.7fr) minmax(220px,1fr) minmax(260px,1.1fr);gap:14px;align-items:center;padding:16px}
.v15-student{display:flex;align-items:center;gap:12px;min-width:0}.v15-avatar{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;box-shadow:0 8px 18px rgba(0,0,0,.12);flex:0 0 auto}.v15-name{font-weight:800;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v15-meta{font-size:.86rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v15-pay b{display:block;font-size:1rem}.v15-pay span{font-size:.78rem;text-transform:uppercase;color:#7a869a;font-weight:800}
.v15-mini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.v15-mini div{background:#f8fafc;border:1px solid var(--border-color);border-radius:10px;text-align:center;padding:8px 6px;min-width:0}.v15-mini b{display:block;font-size:.95rem}.v15-mini span{font-size:.68rem;text-transform:uppercase;font-weight:800;color:#59677c}
.v15-card-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v15-card-actions .btn{width:100%;min-width:0;padding:9px 10px;font-size:.9rem}
.v15-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.v15-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:.75rem;font-weight:800;background:#edf2ff;color:#2754c5}.v15-pill.red{background:#ffe5e5;color:#a61b1b}.v15-pill.orange{background:#fff1d6;color:#9a4b00}.v15-pill.green{background:#def8e8;color:#0b6b36}
.v15-list-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:14px 0 10px}.v15-list-head h2{margin:0;font-size:1.15rem}.v15-list-head p{margin:3px 0 0;color:var(--text-light);font-size:.9rem}
.v15-empty{background:#f8fafc;border:1px dashed var(--border-color);border-radius:14px;padding:20px;color:var(--text-light)}
.v15-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.52);z-index:3000;display:flex;align-items:center;justify-content:center;padding:18px}
.v15-modal{background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.28);width:min(980px,96vw);max-height:92vh;overflow:auto}.v15-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:18px 20px;border-bottom:1px solid var(--border-color);position:sticky;top:0;background:#fff;z-index:2}.v15-modal-header h2{margin:0;font-size:1.25rem}.v15-modal-body{padding:18px 20px}.v15-close{border:none;background:#f1f3f5;border-radius:10px;width:36px;height:36px;font-size:1.2rem;cursor:pointer}
.v15-program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v15-program{border:1px solid var(--border-color);border-radius:14px;overflow:hidden;background:#fff}.v15-program h3{font-size:.9rem;text-transform:uppercase;color:#5b6b82;background:#f8fafc;padding:12px 14px;margin:0;border-bottom:1px solid var(--border-color)}
.v15-module-row{display:grid;grid-template-columns:minmax(180px,1fr) 210px 270px;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid #edf0f3}.v15-module-row:last-child{border-bottom:none}.v15-module-title{font-weight:800;line-height:1.25;overflow-wrap:anywhere}.v15-module-stats{display:flex;gap:6px;flex-wrap:wrap}.v15-module-stats span{border-radius:8px;padding:5px 7px;font-size:.75rem;font-weight:800}.v15-done{background:#dcfce7;color:#166534}.v15-plan{background:#eaf0ff;color:#273fb6}.v15-need{background:#ffe1e1;color:#a31313}.v15-module-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap}.v15-module-actions .btn{padding:7px 10px;font-size:.82rem;min-height:36px}
.v15-collectifs-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px}.v15-collective-list .spe-priority-row{background:#fff;border:1px solid var(--border-color);border-radius:14px;margin-bottom:10px;padding:14px}.v15-side-card{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:16px;padding:16px;box-shadow:var(--shadow-premium)}
@media (max-width:1180px){.v15-card-head{grid-template-columns:1fr 1fr}.v15-card-actions{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr))}.v15-collectifs-grid{grid-template-columns:1fr}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr}}
@media (max-width:760px){.v15-page{padding:0}.v15-header h1{font-size:1.55rem}.v15-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v15-toolbar{grid-template-columns:1fr}.v15-card-head{grid-template-columns:1fr;gap:12px}.v15-mini{grid-template-columns:repeat(4,minmax(0,1fr))}.v15-card-actions{grid-template-columns:1fr 1fr}.v15-card-actions .btn{font-size:.88rem}.v15-program-grid{grid-template-columns:1fr}.v15-module-row{grid-template-columns:1fr;align-items:start}.v15-module-actions{justify-content:stretch}.v15-module-actions .btn{flex:1 1 45%}.v15-modal-backdrop{align-items:flex-end;padding:0}.v15-modal{width:100vw;max-height:92vh;border-radius:18px 18px 0 0}.v15-kpi{padding:14px}.v15-kpi b{font-size:1.25rem}}

/* --- bloc CSS extrait --- */

/* V17 — Nettoyage UX : pages plus compactes, lisibles à 100%, source unique */
.v15-page{max-width:1440px!important;}
.v15-header{margin-bottom:12px!important;}
.v15-header h1{font-size:1.75rem!important;}
.v15-sub{font-size:.9rem!important;line-height:1.45!important;}
.v15-kpis{grid-template-columns:repeat(4,minmax(160px,1fr))!important;gap:10px!important;margin-bottom:12px!important;}
.v15-kpi{padding:13px 16px!important;min-height:86px!important;}
.v15-kpi b{font-size:1.35rem!important;margin-bottom:4px!important;}
.v15-kpi span{font-size:.82rem!important;}
.v15-toolbar{padding:12px!important;gap:10px!important;}
.v15-toolbar input,.v15-toolbar select{min-height:40px!important;font-size:.92rem!important;}
.v15-list-head{margin:12px 0 8px!important;}
.v15-list-head h2{font-size:1.05rem!important;}
.v15-list-head p{font-size:.82rem!important;}
.v15-card{border-radius:14px!important;margin-bottom:10px!important;}
.v15-card-head{grid-template-columns:minmax(260px,1.7fr) minmax(120px,.55fr) minmax(270px,.9fr) minmax(230px,.75fr)!important;gap:10px!important;padding:12px 14px!important;}
.v15-avatar{width:38px!important;height:38px!important;border-radius:10px!important;}
.v15-name{font-size:.95rem!important;}
.v15-meta{font-size:.78rem!important;}
.v15-badges{margin-top:6px!important;gap:5px!important;}
.v15-pill{font-size:.7rem!important;padding:3px 8px!important;}
.v15-pay b{font-size:.92rem!important;}
.v15-pay span{font-size:.7rem!important;}
.v15-mini{gap:5px!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;}
.v15-mini div{padding:7px 5px!important;border-radius:9px!important;min-width:0!important;}
.v15-mini b{font-size:.9rem!important;}
.v15-mini span{font-size:.58rem!important;line-height:1.12!important;display:block;word-break:normal!important;overflow-wrap:normal!important;}
.v15-card-actions{grid-template-columns:1fr 1fr!important;gap:6px!important;}
.v15-card-actions .btn{min-height:34px!important;padding:7px 8px!important;font-size:.82rem!important;border-radius:9px!important;}
.v17-students-help{font-size:.78rem;color:var(--text-light);margin-top:2px;}
.v15-modal{width:min(1120px,96vw)!important;}
.v15-modal-header{padding:14px 18px!important;}
.v15-modal-body{padding:14px 18px!important;}
.v15-program-grid{gap:12px!important;}
.v15-module-row{grid-template-columns:minmax(190px,1fr) minmax(160px,.7fr) minmax(220px,.8fr)!important;gap:10px!important;padding:10px 12px!important;}
.v15-module-title{font-size:.9rem!important;line-height:1.2!important;}
.v15-module-stats span{font-size:.68rem!important;padding:4px 6px!important;}
.v15-module-actions{display:grid!important;grid-template-columns:34px 34px minmax(74px,1fr) minmax(78px,1fr)!important;gap:6px!important;align-items:center;}
.v15-module-actions .btn{min-height:32px!important;padding:6px 8px!important;font-size:.78rem!important;}
.v16-count-btn{font-size:1.05rem!important;font-weight:900!important;padding:0!important;}
.v16-module-empty .v15-module-title,.v16-module-empty .v15-meta{opacity:.55;}
.v17-collectifs-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(310px,.75fr);gap:16px;align-items:start;}
.v17-collectifs-list{display:grid;gap:9px;}
.v17-module-card{background:#fff;border:1px solid var(--border-color);border-radius:14px;padding:12px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;box-shadow:var(--shadow-premium);cursor:pointer;}
.v17-module-card.active{border-color:var(--accent-color);box-shadow:0 0 0 3px rgba(74,144,226,.12);}
.v17-module-card h3{font-size:.95rem;margin:0 0 3px;line-height:1.2;}
.v17-module-card p{font-size:.78rem;margin:0;color:var(--text-light);}
.v17-side-card{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:16px;padding:14px;box-shadow:var(--shadow-premium);position:sticky;top:12px;}
.v17-side-card h2{font-size:1.05rem;margin:0 0 8px;}
.v17-side-list{display:grid;gap:8px;margin-top:10px;}
.v17-side-student{border:1px solid var(--border-color);border-radius:12px;padding:10px;display:flex;justify-content:space-between;gap:10px;align-items:center;}
.v17-side-student b{font-size:.86rem;display:block;}
.v17-side-student span{font-size:.76rem;color:var(--text-light);}
.v17-home-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;}
.v17-home-card{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:16px;box-shadow:var(--shadow-premium);}
.v17-home-card h2{font-size:1.05rem;margin:0 0 10px;}
.v17-mini-list{display:grid;gap:8px;}
.v17-mini-line{display:flex;justify-content:space-between;gap:10px;border:1px solid var(--border-color);background:#f8fafc;border-radius:12px;padding:10px;align-items:center;}
.v17-mini-line b{font-size:.86rem;}.v17-mini-line span{font-size:.76rem;color:var(--text-light);}
/* Messages & tâches V17 */
.ckp-v17{display:grid;grid-template-columns:320px minmax(0,1fr);height:calc(100vh - 130px);min-height:620px;background:#fff;border:1px solid var(--border-color);border-radius:18px;overflow:hidden;box-shadow:var(--shadow-premium-lg);}
.ckp-v17-left{border-right:1px solid var(--border-color);display:flex;flex-direction:column;min-width:0;min-height:0;background:#fbfcff;}
.ckp-v17-left-head{padding:14px;border-bottom:1px solid var(--border-color);}
.ckp-v17-left-head h2{font-size:1.05rem;margin:0 0 8px;}
.ckp-v17-filterbar{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;}
.ckp-v17-filterbar .ckp-chipfilter{font-size:.76rem;padding:6px 8px;}
.ckp-v17-list{overflow:auto;padding:10px;display:grid;gap:8px;min-height:0;}
.ckp-v17-row{border:1px solid var(--border-color);border-radius:14px;background:#fff;padding:10px;cursor:pointer;display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px;align-items:start;}
.ckp-v17-row.on{border-color:var(--accent-color);box-shadow:0 0 0 3px rgba(74,144,226,.12);background:#f4f8ff;}
.ckp-v17-row .name{font-weight:800;font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ckp-v17-row .last{font-size:.77rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ckp-v17-row .tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px;}
.ckp-v17-main{display:grid;grid-template-rows:auto 1fr auto;min-width:0;min-height:0;}
.ckp-v17-head{padding:16px 18px;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;gap:12px;align-items:center;}
.ckp-v17-head h2{font-size:1.15rem;margin:0;}.ckp-v17-head p{margin:3px 0 0;color:var(--text-light);font-size:.82rem;}
.ckp-v17-content{display:grid;grid-template-columns:minmax(260px,.85fr) minmax(0,1.15fr);gap:14px;padding:14px;overflow:auto;min-height:0;background:#f3f5f7;}
.ckp-v17-panel{background:#fff;border:1px solid var(--border-color);border-radius:16px;overflow:hidden;box-shadow:var(--shadow-premium);min-width:0;}
.ckp-v17-panel h3{font-size:.95rem;margin:0;padding:12px 14px;border-bottom:1px solid var(--border-color);background:#fff;}
.ckp-v17-tasks{padding:10px;display:grid;gap:8px;max-height:100%;overflow:auto;}
.ckp-v17-task{border:1px solid var(--border-color);border-radius:12px;padding:10px;cursor:pointer;background:#fff;}
.ckp-v17-task.on{border-color:var(--accent-color);background:#eef5ff;}
.ckp-v17-task-title{font-weight:800;font-size:.86rem;line-height:1.25;}
.ckp-v17-task-meta{font-size:.74rem;color:var(--text-light);margin-top:3px;}
.ckp-v17-detail{padding:14px;display:grid;gap:12px;}
.ckp-v17-box{border:1px solid var(--border-color);border-radius:12px;background:#fff;padding:12px;}
.ckp-v17-box h4{margin:0 0 8px;font-size:.82rem;text-transform:uppercase;color:#607089;letter-spacing:.02em;}
.ckp-v17-box p{margin:0;font-size:.9rem;line-height:1.45;white-space:pre-wrap;}
.ckp-v17-history{display:grid;gap:8px;max-height:260px;overflow:auto;}
.ckp-v17-msg{border-radius:12px;padding:10px;border:1px solid var(--border-color);background:#f8fafc;}
.ckp-v17-msg.coach{background:#eef5ff;border-color:#cfe0ff;}
.ckp-v17-msg b{font-size:.75rem;display:block;margin-bottom:4px;color:#4b5d78;}.ckp-v17-msg span{font-size:.88rem;white-space:pre-wrap;}
.ckp-v17-reply textarea{width:100%;min-height:92px;border:1px solid var(--border-color);border-radius:12px;padding:10px;font-size:.95rem;font-family:inherit;resize:vertical;}
.ckp-v17-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;}
.ckp-v17-composer{padding:12px 14px;border-top:1px solid var(--border-color);background:#fff;}
@media (max-width:1250px){.v15-card-head{grid-template-columns:minmax(0,1fr) minmax(200px,.7fr);}.v15-mini,.v15-card-actions{grid-column:auto;}.ckp-v17{grid-template-columns:280px minmax(0,1fr);} }
@media (max-width:980px){.v15-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}.v15-card-head{grid-template-columns:1fr!important}.v15-mini{grid-template-columns:repeat(4,minmax(0,1fr))!important}.v15-card-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important}.v17-collectifs-layout{grid-template-columns:1fr}.v17-side-card{position:static}.ckp-v17{height:auto;min-height:0;grid-template-columns:1fr}.ckp-v17-left{max-height:420px}.ckp-v17-content{grid-template-columns:1fr;overflow:visible}.ckp-v17-main{min-height:0}.v17-home-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:760px){.v15-page{max-width:100%!important}.v15-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}.v15-kpi{min-height:76px!important;padding:12px!important}.v15-toolbar{grid-template-columns:1fr!important}.v15-card-head{padding:12px!important}.v15-mini span{font-size:.55rem!important}.v15-card-actions .btn{font-size:.8rem!important}.v15-module-row{grid-template-columns:1fr!important}.v15-module-actions{grid-template-columns:1fr 1fr!important}.v17-module-card{grid-template-columns:1fr}.ckp-v17{border-radius:12px}.ckp-v17-head{align-items:flex-start;flex-direction:column}.ckp-v17-content{padding:10px}.v17-home-grid{grid-template-columns:1fr;}}

/* --- bloc CSS extrait --- */

/* V18 — simplification métier : 1 page = 1 mission, responsive Chrome/Safari */
:root{--si-blue:#2f80ed;--si-red:#e03131;--si-orange:#f08c00;--si-green:#2f9e44;--si-line:#dfe5ee;--si-soft:#f6f8fb;--si-ink:#152033;--si-muted:#65758b;}
#adminDashboardContent{max-width:1440px;margin:0 auto;width:100%;}
.v18-page{display:grid;gap:14px;min-width:0;}
.v18-header{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:2px;}
.v18-header h1{font-size:1.75rem;line-height:1.1;margin:0 0 8px;color:var(--si-ink);}
.v18-sub{color:var(--si-muted);font-size:.95rem;line-height:1.45;max-width:840px;}
.v18-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;}
.v18-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;}
.v18-kpi{background:#fff;border:1px solid var(--si-line);border-left:4px solid var(--si-blue);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow-premium);min-width:0;}
.v18-kpi.red{border-left-color:var(--si-red)}.v18-kpi.orange{border-left-color:var(--si-orange)}.v18-kpi.green{border-left-color:var(--si-green)}
.v18-kpi b{font-size:1.45rem;display:block;line-height:1.1;color:#061329}.v18-kpi span{font-size:.82rem;color:#526277;}
.v18-card{background:#fff;border:1px solid var(--si-line);border-radius:16px;box-shadow:var(--shadow-premium);min-width:0;}
.v18-pad{padding:14px 16px;}.v18-card h2{font-size:1.05rem;margin:0 0 8px;color:#061329}.v18-card h3{font-size:.95rem;margin:0 0 5px;line-height:1.2;color:#061329}
.v18-toolbar{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(160px,.8fr) minmax(140px,.6fr);gap:10px;padding:12px 14px;}
.v18-toolbar label{display:block;font-size:.72rem;text-transform:uppercase;font-weight:800;color:#607089;margin-bottom:5px;}
.v18-toolbar input,.v18-toolbar select{width:100%;border:1px solid var(--si-line);border-radius:10px;padding:10px 12px;background:#fff;font-size:.95rem;min-width:0;}
.v18-list-head{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;padding:0 2px;margin-top:4px;}
.v18-list-head h2{font-size:1.1rem;margin:0;}.v18-list-head p{font-size:.82rem;color:var(--si-muted);margin:3px 0 0;}
.v18-student-list{display:grid;gap:10px;}
.v18-student-card{display:grid;grid-template-columns:minmax(230px,1.35fr) minmax(115px,.48fr) auto minmax(190px,.7fr);gap:12px;align-items:center;background:#fff;border:1px solid var(--si-line);border-radius:16px;padding:12px 14px;box-shadow:var(--shadow-premium);min-width:0;}
.v18-student-main{display:flex;gap:10px;align-items:center;min-width:0}.v18-avatar{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:900;flex:0 0 auto;box-shadow:0 5px 14px rgba(0,0,0,.08)}
.v18-name{font-weight:900;font-size:.96rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v18-meta{font-size:.78rem;color:var(--si-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.v18-pills{display:flex;gap:6px;flex-wrap:wrap;margin-top:5px;}
.v18-pill{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:4px 8px;font-weight:850;font-size:.72rem;background:#edf2ff;color:#274690;white-space:nowrap}.v18-pill.red{background:#ffe3e3;color:#a31313}.v18-pill.orange{background:#fff3bf;color:#914f00}.v18-pill.green{background:#d3f9d8;color:#18632b}.v18-pill.gray{background:#eef1f5;color:#526277}
.v18-pay span{display:block;font-size:.7rem;text-transform:uppercase;color:#7b8aa0;font-weight:800}.v18-pay b{font-size:.93rem;}
.v18-mini{display:flex;gap:7px;justify-content:flex-end;}.v18-mini div{width:58px;min-height:50px;border:1px solid var(--si-line);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f8fafc}.v18-mini b{font-size:1rem}.v18-mini span{font-size:.62rem;text-align:center;text-transform:uppercase;color:#42526a;font-weight:800;line-height:1.12;}
.v18-student-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;min-width:0}.v18-student-actions .btn{min-height:38px;padding:8px 10px;font-size:.86rem;white-space:nowrap;}
.v18-empty{border:1px dashed var(--si-line);background:#f8fafc;color:#607089;border-radius:13px;padding:16px;text-align:center;}
/* Planner compact */
.v18-modal-backdrop{position:fixed;inset:0;background:rgba(10,18,30,.55);z-index:4000;display:flex;align-items:center;justify-content:center;padding:18px;}
.v18-modal{background:#fff;border-radius:18px;box-shadow:0 28px 70px rgba(0,0,0,.32);width:min(1040px,96vw);max-height:92vh;overflow:hidden;display:flex;flex-direction:column;}
.v18-modal-header{padding:16px 18px;border-bottom:1px solid var(--si-line);display:flex;justify-content:space-between;align-items:flex-start;gap:12px;}.v18-modal-header h2{font-size:1.15rem;margin:0 0 4px}.v18-close{border:none;border-radius:10px;background:#f1f3f5;width:38px;height:38px;font-size:1.25rem;cursor:pointer;}
.v18-modal-body{padding:14px;overflow:auto;min-height:0;}.v18-program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}.v18-program{border:1px solid var(--si-line);border-radius:14px;overflow:hidden;background:#fff;min-width:0;}.v18-program>h3{padding:11px 12px;background:#f8fafc;border-bottom:1px solid var(--si-line);font-size:.82rem;text-transform:uppercase;color:#607089;margin:0;}
.v18-module-row{display:grid;grid-template-columns:minmax(135px,1fr) minmax(125px,.75fr) minmax(210px,.95fr);gap:10px;align-items:center;padding:10px 12px;border-bottom:1px solid #edf0f3;min-width:0}.v18-module-row:last-child{border-bottom:none}.v18-module-title{font-weight:900;line-height:1.18;overflow-wrap:anywhere}.v18-module-sub{font-size:.74rem;color:var(--si-muted);}.v18-module-stats{display:flex;flex-wrap:wrap;gap:5px}.v18-module-actions{display:flex;gap:6px;justify-content:flex-end;align-items:center;min-width:0}.v18-module-actions .btn{padding:7px 9px;min-height:34px;font-size:.78rem}.v18-step-btn{width:34px!important;padding:0!important;font-weight:900!important;font-size:1rem!important;}
/* Home accordions */
.v18-home-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.v18-accordion{background:#fff;border:1px solid var(--si-line);border-radius:16px;box-shadow:var(--shadow-premium);overflow:hidden}.v18-accordion summary{cursor:pointer;list-style:none;padding:14px 16px;font-weight:900;display:flex;justify-content:space-between;gap:10px}.v18-accordion summary::-webkit-details-marker{display:none}.v18-acc-body{padding:0 14px 14px;display:grid;gap:8px}.v18-line{border:1px solid var(--si-line);background:#f8fafc;border-radius:12px;padding:10px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.v18-line b{font-size:.88rem}.v18-line span{font-size:.76rem;color:var(--si-muted)}
/* Collectifs */
.v18-collectifs-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.55fr);gap:14px;align-items:start}.v18-module-card{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:11px 13px;border:1px solid var(--si-line);border-radius:14px;background:#fff;box-shadow:var(--shadow-premium);cursor:pointer}.v18-module-card.active{border-color:var(--si-blue);box-shadow:0 0 0 3px rgba(47,128,237,.12)}.v18-side{position:sticky;top:12px}.v18-side-list{display:grid;gap:8px}.v18-side-student{border:1px solid var(--si-line);border-radius:12px;padding:10px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;background:#fff;}
/* Messages et tâches dédiés */
.v18-work{display:grid;grid-template-columns:310px minmax(0,1fr);height:calc(100vh - 125px);min-height:620px;background:#fff;border:1px solid var(--si-line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow-premium-lg)}
.v18-work-left{border-right:1px solid var(--si-line);display:flex;flex-direction:column;min-width:0;min-height:0;background:#fbfcff}.v18-work-head{padding:14px;border-bottom:1px solid var(--si-line)}.v18-work-head h1{font-size:1.1rem;margin:0 0 8px}.v18-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.v18-tab{border:1px solid var(--si-line);background:#fff;border-radius:999px;padding:7px 10px;font-weight:850;font-size:.78rem;cursor:pointer}.v18-tab.on{background:var(--si-blue);border-color:var(--si-blue);color:#fff}.v18-work-list{overflow:auto;padding:10px;display:grid;gap:8px;min-height:0}.v18-work-row{border:1px solid var(--si-line);border-radius:14px;background:#fff;padding:10px;cursor:pointer;display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px}.v18-work-row.on{border-color:var(--si-blue);background:#eef5ff}.v18-work-row b{font-size:.88rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v18-work-row span{font-size:.76rem;color:var(--si-muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v18-work-main{display:grid;grid-template-rows:auto 1fr;min-width:0;min-height:0;background:#f3f5f7}.v18-work-title{padding:16px 18px;border-bottom:1px solid var(--si-line);background:#fff;display:flex;justify-content:space-between;gap:10px;align-items:center}.v18-work-title h2{font-size:1.2rem;margin:0}.v18-work-content{overflow:auto;padding:14px;display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:14px}.v18-panel{background:#fff;border:1px solid var(--si-line);border-radius:16px;box-shadow:var(--shadow-premium);overflow:hidden;min-width:0}.v18-panel h3{font-size:.95rem;margin:0;padding:12px 14px;border-bottom:1px solid var(--si-line);}.v18-panel-body{padding:12px;display:grid;gap:10px}.v18-task-row{border:1px solid var(--si-line);border-radius:12px;padding:10px;background:#fff;cursor:pointer}.v18-task-row.on{border-color:var(--si-blue);background:#eef5ff}.v18-box{border:1px solid var(--si-line);background:#fff;border-radius:12px;padding:12px}.v18-box h4{font-size:.78rem;text-transform:uppercase;color:#607089;margin:0 0 8px}.v18-box p{margin:0;white-space:pre-wrap;line-height:1.45}.v18-chat{display:grid;gap:8px;max-height:260px;overflow:auto}.v18-msg{border:1px solid var(--si-line);background:#f8fafc;border-radius:12px;padding:10px}.v18-msg.coach{background:#eef5ff;border-color:#cfe0ff}.v18-reply textarea{width:100%;min-height:120px;border:1px solid var(--si-line);border-radius:12px;padding:12px;resize:vertical;font-family:inherit}.v18-btnrow{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;margin-top:10px}
/* Séance lisible */
.sce-session-qa-full{display:grid;gap:10px}.sce-session-task-full{border:1px solid var(--si-line);border-radius:12px;padding:12px;background:#fff}.sce-session-task-full h4{margin:0 0 8px}.sce-session-task-full .work{white-space:pre-wrap;line-height:1.45;color:#1f2d3d}.sce-panel .sce-section{border-radius:12px;overflow:hidden}.sce-panel .sce-section h3{cursor:pointer;}
@media (max-width:1280px){.v18-student-card{grid-template-columns:minmax(220px,1.2fr) minmax(100px,.45fr) auto minmax(170px,.7fr);gap:9px}.v18-mini div{width:52px}.v18-student-actions .btn{font-size:.82rem}.v18-program-grid{grid-template-columns:1fr}.v18-module-row{grid-template-columns:minmax(135px,1fr) minmax(115px,.75fr) minmax(200px,.95fr)}}
@media (max-width:1050px){.v18-student-card{grid-template-columns:1fr;align-items:stretch}.v18-mini{justify-content:flex-start}.v18-student-actions{grid-template-columns:repeat(4,minmax(0,1fr))}.v18-collectifs-layout,.v18-work-content,.v18-home-grid{grid-template-columns:1fr}.v18-side{position:static}.v18-work{height:auto;min-height:0;grid-template-columns:1fr}.v18-work-left{border-right:none;border-bottom:1px solid var(--si-line);max-height:420px}.v18-work-content{overflow:visible}.v18-work-main{min-height:0}}
@media (max-width:768px){#adminDashboardContent{padding:0}.v18-header{display:block}.v18-actions{justify-content:stretch;margin-top:12px}.v18-actions .btn{width:100%}.v18-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v18-kpi{padding:12px}.v18-toolbar{grid-template-columns:1fr}.v18-student-actions{grid-template-columns:1fr 1fr}.v18-mini{display:grid;grid-template-columns:repeat(4,1fr)}.v18-mini div{width:auto}.v18-modal{width:100vw;height:100vh;max-height:100vh;border-radius:0}.v18-modal-backdrop{padding:0}.v18-module-row{grid-template-columns:1fr;gap:8px}.v18-module-actions{justify-content:stretch;flex-wrap:wrap}.v18-module-actions .btn:not(.v18-step-btn){flex:1 1 42%}.v18-work{border-radius:0;border-left:none;border-right:none}.v18-work-left{max-height:none}.v18-work-row{grid-template-columns:34px 1fr}.v18-work-title{display:block}.v18-work-title .v18-btnrow{justify-content:flex-start}.v18-home-grid{grid-template-columns:1fr}.v18-module-card{grid-template-columns:1fr;}.v18-side-student{grid-template-columns:1fr}.v18-line{grid-template-columns:1fr}.v18-line .btn{width:100%}}

/* --- bloc CSS extrait --- */

/* V19 — clarification Séances / Messages / Tâches + responsive */
.v19-page{max-width:1420px;margin:0 auto;width:100%;}
.v19-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px;}
.v19-header h1{font-size:1.8rem;line-height:1.1;margin:0 0 6px;color:var(--primary-color);}
.v19-sub{color:var(--text-light);font-size:.94rem;line-height:1.45;}
.v19-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0;}
.v19-kpi{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow-premium);min-height:82px;}
.v19-kpi.orange{border-left-color:var(--warning-color)}.v19-kpi.green{border-left-color:var(--success-color)}.v19-kpi.red{border-left-color:var(--error-color)}
.v19-kpi b{font-size:1.55rem;display:block;line-height:1.1}.v19-kpi span{font-size:.82rem;color:var(--text-light)}
.v19-toolbar{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:12px;display:grid;grid-template-columns:1fr 220px 190px;gap:10px;margin-bottom:14px;box-shadow:var(--shadow-premium)}
.v19-toolbar label{display:block;text-transform:uppercase;font-weight:800;color:#607089;font-size:.72rem;margin-bottom:5px;letter-spacing:.02em}
.v19-toolbar input,.v19-toolbar select{width:100%;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;font-size:.95rem;background:#fff;min-height:42px}
.v19-card{background:#fff;border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-premium-lg);overflow:hidden;}
.v19-pad{padding:16px;}
.v19-empty{border:1px dashed var(--border-color);background:#f8fafc;border-radius:12px;padding:14px;color:var(--text-light);}
.v19-pill{display:inline-flex;align-items:center;border-radius:999px;background:#eef2f7;color:#334155;font-weight:800;font-size:.72rem;padding:4px 8px;white-space:nowrap;border:0;}
.v19-pill.red{background:#ffe7e7;color:#9a1111}.v19-pill.orange{background:#fff0d8;color:#9a4a00}.v19-pill.green{background:#dcfce7;color:#166534}.v19-pill.blue{background:#eaf2ff;color:#1d4ed8}
.v19-line{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid var(--border-color);border-radius:12px;background:#f8fafc;padding:10px;margin-bottom:8px;}
.v19-line b{font-size:.88rem}.v19-line span{font-size:.78rem;color:var(--text-light)}
.v19-accordion{background:#fff;border:1px solid var(--border-color);border-radius:14px;box-shadow:var(--shadow-premium);overflow:hidden;margin-bottom:10px;}
.v19-accordion summary{cursor:pointer;list-style:none;padding:13px 14px;font-weight:900;display:flex;justify-content:space-between;align-items:center;gap:10px;}
.v19-accordion summary::-webkit-details-marker{display:none}.v19-accordion-body{padding:0 14px 14px;}
/* Séances */
.v19-session-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.7fr);gap:14px;align-items:start;}
.v19-session-list{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:10px;box-shadow:var(--shadow-premium);margin-bottom:14px;}
.v19-session-strip{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;}
.v19-session-chip{min-width:230px;max-width:260px;border:1px solid var(--border-color);border-radius:12px;background:#fff;padding:10px;text-align:left;cursor:pointer;}
.v19-session-chip.on{border-color:var(--accent-color);background:#eff6ff;box-shadow:0 0 0 2px rgba(74,144,226,.12)}
.v19-session-chip b{font-size:.86rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v19-session-chip span{font-size:.74rem;color:var(--text-light)}
.v19-session-main{display:grid;gap:12px;}
.v19-session-title{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:16px;box-shadow:var(--shadow-premium);display:flex;justify-content:space-between;gap:12px;align-items:flex-start;}
.v19-session-title h2{font-size:1.45rem;margin:0 0 4px}.v19-btnrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.v19-box{background:#fff;border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-premium);overflow:hidden;}
.v19-box h3{font-size:1rem;margin:0;padding:12px 14px;border-bottom:1px solid var(--border-color);background:#fbfcff;}
.v19-box-body{padding:14px;display:grid;gap:12px;}
.v19-work-visible{border:1px solid var(--border-color);background:#f8fafc;border-radius:12px;padding:12px;white-space:pre-wrap;line-height:1.45;}
.v19-textarea{width:100%;min-height:100px;border:1px solid var(--border-color);border-radius:12px;padding:10px 12px;font-family:inherit;font-size:.95rem;resize:vertical;background:#fff;}
.v19-side{display:grid;gap:10px;position:sticky;top:12px;}
.v19-side details{background:#fff;border:1px solid var(--border-color);border-radius:14px;box-shadow:var(--shadow-premium);overflow:hidden;}
.v19-side summary{padding:12px 14px;font-weight:900;cursor:pointer;list-style:none}.v19-side summary::-webkit-details-marker{display:none}.v19-side .body{padding:0 14px 14px;}
/* Messages / Tâches */
.v19-inbox{display:grid;grid-template-columns:330px minmax(0,1fr);height:calc(100vh - 145px);min-height:620px;background:#fff;border:1px solid var(--border-color);border-radius:18px;overflow:hidden;box-shadow:var(--shadow-premium-lg);}
.v19-inbox-left{border-right:1px solid var(--border-color);background:#fbfcff;display:flex;flex-direction:column;min-height:0;}
.v19-inbox-head{padding:14px;border-bottom:1px solid var(--border-color)}.v19-inbox-head h1{font-size:1.15rem;margin:0 0 8px}.v19-inbox-head input{width:100%;border:1px solid var(--border-color);border-radius:10px;padding:10px;margin-top:8px;}
.v19-tabs{display:flex;gap:6px;flex-wrap:wrap}.v19-tab{border:1px solid var(--border-color);background:#fff;border-radius:999px;padding:7px 11px;font-weight:800;cursor:pointer}.v19-tab.on{background:var(--accent-color);color:#fff;border-color:var(--accent-color)}
.v19-inbox-list{overflow:auto;padding:10px;display:grid;gap:8px;min-height:0;}.v19-inbox-row{border:1px solid var(--border-color);border-radius:14px;background:#fff;padding:10px;cursor:pointer;display:grid;grid-template-columns:36px minmax(0,1fr);gap:10px}.v19-inbox-row.on{border-color:var(--accent-color);background:#eff6ff;box-shadow:0 0 0 2px rgba(74,144,226,.12)}
.v19-inbox-row b{font-size:.86rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.v19-inbox-row span{font-size:.76rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.v19-inbox-main{display:grid;grid-template-rows:auto 1fr;min-width:0;min-height:0;background:#f3f5f7}.v19-inbox-title{background:#fff;border-bottom:1px solid var(--border-color);padding:16px 18px;display:flex;justify-content:space-between;gap:12px;align-items:center}.v19-inbox-title h2{font-size:1.15rem;margin:0}.v19-inbox-title p{margin:2px 0 0;font-size:.82rem;color:var(--text-light)}
.v19-inbox-content{display:grid;grid-template-columns:minmax(260px,.75fr) minmax(0,1.25fr);gap:14px;padding:14px;overflow:auto;min-height:0}.v19-thread-list,.v19-detail{background:#fff;border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-premium);overflow:hidden}.v19-thread-list h3,.v19-detail h3{font-size:1rem;margin:0;padding:12px 14px;border-bottom:1px solid var(--border-color);background:#fff}.v19-panel-body{padding:12px;display:grid;gap:10px;}
.v19-task-row{border:1px solid var(--border-color);border-radius:12px;background:#fff;padding:10px;cursor:pointer}.v19-task-row.on{border-color:var(--accent-color);background:#eff6ff}.v19-task-row b{font-size:.86rem;display:block}.v19-task-row span{font-size:.76rem;color:var(--text-light)}
.v19-chat{display:grid;gap:8px;max-height:260px;overflow:auto}.v19-msg{border:1px solid var(--border-color);border-radius:12px;background:#f8fafc;padding:10px;white-space:pre-wrap}.v19-msg.coach{background:#eef5ff;border-color:#cfe0ff}.v19-msg b{display:block;font-size:.76rem;color:#4b5d78;margin-bottom:4px}
@media (max-width:1200px){.v19-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}.v19-session-layout{grid-template-columns:1fr}.v19-side{position:static}.v19-inbox{grid-template-columns:280px minmax(0,1fr)}}
@media (max-width:900px){.v19-header{display:block}.v19-toolbar{grid-template-columns:1fr}.v19-kpis{grid-template-columns:1fr 1fr}.v19-inbox{height:auto;min-height:0;grid-template-columns:1fr}.v19-inbox-left{border-right:0;border-bottom:1px solid var(--border-color);max-height:360px}.v19-inbox-content{grid-template-columns:1fr}.v19-session-title{display:block}.v19-btnrow{margin-top:10px}.v19-session-chip{min-width:210px}.main-content{padding:14px!important}}
@media (max-width:560px){.v19-kpis{grid-template-columns:1fr}.v19-kpi{min-height:70px}.v19-session-chip{min-width:85vw}.v19-inbox-title{display:block}.v19-btnrow .btn{width:100%;justify-content:center}.v19-toolbar input,.v19-toolbar select{font-size:16px}.v19-side details[open] .body{max-height:none}.v19-box-body{padding:12px}}

/* --- bloc CSS extrait --- */

/* V21 — Élèves compact stable */
.v21-page{max-width:1480px;margin:0 auto;padding-bottom:40px;min-width:0}
.v21-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:16px}
.v21-header h1{font-size:2rem;line-height:1.1;margin:0 0 6px;color:#111827}
.v21-header p{margin:0;color:#5b6472;max-width:780px;font-size:1rem;line-height:1.45}
.v21-top-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.v21-kpis{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px;margin:14px 0 14px}
.v21-kpi{background:#fff;border:1px solid #dde3ea;border-radius:14px;padding:14px 16px;border-left:4px solid #2f80ed;box-shadow:0 8px 20px rgba(0,0,0,.05);min-height:82px;display:flex;flex-direction:column;justify-content:center}
.v21-kpi strong{font-size:1.45rem;line-height:1.1;color:#0f172a;word-break:normal}
.v21-kpi span{font-size:.86rem;color:#5b6472;margin-top:6px}.v21-kpi.v21-danger{border-left-color:#e02020}.v21-kpi.v21-warn{border-left-color:#f2994a}
.v21-toolbar{background:#fff;border:1px solid #dde3ea;border-radius:16px;box-shadow:0 8px 20px rgba(0,0,0,.05);padding:14px;display:grid;grid-template-columns:minmax(280px,1.4fr) minmax(180px,.75fr) minmax(160px,.55fr);gap:12px;margin-bottom:14px}
.v21-toolbar label{display:block;text-transform:uppercase;font-size:.72rem;letter-spacing:.04em;font-weight:800;color:#64748b;margin-bottom:6px}.v21-toolbar input,.v21-toolbar select{width:100%;border:1px solid #cfd8e3;border-radius:10px;padding:10px 12px;font-size:.95rem;background:#fff;min-width:0}
.v21-list-title{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:10px 0}.v21-list-title h2{margin:0;font-size:1.2rem}.v21-list-title p{margin:2px 0 0;color:#6b7280;font-size:.9rem}.v21-list-title span{color:#64748b;white-space:nowrap}
.v21-student-card{background:#fff;border:1px solid #dde3ea;border-radius:16px;margin-bottom:10px;padding:12px 14px;box-shadow:0 8px 20px rgba(0,0,0,.05);display:grid;grid-template-columns:minmax(260px,1.45fr) minmax(130px,.55fr) minmax(250px,.95fr) minmax(250px,.9fr);gap:12px;align-items:center;min-width:0}
.v21-identity{display:flex;align-items:center;gap:12px;min-width:0}.v21-avatar{width:42px;height:42px;border-radius:13px;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:900;flex:0 0 auto}.v21-id-text{min-width:0}.v21-name{font-weight:900;color:#111827;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v21-meta{color:#64748b;font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v21-status{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.v21-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:.78rem;font-weight:900;line-height:1}.v21-red{background:#fee2e2;color:#991b1b}.v21-orange{background:#fff0d8;color:#9a3412}.v21-green{background:#dcfce7;color:#166534}.v21-pill-button{border:0;cursor:pointer;text-decoration:underline}
.v21-paid span{display:block;text-transform:uppercase;font-size:.68rem;letter-spacing:.06em;font-weight:900;color:#94a3b8}.v21-paid strong{display:block;font-size:1rem;color:#0f172a}.v21-paid small{display:block;color:#64748b;font-size:.78rem;margin-top:1px}
.v21-counters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.v21-counters div{border:1px solid #dde3ea;background:#f8fafc;border-radius:11px;min-height:50px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px}.v21-counters strong{font-size:1rem;color:#0f172a;line-height:1}.v21-counters span{text-transform:uppercase;font-size:.62rem;font-weight:900;color:#475569;margin-top:4px;text-align:center;line-height:1.05}.v21-counter-important{border-color:#fecaca!important;background:#fff7f7!important}
.v21-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.v21-actions .btn{width:100%;padding:8px 8px;min-height:38px;font-size:.88rem;white-space:normal;line-height:1.15}
.v21-empty{background:#fff;border:1px dashed #cbd5e1;border-radius:14px;padding:18px;color:#64748b;text-align:center}
.v21-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:3000;display:flex;align-items:center;justify-content:center;padding:20px}.v21-modal{background:#fff;border-radius:18px;width:min(1120px,96vw);max-height:88vh;overflow:hidden;box-shadow:0 28px 80px rgba(0,0,0,.28);display:flex;flex-direction:column}.v21-modal-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;padding:18px 22px;border-bottom:1px solid #e5e7eb}.v21-modal-head h2{margin:0;font-size:1.25rem}.v21-modal-head p{margin:4px 0 0;color:#64748b}.v21-close{border:0;background:#f1f5f9;border-radius:12px;width:40px;height:40px;font-size:1.4rem;cursor:pointer}.v21-modal-body{padding:14px;overflow:auto}.v21-planner-summary{display:flex;gap:10px;align-items:center;justify-content:space-between;background:#eff6ff;border:1px solid #bfdbfe;border-radius:14px;padding:12px;margin-bottom:12px}.v21-planner-summary span{color:#475569;font-size:.9rem}.v21-program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.v21-program{border:1px solid #dde3ea;border-radius:14px;overflow:hidden;background:#fff;min-width:0}.v21-program h3{margin:0;padding:11px 14px;background:#f8fafc;border-bottom:1px solid #e5e7eb;color:#475569;font-size:.88rem;text-transform:uppercase;letter-spacing:.04em}.v21-module-row{display:grid;grid-template-columns:minmax(170px,1fr) minmax(155px,.65fr) minmax(260px,.95fr);gap:10px;align-items:center;padding:11px 14px;border-bottom:1px solid #edf2f7;min-width:0}.v21-module-row:last-child{border-bottom:0}.v21-module-main{min-width:0}.v21-module-main strong{display:block;font-size:.95rem;line-height:1.15;color:#111827;overflow-wrap:anywhere}.v21-module-main span{display:block;color:#64748b;font-size:.8rem;margin-top:2px}.v21-module-stats{display:flex;gap:5px;flex-wrap:wrap}.v21-module-stats span{border-radius:8px;padding:4px 7px;font-size:.76rem;font-weight:900;white-space:nowrap}.v21-module-stats .done{background:#dcfce7;color:#166534}.v21-module-stats .plan{background:#e0e7ff;color:#3730a3}.v21-module-stats .need{background:#fee2e2;color:#991b1b}.v21-module-actions{display:flex;gap:6px;justify-content:flex-end;align-items:center;flex-wrap:nowrap;min-width:0}.v21-module-actions .btn{padding:7px 9px;font-size:.82rem;min-height:34px;white-space:nowrap}.v21-mini-btn{width:34px;height:34px;border:1px solid #cfd8e3;background:#f8fafc;border-radius:10px;font-size:1.15rem;font-weight:900;cursor:pointer}.v21-module-row.v21-muted{opacity:.55}.v21-module-row.v21-muted .v21-module-actions button[disabled]{cursor:not-allowed}
@media (max-width:1320px){.v21-student-card{grid-template-columns:minmax(250px,1.2fr) minmax(115px,.45fr) minmax(225px,.85fr) minmax(210px,.75fr);gap:10px;padding:11px}.v21-actions .btn{font-size:.82rem}.v21-counters div{min-height:48px}}
@media (max-width:1120px){.v21-student-card{grid-template-columns:1fr 1fr}.v21-actions{grid-template-columns:repeat(4,minmax(0,1fr));grid-column:1/-1}.v21-program-grid{grid-template-columns:1fr}.v21-module-row{grid-template-columns:1fr;align-items:start}.v21-module-actions{justify-content:flex-start;flex-wrap:wrap}.v21-module-actions .btn{flex:0 1 auto}}
@media (max-width:760px){.v21-header{flex-direction:column}.v21-top-actions{width:100%}.v21-top-actions .btn{flex:1}.v21-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v21-toolbar{grid-template-columns:1fr}.v21-list-title{align-items:flex-start}.v21-student-card{grid-template-columns:1fr;padding:12px}.v21-counters{grid-template-columns:repeat(4,minmax(0,1fr))}.v21-actions{grid-template-columns:1fr 1fr}.v21-modal-backdrop{align-items:flex-end;padding:0}.v21-modal{width:100vw;max-height:92vh;border-radius:18px 18px 0 0}.v21-modal-head{padding:14px 16px}.v21-planner-summary{display:block}.v21-program-grid{grid-template-columns:1fr}.v21-module-row{padding:12px}.v21-module-actions{display:grid;grid-template-columns:34px 34px 1fr 1fr;width:100%}.v21-module-actions .btn{width:100%;white-space:normal}.v21-mini-btn{width:34px}.v21-name,.v21-meta{white-space:normal}}

/* --- bloc CSS extrait --- */

/* V23 — Séances cockpit stable */
.v23-sessions-page{max-width:1480px;margin:0 auto;padding-bottom:40px;min-width:0}
.v23-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}
.v23-header h1{font-size:2rem;line-height:1.1;margin:0 0 6px;color:#111827}
.v23-header p{margin:0;color:#5b6472;max-width:850px;font-size:1rem;line-height:1.45}
.v23-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.v23-kpis{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:12px;margin:14px 0 14px}
.v23-kpi{background:#fff;border:1px solid #dde3ea;border-radius:14px;padding:14px 16px;border-left:4px solid #2f80ed;box-shadow:0 8px 20px rgba(0,0,0,.05);min-height:82px;display:flex;flex-direction:column;justify-content:center}
.v23-kpi strong{font-size:1.55rem;line-height:1.1;color:#0f172a}.v23-kpi span{font-size:.86rem;color:#5b6472;margin-top:6px}.v23-kpi.orange{border-left-color:#f2994a}.v23-kpi.green{border-left-color:#22c55e}
.v23-filter-card{background:#fff;border:1px solid #dde3ea;border-radius:16px;padding:12px;box-shadow:0 8px 20px rgba(0,0,0,.05);display:grid;grid-template-columns:1fr 220px 220px;gap:10px;margin-bottom:14px;align-items:end}
.v23-filter-card label{display:block;text-transform:uppercase;font-size:.72rem;letter-spacing:.04em;font-weight:800;color:#64748b;margin-bottom:6px}.v23-filter-card input,.v23-filter-card select{width:100%;border:1px solid #cfd8e3;border-radius:10px;padding:10px 12px;font-size:.95rem;background:#fff;min-height:42px;min-width:0}
.v23-session-strip{display:flex;gap:8px;overflow:auto;padding:4px 2px 10px;margin-bottom:12px;scrollbar-width:thin}
.v23-session-chip{min-width:245px;max-width:270px;border:1px solid #dde3ea;border-radius:13px;background:#fff;padding:10px 11px;cursor:pointer;box-shadow:0 6px 14px rgba(0,0,0,.04);text-align:left}
.v23-session-chip.active{border-color:#2f80ed;background:#eef6ff;box-shadow:0 0 0 3px rgba(47,128,237,.12)}
.v23-session-chip b{display:block;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#111827}.v23-session-chip span{display:block;font-size:.78rem;color:#667085;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.v23-chip-row{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}.v23-pill{display:inline-flex;border-radius:999px;padding:4px 8px;font-size:.72rem;font-weight:900;line-height:1;background:#f3f4f6;color:#374151}.v23-pill.orange{background:#fff0d8;color:#9a3412}.v23-pill.green{background:#dcfce7;color:#166534}.v23-pill.blue{background:#dbeafe;color:#1e40af}.v23-pill.red{background:#fee2e2;color:#991b1b}
.v23-session-title{background:#fff;border:1px solid #dde3ea;border-radius:16px;padding:16px;box-shadow:0 8px 20px rgba(0,0,0,.05);display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}
.v23-session-title h2{font-size:1.45rem;line-height:1.15;margin:0 0 5px;color:#111827}.v23-session-title p{margin:0;color:#667085}.v23-btnrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:flex-end}
.v23-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,.7fr);gap:14px;align-items:start}
.v23-main{display:grid;gap:12px;min-width:0}.v23-side{display:grid;gap:10px;position:sticky;top:14px;min-width:0}
.v23-box{background:#fff;border:1px solid #dde3ea;border-radius:16px;box-shadow:0 8px 20px rgba(0,0,0,.05);overflow:hidden;min-width:0}.v23-box h3{font-size:1rem;margin:0;padding:12px 14px;border-bottom:1px solid #eef2f7;background:#fbfcff;color:#111827}.v23-box-body{padding:14px;display:grid;gap:12px}
.v23-visible{border:1px solid #e5e7eb;background:#f8fafc;border-radius:12px;padding:12px;line-height:1.5;white-space:pre-wrap;color:#243042;max-height:310px;overflow:auto}.v23-visible strong{color:#111827}
.v23-textarea{width:100%;min-height:100px;border:1px solid #cfd8e3;border-radius:12px;padding:10px 12px;font-family:inherit;font-size:.95rem;resize:vertical;background:#fff}.v23-textarea:focus{outline:none;border-color:#2f80ed;box-shadow:0 0 0 3px rgba(47,128,237,.12)}
.v23-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.v23-list{margin:0;padding:0;list-style:none;display:grid;gap:7px}.v23-list li{display:flex;gap:8px;align-items:flex-start}.v23-list input{width:18px;height:18px;margin-top:2px;accent-color:#2f80ed;flex:0 0 auto}.v23-list span{font-size:.92rem;color:#243042;line-height:1.35}
.v23-accordion{background:#fff;border:1px solid #dde3ea;border-radius:14px;box-shadow:0 8px 20px rgba(0,0,0,.04);overflow:hidden}.v23-accordion summary{cursor:pointer;list-style:none;padding:12px 14px;font-weight:900;color:#111827;display:flex;justify-content:space-between;gap:10px;align-items:center}.v23-accordion summary::-webkit-details-marker{display:none}.v23-accordion summary:after{content:'+';color:#2f80ed}.v23-accordion[open] summary:after{content:'−'}.v23-accordion .body{padding:0 14px 14px;display:grid;gap:8px}
.v23-line{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc;padding:10px}.v23-line b{font-size:.9rem;color:#111827}.v23-line span{font-size:.78rem;color:#667085}
.v23-empty{border:1px dashed #cbd5e1;background:#f8fafc;border-radius:12px;padding:14px;color:#667085;text-align:center}
.v23-chat{display:grid;gap:8px;max-height:240px;overflow:auto}.v23-msg{border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc;padding:10px;white-space:pre-wrap}.v23-msg.coach{background:#eef6ff;border-color:#cfe0ff}.v23-msg b{display:block;font-size:.76rem;color:#4b5d78;margin-bottom:4px}
@media(max-width:1180px){.v23-layout{grid-template-columns:1fr}.v23-side{position:static}.v23-filter-card{grid-template-columns:1fr 200px 200px}.v23-two{grid-template-columns:1fr}.v23-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:820px){.v23-header,.v23-session-title{display:block}.v23-actions,.v23-btnrow{justify-content:stretch;margin-top:10px}.v23-actions .btn,.v23-btnrow .btn{flex:1}.v23-filter-card{grid-template-columns:1fr}.v23-kpis{grid-template-columns:1fr 1fr}.v23-session-chip{min-width:82vw}.v23-side{gap:8px}.v23-box-body{padding:12px}}
@media(max-width:560px){.v23-kpis{grid-template-columns:1fr}.v23-session-title h2{font-size:1.25rem}.v23-btnrow .btn{width:100%;flex:1 1 100%}.v23-filter-card input,.v23-filter-card select{font-size:16px}.v23-visible{max-height:360px}.main-content{padding:14px!important}}

/* --- bloc CSS extrait --- */

/* ===== V28 — Programme interactif + messages contextualisés ===== */
.v28-program-section{margin-top:20px;border-radius:20px;overflow:hidden}.v28-program-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px}.v28-program-top h2{margin:0 0 6px;color:#111827}.v28-program-top p{margin:0;color:var(--text-light);max-width:760px}.v28-credit{min-width:160px;background:#eef6ff;border:1px solid #cfe4ff;border-radius:16px;padding:14px;text-align:center}.v28-credit b{display:block;font-size:1.8rem;color:#0f172a;line-height:1}.v28-credit span,.v28-credit small{display:block;color:#475569;font-weight:700;font-size:.82rem;margin-top:4px}.v28-program-alert{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:14px;padding:12px 14px;margin:10px 0 14px}.v28-program-group{border:1px solid var(--border-color);border-radius:18px;background:#fff;margin-top:12px;overflow:hidden}.v28-program-group summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;background:#f8fafc;font-weight:900;color:#111827}.v28-program-group summary::-webkit-details-marker{display:none}.v28-program-group summary small{color:var(--text-light);font-weight:800}.v28-module-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px}.v28-module-card{border:1px solid #e5e7eb;border-radius:16px;background:#fff;padding:14px;box-shadow:0 8px 22px rgba(15,23,42,.04);min-width:0}.v28-module-card.wanted{border-color:#93c5fd;background:#f8fbff}.v28-module-head{display:flex;gap:10px;align-items:flex-start}.v28-index{width:32px;height:32px;border-radius:10px;background:#eef2ff;color:#1d4ed8;display:flex;align-items:center;justify-content:center;font-weight:900;flex:0 0 auto}.v28-module-head h4{margin:0 0 4px;font-size:1rem;color:#111827}.v28-module-head p{margin:0;color:var(--text-light);font-size:.9rem;line-height:1.35;overflow-wrap:anywhere}.v28-module-body{display:grid;grid-template-columns:1fr;gap:8px;margin:12px 0}.v28-module-body b{display:block;font-size:.82rem;text-transform:uppercase;color:#64748b;margin-bottom:4px}.v28-module-body ul{margin:0 0 0 18px;padding:0;color:#334155;font-size:.88rem;line-height:1.35}.v28-module-body p{margin:0;color:#334155;font-size:.88rem;line-height:1.35}.v28-module-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid #eef2f7;padding-top:10px}.v28-counters{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.v28-counters span,.v28-counters em{border-radius:999px;padding:4px 8px;font-style:normal;font-size:.75rem;font-weight:900;background:#f1f5f9;color:#475569}.v28-counters .wish{background:#dbeafe;color:#1d4ed8}.v28-counters em{background:#dcfce7;color:#166534}.v28-counters em.extra{background:#fee2e2;color:#991b1b}.v28-stepper{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:5px}.v28-stepper button{width:34px;height:34px;border:0;border-radius:9px;background:#e5e7eb;font-size:1.2rem;font-weight:900;cursor:pointer}.v28-stepper strong{min-width:20px;text-align:center}.v28-sendbar{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}.v28-thread small{display:block;color:#64748b;font-size:.78rem;margin-top:3px}.v28-context{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.v28-context span{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;padding:5px 9px;color:#475569;font-size:.8rem}.v28-context b{color:#111827}.v28-messages-page .v26-chat-head{align-items:flex-start}@media(max-width:980px){.v28-module-grid{grid-template-columns:1fr}.v28-program-top{display:block}.v28-credit{margin-top:12px;text-align:left}.v28-sendbar{flex-direction:column}.v28-sendbar .btn{width:100%}}@media(max-width:700px){.v28-program-group summary{padding:14px;align-items:flex-start;flex-direction:column}.v28-module-grid{padding:10px}.v28-module-card{padding:12px}.v28-module-footer{align-items:stretch;flex-direction:column}.v28-stepper{justify-content:space-between}.v28-stepper button{width:42px;height:42px}.v28-context{display:grid;grid-template-columns:1fr}.v28-context span{border-radius:12px}.v28-messages-page .v26-page-head h1{font-size:1.6rem}}
/* ===== fin V28 ===== */

/* --- bloc CSS extrait --- */

/* ===== V28.1 — Mes Messages élève : contexte lisible sans toucher aux autres pages ===== */
.v281-messages-page .v26-chat-head{align-items:flex-start;gap:12px}.v281-context{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.v281-context span{background:#f8fafc;border:1px solid #e5e7eb;border-radius:999px;padding:6px 10px;font-size:.78rem;color:#475569}.v281-context b{color:#111827}.v281-messages-page .v26-bubble b{display:block;margin-bottom:4px}.v281-messages-page .v26-thread small{display:block;color:#64748b;font-size:.74rem;margin-top:3px}.v281-messages-page .v26-thread em{display:block;color:#475569;font-size:.74rem;font-style:normal;margin-top:3px;opacity:.9}@media(max-width:900px){.v281-context{display:grid;grid-template-columns:1fr}.v281-context span{border-radius:12px}.v281-messages-page .v26-chat-head{flex-direction:column}.v281-messages-page .v26-chat-head .btn{width:100%}}

/* --- bloc CSS extrait --- */

.v283-page{max-width:1180px;margin:0 auto}.v283-hero{background:linear-gradient(135deg,#0f172a,#1d4ed8);color:#fff;border-radius:22px;padding:24px;margin-bottom:18px;box-shadow:0 18px 45px rgba(30,64,175,.20);display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.v283-hero h1{margin:4px 0 8px;font-size:30px}.v283-hero p{margin:0;color:rgba(255,255,255,.82);line-height:1.45}.v283-eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:12px;font-weight:900;color:#bfdbfe}.v283-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}.v283-tab{border:1px solid #dbeafe;background:#fff;color:#1e40af;border-radius:999px;padding:10px 14px;font-weight:900;cursor:pointer}.v283-tab.active{background:#2563eb;color:#fff;border-color:#2563eb}.v283-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v283-card{background:#fff;border:1px solid #e5e7eb;border-radius:18px;padding:16px;box-shadow:0 10px 28px rgba(15,23,42,.06);min-width:0}.v283-card.wish-plus{border-color:#86efac;background:linear-gradient(180deg,#fff,#f0fdf4)}.v283-card.wish-minus{border-color:#fecaca;background:linear-gradient(180deg,#fff,#fff7f7)}.v283-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.v283-card h3{margin:0;color:#0f172a;font-size:19px;line-height:1.2}.v283-card p{color:#475569;line-height:1.5;margin:10px 0 0}.v283-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.v283-badge{border-radius:999px;padding:5px 8px;font-size:12px;font-weight:900;background:#eef2ff;color:#3730a3}.v283-badge.green{background:#dcfce7;color:#166534}.v283-badge.orange{background:#ffedd5;color:#9a3412}.v283-badge.gray{background:#f1f5f9;color:#475569}.v283-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.v283-actions .btn{min-height:36px}.v283-wish{display:flex;gap:6px}.v283-wish button{border:1px solid #d1d5db;background:#fff;border-radius:11px;min-width:38px;height:36px;font-size:18px;font-weight:900;cursor:pointer}.v283-wish button.plus.active{background:#dcfce7;border-color:#22c55e;color:#166534}.v283-wish button.minus.active{background:#fee2e2;border-color:#ef4444;color:#991b1b}.v283-side{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}.v283-kpi{background:#fff;border:1px solid #e5e7eb;border-radius:16px;padding:13px;box-shadow:0 8px 20px rgba(15,23,42,.04)}.v283-kpi span{display:block;color:#64748b;font-size:12px;font-weight:900;text-transform:uppercase}.v283-kpi b{display:block;font-size:24px;color:#0f172a;margin-top:4px}.v283-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.52);z-index:99999;display:flex;align-items:center;justify-content:center;padding:18px}.v283-modal{width:min(860px,96vw);max-height:88vh;overflow:auto;background:#fff;border-radius:24px;border:1px solid #e5e7eb;box-shadow:0 24px 80px rgba(15,23,42,.30)}.v283-modal-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;padding:22px;border-bottom:1px solid #e5e7eb}.v283-modal-head h2{margin:0;color:#0f172a}.v283-close{border:0;background:#f1f5f9;border-radius:12px;padding:9px 12px;font-weight:900;cursor:pointer}.v283-modal-body{padding:22px}.v283-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.v283-detail{background:#f8fafc;border:1px solid #e5e7eb;border-radius:16px;padding:14px}.v283-detail h4{margin:0 0 10px;color:#0f172a}.v283-detail ul{margin:0;padding-left:18px;color:#334155;line-height:1.55}.v283-toast{position:fixed;right:18px;bottom:18px;z-index:100000;background:#0f172a;color:#fff;padding:12px 14px;border-radius:14px;box-shadow:0 18px 45px rgba(15,23,42,.28);max-width:360px}.v283-note{background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;border-radius:14px;padding:12px;margin:12px 0}.v283-muted{color:#64748b;font-size:14px}@media(max-width:900px){.v283-grid{grid-template-columns:1fr}.v283-side{grid-template-columns:1fr 1fr}.v283-hero{display:block}.v283-hero .btn{margin-top:12px}}@media(max-width:640px){.v283-page{padding:0}.v283-hero{border-radius:18px;padding:18px}.v283-hero h1{font-size:24px}.v283-side{grid-template-columns:1fr}.v283-card-head{display:block}.v283-wish{margin-top:10px}.v283-actions .btn{width:100%}.v283-detail-grid{grid-template-columns:1fr}.v283-modal-head{padding:18px}.v283-modal-body{padding:18px}}

/* --- bloc CSS extrait --- */

  .v22-collectifs-page{max-width:1500px;margin:0 auto;padding-bottom:24px}
  .v22-collectifs-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}
  .v22-collectifs-header h1{font-size:2rem;margin:0 0 6px;color:#111827;line-height:1.1}
  .v22-sub{color:#667085;font-size:.98rem;max-width:820px}
  .v22-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
  .v22-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
  .v22-kpi{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:15px 16px;box-shadow:0 8px 22px rgba(15,23,42,.05);border-left:4px solid #2f80ed;min-width:0}
  .v22-kpi.red{border-left-color:#ef4444}.v22-kpi.green{border-left-color:#16a34a}.v22-kpi.orange{border-left-color:#f97316}
  .v22-kpi b{display:block;font-size:1.55rem;line-height:1;color:#111827;margin-bottom:8px}.v22-kpi span{font-size:.88rem;color:#667085}
  .v22-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(330px,.65fr);gap:16px;align-items:start}
  .v22-card{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 8px 24px rgba(15,23,42,.06);min-width:0;overflow:hidden}
  .v22-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #eef2f7;background:#fff}
  .v22-card-head h2{font-size:1.18rem;margin:0;color:#111827}.v22-card-head p{margin:3px 0 0;color:#667085;font-size:.85rem}
  .v22-list{display:grid;gap:8px;padding:12px}
  .v22-module{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;border:1px solid #e5e7eb;border-radius:13px;padding:12px;background:#fff;cursor:pointer;transition:.16s ease}
  .v22-module:hover{border-color:#93c5fd;background:#f8fbff}.v22-module.active{border-color:#2f80ed;background:#eef6ff;box-shadow:inset 4px 0 0 #2f80ed}
  .v22-module h3{font-size:1rem;margin:0 0 2px;color:#111827;line-height:1.2}.v22-meta{font-size:.82rem;color:#667085;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .v22-pill{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:999px;padding:6px 10px;font-weight:800;font-size:.78rem;background:#f3f4f6;color:#374151}
  .v22-pill.red{background:#fee2e2;color:#991b1b}.v22-pill.blue{background:#dbeafe;color:#1e40af}.v22-pill.green{background:#dcfce7;color:#166534}
  .v22-side{position:sticky;top:18px;max-height:calc(100vh - 36px);display:flex;flex-direction:column}
  .v22-side-body{padding:14px 16px;overflow:auto;min-height:0}
  .v22-student-list{display:grid;gap:8px;margin-top:10px}
  .v22-student{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #e5e7eb;border-radius:12px;padding:10px;background:#fff}
  .v22-student input{width:18px;height:18px}.v22-student b{display:block;font-size:.92rem;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v22-student span{font-size:.8rem;color:#667085}
  .v22-avatar{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:.8rem;box-shadow:0 6px 14px rgba(0,0,0,.09)}
  .v22-empty{padding:18px;border:1px dashed #d8dee9;border-radius:12px;background:#f8fafc;color:#667085;text-align:center}
  .v22-next{margin-top:14px;padding-top:14px;border-top:1px solid #eef2f7}
  .v22-next-line{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid #e5e7eb;border-radius:11px;padding:9px 10px;margin-bottom:8px;background:#fff}
  .v22-next-line b{font-size:.9rem}.v22-next-line span{font-size:.78rem;color:#667085}
  .v22-mobile-note{display:none;color:#667085;font-size:.84rem;margin-top:8px}
  @media(max-width:1180px){.v22-layout{grid-template-columns:1fr}.v22-side{position:static;max-height:none}.v22-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v22-mobile-note{display:block}}
  @media(max-width:720px){.v22-collectifs-header{display:block}.v22-actions{justify-content:stretch;margin-top:12px}.v22-actions .btn{flex:1}.v22-kpis{grid-template-columns:1fr 1fr}.v22-module{grid-template-columns:1fr}.v22-module .btn{width:100%}.v22-card-head{display:block}.v22-card-head .btn{width:100%;margin-top:10px}.v22-student{grid-template-columns:auto 1fr}.v22-student .btn{grid-column:1/-1;width:100%}}

/* --- bloc CSS extrait --- */

.v24-student-work-page{max-width:1180px;margin:0 auto}.v24-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0}.v24-kpis>div{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:12px;padding:16px;box-shadow:var(--shadow-premium)}.v24-kpis b{display:block;font-size:1.6rem;color:#111827}.v24-kpis span{color:var(--text-light)}.v24-toolbar{display:grid;grid-template-columns:1.2fr 1fr auto auto;gap:12px;background:#fff;border:1px solid var(--border-color);border-radius:12px;padding:14px;margin-bottom:16px;box-shadow:var(--shadow-premium)}.v24-filters{display:flex;gap:8px;flex-wrap:wrap}.v24-tasks-grid{display:grid;grid-template-columns:1fr;gap:16px}.v24-task-card{background:#fff;border:1px solid var(--border-color);border-radius:14px;box-shadow:var(--shadow-premium-lg);overflow:hidden}.v24-task-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border-color);background:#fbfcfe}.v24-task-top h3{margin:0;font-size:1.1rem;color:#111827;overflow-wrap:anywhere}.v24-task-top p{margin:4px 0 0;color:var(--text-light);font-size:.9rem}.v24-pill{display:inline-flex;align-items:center;white-space:nowrap;border-radius:999px;padding:6px 9px;font-weight:800;font-size:.78rem}.v24-pill.todo{background:#eef2ff;color:#273fb6}.v24-pill.warn{background:#fff2d8;color:#9a5700}.v24-pill.ok{background:#dcfce7;color:#166534}.v24-details{border-bottom:1px solid #eef1f4}.v24-details summary{cursor:pointer;padding:12px 18px;font-weight:800;color:#111827;list-style:none}.v24-details summary::-webkit-details-marker{display:none}.v24-details summary:after{content:'+';float:right;color:#2f80ed}.v24-details[open] summary:after{content:'−'}.v24-work-demand,.v24-work-sent,.v24-coach-reply,.v24-thread{margin:0 18px 16px;background:#f8fafc;border:1px solid #e7edf4;border-radius:10px;padding:14px;white-space:pre-wrap;overflow-wrap:anywhere}.v24-coach-reply{background:#f0fdf4;border-color:#bbf7d0}.v24-empty{margin:0 18px 16px;background:#f8fafc;border:1px dashed #d8dee8;border-radius:10px;padding:14px;color:var(--text-light);text-align:center}.v24-empty-card{background:#fff;border:1px dashed #d8dee8;border-radius:14px;padding:28px;text-align:center;color:var(--text-light)}.v24-submit-box{padding:16px 18px;background:#fff}.v24-submit-box h4{margin:0 0 10px;color:#111827}.v24-textarea{width:100%;min-height:150px;border:1px solid var(--border-color);border-radius:10px;padding:12px;font-family:inherit;font-size:1rem;resize:vertical}.v24-input{width:100%;border:1px solid var(--border-color);border-radius:10px;padding:11px 12px;font-family:inherit;font-size:1rem;margin-top:8px}.v24-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:10px}.v24-msg{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:10px;margin-bottom:8px}.v24-msg.coach{background:#eef6ff;border-color:#cfe4ff}.v24-msg b{display:block;font-size:.82rem;margin-bottom:4px;color:#4b5563}.v24-msg span{white-space:pre-wrap;overflow-wrap:anywhere}.v24-appt-work{margin-top:14px;border-top:1px solid var(--border-color);padding-top:12px}.v24-appt-task{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #eef1f4}.v24-appt-task:last-of-type{border-bottom:none}.v24-appt-work .btn{margin-top:10px}.v24-appt-card{cursor:default!important}@media(max-width:1100px){.v24-toolbar{grid-template-columns:1fr 1fr}.v24-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.v24-student-work-page{max-width:100%;padding:0}.v24-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.v24-kpis>div{padding:13px}.v24-toolbar{grid-template-columns:1fr;gap:10px}.v24-filters .filter-btn{flex:1 1 45%;min-height:42px}.v24-task-top{flex-direction:column;padding:14px}.v24-details summary{padding:12px 14px}.v24-work-demand,.v24-work-sent,.v24-coach-reply,.v24-thread,.v24-empty{margin-left:14px;margin-right:14px}.v24-submit-box{padding:14px}.v24-actions{flex-direction:column}.v24-actions .btn{width:100%}.v24-textarea{font-size:16px;min-height:170px}.v24-input{font-size:16px}.v24-appt-task{flex-direction:column;align-items:flex-start}.v24-appt-work .btn{width:100%}}


        /* ===== V25 — TABLEAU DE BORD ÉLÈVE ALLÉGÉ + PROGRAMMES EN ACCORDÉONS ===== */
        .student-dashboard-v25 { max-width: 1120px; margin: 0 auto; }
        .student-hero-compact {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 18px;
            padding: 24px;
        }
        .student-home-grid {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 18px;
            margin-bottom: 18px;
        }
        .student-home-card { min-height: 190px; }
        .student-home-icon {
            width: 42px;
            height: 42px;
            border-radius: 12px;
            background: rgba(74,144,226,0.12);
            color: var(--accent-color);
            display: inline-flex;
            align-items: center;
            justify-content: center;
            font-size: 1.25rem;
            margin-bottom: 10px;
        }
        .student-task-count {
            font-size: 2.2rem;
            line-height: 1;
            font-weight: 800;
            color: var(--primary-color);
            margin: 4px 0 8px;
        }
        .student-task-alert-card { border-left: 4px solid var(--warning-color); }
        .student-task-alert-card.ok { border-left-color: var(--success-color); }
        .student-task-preview-list {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 10px;
            margin-top: 14px;
        }
        .student-task-preview {
            background: #f8fafc;
            border: 1px solid #e7edf4;
            border-radius: 10px;
            padding: 12px;
            min-width: 0;
        }
        .student-task-preview b,
        .student-task-preview span {
            display: block;
            overflow-wrap: anywhere;
        }
        .student-task-preview span { color: var(--text-light); font-size: .88rem; margin-top: 4px; }
        .dashboard-formation-card.compact { padding: 18px 20px; }
        .dashboard-formation-card.compact .card-title { margin-bottom: 6px; }
        .student-program-accordion-card .program-intro-box.compact { padding: 14px 16px; margin-bottom: 14px; }
        .student-program-accordions { display: grid; gap: 12px; }
        .student-program-details {
            border: 1px solid var(--border-color);
            border-radius: 12px;
            background: #fff;
            overflow: hidden;
        }
        .student-program-details summary {
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            padding: 15px 18px;
            font-weight: 800;
            color: var(--primary-color);
            list-style: none;
            background: #fbfcfe;
        }
        .student-program-details summary::-webkit-details-marker { display: none; }
        .student-program-details summary::after {
            content: '+';
            color: var(--accent-color);
            font-size: 1.35rem;
            line-height: 1;
        }
        .student-program-details[open] summary::after { content: '−'; }
        .student-program-details small {
            color: var(--text-light);
            font-weight: 700;
            margin-left: auto;
        }
        .program-card.no-border {
            border: none !important;
            border-radius: 0;
            padding: 4px 18px 12px;
            box-shadow: none;
        }
        .program-card.no-border.invest { border-left: none !important; }
        @media (max-width: 900px) {
            .student-hero-compact { align-items: stretch; flex-direction: column; }
            .student-hero-compact .student-hero-actions { display: grid; grid-template-columns: 1fr; width: 100%; }
            .student-hero-compact .student-hero-actions .btn { width: 100%; }
            .student-home-grid { grid-template-columns: 1fr; }
            .student-task-preview-list { grid-template-columns: 1fr; }
        }
        @media (max-width: 600px) {
            .student-dashboard-v25 { max-width: 100%; }
            .student-hero-compact { padding: 18px 16px; }
            .student-home-card { min-height: auto; padding: 18px 16px; }
            .student-task-alert-head { align-items: stretch; flex-direction: column; }
            .student-task-alert-head .btn { width: 100%; }
            .dashboard-formation-card.compact { padding: 16px; }
            .student-program-details summary { padding: 14px; align-items: flex-start; }
            .student-program-details summary span { overflow-wrap: anywhere; }
            .student-program-details small { white-space: nowrap; }
            .program-card.no-border { padding: 2px 14px 10px; }
            .program-step { gap: 10px; }
        }
        /* ===== fin V25 ===== */

/* --- bloc CSS extrait --- */

/* ===== V26 — Espace élève premium ===== */
.v26-page,.student-dashboard-v26{max-width:1120px;margin:0 auto}.v26-page-head{margin-bottom:20px}.v26-page-head h1{font-size:2rem;margin:0 0 8px;color:#111827}.v26-page-head p{color:var(--text-light);font-size:1rem}.v26-hero{display:flex;justify-content:space-between;align-items:center;gap:18px;background:linear-gradient(135deg,#111827,#274060);color:#fff;border-radius:22px;padding:26px;margin-bottom:20px;box-shadow:0 18px 42px rgba(17,24,39,.18)}.v26-hero h1{font-size:2rem;margin:4px 0 6px}.v26-hero p{color:rgba(255,255,255,.78);margin:0}.v26-eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;color:#bfdbfe;font-weight:800}.v26-hero-actions{display:flex;gap:10px;flex-wrap:wrap}.v26-home-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.v26-panel{background:#fff;border:1px solid var(--border-color);border-radius:18px;padding:18px;box-shadow:var(--shadow-premium-lg);min-width:0}.v26-panel.important{border-left:4px solid var(--accent-color)}.v26-panel h2{font-size:1rem;margin:0 0 8px;color:#111827}.v26-panel h3{font-size:1.1rem;margin:0 0 6px;color:#111827}.v26-panel p{color:var(--text-light);margin:0 0 12px;overflow-wrap:anywhere}.v26-panel-icon{width:38px;height:38px;border-radius:12px;background:#eef6ff;display:flex;align-items:center;justify-content:center;margin-bottom:10px}.v26-big-number{font-size:2rem;font-weight:900;line-height:1;color:#111827;margin:6px 0}.v26-now{border-left:4px solid var(--warning-color)}.v26-now h2{margin:0}.v26-mini-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}.v26-mini-item{background:#f8fafc;border:1px solid #e7edf4;border-radius:12px;padding:12px}.v26-mini-item b,.v26-mini-item span{display:block;overflow-wrap:anywhere}.v26-mini-item span{font-size:.86rem;color:var(--text-light);margin-top:4px}.v26-empty{padding:18px;border:1px dashed #d8dee8;border-radius:14px;background:#f8fafc;color:var(--text-light);text-align:center}.v26-empty-large{padding:34px}.v26-formation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.v26-training-card{background:#fff;border:1px solid var(--border-color);border-radius:20px;padding:22px;box-shadow:var(--shadow-premium-lg);cursor:pointer;transition:.18s ease;min-width:0}.v26-training-card:hover{transform:translateY(-2px);box-shadow:0 20px 42px rgba(0,0,0,.10)}.v26-training-card.business{border-left:5px solid var(--accent-color)}.v26-training-card.invest{border-left:5px solid var(--success-color)}.v26-training-top,.v26-training-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px}.v26-training-icon{width:50px;height:50px;border-radius:16px;background:#eef6ff;display:flex;align-items:center;justify-content:center;font-size:1.6rem}.v26-training-top span{background:#f1f5f9;border-radius:999px;padding:6px 10px;font-weight:800;color:#475569;font-size:.8rem}.v26-training-card h2{font-size:1.35rem;margin:18px 0 10px;color:#111827;overflow-wrap:anywhere}.v26-training-card p{color:var(--text-light);min-height:48px}.v26-progress{height:8px;background:#edf2f7;border-radius:99px;overflow:hidden;margin:16px 0}.v26-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--accent-color),#7ed321)}.v26-training-help{margin-top:18px}.v26-help-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.v26-help-grid div{background:#f8fafc;border:1px solid #e7edf4;border-radius:12px;padding:12px}.v26-help-grid b,.v26-help-grid span{display:block}.v26-help-grid span{color:var(--text-light);font-size:.9rem}.v26-message-layout{display:grid;grid-template-columns:320px minmax(0,1fr);gap:16px}.v26-message-list{background:#fff;border:1px solid var(--border-color);border-radius:18px;padding:12px;box-shadow:var(--shadow-premium);max-height:72vh;overflow:auto}.v26-thread{width:100%;text-align:left;border:1px solid #e5e7eb;background:#fff;border-radius:14px;padding:12px;margin-bottom:10px;cursor:pointer}.v26-thread.active{border-color:var(--accent-color);background:#eef6ff}.v26-thread b,.v26-thread span,.v26-thread em{display:block;overflow-wrap:anywhere}.v26-thread span{color:var(--text-light);font-size:.86rem;margin-top:4px}.v26-thread em{display:inline-block;margin-top:8px;background:#dcfce7;color:#166534;border-radius:999px;padding:3px 8px;font-size:.75rem;font-weight:800}.v26-chat-card{background:#fff;border:1px solid var(--border-color);border-radius:18px;box-shadow:var(--shadow-premium-lg);overflow:hidden;display:flex;flex-direction:column;min-height:560px}.v26-chat-head{padding:18px;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;gap:12px}.v26-chat-head h2{margin:0;color:#111827}.v26-chat-head p{margin:4px 0 0;color:var(--text-light)}.v26-chat-body{padding:18px;display:flex;flex-direction:column;gap:10px;flex:1;overflow:auto;background:#f8fafc}.v26-bubble{max-width:78%;background:#fff;border:1px solid #e5e7eb;border-radius:16px;padding:12px;align-self:flex-end;box-shadow:0 6px 16px rgba(0,0,0,.04)}.v26-bubble.coach{align-self:flex-start;background:#eef6ff;border-color:#cfe4ff}.v26-bubble b{font-size:.78rem;color:#64748b}.v26-bubble p{margin:4px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.v26-composer{padding:14px;border-top:1px solid var(--border-color);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.v26-composer textarea{min-height:80px;border:1px solid var(--border-color);border-radius:12px;padding:12px;font-family:inherit;font-size:1rem;resize:vertical}.v26-resource-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v26-resource{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:14px;box-shadow:var(--shadow-premium)}.v26-resource-icon{width:44px;height:44px;border-radius:14px;background:#eef6ff;display:flex;align-items:center;justify-content:center;font-size:1.3rem}.v26-resource h3{margin:0;color:#111827;overflow-wrap:anywhere}.v26-resource p{margin:4px 0 0;color:var(--text-light);font-size:.9rem}@media(max-width:1100px){.v26-home-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.v26-message-layout{grid-template-columns:1fr}.v26-message-list{max-height:none}.v26-resource-grid{grid-template-columns:1fr}}@media(max-width:760px){.v26-page,.student-dashboard-v26{max-width:100%;padding:0}.v26-hero{display:block;padding:20px 16px;border-radius:18px}.v26-hero h1{font-size:1.55rem}.v26-hero-actions{display:grid;grid-template-columns:1fr;margin-top:14px}.v26-hero-actions .btn{width:100%}.v26-home-grid,.v26-formation-grid,.v26-help-grid,.v26-mini-list{grid-template-columns:1fr}.v26-panel,.v26-training-card{padding:16px}.v26-training-card p{min-height:auto}.v26-message-list{display:flex;overflow-x:auto;gap:10px;padding:10px}.v26-thread{min-width:240px;margin-bottom:0}.v26-chat-card{min-height:540px}.v26-chat-head{display:block}.v26-chat-head .btn{width:100%;margin-top:10px}.v26-bubble{max-width:92%}.v26-composer{grid-template-columns:1fr}.v26-composer textarea{font-size:16px;min-height:110px}.v26-composer .btn{width:100%}.v26-resource{grid-template-columns:auto 1fr}.v26-resource .btn{grid-column:1/-1;width:100%}}
/* ===== fin V26 ===== */

/* --- bloc CSS extrait --- */

/* ===== V27 — UX élève renforcée ===== */
.v27-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 16px}.v27-over-card{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:16px;padding:15px;box-shadow:var(--shadow-premium)}.v27-over-card.warn{border-left-color:var(--error-color)}.v27-over-card span,.v27-over-card small{display:block;color:var(--text-light)}.v27-over-card b{display:block;font-size:1.45rem;color:#111827;margin:4px 0}.v27-home-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.v27-program-section{margin-top:18px}.v27-section-head h2{margin:0 0 6px;color:#111827}.v27-section-head p{margin:0 0 14px;color:var(--text-light)}.v27-program{border:1px solid var(--border-color);border-radius:16px;background:#fff;margin-top:12px;overflow:hidden}.v27-program summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;font-weight:900;color:#111827;list-style:none;background:#fbfcfe}.v27-program summary::-webkit-details-marker{display:none}.v27-program summary small{font-weight:800;color:var(--text-light);white-space:nowrap}.v27-program-body{display:grid;gap:10px;padding:12px}.v27-module{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid #e6edf5;border-radius:14px;padding:12px;background:#fff}.v27-module.done{background:#f0fdf4}.v27-module.planned{background:#eef6ff}.v27-module-num{width:32px;height:32px;border-radius:10px;background:#eef2ff;color:#1d4ed8;display:flex;align-items:center;justify-content:center;font-weight:900}.v27-module-main b,.v27-module-main span,.v27-module-main em{display:block;overflow-wrap:anywhere}.v27-module-main span{font-size:.9rem;color:var(--text-light);margin-top:2px}.v27-module-main em{font-style:normal;font-size:.78rem;font-weight:800;color:#475569;margin-top:5px}.v27-chat-tip{background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;padding:10px;color:#9a3412}@media(max-width:980px){.v27-overview,.v27-home-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.v27-module{grid-template-columns:auto minmax(0,1fr)}.v27-module .btn{grid-column:1/-1;width:100%}}@media(max-width:700px){.v27-overview,.v27-home-grid{grid-template-columns:1fr}.v27-over-card{padding:14px}.v27-program summary{padding:14px}.v27-program-body{padding:10px}.v27-module{grid-template-columns:1fr;gap:8px}.v27-module-num{width:30px;height:30px}.v27-module .btn{width:100%}}
/* ===== fin V27 ===== */

/* --- bloc CSS extrait --- */

/* ===== V28.1.1 — contexte lisible Mes Messages élève ===== */
.v2811-context-box{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;padding:10px;border:1px solid #dbeafe;background:#f8fbff;border-radius:14px}.v2811-context-box div{background:#fff;border:1px solid #edf2f7;border-radius:10px;padding:8px}.v2811-context-box b,.v2811-context-box span{display:block}.v2811-context-box b{font-size:.74rem;color:#64748b;text-transform:uppercase;letter-spacing:.02em}.v2811-context-box span{font-size:.88rem;color:#0f172a;margin-top:2px;overflow-wrap:anywhere}.v2811-messages-page .v26-chat-head{align-items:flex-start}.v2811-messages-page .v26-thread small{display:block;color:#64748b;margin-top:4px;font-size:.78rem}@media(max-width:900px){.v2811-context-box{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.v2811-context-box{grid-template-columns:1fr}.v2811-messages-page .v26-chat-head{display:block}.v2811-messages-page .v26-chat-head .btn{margin-top:10px;width:100%}}
/* ===== fin V28.1.1 ===== */

/* --- bloc CSS extrait --- */

.v2813-context-box{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;padding:10px;border:1px solid #bfdbfe;background:#f8fbff;border-radius:14px}.v2813-context-box div{background:#fff;border:1px solid #edf2f7;border-radius:10px;padding:8px}.v2813-context-box b,.v2813-context-box span{display:block}.v2813-context-box b{font-size:.74rem;color:#64748b;text-transform:uppercase;letter-spacing:.02em}.v2813-context-box span{font-size:.88rem;color:#0f172a;margin-top:2px;overflow-wrap:anywhere}.v2813-messages-page .v26-chat-head{align-items:flex-start}.v2813-messages-page .v26-thread small{display:block;color:#64748b;margin-top:4px;font-size:.78rem}@media(max-width:900px){.v2813-context-box{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.v2813-context-box{grid-template-columns:1fr}.v2813-messages-page .v26-chat-head{display:block}.v2813-messages-page .v26-chat-head .btn{margin-top:10px;width:100%}}

/* --- bloc CSS extrait --- */

.v2822-dashboard{max-width:1180px;margin:0 auto;padding-bottom:28px}.v2822-hero{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;background:linear-gradient(135deg,#0f172a,#1d4ed8);color:#fff;border-radius:22px;padding:24px;margin-bottom:16px;box-shadow:0 14px 34px rgba(15,23,42,.14)}.v2822-hero h1{margin:4px 0 8px;font-size:30px;line-height:1.1}.v2822-hero p{margin:0;color:rgba(255,255,255,.86);max-width:720px}.v2822-eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:12px;font-weight:800;color:#bfdbfe}.v2822-actions{display:flex;gap:8px;flex-wrap:wrap}.v2822-hero .btn-outline{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.55);color:#fff}.v2822-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:16px}.v2822-kpi{background:#fff;border:1px solid #e5e7eb;border-radius:18px;padding:15px;box-shadow:0 8px 22px rgba(15,23,42,.06)}.v2822-kpi span{display:block;color:#64748b;font-size:13px;font-weight:750}.v2822-kpi b{display:block;color:#0f172a;font-size:25px;margin-top:4px}.v2822-kpi small{display:block;color:#64748b;margin-top:3px}.v2822-kpi.warn{border-color:#fed7aa;background:#fff7ed}.v2822-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:16px;margin-bottom:16px}.v2822-bottom{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.v2822-card{background:#fff;border:1px solid #e5e7eb;border-radius:20px;padding:19px;box-shadow:0 10px 26px rgba(15,23,42,.06)}.v2822-card h2{margin:0 0 10px;color:#0f172a;font-size:21px}.v2822-muted{color:#64748b}.v2822-title{font-weight:900;font-size:18px;margin:8px 0 4px}.v2822-pillrow{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.v2822-pill{display:inline-flex;border-radius:999px;padding:6px 10px;background:#eff6ff;color:#1d4ed8;font-size:13px;font-weight:800}.v2822-pill.green{background:#dcfce7;color:#15803d}.v2822-pill.gray{background:#f1f5f9;color:#475569}.v2822-list{display:flex;flex-direction:column;gap:9px;margin-top:10px}.v2822-item{border:1px solid #e5e7eb;border-radius:14px;background:#f8fafc;padding:11px}.v2822-item b{display:block;color:#0f172a}.v2822-item span{display:block;color:#64748b;font-size:13px;margin-top:3px}.v2822-msg{border-left:4px solid #3b82f6;background:#f8fbff;border-radius:14px;padding:12px}.v2822-empty{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:14px;padding:14px;color:#64748b}.v2822-error{border:1px solid #fecaca;background:#fff1f2;color:#991b1b;border-radius:14px;padding:14px}@media(max-width:980px){.v2822-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v2822-grid,.v2822-bottom{grid-template-columns:1fr}.v2822-hero{flex-direction:column}.v2822-hero h1{font-size:27px}}@media(max-width:560px){.v2822-kpis{grid-template-columns:1fr}.v2822-card{padding:15px}.v2822-hero{padding:19px}.v2822-actions .btn{width:100%}}

/* --- bloc CSS extrait --- */

.v2823-next-card{display:flex;gap:14px;align-items:flex-start;border:1px solid #dbeafe;background:linear-gradient(180deg,#ffffff,#f8fbff);border-radius:18px;padding:15px;cursor:pointer;transition:.18s ease;box-shadow:0 8px 20px rgba(15,23,42,.05);margin-top:8px}.v2823-next-card:hover{transform:translateY(-1px);border-color:#60a5fa;box-shadow:0 12px 26px rgba(37,99,235,.12)}.v2823-datebox{min-width:74px;text-align:center;border-radius:15px;background:#eff6ff;border:1px solid #bfdbfe;padding:10px;color:#1d4ed8;font-weight:900}.v2823-datebox span{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.v2823-datebox b{display:block;font-size:24px;line-height:1}.v2823-next-main{flex:1;min-width:0}.v2823-next-main h3{margin:0 0 5px;font-size:19px;color:#0f172a}.v2823-next-meta{color:#475569;font-weight:700;margin-bottom:8px}.v2823-next-main p{margin:8px 0 0;color:#64748b;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.v2823-next-arrow{align-self:center;color:#2563eb;font-weight:900}.v2823-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.48);z-index:99999;display:flex;align-items:center;justify-content:center;padding:18px}.v2823-modal{width:min(760px,96vw);max-height:88vh;overflow:auto;background:#fff;border-radius:24px;border:1px solid #e5e7eb;box-shadow:0 24px 80px rgba(15,23,42,.28)}.v2823-modal-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:22px;border-bottom:1px solid #e5e7eb}.v2823-modal-head h2{margin:0;color:#0f172a}.v2823-modal-close{border:0;background:#f1f5f9;border-radius:12px;padding:8px 12px;font-weight:900;cursor:pointer}.v2823-modal-body{padding:22px}.v2823-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}.v2823-info{border:1px solid #e5e7eb;background:#f8fafc;border-radius:14px;padding:12px}.v2823-info b{display:block;color:#64748b;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.v2823-info span{display:block;margin-top:3px;color:#0f172a;font-weight:700}.v2823-desc{white-space:pre-wrap;line-height:1.55;color:#334155;background:#f8fbff;border:1px solid #dbeafe;border-radius:16px;padding:14px}.v2823-linked-task{margin-top:14px;border:1px solid #bbf7d0;background:#f0fdf4;border-radius:16px;padding:14px;color:#14532d}.v2823-modal-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}@media(max-width:640px){.v2823-next-card{display:block}.v2823-datebox{width:86px;margin-bottom:10px}.v2823-next-arrow{display:none}.v2823-info-grid{grid-template-columns:1fr}.v2823-modal-head{padding:18px}.v2823-modal-body{padding:18px}.v2823-modal-actions .btn{width:100%}}

/* --- bloc CSS extrait --- */

.v2831-program-page{max-width:1180px;margin:0 auto}.v2831-hero{background:linear-gradient(135deg,#0f172a,#1d4ed8);color:#fff;border-radius:22px;padding:24px;margin-bottom:18px;box-shadow:0 18px 45px rgba(30,64,175,.20);display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.v2831-hero h1{margin:4px 0 8px;font-size:30px}.v2831-hero p{margin:0;color:rgba(255,255,255,.84);line-height:1.45}.v2831-eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:12px;font-weight:900;color:#bfdbfe}.v2831-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}.v2831-tab{border:1px solid #dbeafe;background:#fff;color:#1e40af;border-radius:999px;padding:10px 14px;font-weight:900;cursor:pointer}.v2831-tab.active{background:#2563eb;color:#fff;border-color:#2563eb}.v2831-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v2831-card{background:#fff;border:1px solid #e5e7eb;border-radius:18px;padding:16px;box-shadow:0 10px 28px rgba(15,23,42,.06);min-width:0}.v2831-card.wish-plus{border-color:#86efac;background:linear-gradient(180deg,#fff,#f0fdf4)}.v2831-card.wish-minus{border-color:#fecaca;background:linear-gradient(180deg,#fff,#fff7f7)}.v2831-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.v2831-card h3{margin:0;color:#0f172a;font-size:19px;line-height:1.2}.v2831-card p{color:#475569;line-height:1.5;margin:10px 0 0}.v2831-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.v2831-badge{border-radius:999px;padding:5px 8px;font-size:12px;font-weight:900;background:#eef2ff;color:#3730a3}.v2831-badge.green{background:#dcfce7;color:#166534}.v2831-badge.orange{background:#ffedd5;color:#9a3412}.v2831-badge.gray{background:#f1f5f9;color:#475569}.v2831-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.v2831-wish{display:flex;gap:6px}.v2831-wish button{border:1px solid #d1d5db;background:#fff;border-radius:11px;min-width:38px;height:36px;font-size:18px;font-weight:900;cursor:pointer}.v2831-wish button.plus.active{background:#dcfce7;border-color:#22c55e;color:#166534}.v2831-wish button.minus.active{background:#fee2e2;border-color:#ef4444;color:#991b1b}.v2831-side{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}.v2831-kpi{background:#fff;border:1px solid #e5e7eb;border-radius:16px;padding:13px;box-shadow:0 8px 20px rgba(15,23,42,.04)}.v2831-kpi span{display:block;color:#64748b;font-size:12px;font-weight:900;text-transform:uppercase}.v2831-kpi b{display:block;font-size:24px;color:#0f172a;margin-top:4px}.v2831-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.52);z-index:99999;display:flex;align-items:center;justify-content:center;padding:18px}.v2831-modal{width:min(860px,96vw);max-height:88vh;overflow:auto;background:#fff;border-radius:24px;border:1px solid #e5e7eb;box-shadow:0 24px 80px rgba(15,23,42,.30)}.v2831-modal-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;padding:22px;border-bottom:1px solid #e5e7eb}.v2831-modal-head h2{margin:0;color:#0f172a}.v2831-close{border:0;background:#f1f5f9;border-radius:12px;padding:9px 12px;font-weight:900;cursor:pointer}.v2831-modal-body{padding:22px}.v2831-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.v2831-detail{background:#f8fafc;border:1px solid #e5e7eb;border-radius:16px;padding:14px}.v2831-detail h4{margin:0 0 10px;color:#0f172a}.v2831-detail ul{margin:0;padding-left:18px;color:#334155;line-height:1.55}.v2831-toast{position:fixed;right:18px;bottom:18px;z-index:100000;background:#0f172a;color:#fff;padding:12px 14px;border-radius:14px;box-shadow:0 18px 45px rgba(15,23,42,.28);max-width:360px}.v2831-note{background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;border-radius:14px;padding:12px;margin:12px 0}.v2831-muted{color:#64748b;font-size:14px}@media(max-width:900px){.v2831-grid{grid-template-columns:1fr}.v2831-side{grid-template-columns:1fr 1fr}.v2831-hero{display:block}.v2831-hero .btn{margin-top:12px}}@media(max-width:640px){.v2831-hero{border-radius:18px;padding:18px}.v2831-hero h1{font-size:24px}.v2831-side{grid-template-columns:1fr}.v2831-card-head{display:block}.v2831-wish{margin-top:10px}.v2831-actions .btn{width:100%}.v2831-detail-grid{grid-template-columns:1fr}.v2831-modal-head{padding:18px}.v2831-modal-body{padding:18px}}


/* PATCH V28.3.1 — Admin messages : filtres + scroll complet */
.admin-lock-hint{display:none!important;}
.v19-message-controls{display:grid;grid-template-columns:1fr;gap:8px;margin-top:8px;}
.v19-message-controls select{width:100%;border:1px solid var(--border-color);border-radius:10px;padding:9px 10px;background:#fff;font-family:inherit;font-size:.9rem;}
.v19-inbox-main{min-height:0!important;}
.v19-inbox-content{overflow:hidden!important;min-height:0!important;}
.v19-thread-list,.v19-detail{display:flex!important;flex-direction:column!important;min-height:0!important;overflow:hidden!important;}
.v19-thread-list>.v19-panel-body,.v19-detail>.v19-panel-body{overflow-y:auto!important;overflow-x:hidden!important;min-height:0!important;align-content:start!important;display:block!important;}
.v19-box{margin-bottom:12px;}
.v19-chat{display:grid;gap:8px;}
@media (max-width:900px){.v19-inbox-content{overflow:visible!important}.v19-thread-list,.v19-detail{overflow:visible!important}.v19-thread-list>.v19-panel-body,.v19-detail>.v19-panel-body{overflow:visible!important}}


/* ============================================================
   V29 UX — Programme coaching premium + souhaits admin
   ============================================================ */
.v29-program-page{max-width:1320px;margin:0 auto;padding:0 4px 40px}.v29-hero{display:flex;justify-content:space-between;gap:22px;align-items:flex-start;background:linear-gradient(135deg,#101827 0%,#1d4ed8 100%);color:#fff;border-radius:24px;padding:30px 34px;margin-bottom:18px;box-shadow:0 22px 55px rgba(29,78,216,.22);overflow:hidden;position:relative}.v29-hero:after{content:"";position:absolute;right:-80px;top:-80px;width:260px;height:260px;border-radius:50%;background:rgba(255,255,255,.13)}.v29-hero h1{font-size:2.05rem;line-height:1.12;margin:10px 0 12px;color:#fff}.v29-hero p{font-size:1.02rem;line-height:1.55;color:rgba(255,255,255,.86);max-width:900px;margin:0}.v29-hero .btn{position:relative;z-index:1;color:#fff;border-color:rgba(255,255,255,.35)}.v29-eyebrow{text-transform:uppercase;letter-spacing:.13em;font-weight:900;font-size:.76rem;color:#bfdbfe}.v29-progress-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}.v29-progress-card{background:#fff;border:1px solid var(--border-color);border-radius:18px;padding:16px 18px;box-shadow:0 12px 30px rgba(15,23,42,.06)}.v29-progress-card span{display:block;color:#64748b;text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;font-weight:900}.v29-progress-card b{display:block;color:#0f172a;font-size:1.4rem;margin:4px 0}.v29-progress-card small{color:#64748b}.v29-progress-card i{display:block;height:8px;background:#edf2f7;border-radius:999px;overflow:hidden;margin-top:12px}.v29-progress-card i em{display:block;height:100%;background:linear-gradient(90deg,#60a5fa,#2563eb);border-radius:999px}.v29-progress-card.highlight{border-color:#bfdbfe;background:#f8fbff}.v29-tabs{display:flex;flex-wrap:wrap;gap:10px;margin:4px 0 16px}.v29-tab{border:1px solid #dbe3ef;background:#fff;color:#1e293b;border-radius:999px;padding:10px 16px;font-weight:900;cursor:pointer}.v29-tab.active{background:#2563eb;border-color:#2563eb;color:#fff;box-shadow:0 10px 22px rgba(37,99,235,.2)}.v29-note{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;border-radius:14px;padding:13px 16px;margin-bottom:16px}.v29-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v29-coach-card{background:#fff;border:1px solid #e4eaf3;border-radius:20px;padding:18px;box-shadow:0 12px 28px rgba(15,23,42,.055);transition:.18s ease;overflow:hidden}.v29-coach-card:hover{transform:translateY(-1px);box-shadow:0 18px 38px rgba(15,23,42,.08)}.v29-coach-card.selected{border-color:#2563eb;background:linear-gradient(180deg,#f8fbff,#fff);box-shadow:inset 4px 0 0 #2563eb,0 16px 34px rgba(37,99,235,.12)}.v29-coach-card.minus{opacity:.78}.v29-card-top{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:start}.v29-index{width:38px;height:38px;border-radius:12px;background:#eef2ff;color:#1d4ed8;font-weight:950;display:flex;align-items:center;justify-content:center}.v29-card-title h3{font-size:1.15rem;margin:0 0 8px;color:#0f172a}.v29-badges{display:flex;gap:6px;flex-wrap:wrap}.v29-badges span{display:inline-flex;border-radius:999px;background:#eef2ff;color:#3730a3;padding:5px 9px;font-size:.73rem;font-weight:900}.v29-badges .green{background:#dcfce7;color:#166534}.v29-badges .orange{background:#ffedd5;color:#9a3412}.v29-badges .blue{background:#dbeafe;color:#1d4ed8}.v29-stepper{display:flex;gap:7px}.v29-stepper button{width:40px;height:40px;border-radius:12px;border:1px solid #dbe3ef;background:#fff;font-size:1.25rem;font-weight:950;cursor:pointer}.v29-stepper .plus{color:#0f172a}.v29-stepper .plus.on{background:#2563eb;color:#fff;border-color:#2563eb}.v29-stepper .minus{color:#dc2626}.v29-card-objectif{margin-top:14px;padding:14px;border-radius:16px;background:#f8fafc;border:1px solid #edf2f7}.v29-card-objectif b,.v29-preview b{display:block;text-transform:uppercase;letter-spacing:.04em;font-size:.74rem;color:#64748b;margin-bottom:5px}.v29-card-objectif p{margin:0;color:#334155;line-height:1.48}.v29-preview{margin-top:12px}.v29-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}.v29-list li{position:relative;padding-left:22px;color:#334155;line-height:1.42}.v29-list li:before{content:"✓";position:absolute;left:0;top:0;color:#2563eb;font-weight:950}.v29-list.rich li{background:#f8fafc;border:1px solid #eef2f7;border-radius:12px;padding:11px 12px 11px 34px}.v29-list.rich li:before{left:12px;top:11px}.v29-list li b{display:block;color:#0f172a;margin-bottom:2px}.v29-list li span{display:block;color:#475569}.v29-list.compact li:nth-child(n+4){display:none}.v29-checks{list-style:none;padding:0;margin:0;display:grid;gap:8px}.v29-checks li{background:#ecfdf5;border:1px solid #bbf7d0;border-radius:12px;padding:10px 12px;color:#14532d;font-weight:750}.v29-checks li:before{content:"✅ ";}.v29-card-detail{display:none;grid-template-columns:1fr;gap:12px;margin-top:14px;padding-top:14px;border-top:1px dashed #dbe3ef}.v29-card-detail.open{display:grid}.v29-card-detail h4{margin:0 0 10px;color:#0f172a}.v29-card-actions{display:flex;gap:9px;justify-content:space-between;align-items:center;margin-top:14px}.v29-empty{background:#fff;border:1px dashed #cbd5e1;border-radius:16px;padding:24px;color:#64748b}.v29-modal-backdrop{position:fixed;inset:0;z-index:4000;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;padding:20px}.v29-modal{width:min(940px,96vw);max-height:92vh;overflow:auto;background:#fff;border-radius:22px;box-shadow:0 30px 80px rgba(0,0,0,.28)}.v29-modal-head{display:flex;justify-content:space-between;gap:16px;padding:20px 22px;border-bottom:1px solid #e5e7eb;position:sticky;top:0;background:#fff;z-index:1}.v29-modal-head h2{margin:0;color:#0f172a}.v29-modal-head p{margin:4px 0 0;color:#64748b}.v29-close{border:1px solid #e5e7eb;background:#fff;border-radius:12px;padding:8px 12px;cursor:pointer}.v29-modal-body{padding:20px 22px}.v29-modal-body section{margin-bottom:18px}.v29-modal-body h3{margin:0 0 10px;color:#0f172a}.v29-objectif{background:#eff6ff;border:1px solid #bfdbfe;border-radius:16px;padding:16px;color:#1e3a8a}.v29-objectif b{display:block;text-transform:uppercase;letter-spacing:.04em;font-size:.74rem;margin-bottom:6px}.v29-objectif p{margin:0;line-height:1.5}.v29-modal-actions{display:flex;gap:10px;flex-wrap:wrap;padding-top:10px;border-top:1px solid #e5e7eb}.v29-admin-wishes-summary .text-muted{margin-bottom:10px}.v29-admin-tags{display:flex;gap:8px;flex-wrap:wrap}.v29-admin-tags span{background:#dbeafe;color:#1d4ed8;border-radius:999px;padding:8px 11px;font-weight:900;font-size:.82rem}.v29-admin-wish-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.v29-admin-wish{border:1px solid #e5e7eb;border-radius:14px;padding:12px;background:#fff;display:grid;grid-template-columns:auto 1fr;gap:6px 9px;align-items:start}.v29-admin-wish span{grid-row:1 / span 2}.v29-admin-wish b{color:#0f172a}.v29-admin-wish small{grid-column:2;color:#64748b;line-height:1.35}.v29-admin-wish.on{border-color:#93c5fd;background:#eff6ff;box-shadow:inset 3px 0 0 #2563eb}@media(max-width:1050px){.v29-grid,.v29-progress-grid{grid-template-columns:1fr}.v29-hero{flex-direction:column}.v29-admin-wish-grid{grid-template-columns:1fr}}@media(max-width:760px){.v29-program-page{padding-bottom:24px}.v29-hero{border-radius:18px;padding:22px}.v29-hero h1{font-size:1.55rem}.v29-card-top{grid-template-columns:auto 1fr}.v29-stepper{grid-column:1/-1;justify-content:flex-end}.v29-card-actions{flex-direction:column}.v29-card-actions .btn{width:100%}.v29-tabs .v29-tab{flex:1 1 45%}.v29-modal-backdrop{align-items:flex-end;padding:0}.v29-modal{width:100vw;max-height:92vh;border-radius:20px 20px 0 0}}

/* ============================================================
   V29.1 — Tableau de bord élève orienté progression + contenus
   ============================================================ */
.v291-dashboard{max-width:1280px;margin:0 auto;display:grid;gap:18px}.v291-hero{background:linear-gradient(135deg,#0f1c46,#2454d6);color:#fff;border-radius:22px;padding:26px;display:flex;align-items:center;justify-content:space-between;gap:18px;box-shadow:0 18px 45px rgba(37,84,214,.22)}.v291-hero h1{margin:4px 0 8px;font-size:2rem;color:#fff}.v291-hero p{margin:0;opacity:.88;max-width:760px}.v291-eyebrow{text-transform:uppercase;letter-spacing:.08em;font-weight:900;font-size:.78rem;opacity:.78}.v291-focus{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(340px,.9fr);gap:16px}.v291-main-action,.v291-today,.v291-card{background:#fff;border:1px solid var(--border-color);border-radius:18px;box-shadow:0 12px 32px rgba(15,23,42,.065);padding:20px}.v291-main-action span{display:block;font-size:.78rem;text-transform:uppercase;color:#2563eb;font-weight:900;margin-bottom:8px}.v291-main-action h2{font-size:1.55rem;margin:0 0 6px}.v291-main-action p,.v291-muted{color:var(--text-light);margin:0 0 12px}.v291-progress{height:10px;background:#edf2f7;border-radius:999px;overflow:hidden;margin:14px 0 8px}.v291-progress i{display:block;height:100%;background:linear-gradient(90deg,#2563eb,#16a34a);border-radius:999px}.v291-today h3{margin:0 0 12px;font-size:1.1rem}.v291-action-line{width:100%;display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;background:#f8fbff;border:1px solid #e5edf8;border-radius:13px;padding:12px;margin-bottom:8px;text-align:left;cursor:pointer}.v291-action-line:hover{border-color:#3b82f6;background:#eff6ff}.v291-action-line b{font-size:.95rem}.v291-action-line em{font-style:normal;color:#2563eb;font-weight:800;font-size:.82rem}.v291-priority-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.v291-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.v291-card h2{font-size:1.15rem;margin:0 0 12px}.v291-last{background:#f8fbff;border-left:4px solid #3b82f6;border-radius:12px;padding:12px;margin-bottom:12px}.v291-last p{margin:5px 0 0;color:#334155}.v291-task-list{display:grid;gap:8px;margin-bottom:12px}.v291-task-mini{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:10px}.v291-task-mini b{display:block}.v291-task-mini span{color:var(--text-light);font-size:.85rem}.v291-title{display:block;font-size:1rem;margin-bottom:6px}.v291-duo{display:grid;grid-template-columns:1fr;gap:9px}.v291-duo button{border:1px solid #dbeafe;background:#f8fbff;border-radius:13px;padding:12px;text-align:left;cursor:pointer}.v291-duo button:hover{background:#eff6ff;border-color:#60a5fa}.v291-duo b{display:block;color:#0f172a}.v291-duo span{font-size:.85rem;color:#64748b}.v291-empty{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:12px;padding:14px;color:#64748b}.v291-admin-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.v291-admin-stats div{background:#fff;border:1px solid var(--border-color);border-radius:14px;padding:14px;box-shadow:var(--shadow-premium)}.v291-admin-stats span{display:block;color:var(--text-light);font-size:.78rem;text-transform:uppercase;font-weight:900}.v291-admin-stats b{font-size:1.25rem}.v291-resources-page,.v291-admin-content{max-width:1280px;margin:0 auto}.v291-resource-section{background:#fff;border:1px solid var(--border-color);border-radius:18px;padding:18px;margin-bottom:16px;box-shadow:var(--shadow-premium)}.v291-resource-section h2{margin:0 0 12px}.v291-resource-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.v291-resource{border:1px solid #e5e7eb;border-radius:14px;padding:14px;background:#fbfdff}.v291-resource span{display:inline-flex;background:#eef2ff;color:#3730a3;border-radius:999px;padding:4px 8px;font-size:.72rem;font-weight:900}.v291-resource h3{margin:10px 0 6px}.v291-content-layout{display:grid;grid-template-columns:360px minmax(0,1fr);gap:16px}.v291-content-form,.v291-content-table{background:#fff;border:1px solid var(--border-color);border-radius:18px;padding:18px;box-shadow:var(--shadow-premium)}.v291-content-form label{display:block;font-weight:800;font-size:.86rem;margin-bottom:10px}.v291-content-form input,.v291-content-form textarea,.v291-content-form select{width:100%;border:1px solid var(--border-color);border-radius:10px;padding:10px;margin-top:5px;font:inherit}.v291-content-form textarea{min-height:80px}.v291-content-form select[multiple]{min-height:110px}@media(max-width:900px){.v291-hero,.v291-focus,.v291-priority-grid,.v291-grid,.v291-content-layout{grid-template-columns:1fr;display:grid}.v291-hero{align-items:flex-start}.v291-hero .btn{width:100%}.v291-admin-stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.v291-admin-stats{grid-template-columns:1fr}.v291-hero h1{font-size:1.55rem}.v291-main-action,.v291-today,.v291-card{padding:16px}}

/* ============================================================
   V29.2 — Formations, ressources, fil d'actualité
   ============================================================ */
.v292-hero,.v292-form-page .v292-hero,.v292-res-page .v292-hero{background:linear-gradient(135deg,#111827,#243b63);color:#fff;border-radius:22px;padding:26px;box-shadow:0 18px 46px rgba(17,24,39,.18);display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px;overflow:hidden;position:relative}.v292-hero h1{margin:4px 0 8px;color:#fff;font-size:2rem}.v292-hero p{margin:0;color:rgba(255,255,255,.78);max-width:760px}.v292-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.v292-form-card{background:#fff;border:1px solid var(--border-color);border-radius:22px;padding:22px;box-shadow:var(--shadow-premium-lg);min-width:0}.v292-card-icon{font-size:2.1rem;margin-bottom:8px}.v292-card-label{display:inline-flex;border-radius:999px;background:#eef4ff;color:#254fc4;font-weight:800;font-size:.78rem;padding:5px 10px;margin-bottom:12px}.v292-form-card h2{font-size:1.35rem;margin:0 0 8px;color:var(--primary-color)}.v292-form-card p{color:var(--text-light);line-height:1.5;margin-bottom:14px}.v292-progress{height:9px;background:#edf1f6;border-radius:999px;overflow:hidden;margin:12px 0 8px}.v292-progress i{display:block;height:100%;background:linear-gradient(90deg,#4f46e5,#2563eb);border-radius:999px}.v292-meta{display:flex;justify-content:space-between;color:var(--text-light);font-size:.84rem;margin-bottom:14px}.v292-card-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}.v292-tip{display:flex;gap:10px;align-items:flex-start;background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:16px;padding:14px 16px;margin-top:16px;box-shadow:var(--shadow-premium)}.v292-tip span{color:var(--text-light);line-height:1.45}.v292-read-progress{display:grid;grid-template-columns:auto auto 1fr auto;gap:10px;align-items:center;background:#fff;border:1px solid var(--border-color);border-radius:14px;padding:11px 12px;margin-top:12px;box-shadow:var(--shadow-premium)}.v292-read-progress span{font-weight:800;color:var(--text-light);font-size:.84rem}.v292-read-progress b{color:var(--primary-color)}.v292-read-progress i{height:8px;background:#edf1f6;border-radius:999px;overflow:hidden;display:block}.v292-read-progress em{display:block;height:100%;background:var(--accent-color);border-radius:999px}.v292-res-section{background:#fff;border:1px solid var(--border-color);border-radius:20px;padding:18px;margin:14px 0;box-shadow:var(--shadow-premium)}.v292-res-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.v292-res-head h2{margin:0;font-size:1.2rem}.v292-res-head span{color:var(--text-light);font-weight:800;font-size:.85rem}.v292-res-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}.v292-resource-card{border:1px solid #e8edf4;border-radius:16px;padding:15px;background:#fbfdff;display:flex;flex-direction:column;justify-content:space-between;gap:12px;min-height:160px}.v292-resource-type{display:inline-flex;align-self:flex-start;background:#eef2ff;color:#3730a3;border-radius:999px;padding:4px 8px;font-size:.72rem;font-weight:900;margin-bottom:8px}.v292-resource-card h3{font-size:1rem;margin:0 0 6px;color:var(--primary-color)}.v292-resource-card p{font-size:.9rem;color:var(--text-light);line-height:1.45;margin:0}.v292-empty{border:1px dashed var(--border-color);border-radius:14px;padding:16px;color:var(--text-light);background:#f8fafc}.v292-feed{background:#fff;border:1px solid var(--border-color);border-radius:20px;padding:18px;margin:16px 0;box-shadow:var(--shadow-premium-lg)}.v292-feed-head{display:flex;justify-content:space-between;align-items:end;gap:10px;margin-bottom:12px}.v292-feed-head h2{font-size:1.2rem;margin:0;color:var(--primary-color)}.v292-feed-head span{color:var(--text-light);font-size:.88rem}.v292-feed-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}.v292-feed-list button{border:1px solid #e7eaf0;border-radius:14px;background:#fbfdff;padding:12px;display:grid;grid-template-columns:auto 1fr;gap:5px 10px;text-align:left;cursor:pointer}.v292-feed-list button:hover{border-color:var(--accent-color);background:#f5f9ff}.v292-feed-list span{grid-row:1/3;font-size:1.3rem}.v292-feed-list b{color:var(--primary-color)}.v292-feed-list em{font-style:normal;color:var(--text-light);font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v292-res-page .v29-tabs{margin-bottom:12px}@media(max-width:800px){.v292-hero{flex-direction:column;padding:20px}.v292-hero h1{font-size:1.55rem}.v292-form-grid{grid-template-columns:1fr}.v292-card-actions{grid-template-columns:1fr}.v292-read-progress{grid-template-columns:1fr}.v292-feed-head{align-items:flex-start;flex-direction:column}.v292-feed-list{grid-template-columns:1fr}}

/* ============================================================
   V29.3 — Progression admin + ressources fiables
   Patch additif : aucun changement de données Supabase.
   ============================================================ */
.v293-progress-page{max-width:1480px;margin:0 auto;width:100%;}
.v293-progress-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:16px;align-items:start;}
.v293-panel{background:#fff;border:1px solid var(--border-color);border-radius:18px;box-shadow:var(--shadow-premium);padding:18px;margin-bottom:16px;}
.v293-panel h2{font-size:1.05rem;margin:0 0 12px;color:var(--primary-color);display:flex;align-items:center;gap:8px;}
.v293-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0 16px;}
.v293-kpi{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:14px 15px;border-left:4px solid var(--accent-color);box-shadow:var(--shadow-premium);}
.v293-kpi b{display:block;font-size:1.35rem;line-height:1.1;color:var(--primary-color);}
.v293-kpi span{display:block;font-size:.78rem;color:var(--text-light);font-weight:700;margin-top:5px;}
.v293-line{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;border:1px solid var(--border-color);border-radius:14px;padding:12px 14px;margin-bottom:10px;background:#fff;}
.v293-line b{display:block;color:var(--primary-color);font-size:.93rem;}
.v293-line small{display:block;color:var(--text-light);margin-top:3px;line-height:1.35;}
.v293-pill{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 9px;font-size:.75rem;font-weight:800;background:#eef3ff;color:#2457c5;white-space:nowrap;}
.v293-pill.green{background:#eaf8ef;color:#1f7a3a;}.v293-pill.orange{background:#fff3d8;color:#a14f00;}.v293-pill.gray{background:#f1f3f5;color:#59677c;}.v293-pill.red{background:#ffe5e5;color:#a61b1b;}
.v293-progress-bar{height:9px;border-radius:999px;background:#eef0f4;overflow:hidden;margin:8px 0 3px;}
.v293-progress-bar i{display:block;height:100%;border-radius:999px;background:var(--accent-color);}
.v293-split{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.v293-empty{background:#f8fafc;border:1px dashed var(--border-color);border-radius:14px;padding:14px;color:var(--text-light);font-size:.9rem;}
.v293-admin-content-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;}
.v293-admin-content-stats .v293-kpi{margin:0;}
.v293-resource-card.opened{border-color:#bfe3ce;background:#fbfffd;}
.v292-resource-card.opened{border-color:#bfe3ce;background:#fbfffd;}
.v293-admin-hint{background:#f8fbff;border:1px solid #cfe3ff;border-radius:14px;padding:12px 14px;color:#24507a;font-size:.9rem;line-height:1.45;margin-bottom:14px;}
@media(max-width:980px){.v293-progress-grid,.v293-split{grid-template-columns:1fr}.v293-kpi-grid,.v293-admin-content-stats{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:560px){.v293-kpi-grid,.v293-admin-content-stats{grid-template-columns:1fr}.v293-line{flex-direction:column;}}



/* ============================================================
   V29.4.1 — Centre coach admin
   CSS scopé uniquement .v294
   ============================================================ */
.v294-page{max-width:1480px;margin:0 auto;width:100%;}
.v294-hero{background:linear-gradient(135deg,#101c3f,#2456d8);color:#fff;border-radius:22px;padding:26px;display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:18px;box-shadow:0 18px 42px rgba(31,79,190,.22);}
.v294-hero h1{font-size:2rem;line-height:1.1;margin:6px 0;color:#fff;}
.v294-hero p{max-width:780px;color:rgba(255,255,255,.84);margin:0;}
.v294-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;}
.v294-kpis>div{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:17px 18px;box-shadow:var(--shadow-premium);border-left:4px solid var(--accent-color);}
.v294-kpis b{display:block;font-size:1.7rem;line-height:1;margin-bottom:8px;color:var(--primary-color);}
.v294-kpis span{font-size:.86rem;color:var(--text-light);font-weight:700;}
.v294-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,430px);gap:16px;align-items:start;}
.v294-side{display:grid;gap:16px;}
.v294-panel{background:#fff;border:1px solid var(--border-color);border-radius:18px;box-shadow:var(--shadow-premium-lg);overflow:hidden;}
.v294-panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 17px;background:#f8fafc;border-bottom:1px solid var(--border-color);}
.v294-panel-head h2{font-size:1.05rem;margin:0;color:var(--primary-color);}
.v294-panel-head span{font-size:.82rem;color:var(--text-light);font-weight:800;}
.v294-list{padding:10px;}
.v294-student-row{display:grid;grid-template-columns:auto minmax(0,1fr) 74px auto;gap:12px;align-items:center;padding:12px;border:1px solid #edf0f5;border-radius:15px;background:#fff;margin-bottom:10px;}
.v294-student-row:hover{border-color:#bfdbfe;background:#f8fbff;}
.v294-avatar{width:44px;height:44px;border-radius:14px;background:var(--accent-color);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:900;}
.v294-student-main{min-width:0;}
.v294-student-main b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--primary-color);}
.v294-student-main small{display:block;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.v294-chipline{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px;}
.v294-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 9px;font-size:.75rem;font-weight:900;background:#edf2ff;color:#2754c5;white-space:nowrap;}
.v294-badge.danger{background:#fee2e2;color:#991b1b;}
.v294-badge.warn{background:#ffedd5;color:#9a3412;}
.v294-badge.ok,.v294-badge.green{background:#dcfce7;color:#166534;}
.v294-badge.gray{background:#f1f5f9;color:#475569;}
.v294-score{text-align:center;background:#f8fafc;border:1px solid var(--border-color);border-radius:12px;padding:8px;}
.v294-score b{display:block;font-size:1.1rem;color:var(--primary-color);}
.v294-score small{font-size:.68rem;text-transform:uppercase;font-weight:900;color:var(--text-light);}
.v294-line{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:13px 16px;border-bottom:1px solid #edf0f5;}
.v294-line:last-child{border-bottom:none;}
.v294-line b{display:block;color:var(--primary-color);line-height:1.25;}
.v294-line small{display:block;color:var(--text-light);font-size:.8rem;margin-top:3px;}
.v294-empty{padding:18px;color:var(--text-light);background:#f8fafc;border:1px dashed var(--border-color);border-radius:14px;margin:12px;}
@media(max-width:1100px){.v294-grid{grid-template-columns:1fr}.v294-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}.v294-hero{align-items:flex-start;flex-direction:column;}}
@media(max-width:760px){.v294-hero{padding:20px;border-radius:18px}.v294-hero h1{font-size:1.55rem}.v294-kpis{grid-template-columns:1fr}.v294-student-row{grid-template-columns:auto minmax(0,1fr);}.v294-student-row .btn,.v294-score{grid-column:1/-1;width:100%;}.v294-line{flex-direction:column;align-items:flex-start;}}



/* ============================================================
   V29.4.2 — Dossier élève : Activité 360°
   ============================================================ */
.v2942-page{max-width:1280px;margin:0 auto}.v2942-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 16px}.v2942-kpis div{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:16px;box-shadow:var(--shadow-premium)}.v2942-kpis b{display:block;font-size:1.55rem;color:var(--primary-color);line-height:1}.v2942-kpis span{display:block;margin-top:6px;color:var(--text-light);font-size:.85rem}.v2942-grid{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:16px;align-items:start}.v2942-panel{background:#fff;border:1px solid var(--border-color);border-radius:18px;padding:18px;box-shadow:0 8px 24px rgba(0,0,0,.055)}.v2942-panel h2{font-size:1.05rem;margin:0 0 14px;color:var(--primary-color)}.v2942-line{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;padding:13px 0;border-bottom:1px solid var(--border-color)}.v2942-line:last-child{border-bottom:none}.v2942-icon{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:#f3f6fb;font-size:1.15rem}.v2942-line-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.v2942-line-head b{font-size:.95rem;color:var(--primary-color);line-height:1.25}.v2942-line-head span{border-radius:999px;background:#f1f5f9;color:#475569;padding:4px 8px;font-size:.74rem;font-weight:800;white-space:nowrap}.v2942-line small{display:block;color:var(--text-light);font-size:.78rem;margin-top:2px}.v2942-line p{margin:7px 0 0;color:var(--text-color);font-size:.88rem;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}.v2942-line.danger .v2942-icon{background:#fee2e2}.v2942-line.warn .v2942-icon{background:#fff1d6}.v2942-line.ok .v2942-icon{background:#dcfce7}.v2942-line.info .v2942-icon{background:#eaf3ff}.v2942-line.gray .v2942-icon{background:#f1f3f5}@media(max-width:900px){.v2942-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v2942-grid{grid-template-columns:1fr}}@media(max-width:520px){.v2942-kpis{grid-template-columns:1fr}.v2942-line-head{flex-direction:column}.v2942-line{grid-template-columns:36px minmax(0,1fr)}.v2942-icon{width:36px;height:36px}}

/* ============================================================
   V29.4.3 — Dashboard élève : prochaine action intelligente
   CSS isolé sur les classes v2943.
   ============================================================ */
.v2943-main-action{border-left:5px solid var(--accent-color);position:relative;overflow:hidden}.v2943-main-action:after{content:'';position:absolute;right:-55px;top:-55px;width:160px;height:160px;border-radius:999px;background:rgba(74,144,226,.10);pointer-events:none}.v2943-main-action h2{max-width:720px}.v2943-main-action .btn{margin-top:14px}.v2943-today{position:relative}.v2943-today-title{display:inline-flex;align-items:center;gap:6px;background:#eef4ff;color:#2457c5;border-radius:999px;padding:5px 10px;font-size:.78rem;font-weight:900;margin-bottom:10px}.v2943-control-strip{background:#fff;border:1px solid var(--border-color);border-radius:18px;box-shadow:var(--shadow-premium-lg);padding:18px;margin:16px 0;display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.35fr);gap:18px;align-items:center}.v2943-control-strip h2{font-size:1.15rem;margin:0 0 6px;color:var(--primary-color)}.v2943-control-strip p{margin:0;color:var(--text-light);line-height:1.45}.v2943-mini-stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.v2943-mini-stats button{border:1px solid var(--border-color);background:#f8fafc;border-radius:14px;padding:12px 8px;cursor:pointer;text-align:center;transition:.15s ease;font-family:inherit}.v2943-mini-stats button:hover{background:#eef4ff;border-color:var(--accent-color);transform:translateY(-1px)}.v2943-mini-stats b{display:block;font-size:1.15rem;color:var(--primary-color);line-height:1}.v2943-mini-stats span{display:block;margin-top:5px;color:var(--text-light);font-size:.75rem;font-weight:800;line-height:1.15}@media(max-width:900px){.v2943-control-strip{grid-template-columns:1fr}.v2943-mini-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.v2943-mini-stats{grid-template-columns:1fr}.v2943-main-action .btn{width:100%}}

/* V29.4.4 — Admin clarté / organisation */
.v2944-page{max-width:1480px;margin:0 auto;width:100%;}
.v2944-home-hero{background:linear-gradient(135deg,#111827,#1d4ed8);color:#fff;border-radius:22px;padding:28px 30px;margin-bottom:18px;display:flex;justify-content:space-between;gap:20px;align-items:flex-start;box-shadow:0 18px 42px rgba(29,78,216,.18)}
.v2944-home-hero h1{margin:6px 0 8px;font-size:2rem;color:#fff}.v2944-home-hero p{margin:0;color:rgba(255,255,255,.82);max-width:880px;line-height:1.55}.v2944-home-hero .btn-outline{border-color:rgba(255,255,255,.45);color:#fff}.v2944-guide-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}.v2944-guide-card,.v2944-team-card,.v2944-note,.v2944-acc,.v2944-commission-intro{background:#fff;border:1px solid var(--border-color);border-radius:18px;box-shadow:var(--shadow-premium-lg)}
.v2944-guide-card{display:grid;grid-template-columns:auto 1fr;gap:14px;padding:18px}.v2944-guide-icon{width:44px;height:44px;border-radius:14px;background:#eff6ff;color:#1d4ed8;display:flex;align-items:center;justify-content:center;font-size:1.35rem;font-weight:900}.v2944-guide-card h2,.v2944-team-card h2{font-size:1.08rem;margin:0 0 8px;color:var(--primary-color)}.v2944-guide-card p,.v2944-team-card p,.v2944-note p{color:var(--text-light);font-size:.92rem;line-height:1.5;margin:0 0 8px}.v2944-guide-card b{color:var(--primary-color)}.v2944-note{padding:18px;margin-top:16px}.v2944-note h2{font-size:1.05rem;margin:0 0 8px}.v2944-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.v2944-kpi{background:#fff;border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:16px;padding:16px 18px;box-shadow:var(--shadow-premium)}.v2944-kpi b{display:block;font-size:1.45rem;line-height:1;margin-bottom:6px}.v2944-kpi span{font-size:.84rem;color:var(--text-light);font-weight:700}.v2944-kpi.warn{border-left-color:var(--warning-color)}.v2944-kpi.danger{border-left-color:var(--error-color)}.v2944-accordion-wrap{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.v2944-acc{overflow:hidden}.v2944-acc summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;background:#fff;font-weight:900}.v2944-acc summary::-webkit-details-marker{display:none}.v2944-acc summary:after{content:'+';width:28px;height:28px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:#f1f5f9;color:#334155}.v2944-acc[open] summary:after{content:'−'}.v2944-acc summary span{margin-left:auto;background:#eef2ff;color:#1d4ed8;border-radius:999px;padding:5px 9px;font-size:.78rem}.v2944-acc.warn summary span{background:#fff7ed;color:#9a3412}.v2944-acc.danger summary span{background:#fee2e2;color:#991b1b}.v2944-acc-body{border-top:1px solid var(--border-color);padding:10px 12px}.v2944-line{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:11px 10px;border-bottom:1px solid #edf0f5}.v2944-line:last-child{border-bottom:none}.v2944-line b{display:block;color:var(--primary-color);font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v2944-line small{display:block;color:var(--text-light);font-size:.8rem;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v2944-line span{background:#f8fafc;border:1px solid var(--border-color);border-radius:999px;padding:5px 8px;font-size:.74rem;font-weight:800;color:#475569}.v2944-empty{padding:18px;text-align:center;color:var(--text-light);border:1px dashed var(--border-color);border-radius:14px;background:#f8fafc}.v2944-team-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.v2944-team-card{padding:18px}.v2944-team-card .v2944-guide-icon{margin-bottom:12px}.v2944-commission-intro{padding:22px;margin-bottom:16px;display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.v2944-commission-intro h1{margin:4px 0 8px;font-size:1.65rem}.v2944-commission-intro p{margin:0;color:var(--text-light);max-width:760px}.v2944-commission-steps{display:grid;gap:8px;min-width:230px}.v2944-commission-steps span{background:#eff6ff;color:#1d4ed8;border-radius:999px;padding:8px 11px;font-weight:800;font-size:.82rem}.admin-menu-separator,.admin-lock-item,#adminSubmenu{display:none!important}@media(max-width:900px){.v2944-home-hero,.v2944-commission-intro{flex-direction:column}.v2944-kpis,.v2944-accordion-wrap{grid-template-columns:1fr}.v2944-line{grid-template-columns:1fr}.v2944-line .btn{width:100%}}

/* ============================================================
   V29.4.5 — Accueil admin guide + menu métier
   Patch isolé : ne touche pas au portail élève.
   ============================================================ */
.v2945-nav-section{
    margin:14px 20px 7px;
    padding-top:12px;
    border-top:1px solid var(--border-color);
    color:var(--gray-600);
    font-size:.72rem;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.08em;
}
.v2945-home{padding-bottom:28px;}
.v2945-welcome{
    background:linear-gradient(135deg,#111827,#1d4ed8);
    color:#fff;
    border-radius:24px;
    padding:30px;
    display:flex;
    justify-content:space-between;
    gap:20px;
    align-items:flex-start;
    box-shadow:0 18px 44px rgba(29,78,216,.18);
    margin-bottom:18px;
}
.v2945-welcome h1{margin:6px 0 8px;font-size:2.05rem;color:#fff;}
.v2945-welcome p{margin:0;max-width:860px;color:rgba(255,255,255,.84);line-height:1.55;}
.v2945-whatsapp{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:44px;
    padding:12px 16px;
    border-radius:999px;
    background:#22c55e;
    color:#fff;
    text-decoration:none;
    font-weight:900;
    white-space:nowrap;
    box-shadow:0 10px 26px rgba(34,197,94,.25);
}
.v2945-whatsapp:hover{background:#16a34a;color:#fff;}
.v2945-video-card{
    display:grid;
    grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);
    gap:16px;
    margin-bottom:18px;
}
.v2945-video-placeholder{
    min-height:330px;
    border-radius:22px;
    border:1px solid rgba(148,163,184,.35);
    background:radial-gradient(circle at top right,rgba(37,99,235,.20),transparent 42%),linear-gradient(135deg,#0f172a,#1e293b);
    color:#fff;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:26px;
    box-shadow:var(--shadow-premium-lg);
}
.v2945-play{
    width:76px;height:76px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    background:rgba(255,255,255,.14);
    border:1px solid rgba(255,255,255,.24);
    font-size:2rem;margin-bottom:14px;
}
.v2945-video-placeholder h2{color:#fff;margin:0 0 8px;font-size:1.35rem;}
.v2945-video-placeholder p{margin:0;max-width:520px;color:rgba(255,255,255,.72);line-height:1.5;}
.v2945-video-help,.v2945-help-card,.v2945-menu-row,.v2945-workflow{
    background:#fff;
    border:1px solid var(--border-color);
    border-radius:18px;
    box-shadow:var(--shadow-premium-lg);
}
.v2945-video-help{padding:20px;align-self:stretch;}
.v2945-video-help h3{margin:0 0 10px;font-size:1.05rem;color:var(--primary-color);}
.v2945-video-help p{margin:0 0 12px;color:var(--text-light);line-height:1.55;}
.v2945-video-help small{display:block;color:var(--gray-600);line-height:1.45;}
.v2945-section-title{margin:20px 0 12px;}
.v2945-section-title h2{margin:0 0 4px;font-size:1.35rem;color:var(--primary-color);}
.v2945-section-title p{margin:0;color:var(--text-light);}
.v2945-workflow-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px;}
.v2945-workflow{display:flex;gap:14px;padding:18px;align-items:flex-start;}
.v2945-workflow-num{
    width:38px;height:38px;border-radius:13px;
    display:flex;align-items:center;justify-content:center;
    background:#eff6ff;color:#1d4ed8;font-weight:900;
    flex:0 0 auto;
}
.v2945-workflow h2{font-size:1.05rem;margin:0 0 8px;color:var(--primary-color);}
.v2945-workflow-items{display:flex;gap:7px;flex-wrap:wrap;}
.v2945-workflow-items span{background:#f8fafc;border:1px solid var(--border-color);border-radius:999px;padding:5px 8px;font-size:.76rem;font-weight:800;color:#475569;}
.v2945-menu-list{display:grid;gap:10px;}
.v2945-menu-row{
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    gap:14px;
    align-items:center;
    padding:15px 16px;
}
.v2945-menu-icon{
    width:46px;height:46px;border-radius:15px;
    display:flex;align-items:center;justify-content:center;
    background:#eff6ff;color:#1d4ed8;font-size:1.35rem;
}
.v2945-menu-row h2{margin:0 0 4px;font-size:1.05rem;color:var(--primary-color);}
.v2945-menu-row p{margin:0;color:var(--text-light);line-height:1.45;}
.v2945-help-card{
    margin-top:16px;
    padding:20px;
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:16px;
    border-left:4px solid #22c55e;
}
.v2945-help-card h2{margin:0 0 6px;color:var(--primary-color);font-size:1.15rem;}
.v2945-help-card p{margin:0;color:var(--text-light);}
@media(max-width:980px){
    .v2945-welcome,.v2945-help-card{flex-direction:column;align-items:stretch;}
    .v2945-whatsapp,.v2945-help-card .btn{width:100%;}
    .v2945-video-card,.v2945-workflow-grid{grid-template-columns:1fr;}
    .v2945-menu-row{grid-template-columns:auto minmax(0,1fr);}
    .v2945-menu-row .btn{grid-column:1 / -1;width:100%;}
}
@media(max-width:560px){
    .v2945-welcome{padding:22px;}
    .v2945-welcome h1{font-size:1.55rem;}
    .v2945-video-placeholder{min-height:240px;}
}



/* V29.4.16 — Accueil admin : vidéo + emplacement ebook */
.v2945-video-card-single{grid-template-columns:1fr !important;}
.v2945-ebook-card{
    background:#fff;
    border:1px solid var(--border-color);
    border-radius:20px;
    box-shadow:var(--shadow-premium-lg);
    margin-bottom:18px;
    overflow:hidden;
}
.v2945-ebook-toolbar{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    flex-wrap:wrap;
    padding:12px 14px;
    background:#f8fafc;
    border-bottom:1px solid var(--border-color);
}
.v2945-ebook-toolbar span{
    font-weight:800;
    color:var(--text-light);
    font-size:.9rem;
    padding:0 8px;
}
.v2945-ebook-placeholder{
    min-height:260px;
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:center;
    text-align:center;
    padding:28px;
    background:linear-gradient(180deg,#ffffff,#f8fbff);
}
.v2945-ebook-placeholder h3{
    margin:0 0 8px;
    font-size:1.25rem;
    color:var(--primary-color);
}
.v2945-ebook-placeholder p{
    margin:0;
    max-width:560px;
    color:var(--text-light);
    line-height:1.55;
}
@media(max-width:560px){
    .v2945-ebook-toolbar{justify-content:stretch;}
    .v2945-ebook-toolbar .btn{flex:1 1 42%;}
    .v2945-ebook-toolbar span{width:100%;text-align:center;order:-1;}
    .v2945-ebook-placeholder{min-height:220px;padding:22px;}
}

/* ============================================================
   V29.4.8 — Accueil admin chronologique + vidéo configurable
   ============================================================ */
.v2948-home{max-width:1240px;margin:0 auto;padding-bottom:34px;}
.v2948-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;background:linear-gradient(135deg,#111827,#2354e6);color:#fff;border-radius:22px;padding:30px 32px;margin-bottom:18px;box-shadow:0 18px 45px rgba(20,40,90,.22);}
.v2948-hero h1{font-size:2.1rem;line-height:1.12;margin:6px 0 10px;color:#fff;}
.v2948-hero p{margin:0;max-width:820px;color:rgba(255,255,255,.84);line-height:1.55;}
.v2948-video-card{background:#111827;border-radius:22px;overflow:hidden;margin-bottom:22px;box-shadow:0 12px 32px rgba(15,23,42,.16);border:1px solid rgba(255,255,255,.08);}
.v2948-video-placeholder{min-height:330px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#fff;padding:28px;background:radial-gradient(circle at 50% 20%,rgba(74,144,226,.28),transparent 42%),linear-gradient(135deg,#111827,#17233c);}
.v2948-play{width:72px;height:72px;border-radius:999px;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.24);display:flex;align-items:center;justify-content:center;font-size:1.65rem;margin-bottom:18px;box-shadow:0 12px 26px rgba(0,0,0,.18);}
.v2948-video-placeholder h2,.v2948-video-head h2{margin:0 0 8px;color:#fff;font-size:1.45rem;}
.v2948-video-placeholder p{margin:0 0 18px;max-width:620px;color:rgba(255,255,255,.76);line-height:1.55;}
.v2948-video-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:20px 22px;color:#fff;background:linear-gradient(135deg,#111827,#17233c);}
.v2948-video-head p{margin:0;color:rgba(255,255,255,.72);}
.v2948-video-frame{position:relative;width:100%;aspect-ratio:16/9;background:#000;}
.v2948-video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.v2948-intro{margin:8px 0 14px;}
.v2948-intro h2{font-size:1.45rem;margin:0 0 6px;color:var(--primary-color);}
.v2948-intro p{margin:0;color:var(--text-light);}
.v2948-journey{display:grid;gap:16px;position:relative;}
.v2948-stage{background:#fff;border:1px solid var(--border-color);border-radius:20px;padding:20px;box-shadow:var(--shadow-premium-lg);position:relative;overflow:hidden;}
.v2948-stage:before{content:"";position:absolute;left:34px;top:76px;bottom:20px;width:2px;background:linear-gradient(#dbeafe,#eef2f7);}
.v2948-stage-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:16px;position:relative;z-index:1;}
.v2948-stage-num{width:44px;height:44px;border-radius:14px;background:#eef4ff;color:#2563eb;font-weight:900;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 18px rgba(37,99,235,.08);flex:0 0 auto;}
.v2948-stage h2{font-size:1.25rem;margin:0 0 4px;color:var(--primary-color);}
.v2948-stage p{margin:0;color:var(--text-light);line-height:1.45;}
.v2948-stage-items{display:grid;gap:10px;margin-left:58px;}
.v2948-menu-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;background:#f8fafc;border:1px solid #e8edf4;border-radius:16px;padding:14px;position:relative;z-index:1;transition:transform .12s ease, box-shadow .12s ease, border-color .12s ease;}
.v2948-menu-item:hover{transform:translateY(-1px);border-color:#bfdbfe;box-shadow:0 10px 22px rgba(15,23,42,.07);}
.v2948-menu-icon{width:42px;height:42px;border-radius:13px;background:#fff;display:flex;align-items:center;justify-content:center;font-size:1.25rem;border:1px solid #e5e7eb;}
.v2948-menu-item h3{margin:0 0 4px;color:var(--primary-color);font-size:1.05rem;}
.v2948-menu-item p{margin:0;color:var(--text-light);line-height:1.42;}
.v2948-help,.v2948-config-card{display:flex;justify-content:space-between;align-items:center;gap:18px;background:#fff;border:1px solid var(--border-color);border-radius:20px;padding:20px;margin-top:18px;box-shadow:var(--shadow-premium-lg);}
.v2948-help h2,.v2948-config-card h2{margin:0 0 6px;color:var(--primary-color);font-size:1.2rem;}
.v2948-help p,.v2948-config-card p{margin:0;color:var(--text-light);line-height:1.45;}
.v2948-config-card{margin-bottom:16px;align-items:flex-end;}
.v2948-config-form{display:flex;gap:8px;align-items:center;flex:1;max-width:760px;}
.v2948-config-form input{flex:1;min-height:44px;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;font-size:1rem;}
@media (max-width:768px){
  .mobile-topbar{position:fixed!important;top:0!important;left:0!important;right:0!important;z-index:1600!important;background:#fff!important;}
  #adminDashboard.active .main-content,#studentDashboard.active .main-content{padding-top:72px!important;}
  .mobile-topbar-title{font-weight:800!important;text-align:center!important;}
  .v2948-home{padding:0 0 22px;}
  .v2948-hero{padding:22px 18px;border-radius:18px;flex-direction:column;align-items:stretch;}
  .v2948-hero h1{font-size:1.55rem;}
  .v2948-hero p{font-size:.95rem;}
  .v2948-video-placeholder{min-height:245px;padding:24px 16px;}
  .v2948-video-head{flex-direction:column;align-items:stretch;padding:18px;}
  .v2948-intro h2{font-size:1.25rem;line-height:1.25;}
  .v2948-stage{padding:16px;border-radius:18px;}
  .v2948-stage:before{display:none;}
  .v2948-stage-head{margin-bottom:12px;}
  .v2948-stage-num{width:38px;height:38px;border-radius:12px;}
  .v2948-stage-items{margin-left:0;}
  .v2948-menu-item{grid-template-columns:auto minmax(0,1fr);gap:10px;padding:14px;}
  .v2948-menu-item .btn{grid-column:1 / -1;width:100%;}
  .v2948-menu-icon{width:38px;height:38px;}
  .v2948-help,.v2948-config-card{flex-direction:column;align-items:stretch;padding:16px;border-radius:18px;}
  .v2948-help .btn{width:100%;}
  .v2948-config-form{flex-direction:column;align-items:stretch;max-width:none;}
  .v2948-config-form .btn{width:100%;}
}

/* ============================================================
   V29.4.10 — Corrections admin PC : collectifs, filtres, équipe, commissions
   Patch visuel isolé. Espace élève non modifié.
   ============================================================ */
.v29410-select{width:100%;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;background:#fff;font-family:inherit;font-size:.95rem;min-height:42px;}
.v29410-toolbar-4{display:grid!important;grid-template-columns:1.25fr 1fr 1fr 1fr!important;gap:12px!important;align-items:end!important;}
.v29410-toolbar-5{display:grid!important;grid-template-columns:1.05fr 1fr .9fr .9fr .9fr!important;gap:10px!important;align-items:end!important;}
.v29410-toolbar-4 label,.v29410-toolbar-5 label{display:block;text-transform:uppercase;font-size:.72rem;color:var(--gray-700);font-weight:800;margin-bottom:6px;letter-spacing:.02em;}
.v29410-collectif-student{border:1px solid var(--si-line, var(--border-color));border-radius:13px;padding:12px;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:12px;align-items:center;background:#fff;min-width:0;}
.v29410-collectif-student .v29410-avatar{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:900;box-shadow:0 6px 14px rgba(15,23,42,.14);flex:0 0 42px;}
.v29410-collectif-student b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2;}
.v29410-collectif-student span{display:block;color:var(--text-light);font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px;}
.v29410-help{font-size:.78rem;color:var(--text-light);margin-top:8px;line-height:1.35;}
.v29410-work-note{font-size:.78rem;color:var(--text-light);line-height:1.35;margin-top:8px;background:#f8fafc;border:1px solid var(--border-color);border-radius:10px;padding:9px 10px;}
.v29410-team-list{display:grid;gap:10px;margin-top:16px;}
.v29410-link-row{display:grid;grid-template-columns:minmax(180px,.45fr) minmax(0,1fr) auto;gap:12px;align-items:center;background:#fff;border:1px solid var(--border-color);border-radius:15px;padding:14px 16px;box-shadow:var(--shadow-premium);}
.v29410-link-row h2{font-size:1rem;margin:0;color:var(--primary-color)}
.v29410-link-row p{margin:3px 0 0;color:var(--text-light);font-size:.9rem;line-height:1.35;}
.v29410-link-row a{white-space:nowrap;text-decoration:none;}
@media(max-width:1100px){.v29410-toolbar-4,.v29410-toolbar-5{grid-template-columns:1fr 1fr!important}.v29410-link-row{grid-template-columns:1fr}.v29410-link-row a{width:100%;justify-content:center}}
@media(max-width:640px){.v29410-toolbar-4,.v29410-toolbar-5{grid-template-columns:1fr!important}.v29410-collectif-student{grid-template-columns:38px minmax(0,1fr)}.v29410-collectif-student .btn{grid-column:1/-1;width:100%}}

/* V29.4.11 — Outils équipe administrables */
.v29411-page{max-width:1280px;margin:0 auto;width:100%;}
.v29411-hero{background:linear-gradient(135deg,#111827,#1f2937);color:#fff;border-radius:22px;padding:26px;display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px;box-shadow:0 18px 42px rgba(15,23,42,.18)}
.v29411-hero h1{margin:4px 0 8px;font-size:1.9rem;color:#fff}.v29411-hero p{margin:0;color:rgba(255,255,255,.78);max-width:760px;line-height:1.5}.v29411-hero .btn{background:#fff;color:#111827;border-color:#fff;white-space:nowrap}
.v29411-tool-group{background:#fff;border:1px solid var(--border-color);border-radius:18px;padding:18px;margin-bottom:16px;box-shadow:var(--shadow-premium)}
.v29411-group-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.v29411-group-head h2{margin:0;font-size:1.12rem}.v29411-group-head span{color:var(--text-light);font-size:.86rem;font-weight:700}
.v29411-tool-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.v29411-tool-card{border:1px solid #e8edf4;border-radius:16px;padding:14px;background:#fff;display:flex;flex-direction:column;justify-content:space-between;gap:14px;min-height:150px}.v29411-tool-card.is-off{opacity:.55;background:#f8fafc}
.v29411-tool-top{display:flex;gap:12px;align-items:flex-start}.v29411-tool-ico{width:42px;height:42px;border-radius:14px;display:flex;align-items:center;justify-content:center;background:#eef2ff;font-size:1.25rem;flex:0 0 auto}.v29411-tool-card h3{margin:0 0 5px;font-size:1rem;color:#111827}.v29411-tool-card p{margin:0;color:#64748b;font-size:.9rem;line-height:1.4}.v29411-tool-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid #edf0f5;padding-top:10px}.v29411-tool-foot span{font-size:.78rem;font-weight:800;color:#475569;background:#f1f5f9;border-radius:999px;padding:5px 9px}.v29411-tool-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.v29411-tool-actions .btn{padding:7px 9px;font-size:.78rem;min-height:34px}
.v29411-admin{margin-top:20px;background:#fff;border:1px solid var(--border-color);border-radius:18px;padding:18px;box-shadow:var(--shadow-premium-lg)}.v29411-admin-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.v29411-admin-head h2{margin:4px 0 6px}.v29411-admin-head p{margin:0;color:var(--text-light);line-height:1.45;max-width:760px}.v29411-admin-layout{display:grid;grid-template-columns:minmax(260px,360px) minmax(0,1fr);gap:16px;align-items:start}.v29411-tool-form{border:1px solid #e8edf4;border-radius:16px;padding:14px;background:#f8fafc;position:sticky;top:16px}.v29411-tool-form label{display:block;font-size:.82rem;font-weight:800;color:#475569;margin-bottom:10px}.v29411-tool-form input,.v29411-tool-form textarea,.v29411-tool-form select{width:100%;margin-top:6px;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;font:inherit;background:#fff}.v29411-tool-form textarea{min-height:82px;resize:vertical}.v29411-form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.v29411-form-actions{display:flex;gap:8px;flex-wrap:wrap}.v29411-form-actions .btn{flex:1 1 auto}.v29411-admin-list .v29411-tool-group{box-shadow:none;margin-bottom:12px;padding:14px}.v29411-admin-list .v29411-tool-grid{grid-template-columns:1fr}.v29411-admin-list .v29411-tool-card{min-height:auto}
@media(max-width:900px){.v29411-hero{flex-direction:column;padding:20px;border-radius:18px}.v29411-hero h1{font-size:1.45rem}.v29411-hero .btn{width:100%}.v29411-admin-head{flex-direction:column}.v29411-admin-layout{grid-template-columns:1fr}.v29411-tool-form{position:static}.v29411-tool-grid{grid-template-columns:1fr}.v29411-tool-foot{align-items:stretch;flex-direction:column}.v29411-tool-foot .btn{width:100%}.v29411-tool-actions{justify-content:stretch}.v29411-tool-actions .btn{flex:1 1 100%}}

/* ============================================================
   V29.4.13 — Correction sidebar : menu lisible + footer non superposé
   Objectif : empêcher les derniers menus de passer sous le bloc utilisateur /
   déconnexion sur desktop et mobile. Patch CSS uniquement.
   ============================================================ */
.sidebar {
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;
}
.sidebar-nav {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    padding-bottom: 14px !important;
}
.sidebar-footer {
    position: static !important;
    flex: 0 0 auto !important;
    width: 100% !important;
    background: var(--white) !important;
    z-index: 2 !important;
}
.sidebar-nav::-webkit-scrollbar { width: 8px; }
.sidebar-nav::-webkit-scrollbar-track { background: transparent; }
.sidebar-nav::-webkit-scrollbar-thumb { background: var(--gray-300); border-radius: 999px; }
@media (max-width: 768px) {
    .sidebar {
        height: 100vh !important;
        max-height: 100vh !important;
    }
    .sidebar-nav {
        padding-bottom: 18px !important;
    }
}


/* ============================================================
   V29.4.14 — Mobile admin accueil : lisibilité + parcours
   Patch responsive uniquement. Version PC et logique inchangées.
   ============================================================ */
@media (max-width: 768px) {
  /* Hero plus compact pour rendre la vidéo visible rapidement */
  #adminDashboard.active .v2948-home .v2948-hero {
    padding: 16px 16px 18px !important;
    border-radius: 18px !important;
    gap: 12px !important;
    margin-bottom: 14px !important;
  }
  #adminDashboard.active .v2948-home .v2948-hero h1 {
    font-size: 1.36rem !important;
    line-height: 1.13 !important;
    margin: 5px 0 8px !important;
  }
  #adminDashboard.active .v2948-home .v2948-hero p {
    display: none !important;
  }
  #adminDashboard.active .v2948-home .v2948-hero > div::after {
    content: "☰ Utilise le menu en haut à gauche pour naviguer.";
    display: block;
    color: rgba(255,255,255,.88);
    font-size: .92rem;
    line-height: 1.38;
    margin-top: 4px;
  }
  #adminDashboard.active .v2948-home .v291-eyebrow {
    font-size: .68rem !important;
    letter-spacing: .08em !important;
  }
  #adminDashboard.active .v2945-whatsapp {
    width: auto !important;
    align-self: flex-start !important;
    padding: 9px 13px !important;
    font-size: .86rem !important;
    border-radius: 999px !important;
    background: #22c55e !important;
    color: #fff !important;
    box-shadow: 0 10px 22px rgba(34,197,94,.22) !important;
  }

  /* Vidéo un peu plus compacte sur mobile */
  #adminDashboard.active .v2948-video-placeholder {
    min-height: 220px !important;
    padding: 22px 16px !important;
  }
  #adminDashboard.active .v2948-play {
    width: 58px !important;
    height: 58px !important;
    font-size: 1.25rem !important;
    margin-bottom: 14px !important;
  }
  #adminDashboard.active .v2948-video-placeholder h2 {
    font-size: 1.22rem !important;
    line-height: 1.22 !important;
  }
  #adminDashboard.active .v2948-video-placeholder p {
    font-size: .9rem !important;
    line-height: 1.42 !important;
  }

  /* Étapes plus lisibles : la grande étape est différenciée des sous-menus */
  #adminDashboard.active .v2948-journey {
    gap: 14px !important;
  }
  #adminDashboard.active .v2948-stage {
    padding: 15px 13px !important;
    border-radius: 18px !important;
    box-shadow: 0 10px 26px rgba(15,23,42,.07) !important;
  }
  #adminDashboard.active .v2948-stage:nth-child(1) {
    background: linear-gradient(180deg,#f7fbff,#ffffff) !important;
    border-color: #cfe1ff !important;
  }
  #adminDashboard.active .v2948-stage:nth-child(2) {
    background: linear-gradient(180deg,#fffaf2,#ffffff) !important;
    border-color: #ffdfb2 !important;
  }
  #adminDashboard.active .v2948-stage:nth-child(3) {
    background: linear-gradient(180deg,#f6fff8,#ffffff) !important;
    border-color: #c8f2d4 !important;
  }
  #adminDashboard.active .v2948-stage-head {
    margin-bottom: 13px !important;
    align-items: flex-start !important;
  }
  #adminDashboard.active .v2948-stage-num {
    width: 34px !important;
    height: 34px !important;
    border-radius: 12px !important;
    font-size: .9rem !important;
    background: #eaf2ff !important;
  }
  #adminDashboard.active .v2948-stage h2 {
    font-size: 1.08rem !important;
    margin-bottom: 3px !important;
  }
  #adminDashboard.active .v2948-stage p {
    font-size: .88rem !important;
    line-height: 1.35 !important;
  }

  /* Sous-menus : cartes plus sobres, boutons courts, pas pleine largeur */
  #adminDashboard.active .v2948-stage-items {
    gap: 9px !important;
  }
  #adminDashboard.active .v2948-menu-item {
    grid-template-columns: 34px minmax(0, 1fr) !important;
    align-items: start !important;
    gap: 10px !important;
    padding: 12px !important;
    border-radius: 14px !important;
    background: #ffffff !important;
    border-color: #dde6f1 !important;
  }
  #adminDashboard.active .v2948-menu-icon {
    width: 32px !important;
    height: 32px !important;
    border-radius: 10px !important;
    font-size: 1rem !important;
    background: #f8fafc !important;
  }
  #adminDashboard.active .v2948-menu-item h3 {
    font-size: .96rem !important;
    margin-bottom: 3px !important;
  }
  #adminDashboard.active .v2948-menu-item p {
    font-size: .86rem !important;
    line-height: 1.35 !important;
  }
  #adminDashboard.active .v2948-menu-item .btn {
    grid-column: 2 !important;
    justify-self: start !important;
    width: auto !important;
    min-width: 118px !important;
    max-width: 170px !important;
    min-height: 34px !important;
    padding: 7px 16px !important;
    font-size: .78rem !important;
    border-radius: 9px !important;
    margin-top: 6px !important;
  }

  /* Aide WhatsApp en bas : vert + libellé pro */
  #adminDashboard.active .v2948-help .btn {
    width: auto !important;
    align-self: flex-start !important;
    background: #22c55e !important;
    color: #fff !important;
    border-color: #22c55e !important;
    box-shadow: 0 10px 22px rgba(34,197,94,.20) !important;
  }
}

/* V29.4.15 — Dossier élève accordéons */
.v29415-page{max-width:1180px;margin:0 auto;padding:24px 0 60px}.v29415-hero{display:flex;align-items:center;gap:18px;background:linear-gradient(135deg,#111827,#1d4ed8);color:#fff;border-radius:22px;padding:22px;margin:10px 0 18px;box-shadow:0 18px 42px rgba(15,23,42,.14)}.v29415-avatar{width:64px;height:64px;border-radius:18px;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:1.3rem;color:#fff;flex:0 0 auto}.v29415-hero h1{margin:0 0 4px;font-size:1.8rem;line-height:1.15}.v29415-hero p{margin:0;color:rgba(255,255,255,.82);word-break:break-word}.v29415-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.v29415-chips span,.v29415-pill{display:inline-flex;align-items:center;border-radius:999px;padding:6px 10px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);font-size:.84rem;font-weight:800}.v29415-pill.ok{background:#dcfce7;color:#166534;border-color:#bbf7d0}.v29415-acc{background:#fff;border:1px solid #e5e7eb;border-radius:18px;margin:12px 0;box-shadow:0 10px 24px rgba(15,23,42,.06);overflow:hidden}.v29415-acc>summary{cursor:pointer;list-style:none;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:900;font-size:1.05rem}.v29415-acc>summary::-webkit-details-marker{display:none}.v29415-acc>summary em{font-style:normal;color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe;border-radius:999px;padding:5px 10px;font-size:.78rem;white-space:nowrap}.v29415-acc[open]>summary{border-bottom:1px solid #edf0f4}.v29415-acc-body{padding:16px 20px 20px}.v29415-sub{margin-bottom:18px}.v29415-sub h3{font-size:.96rem;margin:0 0 10px;color:#334155}.v29415-line{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid #e5e7eb;border-radius:14px;background:#f8fafc;margin-bottom:9px}.v29415-line b{display:block;color:#111827}.v29415-line small{display:block;color:#64748b;margin-top:3px;line-height:1.35}.v29415-line-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.v29415-empty{padding:14px;border:1px dashed #cbd5e1;background:#f8fafc;color:#64748b;border-radius:14px}.v29415-msg,.v29415-event{border:1px solid #e5e7eb;border-radius:14px;background:#f8fafc;padding:12px;margin-bottom:9px}.v29415-msg b,.v29415-event b{display:block}.v29415-msg small,.v29415-event small{color:#64748b}.v29415-msg p{margin:8px 0 0;white-space:pre-wrap}.v18-student-actions{display:flex;gap:8px;flex-wrap:wrap}.v18-student-actions .btn{white-space:nowrap}
.v29415-hero-actions{margin-top:14px}.wa-welcome-btn{display:inline-flex;align-items:center;gap:8px;background:#25D366;color:#0b3d1e;border:none;border-radius:12px;padding:10px 16px;font-size:.9rem;font-weight:800;cursor:pointer;box-shadow:0 4px 14px rgba(37,211,102,.35);transition:transform .08s ease,box-shadow .15s ease,background .15s ease}.wa-welcome-btn:hover{background:#20bd5a;box-shadow:0 6px 18px rgba(37,211,102,.45)}.wa-welcome-btn:active{transform:translateY(1px)}.wa-welcome-btn .wa-ic{font-size:1rem;line-height:1}
@media(max-width:760px){.v29415-hero-actions{width:100%}.wa-welcome-btn{width:100%;justify-content:center}}
@media(max-width:760px){.v29415-page{padding:14px 10px 70px}.v29415-hero{padding:16px;border-radius:18px;align-items:flex-start}.v29415-avatar{width:46px;height:46px;border-radius:14px;font-size:1rem}.v29415-hero h1{font-size:1.28rem}.v29415-chips span{font-size:.76rem;padding:5px 8px}.v29415-acc>summary{padding:15px 14px;font-size:.98rem}.v29415-acc-body{padding:12px 14px 16px}.v29415-line{align-items:flex-start;flex-direction:column}.v29415-line-actions{width:100%;justify-content:flex-start}.v29415-line-actions .btn,.v29415-line>.btn{width:auto;min-width:120px}.v18-student-actions .btn{flex:1 1 30%;min-width:86px}.v18-student-actions .btn:nth-child(3){flex-basis:100%;}.v18-mini{gap:6px}.v18-mini>div span{font-size:.62rem}}


/* V29.4.16 — Accueil admin : zone ebook interactive prévue */
.v2948-ebook-card{
    background:#fff;
    border:1px solid var(--border-color);
    border-radius:22px;
    box-shadow:0 10px 30px rgba(15,23,42,.08);
    margin:0 0 22px;
    overflow:hidden;
}
.v2948-ebook-toolbar{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    flex-wrap:wrap;
    padding:12px 14px;
    background:#f8fafc;
    border-bottom:1px solid var(--border-color);
}
.v2948-ebook-toolbar span{
    font-weight:800;
    color:var(--text-light);
    font-size:.9rem;
    padding:0 8px;
}
.v2948-ebook-placeholder{
    min-height:280px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:30px;
    background:linear-gradient(180deg,#ffffff,#f8fbff);
}
.v2948-ebook-placeholder h3{
    margin:0 0 8px;
    color:var(--primary-color);
    font-size:1.25rem;
}
.v2948-ebook-placeholder p{
    margin:0;
    max-width:590px;
    color:var(--text-light);
    line-height:1.55;
}
@media(max-width:560px){
    .v2948-ebook-toolbar{justify-content:stretch;}
    .v2948-ebook-toolbar .btn{flex:1 1 42%;}
    .v2948-ebook-toolbar span{width:100%;text-align:center;order:-1;}
    .v2948-ebook-placeholder{min-height:220px;padding:22px;}
}

/* V29.4.17 — Accueil admin : lecteur ebook Google Drive */
.v2948-ebook-frame{
    width:100%;
    min-height:520px;
    border:1px solid var(--border-color);
    border-radius:14px;
    overflow:hidden;
    background:#fff;
}
.v2948-ebook-frame iframe{
    width:100%;
    height:620px;
    border:0;
    display:block;
}
.v2948-config-form label{
    display:block;
}
@media (max-width:768px){
    .v2948-ebook-frame{min-height:430px;}
    .v2948-ebook-frame iframe{height:460px;}
}

/* V29.4.18 — Contenus : champs longs + lecteur ebook plus large */
.v2948-config-card{
  align-items:stretch !important;
}
.v2948-config-form{
  display:grid !important;
  grid-template-columns:minmax(280px,1fr) auto auto !important;
  gap:10px 12px !important;
  max-width:none !important;
  flex:1 1 900px !important;
  align-items:end !important;
}
.v2948-config-form label{
  grid-column:1 / -1;
  margin-top:4px;
  font-weight:900 !important;
}
.v2948-config-form input{
  min-width:0 !important;
  width:100% !important;
}
.v2948-config-form input#v2948AdminVideoUrl,
.v2948-config-form input#v2948AdminEbookUrl{
  grid-column:1 / 2;
}
.v2948-config-form input#v2948AdminVideoUrl + .btn,
.v2948-config-form input#v2948AdminEbookUrl + .btn{
  grid-column:2 / 3;
}
.v2948-config-form input#v2948AdminVideoUrl + .btn + .btn,
.v2948-config-form input#v2948AdminEbookUrl + .btn + .btn{
  grid-column:3 / 4;
}
.v2948-ebook-card{
  background:#111827 !important;
}
.v2948-ebook-toolbar{
  background:#ffffff !important;
}
.v2948-ebook-frame{
  background:#111827 !important;
  border:0 !important;
  border-radius:0 !important;
  min-height:680px !important;
}
.v2948-ebook-frame iframe{
  height:720px !important;
}
@media(max-width:900px){
  .v2948-config-form{
    grid-template-columns:1fr !important;
  }
  .v2948-config-form input#v2948AdminVideoUrl,
  .v2948-config-form input#v2948AdminEbookUrl,
  .v2948-config-form input#v2948AdminVideoUrl + .btn,
  .v2948-config-form input#v2948AdminEbookUrl + .btn,
  .v2948-config-form input#v2948AdminVideoUrl + .btn + .btn,
  .v2948-config-form input#v2948AdminEbookUrl + .btn + .btn{
    grid-column:1 / -1;
    width:100%;
  }
  .v2948-ebook-frame{min-height:520px !important;}
  .v2948-ebook-frame iframe{height:560px !important;}
}

/* V29.4.24 - Contenus lecture seule : affichage simple des liens */
.v29424-tool-group-simple{padding:16px 18px;}
.v29424-tool-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0;}
.v29424-tool-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:14px 0;border-top:1px solid #edf0f5;}
.v29424-tool-row:first-child{border-top:0;}
.v29424-tool-main strong{display:block;font-size:1rem;color:#111827;margin-bottom:3px;}
.v29424-tool-main p{margin:0;color:#64748b;line-height:1.35;font-size:.92rem;}
.v29424-tool-link{display:inline-flex;align-items:center;justify-content:center;border:1px solid #2f80ed;background:#fff;color:#2f80ed;border-radius:10px;padding:9px 14px;font-weight:800;text-decoration:none;white-space:nowrap;min-width:92px;}
.v29424-tool-link:hover{background:#2f80ed;color:#fff;text-decoration:none;}
@media(max-width:700px){
  .v29424-tool-group-simple{padding:14px;}
  .v29411-group-head{align-items:flex-start;}
  .v29424-tool-row{grid-template-columns:1fr;gap:9px;padding:13px 0;}
  .v29424-tool-link{width:auto;min-width:120px;justify-self:start;padding:8px 12px;}
  .v29424-tool-main strong{font-size:.98rem;}
  .v29424-tool-main p{font-size:.88rem;}
}

/* V29.4.25 — Accueil admin : vidéo + ebook plus compacts */
.v29425-media-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:18px;
  align-items:start;
  margin-bottom:18px;
}
.v29425-media-grid .v2948-video-card,
.v29425-media-grid .v2948-ebook-card{
  margin-bottom:0 !important;
  height:100%;
}
.v29425-media-grid .v2948-video-head{
  padding:14px 16px !important;
  align-items:center !important;
}
.v29425-media-grid .v2948-video-head h2{
  font-size:1.18rem !important;
  margin-bottom:4px !important;
}
.v29425-media-grid .v2948-video-head p{
  font-size:.92rem !important;
}
.v29425-video-open{
  background:rgba(255,255,255,.08) !important;
  color:#fff !important;
  border-color:rgba(255,255,255,.45) !important;
  white-space:nowrap;
}
.v29425-media-grid .v2948-video-frame{
  aspect-ratio:auto !important;
  height:310px !important;
}
.v29425-media-grid .v2948-ebook-toolbar{
  min-height:58px;
}
.v29425-media-grid .v2948-ebook-frame{
  min-height:310px !important;
  max-height:310px !important;
  height:310px !important;
}
.v29425-media-grid .v2948-ebook-frame iframe{
  height:310px !important;
}
.v29425-media-grid .v2948-intro{
  margin:0 0 8px !important;
}
.v29425-media-grid .v2948-intro h2{
  font-size:1.25rem !important;
}
@media(max-width:900px){
  .v29425-media-grid{
    display:block;
  }
  .v29425-media-grid .v2948-video-card{
    margin-bottom:16px !important;
  }
  .v29425-media-grid .v2948-video-head{
    padding:14px 14px !important;
  }
  .v29425-video-open{
    width:100%;
    text-align:center;
  }
  .v29425-media-grid .v2948-video-frame{
    height:205px !important;
  }
  .v29425-media-grid .v2948-ebook-frame{
    min-height:270px !important;
    max-height:270px !important;
    height:270px !important;
  }
  .v29425-media-grid .v2948-ebook-frame iframe{
    height:270px !important;
  }
  .v29425-media-grid .v2948-ebook-toolbar{
    padding:10px 12px !important;
    gap:8px !important;
  }
  .v29425-media-grid .v2948-ebook-toolbar .btn{
    flex:0 0 auto !important;
    width:100%;
  }
}

/* ============================================================
   V29.4.26 — Menu gauche compact PC + mobile
   Objectif : afficher tous les menus sans scroll sur écrans standards.
   Patch CSS uniquement : aucune logique ni page modifiée.
   ============================================================ */
@media (min-width: 769px) {
  .sidebar {
    padding: 10px 0 !important;
  }
  .sidebar-header {
    padding: 0 16px 10px !important;
  }
  .sidebar-header .logo,
  .logo {
    font-size: 1.22rem !important;
    line-height: 1.15 !important;
  }
  .sidebar-header p {
    margin-top: 2px !important;
    font-size: .78rem !important;
    line-height: 1.1 !important;
  }
  .sidebar-nav {
    padding: 8px 0 !important;
    overflow-y: hidden !important;
  }
  .nav-item {
    min-height: 0 !important;
    padding: 7px 16px !important;
    gap: 9px !important;
    font-size: .9rem !important;
    line-height: 1.18 !important;
  }
  .nav-item .icon {
    width: 18px !important;
    height: 18px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 1rem !important;
    flex: 0 0 18px !important;
  }
  .v2945-nav-section {
    margin: 8px 16px 4px !important;
    padding-top: 8px !important;
    font-size: .66rem !important;
    letter-spacing: .07em !important;
    line-height: 1.05 !important;
  }
  .sidebar-footer {
    padding: 10px 14px !important;
  }
  .user-info {
    gap: 9px !important;
  }
  .user-avatar {
    width: 34px !important;
    height: 34px !important;
    font-size: .9rem !important;
    flex: 0 0 34px !important;
  }
  .user-name {
    font-size: .84rem !important;
    line-height: 1.15 !important;
  }
  .user-role,
  .user-details .user-role {
    font-size: .72rem !important;
    line-height: 1.15 !important;
  }
  .sidebar-footer .btn,
  .sidebar-footer button {
    margin-top: 8px !important;
    padding: 7px 10px !important;
    min-height: 0 !important;
    font-size: .84rem !important;
    line-height: 1.1 !important;
  }
}

@media (max-width: 768px) {
  .sidebar {
    padding: 8px 0 !important;
  }
  .sidebar-header {
    padding: 0 14px 8px !important;
  }
  .sidebar-header .logo,
  .logo {
    font-size: 1.12rem !important;
    line-height: 1.1 !important;
  }
  .sidebar-header p {
    margin-top: 1px !important;
    font-size: .74rem !important;
    line-height: 1.05 !important;
  }
  .sidebar-nav {
    padding: 6px 0 !important;
    overflow-y: hidden !important;
  }
  .nav-item {
    padding: 8px 14px !important;
    gap: 8px !important;
    font-size: .9rem !important;
    line-height: 1.15 !important;
  }
  .nav-item .icon {
    width: 18px !important;
    height: 18px !important;
    font-size: .98rem !important;
    flex: 0 0 18px !important;
  }
  .v2945-nav-section {
    margin: 7px 14px 3px !important;
    padding-top: 7px !important;
    font-size: .64rem !important;
    line-height: 1.05 !important;
  }
  .sidebar-footer {
    padding: 9px 12px !important;
  }
  .user-info {
    gap: 8px !important;
  }
  .user-avatar {
    width: 32px !important;
    height: 32px !important;
    font-size: .86rem !important;
    flex: 0 0 32px !important;
  }
  .user-name {
    font-size: .82rem !important;
    line-height: 1.1 !important;
  }
  .user-role,
  .user-details .user-role {
    font-size: .7rem !important;
    line-height: 1.1 !important;
  }
  .sidebar-footer .btn,
  .sidebar-footer button {
    margin-top: 7px !important;
    padding: 7px 10px !important;
    font-size: .82rem !important;
    line-height: 1.1 !important;
  }
}

/* V29.4.27 — Accueil finalisé + lecture seule contenus plus lisible */
.v29427-video-head-compact{padding:10px 14px !important;}
.v29427-video-head-compact .v291-eyebrow{margin:0 !important;}
.v29427-video-placeholder-compact{min-height:190px !important;}
.v29427-intro{margin:22px 0 14px !important;}
.v29425-media-grid .v29427-intro{margin:26px 0 16px !important;}
.v2948-help{margin-top:24px !important;}
.v2948-help .btn{background:#22c55e !important;border-color:#22c55e !important;color:#fff !important;box-shadow:0 10px 22px rgba(34,197,94,.22) !important;}
.v29424-tool-group-simple{border-left:5px solid #dbeafe !important;}
.v29424-tool-group-simple .v29411-group-head{border-bottom:1px solid rgba(15,23,42,.06);padding-bottom:10px;margin-bottom:4px;}
.v29424-tool-group-simple.v29427-cat-setting{background:linear-gradient(180deg,#eff6ff,#ffffff) !important;border-left-color:#3b82f6 !important;}
.v29424-tool-group-simple.v29427-cat-payment{background:linear-gradient(180deg,#fff7ed,#ffffff) !important;border-left-color:#f97316 !important;}
.v29424-tool-group-simple.v29427-cat-training{background:linear-gradient(180deg,#f0fdf4,#ffffff) !important;border-left-color:#22c55e !important;}
.v29424-tool-group-simple.v29427-cat-other{background:linear-gradient(180deg,#f8fafc,#ffffff) !important;border-left-color:#94a3b8 !important;}
.v29424-tool-group-simple.v29427-cat-setting .v29424-tool-link{background:#2563eb;color:#fff;border-color:#2563eb;}
.v29424-tool-group-simple.v29427-cat-payment .v29424-tool-link{background:#f97316;color:#fff;border-color:#f97316;}
.v29424-tool-group-simple.v29427-cat-training .v29424-tool-link{background:#16a34a;color:#fff;border-color:#16a34a;}
.v29424-tool-group-simple.v29427-cat-setting .v29424-tool-link:hover,
.v29424-tool-group-simple.v29427-cat-payment .v29424-tool-link:hover,
.v29424-tool-group-simple.v29427-cat-training .v29424-tool-link:hover{filter:brightness(.94);}
@media(max-width:900px){
  .v29427-video-head-compact{padding:8px 12px !important;}
  .v29427-intro{margin:20px 0 12px !important;}
  .v29425-media-grid .v29427-intro{margin:20px 0 12px !important;}
  .v2948-help{margin-top:22px !important;}
}


/* V29.4.28 — Accueil : vidéo et ebook alignés, sans titre intermédiaire */
.v29425-media-grid .v2948-video-card,
.v29425-media-grid .v2948-ebook-card{
  display:flex !important;
  flex-direction:column !important;
}
.v29425-media-grid .v2948-video-head,
.v29425-media-grid .v2948-ebook-toolbar{
  min-height:52px !important;
  padding:14px 16px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:flex-start !important;
}
.v29425-media-grid .v2948-ebook-toolbar{
  background:linear-gradient(135deg,#111827,#17233c) !important;
  color:#fff !important;
  border-bottom:1px solid rgba(255,255,255,.08) !important;
}
.v29425-media-grid .v2948-ebook-toolbar strong{
  color:#fff !important;
  font-size:.78rem !important;
  letter-spacing:.08em !important;
  text-transform:uppercase !important;
}
.v29425-media-grid .v2948-video-frame,
.v29425-media-grid .v2948-ebook-frame{
  height:310px !important;
  min-height:310px !important;
  max-height:310px !important;
}
.v29425-media-grid .v2948-ebook-frame iframe{
  height:310px !important;
}
@media(max-width:900px){
  .v29425-media-grid .v2948-video-frame,
  .v29425-media-grid .v2948-ebook-frame{
    height:245px !important;
    min-height:245px !important;
    max-height:245px !important;
  }
  .v29425-media-grid .v2948-ebook-frame iframe{height:245px !important;}
}

/* ===== V29.4.29 — Bloc bienvenue accueil admin ===== */
.v29429-welcome{
  background:#fff;
  border:1px solid var(--border-color);
  border-radius:20px;
  padding:22px 24px;
  margin-top:18px;
  box-shadow:var(--shadow-premium-lg);
}
.v29429-welcome h2{
  margin:0 0 12px;
  color:var(--primary-color);
  font-size:1.25rem;
}
.v29429-welcome p{
  margin:0 0 10px;
  color:var(--text-color);
  line-height:1.58;
}
.v29429-welcome p:last-child{margin-bottom:0;}
.v29429-signature{
  color:var(--text-light)!important;
  font-size:.92rem;
  margin-top:12px!important;
}
@media (max-width:768px){
  .v29429-welcome{
    padding:18px 16px;
    border-radius:16px;
    margin-top:14px;
  }
  .v29429-welcome h2{font-size:1.12rem;}
  .v29429-welcome p{font-size:.94rem;line-height:1.5;}
}

/* V29.4.30 — Paiements élève */
.v29430-create-payment{margin-top:16px;background:#f8fafc;border:1px solid #dbe4f0;border-radius:12px;padding:14px}
.v29430-payment-grid{align-items:end}
.v29430-dossier-payment-btn{display:flex;justify-content:flex-end;margin:0 0 12px}
#paymentStudentSelect,#paymentProgram,#newStudentPaymentProgram{width:100%;padding:12px;border:1px solid #d8dde6;border-radius:10px;background:#fff;font:inherit}
@media(max-width:760px){.v29430-payment-grid{display:grid!important;grid-template-columns:1fr!important}.v29430-dossier-payment-btn{justify-content:stretch}.v29430-dossier-payment-btn .btn{width:100%}#v29430NewPaymentBtn{width:100%}}

/* V30 — Page Séances : accordéon travail demandé */
details.v30-accordion-box { display:block; }
details.v30-accordion-box > summary { list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; padding:0; }
details.v30-accordion-box > summary::-webkit-details-marker { display:none; }
details.v30-accordion-box > summary h3 { margin:0; }
details.v30-accordion-box > summary span { font-weight:900; color:#2563eb; font-size:1.1rem; }
details.v30-accordion-box[open] > summary span { transform:rotate(45deg); }
.v23-session-title h2 { font-size:1.55rem; }
@media(max-width:768px){ .v23-session-title h2{font-size:1.25rem;} .v23-session-title .v23-btnrow{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;} }

/* V30.0.2 — portail élève, détail des rendez-vous */
.v302-student-appts .page-header{margin-bottom:18px}.v302-listcards{display:grid;gap:16px}.v302-appt-card{background:#fff;border:1px solid #dfe7f3;border-radius:18px;padding:18px;box-shadow:0 10px 28px rgba(15,23,42,.06)}.v302-appt-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;border-bottom:1px solid #edf2f7;padding-bottom:12px;margin-bottom:12px}.v302-appt-head h3{font-size:1.1rem;margin:0 0 5px}.v302-appt-head p{margin:0;color:#64748b}.v302-badge{border-radius:999px;padding:7px 11px;font-weight:800;font-size:.82rem;white-space:nowrap}.v302-badge.done{background:#dcfce7;color:#166534}.v302-badge.planned{background:#dbeafe;color:#1d4ed8}.v302-box{border:1px solid #e5edf7;background:#f8fafc;border-radius:14px;padding:13px 14px;margin:11px 0}.v302-box h4{margin:0 0 8px;font-size:.95rem}.v302-box p{margin:0;white-space:pre-wrap;line-height:1.55}.v302-details{border:1px solid #e5edf7;background:#fff;border-radius:14px;margin:11px 0;overflow:hidden}.v302-details summary{cursor:pointer;font-weight:850;padding:13px 14px;background:#f8fafc}.v302-details[open] summary{border-bottom:1px solid #e5edf7}.v302-list{margin:0;padding:12px 14px 12px 34px}.v302-list li{margin:6px 0}.v302-muted{padding:12px 14px;margin:0;color:#64748b}.v302-linked{background:#eff6ff;border:1px solid #bfdbfe;border-radius:14px;padding:12px 14px;margin:10px 0;display:grid;gap:7px}.v302-thread{display:grid;gap:10px;padding:12px}.v302-msg{border-radius:12px;padding:10px 12px;background:#f8fafc;border:1px solid #e5edf7}.v302-msg.coach{background:#eff6ff;border-color:#bfdbfe}.v302-msg b{display:block;margin-bottom:4px}.v302-msg span{white-space:pre-wrap}.v302-empty{background:#fff;border:1px dashed #cbd5e1;border-radius:16px;padding:22px;color:#64748b}
@media(max-width:760px){.v302-appt-card{padding:14px;border-radius:16px}.v302-appt-head{display:block}.v302-badge{display:inline-block;margin-top:10px}.v302-box,.v302-details{border-radius:12px}}

/* V30.0.3 — Portail élève : média accueil + configuration Contenus */
.v3003-student-media{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:-4px}.v3003-media-card{background:#fff;border:1px solid var(--border-color);border-radius:18px;box-shadow:0 12px 32px rgba(15,23,42,.065);overflow:hidden}.v3003-media-head{height:44px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;border-bottom:1px solid #e5e7eb;background:#f8fafc}.v3003-media-head strong{font-size:.98rem;color:#0f172a}.v3003-media-head a{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;background:#eef2ff;color:#1d4ed8;text-decoration:none;font-weight:900}.v3003-frame{height:240px;background:#0f172a}.v3003-frame iframe{width:100%;height:100%;border:0;display:block}.v3003-empty{padding-bottom:18px}.v3003-empty p{padding:0 14px;color:#64748b}.v3003-admin-student-media{margin-top:18px;padding-top:18px;border-top:1px solid #e5e7eb;display:grid;gap:9px}.v3003-admin-title h3{margin:0 0 4px}.v3003-admin-title p{margin:0 0 8px;color:#64748b}.v3003-admin-student-media label{font-weight:800;font-size:.85rem}.v3003-admin-student-media input{width:100%;border:1px solid var(--border-color);border-radius:10px;padding:10px;font:inherit}.v3003-admin-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px}@media(max-width:900px){.v3003-student-media{grid-template-columns:1fr}.v3003-frame{height:210px}}@media(max-width:560px){.v3003-student-media{gap:12px}.v3003-media-head{height:40px}.v3003-frame{height:185px}}


/* V30.0.5 — Portail élève : ordre RDV avant Tâches + respiration menu */
#studentDashboard .sidebar-nav {
  padding-top: 14px !important;
  padding-bottom: 14px !important;
}
#studentDashboard .sidebar-nav .nav-item {
  padding-top: 10px !important;
  padding-bottom: 10px !important;
  gap: 10px !important;
}
#studentDashboard .sidebar-nav .nav-item .icon {
  margin-right: 1px !important;
}
@media (max-width: 768px) {
  #studentDashboard .sidebar-nav {
    padding-top: 18px !important;
    padding-bottom: 14px !important;
  }
  #studentDashboard .sidebar-nav .nav-item {
    padding-top: 10px !important;
    padding-bottom: 10px !important;
    line-height: 1.22 !important;
  }
}

/* ============================================================
   V30.0.6 — Correctif mobile Admin Messages / Tâches
   Objectif : éviter l'écrasement des colonnes sur iPhone.
   Desktop inchangé.
   ============================================================ */
@media (max-width: 768px){
  #adminDashboard.active #adminDashboardContent .v19-inbox{
    display:block!important;
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    overflow:visible!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    background:transparent!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-left{
    width:100%!important;
    max-height:none!important;
    min-height:0!important;
    overflow:visible!important;
    border:1px solid var(--border-color)!important;
    border-radius:16px!important;
    background:#fff!important;
    box-shadow:var(--shadow-premium)!important;
    margin-bottom:14px!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-head{
    padding:14px!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-head h1{
    font-size:1.15rem!important;
    line-height:1.2!important;
    margin-bottom:10px!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-head input,
  #adminDashboard.active #adminDashboardContent .v19-message-controls select{
    width:100%!important;
    min-height:42px!important;
    font-size:16px!important;
    box-sizing:border-box!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-message-controls{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-list{
    max-height:360px!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    padding:10px!important;
    display:grid!important;
    gap:10px!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-row{
    width:100%!important;
    box-sizing:border-box!important;
    grid-template-columns:38px minmax(0,1fr)!important;
    padding:11px!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-row b,
  #adminDashboard.active #adminDashboardContent .v19-inbox-row span{
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    line-height:1.25!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-main{
    display:block!important;
    width:100%!important;
    min-width:0!important;
    min-height:0!important;
    background:transparent!important;
    overflow:visible!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-title{
    display:block!important;
    width:100%!important;
    box-sizing:border-box!important;
    margin:0 0 12px!important;
    padding:14px!important;
    border:1px solid var(--border-color)!important;
    border-radius:16px!important;
    background:#fff!important;
    box-shadow:var(--shadow-premium)!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-title h2{
    font-size:1.15rem!important;
    line-height:1.2!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-title p{
    overflow-wrap:anywhere!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-title .v19-btnrow{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
    margin-top:12px!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-title .btn{
    width:100%!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-inbox-content{
    display:block!important;
    width:100%!important;
    padding:0!important;
    overflow:visible!important;
    min-height:0!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-thread-list,
  #adminDashboard.active #adminDashboardContent .v19-detail{
    display:block!important;
    width:100%!important;
    box-sizing:border-box!important;
    overflow:hidden!important;
    border-radius:16px!important;
    margin-bottom:12px!important;
    background:#fff!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-thread-list > .v19-panel-body,
  #adminDashboard.active #adminDashboardContent .v19-detail > .v19-panel-body{
    display:block!important;
    padding:12px!important;
    overflow:visible!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-task-row{
    width:100%!important;
    box-sizing:border-box!important;
    margin-bottom:10px!important;
    overflow:hidden!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-task-row b,
  #adminDashboard.active #adminDashboardContent .v19-task-row span{
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    line-height:1.3!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-box{
    margin-bottom:12px!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-work-visible,
  #adminDashboard.active #adminDashboardContent .v19-msg{
    overflow-wrap:anywhere!important;
    white-space:pre-wrap!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-textarea{
    width:100%!important;
    font-size:16px!important;
    box-sizing:border-box!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-btnrow{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
  }
  #adminDashboard.active #adminDashboardContent .v19-btnrow .btn{
    width:100%!important;
  }
}


/* ============================================================
   V30.0.7.1 — Messages admin : alignement des filtres
   Patch CSS uniquement. Corrige les libellés RECHERCHE / ÉLÈVE /
   STATUT / MODULE / PROGRAMME qui se coupaient dans la colonne gauche.
   ============================================================ */
.v19-inbox-head .v29410-toolbar-5{
  display:grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 10px 12px !important;
  align-items:end !important;
}
.v19-inbox-head .v29410-toolbar-5 > div:first-child{
  grid-column: 1 / -1 !important;
}
.v19-inbox-head .v29410-toolbar-5 label{
  display:block !important;
  white-space:nowrap !important;
  overflow:visible !important;
  text-overflow:clip !important;
  word-break:normal !important;
  overflow-wrap:normal !important;
  line-height:1.15 !important;
  min-height:14px !important;
  margin-bottom:6px !important;
  font-size:.68rem !important;
  letter-spacing:.015em !important;
}
.v19-inbox-head .v29410-toolbar-5 input,
.v19-inbox-head .v29410-toolbar-5 select,
.v19-inbox-head .v29410-select{
  min-width:0 !important;
  width:100% !important;
  box-sizing:border-box !important;
}
@media(max-width:640px){
  .v19-inbox-head .v29410-toolbar-5{
    grid-template-columns:1fr !important;
  }
  .v19-inbox-head .v29410-toolbar-5 > div:first-child{
    grid-column:auto !important;
  }
}

/* ============================================================
   V30.0.7.2 — Portail élève mobile : déconnexion toujours visible
   Le bloc utilisateur suit directement « Mon Profil » au lieu
   d'être repoussé en bas de l'écran. Desktop et admin inchangés.
   ============================================================ */
@media (max-width: 768px) {
  #studentDashboard .sidebar {
    height: 100vh !important;
    height: 100dvh !important;
    max-height: 100vh !important;
    max-height: 100dvh !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
  }

  #studentDashboard .sidebar-nav {
    flex: 0 0 auto !important;
    min-height: 0 !important;
    overflow: visible !important;
  }

  #studentDashboard .sidebar-footer {
    margin-top: 0 !important;
    padding-bottom: max(14px, env(safe-area-inset-bottom)) !important;
  }
}

/* ============================================================
   V30.0.7.3 — Portail admin mobile : déconnexion toujours accessible
   Même correction de mise en page que sur le portail élève.
   Desktop, portail élève et logique applicative inchangés.
   ============================================================ */
@media (max-width: 768px) {
  #adminDashboard .sidebar {
    height: 100vh !important;
    height: 100dvh !important;
    max-height: 100vh !important;
    max-height: 100dvh !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
  }

  #adminDashboard .sidebar-nav {
    flex: 0 0 auto !important;
    min-height: 0 !important;
    overflow: visible !important;
  }

  #adminDashboard .sidebar-footer {
    margin-top: 0 !important;
    padding-bottom: max(14px, env(safe-area-inset-bottom)) !important;
  }
}

/* Appels clients — module admin isolé, PC et mobile */
.vcr-page{max-width:1440px;margin:0 auto;color:#172033}
.vcr-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px;padding:24px 26px;border-radius:22px;background:linear-gradient(135deg,#111827,#263349);color:#fff;box-shadow:0 18px 44px rgba(15,23,42,.16)}
.vcr-hero h1{margin:4px 0 7px;color:#fff;font-size:2rem}.vcr-hero p{margin:0;max-width:760px;color:#d7deea;line-height:1.5}.vcr-eyebrow{text-transform:uppercase;font-size:.73rem;font-weight:900;letter-spacing:.08em;color:#8bd3ff}.vcr-sync{flex:0 0 auto;padding:8px 11px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(255,255,255,.08);font-size:.78rem;color:#e7edf6}
.vcr-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:16px}.vcr-kpis>div{padding:16px;border:1px solid #e3e9f2;border-radius:16px;background:#fff;box-shadow:0 8px 24px rgba(15,23,42,.05)}.vcr-kpis b{display:block;font-size:1.55rem;color:#111827}.vcr-kpis span{font-size:.82rem;font-weight:750;color:#64748b}.vcr-kpis .orange{border-left:4px solid #f59e0b}.vcr-kpis .green{border-left:4px solid #10b981}
.vcr-import{margin-bottom:16px;overflow:hidden;border:1px solid #dce5f0;border-radius:17px;background:#fff;box-shadow:0 8px 24px rgba(15,23,42,.05)}.vcr-import>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;padding:16px 18px;list-style:none;font-weight:900}.vcr-import>summary::-webkit-details-marker{display:none}.vcr-import>summary small{color:#64748b;font-weight:650}.vcr-import[open]>summary{border-bottom:1px solid #e8edf4}.vcr-import-body{padding:18px}.vcr-import-help{display:flex;flex-wrap:wrap;gap:7px 14px;margin-bottom:14px;color:#64748b;font-size:.86rem}.vcr-import-help b{width:100%;color:#172033}.vcr-file-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.vcr-file-grid label,.vcr-template label,.vcr-toolbar label,.vcr-follow label{display:grid;gap:6px;font-size:.78rem;font-weight:850;color:#475569}.vcr-file-grid input{width:100%;padding:10px;border:1px dashed #aebdce;border-radius:11px;background:#f8fafc}.vcr-import-result{display:inline-flex;margin-left:12px;padding:8px 10px;border-radius:10px;background:#ecfdf5;color:#047857;font-size:.8rem;font-weight:800}
.vcr-template{margin-bottom:14px;padding:14px 16px;border:1px solid #dce5f0;border-radius:15px;background:#fff}.vcr-template label small{font-weight:600;color:#7b8798}.vcr-template textarea{width:100%;min-height:68px;padding:10px 12px;border:1px solid #d6deea;border-radius:10px;resize:vertical;font:inherit;line-height:1.45}
.vcr-toolbar{display:grid;grid-template-columns:1.4fr repeat(4,minmax(150px,1fr));gap:10px;align-items:end;margin-bottom:16px;padding:14px;border:1px solid #dce5f0;border-radius:16px;background:#fff}.vcr-toolbar input,.vcr-toolbar select,.vcr-follow input,.vcr-follow select{width:100%;min-width:0;height:42px;padding:9px 10px;border:1px solid #d6deea;border-radius:10px;background:#fff;font:inherit;font-size:.88rem}
.vcr-list-head{display:flex;align-items:center;justify-content:space-between;margin:4px 2px 11px}.vcr-list-head h2{margin:0;font-size:1.15rem}.vcr-list-head span{color:#64748b;font-size:.82rem;font-weight:750}.vcr-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.vcr-card{min-width:0;padding:16px;border:1px solid #dfe7f1;border-radius:18px;background:#fff;box-shadow:0 9px 26px rgba(15,23,42,.055)}.vcr-card.is-no-phone{background:#fbfcfe}.vcr-card-head{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:11px;align-items:start}.vcr-avatar{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:13px;background:linear-gradient(135deg,#2563eb,#4f46e5);color:#fff;font-weight:900}.vcr-identity{min-width:0}.vcr-identity h3{margin:0 0 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1rem}.vcr-identity a,.vcr-identity>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.79rem;color:#64748b}.vcr-identity a{text-decoration:none;color:#35639a}.vcr-status{padding:5px 8px;border-radius:999px;white-space:nowrap;font-size:.69rem;font-weight:900}.vcr-status.blue{background:#dbeafe;color:#1d4ed8}.vcr-status.gray{background:#eef2f6;color:#536174}.vcr-status.orange{background:#fff0d2;color:#a55a00}.vcr-status.purple{background:#ede9fe;color:#6d28d9}.vcr-status.green{background:#dcfce7;color:#167244}.vcr-status.red{background:#fee2e2;color:#b42318}
.vcr-products{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.vcr-products span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:5px 8px;border-radius:8px;background:#f1f5f9;color:#475569;font-size:.72rem;font-weight:750}.vcr-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding:10px 0;border-top:1px solid #edf1f6;border-bottom:1px solid #edf1f6}.vcr-metrics div{min-width:0}.vcr-metrics b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.93rem}.vcr-metrics span{font-size:.67rem;color:#7b8798}.vcr-refund{margin-top:8px;color:#b42318;font-size:.74rem;font-weight:800}.vcr-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;margin-top:12px}.vcr-actions .btn{min-width:0;padding:9px 8px;font-size:.79rem}.vcr-actions .vcr-wa{border-color:#16a765;background:#16a765;color:#fff}.vcr-actions .vcr-wa:hover{background:#128653}.vcr-actions .btn:disabled{opacity:.42;cursor:not-allowed}
.vcr-last-contact{display:flex;flex-wrap:wrap;gap:5px 12px;padding:8px 0 0;color:#64748b;font-size:.69rem}.vcr-last-contact span:first-child{color:#334155}.vcr-notes-label{display:flex;justify-content:space-between;gap:8px;margin-top:10px;color:#475569;font-size:.75rem;font-weight:850}.vcr-notes-label small{color:#15803d;font-weight:750}
.vcr-actions.has-dossier{grid-template-columns:repeat(2,minmax(0,1fr))}.vcr-dossier-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;white-space:nowrap}
.vcr-phone-edit{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end;margin-top:11px;padding:10px;border:1px solid #dce5f0;border-radius:11px;background:#f8fafc}.vcr-phone-edit.missing{border-color:#f2c56f;background:#fffbeb}.vcr-phone-edit label{display:grid;gap:5px;font-size:.74rem;font-weight:850;color:#475569}.vcr-phone-edit input{width:100%;min-width:0;height:39px;padding:8px 10px;border:1px solid #cfd9e6;border-radius:9px;background:#fff;font:inherit;font-size:.87rem}.vcr-phone-edit small{grid-column:1/-1;color:#64748b;font-size:.69rem}.vcr-phone-edit.compact{margin-top:9px;padding:8px}.vcr-phone-edit.compact .btn{min-height:39px}
.vcr-follow{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:10px}.vcr-detail{margin-top:10px;border-top:1px solid #edf1f6}.vcr-detail summary{cursor:pointer;padding:10px 0 2px;color:#35639a;font-size:.79rem;font-weight:850}.vcr-detail textarea{width:100%;min-height:70px;margin-top:6px;padding:9px;border:1px solid #d6deea;border-radius:9px;resize:vertical;font:inherit;font-size:.82rem}.vcr-detail ul{display:grid;gap:5px;margin:10px 0 5px;padding:0;list-style:none}.vcr-detail li{display:flex;justify-content:space-between;gap:10px;font-size:.73rem}.vcr-detail li span{color:#64748b;text-align:right}.vcr-detail p{margin:8px 0 0;font-size:.75rem;color:#64748b}
.vcr-pagination{display:flex;align-items:center;justify-content:center;gap:14px;margin:18px 0}.vcr-pagination span{font-size:.82rem;font-weight:850;color:#64748b}.vcr-empty,.vcr-empty-main{grid-column:1/-1;padding:32px;border:1px dashed #bdc9d8;border-radius:16px;background:#fff;text-align:center;color:#64748b}.vcr-empty-main{display:grid;gap:6px;margin:16px 0}.vcr-empty-main b{color:#172033}.vcr-privacy{display:flex;gap:12px;margin-top:18px;padding:13px 15px;border:1px solid #fde2a9;border-radius:13px;background:#fffbeb;color:#7c5a13;font-size:.8rem}.vcr-privacy b{white-space:nowrap}.vcr-loading{padding:40px;text-align:center;color:#64748b}
@media(max-width:1180px){.vcr-toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}.vcr-toolbar label:first-child{grid-column:span 2}.vcr-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.vcr-grid{grid-template-columns:1fr}.vcr-kpis{grid-template-columns:repeat(2,1fr)}.vcr-file-grid{grid-template-columns:1fr}.vcr-import-result{display:flex;margin:10px 0 0}.vcr-hero{display:block}.vcr-sync{display:inline-flex;margin-top:14px}.vcr-follow{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.vcr-page{width:100%}.vcr-hero{margin:0 0 12px;padding:18px;border-radius:17px}.vcr-hero h1{font-size:1.48rem}.vcr-hero p{font-size:.9rem}.vcr-kpis{gap:8px}.vcr-kpis>div{padding:12px}.vcr-kpis b{font-size:1.25rem}.vcr-import>summary{display:grid;padding:14px}.vcr-import-body{padding:14px}.vcr-toolbar{grid-template-columns:1fr;padding:12px}.vcr-toolbar label:first-child{grid-column:auto}.vcr-toolbar input,.vcr-toolbar select,.vcr-follow input,.vcr-follow select,.vcr-phone-edit input{font-size:16px}.vcr-card{padding:13px;border-radius:15px}.vcr-card-head{grid-template-columns:40px minmax(0,1fr)}.vcr-avatar{width:40px;height:40px}.vcr-status{grid-column:2;justify-self:start}.vcr-metrics{grid-template-columns:repeat(2,1fr);gap:10px}.vcr-actions,.vcr-actions.has-dossier{grid-template-columns:1fr 1fr}.vcr-actions .btn:last-child{grid-column:auto}.vcr-follow{grid-template-columns:1fr}.vcr-phone-edit{grid-template-columns:1fr}.vcr-phone-edit .btn{width:100%}.vcr-template textarea,.vcr-detail textarea{font-size:16px}.vcr-privacy{display:grid;gap:4px}.vcr-privacy b{white-space:normal}}
