/* ============================================================
   BEMBERG FAMILY WINES — OPCIÓN 2 · HOJA DE ESTILO ÚNICA
   Única fuente de estilos del sitio. Toda página nueva enlaza:
     <link rel="stylesheet" href="site.css" />
   Las dos plantillas conviven por scope de <body>:
     body.home     → home oscuro scroll-driven (index)
     body.subpage  → páginas de contenido claras (la-linterna, vinos…)
   Usa CSS nesting nativo (navegadores modernos).
   ============================================================ */

/* ---- Fuentes self-hosted ---- */
/* versalitas reales de Minion Pro. La familia display (Minion Pro) no
   las trae y las sintéticas del navegador (font-variant-caps) sólo escalan
   la mayúscula: el trazo queda más fino que el de las capitales y se nota.
   Este archivo tiene los glifos dibujados (versalita a ~0.69 de la altura de
   caja) y cubre todos los acentos y signos del castellano. Sólo hay redonda:
   no usar <em> encima. */
@font-face{font-family:"Minion SC";src:url("assets/tipografias/Minion%20RegularSC%20Regular.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Notera";src:url("assets/tipografias/Notera_PersonalUseOnly.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
/* Blair ITC y Beaufort Pro salieron del sistema: --font-ui/--font-body (Dunbar)
   y --font-display (Minion Pro) resuelven a Adobe Fonts
   (ver <link rel="stylesheet" href="https://use.typekit.net/zau7yyl.css"> en cada página). */

/* ============================================================
   TOKENS — los defaults son los de subpágina; body.home solo
   reescribe --cream y --hdr-h.
   ============================================================ */
:root{
  /* — Color (brief tokens) — */
  --navy:#1F2450;      /* base / marca / texto */
  --gold:#C0946C;      /* acento ÚNICO */
  --ink:#1A1A1A;       /* video / overlays */
  --cream:#FAFAF6;     /* fondo principal */
  --sand:#ffffff  ;      /* fondo alterno */
  --gray:#939393;      /* texto secundario */
  --gold-soft:rgba(192,148,108,.28);
  --navy-soft:rgba(31,36,80,.55);

  /* — Placeholder (maqueta) — */
  --ph-1:#2A2A2E;      /* gris oscuro */
  --ph-2:#3C3C42;      /* gris medio */
  --ph-black:#141416;

  /* — Type — */
  --font-display:"minion-pro",Georgia,"Times New Roman",serif; /* títulos — antes Beaufort Pro */
  --font-ui:"dunbar-text","Helvetica Neue",Arial,sans-serif; /* eyebrows, CTA, botones, labels — antes Blair ITC */
  --font-script:"Notera","Marck Script",cursive; /* pull-quotes: script manuscrita — sin cambios */
  --font-sc:"Minion SC","minion-pro",Georgia,serif; /* versalitas reales, sin itálica */
  --font-body:"dunbar-text",sans-serif; /* cuerpo de texto / párrafos */

  /* Etiquetas: no escalan con el viewport. El canvas ya congela el layout
     a 1950px, así que un clamp en vw sólo las haría crecer fuera de la grilla. */
  --fs-eyebrow:.6875rem;                  /* 11px — eyebrows y rótulos */
  --fs-cta:.8125rem;                      /* 13px — botones y llamados a la acción */
  --fs-body:.9375rem;                     /* 15px fijo, en rem: escala con el zoom/ajuste del usuario */
  --fs-h3:clamp(1.25rem,2.1vw,1.875rem);  /* 20–30px — 1.33x por debajo de --fs-h2 en todo el rango */
  --fs-h2:clamp(2rem,3.4vw,2.5rem);      /* títulos de sección y de banner: uno solo para todo el sitio */
  --fs-title:3.5rem;                      /* h1 de página (banda superior de subpágina): fijo en rem —así los 4 títulos internos (Winemakers/Hitos/hito-*/Bemberg Journal) miden exactamente lo mismo en cualquier ancho, sin depender del viewport de captura */
  --fs-h1:clamp(3rem,8vw,7rem);
  --fs-huge:clamp(5rem,15vw,15rem);
  --fs-script:clamp(1.6rem,3vw,2.9rem);

  /* — Space — —————————————————————————————————————————————
     Eje único de todo el sitio. La composición está armada en
     proporciones, así que sin techo los márgenes crecen sin fin en
     pantallas grandes. El canvas congela el ancho de trabajo en 1950px:
     por debajo, --pad-x vale 10% (igual que la home); por encima, la
     grilla queda centrada y el ancho útil se clava en 1560px.
     Los tokens van en vw y no en %: un % dentro de un ítem de grilla se
     mediría contra su celda y no contra el viewport. */
  --canvas:min(100vw,1950px);
  --gut:calc((100vw - var(--canvas)) / 2);
  --pad-x:calc(var(--gut) + var(--canvas) * .10);
  --content-max:calc(var(--canvas) * .80);   /* 1560px: ancho útil entre ejes */
  /* Padding interno del contenedor. Va en vw y no en %, por lo mismo que
     --pad-x: un % se mediría contra la caja de cada contenedor y no contra el
     viewport, y valdría distinto en cada uno.

     Sólo existe en pantallas grandes, y la razón es cuándo hace falta. Por
     debajo de 1950px el --pad-x (10vw) ya da la proporción de la maqueta —80%
     de ancho útil— y sumarle padding interno no agrega aire: saca lectura. Ahí
     el contenido no se achica en proporción a la pantalla —el cuerpo de texto,
     los CTA y las cards tienen un mínimo cómodo—, así que un 7.2vw fijo dejaba
     el ancho útil en 65% entre 1280 y 1920 y todo quedaba apretado.
     De 1950 para arriba el lienzo se congela: el contenedor se queda en 1560
     mientras la pantalla sigue creciendo, y ahí sí el padding interno lo baja
     a los 1280 de medida de lectura.
     La rampa entre 1500 y 1950 evita el escalón: sin ella el contenido saltaba
     de 1560 a 1280 de un pixel al otro. */
  --content-pad:clamp(0px,calc(31.1vw - 466px),140px);
  --gap-2col:8.6%;                           /* gutter estándar de las grillas de dos columnas */
  --section-gap:clamp(110px,15vw,240px);


  /* — Ejes de los bloques Pionero / La Linterna (home y vinos.html) —
     En vw y no con --pad-x (10%): dentro del panel de Pionero, que mide 40%,
     un porcentaje resolvería contra el panel y no contra el viewport.
     Antes corrían sobre un eje propio del 8%, más abierto que el resto de la
     página. Ahora se atan al mismo eje que todo lo demás —el --pad-x de la
     sección más el padding interno— para que la home tenga una sola línea de
     margen y no dos que casi coinciden. */
  --blk-inset:calc(var(--pad-x) + var(--content-pad));  /* margen lateral de ambos bloques, desde el viewport */
  --blk-inset-c:calc(var(--canvas) * .10 + var(--content-pad));
                                                       /* el mismo eje medido desde el borde del canvas
                                                          (para lo que vive dentro de .pionero, ya acotado) */
  --blk-pad:clamp(30px,4vw,70px);                   /* padding interno del marco */
  --blk-text-x:calc(var(--blk-inset-c) + var(--blk-pad) + clamp(8px,1.6vw,30px));

  /* — Shell — */
  --hdr-h:72px;        /* alto mínimo de la barra fija; body.home la sube a 75px */

  /* — Motion — */
  --ease-expo:cubic-bezier(.19,1,.22,1);
  --ease-smooth:cubic-bezier(.16,1,.3,1);
}

/* ---- Reset + base global ---- */
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
::selection{background:var(--gold);color:var(--cream)}
/* dvh por lo mismo que el panel del menú: con 100vh el body quedaba más alto
   que la ventana visible cuando la barra del navegador está desplegada. */
body.is-locked{overflow:hidden;height:100dvh}
h1,h2,h3{font-family:var(--font-display);font-weight:400;letter-spacing:-1px;line-height:1.08}
/* Móvil: el 3.5rem fijo de --fs-title está pensado para desktop y en 390px
   ocupa dos tercios del ancho por palabra. Escala con el viewport hasta 56px. */
@media(max-width:700px){
  :root{--fs-title:clamp(2.125rem,9vw,3.5rem);--fs-h1:clamp(2.25rem,9.5vw,3rem);--fs-h2:clamp(1.75rem,7.4vw,2rem)}
}
h1{font-size:var(--fs-h1)}
h2{font-size:var(--fs-h2)}
h3{font-size:var(--fs-h3)}
h1 em,h2 em,h3 em{font-style:italic;font-weight:inherit}

/* ---- Cuerpo de texto: un solo tratamiento para todo el sitio ----
   Un párrafo de lectura se ve igual en la home y en las subpáginas, así que la
   regla vive acá y no duplicada en los dos scopes. Familia, cuerpo y alineación
   salen de acá; cada componente se queda con lo suyo (color, opacidad, medida,
   márgenes, interlínea).

   Qué NO entra, por criterio: la itálica de .ht-end__sign y las citas
   —.lw-tasting__cite, .lw-finca__quote, .leg-quote, los pull en Notera—, que
   conservan la display. Tampoco eyebrows, meta, roles ni labels: no son
   texto de lectura, y a 9-11px justificar no hace nada.
   .wmaking__copy y .intro__lead justifican igual, pero llevan su propia
   declaración porque no comparten familia/cuerpo/interlínea con el resto
   del grupo (viven en body.home, no en el body-copy de subpágina).

   Sin hyphens:auto a propósito: se prefiere el texto justificado sin
   partición de palabras, aunque abra algún río entre palabras. */
:is(.estate__sub,.hospi__copy,.body-copy,.lw-tasting__copy,.lw-finca__copy,
    .wmk-copy__p,.wmk-maker__copy,.hosp-row__d,.leg-ed__lead,.ht-lead,.ht-p,
    .est-block__p){
  font-family:var(--font-body);font-size:var(--fs-body);line-height:1.85;
  text-align:justify}

/* ---- Keyframes globales ---- */
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}
@keyframes scrollpulse{0%{transform:scaleY(0);opacity:0}
  40%{transform:scaleY(1);opacity:1}100%{transform:scaleY(1);opacity:0}}
@keyframes lwFade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* slider del hero de vinos: 6s de cada pieza, cruce de ~1s en cada punta */
@keyframes wmkDuo{0%,42%{opacity:0}50%,92%{opacity:1}100%{opacity:0}}

/* ============================================================
   REDUCED MOTION
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition-duration:.01ms!important}
  .hero__bg{transform:none}
  .linterna__track{scroll-behavior:auto}
}

/* ============================================================
   EYEBROW — estilo único de todo el sitio: Dunbar Text 500, versalitas,
   letter-spacing 3px fijo (no em: así se ve igual sin importar el tamaño
   de fuente del rótulo). Navy sobre fondo claro; crema cuando va sobre
   foto o fondo de color (la variante la fija cada bloque oscuro).
   ============================================================ */
:is(.eyebrow,.intro__eyebrow,.estate__eyebrow,.wmaking__eyebrow,.hospi__eyebrow,.hitos__eyebrow,.hx__eyebrow){
  display:block;font-family:var(--font-ui);font-weight:500;text-transform:uppercase;
  letter-spacing:3px;font-size:var(--fs-eyebrow);color:var(--navy)}
/* sobre banner / foto / fondo oscuro */
:is(.estate__eyebrow,.hospi__eyebrow,.estate .eyebrow,.hosp__inner .eyebrow){color:var(--cream)}

/* Métrica de eyebrow sin el `display:block` ni el color: la usan los rótulos
   que ya traen su propio display (metas en flex, años de la grilla, subtítulos
   de artículo). Va antes que sus reglas para que cada una pueda ajustar. */
/* .wmk-maker__role salió de este grupo: pasó a ser una bajada script como la
   de Pionero o La Linterna, no un rótulo de metadato. */
:is(.hito__cat,.hito__year,.ht-mast__cat,.ht-mast__date,.ht-card__meta,.hx__year,.ht-sub){
  font-family:var(--font-ui);font-weight:500;text-transform:uppercase;
  letter-spacing:3px;font-size:var(--fs-eyebrow)}

/* ============================================================
   CTA — estilo único de todo el sitio: misma métrica que el eyebrow
   (Dunbar Text 500, versalitas, .28em) pero en gold y con un filete corto que
   crece en hover. Todo llamado a la acción usa esta base.
   ============================================================ */
:is(.cta,.intro__cta,.estate__cta,.pionero__cta,.linterna__cta,.wmaking__cta,.hospi__cta,
     .hito__more,.hitos__all,.ht-card__more,.hosp-cta,.pbn__cta){
  display:inline-flex;align-items:center;gap:clamp(14px,1.6vw,26px);
  font-family:var(--font-ui);font-weight:500;text-transform:uppercase;letter-spacing:.28em;
  font-size:var(--fs-cta);color:var(--gold);padding-bottom:0}
:is(.cta,.intro__cta,.estate__cta,.pionero__cta,.linterna__cta,.wmaking__cta,.hospi__cta,
     .hito__more,.hitos__all,.ht-card__more,.hosp-cta,.pbn__cta)::after{
  content:"";position:static;flex:none;width:clamp(48px,5vw,90px);height:1px;
  background:currentColor;transform:scaleX(1);transform-origin:left;
  transition:transform .45s var(--ease-expo)}
:is(.cta,.intro__cta,.estate__cta,.pionero__cta,.linterna__cta,.wmaking__cta,.hospi__cta,
     .hito__more,.hitos__all,.ht-card__more,.hosp-cta,.pbn__cta):hover::after,
:is(.cta,.intro__cta,.estate__cta,.pionero__cta,.linterna__cta,.wmaking__cta,.hospi__cta,
     .hito__more,.hitos__all,.ht-card__more,.hosp-cta,.pbn__cta):focus-visible::after{transform:scaleX(1.3)}
/* Táctil: los CTA miden ~18px de alto. Un pseudo-elemento absoluto agranda la
   zona que responde al dedo a ~44px sin mover el layout (el ::after de arriba
   es el filete y queda en el flujo). */
@media(hover:none),(max-width:900px){
  :is(.cta,.intro__cta,.estate__cta,.pionero__cta,.linterna__cta,.wmaking__cta,.hospi__cta,
       .hito__more,.hitos__all,.ht-card__more,.hosp-cta,.pbn__cta){position:relative;touch-action:manipulation}
  :is(.cta,.intro__cta,.estate__cta,.pionero__cta,.linterna__cta,.wmaking__cta,.hospi__cta,
       .hito__more,.hitos__all,.ht-card__more,.hosp-cta,.pbn__cta)::before{
    content:"";position:absolute;inset:-14px -6px}
  .linterna__arrow{position:relative}
  .linterna__arrow::before{content:"";position:absolute;inset:-6px}
  .menu2 a,.footer2__col a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
}
/* el filete de la card la sigue: el hover está en el <a> contenedor */
.ht-card:hover .ht-card__more::after,.hito__link:hover .hito__more::after{transform:scaleX(1.3)}

/* ============================================================
   DESTACADO — párrafo con peso de cita. Componente compartido:
   sirve igual en la home y en las subpáginas, por eso vive acá y no
   duplicado en los dos scopes.

   El énfasis lo dan las versalitas trackeadas y justificadas, no una
   seminegra —la escala tipográfica del sitio no tiene un peso
   intermedio— ni un salto a cuerpo de titular, que competiría con los
   h2 de la página.

   Dos formas de uso:
     .destacado          → sobre un párrafo dentro de una columna de texto
     .destacado-placa    → el mismo párrafo como bloque centrado y solo,
                           con el escudo de filigrana detrás
   ============================================================ */
/* La clase va repetida a propósito, no es un error de tipeo. Es un modificador
   y tiene que ganarle al font-size de los párrafos de cada bloque
   —.wmk-copy__p, .est-block__p, .wmk-maker__copy—, que al vivir dentro de
   body.subpage pesan (0,2,0) contra los (0,1,0) de una clase suelta. Repetirla
   sube la especificidad sin arrastrar el scope al selector, que es lo que
   obligaría a duplicar el componente en home y en subpágina. */
.destacado.destacado.destacado{
  font-family:var(--font-display);letter-spacing:.5px;font-style:normal;color:var(--navy);
  font-size:1rem;line-height:1.7;text-transform:uppercase;
  text-align:justify!important;opacity:1}

/* Estate: los dos destacados de la columna llevan el .rombo de siempre como
   cierre, alineado a la izquierda. El color es el del párrafo (navy). */
.est-block .rombo{justify-content:flex-start;margin-top:clamp(18px,2.2vw,26px)}

/* El z-index:1 no es decorativo: abre el contexto de apilado que necesita
   el escudo para quedar detrás del texto (z-index:-1) y no detrás del
   fondo de la sección. */
.destacado-placa{position:relative;z-index:1;background:var(--cream);
  padding:clamp(70px,9vw,130px) var(--pad-x) clamp(30px,3.6vw,48px)}
.destacado-placa__inner{position:relative;max-width:min(680px,100%);margin:0 auto;
  text-align:center}
/* medida en px y no en ch: el ch resolvería contra el cuerpo heredado del
   contenedor y no contra el del destacado */
.destacado-placa__crest{position:absolute;left:50%;top:50%;translate:-50% -50%;
  width:clamp(190px,22vw,300px);aspect-ratio:216/262;z-index:-1;opacity:.07;
  background:url("assets/escudo_bembeg.svg") center/contain no-repeat}

/* ============================================================
   EJE DE PÁGINA — el ancho útil y su padding interno.

   Todo lo que se mide contra --content-max comparte también el padding
   interno: el eje es del sitio, no de cada vista, y repetir la
   declaración en cada bloque garantizaba que tarde o temprano uno
   quedara distinto. Ninguno de estos contenedores declara padding
   lateral propio, así que el grupo no le pisa nada a nadie.

   En la pantalla más grande da 1560 de contenedor, 140 de padding y
   1280 de contenido. De ahí para abajo la proporción (9%) se conserva
   sola porque --content-pad está en vw.

   En la home varios bloques no se miden contra --content-max sino contra el
   --pad-x de su sección, y a 2560 quedan igual en 1560: entran al grupo por
   ancho, no por token. Los que quedan afuera es a propósito —hero, Estate y
   los paneles de Pionero/La Linterna van a sangre o sobre el eje del 8%, que
   es otra decisión de composición—.
   ============================================================ */
:is(.footer2__top,.footer2__bottom,.wmaking__wrap,.hitos__head,.hitos__grid,
    .wmk-team__inner,.hosp-exp__head,.leg__inner,.leg-ed__grid,
    .hx__head,.hx__grid,.est-blocks__inner,.intro__grid){
  padding-inline:var(--content-pad)}

/* Los escalones por media query salieron: la rampa del token ya deja el
   padding interno en cero por debajo de 1500px, que es donde el --pad-x solo
   alcanza. Un escalón encima volvía a apretar el ancho de lectura justo en el
   tramo de 1280–1920, que es el que más sufría. */

/* ============================================================
   PASSEPARTOUT — el marco de papel de las fotos.

   Nació en Legado y lo usan también Estate y Winemaking, así que vive acá
   y no duplicado en cada bloque. El grosor va en medida fija y no en %:
   en porcentaje cada marco lo calcularía sobre su propio ancho y saldrían
   passepartouts distintos en la misma página.

   Quien lo lleva es el contenedor, no la foto: adentro va la caja de imagen
   con su aspect-ratio y su reveal. Si el clip-path del reveal cayera sobre
   el marco, se comería el papel junto con la foto.
   ============================================================ */
:is(.leg-ed__frame,.leg-solo,.est-block__frame,.wmk-maker__frame,.estate__frame,
    .hosp-row__frame,.lw-vband__frame,.lw-finca__media){
  --leg-frame:clamp(16px,1.4vw,28px);
  position:relative;padding:var(--leg-frame);background:#FDFCF8;
  border:1px solid rgba(31,36,80,.08);
  box-shadow:0 18px 50px -30px rgba(31,36,80,.35)}

/* ============================================================
   ROMBO — primitivo de marca: rombos gold con el del medio mayor.
   Cierra el hero y el manifiesto. Vivía como .hero__rombo; al usarse
   en un segundo lugar pasó al nombre neutro en vez de duplicarse.
   La posición la pone quien lo usa; acá sólo vive la pieza.
   ============================================================ */
.rombo{display:flex;align-items:center;justify-content:center;gap:10px}
.rombo .l{width:clamp(40px,3vw,90px);height:1px}
.rombo .d{width:6px;height:6px;transform:rotate(45deg);background:var(--gold);opacity:.9}
.rombo .d.sm{width:4px;height:4px;opacity:.6}

/* wrapper del par: fondo y aire vertical. La home le suma `.vinos` para el overlap. */
/* Dos bandas: Pionero se apoya en el crema de la sección y La Linterna monta
   su propia banda blanca a sangre. El padding inferior se nombra porque la
   banda de La Linterna lo necesita para llegar hasta el final de la sección. */
.wines{position:relative;background:#FAFAF6;color:var(--navy);
  --wines-pb:clamp(100px,16vh,200px);
  padding:clamp(90px,14vh,180px) 0 var(--wines-pb)}

/* ============================================================
   PIONERO + LA LINTERNA — par de bloques compartido por
   index.html y vinos.html. Los tokens --blk-* viven en :root.
   ============================================================ */
/* ------------------------------------------------------------
   PIONERO — panel crema (40%) + foto B&W (60%); la botella se
   apoya sobre la costura de ambos y es lo último en entrar.
   ------------------------------------------------------------ */
.pionero{position:relative;display:grid;grid-template-columns:40% 60%;
  max-width:var(--canvas);margin-inline:auto;
  min-height:min(88vh,830px);isolation:isolate}

/* foto en blanco y negro: wipe de izquierda a derecha + settle de escala.
   No llega al borde: corta en --blk-inset, la misma línea que el marco gold
   de La Linterna, para que ambos bloques compartan eje derecho. */
.pionero__photo{position:relative;grid-column:2;grid-row:1;overflow:hidden;background:var(--ph-1);
  margin-right:var(--blk-inset-c);
  clip-path:inset(0 100% 0 0);transition:clip-path 1.5s var(--ease-smooth)}
.pionero.in .pionero__photo{clip-path:inset(0 0 0 0)}
/* La celda es casi cuadrada y la foto es apaisada (1.767), así que el cover
   recorta ~44% del ancho. Centrado partía al medio la cápsula en foco, que es
   el motivo de la toma: el encuadre se corre a la derecha para conservarla. */
.pionero__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:85% 50%;
  transform:scale(1.08);transition:transform 2.4s var(--ease-smooth)}
.pionero.in .pionero__bg{transform:scale(1)}
.pionero__caption{position:absolute;z-index:2;right:clamp(24px,4vw,72px);bottom:clamp(24px,5vh,56px);
  display:grid;justify-items:start;gap:6px;text-align:left;color:#fff;
  text-shadow:0 1px 14px rgba(20,20,22,.45);
  opacity:0;transform:translateY(14px);transition:opacity .9s ease,transform 1s var(--ease-expo)}
.pionero.in .pionero__caption{opacity:1;transform:none;transition-delay:1.05s}
.pionero__place{font-family:var(--font-display);letter-spacing:-.01em;line-height:1.1;
  font-size:clamp(1.15rem,1.75vw,1.75rem)}
.pionero__geo{font-family:var(--font-display);letter-spacing:-.01em;opacity:.88;
  font-size:clamp(.8rem,.95vw,1rem)}

/* panel crema + filete gold que se dibuja */
/* ojo: acá --pad-x (10%) resolvería contra el panel (40% del ancho), no contra
   el viewport. Por eso el sangrado va en vw para alinear con el resto del home. */
/* el sangrado solo empuja el texto: el filete sigue anclado a --blk-inset */
.pionero__panel{position:relative;grid-column:1;grid-row:1;display:flex;align-items:flex-end;
  padding:0 clamp(24px,3vw,56px) 0 var(--blk-text-x)}
/* corchete abierto, no caja: sin borde derecho, las líneas corren hacia la
   botella y mueren detrás de ella. Nunca tocan la foto. */
.pionero__frame{position:absolute;z-index:1;pointer-events:none;
  left:var(--blk-inset-c);right:8%;top:15.5%;bottom:12.5%;
  border:1px solid var(--gold);border-right:0;opacity:.6;
  clip-path:inset(0 100% 0 0);transition:clip-path 1.3s var(--ease-smooth) .2s}
.pionero.in .pionero__frame{clip-path:inset(0 0 0 0)}
/* el texto se apoya en el tercio inferior del panel, como en la maqueta */
.pionero__content{position:relative;z-index:2;max-width:min(400px,100%);
  margin-bottom:min(16.3vh,154px)}
/* los .pbn__* son los banners de prueba del home: misma escala, otra caja */
:is(.pionero__name,.pbn__name){font-family:var(--font-display);font-weight:400;color:var(--navy);
  font-size:var(--fs-h2);line-height:1;letter-spacing:-1px;text-transform:uppercase}
:is(.pionero__line,.pbn__line){font-family:var(--font-script);color:var(--gold);line-height:1.1;
  font-size:clamp(1.45rem,2.3vw,2.15rem);margin-top:8px}
:is(.pionero__desc,.pbn__desc){margin-top:clamp(20px,2.4vw,34px);max-width:32ch;
  font-size:.90625rem;line-height:1.9;opacity:.85}   /* 14.5px — misma bajada que .linterna__desc */
:is(.pionero__cta,.pbn__cta){margin-top:clamp(26px,3vw,46px)}
/* stagger del texto */
.pionero__name,.pionero__line,.pionero__desc,.pionero__cta{
  opacity:0;transform:translateY(18px);transition:opacity .9s ease,transform 1s var(--ease-expo)}
.pionero.in :is(.pionero__name,.pionero__line,.pionero__desc,.pionero__cta){opacity:1;transform:none}
.pionero.in .pionero__name{transition-delay:.42s}
.pionero.in .pionero__line{transition-delay:.53s}
.pionero.in .pionero__desc{transition-delay:.64s}
.pionero.in .pionero__cta{transition-delay:.75s}

/* la botella: sobre la costura crema/foto, entra al final */
.pionero__bottle{position:absolute;z-index:3;left:41%;bottom:9%;
  height:81%;width:auto;max-width:none;
  filter:drop-shadow(0 38px 56px rgba(20,20,22,.34));
  opacity:0;transform:translate(-50%,46px);
  transition:opacity 1.3s ease .48s,transform 1.5s var(--ease-expo) .48s}
.pionero.in .pionero__bottle{opacity:1;transform:translate(-50%,0)}

/* ---- Variante sin bottleshot: la botella ya está dentro de la foto ----
   Dos cosas cambian respecto del bloque con botella:
   1. El corchete se cierra. Abierto tenía sentido porque las líneas morían
      detrás de la botella; sin ella el borde quedaba cortado en el aire.
      Es el mismo criterio que ya usa el apilado en mobile.
   2. El encuadre se invierte. El default (85%) está calibrado para la foto de
      cápsulas, que tiene el motivo a la derecha; acá la etiqueta ocupa el 21%
      al 56% del ancho y ese valor le cortaría el "BEMBERG / PIONERO". */
/* .linterna solo tiene margen superior, así que un bloque puesto después queda
   pegado a su marco. Se replica el mismo aire que usa La Linterna arriba. */
.pionero--plain{margin-top:clamp(80px,12vh,170px);
  min-height:min(64vh,600px)}   /* más bajo que el bloque con botella (88vh/830) */
.pionero--plain .pionero__frame{border-right:1px solid var(--gold)}
.pionero--plain .pionero__bg{object-position:25% 50%}
/* el margen inferior de 154px estaba calibrado contra la botella y un bloque de
   830: en uno de 600 empuja el texto contra el borde superior del marco. Sin
   botella no hay nada con qué alinearlo, así que el contenido se centra. */
.pionero--plain .pionero__panel{align-items:center}
.pionero--plain .pionero__content{margin-bottom:0}

/* ------------------------------------------------------------
   LA LINTERNA — bloque enmarcado: intro a la izquierda,
   swiper de 7 parcelas a la derecha.
   ------------------------------------------------------------ */
.linterna{position:relative;
  /* los dos ejes del bloque van en tokens porque la banda de atrás tiene que
     seguirlos: el breakpoint sólo los reescribe y el margen y el pseudo se
     reacomodan solos, sin repetir el margin ni desincronizarse */
  --band-gap:clamp(80px,12vh,170px);   /* aire entre Pionero y este bloque */
  --band-x:var(--blk-inset);           /* eje lateral */
  margin:var(--band-gap) var(--band-x) 0;
  padding:clamp(48px,6vw,84px) var(--blk-pad) clamp(64px,7vw,100px);
  display:grid;grid-template-columns:26% 1fr;column-gap:clamp(30px,4vw,70px);
  align-items:end;                 /* el intro cierra a la altura del pie de las cards */
  --lint-pb:clamp(14px,1.6vw,26px)}   /* padding inferior del track, replicado en el intro */
