/* =========================================================
   MH Carrito Lateral — Estilos Frontend
   Compatible con Divi 5
   ========================================================= */

/* ── Variables por defecto (se sobreescriben desde PHP) ── */
:root {
  --mh-cart-color-primario:         #1b1b1b;
  --mh-cart-color-secundario:       #e31a80;
  --mh-cart-color-acento:           #e74c3c;
  --mh-cart-color-texto:            #2c3e50;
  --mh-cart-color-texto-claro:      #ffffff;
  --mh-cart-color-fondo:            #ffffff;
  --mh-cart-color-fondo-secundario: #f9f9f9;
  --mh-cart-color-borde:            #e0e0e0;

  /* Extras */
  --mh-cart-color-exito:  #10b981;
  --mh-cart-color-error:  #ef4444;
  --mh-cart-color-info:   #0ea5e9;

  /* Tamaños */
  --mh-cart-boton-size:    60px;
  --mh-cart-ancho:         400px;
  --mh-cart-z-index:       999999;

  /* Bordes y sombras */
  --mh-cart-radius:        6px;
  --mh-cart-shadow:        0 10px 30px rgba(0,0,0,.15);
  --mh-cart-shadow-btn:    0 4px 14px rgba(0,0,0,.2);
}

/* ── Overlay ───────────────────────────────────────────── */
#mh-carrito-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.5);
  backdrop-filter: blur(3px);
  z-index: calc(var(--mh-cart-z-index) + 98);
  display: none;
  opacity: 0;
  transition: opacity .3s ease;
}
#mh-carrito-overlay.active { opacity: 1; }

/* ── Panel lateral ─────────────────────────────────────── */
#mh-carrito-lateral {
  position: fixed;
  top: 0;
  right: calc(-1 * var(--mh-cart-ancho) - 60px);
  width: var(--mh-cart-ancho);
  max-width: 100vw;
  height: 100dvh;
  background: var(--mh-cart-color-fondo);
  box-shadow: -6px 0 30px rgba(0,0,0,.12);
  z-index: calc(var(--mh-cart-z-index) + 99);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: right .4s cubic-bezier(.22,1,.36,1);
}
#mh-carrito-lateral.open { right: 0; }

/* ── Header ────────────────────────────────────────────── */
.mh-carrito-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 18px 22px;
  background: var(--mh-cart-color-primario);
  color: var(--mh-cart-color-texto-claro);
  flex-shrink: 0;
}
.mh-carrito-header h3 {
  margin: 0;
  font-size: 18px;
  font-weight: 700;
  color: var(--mh-cart-color-texto-claro);
  letter-spacing: .4px;
}
#mh-cerrar-carrito {
  background: none;
  border: none;
  color: var(--mh-cart-color-texto-claro);
  font-family: "ETmodules" !important;
  font-size: 24px;
  cursor: pointer;
  padding: 4px;
  border-radius: 50%;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .2s;
  line-height: 1;
}
#mh-cerrar-carrito:hover { background: rgba(255,255,255,.15); }

/* ── Mensajes AJAX ──────────────────────────────────────── */
#mh-mensajes-carrito { flex-shrink: 0; }

/* ── Contenido (items) ──────────────────────────────────── */
#mh-carrito-contenido {
  flex: 1;
  overflow-y: auto;
  padding: 18px 20px;
  background: var(--mh-cart-color-fondo);
  scrollbar-width: thin;
  scrollbar-color: var(--mh-cart-color-borde) transparent;
}
#mh-carrito-contenido::-webkit-scrollbar { width: 5px; }
#mh-carrito-contenido::-webkit-scrollbar-thumb { background: var(--mh-cart-color-borde); border-radius: 3px; }

/* ── Carrito vacío ──────────────────────────────────────── */
.mh-carrito-vacio {
  text-align: center;
  padding: 50px 20px;
  color: #9ca3af;
  font-size: 15px;
}
.mh-carrito-vacio::before {
  content: "\e015";
  font-family: "ETmodules" !important;
  display: block;
  font-size: 48px;
  opacity: .35;
  margin-bottom: 14px;
}

