html, body {
  height: 100%;
  overscroll-behavior-y: contain;
  overflow-x: hidden; /* la app solo debe hacer scroll vertical, nunca horizontal */
}

/* Contenedor de la lista virtualizada del catálogo */
.virtual-list-viewport {
  position: relative;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.virtual-list-spacer {
  position: relative;
  width: 100%;
}

.virtual-list-row {
  position: absolute;
  left: 0;
  right: 0;
}

input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
input[type="number"] {
  -moz-appearance: textfield;
}

/* Autoscroll (vaivén) para nombres de artículo que no caben en el ancho
   disponible, sobre todo en móvil. Solo se aplica cuando el texto realmente
   desborda (ver ArticuloRow.js), usando la variable --marquee-dist. */
.marquee-text {
  animation: marquee-scroll 7s ease-in-out infinite;
}
@keyframes marquee-scroll {
  0%, 15% { transform: translateX(0); }
  45%, 65% { transform: translateX(var(--marquee-dist)); }
  95%, 100% { transform: translateX(0); }
}
