<html>

<head>
  <base href="https://comprobantex.pages.dev/">
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Generar Comprobante</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js"></script>
  <style>
    body {
      margin: 0;
      padding: 20px;
      min-height: 100vh;
      width: 100%;
      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
      background: linear-gradient(135deg, #1a1f25, #2c3e50);
      box-sizing: border-box;
      display: flex;
      justify-content: center;
      align-items: center;
    }

    .container {
      width: 90%;
      max-width: 600px;
      background: rgba(255, 255, 255, 0.95);
      border-radius: 20px;
      padding: 2rem;
      box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
      backdrop-filter: blur(10px);
      margin: auto;
    }

    h2 {
      color: #2c3e50;
      text-align: center;
      margin-bottom: 1.5rem;
      font-size: clamp(1.5rem, 4vw, 2rem);
      text-transform: uppercase;
      letter-spacing: 2px;
    }

    .comprobante {
      background: #f8f9fa;
      border-radius: 12px;
      padding: 1.5rem;
      margin: 1.5rem 0;
      box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
      color: #2c3e50;
      line-height: 1.6;
      font-size: clamp(0.9rem, 2vw, 1rem);
    }

    .instrucciones {
      background: #e8f5e9;
      padding: 1rem;
      margin: 1rem 0;
      border-radius: 8px;
      border-left: 4px solid #4caf50;
      color: #2e7d32;
      font-size: clamp(0.85rem, 2vw, 0.95rem);
    }

    .instrucciones p {
      margin: 0;
    }

    .comprobante h1 {
      font-size: clamp(1.2rem, 3vw, 1.5rem);
      color: #2c3e50;
      margin-bottom: 1rem;
    }

    .comprobante ul {
      padding-left: 1.2rem;
    }

    .comprobante li {
      margin: 0.5rem 0;
    }

    .button-container {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
      gap: 1rem;
      margin-top: 1.5rem;
    }

    .button {
      background: linear-gradient(45deg, #3498db, #2980b9);
      color: white;
      border: none;
      padding: 12px 24px;
      border-radius: 25px;
      font-size: clamp(0.85rem, 2vw, 1rem);
      cursor: pointer;
      transition: transform 0.2s, box-shadow 0.2s;
      text-transform: uppercase;
      letter-spacing: 1px;
      width: 100%;
    }

    .button:hover:not(:disabled) {
      transform: translateY(-2px);
      box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
    }

    .button:disabled {
      background: #95a5a6;
      cursor: not-allowed;
    }

    #downloadBtn {
      background: linear-gradient(45deg, #27ae60, #2ecc71);
    }

    #mensajeBienvenida,
    #mensajeEspera {
      text-align: center;
      font-weight: 500;
      margin: 1rem 0;
      padding: 0.5rem;
      border-radius: 8px;
      font-size: clamp(0.85rem, 2vw, 0.95rem);
    }

    #mensajeBienvenida {
      color: #27ae60;
      background: rgba(39, 174, 96, 0.1);
    }

    #mensajeEspera {
      color: #e74c3c;
      background: rgba(231, 76, 60, 0.1);
    }

    @media (max-width: 480px) {
      .container {
        padding: 1rem;
      }

      .comprobante {
        padding: 1rem;
      }

      .button-container {
        grid-template-columns: 1fr;
      }
    }
  </style>
</head>

