<!DOCTYPE html><html lang="es"><head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Wood DaVinci | Puzzles y Estructuras 3D de Madera</title>
<link rel="canonical" href="https://www.woodsdavinci.com/">
<meta name="description" content="Descubre el mundo de los rompecabezas 3D de madera Premium. Vehículos espaciales, aviones y barcos.">
<link rel="icon" type="image/png" href="https://media.woodsdavinci.com/logos/logo%20DAVINCI.png">
<link rel="llms-txt" href="/llms.txt">
<link rel="sitemap" href="/sitemap.xml">
<link rel="service-doc" href="/api/docs">
<link rel="service-desc" href="/api/spec">
<link rel="api-catalog" href="/.well-known/api-catalog">
<link rel="agent-skills" href="/.well-known/agent-skills/index.json">
  <link rel="authorization_server" href="/.well-known/oauth-authorization-server">
  <link rel="oauth-protected-resource" href="/.well-known/oauth-protected-resource">
  <link rel="mcp" href="/.well-known/mcp.json">
    <link rel="manifest" href="/manifest.json">
    <meta name="theme-color" content="#D4A373">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="apple-mobile-web-app-title" content="Wood DaVinci">
    <link rel="apple-touch-icon" href="https://media.woodsdavinci.com/logos/logo%20DAVINCI.png">
    <meta name="facebook-domain-verification" content="rrc5exsy0vy67t6t66shgve1uvd2um" />
    <meta property="og:title" content="Wood DaVinci | Puzzles y Estructuras 3D de Madera">
    <meta property="og:description" content="Descubre el mundo de los rompecabezas 3D de madera Premium. Vehículos espaciales, aviones y barcos.">
    <meta property="og:image" content="https://media.woodsdavinci.com/vehiculos-velocidad/car-ford-mustang-eleanor/vehiculos-velocidad-car-ford-mustang-eleanor-portada-hd.webp">
    <meta property="og:url" content="https://www.woodsdavinci.com">
    <meta property="og:type" content="website">
    <meta name="twitter:card" content="summary_large_image">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link rel="preconnect" href="https://media.woodsdavinci.com" crossorigin>
    <link rel="preconnect" href="https://ajax.googleapis.com" crossorigin>
    <link rel="preconnect" href="https://checkout.epayco.co" crossorigin>
    <link rel="preload" href="https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600&family=Chakra+Petch:wght@500;600&family=JetBrains+Mono:wght@400;700&family=Cormorant+Garamond:ital,wght@1,400;1,500;1,600&display=swap" as="style" crossorigin="anonymous" onload="this.onload=null;this.rel='stylesheet'">
    <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600&family=Chakra+Petch:wght@500;600&family=JetBrains+Mono:wght@400;700&family=Cormorant+Garamond:ital,wght@1,400;1,500;1,600&display=swap"></noscript>


    <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
    
    <!-- Google tag (gtag.js) - Placeholder para ID de Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'G-XXXXXXXXXX');
    </script>
    <script>
    !function(f,b,e,v,n,t,s)
    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};
    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
    n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t,s)}(window, document,'script',
    'https://connect.facebook.net/en_US/fbevents.js');
    fbq('init', '2069208110317854');
    fbq('track', 'PageView');
    </script>
  <script type="module" crossorigin src="/assets/index-DS-A6G_f.js"></script>
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-C_ttsnZz.js">
  <link rel="modulepreload" crossorigin href="/assets/vendor-dnd-BSWqnc0x.js">
  <link rel="modulepreload" crossorigin href="/assets/vendor-misc-BWIWbGFT.js">
  <link rel="modulepreload" crossorigin href="/assets/vendor-query-DaKk4feE.js">
  <link rel="modulepreload" crossorigin href="/assets/vendor-motion-DAmbcHRR.js">
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BLDRVU9O.js">
  <link rel="modulepreload" crossorigin href="/assets/vendor-dates-D13QCdwS.js">
  <link rel="modulepreload" crossorigin href="/assets/vendor-scroll-D1DD3JSF.js">
  <link rel="modulepreload" crossorigin href="/assets/vendor-ui-DweVG-eO.js">
  <link rel="modulepreload" crossorigin href="/assets/vendor-utils-B5e9Kn3Q.js">
  <link rel="modulepreload" crossorigin href="/assets/vendor-state-DJfbyERn.js">
  <link rel="modulepreload" crossorigin href="/assets/config-BriuOFlj.js">
  <link rel="stylesheet" crossorigin href="/assets/index-BX37cgSz.css">
</head>
<body>
    <noscript><img height="1" width="1" style="display:none"
    src="https://www.facebook.com/tr?id=2069208110317854&ev=PageView&noscript=1" /></noscript>
    <div id="root"></div>
    <div id="modal-root"></div>
    <script>
      // SW Kill-Switch: desregistra automáticamente versiones obsoletas
      // Solo se ejecuta una vez por versión para evitar loops de recarga
      const SW_VERSION = 'v19';
      if ('serviceWorker' in navigator && window.location.hostname !== 'localhost' && window.location.hostname !== '127.0.0.1') {
        const prevVersion = localStorage.getItem('wdv_sw_cleanup');
        if (prevVersion !== SW_VERSION) {
          localStorage.setItem('wdv_sw_cleanup', SW_VERSION);
          window.addEventListener('load', async () => {
            try {
              const cacheNames = await caches.keys();
              await Promise.all(cacheNames.map(name => caches.delete(name)));

              const registrations = await navigator.serviceWorker.getRegistrations();
              for(let registration of registrations) {
                await registration.unregister();
              }

              if (registrations.length > 0) {
                window.location.reload();
              }
            } catch (err) {
              console.error('SW Error:', err);
            }
          });
        }
      }
    </script>


</body></html>
