/* --- CORE THEME (DARK LUXURY) --- */
        :root {
            --bg-dark: #090909;
            --bg-panel: #141414;
            --bg-lighter: #1f1f1f;
            --gold: #d4af37;
            --gold-dim: #8a7020;
            --text-main: #f0f0f0;
            --text-muted: #888;
            --success: #00c851;
            --danger: #ff4444;
            --accent: #2196f3;
        }

        html {
            overflow-x: hidden;
            -webkit-text-size-adjust: 100%;
        }

        @media (prefers-reduced-motion: no-preference) {
            html { scroll-behavior: smooth; }
        }
        @media (prefers-reduced-motion: reduce) {
            html { scroll-behavior: auto; }
        }


/* --- Fenêtre Modale (Pop-up) --- */
.modal-overlay {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(15, 23, 42, 0.6); /* Fond sombre bleuté */
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1000;
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease;
    backdrop-filter: blur(4px);
}

.modal-overlay.active {
    opacity: 1;
    visibility: visible;
}

.modal-content {
    background: white;
    padding: 2rem;
    border-radius: 12px;
    width: 90%;
    max-width: 600px;
    transform: translateY(-20px);
    transition: all 0.3s ease;
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
}

.modal-overlay.active .modal-content {
    transform: translateY(0);
}

.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid #e5e7eb;
    padding-bottom: 1rem;
}

.close-modal-btn {
    background: none;
    border: none;
    font-size: 1.5rem;
    cursor: pointer;
    color: #64748b;
}

