INICIO






Redactor de Texto · Redacción Premium con Alma Humana

<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet" />

<!-- Font Awesome 6 -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" />

<!-- PayPal SDK -->
<script src="https://www.paypal.com/sdk/js?client-id=sb&currency=USD"></script>

<style>
    /* ============================================================
               RESET Y ESTILOS BASE
               ============================================================ */
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    html {
        scroll-behavior: smooth;
    }
    body {
        font-family: 'Inter', sans-serif;
        background: #faf9f8;
        color: #1A2A3A;
        line-height: 1.6;
    }
    .container {
        max-width: 1200px;
        margin: 0 auto;
        padding: 0 24px;
    }

    h1,
    h2,
    h3,
    h4 {
        font-family: 'Playfair Display', serif;
        font-weight: 700;
        letter-spacing: -0.02em;
    }
    h1 {
        font-size: clamp(2.8rem, 6vw, 4.8rem);
        line-height: 1.1;
    }
    h2 {
        font-size: clamp(2.2rem, 4vw, 3.2rem);
        margin-bottom: 0.5rem;
    }
    h3 {
        font-size: 1.6rem;
        margin-bottom: 0.5rem;
    }
    .subtitulo {
        font-size: 1.2rem;
        font-weight: 300;
        color: #6B7280;
        max-width: 640px;
    }
    .texto-dorado {
        color: #C9A96E;
    }

    /* ============================================================
               BOTONES
               ============================================================ */
    .btn {
        display: inline-block;
        padding: 14px 40px;
        border-radius: 50px;
        font-weight: 600;
        font-size: 1.05rem;
        text-decoration: none;
        transition: all 0.3s ease;
        border: none;
        cursor: pointer;
    }
    .btn-dorado {
        background: #C9A96E;
        color: #1A2A3A;
        box-shadow: 0 8px 24px rgba(201, 169, 110, 0.35);
    }
    .btn-dorado:hover {
        background: #b8975a;
        transform: translateY(-3px);
        box-shadow: 0 12px 32px rgba(201, 169, 110, 0.45);
    }
    .btn-oscuro {
        background: #1A2A3A;
        color: #fff;
    }
    .btn-oscuro:hover {
        background: #0e1a26;
    }
    .btn-whatsapp {
        background: #25D366;
        color: #fff;
    }
    .btn-whatsapp:hover {
        background: #1da851;
    }
    .btn-peligro {
        background: #e74c3c;
        color: #fff;
    }
    .btn-peligro:hover {
        background: #c0392b;
    }
    .btn-exito {
        background: #2ecc71;
        color: #fff;
    }
    .btn-exito:hover {
        background: #27ae60;
    }
    .btn-outline-dorado {
        background: transparent;
        color: #C9A96E;
        border: 2px solid #C9A96E;
    }
    .btn-outline-dorado:hover {
        background: #C9A96E;
        color: #1A2A3A;
    }

    /* ============================================================
               HEADER
               ============================================================ */
    header {
        background: #1A2A3A;
        padding: 18px 0;
        position: sticky;
        top: 0;
        z-index: 1000;
        border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    }
    .header-flex {
        display: flex;
        justify-content: space-between;
        align-items: center;
    }
    .logo {
        font-family: 'Playfair Display', serif;
        font-size: 1.6rem;
        color: #fff;
        text-decoration: none;
        letter-spacing: -0.5px;
    }
    .logo span {
        color: #C9A96E;
    }
    .nav-links {
        display: flex;
        gap: 32px;
        align-items: center;
    }
    .nav-links a {
        color: rgba(255, 255, 255, 0.75);
        text-decoration: none;
        font-weight: 500;
        font-size: 0.95rem;
        transition: color 0.2s;
    }
    .nav-links a:hover {
        color: #fff;
    }
    .nav-cta {
        background: #C9A96E;
        color: #1A2A3A !important;
        padding: 8px 22px;
        border-radius: 50px;
        font-weight: 600;
    }
    .nav-cta:hover {
        background: #b8975a !important;
    }

    /* ============================================================
               SPLASH DE PROMOCIÓN
               ============================================================ */
    .splash-promo {
        background: linear-gradient(135deg, #C9A96E 0%, #b8975a 100%);
        color: #1A2A3A;
        padding: 14px 0;
        text-align: center;
        font-weight: 600;
        font-size: 1rem;
        display: none;
        border-bottom: 2px solid rgba(26, 42, 58, 0.1);
    }
    .splash-promo.visible {
        display: block;
        animation: slideDown 0.5s ease;
    }
    .splash-promo strong {
        background: rgba(255, 255, 255, 0.25);
        padding: 2px 12px;
        border-radius: 20px;
    }
    .splash-promo .cerrar-promo {
        background: none;
        border: none;
        color: #1A2A3A;
        font-size: 1.2rem;
        cursor: pointer;
        margin-left: 16px;
        opacity: 0.7;
    }
    .splash-promo .cerrar-promo:hover {
        opacity: 1;
    }
    @keyframes slideDown {
        from {
            transform: translateY(-100%);
            opacity: 0;
        }
        to {
            transform: translateY(0);
            opacity: 1;
        }
    }

    /* ============================================================
               PANEL DE REGISTRO Y LOGIN PARA CLIENTES (Ctrl+Shift+U)
               ============================================================ */
    .panel-registro {
        display: none;
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 99997;
        background: rgba(0, 0, 0, 0.85);
        backdrop-filter: blur(10px);
        justify-content: center;
        align-items: center;
        padding: 20px;
        animation: fadeInPanel 0.3s ease;
    }
    .panel-registro.visible {
        display: flex;
    }
    @keyframes fadeInPanel {
        from {
            opacity: 0;
            transform: scale(0.95);
        }
        to {
            opacity: 1;
            transform: scale(1);
        }
    }
    .panel-registro .panel-content {
        background: #1A2A3A;
        border-radius: 24px;
        padding: 40px 48px;
        max-width: 500px;
        width: 100%;
        border: 2px solid rgba(201, 169, 110, 0.2);
        box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6);
    }
    .panel-registro .panel-content h2 {
        color: #C9A96E;
        font-size: 1.6rem;
        text-align: center;
        margin-bottom: 4px;
    }
    .panel-registro .panel-content .subtitulo {
        text-align: center;
        color: rgba(255, 255, 255, 0.5);
        margin-bottom: 20px;
    }
    .panel-registro .panel-content .cerrar-panel {
        float: right;
        background: none;
        border: none;
        color: rgba(255, 255, 255, 0.4);
        font-size: 1.8rem;
        cursor: pointer;
        transition: color 0.2s;
    }
    .panel-registro .panel-content .cerrar-panel:hover {
        color: #fff;
    }
    .panel-registro .panel-content .form-group {
        margin-bottom: 16px;
    }
    .panel-registro .panel-content .form-group label {
        display: block;
        color: rgba(255, 255, 255, 0.6);
        font-weight: 500;
        font-size: 0.85rem;
        margin-bottom: 4px;
    }
    .panel-registro .panel-content .form-group input {
        width: 100%;
        padding: 10px 14px;
        border-radius: 10px;
        border: 1px solid rgba(255, 255, 255, 0.1);
        background: rgba(255, 255, 255, 0.06);
        color: #fff;
        font-size: 0.95rem;
    }
    .panel-registro .panel-content .form-group input:focus {
        outline: none;
        border-color: #C9A96E;
    }
    .panel-registro .panel-content .btn {
        width: 100%;
    }
    .panel-registro .panel-content .toggle-registro {
        text-align: center;
        color: rgba(255, 255, 255, 0.4);
        font-size: 0.85rem;
        margin-top: 12px;
        cursor: pointer;
        transition: color 0.2s;
    }
    .panel-registro .panel-content .toggle-registro:hover {
        color: #C9A96E;
    }

    /* ============================================================
               PANEL SECRETO 1: CLIENTES (Ctrl+Shift+C) - SOLO PARA TI
               ============================================================ */
    .panel-secreto {
        display: none;
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 99999;
        background: rgba(0, 0, 0, 0.92);
        backdrop-filter: blur(12px);
        justify-content: center;
        align-items: center;
        padding: 20px;
        animation: fadeInPanel 0.3s ease;
    }
    .panel-secreto.visible {
        display: flex;
    }
    .panel-secreto .panel-content {
        background: #1A2A3A;
        border-radius: 24px;
        padding: 40px 48px;
        max-width: 1100px;
        width: 100%;
        max-height: 90vh;
        overflow-y: auto;
        border: 2px solid rgba(201, 169, 110, 0.2);
        box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6);
    }
    .panel-secreto .panel-content h2 {
        color: #C9A96E;
        font-size: 1.8rem;
        margin-bottom: 4px;
    }
    .panel-secreto .panel-content .subtitulo {
        color: rgba(255, 255, 255, 0.5);
        margin-bottom: 20px;
    }
    .panel-secreto .panel-content .cerrar-panel {
        float: right;
        background: none;
        border: none;
        color: rgba(255, 255, 255, 0.4);
        font-size: 1.8rem;
        cursor: pointer;
        transition: color 0.2s;
    }
    .panel-secreto .panel-content .cerrar-panel:hover {
        color: #fff;
    }

    .panel-secreto .login-form {
        text-align: center;
        padding: 30px 0;
    }
    .panel-secreto .login-form .form-group {
        max-width: 320px;
        margin: 12px auto;
    }
    .panel-secreto .login-form .form-group input {
        text-align: center;
        width: 100%;
        padding: 10px 14px;
        border-radius: 10px;
        border: 1px solid rgba(255, 255, 255, 0.1);
        background: rgba(255, 255, 255, 0.06);
        color: #fff;
        font-size: 0.95rem;
    }
    .panel-secreto .login-form .form-group input:focus {
        outline: none;
        border-color: #C9A96E;
    }

    .panel-secreto .badge-secreto {
        display: inline-block;
        background: #C9A96E;
        color: #1A2A3A;
        padding: 2px 12px;
        border-radius: 20px;
        font-size: 0.65rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 1px;
    }

    .panel-secreto .tabla-clientes {
        width: 100%;
        border-collapse: collapse;
        margin-top: 16px;
        font-size: 0.85rem;
    }
    .panel-secreto .tabla-clientes th {
        text-align: left;
        color: rgba(255, 255, 255, 0.4);
        font-weight: 600;
        font-size: 0.7rem;
        text-transform: uppercase;
        letter-spacing: 1px;
        padding: 8px 6px;
        border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    }
    .panel-secreto .tabla-clientes td {
        padding: 8px 6px;
        color: rgba(255, 255, 255, 0.8);
        border-bottom: 1px solid rgba(255, 255, 255, 0.04);
    }
    .panel-secreto .tabla-clientes tr:hover td {
        background: rgba(255, 255, 255, 0.03);
    }
    .panel-secreto .tabla-clientes .estado-pago {
        display: inline-block;
        padding: 2px 12px;
        border-radius: 20px;
        font-size: 0.65rem;
        font-weight: 700;
        text-transform: uppercase;
    }
    .panel-secreto .tabla-clientes .estado-pago.pagado {
        background: #2ecc71;
        color: #fff;
    }
    .panel-secreto .tabla-clientes .estado-pago.pendiente {
        background: #f39c12;
        color: #fff;
    }
    .panel-secreto .tabla-clientes .estado-pago.revisando {
        background: #3498db;
        color: #fff;
    }
    .panel-secreto .tabla-clientes .estado-pago.rechazado {
        background: #e74c3c;
        color: #fff;
    }
    .panel-secreto .tabla-clientes .btn-accion {
        padding: 3px 10px;
        border-radius: 12px;
        font-size: 0.65rem;
        font-weight: 600;
        border: none;
        cursor: pointer;
        transition: 0.2s;
        margin: 0 2px;
    }
    .panel-secreto .tabla-clientes .btn-accion.ver {
        background: #3498db;
        color: #fff;
    }
    .panel-secreto .tabla-clientes .btn-accion.ver:hover {
        background: #2980b9;
    }
    .panel-secreto .tabla-clientes .btn-accion.pagar {
        background: #2ecc71;
        color: #fff;
    }
    .panel-secreto .tabla-clientes .btn-accion.pagar:hover {
        background: #27ae60;
    }
    .panel-secreto .tabla-clientes .btn-accion.eliminar {
        background: #e74c3c;
        color: #fff;
    }
    .panel-secreto .tabla-clientes .btn-accion.eliminar:hover {
        background: #c0392b;
    }

    .panel-secreto .resumen-cards {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        gap: 16px;
        margin-bottom: 20px;
    }
    .panel-secreto .resumen-cards .card {
        background: rgba(255, 255, 255, 0.04);
        border-radius: 12px;
        padding: 16px 20px;
        border: 1px solid rgba(255, 255, 255, 0.06);
        text-align: center;
    }
    .panel-secreto .resumen-cards .card .numero {
        font-size: 2rem;
        font-weight: 700;
        color: #C9A96E;
    }
    .panel-secreto .resumen-cards .card .label {
        color: rgba(255, 255, 255, 0.4);
        font-size: 0.7rem;
        text-transform: uppercase;
        letter-spacing: 1px;
        margin-top: 4px;
    }

    /* ============================================================
               PANEL SECRETO 2: ADMIN (Ctrl+Shift+A) - SOLO PARA TI
               ============================================================ */
    .panel-admin {
        display: none;
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 99998;
        background: rgba(0, 0, 0, 0.92);
        backdrop-filter: blur(12px);
        justify-content: center;
        align-items: center;
        padding: 20px;
        animation: fadeInPanel 0.3s ease;
    }
    .panel-admin.visible {
        display: flex;
    }
    .panel-admin .panel-content {
        background: #1A2A3A;
        border-radius: 24px;
        padding: 40px 48px;
        max-width: 900px;
        width: 100%;
        max-height: 90vh;
        overflow-y: auto;
        border: 2px solid rgba(201, 169, 110, 0.2);
        box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6);
    }
    .panel-admin .panel-content h2 {
        color: #C9A96E;
        font-size: 1.8rem;
        margin-bottom: 4px;
    }
    .panel-admin .panel-content .subtitulo {
        color: rgba(255, 255, 255, 0.5);
        margin-bottom: 20px;
    }
    .panel-admin .panel-content .cerrar-panel {
        float: right;
        background: none;
        border: none;
        color: rgba(255, 255, 255, 0.4);
        font-size: 1.8rem;
        cursor: pointer;
        transition: color 0.2s;
    }
    .panel-admin .panel-content .cerrar-panel:hover {
        color: #fff;
    }

    .panel-admin .admin-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 16px;
    }
    .panel-admin .admin-card {
        background: rgba(255, 255, 255, 0.04);
        border-radius: 12px;
        padding: 16px 20px;
        border: 1px solid rgba(255, 255, 255, 0.06);
    }
    .panel-admin .admin-card h3 {
        font-family: 'Inter', sans-serif;
        font-weight: 600;
        font-size: 0.95rem;
        color: #fff;
        margin-bottom: 10px;
    }
    .panel-admin .admin-card label {
        display: block;
        color: rgba(255, 255, 255, 0.5);
        font-size: 0.75rem;
        font-weight: 500;
        margin-bottom: 2px;
    }
    .panel-admin .admin-card input,
    .panel-admin .admin-card select {
        width: 100%;
        padding: 8px 12px;
        border-radius: 8px;
        border: 1px solid rgba(255, 255, 255, 0.1);
        background: rgba(255, 255, 255, 0.06);
        color: #fff;
        font-size: 0.9rem;
        margin-bottom: 8px;
    }
    .panel-admin .admin-card input:focus {
        outline: none;
        border-color: #C9A96E;
    }
    .panel-admin .admin-card .btn {
        font-size: 0.8rem;
        padding: 6px 16px;
    }
    .panel-admin .admin-card .estado-activo {
        color: #2ecc71;
        font-weight: 600;
    }
    .panel-admin .admin-card .estado-inactivo {
        color: #e74c3c;
        font-weight: 600;
    }
    .panel-admin .admin-card .codigo-item {
        background: rgba(255, 255, 255, 0.04);
        padding: 4px 10px;
        border-radius: 6px;
        margin-bottom: 4px;
        display: flex;
        justify-content: space-between;
        align-items: center;
    }
    .panel-admin .admin-card .codigo-item span {
        color: #C9A96E;
        font-weight: 700;
        font-size: 0.9rem;
    }
    .panel-admin .admin-card .codigo-item .usos {
        color: rgba(255, 255, 255, 0.3);
        font-size: 0.7rem;
    }
    .panel-admin .admin-card .codigo-input-group {
        display: flex;
        gap: 6px;
    }
    .panel-admin .admin-card .codigo-input-group input {
        flex: 1;
        margin-bottom: 0;
    }
    .panel-admin .admin-card .codigo-input-group .btn {
        padding: 6px 12px;
        font-size: 0.7rem;
    }

    /* ============================================================
               HERO
               ============================================================ */
    .hero {
        background: #1A2A3A;
        padding: 80px 0 100px;
        position: relative;
        overflow: hidden;
    }
    .hero::after {
        content: '';
        position: absolute;
        top: -30%;
        right: -10%;
        width: 600px;
        height: 600px;
        background: radial-gradient(circle, rgba(201, 169, 110, 0.06) 0%, transparent 70%);
        border-radius: 50%;
        pointer-events: none;
    }
    .hero-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 60px;
        align-items: center;
        position: relative;
        z-index: 2;
    }
    .hero-texto h1 {
        color: #fff;
        margin-bottom: 20px;
    }
    .hero-texto p {
        color: rgba(255, 255, 255, 0.75);
        font-size: 1.2rem;
        max-width: 520px;
        margin-bottom: 32px;
        font-weight: 300;
    }
    .hero-badge {
        display: inline-block;
        background: rgba(201, 169, 110, 0.15);
        color: #C9A96E;
        padding: 6px 18px;
        border-radius: 50px;
        font-size: 0.85rem;
        font-weight: 500;
        margin-bottom: 20px;
        border: 1px solid rgba(201, 169, 110, 0.2);
    }
    .hero-imagen img {
        max-width: 100%;
        border-radius: 12px;
        box-shadow: 0 30px 60px rgba(0, 0, 0, 0.5);
        width: 100%;
        height: auto;
        object-fit: cover;
    }
    .trust-badge {
        display: flex;
        gap: 28px;
        margin-top: 24px;
        flex-wrap: wrap;
    }
    .trust-badge span {
        color: rgba(255, 255, 255, 0.5);
        font-size: 0.85rem;
        display: flex;
        align-items: center;
        gap: 8px;
    }
    .trust-badge i {
        color: #C9A96E;
    }

    /* ============================================================
               PILARES
               ============================================================ */
    .pilares {
        padding: 80px 0;
        background: #fff;
    }
    .pilares-grid {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 40px;
        margin-top: 48px;
    }
    .pilar-card {
        text-align: center;
        padding: 40px 28px;
        border-radius: 16px;
        background: #faf9f8;
        transition: all 0.3s ease;
        border: 1px solid #f0eeec;
    }
    .pilar-card:hover {
        transform: translateY(-8px);
        box-shadow: 0 20px 40px rgba(26, 42, 58, 0.06);
        border-color: #C9A96E;
    }
    .pilar-card i {
        font-size: 2.8rem;
        color: #C9A96E;
        margin-bottom: 20px;
    }
    .pilar-card h3 {
        font-family: 'Inter', sans-serif;
        font-weight: 600;
        font-size: 1.25rem;
    }
    .pilar-card p {
        color: #6B7280;
        font-size: 0.98rem;
        margin-top: 8px;
    }

    /* ============================================================
               SERVICIOS (12 servicios)
               ============================================================ */
    .servicios {
        padding: 80px 0;
        background: #faf9f8;
    }
    .servicios-grid {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 24px;
        margin-top: 48px;
    }
    .servicio-card {
        background: #fff;
        padding: 28px 24px;
        border-radius: 16px;
        border: 1px solid #f0eeec;
        transition: all 0.3s ease;
        display: flex;
        flex-direction: column;
        position: relative;
    }
    .servicio-card:hover {
        border-color: #C9A96E;
        box-shadow: 0 12px 32px rgba(26, 42, 58, 0.06);
        transform: translateY(-4px);
    }
    .servicio-card .icono-servicio {
        font-size: 2rem;
        color: #C9A96E;
        margin-bottom: 12px;
    }
    .servicio-card h3 {
        font-family: 'Inter', sans-serif;
        font-weight: 600;
        font-size: 1.1rem;
    }
    .servicio-card .precio {
        font-size: 1.6rem;
        font-weight: 700;
        color: #1A2A3A;
        margin: 8px 0 12px;
    }
    .servicio-card .precio span {
        font-size: 0.9rem;
        font-weight: 400;
        color: #6B7280;
    }
    .servicio-card .precio .precio-original {
        text-decoration: line-through;
        color: #999;
        font-size: 1.1rem;
        margin-right: 8px;
    }
    .servicio-card .precio .precio-descuento {
        color: #e74c3c;
        font-weight: 700;
    }
    .servicio-card .etiqueta-descuento {
        position: absolute;
        top: -10px;
        right: -10px;
        background: #e74c3c;
        color: #fff;
        padding: 4px 14px;
        border-radius: 20px;
        font-size: 0.75rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 1px;
        box-shadow: 0 4px 12px rgba(231, 76, 60, 0.3);
        display: none;
    }
    .servicio-card .etiqueta-descuento.visible {
        display: block;
        animation: pulse 2s infinite;
    }
    @keyframes pulse {
        0%,
        100% {
            transform: scale(1);
        }
        50% {
            transform: scale(1.05);
        }
    }
    .servicio-card ul {
        list-style: none;
        margin: 12px 0 20px;
        flex: 1;
    }
    .servicio-card ul li {
        padding: 4px 0;
        color: #4A4A4A;
        font-size: 0.9rem;
    }
    .servicio-card ul li i {
        color: #C9A96E;
        margin-right: 10px;
        width: 18px;
    }
    .servicio-card .btn {
        align-self: flex-start;
        padding: 10px 28px;
        font-size: 0.95rem;
    }

    .servicio-destacado {
        grid-column: 1 / -1;
        background: linear-gradient(135deg, #1A2A3A 0%, #0e1a26 100%);
        color: #fff;
        border-color: #C9A96E !important;
        border-width: 2px !important;
    }
    .servicio-destacado h3 {
        color: #C9A96E;
    }
    .servicio-destacado .precio {
        color: #fff;
    }
    .servicio-destacado .precio span {
        color: rgba(255, 255, 255, 0.6);
    }
    .servicio-destacado ul li {
        color: rgba(255, 255, 255, 0.8);
    }
    .servicio-destacado .btn {
        background: #C9A96E;
        color: #1A2A3A;
    }
    .servicio-destacado .btn:hover {
        background: #b8975a;
    }

    /* ============================================================
               TESTIMONIOS
               ============================================================ */
    .testimonios {
        padding: 80px 0;
        background: #fff;
    }
    .testimonios-grid {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 30px;
        margin-top: 48px;
    }
    .testimonio {
        background: #faf9f8;
        padding: 28px 24px;
        border-radius: 16px;
        border: 1px solid #f0eeec;
        transition: 0.3s;
    }
    .testimonio:hover {
        border-color: #C9A96E;
    }
    .testimonio .estrellas {
        color: #C9A96E;
        letter-spacing: 2px;
        font-size: 1rem;
    }
    .testimonio .estrellas .estrella-vacia {
        color: #ddd;
    }
    .testimonio blockquote {
        font-style: italic;
        color: #1A2A3A;
        margin: 10px 0 12px;
        font-size: 0.98rem;
        line-height: 1.6;
    }
    .testimonio .autor {
        display: flex;
        align-items: center;
        gap: 14px;
    }
    .testimonio .autor img {
        width: 44px;
        height: 44px;
        border-radius: 50%;
        object-fit: cover;
        background: #ddd;
    }
    .testimonio .autor .nombre {
        font-weight: 600;
        font-size: 0.9rem;
    }
    .testimonio .autor .cargo {
        font-size: 0.8rem;
        color: #6B7280;
    }
    .testimonio .respuesta {
        margin-top: 14px;
        padding-top: 14px;
        border-top: 1px solid #e8e6e4;
        font-size: 0.9rem;
        color: #4A4A4A;
        background: #f5f3f1;
        padding: 12px 16px;
        border-radius: 10px;
    }
    .testimonio .respuesta strong {
        color: #C9A96E;
        font-weight: 600;
    }
    .testimonio .respuesta i {
        color: #C9A96E;
        margin-right: 6px;
    }

    /* ============================================================
               FORMULARIO DE OPINIONES
               ============================================================ */
    .opiniones {
        padding: 60px 0;
        background: #faf9f8;
    }
    .opiniones-wrapper {
        max-width: 700px;
        margin: 0 auto;
        background: #fff;
        padding: 40px 48px;
        border-radius: 20px;
        border: 1px solid #f0eeec;
    }
    .opiniones-wrapper h2 {
        text-align: center;
        margin-bottom: 4px;
    }
    .opiniones-wrapper .subtitulo {
        text-align: center;
        margin: 0 auto 24px;
    }
    .opiniones-wrapper .form-group {
        margin-bottom: 18px;
    }
    .opiniones-wrapper .calificacion-estrellas {
        display: flex;
        gap: 8px;
        font-size: 2rem;
        cursor: pointer;
    }
    .opiniones-wrapper .calificacion-estrellas i {
        transition: color 0.2s;
        color: #ddd;
    }
    .opiniones-wrapper .calificacion-estrellas i.activa {
        color: #C9A96E;
    }

    /* ============================================================
               BLOG
               ============================================================ */
    .blog {
        padding: 80px 0;
        background: #fff;
    }
    .blog-grid {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 30px;
        margin-top: 48px;
    }
    .blog-card {
        background: #fff;
        border-radius: 16px;
        overflow: hidden;
        border: 1px solid #f0eeec;
        transition: all 0.3s ease;
    }
    .blog-card:hover {
        transform: translateY(-6px);
        box-shadow: 0 16px 40px rgba(26, 42, 58, 0.08);
        border-color: #C9A96E;
    }
    .blog-card img {
        width: 100%;
        height: 200px;
        object-fit: cover;
    }
    .blog-card .blog-contenido {
        padding: 24px 24px 28px;
    }
    .blog-card .blog-contenido .categoria {
        font-size: 0.75rem;
        text-transform: uppercase;
        letter-spacing: 2px;
        color: #C9A96E;
        font-weight: 600;
    }
    .blog-card .blog-contenido h3 {
        font-family: 'Inter', sans-serif;
        font-weight: 600;
        font-size: 1.15rem;
        margin: 8px 0 12px;
    }
    .blog-card .blog-contenido p {
        color: #6B7280;
        font-size: 0.95rem;
        margin-bottom: 16px;
    }

    .blog-card .blog-completo {
        display: none;
        margin-top: 12px;
        padding-top: 12px;
        border-top: 1px solid #f0eeec;
    }
    .blog-card .blog-completo p {
        margin-bottom: 10px;
        color: #1A2A3A;
    }
    .blog-card .blog-completo ul {
        padding-left: 20px;
        margin: 10px 0;
    }
    .blog-card .blog-completo ul li {
        margin-bottom: 6px;
        color: #4A4A4A;
    }
    .blog-card .blog-completo strong {
        color: #1A2A3A;
    }
    .blog-card .blog-completo em {
        color: #4A4A4A;
    }

    .blog-card .leer-mas {
        display: inline-block;
        margin-top: 12px;
        color: #C9A96E;
        text-decoration: none;
        font-weight: 600;
        font-size: 0.95rem;
        cursor: pointer;
        transition: color 0.2s;
    }
    .blog-card .leer-mas:hover {
        color: #b8975a;
        text-decoration: underline;
    }

    .blog-card.expandido .blog-completo {
        display: block !important;
    }
    .blog-card.expandido .leer-mas {
        display: none;
    }
    .blog-card .btn-cerrar {
        display: none;
        margin-top: 12px;
        color: #6B7280;
        text-decoration: none;
        font-weight: 500;
        font-size: 0.9rem;
        cursor: pointer;
    }
    .blog-card.expandido .btn-cerrar {
        display: inline-block;
    }

    /* ============================================================
               CÓMO FUNCIONA
               ============================================================ */
    .como-funciona {
        padding: 80px 0;
        background: #1A2A3A;
        color: #fff;
    }
    .pasos-grid {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 40px;
        margin-top: 48px;
    }
    .paso {
        text-align: center;
        padding: 32px 20px;
        border-radius: 16px;
        background: rgba(255, 255, 255, 0.04);
        border: 1px solid rgba(255, 255, 255, 0.06);
        transition: 0.3s;
    }
    .paso:hover {
        background: rgba(255, 255, 255, 0.08);
        border-color: rgba(201, 169, 110, 0.3);
    }
    .paso .numero {
        font-family: 'Playfair Display', serif;
        font-size: 3rem;
        color: #C9A96E;
        font-weight: 700;
        opacity: 0.6;
    }
    .paso h3 {
        font-family: 'Inter', sans-serif;
        font-weight: 600;
        font-size: 1.3rem;
        margin: 12px 0 8px;
    }
    .paso p {
        color: rgba(255, 255, 255, 0.7);
        font-size: 0.98rem;
        max-width: 280px;
        margin: 0 auto;
    }

    /* ============================================================
               FORMULARIO PRINCIPAL
               ============================================================ */
    .formulario-section {
        padding: 80px 0;
        background: #fff;
    }
    .formulario-wrapper {
        max-width: 820px;
        margin: 0 auto;
        background: #faf9f8;
        padding: 48px 56px;
        border-radius: 20px;
        border: 1px solid #f0eeec;
    }
    .formulario-wrapper h2 {
        text-align: center;
        margin-bottom: 8px;
    }
    .formulario-wrapper .subtitulo {
        text-align: center;
        margin: 0 auto 32px;
    }
    .form-group {
        margin-bottom: 20px;
    }
    .form-group label {
        display: block;
        font-weight: 600;
        font-size: 0.95rem;
        margin-bottom: 6px;
        color: #1A2A3A;
    }
    .form-group label .obligatorio {
        color: #e74c3c;
    }
    .form-group input,
    .form-group select,
    .form-group textarea {
        width: 100%;
        padding: 12px 16px;
        border: 1px solid #ddd;
        border-radius: 10px;
        font-family: 'Inter', sans-serif;
        font-size: 1rem;
        transition: border 0.3s;
        background: #fff;
    }
    .form-group input:focus,
    .form-group select:focus,
    .form-group textarea:focus {
        outline: none;
        border-color: #C9A96E;
        box-shadow: 0 0 0 3px rgba(201, 169, 110, 0.15);
    }
    .form-group textarea {
        resize: vertical;
        min-height: 80px;
    }
    .form-row-2 {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 20px;
    }

    .form-group .checkbox-group {
        display: flex;
        align-items: flex-start;
        gap: 12px;
    }
    .form-group .checkbox-group input[type="checkbox"] {
        width: 20px;
        height: 20px;
        margin-top: 3px;
        accent-color: #C9A96E;
        cursor: pointer;
    }
    .form-group .checkbox-group label {
        font-size: 0.9rem;
        color: #4A4A4A;
        cursor: pointer;
    }
    .form-group .checkbox-group label strong {
        color: #1A2A3A;
    }

    .badge-pago {
        display: flex;
        justify-content: center;
        gap: 20px;
        margin-top: 20px;
        flex-wrap: wrap;
    }
    .badge-pago img {
        height: 32px;
        opacity: 0.6;
        transition: opacity 0.3s;
    }
    .badge-pago img:hover {
        opacity: 1;
    }

    /* ============================================================
               FAQ
               ============================================================ */
    .faq {
        padding: 80px 0;
        background: #faf9f8;
    }
    .faq-grid {
        max-width: 780px;
        margin: 48px auto 0;
        display: flex;
        flex-direction: column;
        gap: 16px;
    }
    .faq-item {
        background: #fff;
        border-radius: 12px;
        padding: 24px 28px;
        border: 1px solid #f0eeec;
        transition: 0.2s;
    }
    .faq-item:hover {
        border-color: #C9A96E;
    }
    .faq-item h4 {
        font-family: 'Inter', sans-serif;
        font-weight: 600;
        font-size: 1.05rem;
        margin-bottom: 6px;
        display: flex;
        gap: 12px;
    }
    .faq-item h4 i {
        color: #C9A96E;
        font-size: 1.2rem;
    }
    .faq-item p {
        color: #4A4A4A;
        font-size: 0.98rem;
        padding-left: 32px;
    }

    /* ============================================================
               CTA FINAL
               ============================================================ */
    .cta-final {
        padding: 80px 0;
        background: #1A2A3A;
        text-align: center;
        border-top: 1px solid rgba(201, 169, 110, 0.15);
    }
    .cta-final h2 {
        color: #fff;
        max-width: 700px;
        margin: 0 auto 16px;
    }
    .cta-final p {
        color: rgba(255, 255, 255, 0.7);
        font-size: 1.15rem;
        max-width: 560px;
        margin: 0 auto 32px;
    }
    .cta-buttons {
        display: flex;
        gap: 16px;
        justify-content: center;
        flex-wrap: wrap;
    }

    /* ============================================================
               FOOTER CON DATOS LEGALES COMPLETOS PARA COLOMBIA
               ============================================================ */
    footer {
        background: #0e1a26;
        padding: 50px 0 30px;
        color: rgba(255, 255, 255, 0.5);
        font-size: 0.9rem;
        border-top: 1px solid rgba(255, 255, 255, 0.04);
    }
    footer .footer-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
        gap: 30px;
        text-align: left;
        margin-bottom: 30px;
    }
    footer .footer-grid h4 {
        color: #fff;
        font-family: 'Inter', sans-serif;
        font-weight: 600;
        font-size: 1rem;
        margin-bottom: 10px;
    }
    footer .footer-grid h4 i {
        color: #C9A96E;
        margin-right: 8px;
    }
    footer .footer-grid ul {
        list-style: none;
        padding: 0;
        font-size: 0.9rem;
        line-height: 2;
    }
    footer .footer-grid ul li a,
    footer .footer-grid ul li {
        color: rgba(255, 255, 255, 0.5);
        text-decoration: none;
        transition: color 0.2s;
    }
    footer .footer-grid ul li a:hover {
        color: #C9A96E;
    }
    footer .footer-grid ul li i {
        color: #C9A96E;
        width: 20px;
    }

    footer hr {
        border: none;
        border-top: 1px solid rgba(255, 255, 255, 0.06);
        margin: 20px 0;
    }

    footer .legal-text {
        text-align: center;
        color: rgba(255, 255, 255, 0.3);
        font-size: 0.75rem;
        line-height: 1.8;
        max-width: 900px;
        margin: 0 auto;
    }
    footer .legal-text strong {
        color: rgba(255, 255, 255, 0.4);
    }
    footer .legal-text a {
        color: rgba(255, 255, 255, 0.3);
        text-decoration: none;
        transition: color 0.2s;
    }
    footer .legal-text a:hover {
        color: #C9A96E;
    }

    footer .trust-badges {
        display: flex;
        justify-content: center;
        gap: 20px;
        margin-top: 20px;
        flex-wrap: wrap;
    }
    footer .trust-badges span {
        color: rgba(255, 255, 255, 0.2);
        font-size: 0.7rem;
        display: flex;
        align-items: center;
        gap: 6px;
    }
    footer .trust-badges span i {
        color: #C9A96E;
    }

    /* ============================================================
               TOAST
               ============================================================ */
    .toast {
        position: fixed;
        bottom: 30px;
        right: 30px;
        background: #1A2A3A;
        color: #fff;
        padding: 18px 32px;
        border-radius: 12px;
        box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3);
        font-weight: 500;
        transform: translateY(100px);
        opacity: 0;
        transition: all 0.5s ease;
        z-index: 99999;
        border-left: 4px solid #C9A96E;
    }
    .toast.visible {
        transform: translateY(0);
        opacity: 1;
    }
    .toast i {
        color: #C9A96E;
        margin-right: 12px;
    }

    /* ============================================================
               RESPONSIVE
               ============================================================ */
    @media (max-width: 1024px) {
        .hero-grid {
            grid-template-columns: 1fr;
            text-align: center;
        }
        .hero-texto p {
            margin: 0 auto 32px;
        }
        .trust-badge {
            justify-content: center;
        }
        .pilares-grid,
        .testimonios-grid,
        .blog-grid {
            grid-template-columns: 1fr 1fr;
        }
        .servicios-grid {
            grid-template-columns: 1fr 1fr;
        }
        .panel-admin .admin-grid {
            grid-template-columns: 1fr;
        }
        .panel-secreto .resumen-cards {
            grid-template-columns: 1fr 1fr;
        }
        .panel-secreto .panel-content,
        .panel-admin .panel-content {
            padding: 28px 20px;
        }
        .panel-secreto .tabla-clientes {
            font-size: 0.7rem;
        }
        .panel-secreto .tabla-clientes th,
        .panel-secreto .tabla-clientes td {
            padding: 4px 3px;
        }
        footer .footer-grid {
            grid-template-columns: 1fr 1fr;
        }
    }
    @media (max-width: 768px) {
        .nav-links {
            display: none;
        }
        .header-flex {
            justify-content: center;
        }
        .pilares-grid,
        .testimonios-grid,
        .pasos-grid,
        .blog-grid,
        .servicios-grid {
            grid-template-columns: 1fr;
        }
        .paso p {
            max-width: 100%;
        }
        .faq-item p {
            padding-left: 0;
        }
        .hero {
            padding: 60px 0 70px;
        }
        .btn {
            padding: 12px 28px;
            font-size: 0.95rem;
        }
        .servicio-card .btn {
            align-self: stretch;
            text-align: center;
        }
        .form-row-2 {
            grid-template-columns: 1fr;
        }
        .formulario-wrapper {
            padding: 24px 16px;
        }
        .servicio-destacado {
            grid-column: 1;
        }
        .panel-secreto .panel-content,
        .panel-admin .panel-content {
            padding: 16px 12px;
            max-height: 95vh;
        }
        .panel-secreto .resumen-cards {
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }
        .panel-secreto .resumen-cards .card {
            padding: 10px 12px;
        }
        .panel-secreto .resumen-cards .card .numero {
            font-size: 1.4rem;
        }
        .panel-secreto .tabla-clientes {
            font-size: 0.6rem;
        }
        .panel-secreto .tabla-clientes th,
        .panel-secreto .tabla-clientes td {
            padding: 3px 2px;
        }
        .panel-admin .admin-grid {
            grid-template-columns: 1fr;
        }
        .splash-promo {
            font-size: 0.8rem;
            padding: 8px 12px;
        }
        .opiniones-wrapper {
            padding: 24px 16px;
        }
        footer .footer-grid {
            grid-template-columns: 1fr;
            text-align: center;
        }
        footer .footer-grid ul {
            text-align: center;
        }
        footer .legal-text {
            font-size: 0.7rem;
        }
        footer .trust-badges {
            gap: 12px;
        }
        footer .trust-badges span {
            font-size: 0.6rem;
        }
    }
