<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Ribera del Batán — Residencia de Autor · Samborondón, Ecuador</title>
<meta name="description" content="Residencia de autor en Samborondón, Ecuador. Arquitectura abierta a la naturaleza, privacidad y amplitud extraordinaria." />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<style>
:root{
--background:40 60% 98%; --foreground:30 5% 16%;
--primary:39 48% 56%; --primary-foreground:40 60% 98%;
--muted:34 18% 92%; --muted-foreground:33 24% 44%;
--border:34 18% 92%;
--font-heading:"Playfair Display",Georgia,serif;
--font-body:"Plus Jakarta Sans",ui-sans-serif,system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--font-body);background:hsl(var(--background));color:hsl(var(--foreground));line-height:1.6;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
.eyebrow{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.3em;color:hsl(var(--primary))}
.section-title{font-family:var(--font-heading);font-size:clamp(2.6rem,5.5vw,4.6rem);line-height:1.02;letter-spacing:-.03em}
.wrap{max-width:1500px;margin:0 auto}
/* HEADER */
header{position:fixed;inset:0 0 auto 0;z-index:40;display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;transition:all .5s ease;color:hsl(var(--background))}
header.scrolled{border-bottom:1px solid hsl(var(--border));background:hsl(var(--background)/.8);backdrop-filter:blur(12px);color:hsl(var(--foreground))}
header .brand{font-family:var(--font-heading);font-size:1.05rem;letter-spacing:.04em}
header nav{display:none;gap:1.75rem;font-size:11px;text-transform:uppercase;letter-spacing:.18em}
header nav a{transition:opacity .3s}
header nav a:hover{opacity:.6}
.lang{display:flex;align-items:center;gap:.5rem;font-size:12px;letter-spacing:.18em}
.lang button{background:none;border:0;color:inherit;cursor:pointer;font:inherit;letter-spacing:inherit}
.lang button.off{opacity:.45}
@media(min-width:1024px){header nav{display:flex}}
/* HERO */
.hero{position:relative;min-height:680px;height:100svh;overflow:hidden;background:hsl(var(--foreground));color:hsl(var(--background))}
.hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero .shade{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,.3),rgba(0,0,0,.05) 45%,rgba(0,0,0,.65))}
.hero .inner{position:relative;display:flex;flex-direction:column;justify-content:space-between;height:100%;padding:7rem 1.5rem 2.25rem}
@media(min-width:768px){.hero .inner{padding:7rem 3rem 3rem}}
.hero .place{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.35em}
.hero .grid{display:grid;gap:2rem;align-items:end}
@media(min-width:768px){.hero .grid{grid-template-columns:1fr 340px}}
.hero .label{margin-bottom:1rem;font-size:12px;text-transform:uppercase;letter-spacing:.3em}
.hero h1{font-family:var(--font-heading);font-size:18vw;line-height:.76;letter-spacing:-.06em}
@media(min-width:768px){.hero h1{font-size:10.5vw}}
.hero h1 span{margin-left:14vw}
.hero .cta-col{border-top:1px solid rgba(255,255,255,.5);padding-top:1.25rem}
.hero .cta-col p{margin-bottom:1.75rem;font-size:1.1rem;line-height:1.6}
.hero .cta{display:inline-flex;align-items:center;gap:.75rem;font-size:12px;text-transform:uppercase;letter-spacing:.2em}
.arrow{display:inline-block;width:15px;height:15px}
/* INTRO */
.intro{display:grid;min-height:100vh;background:hsl(var(--background))}
@media(min-width:1024px){.intro{grid-template-columns:1fr 1fr}}
.intro .text{display:flex;flex-direction:column;justify-content:center;padding:7rem 1.75rem}
@media(min-width:768px){.intro .text{padding:7rem 4rem}}
@media(min-width:1024px){.intro .text{padding:7rem 8vw}}
.intro .text .section-title{margin-top:2rem}
.intro .divider{margin:2.5rem 0;height:1px;width:6rem;background:hsl(var(--primary))}
.intro .lead{max-width:32rem;font-family:var(--font-heading);font-size:1.5rem;line-height:1.3}
.intro .body{margin-top:1.75rem;max-width:32rem;font-size:1rem;line-height:1.75;color:hsl(var(--muted-foreground))}
.intro img{min-height:65vh;height:100%;width:100%;object-fit:cover}
/* CHAPTERS */
.chapters{background:hsl(var(--foreground));color:hsl(var(--background));padding:7rem 0}
@media(min-width:768px){.chapters{padding:10rem 0}}
.chapters .wrap{padding:0 1.5rem}
@media(min-width:768px){.chapters .wrap{padding:0 3rem}}
.ch-row{display:grid;gap:4rem;align-items:end}
@media(min-width:1024px){.ch-row{grid-template-columns:.8fr 1.2fr}}
.ch-row img{height:70vh;width:100%;object-fit:cover}
.ch-mid{margin:8rem 0;display:grid;gap:3rem;border-top:1px solid rgba(255,255,255,.15);border-bottom:1px solid rgba(255,255,255,.15);padding:4rem 0}
@media(min-width:768px){.ch-mid{grid-template-columns:1fr 1fr;padding:6rem 0}}
.ch-article{max-width:36rem}
.ch-article h3{margin-top:1.75rem;font-family:var(--font-heading);font-size:2.25rem;line-height:1.1}
@media(min-width:768px){.ch-article h3{font-size:3.75rem}}
.ch-article p.txt{margin-top:1.75rem;font-size:1rem;line-height:1.75;color:rgba(255,255,255,.65)}
@media(min-width:768px){.ch-article p.txt{font-size:1.1rem}}
.ch-wide img{height:55vh;width:100%;object-fit:cover}
/* GALLERY */
.gallery{background:hsl(var(--foreground));color:hsl(var(--background));padding:7rem 0}
@media(min-width:768px){.gallery{padding:10rem 0}}
.gal-top{display:flex;align-items:end;justify-content:space-between;margin-bottom:3rem;padding:0 1.5rem}
@media(min-width:768px){.gal-top{padding:0 3rem;max-width:1500px;margin:0 auto 3rem}}
.gal-top h2{margin-top:1.5rem;font-family:var(--font-heading);font-size:2.25rem;line-height:1.1}
@media(min-width:768px){.gal-top h2{font-size:3.75rem}}
.gal-btns{display:none;gap:.75rem}
@media(min-width:768px){.gal-btns{display:flex}}
.gal-btns button{width:2.75rem;height:2.75rem;border:1px solid rgba(255,255,255,.3);background:transparent;color:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.3s}
.gal-btns button:hover{background:hsl(var(--background));color:hsl(var(--foreground))}
.gal-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;gap:1rem}
@media(min-width:768px){.gal-track{gap:2rem}}
.gal-track::-webkit-scrollbar{display:none}
.gal-slide{scroll-snap-align:center;flex:0 0 88%;min-width:0}
@media(min-width:768px){.gal-slide{flex-basis:68%}}
.gal-slide .box{position:relative;height:62vh;min-height:440px;overflow:hidden}
.gal-slide img{width:100%;height:100%;object-fit:cover}
.gal-cap{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(to top,rgba(0,0,0,.7),transparent);padding:1.5rem}
@media(min-width:768px){.gal-cap{padding:2.25rem}}
.gal-cap .num{font-size:10px;text-transform:uppercase;letter-spacing:.25em;color:rgba(255,255,255,.6)}
.gal-cap h3{margin-top:.5rem;font-family:var(--font-heading);font-size:1.5rem}
@media(min-width:768px){.gal-cap h3{font-size:2.5rem}}
.gal-cap p{margin-top:.25rem;max-width:28rem;font-size:.9rem;color:rgba(255,255,255,.7)}
.gal-dots{display:flex;justify-content:center;gap:.5rem;margin-top:2rem;padding:0 1.5rem}
.gal-dots button{height:1px;border:0;background:rgba(255,255,255,.3);width:1.5rem;cursor:pointer;transition:all .3s}
.gal-dots button.on{width:3rem;background:hsl(var(--primary))}
/* SPECS */
.specs{background:hsl(var(--background));padding:7rem 1.5rem}
@media(min-width:768px){.specs{padding:10rem 3rem}}
.specs .wrap{max-width:1280px;margin:0 auto;display:grid;gap:3.5rem}
@media(min-width:1024px){.specs .wrap{grid-template-columns:1fr 1fr}}
.specs .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;border-top:1px solid hsl(var(--border));border-bottom:1px solid hsl(var(--border));padding:2rem 0}
.specs .stats strong{display:block;font-family:var(--font-heading);font-weight:400;font-size:1.9rem}
@media(min-width:768px){.specs .stats strong{font-size:3rem}}
.specs .stats span{display:block;margin-top:.75rem;font-size:10px;text-transform:uppercase;letter-spacing:.2em;color:hsl(var(--muted-foreground))}
.specs ul{margin-top:2.5rem;display:grid;gap:1.25rem}
@media(min-width:640px){.specs ul{grid-template-columns:1fr 1fr}}
.specs li{display:flex;gap:.75rem;font-size:.9rem}
.specs li b{color:hsl(var(--primary));font-weight:400}
.security{background:hsl(var(--primary));color:hsl(var(--primary-foreground));padding:6rem 1.5rem}
@media(min-width:768px){.security{padding:6rem 3rem}}
.security .wrap{max-width:1280px;margin:0 auto;display:grid;gap:2.5rem}
@media(min-width:768px){.security .wrap{grid-template-columns:1fr 1fr}}
.security h2{font-family:var(--font-heading);font-size:3rem}
@media(min-width:768px){.security h2{font-size:4.6rem}}
.security .txt{font-size:1.1rem;line-height:2;color:rgba(255,255,255,.75)}
.security .line{margin-top:2.25rem;border-top:1px solid rgba(255,255,255,.3);padding-top:1.5rem;font-size:12px;text-transform:uppercase;letter-spacing:.18em}
/* INQUIRY */
.inquiry{background:hsl(var(--foreground));color:hsl(var(--background));padding:6rem 1rem}
@media(min-width:768px){.inquiry{padding:9rem 3rem}}
.inquiry .wrap{max-width:1280px;margin:0 auto}
.inquiry .head{max-width:48rem;margin-bottom:3.5rem}
.inquiry .head h2{margin-top:1.75rem;font-family:var(--font-heading);font-size:3rem;line-height:1.05}
@media(min-width:768px){.inquiry .head h2{font-size:4.6rem}}
.inquiry .head p{margin-top:1.5rem;max-width:36rem;color:rgba(255,255,255,.6)}
.inquiry .grid{display:grid;overflow:hidden}
@media(min-width:1024px){.inquiry .grid{grid-template-columns:1fr 1fr}}
.inquiry .pic{display:none}
@media(min-width:1024px){.inquiry .pic{display:block;min-height:650px;height:100%}}
.inquiry .pic img{width:100%;height:100%;object-fit:cover}
/* FORM */
.form{display:flex;flex-direction:column;justify-content:space-between;min-height:520px;background:hsl(var(--background));color:hsl(var(--foreground));padding:1.75rem}
@media(min-width:768px){.form{padding:3rem}}
.form .meta{display:flex;justify-content:space-between;font-size:10px;text-transform:uppercase;letter-spacing:.2em;color:hsl(var(--muted-foreground));margin-bottom:4rem}
.form .q{font-family:var(--font-heading);font-size:1.9rem;line-height:1.1}
@media(min-width:768px){.form .q{font-size:3rem}}
.form-field{width:100%;appearance:none;border:0;border-bottom:1px solid hsl(var(--border));background:transparent;padding:1rem 0;color:hsl(var(--foreground));font-size:1.1rem;outline:none;margin-top:2.5rem}
.form-field:focus{border-color:hsl(var(--primary))}
.form-field option{color:#000}
.form .nav{margin-top:3rem;display:flex;align-items:center;justify-content:space-between;border-top:1px solid hsl(var(--border));padding-top:1.5rem}
.form .nav .back{display:flex;align-items:center;gap:.5rem;font-size:12px;text-transform:uppercase;letter-spacing:.15em;background:none;border:0;cursor:pointer;color:inherit}
.form .nav .back[disabled]{opacity:0}
.form .nav .next{display:flex;align-items:center;gap:.75rem;background:hsl(var(--primary));color:hsl(var(--primary-foreground));border:0;padding:1rem 1.25rem;font-size:12px;text-transform:uppercase;letter-spacing:.15em;cursor:pointer}
.form .nav .next[disabled]{opacity:.35;cursor:not-allowed}
/* FOOTER */
footer{background:hsl(var(--foreground));color:rgba(255,255,255,.6);padding:3rem 1.5rem;display:flex;flex-direction:column;gap:1.75rem}
@media(min-width:768px){footer{flex-direction:row;align-items:flex-end;justify-content:space-between;padding:3rem}}
footer .brand{font-family:var(--font-heading);font-size:1.5rem;color:hsl(var(--background))}
footer .desc{margin-top:.75rem;max-width:28rem;font-size:.9rem}
footer .loc{font-size:10px;text-transform:uppercase;letter-spacing:.2em}
.step{display:none}
.step.on{display:block}
</style>
</head>
<body>
<header id="header">
<a href="#top" class="brand">RIBERA DEL BATÁN</a>
<nav>
<a href="#residence" data-i="nav0">Residencia</a>
<a href="#architecture" data-i="nav1">Arquitectura</a>
<a href="#features" data-i="nav2">Características</a>
<a href="#inquiry" data-i="nav3">Visita privada</a>
</nav>
<div class="lang">
<button id="btn-es" onclick="setLang('es')">ES</button><span>/</span>
<button id="btn-en" class="off" onclick="setLang('en')">EN</button>
</div>
</header>
<!-- HERO -->
<section class="hero" id="top">
<img src="https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/64be87a51_IMG_1758.jpeg" alt="Fachada de la residencia Ribera del Batán entre palmeras al anochecer" />
<div class="shade"></div>
<div class="inner">
<p class="place" data-i="hero.place">Samborondón · Ecuador</p>
<div class="grid">
<div>
<p class="label" data-i="hero.label">Residencia de autor</p>
<h1>RIBERA<br><span>BATÁN</span></h1>
</div>
<div class="cta-col">
<p data-i="hero.line">Arquitectura abierta a la naturaleza. Privacidad que se siente.</p>
<a href="#residence" class="cta" data-i="hero.cta">Descubrir la residencia <span class="arrow">↓</span></a>
</div>
</div>
</div>
</section>
<!-- INTRODUCTION -->
<section class="intro" id="residence">
<div class="text">
<p class="eyebrow" data-i="intro.eyebrow">Una residencia singular</p>
<h2 class="section-title" data-i="intro.title">Una forma excepcional de vivir rodeado de verde</h2>
<div class="divider"></div>
<p class="lead" data-i="intro.lead">Hay residencias que se describen por su tamaño. Esta se entiende por la forma en que se vive.</p>
<p class="body" data-i="intro.body">Diseñada por Jannina Cabal Arquitectos y construida por INMOCOST, la propiedad integra patios, luz natural y vegetación como parte esencial de su arquitectura. Sin vecino posterior directo, ofrece apertura, calma y una privacidad difícil de encontrar.</p>
</div>
<img src="https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/7f8b0a7bf_IMG_1764.jpeg" alt="Sala principal de doble altura abierta hacia un patio interior tropical" />
</section>
<!-- CHAPTERS -->
<section class="chapters" id="architecture">
<div class="wrap">
<div class="ch-row">
<img src="https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/f875a1b16_IMG_1819.jpeg" alt="Detalle de luz, vidrio, piedra y vegetación integrada" />
<article class="ch-article">
<p class="eyebrow" data-i="ch0.tag">01 — Arquitectura interior</p>
<h3 data-i="ch0.title">Arquitectura que enmarca el paisaje</h3>
<p class="txt" data-i="ch0.text">Los vacíos de doble altura, los grandes ventanales y los patios interiores crean una continuidad serena entre interior y exterior.</p>
</article>
</div>
<div class="ch-mid">
<article class="ch-article">
<p class="eyebrow" data-i="ch1.tag">02 — Luz · Escala · Materia</p>
<h3 data-i="ch1.title">Cada recorrido revela una nueva perspectiva</h3>
<p class="txt" data-i="ch1.text">Planos amplios, luz indirecta, piedra natural y vegetación integrada definen una experiencia contemporánea y serena.</p>
</article>
<article class="ch-article">
<p class="eyebrow" data-i="ch2.tag">03 — Bienestar privado</p>
<h3 data-i="ch2.title">Un refugio para disfrutar todos los días</h3>
<p class="txt" data-i="ch2.text">Piscina, jacuzzi, sauna y vestidores conforman un espacio privado de descanso y entretenimiento.</p>
</article>
</div>
<div class="ch-wide">
<img src="https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/667879cc9_IMG_1771.jpeg" alt="Piscina privada y jardín tropical iluminados al anochecer" />
</div>
</div>
</section>
<!-- GALLERY -->
<section class="gallery">
<div class="gal-top">
<div>
<p class="eyebrow" data-i="gal.eyebrow">Galería</p>
<h2 data-i="gal.title">Un recorrido por la residencia</h2>
</div>
<div class="gal-btns">
<button onclick="galScroll(-1)" aria-label="Anterior">←</button>
<button onclick="galScroll(1)" aria-label="Siguiente">→</button>
</div>
</div>
<div class="gal-track" id="galTrack"></div>
<div class="gal-dots" id="galDots"></div>
</section>
<!-- SPECIFICATIONS -->
<section class="specs" id="features">
<div class="wrap">
<h2 class="section-title" data-i="specs.title">Amplitud extraordinaria</h2>
<div>
<div class="stats">
<div><strong>1.000 m²</strong><span data-i="specs.l0">Terreno</span></div>
<div><strong>535 m²</strong><span data-i="specs.l1">Construcción</span></div>
<div><strong>≈ 100 m²</strong><span data-i="specs.l2">Cocina</span></div>
</div>
<ul id="specList"></ul>
</div>
</div>
</section>
<!-- SECURITY -->
<section class="security">
<div class="wrap">
<h2 data-i="sec.title">Exclusividad que se conserva</h2>
<div>
<p class="txt" data-i="sec.text">Una de las urbanizaciones más prestigiosas y seguras de Samborondón. Lotes amplios, extensas áreas verdes y baja densidad preservan serenidad y privacidad.</p>
<p class="line" data-i="sec.line">Doble control de acceso · Vigilancia 24/7 · Circuito cerrado</p>
</div>
</div>
</section>
<!-- INQUIRY -->
<section class="inquiry" id="inquiry">
<div class="wrap">
<div class="head">
<p class="eyebrow" data-i="form.eyebrow">Adquisición privada</p>
<h2 data-i="form.title">Solicite el dossier privado</h2>
<p data-i="form.note">Visitas únicamente con cita previa. Información comercial disponible bajo solicitud.</p>
</div>
<div class="grid">
<div class="pic"><img src="https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/d44902225_IMG_1767.jpeg" alt="Patio tropical privado de la residencia al atardecer" /></div>
<div class="form">
<div>
<div class="meta"><span id="stepCount">Paso 1 / 5</span><span>RDB — 2026</span></div>
<div id="steps"></div>
</div>
<div class="nav">
<button class="back" id="backBtn" onclick="prevStep()">← <span data-i="form.back">Anterior</span></button>
<button class="next" id="nextBtn" onclick="nextOrSubmit()"><span id="nextLabel" data-i="form.next">Continuar</span> →</button>
</div>
</div>
</div>
</div>
</section>
<footer>
<div>
<p class="brand">RIBERA DEL BATÁN</p>
<p class="desc" data-i="footer">Una propiedad singular para quienes valoran arquitectura, amplitud y privacidad.</p>
</div>
<p class="loc">Samborondón · Ecuador</p>
</footer>
<script>
const I = {
es:{
nav:["Residencia","Arquitectura","Características","Visita privada"],
hero:{place:"Samborondón · Ecuador",label:"Residencia de autor",line:"Arquitectura abierta a la naturaleza. Privacidad que se siente.",cta:"Descubrir la residencia"},
intro:{eyebrow:"Una residencia singular",title:"Una forma excepcional de vivir rodeado de verde",lead:"Hay residencias que se describen por su tamaño. Esta se entiende por la forma en que se vive.",body:"Diseñada por Jannina Cabal Arquitectos y construida por INMOCOST, la propiedad integra patios, luz natural y vegetación como parte esencial de su arquitectura. Sin vecino posterior directo, ofrece apertura, calma y una privacidad difícil de encontrar."},
ch0:{tag:"01 — Arquitectura interior",title:"Arquitectura que enmarca el paisaje",text:"Los vacíos de doble altura, los grandes ventanales y los patios interiores crean una continuidad serena entre interior y exterior."},
ch1:{tag:"02 — Luz · Escala · Materia",title:"Cada recorrido revela una nueva perspectiva",text:"Planos amplios, luz indirecta, piedra natural y vegetación integrada definen una experiencia contemporánea y serena."},
ch2:{tag:"03 — Bienestar privado",title:"Un refugio para disfrutar todos los días",text:"Piscina, jacuzzi, sauna y vestidores conforman un espacio privado de descanso y entretenimiento."},
gal:{eyebrow:"Galería",title:"Un recorrido por la residencia"},
specs:{title:"Amplitud extraordinaria",l0:"Terreno",l1:"Construcción",l2:"Cocina",items:["Suite principal en planta baja","Dos vestidores independientes","Ambientes sociales de doble altura","Sala de música","Piscina, jacuzzi y sauna"]},
sec:{title:"Exclusividad que se conserva",text:"Una de las urbanizaciones más prestigiosas y seguras de Samborondón. Lotes amplios, extensas áreas verdes y baja densidad preservan serenidad y privacidad.",line:"Doble control de acceso · Vigilancia 24/7 · Circuito cerrado"},
form:{eyebrow:"Adquisición privada",title:"Solicite el dossier privado",note:"Visitas únicamente con cita previa. Información comercial disponible bajo solicitud.",fields:["Ciudad y país de residencia","Presupuesto estimado","Plazo en el que considera comprar","Objetivo de compra","Tipo de inversión"],placeholders:["Ej. Ciudad de México, México","Ej. USD $1,500,000","Seleccione un plazo","Seleccione una opción","Seleccione una opción"],timelines:["Inmediato","3 a 6 meses","6 a 12 meses","Más de 12 meses"],purposes:["Vivienda familiar","Segunda residencia","Inversión"],finance:["Financiamiento propio","Financiamiento con una institución"],next:"Continuar",back:"Anterior",submit:"Solicitar dossier privado",step:"Paso"},
footer:"Una propiedad singular para quienes valoran arquitectura, amplitud y privacidad.",
waIntro:"Hola, estoy interesado/a en la Residencia de Autor Ribera del Batán."
},
en:{
nav:["Residence","Architecture","Features","Private viewing"],
hero:{place:"Samborondón · Ecuador",label:"Author residence",line:"Architecture open to nature. Privacy you can feel.",cta:"Discover the residence"},
intro:{eyebrow:"A singular residence",title:"An exceptional way to live surrounded by nature",lead:"Some residences are defined by their size. This one is understood by the way it is lived.",body:"Designed by Jannina Cabal Arquitectos and built by INMOCOST, the property integrates courtyards, natural light and vegetation as essential architecture. With no direct rear neighbor, it offers openness, calm and rare privacy."},
ch0:{tag:"01 — Interior architecture",title:"Architecture that frames the landscape",text:"Double-height voids, large windows and interior courtyards create a serene continuity between inside and outside."},
ch1:{tag:"02 — Light · Scale · Matter",title:"Every path reveals a new perspective",text:"Expansive planes, indirect light, natural stone and integrated vegetation define a contemporary, serene experience."},
ch2:{tag:"03 — Private wellness",title:"A retreat to enjoy every day",text:"Pool, jacuzzi, sauna and dressing rooms create a private space for rest and entertainment."},
gal:{eyebrow:"Gallery",title:"A walkthrough of the residence"},
specs:{title:"Extraordinary breadth",l0:"Lot",l1:"Construction",l2:"Kitchen",items:["Ground-floor primary suite","Two independent dressing rooms","Double-height social areas","Music room","Pool, jacuzzi and sauna"]},
sec:{title:"Exclusivity, preserved",text:"One of Samborondón's most prestigious and secure communities. Generous lots, expansive green areas and low density preserve serenity and privacy.",line:"Double access control · 24/7 security · CCTV"},
form:{eyebrow:"Private acquisition",title:"Request the private dossier",note:"Private viewings by appointment only. Commercial information available upon request.",fields:["City and country of residence","Estimated budget","Expected purchase timeframe","Purchase purpose","Investment type"],placeholders:["E.g. Miami, United States","E.g. USD $1,500,000","Select a timeframe","Select an option","Select an option"],timelines:["Immediately","3 to 6 months","6 to 12 months","More than 12 months"],purposes:["Family home","Second residence","Investment"],finance:["Self-funded","Institutional financing"],next:"Continue",back:"Back",submit:"Request private dossier",step:"Step"},
footer:"A singular property for those who value architecture, space and privacy.",
waIntro:"Hello, I am interested in the Ribera del Batán Author Residence."
}
};
const slides=[
{src:"https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/64be87a51_IMG_1758.jpeg",es:["Fachada","Acceso principal entre cipreses y palmeras"],en:["Facade","Main access framed by cypress and palms"]},
{src:"https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/98ada8c67_IMG_1752.jpeg",es:["El acceso","Portico de autor, puerta de madera y piedra natural"],en:["The entrance","Author portico, wood door and natural stone"]},
{src:"https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/7f8b0a7bf_IMG_1764.jpeg",es:["Comedor","Doble altura abierta al jardín tropical"],en:["Dining room","Double height open to the tropical garden"]},
{src:"https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/52540f39d_IMG_1792.jpeg",es:["Cocina","Cien metros cuadrados para vivir y recibir"],en:["Kitchen","One hundred square meters to live and host"]},
{src:"https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/f875a1b16_IMG_1819.jpeg",es:["Pasarela de agua","Piedra pulida sobre espejo de agua al crepúsculo"],en:["Water walkway","Polished stone over a reflecting pool at dusk"]},
{src:"https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/f3c7c7250_IMG_1782.jpeg",es:["Patio de piedra","Mampostería natural y vegetación integrada"],en:["Stone patio","Natural masonry and integrated greenery"]},
{src:"https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/69760a521_IMG_1773.jpeg",es:["Interior-exterior","Vidrio de piso a techo hacia el patio"],en:["Indoor-outdoor","Floor-to-ceiling glass onto the courtyard"]},
{src:"https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/667879cc9_IMG_1771.jpeg",es:["Piscina y jacuzzi","Refugio privado rodeado de palmeras"],en:["Pool and jacuzzi","Private retreat surrounded by palms"]},
{src:"https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/d44902225_IMG_1767.jpeg",es:["Bar de jardín","Parrilla y buganvilia sobre terraza de madera"],en:["Garden bar","Grill and bougainvillea over a wooden deck"]},
{src:"https://media.base44.com/images/public/6a7255b2c721c427e2c695a3/1474a7766_IMG_1757.jpeg",es:["Sendero","Jardín curado de vegetación tropical"],en:["The path","Curated tropical garden landscape"]}
];
let lang = localStorage.getItem('rdb-lang') || 'es';
/* GALLERY */
const track = document.getElementById('galTrack');
const dots = document.getElementById('galDots');
slides.forEach((s,i)=>{
const cap = s[lang];
const el = document.createElement('div');
el.className='gal-slide';
el.innerHTML=`<div class="box"><img src="${s.src}" alt="${cap[0]} — ${cap[1]}"><div class="gal-cap"><p class="num">${String(i+1).padStart(2,'0')} / ${String(slides.length).padStart(2,'0')}</p><h3>${cap[0]}</h3><p>${cap[1]}</p></div></div>`;
track.appendChild(el);
const d = document.createElement('button');
d.onclick=()=>track.scrollTo({left:i*track.children[0].offsetWidth,behavior:'smooth'});
dots.appendChild(d);
});
function galScroll(dir){ track.scrollBy({left:dir*track.clientWidth*0.68,behavior:'smooth'}); }
track.addEventListener('scroll',()=>{
const i=Math.round(track.scrollLeft/track.children[0].offsetWidth);
[...dots.children].forEach((d,j)=>d.classList.toggle('on',j===i));
});
dots.children[0].classList.add('on');
/* SPEC LIST */
function renderSpecs(){
document.getElementById('specList').innerHTML = I[lang].specs.items.map(it=>`<li><b>●</b>${it}</li>`).join('');
}
/* FORM */
let step=0;
const data=["","","","",""];
const optionsIdx=[null,null,'timelines','purposes','finance'];
function renderSteps(){
const f=I[lang].form;
const c=document.getElementById('steps');
c.innerHTML='';
f.fields.forEach((label,i)=>{
const div=document.createElement('div');
div.className='step'+(i===step?' on':'');
div.innerHTML=`<label class="q" for="f${i}">${label}</label>`;
const opts=optionsIdx[i]?I[lang].form[optionsIdx[i]]:null;
if(opts){
div.innerHTML+=`<select class="form-field" id="f${i}"><option value="">${f.placeholders[i]}</option>${opts.map(o=>`<option ${data[i]===o?'selected':''}>${o}</option>`).join('')}</select>`;
}else{
div.innerHTML+=`<input class="form-field" id="f${i}" placeholder="${f.placeholders[i]}" value="${data[i].replace(/"/g,'"')}">`;
}
c.appendChild(div);
});
const el=document.getElementById('f'+step); if(el) el.focus();
document.getElementById('stepCount').textContent=`${I[lang].form.step} ${step+1} / 5`;
document.getElementById('nextLabel').textContent = step===4?I[lang].form.submit:I[lang].form.next;
document.getElementById('backBtn').disabled = step===0;
document.getElementById('nextBtn').disabled = !data[step];
}
function readStep(){ const el=document.getElementById('f'+step); if(el) data[step]=el.value; document.getElementById('nextBtn').disabled=!data[step]; }
document.addEventListener('input',e=>{ if(e.target.closest('.form-field')) readStep(); });
function nextOrSubmit(){ readStep(); if(!data[step])return; if(step===4) submit(); else { step++; renderSteps(); } }
function prevStep(){ if(step>0){ step--; renderSteps(); } }
async function submit(){
readStep();
if(!data[step])return;
const f=I[lang].form;
const WEBHOOK_URL="https://script.google.com/macros/s/AKfycbwl9EkzZFEAKFTn3_BHFN9SKZxSZHl9Decl89WGu4zkWJbiF4NBiySisIcoAEe033ZuIw/exec";
const payload={residence:data[0],budget:data[1],timeline:data[2],purpose:data[3],financing:data[4],language:lang,source:"web-static"};
try{
await fetch(WEBHOOK_URL,{method:"POST",mode:"no-cors",headers:{"Content-Type":"text/plain;charset=utf-8"},body:JSON.stringify(payload)});
}catch(e){ /* si falla la hoja, igual abrimos WhatsApp */ }
const labels=f.fields.map((l,i)=>`${l}: ${data[i]}`).join('\n');
const intro=I[lang].waIntro;
window.open(`https://wa.me/523320517837?text=${encodeURIComponent(intro+'\n\n'+labels)}`,'_blank','noopener');
}
/* LANGUAGE */
function setLang(l){
lang=l; localStorage.setItem('rdb-lang',l); document.documentElement.lang=l;
document.getElementById('btn-es').classList.toggle('off',l!=='es');
document.getElementById('btn-en').classList.toggle('off',l!=='en');
document.querySelectorAll('[data-i]').forEach(el=>{
const key=el.getAttribute('data-i').split('.');
let v=I[l][key[0]];
if(key.length>1) v=v[key[1]];
if(key[0]==='nav') v=v[parseInt(key[1])];
if(key[0]==='specs'&&key[1]&&key[1]!=='title') v=v[key[1]];
if(key[0]==='hero'||key[0]==='intro'||key[0]==='sec'||key[0]==='gal'||key[0]==='form'){
if(key[1]) v=v[key[1]];
}
if(key[0].startsWith('ch')) v=v[key[1]];
el.textContent=v;
});
// rebuild gallery captions + specs + form
slides.forEach((s,i)=>{ const cap=s[l]; const sl=track.children[i]; sl.querySelector('h3').textContent=cap[0]; sl.querySelector('.gal-cap p:last-child').textContent=cap[1]; });
renderSpecs(); renderSteps();
}
/* SCROLL HEADER */
window.addEventListener('scroll',()=>{ document.getElementById('header').classList.toggle('scrolled',window.scrollY>60); }, {passive:true});
/* INIT */
renderSpecs(); renderSteps();
window.addEventListener('resize',renderSteps);
</script>
</body>
</html>