/* ==========================================================================
   VEGAS DEL VERDE — inicio.css  ·  sección #inicio  ·  v5 «orgánica»

   QUÉ CAMBIA RESPECTO A v4 Y POR QUÉ
   v4 arregló la ESCALA (portada de ventana entera + plano gigante) y con eso
   la sección dejó de tener el compás de un listado. Lo que quedaba vivo del
   problema —«se ve muy genérica»— era la GEOMETRÍA: todo rectángulo a
   escuadra, corte recto entre la fotografía y el papel, seis miniaturas
   idénticas en fila y ni una curva en una página que vende un bosque.

   v5 mete el lenguaje ORGÁNICO, sin inventar un solo valor:
     · ORLA CURVA ASIMÉTRICA al pie de la portada, pintada del color del papel.
       La foto no termina: se disuelve. Y la curva es una diagonal (fina a la
       izquierda, gruesa a la derecha), no la ola simétrica de plantilla.
     · PARALAJE del fondo con `animation-timeline: view()`. Sin una línea de
       JS nueva y sin tocar js/app.js: es CSS puro, va dentro de @supports y
       dentro de `prefers-reduced-motion: no-preference`, así que en un
       navegador viejo o con el movimiento reducido simplemente no existe.
       Sólo se mueve la FOTOGRAFÍA DE FONDO; el texto nunca.
     · TITULAR en caja alta y baja. Las mayúsculas de v4 incumplían
       CONTRATO-V2 §3 («prohibido uppercase por encima de 24 px salvo el
       logotipo») y son además la razón de que la portada se leyera como
       cualquier plantilla de viajes. En su lugar, dos renglones de escala
       distinta con el segundo sangrado y rematado por una hoja.
     · RADIOS DE HOJA, variados y asimétricos, tomados de la única forma
       orgánica que ya tenía el sistema: el remate de .lista-hojas en base.css
       (`border-radius: 0 var(--radio-full) 0 var(--radio-full)`). Nunca los
       cuatro radios iguales: cuatro esquinas iguales es lo que hace que una
       tarjeta se vea de plantilla.
     · SOMBRAS suaves y bajas (--sombra-md / --sombra-lg), que es lo que hace
       una copa de árbol sobre el suelo. v3 las había retirado del sistema
       entero; v5 las devuelve sólo donde hay una pieza que de verdad flota
       sobre el papel.
     · LA TIRA DE AVES deja de ser una fila de seis cuadrados iguales.

   Lo que NO cambia: los hechos, el reparto de la tabla de propiedad, las
   coordenadas de las cuatro anclas, los encuadres de cada fotografía y la
   prohibición de valores literales.
   --------------------------------------------------------------------------
   LO QUE YA VENÍA DE v4 «abrir de verdad», y sigue vigente:
   Depende de tokens.css + base.css (cargarlos antes). Ningún valor literal de
   color, de cuerpo de letra, de radio, de sombra ni de duración: todo sale de
   los tokens. Este archivo NO toca tokens.css, base.css ni shell.css.

   QUÉ CAMBIA RESPECTO A v3
   v3 metió #inicio dentro de la retícula común: .contenedor, encabezado,
   figura, tira. Leída en fila con las ocho secciones siguientes, la portada
   tenía exactamente el mismo compás que un listado de espacios, y eso —no la
   falta de efectos— es lo que hacía que la página se leyera como generada.
   v4 rompe ese compás con dos escalas que ninguna otra sección usa:

     1. PORTADA A SANGRE, alto de ventana, foto a pantalla completa y el
        titular encima a --fs-hero (hasta 84 px en 1440). Es el único titular
        de la página que sube de --fs-h2.
     2. PLANO-ÍNDICE A SANGRE, de borde a borde de la ventana y a proporción
        natural en escritorio, para que las cuatro anclas sigan cayendo
        exactamente sobre lo que señalan.

   POR QUÉ NADA DE ESTO USA 100vw
   Los dos bloques a sangre son hijos directos del <section>, así que su 100 %
   ya es el ancho del <body>, que descuenta la barra de scroll. Con 100vw
   habría 15 px de desbordamiento horizontal real en todo escritorio con
   barra visible. El mismo motivo explica el `margin-inline` con max() que
   alinea el pie del plano y la tira de aves con el contenedor: es aritmética
   de porcentajes, no de ventana.

   ESTRUCTURA
     .inicio                        la sección (crema, la de serie)
       .inicio__portada             a sangre · alto de ventana
         .inicio__portada-foto      la fotografía, object-fit: cover (+ paralaje)
         .inicio__portada-velo      degradado de legibilidad
         .inicio__portada-orla      v5 · la curva de papel que remata el pie
         .inicio__portada-interior  .contenedor con el encabezado
           .inicio__titulo-linea    v5 · los dos renglones del titular
       .inicio__plano               <figure> con el render aéreo
         .inicio__plano-lienzo      coordenadas de las anclas · sangra a la dcha.
           .inicio__plano-marco     proporción + recorte + radios de hoja
           .inicio__anclas          Vivero · Sendero · Espacios · Cómo llegar
         .inicio__plano-pie         <figcaption>, alineado al contenedor
       .inicio__aves                seis miniaturas de atmósfera, desiguales

   POR QUÉ LAS ANCLAS NO SE SUPERPONEN HASTA 64em
   Sobre el plano, cada ancla es una pastilla de ~2,1 rem de alto colocada en
   coordenadas porcentuales. En un teléfono el render (2000 × 1013) baja a unos
   190 px de alto: las cuatro pastillas se pisarían entre ellas y quedarían muy
   por debajo del objetivo táctil de 44 px que pide WCAG 2.5.5. Por eso, por
   debajo de 64em, las anclas SALEN del plano y se convierten en una rejilla de
   dos columnas debajo de la foto, con altura de botón. El plano sigue siendo el
   índice; lo que cambia es dónde se toca. El corte en 64em es el mismo que usa
   base.css para dar tamaño táctil, así que no queda ninguna franja de anchos en
   la que las anclas estén superpuestas y sean pequeñas a la vez.
   ========================================================================== */

/* La cabecera es fija (shell.css): la portada se aparta ella misma justo lo
   que mide la barra, ni un píxel más. El --esp-xl que llevaba de más en v3
   dejaba una franja de crema encima de la foto que le quitaba el efecto de
   pantalla completa. Y su scroll-margin vuelve a cero, porque #inicio ES el
   principio de la página: con el margen de .seccion, volver al inicio dejaba
   un hueco. */