/* La banda blanca va en un pseudo y no como background del bloque porque el
   bloque está metido --blk-inset de cada lado: con fondo propio el blanco
   quedaba como panel flotando sobre el crema, que es justo lo que se sacó.
   Arriba se come el aire que lo separa de Pionero y abajo el padding de la
   sección, así la banda arranca donde termina Pionero y llega hasta el final.
   El fallback del padding cubre el caso de un .linterna fuera de .wines. */
.linterna::before{content:"";position:absolute;z-index:0;
  top:calc(var(--band-gap) * -1);bottom:calc(var(--wines-pb, 0px) * -1);
  left:calc(var(--band-x) * -1);right:calc(var(--band-x) * -1);
  background:var(--sand)}
/* el padding-bottom iguala al del track: sin él, el texto caía --lint-pb por debajo de las cards */
.linterna__intro{position:relative;z-index:2;min-width:0;
  padding-left:clamp(8px,1.6vw,30px);padding-bottom:var(--lint-pb)}
.linterna__name{font-family:var(--font-display);font-weight:400;color:var(--navy);
  font-size:var(--fs-h2);line-height:1;letter-spacing:-1px;text-transform:uppercase}
.linterna__line{font-family:var(--font-script);color:var(--gold);line-height:1.1;
  font-size:clamp(1.35rem,2.1vw,2rem);margin-top:8px}
.linterna__desc{margin-top:clamp(18px,2.2vw,30px);max-width:32ch;
  font-size:.90625rem;line-height:1.9;opacity:.85}   /* 14.5px — misma bajada que .pionero__desc/.pbn__desc */
.linterna__cta{margin-top:clamp(24px,2.8vw,42px)}
.linterna__name,.linterna__line,.linterna__desc,.linterna__cta{
  opacity:0;transform:translateY(18px);transition:opacity .9s ease,transform 1s var(--ease-expo)}
.linterna.in :is(.linterna__name,.linterna__line,.linterna__desc,.linterna__cta){opacity:1;transform:none}
.linterna.in .linterna__name{transition-delay:.24s}
.linterna.in .linterna__line{transition-delay:.33s}
.linterna.in .linterna__desc{transition-delay:.42s}
.linterna.in .linterna__cta{transition-delay:.51s}

/* swiper nativo: scroll-snap + arrastre (táctil nativo, mouse por JS);
   las flechas y el teclado son el atajo */
.linterna__viewport{position:relative;z-index:2;min-width:0}
.linterna__track{--lint-gap:clamp(16px,1.9vw,36px);
  cursor:grab;
  display:flex;gap:var(--lint-gap);list-style:none;
  overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  scrollbar-width:none;-ms-overflow-style:none;
  padding-block:clamp(10px,1.2vw,20px) var(--lint-pb)}  /* aire para el recuadro y la sombra del hover */
.linterna__track::-webkit-scrollbar{display:none}
.linterna__track:focus-visible{outline:1px solid var(--gold);outline-offset:8px}
/* mientras se arrastra: sin selección de texto ni hover de las cards */
.linterna__track.is-dragging{cursor:grabbing;user-select:none;scroll-behavior:auto}
/* alcanza a la caja sin link: si no, al arrastrar las cards se encienden y se
   apagan bajo el dedo, que es justo lo que esta regla vino a evitar */
.linterna__track.is-dragging :is(a,.lint-card__box){pointer-events:none}
.linterna__track.is-dragging img{transform:none!important}
/* 3 cards a la vista: más angostas, con la botella entera dentro de la caja */
.lint-card{flex:0 0 calc((100% - var(--lint-gap) * 2) / 3);scroll-snap-align:start;display:flex;
  opacity:0;transform:translateY(26px);
  transition:opacity .85s ease,transform .95s var(--ease-expo)}
.linterna.in .lint-card{opacity:1;transform:none}
.linterna.in .lint-card:nth-child(1){transition-delay:.40s}
.linterna.in .lint-card:nth-child(2){transition-delay:.50s}
.linterna.in .lint-card:nth-child(3){transition-delay:.60s}
.linterna.in .lint-card:nth-child(n+4){transition-delay:.68s}
/* En reposo la card es sólo la botella y su rótulo sobre el blanco del bloque:
   nada de caja. El recuadro y la sombra aparecen en hover y son toda la
   respuesta —de ahí que el borde exista siempre en transparente, para que el
   alto no salte al pintarlo. */
/* La caja existe con o sin link: hoy solo el Malbec de El Tomillo tiene ficha
   propia y va envuelto en <a>; el resto usa .lint-card__box. Las dos comparten
   caja y hover —la respuesta al mouse es de la línea entera, no un privilegio
   del único vino enlazado—; lo que no se comparte es lo que implica navegar:
   el cursor y el anillo de foco quedan sólo en el <a>. Cuando cada parcela
   tenga su ficha, alcanza con volver a envolverlas en <a>. */
.lint-card > :is(a,.lint-card__box){flex:1;display:flex;flex-direction:column;min-width:0;color:var(--navy);
  background:#fff;border:1px solid transparent;
  padding:clamp(26px,2.6vw,44px) clamp(18px,1.8vw,32px) clamp(28px,2.8vw,46px);
  transition:box-shadow .7s var(--ease-expo),border-color .7s var(--ease-expo)}
.lint-card > :is(a,.lint-card__box):hover{border-color:rgba(31,36,80,.07);
  box-shadow:0 12px 26px -20px rgba(31,36,80,.26),0 3px 9px -7px rgba(31,36,80,.08)}
.lint-card > a:focus-visible{outline:1px solid var(--gold);outline-offset:4px}
/* caja vertical: con la card angosta, la botella entra completa.
   Centrado por inset+margin:auto y topes de max-*: un height en % resolvería
   contra la altura natural del PNG y desbordaría la caja. */
.lint-card__media{position:relative;width:100%;aspect-ratio:1/1.55;
  margin-bottom:clamp(16px,1.7vw,26px)}
.lint-card__media img{position:absolute;inset:0;margin:auto;
  width:auto;height:auto;max-width:82%;max-height:100%;
  transition:transform .9s var(--ease-expo)}
.lint-card > :is(a,.lint-card__box):hover .lint-card__media img{transform:translateY(-8px)}
.lint-card__finca{font-family:var(--font-display);letter-spacing:-1px;font-weight:400;color:var(--navy);text-align:center;
  font-size:clamp(1rem,1.25vw,1.35rem);line-height:1.15}
.lint-card__grape{display:block;text-align:center;font-family:var(--font-display);color:var(--gold);
  text-transform:uppercase;letter-spacing:-.01em;
  font-size:clamp(.72rem,.85vw,.9rem);margin-top:clamp(8px,.9vw,14px)}
.lint-card__grape::after{content:"";display:block;width:34px;height:1px;background:var(--gold);
  margin:clamp(10px,1.1vw,16px) auto 0;transform:scaleX(0);
  transition:transform .6s var(--ease-expo)}
.lint-card > :is(a,.lint-card__box):hover .lint-card__grape::after{transform:scaleX(1)}
/* el vino que se está viendo (la-linterna.html) queda marcado */
.lint-card.is-current .lint-card__grape::after{transform:scaleX(1)}

.linterna__nav{position:absolute;z-index:3;right:clamp(24px,3.4vw,62px);bottom:clamp(18px,2.4vw,38px);
  display:flex;gap:clamp(12px,1.5vw,24px);
  opacity:0;transition:opacity .8s ease}
.linterna.in .linterna__nav{opacity:1;transition-delay:.75s}
.linterna__arrow{width:34px;height:34px;display:grid;place-items:center;color:var(--navy);opacity:.75;
  transition:opacity .4s ease,transform .45s var(--ease-expo)}
.linterna__arrow:hover:not(:disabled){opacity:1}
.linterna__arrow:disabled{opacity:.2;cursor:default}
.linterna__arrow:focus-visible{outline:1px solid var(--gold);outline-offset:6px}
.linterna__arrow svg{width:26px;height:26px;stroke:currentColor;fill:none;
  stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}
.linterna__nav .linterna__arrow:first-child:hover:not(:disabled){transform:translateX(-3px)}
.linterna__nav .linterna__arrow:last-child:hover:not(:disabled){transform:translateX(3px)}

@media(max-width:1100px){
  .linterna{grid-template-columns:31% 1fr}
  .lint-card{flex-basis:calc((100% - var(--lint-gap) * 1.2) / 2.2)}
}
@media(max-width:900px){
  /* PIONERO apilado: foto cuadrada con la botella centrada, panel debajo */
  .pionero{grid-template-columns:1fr;min-height:0}
  .pionero__photo{grid-column:1;grid-row:1;aspect-ratio:1/1;margin-right:0}
  .pionero__panel{grid-column:1;grid-row:2;display:block;
    padding:clamp(50px,10vw,80px) var(--pad-x)}
  .pionero__frame{left:clamp(14px,3.5vw,28px);right:clamp(14px,3.5vw,28px);
    top:clamp(14px,3vw,26px);bottom:clamp(14px,3vw,26px);
    border-right:1px solid var(--gold)}   /* apilado sí cierra la caja */
  .pionero__content{max-width:none;margin-bottom:0}
  /* apilado, los % se medirían contra el bloque entero: la foto es 1/1 a
     ancho completo, así que la botella se ancla en vw sobre ella. */
  .pionero__bottle{left:50%;top:50vw;bottom:auto;height:78vw;
    filter:drop-shadow(0 20px 34px rgba(20,20,22,.34));
    transform:translate(-50%,-50%) translateY(30px)}
  .pionero.in .pionero__bottle{transform:translate(-50%,-50%)}
  .pionero__caption{right:clamp(16px,4vw,30px);bottom:clamp(16px,4vw,30px)}
  /* LA LINTERNA apilada */
  /* sólo se reescriben los dos ejes: el margen y la banda de atrás los siguen */
  .linterna{--band-gap:clamp(60px,12vw,110px);--band-x:calc(var(--pad-x) * .5);
    grid-template-columns:1fr;row-gap:clamp(30px,6vw,52px);
    padding:clamp(40px,7vw,64px) clamp(24px,5vw,40px) clamp(74px,13vw,100px)}   /* mismo margen lateral que el panel de Pionero: los dos textos arrancan sobre la misma vertical */
  .linterna__intro{padding-left:0}
  .lint-card{flex-basis:76%}
  .linterna__nav{right:clamp(18px,4vw,32px);bottom:clamp(20px,4vw,34px)}
}
@media(max-width:560px){
  /* ---- La Linterna en una sola pantalla ----
     Apilado, el bloque medía más de un viewport: había que scrollear para
     llegar a la botella y otra vez para volver al texto, así que nunca se
     veían juntos.
     Acá la sección se compromete a 100dvh y reparte: el texto centrado
     arriba, el carrusel abajo con la card dimensionada por ALTO —lo que
     queda— y no por ancho. El dvh y no vh porque en iOS la barra de
     direcciones se retrae y con vh la última card quedaba cortada. */
  .linterna{min-height:100dvh;
    grid-template-rows:auto 1fr;align-content:center;
    row-gap:clamp(16px,3vw,26px);
    padding-block:clamp(22px,5vw,36px) clamp(30px,6vw,46px)}
  .linterna__intro{text-align:left;padding-bottom:0}
  /* alineado a la izquierda, como el resto de los bloques de texto; el nombre es un <img> en bloque y text-align no lo mueve */
  .linterna__name{display:flex;justify-content:flex-start}
  /* Sin el tope de 32ch: en esta columna angosta ese máximo dejaba el párrafo
     más metido que el resto del bloque —se leía como una caja aparte— y lo
     partía en un renglón más. Acá la medida la da la columna, igual que
     cualquier otro texto de la página. */
  .linterna__desc{margin-inline:0;max-width:none}
  .linterna__viewport{display:flex;align-items:center;min-height:0}
  .linterna__track{width:100%;padding-block:0;align-items:center}
  /* Dos botellas por swipe. Antes la card se medía por ALTO (34dvh) para que
     el bloque entrara en 100dvh, pero a ese alto la segunda botella asomaba
     por la mitad: el swipe no leía "de a dos" sino "una y un pedazo". Ahora
     manda el ancho —dos cards más el gap llenan el track— y el alto sale del
     aspect-ratio. El bloque sigue entrando: la card baja de alto y el párrafo,
     ya sin el tope de 32ch, ocupa un renglón menos. */
  .lint-card{flex:0 0 calc((100% - var(--lint-gap)) / 2)}
  .lint-card__media{width:100%;height:auto;aspect-ratio:1/1.55}
  /* las flechas se superponían a la última card en una sección tan justa */
  .linterna__nav{position:static;justify-content:center;margin-top:14px}
}

/* ============================================================
   PIONERO · BANNERS DE PRUEBA (A/B) — misma familia que .pionero
   pero en caja de banner, sin bottleshot. Comparten estructura y
   sólo cambia la relación panel/foto:
     .pbn--a  panel al ras de la foto, corchete abierto a la derecha
     .pbn--b  foto corrida a la derecha y ficha montada encima
   Global (no dentro de body.home) porque se ven igual en la home
   y en vinos-2.html. Si se elige una, borrar la otra y esta nota.
   ============================================================ */
.pbn{position:relative;margin:clamp(70px,10vh,140px) var(--blk-inset) 0}
/* el margen superior es el aire ENTRE bloques; abriendo la sección se sumaría
   al padding de .wines y el banner arrancaría hundido. Es el caso de la home,
   donde Pionero es ahora el primer bloque de la sección. */
.wines > .pbn:first-child{margin-top:0}
.pbn__photo{position:relative;overflow:hidden;background:#000;
  clip-path:inset(0 100% 0 0);transition:clip-path 1.5s var(--ease-smooth)}
.pbn.in .pbn__photo{clip-path:inset(0 0 0 0)}
.pbn__photo img{width:100%;height:100%;object-fit:cover;
  transform:scale(1.06);transition:transform 2.4s var(--ease-smooth)}
.pbn.in .pbn__photo img{transform:none}
.pbn__panel{position:relative;background:#fff;display:flex;align-items:center}
/* el marco es el borde del panel, no una caja interior: por eso va a inset:0.
   Va en un span aparte para poder bajarle la opacidad sin tocar el texto y
   para que el trazo se dibuje con el mismo wipe que usa el resto del sitio. */
.pbn__frame{position:absolute;inset:0;z-index:1;pointer-events:none;
  border:1px solid var(--gold);opacity:.6;
  clip-path:inset(0 100% 0 0);transition:clip-path 1.3s var(--ease-smooth) .2s}
.pbn.in .pbn__frame{clip-path:inset(0 0 0 0)}
.pbn__content{position:relative;z-index:2;max-width:min(400px,100%)}
.pbn :is(.pbn__name,.pbn__line,.pbn__desc,.pbn__cta){
  opacity:0;transform:translateY(18px);transition:opacity .9s ease,transform 1s var(--ease-expo)}
.pbn.in :is(.pbn__name,.pbn__line,.pbn__desc,.pbn__cta){opacity:1;transform:none}
.pbn.in .pbn__name{transition-delay:.42s}
.pbn.in .pbn__line{transition-delay:.53s}
.pbn.in .pbn__desc{transition-delay:.64s}
.pbn.in .pbn__cta{transition-delay:.75s}

/* — A — panel y foto comparten altura y costura. El marco se abre a la
   derecha: cerrarlo dibujaría una línea gold contra el negro de la foto. */
.pbn--a{display:grid;grid-template-columns:33% 1fr;
  min-height:min(56vh,560px)}
.pbn--a .pbn__frame{border-right:0}
.pbn--a .pbn__panel{padding:clamp(44px,5vw,84px) clamp(30px,3.6vw,68px)}
.pbn--a .pbn__photo img{object-position:30% 50%}

/* — B — la foto arranca adentro y sangra a la derecha; la ficha se monta
   sobre su borde izquierdo. Acá el marco sí cierra: la ficha es una pieza
   suelta y un corchete abierto la dejaría desflecada sobre la foto. */
.pbn--b .pbn__photo{margin-left:27%;height:min(58vh,580px)}
.pbn--b .pbn__photo img{object-position:36% 50%}
.pbn--b .pbn__panel{position:absolute;z-index:2;left:0;top:50%;transform:translateY(-50%);
  width:min(34%,520px);
  padding:clamp(44px,4.6vw,26px) clamp(30px,3.4vw,62px)}

@media(max-width:900px){
  /* apilado: foto arriba, ficha debajo a ancho completo. En B la ficha deja de
     flotar, así que pierde el sentido el desplazamiento y el ancho acotado. */
  .pbn{margin-inline:calc(var(--pad-x) * .5)}
  .pbn--a{grid-template-columns:1fr;min-height:0}
  .pbn--a .pbn__photo{grid-row:1;aspect-ratio:4/3}
  .pbn--a .pbn__panel{grid-row:2;padding:clamp(40px,8vw,64px) clamp(24px,5vw,40px)}
  .pbn--a .pbn__frame{border-right:1px solid var(--gold)}
  .pbn--b .pbn__photo{margin-left:0;height:auto;aspect-ratio:4/3}
  /* relative y no static: .pbn__frame es absolute con inset:0, así que su caja
     es la del panel sólo mientras el panel esté posicionado. Con static el
     marco se colgaba de .pbn y se estiraba sobre el padding del banner —el
     mismo bug que en desktop, con el signo cambiado—. Relative lo deja atado
     a la card en las dos maquetas. El top del banner flotante se anula acá:
     apilado el panel no se centra contra nada. */
  .pbn--b .pbn__panel{position:relative;top:auto;transform:none;width:auto;
    padding:clamp(40px,8vw,64px) clamp(24px,5vw,40px)}
  /* Apilado el aire de abajo se mide contra el ancho y no contra el alto: el
     9vh del token da ~76px en un teléfono y la card quedaba demasiado cerca
     de la banda blanca de La Linterna. El piso sube a 90px. */
  .pbn{--pbn-pb:clamp(90px,14vw,140px)}
  /* Apiladas, las columnas de texto toman el ancho del contenedor: el 32ch y el
     tope de 400px del desktop las dejaban a ~300px con aire de sobra a los lados. */
  .pbn__content{max-width:none;width:100%}
  :is(.pionero__desc,.pbn__desc,.linterna__desc){max-width:none}
}

/* ---- Variante B del par Pionero + La Linterna (body.wines-b) --------
   Zona global y no dentro de body.home: el mismo par aparece en la home
   (index2) y en la subpágina de vinos, y lo que cambia es el tratamiento
   del bloque, no el tipo de página. Va por clase en el <body> y no por
   scope porque vinos-2.html y la-linterna-el-tomillo.html son subpage y
   usan estas mismas clases sin querer este tratamiento.

   1. Aire propio al pie del banner de Pionero. Hacía falta porque el
      hueco que quedaba hasta La Linterna no era crema: la banda blanca
      de ese bloque se estira hacia arriba --band-gap y arrancaba unos
      píxeles por encima del borde de Pionero, así que el banner apoyaba
      directamente sobre el blanco. El padding va en .pbn y no un margin
      porque el margin colapsaría contra el margin-top de .linterna y no
      sumaría; además la banda sigue anclada a .linterna, así que este
      padding es justo el crema que se abre entre los dos. Como el panel
      de la maqueta B se centra con top:50% sobre la caja de .pbn, se le
      descuenta la mitad para que no baje con el padding. Esa corrección
      va en @media de escritorio y no suelta: apilado el panel no flota y
      un top acá le movería la card sin motivo.

      El marco NO necesita compensación. Es absolute con inset:0 y su caja
      es la del panel, no la de .pbn, así que el padding-bottom del banner
      le queda afuera por definición: el corchete cierra contra el pie de
      la card y el aire crema pasa por debajo. Hubo un bottom:--pbn-pb acá
      que asumía lo contrario y en escritorio recortaba el filete --pbn-pb
      por dentro del panel: el trazo gold cerraba arriba del CTA y el
      último tramo de la ficha quedaba blanco y sin borde.
   2. El intro de La Linterna se centra contra el carrusel en vez de
      apoyarse en el pie de las cards. El align-self alcanza —no hace
      falta tocar el align-items:end del grid, que sigue sirviendo al
      track— y se anula el padding-bottom, que existía sólo para afinar
      esa alineación al pie y centrado descolocaría el bloque media
      --lint-pb hacia arriba.
   3. Los títulos pasan de texto a logotipo. El heading se conserva —la
      jerarquía y el nombre accesible siguen ahí, ahora vía alt— y el
      <img> hereda los reveals que ya colgaban de .pbn__name /
      .linterna__name. El tope va en múltiplos de --fs-h2 y no en px
      fijos: el ancho del texto era proporcional a su cuerpo, así que
      atándolo al mismo token los logos escalan igual que escalaba la
      palabra. width:100% + max-width y no width fijo: en columnas más
      angostas que el tope el logo baja con la caja en vez de desbordar.
   -------------------------------------------------------------------- */
body.wines-b{
  .pbn{--pbn-pb:clamp(70px,9vh,140px);padding-bottom:var(--pbn-pb)}
  @media(min-width:901px){
    .pbn--b .pbn__panel{top:calc(50% - var(--pbn-pb) / 2)}
  }

  .linterna__intro{align-self:center;padding-bottom:0}

  :is(.pbn__name,.linterna__name) img{display:block;width:100%;height:auto}
  .pbn__name img{max-width:calc(var(--fs-h2) * 4.55)}       /* 182px @ 40px */
  .linterna__name img{max-width:calc(var(--fs-h2) * 5.5)}   /* 220px @ 40px */
}

/* ============================================================
   MENÚ FULLSCREEN — componente compartido por home y subpáginas.
   Global a propósito: estaba duplicado en los dos scopes y así no
   se puede desincronizar. --pad-x se hereda del <body> de cada tipo.
   ============================================================ */
.menu2{position:fixed;inset:0;z-index:1400;background:#FAFAF6;color:var(--navy);
  clip-path:inset(0 0 0 100%);                 /* oculto: colapsado al borde derecho */
  /* dvh y no sólo el inset:0. En iOS y en Android la barra de direcciones se
     retrae y vuelve: con el viewport grande el pie del panel quedaba por
     debajo del chrome del navegador y no se podía tocar. */
  height:100dvh;
  /* Y si aun así no entra —teléfono bajo, tipografía del sistema agrandada—,
     el panel scrollea en vez de recortar el pie. El contain evita que el
     scroll se filtre a la página de atrás al llegar al final. */
  overflow-y:auto;overscroll-behavior:contain;
  display:flex;flex-direction:column;justify-content:flex-start;align-items:center;
  padding:clamp(70px,9vh,110px) var(--pad-x) 40px;pointer-events:none}
.menu2.is-open{pointer-events:auto}
.menu2__logo{width:min(210px,40vw);margin-bottom:clamp(30px,4.5vh,54px)}
.menu2__list{display:flex;flex-direction:column;align-items:center;gap:clamp(26px,3.2vh,50px);
  list-style:none}
.menu2__item{overflow:hidden;text-align:center}
.menu2__reveal{display:block}
.menu2__item a{display:inline-block}      /* el ancho lo fija el tagline, no el nombre */
.menu2__name{font-family:var(--font-display);text-transform:uppercase;
  font-size:1rem;letter-spacing:-.01em;line-height:1.1;   /* el clamp anterior tenía min>max y siempre daba 1.5rem */
  transition:color .35s}
.menu2__item a:hover .menu2__name{color:var(--gold)}
.menu2__tag{font-family:var(--font-display);letter-spacing:-.01em;font-style:italic;color:#6d6d6d;opacity:.7;
  font-size:clamp(.83rem,1.16vw,1.03rem);margin-top:5px;display:block}
/* los tres bloques comparten fuente y tamaño: el font-family vive solo acá */
/* El margin-top:auto empuja el pie abajo cuando sobra alto, pero cuando el
   contenido llena el panel colapsa a cero y el pie aterrizaba pegado al
   tagline del último ítem —"Autenticar botella" tocando "Bemberg por el
   mundo"—. El padding-top es el piso de aire que queda siempre, haya sobrante
   o no; el auto sigue haciendo lo suyo cuando lo hay. */
.menu2__foot{width:100%;margin-top:auto;padding-top:clamp(26px,4vh,44px);
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  font-family:var(--font-ui);font-weight:300;font-size:10px;letter-spacing:.1em;color:var(--navy)}
/* mismo hover que los ítems del menú: gold */
.menu2__foot a{opacity:.75;transition:opacity .35s,color .35s}
.menu2__foot a:hover,.menu2__foot a:focus-visible{opacity:1;color:var(--gold)}
.menu2__foot .mid{display:flex;gap:12px;opacity:.8}
.menu2__foot .l{text-decoration:underline;text-underline-offset:4px;text-transform:uppercase}
.menu2__foot .r{display:inline-flex;align-items:center;gap:7px}
.menu2__ig{width:13px;height:13px;flex:none;stroke:currentColor;fill:none;stroke-width:1.6}
@media(max-width:720px){
  /* Los tres bloques del pie se apilan y se centran. El gap pasa a 0 porque
     el aire ya no lo da el gap sino el alto de toque de cada enlace: con las
     dos cosas juntas el pie se iba de largo. */
  .menu2__foot{flex-direction:column;gap:0;text-align:center;font-size:10px}
  .menu2__foot .mid{flex-wrap:wrap;justify-content:center;gap:0 22px}
  /* Las barras salen. Como cada enlace es un ítem de flex que envuelve por su
     cuenta, la "/" podía caer al final del renglón y quedaba huérfana
     —"Contacto / Puntos de venta /" y abajo "Políticas de privacidad"—. Sin
     ellas, el gap ya separa y no hay nada que se parta mal. */
  .menu2__foot .mid > span{display:none}
  /* 40px de área de toque. Son el piso cómodo para el pulgar —sin área propia
     estos enlaces medían 13px de alto y no había forma de acertarles— pero
     bajan de los 44 del ítem principal a propósito: son secundarios y tienen
     que pesar menos, además de devolverle alto al bloque. El inline-flex
     centra el texto dentro de esa altura sin agrandar la tipografía. */
  .menu2__foot :is(.l,.mid a){min-height:38px;
    display:inline-flex;align-items:center;justify-content:center}
  /* El @ sale del menú en móvil. Apilado perdía lo que lo distinguía en la
     fila de escritorio —estar al otro extremo del pie— y caía como un cuarto
     renglón centrado igual que Contacto / Puntos de venta: leía como un ítem
     más de navegación, con un ícono que además es el único del panel. El
     bloque secundario queda en dos renglones y el guiño social sigue en el
     pie de página, que en móvil está a un scroll. */
  .menu2__foot .r{display:none}
  /* El bloque se lee como dos grupos y no como una lista larga: navegación
     arriba, pegada al logo, y todo lo secundario abajo, despegado. Para eso la
     mitad de arriba se comprime y el aire recuperado se vuelca en la
     separación con el pie. En pantallas altas esa separación la da sola el
     margin-top:auto del pie, que se come todo el sobrante: el padding-top es
     sólo el piso.
     Todo se mide contra el ALTO y no contra el ancho, y ésa es también la
     corrección del logo cortado: los pisos de los clamp no eran el problema
     —en un teléfono bajo nunca llegaban a mandar—, mandaba el término en vh.
     Con coeficientes altos el contenido se pasaba del panel; pasado el panel
     scrollea, y apenas corrido un poco lo primero que se recorta contra el
     borde de arriba es el escudo del logo.
     Con estos coeficientes el menú entra sin scroll desde ~610px de alto, que
     es lo que deja un Android con la barra del navegador desplegada. En
     pantallas normales los mismos términos se abren solos y respira igual. */
  .menu2{padding-top:clamp(26px,4vh,110px);padding-bottom:clamp(20px,3vh,40px)}
  /* El 15vh es lo que evita el recorte: atado sólo al ancho, en una pantalla
     ancha pero baja el logo seguía midiendo 128px y era el que empujaba todo
     hacia afuera. Ahora achica cuando la pantalla es baja. */
  .menu2__logo{width:min(128px,30vw,15vh);margin-bottom:clamp(12px,1.6vh,54px)}
  .menu2__list{gap:clamp(10px,1.8vh,50px)}
  .menu2__foot{padding-top:clamp(30px,5.5vh,80px)}
}

/* ============================================================
   HEADER — barra fija: transparente sobre el hero, franja blanca
   al scrollear. Compartida por las 10 páginas: estaba duplicada en
   los dos scopes y la única diferencia real era el alto, que ahora
   es el token --hdr-h.
   ============================================================ */
.hdr{position:fixed;top:0;left:0;width:100%;z-index:1600;color:#fff;min-height:var(--hdr-h);
  background:transparent;
  display:flex;align-items:center;justify-content:space-between;
  padding:8px var(--pad-x);transition:color .4s ease,background .4s ease}
.hdr.is-solid{color:var(--navy);background:#fafaf6;box-shadow:0 1px 0 rgba(31,36,80,.08)}
/* íconos oscuros + header siempre visible sobre el panel del menú */
body.menu-open .hdr{color:var(--navy);transform:none!important;box-shadow:none}
/* logo centrado: blanco sobre el hero · color con la franja blanca · oculto con el menú abierto */
.hdr__logo-link{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  height:82px;display:block;z-index:2}
.hdr__logo{position:static;transform:none;display:block;
  height:100%;width:auto;pointer-events:none;transition:opacity .4s ease}
.hdr__logo--color{opacity:0}
.hdr.is-solid .hdr__logo--color{opacity:1}
body.menu-open .hdr .hdr__logo{opacity:0}   /* el panel ya tiene su propio logo */

/* ---- lang: globo + chevron + dropdown de idiomas ---- */
.lang{position:relative}
.lang__btn{display:flex;align-items:center;gap:8px}
.lang svg{stroke:currentColor;fill:none;stroke-width:1.2}
.globe{width:20px;height:20px}
.chev{width:12px;height:12px;transition:transform .4s var(--ease-expo)}
.lang.is-open .chev{transform:rotate(180deg)}
.lang__row{position:absolute;top:calc(100% + 14px);left:0;display:flex;align-items:center;gap:10px;
  white-space:nowrap;opacity:0;transform:translateY(-6px);pointer-events:none;
  transition:opacity .4s var(--ease-expo),transform .4s var(--ease-expo)}
.lang.is-open .lang__row{opacity:1;transform:translateY(0);pointer-events:auto}
.lang__row button{font-family:var(--font-display);letter-spacing:-.01em;font-style:italic;font-size:clamp(15px,1.4vw,19px);
  opacity:.6;transition:opacity .3s}
.lang__row button:hover,.lang__row button.is-active{opacity:1}
.lang__row button.is-active{text-decoration:underline;text-underline-offset:5px}
.lang__row span{opacity:.4;font-style:italic}

/* Áreas táctiles: el dibujo queda del tamaño de diseño, pero la zona que
   responde al dedo llega a ~44px (mínimo de iOS/Android). Se agranda con un
   pseudo-elemento y márgenes negativos, sin mover nada del layout. */
.lang__btn,.burger,.lang__row button{position:relative;touch-action:manipulation;
  -webkit-tap-highlight-color:transparent}
.lang__btn::after,.burger::after{content:"";position:absolute;inset:-12px -10px}
.lang__row button{padding:12px 4px;margin:-12px -4px}

/* ---- hamburguesa (3 barras) → X ----
   Las tres se apoyan en top:50% y se separan con translateY, no con top/bottom:
   así el cierre en X anima sólo transform y opacity, que no reflowean. Con
   top/bottom el salto al centro era instantáneo (no estaban en la transición)
   y sólo se veía girar la diagonal. */
.burger{width:20px;height:20px;position:relative;display:block}
.burger span{position:absolute;left:0;top:50%;width:100%;height:1.6px;background:currentColor;
  transition:transform .4s var(--ease-expo),opacity .25s var(--ease-expo)}
.burger span:nth-child(1){transform:translateY(calc(-50% - 6px))}
.burger span:nth-child(2){transform:translateY(-50%)}
.burger span:nth-child(3){transform:translateY(calc(-50% + 6px))}
/* al cerrar, la del medio vuelve recién cuando las otras ya se separaron */
.burger span:nth-child(2){transition-delay:.18s}
/* en X: se cruzan las de los extremos y la del medio se retrae hacia el punto
   de cruce en vez de apagarse en el lugar. Sin delay: tiene que irse antes de
   que llegue la diagonal, o se la ve atravesada un cuadro. */
.burger.is-open span:nth-child(1){transform:translateY(-50%) rotate(45deg)}
.burger.is-open span:nth-child(2){opacity:0;transform:translateY(-50%) scaleX(.25);transition-delay:0s}
.burger.is-open span:nth-child(3){transform:translateY(-50%) rotate(-45deg)}

/* ============================================================
   FOOTER — navy, logo blanco a la izquierda + columnas de enlaces.
   Igual que el header: idéntico en las 10 páginas, una sola copia.
   ============================================================ */
.footer2{position:relative;z-index:8;background:var(--navy);color:var(--cream);
  padding:clamp(70px,10vh,130px) var(--pad-x) 36px}
.footer2__top{max-width:var(--content-max);margin:0 auto;display:grid;grid-template-columns:1fr 5fr;
  gap:clamp(40px,6vw,100px);align-items:start}
.footer2__brand img{height:clamp(70px,7vw,100px);width:auto;opacity:.95}
.footer2__since{display:block;margin-top:22px;font-family:var(--font-ui);font-weight:300;
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(250,243,236,.5)}
.footer2__cols{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(24px,3vw,50px)}
.footer2__col{display:flex;flex-direction:column;gap:13px}
.footer2__h{font-family:var(--font-ui);font-weight:300;text-transform:uppercase;letter-spacing:.24em;
  font-size:11px;line-height:23px;color:var(--gold);margin-bottom:8px}
/* Un punto por debajo del rótulo de columna (.footer2__h, 11px): venían en
   12px, o sea más grandes que su propio título, y el bloque se leía invertido
   —el ítem pesaba más que el rubro que lo agrupa—. */
.footer2__col a{font-family:var(--font-ui);font-weight:300;font-size:10px;letter-spacing:.13em;
  text-transform:uppercase;
  color:rgba(250,243,236,.72);transition:color .4s,padding-left .4s var(--ease-expo)}
.footer2__col a:hover{color:var(--cream);padding-left:5px}
.footer2__bottom{max-width:var(--content-max);margin:clamp(50px,7vw,90px) auto 0;padding-top:26px;
  border-top:1px solid rgba(192,148,108,.2);display:flex;justify-content:space-between;
  gap:14px 26px;flex-wrap:wrap}
.footer2__bottom span{font-family:var(--font-ui);font-weight:300;font-size:10px;letter-spacing:.1em;
  color:rgba(250,243,236,.4)}
@media(max-width:860px){
  .footer2__top{grid-template-columns:1fr;gap:50px}
  .footer2__cols{grid-template-columns:1fr 1fr;align-items:start}
}
/* ---- Pie en teléfono ----
   Antes las cuatro columnas se apilaban en una sola. Eso dejaba la mitad
   derecha del pie vacía, estiraba el bloque a más de 500px de alto y ponía
   trece enlaces de 13px seguidos, imposibles de acertar con el pulgar.
   Se quedan en dos columnas —los grupos son cortos y entran de sobra en la
   mitad de un teléfono— y cada enlace pasa a tener área de toque propia. El
   resultado es más bajo que la versión apilada y, además, se puede usar. */
@media(max-width:480px){
  .footer2__cols{grid-template-columns:1fr 1fr;gap:clamp(20px,5vw,32px)}
  /* el gap del grupo se va a cero: el aire entre enlaces ahora lo da el alto
     de toque de cada uno. Con las dos cosas juntas el pie se iba de largo. */
  .footer2__col{gap:0}
  .footer2__h{margin-bottom:6px}
  /* 38px, el mismo piso que los secundarios del menú hamburguesa: son el
     mismo tipo de enlace y tienen que pesar y medir igual en todo el sitio.
     El flex centra el texto en esa altura sin agrandar la tipografía. */
  .footer2__col a{min-height:38px;display:flex;align-items:center}
  /* el rombo se centraba con top:50% sobre una caja de 13px; ahora la caja
     mide 38 y el 50% sigue cayendo en el medio del renglón */
  .footer2__bottom{flex-direction:column;gap:10px}
}

/* ============================================================
   HOME (index) — oscuro, scroll-driven
   ============================================================ */
body.home{
  --cream:#FAF3EC;
  --hdr-h:75px;
  background:var(--ink);color:var(--cream);font-family:var(--font-body);font-weight:500;-webkit-font-smoothing:antialiased;

/* ============================================================
   VERIFICACIÓN DE EDAD — popup centrado con overlay en la entrada del
   home. Va por encima de todo (hdr:1600, menu2:1400): el scrim oscuro
   alcanza para dejar inertes header y burger sin desactivarlos por
   script, no hay nada debajo con que interactuar hasta cerrarlo.
   El fade de entrada es solo de la tarjeta —el scrim es instantáneo,
   para no dejar destapado un frame del hero antes de que pinte el gate.
   ============================================================ */
.age-gate{position:fixed;inset:0;z-index:2400;background:rgba(20,20,22,.72);
  display:grid;place-items:center;padding:var(--pad-x);
  transition:opacity .6s var(--ease-smooth)}
.age-gate.is-closing{opacity:0;pointer-events:none}
.age-gate__panel{max-width:min(380px,100%);text-align:center;
  background:var(--cream);padding:clamp(36px,5vw,52px) clamp(28px,4vw,42px);
  box-shadow:0 30px 80px -20px rgba(0,0,0,.55);
  animation:ageGateIn 1s var(--ease-smooth) both}
@keyframes ageGateIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.age-gate__lang{display:flex;align-items:center;justify-content:center;gap:10px;
  margin-bottom:clamp(20px,3vw,28px);
  font-family:var(--font-ui);font-weight:500;text-transform:uppercase;letter-spacing:3px;font-size:11px}
.age-gate__lang button{color:var(--navy);opacity:.5;transition:opacity .3s var(--ease-smooth)}
.age-gate__lang button:hover,.age-gate__lang button.is-active{opacity:1}
.age-gate__lang button.is-active{color:var(--gold)}
.age-gate__lang-div{width:1px;height:11px;background:var(--navy);opacity:.35}
.age-gate__crest{width:clamp(100px,10vw,200px);margin:-2px auto clamp(26px,4.4vw,19px);opacity:.92}
.age-gate__title{font-size:1.125rem;font-weight:400;letter-spacing:normal;color:var(--navy)}
.age-gate__desc{margin-top:clamp(22px,3vw,30px);font-family:var(--font-ui);font-size:.8125rem;
  letter-spacing:.01em;line-height:1.7;color:rgba(31,36,80,.72)} /* .72 min: por debajo, cae de 4.5:1 AA sobre --cream */
.age-gate__actions{display:flex;align-items:center;justify-content:center;gap:24px;width:100%;
  margin-top:clamp(24px,3vw,32px)}
.age-gate__yes{flex:1;font-family:var(--font-ui);font-weight:500;text-transform:uppercase;
  letter-spacing:.2em;font-size:11px;min-height:46px;
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--navy);background:var(--navy);color:var(--cream);
  transition:background .35s var(--ease-smooth),
  color .35s var(--ease-smooth),border-color .35s var(--ease-smooth)}
.age-gate__yes:hover,.age-gate__yes:focus-visible{background:var(--gold);border-color:var(--gold);color:var(--navy)}
.age-gate__yes:focus-visible,.age-gate__lang button:focus-visible{
  outline:1px solid var(--gold);outline-offset:6px}

/* ============================================================
   HERO
   ============================================================ */
/* hero pinned: queda fijo mientras la intro sube por encima */
.hero{position:fixed;inset:0;height:100vh;overflow:hidden;background:var(--ink);z-index:0}
.hero__bg{position:absolute;inset:0;z-index:0;will-change:transform}
.hero__bg video{width:100%;height:100%;object-fit:cover}
.hero__overlay{position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(20,20,22,.15),rgba(20,20,22,.05) 45%,rgba(20,20,22,.35))}
.hero__logo{position:absolute;z-index:2;top:50%;left:50%;transform:translate(-50%,-50%);
  width:min(320px,42vw);opacity:0}
.hero__tag{position:absolute;z-index:2;left:0;right:0;bottom:clamp(60px,10vh,120px);
  text-align:center;color:var(--cream);opacity:0}
.hero__tag .script{font-family:var(--font-script);font-size:clamp(1.8rem,3.4vw,3rem);color:var(--cream)}
.hero__tag .rombo{margin-top:14px}   /* la pieza vive en el grupo global */
.hero__scroll{position:absolute;z-index:2;right:var(--pad-x);bottom:26px;color:var(--cream);opacity:.8;
  animation:bob 2.4s ease-in-out infinite}
.hero__scroll svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.2}

