/* ===========================================================================
   EL ARMAZÓN DEL TELÉFONO — scope `.mv-ui`
   ===========================================================================
   La barra superior de las pantallas y el menú de entrada de TODOS los roles.
   Ganó la opción A de la lámina del 05/10/2026 (docs/movil/): el menú es la
   casa, en lista y agrupado por familia, con el interruptor Azúcar / Polvos
   arriba. Las pantallas que se abren adentro NO son de este archivo: cada
   módulo trae su propio `*-ui.css`.

   DOS COSAS QUE NO SON OBVIAS:

   · El scope va en el MISMO elemento que la clase (`.mv-ui.mv-top`,
     `.mv-ui.mv-menu`), no en `#mobile-app-container`. Adentro de ese
     contenedor todavía viven pantallas en Tailwind, y la base tipográfica de
     tokens.css (13,5 px) se les colaría por herencia.
   · Por eso mismo los dos llevan su `.hidden` propio: `mobile-router.js` los
     oculta con la clase de Tailwind, que pierde contra dos clases.

   Un solo color de ícono. El color queda libre para avisar (manual §1.1).
   =========================================================================== */

/* ── La barra de una pantalla abierta ─────────────────────────────────────── */
.mv-ui.mv-top {
    display: flex; align-items: center; gap: 10px;
    background: var(--navy); color: #fff;
    padding: 10px 12px; position: relative; z-index: 50; flex: none;
}
.mv-ui.mv-top.hidden { display: none; }
.mv-ui .mv-ic {
    width: 40px; height: 40px; border-radius: 10px; flex: none; border: 0;
    display: flex; align-items: center; justify-content: center;
    background: rgba(255, 255, 255, .1); color: #fff;
}
.mv-ui .mv-ic:active { background: rgba(255, 255, 255, .24); }
/* «Actualizar» sólo existe en las pantallas que saben releerse (Polvos): el
   router lo prende y lo apaga con `.hidden`, que solo pierde contra dos clases. */