<body>
  <div class="container">
    <h2>Generador de Comprobante</h2>
    <p id="mensajeBienvenida" style="display:none;"></p>
    <div id="comprobante" class="comprobante">
      Haz clic en "Generar" para obtener un comprobante.
    </div>
    <div id="instruccionesEnvio" class="instrucciones" style="display:none;">
      <p>Para completar el proceso, por favor envíe este comprobante a <strong>correo@gmail.com</strong>.
        Recibirá los detalles de acceso a su cuenta en breve.</p>
    </div>
    <div class="button-container">
      <button class="button" onclick="loginAnonimo()">Iniciar Sesión Anónima</button>
      <button class="button" onclick="generarComprobante()" id="btnGenerar" disabled>Generar</button>
      <button class="button" id="downloadBtn" onclick="descargarPDF()" style="display:none;">Descargar PDF</button>
    </div>
    <p id="mensajeEspera" style="display:none;">Ya has generado un código. No puedes generar otro.</p>
  </div>

  <script type="module">
    import { initializeApp } from "https://www.gstatic.com/firebasejs/9.10.0/firebase-app.js";
    import { getDatabase, ref, get, set } from "https://www.gstatic.com/firebasejs/9.10.0/firebase-database.js";
    import { getAuth, signInAnonymously } from "https://www.gstatic.com/firebasejs/9.10.0/firebase-auth.js";

    const firebaseConfig = {
      apiKey: "AIzaSyBjgf1pIBqqb_e8hSO2qh6cDXoDkpgOZDw",
      authDomain: "codigos-f8fb9.firebaseapp.com",
      databaseURL: "https://codigos-f8fb9-default-rtdb.firebaseio.com",
      projectId: "codigos-f8fb9",
      storageBucket: "codigos-f8fb9.firebasestorage.app",
      messagingSenderId: "956015714105",
      appId: "1:956015714105:web:547ebaf6a6b193d45ed2e8",
      measurementId: "G-9GFFSMFHV3"
    };

    const app = initializeApp(firebaseConfig);
    const database = getDatabase(app);
    const auth = getAuth(app);
    let codigoActual = '';

    window.loginAnonimo = function() {
      signInAnonymously(auth)
        .then(() => {
          console.log("Usuario autenticado anónimamente");
          const mensajeBienvenida = `Bienvenido, usuario anónimo! Ahora puedes generar tu código.`;
          document.getElementById('mensajeBienvenida').innerText = mensajeBienvenida;
          document.getElementById('mensajeBienvenida').style.display = 'block';
          document.getElementById('btnGenerar').disabled = false;
          verificarCodigoGenerado();
        })
        .catch((error) => {
          console.error("Error en la autenticación anónima:", error);
        });
    };

    async function verificarCodigoGenerado() {
      const userId = auth.currentUser.uid;
      const referencia = ref(database, 'usuarios/' + userId);

      const snapshot = await get(referencia);
      if (snapshot.exists() && snapshot.val().generado) {
        codigoActual = snapshot.val().codigo;
        mostrarComprobante(codigoActual);
        document.getElementById('downloadBtn').style.display = 'block';
      } else {
        document.getElementById('mensajeEspera').style.display = 'none';
      }
    }

    function generarCodigoReferencia() {
      const caracteres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
      let codigo = '';
      for (let i = 0; i < 10; i++) {
        const indiceAleatorio = Math.floor(Math.random() * caracteres.length);
        codigo += caracteres[indiceAleatorio];
      }
      return codigo;
    }

    function mostrarComprobante(codigo) {
      if (!codigo) return;
      codigoActual = codigo;

      const mensaje = `
        <h1>¡Gracias por tu compra!</h1>
        <p>Tu cuenta ha sido activada exitosamente. Estamos seguros de que disfrutarás de una experiencia excepcional.</p>
        <p><strong>Código de Referencia:</strong> ${codigo}</p>
        <p><strong>Consejos de seguridad importantes:</strong></p>
        <ul>
          <li>🔒 Cambia tu correo electrónico y contraseña inmediatamente</li>
          <li>🔐 Activa la autenticación en dos pasos para mayor protección</li>
          <li>⚠️ No compartas tus credenciales con nadie</li>
        </ul>
      `;
      document.getElementById('comprobante').innerHTML = mensaje;
      document.getElementById('btnGenerar').disabled = true;
      document.getElementById('downloadBtn').style.display = 'block';
      document.getElementById('instruccionesEnvio').style.display = 'block';
    }

    window.generarComprobante = async function() {
      const userId = auth.currentUser.uid;
      const referencia = ref(database, 'usuarios/' + userId);

      const snapshot = await get(referencia);
      if (snapshot.exists() && snapshot.val().generado) {
        document.getElementById("mensajeEspera").style.display = 'block';
        return;
      }

      let codigoReferencia = generarCodigoReferencia();

      await set(ref(database, 'codigos/' + codigoReferencia), { generado: true });
      await set(ref(database, 'usuarios/' + userId), { generado: true, codigo: codigoReferencia });

      mostrarComprobante(codigoReferencia);
    };

    window.descargarPDF = function() {
      const elementoComprobante = document.getElementById('comprobante');
      const opt = {
        margin: 1,
        filename: `comprobante_${codigoActual}.pdf`,
        image: { type: 'jpeg', quality: 0.98 },
        html2canvas: { scale: 2 },
        jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' }
      };

      html2pdf().set(opt).from(elementoComprobante).save();
    };
  </script>
</body>

</html>