/* ═══════════ BUYLAND · sobre el sistema de CRPV ═══════════ */

/* la entrada usa el bloque .entrance de home.css tal cual; aquí solo el film */
.entrance__v{z-index:1}
.entrance__bg::after{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;background:
  linear-gradient(to top,rgba(10,11,9,.95) 0%,rgba(10,11,9,.72) 24%,rgba(10,11,9,.3) 52%,rgba(10,11,9,.2) 72%,rgba(10,11,9,.62) 100%)}

/* ── franja de valor: el precio por metro, que es el argumento ── */
.value{padding:clamp(30px,3.4vw,52px) var(--pad);background:var(--charcoal);
  display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,2.4vw,44px)}
.value__c{border-top:1px solid var(--line);padding-top:16px}
.value__n{font-family:var(--d);font-weight:400;font-size:clamp(1.5rem,2.6vw,2.4rem);
  line-height:1.06;letter-spacing:-.02em;margin:8px 0 6px}
.value__c.on .value__n{color:var(--gold-hi)}
.value__c p{font-size:.88em;color:rgba(240,238,231,.62);margin:0}
.value__c p.value__n{font-family:var(--d);font-weight:400;
  font-size:clamp(1.5rem,2.6vw,2.4rem);line-height:1.06;letter-spacing:-.02em;
  color:var(--bone);margin:8px 0 6px}
.value__c.on p.value__n{color:var(--gold-hi)}
@media(max-width:820px){.value{grid-template-columns:1fr}}

/* ── qué hay alrededor: la venta por cercanía ── */
.near{padding:clamp(40px,4.8vw,78px) var(--pad);border-top:1px solid var(--line-soft)}
.near__grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);
  gap:clamp(26px,3.6vw,64px);margin-top:clamp(22px,2.6vw,38px)}
.near__where{border-top:1px solid var(--line);padding-top:18px}
.near__where .h3{margin-bottom:10px}
.near__list{list-style:none;margin:0;padding:0;columns:2;column-gap:clamp(22px,2.8vw,44px)}
.near__list li{break-inside:avoid;display:flex;justify-content:space-between;gap:14px;align-items:baseline;
  padding:11px 0;border-bottom:1px solid var(--line-soft);font-family:var(--m);font-size:11.5px;
  letter-spacing:.06em;color:rgba(240,238,231,.8)}
.near__list li b{font-family:var(--m);font-weight:500;color:var(--gold-hi);white-space:nowrap;font-size:11px}
.near__note{margin-top:16px;font-family:var(--m);font-size:10px;letter-spacing:.1em;color:var(--stone)}
@media(max-width:900px){.near__grid{grid-template-columns:1fr}.near__list{columns:1}}

/* ── ficha: film de cabecera ── */
.rhero__v{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;
  transition:opacity 1.5s var(--ease-io);z-index:1}
.rhero__v.on{opacity:1}
.rhero .veil{z-index:2}
.rhero__in,.rhero__idx{z-index:3}

/* ── panel de datos de la ficha ── */
.fx{position:sticky;top:calc(var(--nav-h) + 18px);background:var(--charcoal);
  padding:clamp(20px,2.2vw,32px);border-top:2px solid transparent;border-image:var(--grad) 1}
.fx__p{font-family:var(--d);font-weight:400;font-size:clamp(1.6rem,2.4vw,2.2rem);
  line-height:1;letter-spacing:-.022em;color:var(--gold-hi)}
.fx__p span{display:block;font-family:var(--m);font-size:9.5px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--stone);margin-top:8px}
.fx__rows{margin:18px 0 20px;border-top:1px solid var(--line)}
.fx__r{display:flex;justify-content:space-between;gap:14px;align-items:baseline;
  padding:9px 0;border-bottom:1px solid var(--line-soft)}
.fx__r dt{font-family:var(--m);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--stone);margin:0}
.fx__r dd{margin:0;font-size:.9em;text-align:right}
.fx .btn{width:100%}
.fx__note{margin:12px 0 0;font-family:var(--m);font-size:9.5px;letter-spacing:.08em;
  line-height:1.7;color:var(--stone)}

/* ── formulario ── */
.form{display:grid;gap:16px}
.fld{display:grid;gap:6px}
.fld input,.fld textarea,.fld select{background:transparent;border:0;border-bottom:1px solid var(--line);
  color:var(--bone);font-family:var(--t);font-weight:300;font-size:.98em;padding:9px 0;border-radius:0;
  transition:border-color .4s}
