/* ======================================================
   EstrenoLatinoHD Theme
   Variante "Blockbuster": mismo fondo oscuro #060606 y tarjetas
   #1a1a1a, pero acento azul #3579F7 (en vez de rojo) y un amarillo
   tenue solo para el detalle VIP, evocando el azul/amarillo de
   Blockbuster sin saturar la pantalla de color para no cansar la
   vista. Este archivo SOLO reestiliza vía plugin: no toca el core.
   ====================================================== */

@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&display=swap");

:root {
  /* Identidad EstrenoLatinoHD */
  --elhd-bg: #060606;
  --elhd-bg-raised: #0d0d0d;
  --elhd-card: #1a1a1a;
  --elhd-card-hover: #232323;
  --elhd-border: #2a2a2a;
  --elhd-border-soft: #1f1f1f;
  --elhd-red: #3579f7;
  --elhd-red-dark: #2c67d2;
  --elhd-red-soft: rgba(53, 121, 247, 0.16);
  --elhd-green: #ffc72c;
  --elhd-green-soft: rgba(255, 199, 44, 0.16);
  --elhd-text: #f5f5f5;
  --elhd-text-muted: #b8b0b0;
  --elhd-text-faint: #8a8282;

  /* Remapeo de las variables del core: todo el sitio hereda
     el tema oscuro sin tocar static/css/style.css */
  --anchor-text-color: var(--elhd-text);
  --border-color: var(--elhd-border);
  --border-left: var(--elhd-border);
  --border-right: var(--elhd-border-soft);
  --box-bg: var(--elhd-card);
  --light-border: var(--elhd-border);
  --hover: rgba(53, 121, 247, 0.1);
  --main-background: var(--elhd-bg);
  --main-color-dark: var(--elhd-red-dark);
  --main-color-lighten: #5b93ff;
  --main-color: var(--elhd-red);
  --secondary-color-hover: var(--elhd-card-hover);
  --secondary-color: var(--elhd-card);
  --secondary-gradient: #111111;
  --supress-text-color: var(--elhd-text-faint);
  --text-color: var(--elhd-text-muted);
  --text-shadow: #000;
  --white-color-hover: rgba(53, 121, 247, 0.14);
  --white-color: var(--elhd-text);
}

body,
a {
  font-family: "Poppins", "Roboto", sans-serif;
}

/* El fondo va en <html> (no en body): html siempre abarca el alto
   total real del documento, mientras que body a veces no lo cubre
   bien cuando crece con el contenido, dejando partes sin imagen al
   hacer scroll en páginas largas. */
html {
  height: 100%;
  background:
    linear-gradient(180deg, rgba(6, 6, 6, 0.55) 0%, rgba(6, 6, 6, 0.7) 100%),
    url("https://wallpaperaccess.com/full/413663.jpg") center / cover fixed no-repeat;
  background-color: var(--elhd-bg);
}

body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: transparent;
}

/* background-attachment:fixed se porta mal en navegadores móviles: la
   imagen se recalcula contra el viewport cada vez que éste cambia de
   tamaño (al esconderse/mostrarse la barra de direcciones durante el
   scroll, o al abrirse el teclado en un formulario), dando un efecto
   de "crecer/estirarse". Con scroll normal (en vez de fixed) el fondo
   queda pintado sobre el documento y no depende de ese recálculo. */
@media (max-width: 768px), (pointer: coarse) {
  html {
    background-attachment: scroll;
  }
}

/* El footer flotaba donde terminara el contenido de cada página en
   vez de quedarse siempre abajo. Con .content como columna flex que
   ocupa todo el alto y margin-top:auto en el footer, éste se ancla
   al fondo de la pantalla aunque haya poco contenido arriba. */
.content {
  flex: 1;
  display: flex;
  flex-direction: column;
}

footer {
  margin-top: auto;
}

/* Selección de texto y foco, con la marca */
::selection {
  background: var(--elhd-red);
  color: #fff;
}

a:focus-visible,
button:focus-visible,
.btn:focus-visible {
  outline: 2px solid var(--elhd-red);
  outline-offset: 2px;
}

input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: none;
}

input:not([type="radio"]):focus,
textarea:focus,
select:focus {
  border-color: var(--elhd-text-faint);
}

