/* ============================================================
   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 ---- */
@font-face{font-family:"Minion Pro";src:url("assets/tipografias/minion-pro/MinionPro-Regular.otf") format("opentype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Minion Pro";src:url("assets/tipografias/minion-pro/MinionPro-It.otf") format("opentype");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Minion Pro";src:url("assets/tipografias/minion-pro/MinionPro-Medium.otf") format("opentype");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Minion Pro";src:url("assets/tipografias/minion-pro/MinionPro-MediumIt.otf") format("opentype");font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:"Minion Pro";src:url("assets/tipografias/minion-pro/MinionPro-Semibold.otf") format("opentype");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Minion Pro";src:url("assets/tipografias/minion-pro/MinionPro-SemiboldIt.otf") format("opentype");font-weight:600;font-style:italic;font-display:swap}
@font-face{font-family:"Minion Pro";src:url("assets/tipografias/minion-pro/MinionPro-Bold.otf") format("opentype");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Minion Pro";src:url("assets/tipografias/minion-pro/MinionPro-BoldIt.otf") format("opentype");font-weight:700;font-style:italic;font-display:swap}
/* versalitas reales de Minion. La familia display 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:"Blair ITC";src:url("assets/tipografias/blair-itc-light.ttf") format("truetype");font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:"Blair ITC";src:url("assets/tipografias/Blaimim_.ttf") format("truetype");font-weight:500;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}

/* ============================================================
   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;
  --font-ui:"Blair ITC","Helvetica Neue",Arial,sans-serif;
  --font-script:"Notera","Marck Script",cursive; /* pull-quotes: script manuscrita */
  --font-sc:"Minion SC","Minion Pro",Georgia,serif; /* versalitas reales, sin itálica */

  /* 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:10px;                      /* eyebrows y rótulos */
  --fs-cta:12px;                          /* botones y llamados a la acción */
  --fs-body:clamp(16px,1.05vw,18px);
  --fs-h3:clamp(22px,2.2vw,34px);
  --fs-h2:clamp(2rem,3.4vw,2.5rem);      /* títulos de sección y de banner: uno solo para todo el sitio */
  --fs-title:clamp(2.1rem,4.8vw,4.1rem);  /* h1 de página (banda superior de subpágina) */
  --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 */
  --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. */
  --blk-inset:calc(var(--gut) + var(--canvas) * .08);  /* margen lateral de ambos bloques, desde el viewport */
  --blk-inset-c:calc(var(--canvas) * .08);             /* 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)}
body.is-locked{overflow:hidden;height:100vh}
h1,h2,h3{font-family:var(--font-display);font-weight:400;letter-spacing:-.01em;line-height:1.08}
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}

/* ---- 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}}

/* ============================================================
   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: Blair 500, versalitas,
   letter-spacing .28em. 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:.28em;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:.28em;font-size:var(--fs-eyebrow)}

/* ============================================================
   CTA — estilo único de todo el sitio: misma métrica que el eyebrow
   (Blair 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)}
/* 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)}

/* ============================================================
   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);line-height:1.1;
  font-size:clamp(1.15rem,1.75vw,1.75rem)}
.pionero__geo{font-family:var(--font-display);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:.03em;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:34ch;
  font-size:clamp(.95rem,1vw,1.08rem);line-height:1.9;opacity:.85}
: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:.03em;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:clamp(.92rem,.98vw,1.05rem);line-height:1.85;opacity:.85}
.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);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:.14em;
  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(18px,4vw,32px) clamp(74px,13vw,100px)}
  .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){
  .lint-card{flex-basis:86%}
}

/* ============================================================
   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,76px) 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}
  .pbn--b .pbn__panel{position:static;transform:none;width:auto;
    padding:clamp(40px,8vw,64px) clamp(24px,5vw,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 */
  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:.06em;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);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á */
.menu2__foot{width:100%;margin-top:auto;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){
  .menu2__foot{flex-direction:column;gap:12px;text-align:center}
  .menu2__foot .mid{flex-wrap:wrap;justify-content:center}
}

/* ============================================================
   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);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}

/* ---- 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}
.footer2__col a{font-family:var(--font-ui);font-weight:300;font-size:12px;letter-spacing:.03em;
  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__auth{position:relative;padding-left:16px!important}
.footer2__auth::before{content:"";position:absolute;left:0;top:50%;width:6px;height:6px;
  transform:translateY(-50%) rotate(45deg);border:1px solid var(--gold);transition:background .4s}
.footer2__auth:hover::before{background:var(--gold)}
.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}
}
@media(max-width:480px){.footer2__cols{grid-template-columns:1fr}}

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

/* ============================================================
   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:-.006em;
  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 clamp(20px,2.9vw,50px)}   /* estilo en el grupo compartido */
.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:clamp(.95rem,1vw,1.1rem);line-height:1.75;opacity:.82;
  text-align:justify;text-justify:inter-word}
/* 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:justify;text-justify:inter-word}
.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 */
.intro__script{position:absolute;right:78%;bottom:20%;z-index:2;
  font-family:var(--font-script);color:var(--gold);font-size:3em;line-height:.98;
  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)}
  .intro__script{font-size:2.2em;right:74%}
}
@media(max-width:560px){
  .intro__frame--cork{width:100%;align-self:stretch}
  .intro__script{position:static;display:block;text-align:left;white-space:normal;
    margin-top:18px;font-size:2em}
}

