<?php include 'files/guardiankey.php'; ?>
<?php
ob_start();
session_start();
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/../logs/php_errors.log');
error_reporting(E_ALL);
ob_end_clean();

// --- Obtener datos iniciales para el valor del campo oculto (Mejora) ---
// Normalmente, en un CMS real, cargarías los datos aquí para evitar el valor estático.
// Pero ya que dependemos de AJAX, mantenemos el valor por defecto para el primer render.
// Podrías añadir lógica aquí si quisieras renderizado inicial con PHP.
$default_bg_image = 'img/bg-offer-sim.jpg';
$default_offer_title_2 = 'GET 25% OFF';
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>Página De Oferta FlowCMS™ De OrozDesign Powered By OrozCO</title>
  <meta name="robots" content="noindex, nofollow">

    <link rel="icon" type="image/png" href="img/favicon.png">
    <link rel="apple-touch-icon" href="img/apple-touch-icon.png">

    <?php include 'files/gtm-head.php'; ?>
    
    <script src="https://cdn.tailwindcss.com"></script>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Barlow:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet">
    
    <script src="https://unpkg.com/lucide@latest"></script>

    <link rel="stylesheet" href="style.css">
    <script src="files/header-manager.js"></script>
    
<style>
    body {
    --brand-primary: #07162d; 
    --brand-secondary: #ffc857;
    --brand-accent: #9e1428; 
    --brand-light: #f5f5f5;
    --brand-dark: #040d1a; 
    }
        #preview-wrapper {
            border: 1px solid #e5e7eb; box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
            overflow: hidden; width: 100%; background-color: #fff;
            /* Estilos originales para la previsualización */
            background-color: var(--brand-primary);
            background-size: cover;
            background-position: center;
            position: relative;
        }
        #preview-overlay {
            position: absolute; inset: 0; background-color: rgba(0,0,0,0.5); z-index: 5;
        }
        #preview-map-container iframe {
            width: 100%;
            height: 100%;
            border: 0;
        }

        .toast-container {
            position: fixed;
            bottom: 20px;
            right: 20px;
            z-index: 1000;
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        .toast {
            background-color: #333;
            color: white;
            padding: 15px;
            border-radius: 8px;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
            opacity: 0;
            transform: translateY(20px);
            transition: opacity 0.3s ease-out, transform 0.3s ease-out;
            min-width: 250px;
        }
        .toast.show {
            opacity: 1;
            transform: translateY(0);
        }
        .file-upload-preview {
            width: 100%; height: 150px; border: 2px dashed #d1d5db; border-radius: 0.5rem;
            display: flex; align-items: center; justify-content: center;
            background-size: cover; background-position: center; position: relative;
            color: #6b7280; font-weight: 600;
        }
        .file-upload-preview.has-image::before {
            content: ''; position: absolute; inset: 0; background-color: rgba(0,0,0,0.5); border-radius: 0.5rem;
        }
        .file-upload-preview .upload-text { z-index: 10; background-color: rgba(255,255,255,0.7); padding: 8px 16px; border-radius: 8px; }
        .file-upload-preview input[type="file"] { display: none; }
 </style>
 
</head>
<body data-page-title="SiteFlow® Página De Oferta Especial"
      data-page-subtitle="Gestiona el contenido, el descuento y el temporizador"
      data-page-icon="tag">

    <div id="toast-container" class="toast-container"></div>

    <?php include 'files/gtm-body.php'; ?>

<div class="relative min-h-screen md:flex">

    <div id="sidebar-overlay" class="fixed inset-0 bg-black bg-opacity-50 z-30 hidden md:hidden"></div>
    <div id="task-panel-overlay" class="off-canvas-overlay"></div> 
    
    <?php include 'cms-menu.php'; ?>

    <main class="flex-1 overflow-y-auto">
        <header class="bg-white shadow-sm p-4 flex justify-between items-center sticky top-0 z-20">
            <button id="mobile-menu-button" class="md:hidden text-gray-600 hover:text-gray-800">
                <i data-lucide="menu" class="w-6 h-6"></i>
            </button>
            <div class="page-header-container">
                <h2 id="page-title"></h2>
                <p id="page-subtitle"></p>
            </div>
        </header>

        <div id="content-area" class="p-4 md:p-8">
            <form id="offer-editor-form" action="cms/offer-update.php" method="POST" enctype="multipart/form-data">
                <div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
                    
                    <div class="lg:col-span-1 bg-white p-6 rounded-xl shadow-md space-y-6">
                        
                        <div>
                            <h4 class="text-xl font-extrabold text-gray-700 mb-4 flex items-center gap-2 border-b pb-2"><i data-lucide="image" class="w-6 h-6 text-[var(--color-primary)]"></i> IMAGEN DE FONDO</h4>
                            <label for="offer-bg-image-upload" class="file-upload-preview cursor-pointer has-image" id="offer-bg-image-preview" style="background-image: url('<?php echo $default_bg_image; ?>');">
                                <span class="upload-text">Cambiar Imagen</span>
                                <input type="file" id="offer-bg-image-upload" name="offer-bg-image-upload" accept="image/*">
                                <input type="hidden" id="current-offer-bg-image" name="current-offer-bg-image" value="<?php echo $default_bg_image; ?>"> 
                            </label>
                        </div>

                        <div>
                            <h4 class="text-xl font-extrabold text-gray-700 mb-4 flex items-center gap-2 border-b pb-2"><i data-lucide="text" class="w-6 h-6 text-[var(--color-primary)]"></i> TEXTOS DE LA OFERTA</h4>
                            <div class="space-y-4">
                                <div>
                                    <label for="offer-title-1" class="block text-gray-700 text-sm font-bold mb-2 uppercase">Título (Línea 1)</label>
                                    <input type="text" id="offer-title-1" name="offer-title-1" class="w-full p-3 border border-gray-300 rounded-lg">
                                </div>
                                <div>
                                    <label for="offer-description" class="block text-gray-700 text-sm font-bold mb-2 uppercase">Descripción Principal</label>
                                    <textarea id="offer-description" name="offer-description" rows="3" class="w-full p-3 border border-gray-300 rounded-lg"></textarea>
                                </div>
                            </div>
                        </div>

                        <div class="border-t border-gray-200 pt-6">
                            <h4 class="text-xl font-extrabold text-gray-700 mb-4 flex items-center gap-2 border-b pb-2"><i data-lucide="gift" class="w-6 h-6 text-[var(--color-primary)]"></i> CONFIGURACIÓN DE DESCUENTO</h4>
                            <div class="space-y-4">
                                <div>
                                    <label for="discount-type" class="block text-gray-700 text-sm font-bold mb-2 uppercase">Tipo de Descuento</label>
                                    <select id="discount-type" name="discount-type" class="w-full p-3 border border-gray-300 rounded-lg bg-white">
                                        <option value="percentage">Porcentaje (%)</option>
                                        <option value="fixed_amount">Monto Fijo ($)</option>
                                        <option value="special_price">Precio Especial (Texto Fijo)</option>
                                    </select>
                                </div>

                                <div id="discount-fields">
                                    <div id="numeric-discount-field" class="space-y-4">
                                        <div>
                                            <label for="discount-value" class="block text-gray-700 text-sm font-bold mb-2 uppercase">Valor del Descuento (Solo número)</label>
                                            <input type="number" step="0.01" id="discount-value" name="discount-value" class="w-full p-3 border border-gray-300 rounded-lg" value="25">
                                            <p class="text-xs text-gray-500 mt-1" id="discount-helper-text">El título 2 se actualizará automáticamente (ej. GET 25% OFF).</p>
                                        </div>
                                    </div>
                                    <div id="special-price-field" class="space-y-4 hidden">
                                        <div>
                                            <label for="offer-title-2-special" class="block text-gray-700 text-sm font-bold mb-2 uppercase">Título (Línea 2) - Texto Fijo</label>
                                            <input type="text" id="offer-title-2-special" name="offer-title-2-special" class="w-full p-3 border border-gray-300 rounded-lg" placeholder="Ej: 'SPECIAL PRICE $199'">
                                            <p class="text-xs text-gray-500 mt-1">Este texto reemplaza la línea 2 del título principal.</p>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>

                        <div class="border-t border-gray-200 pt-6">
                            <h4 class="text-xl font-extrabold text-gray-700 mb-4 flex items-center gap-2 border-b pb-2"><i data-lucide="columns-2" class="w-6 h-6 text-[var(--color-primary)]"></i> FORMULARIO Y URGENCIA</h4>
                            <div class="space-y-4">
                                <div>
                                    <label for="modal-title" class="block text-gray-700 text-sm font-bold mb-2 uppercase">Título del Formulario (Modal)</label>
                                    <input type="text" id="modal-title" name="modal-title" class="w-full p-3 border border-gray-300 rounded-lg">
                                </div>
                                <div>
                                    <label for="modal-subtitle" class="block text-gray-700 text-sm font-bold mb-2 uppercase">Subtítulo del Formulario</label>
                                    <input type="text" id="modal-subtitle" name="modal-subtitle" class="w-full p-3 border border-gray-300 rounded-lg">
                                </div>
                                <div class="flex items-center space-x-2">
                                    <input type="checkbox" id="timer-enabled" name="timer-enabled" class="h-4 w-4 text-[var(--color-primary)] border-gray-300 rounded">
                                    <label for="timer-enabled" class="text-sm font-medium text-gray-700">Habilitar Temporizador (Contador de 24h)</label>
                                </div>
                            </div>
                        </div>

                        <div class="border-t border-gray-200 pt-6 flex justify-end gap-4">
                            <button type="submit" class="btn-primary font-bold py-3 px-8 rounded-lg uppercase text-sm flex items-center justify-center gap-2">
                                <i data-lucide="save" class="w-5 h-5"></i>
                                <span>Guardar Cambios</span>
                            </button>
                        </div>
                    </div>
                    
                    <div class="lg:col-span-1 space-y-8">
                        
                        <div id="preview-wrapper" class="rounded-xl p-6 md:p-12 text-white" style="background-image: url('<?php echo $default_bg_image; ?>');">
                            <div id="preview-overlay"></div>
                            
                            <div id="preview-content-grid" class="grid grid-cols-1 md:grid-cols-2 gap-8 relative z-10">
                                
                                <div class="space-y-4 max-w-sm">
                                    <img src="img/logo-sim.png" alt="Website Logo" class="h-10 w-auto mb-4" id="preview-logo-img"> 
                                    <p class="text-[var(--color-highlight)] font-bold text-sm" id="preview-offer-title-1">RECLAIM YOUR TIME, AND</p>
                                    <h1 class="font-extrabold leading-none text-5xl" id="preview-offer-title-2"><?php echo $default_offer_title_2; ?></h1>
                                    
                                    <div id="preview-timer-box" class="p-2 inline-flex items-center gap-2 rounded-lg bg-[var(--color-highlight)] text-gray-800 font-extrabold text-xl">
                                        <i data-lucide="clock" class="w-6 h-6"></i>
                                        <span id="preview-timer-text">OFFER ENDS IN: 23:51:10</span>
                                    </div>
                                    
                                    <p class="text-white/90 pt-4 text-sm" id="preview-offer-description">Stop cleaning, start living! Enter your details on the right to instantly secure your discount and see your space shine effortlessly.</p>
                                </div>
                                
                                <div class="flex items-center justify-center">
                                    <div class="bg-white text-gray-800 rounded-xl p-6 max-w-sm w-full">
                                        <h5 class="text-lg font-bold text-center" id="preview-modal-title">Claim Your Coupon NOW!</h5>
                                        <p class="text-xs text-gray-500 text-center mb-4" id="preview-modal-subtitle">Takes Less Than 30 Seconds</p>
                                        <div class="bg-gray-200 h-64 rounded-md flex items-center justify-center text-gray-600 text-sm"></div>
                                    </div>
                                </div>
                            </div>
                        </div>

                                                <div id="video-instrucciones" class="space-y-6">
                            <div class="w-full">
                                <div class="bg-black/40 rounded-xl ring-1 ring-white/10 overflow-hidden">
                                    <div class="relative w-full" style="padding-bottom: 56.25%;">
                                        <video class="absolute top-0 left-0 w-full h-full object-cover" id="videoPlayer" controls controlslist="nodownload fullscreen" preload="metadata">
                                            <source src="https://samplelib.com/lib/preview/mp4/sample-5s.mp4" type="video/mp4">
                                            TU NAVEGADOR NO SOPORTA LA ETIQUETA DE VIDEO
                                        </video>
                                        <div id="playOverlay" class="absolute inset-0 flex justify-center items-center cursor-pointer group">
                                            <img src="img/VideoLeccion-IAMarketing.jpg" alt="VideoLeccion - IAMarketing" class="absolute inset-0 w-full h-full object-cover">
                                            <div class="absolute inset-0 w-full h-full bg-black/40 transition-colors group-hover:bg-black/60"></div>
                                            <i data-lucide="play" class="relative w-16 h-16 text-white opacity-80 group-hover:opacity-100 transition-opacity"></i>
                                        </div>
                                    </div>
                                    <div class="p-4 text-white/90 text-sm flex items-center justify-between">
                                        <span class="inline-flex items-center gap-2">
                                            <i data-lucide="play-circle" class="w-4 h-4"></i> Video Tutorial
                                        </span>
                                        <span class="inline-flex items-center gap-2">
                                            <i data-lucide="clock" class="w-4 h-4"></i> 2–3 min
                                        </span>
                                    </div>
                                </div>
                            </div>
                            <div class="bg-white p-6 rounded-xl shadow-md">
                                <div class="text-center md:text-left mb-6">
                                    <h4 class="text-2xl font-black uppercase text-black flex items-center justify-center md:justify-start">
                                        <i data-lucide="book-open" class="mr-3 text-[var(--color-highlight)] w-7 h-7"></i>
                                        INSTRUCCIONES IMPORTANTES
                                    </h4>
                                    <p class="step-subtitle uppercase text-sm mt-1 text-gray-500">REVISA ESTOS PUNTOS DETALLADAMENTE</p>
                                </div>

                                <div class="space-y-4">
                                    <div class="flex items-start gap-3">
                                        <i data-lucide="play-circle" class="w-5 h-5 mt-0.5" style="color: var(--color-secondary);"></i>
                                        <div>
                                            <h5 class="font-black text-gray-800">REVISA EL VIDEO DE INSTRUCCIONES</h5>
                                            <p class="text-sm text-gray-600">Comprende cómo utilizar la plataforma y sácale el máximo provecho a todas sus herramientas.</p>
                                        </div>
                                    </div>

                                    <div class="flex items-start gap-3">
                                        <i data-lucide="target" class="w-5 h-5 mt-0.5" style="color: var(--color-secondary);"></i>
                                        <div>
                                            <h5 class="font-black text-gray-800">DEFINE BIEN LOS OBJETIVOS</h5>
                                            <p class="text-sm text-gray-600">Identifica qué quieres lograr con esta sección de la página web para una estrategia más efectiva.</p>
                                        </div>
                                    </div>

                                    <div class="flex items-start gap-3">
                                        <i data-lucide="file-text" class="w-5 h-5 mt-0.5" style="color: var(--color-secondary);"></i>
                                        <div>
                                            <h5 class="font-black text-gray-800">SÉ PRECISO Y CONCISO</h5>
                                            <p class="text-sm text-gray-600">Redacta textos persuasivos y enfocados en el valor que ofreces para impulsar tus ventas.</p>
                                        </div>
                                    </div>

                                    <div class="flex items-start gap-3">
                                        <i data-lucide="refresh-cw" class="w-5 h-5 mt-0.5" style="color: var(--color-secondary);"></i>
                                        <div>
                                            <h5 class="font-black text-gray-800">MANTÉN LA INFORMACIÓN ACTUALIZADA</h5>
                                            <p class="text-sm text-gray-600">Actualiza la información regularmente (al menos cada 3 meses) para mantener tu contenido relevante y dinámico.</p>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </form>
        </div>
    </main>
</div>

<div id="toast-container" class="toast-container"></div>

<script>
document.addEventListener('DOMContentLoaded', () => {
    // --- SETUP BÁSICO ---
    const mobileMenuButton = document.getElementById('mobile-menu-button');
    const sidebar = document.getElementById('sidebar');
    const sidebarOverlay = document.getElementById('sidebar-overlay');
    if (mobileMenuButton && sidebar && sidebarOverlay) {
        mobileMenuButton.addEventListener('click', () => { sidebar.classList.toggle('-translate-x-full'); sidebarOverlay.classList.toggle('hidden'); });
        sidebarOverlay.addEventListener('click', () => { sidebar.classList.add('-translate-x-full'); sidebarOverlay.classList.add('hidden'); });
    }

    const form = document.getElementById('offer-editor-form');

    // --- ELEMENTOS CLAVE DE DESCUENTO ---
    const discountTypeEl = document.getElementById('discount-type');
    const discountValueEl = document.getElementById('discount-value');
    const numericFieldEl = document.getElementById('numeric-discount-field');
    const specialFieldEl = document.getElementById('special-price-field');
    const specialTitleEl = document.getElementById('offer-title-2-special');
    const discountHelperText = document.getElementById('discount-helper-text');
    const timerEnabledEl = document.getElementById('timer-enabled');
    const offerBgImageUpload = document.getElementById('offer-bg-image-upload');
    const offerBgImagePreview = document.getElementById('offer-bg-image-preview');
    const currentOfferBgImage = document.getElementById('current-offer-bg-image');
    const previewWrapper = document.getElementById('preview-wrapper');
    const previewLogoImg = document.getElementById('preview-logo-img'); // Elemento añadido

    // --- PREVIEW ELEMENTS ---
    const previewOfferTitle2 = document.getElementById('preview-offer-title-2');
    const previewOfferTitle1 = document.getElementById('preview-offer-title-1');
    const previewOfferDescription = document.getElementById('preview-offer-description');
    const previewModalTitle = document.getElementById('preview-modal-title');
    const previewModalSubtitle = document.getElementById('preview-modal-subtitle');
    const previewTimerBox = document.getElementById('preview-timer-box');


    // --- LÓGICA DE DESCUENTO Y PREVIEW ---
    const updateDiscountFields = () => {
        const type = discountTypeEl.value;
        const value = discountValueEl.value;
        
        // 1. Mostrar/Ocultar campos
        const isSpecialPrice = type === 'special_price';
        numericFieldEl.classList.toggle('hidden', isSpecialPrice);
        specialFieldEl.classList.toggle('hidden', !isSpecialPrice);

        // 2. Actualizar texto auxiliar del descuento
        if (type === 'percentage') {
            discountHelperText.textContent = `El título 2 se actualizará automáticamente (ej. GET ${value}% OFF).`;
        } else if (type === 'fixed_amount') {
            discountHelperText.textContent = `El título 2 se actualizará automáticamente (ej. GET $${value} OFF).`;
        } else {
            discountHelperText.textContent = 'Este texto reemplaza la línea 2 del título principal.';
        }

        // 3. Renderizar Título 2 en el Preview
        let newTitle2;
        if (isSpecialPrice) {
            newTitle2 = specialTitleEl.value;
        } else {
            // Manejo de valores vacíos o nulos para evitar 'GET $% OFF'
            const numericValue = value ? value : '0'; 
            const symbol = type === 'percentage' ? '%' : '$';
            newTitle2 = `GET ${symbol}${numericValue} OFF`;
        }
        // Aplicamos el valor, incluso si está vacío (será solo el título 1)
        previewOfferTitle2.textContent = newTitle2; 
    };
    
    // Función para mostrar toasts de notificación
    const showToast = (message, isSuccess) => {
        const toastContainer = document.getElementById('toast-container');
        const toast = document.createElement('div');
        // Usamos la clase toast general, la clase de color se asigna en el showToast
        toast.className = `toast ${isSuccess ? 'bg-green-500' : 'bg-red-500'}`; 
        toast.innerHTML = message;
        toastContainer.appendChild(toast);
        setTimeout(() => toast.classList.add('show'), 10);
        setTimeout(() => {
            toast.classList.remove('show');
            setTimeout(() => toast.remove(), 300);
        }, 3000);
    };

    // --- BINDING GENERAL DE TEXTOS ---
    form.addEventListener('input', e => {
        const id = e.target.id;
        const value = e.target.value;

        if (id === 'discount-type' || id === 'discount-value' || id === 'offer-title-2-special') {
            updateDiscountFields();
        } else if (id === 'offer-title-1') {
            previewOfferTitle1.textContent = value;
        } else if (id === 'offer-description') {
            previewOfferDescription.textContent = value;
        } else if (id === 'modal-title') {
            previewModalTitle.textContent = value;
        } else if (id === 'modal-subtitle') {
            previewModalSubtitle.textContent = value;
        }
    });
    
    // BINDING DE TEMPORIZADOR
    timerEnabledEl.addEventListener('change', () => {
        previewTimerBox.classList.toggle('hidden', !timerEnabledEl.checked);
    });

    // BINDING DE SUBIDA DE IMAGEN
    offerBgImageUpload.addEventListener('change', (e) => {
        const file = e.target.files[0];
        if (file) {
            const reader = new FileReader();
            reader.onload = (event) => {
                const imageUrl = event.target.result;
                offerBgImagePreview.style.backgroundImage = `url('${imageUrl}')`;
                offerBgImagePreview.classList.add('has-image');
                
                // Actualizar el preview wrapper con la imagen local (Base64)
                previewWrapper.style.backgroundImage = `url('${imageUrl}')`;
                
                // NO actualizamos currentOfferBgImage.value aquí si es un archivo nuevo.
                // El backend debe manejar el archivo en $_FILES.
                // Lo dejamos sin actualizar para que el backend sepa que hay una nueva subida.
                // Si el backend necesita una ruta de fallback, usa el nombre del archivo subido.
            };
            reader.readAsDataURL(file);
        }
    });


    // Handle form submission with AJAX
    form.addEventListener('submit', async e => {
        e.preventDefault();
        const saveButton = form.querySelector('button[type="submit"]');
        const originalButtonText = saveButton.innerHTML;

        saveButton.disabled = true;
        saveButton.innerHTML = '<i data-lucide="loader" class="w-5 h-5 animate-spin"></i><span>Guardando...</span>';
        lucide.createIcons();

        const formData = new FormData(form);
        
        // CORRECCIÓN DE ENVÍO DE TÍTULO 2: Si no es special_price, el valor del Título 2 
        // se recalcula en el backend basándose en el tipo y valor.
        // Si es precio especial, sí enviamos el texto fijo para que el backend lo guarde.

        // NOTA: El backend offer-update.php ya tiene la lógica para generar offer_title_2 
        // o usar offer-title-2-special. Aseguramos que el valor se transmita.
        
        try {
            const response = await fetch(form.action, {
                method: 'POST',
                body: formData
            });
            const responseText = await response.text();
            
            let result;
            try {
                result = JSON.parse(responseText);
            } catch (jsonError) {
                showToast(`Error de servidor: Respuesta inesperada.<br><br>Respuesta: ${responseText}`, false);
                console.error("Error al parsear JSON:", jsonError, "Respuesta del servidor:", responseText);
                return;
            }

            showToast(result.message, result.success);

            if (result.success) {
                // Recargar datos para mostrar los cambios confirmados por el backend
                loadData(); 
            }
        } catch (error) {
            console.error('Error:', error);
            showToast('Ocurrió un error al guardar los cambios.', false);
        } finally {
            saveButton.disabled = false;
            saveButton.innerHTML = originalButtonText;
            lucide.createIcons();
        }
    });

// Load data from backend on page load
    const loadData = async () => {
        try {
            // Importante: La ruta 'cms/offer-read.php' asume que este archivo JS se ejecuta desde el directorio raíz.
            // Si este archivo (cms-section-offer.php) está en la carpeta 'cms/', la ruta debería ser solo 'offer-read.php'
            // O, si ambos están en la misma carpeta: 'offer-read.php'
            // Mantendremos 'cms/offer-read.php' asumiendo que el archivo de CMS principal está fuera de 'cms/'.
            const response = await fetch('cms/offer-read.php'); 
            const responseText = await response.text();

            let result;
            try {
                result = JSON.parse(responseText);
            } catch (jsonError) {
                showToast(`Error de servidor al cargar datos.<br><br>Revisa el archivo PHP.<br>Respuesta: ${responseText}`, false);
                console.error("Error al parsear JSON:", jsonError, "Respuesta del servidor:", responseText);
                return;
            }

            if (result.success && result.data) {
                const offerData = result.data.offer;
                const businessData = result.data.business;
                
                // Función auxiliar para manejar valores nulos/vacíos
                const safeValue = (value) => value ?? '';
                
                // --- 1. Cargar Logo de Negocio ---
                if (businessData && businessData.logo_url && previewLogoImg) {
                    // Si el logo_url no es una URL completa, le anteponemos '../' para que el navegador la encuentre
                    const logoUrl = businessData.logo_url.startsWith('http') ? businessData.logo_url : `../${businessData.logo_url}`;
                    previewLogoImg.src = logoUrl;
                } else if (previewLogoImg) {
                    previewLogoImg.src = 'img/logo-sim.png'; 
                }
                
                // 2. Cargar textos
                document.getElementById('offer-title-1').value = safeValue(offerData.offer_title_1);
                previewOfferTitle1.textContent = safeValue(offerData.offer_title_1);
                
                document.getElementById('offer-description').value = safeValue(offerData.offer_description);
                previewOfferDescription.textContent = safeValue(offerData.offer_description);
                
                document.getElementById('modal-title').value = safeValue(offerData.modal_title);
                previewModalTitle.textContent = safeValue(offerData.modal_title);
                
                document.getElementById('modal-subtitle').value = safeValue(offerData.modal_subtitle);
                previewModalSubtitle.textContent = safeValue(offerData.modal_subtitle);
                
                // 3. Cargar lógica de descuento
                discountTypeEl.value = safeValue(offerData.discount_type) || 'percentage';
                discountValueEl.value = safeValue(offerData.discount_value) || 0;
                // '1' o 1 son los valores válidos para un tinyint(1)
                timerEnabledEl.checked = offerData.timer_enabled == '1' || offerData.timer_enabled == 1; 

                // Si es precio especial, cargar el título 2 original en el campo de texto fijo
                if (offerData.discount_type === 'special_price') {
                    // Cargamos el offer_title_2 que viene de la BD directamente en el campo de texto fijo
                    specialTitleEl.value = safeValue(offerData.offer_title_2); 
                } else {
                    // Si no es precio especial, limpiamos el campo extra
                    specialTitleEl.value = '';
                }
                
                // 4. Cargar Imagen de Fondo (CORRECCIÓN CRÍTICA DE RUTA)
                const bgImagePath = safeValue(offerData.offer_bg_image); // Ruta: uploads/offer/...
                if (bgImagePath) {
                    // Si no es una URL completa (http), anteponemos ../ para ir a la carpeta raíz de uploads
                    const finalBgPath = bgImagePath.startsWith('http') ? bgImagePath : `../${bgImagePath}`; 
                    
                    offerBgImagePreview.style.backgroundImage = `url('${finalBgPath}')`;
                    offerBgImagePreview.classList.add('has-image');
                    previewWrapper.style.backgroundImage = `url('${finalBgPath}')`;
                    
                    // Aseguramos que el hidden field tenga la ruta relativa SIN ../ para el POST
                    currentOfferBgImage.value = bgImagePath; 
                }

                // 5. Renderizar previews finales
                previewTimerBox.classList.toggle('hidden', !timerEnabledEl.checked);
                updateDiscountFields(); // Llama a la función para renderizar el Título 2 y mostrar/ocultar campos

            }
        } catch (error) {
            console.error('Error al cargar los datos:', error);
            showToast('Error al cargar los datos.', false);
        } finally {
            lucide.createIcons();
        }
    };
    
    // Iniciar carga de datos
    loadData(); 
});
</script>

</body>
</html>