.inicio {
  padding-top: var(--alto-header);
  padding-bottom: var(--esp-seccion);
  scroll-margin-top: 0;
  /* v5 — TEXTURA, NO COLOR. Dos manchas radiales muy abiertas y casi
     invisibles (7 % y 5 % de alfa) que rompen el plano liso del papel debajo
     del plano-índice y de la tira de aves. Se declaran como `background-image`
     y no como pseudoelemento a propósito: un fondo pinta siempre por detrás
     del contenido, así que no hace falta pelearse con el z-index ni arriesgar
     que la mancha se coma un texto. Sin `background-color`: el papel sigue
     siendo el del <body>, y si mañana cambia, esto cambia con él. */
  background-image:
    radial-gradient(60% 45% at 12% 78%, rgb(var(--verde-oliva-rgb) / 0.07), transparent 70%),
    radial-gradient(45% 40% at 92% 46%, rgb(var(--amarillo-rgb) / 0.05), transparent 72%);
}

/* ==========================================================================
   1. PORTADA A SANGRE
   ========================================================================== */
/* El alto: la ventana entera menos la cabecera. Va como `min-height` y no
   como `height` para que, con la tipografía del sistema agrandada o en un
   teléfono muy corto, el bloque crezca en lugar de recortar el titular.
   La primera declaración es el respaldo para navegadores sin `svh`: si la
   segunda no se entiende, se descarta entera y queda un alto razonable. */
.inicio__portada {
  /* Alto de la orla curva del pie. En clamp con rem —permitido para layout—
     porque es una medida de composición, no un cuerpo de letra ni un radio.
     De aquí cuelgan dos cosas: el alto del <svg> y el relleno inferior del
     texto, que tiene que despejarla. Un solo número, dos consumidores. */
  --alto-orla: clamp(2.25rem, 5vw, 5.5rem);

  position: relative;
  display: flex;
  align-items: flex-end;
  min-height: 30rem;
  min-height: clamp(28rem, calc(100svh - var(--alto-header)), 52rem);
  overflow: hidden;
  /* Color de espera mientras baja la fotografía: el texto en crema ya es
     legible sobre él, así que no hay ni un fotograma de texto invisible. */
  background-color: var(--color-fondo-hondo);
  color: var(--color-texto-inverso);
}

/* Es un <img> y no un background-image: así se puede priorizar como LCP, se
   puede describir y el navegador elige la decodificación. A esquina viva y sin
   sombra como todo lo que contiene una imagen en este sistema.
   El encuadre se ancla algo por debajo del centro: en el archivo, la franja
   interesante —copas, tronco y prado— vive entre el 40 % y el 65 % del alto;
   con el centro geométrico la portada apaisada se llenaba de cielo. */
.inicio__portada-foto {
  position: absolute;
  inset: 0;
  z-index: var(--z-fondo);
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 52%;
  border-radius: 0;
  box-shadow: none;
}

/* ---- PARALAJE DEL FONDO --------------------------------------------------
   Regla del sistema: el paralaje va SÓLO en fondos, nunca en texto de
   lectura. Aquí se mueve la fotografía dentro de su propio recorte —el
   `overflow: hidden` de .inicio__portada— y el titular se queda absolutamente
   quieto, que es lo que permite leerlo mientras la imagen se desplaza.

   POR QUÉ NO HAY JS. `animation-timeline: view()` ata el progreso de la
   animación al paso del elemento por la ventana: lo resuelve el compositor,
   no un listener de scroll. Nada que añadir a js/app.js —que además no es de
   esta sección— y ni un fotograma robado al hilo principal.

   LAS TRES GUARDAS, por orden:
     1. `prefers-reduced-motion: no-preference` — quien pide menos movimiento
        no recibe ninguno. La animación no se declara siquiera.
     2. `@supports (animation-timeline: view())` — donde no exista, la foto se
        queda quieta y centrada. No hay respaldo con JS ni falta.
     3. El recorrido total es del 10 % del alto de la imagen (de -5 % a +5 %),
        dentro de la horquilla de 5–15 % que admite el sistema, y el
        `scale(1.1)` está para que ese 10 % nunca descubra el borde.
   ------------------------------------------------------------------------ */
@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    /* En longhand y con `animation-duration: auto` ESCRITO, no heredado del
       atajo: en una línea de tiempo de progreso —la de scroll— `auto` quiere
       decir «el recorrido entero del rango», y es lo único que hace que la
       animación avance con la rueda en vez de resolverse de golpe. El atajo
       `animation:` deja la duración en su valor inicial y ese valor cambió de
       `0s` a `auto` entre dos versiones de la especificación: escribirlo evita
       depender de cuál de las dos implementa el navegador. */
    .inicio__portada-foto {
      animation-name: inicio-paralaje;
      animation-duration: auto;
      animation-timing-function: linear;
      animation-fill-mode: both;
      animation-timeline: view();
      animation-range: entry 0% exit 100%;
    }
  }
}

@keyframes inicio-paralaje {
  from {
    transform: scale(1.1) translate3d(0, -5%, 0);
  }

  to {
    transform: scale(1.1) translate3d(0, 5%, 0);
  }
}

/* ---- EL AIRE DEL BOSQUE (canvas de partículas) ---------------------------
   El lienzo lo crea js/particulas-hero.js y lo añade al FINAL de
   .inicio__portada; aquí sólo se fija su sitio en la pila de capas:

     foto (z-fondo, primera) → LIENZO (z-fondo, último: gana por orden de
     documento) → velo y orla (z-base) → texto (z-elevado)

   Es decir: las partículas vuelan ENCIMA de la fotografía y DEBAJO del velo
   de legibilidad. No es un accidente — hacia el pie, donde el velo se cierra
   para proteger el titular, el aire se apaga con él, así que el contrato de
   contraste del velo (medido arriba) queda intacto sin sumar ni una regla.

   width/height al 100 % y no heredados: base.css le pone a todo canvas
   `height: auto`, que aquí lo colapsaría al alto de su atributo.

   No lleva media query de movimiento reducido a propósito: con
   prefers-reduced-motion el módulo NI SE MONTA (lo comprueba el <script> del
   fragmento antes de importar), así que este selector no encuentra nada que
   apagar. Sin JS, tampoco: la regla queda inerte.                          */
