width: 100%; aspect-ratio: 4 / 3; height: auto;
Seite wählen
/* SCROLL VIDEO HERO */ body:not(.et-fb):not(.et-bfb) .scroll-video-wrapper { position: fixed; top: 0; left: 0; width: 100%; height: 100vh; z-index: 999; } body.et-fb .scroll-video-wrapper, body.et-bfb .scroll-video-wrapper { position: relative; height: 100vh; z-index: 1; } body:not(.et-fb):not(.et-bfb).video-scroll-locked { overflow: hidden !important; height: 100vh !important; } body:not(.et-fb):not(.et-bfb) .scroll-video-wrapper.video-done { pointer-events: none; transition: opacity 0.5s ease; } .scroll-video-wrapper { background: var(--vs-primary); overflow: hidden; transition: opacity 0.6s ease; } .scroll-video-wrapper video { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); min-width: 100%; min-height: 100%; object-fit: cover; } @media (max-width: 767px) { .scroll-video-wrapper video { width: 100% !important; height: 100% !important; min-width: 100% !important; min-height: 100% !important; object-fit: cover !important; } } .scroll-video-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(180deg, rgba(26,10,15,0.15) 0%, rgba(26,10,15,0.5) 100%); display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 2; } .hero-content { text-align: center; color: #fff; max-width: 900px; padding: 0 20px; opacity: 0; transform: translateY(40px) scale(0.95); transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1); } .hero-content.visible { opacity: 1; transform: translateY(0) scale(1); } .hero-content.fade-out { opacity: 0; transform: translateY(-60px) scale(0.9); } .hero-subtitle { font-family: 'Outfit', sans-serif; font-weight: 300; font-size: clamp(14px, 2.5vw, 22px); letter-spacing: 8px; text-transform: uppercase; color: rgba(255,255,255,0.85); margin-bottom: 20px; opacity: 0; transform: translateY(20px); transition: all 0.6s ease 0.2s; } .hero-content.visible .hero-subtitle { opacity: 1; transform: translateY(0); } .hero-title { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 8vw; line-height: 1.1; margin: 0; text-shadow: 0 4px 30px rgba(0,0,0,0.3); } .hero-title { color: #ffffff; } .hero-title span { display: block; color: var(--vs-accent); } .scroll-indicator-wrap { position: absolute; bottom: 40px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; color: rgba(255,255,255,0.8); font-family: 'Outfit', sans-serif; font-size: 11px; letter-spacing: 3px; text-transform: uppercase; transition: opacity 0.4s ease; } .scroll-indicator-wrap.hidden { opacity: 0; } .scroll-mouse { width: 22px; height: 36px; border: 2px solid rgba(255,255,255,0.5); border-radius: 11px; margin-bottom: 10px; position: relative; } .scroll-mouse::before { content: ''; position: absolute; top: 6px; left: 50%; transform: translateX(-50%); width: 3px; height: 6px; background: var(--vs-accent); border-radius: 2px; animation: scrollPulse 1.5s ease-in-out infinite; } @keyframes scrollPulse { 0%, 100% { top: 6px; opacity: 1; } 50% { top: 16px; opacity: 0.3; } } .video-progress { position: absolute; bottom: 0; left: 0; height: 3px; background: linear-gradient(90deg, var(--vs-accent), var(--vs-accent-light)); width: 0%; z-index: 10; } .skip-intro-btn { position: absolute; bottom: 30px; right: 30px; padding: 10px 20px; background: rgba(255,255,255,0.1); backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,0.2); border-radius: 25px; color: rgba(255,255,255,0.8); font-family: 'Outfit', sans-serif; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; cursor: pointer; opacity: 0; transform: translateY(10px); transition: all 0.3s ease; z-index: 20; } .skip-intro-btn.visible { opacity: 1; transform: translateY(0); } .skip-intro-btn:hover { background: rgba(201,168,124,0.3); border-color: var(--vs-accent); color: #fff; } @media (max-width: 980px) { .hero-title { font-size: 12vw; } .hero-subtitle { font-size: clamp(12px, 2.2vw, 18px); letter-spacing: 5px; } } @media (max-width: 767px) { .hero-title { font-size: 14vw; } .hero-subtitle { font-size: clamp(11px, 3vw, 16px); letter-spacing: 4px; } .skip-intro-btn { bottom: 20px; right: 20px; padding: 8px 16px; } }

14. Februar 2026

Liebeverschenken

Scrollen
(function() { if (document.body.classList.contains('et-fb') || document.body.classList.contains('et-bfb') || window.ETBuilderBackend) return; const wrapper = document.getElementById('scrollVideoWrapper'); if (!wrapper) return; const video = document.getElementById('heroVideo'), heroContent = document.getElementById('heroContent'), progressBar = document.getElementById('videoProgress'), scrollIndicator = document.getElementById('scrollIndicator'), skipBtn = document.getElementById('skipBtn'); if (!video) return; let videoDuration = 0, isReady = false, progress = 0, contentShown = false; /* false = video is covering the page, true = user scrolled past it */ let isPastVideo = false; /* total scroll distance the page "consumed" while the video section is active */ let accumulatedScroll = 0; const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); function lockScroll() { document.body.classList.add('video-scroll-locked'); } function unlockScroll() { document.body.classList.remove('video-scroll-locked'); } /* Transition past the video (unlock page scrolling) */ function transitionPast() { if (isPastVideo) return; isPastVideo = true; wrapper.style.opacity = '0'; wrapper.style.pointerEvents = 'none'; unlockScroll(); } /* Come back to the video when scrolling up to top */ function transitionBack() { if (!isPastVideo) return; isPastVideo = false; wrapper.style.opacity = '1'; wrapper.style.pointerEvents = ''; lockScroll(); } function updateVideo(p) { progress = Math.max(0, Math.min(1, p)); if (isReady && videoDuration > 0) video.currentTime = progress * videoDuration; progressBar.style.width = (progress * 100) + '%'; /* Smooth fade-out in the last 15% of scrub */ if (progress >= 0.85) { var fadeProgress = (progress - 0.85) / 0.15; wrapper.style.opacity = String(1 - fadeProgress); } else { wrapper.style.opacity = '1'; } /* Hero text visibility */ if (progress >= 0.45 && progress < 0.85) { heroContent.classList.add('visible'); heroContent.classList.remove('fade-out'); contentShown = true; } else if (progress >= 0.85) { heroContent.classList.add('fade-out'); heroContent.classList.remove('visible'); } else { heroContent.classList.remove('visible', 'fade-out'); contentShown = false; } if (progress > 0.3) scrollIndicator.classList.add('hidden'); else scrollIndicator.classList.remove('hidden'); if (progress > 0.2) skipBtn.classList.add('visible'); else skipBtn.classList.remove('visible'); } /* Main scroll handler that works both while video is active and after */ function handleWheel(e) { if (!isReady) return; let d = e.deltaY; if (e.deltaMode === 1) d *= 40; if (e.deltaMode === 2) d *= 800; if (!isPastVideo) { /* Video is active: scrub it */ e.preventDefault(); let newProgress = progress + d * 0.0005; if (newProgress >= 1) { newProgress = 1; updateVideo(1); transitionPast(); return; } if (newProgress < 0) newProgress = 0; updateVideo(newProgress); } else { /* Page is scrolling normally. If user is at top and scrolls up, bring video back */ if (window.scrollY <= 0 && d < 0) { e.preventDefault(); transitionBack(); updateVideo(1); /* start scrubbing back */ updateVideo(progress + d * 0.0005); } } } let touchStartY = 0; function handleTouchStart(e) { if (!isReady) return; touchStartY = e.touches[0].clientY; } function handleTouchMove(e) { if (!isReady) return; const d = touchStartY - e.touches[0].clientY; touchStartY = e.touches[0].clientY; if (!isPastVideo) { e.preventDefault(); let newProgress = progress + d * 0.002; if (newProgress >= 1) { newProgress = 1; updateVideo(1); transitionPast(); return; } if (newProgress < 0) newProgress = 0; updateVideo(newProgress); } else { if (window.scrollY <= 0 && d < 0) { e.preventDefault(); transitionBack(); updateVideo(1); updateVideo(progress + d * 0.002); } } } function handleKeydown(e) { if (!isReady) return; if (!isPastVideo) { if (e.key === 'ArrowDown' || e.key === ' ' || e.key === 'PageDown') { e.preventDefault(); updateVideo(progress + 0.05); if (progress >= 1) transitionPast(); } else if (e.key === 'ArrowUp' || e.key === 'PageUp') { e.preventDefault(); updateVideo(progress - 0.05); } else if (e.key === 'Escape' || e.key === 'Enter') { e.preventDefault(); updateVideo(1); transitionPast(); } } } video.addEventListener('loadedmetadata', () => { videoDuration = video.duration; isReady = true; video.currentTime = 0; lockScroll(); }); video.addEventListener('error', () => { wrapper.style.display = 'none'; unlockScroll(); }); if (isMobile) { video.load(); const enableVideo = () => { video.play().then(() => video.pause()).catch(() => {}); document.removeEventListener('touchstart', enableVideo); }; document.addEventListener('touchstart', enableVideo, { once: true }); } skipBtn.addEventListener('click', () => { updateVideo(1); transitionPast(); }); window.addEventListener('wheel', handleWheel, { passive: false }); window.addEventListener('touchstart', handleTouchStart, { passive: true }); window.addEventListener('touchmove', handleTouchMove, { passive: false }); window.addEventListener('keydown', handleKeydown); setTimeout(() => { if (!isReady) { wrapper.style.display = 'none'; unlockScroll(); } }, 15000); lockScroll(); })();

