{"id":1407,"date":"2023-11-24T15:35:41","date_gmt":"2023-11-24T15:35:41","guid":{"rendered":"https:\/\/tadanoworld.com\/europe\/happy-holidays\/"},"modified":"2023-12-01T12:23:38","modified_gmt":"2023-12-01T12:23:38","slug":"happy-holidays","status":"publish","type":"page","link":"https:\/\/tadanoworld.com\/europe\/en\/happy-holidays\/","title":{"rendered":"Happy Holidays"},"content":{"rendered":"<div class=\"experience model__christmas-room\">\n\n    <script type=\"text\/javascript\">\n        const experienceAssetPath = 'https:\/\/tadanoworld.com\/europe\/wp-content\/themes\/tadano\/assets\/dist\/images\/webgl\/static\/';\n        const experienceModel = 'christmas-room';\n        const experienceModelScale = '7';\n        const experienceModelRotation = '-0.75';\n        const experienceHotspots = [{\"element\":\"video\",\"position\":[-1.5,1.14,-1.1],\"mobilePosition\":[29,35]},{\"element\":\"hole\",\"position\":[-0.32,0.16,2.52],\"mobilePosition\":[47,73]},{\"element\":\"toy\",\"position\":[0.46,0.65,1.73],\"mobilePosition\":[56,53]},{\"element\":\"chimney\",\"position\":[1.44,0.85,-0.03],\"mobilePosition\":[62,43]},{\"element\":\"mailbox\",\"position\":[2.52,0.36,1.24],\"mobilePosition\":[82,50]}]    <\/script>\n\n    <div class=\"experience-inner\">\n\n        <div class=\"ring-loader\"><div><\/div><div><\/div><div><\/div><div><\/div><\/div>\n\n        <style type=\"text\/css\">\n            canvas.webgl {\n                background-image: url('https:\/\/tadanoworld.com\/europe\/wp-content\/themes\/tadano\/assets\/dist\/images\/webgl\/static\/models\/christmas-room\/desktop-preload.png');\n            }\n        <\/style>\n        <canvas class=\"webgl\"><\/canvas>\n\n                    <div class=\"hotspots\">\n                                        <div class=\"point hole\" style=\"transform: translateX(-5000px) translateY(-5000px);\">\n                            <div class=\"pulse\"><\/div>\n                            <div class=\"label\">\n                                <div class=\"button animate__animated\">\n                                                                            <a \n                                            href=\"#tree\"\n                                                                                    >\n                                            Plant your tree                                        <\/a>\n                                                                    <\/div>\n                            <\/div>\n                        <\/div>\n                    \n                                        <div class=\"point toy\" style=\"transform: translateX(-5000px) translateY(-5000px);\">\n                            <div class=\"pulse\"><\/div>\n                            <div class=\"label\">\n                                <div class=\"button animate__animated\">\n                                                                            <a \n                                            href=\"https:\/\/tadanoworld.com\/europe\/en\/highscore-game\/\"\n                                                                                    >\n                                            Play Holiday Game                                        <\/a>\n                                                                    <\/div>\n                            <\/div>\n                        <\/div>\n                    \n                                        <div class=\"point video\" style=\"transform: translateX(-5000px) translateY(-5000px);\">\n                            <div class=\"pulse\"><\/div>\n                            <div class=\"label\">\n                                <div class=\"button animate__animated\">\n                                                                            <a \n                                            href=\"#video\"\n                                                                                    >\n                                            Watch Our Film                                        <\/a>\n                                                                    <\/div>\n                            <\/div>\n                        <\/div>\n                    \n                                        <div class=\"point mailbox\" style=\"transform: translateX(-5000px) translateY(-5000px);\">\n                            <div class=\"pulse\"><\/div>\n                            <div class=\"label\">\n                                <div class=\"button animate__animated\">\n                                                                            <a \n                                            href=\"#greeting\"\n                                                                                    >\n                                            Send a Holiday Greeting                                        <\/a>\n                                                                    <\/div>\n                            <\/div>\n                        <\/div>\n                    \n                                        <div class=\"point chimney\" style=\"transform: translateX(-5000px) translateY(-5000px);\">\n                            <div class=\"pulse\"><\/div>\n                            <div class=\"label\">\n                                <div class=\"button animate__animated\">\n                                                                            <a \n                                            href=\"#wish\"\n                                                                                    >\n                                            Wish List                                        <\/a>\n                                                                    <\/div>\n                            <\/div>\n                        <\/div>\n                    \n                            <\/div>\n            \n    <\/div>\n\n    <div class=\"experience-mobile\">\n        <div class=\"experience-mobile-inner\" id=\"experience-mobile-inner\">\n            <div class=\"experience-mobile-scroll-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/tadanoworld.com\/europe\/wp-content\/themes\/tadano\/assets\/dist\/images\/webgl\/static\/models\/christmas-room\/mobile-fallback.png\" alt=\"\">\n                                    <div class=\"hotspots\">\n                                                        <div class=\"point hole\" style=\"left:47%; top:73%\">\n                                    <div class=\"pulse\"><\/div>\n                                    <div class=\"label\">\n                                        <div class=\"button animate__animated\">\n                                                                                            <a \n                                                    href=\"#tree\"\n                                                                                                    >\n                                                    Plant your tree                                                <\/a>\n                                                                                    <\/div>\n                                    <\/div>\n                                <\/div>\n                            \n                                                        <div class=\"point toy\" style=\"left:56%; top:53%\">\n                                    <div class=\"pulse\"><\/div>\n                                    <div class=\"label\">\n                                        <div class=\"button animate__animated\">\n                                                                                            <a \n                                                    href=\"https:\/\/tadanoworld.com\/europe\/en\/highscore-game\/\"\n                                                                                                    >\n                                                    Play Holiday Game                                                <\/a>\n                                                                                    <\/div>\n                                    <\/div>\n                                <\/div>\n                            \n                                                        <div class=\"point video\" style=\"left:29%; top:35%\">\n                                    <div class=\"pulse\"><\/div>\n                                    <div class=\"label\">\n                                        <div class=\"button animate__animated\">\n                                                                                            <a \n                                                    href=\"#video\"\n                                                                                                    >\n                                                    Watch Our Film                                                <\/a>\n                                                                                    <\/div>\n                                    <\/div>\n                                <\/div>\n                            \n                                                        <div class=\"point mailbox\" style=\"left:82%; top:50%\">\n                                    <div class=\"pulse\"><\/div>\n                                    <div class=\"label\">\n                                        <div class=\"button animate__animated\">\n                                                                                            <a \n                                                    href=\"#greeting\"\n                                                                                                    >\n                                                    Send a Holiday Greeting                                                <\/a>\n                                                                                    <\/div>\n                                    <\/div>\n                                <\/div>\n                            \n                                                        <div class=\"point chimney\" style=\"left:62%; top:43%\">\n                                    <div class=\"pulse\"><\/div>\n                                    <div class=\"label\">\n                                        <div class=\"button animate__animated\">\n                                                                                            <a \n                                                    href=\"#wish\"\n                                                                                                    >\n                                                    Wish List                                                <\/a>\n                                                                                    <\/div>\n                                    <\/div>\n                                <\/div>\n                            \n                                            <\/div>\n                            <\/div>\n        <\/div>\n    <\/div>\n\n    \n\n<\/div>\n\n<div class=\"experience-overlays\">\n                            \n                        <div class=\"overlay centered\" id=\"overlay-hole\">\n                            <div class=\"overlay-wrapper\">\n                                <div class=\"close-overlay\">\n                                    <div class=\"close-btn\"><\/div>\n                                <\/div>\n                                <div class=\"container\">\n                                    <h2>Select a topic<\/h2>\n                                                                 <\/div>\n                            <\/div>\n                        <\/div>\n                        \n                            \n                       \n                                \n                        <div class=\"overlay centered\" id=\"overlay-toy\">\n                            <div class=\"overlay-wrapper\">\n                                <div class=\"close-overlay\">\n                                    <div class=\"close-btn\"><\/div>\n                                <\/div>\n                                <div class=\"container\">\n                                    <h2>Select a topic<\/h2>\n                                                                                     <a \n                                                        class=\"btn\" \n                                                        href=\"https:\/\/tadanoworld.com\/europe\/en\/highscore-game\/\"\n                                                                                                                >\n                                                        Tetris                                                    <\/a><br>\n                                                                                <\/div>\n                            <\/div>\n                        <\/div>\n                        \n                            \n                       \n                                \n                        <div class=\"overlay centered\" id=\"overlay-video\">\n                            <div class=\"overlay-wrapper\">\n                                <div class=\"close-overlay\">\n                                    <div class=\"close-btn\"><\/div>\n                                <\/div>\n                                <div class=\"container\">\n                                    <h2>Select a topic<\/h2>\n                                                                 <\/div>\n                            <\/div>\n                        <\/div>\n                        \n                            \n                       \n                                \n                        <div class=\"overlay centered\" id=\"overlay-mailbox\">\n                            <div class=\"overlay-wrapper\">\n                                <div class=\"close-overlay\">\n                                    <div class=\"close-btn\"><\/div>\n                                <\/div>\n                                <div class=\"container\">\n                                    <h2>Select a topic<\/h2>\n                                                                 <\/div>\n                            <\/div>\n                        <\/div>\n                        \n                            \n                       \n                                \n                        <div class=\"overlay centered\" id=\"overlay-chimney\">\n                            <div class=\"overlay-wrapper\">\n                                <div class=\"close-overlay\">\n                                    <div class=\"close-btn\"><\/div>\n                                <\/div>\n                                <div class=\"container\">\n                                    <h2>Select a topic<\/h2>\n                                                                 <\/div>\n                            <\/div>\n                        <\/div>\n                        \n                            \n                       \n                <\/div>\n\n\n<div class=\"overlay\" id=\"tree\">\n    <div class=\"overlay-wrapper\">\n        <div class=\"close-overlay\">\n            <div class=\"close-btn\"><\/div>\n        <\/div>\n        <div class=\"container\">\n            \n\n<h1 class=\"wp-block-heading\">Plant your tree<\/h1>\n\n\n\n<p>Give back to the planet this holiday season and help us to plant trees. For every tree planted digitally, Tadano will make a donation supporting reforestation projects around the world to plant a physical tree.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Recently contributed:<\/h3>\n\n\n<p>\nElisabet, Sweden<br>Benjamin, Germany<br>Matthias, Germany<br><\/p>\n\n\n<h3 class=\"wp-block-heading\">Fill out the form below to start planting your tree.<\/h3>\n\n\n\n\n  <div class=\"cookieconsent-optout-marketing cookieconsent\" style=\"background-image: url('https:\/\/tadanoworld.com\/europe\/wp-content\/themes\/tadano\/assets\/dist\/images\/nocookie_form.jpg');\">\n        <div class=\"wrapper\">\n          <h3>You need to accept marketing cookies to view this content<\/h3>\n          <a href=\"javascript: Cookiebot.submitCustomConsent(false, false, true)\" class=\"btn btn-outline-white\">accept<\/a>\n      <\/div>\n  <\/div>\n  <script type=\"text\/javascript\">\n    function CookiebotCallback_OnAccept() {\n     Cookiebot.changed && document.location.reload();\n    }\n  <\/script>\n\n\n\n\n\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div class=\"overlay\" id=\"video\">\n    <div class=\"overlay-wrapper\">\n        <div class=\"close-overlay\">\n            <div class=\"close-btn\"><\/div>\n        <\/div>\n        <div class=\"container\">\n            \n\n<h1 class=\"wp-block-heading\">Our true mission: Zero Emissions<\/h1>\n\n\n\n<p>Watch our video to learn more about our mission to reduce emissions for a healthier and sustainable future for all.<\/p>\n\n\n<section class=\"video-block\">\n  <div class=\"video-box\">\n        <a aria-labelledby=\"video-txt\" data-fancybox href=\"https:\/\/www.youtube.com\/watch?v=7Om3II1C91M\" class=\"video\">\n      <span class=\"play-btn\"><\/span>\n              <div class=\"bg-stretch\" >\n          <span data-srcset=\"https:\/\/img.youtube.com\/vi\/7Om3II1C91M\/hqdefault.jpg, https:\/\/img.youtube.com\/vi\/7Om3II1C91M\/hqdefault.jpg 2x\"><\/span>\n        <\/div>\n          <\/a>\n    <div class=\"video-txt\">\n          <\/div>\n  <\/div>\n<\/section>\n\n\n<p>If you would like to know more about our environmentally friendly technologies visit our website.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/group.tadano.com\/europe\/en\/technology\/environmentally-friendly-technologies\/\" target=\"_blank\" rel=\"noreferrer noopener\">DISCOVER OUR GREEN SOLUTIONS<\/a><\/div>\n<\/div>\n\n\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div class=\"overlay\" id=\"greeting\">\n    <div class=\"overlay-wrapper\">\n        <div class=\"close-overlay\">\n            <div class=\"close-btn\"><\/div>\n        <\/div>\n        <div class=\"container\">\n            \n\n<h1 class=\"wp-block-heading\">Send a Holiday Greeting<\/h1>\n\n\n\n<p>Choose your design below and send a holiday greeting to your family and friends.<\/p>\n\n\n\n<section class=\"holiday-greeting-block contact-form-block \">\n    <div class=\"container\">\n        <form class=\"contact-form\" id=\"form_xmax_card\" action=\"\" method=\"post\">\n            <div class=\"row\">\n                <div class=\"card-design\">\n                    <div class=\"card active\" id=\"AC_XMAS_CARD\">\n                        <img decoding=\"async\" src=\"https:\/\/tadanoworld.com\/europe\/wp-content\/themes\/tadano\/assets\/dist\/images\/AC_XMAS_CARD_thumb.jpg\">\n                    <\/div>\n                    <div class=\"card\" id=\"CC_XMAS_CARD\">\n                        <img decoding=\"async\" src=\"https:\/\/tadanoworld.com\/europe\/wp-content\/themes\/tadano\/assets\/dist\/images\/CC_XMAS_CARD_thumb.jpg\">\n                    <\/div>\n                    <div class=\"card\" id=\"GR_XMAS_CARD\">\n                        <img decoding=\"async\" src=\"https:\/\/tadanoworld.com\/europe\/wp-content\/themes\/tadano\/assets\/dist\/images\/GR_XMAS_CARD_thumb.jpg\">\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"row\">\n                                <div class=\"col full-width\">\n                    <label for=\"recipient-name\" class=\"hidden\">Name of the recipient<\/label>\n                    <input type=\"text\" placeholder=\"Name of the recipient *\" name=\"recipient-name\" required \/>\n                <\/div>\n                <div class=\"col full-width\">\n                    <label for=\"recipient-mail\" class=\"hidden\">Send to Email Address<\/label>\n                    <input type=\"text\" placeholder=\"Send to Email Address *\" name=\"recipient-mail\" required \/>\n                <\/div>\n                <div class=\"col full-width btn-holder\" id=\"greeting-btn-holder\" style=\"display: none;\">\n                    <a href=\"mailto:\" id=\"greeting-btn\" class=\"btn btn-light\">Send greeting via email<\/a>\n\n                    <div class=\"fallback\" id=\"greeting-fallback\"  style=\"display: none;\">\n                        <p style=\"font-weight: 300; font-size: 80%\">If your email program is not opening, copy and paste your text into an email and send to your friend.<\/p>\n                        <a href=\"javascript:void(0);\" id=\"copy-mail-text\" class=\"btn btn-small\">\n                            <img decoding=\"async\" width=\"17px\" src=\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB4PSIwIiB5PSIwIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTIiIHhtbDpzcGFjZT0icHJlc2VydmUiIGNsYXNzPSIiPjxnPjxwYXRoIGQ9Ik0yMi4yNSAxMGgtOC41QTEuNzUgMS43NSAwIDAgMCAxMiAxMS43NXYxMC41YzAgLjk2Ni43ODQgMS43NSAxLjc1IDEuNzVoOC41QTEuNzUgMS43NSAwIDAgMCAyNCAyMi4yNXYtMTAuNUExLjc1IDEuNzUgMCAwIDAgMjIuMjUgMTB6bS0yLjEyNSAxMGgtNC41YS43NS43NSAwIDAgMSAwLTEuNWg0LjVhLjc1Ljc1IDAgMCAxIDAgMS41em0wLTNoLTQuNWEuNzUuNzUgMCAwIDEgMC0xLjVoNC41YS43NS43NSAwIDAgMSAwIDEuNXoiIGZpbGw9IiNmZmZmZmYiIG9wYWNpdHk9IjEiIGRhdGEtb3JpZ2luYWw9IiMwMDAwMDAiIGNsYXNzPSIiPjwvcGF0aD48cGF0aCBkPSJNMTQuMjUgM0gxM3YtLjI1YS43NS43NSAwIDAgMC0uNzUtLjc1aC0xLjEwNEMxMC44MTguODQ3IDkuNzU3IDAgOC41IDBTNi4xODIuODQ3IDUuODU0IDJINC43NWEuNzUuNzUgMCAwIDAtLjc1Ljc1VjNIMi43NUEyLjc1MiAyLjc1MiAwIDAgMCAwIDUuNzV2MTIuNUEyLjc1MiAyLjc1MiAwIDAgMCAyLjc1IDIxaDcuNzV2LTkuMjVhMy4yNTQgMy4yNTQgMCAwIDEgMy4yNS0zLjI1SDE3VjUuNzVBMi43NTIgMi43NTIgMCAwIDAgMTQuMjUgM3ptLTguNzUuNWgxYS43NS43NSAwIDAgMCAuNzUtLjc1YzAtLjY4OS41NjEtMS4yNSAxLjI1LTEuMjVzMS4yNS41NjEgMS4yNSAxLjI1YzAgLjQxNC4zMzYuNzUuNzUuNzVoMXYxLjI1YS4yNS4yNSAwIDAgMS0uMjUuMjVoLTUuNWEuMjUuMjUgMCAwIDEtLjI1LS4yNXoiIGZpbGw9IiNmZmZmZmYiIG9wYWNpdHk9IjEiIGRhdGEtb3JpZ2luYWw9IiMwMDAwMDAiIGNsYXNzPSIiPjwvcGF0aD48L2c+PC9zdmc+\" \/>\n                            Copy text                        <\/a>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/form>\n    <\/div>\n\n\n    <style type=\"text\/css\">\n        .card-design {\n            display: flex;\n            justify-content: space-between;\n            gap: 20px;\n            margin-bottom: 20px;\n        }\n        @media screen and (max-width: 768px) {\n            .card-design {\n                width: 93%;\n                margin: 0 auto;\n                gap: 10px;\n            }\n        }\n        .card-design .card {\n            position: relative;\n            cursor: pointer;\n            transition: transform 0.3s ease-in-out;\n        }\n        .card-design .card:hover {\n            transform: scale(1.05) rotate(0.5deg);\n        }\n        .card-design .card.active::after {\n            content: '';\n            position: absolute;\n            display: block;\n            bottom: 0;\n            right: 0;\n            width: 55px;\n            border-radius: 10px 0 0 0;\n            background-color: #004295;\n            \/* padding: 22px; *\/\n            height: 55px;\n            background-size: 61%;\n            background-position: center;\n            background-repeat: no-repeat;\n            background-image: url(data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB4PSIwIiB5PSIwIiB2aWV3Qm94PSIwIDAgNDQwLjAyIDQ0MC4wMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgY2xhc3M9IiI+PGc+PHBhdGggZD0iTTMyNy4zMjcgMzU5Ljg2MUg2MFY5Mi41MzJoMjA4LjY1bDYwLjAwMS02MEgwVjQxOS44NmgzODcuMzI3VjE3MS44NDZsLTYwIDYwLjAwMXoiIGZpbGw9IiMwMGE0Y2YiIG9wYWNpdHk9IjEiIGRhdGEtb3JpZ2luYWw9IiMwMDAwMDAiIGNsYXNzPSIiPjwvcGF0aD48cGF0aCBkPSJtMTI1LjczNSAxNzMuMTcxLTQyLjQyNyA0Mi40MjYgMTAxLjg1IDEwMS44NTFMNDQwLjAyIDYyLjU4NWwtNDIuNDI3LTQyLjQyNi0yMTIuNDM1IDIxMi40MzZ6IiBmaWxsPSIjMDBhNGNmIiBvcGFjaXR5PSIxIiBkYXRhLW9yaWdpbmFsPSIjMDAwMDAwIiBjbGFzcz0iIj48L3BhdGg+PC9nPjwvc3ZnPg==);\n        }\n        .card-design img {\n            width: 100%;\n            border-radius: 10px;\n        }\n    <\/style>\n\n\n    <script type=\"text\/javascript\">\n\n        var mailBody = '';\n        var selectedImage = '';\n        var recipientName = '';\n        var mailSubject = \"HAPPY HOLIDAYS\";\n        var mailBodyPart0 = \"Wishing you, your family, and friends a wonderful holiday season!\";\n        var mailBodyPart1 = \"I selected my favorite Tadano crane for you. Click the link to see which one!\";\n        var mailBodyPart2 = \"If you would like to send a Holiday Greeting along with your favorite Tadano crane to someone else, explore the Tadano Holiday page here:\";\n        var mailBodyFrewell = \"Best wishes,\";\n\n\n        \/\/ Function to check all input fields\n        function checkInputs() {\n            const inputs = document.querySelectorAll('.holiday-greeting-block .col.full-width input');\n            const buttonHolder = document.getElementById('greeting-btn-holder');\n            let allFilled = true;\n\n            inputs.forEach(input => {\n                if (input.value === '') {\n                    allFilled = false;\n                }\n            });\n\n            buttonHolder.style.display = allFilled ? 'block' : 'none';\n        }\n\n        \/\/ Add event listener to each input field\n        document.querySelectorAll('.holiday-greeting-block .col.full-width input').forEach(input => {\n            input.addEventListener('input', checkInputs);\n        });\n\n        \/\/ Function to show the div when the button is clicked\n        function showGreetingFallback() {\n            const greetingFallbackDiv = document.getElementById('greeting-fallback');\n            greetingFallbackDiv.style.display = 'block';\n        }\n\n        \/\/ Add event listener to the button\n        const greetingBtn = document.getElementById('greeting-btn');\n        greetingBtn.addEventListener('click', function(e) {\n            e.preventDefault();\n            showGreetingFallback();\n            recipientName = document.querySelector('.holiday-greeting-block input[name=\"recipient-name\"]').value;\n            var recipient = document.querySelector('.holiday-greeting-block input[name=\"recipient-mail\"]').value;\n            selectedImage = document.querySelector('.holiday-greeting-block .card.active').id;\n            selectedImage = 'https:\/\/' + window.location.hostname + '\/' + selectedImage;\n            mailBody = recipientName + ',%0D%0A%0D' + mailBodyPart0 + '%0D%0A%0D' + mailBodyPart1 + ' ' + selectedImage + '%0D%0A%0D%0A' + mailBodyPart2 + ' ' + 'https:\/\/tadanoworld.com\/holidays-2024' + '%0D%0A%0D%0A' + mailBodyFrewell;\n            window.location.href = 'mailto:' + recipient + '?subject=' + mailSubject + '&body=' + mailBody;\n            \n        });\n\n        \/\/ Function to copy text to clipboard\n        function copyToClipboard(text) {\n            navigator.clipboard.writeText(text).then(() => {\n                console.log(\"Text copied to clipboard\");\n            }).catch(err => {\n                console.error('Error in copying text: ', err);\n            });\n        }\n\n        \/\/ Select all card elements\n        const cards = document.querySelectorAll('.holiday-greeting-block .card');\n\n        \/\/ Function to remove 'active' class from all cards\n        function removeActiveClasses() {\n            cards.forEach(card => {\n                card.classList.remove('active');\n            });\n        }\n\n        \/\/ Add click event listener to each card\n        cards.forEach(card => {\n            card.addEventListener('click', function() {\n                \/\/ Remove 'active' class from all cards\n                removeActiveClasses();\n\n                \/\/ Add 'active' class to the clicked card\n                this.classList.add('active');\n            });\n        });\n\n\n        \/\/ Add click event listener to the link\n        document.getElementById('copy-mail-text').addEventListener('click', function(event) {\n            event.preventDefault(); \/\/ Prevent the default link behavior\n            copyToClipboard(recipientName + ',\\r\\n\\r\\n' + mailBodyPart0 + '\\r\\n\\r\\n' + mailBodyPart1 + ' ' + selectedImage + '\\r\\n\\r\\n' + mailBodyPart2 + ' ' + 'https:\/\/tadanoworld.com\/holidays-2024' + '\\r\\n\\r\\n' + mailBodyFrewell);\n        });\n\n    <\/script>\n\n<\/section>\n\n\n\n\n\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div class=\"overlay\" id=\"wish\">\n    <div class=\"overlay-wrapper\">\n        <div class=\"close-overlay\">\n            <div class=\"close-btn\"><\/div>\n        <\/div>\n        <div class=\"container\">\n            \n\n<h1 class=\"wp-block-heading\">WISH LIST<\/h1>\n\n\n\n<p>New services, technologies or merchandise \u2013 in a perfect crane world, what would you wish for?<\/p>\n\n\n\n<p>Your voice matters! Give us your wishlist for an even better Tadano experience. We take every suggestion or request seriously, recognizing that while we may not be able to fulfill every wish, each one shapes our path towards continuous improvement. Let&#8217;s craft an exceptional customer journey together, one suggestion or request at a time.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Share your wish by filling out the form below.<\/h3>\n\n\n\n\n  <div class=\"cookieconsent-optout-marketing cookieconsent\" style=\"background-image: url('https:\/\/tadanoworld.com\/europe\/wp-content\/themes\/tadano\/assets\/dist\/images\/nocookie_form.jpg');\">\n        <div class=\"wrapper\">\n          <h3>You need to accept marketing cookies to view this content<\/h3>\n          <a href=\"javascript: Cookiebot.submitCustomConsent(false, false, true)\" class=\"btn btn-outline-white\">accept<\/a>\n      <\/div>\n  <\/div>\n  <script type=\"text\/javascript\">\n    function CookiebotCallback_OnAccept() {\n     Cookiebot.changed && document.location.reload();\n    }\n  <\/script>\n\n\n\n\n\n        <\/div>\n    <\/div>\n<\/div>\n\n\n\n<section class=\"plant-a-tree-entries\">\n    <style type=\"text\/css\">\n        .plant-a-tree-entries {\n            position: absolute;\n            right: 20px;\n            bottom: 20px;\n            width: 352px;\n            flex-shrink: 0;\n            background: linear-gradient(180deg, #202F9D 0%, #0D1A49 100%);\n            border-radius: 20px;\n        }\n        @media screen and (max-width: 767px) {\n            .plant-a-tree-entries {\n                display: none;\n            }\n        }\n        .plant-a-tree-entries .inner {\n            border-radius: 12px;\n            border: 1px solid #31B7F1;\n            width: 90%;\n            height: 90%;\n            margin: 5%;\n            display: flex;\n            flex-direction: column;\n            justify-content: space-between;\n            color: #fff;\n            text-align: center;\n\n        }\n\n        .plant-a-tree-entries .participants {\n            margin: 10px;\n            font-size: 80%;\n        }\n        @media screen and (max-height: 825px) {\n            .plant-a-tree-entries .participants {\n                font-size: 60%;\n            }\n        }\n        .plant-a-tree-entries .header {\n            position: relative;\n        }\n        .plant-a-tree-entries .tree img {\n            width: 60%;\n        }\n        @media screen and (max-height: 755px) {\n            .plant-a-tree-entries .tree img {\n                width: 40%;\n            }\n        }\n        .plant-a-tree-entries .btn {\n            margin-top: 30px;\n        }\n        .plant-a-tree-entries .content {\n            margin-top: -110px;\n        }\n    <\/style>\n    <div class=\"inner\">\n\n        <div class=\"content\">\n            <div class=\"header\">\n                <div class=\"tree\">\n                    <img decoding=\"async\" src=\"https:\/\/tadanoworld.com\/europe\/wp-content\/themes\/tadano\/assets\/dist\/images\/tree_entries_box.png\" alt=\"\">\n                <\/div>\n            <\/div>\n            <div class=\"participants\">\n\n                <p style=\"\">Tadano will make a donation supporting reforestation projects around the world to plant a physical tree.<\/p>\n                <p style=\"font-weight: 800; margin-bottom:0;\">3 latest contributors:<\/p>\n\n                Elisabet, Sweden<br>Benjamin, Germany<br>Matthias, Germany<br>\n                <a href=\"#tree\" class=\"btn btn-light\" style=\"white-space:wrap; text-align:center;\">Plant your tree now<\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n   \n<\/section>\n\n<div id=\"snow\">\n    <\/div>\n\n    <style type=\"text\/css\">\n        #snow {\n            display: block;\n            position: fixed;\n            left: 0;\n            top: 0;\n            right: 0;\n            bottom: 0;\n            pointer-events: none;\n        }\n    <\/style>\n\n    <script type=\"text\/javascript\">\n\n    class ShaderProgram {\n\n        constructor( holder, options = {} ) {\n\n        options = Object.assign( {\n            antialias: false,\n            depthTest: false,\n            mousemove: false,\n            autosize: true,\n            msaa: 0,\n            vertex: `\n            precision highp float;\n\n            attribute vec4 a_position;\n            attribute vec4 a_color;\n\n            uniform float u_time;\n            uniform vec2 u_resolution;\n            uniform vec2 u_mousemove;\n            uniform mat4 u_projection;\n\n            varying vec4 v_color;\n\n            void main() {\n\n                gl_Position = u_projection * a_position;\n                gl_PointSize = (10.0 \/ gl_Position.w) * 100.0;\n\n                v_color = a_color;\n\n            }`,\n            fragment: `\n            precision highp float;\n\n            uniform sampler2D u_texture;\n            uniform int u_hasTexture;\n\n            varying vec4 v_color;\n\n            void main() {\n\n                if ( u_hasTexture == 1 ) {\n\n                gl_FragColor = v_color * texture2D(u_texture, gl_PointCoord);\n\n                } else {\n\n                gl_FragColor = v_color;\n\n                }\n\n            }`,\n            uniforms: {},\n            buffers: {},\n            camera: {},\n            texture: null,\n            onUpdate: ( () => {} ),\n            onResize: ( () => {} ),\n        }, options )\n\n        const uniforms = Object.assign( {\n            time: { type: 'float', value: 0 },\n            hasTexture: { type: 'int', value: 0 },\n            resolution: { type: 'vec2', value: [ 0, 0 ] },\n            mousemove: { type: 'vec2', value: [ 0, 0 ] },\n            projection: { type: 'mat4', value: [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ] },\n        }, options.uniforms )\n\n        const buffers = Object.assign( {\n            position: { size: 3, data: [] },\n            color: { size: 4, data: [] },\n        }, options.buffers )\n\n        const camera = Object.assign( {\n            fov: 60,\n            near: 1,\n            far: 10000,\n            aspect: 1,\n            z: 100,\n            perspective: true,\n        }, options.camera )\n\n        const canvas = document.createElement( 'canvas' )\n        const gl = canvas.getContext( 'webgl', { antialias: options.antialias } )\n\n        if ( ! gl ) return false\n\n        this.count = 0\n        this.gl = gl\n        this.canvas = canvas\n        this.camera = camera\n        this.holder = holder\n        this.msaa = options.msaa\n        this.onUpdate = options.onUpdate\n        this.onResize = options.onResize\n        this.data = {}\n\n        holder.appendChild( canvas )\n\n        this.createProgram( options.vertex, options.fragment )\n\n        this.createBuffers( buffers )\n        this.createUniforms( uniforms )\n\n        this.updateBuffers()\n        this.updateUniforms()\n\n        this.createTexture( options.texture )\n\n        gl.enable( gl.BLEND )\n        gl.enable( gl.CULL_FACE )\n        gl.blendFunc( gl.SRC_ALPHA, gl.ONE )\n        gl[ options.depthTest ? 'enable' : 'disable' ]( gl.DEPTH_TEST )\n\n        if ( options.autosize )\n            window.addEventListener( 'resize', e => this.resize( e ), false )\n        if ( options.mousemove )\n            window.addEventListener( 'mousemove', e => this.mousemove( e ), false )\n\n        this.resize()\n\n        this.update = this.update.bind( this )\n        this.time = { start: performance.now(), old: performance.now() }\n        this.update()\n\n        }\n\n        mousemove( e ) {\n\n        let x = e.pageX \/ this.width * 2 - 1\n        let y = e.pageY \/ this.height * 2 - 1\n\n        this.uniforms.mousemove = [ x, y ]\n\n        }\n\n        resize( e ) {\n\n        const holder = this.holder\n        const canvas = this.canvas\n        const gl = this.gl\n\n        const width = this.width = holder.offsetWidth\n        const height = this.height = holder.offsetHeight\n        const aspect = this.aspect = width \/ height\n        const dpi = this.dpi = Math.max( this.msaa ? 2 : 1, devicePixelRatio )\n\n        canvas.width = width * dpi\n        canvas.height = height * dpi\n        canvas.style.width = width + 'px'\n        canvas.style.height = height + 'px'\n\n        gl.viewport( 0, 0, width * dpi, height * dpi )\n        gl.clearColor( 0, 0, 0, 0 )\n\n        this.uniforms.resolution = [ width, height ]\n        this.uniforms.projection = this.setProjection( aspect )\n\n        this.onResize( width, height, dpi )\n\n        }\n\n        setProjection( aspect ) {\n\n        const camera = this.camera\n\n        if ( camera.perspective ) {\n\n            camera.aspect = aspect\n\n            const fovRad = camera.fov * ( Math.PI \/ 180 )\n            const f = Math.tan( Math.PI * 0.5 - 0.5 * fovRad )\n            const rangeInv = 1.0 \/ ( camera.near - camera.far )\n\n            const matrix = [\n            f \/ camera.aspect, 0, 0, 0,\n            0, f, 0, 0,\n            0, 0, (camera.near + camera.far) * rangeInv, -1,\n            0, 0, camera.near * camera.far * rangeInv * 2, 0\n            ]\n\n            matrix[ 14 ] += camera.z\n            matrix[ 15 ] += camera.z\n\n            return matrix\n\n        } else {\n\n            return [\n            2 \/ this.width, 0, 0, 0,\n            0, -2 \/ this.height, 0, 0,\n            0, 0, 1, 0,\n            -1, 1, 0, 1,\n            ]\n\n        }\n\n        }\n\n        createShader( type, source ) {\n\n        const gl = this.gl\n        const shader = gl.createShader( type )\n\n        gl.shaderSource( shader, source )\n        gl.compileShader( shader )\n\n        if ( gl.getShaderParameter (shader, gl.COMPILE_STATUS ) ) {\n\n            return shader\n\n        } else {\n\n            console.log( gl.getShaderInfoLog( shader ) )\n            gl.deleteShader( shader )\n\n        }\n\n        }\n\n        createProgram( vertex, fragment ) {\n\n        const gl = this.gl\n\n        const vertexShader = this.createShader( gl.VERTEX_SHADER, vertex )\n        const fragmentShader = this.createShader( gl.FRAGMENT_SHADER, fragment )\n\n        const program = gl.createProgram()\n\n        gl.attachShader( program, vertexShader )\n        gl.attachShader( program, fragmentShader )\n        gl.linkProgram( program )\n\n        if ( gl.getProgramParameter( program, gl.LINK_STATUS ) ) {\n\n            gl.useProgram( program )\n            this.program = program\n\n        } else {\n\n            console.log( gl.getProgramInfoLog( program ) )\n            gl.deleteProgram( program )\n\n        }\n\n        }\n\n        createUniforms( data ) {\n\n        const gl = this.gl\n        const uniforms = this.data.uniforms = data\n        const values = this.uniforms = {}\n\n        Object.keys( uniforms ).forEach( name => {\n\n            const uniform = uniforms[ name ]\n\n            uniform.location = gl.getUniformLocation( this.program, 'u_' + name )\n\n            Object.defineProperty( values, name, {\n            set: value => {\n\n                uniforms[ name ].value = value\n                this.setUniform( name, value )\n\n            },\n            get: () => uniforms[ name ].value\n            } )\n\n        } )\n\n        }\n\n        setUniform( name, value ) {\n\n        const gl = this.gl\n        const uniform = this.data.uniforms[ name ]\n\n        uniform.value = value\n\n        switch ( uniform.type ) {\n            case 'int': {\n            gl.uniform1i( uniform.location, value )\n            break\n            }\n            case 'float': {\n            gl.uniform1f( uniform.location, value )\n            break\n            }\n            case 'vec2': {\n            gl.uniform2f( uniform.location, ...value )\n            break\n            }\n            case 'vec3': {\n            gl.uniform3f( uniform.location, ...value )\n            break\n            }\n            case 'vec4': {\n            gl.uniform4f( uniform.location, ...value )\n            break\n            }\n            case 'mat2': {\n            gl.uniformMatrix2fv( uniform.location, false, value )\n            break\n            }\n            case 'mat3': {\n            gl.uniformMatrix3fv( uniform.location, false, value )\n            break\n            }\n            case 'mat4': {\n            gl.uniformMatrix4fv( uniform.location, false, value )\n            break\n            }\n        }\n\n        \/\/ ivec2       : uniform2i,\n        \/\/ ivec3       : uniform3i,\n        \/\/ ivec4       : uniform4i,\n        \/\/ sampler2D   : uniform1i,\n        \/\/ samplerCube : uniform1i,\n        \/\/ bool        : uniform1i,\n        \/\/ bvec2       : uniform2i,\n        \/\/ bvec3       : uniform3i,\n        \/\/ bvec4       : uniform4i,\n\n        }\n\n        updateUniforms() {\n\n        const gl = this.gl\n        const uniforms = this.data.uniforms\n\n        Object.keys( uniforms ).forEach( name => {\n\n            const uniform = uniforms[ name ]\n\n            this.uniforms[ name ] = uniform.value\n\n        } )\n\n        }\n\n        createBuffers( data ) {\n\n        const gl = this.gl\n        const buffers = this.data.buffers = data\n        const values = this.buffers = {}\n\n        Object.keys( buffers ).forEach( name => {\n\n            const buffer = buffers[ name ]\n\n            buffer.buffer = this.createBuffer( 'a_' + name, buffer.size )\n\n            Object.defineProperty( values, name, {\n            set: data => {\n\n                buffers[ name ].data = data\n                this.setBuffer( name, data )\n\n                if ( name == 'position' )\n                this.count = buffers.position.data.length \/ 3\n\n            },\n            get: () => buffers[ name ].data\n            } )\n\n        } )\n\n        }\n\n        createBuffer( name, size ) {\n\n        const gl = this.gl\n        const program = this.program\n\n        const index = gl.getAttribLocation( program, name )\n        const buffer = gl.createBuffer()\n\n        gl.bindBuffer( gl.ARRAY_BUFFER, buffer )\n        gl.enableVertexAttribArray( index )\n        gl.vertexAttribPointer( index, size, gl.FLOAT, false, 0, 0 )\n\n        return buffer\n\n        }\n\n        setBuffer( name, data ) {\n\n        const gl = this.gl\n        const buffers = this.data.buffers\n\n        if ( name == null && ! gl.bindBuffer( gl.ARRAY_BUFFER, null ) ) return\n\n        gl.bindBuffer( gl.ARRAY_BUFFER, buffers[ name ].buffer )\n        gl.bufferData( gl.ARRAY_BUFFER, new Float32Array( data ), gl.STATIC_DRAW )\n\n        }\n\n        updateBuffers() {\n\n        const gl = this.gl\n        const buffers = this.buffers\n\n        Object.keys( buffers ).forEach( name =>\n            buffers[ name ] = buffer.data\n        )\n\n        this.setBuffer( null )\n\n        }\n\n        createTexture( src ) {\n\n        const gl = this.gl\n        const texture = gl.createTexture()\n\n        gl.bindTexture( gl.TEXTURE_2D, texture )\n        gl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array( [ 0, 0, 0, 0 ] ) )\n\n        this.texture = texture\n\n        if ( src ) {\n\n            this.uniforms.hasTexture = 1\n            this.loadTexture( src )\n\n        }\n\n        }\n\n        loadTexture( src ) {\n\n        const gl = this.gl\n        const texture = this.texture\n\n        const textureImage = new Image()\n\n        textureImage.onload = () => {\n\n            gl.bindTexture( gl.TEXTURE_2D, texture )\n\n            gl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textureImage )\n\n            gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR )\n            gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR )\n\n            gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)\n            gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)\n\n            \/\/ gl.generateMipmap( gl.TEXTURE_2D )\n\n        }\n\n        textureImage.src = src\n\n        }\n\n        update() {\n\n        const gl = this.gl\n\n        const now = performance.now()\n        const elapsed = ( now - this.time.start ) \/ 5000\n        const delta = now - this.time.old\n        this.time.old = now\n\n        this.uniforms.time = elapsed\n\n        if ( this.count > 0 ) {\n            gl.clear( gl.COLORBUFFERBIT )\n            gl.drawArrays( gl.POINTS, 0, this.count )\n        }\n\n        this.onUpdate( delta )\n\n        requestAnimationFrame( this.update )\n\n        }\n\n    }\n\n    const snowflake = 'data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGAGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDAgNzkuMTYwNDUxLCAyMDE3LzA1LzA2LTAxOjA4OjIxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTUtMDctMDNUMTg6NTk6MjIrMDI6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAxLTEyVDE1OjE0OjQwKzAxOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE5LTAxLTEyVDE1OjE0OjQwKzAxOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmIzMzBlMWI0LTk5ZDctNGU2NS05MGQ2LTNmYjFiYmE2ZTE0MCIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjAyNThjNzMxLTQ4ZjQtYTA0MS1hNGFkLTQ4MTA2MTVjY2FlYSIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJjY2VkMTUyLTRjNzAtNDFlZC1hMzcyLWRlOWY4NjgyZTcwMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MmNjZWQxNTItNGM3MC00MWVkLWEzNzItZGU5Zjg2ODJlNzAxIiBzdEV2dDp3aGVuPSIyMDE1LTA3LTAzVDE4OjU5OjIyKzAyOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YjMzMGUxYjQtOTlkNy00ZTY1LTkwZDYtM2ZiMWJiYTZlMTQwIiBzdEV2dDp3aGVuPSIyMDE5LTAxLTEyVDE1OjE0OjQwKzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw\/eHBhY2tldCBlbmQ9InIiPz50mbqsAAAToElEQVR4nOVbW49dR5X+VlXtc2v3Ne52N6bTTnAc0u02GRJQwEhYQkJ5QhmhPPOUl0iBB\/4AP4JfMA95IEIaJEYiQhlesCZMEE1iGxJHIjK21XbSwX1xd5+zd9Va87BrVdfefWwI4xEaUVJpn7PPPnVqfbUu31pVh0QE\/8zN\/KMn8I9uTl+8+uqrAAARgYgghIBer4dnnnkGAPDFL34RANDr9eiJJ55AVVUgIhhjwMwYDAbY3Nyk8+fPP\/DHdnd3ZWtrS6y1ICICACLCtWvXxDmH2dlZXL9+HR988AF6vR5mZmawvb2Nw8NDeO+xt7eHpaUlDAYDTE5O4vvf\/z7OnTuH1157DR9++CGICNvb2zh58iTubG7iwrP\/gvmz61iZG2B5aQG\/+e93MDExgW9\/+9vHAcgbEWFvbw+Tk5O0uLiIEydOyPnz52lychL9fj89BgD7+\/s0MTGh4KT749rU1JRMTU3p22R7y8vL2N3dTWPs7e3JnTt3sLW1BWvtAwF9FK0BQFwUfPLJJ5ibm8Mrr7yiGqCmkgtHZVni4OCAJiYmCAAiEA0AmBlEpGPnDoez1wqMrK2tydraGr333nu4evUqfv\/730tZluh2u405PqqWABgOhwCAnZ0dLCws4Ec\/+hGdOnUqf5ZEhA4ODtDr9chaS51OB\/Pz84QjoRsA6bjOOel0OknY7HMBgL\/85S8yGo1kYWEB1loCIBcuXMCFCxdkfX2dNjY25J133sH9+\/chIo8UhATA5z\/\/eRweHmJxcRHf+973iIioqioURaGTNQBQlqWJq2GYGWVZUq\/XGwcCAVCTkUxg7UDUgtnZWd7e3hZmhrVWkGnH+vo61tfX8eUvfxlvvPGG3Lx5E8vLy8hM6dEA0Ov1MBwO8eKLL+Lpp5\/GRx99hLm5ORXGACAiotnZWROFIQDGGJNee+8hIlQURVqibLUku2pnAEJEZnZ2VoXmDKwExPnz57G8vIxf\/epXuHXrlnz88ccoyxLe+\/+VRiQA7t+\/j+npaaytrREAeuKJJ\/SjXGACQCEEIyLGOWc6nQ6h1gZTVZWJqv6g8MoAwMwiImyt5UxQ7TlIlIMwPT2Nl156SXZ3d+nKlSuoqkq2t7f\/buEbADjncOnSJXrssceAphorABARC8CIiBERKyI2hGCcc0REptPpGGttDhhCCClc5gKKSC50qKqKrbVsjMnvqzbw7u6uMDPNzMzw1NSUXLx4ET\/5yU\/o5s2b8t5772E0GmFycvIz+4gEwNmzZ\/H0008DqD33cDikfr9vNFwDMGVZWmutcc5ZAE5EbDQBS0QqvEF0mAAoCq5NALAxRlqCBmstExEDCLHrZwIgFEUhckRbBQBefvllAYC3334bV65ckY2NDezv738mEBIA3nuMRiOgVmfa39+nbrdL0SsbAKbT6Zi46tZaa4nIEpGN49j4nI2AkYiYLAQmAFQoACwiLCKBiAIRBQA+jqNgMADq9\/v63mZjAABeeOEFvPDCC3Tt2jV5\/fXX5U9\/+hMI+Js4RFoe51yK1c45zM\/P58ITAENExtRL6mIvAHS0i0iXmbsAekTUN8b0AfRFpA+gD2AQez+79gD0RETH6cZrkf1GfjUP6FhbW6Mf\/OAHeOmll6jb7WBrawvAw7lD0oAzZ86gFfeBzNtrZ2Zna2gLEXFRAwpmLuJnyT+ISMQr+ZTc+wcAuvIetUlV8bVFUxNyZxiy9\/l4BAALCwvmu9\/9rpxZWaH\/evs3Mqw8HpbvJQDW19d1xfPeBsEyswVQeO+dtdZZa9NqWWsLAI6IHOoQaVpjHQMgdi8iPgJQReHzbgFU2ULo9\/JQmfMLPPf881j\/0pfk3376H9gyI6ycXnw4ALOzs+lmCIEODg7oxIkThohoOBxSp9MxRGSdczZGA0tEBWpNKIwxHX0dx3XRB+QAAE0foDbviaiKwBVRWO3Wex9ql0MBzbAcsnFzcAFAOkVBFy88hW63J1UIGJf6JwCuXLmC9fV1AIAxBv1+H0QEESEiMsxs1NMTke10OiqkE5GO2rAxJtksERkRMaj9R1sLfJysB1CFEEpjjGqA+hiDWrPK+H3ViFxLc2eZTEHbM6trAIB3331XNOEaC8DCwoK+JCKCc47ia1Lq2+oWtboXRFREALpxzA4Ruegj9FnDzDDGCABmZjbGqPqXOFr5Ml5HqE2uin6mxFGk0V4B4LIsiYh8pO05yBxCECLC4uIiXbp0SbJstgnA3t5e7gTbbrNBf9sgKBCoTSBFBUSugMgTAGiMlizmewClMcYDGMXvlxHUMgpeZgInrhEB9Vm48\/GawuSNGzdodnYWp06dEu89QsitJgMgQ08R1FhOIQTKihgkIoaZrTEm8QARSUCISBf1ihbRri1iGG0BwKjtvxOFdHoVERdC0N8wkVjlpqTFG2nFe5\/P\/\/Tp0+JcLeb169dxeHiI55577jgAjz\/+OFqt7TFyDSBmJiIyquIRgEJVH7UZFDiK3xoZdPICgDOvn6\/2iIg03ObEikSEtAoVgcznKXF+6V6321VtoNXVVezs7DTkSkRoc3OzDUAtde0PGmSCiKgoCiIiik6uZkiRJEWG6IhInWNXRHpE1ENNfnJSNJFdJwBMiMgEgAkiGhCRPt8D0DPGdBVcZi7UxHDcR7XDOLz3+POf\/9yQb5wT1C8pomNbCAHMTDE85TTYoqUJiOaAOpHK9VWjQRE5gM3GyHMKAIAxRqQOS0xE4pxrpMwA2HtvALA68Vwea60sLy+PB+Djjz\/G5z73OZ1UTiqkqiohImFmFEUhRCTGmLzUlTcTBVWTKBBXTBki1U1\/i1E7N\/UVyi5T0RS1xQgza\/1gXBrNcXyOmsg4YpLQsbz3qRLVAGB+fr4tCLz3IiKKtMQQJnEwtb8crBQ6lT\/ESSQHSURKpAT1CodoLho2rSZRugAikjLFzHmGOG6izhlXaZOvJPTJkyePrRYAIBYWGiqvzEmFNcao0ByLGg1NyX8w8w+5eeRa0RWRDhF1Ee0bNY9QX6G9LyI9EenGZ\/NESbsFoKm6EREzGo00cjR8wc7OTgOApAFxdRt1u6IokpqJCHvvWfN2XRGuwwFnK5OnqkkTMmflEHlBZgYBRyGONFTGz5jqBCnPFRwAx8zqcBt+AwBFx50zRgFAw+FQpqenjwNw9+5ddLtdnDhxQifV6MwsRMTGGGHmRkEjqjFHVU3fia9T+IwTUpMw2cRyz60rlhMl1ZqCmQuKeUO09UTTs\/HbJqBNBoNB40YygY2NDezt7Y35Tj0Zay0751hEQqSwqefvY4Ejd1LqM6B5QeyaMjsR0SQq74lRRqKkxKqgZhGmHQa1RjkWhHY+kDTga1\/7mjrCdtUWcSD23jMRBWttyuSIqBIRVVEPwBtjqgyMoGGrsRS1o1M75YzhtWlyyjjj1ajKM7OlukjTSOOJKGe2DSBipEstacCPf\/xjvPnmm405olV0cM6FWMkNAEIIIYhIEJHAzIGIfLRXBScvdXE0k6QRes1UN88xbKYx6jPymoQxxhiKmWrm8Nr1jEbb399vvE8a8Morr2Bubi53hNpUCwxqLQjW2hALGAFHK14BqJi5QqYZCkh8VkFgHK16Hu\/y0Jm\/TnZtjEkFV2amGgP6mwuhmhdoSxrQ6XRw69YtfPjhh+3vNKo41tpUxnLOqVfOe+L0+WfRcWnxI2lF5i8Sr49JzrjKlIKUkyS9Nljj39oSHLdu3UJZlpiammonFzqohiolJKmaE4X0AKpcG3CU4alj03Q2D1mIgqUQqpEk4yH6TEPAfMVzkhaf1Wca9733yFsC4Jvf\/Ga6eePGDSwuLkq3202\/EEKQw8ND7vV6wTmXfIBGgBBCZa11RKQakKe4eVZIOMrwEAE1aDo\/NRENs6nFvcNxPckOQEII4r3XLfvU2u+PbWHdvXsXP\/vZz2R3d7fxAzEfYOeclrG8McZHx1dZa0sAlYhUrUKG9rFmgjHmgiONUocaiEjB5pgWJFDGACHOOXQ6nXYyJwcHB40bSQM0PpZlia9\/\/esgInz66acYDAbS7\/el1+vl5WldIR9XXusBlYJgrS2ZeRR5foFY4oo\/Rzji+GoOwBG3aFSGc0eqYTUDpr2VxiIiVVVJBKABTntXOQGwsbEBoK4MTUxM4Nq1a7DWyurqKvr9fu4LGltaWtcjokRViaiUowqRFk+1LKarwkQUYgKUp98hRo9cEyoc+Z1kJpnwDUGJSLfZj7XLv\/41Ln7jG8cBmJycTDe99xgMBlhZWUG\/34fm4DiqtugkTFTHYK2toqClMSavE+bbZg0AolAujoM6fxI1sWQ6GSBKuJR7sDGGiYhDCJwla+N8BUQERcssEgBxXzA1IsL169fhvcezzz6LmZkZnTRQU01NjnRlQlx93cRQB5gXRY8BEEHLa4XJDESkAlBGv6J8Q\/1OCHWFs60NHBM0oeaxHGEAZ7\/61YacCYCvfOUrjQ9iLAZQcwS9rVctkuS0GEf5uZawx5WqdEWUHCnLUwKWA1ACGBljSmYu0XSMPv42I+4469hVVYlzTjIzEABg7\/Hrt97Cd1588TgA4zYNFIiDgwM5efJkftyFu92u7tLoVpWPk05cHc0ymTo6TaN1T1ALIMeywBhSRwoCjkeJPClLGhALoTrXpPLGGLlw7lxDvgRAe8Mgb4PBIP88IT0cDrkoimCt1ZS0kqPydc7rc9Kjds5RrS0zK\/UFjtih0ulSREaoQ+UIx0NqDkR7w7ThBzY2NrC7u4szTz752QBotYRop9PRukBgZmOtJWOMCSFUmqigWZBIDjSuvgPgjDGavipzy80qlcrRigo4rgFt4dN8RQR5IeQYABcvXnygxLdv38Zrr72GH\/7wh3myxNnWNzvngvfeOOd8FttV7TXuCx1thzf2CzIfoOww3x3OQVBfkK9+mws0vP\/W1pZcv35dTp48ibm5ufEA6GnPdhMRTExMYHJyMs4\/edbGigKgeERGdz8aiUx0qoIsj4j5fHKCUu9Cae0x8QvUkaCt+rkW5IXSvEwuADA3N4fnn38eRVEc2yEmvfHHP\/5xLAAKAhHh3LlzjTMEIQQ3Go3MYDAwAFw8M2BjbE9VHIm7x3HnuMg+y2uFjb2ILBwGHGmAR51yj1DvJ+q9HBzVCjUlvnfvnty4cUO0SLK2tpZkSxqwsrIyVngiSsddx5y5YWOMbjhyzA2AOlevgNrzxqKHZAXUEFmj8oMcAAUhX1HPzJUxplK2GULwqJmor6qKY54iQE3kdnd3OdY35He\/+51cvnwZExMTMMY0AEga0CZCbRC89\/DeY2pqKs\/TDQA6PDw0uolpjLHOOcfMzntvnXPOGFOISBFCKGLG6Jg5rw6bPM9HdogiRgT1GxUze135yBBLLcyo1ohIqKqKO51OKMtS3n\/\/fckLJhcuXDiuAXfu3HkgAABweHiYb5\/lbI76\/T6JCO\/s7ICIMD09jbhzlJe2OdJXZ611xpik+sxsRUTNqyYtzcqzRoQQt9FTPTKEkMryMV1nItJECKPRCH\/4wx\/SHmcbgKQB77777kMBUAR7vR594QtfQLb3ljRBRCiGQ43tNhNU9wotxd0hZrbWWqrLCibXAM0\/NGNMSVCoz+h5730wxngR8cwcnHNp1XHkA0RE+ODgoOH5coefNODnP\/\/5QwGg+GeElZUVefLJJ8fVDYmISP0EM0sIAd1ut6EFEQwTQtBTZCYSKZWfdOs7jpMSHsSSnF5jPpCKJ51Oh9vz8t5ja2urUTMcC4Cex39Y63Q6WFlZQVEUcu\/ePep2uxgMBnmWqBrBzjndUzQAJO7aSqwm6Va60mATQtATH3k0yLM6RvQJ6khRO0dmZv2cEfnGaDSSbreLoihQVRVCCGMPTuZbY38VAGstiqLAaDTC66+\/Lt\/61rf0rzQPqiKnvQU9GxTvKwB65s9E+0x1\/QwEHVMTHXbOcfQFbK1VX5GYX1mWuH37NpaXl2l3d5eXl5cfeGp07F9mHtaICGVZYjAYYGZmRgDQaDSSoijywmQuHEUA8tp\/ewsrnUkOIehefg5AIl5RzVPPs8DsGTlz5oxYa+XevXu4c+dOntHiXJYQfWYA1Jacc7r7Im+++SZWV1fp7NmzOlktn7XBUHJCIQRDddxUUqUHq5MGVFUFAIibtOrUhJnVNDi7z3fv3hURkaWlpWQ6Tz311EPl+cwAjGvRxnS1xjrI1n0ajUbinCNdGf2vQQyFABqHnZMmhBAkaiADkMPDQ4n\/cJPhcIj5+Xl1nvj3n\/4UB\/v7ODEx0ZjQv7788qMFoNPppBj76aefyi9+8QssLS3JpUuXKNt2b+QGg8EgrzNSr9djzQi1jTlqj+hcARz9+cJ7D+ecnDlzJiVABwcH0GNxh\/H\/UOPaIwEgb\/fv38fVq1fbyVVuy5RdtVGkrzQzM\/Mwhyzta\/Y7aZE\/+ugj\/Odbb8n0zAzmTp1CfbJmfHvkADjnMDMzg8ceewzGGNnf38fly5fp9OnTknNwNEEQay2mpqbaf7Bot3alV8a9\/u1vfytXr13D6uoqyrJ86Hz\/euz7O5uivr29jV\/+8peyubmZx\/Njh5xiMjMutz\/WfVXxzs4O7+zsyL1792R\/f78RBRYWFjA5OYm4OXKs5+2Ra0C7OeewsLCA+F+kvKUVGw6H2Nzc1Pxh7DiBGT0iWXr8cbp5+zY+eP99mZ6exsHBAZaWlrC6upqefZjKt1vKBf5Z2\/+ZCfx\/af8DTo8DJZHbJ6cAAAAASUVORK5CYII='\n\n    const holder = document.querySelector( '#snow' )\n    const count = 2000\n\n    let wind = {\n    current: 0,\n    force: 0.1,\n    target: 0.1,\n    min: 0.1,\n    max: 0.20,\n    easing: 0.005\n    }\n\n    const snow = new ShaderProgram( holder, {\n    depthTest: false,\n    texture: snowflake,\n    uniforms: {\n        worldSize: { type: 'vec3', value: [ 0, 0, 0 ] },\n        gravity: { type: 'float', value: 100 },\n        wind:{ type: 'float', value: 0 },\n    },\n    buffers: {\n        size: { size: 1, data: [] },\n        rotation: { size: 3, data: [] },\n        speed: { size: 3, data: [] },\n    },\n    vertex: `\n        precision highp float;\n\n        attribute vec4 a_position;\n        attribute vec4 a_color;\n        attribute vec3 a_rotation;\n        attribute vec3 a_speed;\n        attribute float a_size;\n\n        uniform float u_time;\n        uniform vec2 u_mousemove;\n        uniform vec2 u_resolution;\n        uniform mat4 u_projection;\n        uniform vec3 u_worldSize;\n        uniform float u_gravity;\n        uniform float u_wind;\n\n        varying vec4 v_color;\n        varying float v_rotation;\n\n        void main() {\n\n        v_color = a_color;\n        v_rotation = a_rotation.x + u_time * a_rotation.y;\n\n        vec3 pos = a_position.xyz;\n\n        pos.x = mod(pos.x + u_time + u_wind * a_speed.x, u_worldSize.x * 2.0) - u_worldSize.x;\n        pos.y = mod(pos.y - u_time * a_speed.y * u_gravity, u_worldSize.y * 2.0) - u_worldSize.y;\n\n        pos.x += sin(u_time * a_speed.z) * a_rotation.z;\n        pos.z += cos(u_time * a_speed.z) * a_rotation.z;\n\n        gl_Position = u_projection * vec4( pos.xyz, a_position.w );\n        gl_PointSize = ( a_size \/ gl_Position.w ) * 100.0;\n\n        }`,\n    fragment: `\n        precision highp float;\n\n        uniform sampler2D u_texture;\n\n        varying vec4 v_color;\n        varying float v_rotation;\n\n        void main() {\n\n        vec2 rotated = vec2(\n            cos(v_rotation) * (gl_PointCoord.x - 0.5) + sin(v_rotation) * (gl_PointCoord.y - 0.5) + 0.5,\n            cos(v_rotation) * (gl_PointCoord.y - 0.5) - sin(v_rotation) * (gl_PointCoord.x - 0.5) + 0.5\n        );\n\n        vec4 snowflake = texture2D(u_texture, rotated);\n\n        gl_FragColor = vec4(snowflake.rgb, snowflake.a * v_color.a);\n\n        }`,\n    onResize( w, h, dpi ) {\n        const position = [], color = [], size = [], rotation = [], speed = []\n\n        \/\/ z in range from -80 to 80, camera distance is 100\n        \/\/ max height at z of -80 is 110\n        const height = 110\n        const width = w \/ h * height\n        const depth = 80\n\n        Array.from( { length: w \/ h * count }, snowflake =>  {\n\n        position.push(\n            -width + Math.random() * width * 2,\n            -height + Math.random() * height * 2,\n            Math.random() * depth * 2\n        )\n\n        speed.push(\/\/ 0, 0, 0 )\n            1 + Math.random(),\n            1 + Math.random(),\n            Math.random() * 10\n        ) \/\/ x, y, sinusoid\n\n        rotation.push(\n            Math.random() * 2 * Math.PI,\n            Math.random() * 20,\n            Math.random() * 10\n        ) \/\/ angle, speed, sinusoid\n\n        color.push(\n            1,\n            1,\n            1,\n            0.1 + Math.random() * 0.2\n        )\n\n        size.push(\n            5 * Math.random() * 5 * ( h * dpi \/ 1000 )\n        )\n\n        } )\n\n        this.uniforms.worldSize = [ width, height, depth ]\n\n        this.buffers.position = position\n        this.buffers.color = color\n        this.buffers.rotation = rotation\n        this.buffers.size = size\n        this.buffers.speed = speed\n    },\n    onUpdate( delta ) {\n        wind.force += ( wind.target - wind.force ) * wind.easing\n        wind.current += wind.force * ( delta * 0.2 )\n        this.uniforms.wind = wind.current\n\n        if ( Math.random() > 0.995 ) {\n        wind.target = ( wind.min + Math.random() * ( wind.max - wind.min ) ) * ( Math.random() > 0.5 ? -1 : 1 )\n        }\n\n        \/\/ stats.update()\n    },\n    } )\n    <\/script>\n <script type=\"text\/javascript\">const useMetricTxt =\"Use metric\"; const useImperialTxt =\"Use imperial\";<\/script>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-1407","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/tadanoworld.com\/europe\/en\/wp-json\/wp\/v2\/pages\/1407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tadanoworld.com\/europe\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tadanoworld.com\/europe\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tadanoworld.com\/europe\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tadanoworld.com\/europe\/en\/wp-json\/wp\/v2\/comments?post=1407"}],"version-history":[{"count":5,"href":"https:\/\/tadanoworld.com\/europe\/en\/wp-json\/wp\/v2\/pages\/1407\/revisions"}],"predecessor-version":[{"id":1469,"href":"https:\/\/tadanoworld.com\/europe\/en\/wp-json\/wp\/v2\/pages\/1407\/revisions\/1469"}],"wp:attachment":[{"href":"https:\/\/tadanoworld.com\/europe\/en\/wp-json\/wp\/v2\/media?parent=1407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}