/* RESET BASE */
/* ============================= */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: 'Montserrat', sans-serif;
  background: #111;
  color: white;
  line-height: 1.6;
}

/* ✅ Ajustes globales */
img {
  max-width: 100%;
  height: auto;
  display: block;
}

input,
button {
  font-size: 16px; /* evita zoom automático en iOS */
}

/* Ajuste específico para imágenes de eventos */
.event-img {
  width: 100%;
  height: auto;
  max-width: 600px;
  display: block;
  margin: 0 auto;
}

/* ============================= */
/* NAVBAR */
/* ============================= */
.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: #06254a;
  padding: 10px 20px;
  position: sticky;
  top: 0;
  z-index: 1000;
}

.nav-left {
  display: flex;
  align-items: center;
  gap: 8px;
}

.logo {
  height: 36px;
  max-width: 160px;
  width: auto;
}

@media (max-width: 768px) {
  .logo {
    height: 28px;
    max-width: 130px;
  }
}

.hamburger {
  font-size: 22px;
  background: none;
  border: none;
  color: white;
  cursor: pointer;
}

.nav-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}

.nav-actions button {
  cursor: pointer;
  border: none;
}

/* ============================= */
/* MENÚ DERECHO */
/* ============================= */
.nav-right {
  display: none;
  flex-direction: column;
  background: #06254a;
  position: absolute;
  top: 60px;
  left: 0;
  width: 100%;
  text-align: center;
  padding: 20px 0;
}

.nav-right.show {
  display: flex;
}

.nav-right a,
.nav-right button {
  color: white;
  padding: 10px 0;
  font-size: 1.1rem;
  text-decoration: none;
  background: none;
  border: none;
  cursor: pointer;
}

.nav-right a:hover,
.nav-right button:hover {
  color: #ff3db8;
}

/* ============================= */
/* HERO */
/* ============================= */
.hero {
  height: 60vh;
  background: url("banner.jpg") center/cover no-repeat;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  position: relative;
}

.hero-overlay {
  background: rgba(0, 0, 0, 0.5);
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 0 15px;
}

.hero-overlay h1 {
  font-family: 'Anton', sans-serif;
  font-size: 2rem;
  margin-bottom: 10px;
}

.subtitle {
  font-size: 1rem;
  color: #ccc;
}

/* ============================= */
/* EVENTOS */
/* ============================= */
.event-list {
  padding: 30px 20px;
  text-align: center;
}

.event-list h2 {
  font-family: 'Anton', sans-serif;
  font-size: 1.8rem;
  margin-bottom: 20px;
}

.card {
  background: #1c1c1c;
  border-radius: 10px;
  padding: 15px;
  margin: 15px auto;
  max-width: 400px;
  text-align: center;
}

.card img {
  width: 100%;
  border-radius: 8px;
  margin-bottom: 10px;
}

/* ============================= */
/* INPUT DE CANTIDAD */
/* ============================= */
.card label {
  display: block;
  margin: 8px 0 4px;
  font-size: 0.9rem;
  font-weight: 600;
}

.card input[type="number"] {
  width: 70px;
  padding: 6px;
  border-radius: 8px;
  border: 1px solid #ccc;
  text-align: center;
  background: #222;
  color: #fff;
  font-size: 0.9rem;
  margin: 5px auto 15px;  /* centrado */
  display: block;
}

/* ============================= */
/* CONTENEDOR DE BOTONES */
/* ============================= */
.card .btns-evento {
  display: flex;
  justify-content: center;
  gap: 10px;       /* espacio entre botones */
  margin-top: 10px;
  flex-wrap: wrap; /* por si en mobile no entran */
}

/* ============================= */
/* BOTONES GENERALES */
/* ============================= */
.btn-primary,
.buy-btn,
.btn-secondary {
  min-width: 140px;
  text-align: center;
  padding: 10px 15px;
  border-radius: 20px;
  text-decoration: none;
  display: inline-block;
  font-weight: bold;
  font-size: 1rem;
  border: none;
  cursor: pointer;
  transition: background 0.3s ease;
}

/* Rosa (principal) */
.btn-primary,
.buy-btn {
  background: #ff3db8;
  color: white;
}

.btn-primary:hover,
.buy-btn:hover {
  background: #ff1fa6;
}

/* Gris secundario (para otros usos genéricos) */
.btn-secondary {
  background: #333;
  color: #fff;
}

.btn-secondary:hover {
  background: #555;
}

/* ============================= */
/* BOTONES ESPECIALES EVENTOS */
/* ============================= */
.btn-ver,
.btn-comprar {
  min-width: 140px;
  text-align: center;
  padding: 10px 15px;
  border-radius: 25px;      /* 👈 más redondo */
  text-decoration: none;
  display: inline-block;
  font-weight: bold;
  font-size: 1rem;
  border: none;
  cursor: pointer;
  transition: background 0.3s ease, transform 0.2s ease;
}

