// Componente de Logotipo Oficial de Concordia
function ConcordiaLogo({ width = 200, height = 80 }) {
  return (
    <img 
      src="logo.png" 
      alt="Concordia Jones Audio Logo" 
      style={{ 
        width: width, 
        height: 'auto', 
        maxHeight: height,
        display: 'block', 
        margin: '0 auto',
        objectFit: 'contain'
      }} 
    />
  );
}

// Componente de Panel de Administración
function AdminPanel() {
  const [password, setPassword] = React.useState('');
  const [isLoggedIn, setIsLoggedIn] = React.useState(false);
  const [error, setError] = React.useState('');
  const [loading, setLoading] = React.useState(false);
  const [sentList, setSentList] = React.useState(() => {
    try {
      const saved = localStorage.getItem('concordia_sent_tickets');
      return saved ? JSON.parse(saved) : {};
    } catch (e) {
      return {};
    }
  });

  // Lista de usuarios precargados
  const [users, setUsers] = React.useState([
    { id: 1, nombre: "Alejandra", apellidos: "Lumen", telefono: "5530410860", email: "imageplan360@gmail.com", negocio: "Registro Físico", giro: "N/A", qty: 2, total: 1500, editing: false },
    { id: 2, nombre: "Kevin David", apellidos: "Ramirez Corona", telefono: "4426018152", email: "alianzas.comerciales2020@gmail.com", negocio: "Registro Físico", giro: "N/A", qty: 2, total: 1500, editing: false },
    { id: 3, nombre: "Rodrigo", apellidos: "Aguilera", telefono: "5540957350", email: "brainfully@gmail.com", negocio: "Registro Físico", giro: "N/A", qty: 2, total: 1500, editing: false },
    { id: 4, nombre: "Nancy", apellidos: "Gomez Bousquet", telefono: "4424766145", email: "ngomez@grupopadilla.com.mx", negocio: "Registro Físico", giro: "N/A", qty: 2, total: 1500, editing: false },
    { id: 5, nombre: "Guillermo", apellidos: "Zapata", telefono: "5516525981", email: "gzapata.zem@gmail.com", negocio: "Registro Físico", giro: "N/A", qty: 2, total: 1500, editing: false },
    { id: 6, nombre: "Guadalupe", apellidos: "Cruz y Corro Sanchez", telefono: "", email: "gucruz@flowserve.com", negocio: "Registro Físico", giro: "N/A", qty: 2, total: 1500, editing: false },
    { id: 7, nombre: "Juan Carlos", apellidos: "Alvarez", telefono: "4423814592", email: "jcaim1505@gmail.com", negocio: "Registro Físico", giro: "N/A", qty: 2, total: 1500, editing: false },
    { id: 8, nombre: "Miguel", apellidos: "Meráz López", telefono: "4423427164", email: "ivonne_universalpcqro@hotmail.com", negocio: "Registro Físico", giro: "N/A", qty: 2, total: 1500, editing: false },
    { id: 9, nombre: "Lorena", apellidos: "Zorrilla", telefono: "4777542738", email: "lore.desarrolloejecutivo@gmail.com", negocio: "Registro Físico", giro: "N/A", qty: 2, total: 1500, editing: false }
  ]);

  // Formulario de registro manual
  const [manualForm, setManualForm] = React.useState({
    nombre: '',
    apellidos: '',
    telefono: '',
    email: '',
    negocio: 'Registro Físico',
    giro: 'N/A',
    qty: 2,
    total: 1500
  });

  const [manualStatus, setManualStatus] = React.useState(null); // null | sending | success | error

  React.useEffect(() => {
    // Verificar si ya hay una sesión guardada
    const savedToken = localStorage.getItem('concordia_admin_token');
    if (savedToken) {
      setIsLoggedIn(true);
    }
  }, []);

  const handleLogin = (e) => {
    e.preventDefault();
    setLoading(true);
    setError('');

    fetch('/api/admin/login', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ username: 'Admin', password })
    })
    .then(res => res.json())
    .then(data => {
      setLoading(false);
      if (data.success) {
        localStorage.setItem('concordia_admin_token', data.token);
        setIsLoggedIn(true);
      } else {
        setError(data.error || 'Credenciales incorrectas');
      }
    })
    .catch(err => {
      setLoading(false);
      setError('Error al conectar con el servidor');
    });
  };

  const handleLogout = () => {
    localStorage.removeItem('concordia_admin_token');
    setIsLoggedIn(false);
    setPassword('');
  };

  const updateSentStatus = (emailOrId, statusVal, folio = '') => {
    setSentList(prev => {
      const updated = { ...prev, [emailOrId]: { status: statusVal, folio, date: new Date().toLocaleString() } };
      localStorage.setItem('concordia_sent_tickets', JSON.stringify(updated));
      return updated;
    });
  };

  const handleSendTicket = (user) => {
    // Marcar como enviando
    updateSentStatus(user.email, 'sending');

    const token = localStorage.getItem('concordia_admin_token');

    fetch('/api/admin/enviar-boleto-fisico', {
      method: 'POST',
      headers: { 
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${token}`
      },
      body: JSON.stringify({
        nombre: user.nombre,
        apellidos: user.apellidos,
        telefono: user.telefono,
        email: user.email,
        negocio: user.negocio,
        giro: user.giro,
        qty: user.qty,
        total: user.total
      })
    })
    .then(res => res.json())
    .then(data => {
      if (data.ok) {
        updateSentStatus(user.email, 'success', data.folio);
      } else {
        updateSentStatus(user.email, 'error');
        alert('Error al enviar: ' + (data.error || 'Intente de nuevo.'));
      }
    })
    .catch(err => {
      updateSentStatus(user.email, 'error');
      alert('Error de conexión al enviar el boleto.');
    });
  };

  const handleUserChange = (id, field, value) => {
    setUsers(prev => prev.map(u => u.id === id ? { ...u, [field]: value } : u));
  };

  const toggleUserEdit = (id) => {
    setUsers(prev => prev.map(u => u.id === id ? { ...u, editing: !u.editing } : u));
  };

  const handleManualSubmit = (e) => {
    e.preventDefault();
    setManualStatus('sending');

    const token = localStorage.getItem('concordia_admin_token');

    fetch('/api/admin/enviar-boleto-fisico', {
      method: 'POST',
      headers: { 
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${token}`
      },
      body: JSON.stringify(manualForm)
    })
    .then(res => res.json())
    .then(data => {
      if (data.ok) {
        setManualStatus('success');
        updateSentStatus(manualForm.email + '_manual_' + Date.now(), 'success', data.folio);
        setManualForm({
          nombre: '',
          apellidos: '',
          telefono: '',
          email: '',
          negocio: 'Registro Físico',
          giro: 'N/A',
          qty: 2,
          total: 1500
        });
        setTimeout(() => setManualStatus(null), 5000);
      } else {
        setManualStatus('error');
        alert('Error al registrar boleto manual: ' + (data.error || 'Intente de nuevo.'));
      }
    })
    .catch(err => {
      setManualStatus('error');
      alert('Error de conexión al registrar boleto manual.');
    });
  };

  const handleManualInputChange = (e) => {
    const { name, value } = e.target;
    setManualForm(prev => ({ ...prev, [name]: value }));
  };

  if (!isLoggedIn) {
    return (
      <div className="landing-container" style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', minHeight: '80vh' }}>
        <div className="success-card" style={{ maxWidth: '450px', width: '100%', padding: '2.5rem' }}>
          <div style={{ marginBottom: '1.5rem' }}>
            <ConcordiaLogo width={180} height={70} />
          </div>
          <h2 className="success-title" style={{ fontSize: '1.6rem', marginBottom: '1.5rem' }}>Acceso Administrativo</h2>
          <form onSubmit={handleLogin}>
            <div className="form-group" style={{ textAlign: 'left' }}>
              <label className="form-label">Usuario</label>
              <input 
                type="text" 
                className="form-input" 
                value="Admin" 
                disabled 
              />
            </div>
            <div className="form-group" style={{ textAlign: 'left' }}>
              <label className="form-label">Contraseña</label>
              <input 
                type="password" 
                className="form-input" 
                placeholder="Ingresa tu contraseña" 
                value={password}
                onChange={(e) => setPassword(e.target.value)}
                required
              />
            </div>
            {error && <p style={{ color: '#ff4d4d', fontSize: '0.9rem', marginBottom: '1rem', fontWeight: '500' }}>{error}</p>}
            <button type="submit" className="btn-primary" disabled={loading}>
              {loading ? 'Validando...' : 'Iniciar Sesión'}
            </button>
          </form>
        </div>
      </div>
    );
  }

  return (
    <div className="landing-container" style={{ maxWidth: '1100px' }}>
      <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: '2rem', borderBottom: '1px solid rgba(24, 116, 193, 0.2)', paddingBottom: '1rem' }}>
        <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}>
          <div style={{ transform: 'scale(0.8)', transformOrigin: 'left center' }}>
            <ConcordiaLogo width={180} height={70} />
          </div>
          <h1 style={{ fontSize: '1.8rem', color: 'var(--text-main)', margin: 0, fontWeight: '700' }}>Panel Admin - Registro Físico</h1>
        </div>
        <button onClick={handleLogout} className="btn-primary btn-emerald" style={{ width: 'auto', padding: '0.5rem 1.5rem', fontSize: '0.9rem' }}>
          Cerrar Sesión
        </button>
      </div>

      <div style={{ display: 'grid', gridTemplateColumns: '1.3fr 0.7fr', gap: '2rem' }}>
        
        {/* LISTADO DE USUARIOS PRECARGADOS */}
        <div>
          <div className="ticket-card" style={{ padding: '2rem', marginBottom: '2rem' }}>
            <h3 style={{ borderBottom: '1px solid rgba(24,116,193,0.1)', paddingBottom: '0.8rem', marginBottom: '1.2rem', display: 'flex', alignItems: 'center', gap: '0.5rem' }}>
              <i className="fa-solid fa-list-check" style={{ color: 'var(--gold-primary)' }}></i>
              Usuarios por Enviar (Pre-cargados)
            </h3>
            <p style={{ color: 'var(--text-muted)', fontSize: '0.85rem', marginBottom: '1.5rem' }}>
              Aquí se encuentran los 9 clientes que pagaron en terminal/físico. Revisa sus datos, edítalos si es necesario y dale a <strong>Enviar</strong> para enviarles su QR y registrarlos en Sheets.
            </p>

            <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>
              {users.map(user => {
                const statusInfo = sentList[user.email] || { status: 'pending' };
                const isSent = statusInfo.status === 'success';
                const isSending = statusInfo.status === 'sending';

                return (
                  <div key={user.id} style={{ 
                    border: '1px solid rgba(24, 116, 193, 0.15)', 
                    borderRadius: '12px', 
                    padding: '1.2rem', 
                    background: isSent ? 'rgba(0, 176, 116, 0.03)' : 'rgba(0,0,0,0.01)',
                    borderColor: isSent ? 'rgba(0, 176, 116, 0.2)' : 'rgba(24, 116, 193, 0.15)',
                    transition: 'all 0.3s ease'
                  }}>
                    {user.editing ? (
                      <div>
                        <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '0.8rem', marginBottom: '0.8rem' }}>
                          <div>
                            <label style={{ fontSize: '0.75rem', color: 'var(--gold-glow)' }}>Nombre</label>
                            <input 
                              type="text" 
                              className="form-input" 
                              style={{ padding: '0.5rem' }} 
                              value={user.nombre} 
                              onChange={(e) => handleUserChange(user.id, 'nombre', e.target.value)} 
                            />
                          </div>
                          <div>
                            <label style={{ fontSize: '0.75rem', color: 'var(--gold-glow)' }}>Apellidos</label>
                            <input 
                              type="text" 
                              className="form-input" 
                              style={{ padding: '0.5rem' }} 
                              value={user.apellidos} 
                              onChange={(e) => handleUserChange(user.id, 'apellidos', e.target.value)} 
                            />
                          </div>
                        </div>
                        <div style={{ display: 'grid', gridTemplateColumns: '1.2fr 0.8fr', gap: '0.8rem', marginBottom: '0.8rem' }}>
                          <div>
                            <label style={{ fontSize: '0.75rem', color: 'var(--gold-glow)' }}>Email</label>
                            <input 
                              type="email" 
                              className="form-input" 
                              style={{ padding: '0.5rem' }} 
                              value={user.email} 
                              onChange={(e) => handleUserChange(user.id, 'email', e.target.value)} 
                            />
                          </div>
                          <div>
                            <label style={{ fontSize: '0.75rem', color: 'var(--gold-glow)' }}>Teléfono</label>
                            <input 
                              type="text" 
                              className="form-input" 
                              style={{ padding: '0.5rem' }} 
                              value={user.telefono} 
                              onChange={(e) => handleUserChange(user.id, 'telefono', e.target.value)} 
                            />
                          </div>
                        </div>
                        <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '0.8rem', marginBottom: '0.8rem' }}>
                          <div>
                            <label style={{ fontSize: '0.75rem', color: 'var(--gold-glow)' }}>Negocio</label>
                            <input 
                              type="text" 
                              className="form-input" 
                              style={{ padding: '0.5rem' }} 
                              value={user.negocio} 
                              onChange={(e) => handleUserChange(user.id, 'negocio', e.target.value)} 
                            />
                          </div>
                          <div>
                            <label style={{ fontSize: '0.75rem', color: 'var(--gold-glow)' }}>Giro</label>
                            <input 
                              type="text" 
                              className="form-input" 
                              style={{ padding: '0.5rem' }} 
                              value={user.giro} 
                              onChange={(e) => handleUserChange(user.id, 'giro', e.target.value)} 
                            />
                          </div>
                        </div>
                        <div style={{ display: 'flex', gap: '0.5rem', justifyContent: 'flex-end' }}>
                          <button 
                            onClick={() => toggleUserEdit(user.id)} 
                            className="btn-primary" 
                            style={{ width: 'auto', padding: '0.4rem 1rem', fontSize: '0.8rem', background: '#4b5563' }}
                          >
                            Guardar
                          </button>
                        </div>
                      </div>
                    ) : (
                      <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: '1rem' }}>
                        <div>
                          <h4 style={{ margin: 0, fontSize: '1.1rem', color: 'var(--text-main)', fontWeight: '600' }}>
                            {user.nombre} {user.apellidos}
                          </h4>
                          <p style={{ margin: '0.2rem 0', fontSize: '0.85rem', color: 'var(--text-muted)' }}>
                            <i className="fa-solid fa-envelope" style={{ marginRight: '0.4rem' }}></i> {user.email} | 
                            <i className="fa-solid fa-phone" style={{ margin: '0 0.4rem' }}></i> {user.telefono || 'Sin número'}
                          </p>
                          <p style={{ margin: 0, fontSize: '0.8rem', color: 'var(--gold-primary)' }}>
                            🏷️ {user.negocio} ({user.giro}) • 🎟️ {user.qty} boletos • $MXN {user.total}
                          </p>
                          {isSent && (
                            <span style={{ display: 'inline-block', marginTop: '0.4rem', fontSize: '0.75rem', background: 'rgba(0,176,116,0.15)', color: '#008c5a', padding: '0.1rem 0.5rem', borderRadius: '4px', fontWeight: 'bold' }}>
                              ✅ Enviado (Folio: #{statusInfo.folio}) - {statusInfo.date}
                            </span>
                          )}
                        </div>
                        <div style={{ display: 'flex', gap: '0.5rem' }}>
                          <button 
                            onClick={() => toggleUserEdit(user.id)} 
                            className="btn-primary" 
                            style={{ width: 'auto', padding: '0.5rem', background: 'rgba(0,0,0,0.05)', color: 'var(--text-main)', border: '1px solid rgba(0,0,0,0.1)' }}
                            disabled={isSent || isSending}
                            title="Editar datos"
                          >
                            <i className="fa-pencil fas"></i>
                          </button>
                          <button 
                            onClick={() => handleSendTicket(user)} 
                            className={`btn-primary ${isSent ? 'btn-emerald' : ''}`} 
                            style={{ 
                              width: 'auto', 
                              padding: '0.5rem 1.2rem', 
                              fontSize: '0.85rem', 
                              background: isSent ? '#00b074' : 'var(--gold-primary)',
                              opacity: isSending ? 0.7 : 1
                            }}
                            disabled={isSent || isSending}
                          >
                            {isSending ? (
                              <><div className="loader-spinner" style={{ width: '12px', height: '12px', borderLeftColor: '#fff', display: 'inline-block', marginRight: '0.4rem' }}></div>Enviando...</>
                            ) : isSent ? (
                              'Enviado ✔'
                            ) : (
                              <>Enviar QR <i className="fa-paper-plane fas" style={{ marginLeft: '0.4rem' }}></i></>
                            )}
                          </button>
                        </div>
                      </div>
                    )}
                  </div>
                );
              })}
            </div>
          </div>
        </div>

        {/* REGISTRO MANUAL DE BOLETOS FÍSICOS */}
        <div>
          <div className="ticket-card" style={{ padding: '2rem' }}>
            <h3 style={{ borderBottom: '1px solid rgba(24,116,193,0.1)', paddingBottom: '0.8rem', marginBottom: '1.2rem', display: 'flex', alignItems: 'center', gap: '0.5rem' }}>
              <i className="fa-solid fa-user-plus" style={{ color: 'var(--gold-primary)' }}></i>
              Registro Manual
            </h3>
            <p style={{ color: 'var(--text-muted)', fontSize: '0.85rem', marginBottom: '1.5rem' }}>
              Utiliza este formulario para registrar a cualquier otro cliente que pague en físico y enviarle su QR de acceso de forma instantánea.
            </p>

            <form onSubmit={handleManualSubmit}>
              <div className="form-group">
                <label className="form-label">Nombre *</label>
                <input 
                  type="text" 
                  name="nombre" 
                  className="form-input" 
                  value={manualForm.nombre} 
                  onChange={handleManualInputChange} 
                  required 
                />
              </div>
              <div className="form-group">
                <label className="form-label">Apellidos *</label>
                <input 
                  type="text" 
                  name="apellidos" 
                  className="form-input" 
                  value={manualForm.apellidos} 
                  onChange={handleManualInputChange} 
                  required 
                />
              </div>
              <div className="form-group">
                <label className="form-label">Correo Electrónico *</label>
                <input 
                  type="email" 
                  name="email" 
                  className="form-input" 
                  value={manualForm.email} 
                  onChange={handleManualInputChange} 
                  required 
                />
              </div>
              <div className="form-group">
                <label className="form-label">Teléfono</label>
                <input 
                  type="text" 
                  name="telefono" 
                  className="form-input" 
                  value={manualForm.telefono} 
                  onChange={handleManualInputChange} 
                />
              </div>
              <div className="form-group">
                <label className="form-label">Negocio / Marca</label>
                <input 
                  type="text" 
                  name="negocio" 
                  className="form-input" 
                  value={manualForm.negocio} 
                  onChange={handleManualInputChange} 
                />
              </div>
              <div className="form-group">
                <label className="form-label">Giro Comercial</label>
                <input 
                  type="text" 
                  name="giro" 
                  className="form-input" 
                  value={manualForm.giro} 
                  onChange={handleManualInputChange} 
                />
              </div>
              <div className="form-row">
                <div className="form-group">
                  <label className="form-label">Boletos</label>
                  <input 
                    type="number" 
                    name="qty" 
                    className="form-input" 
                    value={manualForm.qty} 
                    onChange={handleManualInputChange} 
                    min="1"
                    required 
                  />
                </div>
                <div className="form-group">
                  <label className="form-label">Total MXN</label>
                  <input 
                    type="number" 
                    name="total" 
                    className="form-input" 
                    value={manualForm.total} 
                    onChange={handleManualInputChange} 
                    min="0"
                    required 
                  />
                </div>
              </div>

              {manualStatus === 'success' && (
                <p style={{ color: '#00b074', fontWeight: '600', fontSize: '0.9rem', marginBottom: '1rem' }}>
                  ✔ ¡Boleto registrado y enviado con éxito!
                </p>
              )}

              <button 
                type="submit" 
                className="btn-primary" 
                style={{ background: 'var(--emerald-primary)' }}
                disabled={manualStatus === 'sending'}
              >
                {manualStatus === 'sending' ? 'Procesando...' : 'Registrar y Enviar'}
              </button>
            </form>
          </div>
        </div>

      </div>
    </div>
  );
}