/* ---- Variante de index2.html (body.home2) ----------------------------
   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.
   index.html no se toca — todo cuelga de .home2, que suma especificidad
   sobre las reglas de arriba. 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{
  /* 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}
  /* El corte del título es de composición, no del ancho disponible: la
     itálica baja entera a la segunda línea ("Un legado / en construcción")
     en lugar de partirse donde caiga el reflow. */
  .intro__title{max-width:none}
  .intro__title em{display:block}

  @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}
    .intro__lead{width:68%}
    /* 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 arriba, montado sobre el ángulo superior izquierdo del marco:
       entra en la foto y cuelga hacia afuera, sobre el gutter. */
    .intro__script{right:74%;bottom:63%}
  }

  /* 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)}
  /* El CTA no estira a lo ancho de la columna y entra con el mismo fade
     lento del bloque: al quedar suelto perdió el de .intro__body. */
  .intro__cta{align-self:flex-start;
    opacity:0;transform:translateY(22px);
    transition:opacity 1s ease,transform 1.1s cubic-bezier(.19,1,.22,1)}
  .intro__cta.in{opacity:1;transform: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__pin{position:sticky;top:0;height:100vh;overflow:hidden}
.estate__media{position:absolute;inset:0;
  clip-path:inset(40% 33% 40% 33%);           /* rect centrado inicial (lo scrubbea el JS) */
  will-change:clip-path}
.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 */
.estate__content{position:absolute;left:var(--pad-x);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 */
.estate__eyebrow{margin-bottom:clamp(14px,1.7vw,22px)}   /* 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:-.01em;
  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{font-size:clamp(1rem,1.1vw,1.15rem);line-height:1.85;
  color:rgba(255,255,255,.88);margin-bottom:clamp(24px,3vw,38px)}
/* .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 */

/* ---- Pionero, variante index2.html (body.home2) ----------------------
   Aire propio al pie del banner. 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
   (a <=900px el panel es static y ese top queda inerte). */
&.home2{
  .pbn{--pbn-pb:clamp(70px,9vh,140px);padding-bottom:var(--pbn-pb)}
  .pbn--b .pbn__panel{top:calc(50% - var(--pbn-pb) / 2)}

  /* La Linterna: el intro 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. */
  .linterna__intro{align-self:center;padding-bottom:0}

  /* Los títulos pasan de texto a logotipo. El <h3> 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. A 40px de cuerpo dan los mismos
     182px y 266px que medían PIONERO y LA LINTERNA.
     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. */
  :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) * 6.65)}  /* 266px @ 40px */
}


/* ============================================================
   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:20px}   /* estilo en el grupo compartido */
.wmaking__title{font-family:var(--font-display);font-weight:400;color:var(--navy);
  font-size:var(--fs-h2);line-height:1.12;letter-spacing:-.01em}
.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;text-justify:inter-word}
.wmaking__cta{margin-top:clamp(26px,3vw,42px)}
/* stagger del texto */
.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)}
  .wmaking__copy{text-align:left}
}

