/* ============================================================================
   IvaniaTV · tv-app · css/moderno-cotizacion.css   (ola 2.3 · M-28 · 23/9/2026)
   LA COTIZACION EN UN MOTOR MODERNO — y SOLO en un motor moderno.

   piso: moderno

   (Esa linea la lee `pruebas/comprobar-sintaxis.js` y significa Chromium 120,
   el techo de `venta-asistida` de ADR-001 §4. Se declara a mano porque el
   valor por omision es `minimo` = Chromium 53: lo que no se declara se mide
   contra la television de una familia. Vale el mismo criterio que en
   `reposo-moderno.css`.)

   ══ LO QUE ESTA HOJA **NO** HACE, Y ES LO PRIMERO QUE HAY QUE LEER ══════════
   NO coloca nada. Ni una rejilla, ni un ancho, ni un margen, ni un color.

   El plan de la ola (ANEXO T-06) pedia aqui «la cotizacion con rejilla
   nativa». Se midio antes de escribirla y RESULTA QUE YA LA TIENE: S7a y S7b
   se colocan con `display: grid` NATIVO desde `css/renderizador.css`
   (`.tv-r-columnas` l. 370, `.tv-r-cot-cuerpo` l. 414) y `css/sala.css`
   (`.tv-columnas` l. 675, `.tv-paquete-rejilla` l. 727). `css/piso53.css` no
   es el piso de la sala: es el RESPALDO en `flex` que `TV/index.html` inyecta
   SOLO cuando el adaptador contesta `motor.rejilla === false` —Chromium < 57,
   la LG de recepcion—. En una Samsung Tizen 8-10 esa hoja no se carga nunca,
   y la rejilla nativa es lo que ya pinta hoy.

   Asi que «pasar la sala a rejilla nativa» no era trabajo pendiente: estaba
   hecho. Escribir aqui otro `display: grid` habria sido una hoja entera que no
   cambia un pixel, con aspecto de mejora. Lo mismo que `reposo-moderno.css`
   se nego a hacer con `content-visibility`, y por la misma razon.

   ══ LO QUE SI HACE, Y POR QUE ES REAL ══════════════════════════════════════
   La cotizacion en vivo SONDEA cada `tv.cotizacion.periodo-sondeo-ms` (4 s por
   omision, RF-20c) y en cada vuelta `js/renderizador.js:398` **no actualiza
   una cifra: rehace el arbol entero** — `capa.innerHTML = compuesto.html`— en
   una CAPA NUEVA que se anade encima, con un reflujo sincrono forzado
   (`capa.offsetWidth`, l. 404) y un cruce de opacidad contra la capa saliente.
   Durante ese cruce hay DOS pantallas completas vivas a la vez.

   Eso es, pieza por pieza, la misma situacion que `reposo-moderno.css` arregla
   entre dos fotos: dos capas a sangre cruzandose. Y la respuesta es la misma,
   `contain`, por la misma razon — que el motor no tenga que recalcular el area
   sucia de la pantalla entera cada 4 segundos mientras una familia mira su
   precio.

   `contain: layout` promete que nada de dentro cambia la colocacion de nada de
   fuera; `contain: paint`, que nada de dentro pinta fuera de su caja. Las dos
   juntas acotan el trabajo del sondeo a la caja de la cotizacion en vez de a
   las 1920x1080.

   MEDIDO ANTES DE ESCRIBIRLA (23/9/2026, Chromium 1244 a 1920x1080): con estas
   reglas puestas, las cajas de S7a y S7b caen EXACTAMENTE donde caian —mismas
   x, y, w, h, diferencia 0— y no se recorta nada: `scrollWidth/Height` siguen
   igual a `clientWidth/Height` en los dos contenedores. La hoja es inerte para
   la vista; solo cambia el trabajo del motor. Lo comprueba
   `pruebas/prueba-tv-moderno-cotizacion.sh` en cada corrida.

   ══ POR QUE `@supports` Y NO UN `<link>` CONDICIONAL ═══════════════════════
   `contain` existe desde Chromium 52, asi que la LG de recepcion (53) TAMBIEN
   la aplicaria, y el encargo de M-28 dice «en la LG, sin cambio». La hoja se
   cierra sola detras de `@supports (content-visibility: auto)` —Chromium 85—,
   que es el MISMO TESTIGO que `js/plataforma/capacidades.js` ya usa y declara
   para decidir el reposo moderno: no se usa la propiedad, se pregunta por ella
   como prueba de que el motor es moderno. Un Chromium 53 no entiende la
   consulta, se salta el bloque entero y queda byte a byte como estaba.

   Se hace asi, y no preguntando al adaptador desde `TV/index.html`, por dos
   razones: `index.html` es de otra tarea (T5) y no se toca desde aqui; y una
   hoja que se cierra sola no puede quedar mal cableada por un tercero.
   NUNCA se pregunta «¿eres una Samsung?»: el parque de las familias no lo
   elegimos nosotros y la siguiente marca siempre esta por llegar.

   ══ LO QUE DELIBERADAMENTE SE DEJA FUERA ═══════════════════════════════════
   · S7a («tres opciones»). NO se le pone contencion. S7a no sondea —lo dice
     `pruebas/prueba-e-reconciliacion.js`: «pintar S7a lo apaga: ahi no hay
     cotizacion en vivo que reconciliar»—, asi que no hay repintado periodico
     que acotar y la regla no ahorraria nada. Se deja escrito para que nadie la
     anada «por simetria».
   · `content-visibility`. Aqui tampoco sirve, y por lo mismo que en el reposo:
     solo omite el dibujo de lo que queda FUERA de la pantalla, y las dos cajas
     de la cotizacion estan a la vista enteras.
   · `will-change: opacity` en `.tv-r-capa`. El cruce de capas es de TODAS las
     pantallas del renderizador, no de la cotizacion, y esta hoja no manda ahi.
     Ademas una promocion permanente de dos capas a pantalla completa cuesta
     memoria de GPU en un SoC de television todo el rato, para un cruce que
     ocurre cada 4 s. Si alguien lo quiere, que se mida aparte.

   Ocampo-Infra Agent System · autor Roberto Ocampo <ro@ocampo.ai>
   ========================================================================== */

@supports (content-visibility: auto) {

  /* La pantalla de cotizacion entera. Es `position: absolute` con medida fija
     (`.tv-r`, 1920x1080), asi que su tamanio no depende de lo que lleve
     dentro: acotar su colocacion no puede reflejarse hacia arriba. */
  .tv-r.es-s7b {
    contain: layout paint;
  }

  /* El cuerpo de la cotizacion: `position: absolute` con los cuatro lados
     fijados (`top`/`left`/`right`/`bottom` en `renderizador.css` l. 409-413).
     Su caja no la decide el contenido, y el contenido es justo lo que se
     rehace cada 4 s. */
  .tv-r-cot-cuerpo {
    contain: layout paint;
  }

  /* Las dos celdas de la rejilla: las lineas del presupuesto y el total. Cada
     una tiene su propio fondo, asi que su pintura ya estaba acotada de hecho;
     lo que se anade es la promesa de COLOCACION, que es la que evita que un
     renglon de mas en las lineas obligue a recalcular el bloque del total. */
  .tv-r-cot-lineas,
  .tv-r-cot-total {
    contain: layout paint;
  }

}