/* Botón Ver Evento (rosa) */
.btn-ver {
  background: #ff3db8;
  color: #fff;
}
.btn-ver:hover {
  background: #ff1fa6;
  transform: translateY(-2px);
}

/* Botón Comprar Entrada (azul oscuro) */
.btn-comprar {
  background: #06254a;
  color: #fff;
}
.btn-comprar:hover {
  background: #0a3870;
  transform: translateY(-2px);
}

/* Contenedor centrado */
.btns-evento {
  display: flex;
  justify-content: center;  /* centra los botones */
  align-items: center;
  gap: 12px;
  margin-top: 15px;
  flex-wrap: wrap;          /* si no entran, bajan */
}

.btns-evento .btn-ver,
.btns-evento .btn-comprar {
  flex: 0 0 auto;           /* 👈 no se estiran raro */
  max-width: 180px;
}

/* Mobile: botones apilados pero centrados */
@media (max-width: 500px) {
  .btns-evento {
    flex-direction: column;
  }
  .btns-evento .btn-ver,
  .btns-evento .btn-comprar {
    width: 100%;
    max-width: 280px;
  }
}


/* ============================= */
/* FAQ MODAL */
/* ============================= */
.faq-list {
  text-align: left;
  margin-top: 15px;
  max-height: 60vh;
  overflow-y: auto;
}

.faq-item {
  margin-bottom: 18px;
}

.faq-item h3 {
  font-size: 1rem;
  margin-bottom: 5px;
  color: #ff3db8;
}

.faq-item p {
  font-size: 0.9rem;
  color: #ddd;
  line-height: 1.4;
}

/* Oculto */
.hidden {
  display: none !important;
}


/* ============================= */
/* FOOTER */
/* ============================= */
footer {
  background: #06254a;
  text-align: center;
  padding: 15px;
  font-size: 0.9rem;
  margin-top: 40px;
}

/* ============================= */
/* MODALES */
/* ============================= */
.modal {
  display: none;
  position: fixed;
  z-index: 3000;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0,0,0,0.7);
  align-items: center;
  justify-content: center;
}

.modal.show {
  display: flex;
}

.modal-contenido {
  background: rgba(28, 28, 28, 0.95);
  color: #fff;
  padding: 25px;
  border-radius: 12px;
  max-width: 400px;
  width: 90%;
  text-align: center;
  position: relative;
  animation: aparecer 0.3s ease;
}

.modal-contenido form {
  display: flex;
  flex-direction: column;
  gap: 12px;
  align-items: center;
}

.modal-contenido input {
  width: 100%;
  padding: 10px;
  border-radius: 6px;
  border: none;
  font-size: 1rem;
  margin: 10px 0;
}

.modal-logo {
  max-width: 120px;
  margin: 0 auto 15px auto;
  display: block;
}

.modal-contenido .cerrar-modal {
  all: unset;
  position: absolute;
  top: 12px;
  right: 15px;
  color: white;
  font-size: 22px;
  font-weight: bold;
  cursor: pointer;
  line-height: 1;
}

@keyframes aparecer {
  from { opacity: 0; transform: scale(0.85); }
  to   { opacity: 1; transform: scale(1); }
}

/* ============================= */
/* PERFIL */
/* ============================= */
.btn-perfil {
  background: none;
  border: none;
  color: white;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.9rem;
}

.avatar-mini {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  object-fit: cover;
  margin-right: 4px;
  border: 2px solid #ff3db8;
}

.popup-perfil {
  position: fixed;
  top: 70px;
  right: 20px;
  background: #1c1c1c;
  padding: 20px;
  border-radius: 12px;
  text-align: center;
  color: #fff;
  width: 300px;
  box-shadow: 0px 4px 12px rgba(0,0,0,0.5);
  display: none;
  z-index: 5000;
}

.popup-perfil.show {
  display: block;
}

/* ============================= */
/* LOADER */
/* ============================= */
.loader {
  border: 4px solid rgba(255, 255, 255, 0.2);
  border-top: 4px solid #ff2fa0;
  border-radius: 50%;
  width: 40px;
  height: 40px;
  animation: ring-spin 1s linear infinite;
  margin: 10px auto;
  display: inline-block;
}

@keyframes ring-spin {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.loader-text {
  font-size: 0.85rem;
  color: #ccc;
  margin-top: 5px;
  text-align: center;
}

/* Mensajes dinámicos */
.loader-text.success {
  color: #00ff80;
  font-weight: bold;
}

.loader-text.error {
  color: #ff4d4d;
  font-weight: bold;
}

/* BOTÓN CON SPINNER */
button.loading {
  position: relative;
  color: transparent !important;
  pointer-events: none;
}

button.loading::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 18px;
  height: 18px;
  border: 2px solid #fff;
  border-top-color: transparent;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  animation: btn-spin 1s linear infinite;
}

