/**
 * home.css — portada (`template-home.php`, cuerpo con clase `home`).
 *
 * REGLA VERIFICABLE (Paso 6): cero valor hexadecimal ni declaracion de
 * tipografia propia — todo pasa por tokens.css, comentarios incluidos.
 *
 * ── QUE SE MIDIO, Y POR QUE ESTA HOJA ADELGAZO (19-ago-2026) ───────────────
 *
 * Portada descargada con `?nc=`. Estructura servida: heroe `.sat-portada` con
 * tarjeta de confianza, `sat-banda-hechos`, y las secciones de rol del cuerpo.
 * Sin panel de dudas: `template-home.php` construia su heroe en linea y no
 * incluia `template-parts/portada.php`, que es lo unico que invocaba
 * `sataire_render_panel_dudas()`.
 *
 * CONCLUSION DE AQUELLA MEDICION: la portada no necesitaba composicion nueva.
 * Lo que si necesitaba era QUITAR de esta hoja lo que se habia quedado
 * obsoleto, porque global.css absorbio despues casi todo lo que aqui se
 * declaraba. Se retiraron seis grupos de reglas —el `padding-block` de seccion
 * que pisaba el clamp fluido de global.css, las copias literales de
 * `.sat-sintomas ul/li/strong`, `.sat-cobertura a`, la capa v1 del FAQ y el
 * relleno inerte de `.sat-alcance`—; el porque completo de cada retirada esta
 * en el historial de este archivo y no se repite aqui, porque ninguna de las
 * seis describe ya la pagina.
 *
 * ══════════════════════════════════════════════════════════════════════════
 * ── LO QUE CAMBIA HOY, Y POR QUE ESTA HOJA VUELVE A CRECER (20-ago-2026) ──
 * ══════════════════════════════════════════════════════════════════════════
 *
 * Peticion del propietario: que la portada reciba los mismos tratamientos que
 * ya tienen los silos —rotulo de categoria sobre cada `<h2>`, tarjeta de
 * averia con pictograma, precio y cobertura como par de tarjetas gemelas, y
 * `sat-garantia` como banda oscura de confianza—.
 *
 * ══ LA PREMISA QUE CAMBIA, Y QUE ESTABA ESCRITA AQUI ══
 * La cabecera anterior y el bloque §1 decian, con razon en su momento, que la
 * portada carga UNICAMENTE `global.js` y que por tanto «no puede esperarse a
 * que lo arregle el JavaScript». Desde hoy `page-templates/template-home.php`
 * esta en `sataire_silo_script_templates()` y la portada encola tambien
 * `assets/js/silo.js`. Esa frase deja de ser cierta, y con ella cambia el
 * reparto de trabajo de esta hoja: donde antes habia que emular con CSS lo que
 * el script no venia a hacer, ahora hay que ESTILIZAR lo que el script produce.
 *
 * ══ QUINTA COPIA DELIBERADA DE silo.css, Y POR QUE NO SE PROMUEVE ══
 * Todo lo que se anade abajo —el rotulo, el pictograma de averia, la banda
 * oscura, las tarjetas gemelas— existe ya en silo.css. No se encola aqui, y no
 * se encola porque TODAS sus reglas viven dentro de un `:is(.sat-silo-provincias,
 * .sat-silo-ciudades, .sat-silo-marcas)`: en una pagina con `sat-silo-core` en
 * el `<body>` no casarian ni un selector. Ampliar aquel `:is()` traeria de
 * propina el revelado con su estado inicial oculto y la banda de casos, y
 * ademas romperia el `prefers-reduced-motion` de las paginas publicadas, que
 * es el fallo que este tema ya ha pagado dos veces (ver la cabecera de
 * marcas.css y la nota de provincias.css). servicios.css hizo exactamente esto
 * mismo cuatro veces por el mismo motivo. Se copia lo que esta pagina usa, y
 * solo eso.
 *
 * ══ ANCLAJE ══
 * Todo va anclado a `.home` —la clase que WordPress pone en el cuerpo de la
 * portada y en ninguna otra pagina—. `home.css` la carga UNICAMENTE esta
 * plantilla, asi que el anclaje es redundante por partida doble; se escribe
 * igual para que quede en el propio selector, y no en un comentario, que este
 * archivo no legisla fuera de su pagina.
 */

