// SimpleTEC sections — dark tech landing
const { useState, useEffect, useRef, useMemo } = React;

// ─── Utilities ─────────────────────────────────────────────
const cls = (...xs) => xs.filter(Boolean).join(" ");

function useInView(opts = { threshold: 0.15 }) {
  const ref = useRef(null);
  const [inView, setInView] = useState(false);
  useEffect(() => {
    if (!ref.current) return;
    const io = new IntersectionObserver(([e]) => {
      if (e.isIntersecting) {
        setInView(true);
        io.disconnect();
      }
    }, opts);
    io.observe(ref.current);
    return () => io.disconnect();
  }, []);
  return [ref, inView];
}

function Reveal({ children, delay = 0, as: As = "div", className = "", ...rest }) {
  const [ref, inView] = useInView();
  return (
    <As
      ref={ref}
      className={cls("reveal", inView && "reveal-in", className)}
      style={{ transitionDelay: `${delay}ms` }}
      {...rest}
    >
      {children}
    </As>
  );
}

// ─── Shared primitives ────────────────────────────────────
function Kicker({ children }) {
  return <div className="kicker">{children}</div>;
}

function Pill({ children, dot }) {
  return (
    <span className="pill">
      {dot && <span className="pill-dot" />}
      {children}
    </span>
  );
}

function Button({ children, variant = "primary", href, onClick, icon, ...rest }) {
  const Tag = href ? "a" : "button";
  return (
    <Tag className={cls("btn", `btn-${variant}`)} href={href} onClick={onClick} {...rest}>
      {icon && <span className="btn-icon">{icon}</span>}
      <span>{children}</span>
    </Tag>
  );
}

const WA_ICON = (
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
    <path
      d="M12.04 2C6.58 2 2.13 6.45 2.13 11.91c0 1.73.45 3.41 1.32 4.9L2 22l5.33-1.4a9.9 9.9 0 0 0 4.71 1.2h.01c5.46 0 9.91-4.45 9.91-9.91s-4.46-9.89-9.92-9.89zm0 18.05c-1.5 0-2.97-.41-4.24-1.18l-.3-.18-3.16.83.84-3.08-.2-.32a8.2 8.2 0 0 1-1.26-4.36c0-4.54 3.7-8.23 8.24-8.23a8.21 8.21 0 0 1 8.23 8.23c.01 4.54-3.69 8.29-8.15 8.29zm4.52-6.16c-.25-.13-1.47-.72-1.69-.8-.23-.08-.39-.13-.56.13-.17.25-.64.8-.78.97-.14.17-.29.19-.54.06-.25-.13-1.04-.38-1.98-1.22-.73-.65-1.22-1.46-1.37-1.71-.14-.25-.02-.39.11-.51.11-.11.25-.29.37-.43.12-.14.17-.25.25-.41.08-.17.04-.31-.02-.43-.06-.13-.56-1.35-.77-1.85-.2-.49-.41-.42-.56-.43h-.48c-.16 0-.43.06-.65.31-.22.25-.85.83-.85 2.03s.88 2.36 1 2.52c.13.17 1.72 2.63 4.17 3.69.58.25 1.04.4 1.39.52.58.19 1.12.16 1.54.1.47-.07 1.47-.6 1.68-1.18.21-.58.21-1.08.14-1.18-.06-.1-.23-.17-.48-.3z"
      fill="currentColor"
    />
  </svg>
);

const ARROW_ICON = (
  <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
    <path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
  </svg>
);

const SUN_ICON = (
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round">
    <circle cx="12" cy="12" r="4" />
    <path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41" />
  </svg>
);

const MOON_ICON = (
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round">
    <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" />
  </svg>
);

function BrandLogo() {
  return (
    <span className="logo-imgs">
      <img src="logos/bracket-dark.svg" alt="SimpleTEC" className="logo-img logo-img-dark" />
      <img src="logos/bracket-light.svg" alt="SimpleTEC" className="logo-img logo-img-light" />
    </span>
  );
}