@keyframes btn-spin {
  0%   { transform: translate(-50%, -50%) rotate(0deg); }
  100% { transform: translate(-50%, -50%) rotate(360deg); }
}

/* ============================= */
/* AJUSTE EXTRA SOLO FOTO PERFIL */
/* ============================= */

/* El modal del cropper siempre encima del popup de perfil */
#modalCropper {
  z-index: 7000; /* más alto que el popup (5000) */
}

/* Overlay loader centrado siempre sobre todo */
#perfilOverlayLoader {
  position: fixed;   /* 👈 fijo en pantalla, no relativo al popup */
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0,0,0,0.7);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  z-index: 8000;     /* 👈 más alto que el modalCropper */
}

/* ============================= */
/* MODAL BASES Y PRIVACIDAD */
/* ============================= */
#modalPrivacidad .modal-contenido {
  max-height: 80vh;         /* que no ocupe más del 80% de la pantalla */
  overflow-y: auto;         /* scroll interno si el texto es muy largo */
  text-align: left;         /* texto alineado a la izquierda */
  padding: 25px 20px;
  line-height: 1.6;
}

#modalPrivacidad h2 {
  font-size: 1.4rem;
  margin: 10px 0 15px;
  color: #ff3db8;           /* rosado principal */
  text-align: center;
}

#modalPrivacidad h3 {
  font-size: 1.1rem;
  margin-top: 15px;
  margin-bottom: 8px;
  color: #00aaff;           /* azul para diferenciar secciones */
}

#modalPrivacidad p {
  font-size: 0.95rem;
  margin-bottom: 12px;
  color: #ddd;              /* gris claro para legibilidad */
}

#modalPrivacidad em {
  font-size: 0.85rem;
  color: #aaa;
}

/* Separador */
#modalPrivacidad hr {
  border: none;
  border-top: 1px solid #444;
  margin: 20px 0;
}

/* Scroll estético */
#modalPrivacidad .modal-contenido::-webkit-scrollbar {
  width: 8px;
}
#modalPrivacidad .modal-contenido::-webkit-scrollbar-track {
  background: #1c1c1c;
  border-radius: 10px;
}
#modalPrivacidad .modal-contenido::-webkit-scrollbar-thumb {
  background: #ff3db8;
  border-radius: 10px;
}
/* Botón flotante para cerrar modal */
.cerrar-flotante {
  display: block;
  margin: 20px auto 0;
  padding: 10px 20px;
  font-size: 1rem;
  border-radius: 20px;
  background: #ff3db8;
  color: #fff;
  border: none;
  cursor: pointer;
  transition: background 0.3s ease;
}

.cerrar-flotante:hover {
  background: #ff1fa6;
}
/* ============================= */
/* MODAL BASES Y CONDICIONES */
/* ============================= */
#modalBases .modal-contenido {
  max-height: 80vh;
  overflow-y: auto;
  text-align: left;
  padding: 25px 20px;
  line-height: 1.6;
}

#modalBases h2 {
  font-size: 1.4rem;
  margin: 10px 0 15px;
  color: #ff3db8;
  text-align: center;
}

#modalBases h3 {
  font-size: 1.1rem;
  margin-top: 15px;
  margin-bottom: 8px;
  color: #00aaff;
}

#modalBases p {
  font-size: 0.95rem;
  margin-bottom: 12px;
  color: #ddd;
}

#modalBases em {
  font-size: 0.85rem;
  color: #aaa;
}

/* Separador */
#modalBases hr {
  border: none;
  border-top: 1px solid #444;
  margin: 20px 0;
}

/* Scroll estético */
#modalBases .modal-contenido::-webkit-scrollbar {
  width: 8px;
}
#modalBases .modal-contenido::-webkit-scrollbar-track {
  background: #1c1c1c;
  border-radius: 10px;
}
#modalBases .modal-contenido::-webkit-scrollbar-thumb {
  background: #ff3db8;
  border-radius: 10px;
}

/* ============================= */
/* BLOQUE TÉRMINOS Y ENLACES LEGALES */
/* ============================= */
.terminos {
  text-align: center;
  color: #fff;
  font-size: 14px;
  margin-top: 10px;
  line-height: 1.5;
}

.checkbox-label {
  display: inline-block;
  text-align: left;
  margin-bottom: 8px;
  cursor: pointer;
}

.checkbox-label input {
  margin-right: 6px;
  transform: scale(1.1);
  accent-color: #ff3db8; /* mismo rosado principal */
}

.links-legales {
  text-align: center;
  margin-top: 5px;
}

.link-legal {
  background: none;
  border: none;
  color: #fff;
  font-size: 13px;
  text-decoration: underline;
  cursor: pointer;
  transition: color 0.3s ease;
}

.link-legal:hover {
  color: #ff3db8; /* mantiene coherencia con tu color principal */
}

#errorTerminos {
  display: none;
  color: #ff5f5f;
  font-size: 13px;
  margin-top: 8px;
}