/* ══════════════════════════════════════════════════════════════════════════
   1. sat-servicios — SEIS TARJETAS, CON DOS CAMINOS
   ══════════════════════════════════════════════════════════════════════════

   LA PORTADA TRAE SEIS `<h3>` HIJOS DIRECTOS en `sat-servicios`, cada uno con
   su parrafo detras. Esa es exactamente la condicion con la que `initTarjetas()`
   de assets/js/silo.js construye la rejilla: mueve cada par a un `.sat-tarjeta`
   dentro de un `.sat-tarjetas`. Desde hoy el script llega aqui, asi que ese es
   el camino normal y se estiliza abajo, en el punto 1.b.

   ══ POR QUE SE ACEPTA LA REJILLA EN VEZ DE IMPEDIRLA ══
   Se podia haber evitado —bastaba no encolar el script, o marcar los `<h3>`
   para que la funcion los ignorase—, pero eso habria dejado la portada sin
   rotulos y sin pictogramas de averia, que es justo lo que se ha pedido. Y la
   rejilla de tarjetas no es un peaje: es el MISMO componente con el que el
   resto del sitio presenta este bloque, con su enlace al silo de servicio
   dentro. Tener la portada resolviendolo de otra forma era una deuda, no una
   decision.

   ══ EL FLUJO MULTICOLUMNA SE QUEDA COMO CAMINO SIN JAVASCRIPT ══
   Y no es adorno defensivo: sin el, una portada sin JavaScript sirve seis
   encabezados y seis parrafos corridos, que es peor de lo que hay hoy. El
   multicolumna existia porque una tarjeta de servicio son DOS HERMANOS PLANOS
   —`<h3>` y su `<p>`—, no un elemento con los dos dentro, y en `display: grid`
   cada hermano cae en una celda distinta: el titulo se separaba de su texto.
   `break-after/before: avoid` los mantiene juntos sin envoltorio.

   LA GUARDA ES `:not(:has(> .sat-tarjetas))`, es decir, «mientras el script no
   haya construido su rejilla». Se pregunta por el RESULTADO y no por si hay
   JavaScript: es lo unico que el CSS puede comprobar de verdad, y cubre igual
   el caso de que el script falle a mitad. `:has()` toma la especificidad de su
   argumento, asi que el selector sube a (0,3,0) y no compite con nada. */

/* ── 1.a EL CAMINO SIN JAVASCRIPT ────────────────────────────────────────── */

.home .sat-servicios:not(:has(> .sat-tarjetas)) {
  display: block;
}

/* Por debajo de 48rem hay una sola columna y las tarjetas no existen: lo que
   separa un servicio del siguiente es un filete, como en cualquier lista de
   apartados. */
.home .sat-servicios:not(:has(> .sat-tarjetas)) h3 {
  margin-top: var(--sat-space-4);
  padding-top: var(--sat-space-4);
  border-top: 1px solid var(--sat-color-border);
}
.home .sat-servicios:not(:has(> .sat-tarjetas)) h3:first-of-type {
  border-top: 0;
  margin-top: var(--sat-space-3);
}

@media (min-width: 48rem) {
  .home .sat-servicios:not(:has(> .sat-tarjetas)) {
    columns: 2;
    column-gap: var(--sat-space-4);
  }
  /* `h2 + p` y no `p:first-of-type`: la portada no trae parrafo de entrada
     propio en todos los casos, asi que `:first-of-type` señalaba la
     descripcion del PRIMER servicio y la sacaba de su columna, separandola de
     su titulo. Con el selector de adyacencia solo se expande un parrafo que
     vaya de verdad pegado al h2; si no lo hay, ninguno. */
  .home .sat-servicios:not(:has(> .sat-tarjetas)) > h2,
  .home .sat-servicios:not(:has(> .sat-tarjetas)) > h2 + p {
    column-span: all;
  }
  .home .sat-servicios:not(:has(> .sat-tarjetas)) h3,
  .home .sat-servicios:not(:has(> .sat-tarjetas)) h3 + p {
    border-top: 0;
    margin-top: 0;
    padding-top: 0;
  }
  .home .sat-servicios:not(:has(> .sat-tarjetas)) h3 {
    background: var(--sat-color-bg-alt);
    border-radius: var(--sat-radius);
    padding: var(--sat-space-3) var(--sat-space-3) 0;
    break-after: avoid;
    break-inside: avoid;
  }
  .home .sat-servicios:not(:has(> .sat-tarjetas)) h3 + p {
    background: var(--sat-color-bg-alt);
    border-radius: 0 0 var(--sat-radius) var(--sat-radius);
    padding: 0 var(--sat-space-3) var(--sat-space-3);
    margin-bottom: var(--sat-space-3);
    break-before: avoid;
    break-inside: avoid;
  }
}