.inicio__particulas {
  position: absolute;
  inset: 0;
  z-index: var(--z-fondo);
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

/* ---- LA ORLA ORGÁNICA ----------------------------------------------------
   Es el papel comiéndose la fotografía, no una forma encima de ella: por eso
   se pinta con `currentColor` y el color es --color-fondo, el mismo de la
   página. Si algún día la sección cambiara de fondo, basta cambiar aquí el
   `color` y la curva sigue encajando sola.

   VA DEBAJO DEL TEXTO (--z-base, el mismo que el velo, pero después en el
   documento) y el interior sube a --z-elevado, así que el titular nunca cae
   sobre la parte crema: no hay ni un caso en el que el texto en negativo
   quede sobre el papel claro.

   El alto sale de --alto-orla y se declara aquí porque base.css da a todo svg
   `height: auto`, que con preserveAspectRatio="none" dejaría la curva a la
   proporción del viewBox (12:1) y en un móvil se comería media portada.    */
.inicio__portada-orla {
  position: absolute;
  left: 0;
  right: 0;
  /* Medio punto porcentual de solape hacia abajo. Con el alto de la orla en
     clamp, el borde inferior cae casi siempre en una fracción de píxel y ahí
     el navegador dibuja una costura de un píxel de fotografía entre la curva
     y el papel. Bajarla un pelo la esconde; lo que se recorta por debajo es
     relleno macizo, así que no se pierde nada de la forma. En % —no en px—
     para no meter un literal en la hoja. */
  bottom: -0.5%;
  z-index: var(--z-base);
  width: 100%;
  height: var(--alto-orla);
  color: var(--color-fondo);
  pointer-events: none;
}

/* VELO DE LEGIBILIDAD, medido y no «a ojo».
   Peor caso posible: que detrás del texto caiga el cielo blanco del archivo.
   Con 0.74 de verde bosque hondo encima, ese blanco baja a un gris verdoso
   que da 5,9:1 contra la crema del texto; con 0.66, 4,9:1. Los dos pasan el
   4,5:1 de AA para texto pequeño, que es el que manda porque de este bloque
   cuelga el .eyebrow a 12,5 px. Arriba el velo se abre hasta 0.30 para que la
   fotografía siga siendo una fotografía: ahí no hay texto que proteger. */
.inicio__portada-velo {
  position: absolute;
  inset: 0;
  z-index: var(--z-base);
/* v5 · LOS TRAMOS DE ABAJO SUBEN UN PUNTO, y hay una razón concreta: el
   relleno inferior del texto creció lo que mide la orla (hasta 88 px en
   escritorio), así que el bloque entero se levantó y la entradilla —que es
   texto PEQUEÑO en crema al 78 %, el par más ajustado de la portada— ya no cae
   donde el velo estaba más denso. Con los valores de v4 el peor caso teórico
   (cielo blanco del archivo justo detrás) se quedaba en 4,69:1: pasa, pero sin
   margen. Con 0.92 / 0.86 sube a 5,9:1. Arriba el velo sigue abriéndose hasta
   0.28 para que la fotografía siga siendo una fotografía: ahí no hay texto que
   proteger. */
/* v6 · SE AÑADE UNA SEGUNDA CAPA EN DIAGONAL, Y NO TOCA NI UN VALOR DE LA
   PRIMERA. El velo vertical de v5 es un lavado parejo: la fotografía queda
   igual de apagada en la esquina donde no hay nada que proteger que detrás del
   titular. El resultado medido en pantalla es una plancha oscura con una foto
   dentro, no una fotografía.
   Esta capa SÓLO SUMA OSCURIDAD, y sólo hacia la esquina inferior IZQUIERDA,
   que es exactamente donde vive el bloque de texto. Consecuencias:
     · el contraste del texto no puede empeorar —oscurecer un fondo por debajo
       de un texto crema únicamente lo sube—, así que los 5,9:1 medidos en v5
       siguen siendo el SUELO y no hay que volver a medir nada;
     · la mitad derecha se queda como estaba y, por comparación, se lee más
       clara: ahí es donde vuelven a verse las copas, y donde el aire de
       partículas tiene por fin un fondo sobre el que distinguirse.
   El eje va `to top right`: el color se apoya en la esquina de abajo a la
   izquierda y se ha ido del todo antes de la mitad del recorrido, así que ni
   asoma por la esquina superior derecha, que es la más abierta de la foto.
   Va la PRIMERA de la lista —es decir, encima— sobre el lavado vertical.   */
  background-image:
    linear-gradient(
      to top right,
      rgb(var(--verde-bosque-hondo-rgb) / 0.34) 0%,
      rgb(var(--verde-bosque-hondo-rgb) / 0.1) 34%,
      transparent 56%
    ),
    linear-gradient(
      to top,
      rgb(var(--verde-bosque-hondo-rgb) / 0.92) 0%,
      rgb(var(--verde-bosque-hondo-rgb) / 0.86) 42%,
      rgb(var(--verde-bosque-hondo-rgb) / 0.68) 72%,
      rgb(var(--verde-bosque-hondo-rgb) / 0.28) 100%
    );
}

.inicio__portada-interior {
  position: relative;
  z-index: var(--z-elevado);
  width: 100%;
  /* El relleno de abajo despeja la orla ENTERA, no sólo la parte fina que le
     cae encima al texto: si el visitante agranda la letra del sistema, el
     bloque crece hacia abajo y sin este colchón la última línea se metería en
     el papel claro con el color en negativo. Es la única defensa que hay
     contra ese caso, y cuesta un `calc`. */
  padding-block: var(--esp-2xl) calc(var(--esp-xl) + var(--alto-orla));
}

/* En un teléfono corto (320 × 568) el titular ocupa cinco líneas y el bloque
   pasa del alto de la ventana: ahí el aire vale menos que ver el botón, así
   que el relleno vertical baja un paso. No se toca el cuerpo del titular: la
   escala fluida ya lo bajó a 2,8 rem, y por debajo de eso el titular deja de
   ser una portada. */
@media (max-width: 47.99em) {
  .inicio__portada-interior {
    padding-block: var(--esp-xl) calc(var(--esp-lg) + var(--alto-orla));
  }
}

/* El aire de debajo lo pone el padding del interior.

   v6 · EL RITMO DEJA DE SER PAREJO. `.seccion-encabezado` reparte un `gap`
   único entre sus hijos, y con un solo número los cuatro elementos —rótulo,
   titular, entradilla y botones— quedan a la misma distancia: medido en la
   página real eran 16 · 16 · 24 px. Cuatro cosas equidistantes se leen como
   una lista, no como una composición, y en la primera pantalla del sitio eso
   es lo que la hacía parecer una plantilla por mucho que el titular fuera
   bueno.
   El reparto correcto no es igual: el rótulo y el titular son UNA unidad y
   van pegados; la entradilla es otra voz y pide respirar; el botón es la
   consecuencia y pide el salto más grande, que además es lo que lo separa
   como objetivo táctil. De ahí --esp-sm · --esp-md · --esp-lg, tres pasos
   consecutivos de la escala, sin un solo número nuevo.
   El `gap` se pone a cero y el aire pasa a márgenes por hijo: con `gap` no se
   puede repartir distinto entre parejas distintas. */
.inicio__encabezado {
  margin-bottom: 0;
  gap: 0;
}

/* v5 — SE VAN LAS MAYÚSCULAS, Y NO ES UN CAMBIO DE GUSTO.
   v4 dejaba este titular en caja alta: era el único de la página y se
   justificaba imitando al referente. Dos problemas medidos.
   PRIMERO, incumple el contrato: CONTRATO-V2 §3 prohíbe `text-transform:
   uppercase` sobre cualquier cosa de 24 px o más que no sea el logotipo, y
   este arranca en 44,8 px y llega a 84. SEGUNDO, es justo el gesto que hace
   que la portada se lea como plantilla: una frase larga en español,
   centrifugada en mayúsculas sobre una foto con velo, es la portada de
   cualquier sitio de turismo. En caja alta y baja, Fraunces a peso 320
   recupera la silueta de las palabras y parece escrita para este predio.

   EL CONTRASTE LO HACE LA COMPOSICIÓN, NO EL COLOR: dos renglones de cuerpos
   distintos, el segundo sangrado y con una hoja delante. Los dos van en crema
   —ver .inicio__titulo-linea—, porque debajo hay una fotografía.

   EL CUERPO: --fs-hero es el único paso de la escala que llega a 5,25 rem en
   1440 y baja solo a 2,8 rem en 320, así que la presencia grande y la
   supervivencia en pantalla estrecha salen del mismo token, sin literales.

   LA MEDIDA EN `ch` Y NO EN `rem`: se mide contra el propio cuerpo del
   titular, de modo que el número de palabras por línea es el mismo en 1440 que
   en 768. Sube de 15ch a 22ch porque ahora los renglones son dos bloques y el
   primero, «Escápate de la ciudad», mide 21 caracteres: con 15ch se partía en
   tres. `overflow-wrap` es la red de seguridad para el sistema con la letra
   agrandada.

   Peso y tracking vienen ya de .titulo-seccion (--peso-display /
   --tracking-display); esta regla añade cuerpo, interlineado apretado —a este
   tamaño el 1,14 de titular abre demasiado— y el color en negativo. Gana a
   base.css por orden de cascada, no por especificidad: las dos clases miden
   (0,1,0) y esta hoja se carga después. */
.inicio__titulo {
  font-size: var(--fs-hero);
  line-height: var(--alto-linea-apretado);
  max-width: 22ch;
  overflow-wrap: break-word;
  color: var(--color-texto-inverso);
}

/* Cada renglón es un bloque para poder darles cuerpos y sangrías distintos.
   El `balance` que trae .titulo-seccion sigue actuando dentro de cada uno. */
.inicio__titulo-linea {
  display: block;
}

/* EL SEGUNDO RENGLÓN: más pequeño, sangrado y con la hoja delante.
   · El cuerpo baja a --fs-h2 (hasta 2,9 rem): sigue siendo un titular, pero
     ya no compite con el primero. La jerarquía dentro de una misma frase es
     lo que la vuelve una composición y no una masa de letras.
   · La sangría se mide en `em` del propio renglón, así que escala con él y
     no hay que corregirla en ningún breakpoint.
   · El color baja a la crema al 78 %. A este cuerpo el texto es «grande»
     (> 24 px) y le bastaría 3:1, pero aun midiéndolo como texto pequeño y en
     el peor caso imaginable —el cielo blanco del archivo justo detrás y el
     velo en su punto más flojo a esa altura— se queda en 4,9:1. */
.inicio__titulo-linea--menor {
  position: relative;
  margin-top: var(--esp-3xs);
  padding-left: 1.8em;
  font-size: var(--fs-h2);
  color: var(--color-texto-inverso-suave);
}

/* La hoja. Misma forma exacta que el remate de .lista-hojas en base.css
   —dos esquinas a --radio-full y dos a cero—, que es la única figura orgánica
   que ya tenía el sistema. Es decorativa y no lleva información, así que no
   le aplica el mínimo de contraste de texto; aun así va en coral claro, que
   sobre el bosque del velo pasa 5,7:1 de sobra. */
.inicio__titulo-linea--menor::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.3em;
  width: 0.62em;
  height: 0.62em;
  border-radius: 0 var(--radio-full) 0 var(--radio-full);
  background-color: var(--color-acento-inverso);
}

