/* ============================================================
   Club Valle Nivequetén — hoja de estilo
   Tipografías: Fraunces (display) · Instrument Sans (texto) · IBM Plex Mono (etiquetas)
   ============================================================ */

/* ---------- Fuentes autoalojadas ---------- */
@font-face{font-family:'Fraunces';font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/Fraunces-300-700-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Fraunces';font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/Fraunces-300-700-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/IBMPlexMono-400-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/IBMPlexMono-400-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../fonts/InstrumentSans-400-700-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../fonts/InstrumentSans-400-700-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}

/* ---------- Tokens ---------- */
:root{
  --bg:#06191A;
  --bg-2:#08201F;
  --bg-3:#0A2426;
  --panel:#0B292A;
  --line:rgba(240,235,224,.11);
  --line-soft:rgba(240,235,224,.06);
  --sand:#F2EEE4;
  --muted:#9BB4AF;
  --faint:#6C8B86;
  --amber:#E9A45C;
  --amber-lo:#C4682F;
  --amber-hi:#F6C98A;
  --sage:#7FC9A6;

  --ff-display:'Fraunces',ui-serif,Georgia,'Times New Roman',serif;
  --ff-text:'Instrument Sans',ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --ff-mono:'IBM Plex Mono',ui-monospace,'SFMono-Regular',Menlo,monospace;

  --wrap:1200px;
  --pad:clamp(18px,4.4vw,40px);
  --sec-y:clamp(72px,10vw,140px);
  --r:16px;
  --r-lg:22px;

  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --nav-h:66px;
}

*,*::before,*::after{box-sizing:border-box}

/* El atributo hidden siempre gana: evita capas invisibles que bloqueen el clic */
[hidden]{display:none !important}

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--nav-h) + 12px);
}
html.has-lenis{scroll-behavior:auto}

body{
  margin:0;
  background:var(--bg);
  color:var(--sand);
  font-family:var(--ff-text);
  font-size:16.5px;
  line-height:1.65;
  letter-spacing:-.005em;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
  text-rendering:optimizeLegibility;
}
body.is-locked{overflow:hidden;padding-right:var(--sbw,0px)}

img,video,svg{display:block;max-width:100%}
img{height:auto}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
ul,ol{margin:0;padding:0;list-style:none}
p{margin:0}
h1,h2,h3,h4{margin:0;font-weight:400}
a{color:inherit;text-decoration:none}

::selection{background:rgba(233,164,92,.3);color:#fff}

:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:4px}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

.skip{
  position:fixed;top:10px;left:10px;z-index:200;
  transform:translateY(-160%);
  background:var(--amber);color:#06191A;padding:11px 18px;border-radius:999px;
  font-size:14px;font-weight:600;transition:transform .25s var(--ease);
}
.skip:focus{transform:none}

/* ---------- Tipografía ---------- */
.h2{
  font-family:var(--ff-display);
  font-optical-sizing:auto;
  font-variation-settings:'SOFT' 0,'WONK' 0;
  font-weight:300;
  font-size:clamp(30px,4.4vw,54px);
  line-height:1.07;
  letter-spacing:-.028em;
  text-wrap:balance;
  color:var(--sand);
}
.h3{
  font-family:var(--ff-display);
  font-weight:400;
  font-size:clamp(21px,2.6vw,30px);
  line-height:1.18;
  letter-spacing:-.02em;
  color:var(--sand);
}
.h4{
  font-family:var(--ff-text);
  font-weight:600;
  font-size:17px;
  line-height:1.35;
  letter-spacing:-.01em;
  color:var(--sand);
}
.kicker{
  font-family:var(--ff-mono);
  font-size:10.5px;
  line-height:1.6;
  letter-spacing:.17em;
  text-transform:uppercase;
  color:var(--faint);
}
.kicker--sage{color:var(--sage)}
.kicker--amber{color:var(--amber)}
.lede{
  margin-top:18px;
  max-width:56ch;
  font-size:clamp(15.5px,1.4vw,17.5px);
  line-height:1.66;
  color:var(--muted);
  text-wrap:pretty;
}
.note{margin-top:16px;color:var(--amber-hi);opacity:.72}
.foot{margin-top:clamp(24px,3vw,34px);font-size:13.5px;color:var(--faint);max-width:62ch}
.credit{
  margin-top:12px;
  font-size:9px;
  letter-spacing:.15em;
  color:rgba(242,238,228,.72);
}
.link{color:var(--amber-hi);border-bottom:1px solid rgba(246,201,138,.32);transition:color .25s,border-color .25s}
.link:hover{color:var(--amber);border-color:var(--amber)}

/* ---------- Layout ---------- */
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--pad)}
.wrap--narrow{max-width:860px}

.sec{position:relative;z-index:1;padding-block:var(--sec-y)}
.sec--solid{background:var(--bg)}
.sec--alt{background:var(--bg-2)}
.sec--solid + .sec--solid,.sec--alt + .sec--alt{border-top:1px solid var(--line-soft)}
.sec--last{padding-bottom:clamp(80px,9vw,120px)}

/* Secciones sobre el grabado de fondo: translúcidas para dejarlo ver.
   El dibujo va sin retocar (oscuro), así que el velo es más liviano que antes:
   lo justo para que el texto se despegue de los trazos dorados. */
.sec--frame{
  background:linear-gradient(180deg,rgba(6,25,26,.5) 0%,rgba(6,25,26,.34) 16%,rgba(6,25,26,.34) 84%,rgba(6,25,26,.5) 100%);
}
.sec--frame + .sec--frame{border-top:1px solid var(--line-soft)}

/* El grabado quedó más vivo, así que el texto que va suelto sobre él lleva
   una sombra oscura: no se nota, pero lo despega de los trazos dorados. */
.sec--frame .kicker,
.sec--frame .h2,
.sec--frame .h3,
.sec--frame .h4,
.sec--frame .lede,
.sec--frame p,
.sec--frame li,
.sec--frame strong,
.sec--frame summary,
.sec--cierre .kicker,
.sec--cierre .h2,
.sec--cierre .lede,
.sec--cierre .info__txt strong,
.sec--cierre .info__txt span,
.sec--cierre .quick__lede,
.foot-x{text-shadow:0 1px 12px rgba(3,13,14,.92),0 0 4px rgba(3,13,14,.7)}
/* dentro de tarjetas y paneles el fondo ya protege: ahí sobra */
.sec--frame .card *,
.sec--frame .cont__form *,
.sec--frame .quick__btn *,
.sec--frame .gal *,
.sec--frame .faq *,
.sec--cierre .cont__form *,
.sec--cierre .quick__btn *{text-shadow:none}

/* ---------- Cierre: el bote pescando, de fondo en la última sección ----------
   El video va en `position:sticky` dentro de una caja del alto de la sección:
   así queda siempre del tamaño de la pantalla (nítido, sin estirar) y la sección
   funciona como una ventana al lago mientras se baja. El tinte lo lleva al verde
   del club y el scrim deja el texto legible encima. */
