/* global React, ReactDOM, TweaksPanel, useTweaks, TweakSection, TweakRadio, TweakColor, TweakToggle */
const { useState, useEffect, useRef } = React;

/* ──────────────────────────────────────────────────────────
   ANIMATION HELPERS — scroll-triggered reveals + counters
   ────────────────────────────────────────────────────────── */
function useInView({ threshold = 0.2, rootMargin = "0px" } = {}) {
  const ref = useRef(null);
  const [inView, setInView] = useState(false);
  useEffect(() => {
    if (!ref.current) return;
    const obs = new IntersectionObserver(
      ([entry]) => {
        if (entry.isIntersecting) {
          setInView(true);
          obs.disconnect();
        }
      },
      { threshold, rootMargin }
    );
    obs.observe(ref.current);
    return () => obs.disconnect();
  }, []);
  return [ref, inView];
}

function CountUp({ end, suffix = "", duration = 1400, trigger = true }) {
  const [val, setVal] = useState(0);
  useEffect(() => {
    if (!trigger) return;
    let raf;
    let start;
    const animate = (ts) => {
      if (!start) start = ts;
      const progress = Math.min((ts - start) / duration, 1);
      const eased = 1 - Math.pow(1 - progress, 3);
      setVal(Math.floor(eased * end));
      if (progress < 1) raf = requestAnimationFrame(animate);
    };
    raf = requestAnimationFrame(animate);
    return () => { if (raf) cancelAnimationFrame(raf); };
  }, [trigger, end, duration]);
  return React.createElement(React.Fragment, null, val, suffix);
}

function fadeUp(visible, delay = 0, distance = 24) {
  return {
    opacity: visible ? 1 : 0,
    transform: visible ? "translateY(0)" : `translateY(${distance}px)`,
    transition: `opacity .9s ease ${delay}ms, transform 1s cubic-bezier(.2,.7,.2,1) ${delay}ms`,
    willChange: "opacity, transform",
  };
}

/* ──────────────────────────────────────────────────────────
   LOGO MARK — F construida con 6 bloques modulares
   ────────────────────────────────────────────────────────── */
function LogoMark({ size = 24, accent = "var(--grafito)", fg = "var(--carbono)" }) {
  const w = size * (64 / 88);
  return (
    <svg width={w} height={size} viewBox="0 0 64 88" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
      <rect x="0"  y="0"  width="14" height="22" fill={fg} />
      <rect x="0"  y="26" width="14" height="22" fill={fg} />
      <rect x="0"  y="52" width="14" height="22" fill={fg} fillOpacity=".3" />
      <rect x="18" y="0"  width="22" height="22" fill={fg} />
      <rect x="43" y="0"  width="10" height="22" fill={accent} />
      <rect x="18" y="26" width="22" height="22" fill={accent} />
    </svg>
  );
}

function Wordmark({ light = false }) {
  const fg = light ? "var(--hueso)" : "var(--carbono)";
  const accent = light ? "rgba(248,247,244,.35)" : "var(--grafito)";
  return (
    <div style={{ display: "flex", alignItems: "center", gap: 14 }}>
      <LogoMark size={36} fg={fg} accent={accent} />
      <div style={{ display: "flex", flexDirection: "column", gap: 2 }}>
        <span style={{ fontFamily: "var(--sans)", fontWeight: 400, fontSize: 18, letterSpacing: "3px", color: fg }}>
          futuremind
        </span>
        <span style={{ fontFamily: "var(--mono)", fontSize: 8, letterSpacing: "3.5px", color: light ? "rgba(248,247,244,.4)" : "var(--carbono)", textTransform: "uppercase" }}>
          Modular Architecture
        </span>
      </div>
    </div>
  );
}

/* ──────────────────────────────────────────────────────────
   NAV
   ────────────────────────────────────────────────────────── */
function Nav({ scrolled }) {
  const links = [
    ["El modelo", "modelo"],
    ["Incluye", "incluye"],
    ["Sistema SIP", "sip"],
    ["Ampliaciones", "ampliaciones"],
    ["Precio", "precio"],
  ];
  const textColor = "var(--carbono)";
  const textHover = "var(--carbono)";
  return (
    <nav style={{
      position: "fixed", top: scrolled ? 14 : 22, left: "50%",
      transform: "translateX(-50%)", zIndex: 50,
      width: "min(1180px, calc(100% - 48px))",
      padding: "10px 14px 10px 22px",
      background: "rgba(248,247,244,.55)",
      backdropFilter: "blur(22px) saturate(140%)",
      WebkitBackdropFilter: "blur(22px) saturate(140%)",
      border: "0.5px solid rgba(255,255,255,.6)",
      boxShadow: scrolled
        ? "0 12px 40px rgba(10,10,10,.08), inset 0 0 0 0.5px rgba(255,255,255,.5)"
        : "0 6px 24px rgba(10,10,10,.04), inset 0 0 0 0.5px rgba(255,255,255,.4)",
      borderRadius: 999,
      display: "flex", justifyContent: "space-between", alignItems: "center",
      transition: "all .35s ease",
    }}>
      <Wordmark light={false} />
      <div style={{ display: "flex", alignItems: "center", gap: 28 }}>
        <ul style={{ listStyle: "none", display: "flex", gap: 22 }}>
          {links.map(([label, id]) => (
            <li key={id}>
              <a href={`#${id}`} style={{
                fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px",
                color: textColor, textTransform: "uppercase",
                padding: "8px 12px", borderRadius: 999,
                transition: "color .25s, background .25s",
              }}
              onMouseEnter={(e)=>{ e.target.style.color=textHover; e.target.style.background="rgba(255,255,255,.55)"; }}
              onMouseLeave={(e)=>{ e.target.style.color=textColor; e.target.style.background="transparent"; }}>
                {label}
              </a>
            </li>
          ))}
        </ul>
        <a href="#contacto" style={{
          fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px",
          color: "var(--hueso)", background: "var(--carbono)",
          padding: "11px 18px", borderRadius: 999,
          textTransform: "uppercase", display: "inline-flex",
          alignItems: "center", gap: 8,
        }}>
          <span>Consultá</span>
          <span style={{ width: 6, height: 6, background: "var(--grafito)", borderRadius: "50%" }}></span>
        </a>
      </div>
    </nav>
  );
}

/* ──────────────────────────────────────────────────────────
   HERO
   ────────────────────────────────────────────────────────── */
function Hero() {
  const [loaded, setLoaded] = useState(false);
  const [pillsRef, pillsInView] = useInView({ threshold: 0.25 });

  useEffect(() => {
    const id = setTimeout(() => setLoaded(true), 80);
    return () => clearTimeout(id);
  }, []);

  return (
    <React.Fragment>
    <section style={{
      position: "relative", minHeight: "115vh",
      background: "var(--hueso)",
      color: "var(--carbono)", overflow: "hidden",
      display: "flex", flexDirection: "column",
    }}>
      {/* HOUSE IMAGE — 16:9 hero photo with sky on top + house on bottom */}
      <img
        src="assets/hero_22m.png" alt="Futuremind 22 — la casa en su entorno"
        style={{
          position: "absolute", inset: 0,
          width: "100%", height: "100%",
          objectFit: "cover", objectPosition: "center center",
          zIndex: 0,
        }}
      />

      {/* dark overlay — strong black at top fading mid-section so the house stays clean */}
      <div style={{
        position: "absolute", inset: 0,
        background: "linear-gradient(180deg, rgba(10,10,10,.80) 0%, rgba(10,10,10,.60) 18%, rgba(10,10,10,.35) 35%, rgba(10,10,10,.12) 52%, rgba(10,10,10,0) 68%, rgba(10,10,10,0) 100%)",
        pointerEvents: "none",
        zIndex: 1,
      }} />

      {/* soft atmospheric glow — subtle warm halo behind the headline */}
      <div style={{
        position: "absolute", top: "-18%", left: "50%",
        transform: "translateX(-50%)",
        width: 1200, height: 540,
        background: "radial-gradient(ellipse at center, rgba(255,255,255,.10) 0%, rgba(255,255,255,0) 60%)",
        pointerEvents: "none",
        zIndex: 1,
      }} />

      {/* subtle grid — light lines over the dark gradient at top */}
      <div style={{
        position: "absolute", top: 0, left: 0, right: 0, height: "40%",
        backgroundImage: "linear-gradient(rgba(248,247,244,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(248,247,244,.05) 1px, transparent 1px)",
        backgroundSize: "84px 84px",
        maskImage: "linear-gradient(to bottom, black, transparent)",
        WebkitMaskImage: "linear-gradient(to bottom, black, transparent)",
        opacity: 0.6,
        zIndex: 1,
      }} />

      {/* HEADLINE BLOCK — compact, lives in the sky portion so the house stays clean below */}
      <div style={{
        position: "relative", zIndex: 2,
        padding: "115px 40px 0",
        textAlign: "center",
      }}>
        <div style={{
          display: "inline-flex", gap: 10, alignItems: "center",
          fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "3.5px",
          color: "var(--grafito)", textTransform: "uppercase",
          background: "rgba(255,255,255,.55)",
          backdropFilter: "blur(14px) saturate(140%)",
          WebkitBackdropFilter: "blur(14px) saturate(140%)",
          border: "0.5px solid rgba(255,255,255,.75)",
          borderRadius: 999,
          padding: "9px 16px", marginBottom: 22,
          boxShadow: "0 4px 18px rgba(10,10,10,.06)",
          ...fadeUp(loaded, 100),
        }}>
          <span style={{ width: 6, height: 6, background: "#5BD46F", borderRadius: "50%", boxShadow: "0 0 0 4px rgba(91,212,111,.18)" }}></span>
          <span>FUTUREMIND 22 · Lanzamiento 2026</span>
        </div>

        <h1 style={{
          fontFamily: "var(--serif)", fontWeight: 400,
          fontSize: "clamp(44px, 6vw, 92px)", lineHeight: 0.98,
          letterSpacing: "-2px", color: "var(--hueso)",
          marginBottom: 14,
          textShadow: "0 2px 24px rgba(0,0,0,.30)",
          ...fadeUp(loaded, 260),
        }}>
          Tu casa, <em style={{ fontStyle: "italic", color: "rgba(248,247,244,.72)" }}>en 45 días.</em>
        </h1>

        <p style={{
          fontSize: 15, color: "rgba(248,247,244,.92)", lineHeight: 1.6,
          maxWidth: 560, margin: "0 auto 28px", textWrap: "pretty",
          textShadow: "0 1px 12px rgba(0,0,0,.35)",
          ...fadeUp(loaded, 440),
        }}>
          Vivienda modular de 22 m², construida en seco y entregada llave en mano.
          Contrato formal, plazos firmados y terminaciones acordadas — en Córdoba, Argentina.
        </p>

        {/* Quick-info card — solid hueso, subtle, compact */}
        <div style={{
          maxWidth: 780, margin: "0 auto",
          background: "var(--hueso)",
          borderRadius: 16,
          boxShadow: "0 14px 36px rgba(10,10,10,.18), 0 0 0 0.5px rgba(10,10,10,.06)",
          display: "grid", gridTemplateColumns: "1.1fr 1fr 1fr auto",
          alignItems: "stretch",
          overflow: "hidden",
          ...fadeUp(loaded, 620),
        }}>
          {[
            ["El modelo",   "Futuremind 22",  "1 dorm · 22 m²"],
            ["Entrega",     "45 días",         "Llave en mano"],
            ["Desde",       "USD 17.000",      "Precio lanzamiento"],
          ].map(([label, val, sub], i) => (
            <div key={i} style={{
              padding: "14px 20px",
              borderRight: "0.5px solid rgba(10,10,10,.06)",
              display: "flex", flexDirection: "column", justifyContent: "center", gap: 3,
              textAlign: "left",
            }}>
              <div style={{ fontFamily: "var(--mono)", fontSize: 8.5, letterSpacing: "2.5px", color: "var(--piedra)", textTransform: "uppercase" }}>
                {label}
              </div>
              <div style={{ fontFamily: "var(--serif)", fontSize: 17, color: "var(--carbono)", lineHeight: 1.1 }}>
                {val}
              </div>
              <div style={{ fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "1.5px", color: "var(--piedra)", textTransform: "uppercase" }}>
                {sub}
              </div>
            </div>
          ))}
          <a href="#contacto" style={{
            background: "var(--carbono)", color: "var(--hueso)",
            padding: "0 24px", display: "flex", alignItems: "center", gap: 10,
            fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px",
            textTransform: "uppercase", transition: "background .2s",
          }}
          onMouseEnter={(e)=>e.currentTarget.style.background="var(--grafito)"}
          onMouseLeave={(e)=>e.currentTarget.style.background="var(--carbono)"}>
            <span>Consultá</span>
            <svg viewBox="0 0 24 24" width="14" height="14"><path d="M5 12 L19 12 M13 6 L19 12 L13 18" stroke="var(--hueso)" strokeWidth="1.5" fill="none" /></svg>
          </a>
        </div>
      </div>

    </section>

    {/* STATS — 4 translucent pills touching the hero image, with count-up + stagger fade */}
    <div ref={pillsRef} style={{
      position: "relative", zIndex: 2,
      background: "var(--hueso)",
      padding: "0 40px 80px",
      marginTop: 0,
      display: "grid", gridTemplateColumns: "repeat(4, 1fr)",
      gap: 16,
    }}>
      {[
        [22,  "",  "m²",        "cubiertos"],
        [45,  "",  "días",      "llave en mano"],
        [17,  "K", "USD",       "desde · lanzamiento"],
        [3,   "",  "ambientes", "dorm + baño + living"],
      ].map(([num, numSuffix, unit, label], i) => (
        <div key={i} style={{
          background: "rgba(255,255,255,.5)",
          backdropFilter: "blur(20px) saturate(140%)",
          WebkitBackdropFilter: "blur(20px) saturate(140%)",
          border: "0.5px solid rgba(10,10,10,.06)",
          borderRadius: 22,
          padding: "22px 28px",
          boxShadow: "0 8px 24px rgba(10,10,10,.05), inset 0 0 0 0.5px rgba(255,255,255,.7)",
          display: "flex", flexDirection: "column", gap: 8,
          ...fadeUp(pillsInView, i * 120, 18),
        }}>
          <div style={{ display: "flex", alignItems: "baseline", gap: 10 }}>
            <span style={{ fontFamily: "var(--serif)", fontSize: 52, lineHeight: 1, color: "var(--carbono)", letterSpacing: "-1px" }}>
              <CountUp end={num} suffix={numSuffix} duration={1400} trigger={pillsInView} />
            </span>
            <span style={{ fontFamily: "var(--mono)", fontSize: 11, letterSpacing: "1.5px", color: "var(--grafito)", textTransform: "uppercase" }}>
              {unit}
            </span>
          </div>
          <span style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px", color: "var(--piedra)", textTransform: "uppercase" }}>
            {label}
          </span>
        </div>
      ))}
    </div>
    </React.Fragment>
  );
}

