/* Services.jsx — the 5 core services */ const SERVICES = [ { n: "01", t: "Movimiento de suelos", d: "Desmonte, excavación, terraplenes, nivelación y compactación. Preparamos el terreno para que la obra arranque sobre base firme.", tags: ["Excavación", "Nivelación", "Compactación", "Terraplenes"], }, { n: "02", t: "Pavimento de hormigón", d: "Pavimentos rígidos de alta durabilidad para calzadas, playas de maniobra y accesos industriales que soportan cargas pesadas.", tags: ["Calzadas", "Playas logísticas", "Juntas", "Accesos"], }, { n: "03", t: "Pavimento asfáltico", d: "Carpetas asfálticas en caliente, bacheo y repavimentación. Terminaciones parejas y drenaje correcto para una vida útil prolongada.", tags: ["Carpeta en caliente", "Bacheo", "Repavimentación", "Fresado"], }, { n: "04", t: "Adoquinado", d: "Colocación de adoquines de hormigón para calles, plazas, veredas y accesos. Estética, permeabilidad y mantenimiento sencillo.", tags: ["Calles", "Plazas", "Veredas", "Accesos"], }, { n: "05", t: "Mantenimiento vial", d: "Conservación integral: sellado de juntas y fisuras, demarcación horizontal, limpieza y bacheo programado para mantener la vía segura.", tags: ["Sellado", "Demarcación", "Bacheo", "Conservación"], }, ]; function ServiceRow({ s }) { const [hover, setHover] = useState(false); return ( setHover(true)} onMouseLeave={() => setHover(false)} style={{ display: "grid", gridTemplateColumns: "auto 1fr", gap: "clamp(20px,4vw,64px)", padding: "clamp(28px,4vw,48px) clamp(16px,3vw,40px)", borderTop: "1px solid var(--line)", background: hover ? "var(--paper-2)" : "transparent", transition: "background .25s ease", alignItems: "start", }} className="svc-row">
{s.n}

{s.t}

{s.d}

); } function Services() { return (
{SERVICES.map((s) => )}
); } Object.assign(window, { Services });