{"id":1189,"date":"2026-11-03T09:25:47","date_gmt":"2026-11-03T09:25:47","guid":{"rendered":"https:\/\/yohann.shop\/gdpr-integritetsforfragningar\/"},"modified":"2026-11-03T15:17:52","modified_gmt":"2026-11-03T14:17:52","slug":"gdpr-integritetsforfragningar","status":"publish","type":"page","link":"https:\/\/yohann.shop\/sv\/gdpr-integritetsforfragningar\/","title":{"rendered":"GDPR-integritetsf\u00f6rfr\u00e5gningar"},"content":{"rendered":"\n<style>\n    #form-gdpr-access-data-request,\n    #form-gdpr-correct-info-request,\n    #form-gdpr-delete-data-request {\n        display: none;\n    }\n    #gdpr_page button {\n      background-color: transparent;\n      border: 0;\n      border-bottom: 1px solid black;\n      padding: 0px;\n    }\n\n    \/* Modal background *\/\n    #data-verification-background {\n      display: none;\n      position: fixed;\n      z-index: 1;\n      padding: 24px 16px;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      overflow: auto;\n      background-color: rgb(0,0,0);\n      background-color: rgba(15, 23, 42, 0.5);\n      opacity: unset;\n      z-index: 9999;\n      align-items: center;\n      justify-content: center;\n    }\n    \/* Modal Content *\/\n    #data-verification-modal {\n      background-color: #fefefe;\n      margin: 0;\n      padding: 20px 22px;\n      border: 1px solid #d0d7de;\n      border-radius: 14px;\n      box-shadow: 0 24px 60px rgba(15, 23, 42, 0.22);\n      width: min(100%, 620px);\n      max-height: calc(100vh - 48px);\n      overflow-y: auto;\n      opacity: 1;\n    }\n    \/* Modal Close Button *\/\n    .data-verification-close {\n      color: #4b5563;\n      float: right;\n      font-size: 24px;\n      font-weight: 500;\n      line-height: 22px;\n      background-color: transparent;\n      border: 0;\n      width: 30px;\n      height: 30px;\n      border-radius: 8px;\n      padding: 0;\n      transition: background-color 0.2s ease, color 0.2s ease;\n    }\n    .data-verification-close:hover {\n      color: #111827;\n      background-color: #f3f4f6;\n      text-decoration: none;\n      cursor: pointer;\n    }\n    \/* Checkbox Text *\/\n    #data-verification-container {\n      display: flex;\n      align-items: flex-start;\n      gap: 12px;\n      margin-top: 8px;\n    }\n    #data-verification-container p {\n      display: block;\n      padding: 0;\n      margin: 0;\n      line-height: 1.5;\n      font-size: 15px;\n      color: #1f2937;\n      width: auto;\n    }\n    #data-verification-container a, #data-verification-container a:hover{\n      text-decoration: underline !important;\n      color: #2563eb;\n      font-weight: 600;\n    }\n    #data-verification-container input {\n      opacity: 0;\n      width: 0;\n      height: 0;\n      margin: 0;\n      padding: 0;\n    }\n    \/* Checkbox Icon *\/\n    #data-verification-icon {\n      cursor: pointer;\n      position: relative;\n      margin: 2px 0 0;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      width: 24px;\n      height: 24px;\n      -webkit-tap-highlight-color: transparent;\n      transform: translate3d(0, 0, 0);\n      flex: 0 0 24px;\n    }\n    #data-verification-icon:before {\n      content: \"\";\n      position: absolute;\n      top: -7px;\n      left: -7px;\n      width: 32px;\n      height: 32px;\n      border-radius: 50%;\n      background: rgba(34,50,84,0.03);\n      opacity: 0;\n      transition: opacity 0.2s ease;\n    }\n    #data-verification-icon svg {\n      position: relative;\n      z-index: 1;\n      fill: none;\n      stroke-linecap: round;\n      stroke-linejoin: round;\n      stroke: #94a3b8;\n      stroke-width: 1.5;\n      transform: translate3d(0, 0, 0);\n      transition: all 0.2s ease;\n    }\n    #data-verification-icon svg path {\n      stroke-dasharray: 60;\n      stroke-dashoffset: 0;\n    }\n    #data-verification-icon svg polyline {\n      stroke-dasharray: 22;\n      stroke-dashoffset: 66;\n    }\n    #data-verification-icon:hover:before {\n      opacity: 1;\n    }\n    #data-verification-container:hover #data-verification-icon svg {\n      stroke: #2563eb;\n    }\n    #data-verification-icon.clicked svg {\n      stroke: #2563eb;\n    }\n    #data-verification-icon.clicked svg path {\n      stroke-dashoffset: 60;\n      transition: all 0.3s linear;\n    }\n    #data-verification-icon.clicked svg polyline {\n      stroke-dashoffset: 42;\n      transition: all 0.2s linear;\n      transition-delay: 0.15s;\n    }\n\n    \/* Accessibility design *\/\n    #data-verification-icon:focus, .data-verification-close:focus, #data-verification-container input:focus ~ #data-verification-icon svg, #data-verification-container a:focus {\n      box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.28);\n      transition: all 0.3s ease;\n      outline: none;\n      transform: scale(1.06);\n    }\n\n    \/* Loading Element *\/\n    .loading {\n        display: none;\n        top:50vh;\n        left:50vw;\n        position:fixed;\n    }\n    .loading:not(:required):after {\n      content: '';\n      display: block;\n      font-size: 10px;\n      width: 1em;\n      height: 1em;\n      margin-top: -0.5em;\n      -webkit-animation: spinner 1500ms infinite linear;\n      -moz-animation: spinner 1500ms infinite linear;\n      -ms-animation: spinner 1500ms infinite linear;\n      -o-animation: spinner 1500ms infinite linear;\n      animation: spinner 1500ms infinite linear;\n      border-radius: 0.5em;\n      -webkit-box-shadow: rgba(255,255,255, 1) 1.5em 0 0 0, rgba(255,255,255, 1) 1.1em 1.1em 0 0, rgba(255,255,255, 1) 0 1.5em 0 0, rgba(255,255,255, 1) -1.1em 1.1em 0 0, rgba(255,255,255, 1) -1.5em 0 0 0, rgba(255,255,255, 1) -1.1em -1.1em 0 0, rgba(255,255,255, 1) 0 -1.5em 0 0, rgba(255,255,255, 1) 1.1em -1.1em 0 0;\n      box-shadow: rgba(255,255,255, 1) 1.5em 0 0 0, rgba(255,255,255, 1) 1.1em 1.1em 0 0, rgba(255,255,255, 1) 0 1.5em 0 0, rgba(255,255,255, 1) -1.1em 1.1em 0 0, rgba(255,255,255, 1) -1.5em 0 0 0, rgba(255,255,255, 1) -1.1em -1.1em 0 0, rgba(255,255,255, 1) 0 -1.5em 0 0, rgba(255,255,255, 1) 1.1em -1.1em 0 0;\n    }\n    #gdpr_page .list-unstyled li button {\n      cursor: pointer;\n    }\n    #gdpr_page .form-gdpr-request form label {\n      display: block;\n      margin-bottom: 10px;\n      font-weight: 600;\n    }\n    #gdpr_page .form-gdpr-request form input[type=\"email\"] {\n      display: inline-block;\n      width: 100%;\n      max-width: 420px;\n      padding: 12px 14px;\n      margin: 0 10px 12px 0;\n      border: 1px solid #d0d7de;\n      border-radius: 10px;\n      font-size: 16px;\n      line-height: 1.4;\n      box-sizing: border-box;\n      vertical-align: middle;\n      transition: border-color 0.2s ease, box-shadow 0.2s ease;\n      background-color: #fff;\n      color: #1f2328;\n    }\n    #gdpr_page .form-gdpr-request form input[type=\"email\"]:focus {\n      border-color: #4c8bf5;\n      box-shadow: 0 0 0 3px rgba(76, 139, 245, 0.2);\n      outline: none;\n    }\n    #gdpr_page .form-gdpr-request form input[type=\"submit\"] {\n      display: inline-block;\n      min-height: 42px;\n      padding: 10px 18px;\n      margin-bottom: 12px;\n      border: 0;\n      border-radius: 10px;\n      background-color: #111827;\n      color: #fff;\n      font-size: 15px;\n      font-weight: 600;\n      line-height: 1;\n      cursor: pointer;\n      vertical-align: middle;\n      transition: background-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;\n    }\n    #gdpr_page .form-gdpr-request form input[type=\"submit\"]:hover {\n      background-color: #1f2937;\n      transform: translateY(-1px);\n    }\n    #gdpr_page .form-gdpr-request form input[type=\"submit\"]:focus {\n      box-shadow: 0 0 0 3px rgba(76, 139, 245, 0.25);\n      outline: none;\n    }\n    #gdpr_page .form-gdpr-request form input[type=\"button\"].btn,\n    #gdpr_page .form-gdpr-request form button.btn {\n      display: inline-block;\n      margin-top: 8px;\n      margin-bottom: 12px;\n      padding: 10px 18px;\n      font-size: 14px;\n      font-weight: 600;\n      color: #fff;\n      background-color: #111827;\n      border: none;\n      border-radius: 8px;\n      cursor: pointer;\n      line-height: 1;\n      vertical-align: middle;\n      transition: background-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;\n    }\n    #gdpr_page .form-gdpr-request form input[type=\"button\"].btn:hover,\n    #gdpr_page .form-gdpr-request form button.btn:hover {\n      background-color: #1f2937;\n      transform: translateY(-1px);\n    }\n    #gdpr_page .form-gdpr-request form input[type=\"button\"].btn:focus,\n    #gdpr_page .form-gdpr-request form button.btn:focus {\n      box-shadow: 0 0 0 3px rgba(76, 139, 245, 0.25);\n      outline: none;\n    }\n    #gdpr_page .form-gdpr-request form input[type=\"button\"].btn:disabled,\n    #gdpr_page .form-gdpr-request form button.btn:disabled {\n      opacity: 0.65;\n      cursor: not-allowed;\n      transform: none;\n    }\n    #gdpr_page .form-gdpr-request form .gdpr-request-success {\n      display: block;\n      margin: 0 0 12px;\n      color: #15803d;\n      font-size: 14px;\n      line-height: 1.4;\n      font-weight: 600;\n    }\n    #gdpr_page .form-gdpr-request form .gdpr-request-error {\n      display: block;\n      margin: 0 0 12px;\n      color: #b91c1c;\n      font-size: 14px;\n      line-height: 1.4;\n      font-weight: 600;\n    }\n    .show-isense {\n      transition: opacity 400ms !important;\n    }\n    .hide-isense {\n      opacity: 0 !important;\n      transition: 0.4s ease-out;\n    }\n\n    \/* Modal changes on mobile resolution*\/\n    @media only screen and (max-width: 600px) {\n      #data-verification-modal {\n        width: 100%;\n        padding: 16px;\n      }\n    }\n\n    \/* Animation *\/\n    @-webkit-keyframes spinner {\n      0% {\n        -webkit-transform: rotate(0deg);\n        -moz-transform: rotate(0deg);\n        -ms-transform: rotate(0deg);\n        -o-transform: rotate(0deg);\n        transform: rotate(0deg);\n      }\n      100% {\n        -webkit-transform: rotate(360deg);\n        -moz-transform: rotate(360deg);\n        -ms-transform: rotate(360deg);\n        -o-transform: rotate(360deg);\n        transform: rotate(360deg);\n      }\n    }\n    @-moz-keyframes spinner {\n      0% {\n        -webkit-transform: rotate(0deg);\n        -moz-transform: rotate(0deg);\n        -ms-transform: rotate(0deg);\n        -o-transform: rotate(0deg);\n        transform: rotate(0deg);\n      }\n      100% {\n        -webkit-transform: rotate(360deg);\n        -moz-transform: rotate(360deg);\n        -ms-transform: rotate(360deg);\n        -o-transform: rotate(360deg);\n        transform: rotate(360deg);\n      }\n    }\n    @-o-keyframes spinner {\n      0% {\n        -webkit-transform: rotate(0deg);\n        -moz-transform: rotate(0deg);\n        -ms-transform: rotate(0deg);\n        -o-transform: rotate(0deg);\n        transform: rotate(0deg);\n      }\n      100% {\n        -webkit-transform: rotate(360deg);\n        -moz-transform: rotate(360deg);\n        -ms-transform: rotate(360deg);\n        -o-transform: rotate(360deg);\n        transform: rotate(360deg);\n      }\n    }\n    @keyframes spinner {\n      0% {\n        -webkit-transform: rotate(0deg);\n        -moz-transform: rotate(0deg);\n        -ms-transform: rotate(0deg);\n        -o-transform: rotate(0deg);\n        transform: rotate(0deg);\n      }\n      100% {\n        -webkit-transform: rotate(360deg);\n        -moz-transform: rotate(360deg);\n        -ms-transform: rotate(360deg);\n        -o-transform: rotate(360deg);\n        transform: rotate(360deg);\n      }\n    }\n<\/style><div id=\"gdpr_page\" class=\"col-sm-12\">\n    <div>\n        <p><strong>Vi respekterar din integritet.<\/strong> Om du befinner dig inom Europeiska ekonomiska samarbetsomr\u00e5det (EES) har du vissa r\u00e4ttigheter enligt Dataskyddsf\u00f6rordningen (GDPR). Anv\u00e4nd alternativen nedan f\u00f6r att ut\u00f6va dina r\u00e4ttigheter g\u00e4llande de personuppgifter vi har om dig.<\/p>\n    <\/div>\n    <p><strong>S\u00e5 hanterar vi din f\u00f6rfr\u00e5gan<\/strong> N\u00e4r du skickar in en f\u00f6rfr\u00e5gan via denna sida behandlar v\u00e5r efterlevnadsleverant\u00f6r <strong>(Consentmo)<\/strong> endast din e-postadress och teknisk information (s\u00e5som IP-adress) f\u00f6r att verifiera och fullg\u00f6ra din f\u00f6rfr\u00e5gan, f\u00f6rhindra missbruk samt f\u00f6ra register \u00f6ver efterlevnad. F\u00f6r mer information, se <a href=\"https:\/\/www.consentmo.com\/end-user-dpa\" target=\"_blank\" aria-label=\"Consentmos policy f\u00f6r databehandling (\u00f6ppnas i ny flik)\">Consentmos policy f\u00f6r databehandling<\/a>.<\/p>\n    <br>\n    <h2>Komma \u00e5t eller ladda ner mina uppgifter<\/h2>\n    <p>Du kan beg\u00e4ra en kopia av de personuppgifter vi har om dig, inklusive kontouppgifter och orderhistorik. Du kan beg\u00e4ra dina uppgifter i ett portabelt format (CSV eller PDF).<\/p>\n    <ul id=\"gdpr_access_data_compliance_requests\" class=\"gdpr-compliance-requests list-unstyled\">\n        <li><button id=\"btn-gdpr-access-data-request\" aria-label=\"Beg\u00e4r mina uppgifter\" aria-controls=\"form-gdpr-access-data-request\" aria-expanded=\"false\">Beg\u00e4r mina uppgifter<\/button><\/li>\n    <\/ul>\n    <div id=\"form-gdpr-access-data-request\" class=\"form-gdpr-request\">\n        <form>\n            <label for=\"form-gdpr-access-data-request-email\">Ange din e-postadress f\u00f6r att bekr\u00e4fta din identitet<\/label>\n            <input type=\"email\" name=\"email\" id=\"form-gdpr-access-data-request-email\" placeholder=\"example@email.com\" autocomplete=\"email\" autocorrect=\"off\" autocapitalize=\"off\" autofocus=\"\">\n            <input type=\"submit\" id=\"form-gdpr-access-data-request-submit\" class=\"btn\" value=\"Skicka\">\n        <\/form>\n    <\/div>\n    <p><em>Svarstid: Vi svarar inom en m\u00e5nad. Om din f\u00f6rfr\u00e5gan \u00e4r komplex f\u00e5r vi f\u00f6rl\u00e4nga denna period enligt lag och kommer att informera dig.<\/em><\/p>\n    <br>\n    <h2>R\u00e4tta mina uppgifter<\/h2>\n    <p>Om du anser att dina personuppgifter \u00e4r felaktiga eller ofullst\u00e4ndiga (till exempel felaktig leveransadress eller felstavat namn) kan du uppdatera dem h\u00e4r.<\/p>\n    <ul id=\"gdpr_correct_info_compliance_requests\" class=\"gdpr-compliance-requests list-unstyled\">\n        <li><button id=\"btn-gdpr-correct-info-request\" aria-label=\"R\u00e4tta mina uppgifter\" aria-controls=\"form-gdpr-correct-info-request\" aria-expanded=\"false\">R\u00e4tta mina uppgifter<\/button><\/li>\n    <\/ul>\n    <div id=\"form-gdpr-correct-info-request\" class=\"form-gdpr-request\">\n        <form>\n            <label for=\"form-gdpr-correct-info-request-email\">Ange din e-postadress f\u00f6r att bekr\u00e4fta din identitet<\/label>\n            <input type=\"email\" name=\"email\" id=\"form-gdpr-correct-info-request-email\" placeholder=\"example@email.com\" autocomplete=\"email\" autocorrect=\"off\" autocapitalize=\"off\" autofocus=\"\">\n            <input type=\"submit\" id=\"form-gdpr-correct-info-request-submit\" class=\"btn\" value=\"Skicka\">\n        <\/form>\n    <\/div>\n    <br>\n    <h2>Radera mina uppgifter<\/h2>\n    <p>Du kan beg\u00e4ra radering av dina personuppgifter som \u00e4r kopplade till denna butik (\u00e4ven k\u00e4nt som \u201dr\u00e4tten att bli gl\u00f6md\u201d).<\/p>\n    <ul id=\"gdpr_delete_data_compliance_requests\" class=\"gdpr-compliance-requests list-unstyled\">\n        <li><button id=\"btn-gdpr-delete-data-request\" aria-label=\"Beg\u00e4r radering\" aria-controls=\"form-gdpr-delete-data-request\" aria-expanded=\"false\">Beg\u00e4r radering<\/button><\/li>\n    <\/ul>\n    <div id=\"form-gdpr-delete-data-request\" class=\"form-gdpr-request\">\n        <form>\n            <label for=\"form-gdpr-delete-data-request-email\">Ange din e-postadress f\u00f6r att bekr\u00e4fta din identitet<\/label>\n            <input type=\"email\" name=\"email\" id=\"form-gdpr-delete-data-request-email\" placeholder=\"example@email.com\" autocomplete=\"email\" autocorrect=\"off\" autocapitalize=\"off\" autofocus=\"\">\n            <input type=\"submit\" class=\"btn\" id=\"form-gdpr-delete-data-request-submit\" value=\"Skicka\">\n        <\/form>\n    <\/div>\n    <p><em>Viktigt: Viss information kan komma att beh\u00e5llas d\u00e4r det kr\u00e4vs enligt lag eller f\u00f6r ber\u00e4ttigade \u00e4ndam\u00e5l (till exempel skatt, bedr\u00e4gerif\u00f6rebyggande och s\u00e4kerhet).<\/em><\/p>\n    <br>\n    <h2>Hantera integritetsinst\u00e4llningar<\/h2>\n    <p>Du kan anpassa din upplevelse genom att v\u00e4lja exakt vilka typer av cookies och tekniker du till\u00e5ter oss att anv\u00e4nda (t.ex. aktivera analys men inaktivera marknadsf\u00f6ring). Du kan uppdatera dessa specifika inst\u00e4llningar n\u00e4r som helst.<\/p>\n    <ul id=\"gdpr_manage_privacy_preferences_compliance_requests\" class=\"gdpr-compliance-requests list-unstyled\">\n        <li><button id=\"btn-gdpr-manage-privacy-preferences\" aria-label=\"Uppdatera cookie-inst\u00e4llningar\">Uppdatera cookie-inst\u00e4llningar<\/button><\/li>\n    <\/ul>\n    <br>\n    <h2>\u00c5terkalla samtycke<\/h2>\n    <p>Du har r\u00e4tt att n\u00e4r som helst \u00e5terkalla ditt samtycke till Shopify-marknadsf\u00f6ring f\u00f6r sp\u00e5rningstekniker. Detta g\u00e4ller din framtida anv\u00e4ndning av v\u00e5r butik och stoppar datainsamling f\u00f6r frivilliga \u00e4ndam\u00e5l.<\/p>\n    <div id=\"form-gdpr-withdraw-consent-request\" class=\"form-gdpr-request\">\n        <form action=\"#\" onsubmit=\"return false;\">\n            <div id=\"gdpr-withdraw-email-wrap\" class=\"gdpr-instant-email-wrap\" style=\"display: none; margin-bottom: 12px;\">\n                <label for=\"gdpr-withdraw-email\">Ange din e-postadress f\u00f6r att identifiera din f\u00f6rfr\u00e5gan<\/label>\n                <input type=\"email\" id=\"gdpr-withdraw-email\" placeholder=\"example@email.com\" autocomplete=\"email\" style=\"display: block; width: 100%; max-width: 400px; margin-top: 6px;\">\n                <p id=\"gdpr-withdraw-email-error\" class=\"gdpr-request-error\" role=\"alert\" style=\"display: none;\"><\/p>\n            <\/div>\n            <input type=\"button\" class=\"btn\" id=\"form-gdpr-withdraw-consent-request-submit\" value=\"\u00c5terkalla samtycke\" aria-label=\"\u00c5terkalla samtycke och inaktivera valfri sp\u00e5rning\"><p id=\"gdpr-withdraw-success\" class=\"gdpr-request-success\" role=\"status\" aria-live=\"polite\" style=\"display: none;\"><\/p>\n            <p id=\"gdpr-withdraw-error\" class=\"gdpr-request-error\" role=\"alert\" aria-live=\"polite\" style=\"display: none;\"><\/p>\n        <\/form>\n    <\/div>\n    <br>\n    <h2>Begr\u00e4nsa eller inv\u00e4nda mot behandling<\/h2>\n    <p>Du kan beg\u00e4ra att vi begr\u00e4nsar behandlingen av dina personuppgifter eller inv\u00e4nda mot vissa behandlingar (s\u00e5som direktmarknadsf\u00f6ring eller behandling som grundar sig p\u00e5 ber\u00e4ttigade intressen).<\/p>\n    <p>F\u00f6r att ut\u00f6va dessa r\u00e4ttigheter, kontakta oss p\u00e5:<\/p>\n    <p>\ud83d\udce7 info@yohann.com<\/p>\n    <br>\n    <h2>Kontaktuppgifter<\/h2>\n    <p>F\u00f6r fr\u00e5gor om dina integritetsr\u00e4ttigheter eller denna sida, kontakta:<\/p>\n    <p><strong>E-post:<\/strong> info@yohann.com<\/p>\n    <p><strong>Adress:<\/strong> Schwarzwaldstra\u00dfe 61, 79539 L\u00f6rrach , Tyskland<\/p>\n    <br>\n    <h2>Inl\u00e4mna ett klagom\u00e5l<\/h2><p>Om du anser att vi inte har tillr\u00e4ckligt \u00e5tg\u00e4rdat dina synpunkter har du r\u00e4tt att l\u00e4mna in ett klagom\u00e5l till din nationella dataskyddsmyndighet (DPA).<\/p>\n<\/div>\n\n<script>window.__CONSENTMO_CUSTOMER_IDENTIFICATION={\"withdraw_consent\":false,\"do_not_sell\":false,\"limit_use\":false};window.__CONSENTMO_CUSTOMER_IDENTIFICATION_I18N={\"invalidEmail\":\"Ange en giltig e-postadress.\",\"emailLabelIdentify\":\"Ange din e-post f\u00f6r att identifiera din f\u00f6rfr\u00e5gan\"};<\/script><script src=\"https:\/\/cdn.consentmo.com\/js\/privacy_customer_identification.js?v=1789549329\"><\/script><script>\n\n     \/* SLIDE UP *\/\n     let slideUp = (target, duration=500) => {\n        target.style.transitionProperty = 'height, margin, padding';\n        target.style.transitionDuration = duration + 'ms';\n        target.style.boxSizing = 'border-box';\n        target.style.height = target.offsetHeight + 'px';\n        target.offsetHeight;\n        target.style.overflow = 'hidden';\n        target.style.height = 0;\n        target.style.paddingTop = 0;\n        target.style.paddingBottom = 0;\n        target.style.marginTop = 0;\n        target.style.marginBottom = 0;\n        window.setTimeout( () => {\n            target.style.display = 'none';\n            target.style.removeProperty('height');\n            target.style.removeProperty('padding-top');\n            target.style.removeProperty('padding-bottom');\n            target.style.removeProperty('margin-top');\n            target.style.removeProperty('margin-bottom');\n            target.style.removeProperty('overflow');\n            target.style.removeProperty('transition-duration');\n            target.style.removeProperty('transition-property');\n        }, duration);\n    }\n\n    \/* SLIDE DOWN *\/\n    let slideDown = (target, duration=500) => {\n      setTimeout(function(){\n        target.style.removeProperty('display');\n        let display = window.getComputedStyle(target).display;\n        if (display === 'none') display = 'block';\n\n          target.style.display = display;\n          \n          let height = target.offsetHeight;\n          \n          target.style.overflow = 'hidden';\n          target.style.height = 0;\n          target.style.paddingTop = 0;\n          target.style.paddingBottom = 0;\n          target.style.marginTop = 0;\n          target.style.marginBottom = 0;\n          target.offsetHeight;\n          target.style.boxSizing = 'border-box';\n          target.style.transitionProperty = \"height, margin, padding\";\n          target.style.transitionDuration = duration + 'ms';\n          target.style.height = height + 'px';\n\n          target.style.removeProperty('padding-top');\n          target.style.removeProperty('padding-bottom');\n          target.style.removeProperty('margin-top');\n          target.style.removeProperty('margin-bottom');\n          \n          window.setTimeout( () => {\n              target.style.removeProperty('height');\n              target.style.removeProperty('overflow');\n              target.style.removeProperty('transition-duration');\n              target.style.removeProperty('transition-property');\n          }, duration);\n       }, 100)\n    }\n\n    \/* TOOGLE *\/\n    var slideToggle = (target, duration = 500) => {\n        if (window.getComputedStyle(target).display === 'none') {\n            return slideDown(target, duration);\n        } else {\n            return slideUp(target, duration);\n        }\n    }\n\n    \/* FADE *\/\n    var toggleFadeiSense = (elem, show) => {\n        if (show) {\n            elem.style.display = elem.id === 'data-verification-background' ? 'flex' : 'block';\n            setTimeout(function(){\n                elem.classList.add('show-isense');\n                elem.classList.remove('hide-isense');\n            },20)\n        } else {\n            elem.classList.remove('show-isense');\n            elem.classList.add('hide-isense');\n            setTimeout(() => {\n                elem.style.display = 'none';\n            }, 400)\n        }\n    }\n\n    var gdprSlideUpAll = function() {\n        slideUp(document.querySelector('#form-gdpr-access-data-request'), 100);\n        if(document.querySelector('#btn-gdpr-access-data-request')) document.querySelector('#btn-gdpr-access-data-request').setAttribute(\"aria-expanded\", \"false\");\n        slideUp(document.querySelector('#form-gdpr-correct-info-request'), 100);\n        if(document.querySelector('#btn-gdpr-correct-info-request')) document.querySelector('#btn-gdpr-correct-info-request').setAttribute(\"aria-expanded\", \"false\");\n        slideUp(document.querySelector('#form-gdpr-delete-data-request'), 100);\n        if(document.querySelector('#btn-gdpr-delete-data-request')) document.querySelector('#btn-gdpr-delete-data-request').setAttribute(\"aria-expanded\", \"false\");\n        if(document.querySelector('#gdpr_page button')) document.querySelector('#gdpr_page button').setAttribute(\"aria-expanded\", \"false\");\n    };\n\n    \/** Instant withdraw consent: same as cookie banner Reject (deny + consent record). *\/\n    (function() {\n        var WITHDRAW_SUCCESS_MSG = 'Ditt samtycke har \u00e5terkallats. All valfri sp\u00e5rning har inaktiverats f\u00f6r den h\u00e4r webbl\u00e4saren.';\n        var GEO_PRIMARY = 'https:\/\/wekre6r5lsxxzzbnlltsbyfm6i0dcqrs.lambda-url.eu-central-1.on.aws';\n        var GEO_FALLBACK = 'https:\/\/workers.consentmo.com\/action\/geo';\n        var CONSENT_PRIMARY = 'https:\/\/4nbp277fevb5pvm2ditk5w6swe0biflq.lambda-url.eu-central-1.on.aws';\n        var CONSENT_FALLBACK = 'https:\/\/workers.consentmo.com\/action\/consent';\n\n        function getDeviceTypeInline() {\n            var ua = navigator.userAgent || '';\n            if (\/(tablet|ipad|playbook|silk)|(android(?!.*mobi))\/i.test(ua)) return 't';\n            if (\/Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)\/.test(ua)) return 'm';\n            return 'd';\n        }\n\n        function int2ip(ipInt) {\n            return ((ipInt >>> 24) + '.' + ((ipInt >> 16) & 255) + '.' + ((ipInt >> 8) & 255) + '.' + (ipInt & 255));\n        }\n\n        function setConsentCookie(name, value, days) {\n            var expires = '';\n            if (days) {\n                var date = new Date();\n                date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n                expires = '; expires=' + date.toUTCString();\n            }\n            var secure = location.protocol === 'https:' ? '; Secure' : '';\n            document.cookie = name + '=' + encodeURIComponent(value || '') + expires + '; path=\/; SameSite=Lax' + secure;\n        }\n\n        function expireCookie(name) {\n            document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=\/';\n            var host = location.hostname;\n            if (host) {\n                document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=\/; domain=' + host;\n                var parts = host.split('.');\n                if (parts.length >= 2) {\n                    document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=\/; domain=.' + parts.slice(-2).join('.');\n                }\n            }\n        }\n\n        function clearCategoryFromSettings(settings, cat) {\n            if (!settings) return;\n            var raw = settings[cat + '_cookies'] || '';\n            raw.split('n').map(function(c) { return c.trim(); }).filter(Boolean).forEach(function(n) { expireCookie(n); });\n            if (cat === 'marketing' && settings.youtube_iframe_options && settings.youtube_iframe_options.enabled) {\n                ['VISITOR_INFO1_LIVE', 'YSC', 'SOCS', '__Secure-3PSID', '__Secure-1PSID'].forEach(expireCookie);\n            }\n        }\n\n        function parseGdprSettings() {\n            var out = {\n                cookieName: '',\n                consentDuration: 365,\n                paUsrId: 0,\n                saleRegion: false,\n                manageSale: '',\n                saleCheckbox: '',\n                saleText: '',\n                settings: null\n            };\n            try {\n                var raw = localStorage.getItem('gdprCache');\n                if (!raw) return out;\n                var cache = JSON.parse(raw);\n                out.saleRegion = !!cache.userIsInSaleOfDataRegion;\n                if (cache.getCookieConsentSettings) {\n                    var s = JSON.parse(cache.getCookieConsentSettings);\n                    out.settings = s;\n                    out.cookieName = s.cookie_name != null ? String(s.cookie_name) : '';\n                    out.consentDuration = parseInt(s.consent_duration, 10) || 365;\n                    out.paUsrId = parseInt(s.pa_usr_id, 10) || 0;\n                    out.manageSale = String(s.manage_sale_of_data || '');\n                    out.saleCheckbox = String(s.sale_of_data_checkbox || '');\n                    out.saleText = String(s.sale_of_data_text || '');\n                }\n            } catch (e) {}\n            return out;\n        }\n\n        function userInSalesRegionFromParsed(parsed) {\n            return !!(parsed && parsed.saleRegion && parsed.manageSale === '1' && parsed.saleText && parsed.saleCheckbox);\n        }\n\n        function appendGdprCache(key, val) {\n            try {\n                var g = JSON.parse(localStorage.getItem('gdprCache') || '{}');\n                g[key] = val;\n                localStorage.setItem('gdprCache', JSON.stringify(g));\n            } catch (e) {}\n        }\n\n        function getConsentIdentifier() {\n            var STORAGE_KEY = 'csmConsentIdentifier';\n            try {\n                var stored = localStorage.getItem(STORAGE_KEY);\n                if (stored) {\n                    var data = JSON.parse(stored);\n                    if (data.consentIdentifier && data.expiresAt && new Date(data.expiresAt) > new Date()) {\n                        return data.consentIdentifier;\n                    }\n                    localStorage.removeItem(STORAGE_KEY);\n                }\n            } catch (e) {}\n            var bytes = new Uint8Array(32);\n            if (window.crypto && window.crypto.getRandomValues) {\n                window.crypto.getRandomValues(bytes);\n            } else {\n                for (var i = 0; i < bytes.length; i++) bytes[i] = Math.floor(Math.random() * 256);\n            }\n            var hex = '';\n            for (var j = 0; j < bytes.length; j++) hex += ('0' + bytes[j].toString(16)).slice(-2);\n            try {\n                var exp = new Date();\n                exp.setDate(exp.getDate() + 365);\n                localStorage.setItem(STORAGE_KEY, JSON.stringify({\n                    consentIdentifier: hex,\n                    createdAt: new Date().toISOString(),\n                    expiresAt: exp.toISOString()\n                }));\n            } catch (e2) {}\n            return hex;\n        }\n\n        function normalizeGeo(geo) {\n            var addInfo = geo &#038;&#038; geo.add_info != null ? String(geo.add_info) : '';\n            var longIpRegex = \/^-?d{1,12}$\/;\n            var ip = longIpRegex.test(addInfo) ? int2ip(parseInt(addInfo, 10)) : addInfo;\n            return {\n                ip: ip,\n                country: (geo &#038;&#038; geo.country) || '',\n                region: (geo &#038;&#038; (geo.state || geo.regionCode)) || '',\n                region_name: (geo &#038;&#038; geo.region) || '',\n                city: (geo &#038;&#038; geo.city) || ''\n            };\n        }\n\n        function fetchGeo() {\n            return fetch(GEO_PRIMARY, { method: 'GET', headers: { 'Accept': 'application\/json' } })\n                .then(function(r) { return r.json(); })\n                .catch(function() {\n                    return fetch(GEO_FALLBACK, { method: 'GET', headers: { 'Accept': 'application\/json' } })\n                        .then(function(r2) { return r2.json(); });\n                })\n                .catch(function() {\n                    return fetch('https:\/\/www.cloudflare.com\/cdn-cgi\/trace', { method: 'GET' })\n                        .then(function(r3) { return r3.text(); })\n                        .then(function(text) {\n                            var ip = '';\n                            text.split('n').forEach(function(line) {\n                                var p = line.split('=');\n                                if (p[0] === 'ip') ip = p[1] || '';\n                            });\n                            return { add_info: ip, country: 'US', state: '', region: '', city: '' };\n                        });\n                });\n        }\n\n        function applyShopifyCustomerPrivacy(blockedCategoriesComma) {\n            var isA = blockedCategoriesComma.indexOf('analytics') >= 0;\n            var isM = blockedCategoriesComma.indexOf('marketing') >= 0;\n            var isF = blockedCategoriesComma.indexOf('functionality') >= 0;\n            var isS = blockedCategoriesComma.indexOf('saleofdata') >= 0;\n            var parsed = parseGdprSettings();\n            var payload = { analytics: !isA, marketing: !isM, preferences: !isF };\n            if (userInSalesRegionFromParsed(parsed) || isS) {\n                payload.sale_of_data = !isS;\n            }\n            var doSet = function() {\n                if (typeof Shopify !== 'undefined' && Shopify.customerPrivacy && typeof Shopify.customerPrivacy.setTrackingConsent === 'function') {\n                    Shopify.customerPrivacy.setTrackingConsent(payload, function() {});\n                }\n            };\n            if (typeof Shopify === 'undefined') return;\n            if (Shopify.customerPrivacy && typeof Shopify.customerPrivacy.setTrackingConsent === 'function') {\n                doSet();\n            } else if (typeof Shopify.loadFeatures === 'function') {\n                Shopify.loadFeatures([{ name: 'consent-tracking-api', version: '0.1' }], function(err) {\n                    if (!err) doSet();\n                });\n            }\n        }\n\n        function postConsent(bodyObj) {\n            var body = JSON.stringify(bodyObj);\n            var opts = { method: 'POST', headers: { 'Content-Type': 'text\/plain' }, body: body };\n            return fetch(CONSENT_PRIMARY, opts).then(function(r) {\n                if (r.ok) return r;\n                throw new Error('consent primary failed');\n            }).catch(function() {\n                return fetch(CONSENT_FALLBACK, opts).then(function(r2) {\n                    if (r2.ok) return r2;\n                    throw new Error('consent fallback failed');\n                });\n            });\n        }\n\n        \/** Logs customer\/withdraw_consent to GDPR requests (same consent_identifier as consent record for cross-reference). Fire-and-forget. *\/\n        function logInstantWithdrawGdprRequest(consentIdentifier, ipAddress) {\n            try {\n                if (typeof Shopify === 'undefined' || !Shopify.shop || !consentIdentifier) return;\n                var email = '';\n                if (typeof ConsentmoCustomerIdentification !== 'undefined') {\n                    email = ConsentmoCustomerIdentification.resolveSubmitEmail(\n                        'withdraw_consent',\n                        'gdpr-withdraw-email',\n                        function() { return consentIdentifier; }\n                    );\n                }\n                if (!email) {\n                    try {\n                        if (Shopify.customerEmail) email = String(Shopify.customerEmail).trim();\n                        if (!email && window.ShopifyAnalytics && window.ShopifyAnalytics.meta && window.ShopifyAnalytics.meta.page) {\n                            var pe = window.ShopifyAnalytics.meta.page.customerEmail;\n                            if (pe) email = String(pe).trim();\n                        }\n                    } catch (e0) {}\n                }\n                if (!email) {\n                    email = String(consentIdentifier) + '@guest.withdraw.consentmo.com';\n                }\n                var customerId = 0;\n                try {\n                    if (typeof Shopify !== 'undefined' && typeof Shopify.customer_id !== 'undefined') customerId = Shopify.customer_id;\n                    else if (typeof __st !== 'undefined' && __st.cid != null) customerId = __st.cid;\n                } catch (e1) {}\n                var formData = new FormData();\n                formData.append('shop', Shopify.shop);\n                formData.append('email', email);\n                formData.append('type', 'customer\/withdraw_consent');\n                formData.append('sourceOfRequest', 1);\n                formData.append('consentGiven', 1);\n                formData.append('page', 'gdpr');\n                formData.append('lang', Shopify.locale ? Shopify.locale : '');\n                formData.append('gtranslateLang', (typeof isenseGDPR !== 'undefined' && isenseGDPR.Cookies) ? isenseGDPR.Cookies.get('googtrans') : '');\n                formData.append('ipAddress', ipAddress || '');\n                formData.append('instant_withdraw', '1');\n                if (customerId) formData.append('customer_id', customerId);\n                fetch('https:\/\/app.consentmo.com\/gdprRequests\/submitRequest', { method: 'POST', body: formData }).catch(function() {});\n            } catch (e) {}\n        }\n\n        window.csmHandleWithdrawConsentGdpr = function(btn) {\n            if (typeof Shopify === 'undefined' || !Shopify.shop) {\n                var errEl = document.getElementById('gdpr-withdraw-error');\n                if (errEl) {\n                    errEl.textContent = 'Butikskontext \u00e4r inte tillg\u00e4nglig. F\u00f6rs\u00f6k igen fr\u00e5n butiken.';\n                    errEl.style.display = 'block';\n                }\n                return;\n            }\n            if (typeof ConsentmoCustomerIdentification !== 'undefined'\n                && !ConsentmoCustomerIdentification.validateEmail('gdpr-withdraw-email', 'gdpr-withdraw-email-error', 'withdraw_consent')) {\n                return;\n            }\n            if (btn && btn.disabled) return;\n            var errBox = document.getElementById('gdpr-withdraw-error');\n            var okBox = document.getElementById('gdpr-withdraw-success');\n            if (errBox) errBox.style.display = 'none';\n            if (okBox) okBox.style.display = 'none';\n\n            var parsed = parseGdprSettings();\n            var blocked = userInSalesRegionFromParsed(parsed)\n                ? 'analytics,marketing,functionality,saleofdata'\n                : 'analytics,marketing,functionality';\n            var cookieSuffix = parsed.cookieName || '';\n            var duration = parsed.consentDuration || 365;\n\n            setConsentCookie('cookieconsent_status' + cookieSuffix, 'deny', duration);\n            setConsentCookie('cookieconsent_preferences_disabled', blocked, duration);\n            appendGdprCache('cookieconsent_status' + cookieSuffix, 'deny');\n            appendGdprCache('cookieconsent_preferences_disabled', blocked);\n\n            clearCategoryFromSettings(parsed.settings, 'analytics');\n            clearCategoryFromSettings(parsed.settings, 'marketing');\n            clearCategoryFromSettings(parsed.settings, 'functionality');\n\n            applyShopifyCustomerPrivacy(blocked);\n\n            if (btn) {\n                btn.disabled = true;\n                btn.setAttribute('aria-disabled', 'true');\n            }\n\n            fetchGeo()\n                .then(function(geo) {\n                    var n = normalizeGeo(geo);\n                    if (!n.ip) {\n                        throw new Error('no ip');\n                    }\n                    var customerId = 0;\n                    if (typeof Shopify.customer_id !== 'undefined') {\n                        customerId = Shopify.customer_id;\n                    } else if (typeof __st !== 'undefined' && __st.cid != null) {\n                        customerId = __st.cid;\n                    }\n                    var body = {\n                        consent_identifier: getConsentIdentifier(),\n                        shop: Shopify.shop,\n                        customer_id: customerId,\n                        ip: n.ip,\n                        country: n.country,\n                        region: n.region,\n                        region_name: n.region_name,\n                        city: n.city,\n                        device: getDeviceTypeInline(),\n                        pa_usr_id: parsed.paUsrId || 0,\n                        blocked_cookies: blocked + ',',\n                        accepted_page: window.location.origin + window.location.pathname,\n                        interaction_button: 5,\n                        is_sale_of_data_enabled: userInSalesRegionFromParsed(parsed)\n                    };\n                    return postConsent(body).then(function() {\n                        logInstantWithdrawGdprRequest(body.consent_identifier, n.ip);\n                    });\n                })\n                .then(function() {\n                    if (okBox) {\n                        okBox.textContent = WITHDRAW_SUCCESS_MSG;\n                        okBox.style.display = 'block';\n                    }\n                })\n                .catch(function() {\n                    if (errBox) {\n                        errBox.textContent = 'Dina inst\u00e4llningar har uppdaterats, men vi kunde inte logga denna \u00e5tg\u00e4rd. F\u00f6rs\u00f6k igen senare.';\n                        errBox.style.display = 'block';\n                    }\n                    if (btn) {\n                        btn.disabled = false;\n                        btn.removeAttribute('aria-disabled');\n                    }\n                });\n        };\n    })();\n\n    var email, type, consentGiven = false;\n    var activeSubmitButton = null;\n    var successMessage = 'Din f\u00f6rfr\u00e5gan har skickats in. Kontrollera din e-post f\u00f6r mer information.';\n    var verificationModalContent = '<div id=\"data-verification-background\"><div class=\"loading\"><\/div><div id=\"data-verification-modal\"><button class=\"data-verification-close\" aria-label=\"St\u00e4ng\">&times;<\/button><div id=\"data-verification-container\"><input type=\"checkbox\" aria-labelledby=\"gdpr-modal-container-text\"><label id=\"data-verification-icon\" aria-label=\"Dataverifieringsikon\"><svg width=\"24px\" height=\"24px\" viewBox=\"0 0 18 18\"><path d=\"M1,9 L1,3.5 C1,2 2,1 3.5,1 L14.5,1 C16,1 17,2 17,3.5 L17,14.5 C17,16 16,17 14.5,17 L3.5,17 C2,17 1,16 1,14.5 L1,9 Z\"><\/path><\/path><polyline points=\"1 9 7 14 15 4\"><\/polyline><\/svg><\/label><p id=\"gdpr-modal-container-text\">Jag ger mitt samtycke till insamling av min e-postadress och IP-adress i syfte att behandla denna f\u00f6rfr\u00e5gan. F\u00f6r mer information, se <a href=\"https:\/\/www.consentmo.com\/privacy-policy-terms-of-service\/en\" target=\"_blank\" aria-label=\"Integritetspolicy-l\u00e4nk (\u00f6ppnas i ny flik)\">Integritetspolicy<\/a>.<\/p><\/div><\/div><\/div>';\n\n    var isEmailValid = function(email) {\n        let regex = \/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$\/;\n\n        if (email == '' || email == undefined) {\n            return false;\n        } else {\n            return regex.test(email);\n        }\n    }\n\n    var gdprSendRequest = function(callback) {\n        \n        fetch('https:\/\/www.cloudflare.com\/cdn-cgi\/trace', {\n            method: 'GET' ,\n            headers: {\n                'Content-Type': 'text\/plain',\n            },\n        })\n        .then(resp => resp.text())\n        .then(resp => {\n            if (!resp.error) {\n                let ipInfo = resp;\n\n                let formData = new FormData();\n\n                formData.append('shop', Shopify.shop);\n                formData.append('email', email);\n                formData.append('type', type);\n                formData.append('sourceOfRequest', 1);\n                formData.append('ipAddress', ipInfo);\n                formData.append('consentGiven', consentGiven);\n                formData.append('page', 'gdpr');\n                formData.append('lang', Shopify.locale ? Shopify.locale : '');\n                formData.append('gtranslateLang', (typeof isenseGDPR !== 'undefined' && isenseGDPR.Cookies) ? isenseGDPR.Cookies.get('googtrans') : '');\n\n                fetch('https:\/\/app.consentmo.com\/gdprRequests\/submitRequest', {\n                    method: 'POST',\n                    body: formData\n                })\n                .then(resp => resp.json())\n                .then(resp => {\n                    if (!resp.error) {\n                        showInlineSuccessMessage();\n                    } else {\n                        showInlineErrorMessage(resp.message);\n                    }\n                    if (typeof callback == 'function') {\n                        callback(resp);\n                    }\n                })\n                .catch(error => {\n                    showInlineErrorMessage(error.message || 'N\u00e5got gick fel. F\u00f6rs\u00f6k igen.');\n                })\n\n            } \n            else {\n                showInlineErrorMessage(resp.message || 'N\u00e5got gick fel. F\u00f6rs\u00f6k igen.');\n            }                        \n        })\n    }\n\n    function showInlineSuccessMessage() {\n        if (!activeSubmitButton) {\n            return;\n        }\n        var form = activeSubmitButton.closest('form');\n        if (!form) {\n            return;\n        }\n        var errNode = form.querySelector('.gdpr-request-error');\n        if (errNode) {\n            errNode.remove();\n        }\n        var successNode = form.querySelector('.gdpr-request-success');\n        if (!successNode) {\n            successNode = document.createElement('p');\n            successNode.className = 'gdpr-request-success';\n            form.appendChild(successNode);\n        }\n        successNode.textContent = successMessage;\n    }\n\n    function showInlineErrorMessage(message) {\n        if (!activeSubmitButton) {\n            return;\n        }\n        var form = activeSubmitButton.closest('form');\n        if (!form) {\n            return;\n        }\n        var successNode = form.querySelector('.gdpr-request-success');\n        if (successNode) {\n            successNode.remove();\n        }\n        var errorNode = form.querySelector('.gdpr-request-error');\n        if (!errorNode) {\n            errorNode = document.createElement('p');\n            errorNode.className = 'gdpr-request-error';\n            form.appendChild(errorNode);\n        }\n        errorNode.textContent = message;\n    }\n\n\n    \n    document.addEventListener(\"DOMContentLoaded\", function() {\n\n      \/\/Append modal to body, because otherwise it will not stay centered(even if position is fixed)\n      document.querySelector(\"body\").insertAdjacentHTML( 'beforeend', verificationModalContent);\n      \n      \/\/ When the user clicks on <span> (x), close the modal\n      document.querySelector('.data-verification-close').addEventListener('click', function(e) {\n          e.preventDefault();\n          closeVerificationModal();\n      });\n\n      document.querySelector('#data-verification-icon, #data-verification-container p').addEventListener('click', function(e) {\n          e.preventDefault();\n\n          \/\/ Detect a href's click, because it is overwritten.\n          if(e.target.tagName === \"A\") {\n            window.open(e.target.href, '_blank');\n            return;\n          }\n\n          document.querySelector('#data-verification-icon').classList.add(\"clicked\");\n          setTimeout(()=>{\n            toggleFadeiSense(document.querySelector(\"#data-verification-modal\"), false);\n            document.querySelector('#data-verification-background .loading').style.display = 'inline-block';\n            consentGiven = true;\n            gdprSendRequest(function(resp) {\n                consentGiven = false;\n                closeVerificationModal();\n            });\n          }, 400);\n      });\n    });\n\n    function openVerificationModal(){\n        if(!isEmailValid(email)) {\n            showInlineErrorMessage('Ogiltig e-postadress');\n            return;\n        }   \n        toggleFadeiSense(document.querySelector(\"#data-verification-modal\"), true);\n        toggleFadeiSense(document.querySelector('#data-verification-background'), true);\n        document.querySelector('#data-verification-container input').focus();\n    }\n\n    function closeVerificationModal(){\n        toggleFadeiSense(document.querySelector(\"#data-verification-background\"), false);\n\n        document.querySelector('#data-verification-icon').classList.remove(\"clicked\");\n        document.querySelector('#data-verification-background .loading').style.display = 'none';\n\n        \/\/ Focus the button of the request type that was picked\n        let gdprForms = document.querySelectorAll('.form-gdpr-request');\n        gdprForms.forEach(function(gdprForm) {\n          if (gdprForm.id === 'form-gdpr-withdraw-consent-request') return;\n          if (gdprForm.style.display !== \"none\") {\n            let gdprFormLinks = gdprForm.previousElementSibling.querySelectorAll('li');\n            if (gdprFormLinks.length === 1) {\n              gdprFormLinks[0].querySelector('button').focus();\n            } else {\n              \/\/ Focus logic for Data Portability requests\n              gdprFormLinks = gdprForm.parentElement;\n              if (gdprFormLinks.nodeName === 'LI') {\n                gdprFormLinks.querySelector('button').focus();\n              }\n            }\n          }\n        });\n    }\n\n    \/\/ Access or download my data\n    document.querySelector('#btn-gdpr-access-data-request').addEventListener('click', function(e) {\n        e.preventDefault();\n        let isExpanded = this.getAttribute('aria-expanded') === 'true' ? true : false;\n        gdprSlideUpAll();\n        if(!isExpanded) {\n          slideDown(document.querySelector('#form-gdpr-access-data-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"true\");\n        } else {\n          slideUp(document.querySelector('#form-gdpr-access-data-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"false\");\n        }\n    });\n\n    document.querySelector('#form-gdpr-access-data-request-submit').addEventListener('click', function(e) {\n        e.preventDefault();\n        activeSubmitButton = this;\n        email = document.querySelector('#form-gdpr-access-data-request-email').value;\n        type = 'customer\/report';\n        openVerificationModal();\n    });\n\n    \/\/ Correct my information\n    document.querySelector('#btn-gdpr-correct-info-request').addEventListener('click', function(e) {\n        e.preventDefault();\n        let isExpanded = this.getAttribute('aria-expanded') === 'true' ? true : false;\n        gdprSlideUpAll();\n        if(!isExpanded) {\n          slideDown(document.querySelector('#form-gdpr-correct-info-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"true\");\n        } else {\n          slideUp(document.querySelector('#form-gdpr-correct-info-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"false\");\n        }\n    });\n\n    document.querySelector('#form-gdpr-correct-info-request-submit').addEventListener('click', function(e) {\n        e.preventDefault();\n        activeSubmitButton = this;\n        email = document.querySelector('#form-gdpr-correct-info-request-email').value;\n        type = 'customer\/edit';\n        openVerificationModal();\n    });\n\n    \/\/ Delete my data\n    document.querySelector('#btn-gdpr-delete-data-request').addEventListener('click', function(e) {\n        e.preventDefault();\n        let isExpanded = this.getAttribute('aria-expanded') === 'true' ? true : false;\n        gdprSlideUpAll();\n        if(!isExpanded) {\n          slideDown(document.querySelector('#form-gdpr-delete-data-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"true\");\n        } else {\n          slideUp(document.querySelector('#form-gdpr-delete-data-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"false\");\n        }\n    });\n\n    document.querySelector('#form-gdpr-delete-data-request-submit').addEventListener('click', function(e) {\n        e.preventDefault();\n        activeSubmitButton = this;\n        email = document.querySelector('#form-gdpr-delete-data-request-email').value;\n        type = 'customer\/delete';\n        openVerificationModal();\n    });\n\n    \/\/ Withdraw consent (always visible; instant reject \u2014 no expand step)\n    document.querySelector('#form-gdpr-withdraw-consent-request-submit').addEventListener('click', function(e) {\n        e.preventDefault();\n        if (typeof window.csmHandleWithdrawConsentGdpr === 'function') {\n            window.csmHandleWithdrawConsentGdpr(this);\n        }\n    });\n\n    \/\/ Manage privacy preferences\n    document.querySelector('#btn-gdpr-manage-privacy-preferences').addEventListener('click', function(e) {\n        e.preventDefault();\n\n        if (typeof showPreferences === 'function') {\n            showPreferences(this);\n            return;\n        }\n\n        let settingsButton = document.querySelector('.cc-window .cc-settings');\n        if (settingsButton) {\n            settingsButton.click();\n            return;\n        }\n\n        alert('Cookie-inst\u00e4llningar \u00e4r inte tillg\u00e4ngliga p\u00e5 denna sida.');\n    });\n\n    \/\/ Keyboard navigation in data verification modal for accessibility\n    document.addEventListener(\"DOMContentLoaded\", function() {\n      document.querySelector('#data-verification-modal').addEventListener('keydown', function(e) {\n      let isTabPressed = e.keyCode === 9 || e.key === \"Tab\" || e.code === \"Tab\";\n      let isEscapePressed = e.keyCode === 27 || e.key === \"Escape\" || e.code === \"Escape\";\n      let isSpacePressed = event.keyCode === 32 || e.key === \" \" || event.code === \"Space\";\n      let isEnterPressed = event.keyCode === 13 || e.key === \"Enter\" || event.code === \"Enter\";\n      let dataVerificationCloseButton = document.querySelector('.data-verification-close');\n      let dataVerificationCheckbox = document.querySelector('#data-verification-container input');\n      let dataVerificationLink = document.querySelector('#data-verification-container a');\n      \/\/ This function saves us the trouble of calling e.preventDefault() after every focusing\n      let executeFocus = (focusElement) => {focusElement.focus();e.preventDefault();}\n\n      if (isEscapePressed) {\n        if (dataVerificationCloseButton) {\n          dataVerificationCloseButton.click();\n        }\n      }\n\n      if (isSpacePressed || isEnterPressed) {\n        if (document.activeElement === dataVerificationCheckbox) {\n          document.querySelector('#data-verification-container #data-verification-icon').click();\n        }\n      }\n\n      if (isTabPressed) {\n        if (e.shiftKey) {\n          if (dataVerificationCloseButton && document.activeElement === dataVerificationCloseButton) {\n            executeFocus(dataVerificationLink);\n          }\n        } else {\n          if (dataVerificationLink && document.activeElement === dataVerificationLink) {\n            executeFocus(dataVerificationCloseButton);\n          }\n        }\n      }\n      });\n    });\n\n    if (typeof ConsentmoCustomerIdentification !== 'undefined') {\n        ConsentmoCustomerIdentification.initPage({ withdraw_consent: 'gdpr-withdraw-email-wrap' });\n    }\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Vi respekterar din integritet. Om du befinner dig inom Europeiska ekonomiska samarbetsomr\u00e5det (EES) har du vissa r\u00e4ttigheter enligt Dataskyddsf\u00f6rordningen (GDPR). Anv\u00e4nd alternativen nedan f\u00f6r att ut\u00f6va dina r\u00e4ttigheter g\u00e4llande de personuppgifter vi har om dig. S\u00e5 hanterar vi din f\u00f6rfr\u00e5gan N\u00e4r du skickar in en f\u00f6rfr\u00e5gan via denna sida behandlar v\u00e5r efterlevnadsleverant\u00f6r (Consentmo) endast din [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1189","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/yohann.shop\/sv\/wp-json\/wp\/v2\/pages\/1189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yohann.shop\/sv\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/yohann.shop\/sv\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/yohann.shop\/sv\/wp-json\/wp\/v2\/comments?post=1189"}],"version-history":[{"count":1,"href":"https:\/\/yohann.shop\/sv\/wp-json\/wp\/v2\/pages\/1189\/revisions"}],"predecessor-version":[{"id":1645,"href":"https:\/\/yohann.shop\/sv\/wp-json\/wp\/v2\/pages\/1189\/revisions\/1645"}],"wp:attachment":[{"href":"https:\/\/yohann.shop\/sv\/wp-json\/wp\/v2\/media?parent=1189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}