<!DOCTYPE html>
<html lang="es">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description"
        content="Primer Latino Premium+ - El portal más kawaii para tus series y películas favoritas.">
    <title>Primer Latino | Cine, Series y Anime Latino</title>

    <link rel="apple-touch-icon" sizes="180x180" href="/public/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/public/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/public/favicon-16x16.png">
    <link rel="manifest" href="/public/site.webmanifest">
    <link rel="icon" type="image/x-icon" href="/public/favicon.ico">

    <meta property="og:title" content="Primer Latino - El addon privado más rápido de Latinoamérica">
    <meta property="og:description"
        content="Películas, Series y Anime en Español Latino con infraestructura privada, TV en vivo y acceso premium - 2026">
    <meta property="og:image" content="https://www.primerlatino.com/public/icon.png">
    <meta property="og:url" content="https://www.primerlatino.com">
    <meta property="og:type" content="website">
    <meta name="twitter:card" content="summary">
    <meta name="twitter:title" content="Primer Latino">
    <meta name="twitter:description" content="El addon privado más rápido de Latinoamérica">
    <meta name="twitter:image" content="https://www.primerlatino.com/public/icon.png">

    <link
        href="https://fonts.googleapis.com/css2?family=Quicksand:wght@400;500;600;700&family=M+PLUS+Rounded+1c:wght@400;700;800&display=swap"
        rel="stylesheet">

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" />
    <link rel="stylesheet" href="/public/styles.css?v=1.4">
</head>