/* ============================= */
/* INPUTS DE FORMULARIO (Login / Registro) */
/* ============================= */
.modal-contenido .input-group {
  position: relative;
  width: 100%;
}

.modal-contenido input[type="email"],
.modal-contenido input[type="password"],
.modal-contenido input[type="text"],
.modal-contenido input[type="tel"] {
  width: 100%;
  padding: 10px 40px 10px 12px; /* espacio a la derecha para el ojito */
  border-radius: 8px;
  border: 1px solid #ccc;
  font-size: 1rem;
  background: #fff;
  color: #000;
  box-sizing: border-box;
}

/* 🔹 Ojito dentro del input */
.toggle-pass {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  cursor: pointer;
  font-size: 1.1rem;
  color: #555;
  display: none; /* oculto hasta que el user escriba */
}
/* ============================= */
/* AJUSTES RESPONSIVE */
/* ============================= */

/* Ajustes generales en mobile */
@media (max-width: 768px) {
  body {
    font-size: 14px;
  }

  .navbar {
    flex-wrap: nowrap; /* 🚫 no permite que bajen */
    justify-content: space-between;
    padding: 8px 10px;
  }

  .nav-left {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 6px;
  }

  .nav-actions {
    flex-shrink: 0;
    display: flex;
    gap: 6px;
    overflow-x: auto; /* 👈 scroll lateral si no entran */
  }

  .nav-actions button {
    font-size: 0.85rem;
    padding: 6px 10px;
    min-width: auto;
    white-space: nowrap; /* evita cortes */
  }

  .btn-perfil {
    font-size: 0.8rem;
  }

  .hero {
    height: auto;
    padding: 40px 15px;
  }

  .hero-overlay h1 {
    font-size: 1.4rem;
  }

  .hero-overlay .subtitle {
    font-size: 0.9rem;
  }

  .btn-primary.comprar-entrada {
    width: 100%;
    max-width: 280px;
  }

  .card {
    max-width: 100%;
    margin: 10px;
    padding: 12px;
  }

  .btns-evento {
    flex-direction: column;
  }

  .btns-evento .btn-primary,
  .btns-evento .btn-secondary {
    width: 100%;
  }
}

/* Ajustes más estrictos para pantallas muy chicas (ej: iPhone SE) */
@media (max-width: 400px) {
  .nav-actions {
    gap: 4px;
  }

  .nav-actions button {
    font-size: 0.8rem;
    padding: 5px 8px;
  }

  .hero-overlay h1 {
    font-size: 1.2rem;
  }
}

/* ===== Marco animado circular ===== */
:root{
  --frame-size: 4px;        /* grosor del marco */
  --frame-glow: 18px;       /* intensidad del resplandor */
  --frame-speed: 6s;        /* velocidad de giro */
}

/* Contenedor */
.avatar-frame {
  position: relative;
  display: inline-block;
  border-radius: 50%;       /* círculo */
  padding: var(--frame-size);
  isolation: isolate;
}

/* Imagen */
.avatar-frame > img {
  display: block;
  border-radius: 50%;       /* círculo */
  position: relative;
  z-index: 1;
}

/* Capa animada */
.avatar-frame::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  z-index: 0;
  background: conic-gradient(
    from 0deg,
    var(--c1), var(--c2), var(--c3), var(--c4), var(--c1)
  );
  animation: rotateFrame var(--frame-speed) linear infinite;
}

/* Glow */
.avatar-frame {
  box-shadow:
    0 0 var(--frame-glow) 0 color-mix(in srgb, var(--c2) 60%, transparent),
    0 0 calc(var(--frame-glow) * 0.5) 0 color-mix(in srgb, var(--c3) 50%, transparent);
}