/* ============================================================
   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) var(--pad-x);color:var(--cream)}
.hospi__eyebrow{margin-bottom:22px}   /* estilo en el grupo compartido */
.hospi__title{font-family:var(--font-display);font-weight:400;color:var(--cream);
  font-size:var(--fs-h2);line-height:1.12;letter-spacing:-.01em;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:52ch;
  font-size:var(--fs-body);line-height:1.85;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) var(--pad-x)}
}

/* ============================================================
   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:clamp(14px,1.8vw,22px)}   /* estilo en el grupo compartido */
.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:-.01em}
.hitos__title em{font-style:italic}
.hitos__intro{grid-area:3/1;margin-top:20px;max-width:44ch;font-family:var(--font-display);
  font-size:clamp(1rem,1.15vw,1.2rem);line-height:1.6;color:var(--navy);opacity:.7}
.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);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__intro,.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;

/* 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:.3em}
.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:.08em;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);font-size:44px;line-height:1;color:var(--navy)}
.legado__badge .l{margin-top:8px}
.legado__text{max-width:470px}
.legado__text .eyebrow{margin-bottom:26px}
.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 var(--pad-x);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:18px}
.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);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:26px}
.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)
   ============================================================ */
.wrap-narrow{margin:0 auto;padding:0 var(--pad-x)}   /* contenedor sobre el eje */

/* ---- Presentación del vino ---- */
.lw-hero{position:relative;overflow:hidden;padding:clamp(140px,17vh,220px) 0 clamp(70px,9vw,130px)}
.lw-hero__glow{position:absolute;top:-8%;right:4%;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%)}
.lw-hero__inner{position:relative;z-index:1;margin:0 auto;padding:0 var(--pad-x);
  display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,6vw,96px);align-items:center}
/* mismo cuerpo que los h2 del index; el bloque entero baja de escala con él */
.lw-hero__title{font-size:var(--fs-h2);line-height:1.14;margin:0 0 clamp(22px,2.6vw,34px)}
.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}
.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__text .pull{margin:clamp(24px,2.8vw,38px) 0 clamp(20px,2.4vw,30px)}
.lw-hero__text .body-copy{margin-bottom:clamp(26px,3vw,38px)}
.lw-hero__bottle{aspect-ratio:3/4.2;max-height:80vh;background:var(--ph-black)}
.lw-hero__bottle img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
@media(max-width:860px){.lw-hero__inner{grid-template-columns:1fr}.lw-hero__bottle{aspect-ratio:4/3;max-height:none}}

/* ---- Cata + ficha técnica ---- */
.lw-specs{padding:clamp(70px,9vw,130px) 0;background:var(--cream)}
.lw-sheet{display:grid;grid-template-columns:48% 1fr;gap:clamp(40px,6vw,110px);align-items:center}
/* el marco reserva su franja derecha; la botella se apoya sobre ese borde,
   igual que Pionero sobre la costura crema/foto. */
.lw-sheet__box{position:relative;border:1px solid var(--gold-soft);
  padding:clamp(44px,5.5vw,80px) 33% clamp(44px,5.5vw,80px) 16%;
  min-height:clamp(420px,42vw,640px);display:flex;align-items:center}
.lw-sheet__bottle{position:absolute;z-index:2;left:100%;top:50%;
  transform:translate(-65%,-50%);pointer-events:none}
/* altura explícita, no en %: un porcentaje resolvería contra el alto natural del PNG */
.lw-sheet__bottle img{display:block;height:clamp(330px,34vw,520px);width:auto;max-width:none;
  filter:drop-shadow(0 28px 44px rgba(31,36,80,.2))}
.lw-field{padding:12px 0}
.lw-field:first-child{padding-top:30px}
.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);font-size:clamp(15px,1.1vw,18px);color:var(--navy);line-height:1.45}
.lw-field__years{color:var(--gray);letter-spacing:.04em}
.lw-tasting .eyebrow{margin-bottom:22px}
.lw-tasting__copy{color:var(--navy);opacity:.9;line-height:1.85;max-width:58ch;margin-bottom:clamp(48px,5vw,74px);text-align:justify}
.lw-tasting__cite{font-family:var(--font-display);color:var(--navy);line-height:1.6}
.lw-tasting__cite strong{font-weight:600}
.lw-tasting__cite em{font-style:italic}
@media(max-width:820px){
  .lw-sheet{grid-template-columns:1fr;gap:clamp(40px,9vw,70px)}
  /* apilado: la botella entra en el flujo, arriba de la ficha */
  .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{position:static;transform:none;order:-1}
  .lw-sheet__bottle img{height:clamp(280px,52vw,420px);margin:0 auto}}