/* ── 1.b LA REJILLA DE TARJETAS, QUE ES EL CAMINO NORMAL ─────────────────
   Misma rejilla que servicios.css §14.2 —`auto-fit` en estrecho y dos columnas
   fijas en escritorio, porque con `auto-fit` y el contenedor ya ancho entraban
   tres o cuatro por fila y cada tarjeta quedaba demasiado estrecha para su
   parrafo—.

   LA TARJETA NO ES UNA REJILLA DE DOS COLUMNAS, y ahi si se separa de aquella
   copia: en `initTarjetas()` el pictograma SOLO se anade cuando la seccion es
   `.sat-sintomas` (`var conIcono = seccion.classList.contains('sat-sintomas')`),
   y en la portada `sat-sintomas` es una `<ul>` que esa funcion ni siquiera
   toca. O sea que en esta pagina `.sat-tarjeta` solo puede ser una tarjeta de
   SERVICIO y nunca lleva icono: una rejilla `auto minmax(0, 1fr)` dejaria la
   primera columna vacia en las seis. Se escribe el bloque simple, que es lo
   que este documento necesita. */

.home .sat-tarjetas {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
  gap: var(--sat-space-3);
  margin-top: var(--sat-space-4);
}
@media (min-width: 62rem) {
  .home .sat-tarjetas {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--sat-space-4);
  }
}

.home .sat-tarjeta {
  background: var(--sat-color-bg);
  border: 1px solid var(--sat-color-border);
  border-radius: var(--sat-radius);
  padding: var(--sat-space-4);
  transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}
.home .sat-tarjeta > h3 {
  margin-top: 0;
  color: var(--sat-color-brand);
}
.home .sat-tarjeta > :last-child {
  margin-bottom: 0;
}
.home .sat-tarjeta:hover,
.home .sat-tarjeta:focus-within {
  transform: translateY(-4px);
  border-color: var(--sat-color-brand-light);
  box-shadow: var(--sat-shadow-card);
}
/* El enlace del encabezado es el destino real de la tarjeta: se marca como tal
   sin convertirlo en boton. */
.home .sat-tarjeta a {
  font-weight: 600;
}

/* ══════════════════════════════════════════════════════════════════════════
   2. sat-negocios — LA CAJA TEÑIDA DEL CUERPO
   ══════════════════════════════════════════════════════════════════════════

   AQUI ESTABA TAMBIEN `sat-garantia`, Y SE VA (20-ago-2026). Los dos eran los
   bloques de confianza de la portada y compartian caja teñida. Desde hoy
   `sat-garantia` es la BANDA OSCURA del punto 6, que es un tratamiento
   incompatible con este: la caja teñida le pondria fondo alterno y radio por
   debajo del degradado, y su relleno simetrico pelearia con el relleno de
   banda. Se retira de este selector en vez de dejarla y neutralizarla luego —
   dos reglas que se anulan son dos sitios donde mirar.

   Queda `sat-negocios` sola, y sigue siendo correcto que tenga fondo teñido:
   saca el bloque del flujo de prosa, igual que global.css hace con
   `sat-alcance` — el otro bloque del mismo tipo en esta misma pagina, y por eso
   comparten relleno: una sola decision.

   EL SEGUNDO SELECTOR NO ES UN CAPRICHO DE ESPECIFICIDAD, y aqui esta la
   trampa que documenta global.css para `.sat-alcance` repetida tal cual.
   `padding` en una regla de una sola clase vale (0,1,0), y la base
   `.sat-cuerpo section[class^="sat-"]` vale (0,2,1): la base le gana el
   `padding-block` a la caja. Con el clamp fluido de global.css eso significaba,
   a 1905px, 92px arriba y abajo contra 24px a los lados — una caja casi cuatro
   veces mas alta de relleno que ancha, sin que nadie lo hubiera decidido.
   Repetir `.sat-cuerpo section[class^="sat-"]` y añadir `:is()` lleva el
   selector a (0,4,1) y devuelve el relleno simetrico.

   `border-bottom: 0` va EN ESE MISMO SELECTOR y no arriba, por identica razon
   de peso: el filete lo pone tambien la base (0,2,1), asi que un
   `.home .sat-negocios` (0,2,0) no se lo podria quitar. El filete se dibujaria
   SOBRE el borde inferior de la caja teñida, cortando sus esquinas
   redondeadas; lo que separa esta seccion de la siguiente es su propio fondo,
   no una linea.

   (En `sat-alcance` global.css declara ese `border-bottom: 0` con una sola
   clase y tampoco le ganaria a la base. Alli no se nota porque `sat-alcance` es
   la ULTIMA seccion y el filete ya se lo retira
   `…section[class^="sat-"]:last-of-type`. Aqui no hay esa red: esta caja va en
   mitad de la pagina.) */