/* Sobre la portada no hay .seccion--oscura de la que heredar el negativo: el
   fondo oscuro es local, así que el rótulo y la entradilla se repintan aquí.
   Las dos reglas miden (0,2,0) y ganan a .eyebrow y .entradilla de base.css
   sin necesidad de !important.
   El rótulo va en crema PLENA y la entradilla en la crema al 78 %: el rótulo
   es el que está más arriba —donde el velo es más flojo— y el que lleva el
   cuerpo más pequeño de los dos. */
.inicio__portada .eyebrow {
  color: var(--color-texto-inverso);
  /* El aire del ritmo de v6. `.eyebrow` de base.css declara el margen en
     atajo (para comerse el tracking sobrante por la derecha, que descuadra
     el centrado); esta regla mide (0,2,0) y sólo pisa el lado de abajo, así
     que la corrección del tracking sigue intacta. */
  margin-bottom: var(--esp-sm);
}

.inicio__portada .entradilla {
  color: var(--color-texto-inverso-suave);
  max-width: var(--medida-corta);
  margin-top: var(--esp-md);
}

.inicio__acciones {
  margin-top: var(--esp-lg);
  /* El fantasma y el coral tienen que compartir línea de base aunque uno de
     los dos parta su rótulo en dos renglones. `.grupo-botones` ya alinea al
     centro; lo que falta es que en pantalla estrecha, cuando el fantasma cae
     debajo, los dos sigan midiendo lo mismo de ancho —si no, el segundo queda
     como un recorte del primero. Lo resuelve `align-items: stretch` en el
     tramo en que la fila se parte, más abajo. */
}

/* EL SEGUNDO BOTÓN NO PUEDE PESAR LO MISMO QUE EL PRIMERO.
   `.btn-fantasma` ya es contorno sin relleno, pero a `--fs-cuerpo` y con el
   mismo alto que el coral los dos se leen como una pareja de iguales y la
   pantalla se queda sin un único punto de entrada. El filete baja a la crema
   al 55 % y el rótulo se queda en crema PLENA, que es lo que de verdad hay
   que poder leer.
   LOS DOS NÚMEROS, calculados en el peor caso posible —el cielo blanco del
   archivo justo detrás, con sólo el velo de esta altura (0,89) encima y sin
   contar la capa diagonal, que aquí sólo puede oscurecer más—:
     · filete: 3,9:1. WCAG 1.4.11 pide 3:1 para el contorno de un control, y
       éste es el único trazo que dibuja el límite del botón. Pasa, y por eso
       NO se le puede bajar más el alfa: al 45 % ya cae por debajo de 3.
     · rótulo: 9,0:1, muy por encima del 4,5:1 de AA para texto pequeño.
   En el hover recupera el filete entero y el fondo velado que ya trae de
   base.css: el peso vuelve cuando el visitante lo ha elegido. */