function ThemeToggle({ theme, setTheme }) {
  const next = theme === "dark" ? "light" : "dark";
  return (
    <button
      type="button"
      className="theme-toggle"
      aria-label={`Cambiar a modo ${next}`}
      title={`Modo ${next}`}
      onClick={() => setTheme(next)}
    >
      {theme === "dark" ? SUN_ICON : MOON_ICON}
    </button>
  );
}

// ─── Nav ──────────────────────────────────────────────────
function Nav({ theme, setTheme }) {
  const [scrolled, setScrolled] = useState(false);
  useEffect(() => {
    const onScroll = () => setScrolled(window.scrollY > 8);
    window.addEventListener("scroll", onScroll);
    return () => window.removeEventListener("scroll", onScroll);
  }, []);
  return (
    <header className={cls("nav", scrolled && "nav-scrolled")}>
      <div className="nav-inner">
        <a className="logo" href="#top">
          <BrandLogo />
        </a>
        <nav className="nav-links">
          <a href="#servicios">Servicios</a>
          <a href="#como-funciona">Cómo funciona</a>
          <a href="#zona">Zona</a>
          <a href="#garantia">Garantía</a>
          <a href="#faq">FAQ</a>
        </nav>
        <div className="nav-cta">
          <a className="nav-wa" href="#contacto">
            <span className="pill-dot" /> Respondemos ahora
          </a>
          <ThemeToggle theme={theme} setTheme={setTheme} />
          <Button variant="primary" href="#contacto" icon={WA_ICON}>
            WhatsApp
          </Button>
        </div>
      </div>
    </header>
  );
}

// ─── Hero ─────────────────────────────────────────────────
function DiagnosticTerminal() {
  const lines = useMemo(
    () => [
      { t: 0, k: "log", v: "simpletec diagnose --device notebook --serial 4F·A29" },
      { t: 600, k: "ok", v: "link establecido · whatsapp +54 9 11 7064-7160" },
      { t: 1200, k: "scan", v: "scan · disco · memoria · temperatura · batería" },
      { t: 2100, k: "warn", v: "ssd 94% salud · batería 2 ciclos sobre umbral" },
      { t: 2800, k: "fix", v: "plan · clonado ssd + limpieza térmica + pasta" },
      { t: 3600, k: "eta", v: "presupuesto 24 hs · trabajo 48–72 hs · garantía 90 días" },
      { t: 4400, k: "done", v: "listo para aprobar · no tocamos nada sin tu OK" },
    ],
    []
  );
  const [visible, setVisible] = useState(0);
  const [tick, setTick] = useState(0);
  useEffect(() => {
    const timers = lines.map((l, i) =>
      setTimeout(() => setVisible((v) => Math.max(v, i + 1)), l.t + 200)
    );
    const reset = setTimeout(() => {
      setVisible(0);
      setTick((t) => t + 1);
    }, 7800);
    return () => {
      timers.forEach(clearTimeout);
      clearTimeout(reset);
    };
  }, [tick]);

  return (
    <div className="terminal">
      <div className="terminal-bar">
        <div className="terminal-dots">
          <span /><span /><span />
        </div>
        <div className="terminal-title">diagnóstico · sesión #2149</div>
        <div className="terminal-meta">
          <span className="live-dot" /> en vivo
        </div>
      </div>
      <div className="terminal-body">
        {lines.slice(0, visible).map((l, i) => (
          <div key={`${tick}-${i}`} className={cls("term-line", `term-${l.k}`)}>
            <span className="term-prefix">{l.k === "log" ? "›" : l.k.toUpperCase()}</span>
            <span className="term-text">{l.v}</span>
          </div>
        ))}
        <div className="term-cursor">
          <span className="term-prefix">›</span>
          <span className="caret" />
        </div>
      </div>
      <div className="terminal-foot">
        <div className="foot-item">
          <span className="foot-label">Retiro</span>
          <span className="foot-value">Escobar · a domicilio</span>
        </div>
        <div className="foot-sep" />
        <div className="foot-item">
          <span className="foot-label">Presupuesto</span>
          <span className="foot-value">Sin cargo · por escrito</span>
        </div>
        <div className="foot-sep" />
        <div className="foot-item">
          <span className="foot-label">Garantía</span>
          <span className="foot-value">90 días en hardware</span>
        </div>
      </div>
    </div>
  );
}

