/* Marketplace AX — Liquid Glass (estilo Apple), estilos base del módulo.
   Requiere theme.css cargado antes (variables --glass-*, --mkt-*). */

.mkt-page-header,
.mkt-welcome,
.mkt-roadmap,
.mkt-section,
.mkt-btn,
.mkt-field input, .mkt-field select, .mkt-field textarea,
.mkt-input,
.mkt-modal-box,
.mkt-icon-btn,
.mkt-badge,
.mkt-alert {
  font-family: var(--mkt-font);
}

.mkt-page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 26px;
  flex-wrap: wrap;
  gap: 12px;
}
.mkt-page-title {
  font-size: 1.7rem;
  font-weight: 700;
  letter-spacing: -.02em;
  color: var(--text);
  display: flex;
  align-items: center;
  gap: 12px;
  text-wrap: balance;
}
.mkt-page-title i {
  color: var(--mkt-accent);
  font-size: 1.2rem;
  width: 38px; height: 38px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--mkt-radius-sm);
  background: rgba(var(--mkt-accent-rgb), .14);
}

/* ── Bloque de marca (logo de plataforma + nombre del módulo chico debajo) ── */
.mkt-brand-block {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}
.mkt-brand-block .mkt-brand-logo { display: flex; align-items: center; justify-content: center; }
.mkt-brand-block .mkt-brand-img { display: none; max-height: 40px; max-width: 200px; width: auto; object-fit: contain; }
.mkt-brand-block.has-logo-navy .mkt-brand-img--navy { display: block; }
.mkt-brand-block.has-logo-navy .mkt-brand-default   { display: none; }
[data-theme="light"] .mkt-brand-block.has-logo-light .mkt-brand-img--navy  { display: none; }
[data-theme="light"] .mkt-brand-block.has-logo-light .mkt-brand-img--light { display: block; }
[data-theme="light"] .mkt-brand-block.has-logo-light .mkt-brand-default    { display: none; }
.mkt-brand-block .mkt-brand-default {
  color: var(--mkt-accent);
  font-size: 1.2rem;
  width: 38px; height: 38px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--mkt-radius-sm);
  background: rgba(var(--mkt-accent-rgb), .14);
}
.mkt-brand-block .mkt-brand-sub {
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--text-muted);
  padding-left: 1px;
}

/* Ronda 15 — nombre de la tienda como texto cuando el vendedor no subió logo
   (white-label: nunca cae al ícono/texto de la plataforma). */
.mkt-brand-tienda-nombre {
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: -.01em;
  color: var(--text);
}

/* Posición + zoom del logo (zona 'marketplace', configurable en Admin → Identidad).
   Unscoped a propósito: catalogo.css también define .mkt-brand-logo/.mkt-brand-img
   sin prefijo para las otras 5 páginas del módulo (partial compartido). */
.mkt-brand-logo.logo-pos-left   { justify-content: flex-start; }
.mkt-brand-logo.logo-pos-center { justify-content: center; }
.mkt-brand-logo.logo-pos-right  { justify-content: flex-end; }
.mkt-brand-img { transform: scale(var(--plat-logo-zoom, 1)); margin: var(--plat-logo-margin, 0); }
.logo-pos-left   .mkt-brand-img { transform-origin: left center; }
.logo-pos-center .mkt-brand-img { transform-origin: center center; }
.logo-pos-right  .mkt-brand-img { transform-origin: right center; }

/* ── Superficie de vidrio base — reusada por welcome/roadmap/section/modal ── */
.mkt-welcome,
.mkt-roadmap,
.mkt-section,
.mkt-modal-box,
.mkt-catalogo-header,
.mkt-cart-item,
.mkt-portal-orden {
  position: relative;
  background: var(--glass-bg);
  -webkit-backdrop-filter: blur(var(--mkt-glass-blur)) saturate(var(--glass-saturate));
  backdrop-filter: blur(var(--mkt-glass-blur)) saturate(var(--glass-saturate));
  border: 1px solid var(--glass-border);
  border-radius: var(--mkt-radius);
  box-shadow: var(--mkt-glass-shadow);
  isolation: isolate;
}
/* Anti-lag en páginas con varias secciones apiladas (ej. mi-tienda/index.php,
   que fue creciendo de sección en sección): cada .mkt-section con blur es su
   propia capa GPU — sin esto, el navegador compone TODAS aunque estén fuera
   de pantalla. content-visibility salta layout/paint de las que no están
   cerca del viewport, igual que ya se hizo en catalogo.css/networking.css
   para las cards. auto <alto> = estimado inicial; el navegador recuerda el
   alto real tras el primer render, así que no se "salta" al hacer scroll. */