.inicio__accion-secundaria {
  border-color: rgb(var(--crema-rgb) / 0.55);
}

.inicio__accion-secundaria:hover,
.inicio__accion-secundaria:focus-visible {
  border-color: var(--color-texto-inverso);
}

/* Cuando la fila se parte —teléfono y tableta pequeña— los dos botones pasan a
   bloque y comparten ancho. Dos botones apilados de anchos distintos es el
   defecto clásico de un grupo con `flex-wrap`: el de abajo se lee como un
   recorte del de arriba en vez de como una alternativa.
   EL CORTE ESTÁ MEDIDO, no elegido. Los dos botones piden unos 590 px de fila
   (los cuerpos son fluidos, así que la cifra se midió en la página, no se
   dedujo) y el ancho útil del contenedor cruza esa marca alrededor de los
   640 px de ventana. El corte se pone un pelo por encima, en 40,99em: en la
   franja de 640 a 656 px la fila todavía cabría por unos pocos píxeles, y
   entre dos botones apretados hasta rozarse y dos botones apilados del mismo
   ancho, lo segundo se lee mejor y no depende de qué tan larga sea la palabra
   más larga en el idioma que se esté sirviendo. */
@media (max-width: 40.99em) {
  .inicio__acciones {
    align-items: stretch;
  }

  .inicio__acciones > .btn {
    flex: 1 1 100%;
  }
}

/* ---- LA PISTA DE QUE LA PÁGINA SIGUE -------------------------------------
   EL PROBLEMA, MEDIDO Y NO SUPUESTO. En 1280 × 720 la portada ocupa de 84 a
   720: la ventana entera menos la cabecera, al píxel. No asoma nada de lo que
   viene debajo, y una primera pantalla que cierra perfecta se puede confundir
   con el sitio entero. La cabecera fija tiene menú, sí, pero el menú no dice
   que ESTA página siga.

   LA SOLUCIÓN, EN UN PÍXEL DE ANCHO. Un filete vertical de crema muy tenue por
   el que baja una gota amarilla, en la columna derecha, que es la única parte
   de la composición que estaba vacía. No lleva la palabra «desliza» ni una
   flecha de plantilla: el movimiento ES el mensaje.

   POR QUÉ NO ES UN ENLACE. Un ancla más aquí sería una parada más de teclado
   antes del CTA, un rótulo más en la tabla de ARQUITECTURA-V3 §9 y un destino
   que compite con las cuatro anclas del plano. Es un `<div aria-hidden>`: no
   existe para el lector de pantalla, que ya tiene el índice del predio a un
   scroll de distancia.

   LAS DOS GUARDAS
     1. Sólo a partir de 64em. En un teléfono no hay columna derecha libre —el
        texto la ocupa entera— y deslizar no hay que enseñarlo.
     2. La animación se declara DENTRO de `prefers-reduced-motion:
        no-preference`, no con la duración a 1 ms. Es un bucle infinito: a 1 ms
        no sería «casi sin movimiento», sería un estroboscopio. Quien reduce el
        movimiento se queda con el filete quieto y la gota fuera de cuadro, que
        es el estado inicial ya escrito en CSS estático —no hay un fotograma en
        el que la gota aparezca de golpe en mitad de la línea.
   ------------------------------------------------------------------------ */
.inicio__bajar {
  /* La línea y la gota, con la proporción escrita una sola vez: el recorrido
     del keyframe es el alto de la línea medido en gotas (4rem / 1,5rem ≈ 2,7
     → 270 %). Si algún día cambia uno de los dos, hay que recalcularlo aquí y
     está anotado al lado. */
  --alto-bajar: var(--esp-2xl);
  --alto-gota: var(--esp-md);

  position: absolute;
  /* La misma vertical exacta por la que el contenedor cierra a la derecha:
     mismo max() que usan el pie del plano y la tira de aves, sólo que por la
     otra mano. Aritmética de porcentajes del padre, nunca de la ventana. */
  right: max(var(--padding-contenedor), calc((100% - var(--ancho-xl)) / 2));
  /* Despeja la orla ENTERA y deja además un respiro: en el borde derecho la
     curva es la parte gruesa (94 de 120 del viewBox), así que apoyar la línea
     justo encima de --alto-orla la dejaría tocando el papel. */
  bottom: calc(var(--alto-orla) + var(--esp-lg));
  z-index: var(--z-elevado);
  display: none;
  width: 1px;
  height: var(--alto-bajar);
  pointer-events: none;
}

@media (min-width: 64em) {
  .inicio__bajar {
    display: block;
  }
}

.inicio__bajar-linea {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  /* El carril recorta la gota en los dos extremos: sin esto la gota se ve
     entrar y salir por fuera de la línea y el gesto se deshace. */
  overflow: hidden;
  background-color: rgb(var(--crema-rgb) / 0.28);
}

/* ESTADO INICIAL BAKED, que es la regla dura de este sitio: la gota nace
   FUERA del carril por arriba. Sin JS, con el JS caído o con el movimiento
   reducido, lo que se ve es el filete y nada más — nunca una gota parada en
   mitad de la línea. */
.inicio__bajar-linea::after {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: var(--alto-gota);
  background-color: var(--color-destacado);
  transform: translate3d(0, -100%, 0);
  opacity: 0;
}

@media (prefers-reduced-motion: no-preference) {
  .inicio__bajar-linea::after {
    /* --dur-traza (2400 ms) es el tiempo del sitio para «una mano que
       dibuja», que es justo el registro de esto: un gesto que se sigue con la
       vista, no un parpadeo. Y --ease-traza arranca despacio, coge velocidad
       en el tramo largo y frena al final, como cae una gota por un tallo. */
    animation: inicio-gota var(--dur-traza) var(--ease-traza) infinite;
  }
}

@keyframes inicio-gota {
  from {
    transform: translate3d(0, -100%, 0);
    opacity: 0;
  }

  18% {
    opacity: 1;
  }

  72% {
    opacity: 1;
  }

  to {
    /* 270 % = el alto del carril (4rem) medido en gotas (1,5rem). */
    transform: translate3d(0, 270%, 0);
    opacity: 0;
  }
}