/* ── Cargando ───────────────────────────────────────────── */
.mh-cargando {
  text-align: center;
  padding: 30px;
  color: #6b7280;
  font-size: 14px;
}
.mh-cargando::before {
  content: "";
  display: block;
  width: 28px;
  height: 28px;
  border: 3px solid var(--mh-cart-color-borde);
  border-top-color: var(--mh-cart-color-secundario);
  border-radius: 50%;
  animation: mh-spin 1s linear infinite;
  margin: 0 auto 12px;
}

/* ── Item del carrito ───────────────────────────────────── */
.mh-carrito-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--mh-cart-color-borde);
  transition: background .15s;
}
.mh-carrito-item:last-child { border-bottom: none; }
.mh-carrito-item:hover { background: var(--mh-cart-color-fondo-secundario); border-radius: var(--mh-cart-radius); }

.mh-carrito-item img {
  width: 64px;
  height: 64px;
  object-fit: cover;
  border-radius: var(--mh-cart-radius);
  flex-shrink: 0;
  border: 1px solid var(--mh-cart-color-borde);
}

.mh-item-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-width: 0;
}
.mh-item-nombre {
  font-size: 14px;
  font-weight: 600;
  color: var(--mh-cart-color-texto);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mh-item-variacion {
  font-size: 12px;
  color: #6b7280;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mh-item-controles {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.mh-cantidad-producto {
  width: 52px;
  height: 30px;
  border: 1px solid var(--mh-cart-color-borde);
  border-radius: var(--mh-cart-radius);
  text-align: center;
  font-size: 13px;
  padding: 0 5px;
  background: var(--mh-cart-color-fondo);
  color: var(--mh-cart-color-texto);
  transition: border-color .2s;
}
.mh-cantidad-producto:focus {
  border-color: var(--mh-cart-color-secundario);
  outline: none;
  box-shadow: 0 0 0 2px rgba(227,26,128,.15);
}
.mh-item-precio {
  font-size: 13px;
  font-weight: 700;
  color: var(--mh-cart-color-texto);
  margin-left: auto;
}
.mh-eliminar-item {
  background: none;
  border: none;
  color: #9ca3af;
  font-family: "ETmodules" !important;
  font-size: 16px;
  cursor: pointer;
  padding: 2px;
  transition: color .2s;
  line-height: 1;
}
.mh-eliminar-item:hover { color: var(--mh-cart-color-error); }

/* ── Footer del carrito ─────────────────────────────────── */
.mh-carrito-footer {
  padding: 16px 20px 20px;
  background: var(--mh-cart-color-fondo-secundario);
  border-top: 1px solid var(--mh-cart-color-borde);
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* ── Filas de resumen ───────────────────────────────────── */
.mh-resumen-fila {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 14px;
  color: var(--mh-cart-color-texto);
}
.mh-fila-total {
  font-size: 16px;
  font-weight: 700;
  border-top: 1px solid var(--mh-cart-color-borde);
  padding-top: 8px;
  margin-top: 4px;
}
.mh-fila-total strong { font-size: 18px; color: var(--mh-cart-color-secundario); }

/* ── Envíos ─────────────────────────────────────────────── */
.mh-envios-opciones {
  display: none;
  background: #f0f4ff;
  border: 1px solid rgba(99,102,241,.2);
  border-radius: var(--mh-cart-radius);
  padding: 10px;
  gap: 6px;
  flex-direction: column;
}
.mh-envios-opciones.visible { display: flex; }

.mh-opcion-envio {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: white;
  border: 1px solid rgba(0,0,0,.08);
  border-radius: var(--mh-cart-radius);
  cursor: pointer;
  transition: all .2s;
  font-size: 13px;
}
.mh-opcion-envio:hover { border-color: var(--mh-cart-color-secundario); background: rgba(227,26,128,.04); }
.mh-opcion-envio.selected { border-color: var(--mh-cart-color-secundario); border-width: 2px; background: rgba(227,26,128,.06); }

.mh-envio-radio {
  width: 16px; height: 16px;
  border: 2px solid #d1d5db;
  border-radius: 50%;
  flex-shrink: 0;
  position: relative;
  transition: all .2s;
}
.mh-envio-radio.selected { border-color: var(--mh-cart-color-secundario); background: var(--mh-cart-color-secundario); }
.mh-envio-radio.selected::after {
  content: '';
  width: 6px; height: 6px;
  background: white;
  border-radius: 50%;
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%,-50%);
}
.mh-envio-nombre { flex: 1; }
.mh-envio-precio { font-weight: 700; color: var(--mh-cart-color-texto); }
.mh-envio-gratis { color: var(--mh-cart-color-exito); }

/* ── Nota envíos múltiples ──────────────────────────────── */
.mh-nota-envio {
  font-size: 12px;
  color: #6b7280;
  font-style: italic;
  text-align: center;
  background: rgba(227,26,128,.06);
  padding: 8px 12px;
  border-radius: var(--mh-cart-radius);
  border-left: 3px solid var(--mh-cart-color-secundario);
  line-height: 1.4;
}
.mh-nota-envio::before { content: "ⓘ "; color: var(--mh-cart-color-secundario); font-weight: 700; }

/* ── Campo cupón ────────────────────────────────────────── */
.mh-carrito-descuento {
  display: flex;
  gap: 8px;
  margin-top: 4px;
}
.mh-carrito-descuento input {
  flex: 1;
  height: 36px;
  padding: 0 12px;
  border: 1px solid var(--mh-cart-color-borde);
  border-radius: var(--mh-cart-radius);
  font-size: 13px;
  background: white;
  color: var(--mh-cart-color-texto);
  transition: border-color .2s;
}
.mh-carrito-descuento input:focus {
  border-color: var(--mh-cart-color-secundario);
  outline: none;
  box-shadow: 0 0 0 2px rgba(227,26,128,.15);
}
.mh-carrito-descuento button {
  height: 36px;
  padding: 0 14px;
  background: var(--mh-cart-color-secundario);
  color: white;
  border: none;
  border-radius: var(--mh-cart-radius);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: filter .2s;
  white-space: nowrap;
}
.mh-carrito-descuento button:hover { filter: brightness(1.1); }

/* ── Cupones aplicados ──────────────────────────────────── */
.mh-cupones-aplicados { display: flex; flex-direction: column; gap: 5px; }
.mh-cupones-titulo { font-size: 12px; font-weight: 700; color: #6b7280; text-transform: uppercase; letter-spacing: .5px; }
.mh-cupon-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: #f0fdf4;
  border: 1px solid rgba(16,185,129,.2);
  border-radius: var(--mh-cart-radius);
  padding: 7px 10px;
  font-size: 13px;
}
.mh-cupon-codigo { font-weight: 700; color: var(--mh-cart-color-exito); text-transform: uppercase; }
.mh-cupon-valor { color: #6b7280; }
.mh-cupon-eliminar {
  background: none;
  border: none;
  color: #9ca3af;
  font-family: "ETmodules" !important;
  font-size: 14px;
  cursor: pointer;
  padding: 2px;
  line-height: 1;
  transition: color .2s;
}
.mh-cupon-eliminar:hover { color: var(--mh-cart-color-error); }
.mh-descuento-total {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  color: var(--mh-cart-color-exito);
  font-weight: 600;
}

/* ── Mensajes feedback (cupones, etc.) ──────────────────── */
.mh-mensaje {
  padding: 10px 14px;
  border-radius: var(--mh-cart-radius);
  font-size: 13px;
  line-height: 1.4;
  display: flex;
  align-items: flex-start;
  gap: 8px;
  animation: mh-fade-in .3s ease;
  position: relative;
}
.mh-mensaje-exito { background: #f0fdf4; border: 1px solid rgba(16,185,129,.3); color: #065f46; }
.mh-mensaje-error { background: #fef2f2; border: 1px solid rgba(239,68,68,.3); color: #991b1b; }
.mh-mensaje-info  { background: #eff6ff; border: 1px solid rgba(59,130,246,.3); color: #1e40af; }
.mh-mensaje-cerrar {
  position: absolute;
  right: 10px; top: 8px;
  background: none;
  border: none;
  font-size: 14px;
  cursor: pointer;
  color: inherit;
  opacity: .6;
  line-height: 1;
  padding: 0;
}
.mh-mensaje-cerrar:hover { opacity: 1; }

/* ── Notificación "producto agregado" ───────────────────── */
.mh-producto-anadido {
  position: fixed;
  bottom: calc(var(--mh-cart-boton-size) + 20px);
  right: 30px;
  background: var(--mh-cart-color-primario);
  color: var(--mh-cart-color-texto-claro);
  padding: 10px 18px;
  border-radius: 30px;
  font-size: 14px;
  font-weight: 500;
  box-shadow: var(--mh-cart-shadow-btn);
  z-index: calc(var(--mh-cart-z-index) + 97);
  display: flex;
  align-items: center;
  gap: 8px;
  animation: mh-slide-up .35s ease;
}
.mh-producto-anadido::before {
  content: "\e052";
  font-family: "ETmodules" !important;
  font-size: 16px;
  color: var(--mh-cart-color-exito);
}

/* ── Botones de acción ──────────────────────────────────── */
.mh-carrito-acciones {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 4px;
}
.mh-btn {
  display: block;
  width: 100%;
  padding: 12px 16px;
  text-align: center;
  border-radius: var(--mh-cart-radius);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  transition: all .2s;
  letter-spacing: .3px;
  box-sizing: border-box;
}
.mh-btn-carrito {
  background: transparent;
  border: 2px solid var(--mh-cart-color-secundario);
  color: var(--mh-cart-color-secundario);
}
.mh-btn-carrito:hover {
  background: var(--mh-cart-color-secundario);
  color: white;
}
.mh-btn-checkout {
  background: var(--mh-cart-color-secundario);
  border: 2px solid var(--mh-cart-color-secundario);
  color: white;
  box-shadow: var(--mh-cart-shadow-btn);
}
.mh-btn-checkout:hover { filter: brightness(1.08); transform: translateY(-1px); }

/* ── Botón flotante ─────────────────────────────────────── */
#mh-boton-carrito {
  position: fixed;
  bottom: 30px;
  right: 30px;
  width: var(--mh-cart-boton-size);
  height: var(--mh-cart-boton-size);
  background: var(--mh-cart-color-secundario);
  color: var(--mh-cart-color-texto-claro);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: calc(var(--mh-cart-z-index) + 9);
  box-shadow: var(--mh-cart-shadow-btn);
  transition: all .3s cubic-bezier(.25,.8,.25,1);
  user-select: none;
}
#mh-boton-carrito:hover { transform: scale(1.06); filter: brightness(1.08); }
#mh-boton-carrito:active { transform: scale(.97); }

#mh-icono-carrito {
  font-family: "ETmodules" !important;
  font-size: 24px;
  line-height: 1;
}
#mh-contador-carrito {
  position: absolute;
  top: -5px; right: -5px;
  background: var(--mh-cart-color-acento);
  color: white;
  font-size: 11px;
  min-width: 20px;
  height: 20px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  padding: 0 4px;
  box-shadow: 0 2px 5px rgba(0,0,0,.25);
  transition: transform .2s;
}
#mh-contador-carrito.pop { transform: scale(1.4); }

/* ── Sin stock / Ver opciones ───────────────────────────── */
.mh-sin-stock {
  display: inline-block;
  background: #fef2f2;
  color: #b91c1c;
  border: 1px solid rgba(185,28,28,.2);
  font-size: 11px;
  font-weight: 700;
  padding: 3px 9px;
  border-radius: 20px;
  text-transform: uppercase;
  letter-spacing: .4px;
}

.mh-ver-opciones {
  display: inline-block;
  background: rgba(227,26,128,.08);
  color: var(--mh-cart-color-secundario);
  border: 1px solid rgba(227,26,128,.3);
  font-size: 11px;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 20px;
  text-decoration: none;
  transition: all .2s;
  white-space: nowrap;
}
.mh-ver-opciones:hover {
  background: var(--mh-cart-color-secundario);
  color: white;
  border-color: var(--mh-cart-color-secundario);
}

/* Item sin stock: opacidad reducida */
.mh-item-sin-stock {
  opacity: .6;
}
.mh-item-sin-stock img {
  filter: grayscale(40%);
}

/* ── Animaciones ────────────────────────────────────────── */
@keyframes mh-spin {
  to { transform: rotate(360deg); }
}
@keyframes mh-fade-in {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes mh-slide-up {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 500px) {
  #mh-carrito-lateral {
    width: 100vw;
    right: -100vw;
  }
  #mh-carrito-lateral.open { right: 0; }
  .mh-carrito-footer { padding: 14px 16px 18px; }
  #mh-carrito-contenido { padding: 14px 16px; }
  .mh-carrito-header { padding: 14px 16px; }
  .mh-producto-anadido { right: 16px; bottom: calc(var(--mh-cart-boton-size) + 16px); }
}