function Hero() {
  return (
    <section className="hero" id="top">
      <div className="hero-grid-bg" aria-hidden />
      <div className="hero-glow" aria-hidden />
      <div className="container hero-inner">
        <Reveal className="hero-copy">
          <Kicker>
            <span className="pill-dot" /> Servicio técnico en Escobar y zona norte
          </Kicker>
          <h1 className="hero-title">
            Tu PC rota no<br />
            se mueve de<br />
            tu casa. <span className="accent">Nosotros sí.</span>
          </h1>
          <p className="hero-sub">
            Pasamos, retiramos, diagnosticamos y devolvemos. Presupuesto antes de tocar nada.
            Si no tiene arreglo, te lo decimos de una.
          </p>
          <div className="hero-ctas">
            <Button variant="primary" href="#contacto" icon={WA_ICON}>
              Pedí tu diagnóstico
            </Button>
            <Button variant="ghost" href="#como-funciona" icon={ARROW_ICON}>
              Cómo funciona
            </Button>
          </div>
          <div className="hero-meta">
            <div className="hero-meta-item">
              <span className="meta-k">24–48 hs</span>
              <span className="meta-l">diagnóstico</span>
            </div>
            <div className="hero-meta-item">
              <span className="meta-k">$0</span>
              <span className="meta-l">costo de diagnóstico</span>
            </div>
            <div className="hero-meta-item">
              <span className="meta-k">90 días</span>
              <span className="meta-l">garantía en hardware</span>
            </div>
          </div>
        </Reveal>
        <Reveal delay={120} className="hero-visual">
          <DiagnosticTerminal />
        </Reveal>
      </div>
      <div className="marquee">
        <div className="marquee-track">
          {[
            "Escobar centro",
            "Belén de Escobar",
            "Ingeniero Maschwitz",
            "Matheu",
            "Garín",
            "Pilar",
            "Tigre",
            "Benavídez",
            "Countries zona norte",
            "Escobar centro",
            "Belén de Escobar",
            "Ingeniero Maschwitz",
            "Matheu",
            "Garín",
            "Pilar",
            "Tigre",
            "Benavídez",
            "Countries zona norte",
          ].map((z, i) => (
            <span key={i} className="marquee-item">
              <span className="marquee-dot" /> {z}
            </span>
          ))}
        </div>
      </div>
    </section>
  );
}

// ─── Trust bar ────────────────────────────────────────────
function TrustBar() {
  const stats = [
    { k: "+200", l: "equipos reparados" },
    { k: "24–48 hs", l: "promedio de diagnóstico" },
    { k: "$0", l: "costo de diagnóstico" },
    { k: "90 días", l: "garantía en hardware" },
  ];
  return (
    <section className="trust">
      <div className="container trust-inner">
        {stats.map((s, i) => (
          <Reveal key={i} delay={i * 60} className="trust-item">
            <div className="trust-k">{s.k}</div>
            <div className="trust-l">{s.l}</div>
          </Reveal>
        ))}
      </div>
    </section>
  );
}