.mkt-section {
  content-visibility: auto;
  contain-intrinsic-size: auto 300px;
}
/* Sheen especular: filo superior más claro, simula luz rebotando en el borde del vidrio */
.mkt-welcome::before,
.mkt-roadmap::before,
.mkt-section::before,
.mkt-modal-box::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(160deg, var(--mkt-glass-highlight) 0%, transparent 35%, transparent 70%, rgba(var(--mkt-accent-rgb), .10) 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
  z-index: 1;
}

.mkt-welcome {
  display: flex;
  align-items: flex-start;
  gap: 18px;
  padding: 24px 26px;
  margin-bottom: 22px;
}
.mkt-welcome-icon {
  width: 50px;
  height: 50px;
  border-radius: var(--mkt-radius-sm);
  background: linear-gradient(150deg, rgba(var(--mkt-accent-rgb), .22), rgba(var(--mkt-accent-rgb), .08));
  border: 1px solid rgba(var(--mkt-accent-rgb), .25);
  color: var(--mkt-accent);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
  flex-shrink: 0;
  box-shadow: 0 4px 14px rgba(var(--mkt-accent-rgb), .18);
}
.mkt-welcome h2 {
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: -.01em;
  color: var(--text);
  margin: 0 0 6px;
}
.mkt-welcome p {
  font-size: .87rem;
  color: var(--text-muted);
  line-height: 1.6;
  margin: 0;
  max-width: 62ch;
}

.mkt-roadmap {
  padding: 20px 26px;
}
.mkt-roadmap h3 {
  font-size: .8rem;
  font-weight: 600;
  color: var(--text);
  margin: 0 0 14px;
  display: flex;
  align-items: center;
  gap: 8px;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.mkt-roadmap h3 i { color: var(--mkt-accent); }
.mkt-roadmap ul {
  margin: 0;
  padding-left: 20px;
  color: var(--text-muted);
  font-size: .87rem;
  line-height: 2;
}

/* ── Botones — vidrio + acento, con press físico ─────────────────────── */
.mkt-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  border-radius: var(--mkt-radius-pill);
  font-size: .85rem;
  font-weight: 600;
  letter-spacing: -.005em;
  border: 1px solid transparent;
  cursor: pointer;
  text-decoration: none;
  transition: transform .18s var(--mkt-spring), box-shadow .25s var(--mkt-ease), background-color .25s var(--mkt-ease), border-color .25s var(--mkt-ease);
  -webkit-tap-highlight-color: transparent;
}
.mkt-btn:active { transform: scale(.96); }

.mkt-btn-primary {
  background: linear-gradient(155deg, var(--mkt-accent), var(--mkt-accent-dark));
  color: #fff;
  box-shadow: 0 6px 18px rgba(var(--mkt-accent-rgb), .32), 0 1px 0 rgba(255,255,255,.25) inset;
}
.mkt-btn-primary:hover {
  box-shadow: 0 10px 26px rgba(var(--mkt-accent-rgb), .42), 0 1px 0 rgba(255,255,255,.3) inset;
  transform: translateY(-1px);
}
.mkt-btn-primary:disabled {
  opacity: .45;
  cursor: not-allowed;
  box-shadow: none;
  transform: none;
}

.mkt-btn-secondary {
  background: var(--glass-input-bg);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-color: var(--glass-input-border);
  color: var(--text);
}
.mkt-btn-secondary:hover {
  background: rgba(var(--mkt-accent-rgb), .1);
  border-color: rgba(var(--mkt-accent-rgb), .3);
  color: var(--mkt-accent);
}