/* ──────────────────────────────────────────────────────────
   SECTION HEADER
   ────────────────────────────────────────────────────────── */
function SectionMarker({ num, label, light = false }) {
  const fg = light ? "rgba(248,247,244,.45)" : "var(--piedra)";
  const line = light ? "rgba(248,247,244,.12)" : "var(--humo)";
  return (
    <div style={{ display: "flex", alignItems: "center", gap: 16, marginBottom: 32 }}>
      <span style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "3px", color: fg, textTransform: "uppercase", whiteSpace: "nowrap" }}>
        {num} · {label}
      </span>
      <span style={{ flex: 1, height: 0.5, background: line }}></span>
    </div>
  );
}

function SectionTitle({ children, light = false, max = 880 }) {
  return (
    <h2 style={{
      fontFamily: "var(--serif)", fontWeight: 400,
      fontSize: "clamp(40px, 5vw, 64px)", lineHeight: 1.05,
      letterSpacing: "-1px",
      color: light ? "var(--hueso)" : "var(--carbono)",
      marginBottom: 24, maxWidth: max,
    }}>
      {children}
    </h2>
  );
}

/* ──────────────────────────────────────────────────────────
   CAROUSEL — used in Modelo for fotos + planos
   ────────────────────────────────────────────────────────── */
function Carousel({ items, idx, setIdx, aspect = "16/10", fit = "contain", bg = "var(--carbono)", label, renderCaption }) {
  const n = items.length;
  const prev = () => setIdx((idx - 1 + n) % n);
  const next = () => setIdx((idx + 1) % n);
  const cur = items[idx];
  return (
    <div style={{ marginBottom: 1 }}>
      <div style={{ position: "relative", width: "100%", aspectRatio: aspect, overflow: "hidden", background: bg, borderRadius: 24 }}>
        <img src={cur.src} alt={cur.label}
          style={{ position: "absolute", inset: 0, width: "100%", height: "100%", objectFit: fit, objectPosition: "center" }} />
        {/* top-left label */}
        <div style={{
          position: "absolute", top: 18, left: 18,
          fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2.5px",
          color: "var(--hueso)", textTransform: "uppercase",
          background: "rgba(10,10,10,.6)", padding: "7px 11px", backdropFilter: "blur(8px)",
        }}>
          {label}
        </div>
        {/* bottom caption */}
        <div style={{
          position: "absolute", bottom: 18, left: 18,
          display: "flex", gap: 10, alignItems: "center",
          fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "3px",
          color: "var(--hueso)", textTransform: "uppercase",
          background: "rgba(10,10,10,.55)", padding: "8px 12px", backdropFilter: "blur(8px)",
        }}>
          {renderCaption ? renderCaption(cur, idx) : <span>{cur.label}</span>}
        </div>
        {/* counter */}
        <div style={{
          position: "absolute", top: 18, right: 18,
          fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px",
          color: "var(--hueso)", textTransform: "uppercase",
          background: "rgba(10,10,10,.6)", padding: "7px 11px", backdropFilter: "blur(8px)",
        }}>
          {String(idx + 1).padStart(2, "0")} / {String(n).padStart(2, "0")}
        </div>
        {/* prev/next */}
        <button onClick={prev} aria-label="Anterior" style={{
          position: "absolute", left: 18, top: "50%", transform: "translateY(-50%)",
          width: 44, height: 44, background: "rgba(10,10,10,.65)", color: "var(--hueso)",
          border: "0.5px solid rgba(248,247,244,.2)", backdropFilter: "blur(8px)",
          fontFamily: "var(--mono)", fontSize: 16,
        }}>←</button>
        <button onClick={next} aria-label="Siguiente" style={{
          position: "absolute", right: 18, top: "50%", transform: "translateY(-50%)",
          width: 44, height: 44, background: "rgba(10,10,10,.65)", color: "var(--hueso)",
          border: "0.5px solid rgba(248,247,244,.2)", backdropFilter: "blur(8px)",
          fontFamily: "var(--mono)", fontSize: 16,
        }}>→</button>
      </div>
      {/* dot indicators */}
      <div style={{ display: "flex", gap: 8, justifyContent: "center", padding: "16px 0", background: "var(--hueso)" }}>
        {items.map((_, i) => (
          <button key={i} onClick={() => setIdx(i)} aria-label={`Ir a ${i + 1}`} style={{
            width: i === idx ? 24 : 8, height: 4,
            background: i === idx ? "var(--carbono)" : "var(--humo)",
            transition: "all .25s ease",
          }}></button>
        ))}
      </div>
    </div>
  );
}

/* ──────────────────────────────────────────────────────────
   EL MODELO
   ────────────────────────────────────────────────────────── */
function Modelo() {
  const rooms = [
    { id: "cocina", label: "Cocina · Living",  w: "3.36", h: "2.60" },
    { id: "dorm",   label: "Dormitorio",       w: "3.36", h: "2.06" },
    { id: "bano",   label: "Baño completo",    w: "2.52", h: "1.10" },
  ];

  const planos = [
    { src: "assets/3d_corte.png", label: "Corte frontal", desc: "Dormitorio, baño y living integrado." },
    { src: "assets/3d_axo.png",   label: "Isométrica",    desc: "Volumetría completa del módulo." },
  ];

  const fotos = [
    { src: "assets/22m1.jpg", label: "Vista frontal", n: "01" },
    { src: "assets/22m2.jpg", label: "Vista angular", n: "02" },
  ];

  const [fotoIdx, setFotoIdx] = useState(0);
  const [planoIdx, setPlanoIdx] = useState(0);
  const [headerRef, headerInView] = useInView({ threshold: 0.2 });
  const [fotosRef,  fotosInView]  = useInView({ threshold: 0.15 });
  const [quoteRef,  quoteInView]  = useInView({ threshold: 0.4 });
  const [planosRef, planosInView] = useInView({ threshold: 0.15 });
  const [roomsRef,  roomsInView]  = useInView({ threshold: 0.25 });

  return (
    <section id="modelo" style={{
      padding: "140px 80px",
      background: "linear-gradient(180deg, var(--hueso) 0%, #F2F0EA 100%)",
      position: "relative",
    }}>
      {/* soft atmospheric glow at top */}
      <div style={{
        position: "absolute", top: 0, left: "50%",
        transform: "translateX(-50%)",
        width: 900, height: 300,
        background: "radial-gradient(ellipse at center, rgba(255,255,255,.6) 0%, rgba(255,255,255,0) 70%)",
        pointerEvents: "none",
      }} />

      <div style={{ maxWidth: 1400, margin: "0 auto", position: "relative" }}>
        <div ref={headerRef}>
          <div style={fadeUp(headerInView, 0)}>
            <SectionMarker num="01" label="El modelo · Futuremind 22" />
          </div>
          <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 80, alignItems: "end", marginBottom: 72 }}>
            <div style={fadeUp(headerInView, 160)}>
              <SectionTitle max={580}>Imaginalo una vez,<br /><em style={{ fontStyle: "italic", color: "var(--grafito)" }}>vivílo para siempre.</em></SectionTitle>
            </div>
            <p style={{
              fontSize: 15, color: "#3D3D3A", lineHeight: 1.8, maxWidth: 480, justifySelf: "end", textWrap: "pretty",
              ...fadeUp(headerInView, 320),
            }}>
              Un dormitorio, un baño completo, cocina y living integrados. Sin metros cuadrados perdidos.
              Lista para habitar el día que te entregamos las llaves — con contrato formal, plazos firmados
              y terminaciones acordadas.
            </p>
          </div>
        </div>

        {/* Carrusel — fotos exteriores */}
        <div ref={fotosRef} style={fadeUp(fotosInView, 0, 30)}>
          <Carousel
            items={fotos}
            idx={fotoIdx}
            setIdx={setFotoIdx}
            aspect="16/10"
            fit="contain"
            bg="var(--carbono)"
            label="Exterior · Fotos"
            renderCaption={(it) => (
              <><span style={{ opacity: 0.55 }}>N°{it.n}</span><span>{it.label}</span></>
            )}
          />
        </div>

        {/* Motivational pull-quote — rounded translucent dark */}
        <div ref={quoteRef} style={{
          background: "linear-gradient(135deg, rgba(46,58,71,.96) 0%, rgba(20,28,38,.96) 100%)",
          color: "var(--hueso)",
          borderRadius: 28,
          border: "0.5px solid rgba(248,247,244,.08)",
          padding: "52px 60px",
          marginTop: 24, marginBottom: 24,
          display: "grid", gridTemplateColumns: "auto 1fr", gap: 40, alignItems: "center",
          boxShadow: "0 24px 56px rgba(10,10,10,.18), inset 0 0 0 0.5px rgba(248,247,244,.06)",
          ...fadeUp(quoteInView, 0, 30),
        }}>
          <div style={{
            fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "3px",
            color: "rgba(248,247,244,.45)", textTransform: "uppercase", whiteSpace: "nowrap",
          }}>
            La idea
          </div>
          <div style={{ fontFamily: "var(--serif)", fontSize: "clamp(26px, 2.6vw, 38px)", lineHeight: 1.25, textWrap: "balance" }}>
            Lo que pagás de alquiler en tres años,<br />
            <em style={{ fontStyle: "italic", color: "rgba(248,247,244,.55)" }}>acá lo convertís en una casa propia — en 45 días.</em>
          </div>
        </div>

        {/* Carrusel — planos 3D + técnico */}
        <div ref={planosRef} style={fadeUp(planosInView, 0, 30)}>
          <Carousel
            items={planos}
            idx={planoIdx}
            setIdx={setPlanoIdx}
            aspect="16/10"
            fit="contain"
            bg="var(--hueso)"
            label="Planos · 3D y técnico"
            renderCaption={(it, i) => (
              <><span style={{ opacity: 0.55 }}>0{i + 1}</span><span>{it.label}</span></>
            )}
          />
        </div>

        {/* Ambientes — 3 glass pills */}
        <div ref={roomsRef} style={{ marginTop: 72, display: "grid", gridTemplateColumns: "auto 1fr", gap: 56, alignItems: "start" }}>
          <div style={fadeUp(roomsInView, 0)}>
            <div style={{
              fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "3px",
              color: "var(--piedra)", textTransform: "uppercase", marginBottom: 14,
            }}>Ambientes</div>
            <div style={{ fontFamily: "var(--serif)", fontSize: 32, lineHeight: 1.15, color: "var(--carbono)", maxWidth: 320 }}>
              Tres ambientes,<br /><em style={{ fontStyle: "italic", color: "var(--grafito)" }}>cero metros perdidos.</em>
            </div>
          </div>
          <div style={{ display: "grid", gridTemplateColumns: "repeat(3, 1fr)", gap: 16 }}>
            {rooms.map((r, i) => (
              <div key={r.id} style={{
                background: "rgba(255,255,255,.5)",
                backdropFilter: "blur(20px) saturate(140%)",
                WebkitBackdropFilter: "blur(20px) saturate(140%)",
                border: "0.5px solid rgba(10,10,10,.06)",
                borderRadius: 22,
                padding: "26px 28px",
                boxShadow: "0 8px 24px rgba(10,10,10,.05), inset 0 0 0 0.5px rgba(255,255,255,.7)",
                display: "flex", flexDirection: "column", gap: 10,
                ...fadeUp(roomsInView, 180 + i * 140, 18),
              }}>
                <span style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2px", color: "var(--piedra)" }}>
                  0{i + 1} · Ambiente
                </span>
                <span style={{ fontFamily: "var(--serif)", fontSize: 24, color: "var(--carbono)", lineHeight: 1.1 }}>{r.label}</span>
                <span style={{ fontFamily: "var(--mono)", fontSize: 11, letterSpacing: "1.5px", color: "var(--grafito)" }}>
                  {r.w} × {r.h} m
                </span>
              </div>
            ))}
          </div>
        </div>

      </div>
    </section>
  );
}