/* ==========================================================================
   2. EL PLANO-ÍNDICE
   ========================================================================== */
.inicio__plano {
  margin-top: var(--esp-seccion-sm);
}

/* Sólo sistema de coordenadas: ni recorta ni mide. Si llevara `overflow` se
   comería la rejilla de anclas de móvil, que es hija suya y vive fuera de la
   foto.

   v5 — LA SANGRÍA CAMBIA DE MANO Y SE QUEDA COJA A PROPÓSITO.
   Hasta v4 el plano cruzaba la ventana de borde a borde. Una banda simétrica
   de lado a lado no rompe ninguna retícula: la confirma. Ahora arranca en el
   margen del contenedor —la misma vertical exacta que su pie y que la tira de
   aves, porque el margen se calcula con el mismo max()— y se va de la
   pantalla por la DERECHA. Dos consecuencias buscadas:
     · queda una columna de papel a la izquierda que ata el bloque a la
       retícula del resto de la página en lugar de flotar suelto;
     · la mano por la que sangra es la contraria a la de la foto grande de
       #nosotros, que se va por la izquierda. Dos sangrías seguidas por el
       mismo lado son el mismo gesto repetido.
   El max() es el mismo recurso del pie: mientras la ventana sea más estrecha
   que --ancho-xl gana el relleno de página; en cuanto es más ancha, gana la
   mitad de lo que sobra, que es donde empieza .contenedor. Aritmética de
   porcentajes del <section>, nunca de la ventana.

   OJO AL ORDEN: el desplazamiento va en el LIENZO y no en el marco. Las
   coordenadas de las cuatro anclas de escritorio son porcentajes del lienzo,
   así que mover el marco por su cuenta las dejaría señalando al vacío.     */
.inicio__plano-lienzo {
  position: relative;
  margin-left: max(var(--padding-contenedor), calc((100% - var(--ancho-xl)) / 2));
}

/* La proporción y el recorte, aquí. En móvil y en tableta la foto se recorta
   a una caja más alta que la del archivo: a 375 px de ancho, el aéreo servido
   a su proporción natural (1,97) mide 190 px de alto y no se ve nada. Como por
   debajo de 64em las anclas NO están encima, recortar es gratis: no hay ningún
   punto que se salga del encuadre. A partir de 64em la caja recupera la
   proporción exacta del archivo (2000 × 1013) y el recorte desaparece, que es
   la condición para que las coordenadas en % sigan cayendo sobre el sitio
   que señalan. */
/* v5 — LOS RADIOS SON DE HOJA, NO DE TARJETA.
   Cuatro esquinas iguales es la firma de la plantilla; aquí hay tres valores
   distintos y el par de la derecha en cero, porque ese borde no existe: se va
   de la pantalla. Arriba a la izquierda el radio grande (--radio-xl) y abajo
   el mediano (--radio-lg): la forma queda asimétrica, como una hoja apoyada,
   y el mordisco que el redondeo le pega al render aéreo se queda en la
   esquina, lejos del predio.
   La sombra es baja y muy abierta (--sombra-lg): no es el halo de una tarjeta
   flotante, es la sombra que echa una copa sobre el suelo. */
.inicio__plano-marco {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: var(--radio-xl) 0 0 var(--radio-lg);
  box-shadow: var(--sombra-lg);
  background-color: var(--color-fondo-alt);
}

@media (min-width: 48em) {
  .inicio__plano-marco {
    aspect-ratio: 16 / 9;
  }
}

@media (min-width: 64em) {
  .inicio__plano-marco {
    aspect-ratio: 2000 / 1013;
  }
}

/* v3: el plano va a ESQUINA VIVA, sin filete y sin sombra. Era una foto de
   2000 px flotando sobre la crema con radio grande y --sombra-lg: la sombra la
   despegaba de la página como una tarjeta de otro sitio, y el redondeo le
   recortaba las esquinas al render, que es justo donde está el bosque que
   rodea el predio. El radio se declara en cero explícitamente —no por
   omisión— para que quede escrito que es decisión y no olvido; lo mismo la
   sombra. */
.inicio__plano-foto {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 50%;
  border-radius: 0;
  box-shadow: none;
}

/* El pie NO va centrado ni ocupa el ancho de la ventana: se alinea con el
   margen izquierdo del contenedor y conserva medida corta de lectura.
   El max() hace de contenedor sin serlo: mientras la ventana sea más estrecha
   que --ancho-xl gana el relleno del contenedor; en cuanto es más ancha, gana
   la mitad de lo que sobra, que es exactamente donde empieza .contenedor. Todo
   en porcentajes del padre —el <section>—, nunca en vw. */
.inicio__plano-pie {
  max-width: var(--medida-corta);
  margin-block: var(--esp-sm) 0;
  margin-inline: max(var(--padding-contenedor), calc((100% - var(--ancho-xl)) / 2)) auto;
}

/* ---- LAS CUATRO ANCLAS --------------------------------------------------
   Móvil y tableta: rejilla de pastillas bajo el plano.
   v5: el margen izquierdo ya se lo pone el lienzo, que es su padre; lo único
   que tiene que resolver la rejilla es que no llegue pegada al borde DERECHO
   de la pantalla, que es por donde el lienzo se sale.                       */
.inicio__anclas {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--gap-sm);
  max-width: var(--ancho-xl);
  margin: var(--esp-md) 0 0;
  padding-inline: 0 var(--padding-contenedor);
}

/* En tableta las cuatro caben en una fila y dejan de parecer un formulario. */
@media (min-width: 40em) {
  .inicio__anclas {
    grid-template-columns: repeat(4, 1fr);
  }
}

.inicio__ancla {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.6em;
  /* «Cómo llegar» es el único rótulo que parte en dos líneas en una columna
     estrecha. Sin esto, su pastilla queda más alta que las otras tres y la
     fila se ve descuadrada. */
  height: 100%;
  /* Sin min-height literal: el padding vertical (--esp-sm arriba y abajo) más
     la línea de la etiqueta pasan de 2,75 rem incluso con el cuerpo más
     pequeño de la escala fluida. El objetivo táctil sale del sistema.      */
  padding: var(--esp-sm);
  border: 1px solid var(--color-borde-fuerte);
  /* v5: vuelve la forma de pastilla, y por el mismo motivo por el que
     base.css se la deja a .pildora aunque todo lo demás fuera cuadrado: «un
     chip es un chip». Estas cuatro no son botones de formulario, son las
     chinchetas de un plano, y sobre una fotografía aérea la forma redonda es
     lo que las lee como marcas y no como recortes del papel. */
  border-radius: var(--radio-full);
  background-color: var(--color-superficie-solida);
  /* Etiqueta, no titular: la fuente de etiqueta y las caps que §3 del
     contrato sí permite en micro-rótulos.                                  */
  font-family: var(--fuente-titulo);
  font-size: var(--fs-pequeno);
  font-weight: var(--peso-medio);
  line-height: var(--alto-linea-titulo);
  text-transform: uppercase;
  /* El tracking de rótulo del sistema v3, el mismo del .btn y del nav. */
  letter-spacing: var(--tracking-rotulo);
  text-decoration: none;
  text-align: center;
  /* 13,9:1 sobre la superficie clara. La regla `a` de base.css es (0,0,1):
     esta clase (0,1,0) la gana sin necesidad de !important.                */
  color: var(--color-texto);
  /* Sin `box-shadow` en la transición: ya no hay ninguna sombra que animar. */
  transition:
    background-color var(--transicion),
    border-color var(--transicion),
    color var(--transicion);
}