.fld input:focus,.fld textarea:focus,.fld select:focus{outline:none;border-bottom-color:var(--gold)}
.fld input::placeholder,.fld textarea::placeholder{color:var(--stone)}
.fld textarea{resize:vertical;min-height:86px}
.fld select option{background:var(--charcoal);color:var(--bone)}
.contact{padding:clamp(40px,4.8vw,78px) var(--pad);background:var(--charcoal)}
.contact__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(26px,3.6vw,64px);
  margin-top:clamp(22px,2.6vw,38px)}
.contact__l{display:grid;gap:2px;padding:11px 0;border-bottom:1px solid var(--line-soft)}
.contact__l a{font-family:var(--d);font-size:clamp(1rem,1.5vw,1.24rem);transition:color .35s}
.contact__l a:hover{color:var(--gold-hi)}
@media(max-width:820px){.contact__grid{grid-template-columns:1fr}}

/* ── el idioma vive en el HTML, no en JS ── */
/* cualquier bloque que fije display (fx__p span, foot__col span, value__c p…) gana
   a un selector de atributo por especificidad: aquí manda el idioma, sin excepción */
[data-lang="es"]{display:none!important}
html.es [data-lang="en"]{display:none!important}
html.es [data-lang="es"]{display:revert!important}

/* ── selector de idioma en la nav ── */
.lang{display:flex;align-items:center;gap:6px;font-family:var(--m);font-size:10px;
  letter-spacing:.14em;margin-left:auto;padding-left:18px}
.lang button{background:none;border:0;cursor:pointer;color:inherit;opacity:.42;
  transition:opacity .3s;padding:4px 2px}
.lang button.on,.lang button:hover{opacity:1}
.lang span{opacity:.24}
@media(max-width:900px){.lang{padding-left:0;margin-left:0}}

/* ── revelado (detrás de .js para que sin JS nada quede invisible) ── */
.js .rv{opacity:0;transform:translateY(16px);
  transition:opacity 1s var(--ease-io),transform 1.1s var(--ease)}
.js .rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .rv{opacity:1;transform:none}}

/* la vitrina de CRPV es de seis paneles; con tres, 4.6 aplasta a los cerrados */
.show__p.on{flex-grow:2.5}
/* el pie: cada dato en su línea */
.foot__col > div > span{display:block;padding:5px 0;font-size:.92em}
/* el antetítulo cae sobre cielo claro: sombra como en la nav de CRPV */
.entrance__in .lbl,.rhero__in .lbl{text-shadow:0 1px 18px rgba(10,11,9,.95),0 0 6px rgba(10,11,9,.7)}


/* ═══════════ ¿DÓNDE VAS A DESPERTAR? — tarjeta central sobre la casa activa ═══════════ */
.wake{position:relative;padding:clamp(46px,5.4vw,86px) 0 clamp(34px,4vw,60px);overflow:hidden}
.wake__bg{position:absolute;inset:0;z-index:0}
.wake__bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  opacity:0;transition:opacity 1.2s var(--ease-io)}
.wake__bg img.on{opacity:1}
.wake__bg::after{content:'';position:absolute;inset:0;background:rgba(10,11,9,.74)}
.wake__head{position:relative;z-index:2;text-align:center;padding:0 var(--pad) clamp(24px,3vw,44px)}
.wake__head .h2{margin-top:10px}

.wake__win{position:relative;z-index:2;overflow:hidden}
.wake__row{display:flex;align-items:center;gap:clamp(10px,1.4vw,22px);will-change:transform}
.wk{flex:0 0 auto;width:clamp(150px,17vw,250px);height:clamp(300px,38vw,540px);
  position:relative;cursor:pointer;border:1px solid rgba(240,238,231,.22);
  display:flex;align-items:center;justify-content:center;
  transition:width .9s var(--ease),height .9s var(--ease),border-color .6s,background-color .7s}
.wk__name{font-family:var(--m);font-weight:500;font-size:clamp(9px,.75vw,11px);letter-spacing:.2em;
  text-transform:uppercase;color:rgba(240,238,231,.9);text-align:center;padding:0 10px;
  transition:opacity .45s}
.wk__card{position:absolute;inset:0;background:var(--bone);color:var(--obsidian);
  display:flex;flex-direction:column;padding:clamp(14px,1.5vw,22px);
  opacity:0;pointer-events:none;transition:opacity .6s var(--ease-io) .25s}
.wk.on{width:clamp(240px,26vw,400px);height:clamp(380px,46vw,660px);border-color:transparent}
.wk.on .wk__name{opacity:0}
.wk.on .wk__card{opacity:1;pointer-events:auto}
.wk__t{font-family:var(--m);font-weight:600;font-size:clamp(10px,.85vw,12px);letter-spacing:.2em;
  text-transform:uppercase;text-align:center;padding-bottom:clamp(12px,1.4vw,18px)}