/* ============================================================
   MANIFIESTO — primera capa sólida que sube sobre el hero.
   No es una sección con un texto: es una lámina. Un filete fino de oro
   encierra el campo, el escudo va de marca de agua y la firma al pie.
   El registro es el de una carta o una encíclica, así que va centrado y
   simétrico —el eje ceremonial— y la presencia la da el filete y el aire
   que encierra, no el cuerpo tipográfico.
   El filete se dibuja al entrar en pantalla; la frase se enciende palabra por
   palabra atada al scroll y la firma cierra cuando terminó. El track largo es
   el recorrido de ese barrido, y el pin sostiene la lámina quieta mientras
   corre.
   ============================================================ */
.mf{position:relative;z-index:2;margin-top:100vh;height:220vh;
  background:#FAFAF6;color:var(--navy)}
/* el pin sostiene la hoja mientras el track corre por debajo. El padding es
   el margen de campo alrededor del papel: sin él la hoja deja de leerse como
   un objeto apoyado y vuelve a ser un fondo. */
.mf__pin{position:sticky;top:0;height:100vh;
  display:flex;align-items:center;justify-content:center;
  padding:0 var(--pad-x)}
/* Sin papel ni sombra: el único recurso estructural es el filete. Un rectángulo
   de oro fino sobre el mismo campo crema, como el filete grabado de un pliego
   o una lámina —no una caja apoyada encima. Por eso el aire interior es amplio:
   si el filete abraza el texto vuelve a leerse como recuadro.
   El ancho se corta bastante antes que el campo para que quede vertical: un
   lámina apaisada.
   Proporción fija 4:3. Se define por el ancho y no por el alto porque así los
   tres topes entran en un solo min(): la medida de la lámina (800), el alto
   que deja el viewport (64vh) y el ancho útil del campo. Con el alto de
   referencia, al toparse contra cualquiera de los otros dos se rompía la
   proporción. */
.mf__leaf{position:relative;overflow:hidden;
  --pad-y:clamp(38px,5vw,72px);--pad-in:clamp(30px,5vw,68px);
  width:min(800px, 64vh * 4 / 3, 100%);aspect-ratio:4/3;
  display:flex;flex-direction:column;align-items:center;
  padding:var(--pad-y) var(--pad-in)}
/* El filete es una capa aparte y no el border de la lámina: hay que poder
   dibujarlo sin recortar con él lo que la lámina contiene.
   Los offsets van en negativo del padding porque un elemento absoluto se
   posiciona contra la caja de padding del contenedor: con inset:0 el marco
   habría quedado 68px adentro en vez de sobre el borde.
   Se abre desde el centro: los dos filetes horizontales crecen hacia ambos
   lados y los verticales llegan justo cuando el barrido los alcanza, así
   ninguno aparece de golpe. */
.mf__frame{position:absolute;
  top:calc(var(--pad-y) * -1);bottom:calc(var(--pad-y) * -1);
  left:calc(var(--pad-in) * -1);right:calc(var(--pad-in) * -1);
  border:1px solid var(--gold-soft);pointer-events:none;
  clip-path:inset(0 50% 0 50%);
  transition:clip-path 1.15s var(--ease-smooth)}
.mf__leaf.in .mf__frame{clip-path:inset(0 0 0 0)}
/* Marca de agua: detrás del texto. Es lo único que le da cuerpo de superficie
   al campo que encierra el filete.
   El ancho sale de un % de la caja y no de un vh: el escudo es vertical y la
   lámina apaisada, así que atarlo al viewport lo hacía más alto que la caja y
   el filete le cortaba las puntas. Con 38% y top 35% se apoya en el tercio
   superior y el texto le monta encima, sin llegar a tocar el filete.
   La opacidad es el valor a tocar si se quiere más o menos presente. Por
   debajo de .08 el escudo (#D89670) sobre el crema difiere del fondo en menos
   de 8 puntos por canal: deja de verse en pantallas con brillo bajo. */
.mf__crest{position:absolute;top:35%;left:50%;transform:translate(-50%,-50%);
  width:38%;aspect-ratio:216/262;pointer-events:none;opacity:.25;
  background:url("assets/escudo_bembeg.svg") center/contain no-repeat}
/* los márgenes automáticos reparten el aire arriba y abajo del texto, y como
   la firma no los tiene, queda apoyada al pie de la hoja: la disposición de
   una carta, no un bloque centrado con todo junto en el medio. */
.mf__text{position:relative;margin:auto 0;
  font-family:var(--font-display);font-weight:400;
  font-size:clamp(1.2rem,1.85vw,1.75rem);line-height:1.45;letter-spacing:-.01em;
  text-align:center;text-wrap:balance;
  /* medida propia, más angosta que la caja: con la lámina apaisada el texto a
     ancho completo daba líneas largas para una frase centrada. El aire que
     queda a los costados es margen de lámina, no padding sobrante. */
  max-width:min(46ch,100%)}
/* Cada proposición es un bloque. El texto son tres tiempos —la tesis, el
   porqué y el giro— y si corren seguidos el quiebre de línea cae donde lo
   manda la medida y no donde termina la idea. El aire entre bloques es lo que
   sostiene la estructura, no un salto forzado: cada frase envuelve sola. */
.mf__text > span,.mf__text > em{display:block}
.mf__text > * + *{margin-top:clamp(14px,1.4vw,22px)}
/* la itálica cae en el giro, que es el remate */
.mf__text em{font-style:italic}
/* Cada palabra entra desenfocada y casi transparente, y el scroll la trae a
   foco. No hay transition: el valor lo escribe el scroll, así que si se sube
   la frase se vuelve a desenfocar en vez de quedarse encendida.
   El blur va en em para que escale con el cuerpo y no aplaste el mobile. */
.mf__w{--p:0;
  opacity:calc(.08 + .92 * var(--p));
  filter:blur(calc((1 - var(--p)) * .14em))}
/* terminada: sin filter deja de costar una capa que rasterizar por palabra */
.mf__w.is-lit{opacity:1;filter:none}
/* la firma llega recién cuando la frase terminó de escribirse */
.mf__sign{position:relative;display:flex;flex-direction:column;align-items:center;
  gap:clamp(16px,1.8vw,24px);   /* el rombo es remate, no una segunda línea de texto: pide más aire */
  opacity:0;transform:translateY(10px);
  transition:opacity 1.1s var(--ease-smooth),transform 1.1s var(--ease-smooth)}
/* cierra: entra cuando la última palabra terminó de encenderse */
.mf__leaf.is-done .mf__sign{opacity:1;transform:none}
.mf__seal{display:flex;align-items:center;justify-content:center;
  gap:clamp(16px,2.2vw,32px);font-family:var(--font-sc);color:var(--gold);
  text-transform:uppercase;font-size:clamp(.78rem,1vw,.95rem)}
.mf__seal::before,.mf__seal::after{content:"";flex:none;height:1px;
  width:clamp(34px,4.2vw,62px);background:var(--gold);opacity:.55}
/* las versalitas se empastan sin tracking; el margen negativo devuelve el
   espacio que la última letra suma a la derecha, para centrar ópticamente */
.mf__seal span{letter-spacing:.13em;margin-right:-.13em}
/* En un teléfono la proporción 3:4 no significa nada: el viewport ya es mucho
   más angosto que eso y encerrar el texto en esa caja lo desbordaría. Manda el
   contenido, y el filete sigue leyéndose como filete. */
@media(max-width:760px){
  .mf{height:180vh}
  .mf__leaf{--pad-y:clamp(48px,9vw,72px);width:100%;aspect-ratio:auto}
  .mf__text{font-size:clamp(1.15rem,4.6vw,1.5rem);margin:0 0 clamp(34px,7vw,52px)}
}
/* Va último para ganarle también al breakpoint de arriba: sin pin ni track,
   la hoja queda quieta y la frase entera. */
@media(prefers-reduced-motion:reduce){
  .mf{height:auto;padding:clamp(110px,16vh,200px) 0}
  .mf__pin{position:relative;height:auto}
  .mf__leaf{width:min(800px,100%);aspect-ratio:auto}
  .mf__text{margin:0 0 clamp(38px,5vw,72px)}
  /* la lámina ya está formada y el texto entero: sin barrido ni esperas */
  .mf__frame{clip-path:none}
  .mf__w{opacity:1;filter:none}
  .mf__sign{opacity:1;transform:none}
}

/* ============================================================
   LEGADO — composición editorial escalonada
   ============================================================ */
.intro{position:relative;z-index:2;overflow:hidden;
  background:#FAFAF6;color:var(--navy);
  padding:clamp(70px,9.6vw,165px) var(--pad-x) clamp(45px,7vw,120px)}
.intro__eyebrow{margin:0 0 12px}   /* estilo en el grupo compartido — misma distancia que .wmaking__eyebrow en toda la web */
.intro__title{max-width:20ch;margin:0}               /* tamaño: --fs-h2 del h2 global */
/* fade-in de texto */
.intro__eyebrow,.intro__title,.intro__lead,.intro__body,.intro__script{
  opacity:0;transform:translateY(22px);
  transition:opacity 1s ease,transform 1.1s cubic-bezier(.19,1,.22,1)}
.intro__eyebrow.in,.intro__title.in,.intro__lead.in,
.intro__body.in,.intro__script.in{opacity:1;transform:none}
/* la base del CTA vive en el grupo compartido; acá solo la posición */
.intro__cta{margin-top:clamp(26px,3vw,46px)}

/* ---- Composición editorial escalonada (proporciones de la maqueta) ----
   Dos columnas de flujo independiente: 37.1% · gutter 8.6% · 54.3% */
.intro__grid{position:relative;display:grid;grid-template-columns:37.1% 54.3%;
  column-gap:var(--gap-2col);align-items:start;margin-top:clamp(38px,4.2vw,72px)}
.intro__col{display:flex;flex-direction:column;min-width:0}
.intro__lead{width:63%;font-size:var(--fs-body);line-height:1.85;opacity:.82;
  text-align:justify}
/* imagen: marco de reveal por clip-path (se conserva el mecanismo previo) */
.intro__img{position:relative;overflow:hidden;background:#23262E;
  clip-path:inset(100% 0 0 0);transition:clip-path 1.7s cubic-bezier(.16,1,.3,1)}
.intro__img.in{clip-path:inset(0 0 0 0)}
.intro__img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* columna izquierda */
.intro__img--blend{aspect-ratio:440/548;width:100%;margin-top:clamp(60px,9.5vw,160px)}
.intro__body{margin-top:clamp(40px,5.5vw,95px);font-size:clamp(.95rem,1vw,1.1rem);
  line-height:1.75;opacity:.82;text-align:left}
.intro__body p+p{margin-top:clamp(18px,2.4vw,40px)}
/* columna derecha — passepartout claro alrededor de la foto */
.intro__frame{position:relative;padding:3.2%;background:#FDFCF8;
  border:1px solid rgba(31,36,80,.08);box-shadow:0 18px 50px -30px rgba(31,36,80,.35)}
.intro__frame--family .intro__img{aspect-ratio:604/686}
.intro__frame--cork{width:63.7%;align-self:flex-end;margin-top:16rem}
.intro__frame--cork .intro__img{aspect-ratio:380/375}
/* script gold sobre la foto del descorche. El cuerpo bajó de 3em
   cuando la frase pasó de "A legacy in the making" a la castellana, que es el
   doble de larga: al tamaño viejo se iba fuera de la columna. Después subió a
   2.45em al pasar a tres líneas, que le devuelven el aire que perdía.
   El right:78% es lo que la hace pisar la foto —no tocarlo sin volver a mirar
   el solape. */
.intro__script{position:absolute;right:78%;bottom:13%;z-index:2;
  font-family:var(--font-script);color:var(--gold);font-size:2.45em;line-height:1.06;
  text-align:right;white-space:nowrap;pointer-events:none}
/* escudo decorativo dentro del marco de familia. El que estaba arriba a la
   derecha salió: el manifiesto ya abre con el escudo de filigrana y quedaban
   dos veces la misma marca a media pantalla de distancia. */
.intro__crest{position:absolute;display:block;aspect-ratio:216/262;
  background:url("assets/escudo_bembeg.svg") center/contain no-repeat;opacity:.22}
.intro__crest--mid{left:-8.7%;bottom:-10.3%;width:17.1%;z-index:-1;opacity:.3}

@media(max-width:900px){
  .intro__grid{grid-template-columns:1fr;row-gap:clamp(50px,9vw,90px)}
  .intro__title{max-width:none}
  .intro__lead{width:100%}
  .intro__img--blend{margin-top:clamp(40px,7vw,70px);max-width:420px}
  .intro__body{margin-top:clamp(34px,5vw,60px)}
  .intro__frame--cork{width:80%;margin-top:clamp(44px,8vw,80px)}
  /* La frase sale del passepartout: va debajo del marco, no sobre la foto.
     El figure no la contiene (queda absoluta, fuera de su caja), así que el
     marco reserva abajo el alto que ella ocupa. */
  .intro__script{font-size:1.62em;top:100%;left:3.2%;right:auto;bottom:auto;
    margin-top:clamp(16px,3vw,26px);text-align:left}
  .intro__frame--cork{margin-bottom:7rem}
}
@media(max-width:560px){
  .intro__frame--cork{width:100%;align-self:stretch}
  .intro__script{right:3.2%;white-space:normal;margin-top:18px;font-size:1.55em}
  .intro__frame--cork{margin-bottom:5.5rem}
  /* En dos líneas y no en tres: apilada, la frase ya no tiene que esquivar la
     foto, así que el tercer corte sólo alargaba el bloque. Se anula el
     segundo <br> y "de espíritu emprendedor" cae junto. El espacio antes de
     ese <br> es a propósito: sin él las dos palabras quedan pegadas al
     ocultarlo. En desktop no se ve, porque cae a final de línea. */
  .intro__script__cut{display:none}
}

/* ---- Variante de index2.html (body.home2) ----------------------------
   Tres cosas, y las tres cuelgan de .home2 —que suma especificidad sobre las
   reglas de arriba— para no tocar index.html:

   1. Legado monta sobre el Manifiesto. El hero ya queda quieto mientras la
      lámina lo tapa; Legado repite el gesto un piso más arriba, así que el
      tramo deja de leerse como una lista de bloques que se empujan y pasa a
      leerse como planos apilados: cada capa entra cubriendo la anterior.
   2. Legado reducido a dos piezas: la columna de texto (eyebrow, título,
      bajada y CTA) enfrentada al marco del descorche, centrados entre sí.
      Salen la barrica, los dos párrafos largos y la foto de familia: el
      bloque queda sostenido por el vacío y no por la cantidad de material.
   3. La entrada pasa a GSAP/ScrollTrigger: el CSS deja de esconder nada y
      sólo desarma el fade de la base para no pelear con el script.

   Por debajo de 900px la grilla ya colapsa a una columna y valen las medidas
   originales, así que cada override que depende de las dos columnas va
   acotado a min-width:901px.
   -------------------------------------------------------------------- */
&.home2{
  /* ---- 1. El plano de Legado trepa sobre la lámina ----
     El pin del Manifiesto dura 100vh más que su secuencia: ese viewport de
     más no es tiempo muerto, es el riel por el que Legado sube. El margen
     negativo lo devuelve, así que el documento no cambia de largo y el pin
     se suelta exactamente cuando Legado terminó de taparlo: ni antes —se
     vería la lámina irse sola— ni después —quedaría trabada abajo—.
     El barrido de la frase no se entera: el JS de index2 le descuenta ese
     viewport al track, así que la frase cierra antes de empezar a taparse. */
  .mf{height:320vh}
  .intro{margin-top:-100vh;
    /* Mientras sube tiene que cubrir el viewport entero: con Legado midiendo
       menos de 100vh, sobre el final asomaría la lámina por debajo del plano.
       Por eso el 100vh no se toca.
       Lo que sí cambió es dónde cae el sobrante. Antes el bloque quedaba
       pegado arriba y todo el aire libre se juntaba al pie —y al acortarse la
       columna de texto ese hueco creció hasta leerse como un salto entre
       Legado y Estate—. Ahora la sección centra su contenido: el mismo
       sobrante se reparte arriba y abajo, así que el hueco de abajo se parte
       al medio. El de arriba no se ve: es el canto que va tapando la lámina
       mientras el plano sube. */
    min-height:100vh;
    display:flex;flex-direction:column;justify-content:center;
    /* El pie no reserva aire propio —lo pone el centrado—, pero sí descuenta
       la franja que Estate va a taparle al subir. Sin ese descuento el
       contenido se centra contra el alto completo y la cola de la columna
       —el CTA— cae dentro del solape y desaparece. Con él, el centrado se
       calcula sobre lo que queda a la vista. El fallback en 0px es para las
       pantallas de menos de 1200px de alto, donde Estate no sube. */
    padding-bottom:calc(clamp(30px,3.5vw,60px) + var(--estate-overlap,0px));
    /* Las dos superficies son el mismo crema, así que el canto del plano no
       existe por color: lo dibujan un filo de 1px y una sombra de contacto.
       Corta y pegada al borde, no difusa: sobre crema una sombra ancha no
       lee como sombra, lee como niebla, y le baja el contraste al renglón
       del Manifiesto que todavía está a la vista. Pegada al canto dice lo
       único que tiene que decir —cuál de las dos hojas está encima—.
       Sin oro: el único momento dorado de este tramo es el filete del
       Manifiesto, y un segundo acento a un viewport de distancia se lo
       comería. */
    box-shadow:0 -1px 0 rgba(31,36,80,.10),0 -14px 24px -14px rgba(31,36,80,.16)}

  /* El eyebrow y el título ahora viven dentro de la columna, así que la
     grilla arranca pegada al borde superior del bloque. */
  .intro__grid{margin-top:0}
  /* Una sola línea. El título mide 407px contra los 475 de la columna, así
     que entra sin forzar nada; el nowrap es el seguro de que no se parta en
     un ancho intermedio, donde quedaría cortado en cualquier palabra. */
  /* El nowrap es el seguro de que el título no se parta en un ancho
     intermedio. Pero en celular se volvía en contra: --fs-h2 es
     clamp(2rem,3.4vw,2.5rem) y por debajo de ~940px queda clavado en su
     mínimo de 32px, mientras la columna —que es 80vw— sí se sigue achicando.
     Resultado: a 411px el título pedía 348px contra los 329px de la columna y
     se pasaba de la medida del párrafo de abajo.
     El min() lo ata al viewport: la línea mide ~10.9em, así que 7.1vw la deja
     siempre dentro del 80vw de la columna, en cualquier ancho de teléfono. De
     ~450px para arriba el 7.1vw supera al token y gana --fs-h2, así que en
     desktop no cambia nada. */
  .intro__title{max-width:none;white-space:nowrap;
    font-size:min(var(--fs-h2),7.1vw)}

  @media(min-width:901px){
    /* Las dos columnas se centran entre sí: el texto queda a media altura
       del marco en lugar de colgar del techo. */
    .intro__grid{align-items:center}
    /* El 68% servía cuando la bajada era el único texto de la columna y su
       recorte dibujaba una silueta. Ahora abajo hay cuerpo y destacado, los
       tres justificados: con dos medidas distintas y el mismo margen
       izquierdo, el bloque se leía como dos columnas encimadas. Una sola
       medida para toda la escalera. */
    /* 450px fijos (28.125rem): mismo ancho que .wmaking__text en Winemakers,
       para que las dos columnas de texto del home midan igual. El título ya
       va con nowrap arriba y mide 407px, así que entra sin partirse.
       .intro__body es un bloque normal y llena el 100% de esos 450px solo,
       pero .intro__lead trae width:63% de la regla base —pensada para
       cuando la columna medía otra cosa— y hay que pisarlo, si no el
       párrafo queda angosto dentro de la caja de 450px. */
    .intro__col--left{width:28.125rem}
    .intro__lead{width:100%}
    /* El marco cierra contra el eje derecho de página; el aire que queda a
       su izquierda es el que recibe el voladizo del script. */
    .intro__frame--cork{width:87%;margin-top:0}
    /* La foto va con su proporción real (724×610). El 380/375 de la regla
       base la recortaba a casi cuadrada y se comía parte del descorche. */
    .intro__frame--cork .intro__img{aspect-ratio:724/610}
    /* Script entero sobre el fondo, sin pisar la foto: 390px fijos despegan
       el borde derecho del canto izquierdo del marco, hacia el gutter.
       Bandera izquierda —cada línea arranca del mismo margen— en vez de
       colgar del borde derecho como en la versión que se apoyaba en la foto. */
    .intro__script{right:390px;bottom:13%;text-align:left}
    /* En anchos medios la columna de texto es fija (450px) y el marco queda
       angosto: el voladizo de 390px cae encima del párrafo. Ahí la foto sube
       hasta la altura donde arranca el título (las columnas se alinean arriba
       en vez de centrarse) y la frase baja debajo del marco, sin pisar nada. */
    @media(max-width:1359px){
      .intro__grid{align-items:start}
      /* top:100% la saca del passepartout: el script es hijo del figure, y
         estático quedaría adentro del marco blanco. */
      .intro__script{top:100%;left:3.2%;right:auto;bottom:auto;
        margin-top:clamp(20px,2.6vw,36px);text-align:left}
    }
  }

  /* Bajada y CTA con el mismo intervalo, para que la columna se lea como
     una sola escalera y no como tres bloques sueltos. */
  .intro__lead{margin-top:clamp(28px,3vw,46px)}
  .intro__cta{align-self:flex-start}

  /* ---- 3. La entrada la maneja GSAP, no el CSS ----
     El fade vertical con IntersectionObserver de la base sale entero: acá
     los dos bloques entran enfrentados por scroll (ver el ScrollTrigger de
     index2.html). El estado inicial lo escribe el script con gsap.set() y
     no el CSS, así que si el JS no corre Legado se ve completo en vez de
     quedar invisible. Las transitions también salen: GSAP escribe el valor
     en cada frame y una transition encima lo perseguiría con retraso. */
  .intro__eyebrow,.intro__title,.intro__lead,.intro__rule,.intro__body,
  .intro__script,.intro__cta{
    opacity:1;transform:none;transition:none}

  /* ---- Bajada en dos tiempos + destacado ----
     La primera bajada es la afirmación de marca y la segunda la invitación:
     misma familia, la segunda un punto más chica y sin el ancho recortado,
     para que se lea como continuación y no como un segundo titular.
     El rombo de 3 puntos reemplaza al guión suelto del texto original: separa
     los dos tiempos del bloque sin meter un signo a media columna. Es el mismo
     remate que .mf__sign y la placa de cata de Pionero (.lw-note): un único
     recurso de cita/destacado para todo el sitio en vez de un filete propio
     acá. .rombo ya centra sus 3 puntos por defecto; acá arranca pegado al
     margen izquierdo de la columna, como hacía el filete que reemplaza. */
  /* Mismo cuerpo que la primera bajada: los dos párrafos en redonda de la
     columna van a una sola escala y el único salto tipográfico del bloque
     queda para el destacado en itálica. Acá sólo el intervalo. */
  .intro__lead--sub{margin-top:clamp(14px,1.6vw,22px)}
  /* Los 44px de cada lado igualaban el salto al CTA (46px), así que el rombo
     no se leía como bisagra entre los dos tiempos del bloque sino como un
     tercer intervalo más del mismo tamaño, flotando en el medio. Bajados a 34
     quedan ~1,1 interlínea de la bajada: sigue despegando el trazo del texto
     y el CTA recupera el paso más ancho, que es el que cierra la columna. */
  .intro__rule{justify-content:flex-start;margin-top:clamp(24px,2.2vw,34px)}
  .intro__body{margin-top:clamp(24px,2.2vw,34px)}
  /* El destacado del original venía en negrita; el estilo lo pone el
     componente global .destacado, que este párrafo lleva en el HTML. Acá sólo
     queda lo propio del bloque: sin justificar, porque el resto de la columna
     sí lo está y una itálica justificada abre ríos entre palabras. */
  .intro__accent{text-align:left}
  /* El barrido por clip-path de la foto también sale: el marco ahora entra
     desplazándose como un objeto entero —passepartout y foto juntos—, y
     acumularle un segundo reveal encima era animar dos veces lo mismo. */
  .intro__img{clip-path:none;transition:none}

  /* ---- 4. Estate: el hold lo da el pin, no un bloqueo de scroll ----
     Es el único bloque de la home con un párrafo entero para leer, y el
     fullscreen limpio duraba menos de 20vh: por eso index2 retenía el
     scroll dos segundos a la fuerza. Ese bloqueo salió y el hold pasa a
     estar en el track.
     260vh = 100vh de placa + 160vh de recorrido. De esos, 32vh son la
     apertura del rectángulo y los últimos 50vh el solape de Vinos, así que
     quedan ~78vh de placa quieta. Los 50vh no se tocan: son los que hacen
     que el pin se suelte justo cuando Vinos terminó de cubrirla —la misma
     relación que Legado tiene con el Manifiesto—. */
  .estate{height:260vh}

  /* La palabra y la flecha son una sola pieza. La flecha sola ya está en el
     hero y ahí es decoración; acá tiene que dar una instrucción, y sin
     palabra no dice si hay que scrollear, tocar o esperar. Apiladas y no en
     línea porque el rebote es vertical: con la flecha al costado el
     movimiento no señalaría nada. */
  .estate__chevron{display:flex;flex-direction:column;align-items:center;
    gap:clamp(7px,.8vw,11px);padding:10px 18px;   /* el padding lleva el área de toque a >=44px */
    transition:opacity .7s ease 1.15s;            /* entra detrás del texto, no encima */
    /* Al eje derecho y no al centro. Centrada caía en la misma banda que
       "Descubre" y las dos se leían como una fila de dos acciones, cuando
       el CTA es la acción y esto es una indicación. Sobre el eje derecho
       queda donde el hero ya puso su flecha: el lector aprende una sola vez
       dónde mirar para saber que hay que seguir bajando. */
    left:auto;right:var(--pad-x);bottom:26px;transform:none}
  /* Cuelga de la misma clase que el video y el texto: la señal aparece
     porque la placa llegó a pantalla completa y no porque venció un timer.
     La clase .show de la regla base sigue viva para index.html. */
  .estate__media.is-full .estate__chevron{opacity:.85;pointer-events:auto}
  .estate__chevron:focus-visible{outline:1px solid var(--gold);outline-offset:4px}
  /* métrica de eyebrow: es un rótulo, no una bajada */
  .estate__hint{font-family:var(--font-ui);font-weight:500;text-transform:uppercase;
    letter-spacing:3px;font-size:var(--fs-eyebrow);
    margin-right:-3px}   /* devuelve el espacio que el tracking suma a la derecha */
  /* 26px al lado de un rótulo de 10px pesaba de más */
  .estate__chevron svg{width:22px;height:22px;animation:bob 2.4s ease-in-out infinite}

  /* El track del Manifiesto es más corto en mobile, pero el riel de Legado
     sigue siendo un viewport: es lo que mide el plano que sube. Va repetido
     acá porque .home2 le gana en especificidad al breakpoint de la base. */
  @media(max-width:760px){
    .mf{height:280vh}
  }
  /* Último, por lo mismo: sin pin no hay nada sobre lo que montar, y la
     sombra sin la subida sería una mancha entre dos secciones quietas. */
  @media(prefers-reduced-motion:reduce){
    .mf{height:auto}
    .intro{margin-top:0;min-height:0;box-shadow:none}
  }

  /* ---- Móvil: sin máscara ni pin, el video va de banner ----
     La composición de la máscara necesita ancho: a 390px el rectángulo
     inicial es una tira vertical con un passepartout alrededor y no se
     entiende qué es. Y el track de 260vh obliga a scrollear casi tres
     pantallas para ver abrirse algo que a ese ancho no luce.
     Acá el video va directo, a sangre y sin marco. El scrub que escribe el
     clip-path inline se corta solo en este ancho —ver estateScroll en
     index.html— y enciende el video de entrada. */
  @media(max-width:700px){
    .estate{height:auto;margin-top:0}
    .estate__pin{position:static;height:auto;overflow:visible}
    .estate__media{position:relative;inset:auto;clip-path:none;
      height:min(78vh,600px);will-change:auto}
    .estate__frame,.estate__seal{display:none}
    /* "Scroll" + flecha también salen. La señal existía para avisar que la
       placa pinneada se abría al bajar; sin pin no hay nada que esperar y el
       scroll normal ya se explica solo. Peor todavía en esta columna angosta:
       caía en la misma línea que "Descubra" y las dos se leían como una fila
       de dos acciones en competencia. Va display:none y no opacity para que
       tampoco quede el botón en el árbol de accesibilidad. */
    .estate__chevron{display:none}
  }
}

/* ============================================================
   ESTATE — mask reveal (rect centrado → full) + pin
   ============================================================ */
.estate{position:relative;z-index:2;background:#FAFAF6;height:200vh}   /* track de expansión (el hold en full lo da el lock de 2s) */

/* ---- Estate sube sobre el pie de Legado ----
   Legado mide 100vh porque lo necesita para tapar la lámina del Manifiesto
   mientras trepa, pero su contenido no llega a llenarlo: abajo queda un
   sobrante que no es composición, es relleno, y se leía como un vacío entre
   las dos secciones. Estate sube y lo cubre. El solape no se nota porque las
   dos superficies son el mismo crema y Estate va después en el DOM.
   En vh y no en px: el sobrante sale de restarle al alto de pantalla una
   columna de texto que no cambia, así que crece con la pantalla.
   Sólo de 1200px de alto para arriba: por debajo el contenido llena su 100vh
   y no hay sobrante que recortar —subir Estate ahí se comería el CTA—.

   OJO con la medida: el sobrante NO crece tan rápido como el 26vh. Legado
   centra su contenido, así que abajo le queda la mitad del sobrante, y a
   1270px de alto eso son 271px contra los 330px que sube Estate: los 59px de
   diferencia se comían el "Conozca más", que es lo último de la columna.
   Por eso el solape vive en un token y no en un número suelto: Legado lo
   descuenta de su propio padding (ver .intro en home2) y centra el contenido
   en la franja que queda a la vista. Si se tocan por separado, vuelven a
   descalibrarse y el CTA desaparece de nuevo. */
/* El token va en `&` —el propio body.home— y no en :root: este bloque está
   anidado, así que un :root acá adentro compilaría a `body.home :root`, que no
   matchea nada, y el solape se perdería entero. */
@media(min-height:1200px){
  &{--estate-overlap:26vh}
  .estate{margin-top:calc(var(--estate-overlap) * -1)}
}
.estate__pin{position:sticky;top:0;height:100vh;overflow:hidden}
/* Rect centrado inicial (lo scrubbea el JS).
   El inset vertical va topeado en px y no sólo en %: el 40% es proporcional al
   viewport, así que en una pantalla de 1440 de alto son ~576px de crema antes
   de que asome la foto —sumados al sobrante de Legado, se lee como un salto
   entre las dos secciones—. Con el tope, de ~950px de alto para arriba la
   apertura deja de crecer; por debajo no entra en juego y abre como antes.
   El JS de index.html arranca desde este mismo valor: si cambia acá, cambia
   allá (está marcado en el scrub). */
/* El rectángulo va 60px por encima del centro: se le resta al inset de arriba
   y se le suma al de abajo, así que la SUMA no cambia y el alto de la imagen
   enmascarada queda igual —sólo se corre hacia el título—. Es el último tramo
   que faltaba para cerrar el hueco sin achicar la foto. */
.estate__media{position:absolute;z-index:1;inset:0;
  clip-path:inset(calc(min(40%,380px) - 60px) 33% calc(min(40%,380px) + 60px) 33%);
  will-change:clip-path}

/* ---- Passepartout de la máscara ----
   Mismo papel, filete y sombra que los marcos de Legado: el aspecto lo hereda
   del componente compartido de la zona global.
   Lo que no puede es envolver a la foto, como sí hace en Legado: el clip-path
   recorta todo lo que viva dentro del elemento, borde incluido. Así que va
   detrás, en su propia capa, con la caja agrandada por el grosor del pase.
   El inset acompaña al del clip-path —lo escribe el JS en cada frame— y al
   abrirse del todo queda en negativo: el marco sale de cuadro justo cuando la
   foto llega a sangre, que es cuando ya no tiene que estar. */
.estate__frame{position:absolute;z-index:0;padding:0;pointer-events:none;
  inset:calc(min(40%,380px) - 60px - var(--leg-frame)) calc(33% - var(--leg-frame))
        calc(min(40%,380px) + 60px - var(--leg-frame));
  will-change:inset}

/* ---- Escudo como sello detrás de la foto ----
   Centrado en el canto derecho de la imagen: mitad tapado por la foto, mitad
   asomando sobre el papel del passepartout.
   No lleva z-index negativo. El marco ya abre su propio contexto de apilado
   (z-index:0) por debajo de la máscara (z-index:1), así que todo lo que
   cuelgue de él queda detrás de la foto y el recorte lo hace la propia
   imagen: sin máscaras ni clip aparte.
   El left descuenta el grosor del pase para que el eje caiga sobre el borde
   de la FOTO y no sobre el del papel; si no, asomaría medio escudo más los
   ~28px del marco y el reparto dejaría de ser 50/50. */
/* Se posiciona contra el PIN, no contra el marco, y con valores fijos: el
   marco cambia de inset en cada frame del scrub y arrastraba al sello con él.
   Las coordenadas son las del canto derecho de la foto en reposo —67% es el
   100%-33% del clip-path inicial, y el -60px es el mismo corrimiento hacia
   arriba que lleva el rectángulo—, así que en reposo se ve igual que antes.
   Al abrirse la máscara, la foto le pasa por encima y lo tapa. */
.estate__seal{position:absolute;z-index:0;top:calc(50% - 60px);left:67%;
  translate:-50% -50%;
  width:clamp(180px,20vw,340px);aspect-ratio:216/262;
  background:url("assets/escudo_bembeg.svg") center/contain no-repeat;
  opacity:.3;pointer-events:none}

.estate__img,.estate__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.estate__video{opacity:0;transition:opacity .8s ease}
.estate__media.is-full .estate__video{opacity:1}   /* el video aparece al cubrir el viewport */
/* degradado en vez de velo plano al 40%: el viñedo es claro justo donde va el
   texto, y con .4 el copy blanco no llegaba a contraste legible. */
.estate__scrim{position:absolute;inset:0;
  background:linear-gradient(to top,rgba(20,20,22,.88) 0%,rgba(20,20,22,.66) 38%,
    rgba(20,20,22,.36) 78%,rgba(20,20,22,.3) 100%)}
/* orden del bloque: eyebrow → título → script (lugar) → copy → CTA */
/* El texto va sobre el eje de página completo —--pad-x más el padding
   interno—, igual que el resto del sitio. La foto sigue a sangre: lo que se
   alinea es el contenido, no el fondo. */
.estate__content{position:absolute;left:calc(var(--pad-x) + var(--content-pad));
  bottom:clamp(60px,10vh,120px);
  color:#fff;opacity:0;max-width:min(480px,84vw);transition:opacity .9s ease;
  text-shadow:0 1px 18px rgba(20,20,22,.55)}   /* despega el texto del viñedo */
.estate__media.is-full .estate__content{opacity:1}   /* aparece cuando arranca el video */
/* Rótulo pegado al título: el eyebrow es parte del mismo bloque de lectura
   que el título, no un elemento propio, así que va más cerca de él que del
   texto que sigue —proximidad en vez de distancia pareja entre los tres—.
   12px fijos, sin clamp: es la misma distancia en todos los eyebrows del
   sitio, no proporcional al viewport, así que no tiene sentido que escale. */
.estate__eyebrow{margin-bottom:12px}   /* estilo en el grupo compartido */
.estate__title{font-family:var(--font-display);font-weight:400;color:#fff;
  font-size:var(--fs-h2);line-height:1.12;letter-spacing:-1px;
  margin-bottom:clamp(10px,1.3vw,18px)}
.estate__title em{font-style:italic}
.estate__place{display:block;font-family:var(--font-script);color:var(--gold);
  font-size:2.3em;line-height:1.15;letter-spacing:.02em;
  margin-bottom:clamp(18px,2.2vw,28px)}
.estate__sub{color:rgba(255,255,255,.88);margin-bottom:clamp(24px,3vw,38px);max-width:38ch}
/* .estate__cta hereda la base de CTA del home (texto gold + filete) */
.estate__chevron{position:absolute;left:50%;bottom:30px;transform:translateX(-50%);z-index:4;
  color:#fff;opacity:0;pointer-events:none;transition:opacity .6s ease}
.estate__chevron.show{opacity:.85;pointer-events:auto;animation:bob 2.4s ease-in-out infinite}
.estate__chevron svg{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:1.2}

/* ============================================================
   VINOS — capa que overlapa el Estate.
   Jerarquía explícita: PIONERO (banner .pbn--b) por encima de
   LA LINTERNA (swiper de 7 parcelas).
   ============================================================ */
.vinos{z-index:5;min-height:100vh;
  margin-top:-50vh}                                    /* overlap: asoma DESPUÉS del pin fullscreen */

/* El par Pionero + La Linterna de index2 usa la variante body.wines-b,
   que vive en la zona global porque vinos.html comparte el tratamiento. */


/* ============================================================
   WINEMAKING — galería escalonada (misma composición que opción 1)
   ============================================================ */
.wmaking{position:relative;z-index:6;background:#FAFAF6;color:var(--navy);
  padding:clamp(90px,13vh,175px) var(--pad-x)}
/* dos columnas siempre, con el mismo gutter que la grilla del legado (8.6%) */
.wmaking__wrap{max-width:var(--content-max);margin:0 auto;
  display:grid;grid-template-columns:1fr 1fr;column-gap:var(--gap-2col);row-gap:clamp(40px,7vw,64px);
  align-items:center}
/* g1 arriba-izquierda, g2 abajo-derecha montada encima */
.wmaking__gallery{position:relative;height:min(70vh,620px)}
.wmaking__g1,.wmaking__g2{position:absolute;overflow:hidden;background:var(--ph-1);
  clip-path:inset(100% 0 0 0);transition:clip-path 1.5s var(--ease-smooth)}
.wmaking__g1{top:0;left:0;width:62%;height:70%}
.wmaking__g2{bottom:0;right:0;width:54%;height:64%;
  box-shadow:-30px -30px 60px -40px rgba(31,36,80,.4)}
.wmaking.in .wmaking__g1{clip-path:inset(0 0 0 0)}
.wmaking.in .wmaking__g2{clip-path:inset(0 0 0 0);transition-delay:.22s}
.wmaking__g1 img,.wmaking__g2 img{width:100%;height:100%;object-fit:cover;
  transform:scale(1.07);transition:transform 2.4s var(--ease-smooth)}
.wmaking.in :is(.wmaking__g1,.wmaking__g2) img{transform:scale(1)}

.wmaking__text{min-width:0}
.wmaking__eyebrow{margin-bottom:12px}   /* estilo en el grupo compartido — ver .estate__eyebrow */
.wmaking__title{font-family:var(--font-display);font-weight:400;color:var(--navy);
  font-size:var(--fs-h2);line-height:1.12;letter-spacing:-1px;}
.wmaking__title em{font-style:italic}
.wmaking__pull{font-family:var(--font-script);color:var(--gold);font-weight:400;
  font-size:clamp(1.7rem,3vw,2.7rem);line-height:1.2;letter-spacing:.01em;
  margin:clamp(26px,3vw,40px) 0}
.wmaking__copy{color:var(--navy);opacity:.86;max-width:52ch;margin-top:clamp(28px,3.2vw,44px);
  font-size:var(--fs-body);line-height:1.85;text-align:justify}   /* misma distancia título→cuerpo que .intro__lead en Legado y .hospi__title */
/* La frase de cierre se separa del cuerpo y pasa a versalitas Minion, en el
   mismo navy del resto del texto —no gold: acá la cita no lleva color
   propio, como .lw-finca__quote/.lw-tasting__cite/.lw-note__cite—. El
   párrafo la introduce con dos puntos y esta línea la remata destacada por
   tipografía, no por color, en vez de perderse como una oración más del
   justificado. */
/* El remate de .rombo que llevan las citas del sitio (.mf__sign, .lw-note,
   .leg-feature/.ht-quote): acá arranca pegado al margen izquierdo —.rombo
   centra por defecto— porque esta cita va alineada a la izquierda como el
   resto del párrafo, no centrada como una placa. */
.wmaking__rombo{justify-content:flex-start;margin-top:clamp(14px,1.6vw,22px)}
.wmaking__cite{display:block;width:300px;font-family:var(--font-sc);color:var(--navy);
  text-transform:uppercase;font-size:clamp(1rem,1.15vw,1.1rem);line-height:1.6;
  letter-spacing:.13em;margin-right:-.13em;margin-top:clamp(26px,3vw,40px)}
.wmaking__cta{margin-top:clamp(42px,4.8vw,66px)}
/* .wmaking__title sigue viviendo en el CSS porque index_back.html todavía
   la usa (variante "oficio", sin tabs). */
.wmaking__eyebrow,.wmaking__title,.wmaking__pull,.wmaking__copy,.wmaking__cta{
  opacity:0;transform:translateY(20px);transition:opacity .9s ease,transform 1s var(--ease-expo)}
.wmaking.in :is(.wmaking__eyebrow,.wmaking__title,.wmaking__pull,.wmaking__copy,.wmaking__cta){opacity:1;transform:none}
.wmaking.in .wmaking__eyebrow{transition-delay:.14s}
.wmaking.in .wmaking__title{transition-delay:.25s}
.wmaking.in .wmaking__pull{transition-delay:.36s}
.wmaking.in .wmaking__copy{transition-delay:.47s}
.wmaking.in .wmaking__cta{transition-delay:.58s}

@media(max-width:900px){
  .wmaking{padding:clamp(70px,10vh,110px) var(--pad-x)}
  /* el bloque no se apila: mantiene las dos columnas en todos los anchos */
  .wmaking__gallery{height:min(62vh,460px)}
}

/* ---- Variante index2 (body.home2): passepartout tipo Legado, un solo
   marco por winemaker activo -------
   .wmaking__g1/.wmaking__g2 (dos fotos de bodega montadas) quedaron para
   index_back.html, que las sigue usando bajo .home a secas —de ahí que su
   CSS base (arriba, sin nest) no se tocó. Acá, bajo home2, la sección pasó
   a ser Winemakers: un solo marco (.wmk-frame) que cambia de foto con el
   tab activo, mismo papel/hairline/sombra que .intro__frame. */
&.home2{
  --wm-frame:clamp(12px,1.5vw,21px);

  /* La galería deja de tener una altura propia en vw/vh, pero ya no se
     estira a la altura del texto: el marco pasó a tener proporción fija
     (2/3, la de assets/enologos.webp), con passepartout generoso alrededor
     —como una lámina enmarcada— en vez de recortarse para llenar lo que
     mida el bloque de al lado. Si el texto queda más alto, la columna
     simplemente le sobra aire debajo. */
  .wmaking__wrap{align-items:start}
  .wmaking__gallery{height:auto}
  .wmk-frame{max-width:min(420px,88%);margin:0 auto;
    display:flex;flex-direction:column}
  .wmk-frame__photo{position:relative}
  .wmk-frame__media{position:relative;aspect-ratio:2/3;overflow:hidden;
    padding:var(--wm-frame);background:#FDFCF8;
    border:1px solid rgba(31,36,80,.08);
    box-shadow:0 18px 50px -30px rgba(31,36,80,.35);
    clip-path:inset(100% 0 0 0);transition:clip-path 1.5s var(--ease-smooth)}
  .wmaking.in .wmk-frame__media{clip-path:inset(0 0 0 0)}
  .wmk-frame__media img{display:block;width:100%;height:100%;object-fit:cover;
    object-position:50% 20%;transform:scale(1.07);
    transition:transform 2.4s var(--ease-smooth)}
  .wmaking.in .wmk-frame__media img{transform:scale(1)}

  /* La firma script pisando la foto, mismo recurso que .intro__script en
     Legado: left:100%+translate para quedar mitad sobre la foto, mitad
     sobre el fondo, y hermana de .wmk-frame__media —no hija— para que el
     overflow:hidden del marco no la recorte. Arriba a la derecha y no abajo
     a la izquierda como en Legado: acá el nombre/cargo ya ocupa el pie de
     la foto, así que la esquina libre es la superior. */
  .wmk-frame__script{position:absolute;left:100%;translate:-60% 0;
    top:calc(var(--wm-frame) + 3%);z-index:2;
    font-family:var(--font-script);color:var(--gold);
    font-size:2.45em;line-height:1.16;   /* mismo tamaño que .intro__script */
    text-align:left;white-space:nowrap;pointer-events:none}
  @media(max-width:700px){
    /* apilado, la foto vuelve a proporción fija: la firma se achica para
       no competir con nombre/cargo, que quedan pegados debajo —mismo tamaño
       mobile que .intro__script */
    .wmk-frame__script{font-size:1.55em}
  }

  /* Nombre/cargo a los dos bordes de la foto: misma medida que
     .wmk-frame__media (la fila no tiene su propio padding), así cada
     columna queda a plomo con el borde del marco que le toca —Daniel a la
     izquierda, Juliana a la derecha— en vez de las dos apretadas contra
     el borde izquierdo. */
  .wmk-frame__cap{margin-top:clamp(14px,1.8vw,20px);
    display:flex;justify-content:space-between;gap:16px;text-align:left}
  .wmk-frame__id:last-child{text-align:right}
  .wmk-frame__id{min-width:0}
  .wmk-frame__name{display:block;font-family:var(--font-display);letter-spacing:-.01em;font-weight:400;
    font-size:clamp(1.02rem,1.2vw,1.22rem);color:var(--navy)}
  .wmk-frame__role{display:block;margin-top:5px;font-family:var(--font-ui);font-weight:500;
    text-transform:uppercase;letter-spacing:.24em;font-size:10px;color:var(--gold)}

  /* 450px fijos (28.125rem): mismo ancho que .intro__col--left en Legado,
     para que las dos columnas de texto del home midan igual. Sin nowrap en
     el título acá —a diferencia de Legado, "Viticultura de precisión" no
     tiene medida documentada contra 450px, así que si no entra en una línea
     se parte en dos en vez de desbordar. .wmk-panel y los párrafos son
     bloques normales: llenan el 100% de esos 450px solos, no necesitan el
     truco width:0+min-width:100% que sí usa el fit-content de Legado. Sólo
     acá, bajo .home2: la variante "oficio" de index_back.html sigue
     compartiendo estas mismas clases y no necesita el ajuste. */
  .wmaking__text{width:28.125rem}
  /* Sólo reset horizontal/inferior: el margin-top real vive en
     .wmaking__copy —acá pesa más por especificidad y lo pisaba a 0. */
  blockquote.wmk-quote{margin-inline:0;margin-bottom:0}
  .wmk-quote p + p{margin-top:1em}

  /* ---- Móvil: se apila, marco único al ancho del texto ----
     Ya no hay dos fotos montadas que pasar a carrusel: un solo marco por
     vez no necesita scroll-snap, sólo recuperar el ancho completo apilado.
     El alto ya no puede igualar al texto —apilados, uno va arriba y el
     otro abajo—, así que la foto vuelve a una proporción fija propia. */
  @media(max-width:700px){
    .wmaking__wrap{grid-template-columns:minmax(0,1fr)}
    /* los 450px fijos de arriba son para desktop: en móvil la columna es el ancho del viewport */
    .wmaking__text{width:auto}
    .wmk-frame{max-width:none;height:auto;display:block}
    .wmk-frame__photo{flex:none}
    .wmk-frame__media{height:auto;aspect-ratio:4/5}
    /* la firma ya no cuelga fuera del marco: en móvil no hay margen lateral para el voladizo */
    .wmk-frame__script{left:auto;right:calc(var(--wm-frame) + 3%);translate:none}
  }
}

/* ============================================================
   HOSPITALIDAD — foto a sangre + scrim + texto a la izquierda
   ============================================================ */
.hospi{position:relative;z-index:6;overflow:hidden;background:var(--ink);
  min-height:min(90vh,880px);display:flex;align-items:center}
.hospi__bg{position:absolute;inset:0;z-index:0}
.hospi__bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transform:scale(1.07);transition:transform 2.6s var(--ease-smooth)}
.hospi.in .hospi__bg img{transform:scale(1)}
/* degradado en vez de velo plano: contraste donde va el texto, foto viva a la derecha */
.hospi__scrim{position:absolute;inset:0;z-index:1;
  background:linear-gradient(90deg,rgba(20,20,22,.82) 0%,rgba(20,20,22,.68) 42%,rgba(20,20,22,.44) 100%)}
.hospi__inner{position:relative;z-index:2;width:100%;
  padding:clamp(80px,12vh,150px) calc(var(--pad-x) + var(--content-pad));color:var(--cream)}
.hospi__eyebrow{margin-bottom:12px}   /* estilo en el grupo compartido — ver .estate__eyebrow */
.hospi__title{font-family:var(--font-display);font-weight:400;color:var(--cream);
  font-size:var(--fs-h2);line-height:1.12;letter-spacing:-1px;margin-bottom:26px}
.hospi__title em{font-style:italic}
.hospi__pull{font-family:var(--font-script);color:var(--gold);font-weight:400;
  font-size:clamp(1.7rem,3vw,2.7rem);line-height:1.2;letter-spacing:.01em;
  max-width:24ch;margin:0 0 clamp(28px,3.4vw,44px)}
.hospi__copy{color:rgba(250,250,246,.9);max-width:38ch;
  margin:0 0 clamp(30px,3.6vw,46px)}
/* stagger del texto */
.hospi__eyebrow,.hospi__title,.hospi__pull,.hospi__copy,.hospi__cta{
  opacity:0;transform:translateY(20px);transition:opacity .9s ease,transform 1s var(--ease-expo)}
.hospi.in :is(.hospi__eyebrow,.hospi__title,.hospi__pull,.hospi__copy,.hospi__cta){opacity:1;transform:none}
.hospi.in .hospi__eyebrow{transition-delay:.14s}
.hospi.in .hospi__title{transition-delay:.25s}
.hospi.in .hospi__pull{transition-delay:.36s}
.hospi.in .hospi__copy{transition-delay:.47s}
.hospi.in .hospi__cta{transition-delay:.58s}

@media(max-width:900px){
  .hospi{min-height:0}
  .hospi__scrim{background:linear-gradient(180deg,rgba(20,20,22,.72) 0%,rgba(20,20,22,.82) 100%)}
  .hospi__inner{padding:clamp(80px,14vw,120px) calc(var(--pad-x) + var(--content-pad))}
}

/* ============================================================
   HITOS — overlap blanco, grilla de 3 cards
   ============================================================ */
.hitos{position:relative;z-index:7;background:#fff;color:var(--navy);
  /* sin overlap: Hospitalidad es una foto a sangre y el solape le comía el pie */
  padding:clamp(80px,12vh,150px) var(--pad-x) clamp(90px,14vh,180px)}
/* cabecera a dos columnas: el bloque de texto a la izquierda y el enlace al
   índice completo arriba a la derecha, sobre la línea de base del título */
.hitos__head{margin-bottom:clamp(50px,8vh,110px);max-width:var(--content-max);margin-inline:auto;
  display:grid;grid-template-columns:1fr auto;column-gap:clamp(24px,4vw,80px);align-items:baseline}
/* celdas explícitas: sin esto el título se auto-ubicaba en la columna derecha */
.hitos__eyebrow{grid-area:1/1;margin-bottom:12px}   /* estilo en el grupo compartido — ver .estate__eyebrow */
.hitos__title{grid-area:2/1;justify-self:start;
  font-family:var(--font-display);font-weight:400;color:var(--navy);
  font-size:var(--fs-h2);line-height:1.12;letter-spacing:-1px;}
.hitos__title em{font-style:italic}
.hitos__grid{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(24px,3.5vw,64px);max-width:var(--content-max);margin:0 auto}
.hito__link{display:flex;flex-direction:column;height:100%;color:var(--navy)}
.hito__link:focus-visible{outline:1px solid var(--gold);outline-offset:6px}
.hito__img{aspect-ratio:4/3;overflow:hidden;background:#23262E;margin-bottom:22px;
  clip-path:inset(0 0 100% 0);transition:clip-path 1.1s var(--ease-expo)}
.hito__img img{width:100%;height:100%;object-fit:cover;
  transition:transform 1.2s var(--ease-expo)}
.hito__link:hover .hito__img img{transform:scale(1.05)}
.hito__meta{display:flex;gap:14px;align-items:baseline;margin-bottom:12px}
.hito__cat,.hito__year{color:var(--navy)}   /* métrica en el grupo compartido */
.hito__year{opacity:.5}
.hito__title{font-family:var(--font-display);letter-spacing:-1px;font-weight:400;
  font-size:clamp(1.25rem,1.8vw,1.75rem);line-height:1.15;margin-bottom:auto}
.hito__more{margin-top:22px;align-self:flex-start}
/* reveal escalonado (mismo criterio que .vinos) */
.hito__meta,.hito__title,.hito__more{opacity:0;transform:translateY(14px);
  transition:opacity .9s var(--ease-expo),transform .9s var(--ease-expo)}
.hitos.reveal .hito__img{clip-path:inset(0 0 0 0)}
.hitos.reveal .hito__meta,.hitos.reveal .hito__title,.hitos.reveal .hito__more{
  opacity:1;transform:none}
.hitos.reveal .hito:nth-child(1) :is(.hito__img,.hito__meta,.hito__title,.hito__more){transition-delay:.2s}
.hitos.reveal .hito:nth-child(2) :is(.hito__img,.hito__meta,.hito__title,.hito__more){transition-delay:.32s}
.hitos.reveal .hito:nth-child(3) :is(.hito__img,.hito__meta,.hito__title,.hito__more){transition-delay:.44s}
@media(max-width:900px){.vinos{margin-top:0}}
/* enlace al índice completo: columna derecha, alineado con el título */
.hitos__all{grid-area:2/2;justify-self:end}
@media(max-width:820px){.hitos{margin-top:0}
  .hitos__grid{grid-template-columns:1fr;gap:50px;max-width:420px}
  .hitos__head{grid-template-columns:1fr}
  .hitos__eyebrow,.hitos__title,.hitos__all{grid-area:auto;justify-self:start}
  .hitos__all{margin-top:clamp(24px,4vw,34px)}}

}   /* fin body.home */

/* ============================================================
   SUBPÁGINA (la-linterna / vinos) — clara, editorial
   ============================================================ */
body.subpage{
  background:var(--cream);color:var(--navy);font-size:var(--fs-body);line-height:1.7;overflow-x:hidden;
  font-family:var(--font-body);font-weight:500;

/* utilities */
.pull{
  font-family:var(--font-script);color:var(--gold);
  font-size:clamp(1.4rem,2.3vw,2.1rem);line-height:1.35;font-weight:400;letter-spacing:.01em;
}
.body-copy{color:var(--navy);opacity:.86;max-width:52ch}
.small-meta{font-family:var(--font-ui);font-weight:300;font-size:10.5px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--gray)}

/* ---- Placeholder blocks (maqueta) ---- */
.ph{
  position:relative;overflow:hidden;background:var(--ph-1);
  background-image:
    linear-gradient(135deg,var(--ph-2) 0%,var(--ph-1) 45%,var(--ph-black) 100%);
}
.ph::after{ /* leve textura de líneas para no ser plano */
  content:"";position:absolute;inset:0;opacity:.35;
  background:
    repeating-linear-gradient(115deg,transparent 0 22px,rgba(255,255,255,.015) 22px 23px);
  pointer-events:none;
}
.ph__tag{
  position:absolute;left:0;bottom:0;z-index:2;
  display:flex;align-items:center;gap:9px;
  font-family:var(--font-ui);font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:rgba(250,250,246,.55);
  padding:12px 15px;
}
.ph__tag::before{content:"";width:6px;height:6px;transform:rotate(45deg);
  background:var(--gold);display:inline-block}

/* la imagen interior que hace parallax/reveal */
.reveal-media{overflow:hidden}
.reveal-media > .ph{width:100%;height:100%}

/* ============================================================
   PRELOADER
   ============================================================ */
.loader{
  position:fixed;inset:0;z-index:2000;background:var(--navy);
  display:grid;place-content:center;place-items:center;gap:26px;
}
.loader__mark{opacity:0}
.loader__logo{height:clamp(150px,22vw,240px);width:auto}

/* Losange / rombo de marca (SVG) */
.losange{display:block}
.losange path,.losange line{stroke:var(--gold);fill:none;stroke-width:1.2}

/* ============================================================
   HERO
   ============================================================ */
.hero{position:relative;height:100svh;min-height:640px;overflow:hidden;background:var(--ink)}
.hero__bg{position:absolute;inset:0;z-index:0}
.hero__bg video,.hero__bg .ph{width:100%;height:100%;object-fit:cover}
.hero__bg{transform:scale(1.06);transform-origin:center} /* ken burns base */
.hero__overlay{position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(20,20,22,.42) 0%,rgba(20,20,22,.18) 40%,rgba(31,36,80,.55) 100%)}
.hero__crest{position:absolute;top:96px;left:50%;transform:translateX(-50%);z-index:3;opacity:0}
.hero__inner{
  position:absolute;z-index:3;left:var(--pad-x);bottom:clamp(56px,9vh,120px);
  right:var(--pad-x);color:var(--cream);
}
.hero__eyebrow{color:var(--gold);margin-top:24px;opacity:0}
.hero h1{font-size:clamp(2rem,4.2vw,3.7rem);color:var(--cream);max-width:none;
  line-height:1.02;text-transform:uppercase;letter-spacing:.01em}
