/* ==========================================================================
   Cultura 506 · Rediseño de tienda (base: MultimallCR) (mobile-first)
   Compatible con Bootstrap 3.2. Todas las clases usan el prefijo .mmr-
   Se carga SOLO en el theme de la tienda (shop), nunca en el admin de SMA.
   Requiere en <head>:
   <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&family=Figtree:wght@400;500;600;700&display=swap">
   ========================================================================== */

/* ---------- 1. Tokens ---------- */
:root {
  --mmr-ink: #12292E;          /* encabezado, texto principal, botón oscuro */
  --mmr-ink-deep: #0B1D21;     /* barra promo y pie */
  --mmr-bg: #EEF1F4;           /* fondo de página */
  --mmr-surface: #FFFFFF;      /* tarjetas */
  --mmr-photo: #F2F4F7;        /* fondo de fotos de producto */
  --mmr-line: #CDD5DF;         /* bordes de campos y chips */
  --mmr-line-soft: #E3E8EE;    /* divisores */
  --mmr-muted: #5B6675;        /* texto secundario (5.2:1 sobre --mmr-bg) */
  --mmr-body: #33404F;         /* párrafos largos */
  --mmr-on-dark: #D5DCE6;      /* texto secundario sobre fondo oscuro */
  --mmr-accent: #EA6A1D;       /* CTA principal. Texto encima SIEMPRE --mmr-ink */
  --mmr-accent-hover: #F07F36;
  --mmr-link: #1D5C68;
  --mmr-success: #1E7A46;
  --mmr-success-soft: #EEF6F1;
  --mmr-danger: #B42318;
  --mmr-whatsapp: #25D366;     /* texto encima: --mmr-ink-deep */

  --mmr-font-display: "Bricolage Grotesque", "Figtree", system-ui, sans-serif;
  --mmr-font-body: "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;

  --mmr-r-sm: 8px;    /* fotos dentro de tarjetas */
  --mmr-r-md: 10px;   /* campos, botones pequeños */
  --mmr-r-lg: 12px;   /* tarjetas de producto, botones grandes */
  --mmr-r-xl: 16px;   /* bloques grandes, hero */
  --mmr-pad: 16px;    /* margen lateral móvil */
  --mmr-touch: 44px;  /* alto mínimo de cualquier control táctil */
}

/* ---------- 2. Base (solo con body.mmr-shop) ---------- */
/* Sin esto, cualquier elemento que se pase por unos pixeles del ancho de
   pantalla hace que TODA la página se pueda desplazar hacia la derecha en
   el celular -- y como el WhatsApp flotante, la ruleta y los íconos del
   header están anclados al borde derecho, terminan quedando fuera de lo
   visible en vez de solo cortarse ellos. Se usa "clip" y no "hidden": con
   "hidden" el navegador vuelve "auto" el overflow-y de html/body (así
   funciona la spec cuando un eje no es "visible"), y eso rompe TODOS los
   position:sticky del sitio (resumen del checkout/carrito, filtros de
   categoría, galería de producto) -- "clip" recorta igual pero no crea un
   contenedor de scroll propio, así que el sticky sigue funcionando. */
html { overflow-x: clip; width: 100%; }
body.mmr-shop {
  margin: 0;
  max-width: 100%;
  overflow-x: clip;
  background: var(--mmr-bg);
  color: var(--mmr-ink);
  font-family: var(--mmr-font-body);
  font-size: 16px;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
}
body.mmr-shop a { color: var(--mmr-link); }
body.mmr-shop a:hover, body.mmr-shop a:focus { color: var(--mmr-ink); }
body.mmr-shop h1, body.mmr-shop h2, body.mmr-shop h3,
.mmr-display {
  font-family: var(--mmr-font-display);
  color: var(--mmr-ink);
  margin: 0;
  letter-spacing: -0.01em;
}
body.mmr-shop *:focus-visible {
  outline: 3px solid var(--mmr-link);
  outline-offset: 2px;
}
body.mmr-shop input, body.mmr-shop select, body.mmr-shop textarea, body.mmr-shop button {
  font-family: var(--mmr-font-body);
}
/* 16px en inputs evita el zoom automático de iOS */
body.mmr-shop input, body.mmr-shop select, body.mmr-shop textarea { font-size: 16px; }

.mmr-container { padding-left: var(--mmr-pad); padding-right: var(--mmr-pad); }
@media (min-width: 992px) {
  .mmr-container { max-width: 1440px; margin: 0 auto; padding-left: 80px; padding-right: 80px; }
}
.mmr-stack > * + * { margin-top: 12px; }
.mmr-muted { color: var(--mmr-muted); }
/* .mmr-hide-mobile / .mmr-hide-desktop: ver el final del archivo (sección
   25) -- se movieron ahí a propósito para que siempre ganen el empate de
   especificidad contra reglas de un solo elemento como .mmr-search. */