/* Animación giratoria */
@keyframes rotateFrame {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* ===== Temas de color ===== */
.theme-steam { --c1:#52e2ff; --c2:#3f6cff; --c3:#a54cff; --c4:#00ffa9; }
.theme-brand { --c1:#ff3db8; --c2:#8f3dff; --c3:#00d1ff; --c4:#ff8ad6; }
.theme-gold  { --c1:#ffec99; --c2:#ffd166; --c3:#f4ae38; --c4:#ffe8b6; }




.lista-entradas {
  margin-top: 15px;
  display: flex;
  flex-direction: column;
  gap: 15px;
  max-height: 400px;
  overflow-y: auto;
}

.entrada-card {
  background: #111;
  border: 1px solid #333;
  padding: 12px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  gap: 15px;
}

.entrada-info {
  flex: 1;
}

.entrada-info h3 {
  margin: 0;
  font-size: 1.1rem;
  color: #ff3db8;
}

.entrada-info p {
  margin: 4px 0;
  font-size: 0.9rem;
  color: #ccc;
}

.entrada-qr img {
  width: 80px;
  height: 80px;
  object-fit: contain;
}
.lista-entradas {
  display: flex;
  flex-direction: column;
  gap: 15px;
  margin-top: 15px;
}

.entrada-card {
  background: #1e1e1e;
  padding: 15px;
  border-radius: 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  color: #fff;
  box-shadow: 0 0 10px rgba(0,0,0,0.4);
}

.entrada-info h3 {
  margin: 0;
  font-size: 1.1rem;
  color: #ff3db8;
}

.entrada-info p {
  margin: 4px 0;
  font-size: 0.9rem;
}

.entrada-qr img {
  width: 80px;
  height: 80px;
}

/* Imagen grande en el popup de perfil */
.avatar-grande {
  width: 120px;     /* ancho fijo */
  height: 120px;    /* alto fijo */
  border-radius: 50%;  /* 👈 si querés circular, sino poné 12px */
  object-fit: cover;   /* recorta y centra */
  object-position: center;
  border: 3px solid #06254a; /* borde azul oscuro como tu navbar */
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  display: block;
  margin: 0 auto 10px auto;
}

/* Mini foto en navbar */
.avatar-mini {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  object-fit: cover;
  object-position: center;
  border: 2px solid #ff3db8;
}

.cropper-container {
  max-height: 400px;
  overflow: hidden;
  border-radius: 12px;
  margin-bottom: 15px;
}

.cropper-buttons {
  display: flex;
  justify-content: center;
  gap: 12px;
}

/* ============================= */
/* Banner de Cookies (alineado) */
/* ============================= */
.cookie-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: #1c1c1c;
  color: #fff;
  padding: 15px 25px;
  font-size: 0.9rem;
  box-shadow: 0 -2px 6px rgba(0,0,0,0.4);
  z-index: 5000;

  display: flex;
  align-items: center;   /* ✅ centra verticalmente */
  justify-content: space-between; /* ✅ texto a la izq, botón a la der */
  gap: 20px;
}

.cookie-banner p {
  margin: 0;
  flex: 1;   /* ✅ hace que el texto ocupe el espacio disponible */
}

.cookie-banner a {
  color: #ff3db8;
  text-decoration: underline;
}

.cookie-banner button {
  border: none;
  padding: 10px 20px;
  border-radius: 20px;
  background: #ff3db8;
  color: #fff;
  cursor: pointer;
  font-weight: bold;
  white-space: nowrap; /* ✅ evita que el texto del botón se corte */
}

.cookie-banner button:hover {
  background: #ff1fa6;
}

.buscador-eventos {
  margin-top: 20px;
  display: flex;
  justify-content: center;
}

.buscador-eventos input {
  padding: 12px 20px;
  width: 300px;
  max-width: 80%;
  border: none;
  border-radius: 30px;
  font-size: 1rem;
  outline: none;
  text-align: center;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}

/* ============================= */
/* PERFIL: Cambiar foto + loader */
/* ============================= */

/* Botón Cambiar foto */
.btn-cambiar-foto {
  background: #06254a;   /* mismo azul que la navbar */
  color: #fff;
  padding: 8px 14px;
  border-radius: 20px;
  font-weight: bold;
  border: none;
  cursor: pointer;
  margin: 12px 0;
  display: inline-block;
  transition: background 0.3s ease;
}
.btn-cambiar-foto:hover {
  background: #0a3870;
}

/* Contenedor del loader centrado */
.loader-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: 12px 0;
}
.loader-wrapper .loader {
  border-top: 4px solid #06254a; /* azul de la marca */
  margin-bottom: 6px;
}
.loader-wrapper .loader-text {
  text-align: center;
  font-size: 0.9rem;
  color: #ccc;
}
.loader-wrapper .loader-text.success {
  color: #00ff80;
  font-weight: bold;
}
.loader-wrapper .loader-text.error {
  color: #ff4d4d;
  font-weight: bold;
}
/* Overlay loader en popup perfil */
#perfilOverlayLoader {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background: rgba(0,0,0,0.7);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  z-index: 6000;
}

#perfilOverlayLoader.hidden {
  display: none;
}

#perfilOverlayLoader .loader {
  border: 4px solid rgba(255, 255, 255, 0.2);
  border-top: 4px solid #ff2fa0;
  border-radius: 50%;
  width: 50px;
  height: 50px;
  animation: spin 1s linear infinite;
}

#perfilOverlayLoader p {
  margin-top: 12px;
  font-size: 1rem;
  color: #fff;
  text-align: center;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* ============================= */
/* ANIMACIÓN POPUP PERFIL */
/* ============================= */
.popup-perfil {
  opacity: 0;
  transform: translateY(-10px);
  transition: opacity 0.3s ease, transform 0.3s ease;
  pointer-events: none; /* 👈 evita clics cuando está cerrado */
}