.hero .line{overflow:hidden;display:block}
.hero .line > span{display:block;will-change:transform}
.hero__bold{font-weight:700}                 /* Minion Bold — 1ª línea */
.hero__ital{font-style:italic;font-weight:400}/* Minion Italic light — 2ª línea */
.hero__sub{margin-top:24px;max-width:44ch;color:rgba(250,250,246,.9);
  font-size:clamp(15px,1.1vw,18px);opacity:0;font-weight:300;line-height:1.65}
/* scroll cue a la derecha */
.hero__scroll{position:absolute;z-index:3;bottom:34px;right:var(--pad-x);
  display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--cream);opacity:.75}
.hero__scroll .eyebrow{color:rgba(250,250,246,.7);font-size:var(--fs-eyebrow);font-family:var(--font-ui);
  text-transform:uppercase;writing-mode:vertical-rl;letter-spacing:3px}
.hero__scroll-line{width:1px;height:52px;background:linear-gradient(var(--gold),transparent);
  transform-origin:top;animation:scrollpulse 2.4s var(--ease-smooth) infinite}

/* ============================================================
   SECTION SHELL
   ============================================================ */
section{position:relative}
.wrap{padding:var(--section-gap) var(--pad-x);margin:0 auto}
.bg-sand{background:var(--sand)}
.bg-cream{background:var(--cream)}

