CCPA-Konformität


Your home isn’t just a collection of things—it’s a living, breathing reflection of who you are and what you need. At Viva Habitat, we believe in styling that goes deeper. Our Intentional Home Styling Reset isn’t about trends or shopping lists—it’s about realignment, reconnection, and creating a space that truly supports your life today. We explore what makes intentional styling so powerful—and why it might be the shift your home (and heart) has been craving.

Die App, die zur Sicherstellung der DSGVO/CCPA/APPI/PIPEDA-Konformität dieser Website verwendet wird, erfasst Ihre IP-Adresse und Ihre E-Mail-Adresse, um die Daten zu verarbeiten. Weitere Informationen finden Sie unter Datenschutzerklärung und Nutzungsbedingungen

Datenberichtigung

Sie können den untenstehenden Link verwenden, um Ihre Kontodaten zu aktualisieren, wenn diese nicht korrekt sind.

Datenportabilität

Über die untenstehenden Links können Sie alle von uns gespeicherten Daten herunterladen und für ein besseres Erlebnis in unserem Shop verwenden.

Zugriff auf personenbezogene Daten

Über den untenstehenden Link können Sie einen Bericht anfordern, der alle persönlichen Daten enthält, die wir für Sie speichern.

Meine persönlichen Daten nicht verkaufen

Sie können eine Anfrage einreichen, um uns mitzuteilen, dass Sie mit der Erfassung oder dem Verkauf Ihrer personenbezogenen Daten nicht einverstanden sind.

Recht auf Vergessenwerden

Verwenden Sie diese Option, wenn Sie Ihre persönlichen und anderen Daten aus unserem Shop entfernen möchten. Beachten Sie, dass durch diesen Vorgang Ihr Konto gelöscht wird, sodass Sie nicht mehr darauf zugreifen oder es verwenden können.