/* ──────────────────────────────────────────────────────────
   QUÉ INCLUYE
   ────────────────────────────────────────────────────────── */
function Incluye() {
  const grupos = [
    {
      n: "01",
      title: "Estructura",
      tag: "Lo que sostiene la casa",
      items: [
        "Estructura de acero — columnas y perfiles",
        "Paneles SIP (aislación superior al ladrillo)",
        "Platea de hormigón",
        "Techo de chapa con aislación",
        "Aberturas de PVC con vidrio",
      ],
    },
    {
      n: "02",
      title: "Instalaciones",
      tag: "Lo que la hace funcionar",
      items: [
        "Instalación eléctrica completa",
        "Instalación de agua completa",
        "Termotanque eléctrico 50 L",
        "1 panel solar",
        "Grifería completa baño y cocina",
      ],
    },
    {
      n: "03",
      title: "Equipamiento",
      tag: "Lo que ya viene puesto",
      items: [
        "Anafe eléctrico 2 hornallas",
        "Bajo mesada",
        "Contrato formal de obra",
        "Calidades + terminaciones por escrito",
        "Plazo de entrega comprometido: 45 días",
      ],
    },
  ];

  const [headerRef, headerInView] = useInView({ threshold: 0.2 });
  const [cardsRef,  cardsInView]  = useInView({ threshold: 0.15 });
  const [bannerRef, bannerInView] = useInView({ threshold: 0.4 });

  return (
    <section id="incluye" style={{
      background: "linear-gradient(180deg, var(--grafito) 0%, #1A2230 55%, var(--carbono) 100%)",
      color: "var(--hueso)",
      padding: "140px 80px",
      position: "relative",
      overflow: "hidden",
    }}>
      {/* warm atmospheric glow at top — gives life to the dark canvas */}
      <div style={{
        position: "absolute", top: "-12%", left: "15%",
        width: 720, height: 480,
        background: "radial-gradient(ellipse at center, rgba(211,209,199,.10) 0%, rgba(211,209,199,0) 65%)",
        pointerEvents: "none",
      }} />
      <div style={{
        position: "absolute", top: "20%", right: "10%",
        width: 600, height: 400,
        background: "radial-gradient(ellipse at center, rgba(136,135,128,.08) 0%, rgba(136,135,128,0) 70%)",
        pointerEvents: "none",
      }} />

      <div style={{ maxWidth: 1400, margin: "0 auto", position: "relative" }}>
        <div ref={headerRef}>
          <div style={fadeUp(headerInView, 0)}>
            <SectionMarker num="02" label="Qué incluye" light={true} />
          </div>
          <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 80, alignItems: "end", marginBottom: 80 }}>
            <div style={fadeUp(headerInView, 160)}>
              <SectionTitle max={580} light={true}>Llave en mano,<br /><em style={{ fontStyle: "italic", color: "rgba(248,247,244,.55)" }}>de verdad.</em></SectionTitle>
            </div>
            <p style={{
              fontSize: 15, color: "rgba(248,247,244,.78)", lineHeight: 1.8, maxWidth: 480, justifySelf: "end", textWrap: "pretty",
              ...fadeUp(headerInView, 320),
            }}>
              Todo lo que necesitás para entrar a vivir el día 45. Sin costos sorpresa, sin ítems
              "aparte". Lo único que no incluye es el transporte de materiales al terreno.
            </p>
          </div>
        </div>

        {/* Three glass-on-dark cards with stagger fade-in */}
        <div ref={cardsRef} style={{ display: "grid", gridTemplateColumns: "repeat(3, 1fr)", gap: 20 }}>
          {grupos.map((g, gi) => (
            <article key={g.n} style={{
              background: "rgba(248,247,244,.04)",
              backdropFilter: "blur(20px) saturate(140%)",
              WebkitBackdropFilter: "blur(20px) saturate(140%)",
              border: "0.5px solid rgba(248,247,244,.12)",
              borderRadius: 24,
              padding: "36px 32px",
              boxShadow: "0 18px 44px rgba(10,10,10,.25), inset 0 0 0 0.5px rgba(248,247,244,.06)",
              display: "flex", flexDirection: "column", gap: 24,
              ...fadeUp(cardsInView, gi * 140, 22),
            }}>
              {/* header */}
              <header style={{ display: "flex", flexDirection: "column", gap: 10, paddingBottom: 22, borderBottom: "0.5px solid rgba(248,247,244,.12)" }}>
                <div style={{
                  display: "inline-flex", alignSelf: "flex-start", alignItems: "center", gap: 7,
                  fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2.5px",
                  color: "rgba(248,247,244,.78)", textTransform: "uppercase",
                  background: "rgba(248,247,244,.08)",
                  border: "0.5px solid rgba(248,247,244,.16)",
                  borderRadius: 999,
                  padding: "5px 11px",
                }}>
                  <span style={{ width: 5, height: 5, borderRadius: "50%", background: "var(--humo)" }}></span>
                  Bloque {g.n}
                </div>
                <div style={{ fontFamily: "var(--serif)", fontSize: 30, lineHeight: 1.05, color: "var(--hueso)", marginTop: 4 }}>
                  {g.title}
                </div>
                <div style={{ fontFamily: "var(--serif)", fontStyle: "italic", fontSize: 14, color: "rgba(211,209,199,.7)" }}>
                  {g.tag}
                </div>
              </header>

              {/* items */}
              <ul style={{ listStyle: "none", display: "flex", flexDirection: "column", gap: 0 }}>
                {g.items.map((it, i) => (
                  <li key={i} style={{
                    display: "grid", gridTemplateColumns: "22px 1fr", gap: 14,
                    padding: "12px 0",
                    borderBottom: i < g.items.length - 1 ? "0.5px solid rgba(248,247,244,.08)" : "none",
                    fontSize: 14, color: "rgba(248,247,244,.85)", lineHeight: 1.55,
                    alignItems: "start",
                  }}>
                    <span style={{
                      width: 18, height: 18, borderRadius: 999,
                      background: "rgba(211,209,199,.18)",
                      display: "inline-flex", alignItems: "center", justifyContent: "center",
                      flexShrink: 0, marginTop: 3,
                    }}>
                      <svg viewBox="0 0 20 20" width="10" height="10">
                        <path d="M3 10 L8 15 L17 5" stroke="var(--humo)" strokeWidth="2" fill="none" strokeLinecap="round" strokeLinejoin="round" />
                      </svg>
                    </span>
                    <span>{it}</span>
                  </li>
                ))}
              </ul>
            </article>
          ))}
        </div>

        {/* exclusion banner — INVERTED to light for editorial contrast */}
        <div ref={bannerRef} style={{
          marginTop: 40,
          background: "var(--hueso)",
          color: "var(--carbono)",
          borderRadius: 22,
          padding: "26px 36px",
          display: "flex", gap: 28, alignItems: "center", justifyContent: "space-between", flexWrap: "wrap",
          boxShadow: "0 18px 44px rgba(10,10,10,.30), inset 0 0 0 0.5px rgba(10,10,10,.06)",
          ...fadeUp(bannerInView, 0, 22),
        }}>
          <div style={{ display: "flex", gap: 22, alignItems: "center", flexWrap: "wrap" }}>
            <span style={{
              fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2.5px",
              color: "var(--carbono)", textTransform: "uppercase",
              background: "rgba(10,10,10,.05)",
              border: "0.5px solid rgba(10,10,10,.10)",
              borderRadius: 999,
              padding: "6px 13px",
              display: "inline-flex", alignItems: "center", gap: 8,
            }}>
              <span style={{ width: 6, height: 6, borderRadius: "50%", background: "#C95B3D" }}></span>
              No incluye
            </span>
            <span style={{ fontFamily: "var(--serif)", fontStyle: "italic", fontSize: 22, color: "var(--carbono)" }}>
              Transporte de materiales al terreno.
            </span>
          </div>
          <a href="#contacto" style={{
            fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px",
            color: "var(--piedra)", textTransform: "uppercase",
            display: "inline-flex", alignItems: "center", gap: 8,
            borderBottom: "0.5px solid rgba(10,10,10,.20)",
            paddingBottom: 4,
          }}>
            Lo cotizamos según ubicación
            <span>→</span>
          </a>
        </div>
      </div>
    </section>
  );
}

/* ──────────────────────────────────────────────────────────
   SIP SYSTEM
   ────────────────────────────────────────────────────────── */