/* Divider con losange (EL detalle de marca) */
.divider{display:flex;align-items:center;justify-content:center;gap:20px;margin:0 auto;
  max-width:min(640px,calc(100% - 2 * var(--pad-x)))}
.divider__line{height:1px;background:var(--gold-soft);flex:1}
.divider__seal{height:clamp(84px,9vw,120px);width:auto;flex:none}

/* ---- Primitivos de marca: rombo / losange ---- */
/* hairline con terminales en rombo (encierra pull-quotes) */
.rule-rombo{position:relative;height:1px;background:var(--gold-soft)}
.rule-rombo::before,.rule-rombo::after{content:"";position:absolute;top:50%;
  width:7px;height:7px;background:var(--gold);transform:translateY(-50%) rotate(45deg)}
.rule-rombo::before{left:0}
.rule-rombo::after{right:0}
.pullblock{margin:36px 0;display:flex;flex-direction:column;gap:24px}
/* pull-quote en versalitas serif (oro) — variante patrimonial */
.pull--caps{font-family:var(--font-display);font-style:normal;text-transform:uppercase;
  letter-spacing:-.01em;color:var(--gold);font-size:clamp(1rem,1.4vw,1.35rem);
  line-height:1.5;font-weight:400}
/* losange lattice (retícula del escudo) — marca sutil */
.lattice{width:38px;height:30px;opacity:.5;
  clip-path:polygon(0 0,100% 0,50% 100%);
  background:
    repeating-linear-gradient(45deg,transparent 0 5px,var(--gold) 5px 5.9px),
    repeating-linear-gradient(-45deg,transparent 0 5px,var(--gold) 5px 5.9px)}
.lattice--center{margin:22px auto 0}

/* Reveal helpers (JS añade estados) */
[data-reveal]{will-change:transform,opacity}
.mask-line{overflow:hidden;display:block}
.mask-line > span{display:block}

/* ---- LEGADO: 2 columnas overlapping ---- */
.legado{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(30px,5vw,80px);align-items:center}
.legado__media{position:relative;aspect-ratio:4/5;max-height:78vh}
.legado__media .reveal-media{position:absolute;inset:0}
.legado__media .ph{filter:grayscale(1) contrast(1.05)} /* foto B/N */
.legado__badge{position:absolute;right:-34px;bottom:34px;z-index:4;
  background:var(--cream);padding:20px 26px;text-align:center;box-shadow:0 24px 60px -30px rgba(31,36,80,.5)}
.legado__badge .n{font-family:var(--font-display);letter-spacing:-.01em;font-size:44px;line-height:1;color:var(--navy)}
.legado__badge .l{margin-top:8px}
.legado__text{max-width:470px}
/* Ídem .estate__eyebrow: rótulo pegado al título, no a medio camino entre
   título y cuerpo. Misma distancia que .wmaking__eyebrow en toda la web. */
.legado__text .eyebrow{margin-bottom:12px}
.legado__text h2{margin-bottom:30px;max-width:none;white-space:nowrap}
.legado__text .pull{margin:14px 0}
.legado__text .body-copy{max-width:none}
.legado__text .body-copy + .body-copy{margin-top:18px}
.legado__text .cta{margin-top:40px}
@media(max-width:900px){.legado{grid-template-columns:1fr}.legado__badge{right:20px}
  .legado__text{max-width:none}.legado__text h2{white-space:normal}}

/* ---- ESTATE: full-bleed con dato gigante overlapping ---- */
.estate{position:relative;min-height:100vh;display:flex;align-items:center;overflow:hidden}
.estate__bg{position:absolute;inset:0;z-index:0}
.estate__bg .ph{width:100%;height:118%;position:absolute;top:-9%} /* margen para parallax */
.estate__scrim{position:absolute;inset:0;z-index:1;
  background:linear-gradient(90deg,rgba(20,20,22,.62),rgba(20,20,22,.15) 55%,transparent)}
.estate__inner{position:relative;z-index:2;color:var(--cream);
  padding:0 calc(var(--pad-x) + var(--content-pad));margin:0 auto;width:100%}
/* número delicado con MSNM debajo, agrupado en la columna izquierda */
.estate__num{display:flex;flex-direction:column;align-items:flex-start;margin:18px 0 26px;line-height:1}
.estate__num-n{font-family:var(--font-display);font-weight:400;
  font-size:clamp(3.2rem,6vw,5.2rem);color:var(--cream);line-height:.92;letter-spacing:-.01em;}
.estate__num-u{font-family:var(--font-ui);font-weight:300;
  font-size:clamp(10px,.9vw,12px);letter-spacing:.42em;text-transform:uppercase;
  color:var(--gold);margin-top:12px;padding-left:.14em}
.estate__copy{max-width:40ch;margin-top:0;color:rgba(250,250,246,.9)}
.estate .eyebrow{margin-bottom:12px}   /* ver .estate__eyebrow */
.estate h2{color:var(--cream);margin-bottom:0;font-size:var(--fs-h2)}
.estate__inner .cta{margin-top:30px!important}

/* ---- VINOS: 2 bottleshots verticales, centrados ---- */
#vinos .wrap{padding-top:clamp(48px,6vh,84px);padding-bottom:clamp(48px,6vh,84px)}
.vinos__head{text-align:center;margin-bottom:clamp(24px,3.5vh,48px)}
.vinos__head h2{margin:18px 0 20px;font-size:var(--fs-h2)}
.vinos__grid{display:grid;grid-template-columns:repeat(3,minmax(0,300px));
  justify-content:center;gap:clamp(36px,5vw,100px)}
.wine{display:flex;flex-direction:column;align-items:center;text-align:center;scroll-margin-top:120px}
/* bottleshot 3:4 — angosto y centrado, entra en viewport */
.wine__media{aspect-ratio:3/4;width:100%;max-width:280px;max-height:48vh;
  margin-inline:auto;overflow:hidden;position:relative}
.wine__media .ph{width:100%;height:100%;transition:transform 1.3s var(--ease-expo)}
.wine:hover .wine__media .ph{transform:scale(1.06)}
.wine__hair{height:1px;width:100%;max-width:280px;background:var(--gold);margin:20px 0 14px;transform-origin:center}
.wine__k{display:flex;flex-direction:column;align-items:center;gap:6px}
.wine h3{font-size:var(--fs-h3);font-weight:400}
.wine__tag{color:var(--gold)}
.wine__desc{margin-top:14px;color:var(--navy);opacity:.82;max-width:36ch}
.wine__note{margin-top:16px}
@media(max-width:820px){.vinos__grid{grid-template-columns:minmax(0,300px);gap:60px}}

/* ---- WINEMAKING: galería overlapping + firmas ---- */
.wm{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,80px);align-items:center}
.wm__gallery{position:relative;height:min(70vh,620px)}
.wm__g1{position:absolute;top:0;left:0;width:62%;height:70%;overflow:hidden}
.wm__g2{position:absolute;bottom:0;right:0;width:54%;height:64%;overflow:hidden;
  box-shadow:-30px -30px 60px -40px rgba(31,36,80,.4)} /* overlap */
.wm__g1 .ph,.wm__g2 .ph{width:100%;height:100%}
.wm__text .pull{margin:30px 0}
.wm__text h2{margin-bottom:26px;font-size:var(--fs-h2)}
.wm__sign{margin-top:44px;display:flex;gap:46px;flex-wrap:wrap}
.wm__sign .n{font-family:var(--font-display);letter-spacing:-.01em;font-size:22px;color:var(--navy)}
.wm__sign .r{margin-top:4px}
@media(max-width:900px){.wm{grid-template-columns:1fr}.wm__gallery{height:70vh}}

/* ---- HOSPITALIDAD: full-bleed cálido ---- */
.hosp{position:relative;min-height:90vh;display:flex;align-items:center;overflow:hidden;background:var(--sand)}
.hosp__bg{position:absolute;inset:0;z-index:0}
.hosp__bg .ph{width:100%;height:112%;position:absolute;top:-6%}
.hosp__scrim{position:absolute;inset:0;z-index:1;background:rgba(20,20,22,.34)}
.hosp__inner{position:relative;z-index:2;color:var(--cream);text-align:center;
  max-width:min(760px,calc(100% - 2 * var(--pad-x)));margin:0 auto}
.hosp__inner .eyebrow{margin-bottom:12px}   /* ver .estate__eyebrow */
.hosp__inner h2{color:var(--cream);font-size:var(--fs-h2);margin-bottom:26px}
.hosp__inner .pull{margin:0 auto 40px;max-width:24ch}

/* ---- NEWS ---- */
.news__head{display:flex;justify-content:space-between;align-items:flex-end;
  margin-bottom:clamp(40px,5vw,70px);gap:20px;flex-wrap:wrap}
.news__head h2{font-size:var(--fs-h2)}
.news__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,50px)}
.card{cursor:pointer}
.card__media{aspect-ratio:4/3;overflow:hidden}
.card__media .ph{width:100%;height:100%;transition:transform 1.3s var(--ease-expo)}
.card:hover .card__media .ph{transform:scale(1.06)}
.card__meta{display:flex;gap:14px;margin:20px 0 12px}
.card h3{font-size:clamp(19px,1.7vw,26px);font-weight:400}
.card__link{margin-top:16px}
@media(max-width:860px){.news__grid{grid-template-columns:1fr;gap:44px}}

/* ============================================================
   LA LINTERNA — página de vino (El Tomillo)
   ============================================================ */
/* Contenedor de las fichas de vino. Lleva el mismo eje que el resto del sitio:
   --pad-x abre el margen de página y --content-pad mete el bloque hacia adentro
   en pantallas anchas, igual que .est-blocks__inner o .leg__inner.
   El max-width suma los dos --pad-x porque acá el padding vive en el MISMO
   elemento que el ancho (en las otras páginas el pad-x está en la sección y el
   max-width en el hijo). Con border-box, esa suma deja el ancho de contenido
   idéntico: --content-max menos los dos --content-pad. */
.wrap-narrow{max-width:calc(var(--content-max) + var(--pad-x) * 2);margin:0 auto;
  padding-inline:calc(var(--pad-x) + var(--content-pad))}

/* ---- Presentación del vino ---- */
/* Dos columnas a distinta ley: la izquierda es una caja de texto con su
   aire, la derecha es imagen a sangre. Por eso el padding sale del hero y
   pasa a .lw-hero__text —si vive en el contenedor también despega la foto
   del borde, que es justo lo que no queremos— y el gap se va a 0: el
   respiro entre columnas ya lo da el padding derecho del texto. */
.lw-hero{position:relative;overflow:hidden;background:var(--cream);padding:0;
  /* eje de la columna de abajo: lo leen el texto del hero y el grabado de Pionero */
  --lw-axis:calc(max(0px,(100vw - var(--content-max) - var(--pad-x) * 2) / 2) + var(--pad-x) + var(--content-pad))}
/* el glow acompaña al texto: a la derecha lo tapaba la foto entera */
.lw-hero__glow{position:absolute;top:-14%;left:-12%;width:min(58vw,700px);height:min(58vw,700px);z-index:0;pointer-events:none;
  background:radial-gradient(circle,rgba(192,148,108,.20),rgba(192,148,108,0) 62%)}

/* ---- Grabado de fondo (sólo La Linterna) ----
   El haz de la etiqueta, sobre el crema y por debajo del texto. Entra dos
   veces en la página y siempre igual: por la izquierda detrás del hero y por
   la derecha detrás de la nota de cata. Una sola definición para las dos.

   El cobre está EN EL ARCHIVO (stroke #C0946C) y no puesto por CSS. La vía
   elegante era usar el SVG como máscara y pintar el pseudo con var(--gold),
   así el color salía del token; pero bajo file:// Chrome trata cada archivo
   como origen opaco y bloquea los SVG usados como máscara: se resuelve en
   nada y el grabado desaparece sin tirar ningún error. Como el sitio se
   previsualiza abriendo los .html directamente, la máscara no es una opción.
   background-image no tiene esa restricción. Contra: si el grabado tiene que
   cambiar de color, se re-tiñe el archivo (son 180 stroke iguales).

   Ya no hace falta el multiply que había antes para hundir el gris en el
   papel: a 9% el cobre se apoya sobre el crema sin manchar. Y el opacity
   ahora sí funciona, porque no hay blend que recomponer.
   Sólo en La Linterna: la ficha de Pionero comparte .lw-hero pero su body no
   lleva wines-b. Va con & y no con "body.wines-b": estas reglas están
   anidadas dentro de body.subpage y las dos clases viven en el mismo <body>,
   así que un selector suelto resolvería a "body.subpage body.wines-b" —un
   body dentro de otro— y no matchearía nunca. */
/* El haz entra una sola vez, en el hero. Estuvo también detrás de la nota de
   cata como contrapeso y salió: ahí el texto va justificado y en medida
   larga, y los rayos le pasaban por debajo de los renglones ensuciando la
   lectura sin aportar composición.

   Se mide contra el ALTO del hero y no contra su ancho: tiene que desbordar
   arriba y abajo para que los rayos lleguen a los bordes y adentro quede sólo
   el rombo vacío donde entra el texto. Atado al ancho se quedaba corto —el
   trazo del SVG caía por debajo del píxel y al 9% no se veía nada—.

   El tamaño va en la CAJA y no en background-size: el archivo sólo trae
   viewBox, sin width/height, así que un `auto` en el otro eje obliga al motor
   a deducir el tamaño intrínseco y no todos lo hacen igual. Con la caja en un
   ancho definido y aspect-ratio, el `contain` sólo necesita la proporción,
   que es lo que todos respetan.

   El ancho sale de la altura del hero —min(92vh,940px)— por 1.24 de desborde
   y por 1216/940 de proporción: 1.24 × 1.2936 ≈ 1.604.
   El left lo centra en la columna de texto (la mitad de su 52.5%). Lo que se
   pasa hacia la derecha queda debajo de la foto, que va en z-index 1. */
/* El grabado de fondo salió de acá: ahora vive contenido en .lw-hero__crest,
   enmarcando al logotipo. Se conserva la variante móvil más abajo. */
