Dónde estamos
Nosotros
Neomarket es una automotora multimarca de La Serena. Vendemos autos nuevos con respaldo de red y seminuevos revisados punto por punto, con la misma exigencia con la que elegiríamos un auto para nosotros mismos.
No listamos todo lo que existe: seleccionamos modelos con repuestos disponibles en Chile, buen valor de reventa y una red de servicio que responde cuando algo falla. Cada seminuevo pasa por una revisión de 120 puntos antes de entrar a la vitrina.
Operamos como intermediarios de compraventa e inscribimos cada transferencia ante el Registro Civil conforme a la normativa vigente. Los precios publicados son referenciales y están sujetos a stock; el valor final de tasación lo confirma un tasador tras revisar el vehículo y sus papeles.
Error 404
El auto pudo haberse vendido o el enlace está mal escrito.
Volver al inicioTest drive
Elige día y sucursal. Confirmamos por teléfono dentro del día hábil.
`); $("#tdForm").addEventListener("submit",e=>{ e.preventDefault(); const d=Object.fromEntries(new FormData(e.target)); closeModal(); // Sitio sin backend: mínimo funcional = mailto: con los datos precargados. // TODO CRM: cuando se integre el CRM (Walcu/HubSpot) esto pasa a un POST real. const asunto=`Test drive — ${v.marca} ${v.modelo}`; const cuerpo=[`Nombre: ${d.n}`,`Teléfono: ${d.f}`,`Día preferido: ${d.d}`,`Sucursal: ${d.s}`,`Auto: ${v.marca} ${v.modelo} ${v.version}`].join("\n"); location.href=`mailto:${EMAIL}?subject=${encodeURIComponent(asunto)}&body=${encodeURIComponent(cuerpo)}`; toast(`Listo, se abrió tu correo con el test drive del ${esc(v.modelo)} para que lo envíes.`); }); } function toast(msg){ const wrap=$("#toasts"); const t=document.createElement("div"); t.className="toast"; t.innerHTML=`${msg}`; wrap.appendChild(t); setTimeout(()=>{t.style.transition="opacity .4s, transform .4s";t.style.opacity="0";t.style.transform="translateY(10px)";setTimeout(()=>t.remove(),400);},4200); } /* ============================================================ ROUTER ============================================================ */ function parseHash(){ const raw = location.hash.replace(/^#/,"") || "/"; const [path,query] = raw.split("?"); return {parts:path.split("/").filter(Boolean), params:new URLSearchParams(query||"")}; } const catScroll = {nuevos:0, usados:0}; let prevSeg = null; function render(){ const {parts,params} = parseHash(); const app = $("#app"); let html, after=null, seg=parts[0]; if(prevSeg==="nuevos" || prevSeg==="usados") catScroll[prevSeg] = window.scrollY; clearInterval(heroTimer); clearInterval(promoTimer); if(!seg){ html=viewHome(); after=wireHome; } else if(seg==="nuevos"){ html=viewCatalogo("nuevo"); after=()=>wireCatalogo("nuevo"); } else if(seg==="usados"){ html=viewCatalogo("usado"); after=()=>wireCatalogo("usado"); } else if(seg==="vehiculo" && parts[1]){ html=viewVehiculo(parts[1]); after=()=>wireVehiculo(parts[1]); } else if(seg==="financiamiento"){ html=viewFinanciamiento(params); after=wireFinanciamiento; } else if(seg==="tasacion"){ html=viewTasacion(); after=()=>{TAS.step=0;renderTas();}; } else if(seg==="contacto"){ html=viewContacto(); after=wireContacto; } else if(seg==="servicio"){ html=viewServicio(); after=wireServicio; } else if(seg==="sucursales"){ html=viewSucursales(); } else if(seg==="nosotros"){ html=viewNosotros(); } else { html=viewNotFound(); } app.innerHTML = html; window.scrollTo(0,0); if(after) after(); syncNav(seg); observeReveals(); closeDrawer(); if((seg==="nuevos" || seg==="usados") && catScroll[seg]){ const y = catScroll[seg]; requestAnimationFrame(()=>window.scrollTo(0,y)); setTimeout(()=>window.scrollTo(0,y),60); } prevSeg = seg; } function syncNav(seg){ const map={nuevos:"#/nuevos",usados:"#/usados",financiamiento:"#/financiamiento",servicio:"#/servicio",tasacion:"#/tasacion",contacto:"#/contacto"}; $$(".hd .nav a").forEach(a=>a.removeAttribute("aria-current")); const active=map[seg]; if(active){ const a=$(`.hd .nav a[href="${active}"]`); if(a) a.setAttribute("aria-current","page"); } } let heroTimer=null; let promoTimer=null; function wireHome(){ const vf=$("#visitForm"); if(vf) vf.addEventListener("submit",e=>{ e.preventDefault(); const d=Object.fromEntries(new FormData(vf)); const err=$("#visitErr"); if(!d.nombre.trim() || !d.fono.trim()){ err.hidden=false; return; } err.hidden=true; const nom=d.nombre.trim().split(" ")[0]; // Sitio sin backend: mínimo funcional = mailto: con los datos precargados. // TODO CRM: cuando se integre el CRM (Walcu/HubSpot) esto pasa a un POST real. const asunto=`Agenda de visita — ${d.sucursal}`; const cuerpo=[`Nombre: ${d.nombre}`,`Teléfono: ${d.fono}`,`Email: ${d.email||"-"}`,`Fecha: ${d.fecha||"-"}`,`Sucursal: ${d.sucursal}`,"",d.msg||""].join("\n"); location.href=`mailto:${EMAIL}?subject=${encodeURIComponent(asunto)}&body=${encodeURIComponent(cuerpo)}`; toast(`Listo ${nom}, se abrió tu correo con la visita a ${d.sucursal} para que la envíes.`); vf.reset(); }); vf?.addEventListener("input",()=>{ const err=$("#visitErr"); if(err) err.hidden=true; }); wirePromo(); const slides=$$(".hslide"), dots=$$("[data-dot]"); if(slides.length<2) return; let cur=0; const go=n=>{ cur=(n+slides.length)%slides.length; slides.forEach((s,i)=>{ s.dataset.on=i===cur; s.setAttribute("aria-hidden",i!==cur); }); dots.forEach((d,i)=>d.setAttribute("aria-current",i===cur)); }; const play=()=>{ clearInterval(heroTimer); if(!RM) heroTimer=setInterval(()=>go(cur+1),6500); }; dots.forEach((d,i)=>d.addEventListener("click",()=>{ go(i); play(); })); const hero=$(".hero"); hero.addEventListener("mouseenter",()=>clearInterval(heroTimer)); hero.addEventListener("mouseleave",play); play(); } /* ============================================================ CHROME: scroll header, drawer, reveals ============================================================ */ const hd=$("#hd"); addEventListener("scroll",()=>{ hd.dataset.solid = window.scrollY>60; },{passive:true}); const menuBtn=$("#menuBtn"), drawer=$("#drawer"); function closeDrawer(){ drawer.dataset.open="false"; drawer.setAttribute("aria-hidden","true"); menuBtn.setAttribute("aria-expanded","false"); document.body.style.overflow=""; } menuBtn.addEventListener("click",()=>{ const open = drawer.dataset.open!=="true"; drawer.dataset.open=open; drawer.setAttribute("aria-hidden",!open); menuBtn.setAttribute("aria-expanded",open); document.body.style.overflow=open?"hidden":""; }); $$("#drawer a").forEach(a=>a.addEventListener("click",closeDrawer)); let revealCheck, revealNet; function observeReveals(){ const els = $$(".reveal"); removeEventListener("scroll", revealCheck); clearTimeout(revealNet); if(RM){ els.forEach(el=>el.classList.add("in")); return; } revealCheck = ()=>{ let pending = false; for(const el of els){ if(el.classList.contains("in")) continue; if(el.getBoundingClientRect().top < innerHeight * 0.92) el.classList.add("in"); else pending = true; } if(!pending) removeEventListener("scroll", revealCheck); }; addEventListener("scroll", revealCheck, {passive:true}); revealCheck(); setTimeout(revealCheck, 250); requestAnimationFrame(revealCheck); revealNet = setTimeout(()=>els.forEach(el=>el.classList.add("in")), 2500); } addEventListener("hashchange",render); render();