function SIP() {
  const [headerRef, headerInView] = useInView({ threshold: 0.2 });
  const [b1Ref, b1InView] = useInView({ threshold: 0.18 });
  const [b2Ref, b2InView] = useInView({ threshold: 0.18 });
  const [b3Ref, b3InView] = useInView({ threshold: 0.15 });

  const steelFeatures = [
    "Acero macizo",
    "Estructura sólida y robusta",
    "No se pudre ni se polilla",
    "Antisísmica",
    "Larga vida útil",
  ];

  const sipFeatures = [
    "Aísla y estructura a la vez",
    "Sin puentes térmicos",
    "Aislación térmica y acústica",
    "Liviano y resistente",
  ];

  const timeline = [
    ["01–05", "Platea de hormigón"],
    ["06–18", "Estructura de acero + paneles SIP"],
    ["19–35", "Instalaciones + techo"],
    ["36–45", "Terminaciones + entrega"],
  ];

  const beneficios = [
    {
      tag: "Tiempo",
      big: "45",
      bigSub: "días",
      title: "Lista para vivir antes de que una obra tradicional tenga paredes.",
      foot: "Una casa con ladrillo tarda entre 18 y 36 meses",
      accent: "#5BD46F",
    },
    {
      tag: "Confort",
      big: "5×",
      bigSub: "más aislante",
      title: "Como un termo: fresca en verano, cálida en invierno — solita.",
      foot: "Núcleo de espuma rígida de poliestireno de alta densidad",
      accent: "#E8B14F",
    },
    {
      tag: "Orden",
      big: "Cero",
      bigSub: "barro",
      title: "Sin mezcla, sin escombros, sin sorpresas en el terreno.",
      foot: "Construcción en seco — tu terreno queda limpio",
      accent: "#7DB8E8",
    },
  ];

  return (
    <section id="sip" style={{
      background: "linear-gradient(180deg, var(--hueso) 0%, #F2F0EA 100%)",
      padding: "140px 80px",
      position: "relative",
    }}>
      {/* soft glow */}
      <div style={{
        position: "absolute", top: 0, left: "50%", transform: "translateX(-50%)",
        width: 900, height: 300,
        background: "radial-gradient(ellipse at center, rgba(255,255,255,.55) 0%, rgba(255,255,255,0) 70%)",
        pointerEvents: "none",
      }} />

      <div style={{ maxWidth: 1400, margin: "0 auto", position: "relative" }}>

        {/* Section header */}
        <div ref={headerRef}>
          <div style={fadeUp(headerInView, 0)}>
            <SectionMarker num="03" label="Sistema constructivo" />
          </div>
          <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 80, alignItems: "end", marginBottom: 96 }}>
            <div style={fadeUp(headerInView, 160)}>
              <SectionTitle max={620}>Otro modo de construir,<br /><em style={{ fontStyle: "italic", color: "var(--grafito)" }}>otro modo de vivir.</em></SectionTitle>
            </div>
            <p style={{
              fontSize: 15, color: "#3D3D3A", lineHeight: 1.8, maxWidth: 480, justifySelf: "end", textWrap: "pretty",
              ...fadeUp(headerInView, 320),
            }}>
              Estructura de acero macizo y panel SIP. No es albañilería tradicional — es un sistema
              más rápido, más resistente y mucho mejor aislado que cualquier obra hecha con ladrillo.
            </p>
          </div>
        </div>

        {/* BLOCK 1 — ACERO MACIZO */}
        <div ref={b1Ref} style={{
          display: "grid", gridTemplateColumns: "1.15fr 1fr", gap: 24,
          marginBottom: 32, alignItems: "stretch",
        }}>
          {/* image */}
          <div style={{
            borderRadius: 24, overflow: "hidden",
            boxShadow: "0 16px 40px rgba(10,10,10,.10)",
            ...fadeUp(b1InView, 0, 30),
          }}>
            <img src="assets/construccion_steel_frame.jpg" alt="Estructura de acero macizo"
              style={{ width: "100%", height: "100%", objectFit: "cover", display: "block", minHeight: 460 }} />
          </div>
          {/* card */}
          <div style={{
            background: "rgba(255,255,255,.55)",
            backdropFilter: "blur(20px) saturate(140%)",
            WebkitBackdropFilter: "blur(20px) saturate(140%)",
            border: "0.5px solid rgba(10,10,10,.06)",
            borderRadius: 24,
            padding: "48px 44px",
            boxShadow: "0 12px 32px rgba(10,10,10,.06), inset 0 0 0 0.5px rgba(255,255,255,.7)",
            display: "flex", flexDirection: "column", gap: 24, justifyContent: "center",
            ...fadeUp(b1InView, 160, 22),
          }}>
            <span style={{
              alignSelf: "flex-start",
              fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2.5px",
              color: "var(--grafito)", textTransform: "uppercase",
              background: "rgba(255,255,255,.6)",
              border: "0.5px solid rgba(10,10,10,.06)",
              borderRadius: 999,
              padding: "5px 12px",
            }}>
              01 · Estructura
            </span>
            <div style={{ fontFamily: "var(--serif)", fontSize: "clamp(32px, 3.4vw, 44px)", lineHeight: 1.05, color: "var(--carbono)", letterSpacing: "-0.5px" }}>
              Acero macizo, <em style={{ fontStyle: "italic", color: "var(--grafito)" }}>no chapa.</em>
            </div>
            <p style={{ fontSize: 15, color: "#3D3D3A", lineHeight: 1.75, textWrap: "pretty" }}>
              La estructura de la casa es de <strong>acero macizo</strong>: perfiles sólidos y robustos,
              no chapa plegada ni perfilería liviana de steel frame. Es una estructura firme, calculada
              para durar — no se pudre, no se polilla y no se mueve con la humedad. Acero de verdad,
              que sostiene tu casa toda la vida.
            </p>
            <div style={{ display: "flex", flexWrap: "wrap", gap: 8, marginTop: 6 }}>
              {steelFeatures.map((f, i) => (
                <span key={i} style={{
                  fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "1.5px",
                  color: "var(--carbono)", textTransform: "uppercase",
                  background: "rgba(255,255,255,.7)",
                  border: "0.5px solid rgba(10,10,10,.08)",
                  borderRadius: 999,
                  padding: "8px 14px",
                }}>
                  {f}
                </span>
              ))}
            </div>
          </div>
        </div>

        {/* BLOCK 2 — CONSTRUCCIÓN RÁPIDA */}
        <div ref={b2Ref} style={{
          display: "grid", gridTemplateColumns: "1fr 1.15fr", gap: 24,
          marginBottom: 32, alignItems: "stretch",
        }}>
          {/* card with timeline */}
          <div style={{
            background: "rgba(10,10,10,.92)",
            color: "var(--hueso)",
            borderRadius: 24,
            padding: "48px 44px",
            boxShadow: "0 18px 44px rgba(10,10,10,.14), inset 0 0 0 0.5px rgba(248,247,244,.06)",
            display: "flex", flexDirection: "column", gap: 24, justifyContent: "center",
            ...fadeUp(b2InView, 0, 22),
          }}>
            <span style={{
              alignSelf: "flex-start",
              fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2.5px",
              color: "var(--hueso)", textTransform: "uppercase",
              background: "rgba(248,247,244,.1)",
              border: "0.5px solid rgba(248,247,244,.18)",
              borderRadius: 999,
              padding: "5px 12px",
            }}>
              02 · Velocidad
            </span>
            <div style={{ fontFamily: "var(--serif)", fontSize: "clamp(32px, 3.4vw, 44px)", lineHeight: 1.05, color: "var(--hueso)", letterSpacing: "-0.5px" }}>
              45 días, <em style={{ fontStyle: "italic", color: "rgba(248,247,244,.55)" }}>no años.</em>
            </div>
            <p style={{ fontSize: 15, color: "rgba(248,247,244,.78)", lineHeight: 1.75, textWrap: "pretty" }}>
              Una obra tradicional con ladrillo tarda entre 18 y 36 meses. El sistema modular se entrega
              completo en 45 días: sin tiempos muertos, sin escasez de mano de obra, sin parates por lluvia.
            </p>

            {/* timeline */}
            <div style={{ marginTop: 8, display: "flex", flexDirection: "column", gap: 0 }}>
              {timeline.map(([dias, label], i) => (
                <div key={i} style={{
                  display: "grid", gridTemplateColumns: "78px 1fr", gap: 18, alignItems: "center",
                  padding: "14px 0",
                  borderBottom: i < timeline.length - 1 ? "0.5px solid rgba(248,247,244,.10)" : "none",
                }}>
                  <span style={{ fontFamily: "var(--mono)", fontSize: 11, letterSpacing: "1.5px", color: "rgba(248,247,244,.5)" }}>
                    Día {dias}
                  </span>
                  <span style={{ fontFamily: "var(--serif)", fontSize: 18, color: "var(--hueso)" }}>
                    {label}
                  </span>
                </div>
              ))}
            </div>
          </div>
          {/* image (portrait) */}
          <div style={{
            borderRadius: 24, overflow: "hidden",
            boxShadow: "0 16px 40px rgba(10,10,10,.10)",
            ...fadeUp(b2InView, 160, 30),
          }}>
            <img src="assets/construccion_rapida.jpg" alt="Construcción rápida — montaje de paneles"
              style={{ width: "100%", height: "100%", objectFit: "cover", display: "block", minHeight: 520 }} />
          </div>
        </div>

        {/* BLOCK 3 — PANEL SIP + COMPARISON */}
        <div ref={b3Ref}>
          <div style={{
            display: "grid", gridTemplateColumns: "1fr 1.15fr", gap: 24,
            alignItems: "stretch",
          }}>
            {/* image */}
            <div style={{
              borderRadius: 24, overflow: "hidden",
              boxShadow: "0 16px 40px rgba(10,10,10,.10)",
              ...fadeUp(b3InView, 0, 30),
            }}>
              <img src="assets/construccion_panel_sip.jpg" alt="Panel SIP — núcleo de espuma rígida de poliestireno entre placas de OSB"
                style={{ width: "100%", height: "100%", objectFit: "cover", display: "block", minHeight: 500 }} />
            </div>
            {/* card */}
            <div style={{
              background: "rgba(255,255,255,.55)",
              backdropFilter: "blur(20px) saturate(140%)",
              WebkitBackdropFilter: "blur(20px) saturate(140%)",
              border: "0.5px solid rgba(10,10,10,.06)",
              borderRadius: 24,
              padding: "48px 44px",
              boxShadow: "0 12px 32px rgba(10,10,10,.06), inset 0 0 0 0.5px rgba(255,255,255,.7)",
              display: "flex", flexDirection: "column", gap: 24, justifyContent: "center",
              ...fadeUp(b3InView, 160, 22),
            }}>
              <span style={{
                alignSelf: "flex-start",
                fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2.5px",
                color: "var(--grafito)", textTransform: "uppercase",
                background: "rgba(255,255,255,.6)",
                border: "0.5px solid rgba(10,10,10,.06)",
                borderRadius: 999,
                padding: "5px 12px",
              }}>
                03 · Aislación
              </span>
              <div style={{ fontFamily: "var(--serif)", fontSize: "clamp(32px, 3.4vw, 44px)", lineHeight: 1.05, color: "var(--carbono)", letterSpacing: "-0.5px" }}>
                Una pieza que <em style={{ fontStyle: "italic", color: "var(--grafito)" }}>hace todo.</em>
              </div>
              <p style={{ fontSize: 15, color: "#3D3D3A", lineHeight: 1.75, textWrap: "pretty" }}>
                El <strong>panel SIP</strong> es un sándwich de dos placas de OSB con un núcleo de
                <strong> espuma rígida de poliestireno</strong> de alta densidad. Una sola pieza que
                aísla, cierra y estructura a la vez — mantiene la casa fresca en verano y cálida en
                invierno, con muchísimo menos consumo eléctrico.
              </p>
              <div style={{ display: "flex", flexWrap: "wrap", gap: 8, marginTop: 6 }}>
                {sipFeatures.map((f, i) => (
                  <span key={i} style={{
                    fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "1.5px",
                    color: "var(--carbono)", textTransform: "uppercase",
                    background: "rgba(255,255,255,.7)",
                    border: "0.5px solid rgba(10,10,10,.08)",
                    borderRadius: 999,
                    padding: "8px 14px",
                  }}>
                    {f}
                  </span>
                ))}
              </div>
            </div>
          </div>

          {/* What it means for you — 3 friendly benefit cards */}
          <div style={{ marginTop: 32, ...fadeUp(b3InView, 320, 22) }}>
            <div style={{ display: "flex", alignItems: "baseline", justifyContent: "space-between", flexWrap: "wrap", gap: 16, marginBottom: 22 }}>
              <div style={{ fontFamily: "var(--serif)", fontSize: 26, color: "var(--carbono)", lineHeight: 1.1 }}>
                Para vos, <em style={{ fontStyle: "italic", color: "var(--grafito)" }}>en simple.</em>
              </div>
              <div style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px", color: "var(--piedra)", textTransform: "uppercase" }}>
                Tres motivos prácticos
              </div>
            </div>

            <div style={{ display: "grid", gridTemplateColumns: "repeat(3, 1fr)", gap: 16 }}>
              {beneficios.map((b, i) => (
                <article key={i} style={{
                  background: "rgba(255,255,255,.62)",
                  backdropFilter: "blur(22px) saturate(140%)",
                  WebkitBackdropFilter: "blur(22px) saturate(140%)",
                  border: "0.5px solid rgba(10,10,10,.06)",
                  borderRadius: 22,
                  padding: "32px 28px",
                  boxShadow: "0 12px 32px rgba(10,10,10,.06), inset 0 0 0 0.5px rgba(255,255,255,.7)",
                  display: "flex", flexDirection: "column", gap: 18,
                  ...fadeUp(b3InView, 420 + i * 140, 18),
                }}>
                  {/* tag pill */}
                  <span style={{
                    alignSelf: "flex-start",
                    fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2.5px",
                    color: "var(--carbono)", textTransform: "uppercase",
                    background: "rgba(255,255,255,.7)",
                    border: "0.5px solid rgba(10,10,10,.08)",
                    borderRadius: 999,
                    padding: "5px 12px",
                    display: "inline-flex", alignItems: "center", gap: 8,
                  }}>
                    <span style={{ width: 6, height: 6, borderRadius: "50%", background: b.accent }}></span>
                    {b.tag}
                  </span>

                  {/* big stat */}
                  <div style={{ display: "flex", alignItems: "baseline", gap: 10, lineHeight: 1, marginTop: 4 }}>
                    <span style={{ fontFamily: "var(--serif)", fontSize: 72, color: "var(--carbono)", letterSpacing: "-2px", lineHeight: 0.9 }}>
                      {b.big}
                    </span>
                    <span style={{ fontFamily: "var(--mono)", fontSize: 11, letterSpacing: "1.5px", color: "var(--grafito)", textTransform: "uppercase" }}>
                      {b.bigSub}
                    </span>
                  </div>

                  {/* benefit headline */}
                  <p style={{
                    fontFamily: "var(--serif)", fontSize: 18, lineHeight: 1.3,
                    color: "var(--carbono)", textWrap: "pretty",
                  }}>
                    {b.title}
                  </p>

                  {/* comparison footer — supporting data */}
                  <div style={{
                    marginTop: "auto", paddingTop: 16,
                    borderTop: "0.5px solid rgba(10,10,10,.08)",
                    fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "1.5px",
                    color: "var(--piedra)", textTransform: "uppercase", lineHeight: 1.5,
                  }}>
                    {b.foot}
                  </div>
                </article>
              ))}
            </div>
          </div>
        </div>

      </div>
    </section>
  );
}