.home .sat-negocios {
  background: var(--sat-color-bg-alt);
  border-radius: var(--sat-radius);
}
.home .sat-cuerpo section[class^="sat-"]:is(.sat-negocios) {
  padding: var(--sat-space-5);
  border-bottom: 0;
}

/* ══════════════════════════════════════════════════════════════════════════
   3. EL ROTULO DE CATEGORIA (20-ago-2026)
   ══════════════════════════════════════════════════════════════════════════

   La pildora en versales sobre el `<h2>` de cada bloque. El `<span>` lo inyecta
   `initRotulos()` de assets/js/silo.js a partir del mapa `ROTULOS`; el script lo
   encola esta pagina desde hoy.

   ══ QUE RECIBE CADA SECCION DE LA PORTADA, COMPROBADO UNA POR UNA ══
   La guarda de `initRotulos()` no imprime el rotulo si su texto ya esta
   contenido en el `<h2>` que decora, normalizando antes tildes, mayusculas y
   signos. Contrastado contra los H2 REALES servidos hoy con `?nc=`:

     sat-servicios   «¿Que necesitas?»                     -> «Que hacemos»          SI
     sat-sintomas    «¿Que le pasa a tu equipo?»            -> «Diagnostico»          SI
     sat-equipos     «¿Que equipo tienes instalado?»        -> «Tipos de equipo»      SI
     sat-negocios    «Para negocios e instalaciones…»       -> «Negocios»             NO, se autodescarta
     sat-precios     «Cuanto cuesta»                        -> «Precios orientativos» SI
     sat-cobertura   «Donde trabajamos»                     -> «Donde llegamos»       SI
     sat-garantia    «Doce años reparando climatizacion»    -> «Confianza»            SI
     sat-faq         «Preguntas frecuentes»                 -> «Preguntas frecuentes» NO, se autodescarta
     sat-alcance     «Que entra y que no»                   -> «Alcance del servicio» SI

   Los dos que se autodescartan lo hacen porque su rotulo ya esta dicho en el
   encabezado, que es exactamente para lo que existe la guarda. Ninguno de los
   siete que si salen dice nada que el bloque no sea: se ha leido el contenido
   de los siete antes de dar esto por bueno.

   `sat-banda-hechos` no esta en el mapa y no recibe rotulo, que es lo correcto:
   es un componente de plantilla, no un bloque de rol redactado.

   NO SE DECLARA AQUI EL TAMAÑO DEL TEXTO: se lo da `.sat-text-sm` de tokens.css,
   que el propio script añade al `<span>`. Es la unica forma de tener un rotulo
   pequeño sin abrir un segundo origen de la escala tipografica, que es lo que
   prohibe la regla verificable del Paso 6.

   NO SE COPIA `.sat-casos > .sat-rotulo { grid-column: 1 / -1 }`, que en las
   otras hojas evita que el rotulo se coma una columna de la rejilla de casos.
   La portada no emite `sat-casos`: una regla que no puede casar nada es lo que
   convierte una hoja en un cajon. */