.popup-perfil.show {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

/* ============================= */
/* ANIMACIÓN POPUP PERFIL + SOMBRA */
/* ============================= */
.popup-perfil {
  opacity: 0;
  transform: translateY(-10px);
  transition: opacity 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
  pointer-events: none; /* 👈 evita clics cuando está cerrado */
  box-shadow: 0 0 0 rgba(0,0,0,0); /* sin sombra al estar oculto */
}

.popup-perfil.show {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
  box-shadow: 0 8px 24px rgba(0,0,0,0.5), 0 12px 36px rgba(0,0,0,0.3); /* sombra flotante */
}

/* ============================= */
/* PERFIL: Overlay Loader centrado */
/* ============================= */
#perfilOverlayLoader {
  position: absolute;
  top: 0; 
  left: 0;
  width: 100%; 
  height: 100%;
  background: rgba(0,0,0,0.7);   /* fondo oscuro translúcido */
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  z-index: 6000;                 /* encima del popup */
}

#perfilOverlayLoader.hidden {
  display: none;
}

#perfilOverlayLoader .loader {
  border: 6px solid rgba(255, 255, 255, 0.2); /* borde gris claro */
  border-top: 6px solid #ff3db8;              /* color de la marca */
  border-radius: 50%;
  width: 60px;
  height: 60px;
  animation: spin 1s linear infinite;
  margin-bottom: 15px;
}

#perfilOverlayLoader p {
  font-size: 1rem;
  font-weight: bold;
  color: #fff;
  text-align: center;
}

/* Animación del spinner */
@keyframes spin {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
/* Loader dentro del modal cropper */
#cropperLoader {
  border: 4px solid rgba(255, 255, 255, 0.2);
  border-top: 4px solid #ff3db8;
  border-radius: 50%;
  width: 40px;
  height: 40px;
  animation: spin 1s linear infinite;
  margin: 15px auto;
}

#cropperLoader.hidden {
  display: none;
}

#cropperButtons.hidden {
  display: none;
}

/* 🔹 Espaciado entre botones del popup de perfil */
#popupPerfil .btn-primary,
#popupPerfil .btn-secondary {
  display: block;
  width: 100%;
  margin: 10px 0; /* 👉 separa los botones verticalmente */
}

#popupPerfil .btn-cambiar-foto {
  margin-bottom: 15px; /* un poco más de aire debajo del botón de foto */
}

/* ============================= */
/* MODAL CROP (Ajustar Foto)     */
/* ============================= */

#modalCropper .modal-contenido {
  background: rgba(28, 28, 28, 0.96);
  color: #fff;
  border-radius: 12px;
  width: 95%;
  max-width: 420px;
  max-height: 90vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding: 15px 15px 20px;
  position: relative;
}

#modalCropper h2 {
  font-size: 1.2rem;
  margin-bottom: 10px;
  text-align: center;
}

/* ✅ Contenedor del cropper */
#modalCropper .cropper-container {
  width: 100%;
  max-width: 420px;
  height: 420px;
  border-radius: 10px;
  overflow: hidden;
  margin: 0 auto 15px;
  background: #000;
  display: flex;
  justify-content: center;
  align-items: center;
}


/* Imagen dentro del cropper */
#modalCropper img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* ✅ Botones debajo del cropper */
#modalCropper .cropper-buttons {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 12px;
  width: 100%;
  margin-top: 15px;
}

#modalCropper .btn-primary {
  background: #ff3db8;
  color: #fff;
  padding: 10px 18px;
  border-radius: 25px;
  font-weight: bold;
  transition: background 0.3s ease;
}

#modalCropper .btn-primary:hover {
  background: #ff1fa6;
}

#modalCropper .btn-secondary {
  background: #333;
  color: #fff;
  padding: 10px 18px;
  border-radius: 25px;
  font-weight: bold;
  transition: background 0.3s ease;
}

#modalCropper .btn-secondary:hover {
  background: #555;
}

/* ✅ Loader centrado dentro del modal */
#modalCropper .loader-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin-top: 15px;
}

#modalCropper .loader {
  border: 5px solid rgba(255, 255, 255, 0.2);
  border-top: 5px solid #ff3db8;
  border-radius: 50%;
  width: 50px;
  height: 50px;
  animation: spin 1s linear infinite;
  margin-bottom: 10px;
}

#modalCropper .loader-text {
  font-size: 0.95rem;
  color: #ccc;
  text-align: center;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
/* ============================= */
/* MODAL DE PAGO */
/* ============================= */
#modalPago .modal-contenido {
  background: rgba(28, 28, 28, 0.96);
  color: #fff;
  padding: 25px 20px;
  border-radius: 12px;
  text-align: center;
  width: 90%;
  max-width: 400px;
  box-shadow: 0 0 20px rgba(0,0,0,0.6);
}

#modalPago h2 {
  font-size: 1.4rem;
  color: #ff3db8;
  margin-bottom: 10px;
}

#modalPago p {
  font-size: 1rem;
  color: #ccc;
  margin-bottom: 15px;
}

#modalPago .btn-primary,
#modalPago .btn-secondary {
  width: 100%;
  margin-top: 10px;
}