/* ---- La finca ---- */
.lw-finca{background:var(--sand);color:var(--navy);padding:clamp(90px,12vw,170px) 0;
  border-block:1px solid var(--gold-soft)}
.lw-finca__wrap{margin:0 auto;padding:0 var(--pad-x)}
.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) */
.lw-finca__media{aspect-ratio:7/5;max-height:523px;overflow:hidden}
.lw-finca__media img{width:100%;height:100%;object-fit:cover}
.lw-finca__copy{color:var(--navy);opacity:.82;margin-bottom:36px;max-width:56ch;line-height:1.8}
.lw-finca__copy:last-child{margin-bottom:0}
.lw-finca__data{display:grid;grid-template-columns:1fr 1fr;gap:22px 34px;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}
.lw-finca__data .lw-data__v{color:var(--navy);opacity:.9}
@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(26px,3vw,38px);border-bottom:1px solid rgba(192,148,108,.28)}
/* 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:-.01em}
.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);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}
.lw-finca__rule{display:block;width:56px;height:2px;background:var(--gold);margin-bottom:30px}

/* ---- Perfil del suelo (dentro de la finca, fondo navy) ---- */
.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);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}
.wmk-open__head{text-align:center;padding:0 var(--pad-x);margin-bottom:clamp(64px,9vh,120px)}
.wmk-open__head .eyebrow{margin-bottom:6px}
.wmk-open__title{color:var(--navy);font-size:var(--fs-title);line-height:1.08}
.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}
.wmk-band img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}

.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}
.wmk-copy__p{font-family:var(--font-display);color:var(--navy);
  font-size:1em;line-height:1.6; text-align:justify;}
.wmk-copy__p + .wmk-copy__p{margin-top:clamp(22px,3vw,34px)}

.wmk-gal{background:var(--cream);padding:0 0 clamp(90px,13vw,180px)}
.wmk-gal__head{margin:0 auto clamp(30px,4vw,50px);padding:0 var(--pad-x)}
.wmk-gal__head .eyebrow{margin-bottom:0}
/* 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:var(--pad-x);padding:0 0 6px;
  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)}
.wmk-slide__k{position:absolute;top:0;left:0;z-index:2;
  font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.18em;font-size:11px;
  color:#fff;background:rgba(20,20,22,.34);
  padding:12px 16px;opacity:0;transform:translateY(-8px);
  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)}
/* 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}
/* 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. */
.wmk-maker--flip .wmk-maker__media{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;
  font-size:var(--fs-body);line-height:1.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}

@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__media,.wmk-maker--flip .wmk-maker__media{order:-1}
  .wmk-maker__copy{max-width:none}
}

/* ============================================================
   HOSPITALIDAD — grilla de experiencias + CTA reservas
   ============================================================ */
.hosp-exp{background:var(--cream);padding:0 var(--pad-x) clamp(100px,15vw,200px)}
.hosp-exp__head{max-width:var(--content-max);margin:0 auto clamp(40px,5vw,72px);text-align:center}
/* grid y no masonry (column-count): con las fotos todas cuadradas las cards
   miden lo mismo, y el masonry además ordenaba en vertical (1-2 en la primera
   columna, 3-4 en la segunda) en vez de por fila. */
.hosp-grid{display:grid;grid-template-columns:repeat(3,1fr);
  column-gap:clamp(24px,3vw,56px);row-gap:clamp(40px,5vw,80px);
  max-width:var(--content-max);margin:0 auto}
.hosp-card{display:block;color:var(--navy)}
/* todas cuadradas: el object-fit:cover del img recorta lo que sobre */
.hosp-card__media{aspect-ratio:1/1;overflow:hidden;background:#e7e4dd;margin-bottom:18px}
.hosp-card__media img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.4s var(--ease-expo)}
.hosp-card:hover .hosp-card__media img{transform:scale(1.04)}
.hosp-card__k{font-family:var(--font-display);font-weight:400;
  font-size:clamp(1.2rem,1.6vw,1.55rem);line-height:1.2;margin-bottom:8px}
