{"id":2521,"date":"2026-04-03T10:37:16","date_gmt":"2026-04-03T09:37:16","guid":{"rendered":"https:\/\/szael.com\/?page_id=2521"},"modified":"2026-04-03T10:51:58","modified_gmt":"2026-04-03T09:51:58","slug":"underm","status":"publish","type":"page","link":"https:\/\/szael.com\/en\/underm\/","title":{"rendered":"underm"},"content":{"rendered":"\n<div id=\"maintenance-wrapper\" style=\"\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100vw;\n    height: 100vh;\n    background-color: #000000;\n    overflow: hidden;\n    z-index: 999999;\n    margin: 0;\n    padding: 0;\n\">\n    <div style=\"\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        transform: translate(-50%, -50%);\n        z-index: 10;\n        text-align: center;\n        pointer-events: none;\n        width: 100%;\n    \">\n        <img decoding=\"async\" src=\"https:\/\/szael.com\/wp-content\/uploads\/2026\/01\/Szael-logo_001-scaled.webp\" alt=\"Szael Logo\" style=\"\n            max-width: 320px;\n            height: auto;\n            margin-bottom: 20px;\n            filter: drop-shadow(0px 0px 25px rgba(47, 177, 166, 0.6));\n        \">\n        <div style=\"\n            font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n            font-size: 26px;\n            font-weight: bold;\n            text-transform: uppercase;\n            letter-spacing: 0.2em;\n            color: #FFFFFF;\n            text-shadow: 0px 4px 15px rgba(0,0,0,0.8);\n        \">Under maintenance<\/div>\n    <\/div>\n\n    <div id=\"gravity-canvas-container\" style=\"\n        position: absolute; \n        top: 0; \n        left: 0; \n        width: 100%; \n        height: 100%; \n        z-index: 1;\n    \"><\/div>\n<\/div>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/three.js\/r128\/three.min.js\"><\/script>\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        \n        \/\/ 1. Alapbe\u00e1ll\u00edt\u00e1sok\n        const container = document.getElementById('gravity-canvas-container');\n        const scene = new THREE.Scene();\n        scene.fog = new THREE.FogExp2(0x000000, 0.012);\n\n        const camera = new THREE.PerspectiveCamera(45, window.innerWidth \/ window.innerHeight, 0.1, 1000);\n        camera.position.set(0, -70, 50);\n        camera.lookAt(0, 0, 0);\n\n        const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: false });\n        renderer.setSize(window.innerWidth, window.innerHeight);\n        renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\n        container.appendChild(renderer.domElement);\n\n        \/\/ 2. T\u00e9rid\u0151 R\u00e1cs\n        const gridSize = 400;\n        const segments = 250; \n        const geometry = new THREE.PlaneGeometry(gridSize, gridSize, segments, segments);\n        const originalPositions = new Float32Array(geometry.attributes.position.array);\n\n        const gridMaterial = new THREE.MeshBasicMaterial({ \n            color: 0x4DD1C6,\n            wireframe: true,\n            transparent: true,\n            opacity: 0.65\n        });\n        const grid = new THREE.Mesh(geometry, gridMaterial);\n        scene.add(grid);\n\n        \/\/ 3. Napok \u00e9s Bolyg\u00f3k l\u00e9trehoz\u00e1sa\n        const sunGeom = new THREE.SphereGeometry(3.5, 64, 64);\n        const planetGeom = new THREE.SphereGeometry(0.8, 32, 32);\n\n        \/\/ --- \u00daJ RAGYOG\u00c1S (GLOW) GENER\u00c1L\u00c1S SPRITE-TAL ---\n        function createGlowSprite(colorHex, scale) {\n            const canvas = document.createElement('canvas');\n            canvas.width = 128;\n            canvas.height = 128;\n            const context = canvas.getContext('2d');\n            \n            const gradient = context.createRadialGradient(64, 64, 0, 64, 64, 64);\n            const color = new THREE.Color(colorHex);\n            const r = Math.round(color.r * 255);\n            const g = Math.round(color.g * 255);\n            const b = Math.round(color.b * 255);\n            \n            gradient.addColorStop(0, `rgba(${r}, ${g}, ${b}, 1)`);\n            gradient.addColorStop(0.3, `rgba(${r}, ${g}, ${b}, 0.8)`);\n            gradient.addColorStop(0.6, `rgba(${r}, ${g}, ${b}, 0.3)`);\n            gradient.addColorStop(1, 'rgba(0,0,0,0)');\n            \n            context.fillStyle = gradient;\n            context.fillRect(0, 0, 128, 128);\n\n            const texture = new THREE.CanvasTexture(canvas);\n            const material = new THREE.SpriteMaterial({ \n                map: texture, \n                color: 0xffffff, \n                transparent: true, \n                blending: THREE.AdditiveBlending,\n                depthWrite: false\n            });\n            const sprite = new THREE.Sprite(material);\n            sprite.scale.set(scale, scale, 1);\n            return sprite;\n        }\n\n        \/\/ --- F\u0151 Nap (Eg\u00e9r k\u00f6veti, Sz\u00edn: #2FB1A6) ---\n        const sun1Mat = new THREE.MeshStandardMaterial({ color: 0xffffff, emissive: 0x2FB1A6, roughness: 0.2 });\n        const sun1 = new THREE.Mesh(sunGeom, sun1Mat);\n        sun1.add(createGlowSprite(0x2FB1A6, 22));\n        scene.add(sun1);\n        const light1 = new THREE.PointLight(0x2FB1A6, 3, 100);\n        scene.add(light1);\n        const planet1 = new THREE.Mesh(planetGeom, new THREE.MeshStandardMaterial({ color: 0xffffff, roughness: 0.5 }));\n        scene.add(planet1);\n\n        \/\/ --- Mozg\u00f3 Nap 1 (Sz\u00edn: #E9522A) ---\n        const sun2Mat = new THREE.MeshStandardMaterial({ color: 0xffffff, emissive: 0xE9522A, roughness: 0.2 });\n        const sun2 = new THREE.Mesh(sunGeom, sun2Mat);\n        sun2.add(createGlowSprite(0xE9522A, 22));\n        scene.add(sun2);\n        const light2 = new THREE.PointLight(0xE9522A, 2.5, 100);\n        scene.add(light2);\n        const planet2 = new THREE.Mesh(planetGeom, new THREE.MeshStandardMaterial({ color: 0xaaaaaa, roughness: 0.5 }));\n        scene.add(planet2);\n\n        \/\/ --- Mozg\u00f3 Nap 2 (Sz\u00edn: #F29F4B) ---\n        const sun3Mat = new THREE.MeshStandardMaterial({ color: 0xffffff, emissive: 0xF29F4B, roughness: 0.2 });\n        const sun3 = new THREE.Mesh(sunGeom, sun3Mat);\n        sun3.add(createGlowSprite(0xF29F4B, 22));\n        scene.add(sun3);\n        const light3 = new THREE.PointLight(0xF29F4B, 2.5, 100);\n        scene.add(light3);\n        \n        const planet3a = new THREE.Mesh(new THREE.SphereGeometry(1, 32, 32), new THREE.MeshStandardMaterial({ color: 0xdddddd }));\n        const planet3b = new THREE.Mesh(new THREE.SphereGeometry(0.5, 32, 32), new THREE.MeshStandardMaterial({ color: 0x888888 }));\n        scene.add(planet3a);\n        scene.add(planet3b);\n\n        scene.add(new THREE.AmbientLight(0xffffff, 0.2));\n\n        \/\/ 4. Interakci\u00f3 be\u00e1ll\u00edt\u00e1sa\n        const raycaster = new THREE.Raycaster();\n        const mouse = new THREE.Vector2(0, 0);\n        let targetPoint = new THREE.Vector3(0, 0, 0);\n        let isMouseActive = false;\n\n        const raycastPlane = new THREE.Mesh(new THREE.PlaneGeometry(600, 600), new THREE.MeshBasicMaterial({ visible: false }));\n        scene.add(raycastPlane);\n\n        function updateMousePosition(clientX, clientY) {\n            mouse.x = (clientX \/ window.innerWidth) * 2 - 1;\n            mouse.y = -(clientY \/ window.innerHeight) * 2 + 1;\n            isMouseActive = true;\n        }\n\n        window.addEventListener('mousemove', function(e) { updateMousePosition(e.clientX, e.clientY); });\n        window.addEventListener('touchmove', function(e) {\n            if (e.touches.length > 0) updateMousePosition(e.touches[0].clientX, e.touches[0].clientY);\n        }, { passive: true });\n        window.addEventListener('mouseleave', function() { isMouseActive = false; });\n        window.addEventListener('touchend', function() { isMouseActive = false; });\n\n        \/\/ 5. Anim\u00e1ci\u00f3 \u00e9s fizika\n        const depthMain = 18; const radiusMain = 22;\n        const depthFix1 = 15; const radiusFix1 = 18;\n        const depthFix2 = 12; const radiusFix2 = 15;\n        \n        const pDepth = 4.5; const pRadius = 6;\n        const pSmallDepth = 2.5; const pSmallRadius = 4;\n\n        function animate() {\n            requestAnimationFrame(animate);\n            const time = Date.now() * 0.001;\n\n            if (isMouseActive) {\n                raycaster.setFromCamera(mouse, camera);\n                const intersects = raycaster.intersectObject(raycastPlane);\n                if (intersects.length > 0) targetPoint.lerp(intersects[0].point, 0.05);\n            } else {\n                targetPoint.lerp(new THREE.Vector3(0, 0, 0), 0.02);\n            }\n\n            const cx = targetPoint.x;\n            const cy = targetPoint.y;\n\n            \/\/ --- SOKKAL LASSABB MOZG\u00d3 NAPOK ---\n            const dynFix1X = Math.sin(time * 0.05) * 45; \/\/ 0.4 helyett 0.05 -> nagyon lass\u00fa\n            const dynFix1Y = 20; \n\n            const dynFix2X = Math.cos(time * 0.07) * 50; \/\/ 0.5 helyett 0.07 -> nagyon lass\u00fa\n            const dynFix2Y = -15;\n\n            \/\/ -- Bolyg\u00f3k keringet\u00e9se --\n            planet1.position.set(cx + Math.cos(time * 1.5) * 8, cy + Math.sin(time * 1.5) * 8, 0);\n            planet2.position.set(dynFix1X + Math.cos(time * 1.2) * 6, dynFix1Y + Math.sin(time * 1.2) * 6, 0);\n            planet3a.position.set(dynFix2X + Math.cos(time * 0.8) * 10, dynFix2Y + Math.sin(time * 0.8) * 10, 0);\n            planet3b.position.set(dynFix2X + Math.cos(-time * 2.5) * 5, dynFix2Y + Math.sin(-time * 2.5) * 5, 0);\n\n            const p1x = planet1.position.x, p1y = planet1.position.y;\n            const p2x = planet2.position.x, p2y = planet2.position.y;\n            const p3ax = planet3a.position.x, p3ay = planet3a.position.y;\n            const p3bx = planet3b.position.x, p3by = planet3b.position.y;\n\n            \/\/ -- T\u00e9rid\u0151 r\u00e1cs sz\u00e1mol\u00e1sa --\n            const positions = geometry.attributes.position.array;\n            for (let i = 0; i < positions.length; i += 3) {\n                const x = originalPositions[i];\n                const y = originalPositions[i + 1];\n\n                const dMainSq = (x - cx) * (x - cx) + (y - cy) * (y - cy);\n                const dFix1Sq = (x - dynFix1X) * (x - dynFix1X) + (y - dynFix1Y) * (y - dynFix1Y);\n                const dFix2Sq = (x - dynFix2X) * (x - dynFix2X) + (y - dynFix2Y) * (y - dynFix2Y);\n\n                const dP1Sq = (x - p1x) * (x - p1x) + (y - p1y) * (y - p1y);\n                const dP2Sq = (x - p2x) * (x - p2x) + (y - p2y) * (y - p2y);\n                const dP3aSq = (x - p3ax) * (x - p3ax) + (y - p3ay) * (y - p3ay);\n                const dP3bSq = (x - p3bx) * (x - p3bx) + (y - p3by) * (y - p3by);\n\n                const zMain = -depthMain * Math.exp(-dMainSq \/ (radiusMain * radiusMain));\n                const zFix1 = -depthFix1 * Math.exp(-dFix1Sq \/ (radiusFix1 * radiusFix1));\n                const zFix2 = -depthFix2 * Math.exp(-dFix2Sq \/ (radiusFix2 * radiusFix2));\n                \n                const zP1 = -pDepth * Math.exp(-dP1Sq \/ (pRadius * pRadius));\n                const zP2 = -pDepth * Math.exp(-dP2Sq \/ (pRadius * pRadius));\n                const zP3a = -pDepth * Math.exp(-dP3aSq \/ (pRadius * pRadius));\n                const zP3b = -pSmallDepth * Math.exp(-dP3bSq \/ (pSmallRadius * pSmallRadius));\n\n                positions[i + 2] = zMain + zFix1 + zFix2 + zP1 + zP2 + zP3a + zP3b;\n            }\n            geometry.attributes.position.needsUpdate = true;\n\n            \/\/ -- Napok magass\u00e1gi poz\u00edci\u00f3ja --\n            const zSun1 = -depthMain + 1.5; \n            sun1.position.set(cx, cy, zSun1);\n            light1.position.set(cx, cy, zSun1 + 5);\n\n            sun2.position.set(dynFix1X, dynFix1Y, -depthFix1 + 1.5);\n            light2.position.set(dynFix1X, dynFix1Y, -depthFix1 + 5);\n\n            sun3.position.set(dynFix2X, dynFix2Y, -depthFix2 + 1.5);\n            light3.position.set(dynFix2X, dynFix2Y, -depthFix2 + 5);\n\n            const p1DistSq = (p1x - cx) * (p1x - cx) + (p1y - cy) * (p1y - cy);\n            planet1.position.z = -depthMain * Math.exp(-p1DistSq \/ (radiusMain * radiusMain)) + 0.5;\n\n            const p2DistSq = (p2x - dynFix1X) * (p2x - dynFix1X) + (p2y - dynFix1Y) * (p2y - dynFix1Y);\n            planet2.position.z = -depthFix1 * Math.exp(-p2DistSq \/ (radiusFix1 * radiusFix1)) + 0.5;\n\n            const p3aDistSq = (p3ax - dynFix2X) * (p3ax - dynFix2X) + (p3ay - dynFix2Y) * (p3ay - dynFix2Y);\n            planet3a.position.z = -depthFix2 * Math.exp(-p3aDistSq \/ (radiusFix2 * radiusFix2)) + 0.5;\n\n            const p3bDistSq = (p3bx - dynFix2X) * (p3bx - dynFix2X) + (p3by - dynFix2Y) * (p3by - dynFix2Y);\n            planet3b.position.z = -depthFix2 * Math.exp(-p3bDistSq \/ (radiusFix2 * radiusFix2)) + 0.5;\n\n            renderer.render(scene, camera);\n        }\n\n        animate();\n\n        window.addEventListener('resize', function() {\n            camera.aspect = window.innerWidth \/ window.innerHeight;\n            camera.updateProjectionMatrix();\n            renderer.setSize(window.innerWidth, window.innerHeight);\n        });\n    });\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Under maintenance<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2521","page","type-page","status-publish","hentry"],"aioseo_notices":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"trp-custom-language-flag":false},"uagb_author_info":{"display_name":"dudas.danield@gmail.com","author_link":"https:\/\/szael.com\/en\/author\/dudas-danieldgmail-com\/"},"uagb_comment_info":0,"uagb_excerpt":"Under maintenance","_links":{"self":[{"href":"https:\/\/szael.com\/en\/wp-json\/wp\/v2\/pages\/2521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/szael.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/szael.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/szael.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/szael.com\/en\/wp-json\/wp\/v2\/comments?post=2521"}],"version-history":[{"count":13,"href":"https:\/\/szael.com\/en\/wp-json\/wp\/v2\/pages\/2521\/revisions"}],"predecessor-version":[{"id":2536,"href":"https:\/\/szael.com\/en\/wp-json\/wp\/v2\/pages\/2521\/revisions\/2536"}],"wp:attachment":[{"href":"https:\/\/szael.com\/en\/wp-json\/wp\/v2\/media?parent=2521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}