/* ============================= */
/* LOADER DE PAGO */
/* ============================= */
#loaderPago {
  border: 4px solid rgba(255, 255, 255, 0.2);
  border-top: 4px solid #ff3db8;
  border-radius: 50%;
  width: 45px;
  height: 45px;
  margin: 15px auto;
  animation: spin 1s linear infinite;
}

#loaderPagoText {
  font-size: 0.9rem;
  color: #ccc;
  margin-top: 5px;
  transition: all 0.4s ease;
}

/* ✅ Estado de éxito */
#loaderPagoText.success {
  color: #00ff80;
  font-weight: bold;
  animation: successFade 0.8s ease forwards;
}

/* ❌ Estado de error */
#loaderPagoText.error {
  color: #ff4d4d;
  font-weight: bold;
  animation: errorShake 0.6s ease;
}

/* Animación del spinner */
@keyframes spin {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* Animación del texto de éxito */
@keyframes successFade {
  0%   { opacity: 0; transform: scale(0.8); }
  50%  { opacity: 1; transform: scale(1.1); }
  100% { opacity: 1; transform: scale(1); }
}

/* Animación del texto de error */
@keyframes errorShake {
  0%,100% { transform: translateX(0); }
  20%,60% { transform: translateX(-6px); }
  40%,80% { transform: translateX(6px); }
}
/* ============================= */
/* CHECK DE ÉXITO ANIMADO */
/* ============================= */
.success-checkmark {
  width: 80px;
  height: 80px;
  border-radius: 50%;
  display: none; /* Oculto hasta que se active */
  margin: 20px auto 10px;
  background-color: #00ff80;
  position: relative;
  transform: scale(0);
  animation: popIn 0.5s ease forwards;
}

.success-checkmark.show {
  display: block;
  animation: popIn 0.5s ease forwards;
}

/* Círculo blanco interno */
.success-checkmark::before {
  content: "";
  position: absolute;
  inset: 5px;
  background: #1c1c1c;
  border-radius: 50%;
}

/* Tilde del check */
.success-checkmark::after {
  content: "";
  position: absolute;
  left: 25%;
  top: 45%;
  width: 25px;
  height: 50px;
  border-right: 6px solid #00ff80;
  border-bottom: 6px solid #00ff80;
  transform: rotate(45deg) scale(0);
  transform-origin: bottom left;
  animation: drawCheck 0.4s ease 0.2s forwards;
}

/* Animaciones */
@keyframes popIn {
  0% { transform: scale(0); opacity: 0; }
  70% { transform: scale(1.2); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes drawCheck {
  0% { transform: rotate(45deg) scale(0); }
  100% { transform: rotate(45deg) scale(1); }
}

/* ===================================================== */
/* ALERTA CUSTOM MODERNA (fade + zoom + neón) */
/* ===================================================== */
.alerta-custom {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(0.8);
  background: radial-gradient(circle at top left, #1b1b1b 0%, #0e0e0e 100%);
  color: #fff;
  padding: 25px 35px;
  border-radius: 18px;
  box-shadow: 0 0 25px rgba(255, 0, 150, 0.6),
              inset 0 0 15px rgba(255, 0, 120, 0.3);
  text-align: center;
  z-index: 99999;
  transition: all 0.35s ease;
  opacity: 0;
  pointer-events: none;
}

.alerta-custom.show {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
  pointer-events: auto;
}

.alerta-custom .alerta-contenido {
  position: relative;
}

.cerrar-alerta {
  position: absolute;
  top: -10px;
  right: -5px;
  font-size: 24px;
  color: #ff3db8;
  cursor: pointer;
  transition: 0.2s;
}
.cerrar-alerta:hover {
  color: #fff;
  transform: scale(1.2);
}

#mensajeAlerta {
  font-size: 1rem;
  margin: 0;
  color: #fff;
  letter-spacing: 0.3px;
}

/* ✨ Animación suave de brillo neón */
@keyframes neonPulse {
  0% { box-shadow: 0 0 15px rgba(255, 0, 150, 0.4); }
  50% { box-shadow: 0 0 30px rgba(255, 0, 200, 0.8); }
  100% { box-shadow: 0 0 15px rgba(255, 0, 150, 0.4); }
}

.alerta-custom.show {
  animation: neonPulse 1.8s infinite ease-in-out;
}
/* ==== Transiciones de página === */
body {
  opacity: 0;
  transition: opacity 0.6s ease;
}
body.mostrando {
  opacity: 1;
}
/* Animación suave al cerrar el modal de logout */
.modal.fade-out {
  animation: fadeOutModal 0.6s ease forwards;
}

@keyframes fadeOutModal {
  0% {
    opacity: 1;
    transform: scale(1);
  }
  100% {
    opacity: 0;
    transform: scale(0.95);
  }
}
.modal {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.75);
  justify-content: center;
  align-items: center;
  z-index: 999;
  transition: opacity 0.3s ease;
}

.modal.show {
  display: flex;
  opacity: 1;
}

.modal.hidden {
  display: none;
  opacity: 0;
}
#modalResultadoPago .modal-contenido {
  text-align: center;
  padding: 30px;
}
#modalResultadoPago h2 {
  color: #ff2fa0;
  margin-bottom: 10px;
}
#modalResultadoPago p {
  color: #fff;
  font-size: 1rem;
  margin-bottom: 20px;
}
#modalResultadoPago .btn-primary {
  background-color: #ff2fa0;
  border: none;
  padding: 10px 20px;
  border-radius: 8px;
  cursor: pointer;
  color: #fff;
  font-weight: bold;
}
#modalResultadoPago .btn-primary:hover {
  background-color: #ff50b3;
}
/* ============================= */
/* MODAL LOGIN EXITOSO (refinado) */
/* ============================= */
#modalLoginExito .modal-contenido {
  background: rgba(17, 17, 17, 0.95);
  border-radius: 18px;
  padding: 45px 50px;
  text-align: center;
  color: #fff;
  width: 90%;
  max-width: 480px; /* más alargado */
  box-shadow: 0 0 30px rgba(255, 61, 184, 0.3);
  animation: aparecer 0.35s ease;
  position: relative;
}