/* ---- Celosía de Pionero ----
   Mismo criterio que el haz de La Linterna, pero el motivo es otro y por eso
   la composición cambia: la celosía no irradia desde un centro, es un remate
   triangular, así que no va detrás del texto sino apoyada en el pie del hero,
   debajo del CTA. Una sola pieza, cortada por el borde a propósito: así lee
   como fragmento de un patrón más grande y no como una estampita centrada.

   No va como mancha de tinta sino como GRABADO EN SECO: el motivo se hunde en
   el papel en vez de imprimirse encima. El truco es que la figura deje de
   tener color propio y pase a ser del color de la hoja —eso hace el
   brightness(0) invert(1), que la lleva a blanco conservando su alfa— y que
   lo único que la dibuje sean dos sombras enfrentadas: una oscura arriba a la
   izquierda, donde el relieve deja de recibir luz, y una clara abajo a la
   derecha, donde el borde vuelve a subir. Invertidas las dos, el mismo dibujo
   se lee alzado en vez de hundido.

   Sombra en navy y no en negro: sobre crema el negro grisa y saca el motivo
   de la paleta. Y sin opacity general —que apagaría también las sombras—: el
   peso se regula con el alfa de cada una.

   El archivo lleva un PNG embebido, o sea que no se puede reteñir por texto
   como el haz de La Linterna; el filtro resuelve el color sin tocarlo. */
&.wines-p .lw-hero::after{content:"";position:absolute;z-index:0;
  /* centrado sobre el bloque de texto: arranca en el eje y mide lo que el body-copy (33ch = 318px) */
  pointer-events:none;left:calc(var(--lw-axis) + 159px);bottom:0;translate:-50% 26%;
  width:clamp(230px,27vw,410px);aspect-ratio:200.19/104.71;
  background:url("assets/pionero_back002.svg") center/contain no-repeat;
  /* al agrandar el motivo el desplazamiento de 1px queda proporcionalmente
     más chico y el relieve se aplana, así que sube junto con el alfa */
  filter:brightness(0) invert(1)
    drop-shadow(-1.5px -1.5px .5px rgba(31,36,80,.10))
    drop-shadow(1.5px 1.5px 0 rgba(255,255,255,1))}

/* Con un grabado puesto, el glow cálido de la esquina sobra: son dos fuentes
   de luz peleando en el mismo cuarto de pantalla y la mancha del degradado se
   come el arranque del dibujo. Para recuperarlo, borrar esta regla. */
&:is(.wines-b,.wines-p) .lw-hero__glow{display:none}
/* La Linterna mide más ancho que Pionero (45ch vs. 33ch): el crest con el
   logotipo necesita más aire que el bloque de texto solo. */
/* Los cinco bloques de La Linterna comparten un ancho ABSOLUTO (rem, no ch):
   ch se mide contra el propio font-size de cada elemento, y acá conviven
   tamaños muy distintos —15px el cuerpo, 10.5px el meta con .2em de
   tracking—, así que "46ch" en cada uno daba cajas de un ancho realmente
   distinto y el meta terminaba más angosto que el crest de arriba, con
   riesgo de partir una finca/parcela larga en dos líneas o desbordar. */
&.wines-b .lw-hero__text .lw-hero__meta{max-width:30rem;
  /* más aire que en Pionero: acá separa el bloque de identidad (crest +
     varietal + finca/parcela) del cuerpo editorial (pull + copy), no sólo
     una línea de la siguiente */
  margin-bottom:clamp(38px,4.6vw,54px)}
&.wines-b .lw-hero__text .pull{max-width:30rem}
&.wines-b .lw-hero__text .body-copy{max-width:30rem;margin-bottom:clamp(34px,4vw,50px)}
/* La altura la fija el hero y no el contenido: a min(92vh,940px) la caja
   de la foto queda en ~0.75 de proporción, que es la del bottleshot, así
   que el cover casi no recorta. */
/* Alto fijo y no min-height: como piso, la sección crecía cuando el texto era
   más largo, y las dos fichas quedaban con heroes de distinta altura —la
   bajada de La Linterna tiene 232 caracteres contra 168 la de Pionero—. Con
   height las dos miden lo mismo sin importar cuánto texto lleven.
   El contenido entra con margen: contra los ~730px útiles que quedan después
   del padding, la columna más cargada ocupa alrededor de 425. */
.lw-hero__inner{position:relative;z-index:1;padding:0;height:min(92vh,940px);
  display:grid;grid-template-columns:1.05fr .95fr;gap:0;align-items:stretch}
/* padding vertical simétrico porque el bloque va centrado: el despeje del
   header fijo lo garantiza el min-height, no un padding-top extra. En una
   columna sí hace falta sumarlo (ver el media query). */
.lw-hero__text{align-self:center;
  /* el borde izquierdo es el de la columna de abajo (.wrap-narrow: margen auto +
     --pad-x + --content-pad), para que el hero y la ficha arranquen del mismo eje */
  padding:clamp(56px,8vh,110px) clamp(40px,5.5vw,90px) clamp(56px,8vh,110px) var(--lw-axis)}
/* mismo cuerpo que los h2 del index; el bloque entero baja de escala con él */
/* ---- Panel de rayos con el logotipo adentro (La Linterna) ----
   El grabado enmarca al título en vez de flotar detrás de la columna: los
   rayos convergen hacia el centro y el logo cae en ese vacío.
   El aspect-ratio es el del dibujo recortado a la franja útil —el SVG
   original es 1200×940 y acá se usa la banda central—, así que el vacío del
   medio queda a la altura del logotipo sin tener que moverlo.
   El max-width es el mismo 52ch de .body-copy: el panel mide exactamente lo
   que el párrafo de abajo. Si cambia ese ancho, cambiar los dos.
   Los trazos van con el color propio del SVG (#C0946C) a opacidad baja: es el
   grabado impreso de la referencia, NO bajorrelieve.
   El relieve se probó acá y se descartó (12 ago 2026). Queda anotado para no
   volver a proponerlo: a esta escala los trazos entran densos y finos, así
   que el emboss o no se ve —con la sombra al 2,1% del grabado grande— o
   ensucia el dibujo cuando se le sube la fuerza. Pionero sí lo conserva; son
   dos piezas distintas y no tienen que compartir tratamiento. */
.lw-hero__crest{position:relative;display:grid;place-items:center;
  width:100%;max-width:30rem;aspect-ratio:2.6/1;overflow:hidden;
  margin:0 0 clamp(26px,3.4vw,44px)}
/* cover y no contain: el dibujo entero es casi cuadrado (1200×940) y metido
   completo devolvía un bloque igual de cuadrado. Recortado por arriba y por
   abajo queda la franja del medio —la del vacío donde cae el logo— y el
   grabado se lee como una banda, no como una lámina. */
.lw-hero__crest::before{content:"";position:absolute;inset:0;z-index:0;
  pointer-events:none;
  background:url("assets/back-linter.svg") center/cover no-repeat;
  opacity:.5}
/* el título se centra sólo dentro del panel; el resto del bloque no se toca */
.lw-hero__crest .lw-hero__title{position:relative;z-index:1;margin:0;
  text-align:center}
/* el corrimiento que lo alineaba a la izquierda no va cuando está centrado */
.lw-hero__crest .lw-hero__logo--linterna{transform:none;margin-inline:auto}
.lw-hero__title{font-size:var(--fs-h2);line-height:1.14;letter-spacing:-1px;margin:0 0 clamp(22px,2.6vw,34px)}
/* El logotipo escala con el mismo tope que en la home y en vinos —múltiplos
   de --fs-h2— para que las tres apariciones de la marca midan igual. Con
   width:100% + max-width, en columnas más angostas que el tope baja con la
   caja en vez de desbordar. */
.lw-hero__logo{display:block;width:100%;height:auto}
/* Cada archivo trae aire propio a la izquierda y hay que descontarlo: apoyado
   contra el borde de la caja el logo entra corrido y no pisa el mismo eje que
   el varietal ni que el cuerpo de abajo. El translate va en % —que en
   transform se mide contra el propio elemento, no contra el padre— para que
   la corrección valga en cualquier tamaño. Los números salen de medir la caja
   real del dibujo dentro de su viewBox; el día que se re-exporte un SVG sin
   ese margen, se borra su translate.
   Los topes son los mismos que en la home y en vinos: cada marca mide igual
   en sus tres apariciones. */
.lw-hero__logo--linterna{max-width:calc(var(--fs-h2) * 5);      /* 200px @ 40px */
  transform:translateX(calc(-500% / 244.8));   /* dibujo desde x=5 de 244.8 */
  margin-top:30px}
.lw-hero__logo--pionero{max-width:calc(var(--fs-h2) * 4.55);    /* 182px @ 40px */
  transform:translateX(calc(-690% / 249.9))}   /* dibujo desde x=6.9 de 249.9 */
.lw-hero__title em{                       /* varietal: Minion en versalitas, no itálica */
  display:block;font-style:normal;font-weight:inherit;font-size:.62em;
  font-variant:all-small-caps;text-transform:uppercase;letter-spacing:.28em;
  margin:clamp(4px,.6vw,10px) 0 0}
/* En La Linterna el varietal se lee afuera del crest, en .lw-hero__varietal
   —adentro, con aspect-ratio fijo y overflow:hidden, el alto no le alcanzaba
   y lo recortaba—. El <em> del h1 sigue en el DOM (texto accesible del
   título) pero no se dibuja acá. */
.lw-hero__crest .lw-hero__title em{display:none}
.lw-hero__varietal{max-width:30rem;margin:0 0 clamp(22px,2.8vw,32px);text-align:center;
  font-family:var(--font-display);color:var(--navy);font-size:1.6rem;
  font-variant:all-small-caps;text-transform:uppercase;letter-spacing:.28em;
  margin-right:-.28em}   /* devuelve el espacio que el tracking suma a la derecha, para centrar óptico y no sólo matemático */
.lw-hero__meta{margin-bottom:9px;font-weight:400}   /* la Blair sólo trae 300 y 500: el 400 resuelve en la media */
.lw-hero__meta-div{display:inline-block;width:1px;height:10px;margin:0 12px;
  background:var(--gray);opacity:.4;vertical-align:middle}
.lw-hero__text .pull{margin:clamp(24px,2.8vw,38px) 0 clamp(20px,2.4vw,30px)}
.lw-hero__text .body-copy{max-width:33ch;margin-bottom:clamp(26px,3vw,38px)}
/* sin aspect-ratio: el alto lo da el stretch de la fila, no la proporción */
.lw-hero__bottle{background:var(--ph-black)}
.lw-hero__bottle img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
/* Pionero no tiene beauty vertical: su única foto de ambiente es apaisada
   y el recorte centrado caía sobre el fondo negro. El 45% lleva el encuadre
   a la etiqueta. Se borra el día que exista una toma vertical. */
.lw-hero__bottle--wide img{object-position:45% center}
@media(max-width:860px){
  /* en una columna el alto lo da el contenido: el height fijo de arriba
     recortaría el texto apilado sobre la foto */
  .lw-hero__inner{grid-template-columns:1fr;height:auto}
  /* en una columna el texto recupera márgenes simétricos */
  .lw-hero__text{padding:calc(var(--hdr-h) + clamp(48px,9vw,80px)) var(--pad-x) clamp(40px,7vw,64px)}
  .lw-hero__bottle{aspect-ratio:4/3}
  /* Apilado ya no hay columna de texto y el hero crece con el contenido, así
     que el vh deja de servir de referencia: acá el haz se mide contra el
     ancho y se centra sobre el bloque de texto. */
  &.wines-p .lw-hero::after{left:50%}
}

/* ---- Cata + ficha técnica ---- */
/* blanco y no crema: el hero pasó a ser una sola pieza crema de borde a
   borde, así que la ficha necesita su propio plano para no leerse como
   continuación. --sand es el fondo alterno del sistema, el mismo que ya
   usan .lw-finca y la banda de La Linterna. */
/* el overflow:hidden queda como red: la botella de la ficha se apoya fuera
   del marco y sin él asomaría por el borde abriendo scroll horizontal */
/* ---- Banda de video · presentación de la añada (pionero.html) ----
   Vive dentro del .wrap-narrow de la ficha, así que mide exactamente lo mismo
   que las dos columnas de arriba: no hay un ancho propio que sincronizar.
   El passepartout sale del grupo compartido —mismo papel, filete y sombra que
   el resto de las fotos del sitio—, por eso .lw-vband__frame está sumado allá
   arriba y acá sólo se le saca el margen que traen las <figure>.
   El <button> envuelve la banda entera: la superficie de click es todo el
   banner y no un círculo de 80px. Por eso el círculo del play es decorativo
   (aria-hidden) —el nombre accesible lo da el aria-label del botón—. */
.lw-vband{padding:0 0 clamp(60px,8vw,110px);background:var(--sand)}
.lw-vband__frame{margin:0}
.lw-vband__btn{display:block;position:relative;width:100%;padding:0;border:0;
  background:none;cursor:pointer;color:var(--cream);text-align:left;
  -webkit-appearance:none;appearance:none}
.lw-vband__btn:focus-visible{outline:1px solid var(--gold);outline-offset:4px}
.lw-vband__media{position:relative;overflow:hidden;aspect-ratio:1200/500;
  background:#0C0C0E}
.lw-vband__media img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.4s var(--ease-expo)}
.lw-vband__btn:hover .lw-vband__media img{transform:scale(1.04)}
/* El degradado tapa sólo el lado del nombre. En la foto Daniel Pi está a la
   derecha: un velo parejo le apagaría la cara sin ninguna necesidad. */
.lw-vband__scrim{position:absolute;inset:var(--leg-frame);pointer-events:none;
  background:linear-gradient(to right,rgba(12,12,14,.62) 0%,
    rgba(12,12,14,.34) 34%,rgba(12,12,14,0) 62%)}
/* Se posiciona contra el marco, no contra el eje de página: el banner ya no
   va a sangre. El 6% lo mantiene proporcional al ancho de la banda. */
.lw-vband__who{position:absolute;z-index:2;pointer-events:none;
  left:calc(var(--leg-frame) + 6%);top:50%;translate:0 -50%;
  display:flex;flex-direction:column;gap:5px}
/* Título de la pieza, arriba del nombre. Va en la display del sitio con la
   segunda línea en itálica: es el mismo giro que "Bemberg por el mundo" o
   "Viticultura de altura", así que el banner titula como titula el resto. */
.lw-vband__kicker{display:block;font-family:var(--font-display);letter-spacing:-1px;
  font-size:clamp(1.3rem,2.1vw,1.85rem);line-height:1.16;
  color:var(--cream);margin-bottom:12px}
.lw-vband__kicker em{font-style:italic}
/* El nombre y el cargo bajan de cuerpo: el título de la añada pasó a encabezar
   la pieza y estos dos quedan como la firma de quien la presenta. */
.lw-vband__name{font-family:var(--font-display);letter-spacing:-.01em;line-height:1;
  font-size:clamp(.95rem,1.3vw,1.15rem)}
.lw-vband__role{font-family:var(--font-ui);font-weight:300;font-size:8.5px;
  letter-spacing:.18em;text-transform:uppercase;opacity:.75;margin-right:-.18em}
.lw-vband__play{position:absolute;z-index:2;pointer-events:none;
  left:50%;top:50%;translate:-50% -50%;display:grid;place-items:center;
  width:clamp(46px,4.4vw,62px);aspect-ratio:1;border-radius:50%;
  border:1px solid rgba(250,250,246,.7);background:rgba(12,12,14,.16);
  transition:background .6s var(--ease-expo),border-color .6s var(--ease-expo),
    scale .6s var(--ease-expo)}
/* el triángulo pesa a la izquierda; se corre para centrarlo ópticamente */
.lw-vband__play svg{width:38%;fill:var(--cream);translate:6% 0}
.lw-vband__btn:hover .lw-vband__play{background:rgba(12,12,14,.3);
  border-color:var(--gold);scale:1.06}
.lw-vband__play svg{transition:fill .6s var(--ease-expo)}
.lw-vband__btn:hover .lw-vband__play svg{fill:var(--gold)}
/* Sin fuente de video todavía, el botón no puede prometer nada: se apaga el
   círculo, se saca el cursor de mano y se anula el hover. No es un estado de
   diseño, es la ausencia del archivo —vuelve solo al completar data-video—. */
.lw-vband__btn[aria-disabled="true"]{cursor:default}
.lw-vband__btn[aria-disabled="true"] .lw-vband__play{opacity:.45}
/* Con el video montado, la foto y toda la capa de play salen. */
.lw-vband.is-playing :is(.lw-vband__scrim,.lw-vband__who,.lw-vband__play){
  opacity:0;transition:opacity .5s ease}
.lw-vband__video{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;display:block;background:#0C0C0E}
@media(max-width:640px){
  /* el nombre baja al pie: centrado en vertical chocaba con el círculo */
  .lw-vband__who{top:auto;bottom:calc(var(--leg-frame) + 16px);translate:0 0}
  .lw-vband__scrim{background:linear-gradient(to top,rgba(12,12,14,.66) 0%,
    rgba(12,12,14,.2) 46%,rgba(12,12,14,0) 78%)}
}

/* ---- Nota de cata en placa (pionero.html) ----
   Entre el video de presentación y La Finca: sand, igual que el video
   justo arriba —el crema heredado del body seguía viéndose ahí y no era
   lo que se quería—. El remate es el mismo .rombo de .mf__sign (rombo
   chico-grande-chico): el recurso que usa toda cita centrada del sitio,
   .ht-quote y .leg-feature incluidos. */
.lw-note{padding:clamp(70px,9vw,130px) 0 clamp(60px,8vw,110px);
  background:var(--sand);
  border-top:1px solid var(--gold-soft)}   /* el borde de abajo ya lo pone .lw-finca (border-block): no duplicarlo acá */
.lw-note__inner{max-width:min(58ch,100%);margin:0 auto;
  display:flex;flex-direction:column;align-items:center;text-align:center;
  gap:clamp(22px,2.8vw,32px)}
.lw-note__copy{font-family:var(--font-body);font-size:var(--fs-body);line-height:1.85;
  color:var(--navy);opacity:.9}
.lw-note__cite{font-family:var(--font-display);letter-spacing:-.01em;color:var(--navy);
  font-size:1.2rem;line-height:1.6}
.lw-note__cite em{font-style:italic}

/* ---- Selector de cosecha, en su propia fila (pionero.html) ----
   Salió de la ficha técnica: elegir añada va a alcanzar más que la ficha
   —el harvest report, la banda de video y la nota de cata también cuelgan
   del año—, así que sube arriba de todo el bloque en vez de vivir adentro
   de una de sus partes. Misma tipografía que ya tenía en la ficha, sólo
   que ahora es la fila completa y no un .lw-field entre otros. */
.lw-vintage{padding:clamp(40px,5vw,60px) 0 clamp(12px,1.6vw,20px);background:var(--sand);
  scroll-margin-top:var(--hdr-h)}   /* el CTA "Ver ficha técnica" del hero ancla acá y no en .lw-specs: así el tab de cosecha entra en cuadro, no sólo la ficha */

/* el top baja respecto del bottom: comparte fondo sand con .lw-vintage
   justo arriba, así que el aire entre el selector y la ficha lo da esta
   mitad achicada, no un salto de sección completo */
.lw-specs{position:relative;overflow:hidden;
  padding:clamp(28px,3.4vw,42px) 0 clamp(70px,9vw,130px);background:var(--sand)}

.lw-sheet{display:grid;grid-template-columns:1fr 48%;gap:clamp(40px,6vw,110px);align-items:center}
.lw-sheet__box{position:relative;border:1px solid var(--gold-soft);
  padding:clamp(44px,5.5vw,80px) clamp(36px,4.6vw,64px);
  min-height:clamp(420px,42vw,640px);display:flex;align-items:center;
  gap:clamp(32px,4.4vw,56px)}
/* botella dentro del marco, no montada sobre el borde: es una fila del
   propio flex del marco —botella primero, ficha después— así que el filete
   gold encierra las dos piezas en vez de partirlas por la costura. */
.lw-sheet__bottle{flex:0 0 auto}
/* altura explícita, no en %: un porcentaje resolvería contra el alto natural del PNG */
.lw-sheet__bottle img{display:block;height:clamp(340px,34vw,520px);width:auto;max-width:100%;
  filter:drop-shadow(0 28px 44px rgba(31,36,80,.2))}
.lw-sheet__specs{flex:1 1 auto;min-width:0}
.lw-field{padding:9px 0}
/* descarga de la ficha: el enlace de siempre (.cta, oro + filete), sin recuadro.
   La columna de datos es angosta, así que el filete va más corto y el texto
   puede pasar a una segunda línea en vez de desbordar. */
.lw-sheet__dl{margin-top:clamp(20px,2.6vw,32px);font-size:10px;letter-spacing:.14em;line-height:1.7;gap:12px}
.lw-sheet__dl::after{width:clamp(20px,2vw,32px)}
.lw-field:first-child{padding-top:0}
/* la ficha junto a la botella va en un cuerpo más chico que el resto de los datos (la finca usa las mismas clases) */
.lw-sheet__specs .lw-data__k{font-size:9px;margin-bottom:6px}
.lw-sheet__specs .lw-data__v{font-size:15px}
.lw-field:last-child{padding-bottom:0}
.lw-data__k{display:block;font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.16em;font-size:10px;font-weight:500;color:var(--gold);margin-bottom:9px}
.lw-data__v{display:block;font-family:var(--font-display);letter-spacing:-.01em;font-size:clamp(15px,1.1vw,18px);color:var(--navy);line-height:1.45}
.lw-field__years{color:var(--gray);letter-spacing:.04em}

/* ---- Selector de añadas ----
   Los años dejaron de ser una lista y pasaron a ser un control: se elige uno
   y la ficha de abajo se reescribe. Va como radiogroup y no como tabs porque
   lo que se elige es un valor —la añada—, no un documento; los campos que
   cambian viven en una región aria-live para que el lector de pantalla los
   anuncie al cambiar.
   La añada en ficha se marca con el filete gold entero: el mismo recurso que
   el CTA del sitio, así el estado activo no depende sólo del color —que en
   gris contra navy es un salto corto— sino también de una forma. */
.lw-anadas{display:flex;flex-wrap:wrap;gap:clamp(12px,1.4vw,22px);align-items:baseline;
  width:100%;border-bottom:1px solid rgba(31,36,80,.12)}   /* riel gris claro a todo el ancho de la ficha; el año activo lo marca su propio ::after en gold */
.lw-anada{position:relative;appearance:none;background:none;border:0;
  padding:2px 1px 7px;cursor:pointer;
  font-family:var(--font-display);font-size:clamp(15px,1.1vw,18px);line-height:1.45;
  letter-spacing:-.01em;color:var(--gray);
  transition:color .35s ease}
/* Área táctil de 44px sin tocar la caja visible: si el botón creciera de
   verdad, los años se separarían y perderían el ritmo de renglón. */
.lw-anada::before{content:"";position:absolute;left:-8px;right:-8px;top:50%;
  height:44px;transform:translateY(-50%)}
/* bottom:-1px lo apoya sobre el riel gris del contenedor —el trazo gold
   queda 2px más grueso que ese 1px, no flotando encima suyo. */
.lw-anada::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;
  background:var(--gold);transform:scaleX(0);transform-origin:center;
  transition:transform .4s var(--ease-expo)}
.lw-anada:hover{color:var(--navy)}
.lw-anada:hover::after{transform:scaleX(.5)}
.lw-anada.is-active{color:var(--navy)}
.lw-anada.is-active::after{transform:scaleX(1)}
.lw-anada:focus-visible{outline:2px solid var(--gold);outline-offset:5px;border-radius:2px}
@media(prefers-reduced-motion:reduce){
  .lw-anada,.lw-anada::after{transition:none}
}
.lw-tasting .eyebrow{margin-bottom:12px}   /* ver .estate__eyebrow */
.lw-tasting__title{margin-bottom:clamp(20px,2.4vw,30px)}
.lw-tasting__copy{color:var(--navy);opacity:.9;max-width:58ch;margin-bottom:clamp(48px,5vw,74px)}
/* El margen grande es el que separa la nota de su firma. Entre párrafos de la
   misma nota —Pionero trae dos— ese intervalo la parte en dos bloques
   sueltos: acá baja a un salto de párrafo normal. */
.lw-tasting__copy + .lw-tasting__copy{margin-top:calc(-1 * clamp(48px,5vw,74px) + clamp(20px,2.4vw,34px))}
.lw-tasting__cite{font-family:var(--font-display);letter-spacing:-.01em;color:var(--navy);line-height:1.6}
.lw-tasting__cite strong{font-weight:600}
.lw-tasting__cite em{font-style:italic}
/* Variante sin firma (harvest report de Pionero): el margen grande del
   último párrafo existía para dejarle aire a la cita que le seguía; sin
   cita, sobra como cola vacía dentro de la tarjeta. */
.lw-tasting--report .lw-tasting__copy:last-child{margin-bottom:0}

/* ---- Nota de cata como cita (La Linterna y Pionero) ----
   Usa el componente de cita con comilla colgada de Winemakers
   (.wmk-maker__quote: ver más abajo, agrupado). Acá sólo va lo propio de la
   nota: .lw-tasting es compartida con el Harvest Report de Pionero, así que
   esta es una variante (--quote) y no un cambio de la clase. Como la nota es
   de alguien, lleva firma en versalitas Minion trackeadas, en navy: la
   jerarquía la da la tipografía, no el color. */
.lw-tasting--quote,.lw-note__inner--quote{--quote-indent:56px}   /* sangría de la cita: la comilla queda colgando afuera */
/* El eyebrow se sangra igual que el texto: pegado a la comilla era el único
   elemento en ese borde y se leía desalineado del resto. */
.lw-tasting--quote .eyebrow,.lw-note__inner--quote .eyebrow{padding-left:var(--quote-indent)}
.lw-tasting--quote .eyebrow{margin-bottom:clamp(22px,2.4vw,32px)}
/* mismo aire a la derecha que a la izquierda: el bloque queda centrado en su columna */
.lw-tasting__quote{margin:0;padding-right:var(--quote-indent)}
.lw-tasting__quote footer{display:flex;flex-direction:column;gap:6px;
  margin-top:clamp(16px,1.8vw,22px)}
.lw-tasting__quote cite{font-style:normal;font-family:var(--font-sc);text-transform:uppercase;
  letter-spacing:.14em;font-size:clamp(.85rem,.95vw,.95rem);line-height:1.4;color:var(--navy)}
.lw-tasting__quote footer span{font-family:var(--font-ui);font-size:var(--fs-eyebrow);
  letter-spacing:.16em;text-transform:uppercase;color:var(--gray)}
/* Pionero: la placa sigue centrada en la página, pero la cita adentro va alineada
   a la izquierda como en Winemakers, no centrada entre rombos. */
.lw-note__inner--quote{align-items:stretch;text-align:left;max-width:min(640px,100%)}
@media(max-width:560px){.lw-tasting__quote{padding-right:0}}

@media(max-width:820px){
  .lw-sheet{grid-template-columns:1fr;gap:clamp(40px,9vw,70px)}
  /* apilado: la botella queda arriba, la ficha abajo —mismo orden que el DOM */
  .lw-sheet__box{padding:clamp(36px,7vw,56px) clamp(24px,5vw,40px);min-height:0;
    flex-direction:column;gap:clamp(28px,6vw,46px)}
  .lw-sheet__bottle img{height:clamp(280px,52vw,420px);margin:0 auto}}

/* ---- La finca ---- */
/* crema, para que la página alterne planos: hero crema · ficha blanca ·
   finca crema. Con la ficha en blanco, dejar finca también en --sand las
   fundía en una sola banda. */
.lw-finca{background:var(--cream);color:var(--navy);padding:clamp(90px,12vw,170px) 0;
  border-block:1px solid var(--gold-soft)}
.lw-finca__wrap{max-width:calc(var(--content-max) + var(--pad-x) * 2);margin:0 auto;
  padding-inline:calc(var(--pad-x) + var(--content-pad))}
.lw-finca h2{color:var(--navy);margin:16px 0 8px}
.lw-finca__meta{color:var(--gray)}
.lw-finca__grid{display:grid;grid-template-columns:1fr 1fr;
  column-gap:var(--gap-2col);row-gap:clamp(34px,6vw,90px);align-items:start}
.lw-finca__col{display:flex;flex-direction:column}
/* apaisada 7:5, con tope de 523px de alto (el object-fit:cover del img
   mantiene el encuadre cuando el tope recorta) */
/* El passepartout sale del grupo compartido de arriba —mismo papel, filete y
   sombra que el resto de las fotos del sitio—. Con box-sizing:border-box el
   padding del marco entra dentro del 7/5, así que la caja exterior no cambia
   de proporción: lo que se achica es la foto, que es lo que se busca. */
/* El :is() cubre img y video: el panel de "La finca" cambió la foto por el MP4
   de El Tomillo y la caja tiene que seguir siendo la misma —mismo 7/5, mismo
   cover— para que la altura del bloque no salte al cambiar de pestaña. */