.hosp-card__d{font-size:14px;line-height:1.6;color:var(--navy);opacity:.72;max-width:32ch}
@media(max-width:900px){.hosp-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.hosp-grid{grid-template-columns:1fr;max-width:440px}}

.hosp-reserve{text-align:center;margin-top:clamp(30px,5vw,60px)}
/* estilo en el grupo compartido de CTA */

/* ============================================================
   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-row{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(32px,6vw,100px);align-items:center}
.leg-row--flip{grid-template-columns:.85fr 1.15fr}
.leg-row--flip .leg-row__media{order:2}
/* Una sola proporción para las tres fotos de la grilla: las tres viven en la
   columna de 1.15fr (en --flip la media va con order:2, o sea a la columna
   ancha), así que compartir aspect-ratio es lo que las deja exactamente al
   mismo alto. El ritmo de la sección lo da el escalón de --offset, no un
   retrato suelto entre dos apaisadas. */
.leg-row__media{overflow:hidden;background:#e7e4dd;aspect-ratio:5/4}
.leg-row__media--offset{margin-top:clamp(24px,6vw,90px)}
.leg-row__media img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.4s var(--ease-expo)}
.leg-row:hover .leg-row__media img{transform:scale(1.03)}
.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}
.leg-row__copy{color:var(--navy);opacity:.85;line-height:1.85;
  font-size:clamp(1.02rem,1.2vw,1.2rem);max-width:40ch}
/* ---- Cierre del legado ----
   Versalitas de Minion en el cobre de marca, entre dos filetes cortos. El
   cuerpo baja a escala de texto a propósito: el énfasis lo dan la versalita
   y el color, no el tamaño. Filete corto y no borde a todo el ancho porque
   el bloque tiene que leerse como una placa, no como un separador. */
.leg-feature{max-width:min(52ch,100%);margin:0 auto;
  display:flex;flex-direction:column;align-items:center;
  gap:clamp(28px,3.6vw,46px)}
.leg-feature::before,.leg-feature::after{content:"";
  width:clamp(46px,5.5vw,72px);height:1px;background:var(--gold);opacity:.6}