/* ──────────────────────────────────────────────────────────
   AMPLIACIONES
   ────────────────────────────────────────────────────────── */
function Ampliaciones() {
  const exts = [
    { id: "dorm",     label: "Dormitorio extra", dims: "3.36 × 2.14 m", m2: "7.19" },
    { id: "quincho",  label: "Quincho",          dims: "4.52 × 2.16 m", m2: "9.76" },
    { id: "deck",     label: "Deck",             dims: "3.36 × 2.20 m", m2: "7.39" },
    { id: "cochera",  label: "Cochera",          dims: "2.08 × 2.70 m", m2: "5.62" },
  ];

  const fotos = [
    { src: "assets/ampliacion1.jpg", label: "Ampliación con quincho", n: "01" },
    { src: "assets/ampliacion2.jpg", label: "Ampliación con deck",    n: "02" },
  ];

  const planos = [
    { src: "assets/plano_22m.png",         detail: "assets/plano_2d_22m.png",         label: "Plano base",     sub: "Futuremind 22 m²" },
    { src: "assets/plano_amp_1.png",       detail: "assets/plano_2d_dormitorio.png",  label: "Con ampliación", sub: "Módulo + dormitorio" },
    { src: "assets/plano_amp_quincho.png", detail: "assets/plano_2d_quincho.png",     label: "Con quincho",    sub: "Módulo + quincho + deck" },
  ];

  const [fotoIdx, setFotoIdx] = useState(0);
  const [openPlano, setOpenPlano] = useState(null);
  const [headerRef, headerInView] = useInView({ threshold: 0.2 });
  const [fotosRef,  fotosInView]  = useInView({ threshold: 0.15 });
  const [quoteRef,  quoteInView]  = useInView({ threshold: 0.4 });
  const [extsRef,   extsInView]   = useInView({ threshold: 0.2 });
  const [planosRef, planosInView] = useInView({ threshold: 0.15 });

  // ESC key + body scroll lock for the lightbox
  useEffect(() => {
    if (!openPlano) return;
    const onKey = (e) => { if (e.key === "Escape") setOpenPlano(null); };
    window.addEventListener("keydown", onKey);
    const prev = document.body.style.overflow;
    document.body.style.overflow = "hidden";
    return () => {
      window.removeEventListener("keydown", onKey);
      document.body.style.overflow = prev;
    };
  }, [openPlano]);

  return (
    <React.Fragment>
    <section id="ampliaciones" style={{
      padding: "140px 80px",
      background: "linear-gradient(180deg, #F2F0EA 0%, var(--hueso) 55%, var(--hueso) 100%)",
      position: "relative",
    }}>
      {/* soft atmospheric glow at top */}
      <div style={{
        position: "absolute", top: 0, left: "50%",
        transform: "translateX(-50%)",
        width: 900, height: 300,
        background: "radial-gradient(ellipse at center, rgba(255,255,255,.6) 0%, rgba(255,255,255,0) 70%)",
        pointerEvents: "none",
      }} />

      <div style={{ maxWidth: 1400, margin: "0 auto", position: "relative" }}>
        <div ref={headerRef}>
          <div style={fadeUp(headerInView, 0)}>
            <SectionMarker num="04" label="Ampliaciones · La casa que crece" />
          </div>
          <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 80, alignItems: "end", marginBottom: 72 }}>
            <div style={fadeUp(headerInView, 160)}>
              <SectionTitle max={620}>De 22 m²,<br /><em style={{ fontStyle: "italic", color: "var(--grafito)" }}>a más de 40.</em></SectionTitle>
            </div>
            <p style={{
              fontSize: 15, color: "#3D3D3A", lineHeight: 1.8, maxWidth: 480, justifySelf: "end", textWrap: "pretty",
              ...fadeUp(headerInView, 320),
            }}>
              La casa está diseñada para crecer con vos. Empezás con el módulo de 22 m² y agregás
              extensiones cuando lo necesites — mismo sistema, mismas terminaciones, mismo equipo.
            </p>
          </div>
        </div>

        {/* Carrusel — fotos de ampliaciones */}
        <div ref={fotosRef} style={fadeUp(fotosInView, 0, 30)}>
          <Carousel
            items={fotos}
            idx={fotoIdx}
            setIdx={setFotoIdx}
            aspect="16/10"
            fit="cover"
            bg="var(--carbono)"
            label="Ampliaciones · Fotos"
            renderCaption={(it) => (
              <><span style={{ opacity: 0.55 }}>N°{it.n}</span><span>{it.label}</span></>
            )}
          />
        </div>

        {/* Motivational pull-quote — rounded translucent dark */}
        <div ref={quoteRef} style={{
          background: "linear-gradient(135deg, rgba(46,58,71,.96) 0%, rgba(20,28,38,.96) 100%)",
          color: "var(--hueso)",
          borderRadius: 28,
          border: "0.5px solid rgba(248,247,244,.08)",
          padding: "52px 60px",
          marginTop: 24, marginBottom: 24,
          display: "grid", gridTemplateColumns: "auto 1fr", gap: 40, alignItems: "center",
          boxShadow: "0 24px 56px rgba(10,10,10,.18), inset 0 0 0 0.5px rgba(248,247,244,.06)",
          ...fadeUp(quoteInView, 0, 30),
        }}>
          <div style={{
            fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "3px",
            color: "rgba(248,247,244,.45)", textTransform: "uppercase", whiteSpace: "nowrap",
          }}>
            La idea
          </div>
          <div style={{ fontFamily: "var(--serif)", fontSize: "clamp(26px, 2.6vw, 38px)", lineHeight: 1.25, textWrap: "balance" }}>
            No necesitás tenerlo todo hoy.<br />
            <em style={{ fontStyle: "italic", color: "rgba(248,247,244,.55)" }}>Empezás con 22 m² y la casa crece cuando vos crecés.</em>
          </div>
        </div>

        {/* Ampliaciones disponibles — 4 glass pills */}
        <div ref={extsRef} style={{ marginTop: 72, display: "grid", gridTemplateColumns: "auto 1fr", gap: 56, alignItems: "start" }}>
          <div style={fadeUp(extsInView, 0)}>
            <div style={{
              fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "3px",
              color: "var(--piedra)", textTransform: "uppercase", marginBottom: 14,
            }}>Disponibles</div>
            <div style={{ fontFamily: "var(--serif)", fontSize: 32, lineHeight: 1.15, color: "var(--carbono)", maxWidth: 320 }}>
              Cuatro extensiones,<br /><em style={{ fontStyle: "italic", color: "var(--grafito)" }}>mismo sistema.</em>
            </div>
          </div>
          <div style={{ display: "grid", gridTemplateColumns: "repeat(4, 1fr)", gap: 16 }}>
            {exts.map((e, i) => (
              <div key={e.id} style={{
                background: "rgba(255,255,255,.5)",
                backdropFilter: "blur(20px) saturate(140%)",
                WebkitBackdropFilter: "blur(20px) saturate(140%)",
                border: "0.5px solid rgba(10,10,10,.06)",
                borderRadius: 22,
                padding: "26px 24px",
                boxShadow: "0 8px 24px rgba(10,10,10,.05), inset 0 0 0 0.5px rgba(255,255,255,.7)",
                display: "flex", flexDirection: "column", gap: 12,
                ...fadeUp(extsInView, 180 + i * 120, 18),
              }}>
                <span style={{
                  alignSelf: "flex-start",
                  fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2px", color: "var(--piedra)",
                  textTransform: "uppercase",
                }}>
                  0{i + 1} · Ampliación
                </span>
                <span style={{ fontFamily: "var(--serif)", fontSize: 22, color: "var(--carbono)", lineHeight: 1.1 }}>
                  {e.label}
                </span>
                <div style={{ display: "flex", alignItems: "baseline", gap: 8, marginTop: 4 }}>
                  <span style={{ fontFamily: "var(--serif)", fontSize: 32, color: "var(--carbono)", letterSpacing: "-1px", lineHeight: 1 }}>
                    +{e.m2}
                  </span>
                  <span style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "1.5px", color: "var(--grafito)", textTransform: "uppercase" }}>
                    m²
                  </span>
                </div>
                <span style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "1.5px", color: "var(--piedra)", textTransform: "uppercase" }}>
                  {e.dims}
                </span>
              </div>
            ))}
          </div>
        </div>

        {/* Planos — 3 vertical translucent plan cards */}
        <div ref={planosRef} style={{ marginTop: 96 }}>
          <div style={{
            display: "flex", alignItems: "baseline", justifyContent: "space-between",
            flexWrap: "wrap", gap: 16, marginBottom: 28,
            ...fadeUp(planosInView, 0),
          }}>
            <div style={{ fontFamily: "var(--serif)", fontSize: 28, color: "var(--carbono)", lineHeight: 1.1 }}>
              Los planos, <em style={{ fontStyle: "italic", color: "var(--grafito)" }}>en limpio.</em>
            </div>
            <div style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px", color: "var(--piedra)", textTransform: "uppercase" }}>
              Base · Ampliación · Quincho
            </div>
          </div>
          <div style={{ display: "grid", gridTemplateColumns: "repeat(3, 1fr)", gap: 20 }}>
            {planos.map((p, i) => (
              <div key={i} style={fadeUp(planosInView, i * 140, 22)}>
                <div onClick={() => setOpenPlano(p)} style={{
                  background: "rgba(255,255,255,.5)",
                  backdropFilter: "blur(20px) saturate(140%)",
                  WebkitBackdropFilter: "blur(20px) saturate(140%)",
                  border: "0.5px solid rgba(10,10,10,.06)",
                  borderRadius: 22,
                  overflow: "hidden",
                  boxShadow: "0 12px 32px rgba(10,10,10,.06), inset 0 0 0 0.5px rgba(255,255,255,.7)",
                  display: "flex", flexDirection: "column",
                  position: "relative", zIndex: 1,
                  transition: "transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s ease",
                  cursor: "zoom-in",
                }}
                onMouseEnter={(e)=>{
                  e.currentTarget.style.transform = "scale(1.04)";
                  e.currentTarget.style.zIndex = "5";
                  e.currentTarget.style.boxShadow = "0 22px 50px rgba(10,10,10,.14), inset 0 0 0 0.5px rgba(255,255,255,.8)";
                  const img = e.currentTarget.querySelector("img");
                  if (img) img.style.opacity = "1";
                }}
                onMouseLeave={(e)=>{
                  e.currentTarget.style.transform = "scale(1)";
                  e.currentTarget.style.zIndex = "1";
                  e.currentTarget.style.boxShadow = "0 12px 32px rgba(10,10,10,.06), inset 0 0 0 0.5px rgba(255,255,255,.7)";
                  const img = e.currentTarget.querySelector("img");
                  if (img) img.style.opacity = "0.9";
                }}>
                  <div style={{ position: "relative", aspectRatio: "941 / 1672", overflow: "hidden" }}>
                    <img src={p.src} alt={`Plano — ${p.label}`}
                      style={{
                        position: "absolute", inset: 0, width: "100%", height: "100%",
                        objectFit: "cover", objectPosition: "center",
                        opacity: 0.9, transition: "opacity .3s ease",
                      }} />
                  </div>
                  <div style={{ padding: "20px 24px", borderTop: "0.5px solid rgba(10,10,10,.07)" }}>
                    <div style={{ fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2.5px", color: "var(--piedra)", textTransform: "uppercase", marginBottom: 6 }}>
                      0{i + 1}
                    </div>
                    <div style={{ fontFamily: "var(--serif)", fontSize: 20, color: "var(--carbono)", marginBottom: 2 }}>
                      {p.label}
                    </div>
                    <div style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "1.5px", color: "var(--grafito)", textTransform: "uppercase" }}>
                      {p.sub}
                    </div>
                  </div>
                </div>
              </div>
            ))}
          </div>
        </div>
      </div>
    </section>

    {/* Lightbox — detailed 2D plan */}
    {openPlano && (
      <div onClick={() => setOpenPlano(null)} style={{
        position: "fixed", inset: 0, zIndex: 100,
        background: "rgba(10,10,10,.86)",
        backdropFilter: "blur(8px) saturate(140%)",
        WebkitBackdropFilter: "blur(8px) saturate(140%)",
        display: "flex", alignItems: "center", justifyContent: "center",
        padding: "60px 40px",
        animation: "fmFadeIn .25s ease forwards",
      }}>
        <style>{`@keyframes fmFadeIn { from { opacity: 0 } to { opacity: 1 } } @keyframes fmZoomIn { from { opacity: 0; transform: scale(.94) } to { opacity: 1; transform: scale(1) } }`}</style>

        {/* close button */}
        <button onClick={(e) => { e.stopPropagation(); setOpenPlano(null); }} aria-label="Cerrar" style={{
          position: "absolute", top: 24, right: 24,
          width: 44, height: 44, borderRadius: "50%",
          background: "rgba(248,247,244,.08)",
          border: "0.5px solid rgba(248,247,244,.2)",
          color: "var(--hueso)",
          display: "inline-flex", alignItems: "center", justifyContent: "center",
          cursor: "pointer", transition: "background .2s",
        }}
        onMouseEnter={(e)=>e.currentTarget.style.background="rgba(248,247,244,.18)"}
        onMouseLeave={(e)=>e.currentTarget.style.background="rgba(248,247,244,.08)"}>
          <svg viewBox="0 0 20 20" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round">
            <line x1="5" y1="5" x2="15" y2="15" />
            <line x1="15" y1="5" x2="5" y2="15" />
          </svg>
        </button>

        {/* image + caption */}
        <div onClick={(e) => e.stopPropagation()} style={{
          maxWidth: "min(880px, 92vw)", maxHeight: "92vh",
          display: "flex", flexDirection: "column", gap: 16, alignItems: "center",
          animation: "fmZoomIn .3s cubic-bezier(.2,.7,.2,1) forwards",
        }}>
          <img src={openPlano.detail} alt={`Plano detallado — ${openPlano.label}`}
            style={{
              maxWidth: "100%", maxHeight: "78vh", height: "auto",
              objectFit: "contain", borderRadius: 12,
              background: "var(--hueso)",
              boxShadow: "0 30px 80px rgba(0,0,0,.45)",
            }} />
          <div style={{ textAlign: "center", color: "var(--hueso)" }}>
            <div style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px", color: "rgba(248,247,244,.5)", textTransform: "uppercase", marginBottom: 6 }}>
              Plano 2D
            </div>
            <div style={{ fontFamily: "var(--serif)", fontSize: 22, color: "var(--hueso)", marginBottom: 4 }}>
              {openPlano.label}
            </div>
            <div style={{ fontFamily: "var(--mono)", fontSize: 11, letterSpacing: "1.5px", color: "rgba(248,247,244,.5)", textTransform: "uppercase" }}>
              {openPlano.sub}
            </div>
          </div>
        </div>
      </div>
    )}
    </React.Fragment>
  );
}