.lw-finca__media{aspect-ratio:7/5;max-height:523px;overflow:hidden}
.lw-finca__media :is(img,video){width:100%;height:100%;object-fit:cover}
/* ---- Variante lámina: el mapa del Valle de Uco ----
   Anula lo que el componente trae pensado para fotos: fuera el passepartout
   (papel, filete y sombra), fuera el recorte 7/5 y fuera el cover. Un mapa
   recortado deja de servir como mapa.
   El multiply hace desaparecer el blanco del PNG contra la crema del panel,
   igual que en la lámina del perfil de suelo. Si este panel pasara a fondo
   oscuro, habría que volver a un PNG con alfa. */
.lw-finca__media--plate{aspect-ratio:auto;max-height:none;overflow:visible;
  padding:0;border:0;box-shadow:none;
  display:flex;justify-content:center;align-items:flex-start;
  /* La mezcla se resuelve DENTRO de esta caja, contra su propia crema, en vez
     de contra la página. Sin esto, el fade del panel (.lw-tabpanel.is-active)
     crea un contexto de apilado, el multiply se queda sin fondo con quien
     mezclarse y durante esa transición asoma el rectángulo blanco del PNG.
     Aislado, lo que se desvanece es el resultado ya mezclado. */
  isolation:isolate;background:var(--cream)}
.lw-finca__media--plate img{width:auto;height:auto;
  max-width:100%;max-height:clamp(320px,38vw,520px);
  object-fit:contain;mix-blend-mode:multiply}
.lw-finca__copy{color:var(--navy);opacity:.82;margin-bottom:36px;max-width:56ch}
.lw-finca__copy:last-child{margin-bottom:0}
/* Tres columnas: son tres datos y entran en una sola fila. A dos quedaba uno
   solo abajo, con el filete de arriba cortado a media caja. El gap horizontal
   baja a 24px porque la columna ya es angosta. */
.lw-finca__data{display:grid;grid-template-columns:repeat(3,1fr);gap:22px 24px;
  margin-top:auto}
.lw-finca__data > div{display:flex;flex-direction:column;border-top:1px solid rgba(192,148,108,.28);padding-top:14px}
.lw-finca__data .lw-data__k{color:var(--gold);margin-bottom:8px}
/* El valor se empuja al pie de su celda. Con tres columnas "Superficie
   plantada" parte en dos líneas y, sin esto, su dato quedaba un renglón más
   abajo que los otros dos. Las celdas ya estiran a la altura de la fila
   (grid, align-items:stretch), así que el margin-top:auto las alinea sin
   fijar alturas a mano. */
.lw-finca__data .lw-data__v{color:var(--navy);opacity:.9;margin-top:auto}
/* apilado la columna es angosta: a tres los valores se romperían en dos
   líneas, así que abajo de 860 vuelven a dos. */
@media(max-width:860px){.lw-finca__grid{grid-template-columns:1fr}.lw-finca__data{grid-template-columns:1fr 1fr}}

/* ---- Tabs (El lugar / Perfil del suelo) ---- */
.lw-tabs{display:flex;gap:clamp(22px,3vw,40px);margin:clamp(28px,3.4vw,42px) 0 clamp(52px,6vw,84px);border-bottom:1px solid rgba(31,36,80,.12)}
/* El margen inferior del tablist es el aire entre la navegación y el panel.
   Se duplicó (de ~26–38px a ~52–84px) para que arriba respire como abajo: el
   contenido arrancaba pegado al filete y la sección se leía descompensada. */
/* sin encabezado arriba, el padding de la sección ya da el aire */
.lw-finca__wrap > .lw-tabs:first-child{margin-top:0}

/* ---- Encabezado de panel: título serif + bajada en script (los 3 tabs) ---- */
.lw-phead{margin-bottom:clamp(20px,2.4vw,32px)}
.lw-phead__title:only-child{margin-bottom:0}
.lw-phead__title{font-family:var(--font-display);font-weight:400;color:var(--navy);
  font-size:clamp(1.6rem,2.4vw,2.1rem);line-height:1.1;letter-spacing:-1px;}
.lw-phead__sub{font-family:var(--font-script);color:var(--gold);
  font-size:clamp(1.25rem,1.9vw,1.7rem);line-height:1.2;letter-spacing:.02em;margin-top:4px}

.lw-tab{background:none;border:0;cursor:pointer;padding:0 0 14px;position:relative;
  font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.18em;font-size:12px;font-weight:300;
  color:rgba(31,36,80,.5);transition:color .4s}
.lw-tab:hover{color:rgba(31,36,80,.85)}
.lw-tab.is-active{color:var(--navy)}
.lw-tab::after{content:"";position:absolute;left:0;bottom:-1px;width:100%;height:2px;background:var(--gold);
  transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease-expo)}
.lw-tab.is-active::after{transform:scaleX(1)}
.lw-tab:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.lw-tabpanel{display:none}
.lw-tabpanel.is-active{display:block;animation:lwFade .55s var(--ease-expo)}
.lw-finca__quote{font-family:var(--font-display);letter-spacing:-.01em;font-style:italic;font-size:clamp(1.1rem,1.55vw,1.45rem);
  line-height:1.5;color:var(--navy);max-width:34ch;margin-bottom:24px}
/* Mismo remate de .rombo que .mf__sign y la placa de cata de Pionero
   (.lw-note): un único recurso de cita para todo el sitio, ya no un filete
   propio acá. Arranca pegado al margen izquierdo de la columna (.rombo
   centra por defecto), como hacía el filete que reemplaza. */
.lw-finca__rule{justify-content:flex-start;margin-bottom:30px}

/* ---- Perfil del suelo (dentro de la finca, fondo navy) ---- */
/* ---- Lámina del perfil de suelo ----
   La ilustración está dibujada sobre blanco, no recortada con transparencia.
   El multiply hace desaparecer ese blanco contra la crema del fondo sin tener
   que rehacer el archivo: sobre un fondo claro el multiply deja el papel y se
   queda sólo con los grises y sepias del dibujo.
   OJO si alguna vez el panel va sobre fondo oscuro: ahí el multiply apagaría
   la lámina entera y habría que volver a un PNG con alfa. */
/* La lámina se ata al ALTO de la columna de texto, no a un número fijo: tiene
   que terminar donde termina el párrafo, y ese párrafo cambia de alto según el
   viewport. La grilla es align-items:start, así que a esta columna —y sólo a
   ella— se le pide stretch; el object-fit:contain hace que el dibujo entre
   entero sin deformarse y el object-position lo deja arriba.
   No hay bucle de realimentación: la imagen nunca empuja el alto de la fila,
   sólo ocupa el que le dan. */
.lw-finca__col:has(.lw-soil__plate){position:relative;align-self:stretch}
/* La figura va ABSOLUTA a propósito. En flujo, el height:100% de la imagen se
   resolvía contra una altura indefinida, caía a auto y terminaba siendo la
   lámina la que fijaba el alto de la fila —justo al revés de lo buscado—.
   Fuera del flujo, la columna estira contra la fila, la fila la define sólo
   el texto, y la imagen ocupa lo que le queda. */
.lw-soil__plate{position:absolute;inset:0;margin:0;
  display:flex;justify-content:center;
  /* mismo motivo que en .lw-finca__media--plate: la mezcla se aísla acá para
     que el fade del panel no le saque el fondo al multiply */
  isolation:isolate;background:var(--cream)}
.lw-soil__plate img{display:block;width:auto;max-width:100%;height:100%;
  object-fit:contain;object-position:top center;
  mix-blend-mode:multiply}
@media(max-width:860px){
  /* en una columna no hay texto al lado que dé la altura: vuelve a medida propia */
  .lw-soil__plate{position:static;display:block}
  .lw-soil__plate img{height:auto;max-height:clamp(320px,60vw,460px);
    margin-inline:auto}
}

/* Muestras punteadas del perfil de suelo: fuera de uso desde que entró
   .lw-soil__plate. Se conservan por si hay que volver atrás. */