.leg-feature .leg-quote{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 de Minion Pro y
   rompería la línea de versalitas a mitad de frase */
.leg-feature .leg-quote em{font-style:normal}
@media(max-width:820px){
  .leg-row,.leg-row--flip{grid-template-columns:1fr;gap:30px}
  .leg-row--flip .leg-row__media{order:0}
  .leg-row__media--offset{margin-top:0}
}

/* ---- Material de archivo dentro de la columna de lectura ----
   El díptico (Otto Peter y Otto Sebastián) y la placa de Quilmes se salen unos
   píxeles del ancho de texto para ganar presencia sin romper el eje: el bleed
   se mide contra el viewport y se anula solo cuando la columna ya toca los
   ejes de la página, así nunca se come el --pad-x. Los dos comparten el mismo
   valor a propósito: arrancan y terminan en la misma línea y esa coincidencia
   arma un segundo eje, más ancho que el texto, dentro de la misma sección.
   Sin aspect-ratio en ninguno: son documentos, no fotos de producción, y
   cualquier recorte se comería el nombre grabado al pie o el encuadre de
   época. Van con su proporción nativa. */
.leg-pair,.leg-plate{
  --arch-bleed:clamp(0px,calc((100vw - 760px - 2 * var(--pad-x)) / 2),72px);
  margin:clamp(56px,7.5vw,104px) calc(-1 * var(--arch-bleed))}

/* la segunda foto baja un escalón —son dos generaciones, no dos piezas
   simétricas— y ese desfasaje además escalona el data-clip */
.leg-pair{display:grid;grid-template-columns:1fr 1fr;
  gap:clamp(16px,3vw,44px);align-items:start}
.leg-pair__media{overflow:hidden;background:#e7e4dd}
.leg-pair__media--offset{}
.leg-pair__media img{width:100%;height:auto;display:block;
  transition:transform 1.4s var(--ease-expo)}
/* hover por retrato y no por par: son dos personas, no un bloque */
.leg-pair__media:hover img{transform:scale(1.03)}
/* apilado antes que en el resto de la página: a dos columnas en pantallas
   chicas el nombre grabado en la foto queda ilegible */
@media(max-width:620px){
  .leg-pair{grid-template-columns:1fr;gap:clamp(24px,6vw,36px)}
  .leg-pair__media--offset{margin-top:0}
}
/* placa única y apaisada: contrapunto del par vertical de arriba */
.leg-plate{overflow:hidden;background:#e7e4dd}
.leg-plate img{width:100%;height:auto;display:block;
  transition:transform 1.4s var(--ease-expo)}
.leg-plate:hover img{transform:scale(1.03)}

/* ============================================================
   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}

/* ---- Cabecera ---- */
.ht-mast{padding:clamp(120px,16vh,190px) var(--pad-x) 0;margin:0 auto}
.ht-mast__grid{display:grid;grid-template-columns:1.35fr .65fr;
  gap:clamp(28px,5vw,90px);align-items:end;margin-top:clamp(34px,5vw,64px)}
.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:-.015em;max-width:16ch}
.ht-mast__title em{font-style:italic}
.ht-mast__dek{font-family:var(--font-display);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 var(--pad-x)}

/* ---- Cuerpo: riel de ficha + columna de lectura ---- */
.ht-art{margin:0 auto;padding:clamp(64px,9vw,130px) var(--pad-x) 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);font-size:15px;line-height:1.5;
  color:var(--navy)}
.ht-share{margin-top:clamp(22px,3vw,34px);display:flex;flex-direction:column;
  align-items:flex-start;gap:10px}
.ht-share__btn{font-family:var(--font-ui);font-weight:300;text-transform:uppercase;
  letter-spacing:.2em;font-size:var(--fs-cta);color:var(--navy);opacity:.7;
  display:inline-flex;align-items:center;gap:10px;padding:4px 0;
  transition:opacity .4s var(--ease-expo),color .4s var(--ease-expo)}
.ht-share__btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.3}
.ht-share__btn:hover,.ht-share__btn:focus-visible{opacity:1;color:var(--gold)}
.ht-share__msg{font-family:var(--font-ui);font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--gold);min-height:12px}

.ht-col{max-width:64ch}
.ht-lead{font-family:var(--font-display);color:var(--navy);
  font-size:clamp(1.2rem,1.65vw,1.55rem);line-height:1.6}
.ht-lead::first-letter{float:left;font-size:3.4em;line-height:.82;color:var(--gold);
  margin:.06em .1em 0 0;font-weight:400}
.ht-p{font-family:var(--font-display);color:var(--navy);opacity:.88;
  font-size:clamp(1.02rem,1.2vw,1.16rem);line-height:1.85;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)}

.ht-quote{margin:clamp(48px,7vw,96px) 0;padding-left:clamp(20px,3vw,42px);
  border-left:1px solid var(--gold-soft)}
.ht-quote p{font-family:var(--font-script);color:var(--gold);
  font-size:clamp(1.5rem,2.6vw,2.35rem);line-height:1.34}
.ht-quote cite{display:block;margin-top:18px;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}

.ht-fig{margin:clamp(46px,6vw,84px) 0}
.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);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);font-style:italic;font-size:15px;
  color:var(--navy);opacity:.7}

/* ---- Otros hitos ---- */
.ht-more{margin:0 auto;
  padding:clamp(90px,13vw,170px) var(--pad-x) 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);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);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:clamp(10px,1.4vw,18px)}   /* estilo en el grupo compartido */
.hx__title{color:var(--navy);font-size:var(--fs-title);line-height:1.06;
  letter-spacing:-.015em}
.hx__title em{font-style:italic}
.hx__intro{margin-top:clamp(18px,2.4vw,28px);max-width:46ch;
  font-family:var(--font-display);color:var(--navy);opacity:.8;
  font-size:clamp(1.02rem,1.25vw,1.2rem);line-height:1.7}
.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;gap:26px;align-items:start}
  .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 */
.est-block--flip .est-block__media{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;
  font-size:var(--fs-body);line-height:1.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__media{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);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}
}
}