/* ──────────────────────────────────────────────────────────
   PRECIO + CTA
   ────────────────────────────────────────────────────────── */
function Precio() {
  const [headerRef, headerInView] = useInView({ threshold: 0.2 });
  const [mainRef,   mainInView]   = useInView({ threshold: 0.15 });
  const [ampRef,    ampInView]    = useInView({ threshold: 0.35 });
  const [ctaRef,    ctaInView]    = useInView({ threshold: 0.4 });

  const etapas = [
    ["Firma de contrato",          "10%", "Día 0"],
    ["Comienzo de obra · platea",  "20%", "Día 5"],
    ["Estructura y paneles",       "30%", "Día 18"],
    ["Terminaciones",              "20%", "Día 35"],
    ["Llave en mano",              "20%", "Día 45"],
  ];

  return (
    <section id="precio" style={{
      background: "linear-gradient(180deg, var(--hueso) 0%, #F2F0EA 100%)",
      padding: "140px 80px",
      position: "relative",
    }}>
      {/* soft glow */}
      <div style={{
        position: "absolute", top: 0, left: "50%", transform: "translateX(-50%)",
        width: 900, height: 300,
        background: "radial-gradient(ellipse at center, rgba(255,255,255,.6) 0%, rgba(255,255,255,0) 70%)",
        pointerEvents: "none",
      }} />

      <div style={{ maxWidth: 1400, margin: "0 auto", position: "relative" }}>
        {/* Header */}
        <div ref={headerRef}>
          <div style={fadeUp(headerInView, 0)}>
            <SectionMarker num="05" label="Precio · Lanzamiento 2026" />
          </div>
          <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 80, alignItems: "end", marginBottom: 64 }}>
            <div style={fadeUp(headerInView, 160)}>
              <SectionTitle max={620}>Un precio claro.<br /><em style={{ fontStyle: "italic", color: "var(--grafito)" }}>Un contrato firmado.</em></SectionTitle>
            </div>
            <p style={{
              fontSize: 15, color: "#3D3D3A", lineHeight: 1.8, maxWidth: 480, justifySelf: "end", textWrap: "pretty",
              ...fadeUp(headerInView, 320),
            }}>
              Plazos de pago que acompañan el avance de obra. Sin anticipo del 100%.
              Cada etapa se paga cuando se ve. Contrato formal con calidades, terminaciones y plazos
              por escrito.
            </p>
          </div>
        </div>

        {/* Main: price card + timeline */}
        <div ref={mainRef} style={{ display: "grid", gridTemplateColumns: "1.1fr 1fr", gap: 20 }}>
          {/* Big price — dark rounded card */}
          <div style={{
            background: "linear-gradient(160deg, var(--carbono) 0%, #15171A 100%)",
            color: "var(--hueso)",
            borderRadius: 28,
            padding: 56,
            boxShadow: "0 24px 56px rgba(10,10,10,.20), inset 0 0 0 0.5px rgba(248,247,244,.06)",
            display: "flex", flexDirection: "column", justifyContent: "space-between",
            ...fadeUp(mainInView, 0, 26),
          }}>
            <div>
              <div style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "3px", color: "rgba(248,247,244,.4)", textTransform: "uppercase", marginBottom: 20 }}>
                Futuremind 22 · Llave en mano
              </div>
              <div style={{ display: "flex", alignItems: "baseline", gap: 14, marginBottom: 12 }}>
                <span style={{ fontFamily: "var(--mono)", fontSize: 20, color: "var(--piedra)" }}>USD</span>
                <span style={{ fontFamily: "var(--serif)", fontSize: 132, lineHeight: 0.9, letterSpacing: "-4px" }}>17.000</span>
              </div>
              <div style={{
                display: "inline-flex", alignItems: "center", gap: 8,
                fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px", textTransform: "uppercase",
                color: "var(--hueso)",
                background: "rgba(248,247,244,.08)",
                border: "0.5px solid rgba(248,247,244,.16)",
                borderRadius: 999, padding: "7px 14px",
              }}>
                <span style={{ width: 6, height: 6, borderRadius: "50%", background: "#E8B14F" }}></span>
                Precio lanzamiento · Plazas limitadas
              </div>
            </div>

            <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 12, margin: "44px 0 36px" }}>
              <div style={{ background: "rgba(248,247,244,.05)", border: "0.5px solid rgba(248,247,244,.10)", borderRadius: 16, padding: 22 }}>
                <div style={{ fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2px", color: "var(--piedra)", textTransform: "uppercase", marginBottom: 10 }}>
                  Alquiler mensual ref.
                </div>
                <div style={{ fontFamily: "var(--serif)", fontSize: 28 }}>≈ USD 470</div>
                <div style={{ fontFamily: "var(--mono)", fontSize: 10, color: "var(--piedra)", marginTop: 6 }}>3 años = USD 16.920</div>
              </div>
              <div style={{ background: "rgba(46,58,71,.5)", border: "0.5px solid rgba(248,247,244,.12)", borderRadius: 16, padding: 22 }}>
                <div style={{ fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2px", color: "rgba(248,247,244,.55)", textTransform: "uppercase", marginBottom: 10 }}>
                  Tu casa propia
                </div>
                <div style={{ fontFamily: "var(--serif)", fontSize: 28, color: "var(--hueso)" }}>en 45 días</div>
                <div style={{ fontFamily: "var(--mono)", fontSize: 10, color: "rgba(248,247,244,.55)", marginTop: 6 }}>El mismo dinero. Otro resultado.</div>
              </div>
            </div>

            {/* CTA on price card — direct to WhatsApp */}
            <a href="https://wa.me/5493513042304?text=Hola!%20Quiero%20asegurar%20el%20precio%20de%20lanzamiento%20de%20la%20Futuremind%2022%20(USD%2017.000).%20%C2%BFMe%20pasan%20m%C3%A1s%20info%3F" target="_blank" rel="noopener" style={{
              display: "flex", justifyContent: "space-between", alignItems: "center",
              background: "var(--hueso)", color: "var(--carbono)",
              padding: "20px 28px", borderRadius: 14,
              fontFamily: "var(--mono)", fontSize: 11, letterSpacing: "2.5px", textTransform: "uppercase",
              transition: "transform .2s ease",
            }}
            onMouseEnter={(e)=>e.currentTarget.style.transform="translateY(-2px)"}
            onMouseLeave={(e)=>e.currentTarget.style.transform="translateY(0)"}>
              <span>Asegurá el precio de lanzamiento</span>
              <span>→</span>
            </a>
          </div>

          {/* Payment timeline — light glass rounded card */}
          <div style={{
            background: "rgba(255,255,255,.55)",
            backdropFilter: "blur(20px) saturate(140%)",
            WebkitBackdropFilter: "blur(20px) saturate(140%)",
            border: "0.5px solid rgba(10,10,10,.06)",
            borderRadius: 28,
            padding: 56,
            boxShadow: "0 12px 32px rgba(10,10,10,.06), inset 0 0 0 0.5px rgba(255,255,255,.7)",
            display: "flex", flexDirection: "column", justifyContent: "space-between",
            ...fadeUp(mainInView, 160, 26),
          }}>
            <div>
              <div style={{ fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "3px", color: "var(--piedra)", textTransform: "uppercase", marginBottom: 8 }}>
                Avance de obra
              </div>
              <div style={{ fontFamily: "var(--serif)", fontSize: 26, color: "var(--carbono)", lineHeight: 1.2, marginBottom: 28 }}>
                Pagás a medida que <em style={{ fontStyle: "italic", color: "var(--grafito)" }}>tu casa toma forma.</em>
              </div>
              {etapas.map(([stage, pct, day], i) => (
                <div key={i} style={{
                  display: "grid", gridTemplateColumns: "40px 1fr auto 70px", gap: 18,
                  padding: "16px 0", alignItems: "center",
                  borderBottom: i < etapas.length - 1 ? "0.5px solid rgba(10,10,10,.07)" : "none",
                }}>
                  <span style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "1.5px", color: "var(--piedra)" }}>
                    0{i + 1}
                  </span>
                  <span style={{ fontSize: 14, color: "var(--carbono)" }}>{stage}</span>
                  <span style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "1.5px", color: "var(--grafito)" }}>
                    {day}
                  </span>
                  <span style={{ fontFamily: "var(--serif)", fontSize: 22, color: "var(--carbono)", textAlign: "right" }}>
                    {pct}
                  </span>
                </div>
              ))}
            </div>
            <div style={{
              marginTop: 28, paddingTop: 22, borderTop: "0.5px solid rgba(10,10,10,.08)",
              fontFamily: "var(--serif)", fontStyle: "italic", fontSize: 17, color: "var(--grafito)", lineHeight: 1.4,
            }}>
              Nunca pagás algo que todavía no podés ver.
            </div>
          </div>
        </div>

        {/* Custom projects banner — for leads who want their own / bigger design */}
        <div ref={ampRef} style={{
          marginTop: 20,
          background: "rgba(255,255,255,.55)",
          backdropFilter: "blur(20px) saturate(140%)",
          WebkitBackdropFilter: "blur(20px) saturate(140%)",
          border: "0.5px solid rgba(10,10,10,.06)",
          borderRadius: 24,
          padding: "40px 48px",
          display: "grid", gridTemplateColumns: "1fr auto", gap: 48, alignItems: "center",
          boxShadow: "0 12px 32px rgba(10,10,10,.06), inset 0 0 0 0.5px rgba(255,255,255,.7)",
          ...fadeUp(ampInView, 0, 22),
        }}>
          <div>
            <div style={{
              display: "inline-flex", alignItems: "center", gap: 8,
              fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2.5px", textTransform: "uppercase",
              color: "var(--grafito)",
              background: "rgba(255,255,255,.6)", border: "0.5px solid rgba(10,10,10,.06)",
              borderRadius: 999, padding: "5px 12px", marginBottom: 16,
            }}>
              <span style={{ width: 6, height: 6, borderRadius: "50%", background: "#C95B3D" }}></span>
              Proyectos a medida
            </div>
            <div style={{ fontFamily: "var(--serif)", fontSize: "clamp(26px, 2.6vw, 36px)", lineHeight: 1.2, color: "var(--carbono)", marginBottom: 12 }}>
              ¿Ya tenés <em style={{ fontStyle: "italic", color: "var(--grafito)" }}>tu propio plano?</em>
            </div>
            <p style={{ fontSize: 15, color: "#3D3D3A", lineHeight: 1.7, maxWidth: 620, textWrap: "pretty" }}>
              El modelo de lanzamiento no es la única opción. Si ya tenés un plano hecho, o querés
              una casa más grande y completamente a tu medida, también construimos proyectos
              personalizados. Traés tu diseño — o lo desarrollamos juntos — y lo levantamos con el
              mismo sistema de acero macizo y panel SIP.
            </p>
          </div>
          <a href="https://wa.me/5493513042304?text=Hola!%20Tengo%20un%20proyecto%20propio%20(o%20quiero%20una%20casa%20a%20medida%20m%C3%A1s%20grande%20que%20el%20modelo%20de%20lanzamiento).%20%C2%BFC%C3%B3mo%20seguimos%3F" target="_blank" rel="noopener" style={{
            display: "inline-flex", alignItems: "center", gap: 12, whiteSpace: "nowrap",
            background: "var(--grafito)", color: "var(--hueso)",
            padding: "18px 28px", borderRadius: 14,
            fontFamily: "var(--mono)", fontSize: 11, letterSpacing: "2.5px", textTransform: "uppercase",
            transition: "transform .2s ease",
          }}
          onMouseEnter={(e)=>e.currentTarget.style.transform="translateY(-2px)"}
          onMouseLeave={(e)=>e.currentTarget.style.transform="translateY(0)"}>
            <span>Enviar mi proyecto</span>
            <span>→</span>
          </a>
        </div>

        {/* Closing motivational CTA */}
        <div ref={ctaRef} style={{
          marginTop: 20,
          background: "linear-gradient(135deg, rgba(46,58,71,.97) 0%, rgba(10,10,10,.97) 100%)",
          color: "var(--hueso)",
          borderRadius: 28,
          padding: "72px 64px",
          textAlign: "center",
          boxShadow: "0 24px 56px rgba(10,10,10,.20), inset 0 0 0 0.5px rgba(248,247,244,.06)",
          ...fadeUp(ctaInView, 0, 26),
        }}>
          <div style={{
            fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "3px",
            color: "rgba(248,247,244,.45)", textTransform: "uppercase", marginBottom: 24,
          }}>
            El momento es ahora
          </div>
          <div style={{
            fontFamily: "var(--serif)", fontSize: "clamp(32px, 4vw, 56px)", lineHeight: 1.1,
            color: "var(--hueso)", marginBottom: 18, textWrap: "balance",
          }}>
            Dejá de pagar lo que nunca va a ser tuyo.<br />
            <em style={{ fontStyle: "italic", color: "rgba(248,247,244,.55)" }}>Empezá a construir lo que sí.</em>
          </div>
          <p style={{
            fontSize: 16, color: "rgba(248,247,244,.65)", lineHeight: 1.7,
            maxWidth: 560, margin: "0 auto", textWrap: "pretty",
          }}>
            Lo que hoy pagás de alquiler, en pocos años desaparece.
            Acá esa misma plata queda en una casa que es tuya.
          </p>
        </div>
      </div>
    </section>
  );
}