</style>
<!-- ============================================================
SPLASH DE PROMOCIÓN
============================================================ -->
<div id="splashPromo" class="splash-promo">
    <i class="fas fa-gift"></i>
    <span id="splashMensaje">🎉 Promoción especial: <strong id="splashDescuentoTexto">30%</strong> de descuento</span>
    <i class="fas fa-arrow-right"></i>
    <span id="splashFechas">Válido hasta el 31 de agosto de 2026</span>
    <i class="fas fa-arrow-right"></i>
    Usa el código <strong id="splashCodigo">REDACCION30</strong>
    <button class="cerrar-promo" onclick="cerrarPromo()">
        <i class="fas fa-times"></i>
    </button>
</div>

<!-- ============================================================
HEADER
============================================================ -->
<header>
    <div class="container header-flex">
        <a href="#" class="logo">Redactor<span>deTexto</span>.com</a>
        <nav class="nav-links">
            <a href="#pilares">Inicio</a>
            <a href="#servicios">Servicios</a>
            <a href="#testimonios">Testimonios</a>
            <a href="#blog">Blog</a>
            <a href="#formulario">Solicitar</a>
            <a href="#faq">FAQ</a>
            <a href="#formulario" class="nav-cta"><i class="fas fa-pen-fancy"></i> Encargar</a>
        </nav>
    </div>