/* ---------- 3. Barra promo ---------- */
.mmr-promo {
  background: var(--mmr-ink-deep);
  color: #fff;
  font-size: 13px;
  font-weight: 500;
  text-align: center;
  padding: 9px var(--mmr-pad);
}
.mmr-promo a { color: #fff; }
@media (min-width: 992px) {
  .mmr-promo { font-size: 14px; display: flex; justify-content: space-between; padding: 10px 80px; }
}

/* ---------- 4. Encabezado ---------- */
.mmr-header { background: var(--mmr-ink); padding: 12px var(--mmr-pad) 16px; }
.mmr-header__row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.mmr-header__actions { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }
.mmr-logo {
  font-family: var(--mmr-font-display);
  font-weight: 800;
  font-size: 24px;
  letter-spacing: -0.5px;
  color: #fff !important;
  text-decoration: none !important;
  flex-shrink: 0;
}
.mmr-header .mmr-search { margin-top: 14px; }
/* El buscador de escritorio (.mmr-search.mmr-hide-mobile, dentro de la
   fila del header) necesita display:flex cuando se muestra, no el
   display:none/initial genérico de .mmr-hide-mobile -- se fuerza acá con
   !important para que nunca dependa del orden en el archivo. */
.mmr-header .mmr-search.mmr-hide-mobile { display: none !important; }
@media (min-width: 992px) {
  .mmr-header .mmr-search.mmr-hide-mobile { display: flex !important; }
}
.mmr-header--compact { padding: 10px 12px; }
.mmr-header--compact h1 { color: #fff; font-size: 22px; font-weight: 700; }
@media (min-width: 992px) {
  .mmr-header { padding: 18px 80px; }
  .mmr-header__row { gap: 40px; }
  .mmr-header .mmr-search { margin-top: 0; flex: 1; }
  .mmr-logo { font-size: 30px; }
  .mmr-header__actions { gap: 24px; }
  .mmr-header__actions a { color: #fff; font-weight: 600; font-size: 15px; display: flex; align-items: center; gap: 8px; text-decoration: none; }
}

.mmr-iconbtn {
  width: var(--mmr-touch);
  height: var(--mmr-touch);
  flex-shrink: 0;
  border: 0;
  background: transparent;
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  position: relative;
  text-decoration: none;
  -webkit-appearance: none;
  appearance: none;
  -webkit-tap-highlight-color: transparent;
  cursor: pointer;
}
.mmr-iconbtn:hover, .mmr-iconbtn:focus { color: #fff; }
.mmr-iconbtn svg { width: 22px; height: 22px; }
.mmr-count {
  position: absolute; top: 5px; right: 3px;
  min-width: 18px; height: 18px; padding: 0 4px;
  border-radius: 9px;
  background: var(--mmr-accent); color: var(--mmr-ink);
  font-size: 11px; font-weight: 700; line-height: 18px; text-align: center;
}

/* ---------- 5. Buscador ---------- */
.mmr-search { display: flex; gap: 8px; }
.mmr-search input {
  flex: 1;
  min-width: 0;
  height: 48px;
  border: 0;
  border-radius: var(--mmr-r-md);
  padding: 0 14px;
  background: #fff;
  color: var(--mmr-ink);
}
.mmr-search button {
  width: 48px; height: 48px;
  flex-shrink: 0;
  border: 0; border-radius: var(--mmr-r-md);
  background: var(--mmr-accent); color: var(--mmr-ink);
  display: inline-flex; align-items: center; justify-content: center;
  -webkit-appearance: none;
  appearance: none;
  -webkit-tap-highlight-color: transparent;
  cursor: pointer;
}
@media (min-width: 992px) {
  .mmr-search input { height: 50px; padding: 0 18px; }
  .mmr-search button { width: auto; height: 50px; padding: 0 24px; font-weight: 700; }
}

/* ---------- 6. Botones ---------- */
.mmr-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: var(--mmr-touch);
  padding: 0 20px;
  border: 0;
  border-radius: var(--mmr-r-md);
  font-weight: 600;
  font-size: 15px;
  text-decoration: none !important;
  cursor: pointer;
  transition: background-color .15s ease;
  -webkit-appearance: none;
  appearance: none;
  -webkit-tap-highlight-color: transparent;
}
.mmr-btn--lg { min-height: 52px; font-size: 17px; font-weight: 700; border-radius: var(--mmr-r-lg); line-height: 1.25; text-align: center; white-space: normal; padding-top: 8px; padding-bottom: 8px; }
@media (max-width: 380px) {
  .mmr-sticky-bar .mmr-btn--lg, .mmr-summary .mmr-btn--lg { font-size: 15px; }
}
.mmr-btn--block { display: flex; width: 100%; }
.mmr-btn--primary { background: var(--mmr-accent); color: var(--mmr-ink) !important; }
.mmr-btn--primary:hover { background: var(--mmr-accent-hover); }
.mmr-btn--dark { background: var(--mmr-ink); color: #fff !important; }
.mmr-btn--dark:hover { background: var(--mmr-ink-deep); }
.mmr-btn--outline { background: transparent; border: 2px solid var(--mmr-ink); color: var(--mmr-ink) !important; }
.mmr-btn--wa-outline { background: transparent; border: 2px solid var(--mmr-success); color: var(--mmr-success) !important; }
.mmr-btn--whatsapp { background: var(--mmr-whatsapp); color: var(--mmr-ink-deep) !important; }
.mmr-btn--link { background: transparent; color: var(--mmr-link) !important; }
.mmr-btn--danger-link { background: transparent; color: var(--mmr-danger) !important; text-decoration: underline !important; padding: 0 4px; }
.mmr-btn[disabled], .mmr-btn.is-loading { opacity: .6; pointer-events: none; }

/* ---------- 7. Chips de categorías ---------- */
.mmr-chips {
  display: flex; gap: 8px;
  padding: 14px var(--mmr-pad) 4px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.mmr-chips::-webkit-scrollbar { display: none; }
.mmr-chip {
  flex-shrink: 0;
  height: 40px; padding: 0 16px;
  border-radius: 20px;
  background: #fff; border: 1px solid var(--mmr-line);
  color: var(--mmr-ink) !important;
  font-size: 14px; font-weight: 600;
  display: inline-flex; align-items: center;
  text-decoration: none !important;
}
.mmr-chip.is-active { background: var(--mmr-ink); border-color: var(--mmr-ink); color: #fff !important; }
.mmr-chip--removable { height: 36px; padding: 0 12px; gap: 6px; background: var(--mmr-ink); color: #fff !important; border: 0; }

/* Menú de categorías en escritorio */
.mmr-catnav { display: none; }
@media (min-width: 992px) {
  .mmr-chips { display: none; }
  .mmr-catnav {
    display: flex; gap: 32px; align-items: center;
    height: 52px; padding: 0 80px;
    background: #fff; border-bottom: 1px solid var(--mmr-line);
    font-size: 15px; font-weight: 600;
    overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none;
  }
  .mmr-catnav::-webkit-scrollbar { display: none; }
  .mmr-catnav a { flex-shrink: 0; color: var(--mmr-ink); text-decoration: none; }
  .mmr-catnav a:hover { color: var(--mmr-link); }
  .mmr-catnav a.is-active { color: var(--mmr-link); }
}

/* ---------- 8. Tarjetas y hero ---------- */
.mmr-card { background: var(--mmr-surface); border-radius: var(--mmr-r-xl); padding: 16px; }
.mmr-card + .mmr-card { margin-top: 12px; }
.mmr-card h2 { font-size: 19px; font-weight: 700; margin-bottom: 14px; }

.mmr-hero { margin: 12px var(--mmr-pad) 0; background: #fff; border-radius: var(--mmr-r-xl); overflow: hidden; }
.mmr-hero__photo { position: relative; height: 230px; background: var(--mmr-photo); }
.mmr-hero__photo img { width: 100%; height: 100%; object-fit: contain; }
.mmr-hero__body { padding: 16px 18px 18px; }
.mmr-hero__body > * + * { margin-top: 10px; }
.mmr-hero h1 { font-size: 26px; line-height: 1.15; font-weight: 700; }
.mmr-tag {
  position: absolute; top: 12px; left: 12px;
  background: var(--mmr-accent); color: var(--mmr-ink);
  font-size: 13px; font-weight: 700;
  padding: 6px 10px; border-radius: 6px;
}
.mmr-tag--static { position: static; display: inline-block; }

.mmr-hero-grid { display: block; }
.mmr-hero-side { display: none; }
@media (min-width: 992px) {
  .mmr-hero-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 20px; padding: 32px 80px 0; }
  .mmr-hero { margin: 0; display: flex; flex-direction: row-reverse; height: 440px; }
  .mmr-hero__photo { flex: 1; height: auto; }
  .mmr-hero__body { width: 420px; flex-shrink: 0; padding: 44px; display: flex; flex-direction: column; justify-content: center; }
  .mmr-hero h1 { font-size: 44px; line-height: 1.05; font-weight: 800; letter-spacing: -1px; }
  .mmr-hero .mmr-tag { position: static; align-self: flex-start; }
  .mmr-hero-side { display: flex; flex-direction: column; gap: 20px; }
  .mmr-promo-card { flex: 1; border-radius: 18px; padding: 28px; display: flex; flex-direction: column; justify-content: space-between; background: #fff; }
  .mmr-promo-card h2 { font-size: 26px; line-height: 1.15; }
  .mmr-promo-card--dark { background: var(--mmr-ink); }
  .mmr-promo-card--dark h2 { color: #fff !important; }
  .mmr-promo-card--dark a { color: var(--mmr-accent); font-weight: 700; }
}

/* ---------- 9. Precio y existencias ---------- */
.mmr-price { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.mmr-price__now { font-size: 30px; font-weight: 800; letter-spacing: -0.5px; color: var(--mmr-ink); }
.mmr-price__old { font-size: 15px; color: var(--mmr-muted); text-decoration: line-through; }
.mmr-price--lg .mmr-price__now { font-size: 34px; }
.mmr-price--sm .mmr-price__now { font-size: 19px; }
@media (min-width: 992px) { .mmr-hero .mmr-price__now { font-size: 38px; } }
.mmr-stock { display: flex; align-items: center; gap: 8px; color: var(--mmr-success); font-weight: 600; font-size: 15px; }
.mmr-stock--low { color: #A8430A; }
.mmr-stock--out { color: var(--mmr-danger); }
.mmr-note { font-size: 12px; color: var(--mmr-muted); }

/* ---------- 10. Sellos de confianza ---------- */
.mmr-trust {
  margin: 16px var(--mmr-pad) 0;
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px;
}
.mmr-trust__item {
  background: #fff; border-radius: var(--mmr-r-lg);
  padding: 12px 8px; text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 600; line-height: 1.25;
}
.mmr-trust__item svg { width: 24px; height: 24px; color: var(--mmr-link); }
.mmr-trust__item small { display: none; }
@media (min-width: 992px) {
  .mmr-trust { margin: 20px 80px 0; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
  .mmr-trust__item { text-align: left; align-items: flex-start; padding: 18px 20px; font-size: 16px; font-weight: 700; }
  .mmr-trust__item svg { display: none; }
  .mmr-trust__item small { display: block; font-size: 14px; font-weight: 400; color: var(--mmr-muted); }
}

/* ---------- 11. Encabezado de sección ---------- */
.mmr-section-head {
  margin: 28px var(--mmr-pad) 0;
  display: flex; align-items: baseline; justify-content: space-between;
}
.mmr-section-head h2 { font-size: 24px; font-weight: 700; }
.mmr-section-head a { font-size: 15px; font-weight: 600; }
@media (min-width: 992px) {
  .mmr-section-head { margin: 44px 80px 0; }
  .mmr-section-head h2 { font-size: 32px; font-weight: 800; }
}

/* ---------- 12. Cuadrícula y tarjeta de producto ---------- */
.mmr-grid {
  margin: 14px var(--mmr-pad) 0;
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px;
}
@media (min-width: 768px) { .mmr-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 992px) { .mmr-grid { margin: 18px 80px 0; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; } }
@media (min-width: 1200px) { .mmr-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } }

/* Tarjeta estilo "Temu": foto grande, info mínima (nombre, estrellas de
   popularidad + vistas, precio) y un botón de agregar solo ícono. */
.mmr-pcard {
  background: #fff; border-radius: var(--mmr-r-lg);
  padding: 8px; display: flex; flex-direction: column; gap: 8px;
}
.mmr-pcard__photo {
  display: flex; align-items: center; justify-content: center;
  height: 200px; border-radius: var(--mmr-r-sm);
  background: #fff; /* blanco: las fotos del proveedor vienen con fondo blanco */
  overflow: hidden;
}
.mmr-pcard__photo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.mmr-pcard__body { display: flex; flex-direction: column; gap: 4px; }
.mmr-pcard__name {
  font-size: 13px; font-weight: 600; line-height: 1.3; min-height: 0;
  color: var(--mmr-ink) !important; text-decoration: none !important;
  display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;
}
.mmr-pcard .mm-pop { font-size: 11px; gap: 5px; }
.mmr-pcard .mm-pop-label { display: none; } /* ahorra espacio: ya se ve con estrellas + ojo */
.mmr-pcard__footer { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 2px; }
.mmr-pcard__footer .mmr-price { min-width: 0; }
.mmr-pcard__footer .mmr-price__now { font-size: 16px; }
.mmr-pcard__add {
  width: 34px; height: 34px; flex-shrink: 0;
  border: 0; border-radius: 50%;
  background: var(--mmr-ink); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  -webkit-appearance: none; appearance: none; -webkit-tap-highlight-color: transparent;
  cursor: pointer;
}
.mmr-pcard__add svg { width: 17px; height: 17px; }
.mmr-pcard__add:hover { background: var(--mmr-ink-deep); }
@media (min-width: 992px) {
  .mmr-pcard { padding: 10px; gap: 10px; }
  .mmr-pcard__photo { height: 240px; }
  .mmr-pcard__name { font-size: 14px; }
  .mmr-pcard__add { width: 38px; height: 38px; }
  .mmr-pcard__add svg { width: 19px; height: 19px; }
}

/* .mmr-pcard también lleva la clase .product porque el JS existente de
   "volar la imagen al carrito" (general.js, click en .add-to-cart) la usa
   para ubicar la foto a animar -- pero esa clase trae estilos viejos del
   theme base (borde, fondo, alto mínimo, texto centrado) que chocan con
   esta tarjeta. Se neutralizan explícitamente (el selector compuesto ya
   gana por especificidad, sin necesitar !important). */
.mmr-pcard.product {
  display: flex; flex-direction: column; gap: 8px;
  position: static; text-align: left;
  min-height: 0; border: 0; margin-bottom: 0;
  background: #fff; padding: 8px;
  transition: none;
}
@media (min-width: 992px) { .mmr-pcard.product { padding: 10px; gap: 10px; } }

/* ---------- 13. Bloque de ayuda (WhatsApp) ---------- */
.mmr-help {
  margin: 28px var(--mmr-pad) 0;
  background: var(--mmr-ink); color: #fff;
  border-radius: var(--mmr-r-xl); padding: 22px 20px;
}
.mmr-help h2 { color: #fff !important; font-size: 22px; }
.mmr-help p { color: var(--mmr-on-dark); font-size: 15px; margin: 10px 0 16px; }
@media (min-width: 992px) {
  .mmr-help { margin: 44px 80px 0; display: flex; align-items: center; justify-content: space-between; padding: 32px 40px; border-radius: 18px; }
  .mmr-help h2 { font-size: 28px; }
  .mmr-help p { margin: 6px 0 0; font-size: 16px; }
}

/* ---------- 14. Pie ---------- */
.mmr-footer { margin-top: 32px; background: var(--mmr-ink-deep); color: var(--mmr-on-dark); padding: 28px 20px; font-size: 14px; }
.mmr-footer a { color: var(--mmr-on-dark); }
.mmr-footer a:hover { color: #fff; }
.mmr-footer__title { color: #fff; font-weight: 700; display: block; margin-bottom: 6px; }
.mmr-footer__cols > * + * { margin-top: 18px; }
.mmr-footer__links { display: flex; flex-wrap: wrap; gap: 16px; }
@media (min-width: 992px) {
  .mmr-footer { margin-top: 44px; padding: 40px 80px; font-size: 15px; }
  .mmr-footer__cols { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; }
  .mmr-footer__cols > * + * { margin-top: 0; }
  .mmr-footer__links { flex-direction: column; gap: 8px; }
}

/* ---------- 15. Ficha de producto ---------- */
.mmr-gallery { background: #fff; padding-bottom: 14px; }
.mmr-gallery__track {
  display: flex; overflow-x: auto; scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.mmr-gallery__track::-webkit-scrollbar { display: none; }
.mmr-gallery__slide { flex: 0 0 100%; height: 360px; scroll-snap-align: center; display: flex; align-items: center; justify-content: center; background: #fff; }
.mmr-gallery__slide img { max-width: 100%; max-height: 100%; object-fit: contain; }
.mmr-dots { display: flex; justify-content: center; gap: 8px; margin-top: 12px; }
.mmr-dots span { width: 8px; height: 8px; border-radius: 4px; background: var(--mmr-line); transition: width .2s; }
.mmr-dots span.is-active { width: 22px; background: var(--mmr-ink); }

.mmr-pinfo { background: #fff; padding: 4px 18px 20px; }
.mmr-pinfo > * + * { margin-top: 10px; }
.mmr-pinfo h1 { font-size: 26px; line-height: 1.15; font-weight: 700; }
.mmr-pinfo__code { font-size: 13px; color: var(--mmr-muted); }

.mmr-qty-row { display: flex; align-items: center; gap: 12px; margin-top: 16px !important; }
.mmr-qty-row.form-group { margin-bottom: 0; } /* ver nota junto a .mmr-field.form-group */
.mmr-qty { display: inline-flex; align-items: center; border: 1px solid var(--mmr-line); border-radius: var(--mmr-r-md); overflow: hidden; background: #fff; }
.mmr-qty button { width: var(--mmr-touch); height: var(--mmr-touch); border: 0; background: #fff; font-size: 20px; color: var(--mmr-ink); }
.mmr-qty input { width: 40px; height: var(--mmr-touch); border: 0; text-align: center; font-weight: 700; -moz-appearance: textfield; }
.mmr-qty input::-webkit-outer-spin-button, .mmr-qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.mmr-infolist { margin: 12px var(--mmr-pad) 0; background: #fff; border-radius: 14px; padding: 16px; }
.mmr-infolist__item { display: flex; gap: 12px; align-items: flex-start; }
.mmr-infolist__item + .mmr-infolist__item { margin-top: 14px; }
.mmr-infolist__item svg { flex-shrink: 0; width: 24px; height: 24px; color: var(--mmr-link); }
.mmr-infolist__item strong { display: block; font-size: 15px; }
.mmr-infolist__item span { font-size: 14px; color: var(--mmr-muted); line-height: 1.4; }

.mmr-specs { width: 100%; border-collapse: collapse; font-size: 14px; margin-top: 12px; }
.mmr-specs th, .mmr-specs td { padding: 10px 0; border-top: 1px solid var(--mmr-line-soft); vertical-align: top; }
.mmr-specs th { color: var(--mmr-muted); font-weight: 400; text-align: left; }
.mmr-specs td { font-weight: 600; text-align: right; }
.mmr-desc { font-size: 15px; line-height: 1.55; color: var(--mmr-body); }

.mmr-scroller { display: flex; gap: 12px; overflow-x: auto; padding: 0 var(--mmr-pad) 4px; scrollbar-width: none; }
.mmr-scroller::-webkit-scrollbar { display: none; }
.mmr-scroller .mmr-pcard { flex: 0 0 150px; }
.mmr-scroller .mmr-pcard__photo { height: 110px; }

/* Ficha en escritorio: galería izquierda, compra derecha */
@media (min-width: 992px) {
  .mmr-product-layout { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 32px; padding: 32px 80px 0; align-items: start; }
  .mmr-product-layout .mmr-gallery { border-radius: 18px; }
  .mmr-product-layout .mmr-gallery__slide { height: 520px; }
  .mmr-product-layout .mmr-pinfo { border-radius: 18px; padding: 28px; position: sticky; top: 24px; }
  .mmr-product-layout .mmr-infolist { margin: 12px 0 0; }
}

/* ---------- 16. Barra fija inferior (ficha, carrito, checkout) ---------- */
.mmr-sticky-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 1040;
  background: #fff; border-top: 1px solid var(--mmr-line);
  padding: 12px var(--mmr-pad) calc(12px + env(safe-area-inset-bottom, 0px));
  display: flex; align-items: center; gap: 12px;
}
.mmr-sticky-bar--stack { flex-direction: column; align-items: stretch; gap: 6px; }
.mmr-sticky-bar__total small { display: block; font-size: 12px; color: var(--mmr-muted); }
.mmr-sticky-bar__total strong { font-size: 20px; font-weight: 800; }
.mmr-sticky-bar .mmr-btn--lg { flex: 1; }
body.mmr-has-sticky { padding-bottom: 96px; }
body.mmr-has-sticky-tall { padding-bottom: 140px; }
@media (min-width: 992px) {
  .mmr-sticky-bar { display: none; }
  body.mmr-has-sticky, body.mmr-has-sticky-tall { padding-bottom: 0; }
}

/* ---------- 17. Categoría ---------- */
.mmr-page-title { padding: 20px var(--mmr-pad) 0; }
.mmr-page-title h1 { font-size: 30px; font-weight: 800; letter-spacing: -0.5px; }
.mmr-page-title span { font-size: 14px; color: var(--mmr-muted); }
.mmr-toolbar { padding: 14px var(--mmr-pad) 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.mmr-toolbar .mmr-btn, .mmr-toolbar select {
  height: 46px; width: 100%;
  border: 1px solid var(--mmr-line); border-radius: var(--mmr-r-md);
  background: #fff; color: var(--mmr-ink); font-weight: 600; font-size: 15px;
}
.mmr-active-filters { padding: 12px var(--mmr-pad) 0; display: flex; flex-wrap: wrap; gap: 8px; }
.mmr-loadmore { padding: 20px var(--mmr-pad) 0; text-align: center; }
.mmr-loadmore span { display: block; font-size: 14px; color: var(--mmr-muted); margin-bottom: 10px; }
@media (min-width: 992px) {
  .mmr-page-title, .mmr-toolbar, .mmr-active-filters, .mmr-loadmore { padding-left: 80px; padding-right: 80px; }
  .mmr-toolbar { grid-template-columns: 220px 220px; }
}

/* ---------- 18. Carrito ---------- */
.mmr-progress-card { margin: 16px var(--mmr-pad) 0; background: #fff; border-radius: 14px; padding: 14px 16px; }
.mmr-progress-card strong { font-size: 14px; }
.mmr-progress { height: 8px; border-radius: 4px; background: var(--mmr-line-soft); overflow: hidden; margin-top: 8px; }
.mmr-progress > span { display: block; height: 100%; background: var(--mmr-success); }

.mmr-cart-list { margin: 12px var(--mmr-pad) 0; }
.mmr-cart-item { background: #fff; border-radius: 14px; padding: 12px; display: flex; gap: 12px; }
.mmr-cart-item + .mmr-cart-item { margin-top: 10px; }
.mmr-cart-item__photo { width: 96px; height: 96px; flex-shrink: 0; border-radius: var(--mmr-r-sm); background: #fff; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.mmr-cart-item__photo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.mmr-cart-item__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.mmr-cart-item__name { font-size: 15px; font-weight: 600; line-height: 1.3; color: var(--mmr-ink); }
.mmr-cart-item__price { font-size: 18px; font-weight: 800; }
.mmr-cart-item__actions { display: flex; align-items: center; justify-content: space-between; }
.mmr-cart-item .mmr-qty button, .mmr-cart-item .mmr-qty input { height: 40px; }

/* Mini-repaso del pedido dentro del resumen del checkout (estilo Temu:
   se ve qué se está comprando, no solo el total). Reusa las clases de
   .mmr-cart-item (pensadas para el carrito completo) con una variante
   compacta -- nada de PHP nuevo salvo el foreach sobre $this->cart-
   >contents(), que ya existe como fuente de datos en todo el checkout. */
.mmr-summary-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.mmr-summary-head h3 { margin: 0; font-size: 14px; font-weight: 700; color: var(--mmr-ink); }
.mmr-summary-head .mmr-link { font-size: 13px; font-weight: 600; }
.mmr-cart-list--mini { margin: 0; max-height: 260px; overflow-y: auto; }
.mmr-cart-item--mini { padding: 0; background: transparent; gap: 10px; }
.mmr-cart-item--mini + .mmr-cart-item--mini { margin-top: 10px; }
.mmr-cart-item--mini .mmr-cart-item__photo { width: 44px; height: 44px; }
.mmr-cart-item--mini .mmr-cart-item__body { gap: 2px; }
.mmr-cart-item--mini .mmr-cart-item__name {
  font-size: 13px; font-weight: 600;
  display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;
}
.mmr-cart-item--mini .mmr-cart-item__actions { font-size: 12px; }
.mmr-cart-item--mini .mmr-cart-item__price { font-size: 13px; font-weight: 700; }
.mmr-summary-divider { border: 0; border-top: 1px solid var(--mmr-line-soft); margin: 12px 0; }

.mmr-card.mmr-summary { padding: 14px 16px; }
.mmr-summary { font-size: 13px; }
.mmr-summary__row { display: flex; justify-content: space-between; gap: 12px; }
.mmr-summary__row + .mmr-summary__row { margin-top: 6px; }
.mmr-summary__row span:first-child { color: var(--mmr-muted); }
.mmr-summary__row span:last-child { font-weight: 600; text-align: right; }
.mmr-summary__total { border-top: 1px solid var(--mmr-line-soft); padding-top: 8px; margin-top: 8px !important; }
.mmr-summary__total span:first-child { color: var(--mmr-ink); font-weight: 700; font-size: 14px; }
.mmr-summary__total span:last-child { font-weight: 800; font-size: 19px; }
.mmr-summary .mmr-btn--lg { min-height: 46px; font-size: 15px; margin-top: 12px !important; }
.mmr-paylogos { margin: 16px var(--mmr-pad) 0; display: flex; justify-content: center; gap: 18px; color: var(--mmr-muted); font-size: 13px; font-weight: 600; }

@media (min-width: 992px) {
  .mmr-cart-layout { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 24px; padding: 32px 80px 0; align-items: start; }
  .mmr-cart-layout .mmr-cart-list, .mmr-cart-layout .mmr-progress-card { margin-left: 0; margin-right: 0; }
  .mmr-cart-layout aside { position: sticky; top: 24px; }
}

/* ---------- 19. Formularios (checkout) ---------- */
.mmr-section { margin: 12px var(--mmr-pad) 0; }
.mmr-field + .mmr-field { margin-top: 14px; }
.mmr-field label { display: block; font-size: 14px; font-weight: 600; margin-bottom: 6px; color: var(--mmr-ink); }
.mmr-field input, .mmr-field select, .mmr-field textarea {
  width: 100%; min-height: 48px;
  border: 1px solid var(--mmr-line); border-radius: var(--mmr-r-md);
  padding: 0 12px; background: #fff; color: var(--mmr-ink);
  box-shadow: none;
}
.mmr-field textarea { padding: 10px 12px; resize: vertical; min-height: 88px; }
.mmr-field input:focus, .mmr-field select:focus, .mmr-field textarea:focus { border-color: var(--mmr-link); outline: 3px solid rgba(29,92,104,.25); outline-offset: 0; }
.mmr-field .mmr-hint { display: block; font-size: 13px; color: var(--mmr-muted); margin-top: 6px; }
.mmr-field.has-error input, .mmr-field.has-error select, .mmr-field.has-error textarea { border-color: var(--mmr-danger); }
.mmr-field .mmr-error { display: block; font-size: 13px; color: var(--mmr-danger); margin-top: 6px; font-weight: 600; }
.mmr-field-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.mmr-field-row .mmr-field + .mmr-field { margin-top: 0; }
/* .mmr-field también lleva la clase "form-group" -- la necesita
   FormValidation (libs.min.js) para ubicar dónde meter el mensaje de
   error de cada campo (busca .closest('.form-group'); sin ella tira
   "Maximum call stack size exceeded" al validar). Bootstrap le pone
   margin-bottom:15px a .form-group, que se suma al margin-top:14px de
   ".mmr-field + .mmr-field" y duplica el espacio -- se anula acá. */
.mmr-field.form-group { margin-bottom: 0; }
.mmr-ship-quote { background: var(--mmr-success-soft); border-radius: var(--mmr-r-md); padding: 12px; display: flex; justify-content: space-between; gap: 12px; font-size: 15px; margin-top: 14px; }
.mmr-ship-quote strong { white-space: nowrap; }

/* Opciones de pago: <label class="mmr-payopt"><input type="radio">…</label> */
.mmr-payopt {
  display: flex; align-items: center; gap: 12px;
  min-height: 56px; padding: 10px 14px;
  border: 1px solid var(--mmr-line); border-radius: var(--mmr-r-lg);
  background: #fff; cursor: pointer; font-weight: 400;
}
.mmr-payopt + .mmr-payopt { margin-top: 10px; }
.mmr-payopt.form-group { margin-bottom: 0; } /* ver nota junto a .mmr-field.form-group */
.mmr-payopt input[type="radio"] { width: 20px; height: 20px; margin: 0; accent-color: var(--mmr-ink); flex-shrink: 0; }
.mmr-payopt strong { display: block; font-size: 16px; }
.mmr-payopt small { display: block; font-size: 13px; color: var(--mmr-muted); }
.mmr-payopt:has(input:checked) { border: 2px solid var(--mmr-ink); background: #F4F7FA; padding: 9px 13px; }
.mmr-payopt.is-checked { border: 2px solid var(--mmr-ink); background: #F4F7FA; padding: 9px 13px; } /* respaldo JS para navegadores sin :has */
.mmr-paydetails { background: #F4F7FA; border-radius: var(--mmr-r-lg); padding: 14px; margin-top: 10px; font-size: 15px; line-height: 1.45; }
.mmr-paydetails[hidden] { display: none; }

@media (min-width: 992px) {
  .mmr-checkout-layout { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 24px; padding: 32px 80px 0; align-items: start; }
  .mmr-checkout-layout .mmr-section { margin-left: 0; margin-right: 0; }
  .mmr-checkout-layout aside { position: sticky; top: 24px; }
}

/* ---------- 20. Confirmación ---------- */
.mmr-success-head { padding: 36px 24px 8px; text-align: center; }
.mmr-success-head__icon { width: 72px; height: 72px; border-radius: 36px; background: var(--mmr-success); display: inline-flex; align-items: center; justify-content: center; margin-bottom: 12px; }
.mmr-success-head h1 { font-size: 30px; font-weight: 800; }
.mmr-success-head p { font-size: 16px; color: var(--mmr-body); margin-top: 10px; }
.mmr-steps { list-style: none; margin: 0; padding: 0; }
.mmr-steps li { display: flex; gap: 12px; align-items: flex-start; }
.mmr-steps li + li { margin-top: 16px; }
.mmr-steps__n { width: 30px; height: 30px; flex-shrink: 0; border-radius: 15px; background: var(--mmr-line-soft); color: var(--mmr-ink); font-size: 14px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.mmr-steps li.is-done .mmr-steps__n { background: var(--mmr-success); color: #fff; }
.mmr-steps strong { display: block; font-size: 15px; }
.mmr-steps span { font-size: 14px; color: var(--mmr-muted); line-height: 1.4; }
@media (min-width: 992px) { .mmr-narrow { max-width: 640px; margin: 0 auto; } }

/* ---------- 21. Botón flotante de WhatsApp (opcional) ---------- */
.mmr-wa-float {
  position: fixed; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); z-index: 1020;
  width: 56px; height: 56px; border-radius: 28px;
  background: var(--mmr-whatsapp); color: var(--mmr-ink-deep);
  display: inline-flex; align-items: center; justify-content: center;
  box-shadow: 0 4px 14px rgba(11,29,33,.25);
}
body.mmr-has-sticky .mmr-wa-float, body.mmr-has-sticky-tall .mmr-wa-float { bottom: 110px; }

/* ---------- 22. Movimiento reducido ---------- */
@media (prefers-reduced-motion: reduce) {
  body.mmr-shop * { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}

/* ---------- 23. Integración con SMA (Fase B) ---------- */
/* Logo en imagen (Carlos decidió mantener la imagen actual, no texto).
   El archivo tiene texto azul marino oscuro -- ilegible sobre el header y
   el footer, que son de fondo oscuro (--mmr-ink / --mmr-ink-deep). Se le
   pone una placa blanca redondeada detrás para que siempre se lea bien,
   sin depender de un archivo de logo nuevo. */
.mmr-logo {
  background: #fff; display: inline-flex; align-items: center;
  padding: 6px 10px; border-radius: var(--mmr-r-sm);
}
.mmr-logo img { display: block; height: 26px; width: auto; }
@media (min-width: 992px) { .mmr-logo img { height: 32px; } }

/* Menú móvil (hamburguesa): panel Bootstrap .collapse con categorías y cuenta */
.mmr-mobile-menu {
  background: var(--mmr-surface);
  border-bottom: 1px solid var(--mmr-line-soft);
  padding: 8px var(--mmr-pad) 16px;
}
.mmr-mobile-menu__list { list-style: none; margin: 0; padding: 0; }
.mmr-mobile-menu__list li a {
  display: block;
  padding: 12px 4px;
  border-bottom: 1px solid var(--mmr-line-soft);
  color: var(--mmr-ink);
  text-decoration: none;
  font-weight: 600;
  min-height: var(--mmr-touch);
  line-height: 20px;
}
.mmr-mobile-menu hr { border: 0; border-top: 1px solid var(--mmr-line-soft); margin: 4px 0; }
@media (min-width: 768px) { .mmr-mobile-menu { display: none !important; } }

/* Botón "Crear cuenta" en el header de escritorio, junto a los íconos */
.mmr-header__actions button.mmr-iconbtn { border: 0; cursor: pointer; }

/* Inicio: "Más vendidos" muestra 6 en móvil y 10 en escritorio (Carlos, 2026-09-24) */
.mmr-grid--limit-mobile > :nth-child(n+7) { display: none; }
@media (min-width: 768px) { .mmr-grid--limit-mobile > :nth-child(n+7) { display: flex; } }

/* ---------- 24. Utilidades propias (Fase C/D) — mismos tokens que el resto ---------- */
/* Checkbox dentro de .mmr-field (el sistema solo define text/select/textarea) */
.mmr-checkbox {
  display: flex; align-items: center; gap: 10px;
  font-weight: 400; cursor: pointer; min-height: var(--mmr-touch);
}
.mmr-checkbox input[type="checkbox"] {
  width: 20px; height: 20px; min-height: auto; flex-shrink: 0;
  accent-color: var(--mmr-ink); margin: 0;
}

/* Input + botón en una fila (código de la ruleta) */
.mmr-inline-group { display: flex; gap: 8px; align-items: flex-start; }
.mmr-inline-group input { flex: 1; min-width: 0; }
.mmr-inline-group .mmr-btn { flex-shrink: 0; min-height: 48px; padding: 0 16px; }

/* Fila de botones lado a lado (carrito: vaciar / seguir comprando) */
.mmr-btn-row { display: flex; flex-wrap: wrap; gap: 10px; justify-content: space-between; margin-top: 14px; }
.mmr-btn-row .mmr-btn { flex: 1; min-width: 150px; }
@media (min-width: 992px) { .mmr-btn-row .mmr-btn { flex: none; } }

/* Encabezado de tarjeta con acción a la derecha (título + link), escala de .mmr-card h2 */
.mmr-card-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.mmr-card-head h2 { margin-bottom: 0; }
.mmr-card-head a { font-size: 14px; font-weight: 600; white-space: nowrap; }

/* Logo dentro del footer: mismo tratamiento de placa blanca que el header */
.mmr-footer .mmr-logo { margin-bottom: 4px; }
.mmr-footer .mmr-logo img { height: 24px; }

/* Pestañas de checkout (usuario/invitado) a la escala del sistema */
.mmr-tabs-spacing { margin-bottom: var(--mmr-pad); }

/* Nota al pie (tarifa de envío referencial) */
.mmr-footnote { display: block; margin: 12px var(--mmr-pad) 0; }
@media (min-width: 992px) { .mmr-footnote { margin-left: 80px; margin-right: 80px; } }

/* Categoría/búsqueda: filtro angosto, resultados anchos (al revés que
   .mmr-checkout-layout, que le da más espacio a la columna izquierda) */
.mmr-products-layout { display: block; }
@media (min-width: 992px) {
  .mmr-products-layout {
    display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 24px;
    padding: 32px 80px 0; align-items: start;
  }
  .mmr-products-layout .mmr-card { position: sticky; top: 24px; }
}
/* La columna de resultados envuelve un .row de Bootstrap (márgenes
   negativos de -15px) que nadie compensaba -- eso empujaba la página
   unos pixeles más ancha que la pantalla en móvil. */
.mmr-results-col { padding: 0 15px; overflow-x: hidden; max-width: 100%; }

/* Categoría/búsqueda: la grilla de resultados la genera JS existente
   (gen_html en scripts.min.js) con clases de Bootstrap que solo definen
   ancho a partir de "md" (≥992px) -- por debajo de eso cada producto
   ocupaba el 100% del ancho. Se fuerzan 2 columnas en móvil/tablet. */
@media (max-width: 991px) {
  #results.grid .product-container { float: left; width: 50%; }
}

/* Bootstrap solo da gutter horizontal (padding izq/der en .col-*) -- entre
   filas no hay separación, así que las tarjetas de una fila tocaban las de
   la siguiente. Se agrega un margen inferior parejo con el resto de la
   cuadrícula (.mmr-grid usa 12px/16px de gap). */
#results.grid .product-container { margin-bottom: 12px; }
@media (min-width: 992px) {
  #results.grid .product-container { margin-bottom: 16px; }
}

/* Reskin suave de las tarjetas de categoría/búsqueda (se generan por JS
   existente, gen_html() en scripts.min.js -- no se puede tocar su marcado
   sin reescribir esa lógica, así que solo se homologa el look). */
#results .product, .featured-products .product {
  border-radius: var(--mmr-r-lg);
  background: var(--mmr-surface);
  overflow: hidden;
}
#results .product-name a, .featured-products .product_name a { color: var(--mmr-ink); font-weight: 600; }
#results .product_price, .featured-products .product_price { color: var(--mmr-ink); font-weight: 700; }

/* Barra de cookies: reemplaza el "cookie-warning" viejo (tarjeta flotante
   en la esquina inferior derecha, que se superponía con los botones de
   WhatsApp y la ruleta, que viven en esa misma esquina). Ahora es una
   barra completa fija abajo, con el mismo lenguaje visual del resto. */
.mmr-cookiebar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 1030;
  background: var(--mmr-ink-deep); color: var(--mmr-on-dark);
  padding: 14px var(--mmr-pad) calc(14px + env(safe-area-inset-bottom, 0px));
  display: flex; flex-direction: column; gap: 12px;
  box-shadow: 0 -6px 20px rgba(0,0,0,.2);
  box-sizing: border-box;
}
.mmr-cookiebar p { margin: 0; font-size: 13px; line-height: 1.45; }
.mmr-cookiebar a:not(.mmr-btn) { color: var(--mmr-accent); }
.mmr-cookiebar .mmr-btn { align-self: flex-end; }
@media (min-width: 768px) {
  .mmr-cookiebar { flex-direction: row; align-items: center; justify-content: space-between; gap: 20px; padding: 16px 80px; }
  .mmr-cookiebar p { font-size: 14px; }
  .mmr-cookiebar .mmr-btn { align-self: auto; flex-shrink: 0; }
}

/* Mientras la barra de cookies esté visible, los botones flotantes de
   WhatsApp y la ruleta se corren hacia arriba para no quedar tapados
   (--mmr-cookiebar-h lo calcula mmr-redesign.js con el alto real). */
body.mmr-has-cookiebar #wa-fab { bottom: calc(84px + var(--mmr-cookiebar-h, 70px)) !important; }
body.mmr-has-cookiebar #wheel-fab { bottom: calc(20px + var(--mmr-cookiebar-h, 70px)) !important; }
/* Mismo problema con la barra fija de "Agregar al carrito" (ficha de
   producto) y la de checkout: ambas son position:fixed;bottom:0 igual que
   la barra de cookies y con el mismo z-index -- si el cliente no había
   aceptado cookies todavía, la barra de cookies quedaba encima y el botón
   de agregar al carrito / confirmar pedido no recibía el clic (parecía
   "no hacer nada"). Se sube igual que los flotantes de WhatsApp/ruleta. */
body.mmr-has-cookiebar .mmr-sticky-bar { bottom: var(--mmr-cookiebar-h, 70px) !important; }

/* ---------- 25. Utilidades de visibilidad (van al final a propósito) ----------
   Movidas hasta acá desde la sección 1: son de un solo selector, igual que
   .mmr-search, .mmr-payopt, etc. -- si estuvieran arriba, un empate de
   especificidad se resuelve por orden de aparición y esas reglas más
   específicas en contenido (aunque igual de "fuertes" en CSS) podían ganar
   y dejar visible en móvil algo que debía estar oculto (pasó exactamente
   esto con el buscador de escritorio: .mmr-search{display:flex} le ganaba
   a .mmr-hide-mobile{display:none} por estar más abajo). Al ir al final,
   estas reglas de utilidad siempre ganan el empate. */
.mmr-hide-mobile { display: none; }
@media (min-width: 992px) {
  .mmr-hide-mobile { display: initial; }
  .mmr-hide-desktop { display: none !important; }
}

/* ---------- 26. Scroll infinito en listado de productos ---------- */
#pagination { display: none !important; }
.mmr-infinite-loader {
  display: none;
  text-align: center;
  padding: 20px var(--mmr-pad);
  font-size: 14px; font-weight: 600;
  color: var(--mmr-muted);
}

/* ---------- 27. Carrito en móvil: la tabla clásica (8 columnas) no cabe
   en una pantalla chica. Se reordena cada <tr> como una tarjeta compacta
   por CSS (sin tocar el HTML/JS que la genera, update_cart() en
   scripts.min.js sigue igual) -- nombre y precio quedan chicos y todo
   entra sin scroll horizontal. */
@media (max-width: 767px) {
  #cart-table thead { display: none; }
  #cart-table, #cart-table tbody { display: block; width: 100%; }
  #cart-table tr {
    display: grid;
    grid-template-columns: 92px 1fr auto;
    grid-template-areas:
      "photo name remove"
      "photo price price"
      "photo opts opts"
      "photo qty qty";
    column-gap: 10px; row-gap: 4px;
    align-items: center;
    padding: 12px 0;
    border-bottom: 1px solid var(--mmr-line);
  }
  #cart-table tr:first-child { padding-top: 0; }
  #cart-table td { display: block; border: 0 !important; padding: 0; }
  #cart-table td:nth-child(1) { grid-area: remove; justify-self: end; }
  #cart-table td:nth-child(1) a { font-size: 16px; color: var(--mmr-muted); }
  #cart-table td:nth-child(2) { display: none; } /* # de fila, solo interno */
  #cart-table td:nth-child(3) { grid-area: photo; align-self: start; }
  #cart-table td:nth-child(3) .cart-item-image { float: none !important; }
  #cart-table td:nth-child(3) img { width: 92px; height: 92px; object-fit: contain; border-radius: var(--mmr-r-sm); background: #fff; }
  #cart-table td:nth-child(4) { grid-area: name; font-size: 12px; line-height: 1.3; align-self: end; }
  #cart-table td:nth-child(4) a { font-size: 12px; font-weight: 600; color: var(--mmr-ink) !important; }
  #cart-table td:nth-child(5) { grid-area: opts; }
  #cart-table td:nth-child(5):empty { display: none; }
  #cart-table td:nth-child(6) { grid-area: qty; align-self: start; }
  #cart-table td:nth-child(6) input { width: 64px; height: 32px; font-size: 13px; padding: 2px 6px; }
  #cart-table td:nth-child(7) { grid-area: price; font-size: 15px; font-weight: 800; color: var(--mmr-ink); text-align: left; align-self: start; }
  #cart-table td:nth-child(8) { display: none; } /* subtotal: ya se ve precio + cantidad */
}

/* ---------- 28. Cuenta: pedidos / direcciones / wishlist / cotizaciones -----
   Estas vistas (view_order, orders, addresses, wishlist, quotes, view_quote,
   downloads) todavía usan el .panel/.well de Bootstrap original -- no se
   tocó su PHP (datos de factura, impuestos, GST condicional, etc. son
   demasiado sensibles para reescribir el markup). Se homologa el look SOLO
   por CSS, misma estrategia que "#results .product" con el grid de
   categoría/búsqueda: mismos colores, tipografía y radios que el resto del
   rediseño, sin arriesgar la lógica de negocio. */
.panel.panel-default {
  background: #fff; border: 1px solid var(--mmr-line); border-radius: var(--mmr-r-lg);
  box-shadow: none; overflow: hidden;
}
.panel.panel-default > .panel-heading {
  background: #fff; border-bottom: 1px solid var(--mmr-line);
  color: var(--mmr-ink); font-size: 17px; font-weight: 700;
  padding: 16px 20px;
}
.panel.panel-default > .panel-heading a { color: var(--mmr-link) !important; font-size: 14px; font-weight: 600; text-decoration: none; }
.panel.panel-default > .panel-body { padding: 20px; }
.panel.panel-default .well { background: var(--mmr-surface); border: 0; border-radius: var(--mmr-r-md); box-shadow: none; }
.panel.panel-default .biller-header h2 { color: var(--mmr-ink); font-weight: 700; font-size: 20px; }
.panel.panel-default .table-bordered { border-color: var(--mmr-line); }
.panel.panel-default .table-bordered td, .panel.panel-default .table-bordered th { border-color: var(--mmr-line) !important; }
.panel.panel-default .table-bordered thead th { background: var(--mmr-surface); color: var(--mmr-ink); font-weight: 700; }
.panel.panel-default label[for="file"] {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--mmr-ink); color: #fff !important; border: 0 !important;
  border-radius: var(--mmr-r-md); padding: 10px 16px; font-weight: 600; cursor: pointer;
}
.panel.panel-default #upload-file.btn {
  background: var(--mmr-accent); color: var(--mmr-ink) !important; border: 0;
  border-radius: var(--mmr-r-md); padding: 10px 16px; font-weight: 700;
}
@media (max-width: 767px) {
  .panel.panel-default > .panel-heading { font-size: 15px; padding: 14px 16px; }
  .panel.panel-default > .panel-body { padding: 16px; }
  /* La tabla de productos del pedido tenía anchos fijos en px por línea
     (style="width:120px" etc.) pensados para escritorio -- obligaban a
     hacer scroll horizontal en el celular. En vez de solo achicar letra,
     se convierte cada fila en una tarjeta compacta (estilo Temu: nombre
     arriba, cantidad/precio chico al medio, subtotal grande a la
     derecha) sin tocar el PHP que genera la tabla -- sigue siendo la
     misma <table>, solo se reacomoda por CSS con flexbox. Funciona sin
     importar cuántas columnas numéricas tenga (impuesto/descuento son
     condicionales según configuración del sitio). */
  .order-table thead { display: none; }
  .order-table, .order-table tbody, .order-table tfoot { display: block; width: 100%; }
  .order-table tbody tr {
    display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 6px;
    padding: 12px 0; border-bottom: 1px solid var(--mmr-line);
  }
  .order-table tbody td { display: block; border: 0 !important; padding: 0 !important; width: auto !important; }
  .order-table tbody td:first-child { display: none; } /* columna "No", solo decorativa */
  .order-table tbody td:nth-child(2) {
    flex: 1 0 100%; order: 1;
    font-size: 13px; font-weight: 600; color: var(--mmr-ink); line-height: 1.35;
  }
  .order-table tbody td:nth-child(n+3):not(:last-child) {
    order: 2; font-size: 12px; color: var(--mmr-muted); margin-right: 10px;
  }
  .order-table tbody td:last-child { order: 3; margin-left: auto; font-weight: 800; font-size: 14px; color: var(--mmr-ink); text-align: right; }
  .order-table tfoot tr { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 0 !important; }
  .order-table tfoot td { display: block; width: auto !important; border: 0 !important; font-size: 13px; }
}

/* "Ver pedido" en móvil: lo secundario (datos de la empresa, código de
   barras/QR, dirección de facturación/envío, puntos de premio) queda
   detrás de "Mostrar más detalles" -- se ve primero lo importante (estado
   del pedido, productos, total). En escritorio se ve todo igual que
   siempre; son los mismos bloques de PHP de antes, solo se ocultan por
   CSS en pantallas chicas. */
.mmr-order-toggle {
  display: none;
  align-items: center; gap: 6px;
  background: none; border: 0; padding: 8px 0; margin-bottom: 14px;
  font-size: 14px; font-weight: 700; color: var(--mmr-link);
  cursor: pointer;
}
@media (max-width: 767px) {
  .mmr-order-toggle { display: inline-flex; }
  .mmr-order-more { display: none; }
  body.mmr-order-expanded .mmr-order-more { display: block; }
  body.mmr-order-expanded .mmr-order-toggle .fa { transform: rotate(180deg); }
}

/* ---------- 29. Carrito flotante + recordatorio amistoso ----------
   Mismo lenguaje visual que #wa-fab/#wheel-fab (custom.css, sin tocar):
   se apila arriba de esos dos. Solo aparece si hay productos en el
   carrito (lo prende/apaga update_mini_cart en footer.php). */
#cart-fab {
  position: fixed; right: 20px; bottom: calc(148px + var(--mmr-cookiebar-h, 0px));
  z-index: 1020;
  background: var(--mmr-ink); color: #fff !important;
  border: none; border-radius: 50px;
  padding: 14px 22px; font-weight: 700; font-size: 15px;
  text-decoration: none !important;
  box-shadow: 0 4px 16px rgba(0,0,0,.3);
  display: inline-flex; align-items: center; gap: 8px;
  min-width: 190px; justify-content: center;
  transition: bottom .2s ease, filter .15s ease;
}
#cart-fab:hover { filter: brightness(1.15); }
#cart-fab .mmr-count {
  background: #e5484d; color: #fff;
  min-width: 20px; height: 20px; border-radius: 10px;
  font-size: 11px; font-weight: 800; line-height: 20px; text-align: center;
  padding: 0 5px;
}
body.mmr-has-cookiebar #cart-fab { bottom: calc(148px + var(--mmr-cookiebar-h, 70px)) !important; }
@media (max-width: 767px) {
  #cart-fab {
    min-width: 0; width: 52px; height: 52px; padding: 0;
    border-radius: 50%; font-size: 20px; position: fixed;
  }
  #cart-fab .mm-fab-label { display: none; }
  #cart-fab .mmr-count { position: absolute; top: -2px; right: -2px; }
}

/* Mensaje amistoso: aparece un momento y se esfuma solo (mmr-redesign.js,
   sección 10) -- no lleva botón de cerrar a propósito, no hace falta. */
#cart-fab-toast {
  position: fixed; right: 20px; bottom: calc(208px + var(--mmr-cookiebar-h, 0px));
  z-index: 1019; max-width: 220px;
  background: #fff; color: var(--mmr-ink);
  border-radius: var(--mmr-r-md); padding: 10px 14px;
  font-size: 13px; font-weight: 600; line-height: 1.35;
  box-shadow: 0 4px 16px rgba(0,0,0,.2);
  opacity: 0; transform: translateY(6px); pointer-events: none;
  transition: opacity .35s ease, transform .35s ease;
}
#cart-fab-toast.is-visible { opacity: 1; transform: translateY(0); }
@media (max-width: 767px) { #cart-fab-toast { bottom: calc(180px + var(--mmr-cookiebar-h, 0px)); right: 16px; } }

/* Si la página ya tiene su propia barra fija de compra (ficha de
   producto, checkout), no hace falta duplicar el llamado a la acción con
   el carrito flotante encima. */
body:has(.mmr-sticky-bar) #cart-fab,
body:has(.mmr-sticky-bar) #cart-fab-toast { display: none !important; }

/* Tampoco tiene sentido en el carrito mismo -- ya se está viendo. */
body:has(.mmr-cart-layout) #cart-fab,
body:has(.mmr-cart-layout) #cart-fab-toast { display: none !important; }

/* ---------- 30. Carrusel de productos (home: "Más Vendidos") ----------
   Reemplaza el banner/hero de un solo producto por un carrusel de varios
   -- mismas tarjetas .mmr-pcard de siempre (Temu-style), solo se
   reacomodan en fila horizontal con scroll-snap (el swipe en móvil es
   scroll nativo del navegador, no hace falta reimplementarlo). Pensado
   para reusarse tal cual en más secciones futuras (ofertas del día,
   recién llegados) con el mismo <div data-mmr-carousel>. Alto máximo
   pensado: ~280px en móvil / ~350px en escritorio, para que se vean
   productos apenas se entra al sitio sin necesitar scroll. */
.mmr-carousel-section { margin: 20px var(--mmr-pad) 0; }
.mmr-carousel-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.mmr-carousel-head h2 { margin: 0; font-size: 20px; font-weight: 800; line-height: 1.2; }
.mmr-carousel-head p { margin: 2px 0 0; font-size: 13px; color: var(--mmr-muted); }
.mmr-carousel { position: relative; }
.mmr-carousel__track {
  display: flex; gap: 10px;
  overflow-x: auto; scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch; scrollbar-width: none;
  padding-bottom: 2px;
}
/* Sin scroll-snap a propósito: el carrusel de categorías (.mmr-chips,
   sección 5 de mmr-redesign.js) tampoco lo usa y sí avanza solo -- el
   snap puede pelear con el scrollTo() programático del auto-avance y
   cancelar la animación. El swipe en móvil sigue funcionando igual
   (scroll nativo), solo que sin engancharse a una tarjeta exacta. */
.mmr-carousel__track::-webkit-scrollbar { display: none; }
.mmr-carousel__track > .mmr-pcard { flex: 0 0 calc(50% - 5px); }
.mmr-carousel__track .mmr-pcard__photo { height: 160px; }
@media (min-width: 600px) {
  .mmr-carousel__track > .mmr-pcard { flex-basis: calc(33.333% - 7px); }
}
@media (min-width: 992px) {
  .mmr-carousel-section { margin: 32px 80px 0; }
  .mmr-carousel-head h2 { font-size: 26px; }
  .mmr-carousel__track { gap: 16px; }
  .mmr-carousel__track > .mmr-pcard { flex-basis: calc(20% - 13px); }
  .mmr-carousel__track .mmr-pcard__photo { height: 210px; }
}
.mmr-carousel__nav {
  display: none;
  position: absolute; top: 40%; transform: translateY(-50%);
  width: 36px; height: 36px; border-radius: 50%;
  border: 1px solid var(--mmr-line); background: #fff;
  box-shadow: 0 2px 10px rgba(0,0,0,.15);
  align-items: center; justify-content: center; cursor: pointer; z-index: 2;
  -webkit-appearance: none; appearance: none;
}
.mmr-carousel__nav svg { width: 18px; height: 18px; color: var(--mmr-ink); }
.mmr-carousel__nav--prev { left: -14px; }
.mmr-carousel__nav--next { right: -14px; }
@media (min-width: 992px) {
  .mmr-carousel__nav { display: flex; }
}

/* Variante "chica" del carrusel (home, arriba de todo, antes ocupaba el
   banner de imágenes del admin): productos más chicos y más juntos, para
   que se vea más como una vitrina rápida que como un banner. */
.mmr-carousel--sm .mmr-pcard__photo { height: 110px; }
.mmr-carousel--sm .mmr-pcard__body { padding: 0; gap: 3px; }
.mmr-carousel--sm .mmr-pcard.product { padding: 6px; gap: 6px; }
.mmr-carousel--sm .mmr-pcard__name { font-size: 12px; }
.mmr-carousel--sm .mm-pop { font-size: 10px; }
.mmr-carousel--sm .mmr-price__now { font-size: 13px; }
.mmr-carousel--sm .mmr-pcard__add { width: 28px; height: 28px; }
.mmr-carousel--sm .mmr-pcard__add svg { width: 14px; height: 14px; }
.mmr-carousel--sm .mmr-carousel__track > .mmr-pcard { flex-basis: calc(33.333% - 7px); }
@media (min-width: 600px) {
  .mmr-carousel--sm .mmr-carousel__track > .mmr-pcard { flex-basis: calc(25% - 8px); }
}
@media (min-width: 992px) {
  .mmr-carousel--sm .mmr-pcard__photo { height: 140px; }
  .mmr-carousel--sm .mmr-carousel__track > .mmr-pcard { flex-basis: calc(16.666% - 14px); }
}

/* ---------- 31. "Me gusta" + comentarios (ficha de producto) ---------- */
.mmr-like-btn {
  display: inline-flex; align-items: center; gap: 8px;
  margin-top: 12px; padding: 10px 16px;
  border: 1px solid var(--mmr-line); border-radius: 999px;
  background: #fff; color: var(--mmr-ink); font-size: 14px; font-weight: 700;
  cursor: pointer; -webkit-appearance: none; appearance: none;
  transition: background-color .15s ease, border-color .15s ease, transform .15s ease;
}
.mmr-like-btn svg { width: 20px; height: 20px; color: var(--mmr-danger, #e5484d); flex-shrink: 0; }
.mmr-like-btn.is-liked { background: #fff0f0; border-color: var(--mmr-danger, #e5484d); color: var(--mmr-danger, #e5484d); }
.mmr-like-btn.mmr-like-pop { animation: mmr-like-pop .4s ease; }
@keyframes mmr-like-pop {
  0% { transform: scale(1); }
  35% { transform: scale(1.18); }
  100% { transform: scale(1); }
}

.mmr-comment-form { display: flex; flex-direction: column; gap: 10px; margin-bottom: 18px; }
.mmr-comment-form textarea {
  width: 100%; min-height: 72px; padding: 10px 12px; resize: vertical;
  border: 1px solid var(--mmr-line); border-radius: var(--mmr-r-md);
  font: inherit; color: var(--mmr-ink); background: #fff;
}
.mmr-comment-form .mmr-btn { align-self: flex-end; }
.mmr-comment-list { display: flex; flex-direction: column; gap: 16px; }
.mmr-comment { display: flex; gap: 12px; }
.mmr-comment__avatar {
  width: 38px; height: 38px; border-radius: 50%; flex-shrink: 0;
  background: var(--mmr-ink); color: #fff; font-weight: 800; font-size: 15px;
  display: flex; align-items: center; justify-content: center;
}
.mmr-comment__body strong { font-size: 14px; color: var(--mmr-ink); }
.mmr-comment__body .mmr-muted { font-size: 12px; }
.mmr-comment__body p { margin: 4px 0 0; font-size: 14px; line-height: 1.45; color: var(--mmr-ink); }

/* ---------- 32. Cuenta: modales de registro rápido / iniciar sesión + página /login ---------- */
.mmr-modal .modal-dialog { width: auto; max-width: 440px; margin: 56px auto; padding: 0 var(--mmr-pad); }
.mmr-modal .modal-content { border: 0; border-radius: var(--mmr-r-xl); box-shadow: 0 24px 64px rgba(16, 24, 40, .28); font-family: var(--mmr-font-body); color: var(--mmr-ink); }
.mmr-modal .modal-header { border-bottom: 0; padding: 24px 24px 0; }
.mmr-modal .modal-title { font-family: var(--mmr-font-display); font-size: 24px; font-weight: 800; letter-spacing: -.3px; line-height: 1.2; color: var(--mmr-ink); padding-right: 32px; }
.mmr-modal .qr-sub { margin: 6px 0 0; font-size: 14px; color: var(--mmr-muted); }
.mmr-modal .close { font-size: 30px; font-weight: 400; opacity: .55; margin-top: -6px; min-width: var(--mmr-touch); min-height: var(--mmr-touch); margin-right: -12px; }
.mmr-modal .close:hover { opacity: .9; }
.mmr-modal .modal-body { padding: 18px 24px 24px; }
.mmr-modal .form-group { margin-bottom: 0; }
@media (max-width: 767px) {
  .mmr-modal .modal-dialog { margin: 24px auto; }
  .mmr-modal .modal-header { padding: 20px 20px 0; }
  .mmr-modal .modal-body { padding: 16px 20px 20px; }
}
.mmr-qs-creds { background: var(--mmr-success-soft); border-radius: var(--mmr-r-md); padding: 12px 14px; font-size: 15px; }

.mmr-login-form .mmr-field + .mmr-field { margin-top: 14px; }
.mmr-pass { position: relative; }
.mmr-pass input { padding-right: 76px !important; }
.mmr-pass__toggle {
  position: absolute; right: 4px; top: 50%; transform: translateY(-50%);
  min-height: 40px; padding: 0 12px; border: 0; background: transparent;
  color: var(--mmr-link); font-weight: 700; font-size: 13px; border-radius: var(--mmr-r-sm);
}
.mmr-pass__toggle:hover { background: var(--mmr-bg); }
.mmr-login-row { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px 12px; margin: 14px 0 16px; font-size: 14px; }
.mmr-check { display: inline-flex; align-items: center; gap: 8px; margin: 0; font-weight: 500; cursor: pointer; min-height: var(--mmr-touch); }
.mmr-check input { width: 18px; height: 18px; margin: 0; accent-color: var(--mmr-ink); }
.mmr-login-row .forgot-password { font-weight: 600; }
.mmr-login-error { margin: 0 0 12px; font-size: 14px; font-weight: 600; color: var(--mmr-danger); }
.mmr-login-error a { margin-left: 2px; }
.mmr-auth-switch { margin: 16px 0 0; text-align: center; font-size: 14px; }
.mmr-auth-switch a { font-weight: 700; }

.mmr-auth { display: grid; gap: 16px; max-width: 960px; margin: 24px auto 48px; padding: 0 var(--mmr-pad); }
.mmr-auth .mmr-card { padding: 24px; margin: 0; }
.mmr-auth__title { font-family: var(--mmr-font-display); font-size: 28px; font-weight: 800; letter-spacing: -.4px; margin: 0; color: var(--mmr-ink); }
.mmr-auth__sub { margin: 6px 0 18px; }
.mmr-auth__new h2 { font-family: var(--mmr-font-display); }
.mmr-auth__perks { list-style: none; padding: 0; margin: 14px 0 20px; }
.mmr-auth__perks li { position: relative; padding-left: 26px; margin-top: 8px; font-size: 15px; }
.mmr-auth__perks li::before { content: "✓"; position: absolute; left: 0; top: 0; color: var(--mmr-success); font-weight: 800; }
@media (min-width: 768px) {
  .mmr-auth { grid-template-columns: 1.15fr 1fr; align-items: start; margin-top: 40px; }
  .mmr-auth .mmr-card { padding: 32px; }
}

/* ---------- 33. Tarjeta de producto: botón de WhatsApp (solo ícono) junto al carrito ----------
   Mismo tamaño que .mmr-pcard__add en cada variante. Lo arman product_card.php
   y gen_html() de scripts.min.js; mismo mensaje que "Comprar por WhatsApp" de la ficha. */
.mmr-pcard__footer { flex-wrap: wrap; }
.mmr-pcard__actions { display: flex; align-items: center; gap: 6px; margin-left: auto; flex-shrink: 0; }
.mmr-pcard__wa {
  width: 34px; height: 34px; flex-shrink: 0; border-radius: 50%;
  background: var(--mmr-whatsapp); color: var(--mmr-ink-deep) !important;
  display: inline-flex; align-items: center; justify-content: center;
  text-decoration: none !important; -webkit-tap-highlight-color: transparent;
}
.mmr-pcard__wa svg { width: 18px; height: 18px; }
.mmr-pcard__wa:hover { filter: brightness(.93); }
@media (min-width: 992px) {
  .mmr-pcard__wa { width: 38px; height: 38px; }
  .mmr-pcard__wa svg { width: 20px; height: 20px; }
}
.mmr-carousel--sm .mmr-pcard__actions { gap: 4px; }
.mmr-carousel--sm .mmr-pcard__wa { width: 28px; height: 28px; }
.mmr-carousel--sm .mmr-pcard__wa svg { width: 15px; height: 15px; }

/* ---------- 34. Tarjeta de producto: "me gusta" debajo de vistas/estrellas ----------
   Lo arman product_card.php (Site::getProductLikes) y gen_html() de scripts.min.js (r.likes de /shop/search). */
.mmr-pcard__likes { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; line-height: 1.2; color: var(--mmr-muted); }
.mmr-pcard__likes svg { width: 12px; height: 12px; flex-shrink: 0; color: var(--mmr-danger); }
.mmr-carousel--sm .mmr-pcard__likes { font-size: 10px; }
.mmr-carousel--sm .mmr-pcard__likes svg { width: 11px; height: 11px; }

/* ---------- Categorías en escritorio: carrusel con todas las categorías (2026-09-26) ---------- */
@media (min-width: 992px) {
  .mmr-catnav { gap: 0; }
  .mmr-catnav__scroll {
    display: flex; gap: 32px; align-items: center; flex: 1; min-width: 0; height: 100%;
    overflow-x: auto; scrollbar-width: none;
    -webkit-mask-image: linear-gradient(to right, #000 92%, transparent);
            mask-image: linear-gradient(to right, #000 92%, transparent);
  }
  .mmr-catnav__scroll::-webkit-scrollbar { display: none; }
}

/* ---------- Tallas (Cultura 506) ---------- */
/* Botones de talla en la ficha. Cada input conserva el .form-group del bloque
   (validación .validate de SMA). Agotada = tachada y deshabilitada. */
.mmr-sizes { margin: 18px 0 6px; }
.mmr-sizes__label { display: block; font-weight: 700; margin-bottom: 8px; color: var(--mmr-ink); }
.mmr-sizes__label small { font-weight: 500; color: var(--mmr-muted); margin-left: 6px; font-size: 13px; }
.mmr-sizes__grid { display: flex; flex-wrap: wrap; gap: 8px; }
.mmr-size { position: relative; margin: 0; cursor: pointer; font-weight: 600; }
.mmr-size input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.mmr-size span {
  display: inline-flex; flex-direction: column; align-items: center; justify-content: center;
  min-width: var(--mmr-touch); height: var(--mmr-touch); padding: 0 12px;
  border: 1.5px solid var(--mmr-line); border-radius: var(--mmr-r-md);
  background: var(--mmr-surface); color: var(--mmr-ink); font-size: 15px; line-height: 1.1;
  transition: border-color .15s, background .15s, color .15s;
}
.mmr-size span small { font-size: 11px; font-weight: 500; color: var(--mmr-muted); }
.mmr-size:hover span { border-color: var(--mmr-ink); }
.mmr-size input:checked + span { background: var(--mmr-ink); border-color: var(--mmr-ink); color: #fff; }
.mmr-size input:checked + span small { color: var(--mmr-on-dark); }
.mmr-size input:focus-visible + span { outline: 3px solid var(--mmr-link); outline-offset: 2px; }
.mmr-size.is-out { cursor: not-allowed; }
.mmr-size.is-out span { color: var(--mmr-muted); background: var(--mmr-photo); border-style: dashed; text-decoration: line-through; }
.mmr-size.is-out:hover span { border-color: var(--mmr-line); }
.mmr-sizes__hint { display: block; min-height: 20px; margin-top: 6px; font-size: 13px; font-weight: 600; color: #A8430A; }
.mmr-sizes.is-missing .mmr-size span { border-color: var(--mmr-danger); }
.mmr-sizes.is-missing .mmr-sizes__hint { color: var(--mmr-danger); }
.mmr-sizes .help-block { display: none; } /* el aviso lo da .mmr-sizes__hint */
/* Íconos de FormValidation (.form-control-feedback) que se insertan junto a cada radio. */
.mmr-sizes .form-control-feedback, .mmr-sizes .fv-control-feedback { display: none !important; }
.mmr-sizes .mmr-size input[type="radio"] {
  position: absolute !important; opacity: 0 !important; width: 1px !important; height: 1px !important;
  margin: 0 !important; pointer-events: none; -webkit-appearance: none; appearance: none;
}

/* ---------- Enlaces sobre fondo oscuro ---------- */
/* "body.mmr-shop a" (color de enlace) les ganaba por especificidad a estas reglas:
   el texto quedaba azul petróleo sobre el fondo oscuro, casi ilegible. */
body.mmr-shop .mmr-promo a { color: #fff; }
body.mmr-shop .mmr-header__actions > a,
body.mmr-shop .mmr-header__actions > .dropdown > a { color: #fff; }
body.mmr-shop .mmr-header__actions > a:hover,
body.mmr-shop .mmr-header__actions > .dropdown > a:hover { color: var(--mmr-accent-hover); }
body.mmr-shop .mmr-promo-card--dark a { color: var(--mmr-accent); }
body.mmr-shop .mmr-footer a { color: var(--mmr-on-dark); }
body.mmr-shop .mmr-footer a:hover { color: #fff; }
/* El tema de SMA dibuja un radio propio con "input[type=radio] + span::before" (círculo de 16px):
   en los botones de talla sobra, el botón entero ya es la opción. */
.mmr-sizes .mmr-size input + span::before,
.mmr-sizes .mmr-size input + span::after { content: none !important; display: none !important; }

/* Subcategorías (Cultura 506, 2026-09-28): botones sobre el listado, visibles en móvil y escritorio */
.mmr-subcats { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.mmr-subcats .mmr-chip { margin: 0; }
.mmr-mobile-menu__list li.mmr-mobile-menu__sub a { padding-left: 32px; font-size: .92em; opacity: .85; }

/* Catálogo por encargo (Cultura 506, 2026-09-28): /catalogo */
.mmr-encargo__intro h1 { font-family: var(--mmr-font-display); font-size: 26px; font-weight: 800; margin: 0 0 8px; }
.mmr-encargo__intro p { color: var(--mmr-body); margin: 0 0 8px; }
.mmr-encargo__precios { margin-top: 8px; }
.mmr-encargo__precios summary { cursor: pointer; font-weight: 700; color: var(--mmr-link); min-height: var(--mmr-touch); display: flex; align-items: center; }
.mmr-encargo__precios ul { list-style: none; margin: 8px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 6px; }
.mmr-encargo__precios li { display: flex; justify-content: space-between; gap: 6px; padding: 6px 10px; border: 1px solid var(--mmr-line-soft); border-radius: var(--mmr-r-md); background: var(--mmr-bg); font-size: 14px; }
.mmr-encargo__tools { display: flex; gap: 8px; margin: 16px 0 12px; }
.mmr-encargo__tools input { flex: 1; min-width: 0; height: var(--mmr-touch); }
.mmr-encargo__tools select { width: auto; height: var(--mmr-touch); }
.mmr-encargo__secc { margin-top: -6px; }
.mmr-encargo__secc .mmr-chip { font-size: 13px; }
.mmr-encargo__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
@media (min-width: 768px) { .mmr-encargo__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; } }
@media (min-width: 1200px) { .mmr-encargo__grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
.mmr-encargo__item { display: flex; flex-direction: column; gap: 4px; text-align: left; background: var(--mmr-surface); border: 0; border-radius: var(--mmr-r-lg); padding: 8px 8px 12px; cursor: pointer; color: var(--mmr-ink); font: inherit; }
.mmr-encargo__item:hover, .mmr-encargo__item:focus-visible { box-shadow: 0 0 0 2px var(--mmr-accent); outline: none; }
.mmr-encargo__ph { display: block; aspect-ratio: 1 / 1; background: var(--mmr-photo); border-radius: var(--mmr-r-sm); overflow: hidden; margin-bottom: 4px; }
.mmr-encargo__ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mmr-encargo__name { font-weight: 600; font-size: 14px; line-height: 1.3; }
.mmr-encargo__sizes { font-size: 13px; color: var(--mmr-muted); }
.mmr-encargo__price { font-weight: 800; font-size: 16px; }
.mmr-encargo__more { text-align: center; margin: 20px 0 8px; }
.mmr-encargo__more button { min-height: var(--mmr-touch); padding: 0 24px; border: 1px solid var(--mmr-ink); border-radius: var(--mmr-r-lg); background: transparent; color: var(--mmr-ink); font-weight: 700; }
.mmr-encargo__modal { position: fixed; inset: 0; z-index: 2000; background: rgba(11, 29, 33, .78); display: flex; align-items: center; justify-content: center; padding: 12px; }
.mmr-encargo__modal[hidden] { display: none; }
.mmr-encargo__dialog { position: relative; background: var(--mmr-surface); border-radius: var(--mmr-r-xl); max-width: 920px; width: 100%; max-height: 100%; overflow: auto; display: flex; flex-direction: column; }
@media (min-width: 768px) { .mmr-encargo__dialog { flex-direction: row; } .mmr-encargo__dialog img { width: 58%; } }
.mmr-encargo__dialog img { display: block; max-width: 100%; object-fit: contain; background: var(--mmr-photo); }
.mmr-encargo__minfo { padding: 16px; display: flex; flex-direction: column; gap: 10px; }
.mmr-encargo__minfo h2 { font-size: 20px; font-weight: 800; margin: 0; padding-right: 36px; }
.mmr-encargo__mprice { font-size: 22px; font-weight: 800; }
.mmr-encargo__close { position: absolute; top: 6px; right: 6px; width: var(--mmr-touch); height: var(--mmr-touch); border: 0; border-radius: 50%; background: rgba(255, 255, 255, .92); font-size: 28px; line-height: 1; color: var(--mmr-ink); z-index: 1; }
.mmr-encargo__wa { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: var(--mmr-touch); padding: 0 20px; border: 0; border-radius: var(--mmr-r-lg); background: var(--mmr-whatsapp); color: var(--mmr-ink-deep) !important; font-weight: 800; text-decoration: none !important; }
.mmr-encargo__wa[disabled] { opacity: .6; }
.mmr-encargo__log { max-height: 260px; overflow: auto; background: var(--mmr-bg); padding: 10px; border-radius: var(--mmr-r-md); font-size: 13px; margin-top: 12px; white-space: pre-wrap; }
.mmr-subcats[hidden] { display: none; }
@media (max-width: 480px) { .mmr-encargo__tools select { max-width: 42%; font-size: 14px; } }
.mmr-encargo__antes { font-weight: 500; font-size: .8em; color: var(--mmr-muted); margin-left: 4px; }
/* Catálogo por encargo: tallas para escoger en la vista del producto */
.mmr-encargo__talla strong { display: block; margin-bottom: 6px; }
.mmr-encargo__tallas { display: flex; flex-wrap: wrap; gap: 8px; }
.mmr-encargo__tbtn { min-width: 48px; min-height: var(--mmr-touch); padding: 0 12px; border: 1px solid var(--mmr-line); border-radius: var(--mmr-r-md); background: var(--mmr-surface); color: var(--mmr-ink); font-weight: 700; }
.mmr-encargo__tbtn:hover { border-color: var(--mmr-ink); }
.mmr-encargo__tbtn.is-active { background: var(--mmr-ink); border-color: var(--mmr-ink); color: #fff; }
.mmr-encargo__aviso { display: block; margin-top: 6px; color: var(--mmr-danger); font-weight: 700; }