// ─── Cómo funciona ────────────────────────────────────────
function HowItWorks() {
  const steps = [
    {
      n: "01",
      t: "Nos escribís",
      d: "Contanos el síntoma por WhatsApp. Si alcanza con una foto, te orientamos gratis sin mover nada.",
      m: "WhatsApp · Instagram · Web",
    },
    {
      n: "02",
      t: "Retiramos y diagnosticamos",
      d: "Pasamos por tu casa o oficina. Diagnóstico en 24–48 hs hábiles y presupuesto por escrito.",
      m: "Retiro a domicilio",
    },
    {
      n: "03",
      t: "Aprobás y arreglamos",
      d: "No tocamos nada sin tu OK. Trabajamos, te avisamos cuando está, y te lo devolvemos.",
      m: "Garantía 30–90 días",
    },
  ];
  return (
    <section className="section" id="como-funciona">
      <div className="container">
        <Reveal className="section-head">
          <Kicker>03 · Cómo funciona</Kicker>
          <h2 className="section-title">
            Tres pasos. Sin sorpresas.
          </h2>
          <p className="section-sub">
            El flujo de siempre, pero sin que tengas que salir de tu casa ni llamar a un call center.
          </p>
        </Reveal>
        <div className="steps">
          {steps.map((s, i) => (
            <Reveal key={i} delay={i * 100} className="step">
              <div className="step-head">
                <span className="step-n">{s.n}</span>
                <span className="step-chip">{s.m}</span>
              </div>
              <h3 className="step-t">{s.t}</h3>
              <p className="step-d">{s.d}</p>
              {i < steps.length - 1 && <div className="step-connector" aria-hidden />}
            </Reveal>
          ))}
        </div>
      </div>
    </section>
  );
}

// ─── Servicios ────────────────────────────────────────────
const SERVICES = [
  {
    id: "notebook",
    t: "Notebooks",
    d: "Pantalla, teclado, batería, carga, limpieza interna.",
    items: [
      "Cambio de pantalla",
      "Teclado, bisagras y carcasa",
      "Cambio de batería",
      "Reparación de pin de carga",
      "Limpieza + pasta térmica",
      "Recuperación de datos",
    ],
    icon: (
      <svg viewBox="0 0 48 48" fill="none">
        <rect x="8" y="10" width="32" height="22" rx="2" stroke="currentColor" strokeWidth="1.5" />
        <path d="M4 36h40l-2 4H6z" stroke="currentColor" strokeWidth="1.5" strokeLinejoin="round" />
        <path d="M20 36h8" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" />
      </svg>
    ),
  },
  {
    id: "pc",
    t: "PCs de escritorio",
    d: "Fuentes, placas, refrigeración, armado y diagnóstico.",
    items: [
      "Fuente, placa, RAM o disco",
      "Diagnóstico de fallas intermitentes",
      "Limpieza profunda + pasta",
      "Refrigeración líquida / custom",
      "Armado y cableado",
      "Upgrades de GPU",
    ],
    icon: (
      <svg viewBox="0 0 48 48" fill="none">
        <rect x="14" y="6" width="20" height="36" rx="2" stroke="currentColor" strokeWidth="1.5" />
        <circle cx="24" cy="16" r="4" stroke="currentColor" strokeWidth="1.5" />
        <path d="M18 26h12M18 30h12M18 34h8" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" />
      </svg>
    ),
  },
  {
    id: "software",
    t: "Software y sistema",
    d: "Windows limpio, sin virus, backups y optimización.",
    items: [
      "Instalación limpia de Windows",
      "Migración de datos",
      "Remoción de virus y malware",
      "Optimización de rendimiento",
      "Configuración de backup",
      "Soporte remoto",
    ],
    icon: (
      <svg viewBox="0 0 48 48" fill="none">
        <rect x="6" y="10" width="36" height="24" rx="2" stroke="currentColor" strokeWidth="1.5" />
        <path d="M14 20l4 4-4 4M24 28h8" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M18 40h12" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" />
      </svg>
    ),
  },
  {
    id: "upgrades",
    t: "Upgrades",
    d: "Más velocidad, más RAM, más cuadros por segundo.",
    items: [
      "SSD M.2 o SATA + clonado",
      "Ampliación de memoria RAM",
      "Cambio de GPU",
      "Mejora de refrigeración",
      "Armado a medida",
      "Cuellos de botella resueltos",
    ],
    icon: (
      <svg viewBox="0 0 48 48" fill="none">
        <path d="M24 6v36M12 18l12-12 12 12" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
        <rect x="10" y="30" width="28" height="10" rx="1.5" stroke="currentColor" strokeWidth="1.5" />
      </svg>
    ),
  },
];