.lw-soil__rows{display:flex;flex-direction:column;gap:clamp(22px,2.6vw,34px)}
.lw-soil__row{display:flex;align-items:center;gap:clamp(20px,2.4vw,32px)}
.lw-soil__swatch{flex:none;width:clamp(96px,9vw,140px);aspect-ratio:1;border:1px solid var(--gold-soft);background-color:#faf7f0}
.lw-soil__swatch--roots{background-image:radial-gradient(rgba(120,120,120,.5) 1px,transparent 1.5px);background-size:8px 8px}
.lw-soil__swatch--s1{background-image:radial-gradient(rgba(120,120,120,.28) 6px,transparent 7px);background-size:30px 30px;background-position:center}
.lw-soil__swatch--s2{background-image:radial-gradient(rgba(120,120,120,.22) 4px,transparent 5px);background-size:20px 20px}
.lw-soil__info{padding-left:clamp(18px,2.2vw,28px)}
.lw-soil__info h4{font-family:var(--font-display);letter-spacing:-1px;font-style:italic;font-size:clamp(19px,1.8vw,26px);color:var(--navy);margin-bottom:6px}
.lw-soil__depth{font-style:normal;font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.14em;font-size:11px;color:var(--gold)}
.lw-soil__lead{color:rgba(31,36,80,.86)}
.lw-soil__info p{color:rgba(31,36,80,.78);line-height:1.6}
@media(max-width:560px){.lw-soil__row{gap:18px}.lw-soil__swatch{width:80px}}

/* ---- Hero: línea (nombre de gama) ---- */
.lw-hero__line{font-size:13px;letter-spacing:.34em;margin-bottom:14px}





/* ============================================================
   WINEMAKING — título + banda (Brunello DNA) + swiper sistemas
   ============================================================ */

.wmk-open{background:var(--cream);padding:clamp(150px,19vh,230px) 0 0}
/* Separación entre el título y la banda de apertura. El tope de 50px es el
   valor pedido; el 4vh lo hace proporcional hacia abajo, para que en pantallas
   bajas el título no quede pegado a la foto ni se coma el aire de arriba.
   .wmk-open__head lo usan todas las subpáginas, así que el intervalo es el
   mismo en Estate, Legado, Vinos, Winemaking y Hospitalidad. */
.wmk-open__head{text-align:center;padding:0 var(--pad-x);
  margin-bottom:clamp(28px,4vh,50px)}
.wmk-open__head .eyebrow{margin-bottom:12px}   /* ver .estate__eyebrow */
.wmk-open__title{color:var(--navy);font-size:var(--fs-title);line-height:1.08;letter-spacing:-1px}
.wmk-open__title em{font-style:italic;font-weight:inherit}
/* banda horizontal — mask reveal centro→afuera (data-expand) */
.wmk-band{width:100%;overflow:hidden;aspect-ratio:16/6.4;will-change:clip-path}
/* img o video: la banda es la misma pieza en las seis subpáginas y sólo cambia
   con qué se llena (winemaking va en video). El encuadre lo pone la banda con
   su aspect-ratio, así que el medio sólo tiene que cubrirla. */
.wmk-band :is(img,video){width:100%;height:100%;object-fit:cover;object-position:center;display:block}

/* ---- Variante de dos tiempos (vinos.html) ----
   La capa de abajo, Pionero, no se anima nunca: queda de piso y así el
   crossfade no puede abrir un hueco de fondo entre slide y slide. Sólo
   la de arriba va y viene. Ciclo de 12s = 6 de cada uno, con un cruce de
   ~1s (8% del ciclo) en cada punta.
   El range de La Linterna es un packshot recortado sobre blanco, no una
   foto de ambiente: con cover se le cortarían las botellas por la mitad,
   así que va en contain sobre el crema de la página. */
.wmk-band--duo{position:relative;background:var(--cream)}
.wmk-band--duo img{position:absolute;inset:0}
/* El contain era para el PNG recortado de la gama, que no podía sangrarse.
   Con las dos capas siendo fotos de banner, las dos van a cover: si una
   entrara en contain, el cruce cambiaría de encuadre a mitad de la fundida. */
.wmk-band__b{opacity:0;
  animation:wmkDuo 12s var(--ease-smooth) infinite}

/* Placa de cita entre la banda y .wmk-copy: sólo padding-top, .wmk-copy pone
   el de abajo — mismo criterio de no duplicar aire que .wmk-open→.wmk-band. */
.wmk-quote-open{background:var(--cream);padding:clamp(56px,7.5vw,96px) var(--pad-x) 0}

.wmk-copy{background:var(--cream);max-width:min(760px,calc(100% - 2 * var(--pad-x)));
  margin:0 auto;padding:clamp(70px,11vw,150px) 0;text-align:center}
/* Después de la cita de apertura el salto ya lo puso .wmk-quote-open: acá
   sólo hace falta separar del texto, no repetir el aire de sección completa. */
.wmk-quote-open + .wmk-copy{padding-top:clamp(36px,4.5vw,58px)}
.wmk-copy__p{color:var(--navy)}
.wmk-copy__p + .wmk-copy__p{margin-top:clamp(22px,3vw,34px)}
.wmk-copy .leg-feature{max-width:100%;margin-bottom:clamp(36px,5vw,60px)}   /* sin el tope de 52ch: la frase de apertura entra en dos líneas */
/* párrafo que acompaña a la cita y va centrado (Estate) */
.wmk-copy .wmk-copy__p--center{text-align:center!important}
.wmk-copy__p--sub{max-width:34ch;margin-left:auto;margin-right:auto}

.wmk-gal{background:var(--cream);padding:0 0 clamp(90px,13vw,180px)}
.wmk-gal__head{margin:0 auto clamp(30px,4vw,50px);padding:0 calc(var(--pad-x) + var(--content-pad))}   /* mismo eje que el bloque de los enólogos (.wmk-team__inner) */
.wmk-gal__head .eyebrow{margin-bottom:12px}   /* ver .estate__eyebrow */
/* tira horizontal contenida en el eje del sitio (scroll nativo, snap).
   El riel es el ancho útil: arranca y termina en --pad-x, igual que el
   encabezado de la sección. La card cortada sigue avisando que hay más,
   pero corta sobre el eje y no contra el borde del viewport. */
.wmk-strip{--wmk-cols:4;--wmk-gap:clamp(14px,1.6vw,26px);
  display:flex;gap:var(--wmk-gap);overflow-x:auto;
  margin-inline:calc(var(--pad-x) + var(--content-pad));padding:0 0 6px;   /* ídem: la grilla no sale del ancho de la columna de abajo */
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  scrollbar-width:none;-ms-overflow-style:none;cursor:grab}
.wmk-strip::-webkit-scrollbar{display:none}
.wmk-strip:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
/* el basis se calcula contra el riel (que ya es el ancho útil) para que entren
   exactamente --wmk-cols columnas: en vw la card se pasaba de la columna. */
.wmk-slide{flex:0 0 calc((100% - var(--wmk-gap) * (var(--wmk-cols) - 1)) / var(--wmk-cols));
  position:relative;margin:0;scroll-snap-align:start}
.wmk-slide__media{aspect-ratio:1;overflow:hidden;background:#e7e4dd}
.wmk-slide__media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.4s var(--ease-expo)}
.wmk-slide:hover .wmk-slide__media img{transform:scale(1.04)}
/* Rótulo al pie de la foto, no arriba. En vez del recuadro opaco va un velo
   degradado que muere antes de la mitad: apoya la lectura sin taparle la
   imagen ni dibujar una caja. Entra desde abajo, que es de donde viene. */
.wmk-slide__k{position:absolute;left:0;right:0;bottom:0;z-index:2;
  font-family:var(--font-ui);font-weight:300;text-transform:uppercase;
  letter-spacing:.16em;font-size:9px;color:var(--cream);
  padding:30px 14px 12px;
  background:linear-gradient(to top,rgba(12,12,14,.6) 0%,
    rgba(12,12,14,.26) 55%,rgba(12,12,14,0) 100%);
  opacity:0;transform:translateY(6px);
  transition:opacity .45s var(--ease-expo),transform .45s var(--ease-expo)}
.wmk-slide:hover .wmk-slide__k,.wmk-slide:focus-within .wmk-slide__k{opacity:1;transform:translateY(0)}
/* Sin hover —touch— el rótulo no aparecería nunca y el nombre de cada vasija
   es información, no decoración: ahí queda fijo. */
@media(hover:none){
  .wmk-slide__k{opacity:1;transform:none}
}
/* al angostarse, 4 cuadrados dejan de leerse: se baja de a una columna. En
   mobile la card asoma la siguiente (1.6) en vez de ocupar el riel entero. */
@media(max-width:1100px){.wmk-strip{--wmk-cols:3}}
@media(max-width:820px){.wmk-strip{--wmk-cols:2}}
@media(max-width:560px){.wmk-strip{--wmk-cols:1.6}}

/* ---- Enólogos: dos bloques alternados con retrato 3:4 ----
   Mismo esqueleto que .leg (seccion con --pad-x + inner con --content-max),
   y la grilla de dos columnas estandar del sitio (1fr 1fr + --gap-2col). */
.wmk-team{background:var(--cream);padding:0 var(--pad-x) clamp(100px,15vw,200px)}
.wmk-team__inner{max-width:var(--content-max);margin:0 auto;
  display:flex;flex-direction:column;gap:clamp(80px,11vw,170px)}
.wmk-maker{display:grid;grid-template-columns:1fr 1fr;
  column-gap:var(--gap-2col);align-items:center;
  scroll-margin-top:var(--hdr-h)}   /* el CTA de cada tab en la home ancla acá */
/* el orden del DOM es siempre texto -> foto (orden de lectura: quien es, despues
   la imagen). El bloque invertido solo mueve la foto, no reordena el markup.
   Quien se mueve es el marco, que ahora es el hijo de la grilla; el media
   pasó a vivir adentro. */
.wmk-maker--flip .wmk-maker__frame{order:-1}

/* las dos fotos vienen con proporciones distintas (0.820 y 0.667): se fija 3:4
   y el cover resuelve el resto. El eje Y solo afecta a la de Juliana, que es la
   unica mas alta que la caja, y va anclado arriba porque esta encuadrada al ras
   del borde superior: centrado le cortaba la cabeza. */
.wmk-maker__media{aspect-ratio:3/4;overflow:hidden;background:#e7e4dd}
.wmk-maker__media img{width:100%;height:100%;object-fit:cover;object-position:50% 10%;
  display:block;transition:transform 1.4s var(--ease-expo)}
.wmk-maker:hover .wmk-maker__media img{transform:scale(1.03)}

/* el nombre es un h2: familia, escala y tracking ya vienen del global */
.wmk-maker__name{color:var(--navy)}
/* el cargo va DESPUÉS del nombre, no antes: como eyebrow leería como andamiaje.
   Deja de ser metadato y pasa al mismo tratamiento que las bajadas de producto
   (Pionero, La Linterna): Notera en gold y la misma escala. Decisión de marca
   pedida por el cliente; el gold sobre crema da 2.6:1, igual que el resto de
   las bajadas script del sitio, así que la nota va acá y no se resuelve suelta. */
.wmk-maker__role{margin-top:8px;
  font-family:var(--font-script);color:var(--gold);font-weight:400;
  font-size:clamp(1.45rem,2.3vw,2.15rem);line-height:1.1;
  letter-spacing:0;text-transform:none;opacity:1}
.wmk-maker__copy{margin-top:clamp(26px,3.2vw,40px);
  color:var(--navy);opacity:.85}
/* filete gold como pseudo: evita un span vacio solo para decorar */
.wmk-maker__copy::before{content:"";display:block;width:56px;height:1px;
  background:var(--gold);margin-bottom:clamp(26px,3.2vw,40px)}
/* las bios son de varios parrafos: el filete abre el bloque una sola vez, no
   cada parrafo, o el texto queda picado en fichas sueltas */
.wmk-maker__copy + .wmk-maker__copy{margin-top:clamp(18px,2.2vw,26px)}
.wmk-maker__copy + .wmk-maker__copy::before{display:none}
/* Cita del enólogo: a propósito distinta de la placa de Legado/apertura
   (.leg-feature/.leg-quote, centrada, entre rombos): va alineada a la
   izquierda, con la comilla grande colgada y el remate de rombos. El texto
   es itálica display en navy —la itálica queda reservada para citas— y no
   versalitas en gold: la comilla ya pone el acento de color. */
/* Es el mismo componente de las notas de cata (.lw-tasting__quote: La Linterna
   y Pionero): se agrupan acá en vez de repetir las reglas. */
:is(.wmk-maker__quote,.lw-tasting__quote){position:relative;
  padding-left:var(--quote-indent,56px)}   /* sin tope de ancho: ocupa toda la columna, como el resto del texto */
.wmk-maker__quote{margin:46px 0 40px}
:is(.wmk-maker__quote-mark,.lw-tasting__quote-mark){position:absolute;left:-2px;top:-.22em;
  font-family:var(--font-display);font-style:normal;font-weight:400;
  font-size:100px;line-height:1.4;color:#c0946c4a}
:is(.wmk-maker__quote,.lw-tasting__quote) p{font-family:var(--font-display);color:var(--navy);
  text-transform:none;letter-spacing:-0.01em;margin:0 -.13em 0 0;
  font-size:18px;line-height:1.6;text-align:justify;font-style:italic}
/* cierre alineado a la izquierda: mismo .rombo de siempre, pero sin centrar */
:is(.wmk-maker__quote,.lw-tasting__quote) .rombo{justify-content:flex-start;margin-top:clamp(18px,2.2vw,26px)}

@media(max-width:820px){
  .wmk-maker,.wmk-maker--flip{grid-template-columns:1fr;row-gap:clamp(26px,5vw,40px)}
  /* apilado los dos igual: foto arriba, texto debajo */
  .wmk-maker__frame,.wmk-maker--flip .wmk-maker__frame{order:-1}
  .wmk-maker__copy{max-width:none}
}

/* ============================================================
   HOSPITALIDAD — experiencias en filas alternadas

   La grilla de seis cards cuadradas se fue: mostraba las experiencias como
   catálogo, y lo que hay que resolver acá es la decisión de reservar. Cada
   experiencia pasa a ocupar una fila entera —pieza vertical de un lado,
   relato + ficha + reserva del otro— y las filas alternan el lado para que
   el scroll no se lea como una lista.
   ============================================================ */
.hosp-exp{background:var(--cream);padding:0 var(--pad-x) clamp(100px,15vw,200px)}
.hosp-exp__head{max-width:min(760px,100%);margin:0 auto clamp(40px,5vw,72px);text-align:center}   /* misma medida que .hosp-row y que la columna de texto de arriba (.wmk-copy, 760px) */
/* el grupo del eje de página le suma --content-pad a cada lado (el divisor quedaba en 480px): acá la caja ya es la columna */
.hosp-exp .hosp-exp__head{padding-inline:0}
/* divisor: filete dorado a cada lado del rótulo, de borde a borde de la columna */
.hosp-exp__head .eyebrow{display:flex;align-items:center;gap:clamp(18px,2.4vw,32px)}
.hosp-exp__head .eyebrow::before,.hosp-exp__head .eyebrow::after{content:"";flex:1;height:1px;background:var(--gold)}

/* La columna de la pieza no es una fracción sino un ancho propio: a 1fr, el
   9:16 se iba a más de 1200px de alto y la fila quedaba en dos pantallas.
   Con un tope de ~390px la pieza mide lo que mide un teléfono, que es de
   donde sale el material. */
/* La fila ocupa las dos columnas centrales de una grilla de cuatro: mide la
   mitad del ancho y queda centrada, con una columna de aire a cada lado. Las
   dos mitades son iguales —pieza y texto miden lo mismo— así que la fila se
   lee como un solo bloque centrado y no como dos pesos distintos.

   Va con ancho propio y no con --content-max: contra los 1560 del eje la
   columna de texto se iba a 1080px, que ningún párrafo llena, y quedaba medio
   metro de aire muerto entre las dos columnas.
   Tampoco entra en el grupo de padding-inline:--content-pad —el de los
   bloques que sí se miden contra el eje—: ese padding vale 140px por lado en
   pantallas grandes y le comía 280px justo al bloque que ya venía acotado,
   dejando el texto en un tercio de su medida. */
.hosp-row{--hosp-gap:clamp(24px,3vw,56px);
  max-width:min(760px,100%);margin:0 auto;   /* mismo ancho máximo que .wmk-copy: foto y texto entran en esa columna */
  display:grid;grid-template-columns:1fr 1fr;
  gap:var(--hosp-gap);align-items:center}
.hosp-row + .hosp-row{margin-top:clamp(70px,10vw,150px)}
/* mismo criterio que .leg-ed--flip: el DOM lee siempre pieza → texto y el
   modificador sólo mueve la columna, no reordena el markup */
.hosp-row--flip .hosp-row__frame{order:2}

/* 9:16 y no un recorte libre: acá va a entrar la vertical de Instagram, así
   que la caja es la del video y no la de la foto que lo reemplaza mientras
   tanto. El :is() cubre las dos para que cambiar <img> por <video> no pida
   tocar el CSS. */
.hosp-row__media{aspect-ratio:9/16;overflow:hidden;background:#e7e4dd}
.hosp-row__media :is(img,video){width:100%;height:100%;object-fit:cover;
  display:block;transition:transform 1.4s var(--ease-expo)}
.hosp-row:hover .hosp-row__media :is(img,video){transform:scale(1.03)}
/* el marco es hijo de la grilla y la caja de imagen vive adentro, para que
   el clip-path del reveal no se coma el papel junto con la foto */
.hosp-row__frame{margin:0}

.hosp-row__t{font-family:var(--font-display);letter-spacing:-1px;font-weight:400;color:var(--navy);
  font-size:var(--fs-h3);line-height:1.14}
.hosp-row__t em{font-style:italic}
/* sin max-width propio: quien fija la medida es el ancho de la columna,
   que ya está calculado para que el párrafo la llene */
.hosp-row__d{margin-top:clamp(14px,1.8vw,22px);
  color:var(--navy);opacity:.85}

/* Ficha de la experiencia: un dato por fila entre filetes, igual que el riel
   de la entrada de hito. El icono va en su propia columna de la grilla y no
   flotando en el texto: varios datos ocupan dos o tres líneas y con un
   inline-flex la segunda línea se metía debajo del dibujo. */
.hosp-spec{list-style:none;margin:clamp(24px,3vw,38px) 0 0}
.hosp-spec li{display:grid;grid-template-columns:20px minmax(0,1fr);gap:14px;
  align-items:start;padding:13px 0;border-top:1px solid rgba(31,36,80,.12)}
.hosp-spec li:last-child{border-bottom:1px solid rgba(31,36,80,.12)}
.hosp-spec svg{width:16px;height:16px;margin-top:3px;stroke:var(--gold);fill:none;
  stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.hosp-spec span{font-family:var(--font-display);letter-spacing:-.01em;font-size:15px;line-height:1.65;
  color:var(--navy)}
.hosp-row .cta{margin-top:clamp(26px,3.2vw,40px)}

@media(max-width:860px){
  /* apilado la pieza vuelve arriba en las dos variantes: el orden del DOM ya
     es el correcto para leer de arriba hacia abajo */
  :is(.hosp-row,.hosp-row--flip){grid-template-columns:1fr;gap:26px;max-width:460px}
  .hosp-row--flip .hosp-row__frame{order:0}
  .hosp-row + .hosp-row{margin-top:clamp(56px,9vw,90px)}
}

/* ============================================================
   LEGADO — grilla desestructurada (imágenes + textos destacados)
   ============================================================ */
.leg{background:var(--cream);padding:clamp(50px,8vw,110px) var(--pad-x) clamp(100px,15vw,200px)}
.leg__inner{max-width:var(--content-max);margin:0 auto;display:flex;flex-direction:column;
  gap:clamp(72px,12vw,190px)}
.leg-quote{font-family:var(--font-display);color:var(--navy);
  font-size:clamp(1.6rem,3vw,2.55rem);line-height:1.28;letter-spacing:-.01em;}
.leg-quote em{font-style:italic}

/* ---- Composición editorial (retoma el bloque Legado de la home) ----
   Dos columnas de flujo independiente: la angosta lleva el texto y una foto
   secundaria escalonada, la ancha manda con el marco principal. Se replica
   acá y no se comparte con .intro porque aquella vive en body.home y esta en
   subpágina: mismo lenguaje, distinto scope. Lo que se comparte de verdad
   —la columna de lectura— sigue siendo .wmk-copy, que no se duplicó. */
.leg-ed{position:relative;z-index:1;background:var(--cream);
  padding:clamp(60px,8.5vw,140px) var(--pad-x) 0}
/* El padding interno lo pone el grupo del eje de página. Funciona sin tocar
   la grilla porque sus porcentajes (37.1 + 8.6 de gutter + 54.3 = 100) se
   miden contra la caja de contenido: al meter padding, las tres medidas
   bajan juntas y la composición conserva su proporción exacta. */
.leg-ed__grid{position:relative;max-width:var(--content-max);margin:0 auto;
  display:grid;grid-template-columns:37.1% 54.3%;
  column-gap:var(--gap-2col);align-items:start}
/* espejada: la foto abre a la izquierda y el texto cierra a la derecha */
.leg-ed--flip .leg-ed__grid{grid-template-columns:54.3% 37.1%}
.leg-ed__col{display:flex;flex-direction:column;min-width:0}
.leg-ed__lead{opacity:.82;
  color:var(--navy)}
.leg-ed__body{margin-top:clamp(30px,3.6vw,54px);
  font-size:var(--fs-body);line-height:1.85;opacity:.82;
  color:var(--navy);text-align:left}
/* Sólo cuando el cuerpo cae en la columna ancha (54.3%): ahí el renglón se
   iría a ~95 caracteres y hay que cortarlo por medida de lectura. En la
   columna angosta el tope sobra —y peor: dejaba el párrafo más corto que la
   bajada y que la foto de al lado, con los tres apoyados en el mismo eje. */
.leg-ed__body--medida{max-width:52ch}
.leg-ed__body p+p{margin-top:clamp(18px,2.4vw,40px)}

/* El passepartout (papel, hairline, sombra y grosor) viene del componente
   compartido de la zona global. */
/* la foto secundaria de cada columna baja para escalonar contra la principal */
.leg-ed__frame--sub{margin-top:clamp(44px,6.5vw,110px)}
/* arranca por debajo del párrafo de la columna de al lado */
.leg-ed__frame--drop{margin-top:clamp(40px,6vw,105px)}
/* Los dos retratos llenan su columna: la diferencia de escala entre padre e
   hijo la da el ancho de columna (37.1% contra 54.3%), no un recorte encima.
   Un width propio además rompía la relación con la grilla: la foto dejaba de
   apoyarse en los mismos ejes que el resto de la página. */

/* Cada proporción se elige contra la nativa de su foto, no al revés: son
   documentos de archivo y encuadres cerrados, y un recorte de oficio se come
   lo que la foto vino a decir —los Andes detrás de la bodega, los pies del
   grupal, el nombre grabado al pie de los retratos—. */
.leg-ed__img{position:relative;overflow:hidden;background:var(--ph-1);
  aspect-ratio:4/3}
.leg-ed__img--portrait{aspect-ratio:4/5}      /* retratos de archivo — nativo .77 */
/* los dos retratos traen el nombre grabado al pie de la propia foto y no hay
   epígrafe en HTML que lo reemplace: el recorte se ancla abajo y lo que cede
   es el aire sobre la cabeza, que no dice nada */
.leg-ed__img--portrait img{object-position:center bottom}
.leg-ed__img--family{aspect-ratio:604/686}    /* grupal en la cava — nativo .90 */
.leg-ed__img--wide{aspect-ratio:3/2}          /* placa de Quilmes — nativo 1.50 */
/* La bodega es un plano vertical (2:3) puesto en una ventana apaisada, así
   que sólo entra el 44% de su alto. Centrado, ese recorte se quedaba con el
   viñedo y perdía la montaña; subido al 32% conserva lo que la foto vino a
   decir: los Andes, el muro y el portal. */
.leg-ed__img--bodega img{object-position:center 32%}
.leg-ed__img--cork{aspect-ratio:724/610}      /* descorche — proporción real */
.leg-ed__img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transition:transform 1.4s var(--ease-expo)}
.leg-ed__frame:hover .leg-ed__img img{transform:scale(1.03)}

/* Escudo por detrás del marco. z-index:-1 lo manda atrás del passepartout
   pero no del fondo de sección, porque .leg-ed abre su propio contexto de
   apilado con z-index:1. */
.leg-ed__crest{position:absolute;display:block;aspect-ratio:216/262;
  background:url("assets/escudo_bembeg.svg") center/contain no-repeat;
  left:-8.7%;bottom:-10.3%;width:17.1%;z-index:-1;opacity:.3}
/* La variante --right salió con el escudo del grupal: contra el borde derecho
   del bloque el escudo no tenía aire para asomar y se cortaba. El único que
   queda abre hacia el gutter, que es donde hay lugar. */

/* ---- Foto suelta, centrada al ancho de la columna de lectura ----
   Mismo passepartout que los marcos de la composición, pero fuera de la
   grilla: comparte medida con .wmk-copy para que la página tenga un solo eje
   central y la foto no invente un ancho propio. */
.leg-solo{max-width:min(760px,calc(100% - 2 * var(--pad-x)));
  margin:clamp(56px,8vw,120px) auto 0}
/* --tight: cuando la foto viene pegada a un texto que ya trae su propio aire
   abajo, el margen propio se reduce para no sumar dos veces */
.leg-solo--tight{margin-top:0}

/* firma manuscrita montada sobre el ángulo del marco, como en la home */
.leg-ed__script{position:absolute;right:78%;bottom:18%;z-index:2;
  font-family:var(--font-script);color:var(--gold);font-size:2.6em;line-height:.98;
  text-align:right;white-space:nowrap;pointer-events:none}

/* El destacado de esta página usa el componente global .destacado-placa
   (zona compartida): el aire de abajo lo deja corto a propósito, porque lo
   que sigue es la foto de la bodega y su propio margen completa el intervalo. */

@media(max-width:900px){
  .leg-ed{padding-top:clamp(50px,8vw,90px)}
  .leg-ed__grid,.leg-ed--flip .leg-ed__grid{grid-template-columns:1fr;
    row-gap:clamp(40px,7vw,72px)}
  /* en una columna el escalonado no aporta: apila y sale */
  .leg-ed__frame--sub,.leg-ed__frame--drop{margin-top:clamp(32px,6vw,56px)}
  .leg-ed__script{font-size:2.1em;right:74%}
  /* en --flip la foto quedaría arriba y el texto abajo en las dos mitades de
     la página: se invierte para que el orden de lectura siga siendo texto
     primero, como en la composición no espejada */
  .leg-ed--flip .leg-ed__col:first-child{order:2}
}
@media(max-width:560px){
  .leg-ed__script{position:static;display:block;text-align:left;
    white-space:normal;margin-top:16px;font-size:1.9em}
}
/* ---- Cierre del legado ----
   Versalitas de Minion en el cobre de marca, entre dos rombos de 3 puntos
   —el mismo remate que .mf__sign y la placa de cata de Pionero (.lw-note)—:
   un único recurso de cita para todo el sitio, ya no un filete propio acá.
   Van como markup real (.rombo) en el HTML, no ::before/::after: tres puntos
   no se dibujan con un solo pseudo-elemento por lado.
   El cuerpo baja a escala de texto a propósito: el énfasis lo dan la versalita
   y el color, no el tamaño.
   La usa también la cita de la entrada de hito: es la misma placa, así que
   va una sola definición compartida y no una copia por página. */
/* La cita de Legado/Winemaking/Estate mide lo mismo que la foto de su página
   (.leg-solo, 760px): con el tope viejo de 52ch se partía en 4 o 5 líneas en
   pantallas anchas; a 760px queda en tres. */
.leg-feature{max-width:min(760px,100%)}
.ht-quote{max-width:min(52ch,100%)}
:is(.leg-feature,.ht-quote){margin:0 auto;
  display:flex;flex-direction:column;align-items:center;
  gap:clamp(28px,3.6vw,46px)}
:is(.leg-feature .leg-quote,.ht-quote p){max-width:100%;text-align:center;
  font-family:var(--font-sc);color:var(--gold);
  font-size:clamp(1rem,1.35vw,1.28rem);line-height:1.9; text-transform: uppercase;
  /* las versalitas se empastan sin tracking; el margen negativo compensa el
     espacio que la última letra de cada línea agrega a la derecha, para que
     el centrado sea óptico y no sólo matemático */
  letter-spacing:.13em;margin-right:-.13em}
/* la SC no tiene itálica: un <em> caería en la cursiva del fallback (Georgia)
   y rompería la línea de versalitas a mitad de frase */
:is(.leg-feature .leg-quote,.ht-quote p) em{font-style:normal}

/* El material de archivo (díptico de los Otto y placa de Quilmes) salió de la
   columna de lectura: los retratos entran en la composición de .leg-ed y la
   placa va sola en .leg-solo, con marco y proporción propios. */

/* ============================================================
   HITO — entrada editorial (hito-*.html)
   Una nota larga: cabecera de diario, banda a sangre, columna de
   lectura angosta y un riel de ficha que acompaña el scroll.
   ============================================================ */

/* barra de lectura: hairline gold sobre el header */
.ht-progress{position:fixed;top:0;left:0;width:100%;height:2px;z-index:1700;pointer-events:none}
.ht-progress__bar{display:block;height:100%;width:100%;background:var(--gold);
  transform:scaleX(0);transform-origin:left}

/* Las páginas de hito miden el mismo ancho de columna que el resto del sitio:
   margen lateral = --pad-x + --content-pad, no sólo el margen base. */
/* ---- Cabecera ---- */
.ht-mast{padding:clamp(120px,16vh,190px) calc(var(--pad-x) + var(--content-pad)) 0;margin:0 auto}
.ht-mast__grid{display:grid;grid-template-columns:1.35fr .65fr;
  column-gap:clamp(28px,5vw,90px);row-gap:0;align-items:start;margin-top:clamp(34px,5vw,64px)}
/* El rótulo (categoría · fecha) y el título pasan a ser filas de la grilla,
   y el texto de la derecha se alinea con el arranque del título, no con el pie.
   Mismo HTML en todos los hitos. */
.ht-mast__grid > div:first-child{display:contents}
.ht-mast__grid .ht-mast__meta{grid-column:1;grid-row:1}
.ht-mast__grid .ht-mast__title{grid-column:1;grid-row:2}
.ht-mast__grid .ht-mast__dek{grid-column:2;grid-row:2;align-self:start;padding-bottom:0}
.ht-mast__meta{display:flex;align-items:center;gap:16px;margin-bottom:clamp(18px,2.4vw,30px)}
.ht-mast__cat,.ht-mast__date{color:var(--navy)}   /* métrica en el grupo compartido */
.ht-mast__date{opacity:.5}
.ht-mast__meta i{width:5px;height:5px;transform:rotate(45deg);background:var(--gold-soft);
  display:inline-block;flex:none}
.ht-mast__title{color:var(--navy);font-size:var(--fs-title);line-height:1.06;
  letter-spacing:-1px}   /* sin tope de 16ch: el título ocupa el ancho de su columna */
.ht-mast__title em{font-style:italic}
.ht-mast__dek{font-family:var(--font-display);letter-spacing:-.01em;color:var(--navy);opacity:.78;
  font-size:clamp(1.05rem,1.35vw,1.3rem);line-height:1.62;max-width:34ch;
  padding-bottom:clamp(4px,1vw,10px)}

/* ---- Banda a sangre ---- */
.ht-band{margin-top:clamp(50px,7vw,96px);width:100%;overflow:hidden;
  aspect-ratio:16/7;background:#e7e4dd;will-change:clip-path}
.ht-band img{width:100%;height:100%;object-fit:cover;display:block}
/* leyendas de foto: misma métrica en la banda a sangre y en las figuras */
:is(.ht-cap,.ht-fig figcaption){font-family:var(--font-ui);font-weight:300;font-size:10.5px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--gray)}
.ht-cap{margin:14px auto 0;padding:0 calc(var(--pad-x) + var(--content-pad))}

/* ---- Cuerpo: riel de ficha + columna de lectura ---- */
.ht-art{margin:0 auto;padding:clamp(64px,9vw,130px) calc(var(--pad-x) + var(--content-pad)) 0;
  display:grid;grid-template-columns:minmax(190px,.9fr) minmax(0,2.4fr);
  gap:clamp(34px,6vw,110px);align-items:start}

.ht-rail{position:sticky;top:110px;display:flex;flex-direction:column}
.ht-rail__f{padding:14px 0;border-top:1px solid rgba(31,36,80,.12)}
.ht-rail__f:last-of-type{border-bottom:1px solid rgba(31,36,80,.12)}
.ht-rail__k{display:block;font-family:var(--font-ui);font-weight:300;font-size:9.5px;
  letter-spacing:.22em;text-transform:uppercase;color:var(--gray);margin-bottom:6px}
.ht-rail__v{display:block;font-family:var(--font-display);letter-spacing:-.01em;font-size:15px;line-height:1.5;
  color:var(--navy)}
.ht-col{max-width:64ch}
/* La entradilla ya no sube de cuerpo: va en el mismo cuerpo, interlínea y
   valor que .ht-p, y lo único que la despega del resto de la columna es la
   capitular. Un salto de tamaño acá abría un tercer escalón tipográfico
   entre el dek de la cabecera y el cuerpo, y la columna perdía unidad. */
.ht-lead{color:var(--navy);opacity:.88}
/* la capitular se recalcula sobre la interlínea nueva: al bajar el cuerpo de
   la entradilla, un 3.4em quedaba chico y perdía el peso de apertura */
.ht-lead::first-letter{float:left;font-family:var(--font-display);font-size:3.9em;line-height:.82;color:var(--gold);
  margin:.18em .12em 0 0;font-weight:400}
.ht-p{color:var(--navy);opacity:.88;
  margin-top:clamp(22px,2.6vw,32px)}
.ht-p em{font-style:italic}
.ht-sub{color:var(--navy);   /* métrica en el grupo compartido */
  margin-top:clamp(44px,6vw,80px);padding-top:18px;
  border-top:1px solid rgba(31,36,80,.12)}

/* La cita es la misma placa del cierre de Legado —versalitas de Minion en
   gold entre dos filetes cortos—, definida arriba en el grupo compartido.
   Acá sólo se resuelve lo que cambia por estar dentro de la columna de
   lectura y no en una sección propia: el aire vertical y la firma. */
.ht-quote{margin:clamp(48px,7vw,96px) auto}
/* ---- Cita a dos columnas: retrato + palabra ----
   Variante de la placa para cuando la cita tiene cara. El retrato a la
   izquierda y la palabra a la derecha convierten el bloque en una entrevista
   en miniatura, que es lo que la nota de añadas necesita: quien habla está
   nombrado tres veces en el cuerpo.

   El texto va a bandera izquierda —el centrado de la placa funciona cuando el
   bloque está solo y centrado en la página; acá dejaría la cita flotando
   fuera del eje de la foto— y por eso también se va el margen negativo, que
   existía para compensar ópticamente ese centrado.

   La firma no acompaña a la cita sino al retrato: puesta debajo de la foto
   nombra a quien se ve y a quien habla de una sola vez, y le devuelve aire a
   la columna de texto.

   Los rombos se mudan del contenedor a la columna de texto: colgados del
   bloque entero cruzarían por encima de la foto. Por eso acá no llevan markup
   propio: van dentro de .ht-quote__body, ver más abajo. */
.ht-quote--duo{max-width:none;display:grid;
  grid-template-columns:minmax(0,46%) minmax(0,1fr);
  gap:clamp(20px,3vw,42px);align-items:start}
/* Cuando la cita abre la nota, arranca a ras del riel: el margen superior de
   .ht-quote es el aire que necesita cuando va intercalada entre párrafos, y
   acá sólo la hundía respecto del primer rombo de la ficha. */
.ht-quote--duo:first-child{margin-top:0}
.ht-quote__photo{margin:0}
.ht-quote__media{overflow:hidden;aspect-ratio:3/4;background:#e7e4dd}
.ht-quote__media img{width:100%;height:100%;object-fit:cover;display:block}
/* Scope por .ht-quote--duo y no sólo por .ht-quote__photo: la regla general
   .ht-quote cite lleva un margen superior NEGATIVO —el que engancha la firma
   a la cita dentro de la placa— y, con la misma especificidad y estando más
   abajo en el archivo, ganaba y subía el pie encima de la foto. */
.ht-quote--duo .ht-quote__photo cite{display:block;margin-top:14px;font-style:normal;text-align:left;
  font-family:var(--font-ui);font-weight:300;font-size:10.5px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--navy);opacity:.6;line-height:1.7}
.ht-quote__body{display:flex;flex-direction:column;align-items:flex-start;
  gap:clamp(20px,2.6vw,32px)}
/* Doble clase a propósito: el grupo compartido de la placa se declara con
   :is(.leg-feature .leg-quote, .ht-quote p) y un :is() pesa lo que su
   argumento más específico —acá el descendiente de dos clases—, así que un
   .ht-quote--duo p suelto perdía y el texto seguía centrado.
   El cuerpo baja respecto de la placa: con el retrato al lado, la columna de
   texto es la mitad de ancha y a la escala original la versalita entraba de a
   tres palabras por línea. */
.ht-quote.ht-quote--duo p{text-align:left;margin-right:0;
  font-size:clamp(.84rem,1.02vw,.98rem)}
@media(max-width:640px){
  /* apilado el retrato va arriba, con su proporción intacta */
  .ht-quote--duo{grid-template-columns:1fr;gap:26px}
  .ht-quote__photo{max-width:280px}
}

.ht-quote cite{font-style:normal;
  font-family:var(--font-ui);font-weight:300;font-size:10.5px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--navy);opacity:.6;text-align:center;
  /* el gap de la placa es el que separa los filetes; la firma tiene que
     colgar de la cita, así que descuenta ese gap y deja sólo 18px */
  margin-top:calc(18px - clamp(28px,3.6vw,46px))}

.ht-fig{margin:clamp(46px,6vw,84px) 0}
/* Algunas fotos de nota son verticales y el 4/3 les recortaba media escena.
   El modificador les cambia la proporción y nada más: el ancho lo siguen
   dando los párrafos, igual que las horizontales, para que la columna tenga
   un solo borde izquierdo y uno derecho de arriba abajo. */
.ht-fig--v .ht-fig__media{aspect-ratio:3/4}
.ht-fig__media{overflow:hidden;background:#e7e4dd;aspect-ratio:4/3}
.ht-fig__media img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.4s var(--ease-expo)}
.ht-fig:hover .ht-fig__media img{transform:scale(1.03)}
.ht-fig figcaption{margin-top:12px}

/* cifras del reconocimiento */
.ht-facts{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(18px,2.6vw,40px);margin:clamp(40px,5vw,70px) 0 0;
  padding-top:26px;border-top:1px solid rgba(31,36,80,.12)}
.ht-facts li{display:flex;flex-direction:column;gap:8px}
.ht-facts b{font-family:var(--font-display);letter-spacing:-.01em;font-weight:400;
  font-size:clamp(1.8rem,3vw,2.6rem);line-height:1;color:var(--navy)}
.ht-facts span{font-family:var(--font-ui);font-weight:300;font-size:9.5px;
  letter-spacing:.2em;text-transform:uppercase;color:var(--gray);line-height:1.6}

.ht-end{margin-top:clamp(46px,6vw,80px);padding-top:26px;
  border-top:1px solid rgba(31,36,80,.12);display:flex;flex-wrap:wrap;
  align-items:center;justify-content:space-between;gap:20px}
.ht-end__sign{font-family:var(--font-display);letter-spacing:-.01em;font-style:italic;font-size:15px;
  color:var(--navy);opacity:.7}

/* ---- Otros hitos ---- */
.ht-more{margin:0 auto;
  padding:clamp(90px,13vw,170px) calc(var(--pad-x) + var(--content-pad)) clamp(100px,15vw,200px)}
.ht-more__head{display:flex;align-items:baseline;justify-content:space-between;
  gap:24px;flex-wrap:wrap;margin-bottom:clamp(36px,5vw,64px)}
.ht-more__h{font-family:var(--font-display);letter-spacing:-1px;color:var(--navy);
  font-size:var(--fs-h2);line-height:1.12}
.ht-more__h em{font-style:italic}
.ht-more__grid{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);
  gap:clamp(28px,4vw,70px)}
.ht-card{display:flex;flex-direction:column;height:100%;color:var(--navy)}
.ht-card:focus-visible{outline:1px solid var(--gold);outline-offset:6px}
.ht-card__img{aspect-ratio:4/3;overflow:hidden;background:#e7e4dd;margin-bottom:20px}
.ht-card__img img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.4s var(--ease-expo)}
.ht-card:hover .ht-card__img img{transform:scale(1.05)}
.ht-card__meta{display:flex;gap:14px;align-items:baseline;margin-bottom:10px}   /* métrica en el grupo compartido */
.ht-card__meta span:last-child{opacity:.5}
.ht-card__t{font-family:var(--font-display);letter-spacing:-1px;font-weight:400;
  font-size:clamp(1.25rem,1.9vw,1.7rem);line-height:1.16;max-width:22ch}
.ht-card__more{margin-top:18px;align-self:flex-start}   /* estilo en el grupo compartido */

/* ============================================================
   HITOS — índice (hitos.html)
   Cabecera editorial + grilla de 3 columnas con las mismas cards
   de la home. Reusa .ht-card.
   ============================================================ */
.hx{padding:clamp(120px,16vh,190px) var(--pad-x) clamp(100px,15vw,200px);
  margin:0 auto}
.hx__head{margin-bottom:clamp(50px,8vh,110px);max-width:var(--content-max)}
.hx__eyebrow{margin-bottom:12px}   /* estilo en el grupo compartido — ver .estate__eyebrow */
.hx__title{color:var(--navy);font-size:var(--fs-title);line-height:1.06;
  letter-spacing:-1px}
.hx__title em{font-style:italic}
.hx__grid{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(34px,4vw,70px) clamp(26px,3vw,54px)}
.hx__year{grid-column:1/-1;display:flex;align-items:center;gap:clamp(16px,2vw,28px);
  color:var(--navy);opacity:.55;margin-top:clamp(20px,3vw,44px)}   /* métrica en el grupo compartido */
.hx__year:first-child{margin-top:0}
.hx__year::after{content:"";flex:1;height:1px;background:rgba(31,36,80,.12)}
@media(max-width:980px){.hx__grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.hx__grid{grid-template-columns:1fr;gap:44px;max-width:440px}}

/* ---- Responsive ---- */
@media(max-width:980px){
  .ht-mast__grid{grid-template-columns:1fr;align-items:start}
  .ht-mast__grid .ht-mast__dek{grid-column:1;grid-row:3;margin-top:26px}
  .ht-mast__title{max-width:none}
  .ht-art{grid-template-columns:1fr;gap:38px}
  .ht-rail{position:static;top:auto}
  .ht-col{max-width:none}
  .ht-band{aspect-ratio:4/3}
}
@media(max-width:640px){
  .ht-facts{grid-template-columns:1fr;gap:22px}
  .ht-more__grid{grid-template-columns:1fr;gap:44px;max-width:440px}
}

/* ============================================================
   ESTATE — bloques Bodega / La Casa y el índice de fincas.
   El bloque es la misma composición 50/50 que .wmk-maker pero con
   título propio y varios párrafos; no se reusa aquella porque su
   semántica (nombre + cargo de una persona) no es esta.
   ============================================================ */
.est-blocks{background:var(--cream);padding:0 var(--pad-x) clamp(90px,13vw,170px)}
.est-blocks__inner{max-width:var(--content-max);margin:0 auto;
  display:flex;flex-direction:column;gap:clamp(80px,11vw,170px)}
.est-block{display:grid;grid-template-columns:1fr 1fr;
  column-gap:var(--gap-2col);align-items:center}
/* igual criterio que .wmk-maker: el DOM lee texto -> foto siempre; el
   modificador solo mueve la foto, no reordena el markup. Quien se mueve es el
   marco, que ahora es el hijo de la grilla. */
.est-block--flip .est-block__frame{order:-1}
.est-block__media{aspect-ratio:4/3;overflow:hidden;background:#e7e4dd}
.est-block__media img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.4s var(--ease-expo)}
.est-block:hover .est-block__media img{transform:scale(1.03)}
/* ---- Galería fade (La Casa) ----
   Pila de fotos dentro de la caja de media: lo único que se anima es opacity.
   Nada de display:none entre una y otra —cortaría la transición— ni de tocar
   posición o tamaño, que reflowean.

   Se funde UNA sola: la que entra, por encima de la que sale, que se queda
   opaca abajo hasta que termina. Fundiendo las dos a la vez, a mitad de cruce
   las dos quedan translúcidas y el fondo asoma por detrás: medido, la
   cobertura caía a 0.76 y se veía un destello claro en cada cambio.
   Curva lineal y no --ease-expo: en una disolvencia entre dos fotos el ritmo
   tiene que ser parejo; una curva expo entra de golpe y después repta.
   El transform sigue en la lista para no perder el scale del hover. */
.fade-gal{position:relative;width:100%;height:100%}
.fade-gal img{position:absolute;inset:0;opacity:0;z-index:0;
  transition:opacity 1.4s linear,transform 1.4s var(--ease-expo)}
.fade-gal img.is-on{opacity:1;z-index:1}   /* la que está en pantalla */
.fade-gal img.is-in{opacity:1;z-index:2}   /* la que entra, por encima */
.est-block__t{color:var(--navy)}
.est-block__sub{margin-top:clamp(10px,1.2vw,16px);color:var(--navy);opacity:.72}
.est-block__p{margin-top:clamp(24px,3vw,36px);
  color:var(--navy);opacity:.85}
/* el filete abre el bloque una sola vez. Va colgado del párrafo que sigue al
   subtítulo y no de :first-of-type, porque el primer <p> del bloque es el
   subtítulo y el selector no habría enganchado nunca. */
.est-block__sub + .est-block__p::before{content:"";display:block;width:56px;height:1px;
  background:var(--gold);margin-bottom:clamp(24px,3vw,36px)}
.est-block__p + .est-block__p{margin-top:clamp(16px,2vw,24px)}
@media(max-width:820px){
  .est-block,.est-block--flip{grid-template-columns:1fr;row-gap:clamp(26px,5vw,40px)}
  .est-block--flip .est-block__frame{order:0}
  .est-block__p{max-width:none}
}

/* ============================================================
   VINOS 2 — página de comparación de maquetas (vinos-2.html)
   Muestra las variantes de Pionero y La Linterna que conviven en
   la home, una debajo de la otra, cada una rotulada. Es una vista
   de trabajo para elegir: cuando se decida, esta página y sus
   estilos .vw2-* se borran junto con las variantes descartadas.
   ============================================================ */
/* rótulo: se apoya sobre el mismo eje lateral que los bloques
   (--blk-inset), no sobre --pad-x, para que la línea de la etiqueta
   caiga a plomo con el borde del marco gold que rotula. */
.vw2-tag{display:flex;align-items:baseline;gap:clamp(12px,1.6vw,22px);
  margin:clamp(64px,9vh,120px) var(--blk-inset) clamp(-18px,-2vh,-34px);
  padding-bottom:12px;border-bottom:1px solid rgba(31,36,80,.12)}
.vw2-tag:first-of-type{margin-top:0}
.vw2-tag__n{font-family:var(--font-ui);font-weight:300;font-size:10.5px;
  letter-spacing:.24em;text-transform:uppercase;color:var(--gold);
  flex:none;min-width:4.5ch}
.vw2-tag__name{font-family:var(--font-display);letter-spacing:-.01em;color:var(--navy);
  font-size:clamp(1rem,1.15vw,1.15rem);line-height:1.3}
/* el selector CSS es el dato operativo del rótulo: es lo que se busca
   en site.css para tocar o borrar la variante */
.vw2-tag__sel{margin-left:auto;font-family:var(--font-ui);font-weight:300;
  font-size:11px;letter-spacing:.06em;color:var(--gray);
  text-align:right;flex:none}
@media(max-width:900px){
  .vw2-tag{margin-inline:calc(var(--pad-x) * .5);flex-wrap:wrap;gap:6px 14px}
  .vw2-tag__sel{margin-left:0;flex-basis:100%;text-align:left}
}
}

/* ============================================================
   MÓVIL — citas más contenidas
   Las citas script (oro) pesan más que el cuerpo por su caligrafía: a 390px
   rondaban 22–27px y competían con el título. Al final del archivo para
   ganar por orden sobre las reglas de cada componente.
   ============================================================ */
@media(max-width:700px){
  :is(body.home,body.subpage) .pull{font-size:1.2rem}
  :is(body.home,body.subpage) :is(.hospi__pull,.wmaking__pull){font-size:1.4rem}
  :is(body.home,body.subpage) :is(.intro__script,.wmk-frame__script){font-size:1.3em}
  :is(body.home,body.subpage) :is(.lw-note__cite,.lw-finca__quote){font-size:1rem}
  :is(body.home,body.subpage) .mf__text{font-size:clamp(1.05rem,4.2vw,1.3rem)}
}