/* El alto mínimo garantiza que la sección nunca sea más baja que el video
   pegado: así no se asoma por debajo aunque el navegador no entienda `clip`. */
.sec--cierre{isolation:isolate;overflow:clip;min-height:100vh;border-top:1px solid var(--line-soft)}
.sec--cierre > .wrap{position:relative;z-index:2}
.cierre__media{position:absolute;inset:0;z-index:-1;pointer-events:none}
.cierre__video{
  position:sticky;top:0;
  display:block;width:100%;height:100vh;
  /* encuadre corrido a la derecha: en pantalla angosta el recorte es fuerte y
     así el bote queda dentro del cuadro, que es lo que hay que ver. */
  object-fit:cover;object-position:72% 46%;
  filter:brightness(.58) saturate(.78) contrast(1.08);
}
/* El lago es azul y frío: esta capa lo lleva al verde profundo del club. */
.cierre__tint{position:absolute;inset:0;background:#11423A;mix-blend-mode:color;opacity:.76}
.cierre__scrim{
  position:absolute;inset:0;
  background:
    linear-gradient(180deg,rgba(6,25,26,.97) 0%,rgba(6,25,26,.6) 14%,rgba(6,25,26,.5) 72%,rgba(6,25,26,.96) 100%),
    linear-gradient(100deg,rgba(6,25,26,.6) 0%,rgba(6,25,26,.28) 36%,rgba(6,25,26,0) 62%),
    radial-gradient(98% 70% at 66% 46%,rgba(6,25,26,0),rgba(6,25,26,.55) 100%);
}
@supports (height:100svh){.cierre__video{height:100svh}}

.head{margin-bottom:clamp(38px,5vw,64px)}
.head .h2{margin-top:16px;max-width:22ch}

/* ---------- Grabado de fondo (la ilustración del club) ----------
   Capa fija detrás de todo: no se mueve con el scroll ni con el puntero.
   Hay dos archivos y el navegador baja sólo el que corresponde: el apaisado
   (la ilustración tal cual) y el vertical, armado para celular. */
.marco{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;opacity:0;transition:opacity .9s var(--ease)}
.marco.is-on{opacity:1}
.marco__art{
  position:absolute;inset:0;
  background-color:#03100B;
  background-repeat:no-repeat;
  background-position:50% 50%;
  background-size:cover;
  transform:translateZ(0);   /* capa propia: el scroll no la vuelve a pintar */
}
html.has-fondo .marco__art{background-image:url(../img/fondo.webp)}
@media (max-aspect-ratio:3/4){
  html.has-fondo .marco__art{background-image:url(../img/fondo-alto.webp)}
}
/* Más oscuro al centro, que es por donde pasan los títulos; los bordes quedan
   casi limpios para que la orla de hojas se vea entera. */
.marco__scrim{
  position:absolute;inset:0;
  background:
    radial-gradient(68% 60% at 50% 50%,rgba(6,25,26,.42),rgba(6,25,26,.16) 66%,rgba(6,25,26,0) 100%),
    linear-gradient(180deg,rgba(6,25,26,.06),rgba(4,18,19,.14));
}

/* ---------- Cursor: una caña de pescar ----------
   La punta de la caña es el punto exacto del puntero. Desde ahí cuelga el hilo
   con el señuelo, que va con retardo y se balancea al mover el mouse.
   Sólo aparece con mouse (pointer:fine) y con las animaciones activadas. */
.cursor{position:fixed;inset:0;z-index:150;pointer-events:none;opacity:0;transition:opacity .35s var(--ease)}
.cursor.is-on{opacity:1}

.cursor__wire{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.cursor__line{
  fill:none;stroke:rgba(246,201,138,.62);stroke-width:1;stroke-linecap:round;
  filter:drop-shadow(0 1px 1px rgba(0,0,0,.55));
}

.cursor__rod,.cursor__lure{position:absolute;top:0;left:0;overflow:visible}
.cursor__rod{width:104px;height:104px;transform-origin:8px 8px}
.cursor__lure{width:24px;height:34px;transform-origin:12px 3px}
.cursor__rod,.cursor__lure{filter:drop-shadow(0 2px 3px rgba(0,0,0,.6))}

.rod__blank{fill:url(#rod-oro)}
.rod__grip{stroke:#C39A62;stroke-width:8.6;stroke-linecap:round;fill:none}
.rod__seat{stroke:#2A1A10;stroke-width:10.2;stroke-linecap:butt;fill:none}
.rod__butt{fill:#2A1A10}
.rod__stem{stroke:#2A1A10;stroke-width:4.4;stroke-linecap:round;fill:none}
.rod__reel{fill:#12332F;stroke:#E9A45C;stroke-width:1.5}
.rod__spool{fill:#F6C98A}
.rod__crank{stroke:#E9A45C;stroke-width:2;stroke-linecap:round;fill:none}
.rod__guide{fill:none;stroke:#F6C98A;stroke-width:1.2}

.lure__body{fill:#E9A45C;stroke:#7A3F15;stroke-width:1}
.lure__eye{fill:#2A1A10}
.lure__hook{fill:none;stroke:#F2EEE4;stroke-width:1.5;stroke-linecap:round}
.lure__ring{fill:none;stroke:#F6C98A;stroke-width:1.2}
.lure__halo{
  fill:none;stroke:rgba(246,201,138,.9);stroke-width:1.4;
  opacity:0;transform-box:fill-box;transform-origin:center;transform:scale(.5);
  transition:opacity .3s var(--ease),transform .35s var(--ease-out);
}

/* Sobre algo pulsable: se enciende el aro del señuelo */
.cursor.is-hot .lure__halo{opacity:1;transform:scale(1)}
.cursor.is-hot .lure__body{fill:#F6C98A}

@media (hover:none),(pointer:coarse){.cursor{display:none}}

/* Oculta el puntero nativo sólo cuando el cursor propio está activo */
@media (hover:hover) and (pointer:fine){
  html.has-cursor body,
  html.has-cursor a,
  html.has-cursor button,
  html.has-cursor label,
  html.has-cursor summary{cursor:none}
  html.has-cursor input,
  html.has-cursor textarea{cursor:text}
  html.has-cursor select,
  html.has-cursor input[type=checkbox]{cursor:pointer}
}

/* ---------- Nav ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:80;
  transition:transform .45s var(--ease),background-color .4s,border-color .4s,backdrop-filter .4s;
  border-bottom:1px solid transparent;
}
.nav.is-stuck{
  background:rgba(5,20,21,.72);
  backdrop-filter:blur(16px) saturate(140%);
  -webkit-backdrop-filter:blur(16px) saturate(140%);
  border-bottom-color:var(--line-soft);
}
.nav.is-hidden{transform:translateY(-102%)}
.nav__bar{
  max-width:var(--wrap);margin-inline:auto;
  padding:11px var(--pad);
  min-height:var(--nav-h);
  display:flex;align-items:center;justify-content:space-between;gap:20px;
}
.nav__progress{
  height:1.5px;width:100%;transform-origin:0 50%;transform:scaleX(0);
  background:linear-gradient(90deg,var(--amber-lo),var(--amber),var(--amber-hi));
  transition:transform .1s linear;
}

.brand{display:flex;align-items:center;gap:11px;min-width:0}
/* El sello del club va sin fondo: el disco oscuro de abajo es solo para que el
   dorado no se pierda cuando la barra está transparente sobre el video del hero. */
.brand__mark{
  width:46px;height:46px;flex:none;border-radius:999px;
  background:radial-gradient(closest-side,rgba(5,20,21,.92),rgba(5,20,21,.74) 74%,rgba(5,20,21,0) 100%);
  display:grid;place-items:center;
  transition:transform .5s var(--ease-out),filter .5s var(--ease-out);
}
.brand__mark img{width:100%;height:100%;display:block;object-fit:contain}
.brand:hover .brand__mark{transform:scale(1.05);filter:brightness(1.1) drop-shadow(0 0 9px rgba(246,201,138,.26))}
/* El rótulo va arriba y el nombre abajo: cada texto conserva su tipografía
   (el rótulo en mono versalita, el nombre en la serif del club). */
.brand__text{display:flex;flex-direction:column;line-height:1.1;min-width:0}
.brand__name{font-family:var(--ff-display);font-weight:500;font-size:16px;letter-spacing:-.015em;white-space:nowrap}
.brand__sub{font-size:8.5px;margin-bottom:4px;white-space:nowrap;color:#587873}

.nav__links{display:none;align-items:center;gap:clamp(14px,1.9vw,26px)}
.nav__links a{
  position:relative;font-size:13.5px;color:var(--muted);white-space:nowrap;
  padding-block:6px;transition:color .3s;
}
.nav__links a::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:var(--amber);transform:scaleX(0);transform-origin:100% 50%;
  transition:transform .4s var(--ease-out);
}
.nav__links a:hover,.nav__links a.is-active{color:var(--sand)}
.nav__links a:hover::after,.nav__links a.is-active::after{transform:scaleX(1);transform-origin:0 50%}

.nav__right{display:flex;align-items:center;gap:10px}
.lang{display:flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:2px}
.lang__btn{
  font-family:var(--ff-mono);font-size:10px;letter-spacing:.1em;
  padding:5px 10px;border-radius:999px;color:var(--faint);
  transition:background-color .3s,color .3s;
}
.lang__btn.is-on{background:var(--amber);color:#06191A}

/* Los dos botones de la barra sólo caben desde 1000 px; más abajo mandan al menú */
.nav .nav__cta,.nav .nav__wa{display:none}

.burger{width:42px;height:38px;border:1px solid var(--line);border-radius:11px;display:grid;place-content:center;gap:5px}
.burger span{display:block;width:17px;height:1.4px;background:var(--sand);transition:transform .35s var(--ease),opacity .25s}
.burger[aria-expanded="true"] span:first-child{transform:translateY(3.2px) rotate(45deg)}
.burger[aria-expanded="true"] span:last-child{transform:translateY(-3.2px) rotate(-45deg)}

.menu{
  position:fixed;inset:0;z-index:75;
  background:rgba(5,19,20,.97);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  padding:calc(var(--nav-h) + 22px) var(--pad) 40px;
  overflow-y:auto;overscroll-behavior:contain;
  opacity:0;transition:opacity .35s var(--ease);
}
.menu.is-open{opacity:1}
.menu__inner{display:flex;flex-direction:column;gap:2px;max-width:var(--wrap);margin-inline:auto}
.menu__inner a{
  font-family:var(--ff-display);font-size:clamp(24px,7vw,34px);font-weight:300;
  letter-spacing:-.025em;padding-block:11px;color:var(--sand);
  border-bottom:1px solid var(--line-soft);
  opacity:0;transform:translateY(16px);
  transition:opacity .5s var(--ease-out),transform .5s var(--ease-out),color .25s;
}
.menu.is-open .menu__inner a{opacity:1;transform:none;transition-delay:calc(var(--i,0) * 38ms)}
.menu__inner a:hover{color:var(--amber-hi)}
.menu__cta{
  margin-top:26px;border-bottom:0 !important;font-family:var(--ff-text) !important;
  font-size:15px !important;letter-spacing:0 !important;text-align:center;
}
.menu__wa{margin-top:10px}
/* .menu__inner a pinta de crema TODO enlace del menú y le ganaba a .btn--solid:
   el botón ámbar quedaba con texto claro encima. Acá se le devuelve el texto oscuro. */
.menu__inner a.btn--solid{color:#06191A}

/* ---------- Botones ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  border-radius:999px;padding:14px 28px;
  font-size:14.5px;font-weight:600;letter-spacing:-.005em;
  white-space:nowrap;
  transition:background-color .35s var(--ease),color .35s,border-color .35s,box-shadow .35s,transform .25s var(--ease-out);
  will-change:transform;
}
.btn--solid{background:var(--amber);color:#06191A;box-shadow:0 16px 38px -18px rgba(196,104,47,.9)}
.btn--solid:hover{background:var(--amber-hi);box-shadow:0 22px 46px -18px rgba(233,164,92,.75)}
.btn--ghost{border:1px solid var(--line);color:var(--sand)}
.btn--ghost:hover{border-color:rgba(233,164,92,.55);background:rgba(233,164,92,.07)}
.btn__ico{flex:none;width:17px;height:17px;color:var(--amber);opacity:.95}
.btn--solid .btn__ico{color:currentColor}
.btn--full{width:100%}

/* ---------- Portada ---------- */
.hero{
  position:relative;z-index:1;
  min-height:100svh;
  display:flex;flex-direction:column;justify-content:flex-end;
  overflow:hidden;
  padding-top:calc(var(--nav-h) + 20px);
}
.hero__media{position:absolute;inset:0;z-index:0;overflow:hidden}
.hero__video{
  position:absolute;top:50%;left:50%;
  width:100%;height:100%;
  transform:translate3d(-50%,-50%,0) scale(1.06);
  object-fit:cover;will-change:transform;
}
.hero__scrim{
  position:absolute;inset:0;
  background:
    linear-gradient(180deg,rgba(6,25,26,.72) 0%,rgba(6,25,26,.34) 34%,rgba(6,25,26,.72) 76%,rgba(6,25,26,.97) 100%),
    radial-gradient(90% 70% at 50% 62%,rgba(6,25,26,0) 30%,rgba(6,25,26,.55) 100%);
}
.hero__halo{
  position:absolute;top:-14%;left:50%;transform:translateX(-50%);
  width:min(1200px,140vw);height:640px;pointer-events:none;
  background:radial-gradient(closest-side,rgba(233,164,92,.16),rgba(233,164,92,0) 72%);
}
.hero__inner{
  position:relative;z-index:2;
  width:100%;max-width:1080px;margin-inline:auto;
  padding:0 var(--pad) clamp(28px,5vw,54px);
  display:flex;flex-direction:column;align-items:center;text-align:center;
  flex:1;justify-content:center;
}
/* Credenciales de portada: cuatro datos.
   En celular y tablet van apilados (nunca se cortan). Desde 1000px pasan a una
   línea con · de separación; el · cuelga del elemento anterior (::after), así que
   si alguna vez se parte en dos líneas queda al final de la primera y nunca
   huérfano al principio de la segunda. */
.hero__cred{
  color:#8FB0AA;font-size:9.5px;
  display:flex;flex-direction:column;align-items:center;
  gap:4px;max-width:30rem;
}
.hero__title{
  margin-top:clamp(18px,2.4vw,26px);
  font-family:var(--ff-display);
  font-optical-sizing:auto;
  font-variation-settings:'SOFT' 0,'WONK' 0;
  font-weight:300;
  font-size:clamp(38px,8.6vw,92px);
  line-height:.98;
  letter-spacing:-.042em;
  text-wrap:balance;
}
.lineclip{display:block;overflow:hidden;padding-block:.02em .16em;margin-block:0 -.12em}
.lineclip__in{display:block;transform:translateY(112%);opacity:0}
.is-ready .lineclip__in{
  transform:none;opacity:1;
  transition:transform 1.15s var(--ease-out),opacity .9s var(--ease-out);
}
.is-ready .lineclip:nth-child(2) .lineclip__in{transition-delay:.11s}
.gold{
  background:linear-gradient(122deg,#FCE3BD 0%,var(--amber-hi) 26%,var(--amber) 56%,var(--amber-lo) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  font-style:italic;font-weight:300;
  padding-inline:.06em;margin-inline:-.06em;
}
.hero__sub{
  margin-top:clamp(20px,2.6vw,30px);
  max-width:38rem;font-size:clamp(15px,1.5vw,17.5px);line-height:1.62;
  color:rgba(242,238,228,.9);text-wrap:pretty;
}
.hero__cta{margin-top:clamp(24px,3vw,34px);display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.hero__foot{
  position:relative;z-index:2;
  padding:0 var(--pad) clamp(20px,3vw,32px);
  display:flex;flex-direction:column;align-items:center;gap:18px;
}
.hero__marks{display:flex;flex-wrap:wrap;justify-content:center;gap:10px clamp(18px,4vw,44px);text-align:center;font-size:9px}
.cue{width:1px;height:52px;display:block;overflow:hidden;position:relative}
.cue__line{position:absolute;inset:0;background:linear-gradient(180deg,rgba(233,164,92,0),var(--amber));animation:cue 2.4s var(--ease) infinite}
@keyframes cue{0%{transform:translateY(-100%)}55%,100%{transform:translateY(100%)}}

/* ---------- Credenciales ---------- */
.creds{padding-block:clamp(30px,4vw,46px);border-block:1px solid var(--line-soft)}
.creds__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line-soft)}
.cred{
  background:rgba(8,32,31,.6);padding:20px 18px;
  display:flex;flex-direction:column;gap:7px;
  transition:background-color .4s;
}
.cred:hover{background:rgba(12,42,44,.82)}
.cred__org{color:var(--amber);font-size:9.5px}
.cred__note{margin-top:2px;color:rgba(143,176,170,.78);font-size:9px;line-height:1.5}
.cred__label{font-size:13px;color:var(--muted);line-height:1.45}

/* ---------- Media ---------- */
.media{
  position:relative;margin:0;
  border-radius:var(--r-lg);
  overflow:hidden;
  border:1px solid var(--line-soft);
  background:var(--bg-3);
}
.media > img{
  width:100%;height:100%;object-fit:cover;
  transform:scale(1.07);
  transition:transform 1.5s var(--ease-out),filter 1.5s var(--ease-out);
  filter:saturate(.94) contrast(1.02);
}
.is-in .media > img,.media.is-in > img{transform:scale(1)}
.media > figcaption{position:absolute;left:16px;bottom:12px;margin:0;text-shadow:0 1px 10px rgba(0,0,0,.8)}
.media::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(6,25,26,0) 55%,rgba(6,25,26,.72) 100%);
}

/* ---------- El lugar ---------- */
.amb{position:relative;display:flex;flex-direction:column;gap:clamp(48px,7vw,92px)}
.amb__row{display:grid;grid-template-columns:1fr;gap:clamp(22px,3vw,44px);align-items:center}
.amb__fig{aspect-ratio:4/3}
/* La de montaña es vertical: en una columna se le deja algo más de alto
   para no recortarle la cumbre. */
.amb__fig.media--tall{aspect-ratio:1/1}
.amb__txt{min-width:0}
.pill{
  display:inline-flex;align-items:center;gap:7px;
  border:1px solid rgba(127,201,166,.3);border-radius:999px;padding:5px 13px;
  font-family:var(--ff-mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--sage);
}
.pill::before{content:"";width:5px;height:5px;border-radius:999px;background:var(--sage)}
.amb__txt .h3{margin-top:16px}
.amb__txt p{margin-top:14px;max-width:46ch;color:var(--muted);text-wrap:pretty}
.amb__txt .note{max-width:42ch}

/* ---------- El lugar · recorrido de puntos ---------- */
.ruta{
  position:absolute;inset:0;width:100%;height:100%;
  pointer-events:none;overflow:visible;z-index:3;
  opacity:0;transition:opacity .8s var(--ease);
}
.ruta.is-ready{opacity:1}

.ruta__base{
  fill:none;stroke:rgba(242,238,228,.17);
  stroke-width:2.2;stroke-linecap:round;stroke-dasharray:0 12;
}
.ruta__live{
  fill:none;stroke:var(--amber-hi);
  stroke-width:3.2;stroke-linecap:round;stroke-dasharray:0 12;
  filter:drop-shadow(0 0 4px rgba(233,164,92,.7));
}
.ruta__mask{fill:none;stroke:#fff;stroke-width:26;stroke-linecap:butt;stroke-dasharray:1 1;stroke-dashoffset:1}

/* Marcador que viaja por la ruta */
.ruta__pin{opacity:0;transition:opacity .5s var(--ease)}
.ruta.is-live .ruta__pin{opacity:1}
.ruta__halo{fill:rgba(233,164,92,.14);stroke:rgba(246,201,138,.4);stroke-width:1;transform-box:fill-box;transform-origin:center;animation:pinLatido 2.6s var(--ease) infinite}
.ruta__core{fill:var(--amber-hi);filter:drop-shadow(0 0 6px rgba(233,164,92,.85))}
@keyframes pinLatido{
  0%,100%{transform:scale(.82);opacity:.55}
  50%{transform:scale(1.12);opacity:1}
}

/* Hitos sobre cada fotografía */
.nodo__disc{
  fill:rgba(6,25,26,.82);stroke:rgba(246,201,138,.45);stroke-width:1;
  transition:fill .55s var(--ease),stroke .55s var(--ease);
}
.nodo__n{
  font-family:var(--ff-mono);font-size:10px;letter-spacing:.06em;
  fill:var(--amber-hi);text-anchor:middle;dominant-baseline:central;
  transition:fill .55s var(--ease);
}
.nodo__eco{
  fill:none;stroke:var(--amber-hi);stroke-width:1.2;opacity:0;
  transform-box:fill-box;transform-origin:center;
}
.nodo__aro{
  fill:none;stroke:rgba(246,201,138,.55);stroke-width:1;stroke-dasharray:3 6;
  opacity:0;transition:opacity .45s var(--ease);
}
.nodo.is-hot .nodo__aro{opacity:1}
.nodo.is-hot .nodo__disc{stroke:var(--amber-hi)}
.nodo.is-on .nodo__disc{fill:rgba(233,164,92,.95);stroke:var(--amber-hi)}
.nodo.is-on .nodo__n{fill:#06191A}
.nodo.is-on .nodo__eco{animation:nodoEco 1.6s var(--ease-out) 1}
@keyframes nodoEco{
  0%{opacity:.85;transform:scale(1)}
  100%{opacity:0;transform:scale(2.4)}
}

/* ---------- Temporadas ---------- */
.temp{display:flex;flex-direction:column;gap:12px}
.temp__row{
  background:rgba(10,36,38,.72);border:1px solid var(--line-soft);border-radius:var(--r);
  padding:clamp(20px,2.4vw,28px);
  transition:border-color .4s,background-color .4s,transform .5s var(--ease-out);
}
.temp__row:hover{border-color:rgba(233,164,92,.32);background:rgba(12,42,44,.8)}
.temp__top{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:baseline;justify-content:space-between}
.temp__title{display:flex;align-items:center;gap:11px;min-width:0}
.temp__ico{flex:none;width:23px;height:23px;color:var(--amber);opacity:.9}
.tag{color:var(--amber);font-size:9px}
.temp__track{
  margin-top:18px;height:8px;border-radius:999px;overflow:hidden;
  background:repeating-linear-gradient(115deg,rgba(240,235,224,.07) 0 7px,rgba(240,235,224,.02) 7px 14px);
  border:1px solid var(--line-soft);
}
.temp__fill{
  display:block;height:100%;width:34%;
  background:linear-gradient(90deg,rgba(196,104,47,0),rgba(233,164,92,.55),rgba(196,104,47,0));
  transform:translateX(-110%);
  animation:sweep 5.5s var(--ease) infinite;
}
.temp__row:nth-child(2) .temp__fill{animation-delay:.9s}
.temp__row:nth-child(3) .temp__fill{animation-delay:1.8s}
.temp__row:nth-child(4) .temp__fill{animation-delay:2.7s}
.temp__row:nth-child(5) .temp__fill{animation-delay:3.6s}
.temp__row:nth-child(6) .temp__fill{animation-delay:4.5s}
@keyframes sweep{0%{transform:translateX(-110%)}55%,100%{transform:translateX(330%)}}
.temp__row p{margin-top:16px;max-width:54ch;font-size:15px;color:var(--muted)}

/* ---------- Tarjetas ---------- */
.card{
  background:var(--bg-3);border:1px solid var(--line-soft);border-radius:var(--r);
  padding:clamp(24px,2.6vw,32px);
  transition:border-color .4s,transform .55s var(--ease-out),background-color .4s;
}
.card--amber{border-color:rgba(233,164,92,.28)}
.card--quiet{background:rgba(10,36,38,.6)}
.card:hover{border-color:rgba(233,164,92,.34)}
.card__kick{color:var(--amber)}
.card__kick--sage{color:var(--sage)}
.card .h3{margin-top:13px}
.card .btn{margin-top:26px}

.ticks{display:flex;flex-direction:column;gap:13px;margin-top:20px}
.ticks li{position:relative;padding-left:20px;font-size:15px;line-height:1.6;color:var(--muted)}
.ticks li::before{
  content:"";position:absolute;left:0;top:9px;width:6px;height:6px;border-radius:999px;background:var(--faint);
}
.ticks--amber li::before{background:var(--amber)}
.ticks--sage li::before{background:var(--sage)}

.duo{display:grid;grid-template-columns:1fr;gap:16px}
/* Cuando queda una sola tarjeta, no se estira a lo ancho de la sección. */
.duo--solo{max-width:640px}

/* ---------- Cómo se sostiene el club ----------
   Es un punto que la gente pregunta siempre, así que en vez de ir en letra
   chica al pie va en un panel ámbar, a un tamaño intermedio entre el texto
   corrido y un título: se lee al pasar, sin gritar. */
.fee{
  position:relative;overflow:hidden;
  margin-top:clamp(22px,2.8vw,32px);max-width:640px;
  display:flex;align-items:center;gap:clamp(15px,1.7vw,21px);
  padding:clamp(19px,2.2vw,26px) clamp(20px,2.4vw,28px);
  border:1px solid rgba(233,164,92,.26);border-radius:var(--r);
  background:linear-gradient(118deg,rgba(233,164,92,.13),rgba(233,164,92,.04) 58%,rgba(233,164,92,0)),var(--bg-3);
}
.fee::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--amber-hi),var(--amber-lo));
}
.fee__ico{
  flex:none;display:grid;place-items:center;
  width:clamp(44px,4.6vw,54px);height:clamp(44px,4.6vw,54px);border-radius:999px;
  border:1px solid rgba(233,164,92,.32);background:rgba(233,164,92,.09);color:var(--amber);
}
.fee__ico svg{width:23px;height:23px}
.fee__kick{color:var(--amber)}
.fee__line{
  margin-top:8px;
  font-family:var(--ff-display);font-optical-sizing:auto;font-weight:400;
  font-size:clamp(18px,2.05vw,24px);line-height:1.3;letter-spacing:-.016em;
  color:var(--sand);text-wrap:balance;
}
@media (max-width:520px){
  .fee{align-items:flex-start}
  .fee__ico{margin-top:2px}
}

/* ---------- Galería ----------
   Archivo ordenado por año: recuadros cuadrados del mismo tamaño y, bajo cada
   uno, el pie con el lugar y la fecha, siempre visible. Las fotos vienen
   mezcladas (unas apaisadas y otras verticales), así que en el recuadro se
   recortan a `cover`; la foto completa se ve en el visor al tocarla. */
.gal{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px 10px;
  align-items:stretch;
}
/* Cada ficha es foto + pie. El pie tiene alto fijo para que las fotos de una
   misma fila queden alineadas aunque el texto ocupe una o dos líneas. */
.gal__item{margin:0;min-width:0;display:flex;flex-direction:column}
/* El asado va a lo ancho: 22 fotos + esta doble = 24 celdas, y la grilla cierra
   justa con 2 y con 4 columnas. Va en una posición impar (la 7.ª) para que no
   deje huecos. Si se agrega o saca una foto, revisar que siga calzando. */
.gal__item--wide{grid-column:span 2}
.gal__btn{
  display:block;width:100%;position:relative;
  flex:1 1 auto;
  aspect-ratio:1/1;
  border-radius:var(--r);overflow:hidden;border:1px solid var(--line-soft);
  background:var(--bg-3);
}
.gal__item--wide .gal__btn{aspect-ratio:auto}
.gal__btn img{
  width:100%;height:100%;
  object-fit:cover;object-position:50% 42%;
  transform:scale(1.02);
  transition:transform 1.1s var(--ease-out),filter .6s;
  filter:saturate(.92) contrast(1.03) brightness(.94);
}
.gal__btn::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(6,25,26,0) 55%,rgba(6,25,26,.42) 100%);
  opacity:.6;transition:opacity .5s;
}
/* El recorte por defecto (50%) come el borde izquierdo, y en la del aniversario
   2023 ahí está uno de los socios: esta ficha se ancla al borde izquierdo para
   que entre entero. Lo que se pierde es el fondo del lado derecho. */
.gal__item--izq .gal__btn img{object-position:0% 42%}
.gal__btn:hover img{transform:scale(1.06);filter:saturate(1.02) contrast(1.03) brightness(1)}
.gal__btn:hover::after{opacity:.25}
.gal__cap{
  flex:none;
  min-height:2.8em;
  margin-top:10px;padding-right:4px;
  font-size:8.5px;line-height:1.4;letter-spacing:.1em;
  color:var(--muted);text-align:left;text-wrap:pretty;
  transition:color .4s;
}
.gal__item:hover .gal__cap{color:var(--sand)}

/* ---------- El terreno ---------- */
.terr{display:grid;grid-template-columns:1fr;gap:clamp(34px,4vw,52px)}
.terr__cols{display:grid;grid-template-columns:1fr;gap:clamp(28px,3vw,40px)}
/* Avance en el terreno: cuatro fotos verticales del mismo alto, en dos columnas
   y en cuatro desde 900 px. Se recortan a 3/4, que es el formato de origen. */
.terr__obra{display:flex;flex-direction:column;gap:16px}
.terr__pics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.terr__pics .media{aspect-ratio:3/4}
.pull{
  margin:clamp(34px,4vw,50px) 0 0;padding:22px 26px;
  border-left:2px solid var(--amber);background:rgba(233,164,92,.06);border-radius:0 var(--r) var(--r) 0;
  max-width:64ch;
}
.pull p{font-size:16px;line-height:1.65;color:var(--sand);text-wrap:pretty}

/* ---------- El club ---------- */
/* Arriba: el texto a la izquierda y la foto de la asamblea a la derecha,
   alineada por su borde superior con el título "Más que un club".
   Abajo: la cena de aniversario a todo el ancho de la caja, en panorámica,
   que es la fotografía que cierra la sección. */
.club__kick{margin-bottom:15px}
.club{display:flex;flex-direction:column;gap:clamp(26px,3.2vw,42px)}
.club__top{display:grid;grid-template-columns:1fr;gap:clamp(24px,3vw,40px);align-items:start}
.club__side{aspect-ratio:4/3}
.club__wide{aspect-ratio:4/3}
/* Abajo van juntas la cena en panorámica y la fogata en vertical. En celular
   se apilan y la fogata queda como estampa centrada y chica: a todo el ancho
   se comería la panorámica. */
.club__bottom{display:grid;grid-template-columns:1fr;gap:clamp(18px,2.2vw,22px);align-items:start}
.club__fogata{aspect-ratio:3/4;width:min(78%,280px);justify-self:center}
.club__txt .h2{margin-top:0}
.club__txt p{margin-top:16px;color:var(--muted);max-width:60ch;text-wrap:pretty}
/* ---------- FAQ ---------- */
.faq{border-top:1px solid var(--line-soft)}
.faq__item{border-bottom:1px solid var(--line-soft)}
.faq__q{
  width:100%;display:flex;gap:20px;align-items:flex-start;justify-content:space-between;
  padding:22px 2px;text-align:left;color:var(--sand);
  font-size:clamp(15.5px,1.6vw,17.5px);font-weight:500;line-height:1.45;
  transition:color .3s;
}
.faq__q:hover{color:var(--amber-hi)}
.faq__sign{position:relative;flex:none;width:14px;height:14px;margin-top:5px}
.faq__sign::before,.faq__sign::after{
  content:"";position:absolute;left:0;top:6.2px;width:14px;height:1.4px;background:var(--amber);
  transition:transform .45s var(--ease-out);
}
.faq__sign::after{transform:rotate(90deg)}
.faq__q[aria-expanded="true"] .faq__sign::after{transform:rotate(0)}
.faq__a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease-out)}
.faq__a > p,
.faq__a > .faq__body{overflow:hidden;font-size:15px;line-height:1.66;color:var(--muted);padding-right:34px}
.faq__item.is-open .faq__a{grid-template-rows:1fr}
.faq__item.is-open .faq__a > p,
.faq__item.is-open .faq__a > .faq__body{padding-bottom:22px}
/* Respuesta de dos párrafos: van envueltos para que el desplegable siga
   animando una sola fila de la grilla. */
.faq__body p + p{margin-top:13px}

/* ---------- Contacto ---------- */
.cont{display:grid;grid-template-columns:1fr;gap:clamp(38px,4.5vw,58px)}
.cont__info .h2{margin-top:15px}
/* El titular del cierre es una palabra: se agranda y lleva un subrayado
   ámbar que se desvanece, para que funcione como remate de la página. */
.cont__h2{font-size:clamp(44px,7.4vw,86px);line-height:.98;letter-spacing:-.038em}
.cont__h2::after{
  content:"";display:block;height:2px;border-radius:2px;
  width:clamp(58px,8vw,104px);margin-top:clamp(15px,1.8vw,22px);
  background:linear-gradient(90deg,var(--amber),rgba(233,164,92,0));
}
/* La bajada del cierre son dos frases con pesos distintos: primero la
   invitación, en claro, y debajo la promesa de respuesta, más tenue. */
.cont__lede{
  max-width:34ch;font-weight:600;color:var(--sand);
  font-size:clamp(17px,1.65vw,20.5px);line-height:1.45;letter-spacing:-.012em;
}
.cont__lede2{
  margin-top:10px;max-width:46ch;
  font-size:clamp(15px,1.35vw,17px);line-height:1.62;color:var(--muted);text-wrap:pretty;
}
.info{margin-top:clamp(28px,3vw,38px);border-top:1px solid var(--line-soft)}
.info li{display:flex;gap:15px;align-items:flex-start;padding:19px 2px;border-bottom:1px solid var(--line-soft)}
.info__ico{flex:none;width:19px;height:19px;color:var(--amber);margin-top:2px}
.info__ico svg{width:19px;height:19px}
.info__txt{display:flex;flex-direction:column;gap:5px;min-width:0}
.info__txt strong{font-size:14.5px;font-weight:600;color:var(--sand)}
.info__txt span,.info__txt a{font-size:14px;color:var(--muted);line-height:1.55}

/* Mensajes listos: abren WhatsApp con el texto ya redactado */
.quick{margin-top:clamp(26px,3vw,36px)}
.quick__lede{margin-top:10px;font-size:14px;color:var(--muted);line-height:1.55;max-width:44ch}
.quick__grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:16px}
.quick__btn{
  position:relative;text-align:left;
  display:flex;flex-direction:column;gap:5px;
  padding:15px 38px 16px 16px;
  border:1px solid var(--line);border-radius:var(--r);
  background:rgba(10,36,38,.6);
  transition:border-color .35s,background-color .35s,transform .5s var(--ease-out);
}
.quick__btn:hover{border-color:rgba(233,164,92,.42);background:rgba(12,42,44,.8)}
.quick__btn:active{transform:translateY(1px)}
.quick__btn::after{
  content:"";position:absolute;top:20px;right:17px;width:7px;height:7px;
  border-top:1.4px solid var(--faint);border-right:1.4px solid var(--faint);
  transform:rotate(45deg);
  transition:border-color .35s,transform .35s var(--ease);
}
.quick__btn:hover::after{border-color:var(--amber);transform:rotate(45deg) translate(2px,-2px)}
.quick__t{font-size:14.5px;font-weight:600;color:var(--sand);line-height:1.3}
.quick__b{font-size:12.5px;color:var(--muted);line-height:1.45}

.cont__form{
  background:rgba(10,36,38,.78);border:1px solid rgba(30,74,68,.9);border-radius:var(--r);
  padding:clamp(24px,2.8vw,34px);
}
.ok{
  border:1px solid rgba(127,201,166,.4);background:rgba(127,201,166,.08);
  border-radius:12px;padding:16px 18px;margin-bottom:22px;
}
.ok .kicker{color:var(--sage)}
.ok p:last-child{margin-top:8px;font-size:14.5px;line-height:1.6}

#form{display:flex;flex-direction:column;gap:16px}
.field{display:flex;flex-direction:column;gap:8px}
.field-row{display:grid;grid-template-columns:1fr;gap:16px}
.field label{font-size:9.5px}
input[type=text],input[type=email],input[type=tel],select,textarea{
  width:100%;background:var(--bg);border:1px solid rgba(30,74,68,.95);border-radius:11px;
  padding:13px 15px;font-size:15.5px;color:var(--sand);
  transition:border-color .3s,box-shadow .3s,background-color .3s;
}
textarea{resize:vertical;min-height:112px;line-height:1.55}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--amber);box-shadow:0 0 0 3px rgba(233,164,92,.15);background:#041516;
}
input:user-invalid,textarea:user-invalid,select:user-invalid{border-color:#C4682F}
.select{position:relative}
.select select{appearance:none;-webkit-appearance:none;padding-right:42px}
.select option{background:var(--bg);color:var(--sand)}
.select__arrow{
  position:absolute;right:17px;top:50%;width:8px;height:8px;pointer-events:none;
  border-right:1.4px solid var(--amber);border-bottom:1.4px solid var(--amber);
  transform:translateY(-70%) rotate(45deg);
}
.check{display:flex;gap:12px;align-items:flex-start;font-size:13px;line-height:1.55;color:var(--muted);cursor:pointer}
.check input{margin-top:2px;width:17px;height:17px;flex:none;accent-color:var(--amber)}
.form__actions{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.privacy{margin-top:4px;font-size:12px;line-height:1.55;color:var(--faint)}

/* ---------- Footer ---------- */
.foot-x{position:relative;z-index:1;background:linear-gradient(180deg,rgba(6,25,26,.72),rgba(6,25,26,.86));border-top:1px solid var(--line-soft);padding-top:clamp(50px,6vw,74px);padding-bottom:30px}
.foot-x__grid{display:grid;grid-template-columns:1fr;gap:clamp(30px,4vw,44px)}
/* abajo hay espacio: el sello se muestra más grande y se lee de verdad */
.foot-x .brand{gap:14px}
.foot-x .brand__mark{width:64px;height:64px}
.foot-x__about{margin-top:18px;max-width:46ch;font-size:13.5px;line-height:1.65;color:var(--muted)}
.foot-x__links{margin-top:15px;display:flex;flex-direction:column;gap:11px}
.foot-x__links a{font-size:14px;color:var(--muted);transition:color .3s}
.foot-x__links a:hover{color:var(--sand)}
.foot-x__base{
  margin-top:clamp(36px,4vw,48px);padding-top:20px;border-top:1px solid var(--line-soft);
  display:flex;flex-wrap:wrap;gap:10px 32px;justify-content:space-between;
}
.foot-x__base p{font-size:12px;color:var(--faint);max-width:52ch}

/* ---------- Volver arriba ---------- */
.totop{
  position:fixed;right:18px;bottom:18px;z-index:70;
  width:44px;height:44px;border-radius:999px;
  border:1px solid var(--line);background:rgba(6,25,26,.8);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  color:var(--sand);display:grid;place-items:center;
  opacity:0;transform:translateY(14px) scale(.9);pointer-events:none;
  transition:opacity .4s var(--ease),transform .4s var(--ease-out),border-color .3s,background-color .3s;
}
.totop svg{width:17px;height:17px}
.totop.is-on{opacity:1;transform:none;pointer-events:auto}
.totop:hover{border-color:rgba(233,164,92,.55);background:rgba(10,36,38,.92)}

/* ---------- Lightbox ---------- */
.lb{
  position:fixed;inset:0;z-index:130;
  background:rgba(3,12,13,.94);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  display:grid;place-items:center;padding:clamp(46px,7vw,76px) clamp(14px,4vw,64px);
  overscroll-behavior:contain;
  opacity:0;transition:opacity .35s var(--ease);
}
.lb.is-open{opacity:1}
.lb__fig{margin:0;display:flex;flex-direction:column;align-items:center;gap:14px;max-width:100%;max-height:100%}
.lb__fig img{
  max-width:100%;max-height:78svh;width:auto;object-fit:contain;
  border-radius:12px;box-shadow:0 40px 90px -30px rgba(0,0,0,.9);
  transform:scale(.97);opacity:0;transition:transform .5s var(--ease-out),opacity .4s;
}
.lb.is-open .lb__fig img{transform:none;opacity:1}
.lb__cap{font-size:9.5px;text-align:center;color:var(--muted)}
.lb__close,.lb__nav{
  position:absolute;z-index:2;width:46px;height:46px;border-radius:999px;
  border:1px solid var(--line);background:rgba(6,25,26,.7);color:var(--sand);
  display:grid;place-items:center;transition:border-color .3s,background-color .3s,transform .3s var(--ease-out);
}
.lb__close svg,.lb__nav svg{width:19px;height:19px}
.lb__close:hover,.lb__nav:hover{border-color:rgba(233,164,92,.6);background:rgba(10,36,38,.9)}
.lb__close{top:16px;right:16px}
.lb__nav--prev{left:12px;top:50%;transform:translateY(-50%)}
.lb__nav--next{right:12px;top:50%;transform:translateY(-50%)}
.lb__nav--prev:hover{transform:translateY(-50%) translateX(-3px)}
.lb__nav--next:hover{transform:translateY(-50%) translateX(3px)}

/* ---------- Revelados ---------- */
[data-reveal]{
  opacity:0;transform:translateY(26px);
  transition:opacity .95s var(--ease-out),transform 1.05s var(--ease-out);
  transition-delay:calc(var(--i,0) * 80ms);
}
[data-reveal].is-in{opacity:1;transform:none}

/* ============================================================
   Breakpoints
   ============================================================ */

/* En celular el desenfoque de la barra se abarata: cuesta caro repintarlo en
   cada cuadro del scroll, y con el fondo más opaco se ve igual de bien. */
@media (max-width:760px){
  .nav.is-stuck{
    background:rgba(5,20,21,.88);
    backdrop-filter:blur(9px);
    -webkit-backdrop-filter:blur(9px);
  }
}

/* Celulares angostos: la barra tiene que caber sin apretarse */
@media (max-width:430px){
  .nav__bar{gap:10px;padding:10px 14px}
  .brand{gap:9px}
  .brand__mark{width:40px;height:40px}
  .brand__name{font-size:14.5px}
  .brand__sub{font-size:7.5px;letter-spacing:.13em}
  .lang{padding:1px}
  .lang__btn{padding:5px 8px;font-size:9px;letter-spacing:.06em}
  .burger{width:38px;height:35px;border-radius:10px}
  .nav__right{gap:8px}
  .totop{right:14px;bottom:14px;width:41px;height:41px}
  .pull{padding:18px 20px}
}

@media (min-width:560px){
  .quick__grid{grid-template-columns:1fr 1fr}
  .creds__grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .cred{padding:22px 20px}
  .form__actions{flex-direction:row}
  .field-row{grid-template-columns:1fr 1fr}
  .gal{gap:12px}
  .terr__pics{gap:12px}
}

/* La galería pasa a cuatro columnas: 16 celdas = cuatro filas justas */
@media (min-width:900px){
  .gal{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 14px}
  .gal__cap{font-size:9px;letter-spacing:.13em;margin-top:12px}
  .terr__pics{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}

  /* El club: texto a la izquierda, asamblea a la derecha (con algo más de
     ancho que el texto) y la cena en panorámica ocupando todo el pie. */
  .club__top{grid-template-columns:minmax(0,.9fr) minmax(0,1.2fr)}
  .club__wide{aspect-ratio:16/9}
  /* Las dos fotos de abajo comparten fila y quedan EXACTAMENTE del mismo alto:
     las columnas van en proporción a sus recortes (16/9 = 16fr, 3/4 = 6.75fr),
     así que si se cambia un aspect-ratio hay que rehacer esa proporción. */
  .club__bottom{grid-template-columns:minmax(0,16fr) minmax(0,6.75fr)}
  .club__fogata{width:auto;justify-self:stretch}
}

@media (min-width:760px){
  .duo{grid-template-columns:1fr 1fr}
  .duo--solo{grid-template-columns:1fr}
  .terr__cols{grid-template-columns:1fr 1fr}
  .foot-x__grid{grid-template-columns:1.5fr 1fr 1fr}
  .amb__row{grid-template-columns:1.05fr 1fr}
  .amb__row--flip .amb__fig{order:2}
  .amb__fig{aspect-ratio:5/4}
  .amb__fig.media--tall{aspect-ratio:3/4}
  .cont{grid-template-columns:1fr 1fr}
  .totop{right:26px;bottom:26px}

  /* Temporadas: título a la izquierda, descripción a la derecha */
  .temp__row{display:grid;grid-template-columns:.82fr 1.18fr;column-gap:clamp(30px,4vw,60px);align-items:start}
  .temp__top{grid-column:1;grid-row:1;flex-direction:column;align-items:flex-start;gap:11px}
  .temp__track{grid-column:1 / -1;grid-row:2;margin-top:24px}
  .temp__row > p{grid-column:2;grid-row:1;margin-top:5px;max-width:52ch}
}

@media (min-width:1000px){
  .nav__links{display:flex}
  .nav .nav__cta,.nav .nav__wa{display:inline-flex;padding:11px 20px;font-size:13.5px}
  .nav .nav__wa{padding-inline:16px;gap:7px}
  .brand{flex:none}
  .burger{display:none}
  .menu{display:none}
  .hero__inner{padding-bottom:clamp(30px,4vw,50px)}
  .hero__cred{
    max-width:none;
    flex-direction:row;flex-wrap:wrap;justify-content:center;
    gap:0 0;font-size:9px;letter-spacing:.13em;
  }
  .hero__cred li:not(:last-child)::after{
    content:'·';margin-inline:.9em;color:rgba(143,176,170,.5);
  }
}

/* Entre 1000 y 1180 px los dos botones dejan de caber junto al escudo y los enlaces:
   se aprieta todo un poco en vez de esconder nada. Medido: con esto entra justo a 1000. */
@media (min-width:1000px) and (max-width:1179px){
  .nav__bar{gap:14px}
  .nav__links{gap:15px}
  .nav__links a{font-size:12.5px}
  .nav .nav__cta,.nav .nav__wa{padding:10px 14px;font-size:12.5px}
  .nav .nav__wa{padding-inline:12px;gap:6px}
  .btn__ico{width:15px;height:15px}
}

@media (min-width:1280px){
  .amb__row{gap:clamp(40px,4.4vw,72px)}
}

/* Ruta más discreta en pantallas chicas */
@media (max-width:759px){
  .ruta__base{stroke-width:1.8;stroke-dasharray:0 10}
  .ruta__live{stroke-width:2.6;stroke-dasharray:0 10}
}

/* ---------- Preferencias ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms !important;animation-iteration-count:1 !important;
    transition-duration:.001ms !important;scroll-behavior:auto !important;
  }
  [data-reveal]{opacity:1;transform:none}
  .lineclip__in{transform:none;opacity:1}
  .media > img{transform:none}
  .cursor{display:none}
  .ruta__pin{display:none}
}

@media print{
  .nav,.menu,.totop,.lb,.cursor,.marco,.ruta,.cue{display:none !important}
  body{background:#fff;color:#111}
}