</header>

<!-- ============================================================
PANEL DE REGISTRO Y LOGIN PARA CLIENTES (Ctrl+Shift+U)
============================================================ -->
<div id="panelRegistro" class="panel-registro">
    <div class="panel-content">
        <button class="cerrar-panel" onclick="cerrarPanelRegistro()">
            <i class="fas fa-times"></i>
        </button>
        <div id="clienteLoginPanel">
            <h2><i class="fas fa-user-circle"></i> Área de Clientes</h2>
            <p class="subtitulo">Accede a tus documentos y estado de pedidos.</p>
            <div class="form-group">
                <label>Correo electrónico</label>
                <input type="email" id="clienteLoginEmail" placeholder="tu@email.com" />
            </div>
            <div class="form-group">
                <label>Contraseña</label>
                <input type="password" id="clienteLoginClave" placeholder="Tu contraseña" />
            </div>
            <button class="btn btn-dorado" onclick="loginClienteRegistrado()">
                <i class="fas fa-sign-in-alt"></i> Iniciar sesión
            </button>
            <div class="toggle-registro" onclick="mostrarRegistroCliente()">
                ¿No tienes cuenta? <strong style="color:#C9A96E;">Regístrate aquí</strong>
            </div>
        </div>
        <div id="clienteRegistroPanel" style="display:none;">
            <h2><i class="fas fa-user-plus"></i> Crear cuenta</h2>
            <p class="subtitulo">Regístrate para ver tus documentos y estado de pedidos.</p>
            <div class="form-group">
                <label>Nombre completo <span class="obligatorio">*</span></label>
                <input type="text" id="clienteRegNombre" placeholder="Ej: María González" />
            </div>
            <div class="form-group">
                <label>Correo electrónico <span class="obligatorio">*</span></label>
                <input type="email" id="clienteRegEmail" placeholder="tu@email.com" />
            </div>
            <div class="form-group">
                <label>Teléfono</label>
                <input type="tel" id="clienteRegTelefono" placeholder="+57 300 123 4567" />
            </div>
            <div class="form-group">
                <label>Contraseña <span class="obligatorio">*</span></label>
                <input type="password" id="clienteRegClave" placeholder="Mínimo 6 caracteres" />
            </div>
            <button class="btn btn-dorado" onclick="registrarCliente()">
                <i class="fas fa-user-plus"></i> Registrarme
            </button>
            <div class="toggle-registro" onclick="mostrarLoginCliente()">
                ¿Ya tienes cuenta? <strong style="color:#C9A96E;">Inicia sesión</strong>
            </div>
        </div>
        <div id="clienteRegDashboard" style="display:none;">
            <div style="display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; margin-bottom:16px;">
                <div>
                    <h2><i class="fas fa-user-circle"></i> Hola, <span id="clienteRegNombreMostrar">Cliente</span></h2>
                    <p class="subtitulo">Aquí puedes ver el estado de tus documentos y pedidos.</p>
                </div>
                <button class="btn btn-peligro" onclick="logoutClienteRegistrado()" style="font-size:0.8rem; padding:6px 16px;">
                    <i class="fas fa-sign-out-alt"></i> Cerrar sesión
                </button>
            </div>
            <div style="background:rgba(255,255,255,0.04); border-radius:12px; padding:20px; margin-bottom:20px; border:1px solid rgba(255,255,255,0.06);">
                <h3 style="color:#C9A96E; font-size:1.1rem; font-family:'Inter',sans-serif;">
                    <i class="fas fa-file-invoice"></i> Mis pedidos
                </h3>
                <div id="listaPedidosClienteReg">
                    <div style="color:rgba(255,255,255,0.3); text-align:center; padding:20px 0;">
                        <i class="fas fa-inbox" style="font-size:2rem; display:block; margin-bottom:8px;"></i>
                        No tienes pedidos aún. Realiza tu primera solicitud.
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<!-- ============================================================
PANEL SECRETO 1: CLIENTES (Ctrl+Shift+C) - SOLO PARA TI
============================================================ -->
<div id="panelClientes" class="panel-secreto">
    <div class="panel-content">
        <button class="cerrar-panel" onclick="cerrarPanelClientes()">
            <i class="fas fa-times"></i>
        </button>
        <div id="clientesLogin" class="login-form">
            <h2><i class="fas fa-users-cog"></i> Panel de Clientes <span class="badge-secreto">Admin</span></h2>
            <p class="subtitulo">Acceso restringido para administradores.</p>
            <div class="form-group">
                <label style="color:rgba(255,255,255,0.5);">Usuario</label>
                <input type="text" id="clientesUsuario" placeholder="Ingresa tu usuario" value="aocampo671" />
            </div>
            <div class="form-group">
                <label style="color:rgba(255,255,255,0.5);">Contraseña</label>
                <input type="password" id="clientesClave" placeholder="Ingresa tu contraseña" value="8261" />
            </div>
            <button class="btn btn-dorado" onclick="loginClientes()">
                <i class="fas fa-sign-in-alt"></i> Ingresar
            </button>
        </div>
        <div id="clientesDashboard" style="display:none;">
            <div style="display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; margin-bottom:16px;">
                <div>
                    <h2><i class="fas fa-users"></i> Gestión de Clientes</h2>
                    <p class="subtitulo">Todos los clientes registrados, sus pedidos y estados de pago.</p>
                </div>
                <button class="btn btn-peligro" onclick="logoutClientes()" style="font-size:0.8rem; padding:6px 16px;">
                    <i class="fas fa-sign-out-alt"></i> Cerrar
                </button>
            </div>
            <div class="resumen-cards">
                <div class="card"><div class="numero" id="totalClientes">0</div><div class="label">Total Clientes</div></div>
                <div class="card"><div class="numero" id="totalPedidos">0</div><div class="label">Total Pedidos</div></div>
                <div class="card"><div class="numero" id="totalPagados" style="color:#2ecc71;">0</div><div class="label">Pagos Verificados</div></div>
                <div class="card"><div class="numero" id="totalPendientes" style="color:#f39c12;">0</div><div class="label">Pagos Pendientes</div></div>
            </div>
            <div style="overflow-x:auto;">
                <table class="tabla-clientes" id="tablaClientes">
                    <thead>
                        <tr><th>#</th><th>Cliente</th><th>Email</th><th>Servicio</th><th>Monto</th><th>Fecha</th><th>Estado</th><th>Acciones</th></tr>
                    </thead>
                    <tbody id="cuerpoClientes"></tbody>
                </table>
            </div>
            <div style="margin-top:16px; color:rgba(255,255,255,0.3); font-size:0.8rem; text-align:center;">
                <i class="fas fa-info-circle"></i> Los clientes se registran automáticamente al completar el formulario y pagar.
            </div>
        </div>
    </div>
</div>

<!-- ============================================================
PANEL SECRETO 2: ADMIN (Ctrl+Shift+A) - SOLO PARA TI
============================================================ -->
<div id="panelAdmin" class="panel-admin">
    <div class="panel-content">
        <button class="cerrar-panel" onclick="cerrarPanelAdmin()">
            <i class="fas fa-times"></i>
        </button>
        <div id="adminLogin" class="login-form">
            <h2><i class="fas fa-cog"></i> Panel de Administración <span class="badge-secreto">Admin</span></h2>
            <p class="subtitulo">Gestiona promociones, códigos de descuento y fechas.</p>
            <div class="form-group">
                <label style="color:rgba(255,255,255,0.5);">Usuario</label>
                <input type="text" id="adminUsuario" placeholder="Ingresa tu usuario" value="aocampo671" />
            </div>
            <div class="form-group">
                <label style="color:rgba(255,255,255,0.5);">Contraseña</label>
                <input type="password" id="adminClave" placeholder="Ingresa tu contraseña" value="8261" />
            </div>
            <button class="btn btn-dorado" onclick="loginAdmin()">
                <i class="fas fa-sign-in-alt"></i> Ingresar
            </button>
        </div>
        <div id="adminDashboard" style="display:none;">
            <div style="display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; margin-bottom:16px;">
                <div>
                    <h2><i class="fas fa-cog"></i> Panel de Administración</h2>
                    <p class="subtitulo">Gestiona promociones, códigos de descuento y fechas.</p>
                </div>
                <button class="btn btn-peligro" onclick="logoutAdmin()" style="font-size:0.8rem; padding:6px 16px;">
                    <i class="fas fa-sign-out-alt"></i> Cerrar
                </button>
            </div>
            <div class="admin-grid">
                <div class="admin-card">
                    <h3><i class="fas fa-power-off"></i> Estado</h3>
                    <div style="margin-bottom:10px;"><span id="estadoPromo" class="estado-inactivo">🔴 Inactiva</span></div>
                    <button class="btn btn-exito" onclick="togglePromocion()" style="width:100%;">
                        <i class="fas fa-toggle-on"></i> Activar/Desactivar
                    </button>
                </div>
                <div class="admin-card">
                    <h3><i class="fas fa-calendar-alt"></i> Fechas</h3>
                    <label>Inicio</label>
                    <input type="date" id="fechaInicio" />
                    <label>Fin</label>
                    <input type="date" id="fechaFin" />
                    <button class="btn btn-dorado" onclick="guardarFechas()" style="width:100%;">
                        <i class="fas fa-save"></i> Guardar
                    </button>
                </div>
                <div class="admin-card">
                    <h3><i class="fas fa-tags"></i> Códigos</h3>
                    <div id="listaCodigosAdmin"></div>
                    <div style="margin-top:10px;">
                        <div class="codigo-input-group">
                            <input type="text" id="nuevoCodigo" placeholder="Código" />
                            <input type="number" id="nuevoPorcentaje" placeholder="%" style="width:60px;" />
                            <button class="btn btn-exito" onclick="agregarCodigoAdmin()" style="padding:6px 12px;">
                                <i class="fas fa-plus"></i>
                            </button>
                        </div>
                    </div>
                </div>
                <div class="admin-card">
                    <h3><i class="fas fa-bullhorn"></i> Mensaje splash</h3>
                    <label>Mensaje</label>
                    <input type="text" id="mensajeSplash" placeholder="Ej: ¡Oferta especial!" />
                    <button class="btn btn-dorado" onclick="guardarMensaje()" style="width:100%;">
                        <i class="fas fa-save"></i> Guardar
                    </button>
                    <small style="display:block; margin-top:6px; color:rgba(255,255,255,0.3);">
                        Usa {descuento} para el porcentaje.
                    </small>
                </div>
            </div>
        </div>
    </div>
</div>

<!-- ============================================================
HERO
============================================================ -->
<section class="hero">
    <div class="container hero-grid">
        <div class="hero-texto">
            <span class="hero-badge"><i class="fas fa-feather-alt"></i> &nbsp;Redacción 100% humana</span>
            <h1>Redacción profesional <br /><span class="texto-dorado">con alma humana.</span></h1>
            <p>Sin algoritmos, sin plantillas genéricas. Cartas legales, tutelas, despidos, cartas de amor, invitaciones, poemas y más. Todo redactado línea por línea por expertos.</p>
            <div style="display: flex; gap: 16px; flex-wrap: wrap;">
                <a href="#formulario" class="btn btn-dorado"><i class="fas fa-arrow-right"></i> &nbsp;Solicitar ahora</a>
                <a href="#servicios" class="btn btn-oscuro" style="background:rgba(255,255,255,0.1);">Ver servicios</a>
            </div>
            <div class="trust-badge">
                <span><i class="fas fa-check-circle"></i> Entrega en 24h</span>
                <span><i class="fas fa-check-circle"></i> 2 revisiones incluidas</span>
                <span><i class="fas fa-check-circle"></i> 100% confidencial</span>
                <span><i class="fas fa-star" style="color:#C9A96E;"></i> 200+ clientes satisfechos</span>
            </div>
        </div>
        <div class="hero-imagen">
            <img src="https://images.unsplash.com/photo-1455390582262-044cdead277a?w=800&h=500&fit=crop&crop=center&auto=format" alt="Redactor profesional" />
        </div>
    </div>
</section>

<!-- ============================================================
PILARES
============================================================ -->
<section class="pilares" id="pilares">
    <div class="container" style="text-align: center;">
        <span style="color: #C9A96E; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; font-size: 0.8rem;">Nuestra promesa</span>
        <h2>Tres pilares que nos definen</h2>
        <p class="subtitulo" style="margin: 0 auto;">Cada documento que entregamos es único, porque cada caso es único.</p>
    </div>
    <div class="container pilares-grid">
        <div class="pilar-card">
            <i class="fas fa-pen-nib"></i>
            <h3>✍️ Redacción 100% Humana</h3>
            <p>Nada de plantillas ni automatizaciones. Cada palabra es elegida por un redactor profesional, con sensibilidad y precisión.</p>
        </div>
        <div class="pilar-card">
            <i class="fas fa-search"></i>
            <h3>🔍 Análisis Personalizado</h3>
            <p>Estudio detallado de tu caso antes de escribir. Sin prisas, sin fórmulas. Solo criterio humano y experiencia.</p>
        </div>
        <div class="pilar-card">
            <i class="fas fa-clock"></i>
            <h3>⏱️ Entrega en 24h</h3>
            <p>Compromiso de entrega en máximo 24 horas, manteniendo la máxima calidad. Porque la urgencia no está reñida con la excelencia.</p>
        </div>
    </div>
</section>