Blumenstadl

Unvergessliche Momente der Liebe

Schenken Sie Ihren Liebsten etwas ganz Besonderes. Unsere handgefertigten Blumenarrangements und liebevoll ausgewählten Geschenke machen den Weltfrauentag  zu einem unvergesslichen Erlebnis.

Unsere Kollektion

Weltfrauentag Geschenke

/* ============================================ AJAX FILTER BAR STYLING ============================================ */ .shop-filter-container { background: rgba(255,255,255,0.03); border: 1px solid rgba(201,168,124,0.15); border-radius: 16px; padding: 35px 40px; margin-bottom: 50px; } .filter-row { display: flex; align-items: center; justify-content: space-between; gap: 25px; flex-wrap: wrap; } .shop-search-wrap { position: relative; flex: 0 0 320px; max-width: 320px; } .shop-search-wrap input { width: 100%; padding: 16px 20px 16px 50px; background: rgba(255,255,255,0.05); border: 1px solid rgba(201,168,124,0.2); border-radius: 50px; color: #fff; font-family: 'Outfit', sans-serif; font-size: 14px; transition: all 0.3s ease; } .shop-search-wrap input::placeholder { color: rgba(255,255,255,0.4); } .shop-search-wrap input:focus { outline: none; border-color: var(--vs-accent); background: rgba(255,255,255,0.08); } .shop-search-wrap .search-icon { position: absolute; left: 18px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: rgba(255,255,255,0.4); } .category-filters { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; } .category-btn { padding: 12px 24px; background: transparent; border: 1px solid rgba(201,168,124,0.3); border-radius: 50px; color: rgba(255,255,255,0.8); font-family: 'Outfit', sans-serif; font-size: 12px; font-weight: 500; letter-spacing: 1.5px; text-transform: uppercase; cursor: pointer; transition: all 0.3s ease; } .category-btn:hover { border-color: var(--vs-accent); color: var(--vs-accent); } .category-btn.active { background: var(--vs-accent); border-color: var(--vs-accent); color: var(--vs-primary); } .sort-row { display: flex; align-items: center; justify-content: center; margin-top: 25px; gap: 15px; } .sort-select { padding: 12px 40px 12px 20px; background: rgba(255,255,255,0.05); border: 1px solid rgba(201,168,124,0.2); border-radius: 8px; color: rgba(255,255,255,0.8); font-family: 'Outfit', sans-serif; font-size: 13px; cursor: pointer; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23c9a87c' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 15px center; } .sort-select:focus { outline: none; border-color: var(--vs-accent); } .sort-select option { background: var(--vs-primary); color: #fff; } .product-count { text-align: center; margin: 30px 0; font-family: 'Outfit', sans-serif; font-size: 14px; color: rgba(255,255,255,0.5); } .product-count span { color: var(--vs-accent); font-weight: 500; } .shop-loading { text-align: center; padding: 60px 20px; font-family: 'Outfit', sans-serif; color: rgba(255,255,255,0.6); } .shop-loading::after { content: ''; display: inline-block; width: 20px; height: 20px; border: 2px solid rgba(201,168,124,0.3); border-top-color: var(--vs-accent); border-radius: 50%; animation: spin 1s linear infinite; margin-left: 10px; vertical-align: middle; } @keyframes spin { to { transform: rotate(360deg); } } .shop-error { text-align: center; padding: 60px 20px; } .shop-error h3 { font-family: 'Cormorant Garamond', serif; font-size: 28px; color: #fff; margin-bottom: 10px; } .shop-error p { font-family: 'Outfit', sans-serif; font-size: 14px; color: rgba(255,255,255,0.5); } @media (max-width: 980px) { .shop-filter-container { padding: 25px; } .filter-row { flex-direction: column; gap: 20px; } .shop-search-wrap { flex: 1; max-width: 100%; width: 100%; } .category-filters { justify-content: center; } } @media (max-width: 600px) { .category-btn { padding: 10px 16px; font-size: 10px; } } /* ============================================ WOOCOMMERCE SHOP STYLING - Dark Theme ============================================ */ .valentinstag-shop ul.products, .valentinstag-shop .products { display: grid !important; grid-template-columns: repeat(4, 1fr) !important; gap: 25px !important; padding: 0 !important; margin: 0 !important; list-style: none !important; } @media (max-width: 1200px) { .valentinstag-shop ul.products, .valentinstag-shop .products { grid-template-columns: repeat(3, 1fr) !important; } } @media (max-width: 980px) { .valentinstag-shop ul.products, .valentinstag-shop .products { grid-template-columns: repeat(2, 1fr) !important; } } @media (max-width: 480px) { .valentinstag-shop ul.products, .valentinstag-shop .products { grid-template-columns: 1fr !important; } } .valentinstag-shop ul.products li.product, .valentinstag-shop .products .product { background: rgba(255,255,255,0.02) !important; border-radius: 12px !important; overflow: hidden !important; border: 1px solid rgba(201,168,124,0.1) !important; transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1) !important; padding: 0 !important; margin: 0 !important; width: 100% !important; float: none !important; } .valentinstag-shop ul.products li.product:hover, .valentinstag-shop .products .product:hover { transform: translateY(-8px) !important; border-color: rgba(201,168,124,0.3) !important; box-shadow: 0 20px 40px rgba(0,0,0,0.3) !important; } .valentinstag-shop ul.products li.product .et_shop_image, .valentinstag-shop ul.products li.product a img, .valentinstag-shop .products .product img { width: 100% !important; aspect-ratio: 1 !important; object-fit: cover !important; transition: transform 0.5s ease !important; margin: 0 !important; display: block !important; } .valentinstag-shop ul.products li.product:hover img { transform: scale(1.08) !important; } .valentinstag-shop ul.products li.product .onsale { position: absolute !important; top: 12px !important; left: 12px !important; padding: 5px 14px !important; background: var(--vs-accent) !important; color: var(--vs-primary) !important; font-family: 'Outfit', sans-serif !important; font-size: 10px !important; font-weight: 500 !important; letter-spacing: 1px !important; text-transform: uppercase !important; border-radius: 4px !important; line-height: 1.4 !important; min-height: auto !important; min-width: auto !important; } .valentinstag-shop ul.products li.product h2, .valentinstag-shop ul.products li.product .woocommerce-loop-product__title, .valentinstag-shop .products .product h2 { font-family: 'Cormorant Garamond', serif !important; font-size: 20px !important; font-weight: 500 !important; color: #fff !important; margin: 0 0 10px 0 !important; padding: 20px 20px 0 20px !important; line-height: 1.3 !important; text-align: left !important; } .valentinstag-shop ul.products li.product h2 a { color: inherit !important; text-decoration: none !important; transition: color 0.3s ease !important; } .valentinstag-shop ul.products li.product h2 a:hover { color: var(--vs-accent) !important; } .valentinstag-shop ul.products li.product .price, .valentinstag-shop ul.products li.product .woocommerce-Price-amount, .valentinstag-shop .products .product .price { font-family: 'Outfit', sans-serif !important; font-size: 18px !important; font-weight: 500 !important; color: var(--vs-accent) !important; padding: 0 20px 15px 20px !important; display: block !important; text-align: left !important; } .valentinstag-shop ul.products li.product .price del { color: rgba(255,255,255,0.35) !important; font-size: 14px !important; margin-right: 8px !important; } .valentinstag-shop ul.products li.product .price ins { text-decoration: none !important; font-weight: 500 !important; } .valentinstag-shop ul.products li.product .button, .valentinstag-shop ul.products li.product .add_to_cart_button, .valentinstag-shop ul.products li.product .product_type_simple, .valentinstag-shop ul.products li.product .product_type_variable, .valentinstag-shop .products .product .button { display: block !important; width: calc(100% - 40px) !important; margin: 0 20px 20px 20px !important; padding: 14px 20px !important; background: transparent !important; border: 1px solid rgba(201,168,124,0.35) !important; border-radius: 6px !important; color: #fff !important; font-family: 'Outfit', sans-serif !important; font-size: 11px !important; font-weight: 500 !important; letter-spacing: 1.5px !important; text-transform: uppercase !important; text-align: center !important; cursor: pointer !important; transition: all 0.3s ease !important; text-decoration: none !important; } .valentinstag-shop ul.products li.product .button:hover, .valentinstag-shop ul.products li.product .add_to_cart_button:hover, .valentinstag-shop ul.products li.product .product_type_variable:hover { background: var(--vs-accent) !important; border-color: var(--vs-accent) !important; color: var(--vs-primary) !important; } .valentinstag-shop ul.products li.product .added_to_cart { display: block !important; width: calc(100% - 40px) !important; margin: -10px 20px 20px 20px !important; padding: 10px !important; background: rgba(201,168,124,0.2) !important; border-radius: 4px !important; color: var(--vs-accent) !important; font-family: 'Outfit', sans-serif !important; font-size: 10px !important; letter-spacing: 1px !important; text-transform: uppercase !important; text-align: center !important; text-decoration: none !important; } .valentinstag-shop ul.products li.product .star-rating { margin: 0 20px 10px 20px !important; color: var(--vs-accent) !important; } .valentinstag-shop .et_pb_shop ul.products li, .valentinstag-shop ul.products li { margin-bottom: 0 !important; } .valentinstag-shop .et_pb_shop::after, .valentinstag-shop .et_pb_shop::before, .valentinstag-shop::after, .valentinstag-shop::before, .valentinstag-shop ul.products::after, .valentinstag-shop ul.products::before { display: none !important; content: none !important; } /* Fix: Divi leere Elemente und Clearfix verstecken */ .valentinstag-shop ul.products br, .valentinstag-shop ul.products .clearfix { display: none !important; } .valentinstag-shop ul.products li.product:empty, .valentinstag-shop ul.products li:not(.product) { display: none !important; } /* Fix: Divi Shop Image Wrapper */ .valentinstag-shop .et_shop_image { position: relative !important; overflow: hidden !important; } .valentinstag-shop .et_shop_image img { width: 100% !important; aspect-ratio: 1 !important; object-fit: cover !important; display: block !important; } /* Fix: Divi column clearfix im Grid entfernen */ .valentinstag-shop ul.products { overflow: visible !important; } .valentinstag-shop ul.products > * { clear: none !important; float: none !important; } .valentinstag-shop .woocommerce-info { background: rgba(255,255,255,0.03) !important; border: 1px solid rgba(201,168,124,0.15) !important; color: rgba(255,255,255,0.7) !important; padding: 40px !important; text-align: center !important; border-radius: 12px !important; font-family: 'Outfit', sans-serif !important; }
Empfohlen Preis: Niedrig zu Hoch Preis: Hoch zu Niedrig Neueste zuerst Alphabetisch
0 Produkte
    (function() { if (document.body.classList.contains('et-fb') || document.body.classList.contains('et-bfb') || window.ETBuilderBackend) return; var API_BASE = '/wp-json/wc/store/v1'; var PER_PAGE = 12; var currentCategory = 'all'; var currentCategoryId = null; var searchTerm = ''; var currentSort = 'recommended'; var currentPage = 1; var totalPages = 1; var isLoading = false; var useAjax = false; var categories = []; var searchInput = document.getElementById('shopSearch'); var categoryContainer = document.getElementById('categoryFilters'); var sortSelect = document.getElementById('shopSort'); var productGrid = document.getElementById('productList'); var productCount = document.getElementById('productCount'); var loadMoreWrap = document.getElementById('loadMoreWrap'); var loadMoreBtn = document.getElementById('loadMoreBtn'); var ajaxGrid = document.getElementById('ajaxProductGrid'); function formatPrice(priceStr, currencySymbol, minorUnit) { if (!priceStr) return ''; var price = parseInt(priceStr, 10) / Math.pow(10, minorUnit || 2); var formatted = price.toFixed(minorUnit || 2).replace('.', ','); return currencySymbol ? (formatted + ' ' + currencySymbol) : (formatted + ' \u20ac'); } function renderProduct(product) { var image = product.images && product.images.length > 0 ? product.images[0].src : ''; var imageAlt = product.images && product.images.length > 0 ? (product.images[0].alt || product.name) : product.name; var prices = product.prices || {}; var currencySymbol = prices.currency_symbol || '\u20ac'; var minorUnit = prices.currency_minor_unit || 2; var regularPrice = prices.regular_price || '0'; var salePrice = prices.sale_price || '0'; var onSale = prices.sale_price && prices.sale_price !== prices.regular_price && parseInt(prices.sale_price) < parseInt(prices.regular_price); var catClasses = (product.categories || []).map(function(c){ return 'product_cat-' + c.slug; }).join(' '); var permalink = product.permalink || '#'; var productId = product.id; var priceHtml; if (onSale) { priceHtml = '' + formatPrice(regularPrice, currencySymbol, minorUnit) + ' ' + formatPrice(salePrice, currencySymbol, minorUnit) + ''; } else { priceHtml = formatPrice(regularPrice, currencySymbol, minorUnit); } var saleTag = onSale ? 'Angebot' : ''; var isVariable = product.type && product.type === 'variable'; var buttonHtml; if (isVariable) { buttonHtml = 'Variante w\u00e4hlen'; } else { buttonHtml = 'In den Warenkorb'; } return '
  • ' + saleTag + '' + '' + '' + '

    ' + product.name + '

    ' + '' + priceHtml + '' + buttonHtml + '
  • '; } async function fetchProducts(page, append) { if (isLoading) return; isLoading = true; if (!append) { productGrid.innerHTML = '
    Laden...
    '; } var url = API_BASE + '/products?per_page=' + PER_PAGE + '&page=' + page; if (searchTerm) { url += '&search=' + encodeURIComponent(searchTerm); } if (currentCategoryId) { url += '&category=' + currentCategoryId; } switch (currentSort) { case 'price-asc': url += '&orderby=price&order=asc'; break; case 'price-desc': url += '&orderby=price&order=desc'; break; case 'newest': url += '&orderby=date&order=desc'; break; case 'name': url += '&orderby=title&order=asc'; break; default: url += '&orderby=popularity&order=desc'; break; } try { var response = await fetch(url); if (!response.ok) throw new Error('API Error: ' + response.status); totalPages = parseInt(response.headers.get('X-WP-TotalPages') || '1', 10); var totalItems = parseInt(response.headers.get('X-WP-Total') || '0', 10); var products = await response.json(); if (append) { productGrid.innerHTML += products.map(renderProduct).join(''); } else { if (products.length === 0) { productGrid.innerHTML = '

    Keine Produkte gefunden

    Versuchen Sie einen anderen Suchbegriff oder eine andere Kategorie.

    '; } else { productGrid.innerHTML = products.map(renderProduct).join(''); } } productCount.textContent = totalItems; loadMoreWrap.style.display = (page < totalPages) ? 'block' : 'none'; if (window.jQuery) { jQuery(document.body).trigger('wc_fragment_refresh'); } } catch (err) { console.error('Shop Ajax Error:', err); if (!append) { productGrid.innerHTML = '

    Fehler beim Laden

    Bitte versuchen Sie es erneut.

    '; } } isLoading = false; } async function loadCategories() { try { var response = await fetch(API_BASE + '/products/categories?per_page=50&orderby=name'); if (!response.ok) throw new Error('Categories API Error'); categories = await response.json(); var withProducts = categories.filter(function(c){ return c.count > 0; }); var buttonsHtml = ''; withProducts.forEach(function(cat) { buttonsHtml += ''; }); categoryContainer.innerHTML = buttonsHtml; categoryContainer.querySelectorAll('.category-btn').forEach(function(btn) { btn.addEventListener('click', function() { categoryContainer.querySelectorAll('.category-btn').forEach(function(b){ b.classList.remove('active'); }); this.classList.add('active'); currentCategory = this.dataset.category; currentCategoryId = this.dataset.catid || null; currentPage = 1; fetchProducts(1, false); }); }); } catch (err) { console.error('Categories Load Error:', err); } } function initClientSideFilter() { var diviShop = document.querySelector('.valentinstag-shop.et_pb_shop, .et_pb_shop.valentinstag-shop'); if (diviShop) diviShop.style.display = ''; if (ajaxGrid) ajaxGrid.style.display = 'none'; if (loadMoreWrap) loadMoreWrap.style.display = 'none'; categoryContainer.innerHTML = '' + '' + '' + '' + ''; function filterClientSide() { var products = document.querySelectorAll('.valentinstag-shop .product, .valentinstag-shop li.product'); var visible = 0; products.forEach(function(product) { var title = product.querySelector('h2, .woocommerce-loop-product__title'); var titleText = title ? title.textContent.toLowerCase() : ''; var catMatch = currentCategory === 'all'; if (!catMatch) { var cl = product.className.toLowerCase(); catMatch = cl.includes(currentCategory) || cl.includes('product_cat-' + currentCategory); } var searchMatch = searchTerm === '' || titleText.includes(searchTerm); if (catMatch && searchMatch) { product.style.display = ''; visible++; } else { product.style.display = 'none'; } }); productCount.textContent = visible; } function sortClientSide(sortBy) { var container = document.querySelector('.valentinstag-shop ul.products, .valentinstag-shop .products'); if (!container) return; var prods = Array.from(container.querySelectorAll('.product, li.product')); prods.sort(function(a, b) { var pa = parseFloat((a.querySelector('.price .amount, .price') || {textContent:''}).textContent.replace(/[^0-9.,]/g, '').replace(',', '.')) || 0; var pb = parseFloat((b.querySelector('.price .amount, .price') || {textContent:''}).textContent.replace(/[^0-9.,]/g, '').replace(',', '.')) || 0; var na = (a.querySelector('h2, .woocommerce-loop-product__title') || {textContent:''}).textContent; var nb = (b.querySelector('h2, .woocommerce-loop-product__title') || {textContent:''}).textContent; switch(sortBy) { case 'price-asc': return pa - pb; case 'price-desc': return pb - pa; case 'name': return na.localeCompare(nb); default: return 0; } }); prods.forEach(function(p) { container.appendChild(p); }); } categoryContainer.querySelectorAll('.category-btn').forEach(function(btn) { btn.addEventListener('click', function() { categoryContainer.querySelectorAll('.category-btn').forEach(function(b) { b.classList.remove('active'); }); this.classList.add('active'); currentCategory = this.dataset.category; filterClientSide(); }); }); if (searchInput) { searchInput.addEventListener('input', function() { searchTerm = this.value.toLowerCase(); filterClientSide(); }); } if (sortSelect) { sortSelect.addEventListener('change', function() { sortClientSide(this.value); }); } filterClientSide(); } async function init() { try { var testResponse = await fetch(API_BASE + '/products?per_page=1'); if (testResponse.ok) { useAjax = true; var diviShop = document.querySelector('.valentinstag-shop.et_pb_shop, .et_pb_shop.valentinstag-shop'); if (diviShop) diviShop.style.display = 'none'; if (ajaxGrid) ajaxGrid.style.display = ''; await loadCategories(); await fetchProducts(1, false); var searchTimeout; if (searchInput) { searchInput.addEventListener('input', function() { clearTimeout(searchTimeout); searchTerm = this.value.trim(); searchTimeout = setTimeout(function() { currentPage = 1; fetchProducts(1, false); }, 300); }); } if (sortSelect) { sortSelect.addEventListener('change', function() { currentSort = this.value; currentPage = 1; fetchProducts(1, false); }); } if (loadMoreBtn) { loadMoreBtn.addEventListener('click', function() { currentPage++; fetchProducts(currentPage, true); }); } } else { throw new Error('Store API not available'); } } catch (err) { console.log('Store API nicht verf\u00fcgbar, verwende Client-Side Filter.', err); initClientSideFilter(); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();

    Schnelle Lieferung

    Lieferung am gleichen Tag

    Sichere Zahlung

    SSL-verschlüsselt

    Handgefertigt

    Jedes Stück ein Unikat

    Persönliche Beratung

    Wir helfen Ihnen gerne

    Anrufen

    Wir beraten Sie gerne
    telefonisch. +43 3687 81 090

    E-Mail

    Schreiben Sie uns
    jederzeit. E-Mail senden

    Besuchen

    Erzherzog Johann Str. 248 B
    8970 Schladming Route planen

    Nachricht senden

    Füllen Sie das Formular aus – wir melden uns schnellstmöglich bei Ihnen.

    /* DIVI CONTACT FORM STYLING */ .styled-contact-form .et_pb_contact { background: #ffffff; border-radius: 20px; padding: 50px; border: 1px solid rgba(0,0,0,0.05); box-shadow: 0 10px 40px rgba(26,10,15,0.06); } @media (max-width: 600px) { .styled-contact-form .et_pb_contact { padding: 30px 20px; } } .styled-contact-form .et_pb_contact_form .et_pb_contact_field { margin-bottom: 20px; } .styled-contact-form .et_pb_contact_form label { font-family: 'Outfit', sans-serif !important; font-weight: 500 !important; font-size: 12px !important; letter-spacing: 1.5px !important; text-transform: uppercase !important; color: var(--vs-primary) !important; padding-bottom: 8px !important; } .styled-contact-form .et_pb_contact_form .input, .styled-contact-form .et_pb_contact_form textarea, .styled-contact-form .et_pb_contact_form select { padding: 14px 18px !important; font-family: 'Outfit', sans-serif !important; font-size: 15px !important; color: #333 !important; background: var(--vs-light) !important; border: 2px solid transparent !important; border-radius: 10px !important; outline: none !important; transition: all 0.3s ease !important; box-sizing: border-box !important; } .styled-contact-form .et_pb_contact_form .input:focus, .styled-contact-form .et_pb_contact_form textarea:focus, .styled-contact-form .et_pb_contact_form select:focus { border-color: var(--vs-accent) !important; background: #fff !important; box-shadow: 0 0 0 4px rgba(201,168,124,0.1) !important; } .styled-contact-form .et_pb_contact_form textarea { min-height: 140px !important; resize: vertical !important; } /* Submit Button */ .styled-contact-form .et_pb_contact_submit { display: inline-flex !important; align-items: center !important; justify-content: center !important; width: 100% !important; padding: 16px 40px !important; background: linear-gradient(135deg, var(--vs-accent), var(--vs-accent-light)) !important; border: none !important; border-radius: 12px !important; cursor: pointer !important; font-family: 'Outfit', sans-serif !important; font-weight: 600 !important; font-size: 14px !important; letter-spacing: 2px !important; text-transform: uppercase !important; color: var(--vs-primary) !important; transition: all 0.4s ease !important; position: relative !important; } .styled-contact-form .et_pb_contact_submit:hover { transform: translateY(-2px) !important; box-shadow: 0 8px 25px rgba(201,168,124,0.4) !important; } /* Success message */ .styled-contact-form .et-pb-contact-message { background: #ffffff !important; border-radius: 16px !important; padding: 30px !important; text-align: center !important; border-left: 4px solid var(--vs-accent) !important; } .styled-contact-form .et-pb-contact-message p { font-family: 'Outfit', sans-serif !important; color: var(--vs-primary) !important; } /* Captcha styling */ .styled-contact-form .et_pb_contact_right { text-align: center !important; } .styled-contact-form .et_pb_contact .et_pb_contact_field_half { width: 48% !important; } @media (max-width: 600px) { .styled-contact-form .et_pb_contact .et_pb_contact_field_half { width: 100% !important; } }

    14 + 14 =

    .opening-hours { display: flex; justify-content: center; gap: 40px; flex-wrap: wrap; padding: 30px; background: var(--vs-primary); border-radius: 16px; text-align: center; } .opening-hours-item h4 { font-family: 'Outfit', sans-serif; font-weight: 500; font-size: 14px; letter-spacing: 3px; text-transform: uppercase; color: var(--vs-accent); margin: 0 0 6px; } .opening-hours-item p { font-family: 'Outfit', sans-serif; font-weight: 300; font-size: 17px; color: rgba(255,255,255,0.8); margin: 0; }

    Sonderöffnungszeiten zum Weltfrauentag

    Montag bis Freitag – 08:00 bis 12:00 und 14:30 bis 18:00

    samstag – 08:00 bis 12:00

    Sonntag – 08:00 bis 12:00

    Blumenstadl

    Erzherzog Johann Str. 248 B, 8970 Schladming
    /* ================================================ FARBEN & FONTS - HIER ANPASSEN! Ändere die Werte unten um das gesamte Design global zu verändern. ================================================ */ :root { /* Primärfarbe (dunkel) */ --vs-primary: #1a0a0f; /* Akzentfarbe (gold) */ --vs-accent: #c9a87c; /* Akzentfarbe hell */ --vs-accent-light: #e8d5b7; /* Hintergrund hell */ --vs-light: #f8f5f2; /* Footer dunkel */ --vs-footer-bg: #0f0609; } @import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600;700&family=Outfit:wght@300;400;500;600&display=swap'); body { font-family: 'Outfit', sans-serif; } h1,h2,h3,h4,h5,h6 { font-family: 'Cormorant Garamond', serif; } ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: var(--vs-primary); } ::-webkit-scrollbar-thumb { background: var(--vs-accent); border-radius: 4px; } ::selection { background: var(--vs-accent); color: var(--vs-primary); } a { transition: color .3s; }