{"id":5848,"date":"2026-07-09T00:48:50","date_gmt":"2026-07-09T00:48:50","guid":{"rendered":"https:\/\/artefacto.in\/?page_id=5848"},"modified":"2026-07-22T07:44:18","modified_gmt":"2026-07-22T07:44:18","slug":"principal-artefacto-in","status":"publish","type":"page","link":"https:\/\/artefacto.in\/","title":{"rendered":"Principal Artefacto in"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5848\" class=\"elementor elementor-5848\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section data-marvy_enable_drop_animation=\"false\" data-marvy_enable_fancy_rotate=\"false\" data-marvy_enable_flying_object=\"false\" data-marvy_enable_ripples_animation=\"false\" data-marvy_enable_waves_animation=\"false\" data-marvy_enable_rings_animation=\"false\" data-marvy_enable_topology_animation=\"false\" data-marvy_enable_gradient_animation=\"false\" data-marvy_enable_snow_animation=\"false\" data-marvy_enable_firework_animation=\"false\" data-marvy_enable_cloud_animation=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-6c7ae9a elementor-section-full_width elementor-section-height-min-height elementor-section-items-top elementor-section-stretched elementor-section-height-default\" data-id=\"6c7ae9a\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-63176bf\" data-id=\"63176bf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-47a0e49 elementor-widget elementor-widget-html\" data-id=\"47a0e49\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section\r\n  class=\"video-scroll-section\"\r\n  data-video-desktop=\"https:\/\/artefacto.in\/wp-content\/uploads\/2026\/07\/fondo-orizontal-1.mp4\"\r\n  data-video-mobile=\"https:\/\/artefacto.in\/wp-content\/uploads\/2026\/07\/horizontal-.mp4\"\r\n  data-scroll-duration-desktop=\"3500\"\r\n  data-scroll-duration-mobile=\"2500\"\r\n>\r\n  <video\r\n    class=\"video-scroll-media\"\r\n    muted\r\n    playsinline\r\n    webkit-playsinline\r\n    preload=\"auto\"\r\n    disablepictureinpicture\r\n    controlslist=\"nodownload nofullscreen noremoteplayback\"\r\n    aria-hidden=\"true\"\r\n  ><\/video>\r\n\r\n  <div class=\"video-scroll-overlay\">\r\n    <p class=\"video-scroll-label\">ARTEFACTO<\/p>\r\n\r\n    <h1>\r\n      Creamos Artefactos Digitales para Marcas extraordinarias\r\n    <\/h1>\r\n\r\n    <p class=\"video-scroll-text\">\r\n      Somos inventores de identidad, estrategia y contenido.<br>\r\n      Somos Artefacto IN.\r\n    <\/p>\r\n  <\/div>\r\n\r\n  <div class=\"video-scroll-fixed-button\">\r\n    <a\r\n      href=\"https:\/\/wa.me\/5215517305284\"\r\n      target=\"_blank\"\r\n      rel=\"noopener noreferrer\"\r\n      class=\"video-scroll-button\"\r\n    >\r\n      Hablemos de tu proyecto\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <div\r\n    class=\"video-scroll-loader\"\r\n    role=\"status\"\r\n    aria-live=\"polite\"\r\n  >\r\n    Cargando video...\r\n  <\/div>\r\n<\/section>\r\n\r\n<style>\r\n  .video-scroll-section,\r\n  .video-scroll-section * {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  .video-scroll-section {\r\n    position: relative;\r\n    isolation: isolate;\r\n    width: 100%;\r\n    height: 100vh;\r\n    height: 100svh;\r\n    min-height: 520px;\r\n    overflow: hidden;\r\n    background: #000;\r\n  }\r\n\r\n  .video-scroll-media {\r\n    position: absolute;\r\n    inset: 0;\r\n    z-index: 1;\r\n\r\n    display: block;\r\n    width: 100%;\r\n    height: 100%;\r\n\r\n    object-fit: cover;\r\n    object-position: center;\r\n    background: #000;\r\n\r\n    transform: translateZ(0);\r\n    backface-visibility: hidden;\r\n  }\r\n\r\n  .video-scroll-overlay {\r\n    position: absolute;\r\n    inset: 0;\r\n    z-index: 3;\r\n\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    justify-content: center;\r\n\r\n    width: 100%;\r\n    height: 100%;\r\n    padding: 40px 25px 130px;\r\n\r\n    color: #f3e4c9;\r\n    text-align: center;\r\n    pointer-events: none;\r\n\r\n    will-change: opacity, transform;\r\n  }\r\n\r\n  .video-scroll-overlay h1,\r\n  .video-scroll-overlay p {\r\n    margin: 0;\r\n  }\r\n\r\n  .video-scroll-label {\r\n    margin-bottom: 25px !important;\r\n\r\n    font-size: 14px;\r\n    font-weight: 500;\r\n    line-height: 1.2;\r\n    letter-spacing: 8px;\r\n    text-transform: uppercase;\r\n\r\n    opacity: 0.8;\r\n  }\r\n\r\n  .video-scroll-overlay h1 {\r\n    width: 100%;\r\n    max-width: 900px;\r\n\r\n    color: inherit;\r\n    font-family: inherit;\r\n    font-size: clamp(38px, 4.5vw, 68px);\r\n    font-weight: 500;\r\n    line-height: 1.05;\r\n    letter-spacing: -0.03em;\r\n    text-wrap: balance;\r\n  }\r\n\r\n  .video-scroll-text {\r\n    width: 100%;\r\n    max-width: 680px;\r\n    margin-top: 30px !important;\r\n\r\n    font-size: clamp(18px, 2vw, 26px);\r\n    font-weight: 400;\r\n    line-height: 1.45;\r\n\r\n    opacity: 0.85;\r\n  }\r\n\r\n  .video-scroll-fixed-button {\r\n    position: absolute;\r\n    bottom: 55px;\r\n    left: 50%;\r\n    z-index: 10;\r\n\r\n    width: max-content;\r\n    max-width: calc(100% - 40px);\r\n\r\n    transform: translateX(-50%);\r\n  }\r\n\r\n  .video-scroll-button {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n\r\n    min-height: 52px;\r\n    padding: 16px 35px;\r\n\r\n    border: 1px solid rgba(255, 255, 255, 0.7);\r\n    border-radius: 999px;\r\n\r\n    background: #fff;\r\n    color: #111;\r\n\r\n    font-family: inherit;\r\n    font-size: 14px;\r\n    font-weight: 700;\r\n    line-height: 1.2;\r\n    letter-spacing: 1px;\r\n    text-align: center;\r\n    text-decoration: none;\r\n    text-transform: uppercase;\r\n\r\n    box-shadow: 0 15px 40px rgba(0, 0, 0, 0.22);\r\n\r\n    transition:\r\n      transform 0.25s ease,\r\n      background-color 0.25s ease,\r\n      color 0.25s ease;\r\n  }\r\n\r\n  .video-scroll-button:hover,\r\n  .video-scroll-button:focus-visible {\r\n    color: #fff;\r\n    background: #111;\r\n    transform: translateY(-2px);\r\n  }\r\n\r\n  .video-scroll-loader {\r\n    position: absolute;\r\n    bottom: 18px;\r\n    left: 50%;\r\n    z-index: 20;\r\n\r\n    padding: 7px 12px;\r\n\r\n    border-radius: 999px;\r\n    background: rgba(0, 0, 0, 0.45);\r\n\r\n    color: #fff;\r\n    font-size: 13px;\r\n    line-height: 1.2;\r\n    white-space: nowrap;\r\n\r\n    opacity: 0.85;\r\n    visibility: visible;\r\n    transform: translateX(-50%);\r\n\r\n    transition:\r\n      opacity 0.35s ease,\r\n      visibility 0.35s ease;\r\n  }\r\n\r\n  .video-scroll-loader.is-hidden {\r\n    opacity: 0;\r\n    visibility: hidden;\r\n    pointer-events: none;\r\n  }\r\n\r\n  .video-scroll-loader.is-error {\r\n    color: #fff;\r\n    background: rgba(165, 20, 20, 0.9);\r\n    opacity: 1;\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .video-scroll-section {\r\n      min-height: 500px;\r\n    }\r\n\r\n    .video-scroll-overlay {\r\n      justify-content: center;\r\n      padding: 35px 20px 125px;\r\n    }\r\n\r\n    .video-scroll-label {\r\n      margin-bottom: 18px !important;\r\n      font-size: 11px;\r\n      letter-spacing: 6px;\r\n    }\r\n\r\n    .video-scroll-overlay h1 {\r\n      max-width: 360px;\r\n      font-size: clamp(34px, 10vw, 44px);\r\n      line-height: 1.04;\r\n      letter-spacing: -0.025em;\r\n    }\r\n\r\n    .video-scroll-text {\r\n      max-width: 350px;\r\n      margin-top: 22px !important;\r\n      font-size: 17px;\r\n      line-height: 1.45;\r\n    }\r\n\r\n    .video-scroll-fixed-button {\r\n      bottom: 48px;\r\n      width: calc(100% - 40px);\r\n    }\r\n\r\n    .video-scroll-button {\r\n      width: 100%;\r\n      padding: 15px 22px;\r\n      font-size: 12px;\r\n    }\r\n\r\n    .video-scroll-loader {\r\n      bottom: 12px;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n  (function (window, document) {\r\n    \"use strict\";\r\n\r\n    const GLOBAL_NAME = \"ArtefactoVideoScroll\";\r\n\r\n    \/*\r\n     * Si Elementor vuelve a ejecutar este bloque,\r\n     * reutilizamos el controlador existente.\r\n     *\/\r\n    if (\r\n      window[GLOBAL_NAME] &&\r\n      typeof window[GLOBAL_NAME].boot === \"function\"\r\n    ) {\r\n      window[GLOBAL_NAME].boot(document);\r\n      return;\r\n    }\r\n\r\n    const CDN = {\r\n      gsap:\r\n        \"https:\/\/cdn.jsdelivr.net\/npm\/gsap@3.15.0\/dist\/gsap.min.js\",\r\n      scrollTrigger:\r\n        \"https:\/\/cdn.jsdelivr.net\/npm\/gsap@3.15.0\/dist\/ScrollTrigger.min.js\"\r\n    };\r\n\r\n    const managerState = {\r\n      libraryPromise: null,\r\n      elementorHookRegistered: false,\r\n      elementorListenerRegistered: false,\r\n      resizeListenerRegistered: false,\r\n      resizeTimer: null\r\n    };\r\n\r\n    \/**\r\n     * Carga una librer\u00eda externa una sola vez.\r\n     *\/\r\n    function loadScript(src, isAvailable) {\r\n      if (isAvailable()) {\r\n        return Promise.resolve();\r\n      }\r\n\r\n      return new Promise(function (resolve, reject) {\r\n        const existingScript = Array.from(document.scripts).find(\r\n          function (script) {\r\n            return script.src === src;\r\n          }\r\n        );\r\n\r\n        if (existingScript) {\r\n          const checkExistingScript = function () {\r\n            if (isAvailable()) {\r\n              resolve();\r\n            } else {\r\n              reject(\r\n                new Error(\r\n                  \"La librer\u00eda termin\u00f3 de cargar, pero no est\u00e1 disponible: \" +\r\n                    src\r\n                )\r\n              );\r\n            }\r\n          };\r\n\r\n          existingScript.addEventListener(\r\n            \"load\",\r\n            checkExistingScript,\r\n            { once: true }\r\n          );\r\n\r\n          existingScript.addEventListener(\r\n            \"error\",\r\n            function () {\r\n              reject(\r\n                new Error(\"No se pudo cargar la librer\u00eda: \" + src)\r\n              );\r\n            },\r\n            { once: true }\r\n          );\r\n\r\n          \/*\r\n           * Puede que el script ya haya cargado antes de registrar\r\n           * los eventos.\r\n           *\/\r\n          window.setTimeout(function () {\r\n            if (isAvailable()) {\r\n              resolve();\r\n            }\r\n          }, 0);\r\n\r\n          return;\r\n        }\r\n\r\n        const script = document.createElement(\"script\");\r\n\r\n        script.src = src;\r\n        script.async = true;\r\n        script.crossOrigin = \"anonymous\";\r\n\r\n        script.addEventListener(\r\n          \"load\",\r\n          function () {\r\n            if (isAvailable()) {\r\n              resolve();\r\n            } else {\r\n              reject(\r\n                new Error(\r\n                  \"La librer\u00eda carg\u00f3, pero su objeto global no existe: \" +\r\n                    src\r\n                )\r\n              );\r\n            }\r\n          },\r\n          { once: true }\r\n        );\r\n\r\n        script.addEventListener(\r\n          \"error\",\r\n          function () {\r\n            reject(\r\n              new Error(\"No se pudo descargar la librer\u00eda: \" + src)\r\n            );\r\n          },\r\n          { once: true }\r\n        );\r\n\r\n        document.head.appendChild(script);\r\n      });\r\n    }\r\n\r\n    \/**\r\n     * Garantiza que GSAP y ScrollTrigger est\u00e9n disponibles\r\n     * antes de iniciar la secci\u00f3n.\r\n     *\/\r\n    function ensureLibraries() {\r\n      return loadScript(CDN.gsap, function () {\r\n        return typeof window.gsap !== \"undefined\";\r\n      })\r\n        .then(function () {\r\n          return loadScript(CDN.scrollTrigger, function () {\r\n            return typeof window.ScrollTrigger !== \"undefined\";\r\n          });\r\n        })\r\n        .then(function () {\r\n          window.gsap.registerPlugin(window.ScrollTrigger);\r\n        });\r\n    }\r\n\r\n    function getLoader(section) {\r\n      return section.querySelector(\".video-scroll-loader\");\r\n    }\r\n\r\n    function showLoader(section, message, isError) {\r\n      const loader = getLoader(section);\r\n\r\n      if (!loader) {\r\n        return;\r\n      }\r\n\r\n      loader.textContent = message || \"Cargando video...\";\r\n      loader.classList.remove(\"is-hidden\");\r\n      loader.classList.toggle(\"is-error\", Boolean(isError));\r\n    }\r\n\r\n    function hideLoader(section) {\r\n      const loader = getLoader(section);\r\n\r\n      if (!loader) {\r\n        return;\r\n      }\r\n\r\n      loader.classList.remove(\"is-error\");\r\n      loader.classList.add(\"is-hidden\");\r\n    }\r\n\r\n    function showLibraryError(error) {\r\n      document\r\n        .querySelectorAll(\".video-scroll-section\")\r\n        .forEach(function (section) {\r\n          showLoader(\r\n            section,\r\n            \"No se pudieron cargar las librer\u00edas de animaci\u00f3n.\",\r\n            true\r\n          );\r\n        });\r\n\r\n      console.error(\"[Artefacto Video Scroll]\", error);\r\n    }\r\n\r\n    function getDeviceMode() {\r\n      return window.matchMedia(\"(max-width: 767px)\").matches\r\n        ? \"mobile\"\r\n        : \"desktop\";\r\n    }\r\n\r\n    function normalizeSource(source) {\r\n      if (!source) {\r\n        return \"\";\r\n      }\r\n\r\n      \/*\r\n       * Evita contenido mixto si accidentalmente se introduce\r\n       * una URL HTTP.\r\n       *\/\r\n      return source.trim().replace(\/^http:\\\/\\\/\/i, \"https:\/\/\");\r\n    }\r\n\r\n    function getSections(root) {\r\n      const sections = [];\r\n      const normalizedRoot =\r\n        root && root.jquery ? root[0] : root || document;\r\n\r\n      if (\r\n        normalizedRoot.nodeType === 1 &&\r\n        normalizedRoot.matches(\".video-scroll-section\")\r\n      ) {\r\n        sections.push(normalizedRoot);\r\n      }\r\n\r\n      if (typeof normalizedRoot.querySelectorAll === \"function\") {\r\n        normalizedRoot\r\n          .querySelectorAll(\".video-scroll-section\")\r\n          .forEach(function (section) {\r\n            sections.push(section);\r\n          });\r\n      }\r\n\r\n      return Array.from(new Set(sections));\r\n    }\r\n\r\n    function destroySection(section) {\r\n      const state = section.__artefactoVideoScrollState;\r\n\r\n      if (!state) {\r\n        return;\r\n      }\r\n\r\n      state.destroyed = true;\r\n\r\n      if (state.animationFrame) {\r\n        window.cancelAnimationFrame(state.animationFrame);\r\n      }\r\n\r\n      if (state.context) {\r\n        state.context.revert();\r\n      }\r\n\r\n      state.cleanupFunctions.forEach(function (cleanup) {\r\n        try {\r\n          cleanup();\r\n        } catch (error) {\r\n          console.warn(\r\n            \"[Artefacto Video Scroll] Error limpiando un evento:\",\r\n            error\r\n          );\r\n        }\r\n      });\r\n\r\n      if (state.video) {\r\n        state.video.pause();\r\n      }\r\n\r\n      section.__artefactoVideoScrollState = null;\r\n      section.removeAttribute(\"data-video-scroll-initialized\");\r\n      section.removeAttribute(\"data-video-scroll-mode\");\r\n    }\r\n\r\n    function addManagedEvent(\r\n      state,\r\n      element,\r\n      eventName,\r\n      handler,\r\n      options\r\n    ) {\r\n      element.addEventListener(eventName, handler, options);\r\n\r\n      state.cleanupFunctions.push(function () {\r\n        element.removeEventListener(eventName, handler, options);\r\n      });\r\n    }\r\n\r\n    function getVideoErrorMessage(video) {\r\n      if (!video.error) {\r\n        return \"No se pudo cargar el video.\";\r\n      }\r\n\r\n      switch (video.error.code) {\r\n        case 1:\r\n          return \"La carga del video fue cancelada.\";\r\n\r\n        case 2:\r\n          return \"Error de red al cargar el video.\";\r\n\r\n        case 3:\r\n          return \"El navegador no pudo decodificar el video.\";\r\n\r\n        case 4:\r\n          return \"El formato o la URL del video no son compatibles.\";\r\n\r\n        default:\r\n          return \"No se pudo cargar el video.\";\r\n      }\r\n    }\r\n\r\n    function initSection(section, forceRebuild) {\r\n      if (\r\n        typeof window.gsap === \"undefined\" ||\r\n        typeof window.ScrollTrigger === \"undefined\"\r\n      ) {\r\n        return;\r\n      }\r\n\r\n      const mode = getDeviceMode();\r\n      const previousState = section.__artefactoVideoScrollState;\r\n\r\n      if (\r\n        !forceRebuild &&\r\n        previousState &&\r\n        previousState.mode === mode &&\r\n        section.getAttribute(\"data-video-scroll-initialized\") ===\r\n          \"true\"\r\n      ) {\r\n        return;\r\n      }\r\n\r\n      destroySection(section);\r\n\r\n      const video = section.querySelector(\".video-scroll-media\");\r\n      const overlay = section.querySelector(\".video-scroll-overlay\");\r\n\r\n      if (!video) {\r\n        showLoader(\r\n          section,\r\n          \"No se encontr\u00f3 el elemento de video.\",\r\n          true\r\n        );\r\n        return;\r\n      }\r\n\r\n      const rawSource =\r\n        mode === \"mobile\"\r\n          ? section.dataset.videoMobile\r\n          : section.dataset.videoDesktop;\r\n\r\n      const source = normalizeSource(rawSource);\r\n\r\n      const rawScrollDistance =\r\n        mode === \"mobile\"\r\n          ? Number(section.dataset.scrollDurationMobile)\r\n          : Number(section.dataset.scrollDurationDesktop);\r\n\r\n      const defaultScrollDistance =\r\n        mode === \"mobile\" ? 2500 : 3500;\r\n\r\n      const scrollDistance =\r\n        Number.isFinite(rawScrollDistance) &&\r\n        rawScrollDistance >= 500\r\n          ? rawScrollDistance\r\n          : defaultScrollDistance;\r\n\r\n      if (!source) {\r\n        showLoader(\r\n          section,\r\n          \"No se ha configurado la URL del video.\",\r\n          true\r\n        );\r\n        return;\r\n      }\r\n\r\n      const state = {\r\n        mode: mode,\r\n        source: source,\r\n        video: video,\r\n        context: null,\r\n        timeline: null,\r\n        animationFrame: null,\r\n        pendingVideoTime: 0,\r\n        animationCreated: false,\r\n        destroyed: false,\r\n        cleanupFunctions: []\r\n      };\r\n\r\n      section.__artefactoVideoScrollState = state;\r\n      section.setAttribute(\r\n        \"data-video-scroll-initialized\",\r\n        \"true\"\r\n      );\r\n      section.setAttribute(\"data-video-scroll-mode\", mode);\r\n\r\n      showLoader(section, \"Cargando video...\", false);\r\n\r\n      \/*\r\n       * Propiedades necesarias para reproducci\u00f3n silenciosa\r\n       * y control program\u00e1tico en navegadores m\u00f3viles.\r\n       *\/\r\n      video.muted = true;\r\n      video.defaultMuted = true;\r\n      video.autoplay = false;\r\n      video.controls = false;\r\n      video.playsInline = true;\r\n      video.preload = \"auto\";\r\n\r\n      video.setAttribute(\"muted\", \"\");\r\n      video.setAttribute(\"playsinline\", \"\");\r\n      video.setAttribute(\"webkit-playsinline\", \"\");\r\n      video.setAttribute(\"preload\", \"auto\");\r\n\r\n      function renderPendingVideoTime() {\r\n        state.animationFrame = null;\r\n\r\n        if (\r\n          state.destroyed ||\r\n          video.readyState < HTMLMediaElement.HAVE_METADATA\r\n        ) {\r\n          return;\r\n        }\r\n\r\n        const duration = Number(video.duration);\r\n\r\n        if (!Number.isFinite(duration) || duration <= 0) {\r\n          return;\r\n        }\r\n\r\n        const maximumTime = Math.max(duration - 0.05, 0);\r\n        const targetTime = Math.min(\r\n          Math.max(state.pendingVideoTime, 0),\r\n          maximumTime\r\n        );\r\n\r\n        \/*\r\n         * Evita solicitar el mismo fotograma repetidamente.\r\n         *\/\r\n        if (Math.abs(video.currentTime - targetTime) < 0.01) {\r\n          return;\r\n        }\r\n\r\n        try {\r\n          video.currentTime = targetTime;\r\n        } catch (error) {\r\n          \/*\r\n           * Algunos navegadores pueden rechazar temporalmente\r\n           * un cambio de tiempo mientras preparan el archivo.\r\n           * El siguiente movimiento de scroll volver\u00e1 a intentarlo.\r\n           *\/\r\n        }\r\n      }\r\n\r\n      function requestVideoTime(time) {\r\n        state.pendingVideoTime = time;\r\n\r\n        if (state.animationFrame) {\r\n          return;\r\n        }\r\n\r\n        state.animationFrame = window.requestAnimationFrame(\r\n          renderPendingVideoTime\r\n        );\r\n      }\r\n\r\n      function createScrollAnimation() {\r\n        if (state.animationCreated || state.destroyed) {\r\n          return;\r\n        }\r\n\r\n        const videoDuration = Number(video.duration);\r\n\r\n        if (\r\n          !Number.isFinite(videoDuration) ||\r\n          videoDuration <= 0\r\n        ) {\r\n          showLoader(\r\n            section,\r\n            \"El video no tiene una duraci\u00f3n v\u00e1lida.\",\r\n            true\r\n          );\r\n          return;\r\n        }\r\n\r\n        state.animationCreated = true;\r\n\r\n        const finalVideoTime = Math.max(\r\n          videoDuration - 0.05,\r\n          0.01\r\n        );\r\n\r\n        const playhead = {\r\n          time: 0\r\n        };\r\n\r\n        state.context = window.gsap.context(function () {\r\n          state.timeline = window.gsap.timeline({\r\n            defaults: {\r\n              ease: \"none\"\r\n            },\r\n\r\n            scrollTrigger: {\r\n              trigger: section,\r\n              start: \"top top\",\r\n\r\n              end: function () {\r\n                return \"+=\" + scrollDistance;\r\n              },\r\n\r\n              scrub: 0.6,\r\n              pin: true,\r\n              pinSpacing: true,\r\n              anticipatePin: 1,\r\n              invalidateOnRefresh: true,\r\n\r\n              onRefresh: function () {\r\n                requestVideoTime(playhead.time);\r\n              }\r\n            }\r\n          });\r\n\r\n          \/*\r\n           * El video ocupa el recorrido completo del scroll.\r\n           *\/\r\n          state.timeline.to(\r\n            playhead,\r\n            {\r\n              time: finalVideoTime,\r\n              duration: 1,\r\n\r\n              onUpdate: function () {\r\n                requestVideoTime(playhead.time);\r\n              }\r\n            },\r\n            0\r\n          );\r\n\r\n          \/*\r\n           * El texto desaparece entre el 25 % y el 60 %\r\n           * del recorrido total.\r\n           *\/\r\n          if (overlay) {\r\n            state.timeline.to(\r\n              overlay,\r\n              {\r\n                opacity: 0,\r\n                y: -120,\r\n                duration: 0.35\r\n              },\r\n              0.25\r\n            );\r\n          }\r\n        }, section);\r\n\r\n        \/*\r\n         * Solicita el primer fotograma para evitar que el\r\n         * elemento permanezca negro al iniciar.\r\n         *\/\r\n        requestVideoTime(0.01);\r\n\r\n        window.requestAnimationFrame(function () {\r\n          if (!state.destroyed) {\r\n            window.ScrollTrigger.refresh();\r\n          }\r\n        });\r\n      }\r\n\r\n      function handleVideoReady() {\r\n        if (state.destroyed) {\r\n          return;\r\n        }\r\n\r\n        hideLoader(section);\r\n      }\r\n\r\n      function handleVideoError() {\r\n        if (state.destroyed) {\r\n          return;\r\n        }\r\n\r\n        const message = getVideoErrorMessage(video);\r\n\r\n        showLoader(section, message, true);\r\n\r\n        console.error(\"[Artefacto Video Scroll]\", {\r\n          message: message,\r\n          source: source,\r\n          mediaError: video.error\r\n        });\r\n      }\r\n\r\n      addManagedEvent(\r\n        state,\r\n        video,\r\n        \"loadedmetadata\",\r\n        createScrollAnimation,\r\n        false\r\n      );\r\n\r\n      addManagedEvent(\r\n        state,\r\n        video,\r\n        \"loadeddata\",\r\n        handleVideoReady,\r\n        false\r\n      );\r\n\r\n      addManagedEvent(\r\n        state,\r\n        video,\r\n        \"canplay\",\r\n        handleVideoReady,\r\n        false\r\n      );\r\n\r\n      addManagedEvent(\r\n        state,\r\n        video,\r\n        \"seeked\",\r\n        handleVideoReady,\r\n        false\r\n      );\r\n\r\n      addManagedEvent(\r\n        state,\r\n        video,\r\n        \"error\",\r\n        handleVideoError,\r\n        false\r\n      );\r\n\r\n      \/*\r\n       * Los eventos se registran antes de establecer el src\r\n       * y antes de ejecutar load().\r\n       *\/\r\n      try {\r\n        video.pause();\r\n        video.src = source;\r\n        video.load();\r\n\r\n        \/*\r\n         * Protecci\u00f3n adicional para recursos que ya est\u00e9n\r\n         * almacenados en cach\u00e9.\r\n         *\/\r\n        if (\r\n          video.readyState >=\r\n          HTMLMediaElement.HAVE_METADATA\r\n        ) {\r\n          createScrollAnimation();\r\n        }\r\n\r\n        if (\r\n          video.readyState >=\r\n          HTMLMediaElement.HAVE_CURRENT_DATA\r\n        ) {\r\n          handleVideoReady();\r\n        }\r\n      } catch (error) {\r\n        showLoader(\r\n          section,\r\n          \"No se pudo iniciar la carga del video.\",\r\n          true\r\n        );\r\n\r\n        console.error(\"[Artefacto Video Scroll]\", error);\r\n      }\r\n    }\r\n\r\n    function initAll(root) {\r\n      getSections(root).forEach(function (section) {\r\n        initSection(section, false);\r\n      });\r\n    }\r\n\r\n    function registerElementorHook() {\r\n      if (\r\n        managerState.elementorHookRegistered ||\r\n        !window.elementorFrontend ||\r\n        !window.elementorFrontend.hooks\r\n      ) {\r\n        return;\r\n      }\r\n\r\n      managerState.elementorHookRegistered = true;\r\n\r\n      window.elementorFrontend.hooks.addAction(\r\n        \"frontend\/element_ready\/html.default\",\r\n        function ($scope) {\r\n          const scopeElement =\r\n            $scope && $scope[0] ? $scope[0] : $scope;\r\n\r\n          initAll(scopeElement);\r\n\r\n          window.requestAnimationFrame(function () {\r\n            if (window.ScrollTrigger) {\r\n              window.ScrollTrigger.refresh();\r\n            }\r\n          });\r\n        }\r\n      );\r\n    }\r\n\r\n    function listenForElementor() {\r\n      if (managerState.elementorListenerRegistered) {\r\n        return;\r\n      }\r\n\r\n      managerState.elementorListenerRegistered = true;\r\n\r\n      registerElementorHook();\r\n\r\n      \/*\r\n       * Compatibilidad con la inicializaci\u00f3n de Elementor\r\n       * tanto mediante evento nativo como mediante jQuery.\r\n       *\/\r\n      window.addEventListener(\r\n        \"elementor\/frontend\/init\",\r\n        registerElementorHook\r\n      );\r\n\r\n      if (window.jQuery) {\r\n        window\r\n          .jQuery(window)\r\n          .off(\r\n            \"elementor\/frontend\/init.artefactoVideoScroll\"\r\n          )\r\n          .on(\r\n            \"elementor\/frontend\/init.artefactoVideoScroll\",\r\n            registerElementorHook\r\n          );\r\n      }\r\n    }\r\n\r\n    function registerResizeListener() {\r\n      if (managerState.resizeListenerRegistered) {\r\n        return;\r\n      }\r\n\r\n      managerState.resizeListenerRegistered = true;\r\n\r\n      window.addEventListener(\r\n        \"resize\",\r\n        function () {\r\n          window.clearTimeout(managerState.resizeTimer);\r\n\r\n          managerState.resizeTimer = window.setTimeout(\r\n            function () {\r\n              const currentMode = getDeviceMode();\r\n\r\n              document\r\n                .querySelectorAll(\".video-scroll-section\")\r\n                .forEach(function (section) {\r\n                  const sectionState =\r\n                    section.__artefactoVideoScrollState;\r\n\r\n                  \/*\r\n                   * Cambia el archivo \u00fanicamente cuando se cruza\r\n                   * el breakpoint m\u00f3vil\/escritorio.\r\n                   *\/\r\n                  if (\r\n                    sectionState &&\r\n                    sectionState.mode !== currentMode\r\n                  ) {\r\n                    initSection(section, true);\r\n                  }\r\n                });\r\n\r\n              if (window.ScrollTrigger) {\r\n                window.ScrollTrigger.refresh();\r\n              }\r\n            },\r\n            250\r\n          );\r\n        },\r\n        { passive: true }\r\n      );\r\n    }\r\n\r\n    function boot(root) {\r\n      if (!managerState.libraryPromise) {\r\n        managerState.libraryPromise = ensureLibraries().catch(\r\n          function (error) {\r\n            managerState.libraryPromise = null;\r\n            throw error;\r\n          }\r\n        );\r\n      }\r\n\r\n      return managerState.libraryPromise\r\n        .then(function () {\r\n          initAll(root || document);\r\n          listenForElementor();\r\n          registerElementorHook();\r\n          registerResizeListener();\r\n        })\r\n        .catch(function (error) {\r\n          showLibraryError(error);\r\n        });\r\n    }\r\n\r\n    window[GLOBAL_NAME] = {\r\n      boot: boot,\r\n      init: initAll,\r\n      destroy: destroySection\r\n    };\r\n\r\n    if (document.readyState === \"loading\") {\r\n      document.addEventListener(\r\n        \"DOMContentLoaded\",\r\n        function () {\r\n          boot(document);\r\n        },\r\n        { once: true }\r\n      );\r\n    } else {\r\n      boot(document);\r\n    }\r\n  })(window, document);\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-95b3b51 elementor-widget elementor-widget-html\" data-id=\"95b3b51\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section class=\"artefactos-section\">\r\n\r\n    <div class=\"blueprint-lines\"><\/div>\r\n\r\n    <div class=\"artefactos-container\">\r\n\r\n\r\n        <!-- HEADER -->\r\n        <header class=\"artefactos-header\">\r\n\r\n            <span class=\"section-label\">\r\n                NUESTROS ARTEFACTOS\r\n            <\/span>\r\n\r\n            <h1>\r\n                MECANISMOS DE CRECIMIENTO\r\n            <\/h1>\r\n\r\n            <p>\r\n                Cada marca posee una maquinaria \u00fanica.\r\n                Dise\u00f1amos los mecanismos que la hacen avanzar.\r\n            <\/p>\r\n\r\n        <\/header>\r\n\r\n\r\n\r\n        <!-- ARTEFACTO I -->\r\n        <article class=\"artefacto-card reveal\">\r\n\r\n\r\n            <div class=\"artefacto-info\">\r\n\r\n\r\n                <div class=\"artefacto-number\">\r\n                    I\r\n                <\/div>\r\n\r\n\r\n                <div class=\"artefacto-content\">\r\n\r\n\r\n                    <span class=\"mechanism-name\">\r\n                        EL MOTOR DE IDENTIDAD\r\n                    <\/span>\r\n\r\n\r\n                    <h2>\r\n                        BRANDING\r\n                    <\/h2>\r\n\r\n\r\n                    <p>\r\n                        Creamos marcas con prop\u00f3sito, personalidad\r\n                        y direcci\u00f3n estrat\u00e9gica. Construimos nombres,\r\n                        identidad visual, sistemas gr\u00e1ficos y manuales\r\n                        de marca para convertir negocios en marcas\r\n                        memorables.\r\n                    <\/p>\r\n\r\n\r\n\r\n                    <div class=\"tags\">\r\n\r\n                        <span>NAMING<\/span>\r\n                        <span>LOGOTIPO<\/span>\r\n                        <span>IDENTIDAD VISUAL<\/span>\r\n                        <span>MANUAL DE MARCA<\/span>\r\n                        <span>SISTEMA GR\u00c1FICO<\/span>\r\n                        <span>VOZ DE MARCA<\/span>\r\n\r\n                    <\/div>\r\n\r\n\r\n\r\n                    <a href=\"#\" class=\"artefacto-button\">\r\n                        DISE\u00d1AR MI IDENTIDAD\r\n                    <\/a>\r\n\r\n\r\n                <\/div>\r\n\r\n            <\/div>\r\n\r\n\r\n\r\n            <div class=\"artefacto-image\">\r\n<div class=\"machine machine-branding machine-image\">\r\n\r\n    <img decoding=\"async\"\r\n        src=\"http:\/\/artefacto.in\/wp-content\/uploads\/2026\/07\/circulo-mecanico-.png\"\r\n        alt=\"Motor de identidad steampunk\"\r\n        loading=\"lazy\">\r\n\r\n<\/div>\r\n\r\n                <\/div>\r\n\r\n\r\n            <\/div>\r\n\r\n\r\n        <\/article>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n        <!-- ARTEFACTO II -->\r\n        <article class=\"artefacto-card reveal\">\r\n\r\n\r\n            <div class=\"artefacto-info\">\r\n\r\n\r\n                <div class=\"artefacto-number\">\r\n                    II\r\n                <\/div>\r\n\r\n\r\n                <div class=\"artefacto-content\">\r\n\r\n\r\n                    <span class=\"mechanism-name\">\r\n                        LA ARQUITECTURA DIGITAL\r\n                    <\/span>\r\n\r\n\r\n                    <h2>\r\n                        DISE\u00d1O WEB\r\n                    <\/h2>\r\n\r\n\r\n                    <p>\r\n                        Dise\u00f1amos experiencias digitales premium\r\n                        combinando estrategia, dise\u00f1o UX\/UI y desarrollo\r\n                        optimizado para convertir visitantes en clientes.\r\n                    <\/p>\r\n\r\n\r\n\r\n                    <div class=\"tags\">\r\n\r\n                        <span>DISE\u00d1O UX\/UI<\/span>\r\n                        <span>LANDING PAGES<\/span>\r\n                        <span>DESARROLLO WEB<\/span>\r\n                        <span>ECOMMERCE<\/span>\r\n                        <span>OPTIMIZACI\u00d3N M\u00d3VIL<\/span>\r\n                        <span>EXPERIENCIA DIGITAL<\/span>\r\n\r\n\r\n                    <\/div>\r\n\r\n\r\n\r\n                    <a href=\"#\" class=\"artefacto-button\">\r\n                        CREAR MI SITIO\r\n                    <\/a>\r\n\r\n\r\n\r\n                <\/div>\r\n\r\n\r\n            <\/div>\r\n\r\n\r\n<div class=\"machine machine-web machine-image\">\r\n\r\n    <img decoding=\"async\" \r\n    src=\"http:\/\/artefacto.in\/wp-content\/uploads\/2026\/07\/buena.webp\"\r\n    alt=\"Arquitectura digital steampunk\"\r\n    loading=\"lazy\">\r\n\r\n<\/div>\r\n\r\n\r\n        <\/article>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n        <!-- ARTEFACTO III -->\r\n        <article class=\"artefacto-card reveal\">\r\n\r\n\r\n            <div class=\"artefacto-info\">\r\n\r\n\r\n                <div class=\"artefacto-number\">\r\n                    III\r\n                <\/div>\r\n\r\n\r\n                <div class=\"artefacto-content\">\r\n\r\n\r\n                    <span class=\"mechanism-name\">\r\n                        LA BOBINA DE ALCANCE\r\n                    <\/span>\r\n\r\n\r\n                    <h2>\r\n                        SEO \/ SEM \/ ADS\r\n                    <\/h2>\r\n\r\n\r\n                    <p>\r\n                        Creamos sistemas digitales para aumentar\r\n                        visibilidad, atraer clientes potenciales y generar\r\n                        crecimiento medible mediante posicionamiento\r\n                        org\u00e1nico y campa\u00f1as inteligentes.\r\n                    <\/p>\r\n\r\n\r\n\r\n                    <div class=\"tags\">\r\n\r\n\r\n                        <span>SEO T\u00c9CNICO<\/span>\r\n                        <span>GOOGLE ADS<\/span>\r\n                        <span>META ADS<\/span>\r\n                        <span>SEM<\/span>\r\n                        <span>CAMPA\u00d1AS DE CONVERSI\u00d3N<\/span>\r\n                        <span>GENERACI\u00d3N DE LEADS<\/span>\r\n\r\n\r\n                    <\/div>\r\n\r\n\r\n\r\n                    <a href=\"#\" class=\"artefacto-button\">\r\n                        ACTIVAR CAMPA\u00d1AS\r\n                    <\/a>\r\n\r\n\r\n\r\n                <\/div>\r\n\r\n\r\n            <\/div>\r\n\r\n\r\n\r\n\r\n            <div class=\"artefacto-image\">\r\n\r\n\r\n\r\n \r\n<div class=\"machine machine-web machine-image\">\r\n\r\n    <img decoding=\"async\" \r\n    src=\"http:\/\/artefacto.in\/wp-content\/uploads\/2026\/07\/mjundo-solo.png\"\r\n    alt=\"Arquitectura digital steampunk\"\r\n    loading=\"lazy\">\r\n\r\n<\/div>\r\n\r\n            <\/div>\r\n\r\n\r\n        <\/article>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n        <!-- ARTEFACTO IV -->\r\n        <article class=\"artefacto-card reveal\">\r\n\r\n\r\n            <div class=\"artefacto-info\">\r\n\r\n\r\n                <div class=\"artefacto-number\">\r\n                    IV\r\n                <\/div>\r\n\r\n\r\n                <div class=\"artefacto-content\">\r\n\r\n\r\n                    <span class=\"mechanism-name\">\r\n                        LA C\u00c1MARA DE MEMORIA\r\n                    <\/span>\r\n\r\n\r\n                    <h2>\r\n                        FOTOGRAF\u00cdA & VIDEO\r\n                    <\/h2>\r\n\r\n\r\n                    <p>\r\n                        Producimos contenido visual estrat\u00e9gico\r\n                        para marcas que necesitan comunicar valor,\r\n                        emoci\u00f3n y profesionalismo.\r\n                    <\/p>\r\n\r\n\r\n\r\n                    <div class=\"tags\">\r\n\r\n\r\n                        <span>FOTOGRAF\u00cdA PRODUCTO<\/span>\r\n                        <span>VIDEO COMERCIAL<\/span>\r\n                        <span>REELS<\/span>\r\n                        <span>CONTENIDO REDES<\/span>\r\n                        <span>DIRECCI\u00d3N CREATIVA<\/span>\r\n                        <span>PRODUCCI\u00d3N AUDIOVISUAL<\/span>\r\n\r\n\r\n                    <\/div>\r\n\r\n\r\n\r\n                    <a href=\"#\" class=\"artefacto-button\">\r\n                        CREAR CONTENIDO\r\n                    <\/a>\r\n\r\n\r\n\r\n                <\/div>\r\n\r\n\r\n            <\/div>\r\n\r\n\r\n\r\n\r\n            <div class=\"artefacto-image\">\r\n\r\n\r\n                <div class=\"machine machine-camera\">\r\n\r\n\r\n                    <img decoding=\"async\" \r\n    src=\"http:\/\/artefacto.in\/wp-content\/uploads\/2026\/07\/bueno-bueno-.png\"\r\n    alt=\"Arquitectura digital steampunk\"\r\n    loading=\"lazy\">\r\n\r\n<\/div>\r\n\r\n            <\/div>\r\n\r\n\r\n        <\/article>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n        <!-- ARTEFACTO V -->\r\n        <article class=\"artefacto-card reveal\">\r\n\r\n\r\n            <div class=\"artefacto-info\">\r\n\r\n\r\n                <div class=\"artefacto-number\">\r\n                    V\r\n                <\/div>\r\n\r\n\r\n                <div class=\"artefacto-content\">\r\n\r\n\r\n                    <span class=\"mechanism-name\">\r\n                        EL LABORATORIO ESTRAT\u00c9GICO\r\n                    <\/span>\r\n\r\n\r\n                    <h2>\r\n                        ASESOR\u00cdAS\r\n                    <\/h2>\r\n\r\n\r\n                    <p>\r\n                        Acompa\u00f1amos empresas y emprendedores\r\n                        en procesos de transformaci\u00f3n digital,\r\n                        marca, comunicaci\u00f3n y crecimiento.\r\n                    <\/p>\r\n\r\n\r\n\r\n                    <div class=\"tags\">\r\n\r\n\r\n                        <span>CONSULTOR\u00cdA DE MARCA<\/span>\r\n                        <span>ESTRATEGIA DIGITAL<\/span>\r\n                        <span>AUDITOR\u00cdAS<\/span>\r\n                        <span>PLANEACI\u00d3N CREATIVA<\/span>\r\n                        <span>DIRECCI\u00d3N ESTRAT\u00c9GICA<\/span>\r\n\r\n\r\n                    <\/div>\r\n\r\n\r\n\r\n                    <a href=\"#\" class=\"artefacto-button\">\r\n                        SOLICITAR ASESOR\u00cdA\r\n                    <\/a>\r\n\r\n\r\n                <\/div>\r\n\r\n\r\n            <\/div>\r\n\r\n\r\n\r\n\r\n            <div class=\"artefacto-image\">\r\n\r\n\r\n                <div class=\"machine machine-camera\">\r\n\r\n\r\n                    <img decoding=\"async\" \r\n    src=\"http:\/\/artefacto.in\/wp-content\/uploads\/2026\/07\/308916f3e86033b7871aee7d270cda29.jpg\"\r\n    alt=\"Arquitectura digital steampunk\"\r\n    loading=\"lazy\">\r\n\r\n<\/div>\r\n\r\n            <\/div>\r\n\r\n\r\n        <\/article>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n        <!-- ARTEFACTO VI -->\r\n        <article class=\"artefacto-card reveal\">\r\n\r\n\r\n            <div class=\"artefacto-info\">\r\n\r\n\r\n                <div class=\"artefacto-number\">\r\n                    VI\r\n                <\/div>\r\n\r\n\r\n                <div class=\"artefacto-content\">\r\n\r\n\r\n                    <span class=\"mechanism-name\">\r\n                        EL TALLER VISUAL\r\n                    <\/span>\r\n\r\n\r\n                    <h2>\r\n                        DISE\u00d1O GR\u00c1FICO\r\n                    <\/h2>\r\n\r\n\r\n                    <p>\r\n                        Dise\u00f1amos piezas visuales con intenci\u00f3n\r\n                        estrat\u00e9gica para fortalecer la comunicaci\u00f3n\r\n                        y presencia de cada marca.\r\n                    <\/p>\r\n\r\n\r\n\r\n                    <div class=\"tags\">\r\n\r\n\r\n                        <span>DISE\u00d1O EDITORIAL<\/span>\r\n                        <span>PIEZAS PUBLICITARIAS<\/span>\r\n                        <span>PRESENTACIONES<\/span>\r\n                        <span>MATERIAL CORPORATIVO<\/span>\r\n                        <span>DISE\u00d1O PARA REDES<\/span>\r\n\r\n\r\n                    <\/div>\r\n\r\n\r\n\r\n                    <a href=\"#\" class=\"artefacto-button\">\r\n                        CREAR DISE\u00d1OS\r\n                    <\/a>\r\n\r\n\r\n\r\n                <\/div>\r\n\r\n\r\n            <\/div>\r\n\r\n\r\n\r\n\r\n            <div class=\"artefacto-image\">\r\n\r\n\r\n             <div class=\"machine machine-web machine-image\">\r\n\r\n    <img decoding=\"async\" \r\n    src=\"http:\/\/artefacto.in\/wp-content\/uploads\/2026\/07\/imprenta-sola.png\"\r\n    alt=\"Arquitectura digital steampunk\"\r\n    loading=\"lazy\">\r\n\r\n<\/div>\r\n\r\n\r\n                <\/div>\r\n\r\n\r\n            <\/div>\r\n\r\n\r\n        <\/article>\r\n\r\n\r\n\r\n\r\n    <\/div>\r\n\r\n\r\n<\/section>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section data-marvy_enable_drop_animation=\"false\" data-marvy_enable_fancy_rotate=\"false\" data-marvy_enable_flying_object=\"false\" data-marvy_enable_ripples_animation=\"false\" data-marvy_enable_waves_animation=\"false\" data-marvy_enable_rings_animation=\"false\" data-marvy_enable_topology_animation=\"false\" data-marvy_enable_gradient_animation=\"false\" data-marvy_enable_snow_animation=\"false\" data-marvy_enable_firework_animation=\"false\" data-marvy_enable_cloud_animation=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-8df48cd elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8df48cd\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c623ebf\" data-id=\"c623ebf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>ARTEFACTO Creamos Artefactos Digitales para Marcas extraordinarias Somos inventores de identidad, estrategia y contenido. Somos Artefacto IN. Hablemos de tu proyecto Cargando video&#8230; NUESTROS ARTEFACTOS MECANISMOS DE CRECIMIENTO Cada marca posee una maquinaria \u00fanica. Dise\u00f1amos los mecanismos que la hacen avanzar. I EL MOTOR DE IDENTIDAD BRANDING Creamos marcas con prop\u00f3sito, personalidad y direcci\u00f3n estrat\u00e9gica. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"_jf_save_progress":"","footnotes":""},"class_list":["post-5848","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/artefacto.in\/index.php\/wp-json\/wp\/v2\/pages\/5848","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/artefacto.in\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/artefacto.in\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/artefacto.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/artefacto.in\/index.php\/wp-json\/wp\/v2\/comments?post=5848"}],"version-history":[{"count":133,"href":"https:\/\/artefacto.in\/index.php\/wp-json\/wp\/v2\/pages\/5848\/revisions"}],"predecessor-version":[{"id":6150,"href":"https:\/\/artefacto.in\/index.php\/wp-json\/wp\/v2\/pages\/5848\/revisions\/6150"}],"wp:attachment":[{"href":"https:\/\/artefacto.in\/index.php\/wp-json\/wp\/v2\/media?parent=5848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}