/* ──────────────────────────────────────────────────────────
   CONTACTO · CTA FINAL + form
   ────────────────────────────────────────────────────────── */
function Contacto() {
  const [headerRef, headerInView] = useInView({ threshold: 0.25 });
  const [cardsRef,  cardsInView]  = useInView({ threshold: 0.15 });
  const [infoRef,   infoInView]   = useInView({ threshold: 0.3 });

  const WA = "5493513042304";
  const waLink = (msg) => `https://wa.me/${WA}?text=${encodeURIComponent(msg)}`;

  const intereses = [
    {
      label: "Primera vivienda",
      desc: "Quiero que la Futuremind 22 sea mi primer hogar propio.",
      msg: "Hola! Me interesa la Futuremind 22 como mi primera vivienda. ¿Me pasan más info?",
      accent: "#5BD46F",
    },
    {
      label: "Inversión / Airbnb",
      desc: "La pienso como inversión o para alquiler temporario.",
      msg: "Hola! Estoy pensando en una Futuremind como inversión o para alquiler temporario. ¿Me pasan más info?",
      accent: "#E8B14F",
    },
    {
      label: "Ampliar mi casa",
      desc: "Quiero sumar un módulo a la casa que ya tengo.",
      msg: "Hola! Quiero ampliar mi casa actual con el sistema Futuremind. ¿Cómo seguimos?",
      accent: "#7DB8E8",
    },
    {
      label: "Proyecto a medida",
      desc: "Tengo un plano propio o quiero algo más grande.",
      msg: "Hola! Tengo un proyecto propio o quiero una casa a medida más grande que el modelo de lanzamiento. ¿Cómo seguimos?",
      accent: "#C95B3D",
    },
  ];

  const contacto = [
    { k: "WhatsApp", v: "+54 9 3513 04-2304", sub: "Lunes a sábado · 9 a 19 hs", href: waLink("Hola! Quiero más información sobre las casas Futuremind.") },
  ];

  const social = [
    { k: "Instagram", href: "https://www.instagram.com/futuremind.ar/" },
    { k: "Facebook",  href: "https://www.facebook.com/Futuremind.ar" },
  ];

  return (
    <section id="contacto" style={{ background: "var(--carbono)", color: "var(--hueso)", padding: "140px 80px", position: "relative", overflow: "hidden" }}>
      <div style={{
        position: "absolute", inset: 0,
        backgroundImage: "linear-gradient(rgba(248,247,244,.025) 1px, transparent 1px), linear-gradient(90deg, rgba(248,247,244,.025) 1px, transparent 1px)",
        backgroundSize: "60px 60px",
        maskImage: "radial-gradient(ellipse at 50% 30%, black 20%, transparent 75%)",
        WebkitMaskImage: "radial-gradient(ellipse at 50% 30%, black 20%, transparent 75%)",
      }} />
      <div style={{ position: "relative", maxWidth: 1400, margin: "0 auto" }}>
        <div style={fadeUp(headerInView, 0)}>
          <SectionMarker num="06" label="Hablemos" light />
        </div>

        {/* Header */}
        <div ref={headerRef} style={{ marginBottom: 64 }}>
          <h2 style={{
            fontFamily: "var(--serif)", fontWeight: 400,
            fontSize: "clamp(48px, 6.5vw, 88px)", lineHeight: 1.02, letterSpacing: "-2px",
            color: "var(--hueso)", marginBottom: 28, maxWidth: 900,
            ...fadeUp(headerInView, 120),
          }}>
            Tu próxima casa<br />
            <em style={{ fontStyle: "italic", color: "var(--piedra)" }}>empieza con un mensaje.</em>
          </h2>
          <p style={{
            fontSize: 16, color: "rgba(248,247,244,.65)", lineHeight: 1.8, maxWidth: 560, textWrap: "pretty",
            ...fadeUp(headerInView, 280),
          }}>
            Contanos qué tenés en mente y te respondemos enseguida por WhatsApp.
            Tocá la opción que más se acerque a lo que buscás.
          </p>
        </div>

        {/* Interest cards — each opens WhatsApp with a tailored message */}
        <div ref={cardsRef} style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 20 }}>
          {intereses.map((it, i) => (
            <a key={i} href={waLink(it.msg)} target="_blank" rel="noopener" style={{
              background: "rgba(248,247,244,.04)",
              backdropFilter: "blur(20px) saturate(140%)",
              WebkitBackdropFilter: "blur(20px) saturate(140%)",
              border: "0.5px solid rgba(248,247,244,.12)",
              borderRadius: 24,
              padding: "36px 36px",
              boxShadow: "0 18px 44px rgba(10,10,10,.25), inset 0 0 0 0.5px rgba(248,247,244,.06)",
              display: "flex", flexDirection: "column", gap: 14,
              transition: "transform .22s ease, border-color .22s ease",
              ...fadeUp(cardsInView, i * 120, 22),
            }}
            onMouseEnter={(e)=>{ e.currentTarget.style.transform="translateY(-3px)"; e.currentTarget.style.borderColor="rgba(248,247,244,.28)"; }}
            onMouseLeave={(e)=>{ e.currentTarget.style.transform="translateY(0)"; e.currentTarget.style.borderColor="rgba(248,247,244,.12)"; }}>
              <span style={{
                alignSelf: "flex-start", display: "inline-flex", alignItems: "center", gap: 8,
                fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2.5px",
                color: "rgba(248,247,244,.7)", textTransform: "uppercase",
                background: "rgba(248,247,244,.08)",
                border: "0.5px solid rgba(248,247,244,.16)",
                borderRadius: 999, padding: "5px 12px",
              }}>
                <span style={{ width: 6, height: 6, borderRadius: "50%", background: it.accent }}></span>
                0{i + 1}
              </span>
              <div style={{ fontFamily: "var(--serif)", fontSize: "clamp(26px, 2.4vw, 34px)", lineHeight: 1.1, color: "var(--hueso)" }}>
                {it.label}
              </div>
              <p style={{ fontSize: 14, color: "rgba(248,247,244,.6)", lineHeight: 1.6, textWrap: "pretty" }}>
                {it.desc}
              </p>
              <div style={{
                marginTop: 10, paddingTop: 18, borderTop: "0.5px solid rgba(248,247,244,.1)",
                display: "flex", justifyContent: "space-between", alignItems: "center",
                fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px",
                color: "var(--hueso)", textTransform: "uppercase",
              }}>
                <span>Escribir por WhatsApp</span>
                <span>→</span>
              </div>
            </a>
          ))}
        </div>

        {/* Contact info + social strip */}
        <div ref={infoRef} style={{
          marginTop: 20,
          background: "rgba(248,247,244,.04)",
          backdropFilter: "blur(20px) saturate(140%)",
          WebkitBackdropFilter: "blur(20px) saturate(140%)",
          border: "0.5px solid rgba(248,247,244,.12)",
          borderRadius: 24,
          padding: "36px 40px",
          display: "grid", gridTemplateColumns: "1fr auto", gap: 32, alignItems: "center",
          boxShadow: "0 18px 44px rgba(10,10,10,.25), inset 0 0 0 0.5px rgba(248,247,244,.06)",
          ...fadeUp(infoInView, 0, 22),
        }}>
          {contacto.map((c, i) => (
            <a key={i} href={c.href} target={c.href.startsWith("http") ? "_blank" : undefined} rel="noopener" style={{
              display: "flex", flexDirection: "column", gap: 4,
              borderLeft: i === 0 ? "none" : "0.5px solid rgba(248,247,244,.1)",
              paddingLeft: i === 0 ? 0 : 32,
            }}>
              <span style={{ fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2.5px", color: "var(--piedra)", textTransform: "uppercase" }}>
                {c.k}
              </span>
              <span style={{ fontSize: 15, color: "var(--hueso)" }}>{c.v}</span>
              <span style={{ fontFamily: "var(--mono)", fontSize: 10, color: "var(--piedra)" }}>{c.sub}</span>
            </a>
          ))}
          {/* social */}
          <div style={{ display: "flex", gap: 8, borderLeft: "0.5px solid rgba(248,247,244,.1)", paddingLeft: 32 }}>
            {social.map((s, i) => (
              <a key={i} href={s.href} target="_blank" rel="noopener" style={{
                fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "1.5px",
                color: "var(--hueso)", textTransform: "uppercase",
                background: "rgba(248,247,244,.07)",
                border: "0.5px solid rgba(248,247,244,.16)",
                borderRadius: 999, padding: "9px 14px",
                display: "inline-flex", alignItems: "center", gap: 6,
                transition: "background .2s ease",
              }}
              onMouseEnter={(e)=>e.currentTarget.style.background="rgba(248,247,244,.14)"}
              onMouseLeave={(e)=>e.currentTarget.style.background="rgba(248,247,244,.07)"}>
                {s.k}<span style={{ opacity: 0.5 }}>↗</span>
              </a>
            ))}
          </div>
        </div>
      </div>
    </section>
  );
}

