:root {
  --fondo: #edeef0;
  --panel: #ffffff;
  --tinta: #16181d;
  --suave: #5d636e;
  --linea: #d6d9de;
  --vivo: #1f5d50;
  --vivo-claro: #e4efeb;
  --alerta: #a33a2c;
  --alerta-claro: #f7e7e4;
  --urgencia: #92610a;
  --urgencia-claro: #faf0da;
  --cielo: #0284c7;
  --texto: 1rem/1.55 'IBM Plex Sans', system-ui, sans-serif;
  --fuente-titulo: 'Space Grotesk', 'IBM Plex Sans', system-ui, sans-serif;

  --sombra: 0 1px 2px rgba(20, 22, 26, .05), 0 6px 16px rgba(20, 22, 26, .05);
  --radio: 6px;
  --rapido: .15s ease;

  color-scheme: light;
}

/* Modo oscuro: no es solo invertir colores. --panel queda más claro que
   --fondo (como en claro) para que las tarjetas sigan leyéndose como una capa
   por encima del fondo, y --vivo/--alerta se aclaran porque el mismo tono que
   funciona sobre blanco pierde contraste sobre un fondo oscuro. */
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="claro"]) {
    --fondo: #131519;
    --panel: #1c1f25;
    --tinta: #edeef0;
    --suave: #98a0ab;
    --linea: #2d313a;
    --vivo: #4fbfa4;
    --vivo-claro: #17332c;
    --alerta: #e2685a;
    --alerta-claro: #3a2220;
    --urgencia: #e0a53a;
    --urgencia-claro: #3a2f14;
    --cielo: #38bdf8;
    --sombra: 0 1px 2px rgba(0, 0, 0, .3), 0 6px 20px rgba(0, 0, 0, .35);
    color-scheme: dark;
  }
}

:root[data-tema="oscuro"] {
  --fondo: #131519;
  --panel: #1c1f25;
  --tinta: #edeef0;
  --suave: #98a0ab;
  --linea: #2d313a;
  --vivo: #4fbfa4;
  --vivo-claro: #17332c;
  --alerta: #e2685a;
  --alerta-claro: #3a2220;
  --urgencia: #e0a53a;
  --urgencia-claro: #3a2f14;
  --cielo: #38bdf8;
  --sombra: 0 1px 2px rgba(0, 0, 0, .3), 0 6px 20px rgba(0, 0, 0, .35);
  color-scheme: dark;
}

* { box-sizing: border-box; }

/* Sin esto, cualquier clase con display:flex/grid (.nav, .pujar, .mp-estado,
   .formulario label...) le gana en cascada al [hidden] del navegador, porque
   una regla del autor siempre le gana a la del user-agent aunque no tenga
   más especificidad. Con !important queda garantizado en cualquier caso. */
[hidden] { display: none !important; }

body {
  margin: 0;
  background: var(--fondo);
  color: var(--tinta);
  font: var(--texto);
  -webkit-font-smoothing: antialiased;
  transition: background-color var(--rapido), color var(--rapido);
  /* El hero de la portada rompe el ancho máximo de <main> a propósito
     (100vw) para ocupar toda la pantalla; esto evita que ese cálculo deje
     una barra de scroll horizontal de un pixel por el ancho del scrollbar. */
  overflow-x: hidden;
}

h1, h2, h3 { font-family: var(--fuente-titulo); font-weight: 600; letter-spacing: -0.015em; }
h1 { font-size: 2.3rem; line-height: 1.15; margin: 0 0 .6rem; }
h2 { font-size: 1.2rem; margin: 2.2rem 0 .7rem; }
h3 { font-size: 1rem; margin: 2rem 0 .5rem; }

main {
  max-width: 60rem;
  margin: 0 auto;
  padding: 1.5rem 1.25rem 4rem;
}

.oculto {
  position: absolute;
  width: 1px; height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
}

/* ---------------- sprite de íconos ---------------- */

/* Un solo trazo/tamaño para todo el sitio (ver el <symbol> de cada uno al
   principio de <body>): sin esto los <line>/<polyline> del sprite no tienen
   ni relleno ni trazo por defecto y quedan invisibles. */
.icono {
  width: 1.15em;
  height: 1.15em;
  flex-shrink: 0;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
  vertical-align: -.15em;
}

/* Las formas rellenas dentro de un símbolo (el punto del ícono de etiqueta,
   los círculos de "sliders"...) llevan esta clase en vez de quedar con trazo */
.icono-relleno { fill: currentColor; stroke: none; }

/* ---------------- barra superior ---------------- */

.barra {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  padding: .85rem 1.25rem;
  background: var(--panel);
  border-bottom: 1px solid var(--linea);
  flex-wrap: wrap;
  transition: background-color var(--rapido), border-color var(--rapido);
}

.marca {
  display: flex;
  align-items: center;
  gap: .45rem;
  font-family: var(--fuente-titulo);
  font-weight: 600;
  font-size: 1.1rem;
  letter-spacing: -0.02em;
  color: var(--tinta);
  text-decoration: none;
}

.marca-icono {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.9rem;
  height: 1.9rem;
  border-radius: var(--radio);
  background: var(--vivo);
  color: #fff;
}
.marca-icono .icono { width: 1.05rem; height: 1.05rem; }

.nav { display: flex; gap: .25rem; flex: 1; flex-wrap: wrap; }

.nav button {
  display: flex;
  align-items: center;
  gap: .4rem;
  border: 0;
  background: none;
  font: inherit;
  font-size: .92rem;
  color: var(--suave);
  padding: .3rem .55rem;
  border-radius: var(--radio);
  cursor: pointer;
  transition: background-color var(--rapido), color var(--rapido);
}

.nav button:hover { color: var(--tinta); }
.nav button.activa { color: var(--tinta); background: var(--fondo); }
.nav button:active { transform: scale(.96); }
.nav-icono { font-size: 1rem; line-height: 1; }

.nav-anonimo { flex: 1; }
.nav-anonimo button {
  border: 0;
  background: none;
  font: inherit;
  font-size: .92rem;
  font-weight: 500;
  color: var(--tinta);
  padding: .3rem .55rem;
  border-radius: var(--radio);
  cursor: pointer;
  transition: background-color var(--rapido);
}
.nav-anonimo button:hover { background: var(--fondo); }

.sesion { margin-left: auto; display: flex; align-items: center; gap: .8rem; }
.quien { font-size: .88rem; color: var(--suave); }