function Services() {
  const [active, setActive] = useState("notebook");
  const current = SERVICES.find((s) => s.id === active) || SERVICES[0];

  return (
    <section className="section section-alt" id="servicios">
      <div className="container">
        <Reveal className="section-head services-head">
          <div>
            <Kicker>02 · Catálogo</Kicker>
            <h2 className="section-title">
              Si lo enchufás, lo arreglamos.
            </h2>
          </div>
          <p className="section-sub right">
            Reparación, software, upgrades y armado a medida. Todo con retiro y entrega en zona norte.
          </p>
        </Reveal>

        <div className="svc-grid">
          {SERVICES.map((s, i) => (
            <Reveal key={s.id} delay={i * 60}>
              <button
                className={cls("svc-card", active === s.id && "svc-card-active")}
                onMouseEnter={() => setActive(s.id)}
                onFocus={() => setActive(s.id)}
                onClick={() => setActive(s.id)}
              >
                <div className="svc-head">
                  <span className="svc-icon">{s.icon}</span>
                  <span className="svc-index">0{i + 1}</span>
                </div>
                <div className="svc-body">
                  <h3 className="svc-t">{s.t}</h3>
                  <p className="svc-d">{s.d}</p>
                </div>
                <ul className="svc-list">
                  {s.items.map((it) => (
                    <li key={it}>
                      <span className="svc-bullet" /> {it}
                    </li>
                  ))}
                </ul>
                <div className="svc-foot">
                  <span>Ver más</span>
                  {ARROW_ICON}
                </div>
              </button>
            </Reveal>
          ))}
        </div>
      </div>
    </section>
  );
}

// ─── Zona de cobertura ────────────────────────────────────
const ZONES = [
  { z: "Belén de Escobar", km: 0, price: 0, lat: -34.3489, lng: -58.7919 },
  { z: "Garín", km: 8, price: 3200, lat: -34.4192, lng: -58.7397 },
  { z: "Matheu", km: 9, price: 3600, lat: -34.3858, lng: -58.7172 },
  { z: "Ingeniero Maschwitz", km: 10, price: 4000, lat: -34.3856, lng: -58.7383 },
  { z: "Countries Maschwitz / Escobar", km: 13, price: 5200, lat: -34.3942, lng: -58.7625 },
  { z: "Benavídez", km: 12, price: 4800, lat: -34.4106, lng: -58.7158 },
  { z: "Tigre centro", km: 18, price: 7200, lat: -34.4264, lng: -58.5797 },
];

