{"id":1437,"date":"2023-11-24T15:35:41","date_gmt":"2023-11-24T15:35:41","guid":{"rendered":"https:\/\/tadanoworld.com\/europe\/happy-holidays\/"},"modified":"2023-12-06T09:03:11","modified_gmt":"2023-12-06T09:03:11","slug":"happy-holidays","status":"publish","type":"page","link":"https:\/\/tadanoworld.com\/europe\/de\/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                                            Pflanzen Sie Ihren Baum                                        <\/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\/de\/highscore-spiel\/\"\n                                                                                    >\n                                            Weihnachtsspiel spielen                                        <\/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                                            Schauen Sie unseren 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                                            Senden Sie einen Feiertagsgru\u00df                                        <\/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                                            W\u00fcnschen Sie sich etwas                                        <\/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                                                    Pflanzen Sie Ihren Baum                                                <\/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\/de\/highscore-spiel\/\"\n                                                                                                    >\n                                                    Weihnachtsspiel spielen                                                <\/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                                                    Schauen Sie unseren 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                                                    Senden Sie einen Feiertagsgru\u00df                                                <\/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                                                    W\u00fcnschen Sie sich etwas                                                <\/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>W\u00e4hlen Sie ein Thema<\/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>W\u00e4hlen Sie ein Thema<\/h2>\n                                                                                     <a \n                                                        class=\"btn\" \n                                                        href=\"https:\/\/tadanoworld.com\/europe\/de\/highscore-spiel\/\"\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>W\u00e4hlen Sie ein Thema<\/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>W\u00e4hlen Sie ein Thema<\/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>W\u00e4hlen Sie ein Thema<\/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\">Pflanzen Sie Ihren Baum<\/h1>\n\n\n\n<p>Geben Sie unserem Planeten in dieser festlichen Zeit etwas zur\u00fcck und unterst\u00fctzen Sie uns dabei, neue B\u00e4ume zu pflanzen. F\u00fcr jeden digital gepflanzten Baum spendet Tadano an Aufforstungsprojekte rund um den Globus, um echte B\u00e4ume zu pflanzen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Zuletzt beigetragen:<\/h3>\n\n\n<p>\nElisabet, Schweden<br>Benjamin, Deutschland<br>Matthias, Deutschland<br><\/p>\n\n\n<h3 class=\"wp-block-heading\">F\u00fcllen Sie das Formular aus, um Ihren Baum zu pflanzen.<\/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>Schauen Sie sich unseren Film an, um mehr \u00fcber unsere Mission zur Reduzierung von Emissionen f\u00fcr eine nachhaltigere und umweltfreundlichere Zukunft f\u00fcr alle zu erfahren.<\/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>Wenn Sie mehr \u00fcber unsere umweltfreundlichen Technologien erfahren m\u00f6chten, besuchen Sie unsere 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\/de\/technologie\/umwelt-und-klimafreundliche-technologien\/\" target=\"_blank\" rel=\"noreferrer noopener\">ENTDECKEN SIE UNSERE UMWELTFREUNDLICHEN L\u00d6SUNGEN<\/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\">Senden Sie einen Feiertagsgru\u00df<\/h1>\n\n\n\n<p>W\u00e4hlen Sie unten Ihr Design und senden Sie einen Feiertagsgru\u00df an Ihre Familie und Freunde.<\/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 des Empf\u00e4ngers<\/label>\n                    <input type=\"text\" placeholder=\"Name des Empf\u00e4ngers *\" name=\"recipient-name\" required \/>\n                <\/div>\n                <div class=\"col full-width\">\n                    <label for=\"recipient-mail\" class=\"hidden\">Senden an E-Mail-Adresse<\/label>\n                    <input type=\"text\" placeholder=\"Senden an E-Mail-Adresse *\" 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\">Gr\u00fc\u00dfe per E-Mail versenden<\/a>\n\n                    <div class=\"fallback\" id=\"greeting-fallback\"  style=\"display: none;\">\n                        <p style=\"font-weight: 300; font-size: 80%\">Wenn sich Ihr E-Mail-Programm nicht \u00f6ffnet, kopieren Sie den Text und f\u00fcgen Sie ihn in eine E-Mail ein und senden Sie ihn an Ihren Freund<\/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                            Text kopieren                        <\/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 = \"FROHE FESTTAGE\";\n        var mailBodyPart0 = \"Ich w\u00fcnsche dir, deiner Familie und deinen Lieben eine wunderbare Weihnachtszeit!\";\n        var mailBodyPart1 = \"Ich habe meinen Lieblingskran von Tadano f\u00fcr dich ausgew\u00e4hlt, klicke auf den Link, um zu sehen, welcher es ist: \";\n        var mailBodyPart2 = \"Wenn du auch einen Weihnachtsgruss senden m\u00f6chtest, schau dir die Tadano Weihnachtsseite hier an: \";\n        var mailBodyFrewell = \"Mit den besten W\u00fcnschen,\";\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\">W\u00fcnschen Sie sich etwas<\/h1>\n\n\n\n<p>Neue Dienstleistungen, Technologien oder Fan-Artikel &#8211; was w\u00fcrden Sie sich in einer perfekten Kranwelt w\u00fcnschen?<\/p>\n\n\n\n<p>Ihre Stimme z\u00e4hlt! W\u00fcnschen Sie sich ein noch besseres Kundenerlebnis bei Tadano. Wir wissen, dass wir nicht jeden Wunsch erf\u00fcllen k\u00f6nnen, allerdings nehmen wir jeden Vorschlag ernst und diese pr\u00e4gen den Weg zu einer kontinuierlichen Verbesserung.&nbsp;Lassen Sie uns gemeinsam eine au\u00dfergew\u00f6hnliche Kundenerfahrung schaffen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">F\u00fcllen Sie das untenstehende Formular aus, um Ihren Wunsch zu \u00e4u\u00dfern.<\/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 wird eine Spende zur Unterst\u00fctzung von Aufforstungsprojekten auf der ganzen Welt leisten, um einen physischen Baum zu pflanzen.<\/p>\n                <p style=\"font-weight: 800; margin-bottom:0;\">Zuletzt beigetragen:<\/p>\n\n                Elisabet, Schweden<br>Benjamin, Deutschland<br>Matthias, Deutschland<br>\n                <a href=\"#tree\" class=\"btn btn-light\" style=\"white-space:wrap; text-align:center;\">Pflanzen Sie Ihren Baum<\/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 =\"Verwende Metrisch\"; const useImperialTxt =\"Verwende 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-1437","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/tadanoworld.com\/europe\/de\/wp-json\/wp\/v2\/pages\/1437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tadanoworld.com\/europe\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tadanoworld.com\/europe\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tadanoworld.com\/europe\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tadanoworld.com\/europe\/de\/wp-json\/wp\/v2\/comments?post=1437"}],"version-history":[{"count":5,"href":"https:\/\/tadanoworld.com\/europe\/de\/wp-json\/wp\/v2\/pages\/1437\/revisions"}],"predecessor-version":[{"id":1480,"href":"https:\/\/tadanoworld.com\/europe\/de\/wp-json\/wp\/v2\/pages\/1437\/revisions\/1480"}],"wp:attachment":[{"href":"https:\/\/tadanoworld.com\/europe\/de\/wp-json\/wp\/v2\/media?parent=1437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}