<body class="min-h-screen pb-16 md:pb-0">

    <!-- Fondo ambiental animado -->
    <video id="site-wave-video" class="site-wave-background" muted loop playsinline preload="none"
        data-src="/public/(Pie de pagina) Agua Onda.mp4" tabindex="-1" aria-hidden="true"></video>
    <div class="site-wave-tint" aria-hidden="true"></div>
    <div class="site-fish-layer">
        <button type="button" class="site-fish" id="site-fish" aria-label="Espantar pez">
            <img src="/public/pez.gif" alt="" class="site-fish__image" loading="lazy" decoding="async">
        </button>
    </div>

    <!-- ====== DESKTOP NAV: Floating Capsule (only md+) ====== -->
    <nav
        class="hidden md:block fixed top-2 left-1/2 -translate-x-1/2 z-50 md:w-max transition-all duration-300 pointer-events-none">
        <div
            class="pointer-events-auto flex justify-between items-center bg-white dark:bg-slate-900 border-2 border-pink-100 dark:border-pink-900/30 px-10 py-3 rounded-full shadow-2xl navbar-capsule gap-6">
            <a href="javascript:void(0)" onclick="showSection('home')" class="flex items-center gap-2 flex-shrink-0">
                <span
                    class="font-rounded font-extrabold text-xl tracking-tight text-pink-500 dark:text-pink-400 whitespace-nowrap">
                    Primer Latino <span class="text-pink-300">&#127800;</span>
                </span>
            </a>
            <div class="flex items-center gap-6">
                <button onclick="showSection('home')" id="nav-home"
                    class="nav-link whitespace-nowrap font-semibold text-pink-500 transition">Inicio</button>
                <button onclick="showSection('catalog')" id="nav-catalog"
                    class="nav-link whitespace-nowrap font-semibold text-gray-500 hover:text-pink-500 transition">Catálogo</button>
                <button onclick="showSection('pricing')" id="nav-pricing"
                    class="nav-link whitespace-nowrap font-semibold transition premium-rgb-link">
                    <i class="fas fa-crown text-xs"></i> Premium
                </button>
                <button onclick="showSection('account')" id="nav-account"
                    class="nav-link whitespace-nowrap font-semibold text-gray-500 hover:text-pink-500 transition">Mi
                    cuenta</button>
                <button onclick="showSection('support')" id="nav-support"
                    class="nav-link whitespace-nowrap font-semibold text-gray-500 hover:text-pink-500 transition">Soporte</button>
            </div>
            <div class="flex items-center gap-3">
                <button id="theme-toggle"
                    class="w-10 h-10 rounded-2xl bg-pink-50 dark:bg-slate-800 border-2 border-pink-100 dark:border-pink-900/30 text-pink-500 dark:text-pink-400 hover:bg-pink-100 dark:hover:bg-slate-700 transition-all flex items-center justify-center"
                    onclick="toggleTheme()">
                    <i id="theme-icon" class="fas fa-moon text-lg"></i>
                </button>
                <div id="nav-credits-badge"
                    class="hidden items-center gap-2 px-3 py-1.5 bg-pink-50 dark:bg-slate-800 border border-pink-100 dark:border-pink-900/30 rounded-full text-sm font-bold text-pink-500 dark:text-pink-400">
                    <i class="fas fa-coins text-xs"></i>
                    <span id="nav-credits-val">0</span>
                </div>
                <button id="nav-logout-btn" onclick="signOutUser()"
                    class="hidden px-4 py-2 text-sm font-bold text-pink-400 dark:text-pink-300 bg-pink-50 dark:bg-pink-900/20 border-2 border-pink-100 dark:border-pink-900/30 rounded-xl hover:bg-pink-100 dark:hover:bg-pink-900/40 transition">
                    <i class="fas fa-sign-out-alt"></i>
                </button>
            </div>
        </div>
    </nav>

    <!-- ====== MOBILE TOP HEADER (only on mobile) ====== -->
    <header
        class="md:hidden fixed top-0 left-0 right-0 z-50 bg-white/90 dark:bg-slate-900/90 backdrop-blur-md border-b border-pink-100 dark:border-pink-900/40 px-4 py-3 flex items-center justify-between shadow-sm">
        <a href="javascript:void(0)" onclick="showSection('home')" class="flex items-center gap-2">
            <span class="font-rounded font-extrabold text-base tracking-tight text-pink-500 dark:text-pink-400">
                Primer Latino <span class="text-pink-300">&#127800;</span>
            </span>
        </a>
        <div class="flex items-center gap-2">
            <!-- Credits badge (mobile top) -->
            <div id="mobile-top-credits"
                class="hidden items-center gap-1 px-2.5 py-1 bg-pink-50 dark:bg-slate-800 border border-pink-100 dark:border-pink-900/30 rounded-full text-xs font-bold text-pink-500 dark:text-pink-400">
                <i class="fas fa-coins text-[9px]"></i>
                <span id="mobile-top-credits-val">0</span>
            </div>
            <!-- Logout button (only visible when logged in) -->
            <button id="mobile-logout-top-btn" onclick="signOutUser()"
                class="hidden w-8 h-8 rounded-xl bg-red-50 dark:bg-red-900/20 border border-red-100 dark:border-red-900/30 text-red-400 flex items-center justify-center transition-all">
                <i class="fas fa-sign-out-alt text-xs"></i>
            </button>
            <!-- Theme toggle (mobile) -->
            <button id="theme-toggle-mobile"
                class="w-8 h-8 rounded-xl bg-pink-50 dark:bg-slate-800 border border-pink-100 dark:border-pink-900/30 text-pink-500 dark:text-pink-400 flex items-center justify-center transition-all"
                onclick="toggleTheme()">
                <i id="theme-icon-mobile" class="fas fa-moon text-xs"></i>
            </button>
        </div>
    </header>

    <!-- ====== MOBILE BOTTOM TAB NAV ====== -->
    <nav id="mobile-bottom-nav"
        class="hidden fixed bottom-0 left-0 right-0 z-[70] bg-white/95 dark:bg-slate-900/95 backdrop-blur-md border-t-2 border-pink-100 dark:border-pink-900/30 safe-area-inset-bottom">
        <div class="flex items-center justify-around px-2 py-1">
            <button onclick="showSection('home')" id="mob-tab-home"
                class="mob-tab-btn flex flex-col items-center gap-0.5 px-3 py-2 rounded-xl transition-all active">
                <i class="fas fa-home text-base"></i>
                <span class="text-[10px] font-bold">Inicio</span>
            </button>
            <button onclick="showSection('catalog')" id="mob-tab-catalog"
                class="mob-tab-btn flex flex-col items-center gap-0.5 px-3 py-2 rounded-xl transition-all">
                <i class="fas fa-film text-base"></i>
                <span class="text-[10px] font-bold">Catálogo</span>
            </button>
            <button onclick="showSection('pricing')" id="mob-tab-pricing"
                class="mob-tab-btn-premium flex flex-col items-center gap-0.5 px-3 py-2 rounded-xl transition-all">
                <div class="w-9 h-9 rounded-full flex items-center justify-center premium-rgb-tab-btn mb-0.5 shadow-lg">
                    <i class="fas fa-crown text-sm text-white"></i>
                </div>
                <span class="text-[10px] font-black">Premium</span>
            </button>
            <button onclick="showSection('account')" id="mob-tab-account"
                class="mob-tab-btn flex flex-col items-center gap-0.5 px-3 py-2 rounded-xl transition-all">
                <i class="fas fa-user text-base"></i>
                <span class="text-[10px] font-bold">Mi Cuenta</span>
            </button>
            <button onclick="showSection('support')" id="mob-tab-support"
                class="mob-tab-btn flex flex-col items-center gap-0.5 px-3 py-2 rounded-xl transition-all">
                <i class="fas fa-life-ring text-base"></i>
                <span class="text-[10px] font-bold">Soporte</span>
            </button>
        </div>
    </nav>

    <!-- ====== MOBILE FLOATING MENU BUTTON (FAB) ====== -->
    <button id="mobile-menu-btn" onclick="toggleMobileMenu()"
        class="md:hidden fixed bottom-24 right-6 z-[80] w-14 h-14 rounded-full bg-gradient-to-tr from-pink-500 via-pink-600 to-purple-600 text-white flex items-center justify-center shadow-lg shadow-pink-500/40 dark:shadow-pink-900/50 hover:scale-105 active:scale-95 transition-all duration-200 focus:outline-none"
        aria-label="Menú de navegación">
        <i class="fas fa-bars text-xl"></i>
    </button>

    <!-- Spacer for mobile top header -->
    <div class="h-16 md:h-0"></div>
    <!-- Spacer for desktop floating nav -->
    <div class="hidden md:block h-20"></div>

    <!-- Mobile Menu Panel (Restaurado) -->
    <div id="mobile-menu" class="hidden md:hidden fixed inset-0 z-[60] bg-black/50 backdrop-blur-sm"
        onclick="toggleMobileMenu()">
        <div class="absolute left-0 top-0 h-full w-64 bg-white dark:bg-slate-900 shadow-2xl border-r-2 border-pink-100 dark:border-pink-900/30 p-6 transition-all"
            onclick="event.stopPropagation()">
            <div class="flex justify-between items-center mb-6">
                <span class="font-rounded font-bold text-xl text-pink-500">Menú</span>
                <button onclick="toggleMobileMenu()" class="text-pink-400 hover:text-pink-600 transition">
                    <i class="fas fa-times text-2xl"></i>
                </button>
            </div>
            <nav class="flex flex-col gap-3">
                <button onclick="showSection('home'); toggleMobileMenu()" id="mobile-nav-home"
                    class="mobile-nav-link text-left px-4 py-3 rounded-xl font-semibold text-pink-500 bg-pink-50 dark:bg-pink-900/20">
                    <i class="fas fa-home mr-2"></i> Inicio
                </button>
                <button onclick="showSection('catalog'); toggleMobileMenu()" id="mobile-nav-catalog"
                    class="mobile-nav-link text-left px-4 py-3 rounded-xl font-semibold text-gray-500 dark:text-slate-400 hover:bg-pink-50 dark:hover:bg-slate-800 transition">
                    <i class="fas fa-film mr-2"></i> Catálogo
                </button>
                <button onclick="showSection('pricing'); toggleMobileMenu()" id="mobile-nav-pricing"
                    class="mobile-nav-link text-left px-4 py-3 rounded-xl font-semibold transition premium-rgb-link w-full flex items-center justify-start gap-2">
                    <i class="fas fa-crown"></i> Premium
                </button>
                <button onclick="showSection('account'); toggleMobileMenu()" id="mobile-nav-account"
                    class="mobile-nav-link text-left px-4 py-3 rounded-xl font-semibold text-gray-500 dark:text-slate-400 hover:bg-pink-50 dark:hover:bg-slate-800 transition w-full flex items-center justify-start gap-2">
                    <i class="fas fa-user"></i> Mi cuenta
                </button>
                <button onclick="showSection('support'); toggleMobileMenu()" id="mobile-nav-support"
                    class="mobile-nav-link text-left px-4 py-3 rounded-xl font-semibold text-gray-500 dark:text-slate-400 hover:bg-pink-50 dark:hover:bg-slate-800 transition w-full flex items-center justify-start gap-2">
                    <i class="fas fa-life-ring"></i> Soporte
                </button>
            </nav>
            <div id="mobile-credits-badge"
                class="hidden mt-6 p-3 bg-pink-50 dark:bg-slate-800 border border-pink-100 dark:border-pink-900/30 rounded-xl">
                <div class="flex items-center justify-between">
                    <span class="text-sm font-semibold text-gray-600 dark:text-slate-400">Créditos</span>
                    <span class="text-lg font-bold text-pink-500 dark:text-pink-400" id="mobile-credits-val">0</span>
                </div>
            </div>
            <button id="mobile-logout-btn" onclick="signOutUser()"
                class="hidden w-full mt-4 py-3 bg-red-400 text-white font-bold rounded-xl hover:bg-red-500 transition text-sm">
                <i class="fas fa-sign-out-alt mr-1"></i> Cerrar sesión
            </button>
        </div>
    </div>

    <!-- SECTION: HOME -->
    <section id="section-home" class="app-section relative pb-10 md:pb-20">
        <header class="relative px-6 py-8 overflow-visible">
            <!-- Kawaii Sakura Rain Element -->
            <div id="sakura-container" class="sakura-container">
                <!-- Generado dinámicamente por JS -->
            </div>

            <div class="max-w-6xl mx-auto flex flex-col md:flex-row items-center gap-12 relative z-10">
                <div class="flex-1 text-center md:text-left">
                    <span
                        class="inline-flex items-center gap-1.5 px-4 py-1 rounded-full bg-pink-100 dark:bg-pink-900/30 text-pink-500 dark:text-pink-300 font-bold text-sm mb-4">
                        <span>&#10024; LA EXPERIENCIA MÁS LATINA</span>
                        <span class="flex items-center gap-1 ml-1">
                            <img src="/public/mexico.png" alt="México" class="h-[16px] w-auto" />
                            <img src="/public/estados-unidos.png" alt="USA" class="h-[16px] w-auto" />
                            <img src="/public/argentina.png" alt="Argentina" class="h-[16px] w-auto" />
                        </span>
                    </span>
                    <h1
                        class="font-rounded text-3xl sm:text-4xl md:text-7xl font-extrabold text-pink-600 dark:text-pink-500 leading-tight mb-6">
                        Tu Cine &amp; Anime<br>
                        <span
                            class="text-pink-400 dark:text-pink-300 underline decoration-pink-200 dark:decoration-pink-900/50">Favorito</span>
                        &#127800;
                    </h1>
                    <p class="hero-description text-sm sm:text-base md:text-lg mb-8 max-w-lg">
                        Películas, series y el mejor anime en español latino. Una experiencia privada, rápida y estable
                        para Latinoamérica, con infraestructura propia y sin depender de servicios externos para
                        reproducir tu contenido.
                    </p>
                    <div class="flex flex-wrap gap-3 justify-center md:justify-start">
                        <button onclick="showSection('catalog')"
                            class="px-4 py-2.5 md:px-5 md:py-4 bg-pink-500 text-white font-bold rounded-xl md:rounded-2xl kawaii-btn flex items-center justify-center gap-2 whitespace-nowrap text-sm md:text-base">
                            <i class="fas fa-search"></i> Catálogo
                        </button>
                        <button onclick="showSection('pricing')"
                            class="px-4 py-2.5 md:px-5 md:py-4 bg-white dark:bg-slate-800 text-pink-400 dark:text-pink-300 font-bold rounded-xl md:rounded-2xl border-2 border-pink-100 dark:border-pink-900/30 hover:bg-pink-50 dark:hover:bg-slate-700 transition flex items-center justify-center gap-2 whitespace-nowrap text-sm md:text-base">
                            <i class="fas fa-star"></i> Planes
                        </button>
                        <button onclick="showSection('support')"
                            class="px-4 py-2.5 md:px-5 md:py-4 bg-white dark:bg-slate-800 text-pink-400 dark:text-pink-300 font-bold rounded-xl md:rounded-2xl border-2 border-pink-100 dark:border-pink-900/30 hover:bg-pink-50 dark:hover:bg-slate-700 transition flex items-center justify-center gap-2 whitespace-nowrap text-sm md:text-base">
                            <i class="fas fa-users"></i> Comunidad &#10024;
                        </button>
                        <a id="live-events-entry" href="https://www.primerlatino.com/live" target="_blank"
                            aria-hidden="true" style="display:none"
                            class="px-4 py-2.5 md:px-5 md:py-4 bg-green-500 text-white font-bold rounded-xl md:rounded-2xl kawaii-btn flex items-center justify-center gap-2 whitespace-nowrap text-sm md:text-base hover:bg-blue-600 transition shadow-lg shadow-blue-500/20">
                            <i class="fas fa-trophy"></i> World Cup 2026
                        </a>
                    </div>

                </div>
                <div class="flex-1 relative">
                    <div class="mascot-scene relative w-full max-w-sm mx-auto">
                        <img src="/public/mascot.gif" alt="Mascot"
                            class="rounded-[40px] border-8 border-white shadow-2xl animate-float relative z-10 w-full">
                        <div
                            class="absolute -top-6 -right-6 w-24 h-24 bg-yellow-200 rounded-full blur-2xl opacity-50 -z-10">
                        </div>
                        <div
                            class="absolute -bottom-6 -left-6 w-32 h-32 bg-pink-300 rounded-full blur-3xl opacity-40 -z-10">
                        </div>
                    </div>
                </div>
            </div>
        </header>
    </section>


    <!-- SECTION: CATALOG -->
    <section id="section-catalog" class="app-section hidden">
        <div class="px-6 py-12">
            <div class="catalog-shell max-w-6xl mx-auto">
                <div class="glass-card p-6 md:p-8 mb-8">
                    <div class="flex flex-col md:flex-row justify-between items-center gap-6 mb-8">
                        <div>
                            <h2
                                class="font-rounded text-2xl md:text-3xl font-bold text-pink-600 dark:text-pink-500 flex items-center gap-2">
                                <i class="fas fa-search text-pink-400"></i> Buscador Mágico
                            </h2>
                            <p class="text-pink-300 dark:text-pink-400/60 font-medium text-sm mt-1">Encuentra tesoros en
                                nuestra biblioteca
                            </p>
                        </div>
                        <div class="relative w-full md:w-96">
                            <input type="text" id="search-input" placeholder="Escribe el nombre aquí..."
                                class="w-full px-4 py-2.5 md:px-6 md:py-4 bg-white dark:bg-slate-800 border-2 border-pink-100 dark:border-pink-900/30 rounded-xl md:rounded-2xl kawaii-input text-base md:text-lg transition-all dark:text-slate-200">
                            <span
                                class="absolute right-4 top-3 md:top-4 text-pink-200 dark:text-pink-400/30 text-xl">&#10024;</span>
                        </div>
                    </div>
                    <div id="search-results" class="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-5">
                        <div class="col-span-4 text-center py-12 text-pink-200 font-bold">
                            <i class="fas fa-film text-4xl block mb-3"></i> Cargando catálogo...
                        </div>
                    </div>
                    <div class="user-tmdb-box" id="user-tmdb-box">
                        <div class="user-tmdb-head">
                            <div>
                                <h3 class="font-rounded text-lg font-bold text-pink-600 dark:text-pink-400 flex items-center gap-2">
                                    <i class="fas fa-key text-pink-400"></i> TMDB personal
                                </h3>
                                <p id="user-tmdb-status" class="text-xs text-pink-300 dark:text-pink-400/60 font-semibold">
                                    Activa tu propia API key para probar el Top 10 de TMDB
                                </p>
                            </div>
                            <span id="user-tmdb-pill" class="user-tmdb-pill">Sin activar</span>
                        </div>
                        <div class="user-tmdb-form">
                            <input type="password" id="user-tmdb-key" placeholder="Pega tu TMDB API Key">
                            <button type="button" onclick="saveUserTmdbKey()">
                                <i class="fas fa-check"></i> Activar
                            </button>
                            <button type="button" onclick="loadUserTmdbTop10()" class="user-tmdb-secondary">
                                <i class="fas fa-ranking-star"></i> Top 10
                            </button>
                            <button type="button" onclick="disableUserTmdbKey()" class="user-tmdb-icon" aria-label="Desactivar TMDB personal">
                                <i class="fas fa-power-off"></i>
                            </button>
                        </div>
                        <div id="user-tmdb-top" class="user-tmdb-top">
                            <div class="user-tmdb-empty">Cuando la actives, aqui veras 10 peliculas populares usando tu key.</div>
                        </div>
                    </div>
                </div>
                <div class="catalog-side-stack">
                    <aside class="trakt-panel" id="trakt-panel">
                        <div class="trakt-panel-header">
                            <div>
                                <h3
                                    class="font-rounded text-lg font-bold text-pink-600 dark:text-pink-400 flex items-center gap-2">
                                    <i class="fas fa-link text-pink-400"></i> Trakt
                                </h3>
                                <p id="trakt-status-text"
                                    class="text-xs text-pink-300 dark:text-pink-400/60 font-semibold">
                                    Vincula tu historial y tu lista
                                </p>
                            </div>
                            <span id="trakt-status-pill" class="trakt-status-pill">Sin vincular</span>
                        </div>
                        <div class="trakt-actions">
                            <button type="button" id="trakt-connect-btn" onclick="connectTraktAccount()"
                                class="trakt-action-btn trakt-action-primary">
                                <i class="fas fa-plug"></i> Vincular
                            </button>
                            <button type="button" id="trakt-sync-btn" onclick="syncTraktLibrary()"
                                class="trakt-action-btn hidden">
                                <i class="fas fa-rotate"></i> Sincronizar
                            </button>
                            <button type="button" id="trakt-disconnect-btn" onclick="disconnectTraktAccount()"
                                class="trakt-icon-btn hidden" aria-label="Desvincular Trakt">
                                <i class="fas fa-unlink"></i>
                            </button>
                        </div>
                        <div id="trakt-library-summary" class="trakt-library-summary hidden"></div>
                        <div id="trakt-library-list" class="trakt-library-list">
                            <div class="trakt-empty">Conecta Trakt para ver lo que ya viste o dejaste para mas tarde.</div>
                        </div>
                    </aside>
                    <aside class="recent-added-panel">
                    <div class="recent-added-header">
                        <h3
                            class="font-rounded text-lg font-bold text-pink-600 dark:text-pink-400 flex items-center gap-2">
                            <i class="fas fa-sparkles text-pink-400"></i> Últimos agregados
                        </h3>
                        <p class="text-xs text-pink-300 dark:text-pink-400/60 font-semibold">Lo nuevo del catálogo</p>
                    </div>
                    <div id="recent-added-list" class="recent-added-list">
                        <div class="recent-added-empty">Cargando novedades...</div>
                    </div>
                    </aside>
                </div>
            </div>
        </div>
    </section>


    <!-- SECTION: PRICING -->
    <section id="section-pricing" class="app-section hidden">
        <div class="px-6 py-12 bg-transparent min-h-screen transition-colors">
            <div class="max-w-6xl mx-auto">
                <div class="text-center mb-8">
                    <h2 class="font-rounded text-2xl md:text-4xl font-bold text-pink-600 dark:text-pink-500 mb-2">
                        Membresías Premium
                        &#10024;</h2>
                    <p class="text-pink-400 dark:text-pink-300 font-medium text-sm md:text-base">Desbloquea el poder
                        máximo de Primer Latino
                    </p>
                    <p class="text-xs text-gray-400 dark:text-slate-500 mt-2 font-medium">
                        <i class="fab fa-paypal text-blue-400"></i>
                        Pago seguro con PayPal y Wompi (Tarjetas) · Activación automática al instante
                    </p>



                    <!-- Selector de meses -->
                    <div
                        class="inline-flex items-center gap-3 mt-6 px-5 py-3 bg-white dark:bg-slate-800 border-2 border-pink-100 dark:border-pink-900/30 rounded-2xl shadow-sm flex-wrap justify-center">
                        <span class="text-gray-500 dark:text-slate-400 font-semibold text-sm">⏱ Duración:</span>
                        <div class="flex gap-2 flex-wrap justify-center" id="meses-selector">
                            <button onclick="seleccionarMeses(1)" id="btn-mes-1"
                                class="mes-btn activo px-4 py-2 rounded-xl font-bold text-sm border-2 border-pink-400 bg-pink-400 text-white transition-all">1
                                mes</button>
                            <button onclick="seleccionarMeses(2)" id="btn-mes-2"
                                class="mes-btn px-4 py-2 rounded-xl font-bold text-sm border-2 border-pink-100 dark:border-pink-900/30 text-pink-400 dark:text-pink-300 hover:border-pink-300 transition-all">2
                                meses</button>
                            <button onclick="seleccionarMeses(3)" id="btn-mes-3"
                                class="mes-btn premium-rgb-link relative !rounded-xl !px-4 !py-2">
                                <span class="gift-tag">+15 DÍAS &#127873;</span>
                                3 meses
                            </button>
                            <button onclick="seleccionarMeses(6)" id="btn-mes-6"
                                class="mes-btn px-4 py-2 rounded-xl font-bold text-sm border-2 border-pink-100 dark:border-pink-900/30 text-pink-400 dark:text-pink-300 hover:border-pink-300 transition-all">6
                                meses</button>
                            <button onclick="seleccionarMeses(12)" id="btn-mes-12"
                                class="mes-btn px-4 py-2 rounded-xl font-bold text-sm border-2 border-pink-100 dark:border-pink-900/30 text-pink-400 dark:text-pink-300 hover:border-pink-300 transition-all">12
                                meses</button>
                        </div>
                    </div>
                </div>

                <div class="grid md:grid-cols-3 gap-8 max-w-4xl mx-auto items-start">

                    <!-- Plan Básico -->
                    <div class="glass-card p-8 border-t-8 border-pink-200 dark:border-pink-900/40 plan-card">
                        <div class="flex justify-between items-start mb-6">
                            <div>
                                <h3 class="font-rounded text-2xl font-bold text-gray-700 dark:text-slate-200">Premium
                                    Básico</h3>
                                <p class="text-gray-400 dark:text-slate-500 text-sm">Esencial</p>
                            </div>
                            <div><span class="text-3xl font-bold text-pink-500" id="precio-basic">$2.45</span><span
                                    class="text-sm text-gray-400 dark:text-slate-500 font-normal" id="label-basic"> /
                                    mes</span></div>
                        </div>
                        <div class="plan-quality-strip mb-5">
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/mono-webdl.png"
                                    class="quality-logo" alt="WebDL" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/1080p.png"
                                    class="quality-logo" alt="1080p" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/atmos.png"
                                    class="quality-logo" alt="Dolby Atmos" referrerpolicy="no-referrer"></span>
                        </div>
                        <!-- Info Destacada: SIN DEBRID -->
                        <div
                            class="mb-5 p-3 bg-gradient-to-r from-purple-50 to-pink-50 dark:from-purple-900/20 dark:to-pink-900/20 border-l-4 border-l-purple-500 rounded-r-xl">
                            <p class="text-xs font-bold text-purple-700 dark:text-purple-300 leading-tight">
                                <i class="fas fa-bolt text-yellow-400 mr-1 shadow-sm"></i> ¡SIN DEBRID!
                            </p>
                            <p class="text-[10px] text-gray-600 dark:text-slate-400 mt-1">
                                Pagas, instalas y listo. No necesitas un Debrid externo. Sin límites de IPs y totalmente
                                libre de baneos.
                            </p>
                        </div>
                        <ul class="space-y-3 mb-8 text-sm">
                            <li class="flex items-center gap-3 text-gray-600 dark:text-slate-400"><i
                                    class="fas fa-check-circle text-green-400"></i> <span id="duration-basic">30 Días de
                                    Acceso</span></li>
                            <li class="flex items-center gap-3 text-gray-600 dark:text-slate-400"><i
                                    class="fas fa-check-circle text-green-400"></i> Catálogo Completo</li>
                            <li class="flex items-center gap-3 text-gray-600 dark:text-slate-400"><i
                                    class="fas fa-check-circle text-green-400"></i> Hasta 2 Dispositivos</li>
                            <li class="flex items-center gap-3 text-gray-400 dark:text-slate-600 opacity-50"><i
                                    class="fas fa-times-circle"></i> Sin códigos de regalo</li>
                            <li class="flex items-center gap-3 text-gray-600 dark:text-slate-400"><i
                                    class="fas fa-check-circle text-green-400"></i> Soporte Estándar, 10 minutos de
                                respuestas</li>
                        </ul>
                        <button id="btn-comprar-basic" onclick="mostrarAvisoMantenimientoPago(); return false;"
                            class="payment-maintenance-disabled w-full py-4 mt-2 bg-gradient-to-r from-pink-400 to-pink-500 hover:from-pink-500 hover:to-pink-600 text-white font-bold rounded-2xl flex items-center justify-center gap-2 shadow-md hover:shadow-pink-200 dark:hover:shadow-pink-900/40 hover:scale-[1.02] active:scale-[0.98] transition-all duration-200"
                            aria-label="Pagos pausados temporalmente">
                            <i class="fas fa-pause-circle"></i> Pagos pausados
                        </button>
                    </div>

                    <!-- Plan Plus (FAVORITO) -->
                    <div class="glass-card p-8 border-t-8 border-pink-400 plan-card relative overflow-hidden">
                        <div class="fav-ribbon">FAVORITO</div>
                        <div class="flex justify-between items-start mb-6 mt-2">
                            <div>
                                <h3 class="font-rounded text-2xl font-bold text-pink-600">Premium Plus +</h3>
                                <p class="text-pink-400 text-sm">VIP Experience</p>
                            </div>
                            <div><span class="text-3xl font-bold text-pink-500" id="precio-plus">$4.45</span><span
                                    class="text-sm text-gray-400 font-normal" id="label-plus"> / mes</span></div>
                        </div>
                        <div class="plan-quality-strip mb-5">
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/mono-webdl.png"
                                    class="quality-logo" alt="WebDL" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/1080p.png"
                                    class="quality-logo" alt="1080p" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/4k.png"
                                    class="quality-logo" alt="4K" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/atmos.png"
                                    class="quality-logo" alt="Dolby Atmos" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/vision.png"
                                    class="quality-logo" alt="Dolby Vision" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/dtsx.png"
                                    class="quality-logo" alt="DTS" referrerpolicy="no-referrer"></span>
                        </div>
                        <div class="plan-security-note plan-security-plus mb-5">
                            <i class="fas fa-shield-alt"></i>
                            <span>Incluye verificacion en 2 pasos con Google Authenticator</span>
                        </div>
                        <!-- Info Destacada: SIN DEBRID -->
                        <div
                            class="mb-5 p-3 bg-gradient-to-r from-purple-50 to-pink-50 dark:from-purple-900/20 dark:to-pink-900/20 border-l-4 border-l-purple-500 rounded-r-xl">
                            <p class="text-xs font-bold text-purple-700 dark:text-purple-300 leading-tight">
                                <i class="fas fa-bolt text-yellow-400 mr-1 shadow-sm"></i> ¡SIN DEBRID!
                            </p>
                            <p class="text-[10px] text-gray-600 dark:text-slate-400 mt-1">
                                Pagas, instalas y listo. No necesitas un Debrid externo. Sin límites de IPs y totalmente
                                libre de baneos.
                            </p>
                        </div>
                        <ul class="space-y-3 mb-8 text-sm">
                            <li class="flex items-center gap-3 text-gray-600 dark:text-slate-300 font-semibold"><i
                                    class="fas fa-star text-pink-400"></i> <span id="duration-plus">30 Días
                                    Premium</span></li>
                            <li class="flex items-center gap-3 text-gray-600 dark:text-slate-300 font-semibold"><i
                                    class="fas fa-star text-pink-400"></i> Hasta 3 Dispositivos</li>
                            <li class="flex items-center gap-3 text-gray-600 dark:text-slate-300 font-semibold"><i
                                    class="fas fa-star text-pink-400"></i> Gestión de Dispositivos</li>
                            <li class="flex items-center gap-3 text-gray-600 dark:text-slate-300 font-semibold"><i
                                    class="fas fa-star text-pink-400"></i> 1 Código Serie (1 Temporada) &#127873;</li>
                            <li class="flex items-center gap-3 text-gray-600 dark:text-slate-300 font-semibold"><i
                                    class="fas fa-star text-pink-400"></i> 2 Códigos Película &#127873;</li>
                            <li class="flex items-center gap-3 text-gray-600 dark:text-slate-300 font-semibold"><i
                                    class="fas fa-star text-pink-400"></i> Soporte Preferencial 24/7</li>
                        </ul>
                        <button id="btn-comprar-plus" onclick="mostrarAvisoMantenimientoPago(); return false;"
                            class="payment-maintenance-disabled w-full py-4 mt-2 bg-gradient-to-r from-pink-500 to-fuchsia-500 hover:from-pink-600 hover:to-fuchsia-600 text-white font-bold rounded-2xl flex items-center justify-center gap-2 shadow-md hover:shadow-pink-300/50 hover:scale-[1.02] active:scale-[0.98] transition-all duration-200"
                            aria-label="Pagos pausados temporalmente">
                            <i class="fas fa-pause-circle"></i> Pagos pausados
                        </button>
                    </div>

                    <!-- Plan Pro + (SIN DEBRID) -->
                    <div
                        class="glass-card p-8 border-t-8 border-purple-500 plan-card relative overflow-hidden bg-white dark:bg-slate-800">
                        <!-- Ribbon VIP -->
                        <div class="absolute top-5 -right-9 w-[150px] bg-purple-600 text-white text-[10px] font-black py-1 text-center shadow-md"
                            style="transform: rotate(45deg); letter-spacing: 1px;">
                            ULTIMATE
                        </div>

                        <div class="flex justify-between items-start mb-6 mt-2">
                            <div>
                                <h3 class="font-rounded text-2xl font-black premium-rgb-text">
                                    Premium Pro MAX</h3>
                                <p
                                    class="text-purple-500 font-bold text-xs mt-1 bg-purple-100 dark:bg-purple-900/30 inline-block px-2 py-0.5 rounded border border-purple-200 dark:border-purple-800/50">
                                    TV LIVE INCLUIDA</p>
                            </div>
                            <div class="text-right">
                                <span class="text-3xl font-black text-purple-600 dark:text-purple-400"
                                    id="precio-pro">$7.45</span><br>
                                <span class="text-xs text-gray-500 dark:text-slate-400 font-medium" id="label-pro">/
                                    mes</span>
                            </div>
                        </div>
                        <div class="plan-quality-strip mb-5">
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/mono-webdl.png"
                                    class="quality-logo" alt="WebDL" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/1080p.png"
                                    class="quality-logo" alt="1080p" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/4k.png"
                                    class="quality-logo" alt="4K" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/atmos.png"
                                    class="quality-logo" alt="Dolby Atmos" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/vision.png"
                                    class="quality-logo" alt="Dolby Vision" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/dtsx.png"
                                    class="quality-logo" alt="DTS" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill"><img
                                    src="https://raw.githubusercontent.com/9mousaa/BetterFormatter/main/images/mono-remux.png"
                                    class="quality-logo" alt="Remux" referrerpolicy="no-referrer"></span>
                            <span class="plan-quality-pill plan-quality-pill-tv"><i
                                    class="fas fa-tower-broadcast text-[11px]"></i><span>TV en vivo</span></span>
                        </div>
                        <div class="plan-security-note plan-security-pro mb-5">
                            <i class="fas fa-shield-check"></i>
                            <span>Incluye verificacion en 2 pasos con Google Authenticator</span>
                        </div>

                        <!-- Info Destacada: SIN DEBRID -->
                        <div
                            class="mb-5 p-3 bg-gradient-to-r from-purple-50 to-pink-50 dark:from-purple-900/20 dark:to-pink-900/20 border-l-4 border-l-purple-500 rounded-r-xl">
                            <p class="text-xs font-bold text-purple-700 dark:text-purple-300 leading-tight">
                                <i class="fas fa-bolt text-yellow-400 mr-1 shadow-sm"></i> ¡SIN DEBRID!
                            </p>
                            <p class="text-[10px] text-gray-600 dark:text-slate-400 mt-1">
                                Pagas, instalas y listo. No necesitas un Debrid externo. Sin límites de IPs y totalmente
                                libre de baneos.
                            </p>
                        </div>

                        <ul class="space-y-3 mb-8 text-xs font-medium">
                            <li class="flex items-center gap-3 text-gray-700 dark:text-slate-300"><i
                                    class="fas fa-check-circle text-purple-500 text-sm"></i> <span id="duration-pro">30
                                    Días Premium</span></li>
                            <li class="flex items-center gap-3 text-gray-700 dark:text-slate-300"><i
                                    class="fas fa-check-circle text-purple-500 text-sm"></i> Alta Velocidad</li>
                            <li class="flex items-center gap-3 text-gray-700 dark:text-slate-300 font-bold"><i
                                    class="fas fa-tv text-purple-500 text-sm"></i> Canales de TV Live</li>
                            <li class="flex items-center gap-3 text-purple-600 dark:text-purple-400 font-black"><i
                                    class="fas fa-gift text-sm"></i> 1 código TV Live (x3 meses)</li>
                            <li class="flex items-center gap-3 text-gray-700 dark:text-slate-300"><i
                                    class="fas fa-check-circle text-purple-500 text-sm"></i> Hasta 3 Dispositivos Pro
                            </li>
                            <li class="flex items-center gap-3 text-gray-700 dark:text-slate-300"><i
                                    class="fas fa-check-circle text-purple-500 text-sm"></i> Gestión de Dispositivos
                            </li>
                            <li class="flex items-center gap-3 text-gray-700 dark:text-slate-300"><i
                                    class="fas fa-gift text-pink-500 text-sm"></i> 1 Código Serie (1 Temp.)</li>
                            <li class="flex items-center gap-3 text-gray-700 dark:text-slate-300"><i
                                    class="fas fa-gift text-pink-500 text-sm"></i> 2 Códigos Película</li>
                            <li class="flex items-center gap-3 text-gray-700 dark:text-slate-300"><i
                                    class="fas fa-headset text-purple-500 text-sm"></i> Soporte VIP 24/7 (30 min)</li>
                        </ul>

                        <button id="btn-comprar-pro" onclick="mostrarAvisoMantenimientoPago(); return false;"
                            class="payment-maintenance-disabled w-full py-4 mt-2 bg-gradient-to-r from-purple-600 to-violet-600 hover:from-purple-700 hover:to-violet-700 text-white font-bold rounded-2xl flex items-center justify-center gap-2 shadow-md hover:shadow-purple-300/50 hover:scale-[1.02] active:scale-[0.98] transition-all duration-200"
                            aria-label="Pagos pausados temporalmente">
                            <i class="fas fa-pause-circle"></i> Pagos pausados
                        </button>
                    </div>

                </div>

                <div
                    class="max-w-4xl mx-auto mt-6 p-4 bg-blue-50 dark:bg-slate-800/60 border border-blue-100 dark:border-slate-700 rounded-2xl flex items-center gap-3">
                    <i class="fas fa-shield-alt text-blue-500 text-2xl flex-shrink-0"></i>
                    <p class="text-xs text-blue-600 dark:text-blue-400 font-semibold">
                        Pago 100% seguro procesado por PayPal o Wompi (tarjeta/PSE). Tu membresía se activa
                        automáticamente al confirmar el pago. No se almacenan datos de tarjeta en nuestros servidores.
                    </p>
                </div>
            </div>
        </div>
    </section>





    <!-- SECTION: ACCOUNT -->
    <section id="section-account" class="app-section hidden overflow-x-hidden">
        <div class="px-4 md:px-6 py-6 transition-all duration-500">
            <div class="max-w-5xl mx-auto">

                <!-- NOT LOGGED IN -->
                <div id="auth-section">
                    <div class="auth-shell auth-shell-compact max-w-lg mx-auto">
                        <div class="auth-card">
                            <div class="auth-tabs" role="tablist" aria-label="Acceso a la cuenta">
                                <button id="auth-tab-login" class="auth-tab active" type="button" role="tab"
                                    aria-selected="true" onclick="setAuthMode('login')">Iniciar sesión</button>
                                <button id="auth-tab-register" class="auth-tab" type="button" role="tab"
                                    aria-selected="false" onclick="setAuthMode('register')">Crear cuenta</button>
                            </div>
                            <div class="auth-heading">
                                <div class="auth-icon"><i id="auth-mode-icon" class="fas fa-lock"></i></div>
                                <div>
                                    <h3 id="auth-mode-title">¡Qué bueno verte!</h3>
                                    <p id="auth-mode-copy">Ingresa tus datos para continuar.</p>
                                </div>
                            </div>
                            <button type="button" class="auth-google-btn" onclick="signInWithGoogle()">
                                <svg viewBox="0 0 24 24" aria-hidden="true">
                                    <path fill="#4285F4" d="M21.6 12.23c0-.71-.06-1.4-.18-2.07H12v3.91h5.38a4.6 4.6 0 0 1-2 3.02v2.54h3.24c1.9-1.75 2.98-4.32 2.98-7.4Z"/>
                                    <path fill="#34A853" d="M12 22c2.7 0 4.98-.9 6.63-2.43l-3.24-2.54c-.9.6-2.05.96-3.39.96-2.61 0-4.82-1.76-5.61-4.13H3.04v2.62A10 10 0 0 0 12 22Z"/>
                                    <path fill="#FBBC05" d="M6.39 13.86A6.02 6.02 0 0 1 6.07 12c0-.65.11-1.28.32-1.86V7.52H3.04A10 10 0 0 0 2 12c0 1.61.39 3.14 1.04 4.48l3.35-2.62Z"/>
                                    <path fill="#EA4335" d="M12 6.01c1.47 0 2.79.51 3.83 1.5l2.87-2.88A9.64 9.64 0 0 0 12 2a10 10 0 0 0-8.96 5.52l3.35 2.62C7.18 7.77 9.39 6.01 12 6.01Z"/>
                                </svg>
                                Continuar con Google
                            </button>
                            <div class="auth-divider"><span>o usa tu correo</span></div>
                            <div class="auth-form">
                                <label for="reg-email">Correo electrónico</label>
                                <div class="auth-input-wrap">
                                    <i class="far fa-envelope"></i>
                                    <input type="email" id="reg-email" autocomplete="email" placeholder="nombre@correo.com">
                                </div>
                                <label for="reg-password">Contraseña</label>
                                <div class="auth-input-wrap">
                                    <i class="fas fa-key"></i>
                                    <input type="password" id="reg-password" autocomplete="current-password"
                                        placeholder="Ingresa tu contraseña">
                                    <button type="button" class="auth-password-toggle"
                                        onclick="toggleAuthPassword('reg-password', this)" aria-label="Mostrar contraseña">
                                        <i class="far fa-eye"></i>
                                    </button>
                                </div>
                                <div id="auth-confirm-group" class="hidden">
                                    <label for="reg-password-confirm">Confirmar contraseña</label>
                                    <div class="auth-input-wrap">
                                        <i class="fas fa-shield-alt"></i>
                                        <input type="password" id="reg-password-confirm" autocomplete="new-password"
                                            placeholder="Repite tu contraseña">
                                    </div>
                                </div>
                                <button id="auth-submit-login" type="button" onclick="signInWithEmail()"
                                    class="auth-primary-btn">Entrar a mi cuenta <i class="fas fa-arrow-right"></i></button>
                                <button id="auth-submit-register" type="button" onclick="signUpWithEmail()"
                                    class="auth-primary-btn hidden">Crear mi cuenta <i class="fas fa-user-plus"></i></button>
                                <button id="auth-reset-link" type="button" onclick="resetPassword()"
                                    class="auth-reset-link">¿Olvidaste tu contraseña?</button>
                                <div id="auth-error" class="auth-message" role="status" aria-live="polite"></div>
                            </div>
                            <p class="auth-switch-copy">
                                <span id="auth-switch-text">¿Aún no tienes una cuenta?</span>
                                <button id="auth-switch-btn" type="button" onclick="setAuthMode('register')">Regístrate gratis</button>
                            </p>
                            <div class="auth-community">
                                <span>También puedes encontrarnos en</span>
                                <a href="https://whatsapp.com/channel/0029VbCCfYX96H4RGXCuMO0p" target="_blank"
                                    rel="noopener" aria-label="Canal de WhatsApp"><i class="fab fa-whatsapp"></i></a>
                                <a href="https://discord.gg/pu2etWbmTe" target="_blank"
                                    rel="noopener" aria-label="Canal de Discord"><i class="fab fa-discord"></i></a>
                            </div>
                        </div>
                    </div>
                </div>

                <div id="user-dashboard" class="hidden space-y-6">

                    <!-- UI block -->
                    <div class="account-card account-profile-card overflow-hidden">
                        <!-- Profile content (overlaps gradient) -->
                        <div class="account-hero-content px-2 pb-4 -mt-8 relative">
                            <button type="button" onclick="openProfileSettings()" class="profile-settings-trigger"
                                aria-label="Abrir ajustes de cuenta" title="Ajustes de cuenta">
                                <i class="fas fa-gear"></i>
                            </button>
                            <div class="account-hero-stack w-full flex flex-col items-center text-center">
                                <!-- Avatar -->
                                <div class="avatar-ring mb-3 shadow-x2">
                                    <img id="user-photo"
                                        src="https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExbHFweDdvejZtMmY2aHhzdDh4aXJhanY4MG1qbjZnamdkbmVuaXNsdSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/vL8jVjKkqbVh2qdFj0/giphy.gif"
                                        alt="Avatar" class="w-12 h-12 object-cover">
                                </div>

                                <h3 class="text-2xl font-extrabold text-gray-800 dark:text-slate-100 font-rounded mb-1">
                                    Hola, <span id="user-name" class="text-pink-500 dark:text-pink-400">...</span> !
                                </h3>
                                <div class="account-identity-stack w-full max-w-md space-y-2 mb-2">
                                    <div class="account-info-row flex items-center justify-center gap-2 flex-wrap text-sm">
                                        <span class="font-semibold text-gray-500 dark:text-slate-400">Usuario:</span>
                                        <span id="profile-username-display"
                                            class="font-bold text-gray-700 dark:text-slate-200">...</span>
                                        <button onclick="toggleProfileIdentityEdit('name')" type="button"
                                            class="inline-flex items-center justify-center w-7 h-7 rounded-full bg-white/80 dark:bg-slate-800 border border-pink-100 dark:border-pink-900/30 text-pink-500 hover:text-pink-600 transition"
                                            title="Editar nombre de usuario">
                                            <i class="fas fa-pen text-[11px]"></i>
                                        </button>
                                    </div>
                                    <div id="profile-name-editor"
                                        class="account-inline-editor hidden p-3 bg-white/80 dark:bg-slate-800/80 border border-pink-100 dark:border-pink-900/30 rounded-2xl">
                                        <div class="kawaii-input-wrapper">
                                            <input type="text" id="profile-name-input"
                                                placeholder="Nuevo nombre de usuario"
                                                class="w-full px-4 py-3 bg-white dark:bg-slate-800 rounded-xl kawaii-input dark:text-slate-200 text-sm">
                                        </div>
                                        <div class="flex gap-2 mt-2">
                                            <button onclick="guardarPerfilCampo('name')" type="button"
                                                class="flex-1 py-2.5 bg-pink-500 text-white font-bold rounded-xl kawaii-btn text-sm">
                                                Guardar nombre
                                            </button>
                                            <button onclick="cancelProfileIdentityEdit('name')" type="button"
                                                class="px-4 py-2.5 bg-white dark:bg-slate-700 border-2 border-pink-200 dark:border-pink-900/30 text-pink-400 dark:text-pink-300 font-bold rounded-xl text-sm">
                                                Cancelar
                                            </button>
                                        </div>
                                    </div>
                                    <div class="account-info-row flex items-center justify-center gap-2 flex-wrap text-sm">
                                        <span class="font-semibold text-gray-500 dark:text-slate-400">Correo:</span>
                                        <span id="profile-email-display"
                                            class="font-bold text-gray-700 dark:text-slate-200 break-all">...</span>
                                        <span id="profile-mfa-badge"
                                            class="hidden inline-flex items-center justify-center px-2.5 py-1 rounded-full text-[10px] font-black tracking-wide uppercase bg-green-50 dark:bg-emerald-950/30 text-green-600 dark:text-emerald-300 border border-green-100 dark:border-emerald-900/30">
                                            2FA activa
                                        </span>
                                        <button onclick="toggleProfileIdentityEdit('email')" type="button"
                                            class="inline-flex items-center justify-center w-7 h-7 rounded-full bg-white/80 dark:bg-slate-800 border border-pink-100 dark:border-pink-900/30 text-pink-500 hover:text-pink-600 transition"
                                            title="Editar correo">
                                            <i class="fas fa-pen text-[11px]"></i>
                                        </button>
                                    </div>
                                    <div id="profile-email-editor"
                                        class="account-inline-editor hidden p-3 bg-white/80 dark:bg-slate-800/80 border border-pink-100 dark:border-pink-900/30 rounded-2xl text-left">
                                        <div class="space-y-2">
                                            <div class="kawaii-input-wrapper">
                                                <input type="email" id="profile-email-input" placeholder="Nuevo correo"
                                                    class="w-full px-4 py-3 bg-white dark:bg-slate-800 rounded-xl kawaii-input dark:text-slate-200 text-sm">
                                            </div>
                                            <div class="kawaii-input-wrapper">
                                                <input type="password" id="profile-current-password"
                                                    placeholder="Tu contraseña actual"
                                                    class="w-full px-4 py-3 bg-white dark:bg-slate-800 rounded-xl kawaii-input dark:text-slate-200 text-sm">
                                            </div>
                                        </div>
                                        <p class="text-[11px] text-gray-400 dark:text-slate-500 mt-2">
                                            Por seguridad te pedimos tu contraseña actual para cambiar el correo.
                                        </p>
                                        <div class="flex gap-2 mt-2">
                                            <button onclick="guardarPerfilCampo('email')" type="button"
                                                class="flex-1 py-2.5 bg-pink-500 text-white font-bold rounded-xl kawaii-btn text-sm">
                                                Guardar correo
                                            </button>
                                            <button onclick="cancelProfileIdentityEdit('email')" type="button"
                                                class="px-4 py-2.5 bg-white dark:bg-slate-700 border-2 border-pink-200 dark:border-pink-900/30 text-pink-400 dark:text-pink-300 font-bold rounded-xl text-sm">
                                                Cancelar
                                            </button>
                                        </div>
                                    </div>
                                    <div id="profile-identity-feedback"
                                        class="min-h-5 text-xs font-bold text-center text-pink-500 dark:text-pink-400">
                                    </div>
                                </div>
                                <p id="user-expire-date" class="account-membership-meta text-xs font-semibold mb-2"></p>
                                <div id="user-warning-banner"
                                    class="hidden w-full max-w-2xl mt-2 mb-2 rounded-2xl border border-amber-200 dark:border-amber-900/30 bg-amber-50/90 dark:bg-amber-950/30 px-4 py-3 text-left shadow-sm">
                                    <div class="flex items-start gap-3">
                                        <div class="mt-0.5 text-amber-500 dark:text-amber-300 flex-shrink-0">
                                            <i class="fas fa-triangle-exclamation"></i>
                                        </div>
                                        <div class="min-w-0 flex-1">
                                            <div class="text-sm font-extrabold text-amber-700 dark:text-amber-200">
                                                Advertencia en tu cuenta
                                            </div>
                                            <p id="user-warning-message"
                                                class="mt-1 text-xs sm:text-sm font-semibold text-amber-700/90 dark:text-amber-100/90 leading-relaxed">
                                                Hemos detectado actividad inusual en tu cuenta. Tu acceso sigue activo por ahora. Si necesitas mas informacion, contacta a soporte.
                                            </p>
                                            <p class="mt-1 text-[11px] font-bold text-amber-600/80 dark:text-amber-200/70">
                                                El motivo detallado sera informado por soporte si lo solicitas.
                                            </p>
                                        </div>
                                    </div>
                                </div>

                                <!-- Addon Code pill -->
                                <div
                                    class="account-addon-pill inline-flex items-center gap-1.5 px-4 py-2 bg-pink-50/80 dark:bg-slate-800 border border-pink-100 dark:border-pink-900/30 rounded-full mb-1">
                                    <span
                                        class="text-[10px] text-gray-400 dark:text-slate-500 font-semibold uppercase">Addon
                                        ID:</span>
                                    <code id="user-addon-code"
                                        class="font-mono text-sm font-bold text-pink-500 dark:text-pink-400 cursor-pointer"
                                        onclick="navigator.clipboard.writeText(this.textContent)">---</code>
                                </div>

                                <!-- Botones de Instalación (sólo visibles si tiene plan activo) -->
                                <div id="profile-install-container"
                                    class="account-action-row hidden flex-col sm:flex-row gap-2 mt-2 w-full max-w-[280px]">
                                    <button onclick="copyLink()"
                                        class="w-full py-2.5 bg-white dark:bg-slate-800 text-purple-600 dark:text-purple-400 font-bold rounded-xl border-2 border-purple-200 dark:border-purple-800/50 hover:bg-purple-50 dark:hover:bg-slate-700 transition flex items-center justify-center gap-1.5 text-xs">
                                        <i class="fas fa-copy"></i> Copiar Enlace
                                    </button>
                                    <button onclick="installStremio()"
                                        class="w-full py-2.5 bg-purple-600 hover:bg-purple-700 text-white font-bold rounded-xl flex items-center justify-center gap-1.5 shadow-[0_2px_0_#6b21a8] hover:translate-y-[1px] hover:shadow-[0_1px_0_#6b21a8] active:translate-y-[2px] active:shadow-none transition-all text-xs">
                                        <i class="fas fa-download"></i> Instalar Stremio
                                    </button>
                                </div>


                                <!-- Discord VIP Link -->
                                <div id="discord-link-block" class="account-discord-block mt-3">
                                    <!-- Unlinked state -->
                                    <div id="discord-unlinked" class="hidden">
                                        <button onclick="vincularDiscord()" id="btn-discord"
                                            class="inline-flex items-center justify-center gap-2 px-4 py-2.5 rounded-2xl font-bold text-sm text-white transition-all hover:opacity-90"
                                            style="background: linear-gradient(135deg, #5865F2, #7289da); box-shadow: 0 4px 14px rgba(88,101,242,0.4);">
                                            <!-- Light mode: white logo on blurple button -->
                                            <img src="https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/67ed8194f41d7d8eade32c90_Logo.svg"
                                                alt="Discord" class="dark:hidden"
                                                style="height: 18px; filter: brightness(0) invert(1);">
                                            <!-- Dark mode: white logo on blurple button -->
                                            <img src="https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/67ed8194f41d7d8eade32c90_Logo.svg"
                                                alt="Discord" class="hidden dark:inline"
                                                style="height: 18px; filter: brightness(0) invert(1);">
                                            Vincular para tu etiqueta VIP
                                        </button>
                                    </div>
                                    <!-- Linked state -->
                                    <div id="discord-linked"
                                        class="hidden inline-flex items-center justify-center gap-2 px-3 py-2 rounded-2xl text-xs font-bold flex-wrap"
                                        style="background: rgba(88,101,242,0.12); border: 1.5px solid rgba(88,101,242,0.3); color: #5865F2;">
                                        <!-- Light mode: blue/blurple logo -->
                                        <img src="https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/67ed8194f41d7d8eade32c90_Logo.svg"
                                            alt="Discord" class="dark:hidden"
                                            style="height: 14px; filter: invert(29%) sepia(93%) saturate(1352%) hue-rotate(222deg) brightness(96%) contrast(98%);">
                                        <!-- Dark mode: white logo -->
                                        <img src="https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/67ed8194f41d7d8eade32c90_Logo.svg"
                                            alt="Discord" class="hidden dark:inline"
                                            style="height: 14px; filter: brightness(0) invert(1);">
                                        <span id="discord-username" class="font-black"></span>
                                        <button type="button" onclick="actualizarRolDiscord()"
                                            class="discord-mini-action" title="Actualizar rol de Discord">
                                            <i class="fas fa-rotate"></i>
                                        </button>
                                        <button type="button" onclick="desvincularDiscord()"
                                            class="discord-mini-action discord-mini-action-danger"
                                            title="Desvincular Discord">
                                            <i class="fas fa-link-slash"></i>
                                        </button>
                                    </div>
                                </div>

                                <div id="profile-mfa-inline" class="account-security-block mt-3 hidden">
                                    <div class="flex flex-wrap items-center justify-center gap-2">
                                        <button id="mfa-enable-btn" onclick="abrirMfaSetup()" type="button"
                                            class="hidden inline-flex items-center justify-center gap-2 px-4 py-2.5 rounded-2xl font-bold text-sm text-white transition-all hover:opacity-90"
                                            style="background: linear-gradient(135deg, #9333ea, #ec4899); box-shadow: 0 4px 14px rgba(168,85,247,0.32);">
                                            <i class="fas fa-shield-alt"></i>
                                            <span id="mfa-inline-cta-text">Activar 2FA</span>
                                        </button>
                                        <button id="mfa-disable-btn" onclick="desactivarMfa()" type="button"
                                            class="hidden inline-flex items-center justify-center gap-2 px-4 py-2.5 rounded-2xl font-bold text-sm border-2 border-purple-200 dark:border-purple-900/30 text-purple-500 dark:text-purple-300 bg-white/80 dark:bg-slate-800/80 transition-all hover:bg-purple-50 dark:hover:bg-slate-700">
                                            <i class="fas fa-shield-check"></i>
                                            <span>2FA Activo</span>
                                        </button>
                                        <span id="mfa-status-badge"
                                            class="hidden text-[11px] font-bold px-3 py-2 rounded-2xl bg-purple-50/80 dark:bg-slate-800 border border-purple-100 dark:border-purple-900/30 text-purple-500 dark:text-purple-300">
                                            Disponible
                                        </span>
                                    </div>
                                    <p id="mfa-status-copy"
                                        class="mt-2 text-xs font-medium text-gray-500 dark:text-slate-400"></p>
                                    <div id="mfa-upsell-note"
                                        class="hidden mt-2 text-xs font-semibold text-pink-500 dark:text-pink-300">
                                    </div>
                                </div>
                            </div>

                            <div id="profile-settings-drawer" class="profile-settings-drawer hidden" aria-hidden="true">
                                <div class="profile-settings-backdrop" onclick="closeProfileSettings()"></div>
                                <aside class="profile-settings-panel" role="dialog" aria-modal="true"
                                    aria-labelledby="profile-settings-title">
                                    <div class="profile-settings-header">
                                        <div>
                                            <p class="profile-settings-eyebrow">Cuenta</p>
                                            <h3 id="profile-settings-title">Ajustes</h3>
                                        </div>
                                        <button type="button" onclick="closeProfileSettings()"
                                            class="profile-settings-close" aria-label="Cerrar ajustes">
                                            <i class="fas fa-xmark"></i>
                                        </button>
                                    </div>

                                    <div class="profile-settings-body">
                                        <section class="profile-settings-section">
                                            <div class="profile-settings-section-title">
                                                <i class="fas fa-user"></i>
                                                <span>Perfil</span>
                                            </div>
                                            <div class="profile-settings-avatar-row">
                                                <img id="settings-user-photo"
                                                    src="https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExbHFweDdvejZtMmY2aHhzdDh4aXJhanY4MG1qbjZnamdkbmVuaXNsdSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/vL8jVjKkqbVh2qdFj0/giphy.gif"
                                                    alt="Avatar">
                                                <div>
                                                    <p class="profile-settings-name">Foto de perfil</p>
                                                    <p class="profile-settings-email">Se actualiza desde tu cuenta conectada.</p>
                                                </div>
                                            </div>
                                            <div id="profile-settings-identity-slot"></div>
                                        </section>

                                        <section class="profile-settings-section">
                                            <div class="profile-settings-section-title">
                                                <i class="fas fa-shield-halved"></i>
                                                <span>Seguridad</span>
                                            </div>
                                            <div id="profile-settings-security-slot"></div>
                                        </section>

                                        <section class="profile-settings-section">
                                            <div class="profile-settings-section-title">
                                                <i class="fab fa-discord"></i>
                                                <span>Discord</span>
                                            </div>
                                            <div id="profile-settings-discord-slot"></div>
                                        </section>

                                        <section class="profile-settings-section profile-danger-section">
                                            <div class="profile-settings-section-title profile-danger-title">
                                                <i class="fas fa-triangle-exclamation"></i>
                                                <span>Zona de peligro</span>
                                            </div>
                                            <button onclick="eliminarMiCuenta()" type="button"
                                                class="profile-delete-account-btn">
                                                <i class="fas fa-trash-alt"></i>
                                                Eliminar mi cuenta permanentemente
                                            </button>
                                        </section>
                                    </div>
                                </aside>
                            </div>

                            <!-- 4 Stat Cards Row -->
                            <div class="account-stats-grid grid grid-cols-2 md:grid-cols-4 gap-2 mt-4">
                                <!-- Créditos -->
                                <div
                                    class="account-stat-card account-stat-card-green text-center p-3 bg-gradient-to-br from-green-50 to-emerald-50 dark:from-green-950/30 dark:to-emerald-950/20 rounded-xl border border-green-100 dark:border-green-900/20">
                                    <div
                                        class="text-3xl font-black text-green-500 dark:text-green-400 leading-none mb-0.5">
                                        <span id="user-credits">0</span>
                                    </div>
                                    <div
                                        class="text-[10px] font-bold text-green-600/60 dark:text-green-400/50 uppercase tracking-wider">
                                        Créditos</div>
                                    <button onclick="mostrarAvisoMantenimientoPago(); return false;"
                                        class="payment-maintenance-disabled mt-1 text-[10px] font-bold text-pink-400 hover:text-pink-600 transition"
                                        aria-label="Pagos pausados temporalmente">
                                        <i class="fas fa-pause-circle"></i> Pausado
                                    </button>
                                </div>
                                <!-- Pelis regalo -->
                                <div
                                    class="account-stat-card account-stat-card-pink text-center p-3 bg-gradient-to-br from-pink-50 to-rose-50 dark:from-pink-950/30 dark:to-rose-950/20 rounded-xl border border-pink-100 dark:border-pink-900/20">
                                    <div class="text-3xl font-black text-pink-500 dark:text-pink-400 leading-none mb-0.5"
                                        id="count-gift-movie">0</div>
                                    <div
                                        class="text-[10px] font-bold text-pink-400/60 dark:text-pink-400/40 uppercase tracking-wider">
                                        Pelis </div>
                                </div>
                                <!-- Series regalo -->
                                <div
                                    class="account-stat-card account-stat-card-purple text-center p-3 bg-gradient-to-br from-purple-50 to-violet-50 dark:from-purple-950/30 dark:to-violet-950/20 rounded-xl border border-purple-100 dark:border-purple-900/20">
                                    <div class="text-3xl font-black text-purple-500 dark:text-purple-400 leading-none mb-0.5"
                                        id="count-gift-serie">0</div>
                                    <div
                                        class="text-[10px] font-bold text-purple-400/60 dark:text-purple-400/40 uppercase tracking-wider">
                                        Series </div>
                                </div>
                                <!-- TV regalo -->
                                <div
                                    class="account-stat-card account-stat-card-blue text-center p-3 bg-gradient-to-br from-blue-50 to-cyan-50 dark:from-blue-950/30 dark:to-cyan-950/20 rounded-xl border border-blue-100 dark:border-blue-900/20">
                                    <div class="text-3xl font-black text-blue-500 dark:text-blue-400 leading-none mb-0.5"
                                        id="count-gift-tv">0</div>
                                    <div
                                        class="text-[10px] font-bold text-blue-400/60 dark:text-blue-400/40 uppercase tracking-wider">
                                        TV </div>
                                </div>
                            </div>
                        </div>
                    </div>


                    <!-- UI block -->
                    <div class="account-dashboard-grid grid grid-cols-1 lg:grid-cols-5 gap-5 w-full">

                        <!-- LEFT COLUMN (3/5) -->
                        <div class="lg:col-span-3 space-y-5 min-w-0 w-full">

                            <!-- UI block -->
                            <div class="account-card p-5">
                                <div class="flex items-center gap-3 mb-4">
                                    <div class="section-icon bg-purple-50 dark:bg-purple-900/20 text-purple-500">
                                        <i class="fas fa-gift"></i>
                                    </div>
                                    <h4 class="font-bold text-gray-700 dark:text-slate-200 text-base">Mis Regalos &
                                        Canjeo</h4>
                                </div>
                                <!-- Hidden elements needed by JS result -->
                                <span id="sidebar-credits" class="hidden">0</span>
                                <div id="my-vouchers-container" class="hidden mb-4">
                                    <p class="text-[11px] text-gray-400 font-bold uppercase tracking-widest mb-2">Tus
                                        códigos:</p>
                                    <div id="vouchers-list" class="space-y-2 max-h-24 overflow-y-auto pr-1"></div>
                                </div>
                                <p class="text-[11px] text-gray-400 font-bold uppercase tracking-widest mb-2">Canjear
                                    nuevo código</p>
                                <div class="flex gap-2">
                                    <div class="flex-1 kawaii-input-wrapper">
                                        <input type="text" id="voucher-input" placeholder="Ej: MO-123456"
                                            class="w-full px-4 py-3 bg-white dark:bg-slate-800 rounded-xl text-sm kawaii-input font-mono uppercase dark:text-slate-200">
                                    </div>
                                    <button onclick="handleRedeem()"
                                        class="px-5 py-3 bg-pink-400 text-white rounded-xl text-base font-bold kawaii-btn">
                                        <i class="fas fa-check"></i>
                                    </button>
                                </div>
                                <div id="msgVoucher" class="mt-2 text-sm text-center font-bold min-h-4"></div>
                            </div>

                            <!-- UI block -->
                            <div class="account-card p-5 md:p-6">
                                <div class="flex items-center gap-3 mb-5">
                                    <div class="section-icon bg-pink-50 dark:bg-pink-900/20 text-pink-500">
                                        <i class="fas fa-paper-plane"></i>
                                    </div>
                                    <div>
                                        <h4 class="font-rounded text-xl font-bold text-pink-600 dark:text-pink-500">¿Qué
                                            quieres ver?</h4>
                                        <p class="text-sm text-gray-400 dark:text-slate-500 font-medium">Envía una
                                            petición al catálogo</p>
                                    </div>
                                </div>

                                <div class="relative">
                                    <!-- Bloqueo temporal de peticiones: eliminar junto con initTemporaryRequestLock() -->
                                    <div id="temporary-request-lock" class="request-maintenance-lock hidden"
                                        role="button" aria-live="polite" tabindex="0"
                                        onclick="mostrarAvisoMantenimientoPago(); return false;">
                                        <div class="request-maintenance-lock__panel">
                                            <div class="request-maintenance-lock__icon" aria-hidden="true">
                                                <i class="fas fa-pause-circle"></i>
                                            </div>
                                            <p class="request-maintenance-lock__eyebrow">Peticiones en pausa</p>
                                            <h5>Mantenimiento temporal</h5>
                                            <p class="request-maintenance-lock__message">
                                                Las peticiones estan pausadas mientras restablecemos Primer Latino.
                                                Toca para ver el estado del servicio.
                                            </p>
                                            <p class="request-maintenance-lock__message hidden">
                                                El formulario se habilitará el martes 7 de julio a las 4:00 p. m.
                                            </p>
                                            <div class="request-countdown hidden" aria-label="Tiempo restante">
                                                <div><strong id="request-countdown-days">00</strong><span>Días</span></div>
                                                <div><strong id="request-countdown-hours">00</strong><span>Horas</span></div>
                                                <div><strong id="request-countdown-minutes">00</strong><span>Min</span></div>
                                                <div><strong id="request-countdown-seconds">00</strong><span>Seg</span></div>
                                            </div>
                                            <small><i class="fas fa-location-dot"></i> 🌎</small>
                                        </div>
                                    </div>

                                    <div id="request-form-controls" class="payment-maintenance-disabled">
                                    <div id="contenedor-uso-ticket" class="mb-4">
                                        <label
                                            class="flex items-center gap-3 p-4 bg-pink-100/40 dark:bg-pink-900/20 border-2 border-pink-200 dark:border-pink-900/40 rounded-2xl cursor-pointer hover:bg-pink-100 dark:hover:bg-pink-900/30 transition-all">
                                            <div class="toggle-wrapper">
                                                <input type="checkbox" id="usa-ticket" class="toggle-checkbox hidden"
                                                    onchange="actualizarResumen()">
                                                <div class="toggle-slider">
                                                    <div class="toggle-circle"></div>
                                                </div>
                                            </div>
                                            <div class="flex-1 text-base">
                                                <p
                                                    class="font-bold text-pink-600 dark:text-pink-400 flex items-center gap-2">
                                                    <i class="fas fa-ticket-alt"></i> Ticket de Regalo
                                                </p>
                                            </div>
                                        </label>
                                    </div>

                                    <div class="space-y-4">
                                        <div class="kawaii-input-wrapper">
                                            <input type="text" id="titulo" placeholder=" Título *"
                                                class="w-full px-4 py-3.5 bg-white dark:bg-slate-800 rounded-xl kawaii-input dark:text-slate-200 text-base">
                                        </div>
                                        <div class="kawaii-input-wrapper">
                                            <select id="tipo" onchange="actualizarFormulario()"
                                                class="w-full px-4 py-3.5 bg-white dark:bg-slate-800 rounded-xl kawaii-input cursor-pointer dark:text-slate-200 text-base"
                                                style="appearance:none;background-image:url('data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22%23f9a8d4%22><path d=%22M7 10l5 5 5-5z%22/></svg>');background-repeat:no-repeat;background-position:right 12px center;background-size:22px;padding-right:44px;">
                                                <option value="" disabled selected> Tipo *</option>
                                                <option value="pelicula"> Película</option>
                                                <option value="serie"> Serie</option>
                                                <option value="tv"> TV en vivo</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div id="advertencia-serie"
                                        class="hidden mt-3 p-3 bg-yellow-50 border-l-4 border-yellow-300 rounded-xl text-xs text-yellow-700 font-medium whitespace-nowrap overflow-hidden text-ellipsis">
                                        <i class="fas fa-exclamation-triangle mr-1 text-yellow-400"></i> Series largas
                                        pueden ser rechazadas.
                                    </div>
                                    <div id="campos-serie" class="hidden mt-3">
                                        <div class="kawaii-input-wrapper">
                                            <input type="number" id="temporadas" placeholder=" Temporadas (1-10) *"
                                                min="1" max="10"
                                                class="w-full px-4 py-3.5 bg-white dark:bg-slate-800 rounded-xl kawaii-input dark:text-slate-200 text-base">
                                        </div>
                                    </div>
                                    <div id="campo-rapido" class="hidden mt-3">
                                        <label
                                            class="flex items-center gap-3 p-4 bg-pink-50/60 dark:bg-slate-900/60 border-2 border-pink-100 dark:border-pink-900/30 rounded-xl cursor-pointer hover:bg-pink-100 dark:hover:bg-slate-800 transition">
                                            <input type="checkbox" id="rapido" class="w-5 h-5 accent-pink-500"
                                                onchange="actualizarResumen()">
                                            <span id="label-rapido"
                                                class="font-bold text-gray-700 dark:text-slate-200 text-sm"></span>
                                        </label>
                                    </div>
                                    <div class="grid grid-cols-2 gap-3 mt-3">
                                        <div class="kawaii-input-wrapper">
                                            <input type="text" id="anio" placeholder=" Año"
                                                class="w-full px-4 py-3.5 bg-white dark:bg-slate-800 rounded-xl kawaii-input dark:text-slate-200 text-base">
                                        </div>
                                        <div class="kawaii-input-wrapper">
                                            <input type="text" id="tmdb" placeholder=" TMDB ID"
                                                class="w-full px-4 py-3.5 bg-white dark:bg-slate-800 rounded-xl kawaii-input dark:text-slate-200 text-base">
                                        </div>
                                    </div>
                                    <div class="kawaii-input-wrapper mt-3">
                                        <input type="text" id="magnet" placeholder=" Enlace de referencia (opcional)"
                                            class="w-full px-4 py-3.5 bg-white dark:bg-slate-800 rounded-xl kawaii-input dark:text-slate-200 text-base">
                                    </div>
                                    <div id="resumen-costo"
                                        class="hidden mt-4 p-4 bg-green-50 dark:bg-green-950/30 border-2 border-green-100 dark:border-green-900/20 rounded-2xl text-center">
                                        <p id="detalle-costo"
                                            class="text-green-600 dark:text-green-400 font-bold text-base"></p>
                                    </div>
                                    <button id="btn-enviar" onclick="enviarPeticion()"
                                        class="hidden w-full mt-4 py-4 bg-pink-500 text-white font-bold rounded-2xl kawaii-btn text-base">
                                        Enviar Petición
                                    </button>
                                    <div id="msgPeticion" class="text-center mt-2 font-bold text-sm min-h-5"></div>
                                    </div>
                                </div>
                            </div>
                        </div>

                        <!-- RIGHT SIDEBAR (2/5) -->
                        <div class="lg:col-span-2 space-y-5 min-w-0 w-full">

                            <!-- UI block -->
                            <div class="account-card p-5" id="devices-user-card">
                                <div class="flex items-center justify-between mb-4">
                                    <div class="flex items-center gap-3">
                                        <div class="section-icon bg-blue-50 dark:bg-blue-900/20 text-blue-500">
                                            <i class="fas fa-mobile-screen-button"></i>
                                        </div>
                                        <h4 class="font-bold text-gray-700 dark:text-slate-200 text-base">Dispositivos
                                        </h4>
                                    </div>
                                    <span id="user-device-count-badge"
                                        class="text-xs font-bold px-2.5 py-1.5 rounded-full bg-pink-50 dark:bg-slate-800 border border-pink-100 dark:border-pink-900/30 text-pink-500 dark:text-pink-400">0/3</span>
                                </div>
                                <div id="user-devices-list" class="flex flex-col gap-2.5 mb-3">
                                    <p class="text-sm text-gray-400 italic text-center py-2">Cargando...</p>
                                </div>
                                <div id="devices-basic-notice"
                                    class="hidden p-3 bg-yellow-50 dark:bg-yellow-950/30 border border-yellow-200 dark:border-yellow-900/20 rounded-xl text-xs text-yellow-700 dark:text-yellow-200 font-semibold flex items-start gap-2">
                                    <i class="fas fa-lock text-yellow-400 mt-0.5 flex-shrink-0"></i>
                                    <span>Plan Basico sin gestion. </span>
                                </div>
                            </div>

                            <!-- UI block -->
                            <div class="account-card p-5" id="streams-user-card">
                                <div class="flex items-center justify-between mb-4">
                                    <div class="flex items-center gap-3">
                                        <div class="section-icon bg-green-50 dark:bg-green-900/20 text-green-500">
                                            <i class="fas fa-play-circle"></i>
                                        </div>
                                        <h4 class="font-bold text-gray-700 dark:text-slate-200 text-base">Viendo Ahora
                                        </h4>
                                    </div>
                                    <span id="user-stream-count-badge"
                                        class="text-xs font-bold px-2.5 py-1.5 rounded-full bg-green-50 dark:bg-slate-800 border border-green-100 dark:border-green-900/30 text-green-500 dark:text-green-400">0/3</span>
                                </div>
                                <div id="user-streams-list" class="flex flex-col gap-2.5">
                                    <p class="text-sm text-gray-400 italic text-center py-2">Sin reproducciones activas
                                    </p>
                                </div>
                            </div>

                        </div>
                    </div>

                </div>

            </div>
        </div>
    </section>


    <!-- SECTION: SUPPORT -->
    <section id="section-support" class="app-section hidden">
        <div class="fixed -bottom-2 -left-2 md:-left-2 z-50 pointer-events-none">
            <div
                class="relative w-32 md:w-48 animate-float drop-shadow-2xl pointer-events-auto cursor-pointer group hover:scale-105 transition-transform">
                <img src="/public/Liza-1.0.png" alt="Liza Soporte" class="w-full h-auto drop-shadow-md">
                <!-- Burbuja de diálogo hover -->
                <div
                    class="absolute -top-16 left-1/4 transform -translate-x-1/4 bg-white px-5 py-3 rounded-2xl shadow-xl border-2 border-pink-200 text-pink-600 font-bold text-sm opacity-0 group-hover:opacity-100 transition-opacity duration-300 whitespace-nowrap">
                    Hola! Aqui estoy para ayudarte
                    <div
                        class="absolute -bottom-2 left-8 w-4 h-4 bg-white border-b-2 border-r-2 border-pink-200 rotate-45">
                    </div>
                </div>
            </div>
        </div>

        <div class="px-4 md:px-6 py-12">
            <div class="max-w-4xl mx-auto space-y-8">
                <div class="glass-card p-6 md:p-8 text-center">
                    <h2
                        class="font-rounded text-xl md:text-3xl font-bold text-pink-600 mb-2 flex justify-center items-center gap-2">
                        <i class="fas fa-comments text-pink-400"></i> Chat de Soporte 24/7
                    </h2>
                    <div class="flex flex-wrap justify-center gap-3 mb-6">
                        <button onclick="window.open('https://whatsapp.com/channel/0029VbCCfYX96H4RGXCuMO0p','_blank')"
                            class="px-4 py-2 bg-green-400 text-white rounded-xl flex items-center gap-2 font-bold hover:bg-green-500 transition text-xs green-btn">
                            <i class="fab fa-whatsapp text-lg"></i> WhatsApp
                        </button>
                        <button onclick="window.open('https://discord.gg/pu2etWbmTe','_blank')"
                            class="px-4 py-2 discord-btn text-white rounded-xl flex items-center gap-2 font-bold text-xs">
                            <i class="fab fa-discord text-lg"></i> Discord
                        </button>
                    </div>
                    <p class="text-gray-400 text-xs md:text-sm mb-6">El chat flotante se abrirá automáticamente...</p>

                    <button
                        onclick="if(window.Tawk_API && typeof window.Tawk_API.maximize === 'function') { window.Tawk_API.maximize(); } else { alert('El chat aún está cargando...'); }"
                        class="px-5 py-3.5 md:px-8 md:py-5 bg-pink-100 dark:bg-pink-900/40 text-pink-600 dark:text-pink-300 rounded-xl md:rounded-2xl font-bold text-xs md:text-sm inline-flex items-center gap-3 hover:bg-pink-200 dark:hover:bg-pink-900/60 transition">
                        <i class="fas fa-external-link-alt text-lg"></i> ¿No se abrió automáticamente? Haz clic aquí
                    </button>

                    <p class="text-xs text-pink-400 mt-6 italic font-semibold">
                        Nuestro equipo te contestará lo antes posible.
                    </p>
                </div>

                <div class="glass-card p-6 md:p-8">
                    <h2 class="font-rounded text-xl md:text-2xl font-bold text-pink-600 mb-6 flex items-center gap-2">
                        <i class="fas fa-question-circle text-pink-400"></i> Preguntas Frecuentes
                    </h2>
                    <div class="space-y-4">
                        <details
                            class="bg-pink-50/50 dark:bg-slate-900/60 rounded-xl p-4 cursor-pointer border border-transparent dark:border-pink-900/20">
                            <summary
                                class="font-bold text-gray-700 dark:text-slate-200 list-none flex items-center justify-between">
                                ¿Qué
                                es Primer Latino?<i class="fas fa-chevron-down text-pink-400"></i></summary>
                            <p class="mt-3 text-gray-600 dark:text-slate-400 text-sm leading-relaxed">Primer Latino es
                                el addon privado más estable para
                                Stremio y Nuvio. A diferencia de otros, contamos con infraestructura privada propia
                                para ofrecerte contenido en 4K y
                                1080p sin cortes.</p>
                        </details>
                        <details
                            class="bg-pink-50/50 dark:bg-slate-900/60 rounded-xl p-4 cursor-pointer border border-transparent dark:border-pink-900/20">
                            <summary
                                class="font-bold text-gray-700 dark:text-slate-200 list-none flex items-center justify-between">

                                ¿Cómo funcionan los créditos?<i class="fas fa-chevron-down text-pink-400"></i></summary>
                            <p class="mt-3 text-gray-600 dark:text-slate-400 text-sm leading-relaxed">Los créditos se
                                usan para solicitar contenido que no esté en el catálogo. 1 crédito = 1 USD. Las
                                películas cuestan 1 crédito, y las series dependen de su duración y temporadas.</p>
                        </details>
                        <details
                            class="bg-pink-50/50 dark:bg-slate-900/60 rounded-xl p-4 cursor-pointer border border-transparent dark:border-pink-900/20">
                            <summary
                                class="font-bold text-gray-700 dark:text-slate-200 list-none flex items-center justify-between">

                                ¿Necesito servicios externos?<i class="fas fa-chevron-down text-pink-400"></i>
                            </summary>
                            <p class="mt-3 text-gray-600 dark:text-slate-400 text-sm leading-relaxed">
                                <strong>No.</strong> Ya no es necesario pagar servicios externos. Con tu suscripción a
                                Primer Latino ya tienes todo incluido: el contenido, la velocidad y la estabilidad de
                                nuestro servidor privado.
                            </p>
                        </details>
                        <details class="bg-pink-50/50 rounded-xl p-4 cursor-pointer">
                            <summary class="font-bold text-gray-700 list-none flex items-center justify-between"> ¿Qué
                                es el envío rápido?<i class="fas fa-chevron-down text-pink-400"></i></summary>
                            <p class="mt-3 text-gray-600 text-sm leading-relaxed">Es un servicio prioritario donde
                                procesamos tu petición en tiempo récord: 2 horas para películas o 4 horas para series,
                                mediante un pequeño costo extra en créditos.</p>
                        </details>
                        <details class="bg-pink-50/50 rounded-xl p-4 cursor-pointer">
                            <summary class="font-bold text-gray-700 list-none flex items-center justify-between"> ¿Qué
                                son los códigos de regalo?<i class="fas fa-chevron-down text-pink-400"></i></summary>
                            <p class="mt-3 text-gray-600 text-sm leading-relaxed">Los miembros Plus+ y Pro MAX reciben
                                códigos mensuales que pueden obsequiar para canjear por películas o series del catálogo
                                de peticiones gratis.</p>
                        </details>
                    </div>
                </div>

                <div class="glass-card p-6 md:p-8">
                    <h2 class="font-rounded text-xl md:text-2xl font-bold text-pink-600 mb-6 flex items-center gap-2">
                        <i class="fas fa-book text-pink-400"></i> Guía de Instalación
                    </h2>
                    <div class="space-y-6">
                        <div class="flex gap-4">
                            <div
                                class="flex-shrink-0 w-10 h-10 bg-pink-500 text-white rounded-full flex items-center justify-center font-bold">
                                1</div>
                            <div>
                                <h4 class="font-bold text-gray-700 mb-1">Descarga Stremio o Nuvio</h4>
                                <p class="text-gray-600 text-sm">Ve a <a href="https://www.stremio.com" target="_blank"
                                        class="text-pink-500 underline font-semibold">Stremio</a> y descarga la app.
                                </p>
                                <div class="flex gap-4">
                                    <div
                                        class="flex-shrink-0 w-10 h-10 bg-pink-500 text-white rounded-full flex items-center justify-center font-bold">
                                        2</div>
                                    <div>
                                        <h4 class="font-bold text-gray-700 mb-1">Crea tu cuenta</h4>
                                        <p class="text-gray-600 text-sm">Regístrate en esta web usando tu correo o
                                            Google. Obtendrás tu <strong>Addon ID</strong> único al instante.
                                        </p>
                                    </div>
                                </div>
                                <div class="flex gap-4">
                                    <div
                                        class="flex-shrink-0 w-10 h-10 bg-pink-500 text-white rounded-full flex items-center justify-center font-bold">
                                        3</div>
                                    <div>
                                        <h4 class="font-bold text-gray-700 mb-1">Elige tu Plan</h4>
                                        <p class="text-gray-600 text-sm">Ve a la sección de <strong>Planes</strong> y
                                            elige el que prefieras (Básico, Plus+ o Pro MAX). Actívalo con PayPal o
                                            Wompi (tarjeta/PSE).</p>
                                    </div>
                                </div>
                                <div class="flex gap-4">
                                    <div
                                        class="flex-shrink-0 w-10 h-10 bg-pink-500 text-white rounded-full flex items-center justify-center font-bold">
                                        4</div>
                                    <div>
                                        <h4 class="font-bold text-gray-700 mb-1">¡Instala y Disfruta!</h4>
                                        <p class="text-gray-600 text-sm">Ve a <strong>Instalar</strong>, presiona
                                            "Instalar en Stremio" y listo. Sin configurar APIs, sin Debrid externos,
                                            todo automático.</p>
                                    </div>
                                </div>
                            </div>
                            <div
                                class="mt-8 p-6 bg-gradient-to-r from-pink-50 to-purple-50 dark:from-pink-900/20 dark:to-purple-900/20 border-l-4 border-pink-400 rounded-r-2xl">
                                <p class="text-sm text-pink-700 dark:text-pink-300 font-bold flex items-center gap-2">
                                    <i class="fas fa-magic"></i> ¿Problemas técnicos?
                                </p>
                                <p class="text-xs text-pink-600 dark:text-pink-400 mt-1">
                                    Si algo no funciona, usa el chat de soporte flotante o únete a nuestra comunidad.
                                    ¡Te ayudaremos en minutos!
                                </p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>


    <!-- Footer -->
    <footer class="cinematic-footer">
        <div class="cinematic-footer__content">
            <div class="cinematic-footer__signature">
                <span><i class="fas fa-heart" aria-hidden="true"></i> u/johnpradooo</span>
                <div class="cinematic-footer__links">
                    <a href="/actualizaciones">Actualizaciones</a>
                    <a href="/terminos">Términos</a>
                    <a href="/privacidad">Privacidad</a>
                    <a href="/reembolso">Reembolso</a>
                </div>
            </div>
        </div>
    </footer>

    <audio id="premiere-audio" preload="metadata"></audio>

    <!-- Los popups se generan desde /public/estrenos.json -->
    <div id="premiere-root"></div>

    <!-- UI block -->
    <div id="modal-comprar-creditos"
        class="hidden fixed inset-0 z-50 flex items-center justify-center p-4 modal-overlay-custom">
        <div class="glass-card p-8 max-w-sm w-full text-center relative" style="border-radius:28px;">
            <button onclick="cerrarModalCreditos()"
                class="absolute top-4 right-4 text-gray-400 hover:text-pink-500 transition">
                <i class="fas fa-times text-xl"></i>
            </button>
            <div class="w-16 h-16 bg-pink-100 rounded-3xl mx-auto mb-4 flex items-center justify-center">
                <i class="fas fa-coins text-yellow-400 text-3xl"></i>
            </div>
            <h3 class="font-rounded text-2xl font-extrabold text-pink-600 mb-2">Comprar Créditos </h3>
            <p class="text-gray-600 dark:text-slate-400 text-sm mb-4">Los créditos te permiten realizar peticiones
                mágicas en cualquier momento.</p>

            <div
                class="bg-pink-50 dark:bg-slate-800 p-4 rounded-xl border border-pink-100 dark:border-pink-900/30 mb-5">
                <label class="block text-sm font-bold text-gray-700 dark:text-slate-300 mb-2">¿Cuántos créditos
                    deseas?</label>
                <div class="flex items-center justify-center gap-3">
                    <button onclick="document.getElementById('input-creditos').stepDown();" tabindex="-1"
                        class="w-10 h-10 rounded-full bg-white dark:bg-slate-700 text-pink-500 font-bold shadow-sm shadow-pink-200 cursor-pointer">-</button>
                    <input type="number" id="input-creditos" min="2" max="100" value="5"
                        class="w-20 text-center font-bold text-2xl bg-white dark:bg-slate-700 border-2 border-pink-200 dark:border-pink-900/30 rounded-xl py-2 text-pink-600 dark:text-pink-400" />
                    <button onclick="document.getElementById('input-creditos').stepUp();" tabindex="-1"
                        class="w-10 h-10 rounded-full bg-white dark:bg-slate-700 text-pink-500 font-bold shadow-sm shadow-pink-200 cursor-pointer">+</button>
                </div>
            </div>

            <p
                class="text-xs text-blue-600 dark:text-blue-400 font-semibold mb-5 flex items-center justify-center gap-1">
                <i class="fas fa-info-circle"></i> 1 crédito = $1 USD. <br />Mínimo 2 créditos por comisiones de PayPal.
            </p>

            <button onclick="mostrarAvisoMantenimientoPago(); return false;"
                class="payment-maintenance-disabled w-full py-4 bg-gradient-to-r from-pink-500 via-fuchsia-500 to-purple-500 hover:from-pink-600 hover:to-purple-600 text-white font-bold rounded-2xl flex items-center justify-center gap-2 transition-all duration-200 shadow-md hover:scale-[1.02] active:scale-[0.98] cursor-pointer"
                aria-label="Pagos pausados temporalmente">
                <i class="fas fa-pause-circle"></i> Pagos pausados
            </button>
        </div>
    </div>

    <!-- UI block -->
    <div id="modal-device-warning"
        class="hidden fixed inset-0 z-50 flex items-center justify-center p-4 modal-overlay-custom">
        <div class="glass-card p-8 max-w-md w-full text-center" style="border-radius:28px;">
            <div class="w-16 h-16 bg-pink-100 rounded-3xl mx-auto mb-4 flex items-center justify-center">
                <i class="fas fa-shield-halved text-pink-500 text-3xl"></i>
            </div>
            <h3 class="font-rounded text-xl font-extrabold text-pink-600 mb-3">️ Aviso de Seguridad</h3>
            <p class="text-gray-600 text-sm leading-relaxed mb-6">
                El <strong>límite de dispositivos</strong> es una medida de seguridad para combatir la <strong>reventa
                    de códigos</strong>. Esta protección es muy estricta:<br><br>
                El sistema puede registrar una vinculación solo por <strong>pasar la URL por mensajería</strong> o
                abrirla en un <strong>navegador web</strong>.<br><br>
                Instala el addon directamente desde aquí para evitar problemas.
            </p>
            <button onclick="cerrarAvisoDispositivos()"
                class="w-full py-4 bg-pink-500 text-white font-bold rounded-2xl kawaii-btn text-sm">
                <i class="fas fa-check mr-2"></i> Soy consciente, continuar
            </button>
        </div>
    </div>

    <!-- UI block -->
    <div id="modal-pago-unificado" class="hidden fixed inset-0 z-50 flex items-center justify-center p-4"
        style="background: rgba(0,0,0,0.6); backdrop-filter: blur(8px);">
        <div class="relative w-full max-w-md bg-white dark:bg-slate-900 rounded-[28px] shadow-2xl overflow-hidden"
            style="max-height: 90vh; overflow-y: auto;">

            <!-- Header del modal -->
            <div class="relative bg-gradient-to-r from-pink-500 via-fuchsia-500 to-purple-500 px-6 pt-5 pb-4 pr-20">
                <button onclick="cerrarModalPago()"
                    class="absolute top-4 right-4 w-8 h-8 bg-white/20 hover:bg-white/30 rounded-full flex items-center justify-center text-white transition-all">
                    <i class="fas fa-times text-sm"></i>
                </button>
                <div class="flex items-start gap-3">
                    <div class="w-10 h-10 bg-white/20 rounded-2xl flex items-center justify-center flex-shrink-0">
                        <i class="fas fa-shopping-cart text-white text-lg"></i>
                    </div>
                    <div class="min-w-0 flex-1 pr-2">
                        <p class="text-white/80 text-xs font-semibold uppercase tracking-wider">Completar compra</p>
                        <h3 id="modal-plan-titulo" class="text-white font-black text-lg leading-tight">Premium Plus+
                        </h3>
                    </div>
                    <div
                        class="ml-auto text-right flex-shrink-0 rounded-2xl bg-white/12 border border-white/15 px-3 py-2 backdrop-blur-sm">
                        <span id="modal-plan-precio"
                            class="text-white font-black text-xl sm:text-2xl leading-none block">$4.45</span>
                        <span class="text-white/70 text-[10px] sm:text-xs block mt-1">USD</span>
                    </div>
                </div>
            </div>

            <div class="p-5 space-y-4">

                <!-- UI block -->
                <div>
                    <p class="text-xs font-bold text-gray-400 dark:text-slate-500 uppercase tracking-widest mb-3">Paga
                        con tu cuenta</p>
                    <div id="paypal-button-container-modal" class="rounded-2xl overflow-hidden"></div>
                    <p id="paypal-modal-loading" class="text-center text-sm text-gray-400 py-3">
                        <i class="fas fa-circle-notch fa-spin mr-2"></i>Cargando PayPal...
                    </p>
                </div>

                <!-- Divider -->
                <div class="flex items-center gap-3 my-1">
                    <div class="flex-1 h-px bg-gray-200 dark:bg-slate-700"></div>
                    <span class="text-[11px] text-gray-400 dark:text-slate-500 font-bold px-2">o paga directo con</span>
                    <div class="flex-1 h-px bg-gray-200 dark:bg-slate-700"></div>
                </div>

                <!-- UI block -->
                <div>
                    <p
                        class="text-[11px] font-black text-slate-500 dark:text-slate-300 uppercase tracking-widest mb-2 flex items-center gap-2">
                        <i class="fas fa-credit-card text-pink-400"></i>
                        Tarjeta segura
                    </p>

                    <!-- Estado inicial: botón para cargar el widget -->
                    <div id="wompi-widget-trigger">
                        <button onclick="cargarWidgetWompi()" id="btn-wompi-widget"
                            class="w-full py-4 bg-gradient-to-r from-slate-700 to-slate-800 hover:from-slate-800 hover:to-slate-900 text-white font-bold rounded-2xl flex items-center justify-center gap-3 transition-all duration-200 shadow-md hover:scale-[1.02] active:scale-[0.98]">
                            <i class="fas fa-credit-card text-lg"></i>
                            <span>Pagar con tarjeta</span>
                            <img src="https://wompi.co/assets/img/logo-wompi.svg" alt="Wompi" class="h-4 opacity-80"
                                onerror="this.style.display='none'">
                        </button>
                        <button onclick="cargarPseWompi()" id="btn-pse-widget"
                            class="w-full mt-2 py-4 bg-gradient-to-r from-emerald-500 to-teal-600 hover:from-emerald-600 hover:to-teal-700 text-white font-bold rounded-2xl flex items-center justify-center gap-3 transition-all duration-200 shadow-md hover:scale-[1.02] active:scale-[0.98]">
                            <i class="fas fa-building-columns text-lg"></i>
                            <span>Pagar con PSE</span>
                        </button>
                        <button type="button" onclick="abrirModalWompiAlternativo()" id="btn-wompi-alt-link"
                            class="w-full mt-2 py-4 bg-gradient-to-r from-amber-400 to-orange-500 hover:from-amber-500 hover:to-orange-600 text-white font-bold rounded-2xl flex items-center justify-center gap-3 transition-all duration-200 shadow-md hover:scale-[1.02] active:scale-[0.98]">
                            <i class="fas fa-up-right-from-square text-lg"></i>
                            <span>Usar link alternativo</span>
                        </button>
                        <p class="text-center text-[11px] text-gray-400 dark:text-slate-600 mt-2">
                            <i class="fas fa-lock text-green-400 mr-1"></i>Cifrado SSL · Visa · Mastercard · PSE
                        </p>
                    </div>

                    <!-- Estado cargando Wompi -->
                    <div id="wompi-widget-loading" class="hidden text-center py-4">
                        <div
                            class="w-8 h-8 border-4 border-slate-200 border-t-slate-600 rounded-full animate-spin mx-auto mb-3">
                        </div>
                        <p class="text-sm text-gray-500 dark:text-slate-400">Preparando pasarela segura...</p>
                    </div>

                    <!-- Contenedor donde va el widget de Wompi -->
                    <div id="wompi-widget-container" class="hidden mt-2">
                        <form id="wompi-payment-form"
                            class="space-y-2.5 bg-slate-50 dark:bg-slate-800/60 border border-slate-200 dark:border-slate-700 rounded-2xl p-3"
                            autocomplete="off">
                            <div>
                                <label
                                    class="block text-[10px] font-black text-slate-500 dark:text-slate-400 uppercase tracking-wider mb-1">Nombre
                                    en tarjeta</label>
                                <input id="wompi-card-holder" type="text" autocomplete="cc-name"
                                    class="w-full px-3.5 py-2.5 bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 placeholder:text-slate-300 focus:outline-none focus:ring-2 focus:ring-pink-300 focus:border-pink-300"
                                    placeholder="Nombre completo">
                            </div>
                            <div>
                                <label
                                    class="block text-[10px] font-black text-slate-500 dark:text-slate-400 uppercase tracking-wider mb-1">Numero
                                    de tarjeta</label>
                                <div class="relative">
                                    <input id="wompi-card-number" type="text" inputmode="numeric" autocomplete="cc-number"
                                        maxlength="19"
                                        class="w-full pl-3.5 pr-16 py-2.5 bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 placeholder:text-slate-300 focus:outline-none focus:ring-2 focus:ring-pink-300 focus:border-pink-300"
                                        placeholder="4242 4242 4242 4242">
                                    <div id="wompi-card-brand"
                                        class="pointer-events-none absolute inset-y-0 right-3 flex items-center justify-center min-w-8 text-[11px] font-semibold text-pink-500 dark:text-pink-400">
                                    </div>
                                </div>
                            </div>
                            <div class="grid grid-cols-3 gap-2">
                                <input id="wompi-card-month" type="text" inputmode="numeric" autocomplete="cc-exp-month"
                                    maxlength="2"
                                    class="px-3.5 py-2.5 bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 placeholder:text-slate-300 focus:outline-none focus:ring-2 focus:ring-pink-300 focus:border-pink-300"
                                    placeholder="MM">
                                <input id="wompi-card-year" type="text" inputmode="numeric" autocomplete="cc-exp-year"
                                    maxlength="2"
                                    class="px-3.5 py-2.5 bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 placeholder:text-slate-300 focus:outline-none focus:ring-2 focus:ring-pink-300 focus:border-pink-300"
                                    placeholder="AA">
                                <input id="wompi-card-cvc" type="password" inputmode="numeric" autocomplete="cc-csc"
                                    maxlength="4"
                                    class="px-3.5 py-2.5 bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 placeholder:text-slate-300 focus:outline-none focus:ring-2 focus:ring-pink-300 focus:border-pink-300"
                                    placeholder="CVC">
                            </div>
                            <select id="wompi-card-installments"
                                class="w-full px-3.5 py-2.5 bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 focus:outline-none focus:ring-2 focus:ring-pink-300 focus:border-pink-300">
                                <option value="1">1 cuota</option>
                                <option value="2">2 cuotas</option>
                                <option value="3">3 cuotas</option>
                                <option value="6">6 cuotas</option>
                                <option value="12">12 cuotas</option>
                            </select>
                            <label
                                class="flex items-start gap-2 text-[10px] text-slate-500 dark:text-slate-400 leading-snug py-1">
                                <input id="wompi-acceptance-check" type="checkbox" class="mt-0.5">
                                <span>Acepto los <a id="wompi-terms-link" href="#" target="_blank"
                                        class="text-pink-500 font-bold underline">terminos de Wompi</a> y la <a
                                        id="wompi-data-link" href="#" target="_blank"
                                        class="text-pink-500 font-bold underline">autorizacion de datos
                                        personales</a>.</span>
                            </label>
                            <button type="submit" id="wompi-direct-pay-btn" disabled
                                class="w-full py-3.5 bg-gradient-to-r from-pink-500 via-fuchsia-500 to-purple-500 hover:from-pink-600 hover:via-fuchsia-600 hover:to-purple-600 text-white font-black rounded-2xl flex items-center justify-center gap-2 shadow-lg shadow-pink-200/60 dark:shadow-pink-950/30 hover:scale-[1.01] active:scale-[0.99] transition opacity-50 cursor-not-allowed">
                                <i class="fas fa-lock text-sm"></i> Pagar ahora
                            </button>
                            <!-- El widget de Wompi se inyecta aquí -->
                        </form>
                        <p id="wompi-direct-status" class="text-center text-xs text-gray-400 min-h-4"></p>
                        <div id="pse-inline-switch" class="mt-2">
                            <button type="button" onclick="togglePseForm()" id="btn-pse-toggle"
                                class="hidden w-full py-3.5 bg-gradient-to-r from-emerald-500 to-teal-600 hover:from-emerald-600 hover:to-teal-700 text-white font-black rounded-2xl flex items-center justify-center gap-2 shadow-lg shadow-emerald-200/50 dark:shadow-emerald-950/30 hover:scale-[1.01] active:scale-[0.99] transition">
                                <i class="fas fa-building-columns text-sm"></i> Pagar con PSE
                            </button>
                            <form id="wompi-pse-form"
                                class="hidden mt-3 space-y-2.5 bg-emerald-50/70 dark:bg-slate-800/60 border border-emerald-100 dark:border-slate-700 rounded-2xl p-3"
                                autocomplete="off">
                                <select id="pse-bank"
                                    class="w-full px-3.5 py-2.5 bg-white dark:bg-slate-900 border border-emerald-100 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 focus:outline-none focus:ring-2 focus:ring-emerald-300">
                                    <option value="">Selecciona tu banco</option>
                                </select>
                                <div class="grid grid-cols-2 gap-2">
                                    <select id="pse-user-type"
                                        class="px-3.5 py-2.5 bg-white dark:bg-slate-900 border border-emerald-100 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 focus:outline-none focus:ring-2 focus:ring-emerald-300">
                                        <option value="0">Persona natural</option>
                                        <option value="1">Empresa</option>
                                    </select>
                                    <select id="pse-legal-id-type"
                                        class="px-3.5 py-2.5 bg-white dark:bg-slate-900 border border-emerald-100 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 focus:outline-none focus:ring-2 focus:ring-emerald-300">
                                        <option value="CC">CC</option>
                                        <option value="CE">CE</option>
                                        <option value="NIT">NIT</option>
                                    </select>
                                </div>
                                <input id="pse-legal-id" type="text" inputmode="numeric"
                                    class="w-full px-3.5 py-2.5 bg-white dark:bg-slate-900 border border-emerald-100 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 placeholder:text-slate-300 focus:outline-none focus:ring-2 focus:ring-emerald-300"
                                    placeholder="Numero de documento">
                                <input id="pse-full-name" type="text"
                                    class="w-full px-3.5 py-2.5 bg-white dark:bg-slate-900 border border-emerald-100 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 placeholder:text-slate-300 focus:outline-none focus:ring-2 focus:ring-emerald-300"
                                    placeholder="Nombre completo">
                                <input id="pse-phone" type="tel" inputmode="tel"
                                    class="w-full px-3.5 py-2.5 bg-white dark:bg-slate-900 border border-emerald-100 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-100 placeholder:text-slate-300 focus:outline-none focus:ring-2 focus:ring-emerald-300"
                                    placeholder="Telefono, ej: 573001234567">
                                <label
                                    class="flex items-start gap-2 text-[10px] text-slate-500 dark:text-slate-400 leading-snug py-1">
                                    <input id="pse-acceptance-check" type="checkbox" class="mt-0.5">
                                    <span>Acepto los <a id="pse-terms-link" href="#" target="_blank"
                                            class="text-emerald-600 font-bold underline">terminos de Wompi</a> y la <a
                                            id="pse-data-link" href="#" target="_blank"
                                            class="text-emerald-600 font-bold underline">autorizacion de datos
                                            personales</a>.</span>
                                </label>
                                <button type="submit" id="pse-pay-btn" disabled
                                    class="w-full py-3.5 bg-gradient-to-r from-emerald-500 to-teal-600 hover:from-emerald-600 hover:to-teal-700 text-white font-black rounded-2xl flex items-center justify-center gap-2 shadow-lg opacity-50 cursor-not-allowed">
                                    <i class="fas fa-building-columns text-sm"></i> Continuar a mi banco
                                </button>
                                <p id="pse-status" class="text-center text-xs text-slate-500 min-h-4"></p>
                            </form>
                        </div>
                        <p class="text-center text-[11px] text-gray-400 dark:text-slate-600 mt-3">
                            <i class="fas fa-shield-alt text-green-400 mr-1"></i>Procesado por Wompi · Bancolombia Group
                        </p>
                    </div>
                </div>

            </div>
        </div>
    </div>

    <div id="wompi-alt-link-modal"
        class="hidden fixed inset-0 z-[70] flex items-center justify-center bg-black/55 backdrop-blur-sm p-4">
        <div
            class="w-full max-w-md rounded-[28px] bg-white dark:bg-slate-900 border border-orange-100 dark:border-slate-700 shadow-2xl overflow-hidden">
            <div class="px-5 py-4 bg-gradient-to-r from-amber-400 to-orange-500 text-white">
                <div class="flex items-start justify-between gap-4">
                    <div>
                        <p class="text-[11px] font-black uppercase tracking-[0.25em] text-white/80">Pago alternativo
                        </p>
                        <h3 class="text-lg font-black mt-1">Link externo de Wompi</h3>
                    </div>
                    <button type="button" onclick="cerrarModalWompiAlternativo()"
                        class="w-9 h-9 rounded-full bg-white/20 hover:bg-white/30 transition flex items-center justify-center">
                        <i class="fas fa-times"></i>
                    </button>
                </div>
            </div>
            <div class="p-5 text-sm text-slate-600 dark:text-slate-300 space-y-3 leading-relaxed">
                <p>Este enlace fue generado automaticamente. Este enlace puede pagar con tarjetas y otros medios de
                    pago.</p>
                <p>Si fallo el otro medio de pago, intente con este. Pero debe tener en cuenta que este link no tiene
                    un pago exigido y se activara manual en soporte.</p>
                <p>Solo debe presentar el desprendible o captura del pago realizado y el plan que compro. Soporte le
                    hara la activacion manual.</p>
                <p>Esto se hace porque suele fallar la transaccion directa por la web, pero este enlace suele fallar
                    menos.</p>
                <p>Recuerde que debe pagar el precio que se ve en la web: <span id="wompi-alt-current-price"
                        class="font-black text-orange-500">$0.00 USD</span>.</p>
                <p>Los enlaces suelen tener un incremento de precio, quizas 0,40 USD o 0,70 USD, pero es por el
                    enlace. Puedes pedir unos dias mas :)</p>
            </div>
            <div class="px-5 pb-5 flex flex-col sm:flex-row gap-2 sm:justify-end">
                <button type="button" onclick="cerrarModalWompiAlternativo()"
                    class="px-4 py-3 rounded-2xl border border-slate-200 dark:border-slate-700 text-slate-500 dark:text-slate-300 font-bold">
                    Volver
                </button>
                <a href="https://checkout.wompi.co/l/zh9gbj" target="_blank" rel="noopener noreferrer"
                    onclick="cerrarModalWompiAlternativo()"
                    class="px-4 py-3 rounded-2xl bg-gradient-to-r from-amber-400 to-orange-500 text-white font-black text-center shadow-lg shadow-orange-200/60">
                    Abrir enlace de pago
                </a>
            </div>
        </div>
    </div>

    <!-- UI block -->
    <div id="title-details-modal"
        class="hidden fixed inset-0 z-[65] flex items-center justify-center p-4 modal-overlay-custom">
        <div
            class="relative w-full max-w-3xl overflow-hidden rounded-[30px] border-2 border-pink-100 dark:border-pink-900/30 bg-white dark:bg-slate-900 shadow-2xl">
            <button type="button" data-close-title-modal
                class="absolute top-4 right-4 z-20 w-10 h-10 rounded-2xl bg-white/85 dark:bg-slate-800/90 border border-pink-100 dark:border-pink-900/30 text-pink-500 dark:text-pink-300 flex items-center justify-center backdrop-blur-sm">
                <i class="fas fa-times"></i>
            </button>
            <div id="title-modal-body"></div>
        </div>
    </div>

    <div id="modal-pago" class="hidden fixed inset-0 z-[60] flex items-center justify-center p-4"
        style="background: rgba(0,0,0,0.6); backdrop-filter: blur(8px);">
        <div class="glass-card p-10 max-w-sm w-full text-center" style="border-radius:28px;">
            <div id="modal-pago-icon-box"
                class="w-16 h-16 bg-pink-50 dark:bg-pink-900/20 rounded-3xl mx-auto mb-4 flex items-center justify-center">
                <i id="modal-pago-icon" class="fas fa-spinner fa-spin text-pink-500 text-3xl"></i>
            </div>
            <h3 class="font-rounded text-xl font-extrabold text-gray-700 dark:text-slate-200 mb-2"
                id="modal-pago-titulo">Procesando pago...
            </h3>
            <p class="text-gray-400 dark:text-slate-400 text-sm" id="modal-pago-msg">Un momento...</p>
            <div id="modal-pago-spinner" class="mt-6 flex justify-center">
                <div class="w-8 h-8 border-4 border-pink-200 border-t-pink-500 rounded-full animate-spin"></div>
            </div>
        </div>
    </div>

    <div id="modal-user-warning"
        class="hidden fixed inset-0 z-[68] flex items-center justify-center p-4 bg-black/45 backdrop-blur-[6px]">
        <div
            class="max-w-sm w-full p-6 text-center rounded-[30px] border-2 border-amber-200/80 dark:border-amber-900/30 bg-[#fff7ed] dark:bg-[#3b1d12] shadow-2xl">
            <img src="/public/Liza 3.0 Corta.png" alt="Liza advertencia"
                class="w-20 h-20 object-contain mx-auto mb-3 drop-shadow-md">
            <h3 class="font-rounded text-xl font-extrabold text-gray-700 dark:text-slate-100 mb-2">
                Advertencia
            </h3>
            <p id="modal-user-warning-msg" class="text-sm text-gray-500 dark:text-slate-300 leading-relaxed">
                Hemos detectado actividad inusual en tu cuenta. Tu acceso sigue activo por ahora. Si necesitas mas informacion, contacta a soporte.
            </p>
            <p class="mt-3 text-[11px] font-bold text-amber-600 dark:text-amber-300/80">
                El motivo detallado sera informado por soporte si lo solicitas.
            </p>
            <button type="button" onclick="cerrarModalUserWarning()"
                class="mt-5 inline-flex items-center justify-center px-8 py-3 rounded-2xl bg-gradient-to-r from-amber-400 to-orange-500 text-white font-black shadow-lg shadow-orange-200/40">
                OK
            </button>
        </div>
    </div>


    <!-- UI block -->
    <div id="mfa-signin-modal"
        class="hidden fixed inset-0 z-[70] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm">
        <div class="glass-card p-6 max-w-sm w-full rounded-[30px] shadow-2xl">
            <div class="text-center mb-4">
                <div
                    class="w-14 h-14 bg-purple-100 dark:bg-purple-900/30 rounded-3xl mx-auto mb-3 flex items-center justify-center">
                    <i class="fas fa-shield-keyhole text-purple-500 text-2xl"></i>
                </div>
                <h3 id="mfa-modal-title" class="font-rounded text-xl font-bold text-gray-700 dark:text-slate-100">
                    Verificacion en 2 pasos</h3>
                <p id="mfa-modal-copy" class="text-sm text-gray-400 dark:text-slate-500 mt-2">
                    Ingresa el codigo de tu app autenticadora para continuar.
                </p>
            </div>
            <div class="kawaii-input-wrapper">
                <input type="text" id="mfa-modal-code" inputmode="numeric" maxlength="6"
                    placeholder="Codigo de 6 digitos"
                    class="w-full px-4 py-3 bg-white dark:bg-slate-800 rounded-xl kawaii-input dark:text-slate-200 text-sm">
            </div>
            <div id="mfa-modal-feedback"
                class="mt-3 min-h-5 text-xs font-bold text-center text-pink-500 dark:text-pink-400"></div>
            <div class="flex gap-2 mt-4">
                <button onclick="submitMfaChallenge()" type="button"
                    class="flex-1 py-3 bg-purple-600 text-white font-bold rounded-2xl hover:bg-purple-700 transition text-sm">
                    Verificar
                </button>
                <button onclick="cancelMfaChallenge()" type="button"
                    class="px-4 py-3 bg-white dark:bg-slate-800 border-2 border-purple-100 dark:border-purple-900/30 text-purple-500 dark:text-purple-300 font-bold rounded-2xl text-sm">
                    Cancelar
                </button>
            </div>
        </div>
    </div>

    <div id="mfa-setup-modal"
        class="hidden fixed inset-0 z-[70] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm">
        <div id="mfa-setup-dialog"
            class="glass-card p-5 sm:p-6 max-w-lg w-full rounded-[30px] shadow-2xl max-h-[90vh] overflow-y-auto">
            <div class="flex items-start justify-between gap-4 mb-4">
                <div>
                    <h3 class="font-rounded text-2xl font-bold text-gray-700 dark:text-slate-100">Activar verificacion
                        en 2 pasos</h3>
                    <p class="text-sm text-gray-600 dark:text-slate-400 mt-1">
                        Escanea el QR con Google Authenticator o usa la clave manual.
                    </p>
                </div>
                <button onclick="cancelarMfaSetup()" type="button"
                    class="w-10 h-10 rounded-full bg-white dark:bg-slate-800 border border-purple-100 dark:border-purple-900/30 text-purple-500 dark:text-purple-300 flex items-center justify-center">
                    <i class="fas fa-xmark"></i>
                </button>
            </div>

            <div class="space-y-3">
                <div class="kawaii-input-wrapper max-w-md">
                    <input type="password" id="mfa-current-password" placeholder="Tu contrasena actual"
                        class="w-full px-4 py-3 bg-white dark:bg-slate-800 rounded-xl kawaii-input text-gray-700 placeholder:text-slate-400 dark:text-slate-200 text-sm">
                </div>
                <div class="flex flex-wrap items-center gap-2">
                    <button onclick="generarMfaQr()" type="button"
                        class="px-5 py-2.5 bg-purple-600 text-white font-bold rounded-xl hover:bg-purple-700 transition text-sm">
                        Generar QR
                    </button>
                    <button onclick="cancelarMfaSetup()" type="button"
                        class="px-4 py-2.5 bg-white dark:bg-slate-800 border-2 border-purple-100 dark:border-purple-900/30 text-purple-500 dark:text-purple-300 font-bold rounded-xl text-sm">
                        Cancelar
                    </button>
                </div>
            </div>

            <div id="mfa-setup-body" class="hidden mt-5">
                <div class="grid grid-cols-1 md:grid-cols-2 gap-4 items-start">
                    <div
                        class="bg-white dark:bg-slate-800 rounded-3xl p-4 border border-purple-100 dark:border-purple-900/30">
                        <img id="mfa-qr-image" alt="QR MFA"
                            class="mx-auto rounded-2xl bg-white w-[220px] h-[220px] object-contain hidden">
                        <p id="mfa-qr-label"
                            class="mt-3 text-xs text-center font-bold text-purple-500 dark:text-purple-300 break-all">
                        </p>
                    </div>
                    <div class="space-y-4">
                        <div
                            class="p-4 bg-white dark:bg-slate-800 rounded-3xl border border-purple-100 dark:border-purple-900/30">
                            <p
                                class="text-[11px] uppercase tracking-wider font-bold text-gray-500 dark:text-slate-500 mb-2">
                                Clave manual</p>
                            <code id="mfa-secret-key"
                                class="block text-sm font-bold text-purple-500 dark:text-purple-300 break-all">---</code>
                            <p class="mt-3 text-xs text-gray-600 dark:text-slate-500 leading-relaxed">
                                Esta clave es la alternativa manual al QR. No es un codigo de respaldo.
                            </p>
                        </div>
                        <div>
                            <p
                                class="text-[11px] uppercase tracking-wider font-bold text-gray-500 dark:text-slate-500 mb-2">
                                Codigo de verificacion</p>
                            <div id="mfa-otp-group" class="flex items-center gap-2">
                                <input type="text" inputmode="numeric" maxlength="1" class="mfa-otp-input" data-mfa-otp>
                                <input type="text" inputmode="numeric" maxlength="1" class="mfa-otp-input" data-mfa-otp>
                                <input type="text" inputmode="numeric" maxlength="1" class="mfa-otp-input" data-mfa-otp>
                                <input type="text" inputmode="numeric" maxlength="1" class="mfa-otp-input" data-mfa-otp>
                                <input type="text" inputmode="numeric" maxlength="1" class="mfa-otp-input" data-mfa-otp>
                                <input type="text" inputmode="numeric" maxlength="1" class="mfa-otp-input" data-mfa-otp>
                            </div>
                        </div>
                        <button onclick="confirmarMfaSetup()" type="button"
                            class="w-full py-3 bg-pink-500 text-white font-bold rounded-2xl kawaii-btn text-sm">
                            Confirmar activacion
                        </button>
                    </div>
                </div>
            </div>
            <div id="mfa-feedback"
                class="mt-4 min-h-5 text-sm font-bold text-center text-purple-500 dark:text-purple-300"></div>
        </div>
    </div>

    <script src="script.js?v=2.0" type="module"></script>

    <script>
        function cargarScriptWompi() {
            return new Promise((resolve, reject) => {
                const src = 'https://checkout.wompi.co/widget.js';

                const existingScript = document.querySelector(`script[src="${src}"]`);
                if (existingScript && typeof WidgetCheckout !== 'undefined') {
                    resolve();
                    return;
                }

                // Limpiar scripts de Wompi previos para evitar conflictos
                document.querySelectorAll('script').forEach(s => {
                    if (s.src && s.src.includes('wompi.co/widget.js')) {
                        s.remove();
                    }
                });

                if (existingScript) {
                    window.WidgetCheckout = undefined;
                }

                const script = document.createElement('script');
                script.src = src;
                script.onload = () => resolve();
                script.onerror = (err) => reject(new Error('No se pudo cargar el script de Wompi'));
                document.head.appendChild(script);
            });
        }
        const PRECIOS_BASE = { basic: 2.45, plus: 4.45, pro: 7.45 };
        const PLANES_NOMBRES = { basic: 'Premium Básico', plus: 'Premium Plus+', pro: 'Premium Pro MAX' };
        const PLANES_ACTIVOS = Object.keys(PRECIOS_BASE);
        let mesesSeleccionados = 1;
        let _modalPlan = null;
        let _wompiParams = null;
        let _wompiCheckoutUrl = null;
        let _paypalRendered = false;
        let _modalPlanType = 'plan'; // 'plan' o 'credits'
        let _modalCreditsAmount = 2;
        window.seleccionarMeses = function (n) {
            mesesSeleccionados = n;
            document.querySelectorAll('.mes-btn').forEach(b => {
                if (b.id === 'btn-mes-3') { b.classList.remove('activo'); return; }
                b.classList.remove('activo', 'bg-pink-400', 'text-white', 'border-pink-400');
                b.classList.add('border-pink-100', 'text-pink-400');
            });
            const btn = document.getElementById('btn-mes-' + n);
            if (btn) {
                btn.classList.add('activo');
                if (n !== 3) {
                    btn.classList.add('bg-pink-400', 'text-white', 'border-pink-400');
                    btn.classList.remove('border-pink-100', 'text-pink-400');
                }
            }
            Object.entries(PRECIOS_BASE).forEach(([plan, base]) => {
                const total = (base * n).toFixed(2);
                const preEl = document.getElementById('precio-' + plan);
                const lblEl = document.getElementById('label-' + plan);
                const durEl = document.getElementById('duration-' + plan);
                if (preEl) preEl.textContent = '$' + total;
                if (lblEl) lblEl.textContent = n === 1 ? ' / mes' : ' / ' + n + ' meses ($' + base.toFixed(2) + '/mes)';
                if (durEl) {
                    if (plan === 'pro' && n === 3) {
                        durEl.textContent = '90 Días + 15 Días de Regalo';
                    } else {
                        const dias = n * 30;
                        durEl.textContent = dias + (plan === 'basic' ? ' Días de Acceso' : ' Días Premium');
                    }
                }
            });
        };
        window.abrirModalCreditos = function () {
            const m = document.getElementById('modal-comprar-creditos');
            if (m) m.classList.remove('hidden');
        };
        window.cerrarModalCreditos = function () {
            const m = document.getElementById('modal-comprar-creditos');
            if (m) m.classList.add('hidden');
        };
        window.abrirModalPagoCreditos = function () {
            const amtInput = document.getElementById('input-creditos');
            const cant = parseInt(amtInput?.value) || 2;
            if (cant < 2) { alert('El mínimo de compra son 2 créditos.'); if (amtInput) amtInput.value = 2; return; }
            window.cerrarModalCreditos();
            window.abrirModalPago('credits', true, cant);
        };
        window.procesarCompraCreditos = async function () {
            const auth = window._plAuth;
            const user = auth ? auth.currentUser : null;
            if (!user) { alert('Debes iniciar sesión para comprar créditos.'); return; }
            const amtInput = document.getElementById('input-creditos');
            const cant = parseInt(amtInput?.value) || 2;
            if (cant < 2) { alert('El mínimo de compra son 2 créditos.'); if (amtInput) amtInput.value = 2; return; }
            window.cerrarModalCreditos();
            const modal = document.getElementById('modal-pago');
            const modalTit = document.getElementById('modal-pago-titulo');
            const modalMsg = document.getElementById('modal-pago-msg');
            if (modal) modal.classList.remove('hidden');
            if (modalTit) modalTit.textContent = 'Iniciando recarga de ' + cant + ' Créditos...';
            if (modalMsg) modalMsg.textContent = 'Creando orden segura en PayPal...';
            try {
                const res = await fetch('/api/paypal/create-order', {
                    method: 'POST', headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify({ type: 'credits', amount: cant, userId: user.uid })
                });
                const json = await res.json();
                if (json.error || !json.orderId) throw new Error(json.error || 'No se pudo crear la orden');
                if (modalMsg) modalMsg.textContent = 'Redirigiendo a PayPal...';
                sessionStorage.setItem('pp_order', json.orderId);
                sessionStorage.setItem('pp_plan', 'credits');
                sessionStorage.setItem('pp_meses', cant);
                window.location.href = json.approveUrl;
            } catch (e) {
                if (modal) modal.classList.add('hidden');
                alert('Error al iniciar compra de créditos: ' + e.message);
            }
        };
        window.procesarCompraCreditosWompi = async function () {
            const auth = window._plAuth;
            const user = auth ? auth.currentUser : null;
            if (!user) { alert('Debes iniciar sesión para comprar créditos.'); return; }
            const amtInput = document.getElementById('input-creditos');
            const cant = parseInt(amtInput?.value) || 2;
            if (cant < 2) { alert('El mínimo de compra son 2 créditos.'); if (amtInput) amtInput.value = 2; return; }
            window.cerrarModalCreditos();
            const modal = document.getElementById('modal-pago');
            const modalTit = document.getElementById('modal-pago-titulo');
            const modalMsg = document.getElementById('modal-pago-msg');
            if (modal) modal.classList.remove('hidden');
            if (modalTit) modalTit.textContent = 'Iniciando recarga con Wompi...';
            if (modalMsg) modalMsg.textContent = 'Preparando pasarela segura...';
            try {
                const res = await fetch('/api/wompi/create-checkout', {
                    method: 'POST', headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify({ type: 'credits', amount: cant, userId: user.uid })
                });
                const json = await res.json();
                if (json.error || !json.checkoutUrl) throw new Error(json.error || 'No se pudo iniciar Wompi');
                if (modalMsg) modalMsg.textContent = 'Redirigiendo a Wompi...';
                window.location.href = json.checkoutUrl;
            } catch (e) {
                if (modal) modal.classList.add('hidden');
                alert('Error al iniciar Wompi: ' + e.message);
            }
        };
        (async function cargarPayPalSDK() {
            try {
                const res = await fetch('/api/paypal/config');
                const { clientId } = await res.json();
                if (!clientId) { console.warn('PAYPAL_CLIENT_ID no configurado en el servidor'); return; }
                const script = document.createElement('script');
                script.src = `https://www.paypal.com/sdk/js?client-id=${clientId}&currency=USD&intent=capture&disable-funding=credit,card`;
                script.setAttribute('data-sdk-integration-source', 'button-factory');
                document.head.appendChild(script);
            } catch (e) {
                console.error('Error cargando SDK PayPal:', e);
            }
        })();
        window.abrirModalPago = async function (planKey, isCredits = false, amount = 2) {
            let intentos = 0;
            while (!window._plAuth && intentos < 20) {
                await new Promise(r => setTimeout(r, 150));
                intentos++;
            }
            const auth = window._plAuth;
            const user = auth ? auth.currentUser : null;
            if (!user) {
                alert('Debes iniciar sesión para comprar.');
                if (window.showSection) window.showSection('account');
                return;
            }

            _wompiParams = null;
            _wompiCheckoutUrl = null;
            _paypalRendered = false;
            const oldWompiFix = document.getElementById('wompi-scroll-fix');
            if (oldWompiFix) oldWompiFix.remove();

            if (isCredits) {
                _modalPlan = 'credits';
                _modalPlanType = 'credits';
                _modalCreditsAmount = amount;

                // Actualizar header del modal
                document.getElementById('modal-plan-titulo').textContent = 'Recarga de ' + amount + ' Créditos';
                document.getElementById('modal-plan-precio').textContent = '$' + amount.toFixed(2);
            } else {
                // Bloqueo plan Pro si ya tiene activo otro plan
                if (window.plUserData) {
                    const currentPlan = window.plUserData.membershipType;
                    const expireDate = window.plUserData.expireDate ? new Date(window.plUserData.expireDate) : null;
                    const hasActivePlan = PLANES_ACTIVOS.includes(currentPlan) && expireDate && expireDate > new Date();
                    if (hasActivePlan && currentPlan !== planKey) {
                        alert('Ya tienes ' + (PLANES_NOMBRES[currentPlan] || 'un plan') + ' activo.\n\nPara cambiar a ' + PLANES_NOMBRES[planKey] + ', contacta a soporte para hacer la migracion sin perder tus dias restantes.');
                        return;
                    }
                }

                _modalPlan = planKey;
                _modalPlanType = 'plan';

                const n = mesesSeleccionados;
                const precio = (PRECIOS_BASE[planKey] * n).toFixed(2);

                // Actualizar header del modal
                document.getElementById('modal-plan-titulo').textContent =
                    PLANES_NOMBRES[planKey] + (n > 1 ? '  ' + n + ' meses' : '');
                document.getElementById('modal-plan-precio').textContent = '$' + precio;
            }

            // Resetear estado de Wompi
            document.getElementById('wompi-widget-trigger').classList.remove('hidden');
            document.getElementById('btn-wompi-widget').classList.remove('hidden');
            document.getElementById('btn-pse-widget').classList.remove('hidden');
            document.getElementById('wompi-widget-loading').classList.add('hidden');
            document.getElementById('wompi-widget-container').classList.add('hidden');
            document.getElementById('wompi-payment-form').reset();
            document.getElementById('wompi-payment-form').classList.remove('hidden');
            document.getElementById('wompi-direct-status').textContent = '';
            const pseForm = document.getElementById('wompi-pse-form');
            if (pseForm) {
                pseForm.reset();
                pseForm.classList.add('hidden');
            }
            const pseStatus = document.getElementById('pse-status');
            if (pseStatus) pseStatus.textContent = '';
            const psePayBtn = document.getElementById('pse-pay-btn');
            if (psePayBtn) {
                psePayBtn.disabled = true;
                psePayBtn.classList.add('opacity-50', 'cursor-not-allowed');
            }

            // Resetear PayPal
            document.getElementById('paypal-button-container-modal').innerHTML = '';
            document.getElementById('paypal-modal-loading').classList.remove('hidden');

            // Mostrar modal
            document.getElementById('modal-pago-unificado').classList.remove('hidden');
            document.body.style.overflow = 'hidden';

            // Cargar botones PayPal
            await _renderPayPalEnModal(_modalPlan, isCredits ? amount : mesesSeleccionados, user.uid, isCredits);
        };

        window.cerrarModalPago = function () {
            document.getElementById('modal-pago-unificado').classList.add('hidden');
            if (typeof cerrarModalWompiAlternativo === 'function') cerrarModalWompiAlternativo();
            document.body.style.overflow = '';
            _modalPlan = null;
            _wompiParams = null;
            _wompiCheckoutUrl = null;
            const oldWompiFix = document.getElementById('wompi-scroll-fix');
            if (oldWompiFix) oldWompiFix.remove();
        };
        window.abrirModalWompiAlternativo = function () {
            const modal = document.getElementById('wompi-alt-link-modal');
            const priceNode = document.getElementById('wompi-alt-current-price');
            const modalPrice = document.getElementById('modal-plan-precio');
            if (priceNode && modalPrice) {
                priceNode.textContent = `${modalPrice.textContent} USD`;
            }
            if (modal) modal.classList.remove('hidden');
        };
        window.cerrarModalWompiAlternativo = function () {
            const modal = document.getElementById('wompi-alt-link-modal');
            if (modal) modal.classList.add('hidden');
        };
        async function _renderPayPalEnModal(planKey, value, userId, isCredits = false) {
            try {
                // Esperar a que el SDK de PayPal cargue
                let tries = 0;
                while (typeof paypal === 'undefined' && tries < 30) {
                    await new Promise(r => setTimeout(r, 200));
                    tries++;
                }
                if (typeof paypal === 'undefined') throw new Error('SDK PayPal no disponible');

                document.getElementById('paypal-modal-loading').classList.add('hidden');

                paypal.Buttons({
                    style: { layout: 'vertical', color: 'blue', shape: 'pill', label: 'pay' },
                    createOrder: async () => {
                        const body = isCredits
                            ? { type: 'credits', amount: value, userId }
                            : { planKey, userId, meses: value };

                        const res = await fetch('/api/paypal/create-order', {
                            method: 'POST',
                            headers: { 'Content-Type': 'application/json' },
                            body: JSON.stringify(body)
                        });
                        const json = await res.json();
                        if (json.error || !json.orderId) throw new Error(json.error || 'No se pudo crear la orden');
                        // Guardar en sessionStorage por si hay redirección
                        sessionStorage.setItem('pp_order', json.orderId);
                        sessionStorage.setItem('pp_plan', planKey);
                        sessionStorage.setItem('pp_meses', value);
                        return json.orderId;
                    },
                    onApprove: async (data) => {
                        cerrarModalPago();
                        const modal = document.getElementById('modal-pago');
                        const modalTit = document.getElementById('modal-pago-titulo');
                        const modalMsg = document.getElementById('modal-pago-msg');
                        if (modal) modal.classList.remove('hidden');
                        if (modalTit) modalTit.textContent = isCredits ? '¡Pago aprobado! Recargando créditos...' : '¡Pago aprobado! Activando plan...';
                        if (modalMsg) modalMsg.textContent = isCredits ? 'Añadiendo créditos a tu cuenta...' : 'Configurando tu membresía...';
                        try {
                            const res = await fetch('/api/paypal/capture-order', {
                                method: 'POST',
                                headers: { 'Content-Type': 'application/json' },
                                body: JSON.stringify({ orderId: data.orderID })
                            });
                            const result = await res.json();
                            if (modal) modal.classList.add('hidden');
                            sessionStorage.removeItem('pp_order');
                            sessionStorage.removeItem('pp_plan');
                            if (result.success) {
                                if (typeof confetti === 'function') confetti({ particleCount: 150, spread: 70, origin: { y: 0.6 } });
                                alert(isCredits
                                    ? ' ¡Créditos recargados!\n\nTu saldo de créditos ha sido actualizado con éxito.'
                                    : ' ¡' + result.message + '\n\nTu membresía ya está activa. ¡Disfruta Primer Latino!');
                                if (window.showSection) window.showSection('account');
                                setTimeout(() => location.reload(), 2000);
                            } else {
                                alert('Error al activar: ' + (result.error || 'Contacta soporte'));
                            }
                        } catch (e) {
                            if (modal) modal.classList.add('hidden');
                            alert('Error procesando pago: ' + e.message);
                        }
                    },
                    onError: (err) => {
                        console.error('PayPal error:', err);
                        alert('Error en el pago con PayPal. Intenta de nuevo o usa Wompi.');
                    },
                    onCancel: () => {
                        sessionStorage.removeItem('pp_order');
                    }
                }).render('#paypal-button-container-modal');

            } catch (e) {
                document.getElementById('paypal-modal-loading').textContent = '️ PayPal no disponible. Usa Wompi.';
                console.error('Error cargando PayPal en modal:', e);
            }
        }
        window.cargarWidgetWompi = async function () {
            if (!_modalPlan) return;

            let intentos = 0;
            while (!window._plAuth && intentos < 20) {
                await new Promise(r => setTimeout(r, 150));
                intentos++;
            }
            const user = window._plAuth?.currentUser;
            if (!user) return;

            // Mostrar loading, ocultar trigger
            document.getElementById('wompi-widget-loading').classList.remove('hidden');

            try {
                const configRes = await fetch('/api/wompi/config');
                const config = await configRes.json();
                if (config.error || !config.publicKey) throw new Error(config.error || 'No se pudo cargar Wompi');

                _wompiParams = { publicKey: config.publicKey, acceptance: config.acceptance, apiBaseUrl: config.apiBaseUrl };
                _wompiCheckoutUrl = null;

                const termsLink = document.getElementById('wompi-terms-link');
                const dataLink = document.getElementById('wompi-data-link');
                if (termsLink && config.acceptance?.permalink) termsLink.href = config.acceptance.permalink;
                if (dataLink && config.acceptance?.personalAuthPermalink) dataLink.href = config.acceptance.personalAuthPermalink;

                document.getElementById('wompi-widget-loading').classList.add('hidden');
                setWompiMethod('card');
                return;

                const body = _modalPlanType === 'credits'
                    ? { type: 'credits', amount: _modalCreditsAmount, userId: user.uid }
                    : { planKey: _modalPlan, userId: user.uid, meses: mesesSeleccionados };

                // Obtener los parámetros firmados del backend
                const res = await fetch('/api/wompi/create-checkout', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify(body)
                });
                const json = await res.json();

                if (json.error || !json.widgetParams) throw new Error(json.error || 'No se pudo iniciar Wompi');

                _wompiParams = json.widgetParams;
                _wompiCheckoutUrl = json.checkoutUrl;

                // Ocultar loading, mostrar contenedor
                document.getElementById('wompi-widget-loading').classList.add('hidden');
                document.getElementById('wompi-widget-container').classList.remove('hidden');

                // Inyectar el widget de Wompi mediante API programática
                const form = document.getElementById('wompi-payment-form');
                form.innerHTML = '';

                // Botón personalizado para abrir Wompi
                const wompiBtn = document.createElement('button');
                wompiBtn.type = 'button';
                wompiBtn.className = 'w-full py-4 bg-gradient-to-r from-blue-600 to-blue-800 hover:from-blue-700 hover:to-blue-900 text-white font-bold rounded-2xl flex items-center justify-center gap-2 shadow-lg';
                wompiBtn.innerHTML = '<i class="fas fa-credit-card text-lg"></i> Abrir Pasarela Wompi';

                wompiBtn.onclick = function () {
                    if (!_wompiParams) return;
                    document.getElementById('modal-pago-unificado').classList.add('hidden');
                    document.body.style.overflow = '';
                    document.documentElement.style.overflow = '';

                    if (_wompiCheckoutUrl) {
                        window.location.href = _wompiCheckoutUrl;
                        return;
                    }

                    if (typeof WidgetCheckout === 'undefined') {
                        if (_wompiCheckoutUrl) window.location.href = _wompiCheckoutUrl;
                        return;
                    }

                    const oldFix = document.getElementById('wompi-scroll-fix');
                    if (oldFix) oldFix.remove();

                    const wompiForcedHeight = Math.max(1250, Math.round(window.innerHeight * 1.7));
                    const bodyFix = document.createElement('style');
                    bodyFix.id = 'wompi-scroll-fix';
                    bodyFix.innerHTML = `
html,
body {
    width: 100% !important;
    min-height: 100dvh !important;
    height: auto !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    position: static !important;
    touch-action: pan-y !important;
    overscroll-behavior-y: contain !important;
    -webkit-overflow-scrolling: touch !important;
}

body {
    padding-bottom: 160px !important;
}

body::after {
    content: "";
    display: block;
    height: 160px;
}

iframe[src*="wompi"],
iframe[src*="checkout"] {
    width: min(430px, calc(100vw - 24px)) !important;
    height: ${wompiForcedHeight}px !important;
    min-height: ${wompiForcedHeight}px !important;
    max-height: none !important;
}
`;
                    document.head.appendChild(bodyFix);

                    const forzarLayoutWompi = () => {
                        const iframes = [...document.querySelectorAll('iframe')].filter((frame) => {
                            const src = frame.getAttribute('src') || '';
                            return src.includes('wompi') || src.includes('checkout');
                        });

                        if (!iframes.length) return false;

                        iframes.forEach((frame) => {
                            frame.style.setProperty('width', 'min(430px, calc(100vw - 24px))', 'important');
                            frame.style.setProperty('height', `${wompiForcedHeight}px`, 'important');
                            frame.style.setProperty('min-height', `${wompiForcedHeight}px`, 'important');
                            frame.style.setProperty('max-height', 'none', 'important');
                            frame.style.setProperty('display', 'block', 'important');
                            frame.style.setProperty('margin', '0 auto', 'important');

                            let node = frame.parentElement;
                            let depth = 0;
                            while (node && node !== document.body && depth < 8) {
                                const isFixedOverlay = window.getComputedStyle(node).position === 'fixed';
                                node.style.setProperty('height', isFixedOverlay ? '100dvh' : `${wompiForcedHeight}px`, 'important');
                                node.style.setProperty('max-height', 'none', 'important');
                                node.style.setProperty('overflow-y', 'auto', 'important');
                                node.style.setProperty('overflow-x', 'hidden', 'important');
                                node.style.setProperty('-webkit-overflow-scrolling', 'touch', 'important');
                                if (isFixedOverlay) {
                                    node.style.setProperty('width', '100vw', 'important');
                                    node.style.setProperty('align-items', 'flex-start', 'important');
                                    node.style.setProperty('justify-content', 'center', 'important');
                                    node.style.setProperty('padding', '8px 0 80px', 'important');
                                } else {
                                    node.style.setProperty('width', 'min(460px, 100vw)', 'important');
                                    node.style.setProperty('min-height', `${wompiForcedHeight}px`, 'important');
                                    node.style.setProperty('align-self', 'flex-start', 'important');
                                }
                                node = node.parentElement;
                                depth++;
                            }

                            const overlay = frame.closest('[style*="position: fixed"], [style*="position:fixed"]');
                            if (overlay) {
                                overlay.style.setProperty('width', '100vw', 'important');
                                overlay.style.setProperty('height', '100dvh', 'important');
                                overlay.style.setProperty('align-items', 'flex-start', 'important');
                                overlay.style.setProperty('justify-content', 'center', 'important');
                                overlay.style.setProperty('overflow-y', 'auto', 'important');
                                overlay.style.setProperty('overflow-x', 'hidden', 'important');
                                overlay.style.setProperty('padding', '8px 0 80px', 'important');
                                overlay.style.setProperty('-webkit-overflow-scrolling', 'touch', 'important');
                            }
                        });

                        return true;
                    };

                    const checkout = new WidgetCheckout({
                        currency: _wompiParams.currency,
                        amountInCents: _wompiParams.amountInCents,
                        reference: _wompiParams.reference,
                        publicKey: _wompiParams.publicKey,
                        signature: { integrity: _wompiParams.integritySignature },
                        redirectUrl: _wompiParams.redirectUrl
                    });

                    let wompiLayoutTries = 0;
                    const wompiLayoutInterval = setInterval(() => {
                        wompiLayoutTries++;
                        forzarLayoutWompi();
                        if (wompiLayoutTries > 1200) clearInterval(wompiLayoutInterval);
                    }, 100);

                    checkout.open(function (result) {
                        clearInterval(wompiLayoutInterval);
                        const fix = document.getElementById('wompi-scroll-fix');
                        if (fix) fix.remove();
                        console.log('Wompi result:', result);
                        const transactionId = result?.transaction?.id || result?.data?.transaction?.id || result?.id;

                        if (transactionId) {
                            window.location.href = `${window.location.pathname}?wompi_return=1&id=${encodeURIComponent(transactionId)}`;
                        } else {
                            window.location.reload();
                        }
                    });
                };

                form.appendChild(wompiBtn);

            } catch (e) {
                document.getElementById('wompi-widget-loading').classList.add('hidden');
                document.getElementById('wompi-widget-trigger').classList.remove('hidden');
                alert('Error al iniciar Wompi: ' + e.message);
            }
        };
        async function prepararWompiApi() {
            const configRes = await fetch('/api/wompi/config');
            const config = await configRes.json();
            if (config.error || !config.publicKey) throw new Error(config.error || 'No se pudo cargar Wompi');

            _wompiParams = { publicKey: config.publicKey, acceptance: config.acceptance, apiBaseUrl: config.apiBaseUrl };

            const linkPairs = [
                ['wompi-terms-link', config.acceptance?.permalink],
                ['wompi-data-link', config.acceptance?.personalAuthPermalink],
                ['pse-terms-link', config.acceptance?.permalink],
                ['pse-data-link', config.acceptance?.personalAuthPermalink]
            ];
            linkPairs.forEach(([id, href]) => {
                const el = document.getElementById(id);
                if (el && href) el.href = href;
            });

            return config;
        }

        async function cargarBancosPse() {
            const bankSelect = document.getElementById('pse-bank');
            if (!bankSelect || bankSelect.dataset.loaded === '1') return;

            bankSelect.innerHTML = '<option value="">Cargando bancos...</option>';
            const res = await fetch('/api/wompi/pse/financial-institutions');
            const data = await res.json();
            if (data.error) throw new Error(data.error);

            bankSelect.innerHTML = '<option value="">Selecciona tu banco</option>';
            (data.institutions || []).forEach((bank) => {
                const option = document.createElement('option');
                option.value = bank.financial_institution_code || bank.code;
                option.textContent = bank.financial_institution_name || bank.name;
                bankSelect.appendChild(option);
            });
            bankSelect.dataset.loaded = '1';
        }

        window.togglePseForm = function () {
            const form = document.getElementById('wompi-pse-form');
            if (form) form.classList.toggle('hidden');
        };

        function setWompiMethod(method) {
            const cardForm = document.getElementById('wompi-payment-form');
            const pseForm = document.getElementById('wompi-pse-form');
            const cardButton = document.getElementById('btn-wompi-widget');
            const pseButton = document.getElementById('btn-pse-widget');
            const container = document.getElementById('wompi-widget-container');

            if (container) container.classList.remove('hidden');
            if (cardForm) cardForm.classList.toggle('hidden', method !== 'card');
            if (pseForm) pseForm.classList.toggle('hidden', method !== 'pse');
            if (cardButton) cardButton.classList.toggle('hidden', method === 'card');
            if (pseButton) pseButton.classList.toggle('hidden', method === 'pse');
        }

        function syncWompiCardAcceptanceState() {
            const btn = document.getElementById('wompi-direct-pay-btn');
            const acceptance = document.getElementById('wompi-acceptance-check');
            if (!btn || !acceptance) return;
            btn.disabled = !acceptance.checked;
            btn.classList.toggle('opacity-50', !acceptance.checked);
            btn.classList.toggle('cursor-not-allowed', !acceptance.checked);
        }

        function detectCardBrand(number) {
            const digits = String(number || '').replace(/\D/g, '');
            if (!digits) return null;
            if (/^4/.test(digits)) {
                return { label: 'Visa', logo: 'https://cdn.simpleicons.org/visa/1A1F71' };
            }
            if (/^(5[1-5]|2(?:2[2-9]|[3-6]\d|7[01]|720))/.test(digits)) {
                return { label: 'Mastercard', logo: 'https://cdn.simpleicons.org/mastercard/EB001B' };
            }
            if (/^3[47]/.test(digits)) {
                return { label: 'American Express', logo: 'https://cdn.simpleicons.org/americanexpress/2E77BC' };
            }
            if (/^(30[0-5]|36|38|39)/.test(digits)) {
                return { label: 'Diners Club', logo: 'https://cdn.simpleicons.org/dinersclubinternational/0069AA' };
            }
            if (/^(6011|65|64[4-9])/.test(digits)) {
                return { label: 'Discover', logo: 'https://cdn.simpleicons.org/discover/FF6000' };
            }
            if (/^(5018|5020|5038|56|57|58|6304|6759|676[1-3])/.test(digits)) {
                return { label: 'Maestro', logo: 'https://cdn.simpleicons.org/maestro/009DDD' };
            }
            return { label: 'Tarjeta', logo: '' };
        }

        function updateWompiCardBrand(number) {
            const brandNode = document.getElementById('wompi-card-brand');
            if (!brandNode) return;
            const brand = detectCardBrand(number);
            if (!brand) {
                brandNode.innerHTML = '';
                brandNode.removeAttribute('title');
                return;
            }

            brandNode.title = brand.label;
            brandNode.innerHTML = brand.logo
                ? `<img src="${brand.logo}" alt="${brand.label}" class="h-5 w-auto object-contain">`
                : `<span class="text-[10px] uppercase tracking-wide text-slate-400">${brand.label}</span>`;
        }

        window.cargarPseWompi = async function () {
            const status = document.getElementById('pse-status');
            document.getElementById('wompi-widget-loading').classList.remove('hidden');

            try {
                await prepararWompiApi();
                await cargarBancosPse();
                setWompiMethod('pse');
                const psePayBtn = document.getElementById('pse-pay-btn');
                const pseAccepted = document.getElementById('pse-acceptance-check')?.checked;
                if (psePayBtn) {
                    psePayBtn.disabled = !pseAccepted;
                    psePayBtn.classList.toggle('opacity-50', !pseAccepted);
                    psePayBtn.classList.toggle('cursor-not-allowed', !pseAccepted);
                }
                if (status) status.textContent = '';
            } catch (err) {
                if (status) status.textContent = err.message;
                alert('Error cargando PSE: ' + err.message);
            } finally {
                document.getElementById('wompi-widget-loading').classList.add('hidden');
            }
        };

        document.getElementById('wompi-acceptance-check').addEventListener('change', function () {
            syncWompiCardAcceptanceState();
        });

        function getWompiDirectBody(user, cardToken) {
            const body = _modalPlanType === 'credits'
                ? { type: 'credits', amount: _modalCreditsAmount, userId: user.uid }
                : { planKey: _modalPlan, userId: user.uid, meses: mesesSeleccionados };
            body.cardToken = cardToken;
            body.customerEmail = user.email;
            body.customerName = document.getElementById('wompi-card-holder').value.trim();
            body.installments = document.getElementById('wompi-card-installments').value;
            body.acceptanceToken = _wompiParams?.acceptance?.acceptanceToken;
            body.acceptPersonalAuth = _wompiParams?.acceptance?.acceptPersonalAuth;
            return body;
        }

        async function tokenizeWompiCard() {
            const number = document.getElementById('wompi-card-number').value.replace(/\D/g, '');
            const cvc = document.getElementById('wompi-card-cvc').value.replace(/\D/g, '');
            const expMonth = document.getElementById('wompi-card-month').value.replace(/\D/g, '');
            const expYearRaw = document.getElementById('wompi-card-year').value.replace(/\D/g, '');
            const cardHolder = document.getElementById('wompi-card-holder').value.trim();
            const expYear = expYearRaw;

            if (!cardHolder || number.length < 13 || cvc.length < 3 || !expMonth || !expYear) {
                throw new Error('Completa los datos de la tarjeta.');
            }

            const res = await fetch(`${_wompiParams.apiBaseUrl}/tokens/cards`, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    Authorization: `Bearer ${_wompiParams.publicKey}`
                },
                body: JSON.stringify({ number, cvc, exp_month: expMonth, exp_year: expYear, card_holder: cardHolder })
            });
            const json = await res.json();
            if (!res.ok || !json.data?.id) {
                throw new Error(formatWompiError(json.error));
            }
            return json.data.id;
        }

        function formatWompiError(error) {
            if (!error) return 'No se pudo tokenizar la tarjeta.';
            if (typeof error === 'string') return error;
            if (typeof error.message === 'string') return error.message;
            const messages = error.messages;
            if (Array.isArray(messages)) return messages.join(', ');
            if (messages && typeof messages === 'object') {
                return Object.entries(messages)
                    .map(([field, value]) => `${field}: ${Array.isArray(value) ? value.join(', ') : value}`)
                    .join(' | ');
            }
            return 'No se pudo tokenizar la tarjeta.';
        }

        async function checkWompiDirectTransaction(transactionId) {
            for (let i = 0; i < 12; i++) {
                await new Promise(r => setTimeout(r, 2500));
                const res = await fetch('/api/wompi/check-card-transaction', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify({ transactionId })
                });
                const data = await res.json();
                if (data.success) return data;
                if (!data.pending) throw new Error(data.message || 'La transaccion no fue aprobada.');
            }
            throw new Error('La transaccion sigue pendiente. Se activara con el webhook cuando Wompi confirme.');
        }

        function lanzarConfettiPago() {
            if (typeof confetti !== 'function') return;
            const defaults = { spread: 80, ticks: 90, gravity: 0.9, decay: 0.92, startVelocity: 36 };
            confetti({ ...defaults, particleCount: 90, origin: { x: 0.18, y: 0.75 } });
            confetti({ ...defaults, particleCount: 90, origin: { x: 0.82, y: 0.75 } });
            setTimeout(() => confetti({ particleCount: 120, spread: 100, origin: { y: 0.58 } }), 250);
            setTimeout(() => confetti({ particleCount: 70, spread: 120, origin: { y: 0.7 } }), 700);
        }

        function mostrarPagoExitoso(message, isCredits = false) {
            const checkoutModal = document.getElementById('modal-pago-unificado');
            const modal = document.getElementById('modal-pago');
            const iconBox = document.getElementById('modal-pago-icon-box');
            const icon = document.getElementById('modal-pago-icon');
            const title = document.getElementById('modal-pago-titulo');
            const msg = document.getElementById('modal-pago-msg');
            const spinner = document.getElementById('modal-pago-spinner');

            if (checkoutModal) checkoutModal.classList.add('hidden');
            if (modal) modal.classList.remove('hidden');
            if (iconBox) iconBox.className = 'w-20 h-20 bg-green-50 dark:bg-green-900/20 rounded-3xl mx-auto mb-5 flex items-center justify-center shadow-lg shadow-green-100 dark:shadow-green-950/30';
            if (icon) icon.className = 'fas fa-check text-green-500 text-4xl';
            if (title) title.textContent = isCredits ? 'Creditos recargados' : 'Plan activado';
            if (msg) msg.textContent = message || 'Tu pago fue aprobado correctamente.';
            if (spinner) {
                spinner.className = 'mt-6 flex flex-col items-center gap-3';
                spinner.innerHTML = '<button onclick="location.reload()" class="px-5 py-3 bg-pink-500 hover:bg-pink-600 text-white text-sm font-bold rounded-2xl shadow-md transition">Continuar</button><p class="text-[11px] text-gray-400">Actualizando tu cuenta...</p>';
            }

            lanzarConfettiPago();
            if (window.showSection) window.showSection('account');
            setTimeout(() => location.reload(), 4200);
        }

        document.getElementById('wompi-payment-form').addEventListener('submit', async function (e) {
            e.preventDefault();
            const status = document.getElementById('wompi-direct-status');
            const btn = document.getElementById('wompi-direct-pay-btn');
            const user = window._plAuth?.currentUser;
            if (!user) return alert('Debes iniciar sesion para pagar.');
            if (!document.getElementById('wompi-acceptance-check').checked) return alert('Debes aceptar los terminos de Wompi.');

            try {
                btn.disabled = true;
                btn.classList.add('opacity-60');
                status.textContent = 'Protegiendo tarjeta con Wompi...';
                const cardToken = await tokenizeWompiCard();

                status.textContent = 'Creando transaccion...';
                const res = await fetch('/api/wompi/create-card-transaction', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify(getWompiDirectBody(user, cardToken))
                });
                const data = await res.json();
                if (data.error) throw new Error(data.error);

                if (data.redirectUrl) {
                    sessionStorage.setItem('wompi_tx_pending', data.transactionId);
                    window.location.href = data.redirectUrl;
                    return;
                }

                const finalData = data.success ? data : await checkWompiDirectTransaction(data.transactionId);
                mostrarPagoExitoso(finalData.message, finalData.isCredits);
            } catch (err) {
                status.textContent = err.message;
                alert('Error en Wompi: ' + err.message);
            } finally {
                btn.disabled = false;
                btn.classList.remove('opacity-60');
            }
        });

        function getPseBody(user) {
            const body = _modalPlanType === 'credits'
                ? { type: 'credits', amount: _modalCreditsAmount, userId: user.uid }
                : { planKey: _modalPlan, userId: user.uid, meses: mesesSeleccionados };

            body.customerEmail = user.email;
            body.customerName = document.getElementById('pse-full-name').value.trim();
            body.phoneNumber = document.getElementById('pse-phone').value.trim();
            body.userType = document.getElementById('pse-user-type').value;
            body.legalIdType = document.getElementById('pse-legal-id-type').value;
            body.legalId = document.getElementById('pse-legal-id').value.trim();
            body.financialInstitutionCode = document.getElementById('pse-bank').value;
            body.acceptanceToken = _wompiParams?.acceptance?.acceptanceToken;
            body.acceptPersonalAuth = _wompiParams?.acceptance?.acceptPersonalAuth;
            return body;
        }

        document.getElementById('wompi-pse-form').addEventListener('submit', async function (e) {
            e.preventDefault();
            const status = document.getElementById('pse-status');
            const btn = document.getElementById('pse-pay-btn');
            const user = window._plAuth?.currentUser;
            if (!user) return alert('Debes iniciar sesion para pagar.');
            if (!document.getElementById('pse-acceptance-check').checked) return alert('Debes aceptar los terminos de Wompi.');

            try {
                btn.disabled = true;
                btn.classList.add('opacity-60');
                status.textContent = 'Creando pago PSE...';

                const res = await fetch('/api/wompi/create-pse-transaction', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify(getPseBody(user))
                });
                const data = await res.json();
                if (data.error) throw new Error(data.error);
                if (data.success) {
                    mostrarPagoExitoso(data.message, data.isCredits);
                    return;
                }
                if (!data.redirectUrl) throw new Error('Wompi dejo la transaccion pendiente, pero aun no entrego URL del banco. Revisa el estado en Wompi o intenta de nuevo.');

                sessionStorage.setItem('wompi_tx_pending', data.transactionId);
                status.textContent = 'Redirigiendo a tu banco...';
                window.location.href = data.redirectUrl;
            } catch (err) {
                status.textContent = err.message;
                alert('Error en PSE: ' + err.message);
            } finally {
                btn.disabled = false;
                btn.classList.remove('opacity-60');
            }
        });

        document.getElementById('pse-acceptance-check').addEventListener('change', function () {
            const btn = document.getElementById('pse-pay-btn');
            if (!btn) return;
            btn.disabled = !this.checked;
            btn.classList.toggle('opacity-50', !this.checked);
            btn.classList.toggle('cursor-not-allowed', !this.checked);
        });

        syncWompiCardAcceptanceState();

        document.getElementById('wompi-card-number').addEventListener('input', function () {
            this.value = this.value.replace(/\D/g, '').replace(/(.{4})/g, '$1 ').trim().slice(0, 19);
            updateWompiCardBrand(this.value);
        });

        document.getElementById('modal-pago-unificado').addEventListener('click', function (e) {
            if (e.target === this) cerrarModalPago();
        });
        document.getElementById('wompi-alt-link-modal').addEventListener('click', function (e) {
            if (e.target === this) cerrarModalWompiAlternativo();
        });
        window.iniciarPago = function (p) { abrirModalPago(p); };
        window.iniciarPagoWompi = function (p) { abrirModalPago(p); };
        window.iniciarPagoMP = function () { alert('Mercado Pago ya no está disponible. Usa PayPal o Wompi.'); };
        (async function verificarRetornoPayPal() {
            const params = new URLSearchParams(window.location.search);
            const token = params.get('token');
            const orderId = sessionStorage.getItem('pp_order');

            if (params.get('pp_cancel')) {
                window.history.replaceState({}, '', window.location.pathname);
                return;
            }
            if (!token || !orderId || token !== orderId) return;

            sessionStorage.removeItem('pp_order');
            sessionStorage.removeItem('pp_plan');
            window.history.replaceState({}, '', window.location.pathname);

            const modal = document.getElementById('modal-pago');
            const modalTit = document.getElementById('modal-pago-titulo');
            const modalMsg = document.getElementById('modal-pago-msg');
            if (modal) {
                modal.classList.remove('hidden');
                if (modalTit) modalTit.textContent = '¡Pago aprobado! Activando plan...';
                if (modalMsg) modalMsg.textContent = 'Configurando tu membresía, un momento...';
            }

            try {
                const res = await fetch('/api/paypal/capture-order', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify({ orderId })
                });
                const data = await res.json();
                if (modal) modal.classList.add('hidden');

                if (data.success) {
                    if (typeof confetti === 'function') confetti({ particleCount: 150, spread: 70, origin: { y: 0.6 } });
                    if (data.isCredits) {
                        alert(' ' + data.message);
                    } else {
                        alert(' ¡' + data.message + '\n\nTu membresía ya está activa. ¡Disfruta Primer Latino!');
                    }
                    if (window.showSection) window.showSection('account');
                    setTimeout(() => location.reload(), 2000);
                } else {
                    alert('Error al activar: ' + (data.error || 'Contacta soporte'));
                }
            } catch (e) {
                if (modal) modal.classList.add('hidden');
                alert('Error procesando pago: ' + e.message + '\nContacta soporte con tu ID de orden: ' + orderId);
            }
        })();
        (async function verificarRetornoWompi() {
            const params = new URLSearchParams(window.location.search);
            const wompiReturn = params.get('wompi_return');
            const transactionId = params.get('id');

            if (!wompiReturn || !transactionId) return;

            window.history.replaceState({}, '', window.location.pathname);

            const modal = document.getElementById('modal-pago');
            const modalTit = document.getElementById('modal-pago-titulo');
            const modalMsg = document.getElementById('modal-pago-msg');
            if (modal) {
                modal.classList.remove('hidden');
                if (modalTit) modalTit.textContent = '¡Pago Wompi procesado! Verificando...';
                if (modalMsg) modalMsg.textContent = 'Confirmando tu transacción con Wompi, un momento...';
            }

            try {
                const res = await fetch('/api/wompi/capture-transaction', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify({ transactionId })
                });
                const data = await res.json();
                if (modal) modal.classList.add('hidden');

                if (data.success) {
                    if (typeof confetti === 'function') confetti({ particleCount: 150, spread: 70, origin: { y: 0.6 } });
                    if (data.isCredits) {
                        alert(' ' + data.message);
                    } else {
                        alert(' ¡' + data.message + '\n\nTu membresía ya está activa. ¡Disfruta Primer Latino!');
                    }
                    if (window.showSection) window.showSection('account');
                    setTimeout(() => location.reload(), 2000);
                } else {
                    alert('Error al verificar transacción: ' + (data.error || 'Contacta soporte'));
                }
            } catch (e) {
                if (modal) modal.classList.add('hidden');
                alert('Error procesando pago Wompi: ' + e.message + '\nContacta soporte con tu ID de transacción: ' + transactionId);
            }
        })();
    </script>


    <!-- UI block -->
    <script type="text/javascript">
        var Tawk_API = Tawk_API || {}, Tawk_LoadStart = new Date();

        // Esconder el widget flotante apenas cargue para que no empiece visible en la web
        Tawk_API.onLoad = function () {
            Tawk_API.hideWidget();
        };

        (function () {
            var s1 = document.createElement("script"), s0 = document.getElementsByTagName("script")[0];
            s1.async = true;
            s1.src = 'https://embed.tawk.to/696072131ed061197ff3ddf6/1jegbr7cb';
            s1.charset = 'UTF-8';
            s1.setAttribute('crossorigin', '*');
            s0.parentNode.insertBefore(s1, s0);
        })();
    </script>

    <!-- UI block -->
    <div id="modal-promo-pro"
        class="hidden fixed inset-0 z-[60] flex items-center justify-center p-4 modal-overlay-custom">
        <div class="p-8 max-w-sm w-full text-center relative glass-card rounded-[40px] shadow-2xl">
            <div class="text-center mb-6">
                <div
                    class="w-16 h-16 bg-pink-100 dark:bg-pink-900/40 rounded-full mx-auto mb-4 flex items-center justify-center">
                    <i class="fas fa-bullhorn text-pink-500 text-3xl animate-bounce"></i>
                </div>
                <h3 class="font-rounded text-2xl font-black text-gray-800 dark:text-white mb-2">
                    ¡Aviso Importante!
                </h3>
                <p class="text-gray-500 dark:text-slate-400 text-sm">
                    Tenemos un comunicado oficial sobre la actualización del servicio Primer Latino. Por favor, tómate
                    un momento para leerlo.
                </p>
            </div>

            <div class="flex flex-col gap-3">
                <button onclick="leerComunicado()"
                    class="w-full py-4 bg-gradient-to-r from-purple-600 to-pink-600 text-white font-black rounded-2xl shadow-lg hover:scale-105 active:scale-95 transition-all text-base uppercase tracking-wider flex items-center justify-center gap-2">
                    <i class="fas fa-book-open"></i> Leer Comunicado
                </button>
                <button onclick="cerrarPromo()"
                    class="w-full py-3 bg-gray-100 dark:bg-slate-800 text-gray-600 dark:text-slate-300 font-bold rounded-2xl hover:bg-gray-200 dark:hover:bg-slate-700 transition-all text-sm shadow-sm">
                    Cerrar
                </button>
            </div>
        </div>
    </div>

    <script>
        const PROMO_MODAL_ENABLED = false;

        // Mostrar modal promo al cargar
        window.addEventListener('load', () => {
            if (!PROMO_MODAL_ENABLED) return;
            setTimeout(() => {
                const modal = document.getElementById('modal-promo-pro');
                if (modal) modal.classList.remove('hidden');
            }, 800);
        });

        window.cerrarPromo = function () {
            const modal = document.getElementById('modal-promo-pro');

            // Ocultar modal al instante
            if (modal) {
                modal.classList.add('hidden');
            }
        };

        window.leerComunicado = function () {
            const modal = document.getElementById('modal-promo-pro');

            if (modal) {
                modal.classList.add('hidden');
            }

            window.location.href = '/actualizaciones';
        };
    </script>

    <!-- UI block -->
    <script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.6.0/dist/confetti.browser.min.js"></script>

    <!-- ====== MODAL BANNER PROMO - World Cup 2026 ====== -->
    <div id="modal-banner-wc2026" style="
             position: fixed;
             inset: 0;
             z-index: 9999;
             display: none;
             align-items: center;
             justify-content: center;
             padding: 24px;
             background: rgba(0,0,0,0.65);
             backdrop-filter: blur(6px);
             -webkit-backdrop-filter: blur(6px);
             animation: modalFadeIn 0.3s ease-out;
         ">
        <div style="
            position: relative;
            max-width: 480px;
            width: 100%;
            animation: modalScaleUp 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
        ">
            <!-- Botón X para cerrar -->
            <button onclick="document.getElementById('modal-banner-wc2026').style.display='none'" style="
                    position: absolute;
                    top: -12px;
                    right: -12px;
                    width: 32px;
                    height: 32px;
                    border-radius: 50%;
                    background: #ffffff;
                    border: none;
                    color: #1e293b;
                    font-size: 15px;
                    font-weight: bold;
                    cursor: pointer;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    box-shadow: 0 4px 15px rgba(0,0,0,0.3);
                    z-index: 10;
                    transition: background-color 0.2s, transform 0.2s;
                " onmouseover="this.style.backgroundColor='#f1f5f9'; this.style.transform='scale(1.1)'"
                onmouseout="this.style.backgroundColor='#ffffff'; this.style.transform='scale(1)'" aria-label="Cerrar">
                <i class="fas fa-times"></i>
            </button>
            <!-- Imagen banner clickeable -->
            <a href="https://checkout.wompi.co/l/TFYi7C" target="_blank" rel="noopener noreferrer"
                onclick="document.getElementById('modal-banner-wc2026').style.display='none'" style="
                   display: block;
                   line-height: 0;
                   border-radius: 0px;
                   overflow: hidden;
                   transition: transform 0.2s;" onmouseover="this.style.transform='scale(1.01)'"
                onmouseout="this.style.transform='scale(1)'">
                <img src="/public/Promocion Premium Pro MAX _ Word Cup 2026.png"
                    alt="Promocion Premium Pro MAX - World Cup 2026" style="width:100%; height:auto; display:block;" />
            </a>
        </div>
    </div>

    <style>
        @keyframes modalFadeIn {
            from {
                opacity: 0;
            }

            to {
                opacity: 1;
            }
        }

        @keyframes modalScaleUp {
            from {
                opacity: 0;
                transform: scale(0.9);
            }

            to {
                opacity: 1;
                transform: scale(1);
            }
        }
    </style>

    <script>
        // Banner promo desactivado: no abrir modal al entrar.
    </script>
</body>

</html>