<!-- ============================================================
SERVICIOS (12 servicios)
============================================================ -->
<section class="servicios" id="servicios">
    <div class="container" style="text-align: center;">
        <span style="color: #C9A96E; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; font-size: 0.8rem;">Nuestros servicios</span>
        <h2>Elige tu documento</h2>
        <p class="subtitulo" style="margin: 0 auto;">Precios en pesos colombianos (COP). Incluyen redacción + dos rondas de revisiones.</p>
        <div id="promoActiva" style="display:none; margin-top:12px; background:#e8f5e9; padding:8px 20px; border-radius:30px; display:inline-block;">
            <span style="color:#2e7d32;"><i class="fas fa-tags"></i> ¡Promoción activa! Usa un código de descuento</span>
        </div>
    </div>
    <div class="container servicios-grid">
        <!-- 1. Tutela -->
        <div class="servicio-card" data-precio="500000" data-servicio="tutela">
            <div class="etiqueta-descuento">Código</div>
            <div class="icono-servicio"><i class="fas fa-gavel"></i></div>
            <h3>Tutela o Reclamación Legal</h3>
            <div class="precio"><span class="precio-base">$500.000</span><span class="precio-descuento" style="display:none;"></span><span>COP</span></div>
            <ul><li><i class="fas fa-check"></i> Redacción desde cero</li><li><i class="fas fa-check"></i> 2 rondas de revisiones</li><li><i class="fas fa-check"></i> Entrega en 24h</li></ul>
            <a href="#formulario" class="btn btn-oscuro" onclick="seleccionarServicio('Tutela o Reclamación Legal', 500000)">Seleccionar</a>
        </div>
        <!-- 2. Despido -->
        <div class="servicio-card" data-precio="350000" data-servicio="despido">
            <div class="etiqueta-descuento">Código</div>
            <div class="icono-servicio"><i class="fas fa-briefcase"></i></div>
            <h3>Despido Laboral</h3>
            <div class="precio"><span class="precio-base">$350.000</span><span class="precio-descuento" style="display:none;"></span><span>COP</span></div>
            <ul><li><i class="fas fa-check"></i> Redacción desde cero</li><li><i class="fas fa-check"></i> 2 rondas de revisiones</li><li><i class="fas fa-check"></i> Entrega en 24h</li></ul>
            <a href="#formulario" class="btn btn-oscuro" onclick="seleccionarServicio('Despido Laboral', 350000)">Seleccionar</a>
        </div>
        <!-- 3. Autodespido -->
        <div class="servicio-card" data-precio="350000" data-servicio="autodespido">
            <div class="etiqueta-descuento">Código</div>
            <div class="icono-servicio"><i class="fas fa-door-open"></i></div>
            <h3>Autodespido Laboral</h3>
            <div class="precio"><span class="precio-base">$350.000</span><span class="precio-descuento" style="display:none;"></span><span>COP</span></div>
            <ul><li><i class="fas fa-check"></i> Redacción desde cero</li><li><i class="fas fa-check"></i> 2 rondas de revisiones</li><li><i class="fas fa-check"></i> Entrega en 24h</li></ul>
            <a href="#formulario" class="btn btn-oscuro" onclick="seleccionarServicio('Autodespido Laboral', 350000)">Seleccionar</a>
        </div>
        <!-- 4. Amor -->
        <div class="servicio-card" data-precio="99000" data-servicio="amor">
            <div class="etiqueta-descuento">Código</div>
            <div class="icono-servicio"><i class="fas fa-heart"></i></div>
            <h3>Carta de Amor</h3>
            <div class="precio"><span class="precio-base">$99.000</span><span class="precio-descuento" style="display:none;"></span><span>COP</span></div>
            <ul><li><i class="fas fa-check"></i> Redacción desde cero</li><li><i class="fas fa-check"></i> 2 rondas de revisiones</li><li><i class="fas fa-check"></i> Entrega en 24h</li></ul>
            <a href="#formulario" class="btn btn-oscuro" onclick="seleccionarServicio('Carta de Amor', 99000)">Seleccionar</a>
        </div>
        <!-- 5. Desamor -->
        <div class="servicio-card" data-precio="99000" data-servicio="desamor">
            <div class="etiqueta-descuento">Código</div>
            <div class="icono-servicio"><i class="fas fa-heart-broken"></i></div>
            <h3>Carta de Desamor</h3>
            <div class="precio"><span class="precio-base">$99.000</span><span class="precio-descuento" style="display:none;"></span><span>COP</span></div>
            <ul><li><i class="fas fa-check"></i> Redacción desde cero</li><li><i class="fas fa-check"></i> 2 rondas de revisiones</li><li><i class="fas fa-check"></i> Entrega en 24h</li></ul>
            <a href="#formulario" class="btn btn-oscuro" onclick="seleccionarServicio('Carta de Desamor', 99000)">Seleccionar</a>
        </div>
        <!-- 6. Despedida -->
        <div class="servicio-card" data-precio="99000" data-servicio="despedida">
            <div class="etiqueta-descuento">Código</div>
            <div class="icono-servicio"><i class="fas fa-hand-wave"></i></div>
            <h3>Carta de Despedida</h3>
            <div class="precio"><span class="precio-base">$99.000</span><span class="precio-descuento" style="display:none;"></span><span>COP</span></div>
            <ul><li><i class="fas fa-check"></i> Redacción desde cero</li><li><i class="fas fa-check"></i> 2 rondas de revisiones</li><li><i class="fas fa-check"></i> Entrega en 24h</li></ul>
            <a href="#formulario" class="btn btn-oscuro" onclick="seleccionarServicio('Carta de Despedida', 99000)">Seleccionar</a>
        </div>
        <!-- 7. Matrimonio -->
        <div class="servicio-card" data-precio="69000" data-servicio="matrimonio">
            <div class="etiqueta-descuento">Código</div>
            <div class="icono-servicio"><i class="fas fa-ring"></i></div>
            <h3>Invitación a Matrimonio</h3>
            <div class="precio"><span class="precio-base">$69.000</span><span class="precio-descuento" style="display:none;"></span><span>COP</span></div>
            <ul><li><i class="fas fa-check"></i> Redacción desde cero</li><li><i class="fas fa-check"></i> 2 rondas de revisiones</li><li><i class="fas fa-check"></i> Entrega en 24h</li></ul>
            <a href="#formulario" class="btn btn-oscuro" onclick="seleccionarServicio('Invitación a Matrimonio', 69000)">Seleccionar</a>
        </div>
        <!-- 8. Retiro -->
        <div class="servicio-card" data-precio="69000" data-servicio="retiro">
            <div class="etiqueta-descuento">Código</div>
            <div class="icono-servicio"><i class="fas fa-spa"></i></div>
            <h3>Invitación a Retiro Espiritual</h3>
            <div class="precio"><span class="precio-base">$69.000</span><span class="precio-descuento" style="display:none;"></span><span>COP</span></div>
            <ul><li><i class="fas fa-check"></i> Redacción desde cero</li><li><i class="fas fa-check"></i> 2 rondas de revisiones</li><li><i class="fas fa-check"></i> Entrega en 24h</li></ul>
            <a href="#formulario" class="btn btn-oscuro" onclick="seleccionarServicio('Invitación a Retiro Espiritual', 69000)">Seleccionar</a>
        </div>
        <!-- 9. Comercial -->
        <div class="servicio-card" data-precio="160000" data-servicio="comercial">
            <div class="etiqueta-descuento">Código</div>
            <div class="icono-servicio"><i class="fas fa-chart-line"></i></div>
            <h3>Carta Comercial o Propuesta</h3>
            <div class="precio"><span class="precio-base">$160.000</span><span class="precio-descuento" style="display:none;"></span><span>COP</span></div>
            <ul><li><i class="fas fa-check"></i> Redacción desde cero</li><li><i class="fas fa-check"></i> 2 rondas de revisiones</li><li><i class="fas fa-check"></i> Entrega en 24h</li></ul>
            <a href="#formulario" class="btn btn-oscuro" onclick="seleccionarServicio('Carta Comercial o Propuesta', 160000)">Seleccionar</a>
        </div>
        <!-- 10. Poemas -->
        <div class="servicio-card" data-precio="300000" data-servicio="poemas">
            <div class="etiqueta-descuento">Código</div>
            <div class="icono-servicio"><i class="fas fa-feather-alt"></i></div>
            <h3>📝 Poemas y Acrósticos</h3>
            <div class="precio"><span class="precio-base">$300.000</span><span class="precio-descuento" style="display:none;"></span><span>COP</span></div>
            <ul><li><i class="fas fa-check"></i> Poema personalizado</li><li><i class="fas fa-check"></i> Acróstico con nombre</li><li><i class="fas fa-check"></i> 2 rondas de revisiones</li><li><i class="fas fa-check"></i> Entrega en 24h</li></ul>
            <a href="#formulario" class="btn btn-oscuro" onclick="seleccionarServicio('Poemas y Acrósticos', 300000)">Seleccionar</a>
        </div>
        <!-- 11. Otras -->
        <div class="servicio-card" data-precio="0" data-servicio="otras">
            <div class="icono-servicio"><i class="fas fa-pen-fancy"></i></div>
            <h3>Otras Propuestas de Redacción</h3>
            <div class="precio">Cotización <span>personalizada</span></div>
            <ul><li><i class="fas fa-check"></i> Redacción personalizada</li><li><i class="fas fa-check"></i> 2 rondas de revisiones</li><li><i class="fas fa-check"></i> Entrega en 24h</li></ul>
            <a href="#formulario" class="btn btn-oscuro" onclick="seleccionarServicio('Otras Propuestas de Redacción', 0)">Consultar</a>
        </div>
        <!-- 12. PYMES -->
        <div class="servicio-card servicio-destacado">
            <div class="icono-servicio"><i class="fas fa-building"></i></div>
            <h3>🏢 Departamento de Comunicaciones PYMES</h3>
            <div class="precio">Cotización <span>personalizada</span></div>
            <ul><li><i class="fas fa-check"></i> Estrategia de comunicación integral</li><li><i class="fas fa-check"></i> Redacción de contenido corporativo</li><li><i class="fas fa-check"></i> Gestión de crisis y reputación</li></ul>
            <a href="#formulario" class="btn" onclick="seleccionarServicio('Departamento de Comunicaciones PYMES', 0)">Solicitar cotización</a>
        </div>
    </div>
</section>

<!-- ============================================================
TESTIMONIOS - 25 CON RESPUESTAS
============================================================ -->
<section class="testimonios" id="testimonios">
    <div class="container" style="text-align: center;">
        <span style="color: #C9A96E; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; font-size: 0.8rem;">Lo que dicen nuestros clientes</span>
        <h2>200+ personas confían en nosotros</h2>
        <p class="subtitulo" style="margin: 0 auto;">Opiniones reales de clientes que recibieron sus documentos a tiempo y con calidad premium.</p>
    </div>
    <div class="container testimonios-grid" id="testimoniosGrid"></div>
    <div style="text-align:center; margin-top:40px;">
        <button class="btn btn-outline-dorado" onclick="cargarMasTestimonios()">
            <i class="fas fa-plus"></i> Ver más testimonios
        </button>
    </div>
</section>

<!-- ============================================================
FORMULARIO DE OPINIONES
============================================================ -->
<section class="opiniones" id="opiniones">
    <div class="container">
        <div class="opiniones-wrapper">
            <h2>Deja tu <span class="texto-dorado">opinión</span></h2>
            <p class="subtitulo">Tu experiencia nos ayuda a mejorar y a otros clientes a confiar en nosotros.</p>
            <form id="formOpinion" onsubmit="enviarOpinion(event)">
                <div class="form-row-2">
                    <div class="form-group"><label>Nombre <span class="obligatorio">*</span></label><input type="text" id="opinion_nombre" required placeholder="Tu nombre" /></div>
                    <div class="form-group"><label>Correo electrónico <span class="obligatorio">*</span></label><input type="email" id="opinion_email" required placeholder="tu@email.com" /></div>
                </div>
                <div class="form-group">
                    <label>Servicio contratado <span class="obligatorio">*</span></label>
                    <select id="opinion_servicio" required>
                        <option value="">-- Selecciona --</option>
                        <option value="Tutela Legal">Tutela o Reclamación Legal</option>
                        <option value="Despido Laboral">Despido Laboral</option>
                        <option value="Autodespido Laboral">Autodespido Laboral</option>
                        <option value="Carta de Amor">Carta de Amor</option>
                        <option value="Carta de Desamor">Carta de Desamor</option>
                        <option value="Carta de Despedida">Carta de Despedida</option>
                        <option value="Invitación a Matrimonio">Invitación a Matrimonio</option>
                        <option value="Retiro Espiritual">Invitación a Retiro Espiritual</option>
                        <option value="Carta Comercial">Carta Comercial o Propuesta</option>
                        <option value="Poemas">Poemas y Acrósticos</option>
                        <option value="Otras Propuestas">Otras Propuestas de Redacción</option>
                        <option value="PYMES">Departamento de Comunicaciones PYMES</option>
                    </select>
                </div>
                <div class="form-group">
                    <label>Calificación <span class="obligatorio">*</span></label>
                    <div class="calificacion-estrellas" id="estrellasOpinion">
                        <i class="fas fa-star" data-valor="1" onclick="calificar(1)"></i>
                        <i class="fas fa-star" data-valor="2" onclick="calificar(2)"></i>
                        <i class="fas fa-star" data-valor="3" onclick="calificar(3)"></i>
                        <i class="fas fa-star" data-valor="4" onclick="calificar(4)"></i>
                        <i class="fas fa-star" data-valor="5" onclick="calificar(5)"></i>
                    </div>
                    <input type="hidden" id="opinion_calificacion" value="0" required />
                </div>
                <div class="form-group">
                    <label>Tu opinión <span class="obligatorio">*</span></label>
                    <textarea id="opinion_texto" required placeholder="Cuéntanos tu experiencia con nuestro servicio..." rows="4"></textarea>
                </div>
                <button type="submit" class="btn btn-dorado" style="width:100%;">
                    <i class="fas fa-paper-plane"></i> &nbsp;Enviar opinión
                </button>
            </form>
        </div>
    </div>
</section>

<!-- ============================================================
BLOG - 10 ARTÍCULOS COMPLETOS
============================================================ -->
<section class="blog" id="blog">
    <div class="container" style="text-align: center;">
        <span style="color: #C9A96E; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; font-size: 0.8rem;">Blog</span>
        <h2>Inspiración y conocimiento <span class="texto-dorado">para escribir mejor</span></h2>
        <p class="subtitulo" style="margin: 0 auto;">Artículos completos para mejorar tu comunicación escrita, con ejemplos y consejos prácticos.</p>
    </div>
    <div class="container blog-grid" id="blogGrid"></div>
</section>

<!-- ============================================================
CÓMO FUNCIONA
============================================================ -->
<section class="como-funciona" id="como-funciona">
    <div class="container" style="text-align: center;">
        <span style="color: #C9A96E; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; font-size: 0.8rem;">Proceso sencillo</span>
        <h2 style="color: #fff;">Tu documento en <span class="texto-dorado">3 pasos</span></h2>
        <p style="color: rgba(255,255,255,0.6); max-width: 560px; margin: 0 auto;">Desde que eliges el servicio hasta que recibes tu texto, todo fluye sin complicaciones.</p>
    </div>
    <div class="container pasos-grid">
        <div class="paso"><div class="numero">01</div><h3>Elige y paga</h3><p>Selecciona el tipo de documento y realiza el pago con PayPal o tarjeta. Sin pago, no empezamos.</p></div>
        <div class="paso"><div class="numero">02</div><h3>Completa el formulario</h3><p>Tras el pago, completa el formulario con los detalles de tu caso. Cuantos más datos, mejor será el resultado.</p></div>
        <div class="paso"><div class="numero">03</div><h3>Recibe en 24h</h3><p>Un redactor experto escribe tu texto desde cero y lo recibes en formato Word/PDF en tu correo.</p></div>
    </div>
</section>

<!-- ============================================================
FORMULARIO PRINCIPAL
============================================================ -->
<section class="formulario-section" id="formulario">
    <div class="container">
        <div class="formulario-wrapper">
            <h2>Solicita tu redacción <span class="texto-dorado">premium</span></h2>
            <p class="subtitulo">Completa el formulario, realiza el pago y en 24h tendrás tu documento listo.</p>
            <form id="formSolicitud" onsubmit="enviarFormulario(event)">
                <div class="form-row-2">
                    <div class="form-group"><label>Nombre completo <span class="obligatorio">*</span></label><input type="text" id="nombre" required placeholder="Ej: María González" /></div>
                    <div class="form-group"><label>Correo electrónico <span class="obligatorio">*</span></label><input type="email" id="email" required placeholder="tu@email.com" /></div>
                </div>
                <div class="form-group"><label>Teléfono <span class="obligatorio">*</span></label><input type="tel" id="telefono" required placeholder="+57 300 123 4567" /></div>
                <div class="form-group">
                    <label>Tipo de servicio <span class="obligatorio">*</span></label>
                    <select id="tipoServicio" required onchange="actualizarPrecio(); mostrarCamposPoemas()">
                        <option value="">-- Selecciona --</option>
                        <option value="tutela">Tutela o Reclamación Legal - $500.000 COP</option>
                        <option value="despido">Despido Laboral - $350.000 COP</option>
                        <option value="autodespido">Autodespido Laboral - $350.000 COP</option>
                        <option value="amor">Carta de Amor - $99.000 COP</option>
                        <option value="desamor">Carta de Desamor - $99.000 COP</option>
                        <option value="despedida">Carta de Despedida - $99.000 COP</option>
                        <option value="matrimonio">Invitación a Matrimonio - $69.000 COP</option>
                        <option value="retiro">Invitación a Retiro Espiritual - $69.000 COP</option>
                        <option value="comercial">Carta Comercial o Propuesta - $160.000 COP</option>
                        <option value="poemas">📝 Poemas y Acrósticos - $300.000 COP</option>
                        <option value="otras">Otras Propuestas de Redacción - Cotización</option>
                        <option value="pymes">Departamento de Comunicaciones PYMES - Cotización</option>
                    </select>
                </div>
                <!-- Campos para Poemas -->
                <div id="camposPoemas" style="display:none;">
                    <div style="background:#f5f0eb; padding:20px; border-radius:12px; margin-bottom:20px; border-left:4px solid #C9A96E;">
                        <h4 style="color:#1A2A3A; font-family:'Inter',sans-serif; font-size:1rem; margin-bottom:12px;"><i class="fas fa-feather-alt" style="color:#C9A96E;"></i> Detalles del Poema o Acróstico</h4>
                        <div class="form-group"><label>¿Para quién va dedicado? <span class="obligatorio">*</span></label><input type="text" id="poema_dedicado" placeholder="Ej: Mi madre, mi esposa, mi novia..." /></div>
                        <div class="form-group"><label>¿Qué quieres expresar? <span class="obligatorio">*</span></label><textarea id="poema_expresar" placeholder="Cuéntanos qué sentimientos o mensaje quieres transmitir." rows="3"></textarea></div>
                        <div class="form-group"><label>¿Quieres un acróstico con un nombre específico?</label><input type="text" id="poema_acrostico" placeholder="Ej: MARÍA, CARLOS, ANA..." /><small style="color:#6B7280;">Si quieres un acróstico, escribe el nombre aquí. Si no, déjalo en blanco.</small></div>
                        <div class="form-group"><label>Estilo o tono preferido</label><select id="poema_estilo"><option value="romantico">Romántico</option><option value="melancolico">Melancólico</option><option value="alegre">Alegre y festivo</option><option value="profundo">Profundo y reflexivo</option><option value="sencillo">Sencillo y directo</option></select></div>
                        <div class="form-group"><label>¿Alguna referencia o idea adicional?</label><textarea id="poema_referencias" placeholder="Ej: Me gusta la naturaleza, el mar, los atardeceres..." rows="2"></textarea></div>
                    </div>
                </div>
                <div class="form-group">
                    <label>Monto a pagar (COP)</label>
                    <input type="text" id="montoPago" readonly style="background: #f0eeec; font-weight: 700; color: #1A2A3A;" value="$0" />
                    <small style="color: #6B7280;">* El pago se realiza con PayPal al final del formulario.</small>
                </div>
                <div class="form-group">
                    <label>Código de descuento</label>
                    <input type="text" id="codigoPromo" placeholder="Ej: REDACCION30" oninput="aplicarDescuento()" />
                    <small style="color: #6B7280;" id="mensajeCodigo">Ingresa un código de descuento válido.</small>
                </div>
                <!-- Cláusula de responsabilidad -->
                <div class="form-group">
                    <div class="checkbox-group">
                        <input type="checkbox" id="aceptaResponsabilidad" required />
                        <label for="aceptaResponsabilidad">
                            <strong>Acepto la cláusula de responsabilidad:</strong> 
                            Reconozco que el documento redactado es una obra literaria o profesional de redacción, 
                            y que <strong>RedactorDeTexto.com</strong> no asume ninguna responsabilidad moral, ética ni legal 
                            por el uso que se le dé al documento una vez entregado. El cliente asume plena responsabilidad 
                            por el contenido y las consecuencias de su uso.
                        </label>
                    </div>
                    <small style="color:#6B7280; display:block; margin-top:6px;">
                        <i class="fas fa-info-circle"></i> Debes aceptar esta cláusula para continuar con tu solicitud.
                    </small>
                </div>
                <div id="paypal-button-container" style="margin: 20px 0;"></div>
                <div style="text-align: center; margin-top: 16px;">
                    <p style="color: #6B7280; font-size: 0.9rem; margin-bottom: 12px;">
                        <i class="fas fa-lock" style="color: #C9A96E;"></i>
                        Pago seguro con PayPal. Puedes pagar con tarjeta sin necesidad de cuenta PayPal.
                    </p>
                    <button type="submit" class="btn btn-dorado" style="width: 100%; font-size: 1.2rem; padding: 18px;">
                        <i class="fas fa-paper-plane"></i> &nbsp;Enviar solicitud
                    </button>
                    <div class="badge-pago">
                        <img src="https://cdn.jsdelivr.net/gh/selfthinker/CreditCardLogos@master/png/visa.png" alt="Visa" />
                        <img src="https://cdn.jsdelivr.net/gh/selfthinker/CreditCardLogos@master/png/mastercard.png" alt="Mastercard" />
                        <img src="https://cdn.jsdelivr.net/gh/selfthinker/CreditCardLogos@master/png/amex.png" alt="Amex" />
                        <img src="https://cdn.jsdelivr.net/gh/selfthinker/CreditCardLogos@master/png/paypal.png" alt="PayPal" style="height: 28px;" />
                    </div>
                </div>
            </form>
        </div>
    </div>