.mv-ui .mv-ic.hidden { display: none; }
.mv-ui .mv-ic:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.mv-ui .mv-top-t { flex: 1; min-width: 0; }
.mv-ui .mv-mig { font-size: 11px; line-height: 1.2; color: #b9cbe8; }
.mv-ui .mv-mig:empty { display: none; }
.mv-ui .mv-tit {
    margin: 0; font-size: 16px; font-weight: 600; line-height: 1.25; color: #fff;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ── El menú ──────────────────────────────────────────────────────────────── */
.mv-ui.mv-menu {
    display: flex; flex-direction: column; width: 100%; min-height: 100%;
    background: var(--canvas); padding-bottom: 32px; font-size: 14px;
}
.mv-ui.mv-menu.hidden { display: none; }

.mv-ui .mv-cab {
    background: var(--navy); color: #fff; padding: 14px 16px;
    position: sticky; top: 0; z-index: 10;
}
.mv-ui .mv-cab-r { display: flex; align-items: center; gap: 12px; }
.mv-ui .mv-logo { height: 38px; width: auto; flex: none; display: block; }
.mv-ui .mv-cab-t { flex: 1; min-width: 0; padding-left: 12px; border-left: 1px solid rgba(255, 255, 255, .22); }
.mv-ui .mv-marca { font-size: 15px; font-weight: 700; letter-spacing: .02em; line-height: 1.2; }
.mv-ui .mv-quien {
    font-size: 12px; color: #b9cbe8; line-height: 1.3;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mv-ui .mv-cab-extra {
    margin-top: 12px; padding: 8px 10px; border-radius: 9px;
    background: rgba(255, 255, 255, .1); font-size: 12.5px; line-height: 1.35;
}
.mv-ui .mv-cab-extra b {
    display: block; font-size: 10.5px; font-weight: 600; letter-spacing: .07em;
    text-transform: uppercase; color: #b9cbe8;
}

/* El interruptor de división: el mismo gesto que el del escritorio. */
.mv-ui .mv-div {
    display: flex; margin-top: 12px; padding: 3px; border-radius: 10px;
    background: rgba(255, 255, 255, .1);
}
.mv-ui .mv-div button {
    flex: 1; min-height: 38px; border: 0; border-radius: 8px; background: none;
    font: inherit; font-weight: 600; color: #c9d8f0;
}
.mv-ui .mv-div button[aria-pressed="true"] { background: #fff; color: var(--navy); }
.mv-ui .mv-div button:focus-visible { outline: 2px solid #fff; outline-offset: 1px; }

.mv-ui .mv-cuerpo { padding: 6px 14px 0; }
.mv-ui .mv-grp {
    margin: 16px 4px 6px; font-size: 11.5px; font-weight: 600;
    letter-spacing: .07em; text-transform: uppercase; color: var(--faint);
}
.mv-ui .mv-lista {
    background: var(--surface); border: 1px solid var(--hair);
    border-radius: var(--r-card); box-shadow: var(--e1); overflow: hidden;
}
.mv-ui .mv-it {
    display: flex; align-items: center; gap: 12px; width: 100%; min-height: 54px;
    padding: 9px 12px 9px 14px; border: 0; border-bottom: 1px solid var(--hair);
    background: none; font: inherit; color: var(--ink); text-align: left;
}
.mv-ui .mv-it:last-child { border-bottom: 0; }
/* «Ingreso anterior» (core/sesiones.js), al pie del menú: dato, no botón. */
.mv-ui .mv-ingreso { margin: 12px 4px 0; font-size: 12.5px; color: var(--muted); text-align: center; }
.mv-ui .mv-ingreso b { font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; }
.mv-ui .mv-ingreso[hidden] { display: none; }
.mv-ui .mv-it:active { background: var(--navy-050); }
.mv-ui .mv-it:focus-visible { outline: 2px solid var(--navy-300); outline-offset: -2px; }
.mv-ui .mv-it > .material-symbols-outlined { font-size: 23px; color: var(--navy-500); flex: none; }
.mv-ui .mv-it-t { flex: 1; min-width: 0; }
.mv-ui .mv-it-n { display: block; font-size: 15px; font-weight: 600; line-height: 1.25; }
.mv-ui .mv-it-d { display: block; font-size: 12.5px; color: var(--muted); line-height: 1.3; }
.mv-ui .mv-it > .mv-ch { font-size: 20px; color: var(--hair-strong); }
.mv-ui .mv-it > .cm-puerta {
    /* Pre-cargas etapa 2: «2 novedades» en el renglón de Mis Pedidos del comercial. */
    flex: none; font-size: 11.5px; font-weight: 700; border-radius: 999px; padding: 2px 9px;
    color: var(--navy-500); background: var(--navy-050); border: 1px solid var(--hair-strong);
}
.mv-ui .mv-it > .cm-puerta.crit { color: var(--crit); background: var(--crit-050); border-color: var(--crit-hair, #f2c4c4); }
/* Un destino que todavía no se usa («Próximamente», el comercial): en gris. */
.mv-ui .mv-it.mv-pronto > .material-symbols-outlined,
.mv-ui .mv-it.mv-pronto .mv-it-n { color: var(--muted); }

/* La acción principal de un rol que viene a HACER una cosa (el ingreso del
   depósito externo). Una sola por menú. */
.mv-ui .mv-it.mv-prim { background: var(--navy); color: #fff; min-height: 64px; }
.mv-ui .mv-it.mv-prim:active { background: var(--navy-700); }
.mv-ui .mv-it.mv-prim > .material-symbols-outlined,
.mv-ui .mv-it.mv-prim > .mv-ch { color: #fff; }
.mv-ui .mv-it.mv-prim .mv-it-d { color: #c9d8f0; }

/* Una explicación en vez de destinos (el distribuidor) y la pantalla en obra. */
.mv-ui .mv-nota, .mv-ui.mv-nota {
    margin-top: 16px; padding: 20px 18px; text-align: center;
    background: var(--surface); border: 1px solid var(--hair);
    border-radius: var(--r-card); box-shadow: var(--e1);
}
.mv-ui.mv-nota { margin: 14px 8px; }
.mv-ui .mv-nota > .material-symbols-outlined,
.mv-ui.mv-nota > .material-symbols-outlined { font-size: 34px; color: var(--navy-500); }
.mv-ui .mv-nota h3, .mv-ui.mv-nota h3 { margin: 8px 0 6px; font-size: 17px; font-weight: 600; color: var(--ink); }
.mv-ui .mv-nota p, .mv-ui.mv-nota p { margin: 0 0 8px; font-size: 14px; color: var(--muted); line-height: 1.5; }
.mv-ui .mv-nota p.mv-chico, .mv-ui.mv-nota p.mv-chico { font-size: 12.5px; color: var(--faint); margin: 0; }

/* La espera entre el toque y la pantalla. */
.mv-ui.mv-espera {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 12px; height: 60vh; color: var(--muted); font-size: 13px;
}

/* ── Polvos en el teléfono: DE CONSULTA ───────────────────────────────────────
   Etapa 2 del teléfono (lámina 2, ganó la B, 05/10/2026). Las pantallas son las
   del escritorio montadas en `#mobile-data-container`. Lo que ya le pregunta a
   `esSoloConsulta()` (la ficha del pedido, la orden de carga, la devolución, el
   diálogo de Stock) se calla solo: con `mv-polvos` puesto, esa pregunta dice
   que sí (`core/permisos.js`). Acá va lo que NO le pregunta: los verbos de
   Movimientos, de la ficha del lote, de la fila En carga y de Pre-cargas,
   reconocidos por la función que llaman. Ver la factura o la NC sí queda.
   Los diálogos se montan en `document.body`, hermano del armazón: de ahí el
   `:has()` desde la raíz. */
:root:has(#mobile-app-container.mv-polvos) .ps-l .ps-chico,       /* «Trazabilidad»: el mismo destino que tocar el lote */
:root:has(#mobile-app-container.mv-polvos) #tq-ficha-renombrar,   /* Editar el nombre del lote */
:root:has(#mobile-app-container.mv-polvos) #tq-ficha-informe,     /* el informe es para imprimir */
:root:has(#mobile-app-container.mv-polvos) [onclick*="anularMovimientoEndulzante"],
:root:has(#mobile-app-container.mv-polvos) [onclick*="openNewMov"],
:root:has(#mobile-app-container.mv-polvos) [onclick*="handleVincular"],
:root:has(#mobile-app-container.mv-polvos) [onclick*="handleImprimir"],
:root:has(#mobile-app-container.mv-polvos) [onclick*="remitoReimprimir"],
:root:has(#mobile-app-container.mv-polvos) [onclick*="remitoAbrirReemplazo"],
:root:has(#mobile-app-container.mv-polvos) [onclick*="rollbackOCE"],
:root:has(#mobile-app-container.mv-polvos) [onclick*="dispatchOCE"],
:root:has(#mobile-app-container.mv-polvos) [onclick*="printOCE"],
:root:has(#mobile-app-container.mv-polvos) [onclick*="pvMesaControl"],  /* el aviso de En carga vacía */
:root:has(#mobile-app-container.mv-polvos) #pv-shell [data-rol="autorizar"],
:root:has(#mobile-app-container.mv-polvos) #pv-shell [data-rol="rechazar"],
:root:has(#mobile-app-container.mv-polvos) [onclick*="navigateTo"] { display: none; }  /* «Ir a Ventas» lleva a la PC */
/* Las cantidades de una pre-carga se corrigen al autorizarla: en el teléfono no se tocan. */
:root:has(#mobile-app-container.mv-polvos) #pv-shell input.cm-num { pointer-events: none; }

/* ── EL MOVIMIENTO — para que se sienta vivo (etapa 3a, 06/10/2026) ────────────
   Pedido de Hernán: cada gesto responde con movimiento. El contrato es la tabla
   «La animación» de docs/movil/lamina-03-azucar-pedidos-ventas.html. Lo que
   necesita saber dónde está el dedo (tirar, deslizar, arrastrar la hoja, el
   indicador que viaja) es de `core/mobile-gestos.js`; acá va el resto. Corto a
   propósito (120–280 ms): nada demora el trabajo. */

/* El toque: lo que se toca se hunde apenas y se tiñe mientras el dedo está. */
.mv-ui .mv-it { transition: background .12s ease, transform .12s ease; }
.mv-ui .mv-it:active { transform: scale(.985); }
.mv-ui .mv-ic:active { transform: scale(.9); }
.mv-ui .mv-ic, .mv-ui .mv-div button { transition: background .12s ease, transform .12s ease, color .2s ease; }
#mobile-data-container table tbody tr[data-id] { transition: background .12s ease, transform .12s ease; }
#mobile-data-container table tbody tr[data-id]:active { transform: scale(.99); }
#mobile-data-container table tbody tr[data-id]:active > td { background: var(--navy-050); }
#mobile-data-container button:not(:disabled):active { transform: scale(.96); }

/* La pantalla que entra (mvTransicion): desde la derecha al abrir, desde la
   izquierda al volver. */
@keyframes mvEntraAdelante { from { opacity: 0; transform: translateX(44px); } to { opacity: 1; transform: none; } }
@keyframes mvEntraAtras    { from { opacity: 0; transform: translateX(-44px); } to { opacity: 1; transform: none; } }
.mv-entra-adelante { animation: mvEntraAdelante .24s cubic-bezier(.2, .8, .2, 1) both; }
.mv-entra-atras    { animation: mvEntraAtras .24s cubic-bezier(.2, .8, .2, 1) both; }

/* Las listas caen escalonadas: los diez primeros, 30 ms cada uno. */
@keyframes mvCae { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.mv-ui.mv-menu .mv-lista,
#mobile-data-container table tbody tr[data-id] { animation: mvCae .3s cubic-bezier(.2, .8, .2, 1) both; }
#mobile-data-container table tbody tr[data-id]:nth-child(2), .mv-ui.mv-menu .mv-lista:nth-of-type(2) { animation-delay: 30ms; }
#mobile-data-container table tbody tr[data-id]:nth-child(3), .mv-ui.mv-menu .mv-lista:nth-of-type(3) { animation-delay: 60ms; }
#mobile-data-container table tbody tr[data-id]:nth-child(4), .mv-ui.mv-menu .mv-lista:nth-of-type(4) { animation-delay: 90ms; }
#mobile-data-container table tbody tr[data-id]:nth-child(5) { animation-delay: 120ms; }
#mobile-data-container table tbody tr[data-id]:nth-child(6) { animation-delay: 150ms; }
#mobile-data-container table tbody tr[data-id]:nth-child(7) { animation-delay: 180ms; }
#mobile-data-container table tbody tr[data-id]:nth-child(8) { animation-delay: 210ms; }
#mobile-data-container table tbody tr[data-id]:nth-child(9) { animation-delay: 240ms; }
#mobile-data-container table tbody tr[data-id]:nth-child(n+10) { animation-delay: 270ms; }

/* Deslizar de costado: lo de abajo de los segmentos entra por el lado. */
@keyframes mvDesdeDer { from { opacity: 0; transform: translateX(28px); } to { opacity: 1; transform: none; } }
@keyframes mvDesdeIzq { from { opacity: 0; transform: translateX(-28px); } to { opacity: 1; transform: none; } }
.mv-desde-der { animation: mvDesdeDer .24s cubic-bezier(.2, .8, .2, 1) both; }
.mv-desde-izq { animation: mvDesdeIzq .24s cubic-bezier(.2, .8, .2, 1) both; }

/* El indicador de la píldora (Ventas de Azúcar): viaja al segmento elegido. */
.mv-seg-ind {
    position: absolute; top: 3px; bottom: 3px; left: 3px; z-index: 0;
    border-radius: 8px; background: #fff; box-shadow: var(--e1);
    transition: transform .24s cubic-bezier(.2, .8, .2, 1), width .24s cubic-bezier(.2, .8, .2, 1);
    pointer-events: none;
}

/* «Actualizar» gira mientras lee. */
@keyframes mvGira { to { transform: rotate(360deg); } }
.mv-ui .mv-ic.mv-gira .material-symbols-outlined { animation: mvGira .7s linear infinite; }

/* Tirar hacia abajo: la flecha asoma, se da vuelta cuando alcanza, gira al leer. */
.mv-ui.mv-tirar {
    height: 0; overflow: hidden; display: flex; align-items: flex-end; justify-content: center;
    color: var(--navy-500); transition: height .2s ease;
}
.mv-ui.mv-tirar.on { transition: none; }
.mv-ui.mv-tirar.lee { transition: height .2s ease; }
.mv-ui.mv-tirar .material-symbols-outlined { font-size: 24px; margin-bottom: 10px; transition: transform .15s ease; }
.mv-ui.mv-tirar.listo .material-symbols-outlined { transform: rotate(180deg); }
.mv-ui.mv-tirar.lee .material-symbols-outlined { animation: mvGira .7s linear infinite; }
:root:has(#mobile-app-container.mv-polvos) .mv-ui.mv-tirar { color: var(--ok); }

/* Los gestos de costado y de tirar son de la app: el navegador no los toma
   como «atrás» (historial) ni como su propio recargar. */
html:has(#mobile-app-container:not(.hidden)),
html:has(#mobile-app-container:not(.hidden)) body,
#mobile-app-container > main { overscroll-behavior: none; }

/* ── LA ESPERA CON LA FORMA DE LO QUE VIENE (lámina 23, 10/10/2026: ganó la B) ──
   Lo que entra al abrir una pantalla ya no es un anillo con «Cargando…»: es la
   pantalla con su forma (mvEsqueleto, core/mobile-gestos.js) — la píldora, la
   tarjeta grande, los renglones— con el barrido de `.gs-sk` (tokens.css). Las
   medidas copian las de las pantallas del teléfono (píldora 38, renglón de dos
   líneas con su avatar de 34): si el esqueleto mide otra cosa, al llegar los
   datos todo salta, y eso es lo único que el esqueleto viene a evitar. */
.mv-ui.mv-sk-pant { display: flex; flex-direction: column; gap: 10px; padding: 4px 4px 20px; }
/* Adentro de la zona de una pantalla: debajo de su píldora de verdad y con el
   margen de sus listas (12 px), para que al llegar los datos nada se corra. */
.mv-ui.mv-sk-pant.dentro { flex: 1; padding: 10px 12px 20px; }
/* …y sin ese margen donde los renglones van de borde a borde (Stock, Movimientos). */
.mv-ui.mv-sk-pant.dentro.ras { padding-left: 0; padding-right: 0; }
.mv-ui .mv-sk-txt { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.mv-ui .mv-sk-seg { display: flex; height: 38px; padding: 3px; border-radius: 11px; background: #e6e9f0; }
.mv-ui .mv-sk-seg span { flex: 1; border-radius: 9px; }
.mv-ui .mv-sk-seg span.on { background: #fff; box-shadow: var(--e1); }
.mv-ui .mv-sk-card {
    display: flex; flex-direction: column; gap: 10px; padding: 13px 12px;
    background: #fff; border: 1px solid var(--hair); border-left: 4px solid var(--hair-strong);
    border-radius: 12px; box-shadow: var(--e1);
}
.mv-ui .mv-sk-chips { display: flex; gap: 6px; }
.mv-ui .mv-sk-graf .mv-sk-area { height: 200px; border-radius: 8px; }
.mv-ui .mv-sk-chips .gs-sk { width: 58px; height: 18px; border-radius: 7px; }
.mv-ui .mv-sk-lista { background: #fff; border: 1px solid var(--hair); border-radius: 14px; box-shadow: var(--e1); overflow: hidden; }
.mv-ui .mv-sk-r {
    display: grid; grid-template-columns: 34px 1fr auto; grid-template-rows: 20px 18px;
    gap: 2px 10px; align-items: center; align-content: center; padding: 10px 12px; border-bottom: 1px solid var(--hair);
}
.mv-ui .mv-sk-r:last-child { border-bottom: 0; }
.mv-ui .mv-sk-r > .gs-sk:nth-child(2) { grid-column: 2; grid-row: 1; }
.mv-ui .mv-sk-r > .gs-sk:nth-child(4) { grid-column: 2 / 4; grid-row: 2; }
.mv-ui .mv-sk-r .mv-sk-av { grid-row: 1 / 3; width: 34px; height: 34px; border-radius: 50%; }
.mv-ui .mv-sk-r .mv-sk-cifra { grid-column: 3; grid-row: 1; width: 44px; }

/* La barrita: «estoy leyendo por detrás» (mvBarrita). Arriba de todo y fina,
   para no tapar nada: lo que se ve sigue siendo usable. */
.mv-barrita {
    position: fixed; left: 0; right: 0; top: 0; height: 3px; z-index: 120;
    overflow: hidden; pointer-events: none; opacity: 0; transition: opacity .2s ease;
}
.mv-barrita.on { opacity: 1; }
.mv-barrita i {
    position: absolute; top: 0; bottom: 0; left: 0; width: 45%;
    background: linear-gradient(90deg, rgba(156, 192, 245, 0), #9cc0f5 40%, #fff 60%, rgba(255, 255, 255, 0));
    animation: mvBarre 1.1s cubic-bezier(.4, 0, .2, 1) infinite;
}
@keyframes mvBarre { from { transform: translateX(-100%); } to { transform: translateX(240%); } }
/* Mientras lo que se ve es lo último leído, los verbos que escriben esperan a
   lo fresco: nadie pausa un pedido ni registra un pase sobre un dato viejo. */
#mobile-data-container.mv-guardado [data-mv-escribe] { pointer-events: none; opacity: .45; }
/* Una cifra que cambió desde lo guardado destella al llegar lo fresco (mvCifras). */
@keyframes mvDestella { 0%, 100% { background: transparent; } 25% { background: rgba(156, 192, 245, .45); } }
.mv-destella { animation: mvDestella .9s ease; border-radius: 4px; }

/* El overlay del sistema (showLoading, core/ui.js) en el teléfono: sigue
   frenando los toques —un guardado no se dispara dos veces— pero no pinta la
   pantalla de blanco: es una píldora abajo, y arriba va la barrita. */
#global-loader-overlay.mv-cargando {
    background: transparent; backdrop-filter: none; -webkit-backdrop-filter: none;
    align-items: flex-end; padding-bottom: calc(28px + env(safe-area-inset-bottom, 0px));
}
#global-loader-overlay.mv-cargando > div {
    display: flex; align-items: center; gap: 10px; padding: 10px 18px 10px 14px;
    background: #fff; border-radius: 999px; box-shadow: var(--e2);
    animation: mvCae .22s cubic-bezier(.2, .8, .2, 1) both;
}
#global-loader-overlay.mv-cargando .gs-spin { width: 18px; height: 18px; border-width: 2px; margin: 0 !important; display: inline-block !important; }
#global-loader-overlay.mv-cargando p { margin: 0; font-size: 13px; font-weight: 600; color: var(--ink); }

/* La foto del armazón que queda detrás (o encima) mientras el renglón se
   estira o se encoge (mvPrepararPaso). Es un clon inerte: no se toca. */
.mv-foto { pointer-events: none; }

/* LA FOTO DE LA ÚLTIMA VEZ (mvFotoMostrar, lámina 23 etapa 4): una pantalla
   montada de la PC abre al instante con lo último que se vio, ENCIMA del
   contenedor donde el módulo monta y lee. Se lee y se scrollea (la foto es la
   que scrollea; el `main` queda quieto hasta que llega lo fresco), pero no se
   toca: nada adentro recibe el dedo. */
#mobile-detail-view { position: relative; }
.mv-foto-pant {
    position: absolute; inset: 0; z-index: 20; overflow-y: auto; overflow-x: hidden;
    background: #f8fafc; padding: .5rem;
}
.mv-foto-pant > * { pointer-events: none; }
#mobile-app-container > main.mv-con-foto { overflow: hidden; }

/* «Reducir movimiento» del teléfono: los gestos quedan, el movimiento no. */
@media (prefers-reduced-motion: reduce) {
    .mv-entra-adelante, .mv-entra-atras, .mv-desde-der, .mv-desde-izq,
    .mv-ui.mv-menu .mv-lista, #mobile-data-container table tbody tr[data-id] { animation: none; }
    .mv-seg-ind, .mv-ui .mv-it, .mv-ui .mv-ic, #mobile-data-container table tbody tr[data-id] { transition: none; }
    .mv-ui .mv-it:active, .mv-ui .mv-ic:active,
    #mobile-data-container table tbody tr[data-id]:active,
    #mobile-data-container button:not(:disabled):active { transform: none; }
    /* La barrita queda —dice «leyendo»—, quieta y entera; la píldora no cae. */
    .mv-barrita i { animation: none; width: 100%; opacity: .6; }
    .mv-destella { animation: none; }
    #global-loader-overlay.mv-cargando > div { animation: none; }
}