.tema-toggle {
  border: 1px solid var(--linea);
  background: var(--panel);
  color: var(--tinta);
  width: 2.1rem;
  height: 2.1rem;
  border-radius: 50%;
  font-size: 1.05rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background-color var(--rapido), border-color var(--rapido), transform var(--rapido);
}

.tema-toggle:hover { border-color: var(--vivo); }
.tema-toggle:active { transform: scale(.9); }

/* ---------------- avisos ---------------- */

.aviso {
  max-width: 60rem;
  margin: 1rem auto -.5rem;
  padding: .7rem .9rem;
  border-left: 3px solid var(--vivo);
  border-radius: 0 var(--radio) var(--radio) 0;
  background: var(--vivo-claro);
  color: var(--tinta);
  font-size: .92rem;
  transition: background-color var(--rapido), color var(--rapido);
}

.aviso.error {
  border-left-color: var(--alerta);
  background: var(--alerta-claro);
  color: var(--alerta);
}

/* ---------------- portada: hero ---------------- */

/* Sin fotografía real: en vez de fingir una, la profundidad la da el
   degradado — varias capas radiales sobre el fondo oscuro de base. Con tema
   claro se aclaran para no perder contraste con el texto blanco del hero. */
.hero {
  position: relative;
  left: 50%;
  transform: translateX(-50%);
  width: 100vw;
  margin-top: -1.5rem;
  padding: 5.5rem 1.25rem 4.5rem;
  background:
    radial-gradient(ellipse 60rem 30rem at 15% -10%, rgba(79, 191, 164, .35), transparent 60%),
    radial-gradient(ellipse 50rem 30rem at 100% 10%, rgba(224, 165, 58, .18), transparent 55%),
    #0e1013;
  color: #f3f4f5;
  overflow: hidden;
  text-align: center;
}

.hero-contenido { max-width: 40rem; margin: 0 auto; position: relative; z-index: 1; }

.hero-marca {
  font-family: var(--fuente-titulo);
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: .28em;
  text-transform: uppercase;
  line-height: 1.5;
  color: #9adfcd;
  margin: 0 0 1.6rem;
}

.hero-titulo {
  font-family: var(--fuente-titulo);
  font-weight: 700;
  font-size: 3.4rem;
  line-height: 1.05;
  letter-spacing: -0.01em;
  margin: 0 0 1.1rem;
  color: #fff;
}

.hero-sub {
  font-size: 1.05rem;
  line-height: 1.6;
  color: #c7ccd1;
  max-width: 34rem;
  margin: 0 auto 2.2rem;
}

.hero-acciones { display: flex; flex-direction: column; align-items: center; gap: .9rem; }
.hero-acciones .principal { font-size: 1rem; padding: .8rem 1.8rem; }
.hero-acciones .enlace { color: #c7ccd1; }
.hero-acciones .enlace:hover { color: #fff; }

/* ---------------- portada: secciones ---------------- */

.seccion-portada { max-width: 60rem; margin: 3.5rem auto; padding: 0 1.25rem; }
.seccion-portada h2 { text-align: center; font-size: 1.4rem; margin: 0 0 1.75rem; }

.pasos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 1.5rem;
}

.paso { text-align: center; padding: 0 1rem; }

.paso-numero {
  display: inline-block;
  font-family: var(--fuente-titulo);
  font-weight: 700;
  font-size: 1.5rem;
  color: var(--vivo);
  margin-bottom: .5rem;
}

.paso h3 { margin: 0 0 .5rem; }
.paso p { color: var(--suave); margin: 0; font-size: .92rem; line-height: 1.55; }

.confianza-lista {
  list-style: none;
  margin: 0 auto;
  padding: 0;
  max-width: 40rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.confianza-lista li {
  display: flex;
  align-items: flex-start;
  gap: .7rem;
  font-size: .95rem;
  line-height: 1.5;
}

.confianza-check {
  flex-shrink: 0;
  width: 1.4rem;
  height: 1.4rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--vivo-claro);
  color: var(--vivo);
  font-size: .8rem;
  font-weight: 700;
  margin-top: .1rem;
}

/* ---------------- promo de asociados (portada) y Sobre nosotros ---------------- */

/* Mismo lenguaje visual que .escudo-explicacion (borde izquierdo + fondo
   tenue en el color de marca) en vez de un bloque sólido: así el contraste
   ya queda resuelto en los dos temas sin definir un color nuevo. */
.promo-asociados {
  max-width: 60rem;
  margin: 3.5rem auto;
  padding: 1.75rem 2rem;
  display: flex;
  align-items: center;
  gap: 1.5rem;
  border: 1px solid var(--linea);
  border-left: 4px solid var(--vivo);
  border-radius: var(--radio);
  background: var(--vivo-claro);
  transition: background-color var(--rapido), border-color var(--rapido);
}

.promo-asociados > .icono {
  width: 2.5rem;
  height: 2.5rem;
  flex-shrink: 0;
  color: var(--vivo);
  stroke-width: 1.3;
}

.promo-asociados-texto { flex: 1; min-width: 0; }
.promo-asociados-texto h2 { margin: 0 0 .35rem; text-align: left; color: var(--vivo); font-size: 1.25rem; }
.promo-asociados-texto p { margin: 0; color: var(--tinta); font-size: .92rem; line-height: 1.55; }
.promo-asociados .principal { flex-shrink: 0; white-space: nowrap; }

@media (max-width: 40rem) {
  .promo-asociados { flex-direction: column; text-align: center; padding: 1.5rem 1.25rem; }
  .promo-asociados-texto h2 { text-align: center; }
  .promo-asociados .principal { align-self: center; }
}

.sobre-nosotros-intro { max-width: 40rem; color: var(--suave); font-size: 1rem; line-height: 1.6; }

.trabaja-con-nosotros {
  margin: 1.75rem 0;
  padding: 1.5rem 1.75rem;
  border: 1px solid var(--linea);
  border-left: 4px solid var(--vivo);
  border-radius: var(--radio);
  background: var(--vivo-claro);
  max-width: 40rem;
}

.trabaja-con-nosotros h3 { display: flex; align-items: center; gap: .5rem; margin: 0 0 .8rem; color: var(--vivo); }
.trabaja-con-nosotros p { margin: 0 0 .9rem; color: var(--tinta); font-size: .94rem; line-height: 1.6; }
.trabaja-con-nosotros .principal { margin-top: .3rem; }

.sobre-nosotros-ayuda { color: var(--suave); font-size: .9rem; margin-top: 2rem; }

.valores-lista { list-style: none; margin: 1.5rem 0 0; padding: 0; max-width: 40rem; display: flex; flex-direction: column; gap: 1rem; }
.valores-lista li { display: flex; align-items: flex-start; gap: .7rem; font-size: .95rem; line-height: 1.5; color: var(--tinta); }
.valores-lista li::before {
  content: "✓"; flex-shrink: 0; width: 1.4rem; height: 1.4rem; display: flex; align-items: center;
  justify-content: center; border-radius: 50%; background: var(--vivo-claro); color: var(--vivo);
  font-size: .8rem; font-weight: 700; margin-top: .1rem;
}

/* ---------------- privacidad y tratamiento de datos ---------------- */

.privacidad-intro { max-width: 40rem; color: var(--suave); font-size: 1rem; line-height: 1.6; }

.privacidad-doc {
  max-width: 46rem;
  margin: 1.75rem 0;
  padding: 1.75rem 2rem;
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  background: var(--panel);
  box-shadow: var(--sombra);
}
.privacidad-doc h3 { margin: 0 0 .3rem; }
.privacidad-doc .privacidad-fecha { color: var(--suave); font-size: .85rem; margin: 0 0 1.2rem; }
.privacidad-doc h4 { margin: 1.4rem 0 .5rem; font-size: 1rem; }
.privacidad-doc h4:first-of-type { margin-top: 1.6rem; }
.privacidad-doc p, .privacidad-doc li { color: var(--tinta); font-size: .94rem; line-height: 1.6; }
.privacidad-doc + .privacidad-doc { margin-top: 2.5rem; }

/* ---------------- pie de página ---------------- */

.pie {
  border-top: 1px solid var(--linea);
  background: var(--panel);
  margin-top: 3rem;
  padding: 3rem 1.25rem 1.5rem;
  transition: background-color var(--rapido), border-color var(--rapido);
}

.pie-contenido {
  max-width: 60rem;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: 2rem;
}

.pie-marca .marca { margin-bottom: .6rem; }
.pie-marca p { color: var(--suave); font-size: .86rem; line-height: 1.6; margin: 0; max-width: 22rem; }

.pie h4 {
  margin: 0 0 .75rem;
  font-family: var(--fuente-titulo);
  font-size: .82rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--suave);
}

