{"id":10,"date":"2026-08-10T21:09:58","date_gmt":"2026-08-10T19:09:58","guid":{"rendered":"https:\/\/andrew.daviddelrio.es\/?page_id=10"},"modified":"2026-08-10T21:25:28","modified_gmt":"2026-08-10T19:25:28","slug":"inicio","status":"publish","type":"page","link":"https:\/\/andrew.daviddelrio.es\/","title":{"rendered":"Inicio"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"10\" class=\"elementor elementor-10\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-17ab840 e-con-full e-flex e-con e-parent\" data-id=\"17ab840\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;video&quot;,&quot;background_video_link&quot;:&quot;https:\\\/\\\/andrew.daviddelrio.es\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-background-cubizen-4-1.mp4&quot;}\">\n\t\t<div class=\"elementor-background-video-container elementor-hidden-mobile\">\n\t\t\t\t\t\t\t<video class=\"elementor-background-video-hosted\" role=\"presentation\" autoplay muted playsinline loop><\/video>\n\t\t\t\t\t<\/div>\t\t<div class=\"elementor-element elementor-element-1cb1c0a elementor-widget elementor-widget-heading\" data-id=\"1cb1c0a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Electricidad Andrew<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7fe29d1 e-flex e-con-boxed e-con e-parent\" data-id=\"7fe29d1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-cdaad86 e-con-full e-flex e-con e-child\" data-id=\"cdaad86\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-642351e elementor-widget elementor-widget-html\" data-id=\"642351e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"ea-electric-logo\" id=\"eaElectricLogo\">\r\n    <canvas class=\"ea-electric-canvas\"><\/canvas>\r\n\r\n    <div class=\"ea-electric-text\">\r\n        Electricidad Andrew\r\n    <\/div>\r\n<\/div>\r\n\r\n<style>\r\n.ea-electric-logo {\r\n    position: relative;\r\n    display: inline-block;\r\n    padding: 35px 45px;\r\n    overflow: visible;\r\n}\r\n\r\n.ea-electric-text {\r\n    position: relative;\r\n    z-index: 2;\r\n\r\n    font-family: \"Sora\", Arial, sans-serif;\r\n    font-size: clamp(2.5rem, 6vw, 6rem);\r\n    font-weight: 800;\r\n    line-height: 1;\r\n    letter-spacing: -0.055em;\r\n\r\n    color: #080808;\r\n\r\n    white-space: nowrap;\r\n}\r\n\r\n.ea-electric-canvas {\r\n    position: absolute;\r\n    inset: 0;\r\n\r\n    width: 100%;\r\n    height: 100%;\r\n\r\n    z-index: 3;\r\n\r\n    pointer-events: none;\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(() => {\r\n    const container = document.getElementById(\"eaElectricLogo\");\r\n    if (!container) return;\r\n\r\n    const canvas = container.querySelector(\".ea-electric-canvas\");\r\n    const text = container.querySelector(\".ea-electric-text\");\r\n    const ctx = canvas.getContext(\"2d\");\r\n\r\n    let width;\r\n    let height;\r\n    let dpr;\r\n\r\n    const arcs = [];\r\n\r\n    function resizeCanvas() {\r\n        const rect = container.getBoundingClientRect();\r\n\r\n        dpr = window.devicePixelRatio || 1;\r\n\r\n        width = rect.width;\r\n        height = rect.height;\r\n\r\n        canvas.width = width * dpr;\r\n        canvas.height = height * dpr;\r\n\r\n        canvas.style.width = width + \"px\";\r\n        canvas.style.height = height + \"px\";\r\n\r\n        ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n    }\r\n\r\n    function random(min, max) {\r\n        return Math.random() * (max - min) + min;\r\n    }\r\n\r\n    function createLightningPoints(x1, y1, x2, y2, displacement = 14) {\r\n        let points = [\r\n            { x: x1, y: y1 },\r\n            { x: x2, y: y2 }\r\n        ];\r\n\r\n        let currentDisplacement = displacement;\r\n\r\n        for (let iteration = 0; iteration < 5; iteration++) {\r\n            const newPoints = [points[0]];\r\n\r\n            for (let i = 0; i < points.length - 1; i++) {\r\n                const start = points[i];\r\n                const end = points[i + 1];\r\n\r\n                const midX = (start.x + end.x) \/ 2;\r\n                const midY = (start.y + end.y) \/ 2;\r\n\r\n                const dx = end.x - start.x;\r\n                const dy = end.y - start.y;\r\n\r\n                const length = Math.sqrt(dx * dx + dy * dy) || 1;\r\n\r\n                const normalX = -dy \/ length;\r\n                const normalY = dx \/ length;\r\n\r\n                const offset = random(\r\n                    -currentDisplacement,\r\n                    currentDisplacement\r\n                );\r\n\r\n                newPoints.push({\r\n                    x: midX + normalX * offset,\r\n                    y: midY + normalY * offset\r\n                });\r\n\r\n                newPoints.push(end);\r\n            }\r\n\r\n            points = newPoints;\r\n            currentDisplacement *= 0.52;\r\n        }\r\n\r\n        return points;\r\n    }\r\n\r\n    function drawPath(points, alpha, widthLine) {\r\n        ctx.beginPath();\r\n\r\n        ctx.moveTo(points[0].x, points[0].y);\r\n\r\n        for (let i = 1; i < points.length; i++) {\r\n            ctx.lineTo(points[i].x, points[i].y);\r\n        }\r\n\r\n        ctx.strokeStyle = `rgba(22, 150, 255, ${alpha})`;\r\n        ctx.lineWidth = widthLine;\r\n\r\n        ctx.stroke();\r\n    }\r\n\r\n    function drawLightning(points, intensity = 1) {\r\n\r\n        \/* Halo exterior *\/\r\n        ctx.save();\r\n\r\n        ctx.shadowBlur = 16;\r\n        ctx.shadowColor = \"rgba(0, 140, 255, 0.9)\";\r\n\r\n        drawPath(\r\n            points,\r\n            0.14 * intensity,\r\n            7\r\n        );\r\n\r\n        ctx.restore();\r\n\r\n\r\n        \/* Resplandor azul *\/\r\n        ctx.save();\r\n\r\n        ctx.shadowBlur = 7;\r\n        ctx.shadowColor = \"#008cff\";\r\n\r\n        drawPath(\r\n            points,\r\n            0.75 * intensity,\r\n            2.4\r\n        );\r\n\r\n        ctx.restore();\r\n\r\n\r\n        \/* N\u00facleo blanco *\/\r\n        ctx.save();\r\n\r\n        ctx.shadowBlur = 3;\r\n        ctx.shadowColor = \"#ffffff\";\r\n\r\n        ctx.beginPath();\r\n\r\n        ctx.moveTo(points[0].x, points[0].y);\r\n\r\n        for (let i = 1; i < points.length; i++) {\r\n            ctx.lineTo(points[i].x, points[i].y);\r\n        }\r\n\r\n        ctx.strokeStyle = `rgba(225,245,255,${0.95 * intensity})`;\r\n        ctx.lineWidth = 0.75;\r\n\r\n        ctx.stroke();\r\n\r\n        ctx.restore();\r\n    }\r\n\r\n    function getRandomTextPoint() {\r\n        const containerRect = container.getBoundingClientRect();\r\n        const textRect = text.getBoundingClientRect();\r\n\r\n        return {\r\n            left: textRect.left - containerRect.left,\r\n            right: textRect.right - containerRect.left,\r\n            top: textRect.top - containerRect.top,\r\n            bottom: textRect.bottom - containerRect.top,\r\n            width: textRect.width,\r\n            height: textRect.height\r\n        };\r\n    }\r\n\r\n    function createArc() {\r\n        const rect = getRandomTextPoint();\r\n\r\n        const type = Math.floor(random(0, 4));\r\n\r\n        let x1;\r\n        let y1;\r\n        let x2;\r\n        let y2;\r\n\r\n        if (type === 0) {\r\n\r\n            \/* Descarga sobre la parte superior *\/\r\n            x1 = random(rect.left, rect.right - 80);\r\n            x2 = x1 + random(40, 130);\r\n\r\n            y1 = rect.top + random(-3, 5);\r\n            y2 = rect.top + random(-4, 5);\r\n\r\n        } else if (type === 1) {\r\n\r\n            \/* Descarga inferior *\/\r\n            x1 = random(rect.left, rect.right - 80);\r\n            x2 = x1 + random(50, 150);\r\n\r\n            y1 = rect.bottom + random(-4, 3);\r\n            y2 = rect.bottom + random(-3, 5);\r\n\r\n        } else if (type === 2) {\r\n\r\n            \/* Peque\u00f1o salto diagonal *\/\r\n            x1 = random(rect.left, rect.right);\r\n            y1 = random(rect.top, rect.bottom);\r\n\r\n            x2 = x1 + random(-50, 50);\r\n            y2 = y1 + random(-25, 25);\r\n\r\n        } else {\r\n\r\n            \/* Descarga entre dos puntos del texto *\/\r\n            x1 = random(rect.left, rect.right);\r\n            x2 = random(rect.left, rect.right);\r\n\r\n            y1 = random(rect.top, rect.bottom);\r\n            y2 = random(rect.top, rect.bottom);\r\n        }\r\n\r\n        const distance = Math.hypot(\r\n            x2 - x1,\r\n            y2 - y1\r\n        );\r\n\r\n        if (distance < 25) return;\r\n\r\n        arcs.push({\r\n            x1,\r\n            y1,\r\n            x2,\r\n            y2,\r\n\r\n            life: random(40, 110),\r\n            maxLife: 110,\r\n\r\n            strength: random(0.7, 1),\r\n\r\n            branches: Math.random() > 0.65\r\n        });\r\n    }\r\n\r\n    function createBranch(points) {\r\n        if (points.length < 10) return;\r\n\r\n        const index = Math.floor(\r\n            random(points.length * 0.25, points.length * 0.75)\r\n        );\r\n\r\n        const start = points[index];\r\n\r\n        const angle = random(-Math.PI, Math.PI);\r\n\r\n        const distance = random(12, 38);\r\n\r\n        const end = {\r\n            x: start.x + Math.cos(angle) * distance,\r\n            y: start.y + Math.sin(angle) * distance\r\n        };\r\n\r\n        const branch = createLightningPoints(\r\n            start.x,\r\n            start.y,\r\n            end.x,\r\n            end.y,\r\n            7\r\n        );\r\n\r\n        drawLightning(branch, 0.35);\r\n    }\r\n\r\n    function render() {\r\n        ctx.clearRect(0, 0, width, height);\r\n\r\n        for (let i = arcs.length - 1; i >= 0; i--) {\r\n\r\n            const arc = arcs[i];\r\n\r\n            arc.life -= 16.6;\r\n\r\n            if (arc.life <= 0) {\r\n                arcs.splice(i, 1);\r\n                continue;\r\n            }\r\n\r\n            const progress = arc.life \/ arc.maxLife;\r\n\r\n            const intensity = Math.min(\r\n                1,\r\n                progress * 2\r\n            ) * arc.strength;\r\n\r\n            const points = createLightningPoints(\r\n                arc.x1,\r\n                arc.y1,\r\n                arc.x2,\r\n                arc.y2,\r\n                random(7, 17)\r\n            );\r\n\r\n            drawLightning(\r\n                points,\r\n                intensity\r\n            );\r\n\r\n            if (arc.branches && Math.random() > 0.55) {\r\n                createBranch(points);\r\n            }\r\n        }\r\n\r\n        requestAnimationFrame(render);\r\n    }\r\n\r\n    function electricalSequence() {\r\n\r\n        \/* Descarga principal *\/\r\n        createArc();\r\n\r\n        \/* Segundo destello muy pr\u00f3ximo *\/\r\n        setTimeout(() => {\r\n            if (Math.random() > 0.25) {\r\n                createArc();\r\n            }\r\n        }, random(35, 90));\r\n\r\n        \/* Microdescarga secundaria *\/\r\n        setTimeout(() => {\r\n            if (Math.random() > 0.55) {\r\n                createArc();\r\n            }\r\n        }, random(100, 180));\r\n\r\n        \/* Intervalo irregular para evitar apariencia de animaci\u00f3n *\/\r\n        setTimeout(\r\n            electricalSequence,\r\n            random(500, 1800)\r\n        );\r\n    }\r\n\r\n    resizeCanvas();\r\n    render();\r\n    electricalSequence();\r\n\r\n    window.addEventListener(\r\n        \"resize\",\r\n        resizeCanvas\r\n    );\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Electricidad Andrew Electricidad Andrew<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-10","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/andrew.daviddelrio.es\/index.php\/wp-json\/wp\/v2\/pages\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/andrew.daviddelrio.es\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/andrew.daviddelrio.es\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/andrew.daviddelrio.es\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/andrew.daviddelrio.es\/index.php\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":4,"href":"https:\/\/andrew.daviddelrio.es\/index.php\/wp-json\/wp\/v2\/pages\/10\/revisions"}],"predecessor-version":[{"id":23,"href":"https:\/\/andrew.daviddelrio.es\/index.php\/wp-json\/wp\/v2\/pages\/10\/revisions\/23"}],"wp:attachment":[{"href":"https:\/\/andrew.daviddelrio.es\/index.php\/wp-json\/wp\/v2\/media?parent=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}