/* ──────────────────────────────────────────────────────────
   FOOTER
   ────────────────────────────────────────────────────────── */
function Footer() {
  return (
    <footer style={{ background: "var(--carbono)", color: "var(--hueso)", padding: "60px 80px 32px", borderTop: "0.5px solid rgba(248,247,244,.08)" }}>
      <div style={{ maxWidth: 1400, margin: "0 auto", display: "grid", gridTemplateColumns: "2fr 1fr 1fr 1fr", gap: 40, marginBottom: 56 }}>
        <div>
          <Wordmark light />
          <p style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "1.5px", color: "var(--piedra)", marginTop: 24, lineHeight: 1.8, maxWidth: 320 }}>
            Viviendas modulares de construcción en seco.<br />
            Más de 20 años en la industria de la construcción.
          </p>
        </div>
        {[
          ["Productos", ["Futuremind 22", "Ampliaciones", "Próximos modelos"]],
          ["Empresa",   ["Sobre nosotros", "Equipo", "Showroom · Córdoba"]],
          ["Seguinos",  ["Instagram", "Facebook", "WhatsApp"]],
        ].map(([title, items], i) => (
          <div key={i}>
            <div style={{ fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "3px", color: "var(--grafito)", textTransform: "uppercase", marginBottom: 18 }}>
              {title}
            </div>
            <ul style={{ listStyle: "none", display: "flex", flexDirection: "column", gap: 10 }}>
              {items.map(it => (
                <li key={it}>
                  <a href="#" style={{ fontSize: 13, color: "rgba(248,247,244,.65)" }}
                     onMouseEnter={(e)=>e.target.style.color="var(--hueso)"}
                     onMouseLeave={(e)=>e.target.style.color="rgba(248,247,244,.65)"}>
                    {it}
                  </a>
                </li>
              ))}
            </ul>
          </div>
        ))}
      </div>

      <div style={{ borderTop: "0.5px solid rgba(248,247,244,.08)", paddingTop: 24, display: "flex", justifyContent: "space-between", alignItems: "center", maxWidth: 1400, margin: "0 auto" }}>
        <div style={{ fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2px", color: "var(--piedra)", textTransform: "uppercase" }}>
          futuremind.com.ar · Córdoba, Argentina · 2026
        </div>
        <div style={{ fontFamily: "var(--mono)", fontSize: 9, letterSpacing: "2px", color: "var(--piedra)", textTransform: "uppercase" }}>
          © Todos los derechos reservados
        </div>
      </div>
    </footer>
  );
}

/* ──────────────────────────────────────────────────────────
   FLOATING WHATSAPP
   ────────────────────────────────────────────────────────── */
function FloatingCTA() {
  return (
    <a href="https://wa.me/5493513042304" target="_blank" rel="noopener" style={{
      position: "fixed", bottom: 24, right: 24, zIndex: 30,
      background: "rgba(10,10,10,.92)",
      backdropFilter: "blur(14px) saturate(140%)",
      WebkitBackdropFilter: "blur(14px) saturate(140%)",
      color: "var(--hueso)",
      padding: "12px 20px 12px 13px",
      borderRadius: 999,
      display: "flex", alignItems: "center", gap: 11,
      border: "0.5px solid rgba(248,247,244,.16)",
      boxShadow: "0 14px 44px rgba(0,0,0,.42), inset 0 0 0 0.5px rgba(248,247,244,.05)",
      transition: "transform .22s ease",
    }}
    onMouseEnter={(e)=>e.currentTarget.style.transform="translateY(-2px)"}
    onMouseLeave={(e)=>e.currentTarget.style.transform="translateY(0)"}>
      {/* custom geometric chat icon — matches the modular block identity */}
      <span style={{
        width: 30, height: 30, borderRadius: "50%",
        background: "rgba(248,247,244,.1)",
        border: "0.5px solid rgba(248,247,244,.18)",
        display: "inline-flex", alignItems: "center", justifyContent: "center",
        flexShrink: 0, position: "relative",
      }}>
        <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="var(--hueso)" strokeWidth="1.5">
          <rect x="3.5" y="4.5" width="17" height="12.5" />
          <path d="M8 17 L8 21 L13.2 17" strokeLinejoin="round" />
          <line x1="7.5" y1="9" x2="16.5" y2="9" />
          <line x1="7.5" y1="12.4" x2="13" y2="12.4" />
        </svg>
        {/* subtle online dot */}
        <span style={{
          position: "absolute", top: 1, right: 1,
          width: 7, height: 7, borderRadius: "50%",
          background: "#5BD46F",
          border: "1.5px solid rgba(10,10,10,.92)",
        }}></span>
      </span>
      <span style={{ display: "flex", flexDirection: "column", gap: 1, lineHeight: 1 }}>
        <span style={{ fontFamily: "var(--mono)", fontSize: 10, letterSpacing: "2.5px", textTransform: "uppercase" }}>
          Escribinos
        </span>
        <span style={{ fontFamily: "var(--mono)", fontSize: 8, letterSpacing: "1.5px", color: "rgba(248,247,244,.45)", textTransform: "uppercase" }}>
          Te respondemos ya
        </span>
      </span>
    </a>
  );
}

/* ──────────────────────────────────────────────────────────
   TWEAKS — micro variations
   ────────────────────────────────────────────────────────── */
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "accent": "#2E3A47",
  "background": "hueso",
  "headlineStyle": "serif-italic",
  "showFloatingCTA": true
}/*EDITMODE-END*/;

function TweaksUI({ tweaks, setTweak }) {
  return (
    <TweaksPanel title="Tweaks">
      <TweakSection title="Color de acento">
        <window.TweakColor
          value={tweaks.accent}
          onChange={(v) => setTweak("accent", v)}
          options={["#2E3A47", "#0A0A0A", "#888780", "#5C4738"]} />
      </TweakSection>
      <TweakSection title="Tono de fondo claro">
        <TweakRadio
          value={tweaks.background}
          onChange={(v) => setTweak("background", v)}
          options={[
            { value: "hueso", label: "Hueso" },
            { value: "humo",  label: "Humo" },
          ]} />
      </TweakSection>
      <TweakSection title="Estilo del titular">
        <TweakRadio
          value={tweaks.headlineStyle}
          onChange={(v) => setTweak("headlineStyle", v)}
          options={[
            { value: "serif-italic", label: "Serif italic" },
            { value: "serif-roman",  label: "Serif roman" },
          ]} />
      </TweakSection>
      <TweakSection title="Floating WhatsApp">
        <window.TweakToggle
          value={tweaks.showFloatingCTA}
          onChange={(v) => setTweak("showFloatingCTA", v)} />
      </TweakSection>
    </TweaksPanel>
  );
}

/* ──────────────────────────────────────────────────────────
   APP
   ────────────────────────────────────────────────────────── */
function App() {
  const [scrolled, setScrolled] = useState(false);
  const [tweaks, setTweak] = useTweaks(TWEAK_DEFAULTS);

  useEffect(() => {
    const onScroll = () => setScrolled(window.scrollY > 60);
    window.addEventListener("scroll", onScroll);
    return () => window.removeEventListener("scroll", onScroll);
  }, []);

  // apply tweaks live
  useEffect(() => {
    document.documentElement.style.setProperty("--grafito", tweaks.accent);
    if (tweaks.background === "humo") {
      document.documentElement.style.setProperty("--hueso", "#EDECEA");
    } else {
      document.documentElement.style.setProperty("--hueso", "#F8F7F4");
    }
    document.documentElement.style.setProperty("--headline-style", tweaks.headlineStyle === "serif-italic" ? "italic" : "normal");
  }, [tweaks]);

  return (
    <div data-screen-label="Landing · Futuremind 22">
      <Nav scrolled={scrolled} />
      <Hero />
      <Modelo />
      <Incluye />
      <SIP />
      <Ampliaciones />
      <Precio />
      <Contacto />
      <Footer />
      {tweaks.showFloatingCTA && <FloatingCTA />}
      <TweaksUI tweaks={tweaks} setTweak={setTweak} />
    </div>
  );
}

ReactDOM.createRoot(document.getElementById("root")).render(<App />);
