Let’s Chat
/* Evita scroll del body cuando hay un mega abierto (tu JS ya lo gestiona) */
.no-scroll { overflow: hidden; }

/* Estado base: el mega no se pinta ni recibe eventos */
.has-mega-s .mega-menu-s {
  display: block;              /* Mantiene tu layout/absoluto */
  position: absolute;
  left: 0;
  top: 100%;
  width: 100%;
  opacity: 0;
  transform: translateY(10px);
  pointer-events: none;
  visibility: hidden;          /* <- Clave: invisible de verdad, sin “flash” */
  transition: none;            /* Transición desactivada hasta que el DOM esté listo */
  will-change: opacity, transform;
}

/* Cuando el DOM está listo, activamos transiciones (evita parpadeo en carga) */
.js-ready .has-mega-s .mega-menu-s {
  transition: opacity 0.3s ease, transform 0.3s ease;
}

/* Estado visible (no cambia diseño, solo añade visibility) */
.has-mega-s.open .mega-menu-s {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
  visibility: visible;
}
document.addEventListener("DOMContentLoaded", () => {
  // Marca el DOM como listo para habilitar transiciones sin “flash”
  document.documentElement.classList.add("js-ready");

  const items = Array.from(document.querySelectorAll(".has-mega-s"));
  const timeouts = new WeakMap(); // close timers por item

  const openItem = (item) => {
    // cierra los demás
    items.forEach(i => {
      if (i !== item) i.classList.remove("open");
      const t = timeouts.get(i);
      if (t) { clearTimeout(t); timeouts.delete(i); }
    });
    item.classList.add("open");
    updateBodyScroll();
  };

  const scheduleClose = (item, delay = 200) => {
    const t = setTimeout(() => {
      item.classList.remove("open");
      updateBodyScroll();
      timeouts.delete(item);
    }, delay);
    timeouts.set(item, t);
  };

  const cancelClose = (item) => {
    const t = timeouts.get(item);
    if (t) { clearTimeout(t); timeouts.delete(item); }
  };

  const updateBodyScroll = () => {
    const anyOpen = items.some(i => i.classList.contains("open"));
    document.body.classList.toggle("no-scroll", anyOpen);
  };

  items.forEach((item) => {
    item.addEventListener("mouseenter", () => {
      cancelClose(item);
      openItem(item);
    });

    item.addEventListener("mouseleave", () => {
      scheduleClose(item, 200); // ajusta el retardo si lo necesitas
    });
  });
});
Services

End-to-end
solutions

Discover how we design, build & deliver world-class training facilities. 

Consultation & Space Design

Via collaboration with you, we apply our diverse expertise to bring your vision to life by producing 3D photorealistic renders of your equipment and facility layout, giving you a clear visual of how your space will look and function.

Equipment Manufacturer

Equipment and flooring built for you. We don't just provide off-the-shelf products, we deliver custom manufacturing solutions tailored to your brand's identity, facility specifications, and performance requirements.

Global Logistics

We manage national and international logistics through trusted global partners, ensuring seamless and efficient equipment delivery. Our warehousing capability and strong relationships support large-scale rollouts, helping you meet critical timelines worldwide.

Installation

We provide a white-glove installation service, handling everything from delivery to setup with care and precision.
Our trusted, detail-driven team ensures every project is completed on time, to the highest standard, and left spotless.

Let’s Make Something Great Together

Tell us about your project — we’ll get back to you shortly.