/* ── Alertas ──────────────────────────────────────────── */
.mkt-alert {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 18px;
  border-radius: var(--mkt-radius-sm);
  font-size: .85rem;
  line-height: 1.55;
  margin-bottom: 20px;
  border: 1px solid transparent;
}
.mkt-alert-warn {
  background: rgba(245, 158, 11, .1);
  border-color: rgba(245, 158, 11, .22);
  color: color-mix(in srgb, #f59e0b 70%, var(--text));
}
.mkt-alert-ok {
  background: rgba(16, 185, 129, .1);
  border-color: rgba(16, 185, 129, .22);
  color: color-mix(in srgb, #10b981 70%, var(--text));
}
.mkt-alert-info {
  background: rgba(56, 189, 248, .08);
  border-color: rgba(56, 189, 248, .2);
  color: var(--text-muted);
  flex-direction: column;
}
.mkt-curso-aviso {
  flex-direction: row;
}
.mkt-curso-aviso strong {
  color: var(--text);
  display: block;
  margin-bottom: 4px;
}
.mkt-curso-aviso p {
  margin: 0;
}

/* ── Secciones ────────────────────────────────────────── */
.mkt-section {
  padding: 24px 26px;
  margin-bottom: 22px;
}
/* Variante sin backdrop-filter: mismo criterio anti-lag ya aplicado en dashboard.css
   (Ronda 9) — 3 paneles siempre visibles con blur(22px) en una página con sidebar/topbar
   fijos alrededor es costo de recomposición real en cada scroll. Combinar con .mkt-section
   (<section class="mkt-section mkt-glass-flat">) donde se reporte lag; no se tocó la regla
   base de .mkt-section porque otras 5 páginas del módulo la comparten sin haber sido
   probadas con este cambio. */
.mkt-section.mkt-glass-flat {
  background: var(--glass-bg-strong);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  box-shadow: var(--mkt-glass-shadow-sm);
}
.mkt-section h2 {
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: -.01em;
  color: var(--text);
  margin: 0 0 16px;
  display: flex;
  align-items: center;
  gap: 9px;
}
.mkt-section h2 i { color: var(--mkt-accent); }
.mkt-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
  flex-wrap: wrap;
  gap: 10px;
}
.mkt-section-header h2 { margin: 0; }

.mkt-hint { font-size: .82rem; color: var(--text-muted); margin: 6px 0 0; }
.mkt-hint a { color: var(--mkt-accent); text-decoration: none; }
.mkt-hint a:hover { text-decoration: underline; }
.mkt-hint code {
  color: var(--mkt-accent);
  background: rgba(var(--mkt-accent-rgb), .08);
  padding: 1px 6px;
  border-radius: 6px;
  font-family: var(--mkt-font-mono);
  font-size: .82em;
}

/* ── Formularios ──────────────────────────────────────── */
.mkt-form-inline { display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-end; }
.mkt-field { display: block; font-size: .82rem; }
.mkt-field span { display: block; color: var(--text-muted); font-weight: 600; margin-bottom: 6px; letter-spacing: -.005em; }
.mkt-field input, .mkt-field select, .mkt-field textarea, .mkt-input {
  background: var(--glass-input-bg);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  border: 1px solid var(--glass-input-border);
  border-radius: var(--mkt-radius-sm);
  padding: 10px 13px;
  color: var(--text);
  font-size: .87rem;
  font-family: inherit;
  outline: none;
  box-sizing: border-box;
  width: 100%;
  transition: border-color .2s var(--mkt-ease), box-shadow .2s var(--mkt-ease);
}
/* Ronda 18 — `color-scheme: dark light;` deja que el navegador elija según el
   SO del usuario, no según el tema REAL del sitio (data-theme) — mismo
   ajuste que en .mkt-catalogo-filtros select (catalogo.css). */
.mkt-field input, .mkt-field select, .mkt-field textarea, .mkt-input { color-scheme: dark; }
[data-theme="light"] .mkt-field input,
[data-theme="light"] .mkt-field select,
[data-theme="light"] .mkt-field textarea,
[data-theme="light"] .mkt-input { color-scheme: light; }
.mkt-field input:focus, .mkt-field select:focus, .mkt-field textarea:focus,
.mkt-input:focus {
  border-color: rgba(var(--mkt-accent-rgb), .55);
  box-shadow: 0 0 0 4px rgba(var(--mkt-accent-rgb), .12);
}
.mkt-field-wide { flex: 1; min-width: 220px; }
.mkt-field-row { display: flex; gap: 12px; }
.mkt-field-row .mkt-field { flex: 1; }

/* ── Tabla ────────────────────────────────────────────── */
.mkt-table-wrap { overflow-x: auto; }
.mkt-table { width: 100%; border-collapse: collapse; font-size: .85rem; }
.mkt-table th {
  text-align: left;
  padding: 10px 12px;
  color: var(--text-muted);
  font-size: .7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .06em;
  border-bottom: 1px solid var(--glass-border);
}
.mkt-table td {
  padding: 12px;
  border-bottom: 1px solid var(--border-hairline, var(--glass-border));
  color: var(--text);
}
.mkt-table tbody tr { transition: background-color .15s var(--mkt-ease); }
.mkt-table tbody tr:hover { background: rgba(var(--mkt-accent-rgb), .04); }
.mkt-table th.mkt-th-check, .mkt-table td.mkt-td-check { width: 34px; padding-right: 0; }

/* ── Barra de acciones masivas (aparece con ≥1 fila seleccionada) ───── */
.mkt-bulkbar {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 10px 16px; margin-bottom: 14px;
  border-radius: var(--mkt-radius-sm);
  background: rgba(var(--mkt-accent-rgb), .08);
  border: 1px solid rgba(var(--mkt-accent-rgb), .22);
  font-size: .85rem; color: var(--text);
}
.mkt-bulkbar strong { color: var(--mkt-accent); }

/* ── Tabla de alta masiva (modal de creación rápida) ─────────────────── */
.mkt-table-masivo td { vertical-align: top; padding: 6px 8px; }
.mkt-table-masivo input.mkt-input, .mkt-table-masivo select.mkt-input { width: 100%; }
.mkt-table-masivo td:last-child { width: 36px; }

.mkt-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 11px;
  border-radius: var(--mkt-radius-pill);
  font-size: .72rem;
  font-weight: 600;
  border: 1px solid transparent;
}
.mkt-badge-fisico   { background: rgba(245,158,11,.12); border-color: rgba(245,158,11,.2); color: #f59e0b; }
.mkt-badge-digital  { background: rgba(56,189,248,.12); border-color: rgba(56,189,248,.2); color: #38bdf8; }
.mkt-badge-servicio { background: rgba(167,139,250,.14); border-color: rgba(167,139,250,.22); color: #a78bfa; }
.mkt-badge-curso    { background: rgba(52,211,153,.14); border-color: rgba(52,211,153,.22); color: #34d399; }
.mkt-badge-ok  { background: rgba(52,211,153,.14); border-color: rgba(52,211,153,.22); color: #10b981; }
.mkt-badge-off { background: rgba(148,163,184,.14); border-color: rgba(148,163,184,.2); color: #94a3b8; }
.mkt-badge-warn { background: rgba(245,158,11,.14); border-color: rgba(245,158,11,.22); color: #f59e0b; }

.mkt-icon-btn {
  width: 32px; height: 32px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--mkt-radius-sm);
  border: 1px solid var(--glass-input-border);
  background: var(--glass-input-bg);
  color: var(--text-muted);
  cursor: pointer;
  margin-right: 4px;
  text-decoration: none;
  transition: all .2s var(--mkt-ease);
}
.mkt-icon-btn:hover { color: var(--mkt-accent); border-color: rgba(var(--mkt-accent-rgb), .35); background: rgba(var(--mkt-accent-rgb), .08); }
.mkt-icon-btn:active { transform: scale(.92); }
.mkt-sync-btn-pendiente { color: #f59e0b; border-color: rgba(245,158,11,.35); background: rgba(245,158,11,.08); }
.mkt-sync-btn-pendiente:hover { color: #f59e0b; border-color: rgba(245,158,11,.5); background: rgba(245,158,11,.14); }

/* ── Modal — vidrio fuerte sobre fondo desenfocado ───────────────────── */
.mkt-modal-overlay {
  position: fixed; inset: 0; z-index: 500;
  background: rgba(2, 8, 20, .35);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
  opacity: 0; pointer-events: none;
  transition: opacity .3s var(--mkt-ease);
}
.mkt-modal-overlay.open { opacity: 1; pointer-events: all; }
.mkt-modal-box {
  width: 440px; max-width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  background: var(--glass-bg-strong);
  border-radius: var(--mkt-radius-lg);
  padding: 28px 28px 22px;
  transform: scale(.95) translateY(8px);
  transition: transform .3s var(--mkt-spring);
}
.mkt-modal-overlay.open .mkt-modal-box { transform: scale(1) translateY(0); }
/* Variante ancha — para el modal de alta masiva de productos (tabla de filas, no cabe en 440px). */
.mkt-modal-box-wide { width: 760px; }
.mkt-modal-box h3 {
  font-size: 1.1rem; font-weight: 600; letter-spacing: -.01em; color: var(--text);
  margin: 0 0 18px;
  display: flex; align-items: center; gap: 9px;
}
.mkt-modal-box h3 i { color: var(--mkt-accent); }
.mkt-modal-box .mkt-field { margin-bottom: 13px; }
.mkt-modal-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 8px; }

.mkt-auth-msg {
  font-size: .82rem;
  padding: 10px 14px;
  border-radius: var(--mkt-radius-sm);
  margin-bottom: 13px;
}
.mkt-auth-msg-err {
  background: rgba(239, 68, 68, .1);
  color: #f87171;
  border: 1px solid rgba(239, 68, 68, .22);
}

/* ── Toggle de tema (páginas públicas, ver mkt-theme.js) ─────────────── */
.mkt-theme-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px;
  border-radius: var(--mkt-radius-pill);
  background: var(--glass-input-bg);
  border: 1px solid var(--glass-input-border);
}
.mkt-theme-toggle button {
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  border: none;
  border-radius: 50%;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  font-size: .78rem;
  transition: all .2s var(--mkt-ease);
}
.mkt-theme-toggle button.active {
  background: var(--mkt-accent);
  color: #fff;
  box-shadow: 0 2px 8px rgba(var(--mkt-accent-rgb), .4);
}
/* ── Estrellas (1-5) — solo visualización, ver nota en la tarea ──────────── */
.mkt-stars {
  display: inline-flex;
  gap: 2px;
  color: #f5a623;
  font-size: .8rem;
}
.mkt-stars-lg { font-size: 1.05rem; gap: 3px; }
.mkt-stars .fa-regular { color: var(--text-muted); opacity: .5; }
.mkt-stars-count {
  font-size: .8rem;
  color: var(--text-muted);
  margin-left: 6px;
  font-variant-numeric: tabular-nums;
}

.mkt-theme-toggle-fixed {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 60;
}

/* ── Banner de medios (catálogo/networking/tienda) ───────────────────────
   Un solo componente reusado por partials/banner.php: imagen/gif estática
   o <video> autoplay-muted-loop, con overlay de título/intro encima y un
   slot opcional anclado abajo (buscador de catalogo.php). Navy/light se
   resuelven igual que el logo de plataforma (mkt-brand-img) — si solo hay
   un archivo (caso tienda: sin split por tema), se ve igual en ambos temas.
   Sin archivo de medios (admin no subió nada todavía), el banner se
   renderiza igual como panel de vidrio simple en flujo normal (sin
   position:absolute) para que el overlay/buscador tengan dónde vivir. */
.mkt-banner {
  position: relative;
  width: 100%;
  border-radius: var(--mkt-radius-lg);
  overflow: hidden;
  margin: 0 0 24px;
  background: var(--glass-bg-strong);
  border: 1px solid var(--glass-border);
}
.mkt-banner:not(.has-media) { padding: 30px 26px; }
.mkt-banner-media {
  display: none;
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
}
.mkt-banner.has-media .mkt-banner-media--navy { display: block; }
[data-theme="light"] .mkt-banner.has-media .mkt-banner-media--navy  { display: none; }
[data-theme="light"] .mkt-banner.has-media .mkt-banner-media--light { display: block; }

.mkt-banner-overlay {
  display: flex; align-items: center; justify-content: center;
}
.mkt-banner.has-media .mkt-banner-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(2,8,20,.1) 0%, rgba(2,8,20,.5) 100%);
}
.mkt-banner:not(.has-media) .mkt-banner-overlay { margin-bottom: 18px; }

.mkt-banner-title {
  margin: 0;
  color: #fff;
  font-size: clamp(1.3rem, 4vw, 2.3rem);
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
  text-shadow: 0 4px 18px rgba(0,0,0,.5);
  text-align: center;
  padding: 0 20px;
}
/* Overlay custom (ej. intro completa de networking.php) sobre el medio —
   texto blanco con sombra para legibilidad, mismo tratamiento que el título. */
.mkt-banner-overlay-custom { flex-direction: column; text-align: center; padding: 24px; }
.mkt-banner.has-media .mkt-banner-overlay-custom h1,
.mkt-banner.has-media .mkt-banner-overlay-custom p { color: #fff; text-shadow: 0 4px 18px rgba(0,0,0,.5); }
.mkt-banner.has-media .mkt-banner-overlay-custom .mkt-np-eyebrow {
  background: rgba(255,255,255,.18);
  border-color: rgba(255,255,255,.3);
  color: #fff;
}

/* Slot anclado abajo (ej. buscador de catalogo.php) */
.mkt-banner-bottom { padding: 16px 22px 20px; }
.mkt-banner.has-media .mkt-banner-bottom {
  position: absolute; left: 0; right: 0; bottom: 0;
  background: linear-gradient(0deg, rgba(2,8,20,.55) 0%, rgba(2,8,20,0) 100%);
}
.mkt-banner-bottom .mkt-catalogo-filtros { margin-bottom: 0; justify-content: center; }

body.mkt-app-mesh {
  background: var(--mkt-mesh-bg);
  background-image: var(--mkt-mesh);
  /* Sin background-attachment:fixed: combinado con los backdrop-filter de
     .mkt-section/.mkt-welcome/.mkt-modal-box, forzaba al navegador a
     recomponer el blur en cada frame de scroll (causa real del lag
     reportado en mi-tienda/dashboard/admin) — el fixed no aporta nada
     visual aquí porque el mesh ya cubre toda la página. */
}

/* Nombre de la tienda sobre el banner (Ronda 68): fuente/grosor/color/posición elegidos por el vendedor (variables de partials/tienda-estilo.php). */
.mkt-banner-title--tienda { font-family: var(--mkt-nombre-font); font-weight: var(--mkt-nombre-peso); color: var(--mkt-nombre-color); text-transform: none; letter-spacing: .02em; }
.mkt-banner.has-media .mkt-banner-overlay--tienda { padding: 18px 26px 78px; }          /* 78px abajo: el buscador ocupa el borde inferior */
.mkt-banner:not(.has-media) .mkt-banner-overlay--tienda { padding: 0 6px; }
.mkt-banner-overlay--top, .mkt-banner-overlay--top-left, .mkt-banner-overlay--top-right { align-items: flex-start; }
.mkt-banner-overlay--left, .mkt-banner-overlay--top-left { justify-content: flex-start; }
.mkt-banner-overlay--right, .mkt-banner-overlay--top-right { justify-content: flex-end; }
.mkt-banner-overlay--left .mkt-banner-title, .mkt-banner-overlay--top-left .mkt-banner-title { text-align: left; padding: 0; }
.mkt-banner-overlay--right .mkt-banner-title, .mkt-banner-overlay--top-right .mkt-banner-title { text-align: right; padding: 0; }