/* El rótulo no declara tipografía propia —la hereda entera de la pastilla—;
   lo único suyo es poder partirse. «Cómo llegar» es el único de los cuatro que
   pasa a dos líneas en una columna estrecha o con la letra del sistema
   agrandada, y sin esto fija un mínimo que saca la rejilla de la pantalla. */
.inicio__rotulo {
  display: inline-block;
  min-width: 0;
  overflow-wrap: break-word;
}

.inicio__ancla:hover,
.inicio__ancla:focus-visible {
  background-color: var(--verde-bosque);
  border-color: var(--verde-bosque);
  color: var(--color-texto-inverso);
}

/* El punto es el pin del plano: coral —el único cálido del sistema— con un
   aro del color de la pastilla para que se despegue de la foto.
   Es el ÚNICO redondeo que queda en la sección, y se queda por lo mismo que
   .pildora conserva el suyo en base.css: un punto es un punto. Lo que sí se
   va es la sombra: el punto vive DENTRO de la pastilla, nunca suelto sobre la
   fotografía, así que --sombra-pin no separaba nada. */
.inicio__punto {
  flex: none;
  width: var(--esp-xs);
  height: var(--esp-xs);
  border: var(--borde-pin) solid var(--color-superficie-solida);
  border-radius: var(--radio-full);
  background-color: var(--color-accion);
  transition:
    border-color var(--transicion),
    transform var(--transicion);
}

.inicio__ancla:hover .inicio__punto,
.inicio__ancla:focus-visible .inicio__punto {
  border-color: var(--verde-bosque);
  transform: scale(var(--escala-hover));
}

/* v6 · UNA DE LAS CUATRO PESA UN PUNTO MÁS, Y ES ESPACIOS.
   El encargo pedía que la portada insinuara que aquí también se alquila el
   predio, sin convertirse en una página de ventas. Ésta es la mitad callada
   de esa respuesta: no hay un banner, no hay una frase nueva y no hay un
   hecho nuevo —el ancla ya estaba, con el mismo rótulo y el mismo destino—;
   lo único que cambia es que su chinchete es un punto más grande y su filete
   es el terracota del sistema en vez del oliva. Entre cuatro pastillas
   idénticas, ésa es la que el ojo toca primero.

   NO ES UN PROBLEMA DE CONTRASTE, ES UNA MEJORA: el filete pasa de oliva
   (4,99:1 sobre la superficie clara) a --color-accion-borde (5,3:1). El
   rótulo no cambia de color, así que sigue en los 13,9:1 de la regla base.
   El cálido está permitido justo aquí —CONTRATO-V2 §4, «el cálido funciona
   por escasez»—: es UN elemento en toda la sección, y el coral relleno sigue
   siendo sólo del CTA. */
.inicio__ancla-item--espacios .inicio__ancla {
  border-color: var(--color-accion-borde);
}

/* Y en el hover vuelve al verde de las otras tres. Sin esto, la regla de
   arriba —misma especificidad (0,2,0) pero escrita DESPUÉS— le ganaría a
   `.inicio__ancla:hover` y esta pastilla sería la única que no se pinta
   entera al pasar por encima. */
.inicio__ancla-item--espacios .inicio__ancla:hover,
.inicio__ancla-item--espacios .inicio__ancla:focus-visible {
  border-color: var(--verde-bosque);
}

.inicio__ancla-item--espacios .inicio__punto {
  /* Estático, no animado: crecer un punto en reposo es geometría, y el único
     `transform` de este elemento sigue reservado al hover. */
  width: var(--esp-sm);
  height: var(--esp-sm);
}

/* ---- ESCRITORIO: las anclas suben al plano ------------------------------ */
@media (min-width: 64em) {
  .inicio__anclas {
    position: absolute;
    inset: 0;
    display: block;
    max-width: none;
    margin: 0;
    padding-inline: 0;
    /* La lista cubre la foto entera; sólo los enlaces reciben el puntero. */
    pointer-events: none;
  }

  .inicio__ancla-item {
    position: absolute;
    /* El grupo (punto + rótulo) se centra sobre su coordenada. */
    transform: translate(-50%, -50%);
  }

  .inicio__ancla {
    flex-direction: column;
    gap: var(--esp-3xs);
    height: auto;
    padding: var(--esp-2xs) var(--esp-sm);
    /* Sobre la foto la pastilla se separa con MATERIA, no con sombra: crema
       casi opaca + desenfoque del fondo + el filete de 1 px que ya trae de la
       regla base. La --sombra-md que llevaba en v2 era el único halo suave que
       quedaba encima de una fotografía en toda la página. */
    background-color: rgb(var(--crema-rgb) / 0.94);
    backdrop-filter: var(--blur-vidrio);
    -webkit-backdrop-filter: var(--blur-vidrio);
    /* v5: aquí la pastilla SÍ flota sobre la fotografía, así que recupera
       sombra —pero la corta y cerrada (--sombra-sm), la de un objeto apoyado,
       no la nube de una tarjeta despegada. */
    box-shadow: var(--sombra-sm);
    pointer-events: auto;
  }

  /* Coordenadas leídas sobre img/aereo-predio.jpg (2000 × 1013), ampliando el
     archivo antes de fijarlas: la estructura de techo translúcido con las
     mesas de cultivo debajo, la masa de árboles del costado, la alameda con el
     prado y la vela de sombra, y el camino de acceso con los coches.
     Siguen valiendo en v4 porque a partir de 64em el marco recupera la
     proporción exacta del archivo: la foto se amplía, no se recorta.       */
  .inicio__ancla-item--vivero   { left: 52%; top: 31%; }
  .inicio__ancla-item--sendero  { left: 16%; top: 44%; }
  .inicio__ancla-item--espacios { left: 41%; top: 63%; }
  .inicio__ancla-item--llegar   { left: 76%; top: 85%; }
}