.pie ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .55rem; }

.pie a, .pie button.enlace {
  color: var(--tinta);
  text-decoration: none;
  font-size: .88rem;
  background: none;
  border: 0;
  padding: 0;
  font-family: inherit;
  text-align: left;
  cursor: pointer;
}
.pie a:hover, .pie button.enlace:hover { color: var(--vivo); }
.pie li { color: var(--suave); font-size: .88rem; }

.pie-legal {
  max-width: 60rem;
  margin: 2.5rem auto 0;
  padding-top: 1.25rem;
  border-top: 1px solid var(--linea);
  color: var(--suave);
  font-size: .8rem;
}

@media (max-width: 40rem) {
  .pie-contenido { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 34rem) {
  .hero { padding: 4rem 1rem 3rem; }
  .hero-titulo { font-size: 2.3rem; }
  .hero-sub { font-size: .95rem; }
}

/* ---------------- modal de acceso ---------------- */

.modal-fondo {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.25rem;
  background: rgba(10, 11, 13, .55);
  animation: modal-fondo-entra .15s ease;
}

@keyframes modal-fondo-entra {
  from { opacity: 0; }
  to { opacity: 1; }
}

.modal-caja {
  position: relative;
  max-width: 100%;
  max-height: 90vh;
  overflow: auto;
  animation: modal-caja-entra .18s ease;
}

@keyframes modal-caja-entra {
  from { opacity: 0; transform: translateY(.75rem) scale(.98); }
  to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .modal-fondo, .modal-caja { animation: none; }
}

.modal-cerrar {
  position: absolute;
  top: -.6rem;
  right: -.6rem;
  width: 2.1rem;
  height: 2.1rem;
  border-radius: 50%;
  border: 1px solid var(--linea);
  background: var(--panel);
  color: var(--tinta);
  font-size: .95rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color var(--rapido), transform .1s ease;
  z-index: 1;
}

.modal-cerrar:hover { border-color: var(--vivo); }
.modal-cerrar:active { transform: scale(.9); }

/* ---------------- formularios ---------------- */

.acceso {
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  box-shadow: var(--sombra);
  max-width: 24rem;
  padding: 1.25rem;
}

.pestanas { display: flex; gap: 1.25rem; margin-bottom: 1.1rem; }

.pestanas button {
  border: 0;
  background: none;
  font: inherit;
  font-size: .95rem;
  color: var(--suave);
  padding: 0 0 .35rem;
  border-bottom: 2px solid transparent;
  cursor: pointer;
}

.pestanas button.activa { color: var(--tinta); border-bottom-color: var(--vivo); }

.acceso-ayuda { color: var(--suave); font-size: .88rem; line-height: 1.5; margin: 0 0 .3rem; }

.formulario { display: flex; flex-direction: column; gap: .85rem; }
.formulario.ancho { max-width: 30rem; background: var(--panel); border: 1px solid var(--linea); border-radius: var(--radio); box-shadow: var(--sombra); padding: 1.25rem; }

.formulario label {
  display: flex;
  flex-direction: column;
  gap: .3rem;
  font-size: .88rem;
  color: var(--suave);
}

.formulario small { color: var(--suave); font-size: .8rem; }

.buscador { position: relative; margin-bottom: 1.5rem; }

.buscador-fila { display: flex; gap: .6rem; }
.buscador-fila input[type="search"] { flex: 1; }

/* Categoría, marca, precio y orden viven acá adentro: cerrado por defecto,
   así la barra de arriba no compite con el listado por atención. */
.filtro-toggle {
  display: flex;
  align-items: center;
  gap: .4rem;
  white-space: nowrap;
  font: inherit;
  font-size: .88rem;
  color: var(--tinta);
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  padding: .5rem .9rem;
  cursor: pointer;
  transition: border-color var(--rapido), color var(--rapido);
}

.filtro-toggle:hover { border-color: var(--vivo); }
.filtro-toggle.activo { border-color: var(--vivo); color: var(--vivo); }

.filtro-flecha { font-size: .7rem; transition: transform var(--rapido); }
.filtro-toggle[aria-expanded="true"] .filtro-flecha { transform: rotate(180deg); }

.filtro-panel {
  position: absolute;
  top: calc(100% + .5rem);
  right: 0;
  z-index: 15;
  display: flex;
  flex-direction: column;
  gap: .2rem;
  width: 17rem;
  max-width: calc(100vw - 2.5rem);
  padding: 1rem;
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  box-shadow: var(--sombra), 0 12px 32px rgba(20, 22, 26, .12);
}

.filtro-panel label {
  font-size: .82rem;
  color: var(--suave);
  margin: .5rem 0 .25rem;
}

.filtro-panel label:first-child { margin-top: 0; }

.filtro-acciones {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: .85rem;
}

input, textarea, select {
  font: inherit;
  font-size: .95rem;
  color: var(--tinta);
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  padding: .5rem .6rem;
  width: 100%;
  transition: border-color var(--rapido), background-color var(--rapido);
}

textarea { resize: vertical; }

input:focus-visible, textarea:focus-visible, button:focus-visible {
  outline: 2px solid var(--vivo);
  outline-offset: 1px;
}

input:hover, textarea:hover, select:hover { border-color: var(--suave); }

.modo { border: 1px solid var(--linea); padding: .8rem .9rem; margin: 0; }
.modo legend { font-size: .88rem; color: var(--suave); padding: 0 .3rem; }

.radio { flex-direction: row !important; align-items: flex-start; gap: .55rem; color: var(--tinta); }
.radio input { width: auto; margin-top: .28rem; }
.radio strong { font-weight: 500; display: block; }
.radio span { font-size: .88rem; color: var(--suave); }

/* Checkboxes de especialidad/servicio/zona: mismo lenguaje que .radio, en
   una cuadrícula que se ajusta sola en vez de una lista vertical larga. */
.checks { display: grid; grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); gap: .5rem .9rem; }
.checks label { flex-direction: row !important; align-items: center; gap: .5rem; color: var(--tinta); font-size: .92rem; }
.checks input { width: auto; }