/* Scrollbar */
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
::-webkit-scrollbar-track {
  background: var(--elhd-bg);
}
::-webkit-scrollbar-thumb {
  background: #2a2a2a;
  border-radius: 8px;
}
::-webkit-scrollbar-thumb:hover {
  background: var(--elhd-red-dark);
}

/* ======================================================
   Tipografía general
   ====================================================== */

h1,
h2,
h3 {
  color: var(--elhd-text);
  font-weight: 700;
  letter-spacing: -0.01em;
}

/* ======================================================
   Header
   ====================================================== */

.head-bg {
  background: linear-gradient(180deg, #0d0d0d 0%, #060606 100%) !important;
  border-bottom: 1px solid var(--elhd-border);
}

.brand-container .title {
  font-weight: 800;
  letter-spacing: -0.02em;
  text-shadow: none;
}

.brand-container .description {
  color: var(--elhd-text-faint);
  text-shadow: none;
}

nav,
button,
.btn {
  background: var(--elhd-card);
  border: 1px solid var(--elhd-border);
  border-radius: 8px;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.15s ease;
}

nav {
  background: rgba(26, 26, 26, 0.6);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: none;
  border-radius: 12px;
  overflow: hidden;
}

/* El core deja un <nav></nav> vacío sin usar entre el contenido y el footer.
   Como el nav real del menú siempre tiene <ul><li>, :empty solo apaga ese. */
nav:empty {
  display: none;
}

nav li {
  border-left: 1px solid var(--elhd-border-soft);
  border-right: none;
  transition: background 0.18s ease;
}

nav li:hover {
  background: none;
}

nav li a {
  text-shadow: none;
  font-weight: 500;
}

/* El core arma el <ul> del nav con CSS Grid a lo ancho de su
   contenido; se cambia a flex solo para poder empujar el badge de
   sesión al extremo derecho con margin-left:auto. */
nav ul {
  display: flex;
  flex-wrap: wrap;
}

nav li.session-badge {
  color: var(--elhd-text-faint);
  font-weight: 500;
  font-size: 0.85em;
  cursor: default;
  border-left: none;
  /* flex:1 + text-align:center en vez de margin:auto: con
     flex-wrap:wrap, el margin:auto en ambos lados hacía que Chrome
     mandara cada <li> a su propio renglón (bug de esa combinación),
     dejando "Mi cuenta"/"Salir" recortados por el overflow:hidden
     del nav. flex:1 solo hace crecer este item para ocupar el
     espacio libre, sin tocar el line-breaking de los demás. */
  flex: 1;
  text-align: center;
}

nav li.session-badge:hover {
  background: transparent;
}

/* En móvil solo se ve el nombre de usuario; el prefijo "Sesión
   iniciada como" completo se reserva para escritorio. */
.session-label {
  display: none;
}

@media (min-width: 769px) {
  .session-label {
    display: inline;
  }

  /* En escritorio no se centra: se queda pegado a la derecha,
     justo antes de "Salir", como estaba originalmente. */
  nav li.session-badge {
    flex: none;
    text-align: left;
    margin-left: auto;
  }
}

button,
.btn {
  font-weight: 600;
}

button:hover,
.btn:hover {
  background: var(--elhd-red);
  border-color: var(--elhd-red);
  transform: translateY(-1px);
}

button:active,
.btn:active {
  transform: translateY(0);
}

footer {
  color: var(--elhd-text-faint);
}

footer a {
  color: var(--elhd-text-faint);
}

footer a:hover {
  color: var(--elhd-red);
}

/* ======================================================
   Formularios / cajas
   ====================================================== */

form,
.grey-box {
  background: var(--elhd-card);
  border: 1px solid var(--elhd-border);
  border-radius: 10px;
}

/* Cuando el form solo envuelve una tarjeta (login-box/center-box), esa
   tarjeta ya trae su propio fondo y borde: el form no necesita repetirlos. */
form:has(> .login-box),
form:has(> .center-box) {
  background: none;
  border: none;
  border-radius: 0;
}

fieldset {
  border: 1px solid var(--elhd-border);
  border-radius: 8px;
}

fieldset legend {
  color: var(--elhd-text-faint);
  padding: 0 6px;
}

input:not([type="radio"]),
textarea,
select {
  background-color: var(--elhd-bg-raised);
  color: var(--elhd-text);
  border: 1px solid var(--elhd-border);
  border-radius: 8px;
}

input::placeholder,
textarea::placeholder {
  color: var(--elhd-text-faint);
}

label {
  color: var(--elhd-text-muted);
}

.danger {
  color: #ff6568;
}

/* ======================================================
   Login / Registro / Mensajes (páginas de una sola tarjeta)
   ====================================================== */

@keyframes elhd-card-in {
  from {
    opacity: 0;
    transform: translateY(34px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Centra verticalmente cualquier página que sea solo una tarjeta
   (login, registro, recuperar contraseña, mensajes, bloqueo VIP)
   en vez de dejarla pegada arriba con un vacío grande abajo.
   Se usa padding fijo en vez de min-height con vh: en móvil, al
   abrir el teclado el navegador reduce el alto visible y un
   min-height atado a 100vh recalculaba todo, dando el efecto de
   que la tarjeta "se encogía" al escribir. */
.content-wrapper:has(> form .login-box),
.content-wrapper:has(> form .center-box),
.content-wrapper:has(> .grey-box) {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 48px 0;
}

/* El <form> es un item flex sin ancho propio: sin esto, su tamaño
   depende de cuánto contenido tenga adentro y el login (con menos
   texto que el registro) terminaba con una tarjeta más angosta
   aunque ambas compartan el mismo max-width. Se fija el mismo ancho
   para que login y registro se vean del mismo tamaño. */
.content-wrapper > form:has(.login-box),
.content-wrapper > form:has(.center-box) {
  width: 100%;
  max-width: 380px;
}

.login-box,
.center-box {
  width: 100%;
  max-width: 380px;
  background: rgba(26, 26, 26, 0.6);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid var(--elhd-border);
  border-radius: 18px;
  padding: 32px 28px;
  box-shadow: 0 20px 48px rgba(0, 0, 0, 0.5);
  animation: elhd-card-in 1.2s cubic-bezier(0.16, 1, 0.3, 1);
}

/* .center-box también se usa en captcha.php: el widget de Cloudflare
   Turnstile trae su propio ancho fijo y con el grid+justify-items
   del core no quedaba centrado (se iba a la izquierda). Flex con
   align-items:center lo centra sin importar el ancho del widget. */
.center-box {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.grey-box {
  width: 100%;
  max-width: 460px;
  margin-left: auto;
  margin-right: auto;
  padding: 28px 24px;
  animation: elhd-card-in 1.2s cubic-bezier(0.16, 1, 0.3, 1);
}

@media (prefers-reduced-motion: reduce) {
  .login-box,
  .center-box,
  .grey-box {
    animation: none;
  }
}

.login-box h2,
.center-box h2 {
  color: var(--elhd-text);
  font-size: 1.5rem;
  margin-bottom: 18px;
}

/* Etiqueta fija arriba del campo (nada de placeholder superpuesto:
   esa técnica no renderizaba bien en Safari). column-reverse porque
   en el HTML el <label> va después del <input>; así queda arriba
   sin tocar el orden del código base. Mismo espacio para todos los
   campos = look uniforme y consistente. */
.login-box .input-area,
.center-box .input-area,
.config-box .input-area {
  display: flex;
  flex-direction: column-reverse;
  align-items: stretch;
  gap: 8px;
  margin-left: 0;
  margin-right: 0;
  margin-top: 20px;
}

.login-box .input-area:first-of-type,
.center-box .input-area:first-of-type,
.config-box .input-area:first-of-type {
  margin-top: 0;
}

.login-box .input-area input,
.center-box .input-area input,
.config-box .input-area input {
  padding: 14px 16px;
  font-size: 1.05rem;
  background-color: #fff;
  color: #111;
  text-align: center;
  border-color: #e5e5e5;
}

/* Todo con !important: el core tiene reglas para el estado
   ":focus" del label (font-size, font-weight, transform) que si no
   se ganan también en foco, el label cambia de tamaño justo al
   hacer clic para escribir. Fijando cada propiedad se queda 100%
   estático sin importar el estado del input. */
.login-box .input-area label,
.center-box .input-area label,
.config-box .input-area label {
  position: static !important;
  width: auto !important;
  font-size: 0.8rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em !important;
  text-transform: uppercase !important;
  padding: 0 2px !important;
  margin: 0 !important;
  transform: none !important;
  opacity: 1 !important;
  transition: none !important;
  pointer-events: auto !important;
  color: var(--elhd-text-muted) !important;
  text-align: left !important;
}

.login-box .input-area small,
.center-box .input-area small,
.config-box .input-area small {
  display: none;
}

.login-box a,
.center-box a {
  color: var(--elhd-text);
  transition: color 0.15s ease;
}

.login-box a:hover,
.center-box a:hover {
  color: var(--elhd-text-faint);
}

.login-box button,
.center-box button {
  background: #3579f7;
  border-color: #3579f7;
  color: #fff;
  width: 100%;
  height: auto;
  padding: 16px 18px;
  line-height: 1.2;
  font-size: 1.1rem;
  letter-spacing: 0.01em;
  margin-top: 14px;
}

.login-box button:hover,
.center-box button:hover {
  background: #2c67d2;
  border-color: #2c67d2;
}

/* Registro: más compacto que el login porque trae el aviso extra */

.login-box.register-page {
  max-width: 380px;
  padding: 32px 28px;
  margin-bottom: 0;
}

.login-box.register-page h2 {
  font-size: 1.5rem;
  margin-bottom: 18px;
}

.login-box.register-page .input-area {
  width: 100%;
  margin: 0 auto;
  margin-top: 14px;
}

.login-box.register-page .input-area:first-of-type {
  margin-top: 0;
}


.login-box.register-page button {
  padding: 12px 15px;
  font-size: 0.95rem;
  margin-top: 10px;
}

/* ======================================================
   Aviso Google Drive
   ====================================================== */

/* Nota simple, sin caja: nada de fondo ni borde, se integra como
   texto normal del formulario en vez de leerse como una alerta. */
.login-box.register-page .register-notice {
  width: 100%;

  margin: 14px 0 0;

  padding: 0;
  box-sizing: border-box;

  background: none;
  border: none;
  color: var(--elhd-text);

  text-align: left;
}

.register-notice h3 {
  margin: 0 0 4px;
  color: var(--elhd-text);
  font-size: 12px;
  font-weight: 700;
}

.register-notice p {
  margin: 0;
  color: var(--elhd-text-muted);
  font-size: 11px;
  line-height: 1.4;
}

/* Solo se muestra el título y la primera línea del aviso; el resto
   del texto queda oculto (sigue en el HTML, solo no se ve). */
.register-notice p:not(:first-of-type) {
  display: none;
}

.register-notice strong {
  color: var(--elhd-text);
  font-weight: 700;
}

.register-notice .small {
  margin-top: 6px;
  padding-top: 6px;

  border-top: 1px solid var(--elhd-border);

  font-size: 9.5px;
  color: var(--elhd-text-faint);
}

/* En pantallas chicas el registro (con el aviso extra) puede terminar
   más alto que la pantalla y obligar a hacer scroll; eso hace que el
   navegador reajuste/enfoque la vista al tocar un campo y se sienta
   como si la tarjeta "se encogiera". Se compacta más para que quepa
   sin scroll en la mayoría de los celulares. */
@media (max-width: 480px), (max-height: 700px) {
  /* En celular el menú no cabe en una fila y se parte en varias
     líneas; el margin-left:auto del badge de sesión solo tiene
     sentido en una sola fila, así que en pantallas chicas se
     convierte en su propia línea centrada bajo el menú. */
  nav li.session-badge {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
    text-align: center;
    justify-content: center;
    border-top: 1px solid var(--elhd-border);
    padding: 8px 10px;
  }

  /* El header base trae 160px fijos de banner; en celular no hace
     falta tanto y le resta espacio útil a la tarjeta de registro. */
  .head-bg {
    min-height: 80px !important;
  }

  .brand-container .title {
    font-size: 1.3rem;
  }

  .brand-container .description {
    font-size: 0.8rem;
  }

  .content-wrapper:has(> form .login-box),
  .content-wrapper:has(> form .center-box),
  .content-wrapper:has(> .grey-box) {
    padding: 4px 0;
  }

  .login-box.register-page {
    padding: 14px 18px;
  }

  .login-box.register-page h2 {
    font-size: 1.15rem;
    margin-bottom: 10px;
  }

  .login-box.register-page .input-area {
    margin-top: 8px;
  }

  .login-box.register-page .register-notice {
    margin-top: 10px;
    padding: 8px 10px;
  }

  .register-notice h3 {
    margin-bottom: 3px;
    font-size: 12.5px;
  }

  .register-notice p {
    margin: 2px 0;
    font-size: 10.5px;
    line-height: 1.22;
  }

  .register-notice .small {
    margin-top: 5px;
    padding-top: 5px;
    font-size: 9.5px;
  }

  .login-box.register-page button {
    margin-top: 6px;
    padding: 10px 15px;
  }
}

/* ======================================================
   Home / listado de pastes
   ====================================================== */

.paste-list {
  border: 1px solid var(--elhd-border);
  border-radius: 10px;
  overflow: hidden;
}

.paste-list li {
  border-top: 1px solid var(--elhd-border);
  transition: background 0.15s ease;
}

.paste-list li:hover {
  background: var(--elhd-card-hover);
}

.paste-list li a {
  color: var(--elhd-text);
}

.paste-list li a:hover {
  color: var(--elhd-text);
}

/* ======================================================
   Paginación
   ====================================================== */

.pagination a {
  color: var(--elhd-text-muted);
  border-radius: 6px;
  transition: color 0.15s ease, background 0.15s ease;
}

.pagination a:hover {
  color: #fff;
  background: var(--elhd-red-soft);
}

.paginate_button {
  border: 1px solid var(--elhd-border);
  border-radius: 6px;
}

.pagination .active a,
.pagination .current a {
  color: var(--elhd-text);
}

/* ======================================================
   Tabs (crear / ver paste)
   ====================================================== */

.tabs {
  border-left: 1px solid var(--elhd-border);
  border-bottom: 1px solid var(--elhd-border);
}

/* El core redondea las 2 esquinas de arriba de CADA pestaña; en fila
   se ven muescas/cortes entre una y otra. Solo la primera y la
   última deberían tener esquina redondeada, como una sola tira. */
.tabs li {
  border: 1px solid var(--elhd-border);
  border-left: none;
  background: rgba(13, 13, 13, 0.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  color: var(--elhd-text-muted);
  border-radius: 0;
  transition: background 0.15s ease, color 0.15s ease;
}

.tabs li div {
  border-color: var(--elhd-border);
  border-radius: 0;
}

.tabs li:first-child {
  border-top-left-radius: 8px;
}

.tabs li:first-child > div {
  border-top-left-radius: 8px;
}

.tabs li:last-child {
  border-top-right-radius: 8px;
}

.tabs li:last-child > div {
  border-top-right-radius: 8px;
}

.tabs li:hover {
  color: var(--elhd-text);
}

.tabs li.active,
.tabs li.active > div {
  background: rgba(26, 26, 26, 0.6);
  color: var(--elhd-text);
  border-bottom-color: rgba(26, 26, 26, 0.6);
}

.tab_container {
  border: 1px solid var(--elhd-border);
  background: rgba(26, 26, 26, 0.6);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border-radius: 0 10px 10px 10px;
}

.show_container {
  border: 1px solid var(--elhd-border);
  background: rgba(26, 26, 26, 0.6);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border-radius: 10px;
}

.tab_content textarea {
  font-family: "Poppins", "Roboto", sans-serif;
}

.bbuttons .btn {
  color: var(--elhd-text-muted);
}

.bbuttons .btn:hover {
  color: #fff;
}

.vipbbcodebuton {
  border-color: var(--elhd-green) !important;
  color: var(--elhd-green) !important;
}

.vipbbcodebuton:hover {
  background: var(--elhd-green) !important;
  color: #fff !important;
}

/* ======================================================
   Bloqueo / VIP
   ====================================================== */

.grey-box.danger {
  background: var(--elhd-card);
  border: 1px solid #ff6568;
  color: #ff6568;
  border-radius: 10px;
}

.jdbtn {
  border: 1px solid var(--elhd-red) !important;
  color: var(--elhd-red) !important;
  background: var(--elhd-bg-raised) !important;
  border-radius: 8px;
  transition: background 0.15s ease, color 0.15s ease;
}

.jdbtn:hover {
  background: var(--elhd-red) !important;
  color: #fff !important;
}

.vip {
  border: 1px solid var(--elhd-green);
  background: var(--elhd-green-soft);
  border-radius: 8px;
  color: var(--elhd-green);
}

/* ======================================================
   Config / panel
   ====================================================== */

.config-container {
  border: 1px solid var(--elhd-border);
  border-radius: 10px;
  overflow: hidden;
}

.config-container aside {
  border-right: 1px solid var(--elhd-border);
  background: var(--elhd-bg-raised);
}

.config-container aside ul li {
  border-bottom: 1px solid var(--elhd-border);
  transition: background 0.15s ease;
}

.config-container aside ul li:hover {
  background: var(--elhd-red-soft);
}

.config-container aside ul li a {
  color: var(--elhd-text-muted);
}

.config-container aside ul li a:hover {
  color: #fff;
}

.hamburger-menu-button {
  background: var(--elhd-card) !important;
  color: var(--elhd-text);
}

/* ======================================================
   Tablas
   ====================================================== */

table.striped > tbody > tr:nth-child(odd) {
  background-color: rgba(255, 255, 255, 0.03);
}

table.highlight > tbody > tr:hover {
  background-color: var(--elhd-red-soft);
}

/* Historial de vouchers canjeados (Config): a diferencia del resto
   del tema, se pidió mantenerla en blanco con texto negro en vez
   del vidrio oscuro. */
.voucher-history {
  background: #fff;
  border: 1px solid #ddd;
  border-radius: 5px;
  table-layout: fixed;
}

.voucher-history th,
.voucher-history td {
  color: #111;
  /* El código del voucher es un string largo sin espacios: sin esto
     no tiene dónde cortar y empuja la tabla fuera del config-box
     en pantallas angostas. */
  word-break: break-all;
}

.voucher-history th:first-child,
.voucher-history td:first-child {
  width: 70%;
}

.voucher-history th:last-child,
.voucher-history td:last-child {
  width: 30%;
}

.voucher-history > tbody > tr:nth-child(odd) {
  background-color: rgba(0, 0, 0, 0.04);
}

.voucher-history > tbody > tr:hover {
  background-color: rgba(0, 0, 0, 0.08);
}

/* VIP y Datos de usuario (Config, usuario no-admin): estos forms
   no traen ninguna tarjeta del core, así que quedaban flotando
   sobre el fondo en vez de usar el vidrio oscuro del theme. */
.config-box {
  background: rgba(26, 26, 26, 0.6);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid var(--elhd-border);
  border-radius: 18px;
  padding: 32px 28px;
  box-shadow: 0 20px 48px rgba(0, 0, 0, 0.5);
}

tr {
  border-bottom: 1px solid var(--elhd-border);
}

#table {
  background: var(--elhd-card);
  border: 1px solid var(--elhd-border);
}

/* ======================================================
   Bottom badge (visitas / editar)
   ====================================================== */

.bottom-badge {
  border: 1px solid var(--elhd-border);
  border-radius: 10px;
}

/* ======================================================
   SweetAlert2 (crear/eliminar voucher, etc.): la librería
   trae fondo blanco por defecto. Se repite el mismo vidrio
   oscuro que .login-box/.tab_container para que los modales
   no rompan el tema.
   ====================================================== */

.swal2-popup {
  /* !important: sweetalert2.min.css carga después de este archivo
     (ver appendHeader en CustomTheme.php) y su .swal2-popup trae
     el mismo nivel de especificidad, así que sin esto gana el
     fondo blanco por defecto de la librería. */
  background: rgba(26, 26, 26, 0.6) !important;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid var(--elhd-border);
  box-shadow: 0 20px 48px rgba(0, 0, 0, 0.5);
}

.swal2-title,
.swal2-html-container {
  color: var(--elhd-text) !important;
}

.swal2-close {
  color: var(--elhd-text-muted) !important;
}

.swal2-close:hover {
  color: var(--elhd-text) !important;
  background: none !important;
}

.cf-turnstile {
  width: 300px;
  margin: 16px auto 8px;
}