function CoverageLeafletMap({ selected, setSelected }) {
  const containerRef = useRef(null);
  const mapRef = useRef(null);
  const tileRef = useRef(null);
  const markersRef = useRef({});

  useEffect(() => {
    if (!window.L || !containerRef.current) return;

    const map = L.map(containerRef.current, {
      scrollWheelZoom: false,
      zoomControl: false,
      attributionControl: true,
    });
    mapRef.current = map;
    L.control.zoom({ position: "bottomright" }).addTo(map);

    const applyTiles = (theme) => {
      if (tileRef.current) map.removeLayer(tileRef.current);
      const url = theme === "light"
        ? "https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png"
        : "https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png";
      tileRef.current = L.tileLayer(url, {
        attribution: '© <a href="https://www.openstreetmap.org/copyright">OSM</a> · © <a href="https://carto.com/">CARTO</a>',
        subdomains: "abcd",
        maxZoom: 19,
      }).addTo(map);
    };
    applyTiles(document.documentElement.dataset.theme || "dark");

    ZONES.forEach((z) => {
      const marker = L.circleMarker([z.lat, z.lng], {
        radius: 7,
        fillColor: "#7C3AED",
        color: "#ffffff",
        weight: 2,
        opacity: 1,
        fillOpacity: 0.9,
      }).addTo(map);
      marker.bindTooltip(z.z, { direction: "top", offset: [0, -6] });
      marker.on("click", () => setSelected(z.z));
      markersRef.current[z.z] = marker;
    });

    const bounds = L.latLngBounds(ZONES.map((z) => [z.lat, z.lng]));
    map.fitBounds(bounds, { padding: [28, 28] });

    const observer = new MutationObserver(() => {
      applyTiles(document.documentElement.dataset.theme || "dark");
    });
    observer.observe(document.documentElement, { attributes: true, attributeFilter: ["data-theme"] });

    return () => {
      observer.disconnect();
      map.remove();
    };
  }, []);

  useEffect(() => {
    Object.entries(markersRef.current).forEach(([name, marker]) => {
      const isActive = name === selected;
      marker.setStyle({
        radius: isActive ? 10 : 7,
        fillColor: isActive ? "#A78BFA" : "#7C3AED",
      });
      if (isActive) marker.bringToFront();
    });
  }, [selected]);

  return <div ref={containerRef} className="cov-leaflet" aria-label="Mapa de zonas de cobertura" />;
}

function Coverage() {
  const [selected, setSelected] = useState("Belén de Escobar");
  // eslint-disable-next-line
  const zone = ZONES.find((z) => z.z === selected) || ZONES[0];
  const fmt = new Intl.NumberFormat("es-AR");

  return (
    <section className="section" id="zona">
      <div className="container">
        <Reveal className="section-head">
          <Kicker>04 · Zona de cobertura</Kicker>
          <h2 className="section-title">
            Retiramos y entregamos<br />
            en <span className="accent">zona norte.</span>
          </h2>
        </Reveal>

        <div className="cov-grid">
          <Reveal className="cov-map">
            <div className="cov-map-frame">
              <div className="cov-map-label">
                <span className="mono-label">zona · ar · buenos aires · norte</span>
              </div>
              <CoverageLeafletMap selected={selected} setSelected={setSelected} />
              <div className="cov-map-foot">
                <div>
                  <span className="mono-label">seleccionada</span>
                  <div className="cov-map-zone">{zone.z}</div>
                </div>
                <div className="cov-map-price">
                  <span className="mono-label">retiro + entrega</span>
                  <div className="cov-map-amount">
                    {zone.price === 0 ? "Sin cargo" : `$${fmt.format(zone.price)}`}
                  </div>
                </div>
              </div>
            </div>
          </Reveal>

          <Reveal delay={120} className="cov-list">
            <div className="cov-list-head">
              <span className="mono-label">zona</span>
              <span className="mono-label">km (ida)</span>
              <span className="mono-label right">costo</span>
            </div>
            {ZONES.map((z) => (
              <button
                key={z.z}
                className={cls("cov-row", selected === z.z && "cov-row-active")}
                onClick={() => setSelected(z.z)}
              >
                <span className="cov-z">{z.z}</span>
                <span className="cov-km">{z.km === 0 ? "—" : `${z.km} km`}</span>
                <span className="cov-p">{z.price === 0 ? "Sin cargo" : `$${fmt.format(z.price)}`}</span>
              </button>
            ))}
            <div className="cov-note">
              <span className="mono-label">nota</span>
              <p>
                Se cobra una sola vez por trabajo. Si no aprobás el presupuesto, pagás únicamente la logística de tu zona.
              </p>
            </div>
          </Reveal>
        </div>
      </div>
    </section>
  );
}