.home .sat-rotulo {
  display: flex;
  align-items: center;
  gap: var(--sat-space-3);
  width: fit-content;
  margin-bottom: var(--sat-space-2);
  padding: 0;
  border-radius: 0;
  background: none;
  color: var(--sat-color-brand);
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.home .sat-rotulo::before {
  content: "";
  flex: 0 0 auto;
  width: 3.5rem;
  height: 0.1875rem;
  border-radius: var(--sat-radius);
  background: linear-gradient(
    to right,
    var(--sat-color-brand-dark) 0 45%,
    var(--sat-color-cta) 45% 100%
  );
}

/* ══════════════════════════════════════════════════════════════════════════
   4. sat-sintomas — TARJETA DE AVERIA CON PICTOGRAMA (20-ago-2026)
   ══════════════════════════════════════════════════════════════════════════

   ══ EL ENCARGO NOMBRABA servicios.css §14, Y ESE NO ES EL TRATAMIENTO QUE
      LE CORRESPONDE A ESTE MARCADO ══
   §14.2 estiliza `.sat-tarjetas` / `.sat-tarjeta`, es decir, la forma en la que
   los silos de equipo e informacional escriben este bloque: pares `<h3>` + `<p>`
   que `initTarjetas()` agrupa. La portada NO usa esa forma. Medido hoy contra
   el HTML servido, su `sat-sintomas` es un `<h2>`, dos parrafos y una `<ul>` de
   seis `<li>`, cada uno abierto por un `<strong>` enlazado. Sobre ese marcado
   `initTarjetas()` no encuentra un solo `<h3>` hijo directo y no hace nada.

   EL TRATAMIENTO CORRECTO ES EL DE servicios.css §6, que es el de esta MISMA
   forma de lista, y es el que se copia. La diferencia no es academica: aplicar
   §14.2 aqui habria escrito una rejilla de tarjetas que ningun elemento de esta
   pagina lleva, y el bloque se habria quedado exactamente igual que antes.

   ══ LO QUE YA ESTABA Y NO SE TOCA ══
   La rejilla y la caja de cada averia vienen de global.css (`.sat-sintomas ul`
   con `auto-fit` de 16rem, `.sat-sintomas li` con fondo alterno, radio y
   relleno, `.sat-sintomas li strong` en azul de marca), y esta pagina ya las
   recibia. Lo que le faltaba era el PICTOGRAMA —que lo pone `initSintomasLista()`
   de silo.js, disponible aqui desde hoy— y la respuesta al puntero.

   POR QUE MERECE LA PENA EN ESTE BLOQUE Y NO EN OTROS: es la unica seccion de
   la pagina que se lee EN DIAGONAL —quien llega buscando su averia barre la
   rejilla hasta reconocerla— y seis bloques de texto identico no ofrecen ningun
   punto de anclaje para ese barrido.

   ══ LO QUE NO SE COPIA DE §6, Y POR QUE ══
   Aquella seccion devuelve a lista normal la SEGUNDA `<ul>` del bloque —las
   tres comprobaciones caseras con las que reparacion y urgencias cierran su
   `sat-sintomas`—. La portada tiene UNA sola `<ul>` en esta seccion, contada
   sobre el HTML servido. `:first-of-type` se conserva igual, porque es la misma
   condicion que aplica `initSintomasLista()` y las dos tienen que seguir
   diciendo lo mismo si mañana el corpus añade esa segunda lista. */

.home .sat-sintomas > ul:first-of-type > li {
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.home .sat-sintomas > ul:first-of-type > li:hover,
.home .sat-sintomas > ul:first-of-type > li:focus-within {
  transform: translateY(-3px);
  box-shadow: var(--sat-shadow-card);
}

/* La clase la añade `initSintomasLista()` DESPUES de haber creado las dos
   celdas. Sin JavaScript el `<li>` conserva su flujo de bloque normal y se lee
   igual de bien: el icono es una mejora, no la estructura. */
.home .sat-sintoma-item--mejorado {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: var(--sat-space-3);
}
.home .sat-sintoma-texto {
  min-width: 0;
}

/* El cuadrado redondeado con el trazo en celeste sobre un velo del mismo
   celeste — el mismo recurso que el icono de paso y que la tarjeta de averia de
   provincia. Medidas fijas y `flex: 0 0 auto` porque la celda de la rejilla es
   de ancho automatico: sin ancho propio el fondo se convertiria en una banda.
   La translucidez se hace con `color-mix()` sobre el token, nunca con un
   literal de color propio. */
.home .sat-sintoma-icono {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: var(--sat-radius);
  background: color-mix(in srgb, var(--sat-color-brand-light) 12%, transparent);
  color: var(--sat-color-brand-light);
  transition: background-color 0.25s ease;
}
.home .sat-sintoma-icono svg {
  display: block;
  width: 1.5rem;
  height: 1.5rem;
}
/* El velo se densifica al pasar el puntero por la TARJETA, no por el icono: el
   objetivo de la interaccion es la averia entera, no el pictograma. */
.home .sat-sintomas > ul:first-of-type > li:hover .sat-sintoma-icono {
  background: color-mix(in srgb, var(--sat-color-brand-light) 22%, transparent);
}

/* ══════════════════════════════════════════════════════════════════════════
   5. sat-contexto-operativo — PRECIO Y COBERTURA, DOS TARJETAS GEMELAS
   ══════════════════════════════════════════════════════════════════════════

   El marcado lo compone `sataire_componer_contexto_operativo()`, la MISMA
   funcion que ya llaman `template-provincias.php` y `template-servicios.php`:
   el PHP no se duplica. El CSS si, y es la decision de siempre en este tema —
   ver la cabecera de este archivo.

   ══ QUE PAREJA SE COMPONE AQUI, Y POR QUE NO ES LA DE SIEMPRE ══
   En provincia y en servicio la pareja es `sat-temporada` + `sat-precios`. La
   portada NO emite `sat-temporada`: sus dos bloques de contexto son el precio y
   la cobertura, que ademas llegan seguidos en el documento. Por eso la llamada
   de `template-home.php` pasa sus propios roles; la clase del envoltorio es la
   misma porque el componente es el mismo.

   POR ESO TAMPOCO SE COPIA `.sat-contexto-operativo .sat-temporada strong`: en
   esta pagina no hay ninguna `sat-temporada` que pintar.

   ══ ESPECIFICIDAD, QUE ES LA MITAD DE ESTE BLOQUE ══
   La tarjeta tiene que ganarle a `.sat-cuerpo section[class^="sat-"]` de
   global.css (0,2,1), que le pone a las dos secciones el relleno de seccion y
   el filete inferior. Con `.home` + `.sat-cuerpo` + `.sat-contexto-operativo` +
   `section[class^="sat-"]` el selector vale (0,4,1) — la misma forma exacta que
   usa servicios.css §11, que ya tuvo que ganarle ademas a otras dos. Se
   conserva la forma en vez de bajarla al minimo que hoy bastaria: el dia que
   alguien añada una regla a global.css para uno de estos dos roles, esta seguira
   ganando.

   NO SE COPIA `.sat-precios > p:last-of-type`, la regla que en provincia baja el
   descargo legal al pie de la tarjeta en gris y con un filete encima. Alli es
   correcta porque el descargo SIEMPRE es el ultimo parrafo; en la portada NO lo
   es: sus cuatro parrafos de `sat-precios` terminan en un enlace a la pagina de
   precios, y el descargo es el tercero. La regla habria teñido de gris y
   rematado con letra pequeña el enlace de salida del bloque. Es el mismo motivo
   por el que servicios.css tampoco la copio.

   Este bloque no declara ni `:hover` ni `transition`, asi que NO necesita
   consulta `prefers-reduced-motion` propia. */

.home .sat-contexto-operativo {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sat-space-4);
  margin-block: var(--sat-space-seccion);
}

/* Una sola tarjeta no se estira a doble ancho como si faltara visualmente su
   pareja. Hoy la portada emite los dos roles y esta rama no se toma; existe
   para el dia que el corpus deje de emitir uno. */
.home .sat-contexto-operativo--unico {
  grid-template-columns: minmax(0, 1fr);
}
.home .sat-contexto-operativo--unico > section {
  width: min(100%, var(--sat-max-width-narrow));
  justify-self: center;
}

/* La tarjeta es SOMBRA, no borde: evita el doble filete cuando las dos quedan
   pegadas. */
.home .sat-cuerpo .sat-contexto-operativo > section[class^="sat-"] {
  display: flex;
  flex-direction: column;
  min-width: 0;
  margin: 0;
  padding: var(--sat-space-5) var(--sat-space-4);
  border: 0;
  border-bottom: 0;
  border-radius: var(--sat-radius);
  background: var(--sat-color-bg);
  box-shadow: var(--sat-shadow-card);
}

/* El rotulo es una pildora, no una banda: como hijo de un contenedor flex en
   columna se estiraria a todo el ancho de la tarjeta. */
.home .sat-contexto-operativo > section > .sat-rotulo {
  align-self: start;
}

.home .sat-contexto-operativo h2 {
  margin-top: 0;
}
.home .sat-contexto-operativo > section > :last-child {
  margin-bottom: 0;
}

.home .sat-contexto-operativo .sat-precios strong {
  color: var(--sat-color-brand);
}

@media (max-width: 48rem) {
  .home .sat-contexto-operativo {
    grid-template-columns: 1fr;
    gap: var(--sat-space-3);
  }
  .home .sat-cuerpo .sat-contexto-operativo > section[class^="sat-"] {
    padding: var(--sat-space-4) var(--sat-space-3);
  }
}

/* ══════════════════════════════════════════════════════════════════════════
   6. sat-garantia — BANDA OSCURA DE CONFIANZA (20-ago-2026)
   ══════════════════════════════════════════════════════════════════════════

   Es el unico bloque de esta pagina sobre fondo de marca, y eso es justo lo que
   hace: marcar donde estan los compromisos por escrito. Los tokens de texto se
   invierten explicitamente porque tokens.css fija el color de los encabezados y
   del parrafo a nivel global.

   ══ SANGRADO Y FONDO VIAJAN JUNTOS, SIEMPRE ══
   Sangrar una seccion sin fondo no dibuja nada: solo estira de borde a borde el
   filete divisorio de `.sat-cuerpo section[class^="sat-"]`. Por eso las dos
   declaraciones estan aqui y no repartidas.

   La formula del relleno lateral reproduce la columna `content` de la rejilla de
   `.sat-cuerpo` leida desde dentro de una banda que sangra a ancho de ventana.
   Si cambia la rejilla, cambian todas las bandas del tema a la vez o dejan de
   alinearse con el resto de secciones.

   ══ MEDIDO ANTES DE COPIARLO ══
   Las dos mecanicas —el margen negativo de aqui y el `grid-column: full` +
   `subgrid` de abajo— conviven en provincias.css y en servicios.css, y a
   primera vista parecen sumar dos sangrados. No lo hacen. Comprobado el
   20-ago-2026 con Chrome sin interfaz a 1440px sobre una provincia publicada:
   la banda mide 1440px de ancho empezando en x=-7, y su `<h2>` cae en x=64 —
   exactamente el mismo x que el `<h2>` de `sat-faq`, que es una seccion normal
   en la columna de contenido. El texto queda alineado; la banda, a ancho de
   ventana. Por eso se copian las dos y no una.

   Funciona porque `body[class*="sat-silo-"] #page.grid-container` lleva
   `overflow-x: clip` en global.css — y la portada entra en ese selector: su
   `<body>` lleva `sat-silo-core`. Sin eso, 100vw abriria scroll lateral.

   ESPECIFICIDAD. Se incluye el tipo `section` porque la regla base que hay que
   ganar, `.sat-cuerpo section[class^="sat-"]`, ya vale (0,2,1).

   ══ LO QUE NO SE COPIA ══
   El bloque `> ul` de servicios.css §8 —la rejilla de compromisos con su icono,
   que alli sirve a una sola pagina—. El `sat-garantia` de la portada son un
   `<h2>` y tres parrafos, sin una sola lista: `initGarantias()` de silo.js
   tampoco encuentra nada. Se copia lo que puede casar algo, y solo eso.

   Este bloque no declara ni `:hover` ni `transition`: una garantia no lleva a
   ninguna parte, asi que el movimiento invitaria a pulsar algo que no se puede
   pulsar. Y como no se declara ningun movimiento, no necesita consulta
   `prefers-reduced-motion` propia. */

.home .sat-cuerpo section.sat-garantia {
  margin-inline: calc(50% - 50vw);
  padding-inline: max(
    var(--sat-gutter),
    calc(50vw - var(--sat-max-width-content) / 2)
  );
  padding-block: var(--sat-space-seccion-banda);
  border-bottom: 0;
}

.home .sat-garantia {
  grid-column: full;
  display: grid;
  grid-template-columns: subgrid;
  background:
    linear-gradient(
      150deg,
      var(--sat-color-brand-dark) 0%,
      color-mix(in srgb, var(--sat-color-brand) 70%, var(--sat-color-brand-dark)) 100%
    );
}
.home .sat-garantia > * {
  grid-column: content;
}
.home .sat-garantia h2,
.home .sat-garantia h3 {
  color: var(--sat-color-bg);
}
.home .sat-garantia p {
  color: color-mix(in srgb, var(--sat-color-bg) 82%, transparent);
  max-width: var(--sat-max-width-narrow);
}
/* El dato destacado se resuelve con color y subrayado, no con una pastilla de
   fondo: los cuatro `<strong>` de esta seccion caen dentro de la frase —«…con
   garantia por escrito de 3 meses; las instalaciones, con…»— y el relleno
   lateral de la pastilla abria un hueco antes del signo de puntuacion. */
.home .sat-garantia strong {
  color: var(--sat-color-bg);
  box-shadow: inset 0 -0.35em 0 color-mix(in srgb, var(--sat-color-brand-light) 45%, transparent);
}
/* Los tres enlaces de esta seccion —carne de gases fluorados y condiciones del
   servicio— en celeste: el azul de marca sobre este fondo no se distinguiria
   del texto. */
.home .sat-garantia a {
  color: var(--sat-color-brand-light);
}

/* ── El rotulo de seccion, invertido sobre la banda ──────────────────────
   OBLIGATORIO, no un remate. El punto 3 le da rotulo a `sat-garantia`
   —«Confianza», que la guarda de `initRotulos()` no suprime sobre el H2 «Doce
   años reparando climatizacion»— y ese rotulo es azul de marca: sobre este
   fondo, azul oscuro, saldria azul sobre azul. Es el mismo par de reglas que
   provincias.css, marcas.css y servicios.css tienen por la misma razon, y su
   ausencia es el sintoma de haber separado la banda de su rotulo. */
.home .sat-garantia > .sat-rotulo {
  background: none;
  color: var(--sat-color-bg);
}
/* Sobre fondo de marca el tramo azul del filete desapareceria: se cambia por el
   fondo claro, y el naranja se mantiene porque ahi si contrasta. */
.home .sat-garantia > .sat-rotulo::before {
  background: linear-gradient(
    to right,
    var(--sat-color-bg) 0 45%,
    var(--sat-color-cta) 45% 100%
  );
}

/* ══════════════════════════════════════════════════════════════════════════
   7. MOVIMIENTO REDUCIDO
   ══════════════════════════════════════════════════════════════════════════

   Quien pide que el sistema no se mueva no deberia tener que verlo moverse. Se
   enumeran los tres selectores con `transition` de esta hoja —la tarjeta de
   servicio del punto 1.b, la tarjeta de averia del punto 4 y su pictograma— y
   se neutralizan los dos desplazamientos que los `:hover` disparan.

   VA EN ESTE ARCHIVO Y NO EN OTRO, y eso es lo importante: un bloque de
   `prefers-reduced-motion` tiene que vivir en la MISMA hoja que los `:hover`
   que neutraliza. Este tema ya pago dos veces por separarlos —ver la nota de
   provincias.css y la cabecera de marcas.css—, y esta hoja se encola la ultima,
   asi que aqui no hay nada que pueda pisarlo despues. */

@media (prefers-reduced-motion: reduce) {
  .home .sat-tarjeta,
  .home .sat-sintomas > ul:first-of-type > li,
  .home .sat-sintoma-icono {
    transition: none;
  }
  .home .sat-tarjeta:hover,
  .home .sat-tarjeta:focus-within,
  .home .sat-sintomas > ul:first-of-type > li:hover,
  .home .sat-sintomas > ul:first-of-type > li:focus-within {
    transform: none;
  }
}


/* ═══════════════════════════════════════════════════════════════════════
   LA PIEZA MULTIMARCA DEL HERO (20-ago-2026)

   Copia deliberada de `servicios.css` §16, que esta hoja no puede reutilizar
   porque `servicios.css` no se encola en la portada. Se copia el ASPECTO, no
   el mecanismo, y por eso la clase de silo cambia.

   Neutraliza lo que `global.css` escribe para la imagen DESTACADA: márgenes
   negativos que sangran hasta el borde, `align-self: stretch`, `overflow:
   hidden` y un `<img>` POSICIONADO EN ABSOLUTO con `object-fit: cover`. Eso
   está bien para una foto de fondo y es lo contrario de lo que necesita una
   pieza gráfica que se lee: sacar la imagen del flujo deja la caja en altura
   cero y la recorta entera —medido el 20-ago-2026 en servicios: contenedor
   515x0 con la imagen cargada dentro—.
   ═══════════════════════════════════════════════════════════════════════ */

.home .sat-portada-media--promo {
  width: 100%;
  margin: 0;
  align-self: center;
  justify-self: center;
  height: auto;
  min-height: 0;
  overflow: visible;
}

.home .sat-portada-media--promo img {
  position: static;
  inset: auto;
  width: 100%;
  height: auto;
  max-height: none;
  object-fit: fill;
  border-radius: 0;
}

@media (max-width: 61.99rem) {
  .home .sat-portada-media--promo {
    max-width: var(--sat-max-width-narrow);
    margin-top: var(--sat-space-4);
  }
}