.close-modal-btn:hover { color: #ef4444; }

.form-group {
    margin-bottom: 1rem;
}

.form-group label {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: 500;
    color: #334155;
}

.form-group input, .form-group select {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font-family: inherit;
}
        * { margin: 0; padding: 0; box-sizing: border-box; }
        body { font-family: 'Montserrat', sans-serif; background: var(--bg-dark); color: var(--text-main); min-height: 100vh; min-height: 100dvh; overflow: hidden; -webkit-tap-highlight-color: rgba(212, 175, 55, 0.12); touch-action: manipulation; }
        
        /* --- UTILIDADES --- */
        .text-gold { color: var(--gold) !important; }
        .hidden { display: none !important; }
        .d-none { display: none !important; }
        .btn { border: none; border-radius: 4px; padding: 10px 20px; font-weight: 700; cursor: pointer; transition: 0.3s; text-transform: uppercase; font-size: 0.8rem; }
        .btn-gold { background: linear-gradient(135deg, var(--gold), var(--gold-dim)); color: #000; box-shadow: 0 4px 15px rgba(212, 175, 55, 0.2); }
        .btn-gold:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(212, 175, 55, 0.4); }
        .btn-dark { background: #333; color: white; border: 1px solid #444; }
        .btn-dark:hover { background: #444; border-color: var(--gold); }
        .btn-outline { background: transparent; border: 1px solid var(--gold); color: var(--gold); }
        
        .btn-icon { background: transparent; border: none; color: #888; cursor: pointer; margin: 0 5px; font-size: 1rem; transition: 0.2s; }
        .btn-icon:hover { color: var(--gold); transform: scale(1.1); }
        .btn-icon.edit:hover { color: var(--accent); }
        .btn-icon.delete:hover { color: var(--danger); }
        
        /* --- LOGO STYLE --- */
        .logo-img { height: 50px; width: auto; display: block; }
        .logo-center { margin: 0 auto 20px auto; height: 80px; }

        /* --- LAYOUT GLOBAL --- */
        .app-container { display: flex; height: 100vh; height: 100dvh; min-height: 0; }
        
        /* Sidebar */
        .sidebar { width: 260px; background: var(--bg-panel); border-right: 1px solid #333; display: flex; flex-direction: column; z-index: 100; }
        .brand { padding: 25px; border-bottom: 1px solid #222; display: flex; align-items: center; gap: 10px; }
        .brand span { font-family: 'Playfair Display', serif; font-size: 1.2rem; color: white; }
        
        .menu { flex: 1; padding: 20px 0; overflow-y: auto; }
        .menu-item { padding: 15px 25px; color: var(--text-muted); cursor: pointer; display: flex; align-items: center; gap: 15px; transition: color 0.2s ease, background 0.2s ease, border-color 0.2s ease; border-left: 3px solid transparent; }
        .menu-item:hover { background: #1a1a1a; color: var(--gold); }
        /* Sidebar dashboard — onglet actif (desktop) : marque blanche à gauche */
        .menu-item.active {
            background: rgba(255, 255, 255, 0.06);
            color: #fff;
            border-left-color: #fff;
        }
        .menu-item:active { transform: scale(0.99); }
        .user-profile { padding: 20px; border-top: 1px solid #222; display: flex; align-items: center; gap: 10px; }
        .avatar { width: 40px; height: 40px; background: #333; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--gold); }

        /* Main Content */
        .main-area { flex: 1; overflow-y: auto; background: var(--bg-dark); display: flex; flex-direction: column; }
        .top-bar { min-height: 70px; border-bottom: 1px solid #222; display: flex; align-items: center; justify-content: space-between; padding: 0 40px; background: rgba(20,20,20,0.95); backdrop-filter: blur(10px); position: sticky; top: 0; z-index: 90; }

        /* --- SESSION CONTROL BAR --- */
        .session-control-bar {
            background: #111; border-bottom: 1px solid #333; padding: 15px 40px;
            display: flex; align-items: center; gap: 20px;
        }
        .session-select-wrapper { display: flex; align-items: center; gap: 10px; flex: 1; }
        .session-dropdown { 
            background: #000; color: var(--gold); border: 1px solid #333; padding: 10px; 
            border-radius: 4px; font-family: 'Montserrat'; font-weight: bold; width: 300px;
        }

        /* --- VISTA: LANDING (LOGIN) --- */
        #landing-view {
            position: fixed;
            inset: 0;
            z-index: 200;
            min-height: 100dvh;
            display: flex;
            flex-direction: column;
            background: url('https://images.unsplash.com/photo-1497215728101-856f4ea42174?q=80&w=2070&auto=format&fit=crop') center/cover;
        }
        .landing-overlay {
            flex: 1 1 auto;
            min-height: 0;
            display: flex;
            flex-direction: column;
            text-align: center;
            padding: 0;
            padding-bottom: env(safe-area-inset-bottom, 0px);
            overflow-x: hidden;
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
            background: rgba(0,0,0,0.82);
        }
        /* Landing — une seule liste de liens (#landing-nav-panel) */
        #landing-view .main-nav.landing-mnav {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            align-items: center;
            gap: 12px;
            position: sticky;
            top: 0;
            z-index: 240;
            flex-shrink: 0;
            padding: 0;
            border-bottom: 1px solid rgba(212, 175, 55, 0.22);
            background: rgba(4, 4, 6, 0.94);
            backdrop-filter: blur(14px);
            -webkit-backdrop-filter: blur(14px);
        }
        #landing-view .landing-mnav-bar {
            display: flex;
            align-items: center;
            justify-content: flex-start;
            gap: 12px;
            flex: 0 0 auto;
            min-width: 0;
            min-height: 64px;
            padding: 10px 0 10px max(16px, env(safe-area-inset-left, 0px));
            box-sizing: border-box;
        }
        #landing-view .pubnav-scrim {
            display: none;
        }
        #landing-view .landing-brand {
            display: flex;
            align-items: center;
            gap: 12px;
            min-width: 0;
            flex-shrink: 0;
            text-decoration: none;
            color: #fff;
            font-family: 'Playfair Display', serif;
            font-size: 1.2rem;
            font-weight: 700;
        }
        /* Desktop (défaut) : pas de tiroir — entête fermeture masquée */
        #landing-view .landing-nav-drawer-head {
            display: none;
        }
        #landing-view .landing-mnav-burger,
        #landing-view .pubnav-scrim {
            display: none;
        }
        #landing-view .landing-nav-panel {
            display: flex;
            align-items: center;
            flex: 1;
            min-width: 0;
            margin-left: auto;
            position: static;
            transform: none;
            visibility: visible;
            pointer-events: auto;
            width: auto;
            height: auto;
            padding: 0;
            background: transparent;
            border: none;
            box-shadow: none;
            overflow: visible;
        }
        #landing-view .landing-nav-links {
            display: flex;
            align-items: center;
            justify-content: flex-end;
            gap: 10px;
            flex-wrap: wrap;
            width: 100%;
        }
        /* Landing — lien actif (desktop) : barre blanche à gauche */
        #landing-view .landing-nav-links .nav-link,
        #landing-view .landing-nav-links .btn-nav {
            text-decoration: none;
            border-left: 3px solid transparent;
            transition: color 0.2s ease, background 0.2s ease, border-color 0.2s ease;
        }
        #landing-view .landing-nav-links .nav-link.is-active,
        #landing-view .landing-nav-links .btn-nav.is-active {
            color: #fff;
            border-left-color: #fff;
            background: rgba(255, 255, 255, 0.08);
        }
        /* Sélecteur de langue — desktop (défaut) */
        #landing-view .lang-switcher {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            flex-shrink: 0;
            margin-left: 6px;
            padding-left: 12px;
            border-left: 1px solid rgba(255, 255, 255, 0.14);
        }
        #landing-view .lang-icon {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            font-size: 0.95rem;
            line-height: 1;
            opacity: 0.75;
        }
        #landing-view .lang-switcher-label {
            display: none;
        }
        #landing-view .lang-btn-label {
            display: inline-block;
            font-size: inherit;
            font-weight: inherit;
            letter-spacing: 0.05em;
            line-height: 1;
        }
        #landing-view .lang-btn::before,
        #landing-view .lang-btn::after {
            content: none !important;
            display: none !important;
        }
        #landing-view .lang-switcher-options {
            display: inline-flex;
            align-items: center;
            gap: 2px;
        }
        #landing-view .lang-btn {
            background: transparent;
            border: none;
            color: rgba(255, 255, 255, 0.55);
            font-family: 'Montserrat', system-ui, sans-serif;
            font-size: 0.72rem;
            font-weight: 700;
            letter-spacing: 0.06em;
            padding: 4px 6px;
            cursor: pointer;
            border-radius: 4px;
            transition: color 0.2s ease, opacity 0.2s ease, background 0.2s ease;
            opacity: 0.5;
        }
        #landing-view .lang-btn:hover {
            color: rgba(255, 255, 255, 0.9);
            opacity: 0.85;
        }
        #landing-view .lang-btn.is-active,
        #landing-view .lang-btn.active {
            color: var(--gold);
            opacity: 1;
            text-decoration: underline;
            text-underline-offset: 3px;
        }
        #landing-view .lang-divider {
            color: rgba(255, 255, 255, 0.22);
            font-size: 0.68rem;
            font-weight: 300;
            user-select: none;
            pointer-events: none;
        }
        body.landing-mnav-scroll-lock {
            overflow: hidden;
        }
        .landing-brand img { width: 44px; height: 44px; object-fit: contain; max-width: 100%; flex-shrink: 0; }
        .btn-nav { background: transparent; border: 1px solid transparent; color: #ddd; border-radius: 4px; padding: 10px 14px; font-weight: 700; cursor: pointer; }
        .btn-nav:hover { color: var(--gold); border-color: rgba(212,175,55,0.35); }
        .btn-nav:active { transform: scale(0.98); }
        .btn-nav.btn-outline { border-color: rgba(212,175,55,0.65); color: var(--gold); }
        .btn-nav.btn-gold { background: linear-gradient(135deg, var(--gold), var(--gold-dim)); color: #000; }
        .landing-hero {
            flex: 1 1 auto;
            min-height: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 48px 24px 64px;
        }
        .hero-content { width: min(880px, 100%); }
        .hero-content h1 { color: #fff; font-size: clamp(2.4rem, 6vw, 4.8rem); line-height: 1.02; margin-bottom: 20px; }
        .hero-content p { color: #ddd; font-size: 1.1rem; max-width: 620px; margin: 0 auto 32px; line-height: 1.7; }
        .hero-actions { display: flex; justify-content: center; gap: 14px; flex-wrap: wrap; }
        .btn-main { background: linear-gradient(135deg, var(--gold), var(--gold-dim)); color: #000; border: none; border-radius: 4px; padding: 14px 22px; font-weight: 800; cursor: pointer; letter-spacing: 0; }
        .btn-main:active { transform: scale(0.98); filter: brightness(1.05); }
        .btn-main-dark { background: rgba(255,255,255,0.08); color: #fff; border: 1px solid rgba(255,255,255,0.22); }
        .landing-info { max-width: 840px; margin: -74px auto 44px; padding: 26px; background: rgba(20,20,20,0.86); border: 1px solid rgba(212,175,55,0.35); border-radius: 8px; }
        .landing-info h2 { color: var(--gold); margin-bottom: 10px; }
        .landing-info p { color: #ddd; line-height: 1.7; }
        .landing-modal { position: fixed; inset: 0; background: rgba(0,0,0,0.72); display: flex; align-items: center; justify-content: center; padding: 24px; z-index: 400; }
        .landing-close { position: absolute; top: 12px; right: 14px; background: transparent; border: none; color: #999; font-size: 1.4rem; cursor: pointer; }
        .registro-box { position: relative; background: rgba(20,20,20,0.97); padding: 34px; border-radius: 8px; width: 100%; max-width: 720px; border: 1px solid var(--gold); box-shadow: 0 0 50px rgba(0,0,0,0.8); text-align: left; }
        .registro-box h3 { margin-bottom: 10px; }
        .registro-copy { color: #aaa; margin-bottom: 18px; line-height: 1.6; }
        .registro-form { display: flex; flex-direction: column; gap: 12px; }
        .registro-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
        .registro-form .registro-grid { margin-bottom: 0; }
        .registro-form .login-input { margin: 0; background: #2b2d31; border-color: #444; }
        .registro-modalidad { border-color: var(--gold) !important; font-weight: 800; }
        .registro-payment-zone { text-align: center; margin-top: 4px; }
        .registro-payment-zone p { color: var(--gold); font-weight: 800; margin-bottom: 10px; }
        .registro-payment-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
        .pay-btn { color: white; border: none; padding: 12px; border-radius: 5px; cursor: pointer; font-weight: 800; display: flex; align-items: center; justify-content: center; gap: 8px; }
        .pay-btn.flow { background: #f37d21; }
        .pay-btn.paypal { background: #003087; }
        .login-box { background: rgba(20,20,20,0.95); padding: 40px; border-radius: 8px; width: 100%; max-width: 400px; border: 1px solid var(--gold); box-shadow: 0 0 50px rgba(0,0,0,0.8); }
        .login-input { width: 100%; padding: 15px; margin: 5px 0 15px; background: #000; border: 1px solid #333; color: white; border-radius: 4px; }
        body.modal-scroll-lock { overflow: hidden !important; }
        .maxpro-overlay { background: rgba(0,0,0,0.7); backdrop-filter: blur(8px); opacity: 0; visibility: hidden; transition: opacity 0.2s ease, visibility 0.2s ease; z-index: 1000; }
        .maxpro-overlay.is-active { opacity: 1; visibility: visible; }
        .registro-box.maxpro-modal { background: #18181b; border: none; border-top: 4px solid var(--gold); border-radius: 8px; padding: 40px; max-width: 650px; max-height: 90vh; overflow-y: auto; box-shadow: 0 25px 50px -12px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.05); font-family: 'Montserrat', system-ui, -apple-system, sans-serif; opacity: 0; transform: scale(0.8) translateY(30px); transition: opacity 0.5s cubic-bezier(0.34, 1.56, 0.64, 1), transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); }
        .maxpro-overlay.is-active .maxpro-modal { opacity: 1; transform: scale(1) translateY(0); }
        #landing-view #landing-login-modal .login-box {
            position: relative;
            opacity: 0;
            transform: scale(0.92) translateY(18px);
            transition: opacity 0.45s cubic-bezier(0.34, 1.56, 0.64, 1), transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
        }
        #landing-view #landing-login-modal.is-active .login-box {
            opacity: 1;
            transform: scale(1) translateY(0);
        }
        .maxpro-modal-header h2 { color: var(--gold); font-size: 1.8rem; font-weight: 700; margin: 0 0 8px; letter-spacing: 0; }
        .maxpro-modal-header p { color: #a1a1aa; font-size: 0.95rem; line-height: 1.5; margin: 0 0 30px; }
        .maxpro-close-btn { top: 18px; right: 18px; width: 34px; height: 34px; border-radius: 50%; color: #71717a; font-size: 1.8rem; display: inline-flex; align-items: center; justify-content: center; transition: background 0.2s ease, color 0.2s ease; }
        .maxpro-close-btn:hover { background: rgba(255,255,255,0.08); color: #fff; }
        .registro-form.maxpro-form { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
        .maxpro-form .input-group, .maxpro-form .full-width, .maxpro-form #zona-presencial, .maxpro-form #btn-registro-online, .maxpro-form #registro-message { grid-column: 1 / -1; }
        .registro-tunnel { position: relative; width: 100%; }
        .registro-step-form {
            transition: opacity 0.2s ease, transform 0.2s ease;
        }
        .registro-step-form.is-hidden-step {
            opacity: 0;
            transform: translateY(-12px);
            pointer-events: none;
            position: absolute;
            left: 0;
            right: 0;
            visibility: hidden;
        }
        .registro-step-pago {
            display: none;
            opacity: 0;
            transform: translateY(16px);
            transition: opacity 0.2s ease, transform 0.2s ease;
            text-align: center;
            padding: 8px 0 4px;
        }
        .registro-step-pago.is-active {
            display: block;
            opacity: 1;
            transform: translateY(0);
        }
        .registro-pago-title {
            color: var(--gold);
            font-size: 1.45rem;
            font-weight: 800;
            margin: 0 0 12px;
            letter-spacing: 0.02em;
        }
        .registro-pago-amount {
            color: #e4e4e7;
            font-weight: 700;
            font-size: 1.05rem;
            margin: 0 0 20px;
            line-height: 1.5;
        }
        .registro-step-pago .registro-payment-zone {
            margin-bottom: 18px;
        }
        .registro-step-pago .registro-payment-actions {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 12px;
        }
        .registro-step-pago .pay-btn.flow,
        .registro-step-pago .btn-flow {
            background: #F27830;
            color: #fff;
            box-shadow: 0 4px 15px rgba(242, 120, 48, 0.35);
        }
        .registro-step-pago .pay-btn.paypal,
        .registro-step-pago .btn-paypal {
            background: #FFC439;
            color: #003087;
            box-shadow: 0 4px 15px rgba(255, 196, 57, 0.35);
            text-decoration: none;
        }
        .registro-back-btn {
            margin-top: 8px;
            width: 100%;
            padding: 12px 16px;
            border-radius: 8px;
            border: 1px solid #3f3f46;
            background: transparent;
            color: #a1a1aa;
            font-weight: 700;
            font-size: 0.92rem;
            cursor: pointer;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
        }
        .registro-back-btn:hover {
            color: #fff;
            border-color: var(--gold);
            background: rgba(255, 255, 255, 0.04);
        }
        .maxpro-form .input-group:nth-child(-n+6) { grid-column: auto; }
        .maxpro-form .login-input, .maxpro-form input, .maxpro-form select { width: 100%; margin: 0; background: #27272a; border: 1px solid #3f3f46; color: #e4e4e7; padding: 14px 16px; border-radius: 8px; font-size: 0.95rem; transition: border-color 0.3s ease, box-shadow 0.3s ease, background 0.3s ease; }
        .maxpro-form input::placeholder { color: #71717a; }
        .maxpro-form input:focus, .maxpro-form select:focus { outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(212,175,55,0.15); background: #1f1f22; }
        .maxpro-form .registro-modalidad { border-color: #3f3f46 !important; font-weight: 700; }
        .registro-field-label { color: var(--gold); display: block; font-size: 0.78rem; font-weight: 800; margin-bottom: 8px; text-transform: uppercase; }
        .maxpro-form .registro-payment-zone { text-align: center; margin-top: 0; padding: 16px; background: rgba(255,255,255,0.035); border: 1px solid rgba(212,175,55,0.18); border-radius: 8px; }
        .maxpro-form .registro-payment-zone p { color: var(--gold); font-weight: 800; margin-bottom: 12px; }
        .maxpro-form .registro-mode-note { color: #a1a1aa; line-height: 1.5; padding: 14px 16px; background: rgba(255,255,255,0.035); border: 1px solid rgba(212,175,55,0.18); border-radius: 8px; text-align: center; }
        .maxpro-form .pay-btn { min-height: 48px; border-radius: 8px; transition: transform 0.25s ease, box-shadow 0.25s ease, filter 0.25s ease; }
        .maxpro-form .pay-btn:hover { transform: translateY(-2px); filter: brightness(1.08); box-shadow: 0 8px 20px rgba(0,0,0,0.24); }
        .maxpro-submit-btn { grid-column: 1 / -1; background: var(--gold); color: #18181b; font-weight: 800; font-size: 1.05rem; padding: 16px; border: none; border-radius: 8px; cursor: pointer; margin-top: 0; width: 100%; transition: background 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease; }
        .maxpro-submit-btn:hover { background: #f1c40f; transform: translateY(-2px); box-shadow: 0 8px 20px rgba(212,175,55,0.3); }
        .profile-tab { min-height: 100%; padding: 40px 20px; display: flex; align-items: flex-start; justify-content: center; }
        .profile-security-card { width: 100%; max-width: 500px; background: #18181b; border-top: 4px solid var(--gold); border-radius: 8px; padding: 40px; box-shadow: 0 25px 50px -12px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.05); }
        .profile-security-form.maxpro-form { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
        .profile-security-form .input-group { grid-column: 1 / -1 !important; }
        .password-feedback { grid-column: 1 / -1; font-size: 0.85rem; padding: 10px 12px; border-radius: 8px; }
        .password-feedback-error { color: #fca5a5; background: rgba(220,38,38,0.08); border: 1px solid rgba(239,68,68,0.35); }
        .password-feedback-success { color: #86efac; background: rgba(34,197,94,0.08); border: 1px solid rgba(34,197,94,0.35); }

        /* --- VISTA: ADMIN PANEL --- */
        .stats-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; padding: 30px; }
        .stat-card { background: var(--bg-lighter); padding: 25px; border-radius: 8px; border-top: 3px solid #333; }
        .university-overview { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; padding: 0 30px 24px; }
        .university-kpi { background: #101010; border: 1px solid #2b2b2b; border-left: 3px solid var(--gold); border-radius: 8px; padding: 16px; min-height: 96px; }
        .university-kpi span { display: block; color: #8f8f8f; font-size: 0.72rem; font-weight: 800; text-transform: uppercase; }
        .university-kpi strong { display: block; color: #fff; font-size: 1.45rem; margin: 6px 0; }
        .university-kpi small { color: #aaa; font-size: 0.76rem; }
        .tabs-admin-finance { display: flex; gap: 10px; padding: 0 30px 20px; flex-wrap: wrap; }
        .tabs-admin-finance button { background: #111; color: #aaa; border: 1px solid #333; border-radius: 4px; padding: 10px 14px; font-weight: 700; cursor: pointer; }
        .tabs-admin-finance button.active { color: #000; background: var(--gold); border-color: var(--gold); }
        .table-wrapper { padding: 0 30px 30px; flex: 0 0 auto; }
        .data-table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
        .data-table th { text-align: left; padding: 15px; background: #111; color: var(--gold); text-transform: uppercase; font-size: 0.8rem; }
        .data-table td { padding: 15px; border-bottom: 1px solid #222; color: #ccc; }
        .director-dashboard-shell { padding: 30px; overflow-y: auto; min-height: 100%; }
        .director-dashboard-header { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 24px; padding: 24px; background: linear-gradient(135deg, rgba(26,45,84,0.9), rgba(20,20,20,0.96)); border: 1px solid rgba(212,175,55,0.25); border-radius: 8px; }
        .director-dashboard-header h2 { color: #fff; margin: 6px 0 8px; font-size: 1.8rem; }
        .director-dashboard-header p { color: #b8c2d6; margin: 0; line-height: 1.5; }
        .director-eyebrow { color: var(--gold); font-size: 0.75rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; }
        .director-finance-panel { display: grid; grid-template-columns: minmax(260px, 0.8fr) minmax(0, 1.2fr); gap: 18px; margin-bottom: 22px; padding: 20px; background: #101010; border: 1px solid rgba(212,175,55,0.22); border-radius: 8px; }
        .director-finance-total span { display: block; color: #8fa3c7; font-size: 0.78rem; font-weight: 800; text-transform: uppercase; margin-bottom: 8px; }
        .director-finance-total strong { display: block; color: var(--gold); font-size: 2.2rem; line-height: 1; }
        .director-finance-total p { margin: 10px 0 0; color: #b8c2d6; line-height: 1.45; }
        .director-finance-filters { display: grid; grid-template-columns: repeat(3, minmax(140px, 1fr)); gap: 14px; align-items: end; }
        .director-finance-filters label { color: #d9e2f2; font-size: 0.78rem; font-weight: 800; text-transform: uppercase; }
        .director-finance-filters input, .director-finance-filters select { width: 100%; margin-top: 7px; padding: 11px 12px; background: #0b0f1a; border: 1px solid #263149; border-radius: 6px; color: #fff; font-weight: 700; }
        .director-finance-field.is-hidden { display: none; }
        .director-chart-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.65fr); gap: 20px; margin-bottom: 22px; }
        .director-chart-card, .director-audit-table-card { background: #101010; border: 1px solid #2a2f3d; border-radius: 8px; padding: 20px; box-shadow: 0 18px 45px rgba(0,0,0,0.22); }
        .director-chart-title { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 14px; }
        .director-chart-title span { color: #8fa3c7; font-size: 0.75rem; font-weight: 800; text-transform: uppercase; }
        .director-chart-title strong { color: var(--gold); }
        .director-chart-card canvas { width: 100% !important; height: 280px !important; }
        .director-audit-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 16px; }
        .director-audit-toolbar h3 { color: #fff; margin-bottom: 4px; }
        .director-audit-toolbar p { color: #8f8f8f; margin: 0; font-size: 0.85rem; }
        .director-audit-toolbar .login-input { max-width: 340px; margin: 0; }
        .director-table-scroll { overflow-x: auto; border: 1px solid #252525; border-radius: 8px; }
        .director-audit-table td { vertical-align: top; }
        .audit-action-pill { display: inline-flex; padding: 5px 8px; border-radius: 999px; background: rgba(212,175,55,0.14); color: var(--gold); border: 1px solid rgba(212,175,55,0.28); font-size: 0.72rem; font-weight: 800; }
        .audit-detail-text { max-width: 520px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #aeb6c9; }
        @media (max-width: 980px) {
            .director-finance-panel { grid-template-columns: 1fr; }
            .director-finance-filters { grid-template-columns: repeat(2, minmax(140px, 1fr)); }
            .director-chart-grid { grid-template-columns: 1fr; }
            .director-dashboard-header, .director-audit-toolbar { align-items: flex-start; flex-direction: column; }
            .director-audit-toolbar .login-input { max-width: none; width: 100%; }
        }
        @media (max-width: 620px) {
            .director-finance-filters { grid-template-columns: 1fr; }
        }
        .student-name-button { background: transparent; border: none; color: #fff; font-weight: 800; cursor: pointer; padding: 0; text-align: left; }
        .student-name-button:hover { color: var(--gold); text-decoration: underline; }
        .online-badge { display: inline-block; margin-left: 8px; padding: 3px 6px; border-radius: 4px; background: rgba(33,150,243,0.14); color: var(--accent); font-weight: 800; font-size: 0.65rem; }
        
        .book-check { cursor: pointer; opacity: 0.3; transition: 0.2s; display: inline-flex; flex-direction: column; align-items: center; margin: 0 5px; }
        .book-check.active { opacity: 1; color: var(--success); }
        
        /* --- VISTA: ESTUDIANTE LMS --- */
        .lms-hero { height: 250px; background: linear-gradient(to bottom, rgba(0,0,0,0.3), var(--bg-dark)), url('https://images.unsplash.com/photo-1516321318423-f06f85e504b3?ixlib=rb-1.2.1&auto=format&fit=crop&w=1920&q=80'); background-size: cover; padding: 40px; display: flex; align-items: flex-end; }
        .lms-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 30px; padding: 30px; }
        .video-player { aspect-ratio: 16/9; background: #000; border-radius: 8px; border: 1px solid #333; display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; }
        .video-player:has(.private-video-card) {
            aspect-ratio: auto;
            height: auto;
            min-height: 0;
            align-items: stretch;
            overflow: hidden;
        }
        .video-player:has(.private-video-card) .private-video-card {
            position: relative;
            inset: auto;
            width: 100%;
            max-width: 100%;
            min-width: 0;
            box-sizing: border-box;
        }
        .video-player:has(.private-video-card) .private-video-shell {
            flex: none;
            width: 100%;
            max-width: 100%;
            aspect-ratio: 16 / 9;
            min-height: 200px;
            overflow: hidden;
            contain: layout paint;
        }
        .student-video-panel {
            width: 100%;
            max-width: 100%;
            min-width: 0;
        }
        .student-video-meta {
            width: 100%;
            max-width: 100%;
            min-width: 0;
            margin-top: 10px;
        }
        .student-video-meta .private-video-footer {
            border-radius: 14px;
            border: 1px solid rgba(255, 255, 255, 0.08);
            border-top: 1px solid rgba(255, 255, 255, 0.08);
        }
        #view-student,
        #view-student #tab-lms,
        #view-student .student-lms-grid,
        #view-student .student-video-panel,
        #view-student .student-syllabus-panel {
            max-width: 100%;
            min-width: 0;
        }
        #view-student #tab-lms {
            overflow-x: hidden;
        }
        #view-student .student-video-stage {
            width: 100%;
            max-width: 100%;
            min-width: 0;
            aspect-ratio: auto;
            height: auto;
            min-height: 0;
            display: block;
            overflow: hidden;
        }
        #view-student .student-video-stage .private-video-card,
        #view-student .student-video-stage .private-video-fallback {
            position: relative;
            inset: auto;
            width: 100%;
            max-width: 100%;
            min-width: 0;
            box-sizing: border-box;
        }
        #view-student .student-video-stage .private-video-shell {
            flex: none;
            width: 100%;
            max-width: 100%;
            min-width: 0;
            aspect-ratio: 16 / 9;
            min-height: 200px;
            overflow: hidden;
            contain: layout paint;
            touch-action: pan-y;
        }
        #view-student .student-video-stage .private-video-shell iframe,
        #view-student .student-video-stage .private-video-shell video {
            width: 100% !important;
            max-width: 100%;
            min-width: 0;
            left: 0;
            right: 0;
        }
        #view-student .private-video-title {
            flex-shrink: 0;
            min-width: 0;
        }
        #view-student .private-video-name {
            display: block;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        #view-student .private-video-footer {
            flex-direction: column;
            align-items: stretch;
            gap: 10px;
        }
        #view-student .private-video-actions,
        #view-student .private-video-action-btn {
            width: 100%;
            max-width: 100%;
        }
        #view-student .private-video-action-btn {
            min-height: 48px;
        }
        .student-video-placeholder {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 12px;
            padding: 24px;
            text-align: center;
            color: #94a3b8;
        }
        .student-video-placeholder i {
            font-size: 3.5rem;
            opacity: 0.75;
        }
        .student-video-placeholder p {
            margin: 0;
            max-width: 280px;
            line-height: 1.5;
            font-size: 0.95rem;
        }
        .syllabus-item { background: var(--bg-lighter); padding: 15px; margin-bottom: 10px; border-radius: 4px; cursor: pointer; display: flex; justify-content: space-between; align-items: center; border-left: 3px solid transparent; }
        .syllabus-item.active { background: #252525; border-left-color: var(--gold); }
        .student-module-accordion { margin-bottom: 12px; border: 1px solid #2f2f2f; border-radius: 10px; overflow: hidden; background: #151515; }
        .student-module-header { width: 100%; background: #1b1b1b; color: #f3f4f6; border: none; padding: 14px 16px; display: flex; align-items: center; justify-content: space-between; font-weight: 700; cursor: pointer; }
        .student-module-header i { transition: transform 0.25s ease; }
        .student-module-accordion.is-open .student-module-header i { transform: rotate(180deg); }
        .student-module-content { display: none; padding: 12px; border-top: 1px solid #2f2f2f; }
        .student-module-content.active { display: block; }
        .student-video-button { width: 100%; text-align: left; border-top-width: 0; margin-bottom: 8px; }
        .student-video-button.is-locked { opacity: 0.55; cursor: not-allowed; border-left-color: #444; }
        .student-video-button.is-completed { border-left-color: var(--success); }
        .student-video-status { display: inline-flex; align-items: center; gap: 8px; font-size: 0.75rem; color: #aaa; margin-top: 6px; }
        .student-video-status.locked { color: #f59e0b; }
        .student-video-status.completed { color: var(--success); }
        .student-video-status.next-up { color: #38bdf8; }
        .syllabus-item.student-video-button.is-next-up { border-color: rgba(56, 189, 248, 0.55) !important; box-shadow: 0 0 0 1px rgba(56, 189, 248, 0.25); }
        .student-module-accordion.is-module-locked { opacity: 0.92; border-color: rgba(245, 158, 11, 0.35); }
        .student-module-lock-pill { margin-left: auto; margin-right: 8px; color: #fbbf24; font-size: 0.85rem; }
        .student-module-lock-banner { margin: 0 0 10px; padding: 10px 12px; border-radius: 8px; background: rgba(245, 158, 11, 0.1); border: 1px solid rgba(245, 158, 11, 0.35); color: #fde68a; font-size: 0.85rem; }
        .student-module-exam-panel { margin-top: 12px; padding-top: 12px; border-top: 1px dashed #333; }
        .student-module-exam-btn { width: 100%; border: none; border-radius: 8px; padding: 12px 14px; background: linear-gradient(135deg, #0ea5e9, #2563eb); color: #fff; font-weight: 700; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
        .student-module-exam-btn:hover { filter: brightness(1.08); }
        .student-module-exam-hint { margin: 0; font-size: 0.82rem; color: #94a3b8; line-height: 1.45; }
        .student-module-exam-hint.is-locked { color: #fbbf24; }
        .student-module-exam-badge { display: inline-flex; align-items: center; gap: 8px; padding: 10px 12px; border-radius: 8px; background: rgba(34, 197, 94, 0.12); border: 1px solid rgba(34, 197, 94, 0.35); color: #86efac; font-weight: 700; font-size: 0.85rem; }
        .student-module-exam-badge.is-passed { width: 100%; justify-content: center; }
        .promax-header .course-selector + .course-selector { margin-left: 16px; }
        @media (max-width: 768px) {
          .promax-header .course-selector + .course-selector { margin-left: 0; margin-top: 10px; }
        }
        .student-final-exam-card { margin-top: 18px; padding: 16px; border-radius: 12px; border: 1px solid rgba(250, 204, 21, 0.35); background: linear-gradient(145deg, rgba(30, 27, 10, 0.9), rgba(20, 20, 20, 0.95)); }
        .student-final-exam-card h4 { margin: 0 0 8px; }
        .student-final-exam-card p { margin: 0 0 12px; color: #cbd5e1; font-size: 0.9rem; }
        .student-final-exam-success { padding: 12px; border-radius: 8px; background: rgba(34, 197, 94, 0.12); border: 1px solid rgba(34, 197, 94, 0.35); color: #bbf7d0; line-height: 1.5; }
        .student-video-pending { opacity: 0.85; cursor: default; border-style: dashed; }
        .student-video-pending-hint { font-size: 0.82rem; color: #94a3b8; margin-top: 8px; }
        .private-video-hint { margin: 0; font-size: 0.8rem; color: #a1a1aa; line-height: 1.45; max-width: 520px; }
        .student-access-banner { margin-bottom: 14px; }
        .student-access-banner-inner { display: flex; gap: 14px; align-items: flex-start; padding: 14px 16px; border-radius: 8px; background: rgba(185, 28, 28, 0.12); border: 1px solid rgba(248, 113, 113, 0.45); color: #fecaca; }
        .student-access-banner-inner i { font-size: 1.35rem; margin-top: 2px; color: #f87171; flex-shrink: 0; }
        .student-access-banner-inner p { margin: 6px 0 0; font-size: 0.85rem; color: #fecdd3; line-height: 1.45; }
        .menu-item.menu-item-link { text-decoration: none; color: inherit; }
        .menu-item.menu-item-link:hover { background: rgba(34, 197, 94, 0.12); }
        .exam-student-hero { display: flex; justify-content: space-between; align-items: stretch; gap: 24px; padding: 30px; background: radial-gradient(circle at top left, rgba(34,211,238,0.16), transparent 38%), radial-gradient(circle at top right, rgba(168,85,247,0.14), transparent 32%), linear-gradient(145deg, #0b1020, #131a2e 65%, #0f172a); border-bottom: 1px solid rgba(255,255,255,0.08); }
        .exam-student-hero-copy h1 { margin: 12px 0 10px; color: #f8fafc; font-size: 2.4rem; }
        .exam-student-hero-copy p { margin: 0; color: #cbd5e1; max-width: 720px; }
        .exam-neon-pill { display: inline-flex; align-items: center; padding: 6px 12px; border-radius: 999px; background: rgba(34,211,238,0.14); color: #67e8f9; font-size: 0.78rem; font-weight: 800; letter-spacing: 0; }
        .exam-student-status { min-width: 250px; padding: 18px 20px; border-radius: 16px; border: 1px solid rgba(103,232,249,0.24); background: rgba(15,23,42,0.72); box-shadow: 0 0 0 1px rgba(103,232,249,0.06), 0 24px 60px rgba(2,8,23,0.45); display: flex; flex-direction: column; justify-content: center; }
        .exam-status-label, .exam-side-label { color: #67e8f9; font-size: 0.78rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; }
        .exam-student-status strong { color: #f8fafc; font-size: 1.4rem; margin: 8px 0 4px; }
        .exam-student-status small { color: #cbd5e1; }
        .exam-student-shell { display: grid; grid-template-columns: minmax(0, 2fr) 320px; gap: 24px; padding: 30px; }
        .exam-student-main { min-width: 0; }
        .exam-student-side { display: flex; flex-direction: column; gap: 18px; }
        .exam-student-panel, .exam-student-side-card { background: linear-gradient(180deg, rgba(15,23,42,0.92), rgba(17,24,39,0.96)); border: 1px solid rgba(103,232,249,0.16); border-radius: 18px; box-shadow: 0 24px 60px rgba(2,8,23,0.45); }
        .exam-student-panel { padding: 24px; min-height: 420px; }
        .exam-student-side-card { padding: 18px; }
        .exam-student-side-card strong { display: block; color: #f8fafc; font-size: 2rem; margin: 10px 0 6px; }
        .exam-student-side-card small { color: #cbd5e1; display: block; }
        .exam-student-empty { min-height: 360px; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; gap: 14px; color: #e2e8f0; }
        .exam-student-empty i { font-size: 3rem; color: #67e8f9; }
        .exam-course-lock i { color: #facc15; }
        .exam-course-lock-progress { display: inline-flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: 12px; border: 1px solid rgba(250,204,21,0.26); background: rgba(250,204,21,0.08); color: #fef3c7; }
        .exam-course-lock-progress strong { color: #facc15; font-size: 1.4rem; }
        .exam-course-lock-progress span { color: #fde68a; }
        .exam-locked-countdown { font-size: 1.2rem; font-weight: 800; color: #67e8f9; }
        .exam-start-card { display: flex; flex-direction: column; gap: 18px; }
        .exam-start-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
        .exam-start-metric { padding: 16px; border-radius: 14px; background: rgba(15,23,42,0.74); border: 1px solid rgba(148,163,184,0.16); }
        .exam-start-metric span { display: block; color: #94a3b8; font-size: 0.82rem; margin-bottom: 8px; }
        .exam-start-metric strong { color: #f8fafc; font-size: 1.1rem; }
        .exam-neon-btn { background: linear-gradient(135deg, #22d3ee, #6366f1); color: #04111f; border: none; border-radius: 12px; padding: 14px 18px; font-weight: 800; cursor: pointer; box-shadow: 0 0 0 1px rgba(34,211,238,0.16), 0 18px 40px rgba(34,211,238,0.18); }
        .exam-neon-btn:hover { filter: brightness(1.04); }
        .exam-neon-btn.secondary { background: rgba(15,23,42,0.84); color: #f8fafc; border: 1px solid rgba(148,163,184,0.18); box-shadow: none; }
        .exam-attempt-layout { display: flex; flex-direction: column; gap: 20px; }
        .exam-attempt-header { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }
        .exam-attempt-header strong { color: #f8fafc; font-size: 1.2rem; }
        .exam-question-card { border-radius: 18px; background: rgba(15,23,42,0.76); border: 1px solid rgba(103,232,249,0.12); padding: 22px; }
        .exam-question-index { color: #67e8f9; font-size: 0.85rem; font-weight: 700; margin-bottom: 10px; }
        .exam-question-text { color: #f8fafc; font-size: 1.25rem; line-height: 1.5; margin-bottom: 20px; }
        .exam-option-list { display: flex; flex-direction: column; gap: 12px; }
        .exam-option-btn { width: 100%; text-align: left; border-radius: 14px; border: 1px solid rgba(148,163,184,0.16); background: rgba(15,23,42,0.76); color: #e2e8f0; padding: 16px 18px; cursor: pointer; display: flex; align-items: center; gap: 14px; }
        .exam-option-btn:hover { border-color: rgba(103,232,249,0.38); }
        .exam-option-btn.is-selected { border-color: rgba(34,211,238,0.72); background: rgba(34,211,238,0.12); box-shadow: 0 0 0 1px rgba(34,211,238,0.18), 0 12px 30px rgba(34,211,238,0.12); }
        .exam-option-marker { width: 32px; height: 32px; border-radius: 50%; border: 1px solid rgba(103,232,249,0.28); display: inline-flex; align-items: center; justify-content: center; color: #67e8f9; font-weight: 800; flex-shrink: 0; }
        .exam-attempt-footer { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }
        .exam-progress-note { color: #cbd5e1; }
        .exam-question-nav { display: grid; grid-template-columns: repeat(auto-fit, minmax(48px, 1fr)); gap: 10px; }
        .exam-question-nav-btn { height: 46px; border-radius: 12px; border: 1px solid rgba(148,163,184,0.16); background: rgba(15,23,42,0.76); color: #e2e8f0; cursor: pointer; font-weight: 700; }
        .exam-question-nav-btn.current { border-color: rgba(34,211,238,0.72); background: rgba(34,211,238,0.14); color: #67e8f9; }
        .exam-question-nav-btn.answered { border-color: rgba(34,197,94,0.42); color: #4ade80; }
        .exam-result-card { display: flex; flex-direction: column; gap: 18px; justify-content: center; min-height: 340px; }
        .exam-result-score { font-size: 4rem; font-weight: 900; color: #67e8f9; line-height: 1; }
        .exam-result-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 16px; }
        .exam-result-metric { padding: 16px; border-radius: 14px; background: rgba(15,23,42,0.74); border: 1px solid rgba(148,163,184,0.16); }
        .exam-result-metric span { display: block; color: #94a3b8; margin-bottom: 8px; }
        .exam-result-metric strong { color: #f8fafc; font-size: 1.1rem; }
        .academic-progress-root { max-width: 920px; margin: 24px auto 0; text-align: left; }
        .academic-progress-card { background: linear-gradient(180deg, rgba(15,23,42,0.94), rgba(17,24,39,0.98)); border: 1px solid rgba(103,232,249,0.18); border-radius: 18px; padding: 24px; box-shadow: 0 20px 50px rgba(0,0,0,0.28); }
        .academic-progress-header { display: flex; justify-content: space-between; gap: 18px; align-items: flex-start; flex-wrap: wrap; margin-bottom: 20px; }
        .academic-progress-title { color: #f8fafc; font-size: 1.35rem; font-weight: 800; margin: 0 0 6px; }
        .academic-progress-subtitle { color: #cbd5e1; margin: 0; }
        .academic-progress-score { color: #67e8f9; font-size: 3rem; font-weight: 900; line-height: 1; }
        .academic-progress-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 14px; margin: 18px 0; }
        .academic-progress-metric { border: 1px solid rgba(148,163,184,0.16); border-radius: 14px; background: rgba(15,23,42,0.72); padding: 16px; }
        .academic-progress-metric span { display: block; color: #94a3b8; font-size: 0.82rem; margin-bottom: 8px; }
        .academic-progress-metric strong { color: #fff; font-size: 1.12rem; }
        .academic-module-grades-section { margin-top: 24px; padding-top: 20px; border-top: 1px solid rgba(148,163,184,0.2); }
        .academic-module-grades-title { margin: 0 0 6px; color: #f8fafc; font-size: 1.05rem; font-weight: 800; }
        .academic-module-grades-lead { margin: 0 0 14px; color: #94a3b8; font-size: 0.88rem; line-height: 1.45; }
        .academic-module-grades-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
        .academic-module-grade-row {
          display: grid;
          grid-template-columns: 36px 1fr auto;
          gap: 12px;
          align-items: center;
          padding: 14px 16px;
          border-radius: 12px;
          border: 1px solid rgba(148,163,184,0.16);
          background: rgba(15,23,42,0.55);
        }
        .academic-module-grade-row.is-final { border-color: rgba(250,204,21,0.35); background: rgba(30,27,10,0.45); }
        .academic-module-grade-row.is-passed { border-color: rgba(34,197,94,0.35); }
        .academic-module-grade-row.is-failed { border-color: rgba(239,68,68,0.35); }
        .academic-module-grade-row.is-review { border-color: rgba(250,204,21,0.28); }
        .academic-module-grade-row.is-progress { border-color: rgba(14,165,233,0.35); }
        .academic-module-grade-index {
          width: 32px;
          height: 32px;
          border-radius: 8px;
          display: inline-flex;
          align-items: center;
          justify-content: center;
          background: rgba(103,232,249,0.12);
          color: #67e8f9;
          font-weight: 800;
          font-size: 0.85rem;
        }
        .academic-module-grade-body { min-width: 0; }
        .academic-module-grade-name { display: block; color: #f1f5f9; font-size: 0.95rem; margin-bottom: 4px; }
        .academic-module-grade-status {
          display: inline-block;
          padding: 2px 8px;
          border-radius: 999px;
          font-size: 0.72rem;
          font-weight: 700;
          text-transform: uppercase;
          letter-spacing: 0.04em;
          background: rgba(148,163,184,0.15);
          color: #cbd5e1;
        }
        .academic-module-grade-row.is-passed .academic-module-grade-status { background: rgba(34,197,94,0.18); color: #86efac; }
        .academic-module-grade-row.is-failed .academic-module-grade-status { background: rgba(239,68,68,0.18); color: #fca5a5; }
        .academic-module-grade-row.is-review .academic-module-grade-status { background: rgba(250,204,21,0.15); color: #fde68a; }
        .academic-module-grade-row.is-progress .academic-module-grade-status { background: rgba(14,165,233,0.15); color: #7dd3fc; }
        .academic-module-grade-hint { margin: 6px 0 0; color: #94a3b8; font-size: 0.8rem; line-height: 1.4; }
        .academic-module-grade-score { color: #fff; font-size: 1.35rem; font-weight: 800; white-space: nowrap; }
        .academic-recovery-panel { margin-top: 18px; padding: 18px; border-radius: 16px; border: 1px solid rgba(250,204,21,0.28); background: rgba(250,204,21,0.08); }
        .academic-recovery-panel h3 { margin: 0 0 8px; color: #fde68a; }
        .academic-recovery-panel p { margin: 0 0 14px; color: #fef3c7; }
        .academic-recovery-actions { display: flex; gap: 12px; flex-wrap: wrap; }
        .academic-pass-panel { margin-top: 18px; padding: 18px; border-radius: 16px; border: 1px solid rgba(34,197,94,0.28); background: rgba(34,197,94,0.08); color: #bbf7d0; }

        /* --- MODALES --- */
        .modal { position: fixed; inset: 0; background: rgba(0,0,0,0.9); z-index: 500; display: none; align-items: center; justify-content: center; }
        .modal.open { display: flex; }
        .modal-content { background: var(--bg-panel); padding: 30px; width: 450px; max-height: 90vh; overflow-y: auto; border-radius: 8px; border: 1px solid var(--gold); position: relative; }
        .close-btn { position: absolute; top: 15px; right: 20px; cursor: pointer; color: #888; font-size: 1.2rem; }
        .form-group { margin-bottom: 15px; }
        .form-group label { display: block; color: var(--gold); font-size: 0.8rem; margin-bottom: 5px; }
        .form-group input { width: 100%; padding: 10px; background: #000; border: 1px solid #444; color: white; border-radius: 4px; }
        .checkbox-wrapper { display: flex; align-items: center; gap: 10px; margin: 15px 0; padding: 10px; background: #111; border: 1px solid #333; border-radius: 4px;}
        .form-message { color: var(--success); background: rgba(0, 200, 81, 0.1); border: 1px solid var(--success); padding: 10px; margin-top: 15px; border-radius: 4px; font-weight: 700; text-align: center; font-size: 0.8rem; }
        .admin-video-view { padding: 30px; overflow-y: auto; }
        .admin-course-section { margin: 0; }
        .section-title-row { display: flex; align-items: center; gap: 10px; margin-bottom: 20px; }
        .section-title-row i { color: var(--cert-secondary); font-size: 1.5rem; }
        .section-title-row h2 { color: #fff; margin: 0; }
        .admin-course-form { background: rgba(255,255,255,0.05); padding: 25px; border-radius: 8px; border: 1px solid #333; margin-bottom: 30px; }
        .admin-course-form h3 { color: var(--cert-secondary); margin-bottom: 15px; font-size: 1.1rem; }
        .admin-course-form .login-input { margin: 0; }
        .admin-course-form > .login-input { margin-bottom: 20px; }
        .course-form-grid { display: grid; grid-template-columns: 1fr 2fr; gap: 15px; margin-bottom: 15px; }
        .section-subtitle { color: #fff; margin-bottom: 15px; font-size: 1.1rem; }
        .module-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; }
        .module-card { background: rgba(0,0,0,0.5); border: 1px solid var(--cert-secondary); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; }
        .module-card-header { background: var(--cert-primary); color: #fff; padding: 10px 15px; font-weight: 700; border-bottom: 2px solid var(--cert-secondary); display: flex; justify-content: space-between; gap: 10px; }
        .module-card-header i { color: var(--cert-secondary); }
        .module-card-body { padding: 15px; flex-grow: 1; }
        .module-card-body h4 { color: #fff; margin-bottom: 10px; font-size: 1.2rem; }
        .module-card-body a { color: var(--cert-secondary); text-decoration: none; font-size: 0.9rem; display: block; margin-bottom: 15px; word-break: break-all; }
        .module-card-footer { padding: 10px; background: rgba(255,255,255,0.02); border-top: 1px solid #333; }
        .admin-presential-section { margin-top: 34px; padding-top: 30px; border-top: 1px solid #333; }
        .presential-badge { display: inline-block; margin-left: 8px; padding: 3px 6px; border-radius: 4px; background: rgba(212,175,55,0.16); color: var(--gold); font-weight: 800; font-size: 0.65rem; }
        .empty-state { color: #666; font-style: italic; }
        .promax-admin-container { max-width: 980px; margin: 0 auto; color: #f4f4f5; }
        .pack-offer-admin-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 28px; margin-top: 20px; align-items: start; }
        .pack-offer-admin-preview-wrap { position: sticky; top: 16px; }
        .pack-offer-admin-preview {
            position: relative; padding: 28px 22px; border-radius: 20px; text-align: center; overflow: hidden;
            background: linear-gradient(165deg, #fff 0%, #f8fafc 50%, #eff6ff 100%);
            border: 2px solid transparent;
            background-clip: padding-box;
            box-shadow: 0 18px 40px rgba(0,0,0,0.35);
        }
        .pack-offer-admin-preview::before {
            content: ""; position: absolute; inset: 0; padding: 2px; border-radius: 20px;
            background: linear-gradient(135deg, #fbbf24, #1e3a8a);
            -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
            mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
            -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none;
        }
        .pack-offer-preview-badge {
            display: inline-block; margin-bottom: 10px; padding: 6px 14px; border-radius: 999px;
            background: linear-gradient(135deg, #1e3a8a, #2563eb); color: #fff; font-size: 0.7rem;
            font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
        }
        .pack-offer-preview-discount {
            display: inline-block; margin-left: 8px; padding: 6px 12px; border-radius: 999px;
            background: #dc2626; color: #fff; font-weight: 900; font-size: 0.95rem;
        }
        .pack-offer-preview-prices { display: flex; align-items: baseline; justify-content: center; gap: 12px; flex-wrap: wrap; margin: 14px 0 8px; }
        .pack-offer-preview-original { color: #94a3b8; text-decoration: line-through; font-weight: 700; }
        .pack-offer-preview-sale { font-size: 2rem; font-weight: 900; color: #1e3a8a; }
        .pack-offer-preview-note { margin: 0; color: #64748b; font-size: 0.88rem; font-weight: 600; }
        .promax-header { display: flex; justify-content: space-between; align-items: center; gap: 18px; margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid rgba(255,255,255,0.08); }
        .promax-header h2 { margin: 0 0 4px 0; font-size: 24px; color: #fff; }
        .promax-header p { margin: 0; color: #a1a1aa; font-size: 14px; }
        .course-pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 18px; }
        .course-pricing-card { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08); border-radius: 16px; padding: 20px; box-shadow: 0 12px 32px rgba(0,0,0,0.14); }
        .course-pricing-card-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 18px; }
        .course-pricing-card-actions { display: flex; flex-direction: column; gap: 10px; align-items: stretch; }
        .course-pricing-card-header h3 { margin: 0; color: #fff; font-size: 1.05rem; }
        .course-pricing-card-header p { margin: 6px 0 0; color: #8f8f8f; font-size: 0.8rem; overflow-wrap: anywhere; }
        .course-pricing-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
        .course-pricing-metric { padding: 14px; border-radius: 14px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); }
        .course-pricing-metric span { display: block; color: #a1a1aa; font-size: 0.8rem; margin-bottom: 8px; }
        .course-pricing-metric strong { color: #fff; font-size: 1.05rem; }
        .course-pricing-course-label { padding: 12px 14px; border-radius: 12px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.04); color: #f4f4f5; font-weight: 700; }
        .promax-current-course-btn { margin-top: 14px; padding: 0; background: transparent; border: none; color: #c4b5fd; font-size: 1rem; font-weight: 700; cursor: pointer; text-align: left; }
        .promax-current-course-btn:hover { color: #ddd6fe; text-decoration: underline; }
        .course-selector { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
        .course-selector label { color: #d4d4d8; font-size: 0.9rem; font-weight: 600; }
        .course-selector select { min-width: 260px; padding: 10px 14px; border-radius: 12px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.06); color: #fff; font-weight: 600; outline: none; backdrop-filter: blur(12px); }
        .course-selector option { color: #111827; }
        .promax-actions { display: flex; justify-content: flex-end; margin-bottom: 18px; }
        .promax-btn { padding: 10px 16px; border-radius: 10px; font-weight: 700; cursor: pointer; border: none; transition: all 0.2s ease; }
        a.promax-btn { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
        .promax-btn.primary { background: #4f46e5; color: white; box-shadow: 0 10px 30px rgba(79, 70, 229, 0.22); }
        .promax-btn.primary:hover { background: #4338ca; box-shadow: 0 14px 34px rgba(79, 70, 229, 0.35); transform: translateY(-1px); }
        .promax-btn.secondary { background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.12); color: #f4f4f5; }
        .promax-btn.secondary:hover { background: rgba(255,255,255,0.14); }
        .modules-list { display: flex; flex-direction: column; gap: 16px; }
        .promax-module-card { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08); border-radius: 16px; box-shadow: 0 12px 32px rgba(0,0,0,0.14); overflow: hidden; }
        .promax-module-header { padding: 18px 20px; display: flex; justify-content: space-between; align-items: center; gap: 16px; cursor: pointer; background: rgba(255,255,255,0.04); transition: background 0.2s ease; }
        .promax-module-header:hover { background: rgba(255,255,255,0.08); }
        .promax-module-title { font-weight: 700; font-size: 16px; color: #fff; }
        .promax-module-meta { color: #a1a1aa; font-size: 0.82rem; }
        .promax-chevron { color: #c4b5fd; transition: transform 0.28s ease; }
        .promax-module-card.is-open .promax-chevron { transform: rotate(180deg); }
        .promax-module-content { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.3s ease; border-top: 1px solid transparent; }
        .promax-module-card.is-open .promax-module-content { grid-template-rows: 1fr; border-top-color: rgba(255,255,255,0.08); }
        .promax-module-content-inner { overflow: hidden; padding: 0 20px; }
        .promax-video-list { display: flex; flex-direction: column; gap: 12px; padding: 18px 0 4px; }
        .promax-video-item { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 14px; background: rgba(255,255,255,0.04); border-radius: 12px; border: 1px solid rgba(255,255,255,0.08); }
        .promax-video-title { color: #fff; font-weight: 600; }
        .promax-video-url { color: #a1a1aa; font-size: 0.8rem; overflow-wrap: anywhere; }
        .promax-video-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
        .promax-btn.danger { background: rgba(239, 68, 68, 0.14); color: #fecaca; border: 1px solid rgba(239, 68, 68, 0.32); }
        .promax-btn.danger:hover { background: rgba(239, 68, 68, 0.22); }
        .promax-empty { padding: 18px 0 4px; color: #71717a; font-style: italic; }
        .promax-module-footer { padding: 12px 0 20px; }
        .promax-modal-overlay { position: fixed; inset: 0; background: rgba(17, 24, 39, 0.42); backdrop-filter: blur(8px); display: none; justify-content: center; align-items: center; z-index: 1000; padding: 20px; }
        .promax-modal-overlay.active { display: flex; }
        .promax-modal { background: rgba(24,24,27,0.86); width: 100%; max-width: 460px; padding: 24px; border-radius: 18px; border: 1px solid rgba(255,255,255,0.12); box-shadow: 0 25px 50px rgba(0,0,0,0.28); animation: promaxSlideDown 0.28s ease forwards; }
        .promax-modal h3 { margin: 0 0 18px; color: #fff; }
        .promax-modal .input-group label { color: #cbd5e1; font-size: 0.86rem; font-weight: 600; }
        .promax-modal .input-group input { width: 100%; padding: 12px 14px; border-radius: 12px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.06); color: #fff; box-sizing: border-box; }
        .promax-modal-input { width: 100%; padding: 12px 14px; border-radius: 12px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.06); color: #fff; box-sizing: border-box; }
        .promax-select { width: 100%; padding: 12px 14px; border-radius: 12px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.06); color: #fff; box-sizing: border-box; }
        .promax-textarea { width: 100%; min-height: 120px; padding: 12px 14px; border-radius: 12px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.06); color: #fff; box-sizing: border-box; resize: vertical; font: inherit; }
        .promax-select option { color: #111827; }
        .promax-module-title-row { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; }
        .promax-module-order-controls { display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0; }
        .promax-module-order-badge {
          display: inline-flex;
          align-items: center;
          justify-content: center;
          min-width: 28px;
          height: 28px;
          padding: 0 8px;
          border-radius: 8px;
          background: rgba(212, 175, 55, 0.15);
          border: 1px solid rgba(212, 175, 55, 0.45);
          color: #f0c95a;
          font-weight: 800;
          font-size: 0.82rem;
        }
        .promax-order-btn:disabled { opacity: 0.35; cursor: not-allowed; }
        .promax-module-order-hint {
          margin: 0 0 16px;
          padding: 12px 14px;
          border-radius: 10px;
          background: rgba(14, 165, 233, 0.08);
          border: 1px solid rgba(14, 165, 233, 0.25);
          color: #94a3b8;
          font-size: 0.88rem;
          line-height: 1.5;
        }
        .promax-module-order-hint strong { color: #e2e8f0; }
        .promax-icon-btn { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; border-radius: 10px; border: 1px solid rgba(255,255,255,0.1); background: rgba(255,255,255,0.05); color: #d4d4d8; cursor: pointer; transition: all 0.2s ease; }
        .promax-icon-btn:hover { background: rgba(255,255,255,0.12); color: #fff; }
        .promax-icon-btn--danger { border-color: rgba(255, 68, 68, 0.35); color: #ff6b6b; }
        .promax-icon-btn--danger:hover { background: rgba(255, 68, 68, 0.15); color: #ff8888; }
        .exam-settings-card { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08); border-radius: 16px; padding: 24px; margin-bottom: 30px; box-shadow: 0 12px 32px rgba(0,0,0,0.14); }
        .exam-settings-card h3 { margin: 0 0 16px; color: #fff; }
        .exam-activation-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-top: 18px; }
        .exam-activation-metric { padding: 14px; border-radius: 14px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); }
        .exam-activation-metric span { display: block; color: #a1a1aa; font-size: 0.8rem; margin-bottom: 8px; }
        .exam-activation-metric strong { color: #fff; font-size: 1.05rem; }
        .exam-activation-alert { margin-top: 16px; padding: 14px 16px; border-radius: 14px; border: 1px solid rgba(250, 204, 21, 0.25); background: rgba(250, 204, 21, 0.08); color: #fde68a; }
        .exam-activation-alert.success { border-color: rgba(74, 222, 128, 0.28); background: rgba(74, 222, 128, 0.08); color: #bbf7d0; }
        .exam-activation-list { margin-top: 16px; display: flex; flex-wrap: wrap; gap: 10px; }
        .exam-activation-chip { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 999px; background: rgba(99,102,241,0.14); border: 1px solid rgba(99,102,241,0.22); color: #e0e7ff; font-size: 0.82rem; }
        .settings-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; margin-bottom: 20px; }
        .promax-divider { border: 0; height: 1px; background: rgba(255,255,255,0.08); margin: 30px 0; }
        .exam-question-actions { justify-content: space-between; align-items: center; }
        .exam-question-actions h3 { margin: 0; color: #fff; }
        .questions-list { display: flex; flex-direction: column; gap: 16px; }
        .question-card { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08); border-left: 4px solid #4f46e5; border-radius: 14px; padding: 18px; }
        .question-card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
        .question-card-title { color: #fff; font-weight: 700; line-height: 1.4; }
        .question-card-meta { display: inline-flex; align-items: center; gap: 8px; color: #a1a1aa; font-size: 0.82rem; margin-top: 6px; }
        .question-options { margin: 14px 0 0; padding-left: 18px; color: #d4d4d8; }
        .question-options li { margin-bottom: 8px; }
        .correct-badge { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 999px; font-size: 0.72rem; font-weight: 700; margin-left: 10px; background: rgba(34,197,94,0.14); color: #4ade80; }
        .question-card-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
        .attempt-card { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08); border-radius: 14px; padding: 18px; }
        .attempt-card.pending { border-left: 4px solid #f59e0b; }
        .attempt-card.graded { border-left: 4px solid #22c55e; }
        .attempt-card.in_progress { border-left: 4px solid #38bdf8; }
        .attempt-card-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 14px; }
        .attempt-card-title { color: #fff; font-weight: 700; }
        .attempt-card-meta { color: #a1a1aa; font-size: 0.84rem; margin-top: 6px; display: flex; gap: 8px; flex-wrap: wrap; }
        .attempt-status-badge { display: inline-flex; align-items: center; padding: 4px 10px; border-radius: 999px; font-size: 0.74rem; font-weight: 700; }
        .attempt-status-badge.pending { background: rgba(245,158,11,0.15); color: #fbbf24; }
        .attempt-status-badge.graded { background: rgba(34,197,94,0.14); color: #4ade80; }
        .attempt-status-badge.in_progress { background: rgba(56,189,248,0.14); color: #67e8f9; }
        .attempt-status-badge.expired { background: rgba(239,68,68,0.14); color: #fca5a5; }
        .attempt-answer-list { display: flex; flex-direction: column; gap: 12px; margin-top: 14px; }
        .attempt-answer-item { padding: 14px; border-radius: 12px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.07); }
        .attempt-answer-question { color: #fff; font-weight: 600; margin-bottom: 8px; }
        .attempt-answer-row { color: #d4d4d8; font-size: 0.9rem; margin-bottom: 6px; }
        .attempt-review-grid { display: grid; grid-template-columns: minmax(120px, 180px) minmax(0, 1fr) auto; gap: 12px; align-items: end; margin-top: 16px; }
        .attempt-review-grid input, .attempt-review-grid textarea { width: 100%; padding: 12px 14px; border-radius: 12px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.06); color: #fff; box-sizing: border-box; font: inherit; }
        .attempt-review-grid textarea { min-height: 76px; resize: vertical; }
        .answer-option-row { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
        .answer-option-row input[type="text"] { flex: 1; }
        .answer-option-row input[type="radio"] { accent-color: #4f46e5; }
        /* --- Structure de la Gestion des Examens --- */
        .admin-dashboard-container { padding: 2rem; max-width: 1200px; margin: 0 auto; font-family: 'Inter', system-ui, sans-serif; color: #0f172a; }
        .presential-dashboard { background: #f8fafc; border-radius: 8px; min-height: calc(100vh - 140px); }
        .presential-dashboard-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 1.5rem; margin-bottom: 1.5rem; }
        .presential-dashboard-heading h2 { margin: 0.35rem 0 0.4rem; color: #0f172a; font-size: 1.9rem; line-height: 1.15; }
        .presential-dashboard-heading p { margin: 0; color: #64748b; max-width: 680px; line-height: 1.55; }
        .presential-dashboard-kicker { color: #2563eb; font-size: 0.78rem; font-weight: 800; text-transform: uppercase; }
        .admin-header-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; margin-bottom: 2rem; }
        .stat-card { background: #ffffff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 1.5rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05); transition: transform 0.2s; }
        .stat-card:hover { transform: translateY(-2px); }
        .stat-card h3 { color: #64748b; font-size: 0.9rem; margin: 0 0 0.75rem; }
        .stat-card p { font-size: 2rem; font-weight: bold; margin: 0; color: #0f172a; }
        .stat-card:nth-child(3) h3 { color: #10b981; }
        .admin-actions-bar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; background: #ffffff; border: 1px solid #e5e7eb; padding: 1rem 1.5rem; border-radius: 8px; margin-bottom: 1.25rem; }
        .admin-actions-bar p { margin: 0; color: #475569; }
        .admin-table-container { background: #ffffff; border-radius: 12px; border: 1px solid #e5e7eb; overflow: auto; }
        .admin-table { width: 100%; border-collapse: collapse; min-width: 760px; }
        .admin-table th { background: #f1f5f9; text-align: left; padding: 1rem; font-weight: 600; color: #475569; }
        .admin-table td { padding: 1rem; border-top: 1px solid #e5e7eb; vertical-align: middle; color: #334155; }
        .admin-table strong { color: #0f172a; }
        .admin-table small { color: #64748b; }
        .btn-admin-primary { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; background: #2563eb; color: white; padding: 0.5rem 1rem; border-radius: 6px; border: none; cursor: pointer; font-weight: 500; text-decoration: none; white-space: nowrap; }
        .btn-admin-primary:hover { background: #1d4ed8; }
        .btn-admin-action { display: inline-flex; align-items: center; justify-content: center; gap: 0.45rem; background: #f1f5f9; color: #334155; padding: 0.4rem 0.8rem; border-radius: 4px; border: 1px solid #cbd5e1; cursor: pointer; margin-right: 0.5rem; text-decoration: none; font-weight: 600; white-space: nowrap; }
        .btn-admin-action:hover { background: #e2e8f0; }
        .btn-admin-action.success { background: #10b981; border-color: #10b981; color: #ffffff; }
        .btn-admin-action.danger { color: #ef4444; }
        .presential-tabs { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 1rem; }
        .presential-tab { border: 1px solid #cbd5e1; background: #ffffff; color: #334155; border-radius: 6px; padding: 0.55rem 0.9rem; cursor: pointer; font-weight: 700; }
        .presential-tab.active { background: #0f172a; border-color: #0f172a; color: #ffffff; }
        .presential-tab-panel { margin-top: 1rem; }
        .admin-form-card { background: #ffffff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 1.5rem; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05); }
        .admin-form-card h3 { color: #0f172a; margin: 0 0 0.35rem; }
        .admin-form-card p { color: #64748b; margin: 0; }
        .admin-form-header { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; margin-bottom: 1.25rem; }
        .admin-split-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
        .admin-form-card .input-group label { color: #475569; }
        .admin-form-card input, .admin-form-card .promax-select, .admin-form-card .promax-textarea { width: 100%; background: #ffffff; color: #0f172a; border: 1px solid #cbd5e1; border-radius: 8px; }
        .admin-form-card .promax-select option { color: #0f172a; }
        .presential-full { grid-column: 1 / -1; }
        .presential-json-area { min-height: 280px; font-family: Consolas, "Courier New", monospace; font-size: 0.86rem; line-height: 1.55; }
        .presential-status { margin-bottom: 18px; padding: 14px 16px; border-radius: 8px; border: 1px solid #bfdbfe; background: #eff6ff; color: #1d4ed8; font-weight: 700; }
        .presential-status.success { border-color: #bbf7d0; background: #ecfdf5; color: #047857; }
        .presential-status.error { border-color: #fecaca; background: #fef2f2; color: #b91c1c; }
        .presential-action-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
        .presential-token-output { margin-top: 16px; padding: 14px; border-radius: 8px; border: 1px solid #bfdbfe; background: #eff6ff; color: #1e3a8a; overflow-wrap: anywhere; }
        .presential-token-output a { color: #2563eb; font-weight: 800; text-decoration: none; }
        .presential-state-pill { display: inline-flex; align-items: center; padding: 0.25rem 0.65rem; border-radius: 999px; background: #dbeafe; color: #1d4ed8; font-weight: 800; font-size: 0.78rem; }
        .presential-state-pill.inactive { background: #f1f5f9; color: #64748b; }
        .presential-state-pill.pending { background: #fef3c7; color: #b45309; }
        .presential-empty-row td { color: #64748b; text-align: center; padding: 2rem; }
        .presential-submission-list .attempt-card { background: #ffffff; border: 1px solid #e5e7eb; color: #334155; box-shadow: none; }
        .presential-submission-list .attempt-card-title { color: #0f172a; }
        .presential-submission-list .attempt-card-meta { color: #64748b; }
        .presential-submission-list .presential-mini-metric { background: #f8fafc; border-color: #e5e7eb; }
        .presential-submission-list .presential-mini-metric span { color: #64748b; }
        .presential-submission-list .presential-mini-metric strong { color: #0f172a; }
        .presential-submission-list .presential-answer-preview { background: #f8fafc; border-color: #e5e7eb; color: #334155; }
        .presential-submission-list .promax-empty { color: #64748b; }
        .attempt-status-badge.submitted { background: rgba(245,158,11,0.15); color: #b45309; }
        .attempt-status-badge.locked { background: rgba(239,68,68,0.14); color: #b91c1c; }
        .presential-submission-card.locked { border-left: 4px solid #ef4444; }
        .presential-submission-card.graded { border-left: 4px solid #22c55e; }
        .presential-submission-card.submitted { border-left: 4px solid #f59e0b; }
        .presential-submission-card.in_progress { border-left: 4px solid #38bdf8; }
        .presential-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin-top: 14px; }
        .presential-mini-metric { padding: 12px; border-radius: 12px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); }
        .presential-mini-metric span { display: block; color: #a1a1aa; font-size: 0.78rem; margin-bottom: 6px; }
        .presential-mini-metric strong { color: #fff; font-size: 1rem; overflow-wrap: anywhere; }
        .presential-link-row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 14px; }
        .presential-answer-preview { margin-top: 14px; padding: 12px; border-radius: 12px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); color: #d4d4d8; font-size: 0.88rem; }
        @media (max-width: 980px) {
          .presential-dashboard-heading, .admin-actions-bar, .admin-form-header { flex-direction: column; align-items: stretch; }
          .admin-split-grid { grid-template-columns: 1fr; }
        }
        @keyframes promaxSlideDown { from { opacity: 0; transform: translateY(-18px); } to { opacity: 1; transform: translateY(0); } }
        .student-video-link { color: var(--gold); font-weight: 700; text-decoration: none; display: inline-flex; align-items: center; gap: 8px; }
        .private-video-card { position: relative; background: #111; border: 1px solid var(--cert-secondary); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; width: 100%; max-width: 100%; min-width: 0; box-sizing: border-box; }
        .private-video-title { background: var(--cert-primary); color: #fff; padding: 10px 14px; font-weight: 700; font-size: 0.9rem; line-height: 1.3; display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-shrink: 0; min-width: 0; }
        .private-video-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .private-video-fullscreen-btn {
            position: absolute;
            right: 10px;
            bottom: 10px;
            z-index: 20;
            background: rgba(212, 175, 55, 0.95);
            color: #000;
            border: none;
            padding: 8px 12px;
            border-radius: 8px;
            font-weight: 700;
            cursor: pointer;
            font-size: 0.78rem;
            white-space: nowrap;
            display: inline-flex;
            align-items: center;
            gap: 6px;
            box-shadow: 0 4px 14px rgba(0, 0, 0, 0.45);
        }
        .private-video-fullscreen-btn:hover { filter: brightness(1.08); }
        .private-video-shell { position: relative; flex: 1 1 auto; min-height: 180px; background: #000; width: 100%; max-width: 100%; overflow: hidden; }
        .private-video-shell iframe { position: absolute; inset: 0; width: 100%; height: 100%; max-width: 100%; border: none; }
        .private-video-shell video { position: absolute; inset: 0; width: 100%; height: 100%; max-width: 100%; border: none; background: #000; }
        .private-video-shield { position: absolute; background: transparent; z-index: 10; pointer-events: auto; }
        .private-video-shield-top { top: 0; left: 0; width: 100%; height: 60px; }
        .private-video-shield-logo { right: 0; bottom: 0; width: 60px; height: 50px; }
        .private-video-footer { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; padding: 12px 14px; border-top: 1px solid rgba(255,255,255,0.08); background: #151515; flex-wrap: wrap; width: 100%; max-width: 100%; min-width: 0; box-sizing: border-box; }
        .private-video-badge { display: inline-flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 999px; font-size: 0.78rem; font-weight: 700; max-width: 100%; min-width: 0; white-space: normal; line-height: 1.35; }
        .private-video-actions { display: flex; gap: 10px; flex-wrap: wrap; flex-direction: column; align-items: stretch; width: 100%; min-width: 0; }
        .private-video-badge.pending { color: #fbbf24; background: rgba(251, 191, 36, 0.14); }
        .private-video-badge.completed { color: #22c55e; background: rgba(34, 197, 94, 0.14); }
        .private-video-action-btn { background: var(--gold); color: #000; border: none; padding: 10px 14px; border-radius: 8px; font-weight: 700; cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; }
        .private-video-action-btn:hover { filter: brightness(1.05); }
        .private-video-action-btn.secondary { background: #27272a; color: #fff; border: 1px solid #3f3f46; }
        .private-video-fallback { color: #e5e7eb; display: flex; flex-direction: column; gap: 14px; text-align: center; padding: 24px; }
        .private-video-shell:fullscreen { width: 100vw; height: 100vh; }
        .private-video-shell:-webkit-full-screen { width: 100vw; height: 100vh; }
        .mail-tab { padding: 20px; display: flex; flex-direction: column; justify-content: flex-start; align-items: center; height: 100%; overflow-y: auto; }
        .gmail-compose-card { width: 100%; max-width: 750px; background: #1e1f22; border-radius: 10px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.5); border: 1px solid #444; margin-top: 20px; transition: max-width 0.25s ease, box-shadow 0.25s ease; }
        .gmail-compose-card.is-expanded { max-width: 980px; box-shadow: 0 16px 44px rgba(0,0,0,0.6); }
        .gmail-compose-card.is-minimized .gmail-compose-body, .gmail-compose-card.is-minimized .gmail-compose-footer { display: none; }
        .gmail-compose-header { background: #2b2d31; padding: 12px 20px; display: flex; justify-content: space-between; align-items: center; gap: 16px; color: #f2f2f2; font-weight: 500; font-size: 0.95rem; }
        .gmail-window-actions { display: flex; gap: 6px; color: #a0a0a0; flex-shrink: 0; }
        .gmail-window-action { width: 28px; height: 28px; background: transparent; border: none; border-radius: 50%; color: inherit; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; transition: background 0.2s ease, color 0.2s ease; }
        .gmail-window-action:hover { background: rgba(255,255,255,0.1); color: #fff; }
        .gmail-window-action.close:hover { background: rgba(239, 68, 68, 0.16); color: #ef4444; }
        .gmail-compose-body { padding: 0 20px; }
        .gmail-compose-row { border-bottom: 1px solid #444; padding: 10px 0; display: flex; align-items: center; gap: 10px; }
        .gmail-field-label { color: #a0a0a0; width: 60px; font-size: 0.95rem; flex-shrink: 0; }
        .gmail-recipient-chip { background: rgba(255,255,255,0.1); padding: 4px 10px; border-radius: 15px; display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
        .gmail-recipient-chip img { width: 18px; height: 18px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
        .gmail-recipient-chip span { color: #fff; font-size: 0.9rem; overflow-wrap: anywhere; }
        .gmail-subject-input, .gmail-message-input { width: 100%; background: transparent; border: none; color: #fff; font-size: 0.95rem; outline: none; font-family: inherit; }
        .gmail-subject-input::placeholder, .gmail-message-input::placeholder { color: #777; }
        .gmail-message-input { height: 250px; resize: none; padding: 15px 0; display: block; }
        .gmail-file-preview { display: none; align-items: center; gap: 10px; background: #2b2d31; padding: 8px 12px; border-radius: 6px; width: fit-content; max-width: 100%; margin-bottom: 15px; border: 1px solid #444; }
        .gmail-file-preview.visible { display: flex; }
        .gmail-file-preview > i { color: #ea4335; font-size: 1.2rem; flex-shrink: 0; }
        .gmail-file-preview span { color: #fff; font-size: 0.85rem; max-width: 240px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .gmail-file-remove, .gmail-attach-btn { background: transparent; border: none; color: #a0a0a0; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
        .gmail-file-remove:hover, .gmail-attach-btn:hover { color: #fff; }
        .gmail-compose-footer { padding: 15px 20px; display: flex; align-items: center; gap: 20px; border-top: 1px solid #444; }
        .gmail-send-btn { background: #0b57d0; color: white; border: none; padding: 10px 24px; border-radius: 24px; font-weight: 500; font-size: 0.95rem; cursor: pointer; display: flex; align-items: center; gap: 10px; transition: background 0.3s; }
        .gmail-send-btn:hover { background: #1b66dc; }
        .gmail-send-btn.sending, .gmail-send-btn:disabled { background: #444; cursor: wait; }
        .gmail-attach-btn { font-size: 1.2rem; padding: 8px; }
        .gmail-file-input { display: none; }
        .gmail-compose-closed { margin-top: 20px; }
        .gmail-reopen-btn { background: #2b2d31; color: #f2f2f2; border: 1px solid #444; border-radius: 24px; padding: 10px 18px; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; font-weight: 600; box-shadow: 0 8px 22px rgba(0,0,0,0.35); transition: border-color 0.2s ease, color 0.2s ease, transform 0.2s ease; }
        .gmail-reopen-btn:hover { color: var(--gold); border-color: var(--gold); transform: translateY(-1px); }
        .error-toast { display: flex; align-items: center; gap: 12px; width: fit-content; max-width: 100%; max-height: 0; margin: 0; padding: 0 16px; overflow: hidden; background: rgba(220, 38, 38, 0.08); border-left: 4px solid #ef4444; border-radius: 6px; opacity: 0; transform: translateY(-10px); transition: opacity 0.3s ease-out, transform 0.3s ease-out, max-height 0.3s ease-out, margin 0.3s ease-out, padding 0.3s ease-out, visibility 0.3s ease-out; pointer-events: none; visibility: hidden; }
        .error-toast.show { max-height: 120px; margin: 0 0 15px; padding: 10px 16px; opacity: 1; transform: translateY(0); visibility: visible; }
        .error-icon { color: #ef4444; font-size: 1rem; flex-shrink: 0; }
        .error-content { display: flex; flex-direction: column; min-width: 0; }
        .error-title { color: #ef4444; font-size: 0.9rem; font-weight: 600; }
        .error-desc { color: #fca5a5; font-size: 0.8rem; margin-top: 2px; overflow-wrap: anywhere; }
        @keyframes shakeExpert {
            0%, 100% { transform: translateX(0); }
            10%, 30%, 50%, 70%, 90% { transform: translateX(-4px); }
            20%, 40%, 60%, 80% { transform: translateX(4px); }
        }
        .shake-input { animation: shakeExpert 0.5s cubic-bezier(.36,.07,.19,.97) both; border-radius: 6px; outline: 1px solid #ef4444 !important; box-shadow: 0 0 10px rgba(239, 68, 68, 0.3) !important; }
        .certificate-admin-modal { width: 400px; border: 2px solid var(--cert-secondary); }
        .certificate-admin-modal h2 { color: var(--cert-secondary); margin-bottom: 20px; font-size: 1.3rem; }
        .activity-modal { width: min(760px, 92vw); }
        .cert-toggle-row { margin-bottom: 20px; display: flex; align-items: center; gap: 10px; color: #fff; cursor: pointer; }
        .cert-toggle-row input { width: 20px; height: 20px; cursor: pointer; }
        .no-padding { padding: 0; }

        /* Responsive — shell mobile type app (zones sûres, pas de scroll horizontal global) */
        @media(max-width: 900px) {
            html { overflow-x: hidden; }

            #app-interface.app-container {
                flex-direction: row;
                height: 100vh;
                height: 100dvh;
                max-height: 100dvh;
                overflow: hidden;
            }

            #app-interface .main-area {
                flex: 1;
                min-height: 0;
                overflow-y: auto;
                overflow-x: hidden;
                -webkit-overflow-scrolling: touch;
            }

            .session-control-bar {
                flex-direction: column;
                align-items: stretch;
                padding-left: max(16px, env(safe-area-inset-left, 0px));
                padding-right: max(16px, env(safe-area-inset-right, 0px));
            }
            .session-dropdown { width: 100%; max-width: none; }

            .landing-hero {
                min-height: 0;
                padding: 28px 16px 32px;
            }
            .hero-content h1 { font-size: clamp(1.65rem, 7vw, 2.4rem); }
            .hero-actions {
                flex-direction: column;
                width: 100%;
                gap: 10px;
            }
            .hero-actions .btn-main {
                width: 100%;
                min-height: 48px;
                border-radius: 12px;
            }

            .landing-modal {
                padding: max(12px, env(safe-area-inset-top, 0px)) max(14px, env(safe-area-inset-right, 0px)) max(14px, env(safe-area-inset-bottom, 0px)) max(14px, env(safe-area-inset-left, 0px));
            }

            .top-bar {
                padding: 10px max(16px, env(safe-area-inset-right, 0px)) 10px max(16px, env(safe-area-inset-left, 0px));
                min-height: 56px;
            }

            .registro-grid { grid-template-columns: 1fr; }
            .registro-box.maxpro-modal { padding: 20px; max-height: min(92dvh, 92vh); }
            .registro-form.maxpro-form { grid-template-columns: 1fr; gap: 14px; }
            .maxpro-form .input-group:nth-child(-n+6) { grid-column: 1 / -1; }
            .profile-tab { padding: 24px 14px; }
            .profile-security-card { padding: 28px; }
            .registro-payment-actions { grid-template-columns: 1fr; }
            .registro-step-pago .registro-payment-actions { grid-template-columns: 1fr; }
            .stats-row { grid-template-columns: 1fr; }
            .lms-grid { grid-template-columns: 1fr; padding: 16px; }
            .course-form-grid { grid-template-columns: 1fr; }
            .gmail-compose-header, .gmail-compose-footer { align-items: flex-start; flex-direction: column; }
            .gmail-compose-row { align-items: flex-start; flex-direction: column; }
            .gmail-field-label { width: auto; }
            .gmail-send-btn { width: 100%; justify-content: center; }

            body:has(#app-interface:not(.hidden)) {
                overflow: hidden;
            }
        }

        /* Landing — mobile : logo + hamburger ; liens uniquement dans le drawer */
        @media (max-width: 768px) {
            #landing-view .main-nav.landing-mnav {
                display: block;
                flex-wrap: wrap;
                gap: 0;
                padding: 0;
            }
            #landing-view .landing-mnav-bar {
                width: 100%;
                flex: none;
                justify-content: space-between;
                min-height: 52px;
                padding: max(8px, env(safe-area-inset-top, 0px)) max(12px, env(safe-area-inset-right, 0px)) 8px max(12px, env(safe-area-inset-left, 0px));
            }
            #landing-view .landing-brand span {
                font-size: 1rem;
                line-height: 1.2;
            }
            #landing-view .landing-brand img {
                width: 36px;
                height: 36px;
            }
            #landing-view .landing-mnav-burger {
                display: inline-flex;
                align-items: center;
                justify-content: center;
                min-width: 48px;
                min-height: 48px;
                margin-left: auto;
                padding: 0;
                border-radius: 12px;
                border: 1px solid rgba(212, 175, 55, 0.35);
                background: rgba(255, 255, 255, 0.06);
                color: inherit;
                cursor: pointer;
                flex-shrink: 0;
            }
            #landing-view .landing-mnav-burger:active {
                transform: scale(0.97);
            }
            #landing-view .landing-mnav-burger-icon {
                display: flex;
                flex-direction: column;
                justify-content: space-between;
                width: 22px;
                height: 16px;
            }
            #landing-view .landing-mnav-burger-icon span {
                display: block;
                height: 2px;
                width: 100%;
                border-radius: 2px;
                background: var(--gold);
                transition: transform 0.22s ease, opacity 0.18s ease;
            }
            #landing-view .landing-mnav--open .landing-mnav-burger-icon span:nth-child(1) {
                transform: translateY(7px) rotate(45deg);
            }
            #landing-view .landing-mnav--open .landing-mnav-burger-icon span:nth-child(2) {
                opacity: 0;
            }
            #landing-view .landing-mnav--open .landing-mnav-burger-icon span:nth-child(3) {
                transform: translateY(-7px) rotate(-45deg);
            }
            #landing-view .pubnav-scrim:not([hidden]) {
                display: block;
                position: fixed;
                inset: 0;
                z-index: 310;
                background: rgba(0, 0, 0, 0.62);
                backdrop-filter: blur(4px);
                -webkit-backdrop-filter: blur(4px);
            }
            #landing-view .landing-nav-panel {
                position: fixed;
                top: 0;
                right: 0;
                bottom: 0;
                left: auto;
                flex: none;
                width: min(20rem, 90vw);
                margin-left: 0;
                flex-direction: column;
                align-items: stretch;
                padding: max(12px, env(safe-area-inset-top, 0px)) 18px max(16px, env(safe-area-inset-bottom, 0px));
                background: linear-gradient(195deg, #08080a 0%, #121216 52%, #0e0e12 100%);
                border-left: 1px solid rgba(212, 175, 55, 0.32);
                box-shadow: -18px 0 52px rgba(0, 0, 0, 0.55);
                transform: translate3d(105%, 0, 0);
                visibility: hidden;
                pointer-events: none;
                transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1), visibility 0.3s ease;
                overflow: hidden;
                z-index: 320;
            }
            #landing-view .landing-mnav--open ~ #landing-nav-panel,
            #landing-view .landing-mnav--open .landing-nav-panel {
                transform: translate3d(0, 0, 0);
                visibility: visible;
                pointer-events: auto;
            }
            /* Mobile : en-tête avec croix en haut à droite du tiroir */
            #landing-view .landing-nav-drawer-head {
                display: flex;
                justify-content: flex-end;
                align-items: center;
                flex-shrink: 0;
                width: 100%;
                margin-bottom: 4px;
            }
            #landing-view .landing-nav-panel-close {
                display: inline-flex;
                align-items: center;
                justify-content: center;
                width: 48px;
                height: 48px;
                padding: 0;
                border-radius: 12px;
                border: 1px solid rgba(255, 255, 255, 0.22);
                background: rgba(255, 255, 255, 0.08);
                color: #fff;
                font-size: 1.35rem;
                line-height: 1;
                cursor: pointer;
                -webkit-tap-highlight-color: transparent;
            }
            #landing-view .landing-nav-panel-close i {
                color: #fff;
                pointer-events: none;
            }
            #landing-view .landing-nav-panel-close:hover {
                background: rgba(255, 255, 255, 0.14);
                border-color: rgba(255, 255, 255, 0.35);
            }
            #landing-view .landing-nav-panel-close:active {
                transform: scale(0.96);
            }
            #landing-view .landing-nav-panel-close:focus-visible {
                outline: 2px solid var(--gold);
                outline-offset: 2px;
            }
            #landing-view .landing-nav-links {
                flex-direction: column;
                align-items: stretch;
                justify-content: flex-start;
                gap: 12px;
                flex: 1;
                min-height: 0;
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
                padding-top: 4px;
            }
            #landing-view .landing-nav-links .btn-nav,
            #landing-view .landing-nav-links .nav-link.btn-nav {
                width: 100%;
                min-height: 52px;
                display: flex;
                align-items: center;
                justify-content: flex-start;
                padding: 14px 18px;
                border-radius: 14px;
                border: 1px solid rgba(255, 255, 255, 0.1);
                border-left: 1px solid rgba(255, 255, 255, 0.1);
                background: rgba(255, 255, 255, 0.04);
                text-align: left;
                font-size: 0.92rem;
            }
            /* Mobile — onglet actif : soulignement horizontal blanc */
            #landing-view .landing-nav-links .nav-link.is-active,
            #landing-view .landing-nav-links .btn-nav.is-active {
                color: #fff;
                border-left-color: transparent;
                border-bottom: 3px solid #fff;
                background: rgba(255, 255, 255, 0.12);
                padding-bottom: 11px;
            }
            #landing-view .landing-nav-links .btn-nav.btn-outline {
                border-color: rgba(212, 175, 55, 0.45);
            }
            #landing-view .landing-nav-links .btn-nav.btn-outline.is-active {
                border-color: rgba(212, 175, 55, 0.65);
                border-bottom-color: #fff;
            }
            #landing-view .landing-nav-links .btn-nav:active {
                transform: scale(0.99);
                background: rgba(212, 175, 55, 0.12);
            }
        }

        @media (max-width: 768px) and (prefers-reduced-motion: reduce) {
            #landing-view .landing-nav-panel,
            #landing-view .landing-mnav-burger-icon span {
                transition: none;
            }
        }

        /* Desktop ≥769px : croix et tiroir mobile totalement masqués */
        @media (min-width: 769px) {
            #landing-view .main-nav.landing-mnav {
                padding: 10px max(16px, env(safe-area-inset-right, 0px)) 10px max(16px, env(safe-area-inset-left, 0px));
            }
            #landing-view .landing-nav-drawer-head,
            #landing-view .landing-mnav-burger,
            #landing-view .pubnav-scrim {
                display: none !important;
                visibility: hidden !important;
                pointer-events: none !important;
            }
            #landing-view .landing-nav-panel-close {
                display: none !important;
            }
        }

        @media (min-width: 769px) {
            .landing-hero {
                min-height: min(80vh, calc(100dvh - 88px));
                padding: 56px 24px 72px;
            }
        }

        /* Typographie & densité — ≤480px (portail + landing intégrée) */
        @media (max-width: 480px) {
            .hero-content p {
                font-size: 1rem;
                line-height: 1.65;
            }
            .landing-hero {
                padding: 22px 14px 32px;
            }
            .tabs-admin-finance button {
                min-height: 44px;
                padding: 12px 14px;
            }
            .top-bar h3 {
                font-size: 1rem;
                line-height: 1.3;
            }
            .menu-item {
                min-height: 48px;
            }
        }

        /* Très petits écrans — ≤390px */
        @media (max-width: 390px) {
            .hero-content h1 {
                font-size: clamp(1.45rem, 8.5vw, 1.85rem);
            }
            #landing-view .landing-mnav-bar {
                padding-left: 12px;
                padding-right: 12px;
            }
            #landing-view .landing-brand span {
                font-size: 0.95rem;
            }
            .registro-box.maxpro-modal {
                padding: 16px;
            }
        }

        /* Utilidad para Imprimir solo el modal */
        @media print {
            body * {
                visibility: hidden;
            }
            .modal.open, .modal.open * {
                visibility: visible;
            }
            .modal.open {
                position: absolute;
                left: 0;
                top: 0;
                background: transparent;
                align-items: flex-start;
                justify-content: flex-start;
            }
            .modal-content {
                border: none;
                box-shadow: none;
                margin: 0;
                padding: 0;
                width: 100%;
                max-height: none;
                overflow: visible;
            }
            .modal-content button, .close-btn {
                display: none !important;
            }
            
        }



/* --- CREDENCIAL DIGITAL --- */
.credencial-modal {
    width: 400px;
    background: #1a1a1a;
    padding: 0;
    border: 2px solid var(--gold);
    overflow: hidden;
}

.credencial-card {
    width: 100%;
    min-height: 550px;
    background: linear-gradient(145deg, #0f0f0f, #222);
    color: #fff;
    position: relative;
    padding: 20px;
    text-align: center;
}

.credencial-header {
    border-bottom: 1px solid var(--gold);
    padding-bottom: 10px;
    margin-bottom: 20px;
}

.credencial-header h2 {
    color: var(--gold);
    margin: 0;
    font-family: 'Playfair Display', serif;
}

.credencial-header small {
    letter-spacing: 2px;
    color: #888;
}

.credencial-logo-wrap {
    width: 120px;
    height: 120px;
    border: 3px solid var(--gold);
    border-radius: 50%;
    margin: 0 auto 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    overflow: hidden;
}

.credencial-logo {
    width: 90%;
    height: 90%;
    object-fit: contain;
}

.credencial-name {
    text-transform: uppercase;
    margin-bottom: 5px;
}

.credencial-role {
    color: var(--gold);
    font-weight: 700;
    margin-bottom: 20px;
}

.credencial-details {
    text-align: left;
    background: rgba(255, 255, 255, 0.05);
    padding: 15px;
    border-radius: 8px;
    font-size: 0.8rem;
    line-height: 1.8;
}

.credencial-details div {
    display: flex;
    justify-content: space-between;
    gap: 12px;
}

.credencial-status {
    color: var(--success);
}

.credencial-status::before {
    content: "● ";
}

.credencial-qr {
    margin-top: 20px;
    opacity: 0.8;
}

.credencial-qr i {
    font-size: 3rem;
}

.credencial-qr p {
    font-size: 0.6rem;
    margin-top: 5px;
    color: #666;
}

.modal-actions {
    padding: 15px;
    display: flex;
    gap: 10px;
    background: #000;
}

/* --- CERTIFICADO EXPERT PRO --- */
#certificate-container.cert-download-stage {
    position: fixed;
    top: 0;
    left: -10000px;
    width: 800px;
    background: #fff;
    z-index: -1;
}

:root {
    /* Couleurs extraites de votre certificat INFO-TEC officiel */
    --cert-primary: #02205c;
    --cert-secondary: #e5a910;
    --cert-text: #222222;
    --cert-text-light: #555555;
}

.cert-pro-container {
    font-family: 'Montserrat', sans-serif;
    background: #f9f9f9;
    color: var(--cert-primary);
    padding: 40px;
    width: 800px;
    max-width: 100%;
    margin: 0 auto;
    position: relative;
}

.cert-border-outer {
    border: 4px solid var(--cert-primary);
    padding: 10px;
    background: #fff;
}

.cert-border-inner {
    border: 2px solid var(--cert-secondary);
    padding: 40px 50px;
    text-align: center;
    background-image: radial-gradient(circle, #fff 40%, #f4f6fa 100%);
}

.cert-header .cert-logo {
    max-width: 100px;
    margin-bottom: 15px;
}

.cert-inst-name {
    font-size: 1.8rem;
    font-weight: 800;
    letter-spacing: 2px;
    margin: 0;
    color: var(--cert-primary);
}

.cert-inst-sub {
    font-size: 0.9rem;
    color: var(--cert-secondary);
    letter-spacing: 1px;
    margin-top: 5px;
    margin-bottom: 0;
}

.cert-rut {
    color: var(--cert-primary);
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 1px;
    margin-top: 6px;
}

.cert-title {
    font-size: 2.5rem;
    margin: 30px 0 10px;
    color: var(--cert-primary);
    font-family: 'Playfair Display', serif;
    text-transform: uppercase;
}

.cert-intro,
.cert-copy,
.cert-date {
    color: var(--cert-text-light);
    line-height: 1.6;
    margin: 12px auto;
    max-width: 650px;
}

.cert-student-name {
    font-size: 2rem;
    color: var(--cert-secondary);
    border-bottom: 2px solid var(--cert-secondary);
    display: inline-block;
    padding: 0 40px 10px;
    margin: 20px 0;
    font-weight: 700;
}

.cert-course {
    font-size: 1.2rem;
    font-weight: 700;
    margin: 15px 0;
    color: var(--cert-text);
    text-transform: uppercase;
}

.cert-footer-grid {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 25px;
    margin-top: 50px;
}

.cert-signature {
    width: 220px;
    color: var(--cert-primary);
    font-size: 0.85rem;
}

.cert-signature span {
    display: block;
    color: var(--cert-text-light);
    margin-top: 4px;
}

.sig-line {
    width: 200px;
    border-top: 1px solid var(--cert-primary);
    margin: 0 auto 10px;
}

.seal-badge {
    width: 100px;
    height: 100px;
    background: var(--cert-secondary);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: 0.8rem;
    border: 4px double #fff;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}

            /* Styles pour le certificat d'impression */
            #certificate-container {
            font-family: 'Times New Roman', Times, serif; /* Police serif principale */
            color: #001f5c; /* Bleu marine principal */
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            }

            .certificate {
            position: relative;
            width: 29.7cm; /* Largeur A4 Paysage */
            height: 21cm; /* Hauteur A4 Paysage */
            background-color: #ffffff;
            border: 1px solid #ccc; /* Pour la visualisation, enlever pour l'impression réelle */
            overflow: hidden;
            box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
            margin: 20px auto; /* Pour le centrer sur la page de visualisation */
            }

            /* Éléments de fond */
            .background-side-bar {
            position: absolute;
            top: 0;
            left: 0;
            width: 20%;
            height: 100%;
            background-color: #001f5c; /* Bleu marine */
            z-index: 1;
            }

            .background-top-curves {
            position: absolute;
            top: 0;
            right: 0;
            width: 40%;
            height: 25%;
            background: linear-gradient(135deg, #d4af37 0%, #ff8c00 100%); /* Dégradé or/orange */
            border-bottom-left-radius: 100% 100%;
            z-index: 1;
            }

            /* Contenu principal */
            .certificate-content {
            position: relative;
            z-index: 2;
            padding: 1cm 1.5cm;
            height: 100%;
            display: flex;
            flex-direction: column;
            }

            /* En-tête */
            .header-left {
            text-align: left;
            margin-bottom: 0.5cm;
            }

            .title-main {
            font-size: 72pt;
            font-weight: bold;
            font-family: 'Arial Black', Gadget, sans-serif; /* Police grasse sans-serif */
            color: #d4af37; /* Or */
            margin: 0;
            }

            .title-sub {
            font-size: 28pt;
            font-family: 'Brush Script MT', cursive; /* Police cursive ornèe */
            margin: 0;
            margin-top: -10pt;
            }

            .header-right {
            text-align: right;
            margin-top: -2cm;
            }

            .inst-name {
            font-size: 36pt;
            font-weight: bold;
            margin: 0;
            }

            .inst-sub {
            font-size: 14pt;
            margin: 0;
            color: #333;
            }

            /* Corps */
            .certificate-body {
            flex-grow: 1;
            text-align: center;
            margin-top: 1cm;
            }

            .award-formula {
            font-size: 12pt;
            margin-bottom: 0.2cm;
            }

            .student-name {
            font-size: 48pt;
            font-family: 'Brush Script MT', cursive; /* Police cursive ornée */
            color: #d4af37; /* Or */
            margin: 0;
            border-bottom: 2pt solid #001f5c; /* Ligne de soulignement bleu marine */
            padding-bottom: 5pt;
            display: inline-block;
            }

            .achievement-details {
            margin-top: 1cm;
            font-size: 14pt;
            line-height: 1.6;
            }

            .achievement-details p {
            margin: 0.2cm 0;
            }

            .course-subjects {
            font-size: 18pt;
            font-weight: bold;
            color: #333;
            text-transform: uppercase;
            }

            .issue-date {
            font-size: 12pt;
            color: #555;
            margin-top: 0.5cm !important;
            }

            /* Sceaux et Signatures */
            .certificate-footer {
            display: flex;
            justify-content: space-between;
            align-items: flex-end;
            margin-top: auto;
            }

            /* Sceau physique */
            .physical-seal {
            width: 15%;
            text-align: center;
            position: absolute;
            bottom: 1cm;
            left: 2.5cm;
            z-index: 3;
            }

            .seal-inner {
            border: 4pt solid #d4af37; /* Bordure or */
            background-color: #001f5c; /* Fond bleu marine */
            border-radius: 50%;
            color: #d4af37; /* Texte or */
            font-size: 12pt;
            font-weight: bold;
            padding: 20pt 5pt;
            position: relative;
            }

            .physical-seal span {
            display: block;
            }

            .seal-ribbon {
            position: absolute;
            bottom: -20pt;
            left: 50%;
            transform: translateX(-50%);
            width: 60%;
            height: 40pt;
            background-color: #001f5c; /* Bleu marine */
            border: 2pt solid #d4af37; /* Bordure or */
            border-bottom-right-radius: 50% 100%;
            border-bottom-left-radius: 50% 100%;
            }

            /* Filigrane */
            .watermark-seal {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            font-size: 100pt;
            font-weight: bold;
            color: rgba(212, 175, 55, 0.05); /* Or avec très faible opacité */
            text-align: center;
            z-index: 1;
            }

            /* Signature */
            .signature-area {
            text-align: right;
            width: 30%;
            position: absolute;
            bottom: 1cm;
            right: 1.5cm;
            }

    /* --- QUESTION BUILDER UI --- */
    .question-builder { background: #ffffff; border: 1px solid #e6eef8; padding: 14px; border-radius: 10px; color: #0f172a; }
    .question-builder h4 { margin: 0 0 10px 0; color: #0f172a; }
    .qb-row { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 10px; flex-wrap: wrap; }
    .qb-label { min-width: 120px; color: #475569; font-weight: 700; }
    .qb-input, .qb-select, .qb-textarea, .qb-option-text { width: 100%; padding: 10px 12px; border-radius: 8px; border: 1px solid #e6eef8; box-sizing: border-box; font-size: 0.95rem; color: #0f172a; }
    .qb-textarea { min-height: 70px; resize: vertical; }
    .qb-options { display: flex; flex-direction: column; gap: 8px; }
    .qb-option-row { display: flex; gap: 8px; align-items: center; }
    .qb-option-row .qb-correct-radio { margin-right: 8px; }
    .qb-option-row .qb-option-text { flex: 1; }
    .qb-remove-option { background: transparent; border: none; color: #ef4444; cursor: pointer; font-weight: 700; }
    .qb-add-option { background: #f1f5f9; border: 1px solid #cbd5e1; color: #334155; padding: 8px 12px; border-radius: 6px; cursor: pointer; }
    .qb-add-option:hover { background: #e2e8f0; }
    #questionsList { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
    .question-card { background: #f8fafc; border: 1px solid #e6eef8; padding: 12px; border-radius: 8px; display:flex; justify-content:space-between; gap:12px; }
    .question-card .qc-left { flex: 1; }
    .question-card .qc-meta { color: #64748b; font-size: 0.9rem; margin-bottom: 8px; }
    .question-card .qc-options { color: #0f172a; font-size: 0.92rem; margin-top: 6px; }
    .question-card .qc-actions { display:flex; align-items:center; gap:8px; }
    .question-card .qc-actions .btn-admin-action { padding: 6px 8px; }

    /* --- Question Builder: drag handle & inline editor --- */
    .question-card { display:flex; align-items:flex-start; gap:12px; padding:12px; background: linear-gradient(180deg, rgba(255,255,255,0.02), rgba(0,0,0,0.02)); border:1px solid rgba(255,255,255,0.02); border-radius:8px; margin-bottom:10px; }
    .question-card .qc-left { flex:1; }
    .qc-drag-handle { cursor:grab; user-select:none; padding:6px 8px; border-radius:6px; background: rgba(255,255,255,0.02); color:#cbd5e1; align-self:flex-start; margin-right:6px; }
    .question-card.drag-over { outline: 2px dashed rgba(34,197,94,0.25); }
    .question-card.dragging { opacity: 0.55; }
    .qc-inline-editor { margin-top:10px; padding:10px; border-radius:8px; background: rgba(0,0,0,0.04); border:1px dashed rgba(148,163,184,0.06); }
    .qc-inline-editor textarea, .qc-inline-editor input[type="text"], .qc-inline-editor input[type="number"] { width:100%; padding:8px; margin-top:6px; border-radius:6px; border:1px solid #2b2b2b; background:#0b0b0b; color:#fff; }
    .qc-inline-editor .qc-editor-option { display:flex; gap:8px; align-items:center; margin-top:8px; }
    .qc-inline-editor .qc-editor-option input[type="text"] { flex:1; }
    .qc-inline-editor .qc-editor-actions { display:flex; gap:8px; justify-content:flex-end; margin-top:10px; }
    .qb-add-option, .qc-editor-add-option { background:transparent; border:1px dashed rgba(255,255,255,0.04); color:#9ca3af; padding:6px 8px; border-radius:6px; }


            .handwritten-signature {
            font-size: 24pt;
            font-family: 'Brush Script MT', cursive; /* Police cursive manuscrite */
            margin-bottom: 5pt;
            }

            .typed-signature {
            font-size: 12pt;
            border-top: 1pt solid #333; /* Ligne de soulignement */
            padding-top: 5pt;
            }

            /* Règles d'impression */
            @media print {
            body * {
                visibility: hidden;
            }
            #certificate-container, #certificate-container * {
                visibility: visible;
            }
            #certificate-container {
                position: absolute;
                left: 0;
                top: 0;
                width: 100%;
                height: 100%;
                display: block !important;
                background-color: white;
            }
            .certificate {
                border: none;
                box-shadow: none;
                margin: 0;
            }
            @page {
                size: A4 landscape; /* Force l'impression A4 Paysage */
                margin: 0;
            }
        }

/* --- App dashboard (admin/estudiante): drawer mobile + ajustes táctiles --- */
.btn-session-danger {
    border: 1px solid rgba(239, 68, 68, 0.55);
    color: #fecaca;
    background: rgba(90, 18, 18, 0.45);
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: 700;
    text-transform: uppercase;
    font-size: 0.72rem;
    transition: background 0.2s ease, border-color 0.2s ease, transform 0.15s ease;
}
.btn-session-danger:hover {
    border-color: rgba(248, 113, 113, 0.85);
    background: rgba(127, 29, 29, 0.55);
}
.btn-session-danger:active {
    transform: scale(0.98);
}
.btn-session-danger--block {
    width: 100%;
}

.student-tab-heading {
    font-size: clamp(1.25rem, 5vw, 1.75rem);
    margin: 0 0 8px;
}

.student-cert-panel-card {
    max-width: 520px;
    margin: 0 auto;
    text-align: left;
}

.student-cert-download-btn {
    margin-top: 14px;
    width: 100%;
    max-width: 360px;
    min-height: 48px;
}

.student-cert-go-progress {
    margin-top: 12px;
    min-height: 48px;
    width: 100%;
    max-width: 320px;
}

.profile-password-summary {
    max-width: 520px;
    margin: 0 auto 16px;
    padding: 12px 14px;
    border-radius: 10px;
    border: 1px solid rgba(34, 197, 94, 0.45);
    background: rgba(22, 101, 52, 0.2);
    color: #bbf7d0;
    font-size: 0.95rem;
}

.profile-password-reopen {
    display: flex;
    margin: 0 auto 18px;
    min-height: 48px;
    padding: 12px 18px;
    justify-content: center;
    max-width: 360px;
    width: 100%;
}

.student-password-panel {
    position: relative;
}

.student-password-panel .profile-security-card.maxpro-modal {
    position: relative;
    padding-top: 56px;
}

.student-password-close {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 40;
    width: 48px;
    height: 48px;
    border-radius: 12px;
    border: 1px solid #444;
    background: #1a1a1a;
    color: #fff;
    font-size: 1.5rem;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.45);
}
.student-password-close:active {
    transform: scale(0.97);
}
.student-password-close:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 2px;
}

#app-interface .app-drawer-cb {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
    opacity: 0;
    pointer-events: none;
}
#app-interface .app-drawer-scrim {
    display: none;
}
#app-interface .app-mnav-burger {
    display: none;
}
#app-interface .sidebar-drawer-close {
    display: none;
}

@media (max-width: 900px) {
    #app-interface .app-mnav-burger {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 48px;
        min-height: 48px;
        margin-right: 6px;
        border-radius: 12px;
        border: 1px solid #333;
        background: #151515;
        color: var(--gold);
        cursor: pointer;
        flex-shrink: 0;
    }
    #app-interface .app-mnav-burger:active {
        transform: scale(0.98);
    }
    #app-interface .app-mnav-burger:focus-visible {
        outline: 2px solid var(--gold);
        outline-offset: 2px;
    }

    #app-interface .top-bar {
        gap: 10px;
        padding-left: max(10px, env(safe-area-inset-left, 0px));
        padding-right: max(10px, env(safe-area-inset-right, 0px));
    }
    #app-interface .top-bar #page-title {
        flex: 1;
        min-width: 0;
        font-size: clamp(0.95rem, 4vw, 1.1rem);
        margin: 0;
        text-align: left;
    }

    #app-interface.app-container {
        flex-direction: row !important;
        align-items: stretch;
        position: relative;
        overflow: hidden;
    }

    #app-interface .app-drawer-scrim {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 240;
        background: rgba(0, 0, 0, 0.55);
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.22s ease;
    }
    #app-interface #app-drawer-toggle:checked + .app-drawer-scrim {
        opacity: 1;
        pointer-events: auto;
    }

    #app-interface .sidebar {
        position: fixed;
        left: 0;
        top: 0;
        bottom: 0;
        width: min(300px, 88vw);
        max-width: 100%;
        transform: translate3d(-105%, 0, 0);
        transition: transform 0.26s ease;
        z-index: 260;
        flex-direction: column;
        align-items: stretch;
        border-right: 1px solid #2a2a2a;
        border-bottom: none;
        padding: 0;
        padding-top: max(8px, env(safe-area-inset-top, 0px));
        padding-bottom: max(8px, env(safe-area-inset-bottom, 0px));
        box-shadow: 8px 0 28px rgba(0, 0, 0, 0.45);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        background: rgba(8, 8, 8, 0.98);
    }
    #app-interface #app-drawer-toggle:checked ~ .sidebar {
        transform: translate3d(0, 0, 0);
    }

    #app-interface .sidebar-drawer-close {
        display: inline-flex;
        position: absolute;
        top: max(8px, env(safe-area-inset-top, 0px));
        right: 10px;
        z-index: 5;
        align-items: center;
        justify-content: center;
        min-width: 48px;
        min-height: 48px;
        border-radius: 12px;
        border: 1px solid rgba(212, 175, 55, 0.35);
        color: #fff;
        cursor: pointer;
        background: rgba(24, 24, 24, 0.95);
    }
    #app-interface .sidebar .brand {
        padding-right: 56px;
    }
    #app-interface .sidebar-drawer-close:focus-visible {
        outline: 2px solid var(--gold);
        outline-offset: 2px;
    }
    #app-interface .sidebar-drawer-close:active {
        transform: scale(0.98);
    }

    #app-interface .sidebar .menu {
        display: flex;
        flex-direction: column;
        flex: 1;
        min-height: 0;
        max-height: none;
        grid-template-columns: unset;
        gap: 6px;
        padding: 10px 12px 12px;
    }
    /* Sidebar dashboard — onglet actif (mobile) : barre horizontale sous l’item */
    #app-interface .sidebar .menu-item {
        border-left-color: transparent;
        border-bottom: 3px solid transparent;
        border-radius: 10px;
    }
    #app-interface .sidebar .menu-item.active {
        color: #fff;
        background: rgba(255, 255, 255, 0.1);
        border-left-color: transparent;
        border-bottom-color: #fff;
    }

    #app-interface .sidebar .menu-item,
    #app-interface .sidebar .menu-item-link {
        width: 100%;
        min-height: 48px;
        border-left: none !important;
    }

    #app-interface .main-area {
        flex: 1;
        width: 100%;
        min-height: 0;
        padding-bottom: max(12px, env(safe-area-inset-bottom, 0px));
    }

    body:has(#app-interface:not(.hidden) #app-drawer-toggle:checked) {
        overflow: hidden;
    }

    #view-student .exam-student-shell {
        grid-template-columns: 1fr;
        padding: 16px;
    }
    #view-student .exam-student-side {
        order: -1;
    }

    .modal.open .modal-content {
        width: min(480px, calc(100vw - 24px));
        max-width: calc(100vw - 24px);
        padding: 22px 18px;
    }
    .modal.open .close-btn {
        min-width: 48px;
        min-height: 48px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        font-size: 1.6rem;
        top: 8px;
        right: 8px;
    }

    #view-admin .data-table {
        font-size: 0.78rem;
    }
    #view-admin .table-wrapper {
        max-width: 100%;
    }
}

@media (max-width: 400px) {
    .btn-session-danger-text {
        display: none;
    }
}

/* ===== LANDING NAV — fix définitif (PC ≥901px uniquement) ===== */
@media (min-width: 901px) {
    #landing-view .landing-overlay {
        position: relative;
    }

    #landing-view .landing-nav-drawer-head,
    #landing-view .landing-nav-panel-close {
        display: none !important;
        visibility: hidden !important;
        pointer-events: none !important;
        opacity: 0 !important;
    }
    #landing-view .main-nav.landing-mnav {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        width: 100% !important;
    }

    #landing-view .landing-mnav-bar {
        width: auto !important;
        flex: 0 0 auto !important;
    }

    #landing-view .landing-mnav-burger,
    #landing-view .landing-nav-drawer-head,
    #landing-view .landing-nav-panel-close,
    #landing-view .pubnav-scrim {
        display: none !important;
        visibility: hidden !important;
        pointer-events: none !important;
    }

    /* Panel hors <nav> : superposé sur la barre, liens à droite */
    #landing-view #landing-nav-panel.landing-nav-panel {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        justify-content: flex-end !important;
        position: absolute !important;
        top: 0 !important;
        right: 0 !important;
        left: 0 !important;
        width: auto !important;
        height: auto !important;
        min-height: 64px !important;
        margin: 0 !important;
        padding: 10px max(16px, env(safe-area-inset-right, 0px)) 10px 220px !important;
        transform: none !important;
        visibility: visible !important;
        opacity: 1 !important;
        pointer-events: none !important;
        background: transparent !important;
        border: none !important;
        box-shadow: none !important;
        overflow: visible !important;
        z-index: 241 !important;
    }

    #landing-view .landing-nav-links {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        pointer-events: auto !important;
    }
}

/* Mobile ≤900px — tiroir (#landing-nav-panel) piloté par .landing-mnav--open (JS) */
@media (max-width: 900px) {
    #landing-view .main-nav.landing-mnav {
        display: block !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
        overflow: visible !important;
    }

    #landing-view .landing-mnav-burger {
        display: inline-flex !important;
    }

    #landing-view .pubnav-scrim:not([hidden]) {
        display: block !important;
        position: fixed !important;
        inset: 0 !important;
        z-index: 9998 !important;
        background: rgba(0, 0, 0, 0.62) !important;
        backdrop-filter: blur(4px) !important;
        -webkit-backdrop-filter: blur(4px) !important;
    }

    /* Fermé par défaut (hors écran) */
    #landing-view .landing-nav-panel {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        position: fixed !important;
        top: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        left: auto !important;
        width: min(20rem, 90vw) !important;
        padding: max(12px, env(safe-area-inset-top, 0px)) 18px max(16px, env(safe-area-inset-bottom, 0px)) !important;
        background: linear-gradient(195deg, #08080a 0%, #121216 52%, #0e0e12 100%) !important;
        border-left: 1px solid rgba(212, 175, 55, 0.32) !important;
        box-shadow: -18px 0 52px rgba(0, 0, 0, 0.55) !important;
        transform: translateX(100%) !important;
        visibility: hidden !important;
        opacity: 0 !important;
        pointer-events: none !important;
        z-index: 9999 !important;
        overflow: hidden !important;
        transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1), visibility 0.3s ease, opacity 0.3s ease !important;
    }

    /* Ouvert : classe .landing-mnav--open sur #landing-mnav + aria-hidden="false" sur le panel */
    #landing-view .landing-mnav--open ~ #landing-nav-panel,
    #landing-view .landing-mnav--open .landing-nav-panel,
    #landing-view .landing-mnav--open #landing-nav-panel,
    #landing-view .landing-nav-panel[aria-hidden="false"] {
        display: flex !important;
        transform: translateX(0) !important;
        visibility: visible !important;
        opacity: 1 !important;
        pointer-events: auto !important;
        height: 100dvh !important;
        max-height: 100dvh !important;
        z-index: 9999 !important;
    }

    #landing-view .landing-nav-drawer-head,
    #landing-view .landing-nav-panel-close {
        display: none !important;
        visibility: hidden !important;
        pointer-events: none !important;
        opacity: 0 !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-drawer-head:not([hidden]),
    #landing-view .landing-mnav--open .landing-nav-drawer-head:not([hidden]) {
        display: flex !important;
        visibility: visible !important;
        opacity: 1 !important;
        pointer-events: auto !important;
        justify-content: flex-end !important;
        width: 100% !important;
        margin-bottom: 8px !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-panel-close,
    #landing-view .landing-mnav--open .landing-nav-panel-close {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        visibility: visible !important;
        opacity: 1 !important;
        pointer-events: auto !important;
        width: 48px !important;
        height: 48px !important;
        border-radius: 12px !important;
        border: 1px solid rgba(255, 255, 255, 0.22) !important;
        background: rgba(255, 255, 255, 0.08) !important;
        color: #fff !important;
        font-size: 1.35rem !important;
        cursor: pointer !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-panel-close i,
    #landing-view .landing-mnav--open .landing-nav-panel-close i {
        color: #fff !important;
    }

    /* Force l'affichage du conteneur des liens quand le tiroir est ouvert */
    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links,
    #landing-view .landing-mnav--open .landing-nav-links {
        display: flex !important;
        flex: 1 1 auto !important;
        flex-direction: column !important;
        align-items: stretch !important;
        justify-content: flex-start !important;
        gap: 20px !important;
        width: 100% !important;
        min-height: 0 !important;
        visibility: visible !important;
        opacity: 1 !important;
        pointer-events: auto !important;
        margin-top: 30px !important;
        overflow-y: auto !important;
        -webkit-overflow-scrolling: touch !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links a,
    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links button:not(.lang-btn),
    #landing-view .landing-mnav--open .landing-nav-links a,
    #landing-view .landing-mnav--open .landing-nav-links button:not(.lang-btn) {
        display: flex !important;
        visibility: visible !important;
        opacity: 1 !important;
        width: 100% !important;
        color: #ffffff !important;
        pointer-events: auto !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links .btn-nav.btn-outline,
    #landing-view .landing-mnav--open .landing-nav-links .btn-nav.btn-outline {
        color: var(--gold) !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links .btn-nav.btn-gold,
    #landing-view .landing-mnav--open .landing-nav-links .btn-nav.btn-gold {
        color: #000 !important;
    }

    /* =========================================
       DESIGN VITRINE DE LUXE - MENU MOBILE
       ========================================= */

    /* 1. L'Arrière-plan : L'Image de la Pack floutée */
    #landing-view .landing-mnav--open ~ #landing-nav-panel::before {
        content: '' !important;
        position: absolute !important;
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        background-image: url('/images/pack_bureautique.png') !important;
        background-size: cover !important;
        background-position: center !important;
        filter: blur(40px) brightness(40%) !important;
        z-index: -2 !important;
    }

    /* 2. Le Panneau de Verre Dépoli (Verre Fumé) */
    #landing-view .landing-mnav--open ~ #landing-nav-panel {
        background: rgba(10, 10, 15, 0.5) !important;
        backdrop-filter: blur(25px) saturate(180%) !important;
        -webkit-backdrop-filter: blur(25px) saturate(180%) !important;
        border-left: 1px solid rgba(255, 255, 255, 0.04) !important;
        box-shadow: -15px 0 35px rgba(0, 0, 0, 0.5) !important;
        position: fixed !important;
        isolation: isolate !important;
        overflow: hidden !important;
        z-index: 9999 !important;
    }

    /* 3. Bouton de fermeture : Discret, translucide */
    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-panel-close {
        width: 36px !important;
        height: 36px !important;
        border-radius: 50% !important;
        background: rgba(255, 255, 255, 0.05) !important;
        border: 1px solid rgba(255, 255, 255, 0.04) !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        margin: 25px 25px 30px auto !important;
        color: #ffffff !important;
        text-shadow: none !important;
        box-shadow: none !important;
    }

    /* 4. Conteneur aéré */
    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links {
        display: flex !important;
        flex-direction: column !important;
        gap: 12px !important;
        padding: 0 25px !important;
        position: relative !important;
        z-index: 1 !important;
    }

    /* 5. Les Liens : Finesse, minimalisme et élégance sur le verre */
    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links a,
    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links button:not(.lang-btn),
    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links li {
        display: block !important;
        width: 100% !important;
        padding: 18px 20px !important;
        background: rgba(255, 255, 255, 0.02) !important;
        border: 1px solid rgba(255, 255, 255, 0.03) !important;
        border-radius: 14px !important;
        color: #f5f5f7 !important;
        font-size: 1.15rem !important;
        font-weight: 500 !important;
        letter-spacing: 0.5px !important;
        text-align: left !important;
        text-shadow: none !important;
        box-shadow: none !important;
        text-decoration: none !important;
    }

    /* Boutons menu ☰ — Inscribirse + connexion bleue lisible */
    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links .btn-nav.btn-outline {
        color: var(--gold) !important;
        border-color: rgba(212, 175, 55, 0.55) !important;
        background: rgba(212, 175, 55, 0.1) !important;
        font-weight: 600 !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links .btn-nav.btn-gold {
        background: linear-gradient(135deg, #3d9bff 0%, #0a63d8 100%) !important;
        color: #ffffff !important;
        border: 1px solid rgba(160, 210, 255, 0.75) !important;
        font-weight: 700 !important;
        text-shadow: 0 1px 3px rgba(0, 30, 80, 0.45) !important;
        box-shadow: 0 6px 20px rgba(10, 120, 255, 0.5) !important;
    }

    /* Sélecteur de langue — tiroir verre fumé (mobile) */
    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links .lang-switcher {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        box-sizing: border-box !important;
        width: 100% !important;
        max-width: 100% !important;
        margin: 0 0 8px 0 !important;
        padding: 14px 14px !important;
        border-left: none !important;
        border-radius: 14px !important;
        background: rgba(255, 255, 255, 0.04) !important;
        border: 1px solid rgba(255, 255, 255, 0.06) !important;
        gap: 10px !important;
        overflow: hidden !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .lang-icon {
        display: flex !important;
        align-items: center !important;
        gap: 8px !important;
        color: rgba(245, 245, 247, 0.7) !important;
        font-size: 0.78rem !important;
        font-weight: 500 !important;
        letter-spacing: 0.04em !important;
        text-transform: none !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .lang-switcher-label {
        display: inline !important;
        text-transform: uppercase !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .lang-switcher-options {
        display: grid !important;
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
        align-items: stretch !important;
        gap: 6px !important;
        box-sizing: border-box !important;
        width: 100% !important;
        max-width: 100% !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .lang-divider {
        display: none !important;
        width: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links .lang-btn {
        box-sizing: border-box !important;
        flex: none !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        min-height: 44px !important;
        padding: 10px 6px !important;
        margin: 0 !important;
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        border-radius: 10px !important;
        background: rgba(255, 255, 255, 0.05) !important;
        border: 1px solid rgba(255, 255, 255, 0.06) !important;
        color: rgba(245, 245, 247, 0.55) !important;
        font-size: 0.78rem !important;
        font-weight: 600 !important;
        letter-spacing: 0 !important;
        text-align: center !important;
        text-decoration: none !important;
        text-shadow: none !important;
        box-shadow: none !important;
        opacity: 1 !important;
        text-transform: none !important;
        transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .lang-btn-label {
        letter-spacing: 0.06em !important;
        font-size: 0.78rem !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links .lang-btn:hover {
        background: rgba(255, 255, 255, 0.09) !important;
        color: rgba(245, 245, 247, 0.9) !important;
    }

    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links .lang-btn.is-active,
    #landing-view .landing-mnav--open ~ #landing-nav-panel .landing-nav-links .lang-btn.active {
        background: rgba(255, 255, 255, 0.12) !important;
        border-color: rgba(212, 175, 55, 0.35) !important;
        color: var(--gold) !important;
        box-shadow: 0 0 20px rgba(255, 255, 255, 0.08) !important;
    }
}

/* --- Checkout Modal Pro Max (Pack Bureautique) --- */
.checkout-modal-overlay[hidden] {
    display: none !important;
}
.checkout-modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(10, 10, 15, 0.8);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 9999;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
    padding: 20px;
    box-sizing: border-box;
}
.checkout-modal-overlay.is-active {
    opacity: 1;
    visibility: visible;
}
.checkout-modal-content {
    background: #ffffff;
    border-radius: 24px;
    width: 90%;
    max-width: 420px;
    padding: 30px;
    position: relative;
    text-align: center;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
    transform: translateY(20px) scale(0.95);
    transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    color: #1a1a2e;
}
.checkout-modal-overlay.is-active .checkout-modal-content {
    transform: translateY(0) scale(1);
}
.checkout-close-btn {
    position: absolute;
    top: 15px;
    right: 15px;
    background: rgba(0, 0, 0, 0.05);
    border: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    font-size: 20px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: 0.2s;
    color: #333;
}
.checkout-close-btn:hover {
    background: rgba(0, 0, 0, 0.1);
}
.checkout-pack-img {
    max-width: 180px;
    height: auto;
    margin-bottom: 20px;
    filter: drop-shadow(0px 15px 20px rgba(0, 0, 0, 0.3));
    transition: transform 0.3s ease;
}
.checkout-pack-img:hover {
    transform: scale(1.05);
}
.checkout-title {
    font-size: 1.4rem;
    font-weight: 800;
    margin-bottom: 10px;
    color: #0f172a;
}
.checkout-message {
    font-size: 1.05rem;
    line-height: 1.4;
    color: #475569;
    margin-bottom: 25px;
}
.checkout-highlight {
    color: #d4af37;
    font-weight: bold;
}
.checkout-buttons {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.checkout-modal-overlay .pay-btn {
    display: block;
    width: 100%;
    padding: 15px 20px;
    border-radius: 12px;
    font-size: 1.1rem;
    font-weight: 700;
    text-decoration: none;
    transition: 0.2s;
    text-align: center;
    border: none;
    cursor: pointer;
    box-sizing: border-box;
}
.checkout-modal-overlay .btn-flow {
    background: #F27830;
    color: #ffffff;
    box-shadow: 0 4px 15px rgba(242, 120, 48, 0.3);
}
.checkout-modal-overlay .btn-flow:hover {
    background: #d96624;
    transform: translateY(-2px);
}
.checkout-modal-overlay .btn-paypal {
    background: #FFC439;
    color: #003087;
    box-shadow: 0 4px 15px rgba(255, 196, 57, 0.3);
}
.checkout-modal-overlay .btn-paypal:hover {
    background: #f4b625;
    transform: translateY(-2px);
}
.checkout-inscription-cta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-top: 14px;
    padding: 12px 16px;
    border-radius: 10px;
    border: 1px dashed rgba(30, 58, 138, 0.35);
    background: rgba(30, 58, 138, 0.06);
    color: #1e3a8a;
    font-weight: 700;
    font-size: 0.92rem;
    text-decoration: none;
    transition: background 0.2s ease, border-color 0.2s ease;
}
.checkout-inscription-cta:hover {
    background: rgba(30, 58, 138, 0.1);
    border-color: rgba(30, 58, 138, 0.5);
}
.payment-retry-btn--form {
    background: #1e3a8a !important;
    color: #fff !important;
    box-shadow: 0 4px 15px rgba(30, 58, 138, 0.3) !important;
}
.payment-retry-btn--form:hover {
    background: #0f172a !important;
}

/* --- Pages post-paiement (merci / erreur) --- */
.payment-status-page {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    min-height: 100dvh;
    background: linear-gradient(165deg, #f0f4ff 0%, #f8fafc 40%, #ffffff 100%);
}
.payment-status-page--success {
    background: linear-gradient(165deg, #ecfdf5 0%, #f0f9ff 35%, #ffffff 100%);
}
.payment-status-page--error {
    background: linear-gradient(165deg, #fff7ed 0%, #fef2f2 30%, #ffffff 100%);
}
.payment-status-main {
    flex: 1;
    padding: 48px 20px 64px;
}
.payment-status-container {
    max-width: 800px;
    margin: 0 auto;
    padding: 40px 20px;
    text-align: center;
}
.payment-status-icon {
    width: 88px;
    height: 88px;
    margin: 0 auto 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    font-size: 2.2rem;
}
.payment-status-icon--success {
    background: linear-gradient(145deg, #22c55e, #16a34a);
    color: #fff;
    box-shadow: 0 16px 40px rgba(34, 197, 94, 0.35);
}
.payment-status-icon--success .payment-check-ring {
    position: absolute;
    inset: -6px;
    border-radius: 50%;
    border: 3px solid rgba(34, 197, 94, 0.35);
    animation: payment-check-pulse 2s ease-out infinite;
}
@keyframes payment-check-pulse {
    0% { transform: scale(1); opacity: 1; }
    70% { transform: scale(1.15); opacity: 0; }
    100% { transform: scale(1.15); opacity: 0; }
}
.payment-status-icon--success i {
    animation: payment-check-pop 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.15s both;
}
@keyframes payment-check-pop {
    from { transform: scale(0); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}
.payment-status-icon--error {
    background: linear-gradient(145deg, #fb923c, #f97316);
    color: #fff;
    box-shadow: 0 16px 40px rgba(249, 115, 22, 0.28);
    font-size: 2.5rem;
}
.payment-status-title {
    font-family: 'Poppins', 'Montserrat', system-ui, sans-serif;
    font-size: clamp(1.65rem, 4vw, 2.35rem);
    font-weight: 900;
    color: #0f172a;
    line-height: 1.2;
    margin: 0 0 14px;
}
.payment-status-lead {
    font-size: 1.12rem;
    line-height: 1.6;
    color: #475569;
    max-width: 620px;
    margin: 0 auto 36px;
    font-weight: 500;
}
.payment-steps {
    text-align: left;
    margin-bottom: 40px;
}
.payment-steps-heading {
    font-family: 'Poppins', sans-serif;
    font-size: 1.35rem;
    font-weight: 800;
    color: #0f172a;
    text-align: center;
    margin: 0 0 24px;
}
.payment-steps-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.payment-step-card {
    display: flex;
    align-items: flex-start;
    gap: 18px;
    padding: 22px 24px;
    background: rgba(255, 255, 255, 0.72);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(148, 163, 184, 0.25);
    border-radius: 16px;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.payment-step-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 32px rgba(15, 23, 42, 0.1);
}
.payment-step-num {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: linear-gradient(135deg, #1e3a8a, #3b82f6);
    color: #fff;
    font-family: 'Poppins', sans-serif;
    font-weight: 800;
    font-size: 1rem;
    display: flex;
    align-items: center;
    justify-content: center;
}
.payment-step-body {
    flex: 1;
    min-width: 0;
}
.payment-step-emoji {
    font-size: 1.35rem;
    display: block;
    margin-bottom: 6px;
}
.payment-step-card h3 {
    font-family: 'Poppins', sans-serif;
    font-size: 1.08rem;
    font-weight: 800;
    color: #0f172a;
    margin: 0 0 6px;
}
.payment-step-card p {
    margin: 0;
    font-size: 0.98rem;
    line-height: 1.55;
    color: #64748b;
}
.payment-step-card strong {
    color: #1e3a8a;
}
.video-container {
    width: 100%;
    margin: 0 0 36px;
    padding: 0;
    border: none;
}
.video-container--embedded {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.video-container--embedded iframe {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    height: auto;
    border: 0;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
    background: #0f172a;
}
.video-container-caption {
    margin: 0;
    font-size: 0.92rem;
    font-weight: 600;
    color: #64748b;
    text-align: center;
    line-height: 1.4;
}
.payment-status-actions {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 14px;
}
.payment-status-page .payment-cta-primary {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 18px 32px;
    border-radius: 999px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    text-decoration: none;
    background: #1e3a8a;
    color: #fff;
    box-shadow: 0 12px 28px rgba(30, 58, 138, 0.35);
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.payment-status-page .payment-cta-primary:hover {
    background: #0a1128;
    transform: translateY(-2px);
    box-shadow: 0 16px 36px rgba(10, 17, 40, 0.4);
}
.payment-retry-box {
    max-width: 480px;
    margin: 0 auto 28px;
    padding: 28px 24px;
    background: rgba(255, 255, 255, 0.8);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(251, 146, 60, 0.25);
    border-radius: 20px;
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.06);
}
.payment-retry-box p {
    margin: 0 0 20px;
    color: #475569;
    font-size: 1.02rem;
    line-height: 1.5;
}
.payment-retry-buttons {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.payment-retry-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    padding: 16px 22px;
    border-radius: 12px;
    font-size: 1.08rem;
    font-weight: 700;
    text-decoration: none;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    border: none;
    box-sizing: border-box;
}
.payment-retry-btn.btn-flow {
    background: #F27830;
    color: #fff;
    box-shadow: 0 4px 15px rgba(242, 120, 48, 0.3);
}
.payment-retry-btn.btn-flow:hover {
    background: #d96624;
    transform: translateY(-2px);
}
.payment-retry-btn.btn-paypal {
    background: #FFC439;
    color: #003087;
    box-shadow: 0 4px 15px rgba(255, 196, 57, 0.3);
}
.payment-retry-btn.btn-paypal:hover {
    background: #f4b625;
    transform: translateY(-2px);
}
.payment-status-back {
    margin: 0;
    font-size: 1rem;
}
.payment-status-back a {
    color: #1e3a8a;
    font-weight: 600;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    transition: color 0.2s ease;
}
.payment-status-back a:hover {
    color: #0f172a;
    text-decoration: underline;
}
.qs-footer-list {
    list-style: none;
    padding: 0;
    margin: 0;
    line-height: 2;
}
/* Célébration merci.html — confettis + éclat central */
.merci-celebration {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 8000;
    overflow: hidden;
}
.merci-celebration-burst {
    position: fixed;
    left: 50%;
    top: 22%;
    transform: translate(-50%, -50%);
    width: 120px;
    height: 120px;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2;
    animation: merci-burst-in 0.85s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}
.merci-celebration-burst.is-done {
    animation: merci-burst-out 0.6s ease forwards;
}
.merci-burst-ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 3px solid rgba(255, 215, 0, 0.65);
    box-shadow: 0 0 40px rgba(255, 215, 0, 0.35);
    animation: merci-ring-pulse 1.2s ease-out 2;
}
.merci-burst-icon {
    font-size: 3.2rem;
    line-height: 1;
    filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.15));
    animation: merci-icon-pop 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.1s both;
}
@keyframes merci-burst-in {
    from { opacity: 0; transform: translate(-50%, -50%) scale(0.3); }
    to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
@keyframes merci-burst-out {
    to { opacity: 0; transform: translate(-50%, -50%) scale(1.2); }
}
@keyframes merci-ring-pulse {
    0% { transform: scale(0.85); opacity: 1; }
    100% { transform: scale(1.35); opacity: 0; }
}
@keyframes merci-icon-pop {
    from { transform: scale(0); }
    to { transform: scale(1); }
}
.merci-confetti,
.merci-sparkle {
    position: absolute;
    top: -8%;
    display: block;
    will-change: transform, opacity;
    animation: merci-confetti-fall linear forwards;
}
.merci-confetti--rect {
    border-radius: 2px;
}
.merci-confetti--circle {
    border-radius: 50%;
}
.merci-sparkle {
    line-height: 1;
    filter: drop-shadow(0 2px 4px rgba(255, 215, 0, 0.4));
}
@keyframes merci-confetti-fall {
    0% {
        transform: translate3d(0, 0, 0) rotate(0deg);
        opacity: 0;
    }
    6% {
        opacity: 1;
    }
    100% {
        transform: translate3d(var(--drift, 20px), 110vh, 0) rotate(var(--spin, 360deg));
        opacity: 0.4;
    }
}
@media (prefers-reduced-motion: reduce) {
    .merci-celebration {
        display: none !important;
    }
}

@media (max-width: 640px) {
    .payment-status-container {
        padding: 28px 12px;
    }
    .payment-step-card {
        flex-direction: column;
        gap: 12px;
        padding: 18px 16px;
    }
    .payment-status-icon {
        width: 72px;
        height: 72px;
        font-size: 1.8rem;
    }
}

/* ===== Dashboard estudiante — experiencia app móvil ===== */
.student-app-tab {
    flex: 1;
    min-height: 0;
}

#app-interface.app-student-shell .student-app-tab:not(.hidden) {
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
}

.student-progress-tab,
.student-cert-tab {
    padding: 20px max(16px, env(safe-area-inset-right, 0px)) 24px max(16px, env(safe-area-inset-left, 0px));
    text-align: center;
}

.student-finance-tab {
    padding: 20px max(16px, env(safe-area-inset-right, 0px)) 24px max(16px, env(safe-area-inset-left, 0px));
}

.student-syllabus-panel {
    background: var(--bg-panel);
    padding: 16px;
    border-radius: 14px;
    border: 1px solid #333;
}

.student-syllabus-title {
    margin: 0 0 12px;
    font-size: 1rem;
}

.student-course-list {
    max-height: none;
}

.student-bottom-nav {
    display: none;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 320;
    padding: 6px max(8px, env(safe-area-inset-right, 0px)) max(6px, env(safe-area-inset-bottom, 0px)) max(8px, env(safe-area-inset-left, 0px));
    background: rgba(10, 10, 12, 0.96);
    border-top: 1px solid rgba(212, 175, 55, 0.28);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    box-shadow: 0 -8px 28px rgba(0, 0, 0, 0.45);
    grid-template-columns: repeat(4, 1fr);
    gap: 4px;
    -webkit-tap-highlight-color: transparent;
}

.student-mnav-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    min-height: 52px;
    padding: 6px 4px;
    border: none;
    border-radius: 12px;
    background: transparent;
    color: #9ca3af;
    font-family: inherit;
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    cursor: pointer;
    transition: color 0.2s ease, background 0.2s ease, transform 0.15s ease;
}

.student-mnav-item i {
    font-size: 1.15rem;
}

.student-mnav-item.active {
    color: var(--gold);
    background: rgba(212, 175, 55, 0.12);
}

.student-mnav-item:active {
    transform: scale(0.97);
}

.student-mnav-item:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 2px;
}

.student-more-sheet {
    position: fixed;
    inset: 0;
    z-index: 400;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    pointer-events: none;
    visibility: hidden;
    opacity: 0;
    transition: opacity 0.22s ease, visibility 0.22s ease;
}

.student-more-sheet.is-open {
    pointer-events: auto;
    visibility: visible;
    opacity: 1;
}

.student-more-scrim {
    position: absolute;
    inset: 0;
    border: none;
    padding: 0;
    margin: 0;
    background: rgba(0, 0, 0, 0.55);
    cursor: pointer;
}

.student-more-panel {
    position: relative;
    width: 100%;
    max-width: 520px;
    max-height: min(82dvh, 82vh);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    background: linear-gradient(195deg, #0c0c0f 0%, #16161c 55%, #101014 100%);
    border-radius: 20px 20px 0 0;
    border: 1px solid rgba(212, 175, 55, 0.28);
    border-bottom: none;
    padding: 16px max(18px, env(safe-area-inset-right, 0px)) max(20px, env(safe-area-inset-bottom, 0px)) max(18px, env(safe-area-inset-left, 0px));
    transform: translateY(100%);
    transition: transform 0.28s cubic-bezier(0.32, 0.72, 0, 1);
    box-shadow: 0 -16px 48px rgba(0, 0, 0, 0.5);
}

.student-more-sheet.is-open .student-more-panel {
    transform: translateY(0);
}

.student-more-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}

.student-more-header h3 {
    margin: 0;
    color: #fff;
    font-size: 1.05rem;
}

.student-more-close {
    min-width: 44px;
    min-height: 44px;
    border-radius: 12px;
    border: 1px solid #333;
    background: #1a1a1a;
    color: #fff;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.student-more-user {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    margin-bottom: 12px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.08);
}

.student-more-user strong {
    display: block;
    color: #fff;
    font-size: 0.95rem;
}

.student-more-user span {
    color: #888;
    font-size: 0.75rem;
}

.student-more-menu {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.student-more-link {
    width: 100%;
    min-height: 48px;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 14px;
    border: none;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.04);
    color: #f3f4f6;
    font-family: inherit;
    font-size: 0.92rem;
    font-weight: 600;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

.student-more-link i {
    width: 22px;
    color: var(--gold);
    text-align: center;
}

.student-more-link--external {
    color: #86efac;
}

.student-more-link--external i {
    color: #22c55e;
}

.student-more-link:active {
    background: rgba(255, 255, 255, 0.1);
}

.student-more-logout {
    width: 100%;
    margin-top: 14px;
    min-height: 48px;
    border-radius: 12px;
    border: 1px solid rgba(239, 68, 68, 0.45);
    background: rgba(127, 29, 29, 0.35);
    color: #fecaca;
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

body.student-more-open {
    overflow: hidden;
}

body.student-classes-open {
    overflow: hidden;
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.mis-clases-toggle-btn {
    display: none;
}

.student-video-exam-cta {
    width: 100%;
    margin-top: 4px;
    padding: 14px;
    border-radius: 12px;
    background: rgba(14, 165, 233, 0.08);
    border: 1px solid rgba(14, 165, 233, 0.35);
}

.student-video-exam-cta.is-passed {
    background: rgba(34, 197, 94, 0.08);
    border-color: rgba(34, 197, 94, 0.35);
}

.student-video-exam-lead {
    margin: 0 0 10px;
    font-size: 0.88rem;
    color: #bae6fd;
    line-height: 1.45;
    font-weight: 600;
}

.student-module-exam-btn--prominent {
    min-height: 48px;
    font-size: 0.95rem;
    box-shadow: 0 4px 18px rgba(37, 99, 235, 0.35);
}

.student-classes-sheet {
    position: fixed;
    inset: 0;
    z-index: 410;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    pointer-events: none;
    visibility: hidden;
    opacity: 0;
    transition: opacity 0.22s ease, visibility 0.22s ease;
}

.student-classes-sheet.is-open {
    pointer-events: auto;
    visibility: visible;
    opacity: 1;
}

.student-classes-scrim {
    position: absolute;
    inset: 0;
    border: none;
    padding: 0;
    margin: 0;
    background: rgba(0, 0, 0, 0.55);
    cursor: pointer;
}

.student-classes-panel {
    position: relative;
    width: 100%;
    max-width: 520px;
    max-height: min(78dvh, 78vh);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    background: linear-gradient(195deg, #0c0c0f 0%, #16161c 55%, #101014 100%);
    border-radius: 20px 20px 0 0;
    border: 1px solid rgba(212, 175, 55, 0.35);
    border-bottom: none;
    padding: 16px max(18px, env(safe-area-inset-right, 0px)) max(20px, env(safe-area-inset-bottom, 0px)) max(18px, env(safe-area-inset-left, 0px));
    transform: translateY(100%);
    transition: transform 0.28s cubic-bezier(0.32, 0.72, 0, 1);
    box-shadow: 0 -16px 48px rgba(0, 0, 0, 0.5);
}

.student-classes-sheet.is-open .student-classes-panel {
    transform: translateY(0);
}

.student-classes-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}

.student-classes-header h3 {
    margin: 0;
    color: var(--gold);
    font-size: 1.1rem;
}

.student-classes-subtitle {
    margin: 6px 0 0;
    color: #94a3b8;
    font-size: 0.82rem;
    line-height: 1.4;
}

.student-classes-close {
    flex-shrink: 0;
    min-width: 44px;
    min-height: 44px;
    border-radius: 12px;
    border: 1px solid rgba(212, 175, 55, 0.35);
    background: rgba(212, 175, 55, 0.08);
    color: var(--gold);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.student-classes-close:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 2px;
}

#student-classes-list {
    max-height: none;
}

@media (prefers-reduced-motion: reduce) {
    .student-classes-sheet,
    .student-classes-panel {
        transition: none;
    }
}

#app-interface.app-student-shell #view-student:not(.hidden) {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

@media (max-width: 900px) {
    #app-interface.app-student-shell .sidebar {
        display: none !important;
    }

    #app-interface.app-student-shell .app-mnav-burger,
    #app-interface.app-student-shell .app-drawer-scrim,
    #app-interface.app-student-shell .sidebar-drawer-close {
        display: none !important;
    }

    #app-interface.app-student-shell .student-bottom-nav {
        display: grid;
    }

    #app-interface.app-student-shell .top-bar {
        min-height: 52px;
        padding: 8px max(14px, env(safe-area-inset-right, 0px)) 8px max(14px, env(safe-area-inset-left, 0px));
        padding-top: max(8px, env(safe-area-inset-top, 0px));
    }

    #app-interface.app-student-shell .top-bar .app-status-pill {
        display: none;
    }

    #app-interface.app-student-shell .top-bar #page-title {
        font-size: 1rem;
        font-weight: 800;
        letter-spacing: 0.02em;
    }

    #app-interface.app-student-shell #view-student {
        display: flex;
        flex-direction: column;
        flex: 1;
        min-height: 0;
        padding-bottom: calc(68px + env(safe-area-inset-bottom, 0px));
    }

    #app-interface.app-student-shell .main-area {
        min-height: 0;
    }

    #app-interface.app-student-shell .student-lms-hero {
        min-height: 140px;
        height: auto;
        padding: 18px max(16px, env(safe-area-inset-right, 0px)) 20px max(16px, env(safe-area-inset-left, 0px));
    }

    #app-interface.app-student-shell .student-lms-hero h1 {
        font-size: clamp(1.35rem, 6vw, 1.85rem) !important;
        margin: 8px 0 6px !important;
        line-height: 1.15;
    }

    #app-interface.app-student-shell .student-lms-hero p {
        font-size: 0.88rem;
        line-height: 1.4;
    }

    #app-interface.app-student-shell .student-lms-grid {
        gap: 14px;
        padding: 12px max(12px, env(safe-area-inset-right, 0px)) 16px max(12px, env(safe-area-inset-left, 0px));
    }

    #view-student .student-video-stage .private-video-shell {
        min-height: min(52vw, 280px);
    }

    #app-interface.app-student-shell .student-video-meta {
        margin-top: 12px;
    }

    #app-interface.app-student-shell .student-syllabus-panel {
        display: none !important;
    }

    #app-interface.app-student-shell .mis-clases-toggle-btn {
        display: inline-flex;
        width: 100%;
        min-height: 48px;
        margin-top: 4px;
        background: linear-gradient(135deg, var(--gold), var(--gold-dim));
        color: #000;
        border: none;
        box-shadow: 0 4px 16px rgba(212, 175, 55, 0.28);
        gap: 8px;
        font-size: 0.95rem;
        letter-spacing: 0.02em;
    }

    #app-interface.app-student-shell .mis-clases-toggle-btn:hover,
    #app-interface.app-student-shell .mis-clases-toggle-btn:focus-visible {
        filter: brightness(1.06);
    }

    #app-interface.app-student-shell .mis-clases-toggle-btn:focus-visible {
        outline: 2px solid #fff;
        outline-offset: 2px;
    }

    #app-interface.app-student-shell .private-video-fs-label {
        display: none;
    }

    #app-interface.app-student-shell .private-video-fullscreen-btn {
        right: 8px;
        bottom: 8px;
        min-width: 44px;
        min-height: 44px;
        padding: 10px;
        justify-content: center;
    }

    #app-interface.app-student-shell .private-video-shield-top {
        height: 28px;
    }

    #app-interface.app-student-shell .private-video-shield-logo {
        width: 48px;
        height: 40px;
    }

    #app-interface.app-student-shell .student-module-header {
        min-height: 48px;
        padding: 14px 12px;
    }

    #app-interface.app-student-shell .student-video-button {
        min-height: 48px;
        padding: 12px;
    }

    #app-interface.app-student-shell .exam-student-hero {
        flex-direction: column;
        padding: 18px max(14px, env(safe-area-inset-right, 0px)) 14px max(14px, env(safe-area-inset-left, 0px));
        gap: 14px;
    }

    #app-interface.app-student-shell .exam-student-hero-copy h1 {
        font-size: clamp(1.35rem, 6vw, 2rem);
    }

    #app-interface.app-student-shell .exam-student-status {
        min-width: 0;
        width: 100%;
    }

    #app-interface.app-student-shell .exam-student-shell {
        padding: 12px max(12px, env(safe-area-inset-right, 0px)) 8px max(12px, env(safe-area-inset-left, 0px));
        gap: 14px;
    }

    #app-interface.app-student-shell .exam-student-panel {
        min-height: 280px;
        padding: 16px;
        border-radius: 14px;
    }

    #app-interface.app-student-shell .exam-question-nav {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
    }

    #app-interface.app-student-shell .academic-progress-root {
        margin-top: 12px;
        max-width: 100%;
    }

    #app-interface.app-student-shell .academic-progress-card {
        padding: 16px;
        border-radius: 14px;
    }

    #app-interface.app-student-shell .academic-progress-header {
        flex-direction: column;
        align-items: stretch;
    }

    #app-interface.app-student-shell .academic-progress-score {
        font-size: 2.2rem;
    }

    #app-interface.app-student-shell .academic-progress-grid {
        grid-template-columns: 1fr 1fr;
        gap: 10px;
    }

    #app-interface.app-student-shell .student-finance-tab > div:first-child {
        max-width: 100% !important;
        padding: 20px 16px !important;
    }

    #app-interface.app-student-shell .student-finance-tab h1 {
        font-size: 2.2rem !important;
    }

    #app-interface.app-student-shell .student-finance-tab .data-table {
        display: block;
        width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    #app-interface.app-student-shell .profile-tab {
        padding: 16px max(14px, env(safe-area-inset-right, 0px)) 20px max(14px, env(safe-area-inset-left, 0px));
    }

    #app-interface.app-student-shell .profile-security-card {
        padding: 20px 16px;
        border-radius: 14px;
    }

    #app-interface.app-student-shell .mail-tab {
        padding: 12px max(12px, env(safe-area-inset-right, 0px)) 16px max(12px, env(safe-area-inset-left, 0px));
        align-items: stretch;
    }

    #app-interface.app-student-shell .gmail-compose-card {
        max-width: 100%;
        border-radius: 14px;
    }

    #app-interface.app-student-shell .gmail-send-btn,
    #app-interface.app-student-shell .gmail-attach-btn {
        min-height: 48px;
    }

    #app-interface.app-student-shell .student-cert-tab i.fa-graduation-cap {
        font-size: 3rem !important;
    }
}

@media (min-width: 901px) {
    #app-interface.app-student-shell .student-bottom-nav,
    #app-interface.app-student-shell .student-more-sheet,
    #app-interface.app-student-shell .student-classes-sheet {
        display: none !important;
    }
}