// ─── Garantía ─────────────────────────────────────────────
function Warranty() {
  const cards = [
    {
      t: "Diagnóstico",
      k: "Gratis",
      d: "Remoto por WhatsApp siempre gratis. Presencial también: solo pagás la logística si no aprobás.",
      meta: "whatsapp · presencial",
    },
    {
      t: "Reparación de software",
      k: "30 días",
      d: "Reinstalación, limpieza y optimización. Si vuelve la misma falla, la revisamos sin cargo.",
      meta: "windows · malware · backup",
    },
    {
      t: "Reparación de hardware",
      k: "90 días",
      d: "Cambio de componentes, soldaduras y reparación de placa. Cubre la falla reparada.",
      meta: "placa · pantalla · batería",
    },
    {
      t: "Presupuesto por escrito",
      k: "7 días",
      d: "Te lo mandamos por WhatsApp. No tocamos nada sin tu aprobación.",
      meta: "sin sorpresas",
    },
  ];
  return (
    <section className="section section-alt" id="garantia">
      <div className="container">
        <Reveal className="section-head">
          <Kicker>05 · Respaldo</Kicker>
          <h2 className="section-title">
            Lo que firmamos,<br />
            lo respondemos.
          </h2>
          <p className="section-sub">
            Reglas claras sobre diagnóstico, garantía y presupuesto. En castellano, no en jerga.
          </p>
        </Reveal>
        <div className="war-grid">
          {cards.map((c, i) => (
            <Reveal key={c.t} delay={i * 60} className="war-card">
              <div className="war-k">{c.k}</div>
              <h3 className="war-t">{c.t}</h3>
              <p className="war-d">{c.d}</p>
              <div className="war-meta mono-label">{c.meta}</div>
            </Reveal>
          ))}
        </div>
      </div>
    </section>
  );
}

// ─── FAQ ──────────────────────────────────────────────────
const FAQ = [
  {
    q: "¿Tienen local para llevar el equipo?",
    a: "No. Trabajamos a domicilio: pasamos, retiramos y te lo devolvemos cuando está listo. Es más cómodo y no movés el equipo.",
  },
  {
    q: "¿Cuánto tardan en darme el presupuesto?",
    a: "Entre 24 y 48 hs hábiles desde que retiramos el equipo. Te lo mandamos por escrito por WhatsApp. Tenés 7 días para aprobarlo.",
  },
  {
    q: "¿Qué pasa si no apruebo el trabajo?",
    a: "Pagás únicamente la logística de tu zona. Nada más. Y no te cobramos el diagnóstico.",
  },
  {
    q: "¿Qué medios de pago aceptan?",
    a: "Efectivo, transferencia, CBU o alias, Mercado Pago (link o QR) y tarjetas de débito o crédito vía Mercado Pago. El pago es contra entrega.",
  },
  {
    q: "¿Atienden fuera de Escobar?",
    a: "Sí, en toda la zona norte: Belén de Escobar, Ingeniero Maschwitz, Matheu, Garín, Pilar, Tigre, Benavídez y countries cercanos. Podés ver la tabla de logística arriba.",
  },
];

function FAQSection() {
  const [open, setOpen] = useState(0);
  return (
    <section className="section" id="faq">
      <div className="container faq-container">
        <Reveal className="section-head faq-head">
          <div>
            <Kicker>06 · Preguntas frecuentes</Kicker>
            <h2 className="section-title">
              Lo que siempre nos preguntan.
            </h2>
          </div>
          <a className="faq-contact" href="#contacto">
            <span>¿Te falta algo? Escribínos</span> {ARROW_ICON}
          </a>
        </Reveal>

        <div className="faq-list">
          {FAQ.map((f, i) => (
            <Reveal key={i} delay={i * 40}>
              <button
                className={cls("faq-item", open === i && "faq-open")}
                onClick={() => setOpen(open === i ? -1 : i)}
              >
                <div className="faq-q">
                  <span className="faq-n">0{i + 1}</span>
                  <span>{f.q}</span>
                  <span className="faq-toggle" aria-hidden>
                    {open === i ? "–" : "+"}
                  </span>
                </div>
                <div className="faq-a">
                  <p>{f.a}</p>
                </div>
              </button>
            </Reveal>
          ))}
        </div>
      </div>
    </section>
  );
}

