/*
 * Lanzadera Menú Móvil. Colores de marca: negro, verde #81d742 y blanco.
 *
 * Funciona con el menú lateral del tema (clase .cs-offcanvas) y también con cualquier
 * contenedor al que añadas la clase  lm-menu-movil.
 *
 * Clases opcionales:
 *   lm-cta    en el enlace "Regístrate" (Apariencia > Menús > Opciones de pantalla > Clases CSS)
 *   lm-login  en un botón propio de acceso (el botón del tema, cs-offcanvas__log-in-toggle, ya está cubierto)
 *
 * Se usa !important en lo esencial para ganar a los estilos propios del tema.
 */

.lm-menu-movil,
.cs-offcanvas {
  --lm-verde: #81d742;
  --lm-linea: #1e1e1e;
  background: #000 !important;
  color: #fff !important;
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
.cs-offcanvas [class*="cs-offcanvas__"]:not(.cs-offcanvas__toggle) {
  background-color: #000 !important;
  color: #fff !important;
}

/* Enlaces del menú */
.lm-menu-movil .menu a,
.cs-offcanvas .menu a,
.cs-offcanvas nav a,
.lm-menu-movil li > a {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  min-height: 60px;
  padding: 16px 24px !important;
  color: #fff !important;
  font-size: 1.45rem !important;
  font-weight: 800 !important;
  line-height: 1.2;
  text-decoration: none !important;
  border-bottom: 1px solid var(--lm-linea) !important;
  background: transparent !important;
}
.cs-offcanvas li:not(.menu-item-has-children):not(.lm-cta) > a::after,
.lm-menu-movil li:not(.menu-item-has-children):not(.lm-cta) > a::after {
  content: "";
  flex: none;
  width: 11px;
  height: 11px;
  margin-left: 16px;
  border-top: 3px solid currentColor;
  border-right: 3px solid currentColor;
  transform: rotate(45deg);
}

/* Estado activo, toque y teclado */
.cs-offcanvas li > a:hover,
.cs-offcanvas li > a:active,
.cs-offcanvas li > a:focus,
.cs-offcanvas .current-menu-item > a,
.cs-offcanvas a[aria-current="page"],
.lm-menu-movil li > a:hover,
.lm-menu-movil li > a:active,
.lm-menu-movil li > a:focus,
.lm-menu-movil .current-menu-item > a,
.lm-menu-movil a[aria-current="page"] {
  color: var(--lm-verde) !important;
}
.cs-offcanvas .current-menu-item > a,
.cs-offcanvas a[aria-current="page"],
.lm-menu-movil .current-menu-item > a,
.lm-menu-movil a[aria-current="page"] {
  box-shadow: inset 6px 0 0 var(--lm-verde);
}
.cs-offcanvas a:focus-visible,
.lm-menu-movil a:focus-visible {
  outline: 3px solid var(--lm-verde);
  outline-offset: -3px;
}

/* Botón de registro destacado */
.cs-offcanvas li.lm-cta > a,
.lm-menu-movil li.lm-cta > a,
a.lm-cta {
  justify-content: center;
  margin: 28px 24px 8px !important;
  padding: 20px 24px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: var(--lm-verde) !important;
  color: #000 !important;
  font-size: 1.25rem !important;
  font-weight: 900 !important;
  box-shadow: 0 0 28px rgba(129, 215, 66, .35);
}
.cs-offcanvas li.lm-cta > a:hover,
.cs-offcanvas li.lm-cta > a:active,
.lm-menu-movil li.lm-cta > a:hover {
  background: #fff !important;
  color: #000 !important;
}

/* Botón "Iniciar sesión" del menú (solo dentro del panel, no el icono de la cabecera) */
.cs-offcanvas .cs-offcanvas__log-in-toggle,
.lm-menu-movil .lm-login,
a.lm-login {
  display: flex !important;
  align-items: center;
  justify-content: center;
  gap: 10px;
  box-sizing: border-box;
  width: calc(100% - 48px);
  margin: 16px 24px !important;
  padding: 16px 24px !important;
  border: 2px solid var(--lm-verde) !important;
  border-radius: 999px !important;
  background: transparent !important;
  color: #fff !important;
  font-size: 1.1rem !important;
  font-weight: 800 !important;
  cursor: pointer;
}
@media (hover: hover) {
  .cs-offcanvas .cs-offcanvas__log-in-toggle:hover,
  .lm-menu-movil .lm-login:hover {
    background: var(--lm-verde) !important;
    color: #000 !important;
  }
}
.cs-offcanvas .cs-offcanvas__log-in-toggle:focus-visible {
  outline: 3px solid var(--lm-verde);
  outline-offset: 3px;
}
.cs-offcanvas .cs-offcanvas__log-in-toggle svg,
.cs-offcanvas .cs-offcanvas__log-in-toggle i {
  fill: currentColor;
  color: currentColor;
}

/* Botón de cerrar (X) */
.cs-offcanvas .cs-offcanvas__toggle:not(.cs-offcanvas__log-in-toggle),
.lm-menu-movil .lm-cerrar {
  color: #fff !important;
  fill: #fff !important;
  background: transparent !important;
}
.cs-offcanvas .cs-offcanvas__toggle:not(.cs-offcanvas__log-in-toggle) svg,
.cs-offcanvas .cs-offcanvas__toggle:not(.cs-offcanvas__log-in-toggle) i {
  fill: #fff !important;
  color: #fff !important;
}

/* Si el panel también muestra formularios (acceso), que se lean sobre el fondo negro */
.cs-offcanvas input:not([type="submit"]):not([type="checkbox"]),
.cs-offcanvas textarea {
  background: #fff !important;
  color: #000 !important;
  border-radius: 12px !important;
}
.cs-offcanvas label {
  color: #fff !important;
}

@media (prefers-reduced-motion: no-preference) {
  .cs-offcanvas a,
  .lm-menu-movil a { transition: color .15s ease, background-color .15s ease; }
}

/*
 * Logotipo en la cabecera del menú móvil (lo inserta menu-movil.js).
 * Se coloca al lado de la X de cerrar. Si queda desalineado, ajusta estas variables:
 *   --lmm-left   separación desde el borde izquierdo (ancho que ocupa la X)
 *   --lmm-alto   alto de la franja de cabecera
 *   --lmm-ancho  ancho máximo del logotipo
 */
.cs-offcanvas .lm-logo-movil {
  --lmm-left: 76px;
  --lmm-alto: 64px;
  --lmm-ancho: 250px;
  position: absolute;
  top: 0;
  left: var(--lmm-left);
  right: 16px;
  z-index: 3;
  display: flex;
  align-items: center;
  height: var(--lmm-alto);
  line-height: 0;
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  box-shadow: none !important;
}
.cs-offcanvas .lm-logo-movil img {
  display: block;
  width: min(var(--lmm-ancho), 100%);
  height: auto;
}

/* ---- v1.3.0 ---- */

/* El botón de cerrar (X) tiene que verse sobre el fondo negro, sea cual sea la forma en que el tema lo dibuje
   (icono SVG, fuente de iconos o líneas con ::before/::after). */
.cs-offcanvas [class*="close"],
.cs-offcanvas [class*="toggle"]:not(.cs-offcanvas__log-in-toggle):not([class*="log-in"]) {
  color: #fff !important;
  fill: #fff !important;
  stroke: #fff !important;
  opacity: 1 !important;
  visibility: visible !important;
}
.cs-offcanvas [class*="close"] svg,
.cs-offcanvas [class*="close"] path,
.cs-offcanvas [class*="close"] i,
.cs-offcanvas [class*="toggle"]:not(.cs-offcanvas__log-in-toggle):not([class*="log-in"]) svg,
.cs-offcanvas [class*="toggle"]:not(.cs-offcanvas__log-in-toggle):not([class*="log-in"]) path,
.cs-offcanvas [class*="toggle"]:not(.cs-offcanvas__log-in-toggle):not([class*="log-in"]) i {
  color: #fff !important;
  fill: #fff !important;
  stroke: #fff !important;
}
.cs-offcanvas [class*="close"]::before,
.cs-offcanvas [class*="close"]::after,
.cs-offcanvas [class*="toggle"]:not(.cs-offcanvas__log-in-toggle):not([class*="log-in"])::before,
.cs-offcanvas [class*="toggle"]:not(.cs-offcanvas__log-in-toggle):not([class*="log-in"])::after {
  color: #fff !important;
  border-color: #fff !important;
  background-color: #fff !important;
}

/* El botón de registro ocupa el mismo ancho que el de acceso */
.cs-offcanvas li.lm-cta > a,
.lm-menu-movil li.lm-cta > a {
  margin: 28px 0 8px !important;
}

/* ---- v1.3.1 ---- */

/* Contenido interno del botón "Iniciar sesión": sin fondos propios, hereda el color del botón */
.cs-offcanvas .cs-offcanvas__toggle.cs-offcanvas__log-in-toggle *,
.cs-offcanvas .cs-offcanvas__toggle.cs-offcanvas__log-in-toggle *::before,
.cs-offcanvas .cs-offcanvas__toggle.cs-offcanvas__log-in-toggle *::after {
  background-color: transparent !important;
  color: inherit !important;
  fill: currentColor !important;
  opacity: 1 !important;
}
.cs-offcanvas .cs-offcanvas__toggle.cs-offcanvas__log-in-toggle::before,
.cs-offcanvas .cs-offcanvas__toggle.cs-offcanvas__log-in-toggle::after {
  background-color: transparent !important;
}

/* ---- v1.3.2 ---- */
/* Refuerzo de especificidad para que el botón de acceso ignore la regla de la X (que ponía un bloque blanco
   donde va la flecha). La flecha vuelve a dibujarse con el color del texto. */
.cs-offcanvas.cs-offcanvas.cs-offcanvas .cs-offcanvas__toggle.cs-offcanvas__log-in-toggle *,
.cs-offcanvas.cs-offcanvas.cs-offcanvas .cs-offcanvas__toggle.cs-offcanvas__log-in-toggle *::before,
.cs-offcanvas.cs-offcanvas.cs-offcanvas .cs-offcanvas__toggle.cs-offcanvas__log-in-toggle *::after,
.cs-offcanvas.cs-offcanvas.cs-offcanvas .cs-offcanvas__toggle.cs-offcanvas__log-in-toggle::before,
.cs-offcanvas.cs-offcanvas.cs-offcanvas .cs-offcanvas__toggle.cs-offcanvas__log-in-toggle::after {
  background-color: transparent !important;
  color: inherit !important;
  fill: currentColor !important;
  stroke: currentColor !important;
  border-color: currentColor !important;
}

/* ---- v1.4.0: usuario con sesión iniciada ---- */

/* El botón de acceso no se muestra a quien ya ha iniciado sesión */
body.logged-in .cs-offcanvas .cs-offcanvas__log-in-toggle {
  display: none !important;
}

/* Botón "Salir" (lo inserta menu-movil.js), en el mismo sitio que el botón de acceso */
.cs-offcanvas .lm-salir {
  position: absolute;
  left: 24px;
  right: 24px;
  bottom: calc(24px + env(safe-area-inset-bottom, 0px));
  z-index: 3;
  display: flex !important;
  align-items: center;
  justify-content: center;
  gap: 10px;
  box-sizing: border-box;
  padding: 16px 24px !important;
  border: 2px solid #81d742 !important;
  border-radius: 999px !important;
  background: transparent !important;
  color: #fff !important;
  font-size: 1.1rem !important;
  font-weight: 800 !important;
  line-height: 1.2;
  text-decoration: none !important;
}
.cs-offcanvas .lm-salir::before {
  content: "";
  width: 22px;
  height: 22px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h4M16 17l5-5-5-5M21 12H9'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h4M16 17l5-5-5-5M21 12H9'/%3E%3C/svg%3E") center / contain no-repeat;
}
@media (hover: hover) {
  .cs-offcanvas .lm-salir:hover {
    background: #81d742 !important;
    color: #000 !important;
  }
}
.cs-offcanvas .lm-salir:focus-visible {
  outline: 3px solid #81d742;
  outline-offset: 3px;
}

/* ---- v1.5.0: foto y nombre del usuario ---- */
.cs-offcanvas li.lm-usuario {
  display: flex !important;
  align-items: center;
  gap: 16px;
  margin: 0 !important;
  padding: 22px 22px 6px !important;
  border: 0 !important;
  list-style: none;
  background: transparent !important;
}
.cs-offcanvas li.lm-usuario::marker { content: ""; }
.cs-offcanvas .lm-usuario img {
  flex: none;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  object-fit: cover;
  border: 3px solid #81d742;
  background: #222;
}
.cs-offcanvas .lm-usuario div {
  display: grid;
  gap: 2px;
  min-width: 0;
  background: transparent !important;
}
.cs-offcanvas .lm-usuario__nombre {
  color: #fff !important;
  font-size: 1.15rem;
  font-weight: 800;
  line-height: 1.2;
  overflow-wrap: anywhere;
}
.cs-offcanvas .lm-usuario__sub {
  color: #b8bdb2 !important;
  font-size: .9rem;
  font-weight: 600;
}