.wk__ph{flex:1 1 auto;min-height:0;overflow:hidden}
.wk__ph img{width:100%;height:100%;object-fit:cover}
.wk__d{text-align:center;padding-top:clamp(12px,1.4vw,18px)}
.wk__v{font-family:var(--m);font-weight:500;font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gold-lo)}
.wk__d p{font-family:var(--d);margin:8px 0 0;font-size:.95em;line-height:1.5;color:#2A2C25}
.wk__d b{display:block;font-family:var(--d);font-weight:500;margin-top:6px;color:var(--obsidian)}
.wk__go{display:inline-flex;align-items:center;justify-content:center;margin-top:clamp(12px,1.4vw,18px);
  background:var(--obsidian);color:var(--bone);font-family:var(--m);font-weight:500;font-size:9.5px;
  letter-spacing:.2em;text-transform:uppercase;padding:13px 22px;border:0;cursor:pointer;
  transition:background .4s var(--ease-io),color .4s}
.wk__go:hover{background:var(--grad);color:#140F05}
.wake__nav{position:relative;z-index:2;display:flex;justify-content:center;align-items:center;
  gap:12px;margin-top:clamp(20px,2.4vw,34px)}
.wake__nav button{width:44px;height:44px;border:1px solid rgba(240,238,231,.3);background:transparent;
  color:var(--bone);cursor:pointer;transition:border-color .4s,background .4s,color .4s}
.wake__nav button:hover{border-color:transparent;background:var(--grad);color:#140F05}
.wake__dots{display:flex;gap:7px;margin-inline:10px}
.wake__dots i{width:22px;height:2px;background:rgba(240,238,231,.28);transition:background .4s}
.wake__dots i.on{background:var(--gold-hi)}
@media(max-width:760px){
  .wk{width:104px;height:250px}
  .wk.on{width:min(78vw,320px);height:430px}
  .wk__name{font-size:8px;letter-spacing:.14em}
}
@media (prefers-reduced-motion:reduce){.wake__row{transition:none}.wk{transition:none}}

/* ── mapa embebido en la ficha ── */
/* --ink2 venia del sistema de crpv y aqui no existe: el fondo no pintaba
   nada mientras el mapa cargaba. --charcoal es su equivalente en esta paleta. */
.near__map{margin-top:clamp(18px,3vw,30px);border:1px solid var(--line);background:var(--charcoal)}
.near__map iframe{display:block;width:100%;height:clamp(300px,44vw,460px);border:0;filter:grayscale(.28) contrast(1.04)}
.near__open{display:inline-block;margin-top:14px;font-family:var(--m);font-size:10px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--gold);border-bottom:1px solid rgba(190,155,90,.35);padding-bottom:3px}
.near__open:hover{color:var(--bone);border-bottom-color:var(--bone)}

/* ═══════════ BARRA DE CTA (fija abajo, persistente) ═══════════
   Hereda el vocabulario del .rail que el sistema ya traia para esta misma
   ranura — mismo fondo, mismo desenfoque, misma linea de oro arriba — para
   que lea como parte del cromo del sitio y no como algo pegado encima.
   A proposito NO es la burbuja verde flotante: esa es la pieza mas generica
   que hay en la web, y aqui el gancho es el precio por metro, que se compara
   solo. Entra deslizandose cuando el visitante pasa del hero: tapar la
   portada en la primera pantalla seria cobrarle el CTA antes de engancharlo. */
.cta{position:fixed;left:0;right:0;bottom:0;z-index:75;
  display:flex;align-items:center;justify-content:space-between;
  gap:clamp(12px,2vw,28px);padding:11px var(--pad);
  background:#101210;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-top:1px solid rgba(201,164,92,.28);
  box-shadow:0 -18px 50px rgba(10,11,9,.72);
  transform:translateY(110%);transition:transform .8s var(--ease)}
.cta::before{content:'';position:absolute;left:0;right:0;top:-1px;height:2px;background:var(--grad)}
.cta.on{transform:translateY(0)}
.cta__l{display:flex;flex-direction:column;gap:2px;min-width:0}
.cta__l .num{font-size:clamp(17px,1.9vw,23px);color:var(--gold-hi);line-height:1.1}
.cta__l .num span{font-size:.6em;color:var(--stone);letter-spacing:.02em}
.cta__l .lbl{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cta__b{flex:none;padding:13px 24px}
/* El pie no puede quedar debajo de la barra, pero solo en las paginas que la
   llevan: privacy no tiene CTA y no deberia cargar con el hueco. Si el
   navegador no entiende :has(), privacy gana 72px de aire al final y nada
   mas — el mismo resultado que no escribir la regla. */
body:has(.cta){padding-bottom:72px}
@media(max-width:620px){
  .cta{padding:9px 14px;gap:10px}
  .cta__l .num{font-size:16px}
  .cta__l .lbl{font-size:8px;letter-spacing:.14em}
  .cta__b{padding:12px 15px;font-size:9.5px;letter-spacing:.14em}
  body:has(.cta){padding-bottom:64px}
}
@media (prefers-reduced-motion:reduce){.cta{transition:none}}

/* ── gancho de precio en el hero de la ficha ──
   El precio por metro es el dato que detiene a alguien, porque se compara
   solo: $12.75 contra $54.97 se entiende sin saber nada de Costa Rica. Va
   grande; el total va debajo en pequeno, que es el orden en que la gente
   decide. El max-width deja libre la esquina donde vive .rhero__idx, y se
   limita a .rprice para no tocar el ancho del h1 ya publicado. */
.rprice{display:flex;align-items:center;flex-wrap:wrap;gap:12px 22px;
  margin-top:clamp(16px,2vw,24px);max-width:calc(100% - 110px)}
.rprice__n{margin:0;display:flex;align-items:baseline;gap:3px;line-height:1}
.rprice__n .num{font-family:var(--d);font-weight:400;letter-spacing:-.022em;
  font-size:clamp(2rem,4vw,3.2rem);color:var(--gold-hi)}
.rprice__n span{font-family:var(--m);font-size:clamp(11px,1.1vw,14px);color:var(--stone)}
.rprice__s{margin:0;display:flex;flex-direction:column;gap:4px;
  padding-left:22px;border-left:1px solid var(--line)}
.rprice__s b{font-family:var(--m);font-weight:500;font-size:clamp(13px,1.3vw,16px);
  font-variant-numeric:tabular-nums;color:var(--bone)}
.rprice__s .lbl{font-size:9px}
.fx .btn+.btn{margin-top:9px}
@media(max-width:620px){
  .rprice{gap:10px 14px;max-width:100%}
  .rprice__s{padding-left:14px}
  .rprice .btn{padding:12px 18px}
  /* El contador de fotos vive pegado abajo a la derecha del hero, y el boton
     cae en esa misma linea al envolverse: a 360px se tocan, y en castellano
     ("ESCRIBIR POR WHATSAPP") el boton es aun mas ancho. Subo el bloque de
     texto la altura del contador para que nunca compitan por la esquina.
     Va atado a :has(.rprice) para no mover los heroes que no llevan precio. */
  .rhero__in:has(.rprice){padding-bottom:38px}
}

/* ── CTA en la home: en la portada y al pie de la colección ──
   La portada no tenia ninguna accion: habia que bajar hasta el formulario
   para poder escribir. Ahora el primer pantallazo ya ofrece WhatsApp. */
.entrance__cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(20px,2.6vw,32px)}
.index__cta{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;
  gap:clamp(14px,2vw,30px);margin-top:clamp(28px,3.4vw,52px);
  padding-top:clamp(20px,2.4vw,32px);border-top:1px solid var(--line)}
.index__cta .lead{margin:0;max-width:54ch}
.index__cta .btn{flex:none}
@media(max-width:620px){
  .entrance__cta{gap:9px}
  .entrance__cta .btn{flex:1 1 100%}
  .index__cta .btn{flex:1 1 100%}
}

/* ═══════════ PORTADA EN PANTALLAS BAJAS ═══════════
   En un portátil (alto ~700-768) la fila de botones para elegir finca caía
   89px por debajo del pliegue. Un botón que no se ve no cumple el encargo.
   Se recortan los aires y baja un punto el titular, solo por debajo de
   800px de alto: en pantalla grande no cambia absolutamente nada.
   Vive al FINAL de land.css porque es la última hoja que carga — puesto en
   home.css, el .entrance__cta de aquí arriba lo pisaba con la misma
   especificidad y el recorte nunca llegaba a aplicarse. */
@media(max-height:800px){
  .entrance__in{padding-top:calc(var(--nav-h) + var(--bar-h) + 14px);
    padding-bottom:clamp(40px,6vh,64px)}
  .entrance h1{font-size:clamp(1.9rem,4.3vw,3.4rem)}
  .entrance__meta{margin-top:clamp(14px,2vw,20px)}
  .entrance__meta div{padding-top:10px}
  .entrance__cta{margin-top:14px}
  .pick{margin-top:14px}
  .pick__h{margin-bottom:7px}
}
/* Por debajo de 680px de alto ya no caben las dos cosas, y .entrance__meta
   dice exactamente lo que dicen los tres botones — sitio, $/m², tamaño y
   cuál es la mejor. Entre repetir el dato y esconder el botón, se repite
   menos. */
@media(max-height:680px){.entrance__meta{display:none}}