// ─── CTA final ────────────────────────────────────────────
function FinalCTA() {
  return (
    <section className="section cta-section" id="contacto">
      <div className="container">
        <Reveal className="cta-card">
          <div className="cta-bg-grid" aria-hidden />
          <div className="cta-glow" aria-hidden />
          <div className="cta-content">
            <Kicker>
              <span className="pill-dot" /> Respondemos todos los días
            </Kicker>
            <h2 className="cta-title">
              Mandá una foto. Te orientamos<br />
              gratis <span className="accent">en minutos.</span>
            </h2>
            <p className="cta-sub">
              Si alcanza con una foto por WhatsApp, nadie mueve nada. Si no, coordinamos el retiro a domicilio.
            </p>
            <div className="cta-row">
              <Button variant="primary" href="https://wa.me/5491170647160" icon={WA_ICON}>
                Escribínos por WhatsApp
              </Button>
              <a className="cta-phone" href="tel:+5491170647160">
                <span className="mono-label">teléfono directo</span>
                <span className="cta-phone-n">+54 9 11 7064-7160</span>
              </a>
            </div>
            <div className="cta-meta">
              <div><span className="mono-label">diagnóstico</span> sin cargo</div>
              <div><span className="mono-label">zona</span> Escobar y zona norte</div>
              <div><span className="mono-label">horarios</span> coordinamos según tu disponibilidad</div>
            </div>
          </div>
        </Reveal>
      </div>
    </section>
  );
}

// ─── Footer ───────────────────────────────────────────────
function Footer() {
  return (
    <footer className="footer">
      <div className="container footer-inner">
        <div className="footer-brand">
          <a className="logo" href="#top">
            <BrandLogo />
          </a>
          <p>Servicio técnico de PCs y notebooks a domicilio. Escobar y zona norte.</p>
          <div className="footer-contact">
            <a href="https://wa.me/5491170647160">
              {WA_ICON} <span>+54 9 11 7064-7160</span>
            </a>
            <a href="#">
              <svg width="16" height="16" viewBox="0 0 24 24" fill="none"><rect x="3" y="3" width="18" height="18" rx="5" stroke="currentColor" strokeWidth="1.5" /><circle cx="12" cy="12" r="4" stroke="currentColor" strokeWidth="1.5" /><circle cx="17.5" cy="6.5" r="1" fill="currentColor" /></svg>
              <span>@simpletec</span>
            </a>
          </div>
        </div>

        <div className="footer-cols">
          <div>
            <div className="mono-label">servicios</div>
            <a href="#servicios">Notebooks</a>
            <a href="#servicios">PCs de escritorio</a>
            <a href="#servicios">Software y sistema</a>
            <a href="#servicios">Upgrades</a>
          </div>
          <div>
            <div className="mono-label">zonas</div>
            <a href="#zona">Escobar</a>
            <a href="#zona">Ingeniero Maschwitz</a>
            <a href="#zona">Matheu</a>
            <a href="#zona">Garín</a>
            <a href="#zona">Benavídez</a>
            <a href="#zona">Tigre</a>
          </div>
          <div>
            <div className="mono-label">simpletec</div>
            <a href="#como-funciona">Cómo funciona</a>
            <a href="#garantia">Garantía</a>
            <a href="#faq">FAQ</a>
            <a href="#contacto">Contacto</a>
          </div>
        </div>
      </div>
      <div className="footer-bottom container">
        <span>© 2026 SimpleTEC — Todos los derechos reservados</span>
        <span className="mono-label">hecho en escobar · buenos aires · ar</span>
      </div>
    </footer>
  );
}

// Expose
Object.assign(window, {
  Nav, Hero, TrustBar, HowItWorks, Services, Coverage, Warranty, FAQSection, FinalCTA, Footer,
});