#modalLoginExito .modal-logo {
  max-width: 160px;
  margin: 0 auto 20px auto;
  opacity: 0.9;
}

#modalLoginExito h2 {
  font-size: 1.8rem;
  margin-bottom: 12px;
  color: #fff;
  font-weight: 700;
  letter-spacing: 0.3px;
  white-space: nowrap;
  display: flex;               /* ✅ alineamos emoji + texto */
  justify-content: center;     /* centra horizontalmente */
  align-items: center;         /* centra verticalmente */
  gap: 8px;                    /* pequeño espacio entre emoji y texto */
}

#modalLoginExito h2 span {
  display: inline-block;
}


#mensajeBienvenidaLogin {
  font-size: 1.1rem;
  color: #ccc;
  margin-bottom: 30px;
}

#irLoginExito {
  background: linear-gradient(135deg, #ff3db8, #ff007f);
  color: #fff;
  padding: 12px 45px;
  border-radius: 50px;
  font-size: 1.05rem;
  font-weight: 600;
  border: none;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 0 20px rgba(255, 61, 184, 0.3);
}

#irLoginExito:hover {
  transform: scale(1.06);
  background: linear-gradient(135deg, #ff57c2, #ff1aa0);
  box-shadow: 0 0 25px rgba(255, 61, 184, 0.45);
}

#cerrarLoginExito {
  position: absolute;
  top: 12px;
  right: 18px;
  background: none;
  border: none;
  color: #fff;
  font-size: 1.4rem;
  cursor: pointer;
  opacity: 0.7;
  transition: opacity 0.2s ease;
}

#cerrarLoginExito:hover {
  opacity: 1;
}
@media (max-width: 400px) {
  #modalLoginExito h2 {
    white-space: normal; /* permite corte solo en pantallas pequeñas */
    font-size: 1.5rem;
  }
}
/* ============================= */
/* MODAL LOGOUT (despedida elegante) */
/* ============================= */
#modalLogout .modal-contenido {
  background: rgba(17, 17, 17, 0.95);
  border-radius: 18px;
  padding: 45px 50px;
  text-align: center;
  color: #fff;
  width: 90%;
  max-width: 480px;
  box-shadow: 0 0 30px rgba(255, 61, 184, 0.3);
  animation: aparecer 0.35s ease;
  position: relative;
}

#modalLogout .modal-logo {
  max-width: 160px;
  margin: 0 auto 20px auto;
  opacity: 0.9;
}

#modalLogout h2 {
  font-size: 1.8rem;
  margin-bottom: 12px;
  color: #fff;
  font-weight: 700;
  letter-spacing: 0.3px;
  white-space: nowrap; /* ✅ mantiene todo en una sola línea */
}

#mensajeDespedida {
  font-size: 1.1rem;
  color: #ccc;
  margin-bottom: 30px;
}

#irLogout {
  background: linear-gradient(135deg, #ff3db8, #ff007f);
  color: #fff;
  padding: 12px 45px;
  border-radius: 50px;
  font-size: 1.05rem;
  font-weight: 600;
  border: none;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 0 20px rgba(255, 61, 184, 0.3);
}

#irLogout:hover {
  transform: scale(1.06);
  background: linear-gradient(135deg, #ff57c2, #ff1aa0);
  box-shadow: 0 0 25px rgba(255, 61, 184, 0.45);
}

#cerrarLogout {
  position: absolute;
  top: 12px;
  right: 18px;
  background: none;
  border: none;
  color: #fff;
  font-size: 1.4rem;
  cursor: pointer;
  opacity: 0.7;
  transition: opacity 0.2s ease;
}

#cerrarLogout:hover {
  opacity: 1;
}



















