function App() {
  const isAdminPath = window.location.pathname === '/admin';
  
  if (isAdminPath) {
    return <AdminPanel />;
  }

  // --- ESTADOS PRINCIPALES ---
  const [modalOpen, setModalOpen] = React.useState(false);
  const [loading, setLoading] = React.useState(false);
  const [successData, setSuccessData] = React.useState(null);
  const [paymentStatus, setPaymentStatus] = React.useState('normal'); // normal | success | cancel
  
  // Datos del formulario de registro
  const [formData, setFormData] = React.useState({
    nombre: '',
    apellidos: '',
    negocio: '',
    giro: '',
    telefono: '',
    email: '',
    qty: 1
  });

  const calculateTotal = (qty) => {
    const pairs = Math.floor(qty / 2);
    const singles = qty % 2;
    return (pairs * 1500) + (singles * 1300);
  };

  // --- DETECTAR REDIRECCIÓN DE PAGO (URL) ---
  React.useEffect(() => {
    const params = new URLSearchParams(window.location.search);
    const pago = params.get('pago');
    const sessionId = params.get('session_id');

    if (pago === 'ok' && sessionId) {
      setPaymentStatus('success');
      setLoading(true);
      
      // 1. Obtener detalles de la compra desde el backend
      fetch(`/session-details?id=${sessionId}`)
        .then(res => res.json())
        .then(data => {
          if (data.error) throw new Error(data.error);
          setSuccessData(data);
          
          // 2. Disparar proceso de confirmación de correo y Google Sheets
          return fetch('/send-confirmacion', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ session_id: sessionId })
          });
        })
        .then(res => res.json())
        .then(resData => {
          console.log('Confirmación automatizada enviada:', resData);
          setLoading(false);
        })
        .catch(err => {
          console.error('Error procesando confirmación de pago:', err);
          setLoading(false);
        });
    } else if (pago === 'cancelado') {
      setPaymentStatus('cancel');
    }
  }, []);

  // --- MANEJADORES DE ENTRADAS ---
  const handleInputChange = (e) => {
    const { name, value } = e.target;
    setFormData(prev => ({
      ...prev,
      [name]: value
    }));
  };

  const handleQtyChange = (val) => {
    const newQty = formData.qty + val;
    if (newQty >= 1 && newQty <= 10) {
      setFormData(prev => ({ ...prev, qty: newQty }));
    }
  };

  // --- ENVIAR A STRIPE ---
  const handleCheckoutSubmit = (e) => {
    e.preventDefault();
    setLoading(true);

    fetch('/create-checkout-session', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(formData)
    })
      .then(res => res.json())
      .then(data => {
        if (data.url) {
          // Redirigir al checkout seguro de Stripe
          window.location.href = data.url;
        } else {
          alert('Error al crear la sesión de pago: ' + (data.error || 'Intente nuevamente.'));
          setLoading(false);
        }
      })
      .catch(err => {
        console.error('Error checkout:', err);
        alert('Error de conexión con el servidor.');
        setLoading(false);
      });
  };

  const handlePrint = () => {
    window.print();
  };

  const handleReset = () => {
    // Limpiar url y regresar a inicio
    window.location.href = window.location.origin + window.location.pathname;
  };

  // =========================================================================
  // RENDER 1: PANTALLA DE ÉXITO (VIP BOARDING PASS TICKET)
  // =========================================================================
  if (paymentStatus === 'success') {
    return (
      <div className="landing-container">
        {loading ? (
          <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', minHeight: '60vh', gap: '1.5rem' }}>
            <div className="loader-spinner" style={{ width: '50px', height: '50px', borderLeftColor: '#d4af37' }}></div>
            <h3 style={{ color: '#d4af37', fontFamily: 'var(--font-serif)', fontSize: '1.5rem' }}>Procesando tu Registro...</h3>
            <p style={{ color: 'var(--text-muted)', fontSize: '0.95rem' }}>Generando pase QR y enviando confirmación por correo.</p>
          </div>
        ) : successData ? (
          <div className="success-card">
            <div className="success-badge">
              <i className="fa-solid fa-check"></i>
            </div>
            <h1 className="success-title">¡Registro de Acceso Confirmado!</h1>
            <p className="success-desc">
              Hola <strong>{successData.nombreCompleto}</strong>, tu pase de abordaje se ha registrado con éxito en el sistema. Hemos enviado tu boleto oficial en formato digital y los detalles del evento a tu correo <strong>{successData.email}</strong>.
            </p>

            {/* PASE DE ABORDAR PREMIUM IMPRIMIBLE */}
            <div className="boarding-pass" id="printable-ticket">
              <div className="pass-header" style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', padding: '1rem 1.5rem' }}>
                <div style={{ transform: 'scale(0.8)', transformOrigin: 'left center' }}>
                  <ConcordiaLogo width={160} height={60} />
                </div>
                <span className="pass-folio" style={{ fontSize: '0.95rem' }}>FOLIO: #{successData.folio}</span>
              </div>
              <div className="pass-body">
                <div>
                  <p className="pass-field-label">ASISTENTE</p>
                  <p className="pass-field-value">{successData.nombreCompleto}</p>
                </div>
                <div style={{ textAlign: 'right' }}>
                  <p className="pass-field-label">TIPO ACCESO</p>
                  <p className="pass-field-value gold">CONEXIÓN Y NEGOCIOS</p>
                </div>
                <div>
                  <p className="pass-field-label">NEGOCIO / MARCA</p>
                  <p className="pass-field-value">{successData.negocio}</p>
                </div>
                <div style={{ textAlign: 'right' }}>
                  <p className="pass-field-label">GIRO COMERCIAL</p>
                  <p className="pass-field-value">{successData.giro}</p>
                </div>
                <div>
                  <p className="pass-field-label">CANTIDAD BOLETOS</p>
                  <p className="pass-field-value gold">{successData.cantidad} {successData.cantidad === 1 ? 'Acceso' : 'Accesos'}</p>
                </div>
                <div style={{ textAlign: 'right' }}>
                  <p className="pass-field-label">TOTAL PAGADO</p>
                  <p className="pass-field-value">$MXN {successData.total.toLocaleString('es-MX')}</p>
                </div>
                
                <div className="pass-footer" style={{ gridColumn: 'span 2', display: 'flex', justifyContent: 'space-between', alignItems: 'center', borderTop: '1px solid rgba(0, 0, 0, 0.05)', paddingTop: '1.5rem', marginTop: '1rem' }}>
                  <div>
                    <span style={{ fontSize: '11px', color: 'var(--text-muted)', display: 'block', textTransform: 'uppercase' }}>📍 UBICACIÓN</span>
                    <strong style={{ fontSize: '13px', color: 'var(--text-main)' }}>Club Altozano Qro.</strong>
                  </div>
                  <div style={{ textAlign: 'right' }}>
                    <span style={{ fontSize: '11px', color: 'var(--text-muted)', display: 'block', textTransform: 'uppercase' }}>🗓️ FECHA Y HORA</span>
                    <strong style={{ fontSize: '13px', color: 'var(--text-main)' }}>3 Jun 2026 | 7:00 PM</strong>
                  </div>
                </div>

                {/* CÓDIGO QR EN LA INTERFAZ DE ÉXITO */}
                <div style={{ gridColumn: 'span 2', textAlign: 'center', marginTop: '1.5rem', paddingTop: '1.5rem', borderTop: '1px solid rgba(0, 0, 0, 0.05)' }}>
                  <span style={{ fontSize: '10px', color: 'var(--text-muted)', display: 'block', marginBottom: '0.8rem', textTransform: 'uppercase', letterSpacing: '1px' }}>
                    {successData.cantidad === 1 ? 'TU CÓDIGO QR DE ACCESO PERSONAL' : `TU CÓDIGO QR DE ACCESO GRUPAL (${successData.cantidad} PERSONAS)`}
                  </span>
                  <div style={{ background: '#fff', padding: '0.8rem', display: 'inline-block', borderRadius: '12px' }}>
                    <img 
                      src={`https://api.qrserver.com/v1/create-qr-code/?size=180x180&data=${encodeURIComponent(window.location.origin + '/validar?folio=' + successData.folio)}`} 
                      alt="Código QR de Acceso" 
                      style={{ width: '150px', height: '150px', display: 'block' }} 
                    />
                  </div>
                  <p style={{ color: 'var(--text-muted)', fontSize: '0.8rem', marginTop: '1rem' }}>
                    Presenta este QR al staff en la entrada del evento (Válido para {successData.cantidad} {successData.cantidad === 1 ? 'persona' : 'personas'}).
                  </p>
                </div>
              </div>
            </div>

            <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '1rem', marginTop: '2rem' }}>
              <button className="btn-primary" onClick={handlePrint}>
                <i className="fa-solid fa-print"></i> Imprimir Pase / Guardar PDF
              </button>
              <button className="btn-primary btn-emerald" onClick={handleReset}>
                <i className="fa-solid fa-house"></i> Volver al Inicio
              </button>
            </div>
          </div>
        ) : (
          <div className="success-card" style={{ padding: '4rem 2rem' }}>
            <div className="success-badge" style={{ borderColor: 'red', color: 'red', background: 'rgba(255,0,0,0.1)' }}>
              <i className="fa-solid fa-xmark"></i>
            </div>
            <h1 className="success-title" style={{ color: '#ff4d4d' }}>Error de Sincronización</h1>
            <p className="success-desc">
              No pudimos recuperar los detalles del registro en este momento. Sin embargo, si tu pago con Stripe fue exitoso, recibirás la confirmación en tu correo a la brevedad.
            </p>
            <button className="btn-primary" onClick={handleReset}>Volver a intentar</button>
          </div>
        )}
      </div>
    );
  }

  // =========================================================================
  // RENDER 2: PANTALLA DE CANCELADO
  // =========================================================================
  if (paymentStatus === 'cancel') {
    return (
      <div className="landing-container" style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', minHeight: '70vh' }}>
        <div className="success-card" style={{ maxWidth: '500px' }}>
          <div className="success-badge" style={{ borderColor: '#f59e0b', color: '#f59e0b', background: 'rgba(245, 158, 11, 0.1)' }}>
            <i className="fa-solid fa-triangle-exclamation"></i>
          </div>
          <h1 className="success-title">Pago Cancelado</h1>
          <p className="success-desc">
            El proceso de pago fue cancelado y no se ha realizado ningún cargo. Si tuviste inconvenientes con tu tarjeta, puedes volver a intentarlo cuando gustes.
          </p>
          <button className="btn-primary" onClick={handleReset}>
            Volver a Intentar
          </button>
        </div>
      </div>
    );
  }

  // =========================================================================
  // RENDER 3: LANDING PAGE PRINCIPAL
  // =========================================================================
  return (
    <div className="landing-container">
      
      {/* HEADER DE LA PÁGINA */}
      <header className="header" style={{ padding: '0.8rem 2rem' }}>
        <a href="#" className="logo-container" style={{ display: 'flex', alignItems: 'center' }}>
          <ConcordiaLogo width={170} height={70} />
        </a>
        <div className="nav-actions">
          <div className="event-date-badge">
            <i className="fa-regular fa-calendar-check"></i> 3 DE JUNIO 2026 I 7:00 PM
          </div>
        </div>
      </header>

      {/* SECCIÓN HERO */}
      <main className="hero-section">
        <div className="hero-content">
          <p className="hero-tag">
            <i className="fa-solid fa-star"></i> Evento de Networking de Alto Nivel
          </p>
          <h1 className="hero-title" style={{ fontSize: '3.3rem', display: 'flex', flexDirection: 'column', alignItems: 'center' }}>
            <span style={{ zIndex: 2 }}>CONEXIÓN Y NEGOCIOS</span>
            <img src="networking-title.png" alt="Networking" style={{ width: '100%', maxWidth: '550px', height: '110px', objectFit: 'cover', objectPosition: 'left center', marginTop: '-1rem', marginBottom: '1rem', zIndex: 1, marginLeft: '-15%', paddingRight: '15%' }} />
          </h1>
          <p className="hero-subtitle">
            ¡Hola! Gracias por tu interés en nuestro evento exclusivo de networking. Te invitamos a una experiencia diseñada para conectar con empresarios, líderes y profesionales en un ambiente relajado, selecto y estratégico en Querétaro.
          </p>
          
          <div className="event-quick-details">
            <div className="quick-detail-item">
              <i className="fa-regular fa-clock quick-detail-icon"></i>
              <div className="quick-detail-text">
                <p>Fecha y Hora</p>
                <p>3 de Junio • 7:00 PM</p>
              </div>
            </div>
            <div className="quick-detail-item">
              <i className="fa-solid fa-map-pin quick-detail-icon"></i>
              <div className="quick-detail-text">
                <p>Ubicación</p>
                <p>Club Altozano Querétaro</p>
              </div>
            </div>
          </div>
        </div>

        {/* TARJETA DE VENTA PRINCIPAL (TIPO ENTRADA) */}
        <div className="ticket-card">
          <div className="ticket-header">
            <span className="ticket-phase">CUPO LIMITADO • REGÍSTRATE</span>
            <h3 className="ticket-title">Acceso Personal</h3>
            <p style={{ color: 'var(--text-muted)', fontSize: '0.9rem' }}>Incluye registro, cena y actividades de valor</p>
            
            <div className="ticket-pricing" style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', margin: '1rem 0' }}>
              <div style={{ color: 'var(--emerald-primary)', fontSize: '1.05rem', marginBottom: '0.2rem', fontWeight: 'bold', textAlign: 'center', background: 'rgba(212, 175, 55, 0.1)', padding: '0.5rem 1rem', borderRadius: '10px' }}>
                🔥 Promo Especial: 2x$1,500 • 4x$3,000 • 6x$4,500
              </div>
              <div style={{ display: 'flex', alignItems: 'baseline', justifyContent: 'center', marginTop: '0.5rem' }}>
                <span className="ticket-price-currency" style={{ color: 'var(--gold-glow)', fontSize: '1.6rem', marginRight: '0.1rem' }}>$</span>
                <span className="ticket-price-amount" style={{ color: 'var(--gold-glow)', fontSize: '3.2rem', fontWeight: '800', lineHeight: 1 }}>1,500</span>
                <span style={{ color: 'var(--text-muted)', fontSize: '0.9rem', marginLeft: '0.5rem' }}>MXN / 2 accesos</span>
              </div>
            </div>
          </div>

          <button className="btn-primary" onClick={() => setModalOpen(true)}>
            <i className="fa-solid fa-ticket"></i> Inscribirme Ahora
          </button>

          <ul className="ticket-features">
            <li className="ticket-feature-item">
              <i className="fa-solid fa-circle-check ticket-feature-icon"></i>
              <span>🍸 <strong>Catering & Cocktelería</strong></span>
            </li>
            <li className="ticket-feature-item">
              <i className="fa-solid fa-circle-check ticket-feature-icon"></i>
              <span>🤝 <strong>Networking de alto valor</strong> y conexiones reales</span>
            </li>
            <li className="ticket-feature-item">
              <i className="fa-solid fa-circle-check ticket-feature-icon"></i>
              <span>🎯 <strong>Expo y activaciones</strong></span>
            </li>
          </ul>
        </div>
      </main>

      {/* SECCIÓN ILUSTRACIÓN DEL EVENTO */}
      <section className="event-illustration-section" style={{ margin: '4rem 0' }}>
        <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(320px, 1fr))', gap: '3rem', alignItems: 'center' }}>
          <div style={{ position: 'relative', borderRadius: '20px', overflow: 'hidden', border: '1px solid var(--border-glass)', boxShadow: '0 20px 40px rgba(0,0,0,0.5)' }}>
            <img src="concordia_ilustracion.jpeg" alt="Concordia Networking Evento" style={{ width: '100%', height: 'auto', display: 'block' }} className="hover-scale" />
            <div style={{ position: 'absolute', bottom: 0, left: 0, right: 0, background: 'linear-gradient(to top, rgba(10,11,14,0.95), transparent)', padding: '3rem 1.5rem 1.5rem' }}>
              <span className="ticket-phase" style={{ fontSize: '0.75rem', marginBottom: '0.5rem', background: 'rgba(212, 175, 55, 0.25)', border: '1px solid rgba(212,175,55,0.4)' }}>CONCORDIA NETWORKING</span>
              <h3 style={{ color: '#fff', fontSize: '1.5rem', fontFamily: 'var(--font-serif)', fontWeight: 'bold' }}>Experiencia de Conexión Empresarial</h3>
            </div>
          </div>
          <div>
            <p className="section-tag" style={{ textAlign: 'left' }}>CONEXIÓN ESTRATÉGICA</p>
            <h2 className="section-title" style={{ textAlign: 'left', fontSize: '2.2rem', marginTop: '0.5rem', marginBottom: '1.5rem' }}>Impulsa tu Red de Contactos</h2>
            <p style={{ color: 'var(--text-muted)', lineHeight: '1.7', marginBottom: '1.2rem', fontSize: '1.05rem' }}>
              El Networking es la herramienta más poderosa para acelerar el crecimiento de tu negocio. Este no es solo un evento de intercambio de tarjetas; es un espacio diseñado al detalle para entablar relaciones de confianza a largo plazo con directores, tomadores de decisiones y dueños de negocio.
            </p>
            <p style={{ color: 'var(--text-muted)', lineHeight: '1.7', fontSize: '1.05rem' }}>
              Disfruta de una atmósfera sumamente selecta, diseñada para inspirar colaboración, sinergias comerciales y nuevas oportunidades de inversión.
            </p>
          </div>
        </div>
      </section>

      {/* SECCIÓN BENEFICIOS: ¿QUÉ VAS A VIVIR? */}
      <section>
        <div className="section-title-wrapper">
          <p className="section-tag">UNA EXPERIENCIA QUE CONECTA NEGOCIOS REALES</p>
          <h2 className="section-title">¿Qué Incluye tu Acceso?</h2>
        </div>

        <div className="benefits-grid">
          <div className="benefit-card">
            <div className="benefit-icon-box">
              <i className="fa-solid fa-glass-martini-alt"></i>
            </div>
            <h3 className="benefit-card-title">Coctelería & Bienvenida</h3>
            <p className="benefit-card-desc">
              Inicia la velada en un ambiente premium con mixología selecta para romper el hielo y entablar las primeras conversaciones de valor.
            </p>
          </div>
          
          <div className="benefit-card">
            <div className="benefit-icon-box">
              <i className="fa-solid fa-utensils"></i>
            </div>
            <h3 className="benefit-card-title">Cena de 3 Tiempos</h3>
            <p className="benefit-card-desc">
              Disfruta de una cena gourmet exclusiva de 3 tiempos diseñada especialmente para deleitar el paladar de los líderes empresariales asistentes.
            </p>
          </div>

          <div className="benefit-card">
            <div className="benefit-icon-box">
              <i className="fa-solid fa-handshake"></i>
            </div>
            <h3 className="benefit-card-title">Networking de Alto Valor</h3>
            <p className="benefit-card-desc">
              Estructura alianzas, agenda reuniones y genera oportunidades comerciales estratégicas con empresarios, directores y tomadores de decisiones.
            </p>
          </div>
          
          <div className="benefit-card" style={{ gridColumn: 'span 1' }}>
            <div className="benefit-icon-box">
              <i className="fa-solid fa-desktop"></i>
            </div>
            <h3 className="benefit-card-title">Presenta tu Empresa (Slide - 1 minuto)</h3>
            <p className="benefit-card-desc">
              Tendrás la oportunidad de presentar tu empresa, proyecto o servicios durante 1 minuto mediante una slide en pantalla gigante durante el evento. Facilita que compradores y vendedores te ubiquen y se conecten contigo al instante.
            </p>
          </div>
        </div>
      </section>

      {/* FOOTER */}
      <footer className="footer">
        <ConcordiaLogo width={180} height={70} />
        <p className="footer-text" style={{ marginTop: '1rem' }}>© 2026 Concordia Producciones. Todos los derechos reservados.</p>
        <div className="footer-socials">
          <a href="https://www.facebook.com/ConcordiaProducciones/" target="_blank" className="footer-social-link"><i className="fa-brands fa-facebook"></i></a>
          <a href="https://www.instagram.com/concordiaproducciones/" target="_blank" className="footer-social-link"><i className="fa-brands fa-instagram"></i></a>
          <a href="https://www.youtube.com/@concordiaproducciones" target="_blank" className="footer-social-link"><i className="fa-brands fa-youtube"></i></a>
        </div>
        
        {/* ACCESOS PARA STAFF Y ADMIN */}
        <div style={{ marginTop: '2.5rem', borderTop: '1px solid rgba(24, 116, 193, 0.1)', paddingTop: '1.5rem', display: 'flex', justifyContent: 'center', gap: '1.5rem', flexWrap: 'wrap' }}>
          <a href="/admin" style={{ color: 'var(--text-muted)', fontSize: '0.85rem', textDecoration: 'none' }}>
            <i className="fa-solid fa-lock" style={{ marginRight: '0.4rem' }}></i> Acceso Admin
          </a>
        </div>
      </footer>

      {/* BOTÓN MÓVIL PEGAJOSO DE LLAMADA A LA ACCIÓN */}
      <div className="mobile-sticky-btn">
        <button className="btn-primary" onClick={() => setModalOpen(true)}>
          <i className="fa-solid fa-ticket"></i> Inscribirme — Promoción Disponible
        </button>
      </div>

      {/* =========================================================================
         MODAL INTERACTIVO DE REGISTRO VIP
         ========================================================================= */}
      {modalOpen && (
        <div className="modal-overlay">
          <div className="modal-container">
            <button className="modal-close" onClick={() => setModalOpen(false)}>
              <i className="fa-solid fa-xmark"></i>
            </button>
            <h2 className="modal-title">Registro al Evento</h2>
            <p className="modal-subtitle">Proporciona los datos del asistente para personalizar tu pase digital.</p>
            
            <form onSubmit={handleCheckoutSubmit}>
              
              <div className="form-row">
                <div className="form-group">
                  <label className="form-label">Nombre *</label>
                  <input 
                    type="text" 
                    name="nombre" 
                    required 
                    placeholder="Escribe tu nombre"
                    className="form-input" 
                    value={formData.nombre} 
                    onChange={handleInputChange} 
                  />
                </div>
                <div className="form-group">
                  <label className="form-label">Apellidos *</label>
                  <input 
                    type="text" 
                    name="apellidos" 
                    required 
                    placeholder="Apellidos"
                    className="form-input" 
                    value={formData.apellidos} 
                    onChange={handleInputChange} 
                  />
                </div>
              </div>

              <div className="form-group">
                <label className="form-label">Nombre de tu Negocio, Marca o Servicio *</label>
                <input 
                  type="text" 
                  name="negocio" 
                  required 
                  placeholder="Empresa o proyecto personal"
                  className="form-input" 
                  value={formData.negocio} 
                  onChange={handleInputChange} 
                />
              </div>

              <div className="form-group">
                <label className="form-label">Giro o Actividad Principal *</label>
                <input 
                  type="text" 
                  name="giro" 
                  required 
                  placeholder="Ej. Consultoría, Software, Construcción"
                  className="form-input" 
                  value={formData.giro} 
                  onChange={handleInputChange} 
                />
              </div>

              <div className="form-row">
                <div className="form-group">
                  <label className="form-label">Teléfono *</label>
                  <input 
                    type="tel" 
                    name="telefono" 
                    required 
                    placeholder="10 dígitos"
                    className="form-input" 
                    value={formData.telefono} 
                    onChange={handleInputChange} 
                  />
                </div>
                <div className="form-group">
                  <label className="form-label">Correo Electrónico *</label>
                  <input 
                    type="email" 
                    name="email" 
                    required 
                    placeholder="email@ejemplo.com"
                    className="form-input" 
                    value={formData.email} 
                    onChange={handleInputChange} 
                  />
                </div>
              </div>

              {/* SELECTOR DE CANTIDAD INTERACTIVO */}
              <div className="form-group" style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', borderTop: '1px solid rgba(0,0,0,0.05)', paddingTop: '1.5rem', marginTop: '1.5rem' }}>
                <div>
                  <label className="form-label" style={{ margin: 0 }}>Cantidad de Boletos</label>
                  <p style={{ color: 'var(--text-muted)', fontSize: '0.8rem' }}>Máx 10 boletos por transacción</p>
                </div>
                <div className="qty-selector">
                  <button type="button" className="qty-btn" onClick={() => handleQtyChange(-1)}>
                    <i className="fa-solid fa-minus"></i>
                  </button>
                  <span className="qty-val">{formData.qty}</span>
                  <button type="button" className="qty-btn" onClick={() => handleQtyChange(1)}>
                    <i className="fa-solid fa-plus"></i>
                  </button>
                </div>
              </div>

              {/* TOTAL A PAGAR EN TIEMPO REAL */}
              <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', background: 'rgba(212, 175, 55, 0.05)', padding: '1rem 1.5rem', borderRadius: '12px', border: '1px solid rgba(212, 175, 55, 0.1)', marginBottom: '2rem' }}>
                <span style={{ fontSize: '0.9rem', color: 'var(--text-muted)' }}>Monto Total:</span>
                <strong style={{ fontSize: '1.4rem', color: 'var(--gold-glow)' }}>
                  $MXN {calculateTotal(formData.qty).toLocaleString('es-MX')}
                </strong>
              </div>

              <button type="submit" className="btn-primary btn-emerald" style={{ padding: '1.3rem' }} disabled={loading}>
                {loading ? (
                  <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>
                    <div className="loader-spinner"></div> Redirigiendo...
                  </div>
                ) : (
                  <>
                    <i className="fa-solid fa-credit-card"></i> Pagar Boleto
                  </>
                )}
              </button>
            </form>
          </div>
        </div>
      )}
    </div>
  );
}

// Renderizar la aplicación React
const root = ReactDOM.createRoot(document.getElementById('app'));
root.render(<App />);