</section>

<!-- ============================================================
FAQ
============================================================ -->
<section class="faq" id="faq">
    <div class="container" style="text-align: center;">
        <span style="color: #C9A96E; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; font-size: 0.8rem;">Preguntas frecuentes</span>
        <h2>Todo lo que necesitas saber</h2>
        <p class="subtitulo" style="margin: 0 auto;">Resolvemos tus dudas para que encargues con total tranquilidad.</p>
    </div>
    <div class="container faq-grid">
        <div class="faq-item">
            <h4><i class="fas fa-clock"></i> ¿Cuánto tardarán en entregar mi documento?</h4>
            <p>Su texto estará listo en un plazo máximo de <strong>12 a 24 horas hábiles</strong> a partir del momento en que complete el formulario con sus datos.</p>
        </div>
        <div class="faq-item">
            <h4><i class="fas fa-edit"></i> ¿Qué pasa si quiero cambiar algo del texto enviado?</h4>
            <p>El servicio incluye un máximo de <strong>dos (2) rondas de correcciones</strong> sobre el borrador inicial.</p>
        </div>
        <div class="faq-item">
            <h4><i class="fas fa-lock"></i> ¿Mi información personal está segura?</h4>
            <p>Absolutamente. Una vez entregado y aprobado su documento final, toda la información compartida se <strong>elimina permanentemente</strong> de nuestros servidores.</p>
        </div>
        <div class="faq-item">
            <h4><i class="fas fa-calendar-alt"></i> ¿Tienen promociones por temporadas?</h4>
            <p>Sí, realizamos promociones especiales en temporadas como <strong>Mes del Amor y la Amistad, Día de la Madre, Día del Padre, Black Friday y Navidad</strong>. Estas promociones se anuncian en el splash superior de la página y a través de nuestros canales de comunicación. También puedes estar atento a nuestros códigos de descuento que cambian según la temporada.</p>
        </div>
        <div class="faq-item">
            <h4><i class="fas fa-handshake"></i> ¿Cómo funciona el Departamento de Comunicaciones para PYMES?</h4>
            <p>Nos convertimos en su aliado estratégico. Diseñamos un plan de comunicación a la medida, redactamos contenidos, gestionamos su imagen y le damos seguimiento. La cotización es personalizada según sus necesidades.</p>
        </div>
        <div class="faq-item">
            <h4><i class="fas fa-feather-alt"></i> ¿Los poemas y acrósticos son originales?</h4>
            <p>Absolutamente. Cada poema y acróstico es <strong>100% original</strong>, creado desde cero por nuestros redactores expertos. No utilizamos plantillas ni generadores automáticos. Cada palabra es pensada y seleccionada para transmitir el sentimiento que deseas.</p>
        </div>
    </div>
</section>

<!-- ============================================================
CTA FINAL
============================================================ -->
<section class="cta-final" id="cta-final">
    <div class="container">
        <h2>Listo para un documento que <br /><span class="texto-dorado">marque la diferencia</span></h2>
        <p>No dejes tu texto en manos de algoritmos. Confía en redactores humanos que entienden el peso de cada palabra.</p>
        <div class="cta-buttons">
            <a href="#formulario" class="btn btn-dorado" style="font-size: 1.2rem; padding: 18px 52px;">
                <i class="fas fa-arrow-right"></i> &nbsp;Solicitar ahora
            </a>
            <a href="https://wa.me/573024441817?text=Hola,%20quiero%20información%20sobre%20redacción%20premium" target="_blank" class="btn btn-whatsapp" style="font-size: 1.2rem; padding: 18px 40px;">
                <i class="fab fa-whatsapp"></i> &nbsp;Consultar por WhatsApp
            </a>
        </div>
    </div>
</section>

<!-- ============================================================
FOOTER CON DATOS LEGALES COMPLETOS PARA COLOMBIA
============================================================ -->
<footer>
    <div class="container">
        <div class="footer-grid">
            <div>
                <div style="font-family:'Playfair Display',serif; font-size:1.4rem; color:#C9A96E; font-weight:700; margin-bottom:8px;">
                    Redactor<span style="color:#fff;">deTexto</span>.com
                </div>
                <p style="color:rgba(255,255,255,0.4); font-size:0.9rem; max-width:260px; line-height:1.6;">
                    Redacción profesional con alma humana. Documentos legales, cartas, poemas y contenidos 
                    elaborados línea por línea por expertos redactores.
                </p>
            </div>
            <div>
                <h4><i class="fas fa-address-card"></i> Contacto</h4>
                <ul>
                    <li><i class="fas fa-phone"></i> <a href="https://wa.me/573024441817" target="_blank">+57 302 444 1817</a></li>
                    <li><i class="fas fa-envelope"></i> <a href="mailto:info@redactordetexto.com">info@redactordetexto.com</a></li>
                    <li><i class="fas fa-envelope"></i> <a href="mailto:textoredactor@gmail.com">textoredactor@gmail.com</a></li>
                    <li><i class="fas fa-map-marker-alt"></i> Colombia</li>
                </ul>
            </div>
            <div>
                <h4><i class="fas fa-link"></i> Enlaces</h4>
                <ul>
                    <li><a href="#pilares">Inicio</a></li>
                    <li><a href="#servicios">Servicios</a></li>
                    <li><a href="#testimonios">Testimonios</a></li>
                    <li><a href="#blog">Blog</a></li>
                    <li><a href="#formulario">Solicitar</a></li>
                    <li><a href="#faq">FAQ</a></li>
                </ul>
            </div>
            <div>
                <h4><i class="fas fa-gavel"></i> Información Legal</h4>
                <ul>
                    <li><i class="fas fa-check-circle" style="color:#C9A96E; width:16px; font-size:0.7rem;"></i> <strong style="color:rgba(255,255,255,0.6);">Razón Social:</strong> Redactor de Texto SAS</li>
                    <li><i class="fas fa-check-circle" style="color:#C9A96E; width:16px; font-size:0.7rem;"></i> <strong style="color:rgba(255,255,255,0.6);">NIT:</strong> 900.XXX.XXX-X</li>
                    <li><i class="fas fa-check-circle" style="color:#C9A96E; width:16px; font-size:0.7rem;"></i> <strong style="color:rgba(255,255,255,0.6);">Domicilio:</strong> Bogotá D.C., Colombia</li>
                    <li><i class="fas fa-check-circle" style="color:#C9A96E; width:16px; font-size:0.7rem;"></i> <strong style="color:rgba(255,255,255,0.6);">Registro:</strong> Cámara de Comercio de Bogotá</li>
                </ul>
            </div>
        </div>

        <hr />

        <div class="legal-text">
            <p>
                <strong style="color:rgba(255,255,255,0.4);">© 2025 RedactorDeTexto.com</strong> · Todos los derechos reservados.
            </p>
            <p>
                <strong style="color:rgba(255,255,255,0.4);">Aviso de Privacidad:</strong> De conformidad con la 
                <strong style="color:rgba(255,255,255,0.4);">Ley 1581 de 2012</strong> y el 
                <strong style="color:rgba(255,255,255,0.4);">Decreto 1377 de 2013</strong>, los datos personales 
                recolectados serán tratados con estricta confidencialidad, utilizados únicamente para la prestación 
                de los servicios contratados y eliminados de nuestros sistemas una vez finalizada la relación comercial. 
                El titular de los datos podrá ejercer sus derechos de conocer, actualizar, rectificar y suprimir su 
                información contactándonos a través de nuestros correos electrónicos.
            </p>
            <p>
                <strong style="color:rgba(255,255,255,0.4);">Términos y Condiciones:</strong> La utilización de los 
                servicios de RedactorDeTexto.com implica la aceptación expresa de nuestros términos y condiciones. 
                Los documentos entregados son de carácter personal e intransferible. El cliente es el único 
                responsable del uso que le dé al contenido redactado. En ningún caso RedactorDeTexto.com se hace 
                responsable por el uso indebido, la interpretación o las consecuencias derivadas de la utilización 
                de los documentos entregados, incluyendo pero no limitándose a su uso en procesos judiciales, 
                administrativos o de cualquier otra naturaleza. Para asesoría legal especializada, se recomienda 
                consultar con un profesional del derecho. Los precios y servicios pueden ser modificados sin previo 
                aviso.
            </p>
            <p style="margin-top:6px;">
                <i class="fas fa-lock" style="color:#C9A96E;"></i> 
                <strong style="color:rgba(255,255,255,0.4);">Protección de Datos:</strong> 
                Cumplimos con la normativa colombiana de protección de datos personales. 
                <a href="#">Política de Privacidad</a> · 
                <a href="#">Términos y Condiciones</a> · 
                <a href="#">Política de Cookies</a>
            </p>
        </div>

        <div class="trust-badges">
            <span><i class="fas fa-shield-alt"></i> Datos protegidos</span>
            <span><i class="fas fa-lock"></i> Pago seguro</span>
            <span><i class="fas fa-certificate"></i> Calidad garantizada</span>
            <span><i class="fas fa-user-secret"></i> Confidencialidad</span>
        </div>

        <p style="text-align:center; color:rgba(255,255,255,0.15); font-size:0.65rem; margin-top:20px;">
            Hecho con <i class="fas fa-heart" style="color:#C9A96E;"></i> y muchas palabras bien escritas en Colombia.
        </p>
    </div>
</footer>

<!-- ============================================================
TOAST
============================================================ -->
<div id="toast" class="toast">
    <i class="fas fa-check-circle"></i>
    <span id="toast-mensaje">¡Solicitud enviada con éxito!</span>
</div>