/* ==========================================================================
   3. TIRA DE AVES — atmósfera
   Miniaturas decorativas: ni ficha ni crédito visible (el crédito va en el
   `alt`). Tope en píxeles para que no crezcan hasta volverse medallones si la
   letra del sistema está agrandada.
   ========================================================================== */
/* v4 dejó la tira alineada al margen del contenedor en vez de centrada, y eso
   estaba bien. Lo que seguía siendo plantilla era el interior: SEIS CUADRADOS
   IDÉNTICOS, misma medida, misma esquina, todos apoyados en la misma línea.
   Una retícula perfecta de seis módulos es exactamente lo que el ojo lee como
   «generado», por muy descentrada que esté la retícula entera.

   v5 la desarma: seis anchos distintos (del 0,66 al 1,3 del módulo), dos que
   se levantan de la línea de base, cuatro formas de esquina distintas —dos
   hojas, un canto suave y dos círculos— y una sombra corta que las apoya en
   el papel. El módulo sigue siendo uno solo (--tam-ave) y todos los tamaños
   son múltiplos suyos, así que el desorden es aparente: la tira sigue siendo
   un sistema, sólo que uno que no se puede dibujar con una regla.

   FLEX Y NO GRID, al revés que en v4: ahora que cada pieza mide distinto, la
   rejilla de columnas iguales ya no sirve de nada. Con `wrap` la fila cede
   sola en un teléfono —a 375 px se parte en dos grupos— en lugar de sacar
   nada de la pantalla, y con `flex-end` las que no están levantadas comparten
   línea de suelo, que es lo que impide que el conjunto se lea como un
   descuido. */
.inicio__aves {
  /* Tope en píxeles a propósito: con la letra del sistema agrandada, un valor
     en rem convertiría estas miniaturas en medallones y sacaría la fila de la
     pantalla. Mismo recurso que ya usaba la tira del hero. */
  --tam-ave: min(var(--esp-2xl), 64px);

  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: flex-start;
  gap: var(--gap-sm);
  margin-block: var(--esp-lg) 0;
  margin-inline: max(var(--padding-contenedor), calc((100% - var(--ancho-xl)) / 2))
    var(--padding-contenedor);
  padding: 0;
}

.inicio__ave {
  position: relative;
  flex: none;
  width: var(--tam-ave);
  aspect-ratio: 1;
  overflow: hidden;
  /* Corta y cerrada: apoya la miniatura en el papel, no la despega de él. */
  box-shadow: var(--sombra-sm);
  background-color: var(--color-fondo-alt);
}

/* LOS SEIS TAMAÑOS Y LAS SEIS FORMAS.
   Las dos hojas (nth 1 y 3) llevan la misma figura que el remate de
   .lista-hojas en base.css: dos esquinas redondas en diagonal y dos vivas.
   Las dos levantadas (nth 2 y 5) suben con `margin-bottom`, que en un flex
   alineado a `flex-end` es lo que separa una pieza de la línea de suelo sin
   sacarla del flujo ni pedir posición absoluta. */
.inicio__ave:nth-child(1) {
  width: calc(var(--tam-ave) * 1.3);
  border-radius: var(--radio-lg) 0 var(--radio-lg) 0;
}

.inicio__ave:nth-child(2) {
  width: calc(var(--tam-ave) * 0.72);
  margin-bottom: var(--esp-md);
  border-radius: var(--radio-full);
}

.inicio__ave:nth-child(3) {
  width: calc(var(--tam-ave) * 1.1);
  border-radius: 0 var(--radio-xl) 0 var(--radio-xl);
}

.inicio__ave:nth-child(4) {
  width: calc(var(--tam-ave) * 0.86);
  border-radius: var(--radio-md);
}

.inicio__ave:nth-child(5) {
  width: calc(var(--tam-ave) * 1.18);
  margin-bottom: var(--esp-lg);
  border-radius: var(--radio-xl) var(--radio-sm) var(--radio-xl) var(--radio-sm);
}

.inicio__ave:nth-child(6) {
  width: calc(var(--tam-ave) * 0.66);
  border-radius: var(--radio-full);
}

/* TRAMPA DE base.css, ANOTADA PARA QUIEN VENGA DETRÁS.
   `.js .reveal.visible` pone `clip-path: inset(0 0 0 0)` a TODO elemento que
   entra —lo necesita .reveal--velo, y de paso se lo come el resto—, y un
   `clip-path` recorta también la sombra del elemento, que vive fuera de su
   caja. Como estas seis miniaturas sí llevan sombra y sí son .reveal, sin
   esto la sombra desaparecía justo al terminar la animación de entrada.
   Se le devuelve el clip a `none` una vez visible: la regla de base mide
   (0,3,0) y ésta también, pero esta hoja se carga después, así que gana por
   cascada y no hace falta ningún !important. Antes de .visible no hay nada
   que romper, porque el clip inicial sólo lo declara .reveal--velo.        */
.inicio__ave.reveal.visible {
  clip-path: none;
}

/* Absoluta y no `height: 100%`: el alto de la miniatura lo fija `aspect-ratio`,
   y contra ese alto un porcentaje no resuelve igual en todos los navegadores. */
.inicio__ave img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  background: none;
  transition: transform var(--dur-lenta) var(--ease-suave);
}

/* Encuadre archivo por archivo: en un recorte tan pequeño el centro geométrico
   casi nunca cae sobre el ave. Los porcentajes salen de mirar cada fotografía,
   no de suponerlos. */
.inicio__ave:nth-child(1) img { object-position: 50% 28%; } /* Momotus      */
.inicio__ave:nth-child(2) img { object-position: 55% 40%; } /* carpintero   */
.inicio__ave:nth-child(3) img { object-position: 66% 44%; } /* colibrí      */
.inicio__ave:nth-child(4) img { object-position: 45% 38%; } /* Thraupis     */
.inicio__ave:nth-child(5) img { object-position: 42% 32%; } /* canario      */
.inicio__ave:nth-child(6) img { object-position: 46% 52%; } /* periquito    */

/* El único movimiento: la foto respira DENTRO de su cuadrado, igual que en las
   fichas de #espacios. Antes se levantaba la miniatura entera —un salto de
   tarjeta que sin sombra ya no significa nada—; ahora se mueve la imagen y el
   recorte se queda quieto. --escala-hover vale 1 cuando el visitante pide
   menos movimiento, así que se apaga solo. */
@media (prefers-reduced-motion: no-preference) {
  .inicio__ave:hover img {
    transform: scale(var(--escala-hover));
  }
}