.capacidad-con-unidad { display: flex; gap: .5rem; }
.capacidad-con-unidad input { flex: 1; }
.capacidad-con-unidad select { width: auto; }

/* ---------------- botones ---------------- */

.principal {
  font: inherit;
  font-size: .95rem;
  background: var(--vivo);
  color: #fff;
  border: 0;
  border-radius: var(--radio);
  padding: .58rem 1.1rem;
  cursor: pointer;
  align-self: flex-start;
  transition: background-color var(--rapido), transform .1s ease, box-shadow var(--rapido);
}

.principal:hover { background: #17493f; }
.principal:active:not([disabled]) { transform: scale(.97); }
.principal[disabled] { background: var(--suave); cursor: default; }

@media (prefers-color-scheme: dark) {
  :root:not([data-tema="claro"]) .principal:hover { background: #6cd0b6; }
}
:root[data-tema="oscuro"] .principal:hover { background: #6cd0b6; }

/* Mismo tamaño que .principal, solo cambia el color — para un botón que
   necesita distinguirse de la acción principal (ej. "Iniciar sesión" al
   lado de "Crear cuenta") sin bajar a texto plano como .enlace. */
.principal.azul { background: var(--cielo); }
.principal.azul:hover { background: #026aa3; }
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="claro"]) .principal.azul:hover { background: #7dd3fc; }
}
:root[data-tema="oscuro"] .principal.azul:hover { background: #7dd3fc; }

.enlace {
  font: inherit;
  font-size: .88rem;
  background: none;
  border: 0;
  color: var(--suave);
  padding: 0;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
  align-self: flex-start;
  transition: color var(--rapido);
}

.enlace:hover { color: var(--tinta); }
.enlace:active { transform: scale(.97); }
.volver { margin-bottom: 1.2rem; }

.convertir-fecha { width: auto; font-size: .85rem; padding: .35rem .5rem; }

/* ---------------- migas de navegación ---------------- */

.migas {
  display: flex;
  align-items: center;
  gap: .35rem;
  margin: 1.4rem 0 .3rem;
  font-size: .84rem;
  color: var(--suave);
}

.migas .icono { width: .85rem; height: .85rem; }

.miga-enlace {
  background: none;
  border: 0;
  padding: 0;
  color: var(--suave);
  font: inherit;
  cursor: pointer;
}
.miga-enlace:hover { color: var(--vivo); }

.migas .actual { color: var(--tinta); font-weight: 500; }

/* ---------------- mercado: filtros + grilla + anuncios ---------------- */

/* Tres columnas piden más aire del que da <main> (60rem, pensado para texto
   corrido) — el mismo quiebre de ancho que ya usa .hero, pero con un techo
   propio en vez de 100vw a secas: no queremos una cuadrícula infinita en
   monitores anchos. */
.mercado-layout {
  position: relative;
  left: 50%;
  transform: translateX(-50%);
  width: 100vw;
  max-width: 78rem;
  box-sizing: border-box;
  padding: 0 1.25rem;
  display: flex;
  gap: 1.75rem;
  align-items: flex-start;
}

.mercado-principal { flex: 1; min-width: 0; }

.panel-filtros {
  width: 14rem;
  flex-shrink: 0;
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  box-shadow: var(--sombra);
  padding: 1.1rem;
  transition: background-color var(--rapido), border-color var(--rapido);
}

.panel-filtros h2 {
  display: flex;
  align-items: center;
  gap: .4rem;
  margin: 0 0 .9rem;
  font-size: .95rem;
}

.buscador-panel {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .5rem .7rem;
  margin-bottom: 1rem;
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  color: var(--suave);
  background: var(--fondo);
}
.buscador-panel .icono { width: 1rem; height: 1rem; flex-shrink: 0; }
.buscador-panel input {
  border: 0;
  background: none;
  padding: 0;
  width: 100%;
  color: var(--tinta);
}
.buscador-panel input:focus { outline: none; }

.grupo-filtro {
  padding: .9rem 0;
  border-top: 1px solid var(--linea);
}
.grupo-filtro:first-of-type { border-top: 0; padding-top: 0; }
.grupo-filtro h3 { margin: 0 0 .55rem; font-size: .8rem; text-transform: uppercase; letter-spacing: .03em; color: var(--suave); }

.lista-categorias { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .1rem; }

.opcion-categoria {
  display: flex;
  align-items: center;
  gap: .5rem;
  width: 100%;
  padding: .4rem .5rem;
  border: 0;
  border-radius: var(--radio);
  background: none;
  color: var(--tinta);
  font-size: .86rem;
  text-align: left;
  cursor: pointer;
  transition: background-color var(--rapido), color var(--rapido);
}
.opcion-categoria .icono { width: 1rem; height: 1rem; color: var(--suave); flex-shrink: 0; }
.opcion-categoria:hover { background: var(--fondo); }
.opcion-categoria.activa { background: var(--vivo-claro); color: var(--vivo); font-weight: 600; }
.opcion-categoria.activa .icono { color: var(--vivo); }

.rango-precio { display: flex; align-items: center; gap: .5rem; color: var(--suave); }
.rango-precio input { min-width: 0; }

.opcion-filtro {
  display: flex;
  align-items: center;
  gap: .5rem;
  font-size: .86rem;
  padding: .25rem 0;
  cursor: pointer;
}
.opcion-filtro input { width: auto; margin: 0; }

.panel-filtros .principal.ancho-completo { width: 100%; margin-top: 1rem; }
.panel-filtros .enlace { display: block; width: 100%; text-align: center; margin-top: .5rem; font-size: .84rem; }

.barra-resultados {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1rem;
}

.cuenta-resultados { color: var(--suave); font-size: .88rem; }

.orden { display: flex; align-items: center; gap: .5rem; font-size: .86rem; color: var(--suave); }
.orden select { width: auto; }

.mercado-sidebar {
  width: 15rem;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.panel-anuncios {
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  box-shadow: var(--sombra);
  padding: 1rem;
  transition: background-color var(--rapido), border-color var(--rapido);
}
.panel-anuncios h3 { margin: 0 0 .75rem; font-size: .92rem; }

.lista-anuncios { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .9rem; }

.lista-anuncios a {
  display: block;
  text-decoration: none;
  color: inherit;
  transition: opacity var(--rapido);
}
.lista-anuncios a:hover { opacity: .82; }
.lista-anuncios a:active { opacity: .65; }

.lista-anuncios img, .anuncio-imagen-vacia {
  width: 100%;
  height: 6rem;
  object-fit: cover;
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  margin-bottom: .4rem;
  background: var(--fondo);
}

.anuncio-imagen-vacia {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.8rem;
}

.anuncio-titulo { display: block; font-size: .86rem; font-weight: 500; }
.anuncio-sub { display: block; font-size: .78rem; color: var(--suave); margin-top: .15rem; }

/* Bento: el primer destacado ocupa las dos columnas y una imagen más grande,
   el resto queda en mosaico parejo — así el ojo escanea por tamaño, no por
   orden de lista, y el destacado más reciente siempre se nota primero. */
.lista-bento {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: .7rem;
}

.lista-bento > li:first-child { grid-column: 1 / -1; }
.lista-bento > li:first-child img, .lista-bento > li:first-child .anuncio-imagen-vacia { height: 8rem; font-size: 2.4rem; }
.lista-bento img, .lista-bento .anuncio-imagen-vacia { height: 4.5rem; }
.lista-bento .anuncio-titulo { font-size: .8rem; }

/* ---------------- listas ---------------- */

.lista {
  list-style: none;
  margin: 0;
  padding: 0;
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  box-shadow: var(--sombra);
  overflow: hidden;
  transition: background-color var(--rapido), border-color var(--rapido);
}
.lista:empty { display: none; }

.fila {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: .5rem 1rem;
  padding: .85rem 1rem;
  border-bottom: 1px solid var(--linea);
  cursor: pointer;
  position: relative;
  transition: background-color var(--rapido);
}

.fila:last-child { border-bottom: 0; }
.fila:hover { background: var(--fondo); }
.fila:active { background: var(--linea); }
.fila.quieta { cursor: default; }
.fila.quieta:hover, .fila.quieta:active { background: none; }
.fila.cargar-mas { justify-content: center; }

/* Mientras el carril cambia de imagen, se apaga hasta que la nueva carga */
.tarjeta-imagen .miniatura.cambiando { opacity: 0; }

/* ---------------- esqueleto de carga ---------------- */

@keyframes brillo-esqueleto {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.skeleton .tarjeta-imagen,
.skeleton .tarjeta-categoria,
.skeleton .tarjeta-titulo,
.skeleton .tarjeta-sub {
  display: block;
  color: transparent;
  border-color: transparent;
  background: linear-gradient(90deg, var(--linea) 25%, var(--fondo) 50%, var(--linea) 75%);
  background-size: 250% 100%;
  animation: brillo-esqueleto 1.3s ease-in-out infinite;
}

.skeleton .tarjeta-categoria { width: 40%; height: .74rem; border-radius: var(--radio); margin-bottom: .3rem; }
.skeleton .tarjeta-titulo { width: 75%; height: 1.05rem; border-radius: var(--radio); }
.skeleton .tarjeta-sub { width: 45%; height: .8rem; border-radius: var(--radio); margin-top: .4rem; }

@media (prefers-reduced-motion: reduce) {
  .skeleton .tarjeta-imagen, .skeleton .tarjeta-categoria,
  .skeleton .tarjeta-titulo, .skeleton .tarjeta-sub { animation: none; }
}

/* min-width en rem (no 0): con flex-wrap, un valor mínimo razonable hace que
   .cifra-fila/los botones salten a su propia línea en vez de ir arrinconando
   el título letra por letra cuando no entran todos en una sola fila (pasaba
   en el panel de admin, con un <select> largo + botón compitiendo por
   espacio). Las tarjetas del mercado (.grid-productos) no compiten por ancho
   — ahí .cuerpo ya es columna completa y esto no cambia nada. */
.fila .cuerpo { flex: 1; min-width: 11rem; }
.fila .nombre { display: block; font-weight: 500; }
.fila .sub { display: block; font-size: .84rem; color: var(--suave); margin-top: .15rem; }

.fila .cifra-fila { text-align: right; white-space: nowrap; }

.mono, .importe, .cuenta, .cifra-fila strong {
  font-family: 'IBM Plex Mono', ui-monospace, monospace;
  font-variant-numeric: tabular-nums;
  font-weight: 500;
}

.cifra-fila strong { display: block; font-size: 1.02rem; color: var(--vivo); }
.cifra-fila span { display: block; font-size: .78rem; color: var(--suave); margin-top: .15rem; }

.vacio { padding: 1rem; color: var(--suave); font-size: .92rem; }

/* ---------------- tarjetas de producto (mercado) ---------------- */

/* .grid-productos va en #lista-subastas, #lista-fijos y #lista-portada (la
   portada reusa las mismas tarjetas). .fila también la usan Mis compras y Mis
   ventas como lista de gestión (con botones, sin fotos) — esa sigue siendo
   una fila angosta, solo .grid-productos la vuelve cuadrícula. */
.grid-productos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 1rem;
  background: none;
  border: 0;
  box-shadow: none;
  border-radius: 0;
}

.grid-productos .fila {
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  padding: 0;
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  box-shadow: var(--sombra);
  transition: transform var(--rapido), box-shadow var(--rapido), border-color var(--rapido);
}

.grid-productos .fila:last-child { border: 1px solid var(--linea); }

.grid-productos .fila:hover {
  background: var(--panel);
  transform: translateY(-3px);
  border-color: var(--vivo);
  box-shadow: var(--sombra), 0 0 0 1px var(--vivo);
}

.grid-productos .vacio, .grid-productos .cargar-mas {
  grid-column: 1 / -1;
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
}

/* La imagen (o el marcador sin foto) llena la cabecera de la tarjeta;
   insignias y favorito flotan encima con posicionamiento absoluto. */
.tarjeta-imagen {
  position: relative;
  /* width explícito, no heredado del stretch del flex: dentro de una fila que
     además es ítem de un grid (auto-fit), el aspect-ratio no alcanza a
     calcular la altura si el ancho depende solo de align-items:stretch —
     queda en ~0 (visto a mano, sin ancho propio la tarjeta se aplastaba). */
  width: 100%;
  aspect-ratio: 4 / 3;
  background: var(--fondo);
  border-bottom: 1px solid var(--linea);
  overflow: hidden;
}

.tarjeta-imagen .miniatura {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: opacity .2s ease;
}

.marcador-imagen {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--suave);
}

.marcador-imagen .icono { width: 2.75rem; height: 2.75rem; stroke-width: 1.3; }

.insignia-condicion {
  position: absolute;
  top: .6rem;
  left: .6rem;
  padding: .2rem .55rem;
  border-radius: 999px;
  font-size: .68rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .03em;
  background: var(--panel);
  color: var(--suave);
  border: 1px solid var(--linea);
}

.insignia-condicion.nuevo { background: var(--vivo-claro); color: var(--vivo); border-color: transparent; }

.insignia-cierra {
  display: none;
  align-items: center;
  gap: .3rem;
  position: absolute;
  bottom: .6rem;
  left: .6rem;
  padding: .2rem .55rem;
  border-radius: 999px;
  background: var(--urgencia-claro);
  color: var(--urgencia);
  font-size: .68rem;
  font-weight: 600;
}

.insignia-cierra .icono { width: .8rem; height: .8rem; }
.fila.urgente .insignia-cierra { display: inline-flex; }

/* Corazón de favoritos: encima de la imagen, un círculo oscuro semitransparente
   funciona sobre cualquier foto y en cualquiera de los dos temas por igual */
.fav {
  position: absolute;
  top: .5rem;
  right: .5rem;
  width: 2rem;
  height: 2rem;
  border: 0;
  border-radius: 50%;
  background: rgba(15, 17, 20, .45);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background-color var(--rapido), transform .1s ease;
}

.fav .icono { width: 1.05rem; height: 1.05rem; }
.fav:hover { background: rgba(15, 17, 20, .65); }
.fav:active { transform: scale(.85); }
.fav.activo { color: #ff5470; }

.tarjeta-cuerpo {
  display: flex;
  flex-direction: column;
  gap: .15rem;
  padding: .8rem 1rem .9rem;
  flex: 1;
}

.tarjeta-categoria {
  display: flex;
  align-items: center;
  gap: .35rem;
  font-size: .74rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .03em;
  color: var(--vivo);
}

.tarjeta-categoria .icono { width: .95rem; height: .95rem; }

.tarjeta-titulo {
  margin: .1rem 0 0;
  font-size: 1.05rem;
  font-weight: 600;
  line-height: 1.3;
}

.tarjeta-sub { font-size: .8rem; color: var(--suave); }
.fila.urgente .tarjeta-sub { color: var(--urgencia); font-weight: 500; }

/* ---------------- Compra Protegida LandCo ---------------- */

.escudo {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  padding: .2rem .6rem;
  border-radius: 999px;
  background: var(--vivo-claro);
  color: var(--vivo);
  font-size: .78rem;
  font-weight: 600;
}

.escudo-explicacion {
  display: flex;
  align-items: flex-start;
  gap: .7rem;
  padding: .9rem 1.1rem;
  margin: 0 0 1.4rem;
  border: 1px solid var(--linea);
  border-left: 3px solid var(--vivo);
  border-radius: var(--radio);
  background: var(--vivo-claro);
}

.escudo-explicacion strong { display: block; color: var(--vivo); margin-bottom: .2rem; }
.escudo-explicacion p { margin: 0; font-size: .88rem; color: var(--tinta); }
.escudo-explicacion .icono { width: 1.4rem; height: 1.4rem; color: var(--vivo); flex-shrink: 0; }

/* Código de recogida/entrega: grande y espaciado para leerlo rápido desde el
   celular, en voz alta, sin ambigüedad de dígitos. */
.codigo-verificacion {
  font-size: 1.8rem;
  font-weight: 700;
  letter-spacing: .35em;
  font-variant-numeric: tabular-nums;
  color: var(--vivo) !important;
  margin: .3rem 0 !important;
}

/* Línea de tiempo del seguimiento: un punto por evento, conectados por una
   guía vertical. El más reciente arriba (mismo orden que llega del backend
   invertido), sin distinguir roles — cada quien ve los mismos hechos. */
.linea-tiempo { list-style: none; margin: 1.5rem 0; padding: 0; }

.linea-tiempo li {
  position: relative;
  padding: 0 0 1.3rem 1.6rem;
  border-left: 2px solid var(--linea);
  margin-left: .45rem;
}

.linea-tiempo li:last-child { border-color: transparent; padding-bottom: 0; }

.linea-tiempo li::before {
  content: '';
  position: absolute;
  left: -.5rem;
  top: .2rem;
  width: .9rem;
  height: .9rem;
  border-radius: 50%;
  background: var(--vivo);
  border: 2px solid var(--panel);
}

.linea-tiempo .lt-accion { font-weight: 500; display: block; }
.linea-tiempo .lt-meta { font-size: .8rem; color: var(--suave); display: block; margin-top: .15rem; }

.ficha-congelada {
  background: var(--fondo);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  padding: 1rem 1.1rem;
  margin: 1rem 0;
  font-size: .9rem;
}

.ficha-congelada dl { display: grid; grid-template-columns: auto 1fr; gap: .3rem 1rem; margin: 0; }
.ficha-congelada dt { color: var(--suave); }
.ficha-congelada dd { margin: 0; }

.panel-inspeccion {
  border-top: 1px solid var(--linea);
  margin-top: .9rem;
  padding-top: .9rem;
}

.checklist-grupo { margin-bottom: .9rem; }
.checklist-grupo h4 { margin: 0 0 .4rem; font-size: .85rem; color: var(--suave); text-transform: uppercase; letter-spacing: .03em; }
.checklist-item { display: flex; align-items: center; gap: .5rem; padding: .3rem 0; font-size: .9rem; }
.checklist-item select { width: auto; flex-shrink: 0; }

.seg-acciones { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin-top: 1.2rem; }

/* ---------------- LandCo Asociados ---------------- */

.asociados-intro, .asociados-ayuda { color: var(--suave); font-size: .92rem; }

.asociado-resumen {
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  box-shadow: var(--sombra);
  padding: 1rem 1.1rem;
  margin: 0 0 1.2rem;
  transition: background-color var(--rapido), border-color var(--rapido);
}
.asociado-resumen p { margin: .5rem 0 0; font-size: .9rem; }
.asociado-resumen .escudo { margin-bottom: .2rem; }

.calificacion-inline { display: flex; align-items: center; gap: .3rem; color: var(--urgencia); font-weight: 600; }
.calificacion-inline .icono { width: .95rem; height: .95rem; }

.aviso-inline {
  background: var(--urgencia-claro);
  color: var(--urgencia);
  border-radius: var(--radio);
  padding: .6rem .8rem;
  font-size: .88rem;
}

.accion-con-texto { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.accion-con-texto input { width: auto; flex: 1 1 16rem; }

.tarjeta-precio-fila {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: .5rem;
  margin-top: .6rem;
  padding-top: .6rem;
  border-top: 1px solid var(--linea);
}

.precio-bloque { display: flex; flex-direction: column; }

/* Precio en Space Grotesk, no en la monoespaciada de .mono/.importe — pedido
   explícito del rediseño: el precio es lo primero que el ojo debe agarrar. */
.cifra-precio {
  font-family: var(--fuente-titulo);
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--tinta);
  line-height: 1.1;
}

.precio-rotulo {
  font-size: .68rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--suave);
  margin-top: .1rem;
}

.escudo-protegida {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  padding: .2rem .5rem;
  border-radius: 999px;
  background: var(--vivo-claro);
  color: var(--vivo);
  font-size: .68rem;
  font-weight: 600;
  white-space: nowrap;
}

.escudo-protegida .icono { width: .8rem; height: .8rem; }

/* ---------------- galería de imágenes ---------------- */

.galeria { margin-bottom: 1.25rem; }

.galeria-principal {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  max-height: 24rem;
  object-fit: cover;
  background: var(--fondo);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
}

.galeria-miniaturas {
  display: flex;
  gap: .5rem;
  margin-top: .5rem;
  flex-wrap: wrap;
}

.galeria-miniaturas img {
  width: 3.5rem;
  height: 3.5rem;
  object-fit: cover;
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  cursor: pointer;
  opacity: .7;
  transition: opacity var(--rapido), border-color var(--rapido);
}

.galeria-miniaturas img:hover { opacity: 1; }
.galeria-miniaturas img.activa { opacity: 1; border-color: var(--vivo); }

.previsualizacion {
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
}

.previsualizacion:empty { display: none; }

.previsualizacion img {
  width: 4rem;
  height: 4rem;
  object-fit: cover;
  border: 1px solid var(--linea);
}

/* ---------------- ficha de producto ---------------- */

.ficha { background: var(--panel); border: 1px solid var(--linea); border-radius: var(--radio); box-shadow: var(--sombra); padding: 1.5rem; }
.ficha h2 { margin-top: 0; }
.meta { font-size: .86rem; color: var(--suave); margin: 0 0 1rem; }

.mp-estado {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  padding: .9rem 1.1rem;
  margin: 0 0 1.4rem;
  border: 1px solid var(--linea);
  border-left: 3px solid var(--suave);
  border-radius: var(--radio);
  background: var(--panel);
  transition: background-color var(--rapido), border-color var(--rapido);
}

.mp-estado.conectado { border-left-color: var(--vivo); background: var(--vivo-claro); }

.mp-estado-texto { margin: 0; font-size: .92rem; }
.mp-estado-texto + .mp-estado-texto { margin-top: .3rem; }
.mp-estado.conectado .mp-estado-texto { color: var(--vivo); font-weight: 500; }
.mp-estado .principal { padding: .45rem .9rem; font-size: .88rem; }
.descripcion { max-width: 60ch; margin: 0 0 1.5rem; }

.marcador {
  display: flex;
  gap: 3rem;
  padding: 1.1rem 0;
  border-top: 1px solid var(--linea);
  border-bottom: 1px solid var(--linea);
  flex-wrap: wrap;
}

.rotulo {
  display: block;
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  font-weight: 600;
  color: var(--suave);
  margin-bottom: .3rem;
}

.importe { font-size: 2rem; color: var(--vivo); display: block; line-height: 1.1; }
.cuenta { font-size: 1.35rem; display: block; line-height: 1.1; transition: color var(--rapido); }
.cuenta.urgente { color: var(--urgencia); }

@keyframes destello {
  from { background: var(--vivo-claro); }
  to { background: transparent; }
}

.importe.nueva { animation: destello .9s ease-out; }

@media (prefers-reduced-motion: reduce) {
  .importe.nueva { animation: none; }
}

.pujar { display: flex; gap: .6rem; margin-top: 1.2rem; max-width: 22rem; }
.comprar { margin-top: 1.2rem; }
.nota { font-size: .9rem; color: var(--suave); margin: .9rem 0 0; }
.nota.error { color: var(--alerta); }

.pujas { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--linea); }

.pujas li {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: .5rem 0;
  border-bottom: 1px solid var(--linea);
  font-size: .9rem;
}

.pujas .cuando { color: var(--suave); }

/* ---------------- mercado en pantallas medianas ---------------- */

/* Tres columnas necesitan más ancho del que hay en tablet: el panel de
   filtros pasa arriba de la grilla (sigue siendo la primera columna del
   flex, así que no hace falta reordenar nada, solo dejar de fijarle ancho). */
@media (max-width: 64rem) {
  .mercado-layout { flex-wrap: wrap; }
  .panel-filtros { width: 100%; }
  .lista-categorias { flex-direction: row; flex-wrap: wrap; }
  .opcion-categoria { width: auto; }
}

/* ---------------- móvil ---------------- */

@media (max-width: 34rem) {
  h1 { font-size: 1.8rem; }
  main { padding: 1rem 1rem 5.5rem; }
  .marcador { gap: 1.5rem; }
  .importe { font-size: 1.6rem; }
  .ficha { padding: 1.1rem; }

  /* Mis compras/Mis ventas (no el grid de tarjetas del mercado, que ya fuerza
     su propia columna con más especificidad): con el precio y hasta tres
     botones compitiendo por espacio en una sola fila, .cuerpo (flex:1) se
     dejaba apretar hasta un puñado de píxeles en vez de envolver — el título
     quedaba partido letra por letra, superpuesto con el precio. Apilar todo
     en columna evita que compitan por ancho. */
  .fila { flex-direction: column; align-items: stretch; flex-wrap: wrap; gap: .5rem; }
  .fila .cifra-fila { text-align: left; white-space: normal; }
  .fila > button.enlace, .fila > button.principal, .fila > input.convertir-fecha {
    align-self: flex-start;
  }

  .mercado-layout { flex-direction: column; }
  .mercado-sidebar { width: 100%; flex-direction: row; flex-wrap: wrap; }
  .panel-anuncios { flex: 1 1 12rem; }

  /* Nav inferior para el pulgar: la barra de arriba queda solo para la marca
     y la sesión, y #nav (mismo elemento, sin nuevo id) se fija abajo — así
     ningún botón interactivo importante queda arriba, lejos del pulgar. */
  .barra { padding-right: .9rem; }

  .nav {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 20;
    background: var(--panel);
    border-top: 1px solid var(--linea);
    padding: .35rem .25rem calc(.35rem + env(safe-area-inset-bottom));
    gap: 0;
    justify-content: space-around;
  }

  .nav button {
    flex-direction: column;
    gap: .15rem;
    flex: 1;
    padding: .35rem .2rem;
    border-radius: var(--radio);
  }

  .nav-icono { font-size: 1.2rem; }
  .nav-etiqueta { font-size: .68rem; }
}

/* ---------------------------------------------- Centro de Operaciones */

.metricas {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: .8rem;
  margin: 1rem 0 1.6rem;
}

.metrica {
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  padding: .9rem 1rem;
}

.metrica .rotulo { display: block; font-size: .78rem; color: var(--suave); margin-bottom: .3rem; }
.metrica .cifra { display: block; font-size: 1.5rem; font-weight: 600; font-family: 'Space Grotesk', sans-serif; }
.metrica .cifra.alerta { color: var(--alerta); }
.metrica .cifra.urgencia { color: var(--urgencia); }
.metrica .cifra.vivo { color: var(--vivo); }

.alertas-lista { list-style: none; margin: 0 0 1.6rem; padding: 0; display: flex; flex-direction: column; gap: .5rem; }

.alerta-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  padding: .7rem .9rem;
  background: var(--urgencia-claro);
  border-left: 3px solid var(--urgencia);
  border-radius: var(--radio);
  font-size: .88rem;
  flex-wrap: wrap;
}

.alerta-item.grave { background: var(--alerta-claro); border-left-color: var(--alerta); }
.alerta-item.ok { background: var(--vivo-claro); border-left-color: var(--vivo); }
.alerta-item .tipo { font-weight: 600; }
.alerta-item .sub { color: var(--suave); }

.kanban {
  display: flex;
  gap: .9rem;
  overflow-x: auto;
  padding-bottom: .6rem;
  margin: 0 0 1.6rem;
}

.kanban-columna {
  flex: 0 0 15rem;
  background: var(--fondo);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  padding: .7rem;
  max-height: 26rem;
  display: flex;
  flex-direction: column;
}

.kanban-columna h4 {
  margin: 0 0 .6rem;
  font-size: .8rem;
  text-transform: uppercase;
  letter-spacing: .03em;
  color: var(--suave);
  display: flex;
  justify-content: space-between;
}

.kanban-columna h4 span { color: var(--tinta); font-weight: 600; }

.kanban-tarjetas { overflow-y: auto; display: flex; flex-direction: column; gap: .5rem; }

.kanban-tarjeta {
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  padding: .55rem .65rem;
  font-size: .82rem;
}

.kanban-tarjeta .nombre { display: block; font-weight: 600; margin-bottom: .2rem; }
.kanban-tarjeta .sub { display: block; color: var(--suave); font-size: .78rem; }

/* ---------------------------------------------- Chat interno y Soporte (Fase 3) */

.chat-tabs { display: flex; gap: .5rem; flex-wrap: wrap; margin: 1rem 0; }

.chat-tab {
  padding: .4rem .9rem;
  border: 1px solid var(--linea);
  border-radius: 999px;
  background: var(--panel);
  color: var(--suave);
  font-size: .85rem;
  cursor: pointer;
}
.chat-tab.activa { background: var(--vivo); border-color: var(--vivo); color: var(--panel); font-weight: 600; }

.chat-mensajes {
  list-style: none;
  margin: 0 0 1rem;
  padding: 1rem;
  max-height: 24rem;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: .7rem;
  background: var(--fondo);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
}

.chat-mensaje {
  max-width: 80%;
  padding: .5rem .75rem;
  background: var(--panel);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  align-self: flex-start;
}
.chat-mensaje.propio { align-self: flex-end; background: var(--vivo-claro); border-color: var(--vivo); }

.chat-autor { display: block; font-size: .75rem; font-weight: 600; color: var(--suave); margin-bottom: .2rem; }
.chat-mensaje p { margin: 0; font-size: .9rem; word-break: break-word; }
.chat-hora { display: block; font-size: .7rem; color: var(--suave); margin-top: .25rem; }

.chat-form { display: flex; gap: .6rem; align-items: flex-end; }
.chat-form textarea { flex: 1; resize: vertical; }