<!-- ============================================================
SCRIPTS COMPLETOS
============================================================ -->
<script>
    // ============================================================
    // CREDENCIALES
    // ============================================================
    const CREDENCIALES = {
        usuario: 'aocampo671',
        clave: '8261'
    };

    // ============================================================
    // CONFIGURACIÓN DE PROMOCIONES
    // ============================================================
    let config = {
        activa: false,
        fechaInicio: '2026-07-01',
        fechaFin: '2026-08-31',
        mensaje: '🎉 Promoción especial: {descuento} de descuento',
        codigos: [
            { codigo: 'REDACCION20', descuento: 0.20, usos: 0 },
            { codigo: 'REDACCION30', descuento: 0.30, usos: 0 },
            { codigo: 'REDACCION40', descuento: 0.40, usos: 0 }
        ]
    };

    const PRECIOS_BASE = {
        'tutela': 500000,
        'despido': 350000,
        'autodespido': 350000,
        'amor': 99000,
        'desamor': 99000,
        'despedida': 99000,
        'matrimonio': 69000,
        'retiro': 69000,
        'comercial': 160000,
        'poemas': 300000,
        'otras': 0,
        'pymes': 0
    };

    const NOMBRES_SERVICIOS = {
        'tutela': 'Tutela Legal',
        'despido': 'Despido Laboral',
        'autodespido': 'Autodespido Laboral',
        'amor': 'Carta de Amor',
        'desamor': 'Carta de Desamor',
        'despedida': 'Carta de Despedida',
        'matrimonio': 'Invitación a Matrimonio',
        'retiro': 'Retiro Espiritual',
        'comercial': 'Carta Comercial',
        'poemas': 'Poemas y Acrósticos',
        'otras': 'Otras Propuestas',
        'pymes': 'Comunicaciones PYMES'
    };

    // ============================================================
    // BASE DE DATOS DE CLIENTES (localStorage)
    // ============================================================
    function getClientes() {
        try { return JSON.parse(localStorage.getItem('redactorClientes')) || []; } catch { return []; }
    }

    function setClientes(clientes) { localStorage.setItem('redactorClientes', JSON.stringify(clientes)); }

    function agregarCliente(datos) {
        const clientes = getClientes();
        const nuevoCliente = {
            id: Date.now(),
            fecha: new Date().toISOString(),
            nombre: datos.nombre || '',
            email: datos.email || '',
            telefono: datos.telefono || '',
            servicio: datos.servicio || '',
            servicioNombre: NOMBRES_SERVICIOS[datos.servicio] || datos.servicio,
            monto: datos.monto || 0,
            montoOriginal: datos.montoOriginal || 0,
            codigoUsado: datos.codigoUsado || '',
            estado: datos.estado || 'pendiente',
            comprobante: datos.comprobante || '',
            poema_dedicado: datos.poema_dedicado || '',
            poema_expresar: datos.poema_expresar || '',
            poema_acrostico: datos.poema_acrostico || '',
            poema_estilo: datos.poema_estilo || '',
            poema_referencias: datos.poema_referencias || '',
            clienteRegistrado: datos.clienteRegistrado || false
        };
        clientes.push(nuevoCliente);
        setClientes(clientes);
        return nuevoCliente;
    }

    function actualizarCliente(id, datos) {
        const clientes = getClientes();
        const index = clientes.findIndex(c => c.id === id);
        if (index !== -1) {
            clientes[index] = { ...clientes[index], ...datos };
            setClientes(clientes);
            return true;
        }
        return false;
    }

    function eliminarCliente(id) {
        let clientes = getClientes();
        clientes = clientes.filter(c => c.id !== id);
        setClientes(clientes);
    }

    // ============================================================
    // BASE DE DATOS DE CLIENTES REGISTRADOS
    // ============================================================
    function getClientesRegistrados() {
        try { return JSON.parse(localStorage.getItem('redactorClientesRegistrados')) || []; } catch { return []; }
    }

    function setClientesRegistrados(data) { localStorage.setItem('redactorClientesRegistrados', JSON.stringify(data)); }

    function registrarClienteBD(nombre, email, telefono, clave) {
        const registrados = getClientesRegistrados();
        if (registrados.some(c => c.email === email)) {
            return { success: false, message: 'Este correo ya está registrado.' };
        }
        registrados.push({
            id: Date.now(),
            nombre: nombre,
            email: email,
            telefono: telefono,
            clave: clave,
            fechaRegistro: new Date().toISOString()
        });
        setClientesRegistrados(registrados);
        return { success: true, message: 'Registro exitoso' };
    }

    function loginClienteBD(email, clave) {
        const registrados = getClientesRegistrados();
        return registrados.find(c => c.email === email && c.clave === clave) || null;
    }

    function getPedidosCliente(email) {
        const clientes = getClientes();
        return clientes.filter(c => c.email === email).sort((a, b) => new Date(b.fecha) - new Date(a.fecha));
    }

    // ============================================================
    // CONFIGURACIÓN
    // ============================================================
    function cargarConfiguracion() {
        const guardado = localStorage.getItem('redactorConfig');
        if (guardado) {
            try { config = { ...config, ...JSON.parse(guardado) }; } catch (e) {}
        }
        if (!config.codigos || config.codigos.length === 0) {
            config.codigos = [
                { codigo: 'REDACCION20', descuento: 0.20, usos: 0 },
                { codigo: 'REDACCION30', descuento: 0.30, usos: 0 },
                { codigo: 'REDACCION40', descuento: 0.40, usos: 0 }
            ];
            guardarConfiguracion();
        }
    }

    function guardarConfiguracion() { localStorage.setItem('redactorConfig', JSON.stringify(config)); }

    function verificarEstadoPromocion() {
        const hoy = new Date();
        const inicio = new Date(config.fechaInicio);
        const fin = new Date(config.fechaFin);
        return config.activa && hoy >= inicio && hoy <= fin;
    }

    // ============================================================
    // PANEL DE REGISTRO Y LOGIN PARA CLIENTES (Ctrl+Shift+U)
    // ============================================================
    function abrirPanelRegistro() {
        document.getElementById('panelRegistro').classList.add('visible');
        document.getElementById('clienteLoginPanel').style.display = 'block';
        document.getElementById('clienteRegistroPanel').style.display = 'none';
        document.getElementById('clienteRegDashboard').style.display = 'none';
    }

    function cerrarPanelRegistro() {
        document.getElementById('panelRegistro').classList.remove('visible');
    }

    function mostrarRegistroCliente() {
        document.getElementById('clienteLoginPanel').style.display = 'none';
        document.getElementById('clienteRegistroPanel').style.display = 'block';
        document.getElementById('clienteRegDashboard').style.display = 'none';
    }

    function mostrarLoginCliente() {
        document.getElementById('clienteLoginPanel').style.display = 'block';
        document.getElementById('clienteRegistroPanel').style.display = 'none';
        document.getElementById('clienteRegDashboard').style.display = 'none';
    }

    function registrarCliente() {
        const nombre = document.getElementById('clienteRegNombre').value.trim();
        const email = document.getElementById('clienteRegEmail').value.trim();
        const telefono = document.getElementById('clienteRegTelefono').value.trim();
        const clave = document.getElementById('clienteRegClave').value;
        if (!nombre || !email || !clave || clave.length < 6) {
            mostrarToast('⚠️ Completa todos los campos. La contraseña debe tener al menos 6 caracteres.');
            return;
        }
        const resultado = registrarClienteBD(nombre, email, telefono, clave);
        if (resultado.success) {
            mostrarToast('✅ Registro exitoso. Ahora inicia sesión.');
            mostrarLoginCliente();
            document.getElementById('clienteLoginEmail').value = email;
            document.getElementById('clienteLoginClave').value = clave;
        } else {
            mostrarToast('❌ ' + resultado.message);
        }
    }

    function loginClienteRegistrado() {
        const email = document.getElementById('clienteLoginEmail').value.trim();
        const clave = document.getElementById('clienteLoginClave').value;
        if (!email || !clave) {
            mostrarToast('⚠️ Ingresa tu correo y contraseña.');
            return;
        }
        const cliente = loginClienteBD(email, clave);
        if (cliente) {
            document.getElementById('clienteLoginPanel').style.display = 'none';
            document.getElementById('clienteRegistroPanel').style.display = 'none';
            document.getElementById('clienteRegDashboard').style.display = 'block';
            document.getElementById('clienteRegNombreMostrar').textContent = cliente.nombre;
            cargarPedidosClienteReg(email);
            mostrarToast('✅ Bienvenido, ' + cliente.nombre);
        } else {
            mostrarToast('❌ Correo o contraseña incorrectos.');
        }
    }

    function logoutClienteRegistrado() {
        document.getElementById('clienteLoginPanel').style.display = 'block';
        document.getElementById('clienteRegDashboard').style.display = 'none';
        mostrarToast('👋 Sesión cerrada');
    }

    function cargarPedidosClienteReg(email) {
        const pedidos = getPedidosCliente(email);
        const container = document.getElementById('listaPedidosClienteReg');
        if (pedidos.length === 0) {
            container.innerHTML =
                `<div style="color:rgba(255,255,255,0.3); text-align:center; padding:20px 0;">
                    <i class="fas fa-inbox" style="font-size:2rem; display:block; margin-bottom:8px;"></i>
                    No tienes pedidos aún. Realiza tu primera solicitud.
                </div>`;
            return;
        }
        container.innerHTML = '';
        pedidos.forEach(p => {
            const estadoMap = { 'pendiente': '⏳ Pendiente', 'pagado': '✅ Pagado', 'revisando': '🔍 Revisando',
                'rechazado': '❌ Rechazado' };
            const estadoClass = { 'pendiente': 'pendiente', 'pagado': 'pagado', 'revisando': 'revisando',
                'rechazado': 'rechazado' };
            const montoStr = new Intl.NumberFormat('es-CO', { style: 'currency', currency: 'COP',
                minimumFractionDigits: 0 }).format(p.monto);
            const fecha = new Date(p.fecha);
            const div = document.createElement('div');
            div.style.cssText =
                'background:rgba(255,255,255,0.04); border-radius:10px; padding:12px 16px; margin-bottom:10px; border:1px solid rgba(255,255,255,0.06);';
            div.innerHTML = `
                <div style="display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap;">
                    <div>
                        <strong style="color:#fff;">${p.servicioNombre}</strong>
                        <span style="color:rgba(255,255,255,0.4); font-size:0.8rem; margin-left:12px;">#${p.id}</span>
                    </div>
                    <span class="estado-pago ${estadoClass[p.estado] || 'pendiente'}">${estadoMap[p.estado] || '⏳ Pendiente'}</span>
                </div>
                <div style="color:rgba(255,255,255,0.4); font-size:0.8rem; margin-top:4px;">
                    <i class="fas fa-calendar-alt"></i> ${fecha.toLocaleDateString('es-ES', {year:'numeric', month:'short', day:'numeric'})}
                    - ${montoStr}
                </div>
                ${p.poema_dedicado ? `<div style="color:rgba(255,255,255,0.3); font-size:0.75rem; margin-top:4px;">
                    <i class="fas fa-feather-alt"></i> Dedicado a: ${p.poema_dedicado}
                </div>` : ''}
                ${p.estado === 'pagado' ? `<div style="margin-top:6px;">
                    <a href="#" style="color:#C9A96E; text-decoration:none; font-size:0.8rem;">
                        <i class="fas fa-download"></i> Descargar documento
                    </a>
                </div>` : ''}
            `;
            container.appendChild(div);
        });
    }

    // ============================================================
    // PANEL DE CLIENTES (Ctrl+Shift+C) - SOLO PARA TI
    // ============================================================
    function abrirPanelClientes() {
        document.getElementById('panelClientes').classList.add('visible');
        document.getElementById('clientesLogin').style.display = 'block';
        document.getElementById('clientesDashboard').style.display = 'none';
    }

    function cerrarPanelClientes() {
        document.getElementById('panelClientes').classList.remove('visible');
    }

    function loginClientes() {
        const usuario = document.getElementById('clientesUsuario').value;
        const clave = document.getElementById('clientesClave').value;
        if (usuario === CREDENCIALES.usuario && clave === CREDENCIALES.clave) {
            document.getElementById('clientesLogin').style.display = 'none';
            document.getElementById('clientesDashboard').style.display = 'block';
            cargarTablaClientes();
            mostrarToast('✅ Bienvenido al panel de clientes');
        } else {
            mostrarToast('❌ Usuario o contraseña incorrectos');
        }
    }

    function logoutClientes() {
        document.getElementById('clientesLogin').style.display = 'block';
        document.getElementById('clientesDashboard').style.display = 'none';
        mostrarToast('👋 Sesión cerrada');
    }

    function cargarTablaClientes() {
        const clientes = getClientes();
        const tbody = document.getElementById('cuerpoClientes');
        tbody.innerHTML = '';
        document.getElementById('totalClientes').textContent = clientes.length;
        document.getElementById('totalPedidos').textContent = clientes.length;
        const pagados = clientes.filter(c => c.estado === 'pagado').length;
        document.getElementById('totalPagados').textContent = pagados;
        const pendientes = clientes.filter(c => c.estado === 'pendiente' || c.estado === 'revisando').length;
        document.getElementById('totalPendientes').textContent = pendientes;
        if (clientes.length === 0) {
            tbody.innerHTML =
                `<tr><td colspan="8" style="text-align:center; color:rgba(255,255,255,0.3); padding:30px 0;">
                    <i class="fas fa-inbox" style="font-size:2rem; display:block; margin-bottom:8px;"></i>
                    No hay clientes registrados aún.
                </td></tr>`;
            return;
        }
        clientes.sort((a, b) => new Date(b.fecha) - new Date(a.fecha));
        clientes.forEach((cliente, index) => {
            const tr = document.createElement('tr');
            const fecha = new Date(cliente.fecha);
            const fechaStr = fecha.toLocaleDateString('es-ES', { year: 'numeric', month: 'short', day: 'numeric' });
            const estadoMap = { 'pendiente': '⏳ Pendiente', 'pagado': '✅ Pagado', 'revisando': '🔍 Revisando',
                'rechazado': '❌ Rechazado' };
            const estadoClass = { 'pendiente': 'pendiente', 'pagado': 'pagado', 'revisando': 'revisando',
                'rechazado': 'rechazado' };
            const montoStr = new Intl.NumberFormat('es-CO', { style: 'currency', currency: 'COP',
                minimumFractionDigits: 0 }).format(cliente.monto);
            const servicioExtra = cliente.poema_dedicado ?
                `<br><span style="font-size:0.6rem; color:rgba(255,255,255,0.3);">Dedicado a: ${cliente.poema_dedicado}</span>` :
                '';
            tr.innerHTML = `
                <td>${index + 1}</td>
                <td><strong style="color:#fff;">${cliente.nombre}</strong></td>
                <td style="font-size:0.8rem; color:rgba(255,255,255,0.6);">${cliente.email}</td>
                <td style="font-size:0.8rem;">${cliente.servicioNombre}${servicioExtra}</td>
                <td style="font-weight:600; color:#C9A96E;">${montoStr}</td>
                <td style="font-size:0.7rem; color:rgba(255,255,255,0.4);">${fechaStr}</td>
                <td><span class="estado-pago ${estadoClass[cliente.estado] || 'pendiente'}">${estadoMap[cliente.estado] || '⏳ Pendiente'}</span></td>
                <td>
                    <button class="btn-accion ver" onclick="verCliente(${cliente.id})" title="Ver"><i class="fas fa-eye"></i></button>
                    <button class="btn-accion pagar" onclick="marcarPagado(${cliente.id})" title="Marcar pagado"><i class="fas fa-check-circle"></i></button>
                    <button class="btn-accion eliminar" onclick="eliminarClientePanel(${cliente.id})" title="Eliminar"><i class="fas fa-trash"></i></button>
                </td>
            `;
            tbody.appendChild(tr);
        });
    }

    function verCliente(id) {
        const clientes = getClientes();
        const c = clientes.find(cl => cl.id === id);
        if (!c) return;
        const montoStr = new Intl.NumberFormat('es-CO', { style: 'currency', currency: 'COP', minimumFractionDigits: 0 })
            .format(c.monto);
        const fecha = new Date(c.fecha);
        let extras = '';
        if (c.poema_dedicado) {
            extras += `\nDedicado a: ${c.poema_dedicado}` +
                `\nExpresar: ${c.poema_expresar || 'No especificado'}` +
                `\nAcróstico: ${c.poema_acrostico || 'No'}` +
                `\nEstilo: ${c.poema_estilo || 'No especificado'}`;
        }
        alert(
            `📋 DETALLES DEL CLIENTE\n\nNombre: ${c.nombre}\nEmail: ${c.email}\nTeléfono: ${c.telefono || 'No registrado'}\nServicio: ${c.servicioNombre}\nMonto: ${montoStr}\nEstado: ${c.estado}\nFecha: ${fecha.toLocaleString('es-ES')}\nCódigo usado: ${c.codigoUsado || 'Ninguno'}${extras}`
            );
    }

    function marcarPagado(id) {
        if (confirm('¿Marcar este pedido como pagado?')) {
            actualizarCliente(id, { estado: 'pagado' });
            cargarTablaClientes();
            mostrarToast('✅ Pedido marcado como pagado');
        }
    }

    function eliminarClientePanel(id) {
        if (confirm('¿Eliminar este cliente y su pedido?')) {
            eliminarCliente(id);
            cargarTablaClientes();
            mostrarToast('❌ Cliente eliminado');
        }
    }

    // ============================================================
    // PANEL DE ADMIN (Ctrl+Shift+A) - SOLO PARA TI
    // ============================================================
    function abrirPanelAdmin() {
        document.getElementById('panelAdmin').classList.add('visible');
        document.getElementById('adminLogin').style.display = 'block';
        document.getElementById('adminDashboard').style.display = 'none';
    }

    function cerrarPanelAdmin() {
        document.getElementById('panelAdmin').classList.remove('visible');
    }

    function loginAdmin() {
        const usuario = document.getElementById('adminUsuario').value;
        const clave = document.getElementById('adminClave').value;
        if (usuario === CREDENCIALES.usuario && clave === CREDENCIALES.clave) {
            document.getElementById('adminLogin').style.display = 'none';
            document.getElementById('adminDashboard').style.display = 'block';
            cargarDatosAdmin();
            mostrarToast('✅ Bienvenido al panel de administración');
        } else {
            mostrarToast('❌ Usuario o contraseña incorrectos');
        }
    }

    function logoutAdmin() {
        document.getElementById('adminLogin').style.display = 'block';
        document.getElementById('adminDashboard').style.display = 'none';
        mostrarToast('👋 Sesión de administración cerrada');
    }

    function cargarDatosAdmin() {
        const activa = verificarEstadoPromocion();
        const estadoEl = document.getElementById('estadoPromo');
        estadoEl.textContent = activa ? '🟢 Activa' : '🔴 Inactiva';
        estadoEl.className = activa ? 'estado-activo' : 'estado-inactivo';
        document.getElementById('fechaInicio').value = config.fechaInicio;
        document.getElementById('fechaFin').value = config.fechaFin;
        document.getElementById('mensajeSplash').value = config.mensaje;
        renderizarCodigosAdmin();
    }

    function renderizarCodigosAdmin() {
        const container = document.getElementById('listaCodigosAdmin');
        container.innerHTML = '';
        config.codigos.forEach((item, index) => {
            const div = document.createElement('div');
            div.className = 'codigo-item';
            div.innerHTML =
                `
                <div>
                    <span>${item.codigo}</span>
                    <span class="usos">${item.descuento * 100}% - ${item.usos || 0} usos</span>
                </div>
                <button class="btn btn-peligro" onclick="eliminarCodigoAdmin(${index})" style="padding:2px 8px; font-size:0.6rem;">
                    <i class="fas fa-trash"></i>
                </button>
            `;
            container.appendChild(div);
        });
    }

    function agregarCodigoAdmin() {
        const codigoInput = document.getElementById('nuevoCodigo');
        const porcentajeInput = document.getElementById('nuevoPorcentaje');
        const codigo = codigoInput.value.toUpperCase().trim();
        const porcentaje = parseFloat(porcentajeInput.value);
        if (!codigo || isNaN(porcentaje) || porcentaje <= 0 || porcentaje > 100) {
            mostrarToast('⚠️ Ingresa un código válido y porcentaje (1-100)');
            return;
        }
        if (config.codigos.some(c => c.codigo === codigo)) {
            mostrarToast('⚠️ El código ya existe');
            return;
        }
        config.codigos.push({ codigo: codigo, descuento: porcentaje / 100, usos: 0 });
        guardarConfiguracion();
        renderizarCodigosAdmin();
        actualizarFrontend();
        codigoInput.value = '';
        porcentajeInput.value = '';
        mostrarToast('✅ Código agregado: ' + codigo);
    }

    function eliminarCodigoAdmin(index) {
        if (config.codigos.length <= 1) {
            mostrarToast('⚠️ Debe quedar al menos un código');
            return;
        }
        config.codigos.splice(index, 1);
        guardarConfiguracion();
        renderizarCodigosAdmin();
        actualizarFrontend();
        mostrarToast('❌ Código eliminado');
    }

    function togglePromocion() {
        config.activa = !config.activa;
        guardarConfiguracion();
        cargarDatosAdmin();
        actualizarFrontend();
        mostrarToast(config.activa ? '✅ Promoción activada' : '❌ Promoción desactivada');
    }

    function guardarFechas() {
        const inicio = document.getElementById('fechaInicio').value;
        const fin = document.getElementById('fechaFin').value;
        if (inicio && fin) {
            config.fechaInicio = inicio;
            config.fechaFin = fin;
            guardarConfiguracion();
            cargarDatosAdmin();
            actualizarFrontend();
            mostrarToast('✅ Fechas guardadas');
        } else {
            mostrarToast('⚠️ Selecciona ambas fechas');
        }
    }

    function guardarMensaje() {
        const mensaje = document.getElementById('mensajeSplash').value;
        if (mensaje) {
            config.mensaje = mensaje;
            guardarConfiguracion();
            actualizarFrontend();
            mostrarToast('✅ Mensaje guardado');
        }
    }

    // ============================================================
    // FRONTEND
    // ============================================================
    function mostrarCamposPoemas() {
        const servicio = document.getElementById('tipoServicio').value;
        document.getElementById('camposPoemas').style.display = (servicio === 'poemas') ? 'block' : 'none';
    }

    function actualizarFrontend() {
        const activa = verificarEstadoPromocion();
        const splash = document.getElementById('splashPromo');
        if (activa && config.codigos.length > 0) {
            splash.classList.add('visible');
            const primerCodigo = config.codigos[0];
            const descuentoTexto = (primerCodigo.descuento * 100) + '%';
            document.getElementById('splashDescuentoTexto').textContent = descuentoTexto;
            document.getElementById('splashCodigo').textContent = primerCodigo.codigo;
            const inicio = new Date(config.fechaInicio);
            const fin = new Date(config.fechaFin);
            document.getElementById('splashFechas').textContent =
                `Válido del ${inicio.toLocaleDateString('es-ES', {year:'numeric', month:'long', day:'numeric'})} al ${fin.toLocaleDateString('es-ES', {year:'numeric', month:'long', day:'numeric'})}`;
            document.getElementById('splashMensaje').innerHTML = config.mensaje.replace('{descuento}',
                `<strong>${descuentoTexto}</strong>`);
            document.querySelectorAll('.etiqueta-descuento').forEach(el => el.classList.add('visible'));
            document.getElementById('promoActiva').style.display = 'inline-block';
        } else {
            splash.classList.remove('visible');
            document.querySelectorAll('.etiqueta-descuento').forEach(el => el.classList.remove('visible'));
            document.getElementById('promoActiva').style.display = 'none';
        }
    }

    function cerrarPromo() {
        document.getElementById('splashPromo').classList.remove('visible');
    }

    // ============================================================
    // FORMULARIO - PRECIO Y DESCUENTO
    // ============================================================
    let montoActual = 0;

    function actualizarPrecio() {
        const servicio = document.getElementById('tipoServicio').value;
        const montoInput = document.getElementById('montoPago');
        let precioBase = PRECIOS_BASE[servicio] || 0;
        if (precioBase > 0) {
            montoActual = precioBase;
            aplicarDescuento();
        } else {
            montoInput.value = 'Cotización personalizada';
            montoActual = 0;
        }
    }

    function aplicarDescuento() {
        const codigo = document.getElementById('codigoPromo').value.toUpperCase().trim();
        const servicio = document.getElementById('tipoServicio').value;
        const montoInput = document.getElementById('montoPago');
        const mensajeCodigo = document.getElementById('mensajeCodigo');
        let precioBase = PRECIOS_BASE[servicio] || 0;
        if (precioBase === 0) {
            montoInput.value = 'Cotización personalizada';
            return;
        }
        if (!codigo) {
            const formateado = new Intl.NumberFormat('es-CO', { style: 'currency', currency: 'COP',
                minimumFractionDigits: 0 }).format(precioBase);
            montoInput.value = formateado;
            montoActual = precioBase;
            mensajeCodigo.textContent = 'Ingresa un código de descuento válido.';
            mensajeCodigo.style.color = '#6B7280';
            return;
        }
        const activa = verificarEstadoPromocion();
        if (!activa) {
            const formateado = new Intl.NumberFormat('es-CO', { style: 'currency', currency: 'COP',
                minimumFractionDigits: 0 }).format(precioBase);
            montoInput.value = formateado;
            montoActual = precioBase;
            mensajeCodigo.textContent = 'No hay promociones activas.';
            mensajeCodigo.style.color = '#e74c3c';
            return;
        }
        const encontrado = config.codigos.find(c => c.codigo === codigo);
        if (!encontrado) {
            const formateado = new Intl.NumberFormat('es-CO', { style: 'currency', currency: 'COP',
                minimumFractionDigits: 0 }).format(precioBase);
            montoInput.value = formateado;
            montoActual = precioBase;
            mensajeCodigo.textContent = '❌ Código inválido.';
            mensajeCodigo.style.color = '#e74c3c';
            return;
        }
        const precioFinal = Math.round(precioBase * (1 - encontrado.descuento));
        const formateado = new Intl.NumberFormat('es-CO', { style: 'currency', currency: 'COP',
            minimumFractionDigits: 0 }).format(precioFinal);
        montoInput.value = formateado;
        montoActual = precioFinal;
        mensajeCodigo.textContent = `✅ ${encontrado.descuento * 100}% de descuento aplicado.`;
        mensajeCodigo.style.color = '#2e7d32';
        encontrado.usos = (encontrado.usos || 0) + 1;
        guardarConfiguracion();
        renderizarCodigosAdmin();
    }

    function seleccionarServicio(nombre, precioCOP) {
        const select = document.getElementById('tipoServicio');
        const mapa = {
            'Tutela o Reclamación Legal': 'tutela',
            'Despido Laboral': 'despido',
            'Autodespido Laboral': 'autodespido',
            'Carta de Amor': 'amor',
            'Carta de Desamor': 'desamor',
            'Carta de Despedida': 'despedida',
            'Invitación a Matrimonio': 'matrimonio',
            'Invitación a Retiro Espiritual': 'retiro',
            'Carta Comercial o Propuesta': 'comercial',
            'Poemas y Acrósticos': 'poemas',
            'Otras Propuestas de Redacción': 'otras',
            'Departamento de Comunicaciones PYMES': 'pymes'
        };
        select.value = mapa[nombre] || '';
        actualizarPrecio();
        mostrarCamposPoemas();
        document.getElementById('formulario').scrollIntoView({ behavior: 'smooth' });
    }

    // ============================================================
    // PAYPAL
    // ============================================================
    const TASA_CAMBIO = 4000;

    function initPayPal() {
        if (typeof paypal === 'undefined') {
            setTimeout(initPayPal, 500);
            return;
        }
        paypal.Buttons({
            style: { layout: 'horizontal', color: 'gold', shape: 'rect', label: 'paypal' },
            createOrder: function(data, actions) {
                const servicio = document.getElementById('tipoServicio').value;
                let montoCOP = montoActual;
                if (montoCOP === 0 || servicio === 'otras' || servicio === 'pymes') {
                    alert('Por favor selecciona un servicio válido antes de pagar.');
                    return;
                }
                const montoUSD = (montoCOP / TASA_CAMBIO).toFixed(2);
                return actions.order.create({
                    purchase_units: [{
                        description: 'Redacción: ' + (NOMBRES_SERVICIOS[servicio] || servicio),
                        amount: { value: montoUSD, currency_code: 'USD' }
                    }],
                    application_context: { shipping_preference: 'NO_SHIPPING' }
                });
            },
            onApprove: function(data, actions) {
                return actions.order.capture().then(function(details) {
                    const nombre = document.getElementById('nombre').value;
                    const email = document.getElementById('email').value;
                    const telefono = document.getElementById('telefono').value;
                    const servicio = document.getElementById('tipoServicio').value;
                    const codigo = document.getElementById('codigoPromo').value.toUpperCase().trim();
                    const acepta = document.getElementById('aceptaResponsabilidad').checked;
                    if (!acepta) {
                        alert('⚠️ Debes aceptar la cláusula de responsabilidad para continuar.');
                        return;
                    }
                    if (nombre && email && servicio) {
                        const datosPoema = {};
                        if (servicio === 'poemas') {
                            datosPoema.poema_dedicado = document.getElementById('poema_dedicado').value;
                            datosPoema.poema_expresar = document.getElementById('poema_expresar').value;
                            datosPoema.poema_acrostico = document.getElementById('poema_acrostico').value;
                            datosPoema.poema_estilo = document.getElementById('poema_estilo').value;
                            datosPoema.poema_referencias = document.getElementById('poema_referencias').value;
                        }
                        const cliente = agregarCliente({
                            nombre: nombre,
                            email: email,
                            telefono: telefono,
                            servicio: servicio,
                            monto: montoActual,
                            montoOriginal: PRECIOS_BASE[servicio] || 0,
                            codigoUsado: codigo || '',
                            comprobante: 'PayPal - Transacción #' + data.orderID,
                            estado: 'pagado',
                            ...datosPoema
                        });
                        mostrarToast('✅ Pago completado. ¡Solicitud enviada!');
                        document.getElementById('paypal-button-container').innerHTML =
                            '<p style="color:#2ecc71; font-weight:600;"><i class="fas fa-check-circle"></i> Pago realizado correctamente.</p>';
                        enviarFormularioExitoso(cliente);
                    }
                });
            },
            onError: function(err) {
                mostrarToast('❌ Error en el pago. Intenta nuevamente.');
                console.error(err);
            }
        }).render('#paypal-button-container');
    }

    function enviarFormulario(event) {
        event.preventDefault();
        const nombre = document.getElementById('nombre').value;
        const email = document.getElementById('email').value;
        const telefono = document.getElementById('telefono').value;
        const servicio = document.getElementById('tipoServicio').value;
        const acepta = document.getElementById('aceptaResponsabilidad').checked;
        if (!acepta) {
            alert('⚠️ Debes aceptar la cláusula de responsabilidad para continuar.');
            return;
        }
        if (!nombre || !email || !telefono || !servicio) {
            alert('Por favor completa todos los campos obligatorios.');
            return;
        }
        if (servicio === 'otras' || servicio === 'pymes') {
            const datosPoema = {};
            if (servicio === 'poemas') {
                datosPoema.poema_dedicado = document.getElementById('poema_dedicado').value;
                datosPoema.poema_expresar = document.getElementById('poema_expresar').value;
                datosPoema.poema_acrostico = document.getElementById('poema_acrostico').value;
                datosPoema.poema_estilo = document.getElementById('poema_estilo').value;
                datosPoema.poema_referencias = document.getElementById('poema_referencias').value;
            }
            agregarCliente({
                nombre: nombre,
                email: email,
                telefono: telefono,
                servicio: servicio,
                monto: 0,
                montoOriginal: 0,
                codigoUsado: '',
                estado: 'pendiente',
                ...datosPoema
            });
            mostrarToast('✅ Solicitud enviada. Te contactaremos para cotizar.');
            document.getElementById('formSolicitud').reset();
            document.getElementById('montoPago').value = '$0';
            document.getElementById('camposPoemas').style.display = 'none';
            document.getElementById('aceptaResponsabilidad').checked = false;
            return;
        }
        if (montoActual <= 0) {
            alert('Por favor selecciona un servicio válido.');
            return;
        }
        if (!confirm('¿Ya realizaste el pago con PayPal? Si aún no, haz clic en el botón de PayPal arriba.')) {
            return;
        }
    }

    function enviarFormularioExitoso(cliente) {
        document.getElementById('formSolicitud').reset();
        document.getElementById('montoPago').value = '$0';
        document.getElementById('codigoPromo').value = '';
        document.getElementById('mensajeCodigo').textContent = 'Ingresa un código de descuento válido.';
        document.getElementById('mensajeCodigo').style.color = '#6B7280';
        document.getElementById('camposPoemas').style.display = 'none';
        document.getElementById('aceptaResponsabilidad').checked = false;
        montoActual = 0;
        document.getElementById('paypal-button-container').innerHTML = '';
        initPayPal();
    }

    // ============================================================
    // TESTIMONIOS - 25 CON RESPUESTAS
    // ============================================================
    const testimoniosData = [
        // 20 testimonios de 5 estrellas
        { nombre: 'Carlos M.', cargo: 'Abogado corporativo', imagen: 'men/32.jpg', calificacion: 5,
            texto: 'La tutela que redactaron fue impecable. El abogado que la revisó dijo que era de las mejores que había visto.',
            respuesta: '¡Gracias Carlos! Nos alegra saber que nuestro trabajo cumple con los más altos estándares del ámbito legal.' },
        { nombre: 'Laura G.', cargo: 'Empresaria', imagen: 'women/44.jpg', calificacion: 5,
            texto: 'Nunca imaginé que una carta de amor escrita por otra persona pudiera ser tan auténtica. Mi pareja lloró al leerla.',
            respuesta: 'Laura, tus palabras nos llegan al corazón. Ese es exactamente el impacto que buscamos con cada carta.' },
        { nombre: 'Javier R.', cargo: 'Director de RRHH', imagen: 'men/67.jpg', calificacion: 5,
            texto: 'El documento de despido fue tan bien redactado que la empresa aceptó todos los términos sin objeción.',
            respuesta: 'Javier, nos enorgullece saber que nuestro trabajo facilitó un proceso tan delicado.' },
        { nombre: 'Andrea S.', cargo: 'Psicóloga', imagen: 'women/32.jpg', calificacion: 5,
            texto: 'Pedí una carta de despedida para un paciente y fue tan profesional y emotiva que me ayudó a cerrar un proceso terapéutico.',
            respuesta: 'Andrea, qué bonito saber que nuestro trabajo también acompaña procesos terapéuticos. ¡Gracias por confiar!' },
        { nombre: 'Miguel Ángel', cargo: 'Empresario', imagen: 'men/45.jpg', calificacion: 5,
            texto: 'La propuesta comercial fue tan convincente que conseguí una inversión de 50 millones. ¡No puedo estar más agradecido!',
            respuesta: 'Miguel Ángel, ese es el poder de las palabras bien escritas. ¡Felicidades por tu inversión!' },
        { nombre: 'Sofía P.', cargo: 'Diseñadora', imagen: 'women/22.jpg', calificacion: 5,
            texto: 'Mi invitación de matrimonio fue perfecta. Todos dijeron que era la más bonita que habían visto.',
            respuesta: 'Sofía, fue un honor ser parte de un día tan especial. ¡Felicidades a los novios!' },
        { nombre: 'Andrés F.', cargo: 'Gerente de Ventas', imagen: 'men/55.jpg', calificacion: 5,
            texto: 'El autodespido me permitió salir de mi empresa con una indemnización justa y sin quemar puentes.',
            respuesta: 'Andrés, nos alegra que hayas podido hacer una transición laboral digna y bien documentada.' },
        { nombre: 'Carolina R.', cargo: 'Abogada', imagen: 'women/55.jpg', calificacion: 5,
            texto: 'Como abogada, soy muy exigente con los documentos legales. La tutela cumplió con todos mis estándares.',
            respuesta: 'Carolina, viniendo de una colega, tu opinión tiene un valor inmenso. ¡Gracias por tu confianza!' },
        { nombre: 'Daniel H.', cargo: 'Escritor', imagen: 'men/23.jpg', calificacion: 5,
            texto: 'Necesitaba una carta de amor para un libro y su trabajo fue tan bueno que terminé incluyéndola textualmente.',
            respuesta: 'Daniel, qué honor saber que nuestro trabajo inspira tu literatura. ¡Mucho éxito con tu libro!' },
        { nombre: 'María José', cargo: 'Coach', imagen: 'women/62.jpg', calificacion: 5,
            texto: 'La invitación para mi retiro espiritual fue tan poderosa que se llenaron todos los cupos en menos de 24 horas.',
            respuesta: 'María José, qué maravilla que las palabras hayan conectado con tanta gente. ¡Un abrazo!' },
        { nombre: 'Luis E.', cargo: 'Ingeniero', imagen: 'men/42.jpg', calificacion: 5,
            texto: 'Mi carta de despedida fue leída por todos mis compañeros y varios se emocionaron. Salí por la puerta grande.',
            respuesta: 'Luis, salir con dignidad es un arte y nos alegra haber sido parte de tu proceso.' },
        { nombre: 'Valentina M.', cargo: 'Estudiante', imagen: 'women/28.jpg', calificacion: 5,
            texto: 'La carta de amor que pedí para mi novia la hizo llorar de felicidad. ¡Nunca había visto una reacción tan bonita!',
            respuesta: 'Valentina, esas lágrimas de felicidad son nuestro mayor premio. ¡Felicidades por ese amor!' },
        { nombre: 'César O.', cargo: 'Consultor', imagen: 'men/34.jpg', calificacion: 5,
            texto: 'Excelente servicio, muy profesional y entregaron antes del tiempo estipulado. Los recomendaré a mis colegas.',
            respuesta: 'César, la puntualidad y la calidad son nuestros sellos. ¡Gracias por tu recomendación!' },
        { nombre: 'Patricia L.', cargo: 'Directora de Marketing', imagen: 'women/48.jpg', calificacion: 5,
            texto: 'La estrategia de comunicaciones que diseñaron transformó por completo nuestra imagen. Pasamos de ser desconocidos a referentes.',
            respuesta: 'Patricia, ese es el poder de una comunicación bien ejecutada. ¡Seguimos trabajando juntos!' },
        { nombre: 'Juan C.', cargo: 'Agricultor', imagen: 'men/38.jpg', calificacion: 5,
            texto: 'No sabía cómo redactar una carta para pedir un crédito y ustedes me ayudaron. ¡El banco me aprobó el préstamo!',
            respuesta: 'Juan, las palabras pueden abrir puertas. Nos alegra mucho que hayas conseguido tu objetivo.' },
        { nombre: 'Diana F.', cargo: 'Médica', imagen: 'women/40.jpg', calificacion: 5,
            texto: 'Mi carta de renuncia fue tan profesional que mi jefe me ofreció una contraoferta. Aunque decidí irme, me fui con el mejor de los términos.',
            respuesta: 'Diana, una renuncia bien redactada puede abrir puertas incluso al salir. ¡Mucho éxito en tu nuevo camino!' },
        { nombre: 'Ricardo N.', cargo: 'Empresario', imagen: 'men/56.jpg', calificacion: 5,
            texto: 'La propuesta comercial que redactaron me ayudó a cerrar un contrato con una multinacional. ¡Increíble trabajo!',
            respuesta: 'Ricardo, ese es el resultado de una propuesta clara, persuasiva y bien estructurada. ¡Felicidades!' },
        { nombre: 'Verónica T.', cargo: 'Psicóloga', imagen: 'women/35.jpg', calificacion: 5,
            texto: 'La carta de despedida para una relación tóxica fue tan liberadora que mi paciente la enmarcó. ¡Gracias por esa herramienta terapéutica!',
            respuesta: 'Verónica, qué hermoso saber que nuestro trabajo también tiene un impacto emocional y sanador.' },
        { nombre: 'Felipe A.', cargo: 'Arquitecto', imagen: 'men/50.jpg', calificacion: 5,
            texto: 'La carta de recomendación para un posgrado fue tan bien redactada que me aceptaron en la universidad que quería.',
            respuesta: 'Felipe, una buena recomendación puede cambiar el rumbo de una carrera. ¡Mucho éxito en tu posgrado!' },
        { nombre: 'Natalia R.', cargo: 'Freelancer', imagen: 'women/29.jpg', calificacion: 5,
            texto: 'Mi carta de presentación para nuevos clientes ha tenido una tasa de respuesta del 80%. ¡No puedo creerlo!',
            respuesta: 'Natalia, las palabras correctas pueden disparar tu negocio. ¡Sigue brillando!' },
        // 3 testimonios de 4 estrellas
        { nombre: 'Roberto G.', cargo: 'Contador', imagen: 'men/41.jpg', calificacion: 4,
            texto: 'El servicio fue muy bueno en general. Solo tuve que pedir una corrección en el tono de la carta, pero la resolvieron rápido.',
            respuesta: 'Roberto, gracias por tu honestidad. Trabajamos para que cada detalle sea perfecto y valoramos tu retroalimentación.' },
        { nombre: 'Claudia P.', cargo: 'Gerente', imagen: 'women/47.jpg', calificacion: 4,
            texto: 'La entrega fue puntual y la calidad excelente. Tal vez el precio es un poco alto, pero el resultado lo vale.',
            respuesta: 'Claudia, entendemos tu percepción sobre el precio, pero invertir en calidad siempre vale la pena. ¡Gracias por confiar!' },
        { nombre: 'Héctor D.', cargo: 'Comerciante', imagen: 'men/49.jpg', calificacion: 4,
            texto: 'La carta comercial fue efectiva, pero sentí que le faltó un poco más de creatividad. Aún así, cumplió su objetivo.',
            respuesta: 'Héctor, tomamos nota de tu observación. Siempre buscamos mejorar y sorprender a nuestros clientes.' },
        // 2 testimonios de 3 estrellas
        { nombre: 'Martha S.', cargo: 'Profesora', imagen: 'women/52.jpg', calificacion: 3,
            texto: 'El documento estaba bien redactado pero el tiempo de entrega fue un poco mayor al prometido. Sin embargo, la calidad compensó la espera.',
            respuesta: 'Martha, pedimos disculpas por el retraso. Estamos optimizando nuestros tiempos para que eso no vuelva a ocurrir.' },
        { nombre: 'Óscar L.', cargo: 'Emprendedor', imagen: 'men/39.jpg', calificacion: 3,
            texto: 'La carta era buena, pero no cumplió completamente mis expectativas en cuanto al tono emocional. Aunque hicieron los ajustes que pedí.',
            respuesta: 'Óscar, valoramos tu feedback. Trabajaremos en mejorar la comunicación de expectativas desde el inicio.' }
    ];

    let testimonioActual = 0;
    const TESTIMONIOS_POR_PAGINA = 6;

    function cargarTestimonios() {
        const grid = document.getElementById('testimoniosGrid');
        grid.innerHTML = '';
        const fin = Math.min(testimonioActual + TESTIMONIOS_POR_PAGINA, testimoniosData.length);
        for (let i = testimonioActual; i < fin; i++) {
            const t = testimoniosData[i];
            let estrellasHTML = '';
            for (let j = 1; j <= 5; j++) {
                estrellasHTML += j <= t.calificacion ? '<i class="fas fa-star"></i>' :
                    '<i class="fas fa-star estrella-vacia"></i>';
            }
            const div = document.createElement('div');
            div.className = 'testimonio';
            div.innerHTML = `
                <div class="estrellas">${estrellasHTML}</div>
                <blockquote>"${t.texto}"</blockquote>
                <div class="autor">
                    <img src="https://randomuser.me/api/portraits/${t.imagen}" alt="${t.nombre}" />
                    <div>
                        <div class="nombre">${t.nombre}</div>
                        <div class="cargo">${t.cargo}</div>
                    </div>
                </div>
                <div class="respuesta">
                    <strong><i class="fas fa-reply"></i> RedactorDeTexto.com responde:</strong><br>
                    "${t.respuesta}"
                </div>
            `;
            grid.appendChild(div);
        }
        const btn = document.querySelector('#testimonios + div button');
        if (btn) {
            btn.style.display = (fin >= testimoniosData.length) ? 'none' : 'inline-block';
        }
    }

    function cargarMasTestimonios() {
        testimonioActual += TESTIMONIOS_POR_PAGINA;
        cargarTestimonios();
    }

    // ============================================================
    // FORMULARIO DE OPINIONES
    // ============================================================
    let calificacionSeleccionada = 0;

    function calificar(valor) {
        calificacionSeleccionada = valor;
        document.getElementById('opinion_calificacion').value = valor;
        const estrellas = document.querySelectorAll('#estrellasOpinion i');
        estrellas.forEach((el, index) => {
            el.classList.toggle('activa', index < valor);
        });
    }

    function enviarOpinion(event) {
        event.preventDefault();
        const nombre = document.getElementById('opinion_nombre').value;
        const email = document.getElementById('opinion_email').value;
        const servicio = document.getElementById('opinion_servicio').value;
        const calificacion = document.getElementById('opinion_calificacion').value;
        const texto = document.getElementById('opinion_texto').value;
        if (!nombre || !email || !servicio || !calificacion || !texto) {
            alert('Por favor completa todos los campos obligatorios.');
            return;
        }
        mostrarToast('✅ ¡Gracias por tu opinión! La publicaremos pronto.');
        document.getElementById('formOpinion').reset();
        document.querySelectorAll('#estrellasOpinion i').forEach(el => el.classList.remove('activa'));
        document.getElementById('opinion_calificacion').value = 0;
    }

    // ============================================================
    // BLOG - 10 ARTÍCULOS COMPLETOS
    // ============================================================
    const blogData = [{
        titulo: 'Cómo redactar una carta que realmente impacte',
        categoria: 'Consejos prácticos',
        imagen: 'https://images.unsplash.com/photo-1455390582262-044cdead277a?w=600&h=400&fit=crop',
        resumen: 'Aprende los secretos de la redacción efectiva: estructura, tono y palabras que generan emociones y convencen.',
        contenido: `<p><strong>📌 Introducción:</strong> En un mundo dominado por mensajes instantáneos, una carta bien redactada sigue siendo el arma más poderosa de la comunicación. Una carta no solo transmite información, transmite <strong>emociones, intenciones y personalidad</strong>.</p>
                    <p><strong>📝 Estructura infalible para cualquier carta:</strong></p>
                    <ul>
                        <li><strong>1. Saludo personalizado:</strong> "Querido/a [nombre]" en lugar de un genérico "A quien corresponda".</li>
                        <li><strong>2. Introducción cautivadora:</strong> Las primeras 2 líneas deciden si el lector continúa.</li>
                        <li><strong>3. Cuerpo con propósito:</strong> Cada párrafo debe tener una idea clara. Usa la técnica de la "pirámide invertida".</li>
                        <li><strong>4. Cierre memorable:</strong> Termina con una frase que resuene.</li>
                        <li><strong>5. Despedida con estilo:</strong> "Con cariño", "Atentamente", "Un abrazo".</li>
                    </ul>
                    <p><strong>💡 Ejemplo de apertura impactante:</strong><br>
                    <em>"Nunca imaginé que las palabras pudieran tener tanto peso hasta que recibí tu carta. Aquella que escribiste sin prisa, con la caligrafía temblorosa de quien pone el alma en cada trazo."</em></p>
                    <p><strong>🎯 Clave final:</strong> La mejor carta es la que <strong>no podría haber escrito nadie más</strong>. Personaliza, detalla, emociona.</p>`
    }, {
        titulo: 'Escribir con elegancia: 7 claves para textos sofisticados',
        categoria: 'Estilo y elegancia',
        imagen: 'https://images.unsplash.com/photo-1523240795612-9a054b0db644?w=600&h=400&fit=crop',
        resumen: 'Domina el arte de la escritura refinada: vocabulario, ritmo y estructuras que cautivan al lector.',
        contenido: `<p><strong>📌 Introducción:</strong> La elegancia en la escritura no es cuestión de palabras complicadas, sino de <strong>precisión y ritmo</strong>. Un texto elegante fluye como el agua, sin esfuerzo, pero con profundidad.</p>
                    <p><strong>🗝️ Las 7 claves de la elegancia escrita:</strong></p>
                    <ul>
                        <li><strong>1. Vocabulario preciso, no rebuscado.</strong> Usa la palabra exacta.</li>
                        <li><strong>2. Frases con ritmo.</strong> Alterna frases largas y cortas.</li>
                        <li><strong>3. Evita muletillas y clichés.</strong> "A día de hoy", "en realidad" no aportan.</li>
                        <li><strong>4. Usa metáforas con moderación.</strong> Una buena metáfora ilumina.</li>
                        <li><strong>5. Cuida la gramática con esmero.</strong> Los errores rompen el hechizo.</li>
                        <li><strong>6. Lee en voz alta.</strong> El oído es el mejor juez del estilo.</li>
                        <li><strong>7. Menos es más.</strong> Un texto elegante es un texto editado.</li>
                    </ul>`
    }, {
        titulo: 'Cartas legales: cómo redactar documentos con peso jurídico',
        categoria: 'Legal',
        imagen: 'https://images.unsplash.com/photo-1589829545856-d10d557cf95f?w=600&h=400&fit=crop',
        resumen: 'La precisión legal salva vidas profesionales. Aprende a redactar tutelas, despidos y reclamaciones con solidez.',
        contenido: `<p><strong>📌 Introducción:</strong> En el mundo legal, cada palabra cuenta. Una coma mal colocada puede cambiar el sentido de una cláusula.</p>
                    <p><strong>⚖️ Principios básicos para cartas legales:</strong></p>
                    <ul>
                        <li><strong>1. Claridad absoluta.</strong> Un documento legal debe ser entendido por todos.</li>
                        <li><strong>2. Estructura lógica.</strong> Identificación de partes, hechos, fundamentos, petición.</li>
                        <li><strong>3. Hechos, no opiniones.</strong> "El 15 de marzo incumplió el pago" es un hecho.</li>
                        <li><strong>4. Cita normativa precisa.</strong> Menciona artículos y leyes con exactitud.</li>
                        <li><strong>5. Tono formal pero no inhumano.</strong> Puedes ser respetuoso sin perder rigor.</li>
                    </ul>`
    }, {
        titulo: 'Cartas de amor inolvidables: palabras que quedan grabadas',
        categoria: 'Corazón',
        imagen: 'https://images.unsplash.com/photo-1516589178581-6cd7833ae3b2?w=600&h=400&fit=crop',
        resumen: 'Convierte tus sentimientos en palabras que perduren. Consejos para escribir cartas de amor auténticas y conmovedoras.',
        contenido: `<p><strong>📌 Introducción:</strong> Una carta de amor es un puente entre dos almas. No es solo un mensaje, es un <strong>testimonio</strong>.</p>
                    <p><strong>❤️ El secreto de una carta de amor inolvidable:</strong></p>
                    <ul>
                        <li><strong>1. No empieces con "Te amo".</strong> Demuéstralo a lo largo de la carta.</li>
                        <li><strong>2. Usa los cinco sentidos.</strong> ¿Cómo huele su piel? ¿Cómo suena su risa?</li>
                        <li><strong>3. Menciona un recuerdo compartido.</strong> Una anécdota específica es poderosa.</li>
                        <li><strong>4. No tengas miedo a la vulnerabilidad.</strong> La honestidad conecta profundamente.</li>
                        <li><strong>5. Cierra con una promesa.</strong> No una promesa vacía, sino una real.</li>
                    </ul>`
    }, {
        titulo: 'Cartas comerciales que venden: el arte de la persuasión',
        categoria: 'Negocios',
        imagen: 'https://images.unsplash.com/photo-1556761175-4b46a572b786?w=600&h=400&fit=crop',
        resumen: 'Escribe propuestas y cartas comerciales que abren puertas y generan oportunidades de negocio.',
        contenido: `<p><strong>📌 Introducción:</strong> Una carta comercial no es solo un documento, es una <strong>herramienta de ventas</strong>.</p>
                    <p><strong>💼 La estructura de una carta comercial efectiva:</strong></p>
                    <ul>
                        <li><strong>1. Asunto que atrape.</strong> Responde: "¿Por qué debería importarme esto?"</li>
                        <li><strong>2. Conoce a tu destinatario.</strong> Investiga a quién le escribes.</li>
                        <li><strong>3. Plantea el problema primero.</strong> Antes de ofrecer tu solución.</li>
                        <li><strong>4. Presenta tu solución con beneficios.</strong> No vendas un producto, vende resultados.</li>
                        <li><strong>5. Incluye pruebas sociales.</strong> Números y casos de éxito.</li>
                        <li><strong>6. CTA claro y sin presión.</strong> "Agenda una llamada de 15 minutos".</li>
                    </ul>`
    }, {
        titulo: 'Despedidas profesionales: cómo salir con la frente en alto',
        categoria: 'Laboral',
        imagen: 'https://images.unsplash.com/photo-1504384308090-c894fdcc538d?w=600&h=400&fit=crop',
        resumen: 'Redacta una carta de despedida que mantenga puentes abiertos y proteja tu reputación profesional.',
        contenido: `<p><strong>📌 Introducción:</strong> Dejar un trabajo es uno de los momentos más delicados. Una buena despedida protege tu reputación.</p>
                    <p><strong>🎯 El objetivo de una carta de despido profesional:</strong></p>
                    <ul>
                        <li><strong>No quemar puentes:</strong> Nunca sabes cuándo te encontrarás de nuevo.</li>
                        <li><strong>Mantener el control de la narrativa:</strong> Tú defines cómo quieres ser recordado.</li>
                        <li><strong>Agradecer sin ser servil:</strong> Reconocer lo bueno sin fingir.</li>
                    </ul>`
    }, {
        titulo: 'Invitaciones a eventos: cómo generar expectativa y emoción',
        categoria: 'Eventos',
        imagen: 'https://images.unsplash.com/photo-1511795409834-ef04bbd61622?w=600&h=400&fit=crop',
        resumen: 'Desde matrimonios hasta retiros espirituales, aprende a redactar invitaciones que nadie querrá rechazar.',
        contenido: `<p><strong>📌 Introducción:</strong> Una invitación no es solo un aviso; es un <strong>anticipo</strong>.</p>
                    <p><strong>🎉 Claves para una invitación irresistible:</strong></p>
                    <ul>
                        <li><strong>1. El "por qué" antes del "qué".</strong> La emoción personal conecta.</li>
                        <li><strong>2. Crea expectativa con detalles.</strong> Los detalles pintan un cuadro.</li>
                        <li><strong>3. Un toque de exclusividad.</strong> Haz sentir único al invitado.</li>
                        <li><strong>4. El diseño importa.</strong> Tipografía, colores y formato.</li>
                        <li><strong>5. Instrucciones claras.</strong> ¿Dónde? ¿Cuándo? ¿Confirmación?</li>
                    </ul>`
    }, {
        titulo: 'Estrategia de contenido: cómo conectar con tu audiencia',
        categoria: 'Marketing',
        imagen: 'https://images.unsplash.com/photo-1497366216548-37526070297c?w=600&h=400&fit=crop',
        resumen: 'Las palabras correctas generan conexiones profundas. Aprende a diseñar mensajes que resuenen con tus clientes.',
        contenido: `<p><strong>📌 Introducción:</strong> En la era de la sobrecarga informativa, el contenido no es solo información, es <strong>conexión</strong>.</p>
                    <p><strong>📊 Los 5 pilares de una estrategia de contenido efectiva:</strong></p>
                    <ul>
                        <li><strong>1. Conoce a tu audiencia.</strong> ¿Qué les preocupa? ¿Qué buscan?</li>
                        <li><strong>2. Define el propósito.</strong> Educar, inspirar, generar confianza.</li>
                        <li><strong>3. La regla 80/20.</strong> 80% útil, 20% promocional.</li>
                        <li><strong>4. La coherencia es clave.</strong> Publica regularmente.</li>
                        <li><strong>5. Mide, aprende, ajusta.</strong> Usa datos para mejorar.</li>
                    </ul>`
    }, {
        titulo: 'Autodespido laboral: cómo hacerlo de forma legal y estratégica',
        categoria: 'Legal laboral',
        imagen: 'https://images.unsplash.com/photo-1524178232363-1fb2b075b655?w=600&h=400&fit=crop',
        resumen: 'Guía paso a paso para redactar un autodespido que proteja tus derechos y te permita salir con dignidad.',
        contenido: `<p><strong>📌 Introducción:</strong> El autodespido es una figura jurídica que permite terminar el contrato por causas imputables al empleador.</p>
                    <p><strong>⚖️ ¿Cuándo procede el autodespido?</strong></p>
                    <ul>
                        <li><strong>Impago de salarios:</strong> El empleador no ha pagado.</li>
                        <li><strong>Condiciones inseguras:</strong> Riesgo para la salud.</li>
                        <li><strong>Acoso laboral:</strong> Hostigamiento o trato degradante.</li>
                        <li><strong>Cambios unilaterales:</strong> Modificaciones sin acuerdo.</li>
                    </ul>
                    <p><strong>⚠️ Advertencia:</strong> Siempre consulta con un abogado laboralista.</p>`
    }, {
        titulo: 'Comunicación en PYMES: el arma secreta para crecer',
        categoria: 'PYMES',
        imagen: 'https://images.unsplash.com/photo-1523050854058-8df90110c7f1?w=600&h=400&fit=crop',
        resumen: 'Descubre cómo una buena estrategia de comunicación puede transformar tu pequeña empresa y multiplicar tus ventas.',
        contenido: `<p><strong>📌 Introducción:</strong> En una PYME, la comunicación no es un "extra", es el <strong>alma del negocio</strong>.</p>
                    <p><strong>🏢 ¿Por qué una PYME necesita un plan de comunicación?</strong></p>
                    <ul>
                        <li><strong>Credibilidad:</strong> Construye confianza.</li>
                        <li><strong>Diferenciación:</strong> Te hace memorable.</li>
                        <li><strong>Atracción de talento:</strong> Los mejores quieren propósito.</li>
                        <li><strong>Conexión con clientes:</strong> Convierte clientes en embajadores.</li>
                    </ul>
                    <p><strong>📋 Los 5 pilares de comunicación para tu PYME:</strong></p>
                    <ul>
                        <li><strong>1. Sitio web:</strong> Tu cara al mundo.</li>
                        <li><strong>2. Redes sociales con propósito:</strong> Elige las correctas.</li>
                        <li><strong>3. Email marketing:</strong> La relación directa.</li>
                        <li><strong>4. Contenido que eduque:</strong> Conviértete en referencia.</li>
                        <li><strong>5. Atención al cliente:</strong> Cada interacción cuenta.</li>
                    </ul>`
    }];

    function cargarBlog() {
        const grid = document.getElementById('blogGrid');
        grid.innerHTML = '';
        blogData.forEach(articulo => {
            const div = document.createElement('div');
            div.className = 'blog-card';
            div.innerHTML = `
                <img src="${articulo.imagen}" alt="${articulo.titulo}" />
                <div class="blog-contenido">
                    <span class="categoria">${articulo.categoria}</span>
                    <h3>${articulo.titulo}</h3>
                    <p>${articulo.resumen}</p>
                    <div class="blog-completo">${articulo.contenido}</div>
                    <a href="#" onclick="toggleArticulo(this); return false;" class="leer-mas">Leer más →</a>
                    <a href="#" onclick="toggleArticulo(this); return false;" class="btn-cerrar">← Cerrar</a>
                </div>
            `;
            grid.appendChild(div);
        });
    }

    function toggleArticulo(el) {
        const card = el.closest('.blog-card');
        if (card.classList.contains('expandido')) {
            card.classList.remove('expandido');
            el.textContent = 'Leer más →';
        } else {
            card.classList.add('expandido');
            el.textContent = '← Leer menos';
        }
    }

    // ============================================================
    // TOAST
    // ============================================================
    function mostrarToast(mensaje) {
        const toast = document.getElementById('toast');
        document.getElementById('toast-mensaje').textContent = mensaje;
        toast.classList.add('visible');
        setTimeout(() => toast.classList.remove('visible'), 5000);
    }

    // ============================================================
    // ATALAS DE TECLADO
    // ============================================================
    document.addEventListener('keydown', function(e) {
        if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'C') {
            e.preventDefault();
            abrirPanelClientes();
        }
        if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'A') {
            e.preventDefault();
            abrirPanelAdmin();
        }
        if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'U') {
            e.preventDefault();
            abrirPanelRegistro();
        }
        if (e.key === 'Escape') {
            if (document.getElementById('panelClientes').classList.contains('visible')) cerrarPanelClientes();
            if (document.getElementById('panelAdmin').classList.contains('visible')) cerrarPanelAdmin();
            if (document.getElementById('panelRegistro').classList.contains('visible')) cerrarPanelRegistro();
        }
    });

    // ============================================================
    // INICIALIZAR
    // ============================================================
    document.addEventListener('DOMContentLoaded', function() {
        cargarConfiguracion();
        actualizarFrontend();
        cargarTestimonios();
        cargarBlog();
        initPayPal();
        mostrarCamposPoemas();
        setInterval(actualizarFrontend, 60000);
    });
</script>