/* NACH OBEN SCHIEBEN */ let slideUp = (Ziel, Dauer=500) => { Ziel.Stil.TransitionProperty = 'Höhe, Rand, Polsterung'; Ziel.Stil.TransitionDuration = Dauer + 'ms'; Ziel.Stil.box Sizing = 'border-box'; Ziel.Stil.Höhe = Ziel.offsetHeight + 'px'; Ziel.offsetHeight; Ziel.Stil.overflow = 'versteckt'; Ziel.Stil.Höhe = 0; Ziel.Stil.paddingTop = 0; Ziel.Stil.paddingBottom = 0; Ziel.Stil.marginTop = 0; Ziel.Stil.marginBottom = 0; Fenster.setTimeout( () => { Ziel.Stil.display = 'none'; Ziel.Stil.removeProperty('height'); Ziel.Stil.removeProperty('padding-top'); Ziel.Stil.removeProperty('padding-bottom'); Ziel.Stil.removeProperty('margin-top'); Ziel.Stil.removeProperty('margin-bottom'); Ziel.Stil.removeProperty('overflow'); Ziel.Stil.RemoveProperty('Übergangsdauer'); Ziel.Stil.removeProperty('transition-property'); }, Dauer); // Setzen Sie beim Schließen des Abschnitts „Datenportabilität“ den Wert des Anforderungstyps wieder auf eine leere Zeichenfolge wenn (Ziel.getAttribute('id') === 'form-ccpa-data-account-request') { dokumentieren.querySelector('#form-ccpa-data-account-request-request-type').Wert = ''; } } /* HERUNTERRUTSCHEN */ let slideDown = (Ziel, Dauer=500) => { setTimeout(function(){ Ziel.Stil.removeProperty('display'); let display = window.getComputedStyle(Ziel).Anzeige; if (display === 'none') display = 'block'; Ziel.Stil.Anzeige = Anzeige; let height = Ziel.offsetHeight; Ziel.Stil.overflow = 'versteckt'; Ziel.Stil.Höhe = 0; Ziel.Stil.paddingTop = 0; Ziel.Stil.paddingBottom = 0; Ziel.Stil.marginTop = 0; Ziel.Stil.marginBottom = 0; Ziel.offsetHeight; Ziel.Stil.box Sizing = 'border-box'; Ziel.Stil.TransitionProperty = "Höhe, Rand, Polsterung"; Ziel.Stil.TransitionDuration = Dauer + 'ms'; Ziel.Stil.Höhe = Höhe + 'px'; Ziel.Stil.removeProperty('padding-top'); Ziel.Stil.removeProperty('padding-bottom'); Ziel.Stil.removeProperty('margin-top'); Ziel.Stil.removeProperty('margin-bottom'); Fenster.setTimeout( () => { Ziel.Stil.removeProperty('height'); Ziel.Stil.removeProperty('overflow'); Ziel.Stil.RemoveProperty('Übergangsdauer'); Ziel.Stil.removeProperty('transition-property'); }, Dauer); }, 100) } /* TOOGLE */ var slideToggle = (Ziel, Dauer = 500) => { wenn (Fenster.getComputedStyle(Ziel).display === 'none') { return slideDown(target, duration); } anders { return slideUp(Ziel, Dauer); } } /* VERBLASSEN */ var toggleFadeiSense = (elem, show) => { if (zeigen) { elem.Stil.display = "block"; setTimeout(function(){ elem.Klassenliste.add('show-isense'); elem.Klassenliste.remove('hide-isense'); },20) } anders { elem.Klassenliste.remove('show-isense'); elem.Klassenliste.add('hide-isense'); setTimeout(() => { elem.Stil.display = 'none'; }, 400) } } var ccpaSlideUpAll = function() { slideUp(document.querySelector('#form-ccpa-edit-account-request'), 100); slideUp(document.querySelector('#form-ccpa-data-account-request'), 100); slideUp(document.querySelector('#form-ccpa-personal-data-report-request'), 100); slideUp(document.querySelector('#form-ccpa-do-not-sell-request'), 100); slideUp(document.querySelector('#form-ccpa-delete-account-request'), 100); dokumentieren.querySelector('#ccpa_page button').setAttribute("aria-expanded", "false"); }; var E-Mail, Typ, EinwilligungGiven = false; varificationModalContent = '

Ich erkläre mich damit einverstanden, dass meine E-Mail-Adresse und meine IP-Adresse zum Zweck der Bearbeitung dieser Anfrage erhoben werden. Weitere Informationen finden Sie unter Datenschutzerklärung und Nutzungsbedingungen.

'; var ccpaSendRequest = function(callback) { fetch('https://www.Wolkenflare.com/cdn-cgi/trace', { Methode: 'GET' , Überschriften: { 'Content-Type': 'text/plain', }, }) .then(resp => resp.Text()) .then(resp => { wenn (!bzw.Fehler) { let ipInfo = resp; let formData = new FormData(); if (type === 'customer/do-not-sell') { isenseDSGVO.Kekse.set('cookieconsent_preferences_disabled', 'analytics,marketing,functionity,', { expires: 365 }); isenseDSGVO.Kekse.set('cookieconsent_status', 'accept_selected', { expires: 365 }); Fenster.Shopify.TrackingEinwilligung.setTrackingConsent(false,function() { console.log('setTrackingConsent false')}); wenn (Fenster.Shopify.Kundendatenschutz.userDataCanBeSold()) { Fenster.Shopify.Kundendatenschutz.setCCPAConsent(false, () => {}); } wenn (Dokument.querySelector('cc-window')) { dokumentieren.querySelector('cc-Fenster‘)Stil.display = 'none'; } // Popup-Text zurücksetzen dokumentieren.querySelector('#ccpa-modal-container-text').innerHTML = 'Ich stimme der Erfassung meiner E-Mail- und IP-Adresse zum Zweck der Bearbeitung dieser Anfrage zu. Weitere Informationen finden Sie unter Datenschutzerklärung und Nutzungsbedingungen.'; } Formulardaten.append('shop', Shopify.Geschäft); Formulardaten.append('email', email); Formulardaten.append('type', type); Formulardaten.append('sourceOfRequest', 2); Formulardaten.append('ipAddress', ipInfo); Formulardaten.append('consentGiven', consentGiven); Formulardaten.append('page', 'ccpa'); Formulardaten.append('lang', Shopify.Gebietsschema? Shopify.Gebietsschema: ''); Formulardaten.append('gtranslateLang', isenseGDPR.Kekse.get('googtrans') ? isenseDSGVO.Kekse.get('googtrans'): ''); fetch('https://gdpr.Apps.isenselabs.com/gdprRequests/submitRequest', { Methode: 'POST', Körper: formData }) .then(resp => resp.json()) .then(resp => { wenn (!bzw.Fehler) { ccpaSlideUpAll(); wenn (bzw.Nachricht.Länge) { Alarm (bzw.Nachricht); } anders { Alert('Ihre Anfrage wurde erfolgreich übermittelt. Weitere Informationen finden Sie in Ihren E-Mails.'); } } anders { Alarm (bzw.Nachricht); } if (typeof callback == 'function') { Rückruf(bzw.); } }) .Catch(Fehler => { Warnung(Fehler.Nachricht); }) } anders { Alarm (bzw.Nachricht); } }) } //Modal an den Körper anhängen, da er sonst nicht zentriert bleibt (auch wenn die Position festgelegt ist) dokumentieren.querySelector("body").insertAdjacentHTML( 'beforeend',ificationModalContent); dokumentieren.addEventListener("DOMContentLoaded", function() { let searchParams = new URLSearchParams(window.Standort.suchen); let param = searchParams.get('id'); if(param) { dokumentieren.getElementById(param).scrollIntoView(); } // Wenn der Benutzer auf (x) klickt, schließen Sie das Modal dokumentieren.querySelector('data-verification-close‘).addEventListener('click', function(e) { e.Standard verhindern(); closeVerificationModal(); }); dokumentieren.querySelector('#data-verification-icon, #data-verification-container p').addEventListener('click', function(e) { e.Standard verhindern(); // Erkenne den Klick eines href, da dieser überschrieben wird.wenn(z.ZieltagName === "A") { Fenster.öffnen (z.Zielhref, '_blank'); zurückkehren; } dokumentieren.querySelector('#data-verification-icon').Klassenliste.add("angeklickt"); setTimeout(()=>{ toggleFadeiSense(document.querySelector("#data-verification-modal"), false); dokumentieren.querySelector('#data-verification-background .Wird geladen').Stil.display = 'inline-block'; ZustimmungGiven = true; ccpaSendRequest(function(resp) { EinwilligungGiven = false; closeVerificationModal(); }); }, 400); }); }); Funktion openVerificationModal(){ toggleFadeiSense(document.querySelector("#data-verification-modal"), true); toggleFadeiSense(document.querySelector('#data-verification-background'), true); dokumentieren.querySelector('#data-verification-container input').Fokus(); } Funktion closeVerificationModal(){ toggleFadeiSense(document.querySelector("#data-verification-background"), false); dokumentieren.querySelector('#data-verification-icon').Klassenliste.entfernen("angeklickt"); dokumentieren.querySelector('#data-verification-background .Wird geladen').Stil.display = 'none'; // Fokussieren Sie die Schaltfläche des ausgewählten Anforderungstyps let ccpaForms = document.querySelectorAll('.form-ccpa-request'); ccpaForms.forEach(function(ccpaForm) { if (ccpaForm.Stil.display !== "none") { let ccpaFormLinks = ccpaForm.previousElementSibling.querySelectorAll('li'); if (ccpaFormLinks.Länge === 1) { ccpaFormLinks[0].querySelector('button').Fokus(); } else if (ccpaFormLinks.Länge > 1) { ccpaFormPickedLinkValue = Dokument.querySelector('#form-ccpa-data-account-request-request-type').Wert; switch (ccpaFormPickedLinkValue) { Fall 'Kunde/Anfragen': ccpaFormLinks[0].querySelector('button').Fokus(); brechen; Fall 'Kunde/persönliche_Info': ccpaFormLinks[1].querySelector('button').Fokus(); brechen; Fall 'Kunde/Bestellungen': ccpaFormLinks[2].querySelector('button').Fokus(); brechen; Standard: brechen; } } } }); } dokumentieren.querySelector('#btn-ccpa-edit-account-request').addEventListener('click', function(e) { e.Standard verhindern(); ccpaSlideUpAll(); slideDown(document.querySelector('#form-ccpa-edit-account-request'), 200); Das.setAttribute("aria-expanded", "true"); }); dokumentieren.querySelector('#form-ccpa-edit-account-request-submit').addEventListener('click', function(e) { e.Standard verhindern(); E-Mail = Dokument.querySelector('#form-ccpa-edit-account-request-email').Wert; type = 'Kunde/Bearbeiten'; openVerificationModal(); }); dokumentieren.querySelectorAll('#btn-ccpa-requests-request, #btn-ccpa-personal-information-request, #btn-ccpa-orders-request').forEach(element => { Element.addEventListener('click', function(e) { e.Standard verhindern(); ccpaSlideUpAll(); Typ = ''; // Popup-Meldung zurücksetzen dokumentieren.querySelector('#ccpa-modal-container-text').innerHTML = 'Ich stimme der Erfassung meiner E-Mail- und IP-Adresse zum Zweck der Bearbeitung dieser Anfrage zu. Weitere Informationen finden Sie unter Datenschutzerklärung und Nutzungsbedingungen.'; Schalter(dies.getAttribute('id')) { Fall 'btn-ccpa-requests-request': type = 'Kunde/Anfragen'; brechen; Fall 'btn-ccpa-personal-information-request': type = 'customer/personal_info'; brechen; Fall 'btn-ccpa-orders-request': type = 'Kunde/Bestellungen'; brechen; } dokumentieren.querySelector('#form-ccpa-data-account-request-request-type').Wert = Typ; slideDown(document.querySelector('#form-ccpa-data-account-request'), 200); Das.setAttribute("aria-expanded", "true"); }) }); dokumentieren.querySelector('#form-ccpa-data-account-request-submit').addEventListener('click', function(e) { e.Standard verhindern(); E-Mail = Dokument.querySelector('#form-ccpa-data-account-request-email').Wert; Typ = Dokument.querySelector('#form-ccpa-data-account-request-request-type').Wert; openVerificationModal(); }); dokumentieren.querySelector('#btn-ccpa-personal-data-report-request').addEventListener('click', function(e) { e.Standard verhindern(); ccpaSlideUpAll(); slideDown(document.querySelector('#form-ccpa-personal-data-report-request'), 200); Das.setAttribute("aria-expanded", "true"); }); dokumentieren.querySelector('#form-ccpa-personal-data-report-request-submit').addEventListener('click', function(e) { e.Standard verhindern(); E-Mail = Dokument.querySelector('#form-ccpa-personal-data-report-request-email').Wert; type = 'Kunde/Bericht'; openVerificationModal(); }); dokumentieren.querySelector('#btn-ccpa-do-not-sell-request').addEventListener('click', function(e) { e.Standard verhindern(); ccpaSlideUpAll(); slideDown(document.querySelector('#form-ccpa-do-not-sell-request'), 200); Das.setAttribute("aria-expanded", "true"); }); dokumentieren.querySelector('#form-ccpa-do-not-sell-request-submit').addEventListener('click', function(e) { e.Standard verhindern(); E-Mail = Dokument.querySelector('#form-ccpa-do-not-sell-request-email').Wert; type = 'Kunde/nicht verkaufen'; // Überprüfen Sie, ob der Kunde angemeldet ist wenn (__st.cid != undefiniert) { dokumentieren.querySelector('#ccpa-modal-container-text').innerHTML = 'Ich stimme der Erfassung meiner E-Mail- und IP-Adresse zum Zweck der Bearbeitung dieser Anfrage zu. Weitere Informationen finden Sie unter Datenschutzerklärung und Nutzungsbedingungen.'; } anders { dokumentieren.querySelector('#ccpa-modal-container-text').innerHTML = 'Ich stimme der Erfassung meiner E-Mail- und IP-Adresse zum Zweck der Bearbeitung dieser Anfrage zu. Weitere Informationen finden Sie unter Datenschutzerklärung und Nutzungsbedingungen.
Hinweis: Wenn Sie ein Gastbenutzer sind oder nicht in Ihrem Konto angemeldet sind, ist Ihre Opt-out-Option nur für diese Browsersitzung wirksam.'; } openVerificationModal(); }); dokumentieren.querySelector('#btn-ccpa-delete-account-request').addEventListener('click', function(e) { e.Standard verhindern(); ccpaSlideUpAll(); slideDown(document.querySelector('#form-ccpa-delete-account-request'), 200); Das.setAttribute("aria-expanded", "true"); }); dokumentieren.querySelector('#form-ccpa-delete-account-request-submit').addEventListener('click', function(e) { e.Standard verhindern(); E-Mail = Dokument.querySelector('#form-ccpa-delete-account-request-email').Wert; type = 'Kunde/löschen'; openVerificationModal(); }); // Tastaturnavigation für die Anfragen der Compliance-Seite dokumentieren.querySelector('#ccpa_page').addEventListener('keydown', function(e) { sei isTabPressed = e.Schlüsselcode === 9 || e.Schlüssel === "Tab" || e.Code === "Tab"; // Diese Funktion erspart uns die Mühe, e aufzurufen.präventDefault() nach jedem Fokussieren letexecuteFocus = (focusElement) => {focusElement.focus();e.preventDefault();} if (isTabPressed) { let ccpaFormPickedLinkValue = document.querySelector('#form-ccpa-data-account-request-request-type').Wert; let ccpaRequestsButton = document.querySelector('#btn-ccpa-requests-request'); let personalInformationButton = document.querySelector('#btn-ccpa-personal-information-request'); letordersButton = document.querySelector('#btn-ccpa-orders-request'); let personalDataReportButton = document.querySelector('#btn-ccpa-personal-data-report-request'); let dataAccountFormEmailField = document.querySelector('#form-ccpa-data-account-request-email'); let dataAccountFormSubmitButton = document.querySelector('#form-ccpa-data-account-request-submit'); wenn (z.shift Taste) { wenn ((Dokument.activeElement === personalInformationButton && ccpaFormPickedLinkValue === 'customer/requests') || (dokumentieren.activeElement ===ordersButton && ccpaFormPickedLinkValue === 'customer/personal_info')) { executeFocus(dataAccountFormSubmitButton); } else if (document.activeElement === dataAccountFormEmailField) { if (ccpaFormPickedLinkValue === 'customer/requests') { executeFocus(ccpaRequestsButton); } else if (ccpaFormPickedLinkValue === 'customer/personal_info') { executeFocus(personalInformationButton); } } else if (document.activeElement === personalDataReportButton) { if (ccpaFormPickedLinkValue !== 'customer/orders') { executeFocus(ordersButton); } } } anders { wenn ((Dokument.activeElement === ccpaRequestsButton && ccpaFormPickedLinkValue === 'customer/requests') || (dokumentieren.activeElement === personalInformationButton && ccpaFormPickedLinkValue === 'customer/personal_info')) { executeFocus(dataAccountFormEmailField); } else if (document.activeElement === dataAccountFormSubmitButton) { if (ccpaFormPickedLinkValue === 'customer/requests') { executeFocus(personalInformationButton); } else if (ccpaFormPickedLinkValue === 'customer/personal_info') { executeFocus(ordersButton); } } else if (document.activeElement ===ordersButton) { if (ccpaFormPickedLinkValue !== 'customer/orders') { executeFocus(personalDataReportButton); } } } } }); // Tastaturnavigation im Datenüberprüfungsmodal für Barrierefreiheit dokumentieren.querySelector('#data-verification-modal').addEventListener('keydown', function(e) { sei isTabPressed = e.Schlüsselcode === 9 || e.Schlüssel === "Tab" || e.Code === "Tab"; sei isEscapePressed = e.Schlüsselcode === 27 || e.Schlüssel === „Escape“ || e.Code === "Escape"; let isSpacePressed = event.Schlüsselcode === 32 || e.Schlüssel === " " || Ereignis.code === "Leerzeichen"; let isEnterPressed = event.Schlüsselcode === 13 || e.Taste === „Enter“ || Ereignis.Code === "Enter"; let dataVerificationCloseButton = document.querySelector('data-verification-close'); let dataVerificationCheckbox = document.querySelector('#data-verification-container input'); let dataVerificationLink = document.querySelector('#data-verification-container a'); // Diese Funktion erspart uns die Mühe, e aufzurufen.präventDefault() nach jedem Fokussieren letexecuteFocus = (focusElement) => {focusElement.focus();e.preventDefault();} if (isEscapePressed) { if (dataVerificationCloseButton) { dataVerificationCloseButton.klicken(); } } if (Leertaste gedrückt || ist Eingabetaste gedrückt) { of (document.activeElement === dataVerificationCheckbox) { dokumentieren.querySelector('#data-verification-container #data-verification-icon').klicken(); } } if (isTabPressed) { wenn (z.shift Taste) { if (dataVerificationCloseButton && document.activeElement === dataVerificationCloseButton) { executeFocus(dataVerificationLink); } } anders { if (dataVerificationLink && document.activeElement === dataVerificationLink) { executeFocus(dataVerificationCloseButton); } } } });

Customer reviews

How our clients feel about us:

Styling Project 'empty nesters'

There are no words to describe Monika's dedication to this project. Her professionalism and commitment to detail were outstanding, along with her ability to "think out-side-the box" and go 'above and beyond' anything I could have expected, from design, staging, to addressing many issues I was geographically unable to tend to myself. You will be receiving much more than a talented "Stager/Designer" when you add Monika to your team!

Michele H.
Show Home Staging/Styling

Monika helped Homes In Partnership with our model home staging. She did an impeccable job with modern features. We enjoyed her timeliness and professionalism. Homes In Partnership will gladly use Viva Habitat Home Staging again and refer for any outside services.

Homes in Partnership
Interior ReDesign

We felt she did an absolute professional job in communicating with us and executing her wisdom in the styling of our home. We felt she had our best interests at heart and was very respectful to us in these emotional times. A job well done. Money well spent as she also pointed out numerous ides we had not thought of.

Dan and Jane

Frequently asked questions

What’s the difference between the Home Styling Session and the Interior Redesign service?

The Home Styling Session is a focused, one-time session designed to help you shift the look and feel of your current space using what you already have. It’s ideal for smaller resets or when something feels “off” and you need clarity, calm, and a fresh perspective.

The Interior Redesign service is a more in-depth collaboration—perfect if you’re ready to fully reimagine a space or several rooms. This includes concept development, material and furniture planning, and ongoing support to help you bring the vision to life.



Can I start with a Styling Session and later upgrade to a full redesign?

Yes. Many clients begin with a Home Styling Session and realize they want to go deeper. If you decide to move forward with a redesign afterward, your styling session can help inform the larger project.

What happens during the 30-minute Discovery Call for Interior Redesign?

This call is a gentle introduction where we talk about your space, your needs, and whether a redesign is the right fit. It’s a no-pressure conversation—no design advice is given here. If we’re aligned, we’ll outline the next steps and your tailored quote.

Do you offer in-person sessions?

Yes. If you're located nearby (Spain – Greater Malaga area), in-person visits are possible and often beneficial, especially for styling or on-site support during redesign projects. Otherwise, all services are fully available online.

Can you help me choose furniture or decor?

Absolutely. The optional Sourcing Add-On is available for Home Styling clients who need help finding just a few meaningful pieces. For Interior Redesign clients, sourcing is part of the full process and tailored to your style, space, and budget.

Do I need to buy new furniture to work with you?

Not at all. In both services, we begin with what you already own. Any new suggestions are made with intention—not for the sake of filling space, but to support your vision and how you want to feel in your home.



How do I know if this is right for me?

If you’re seeking a grounded, soulful approach to shaping your space—one that values simplicity, emotion, and meaning over trends—then you’re in the right place. These offerings are for people who want their home to feel like an honest reflection of where they are and where they’re going next.