Blumenstadl GnbR
Birgit Seggl
Erzherzog Johann Straße 248 B
A-8970 Schladming
Tel.: +43 (0) 36 87 / 81 090
E-Mail: schladming@blumenstadl.at
Blumenstadl
Vor Ort im Blumenstadl & Online
Wir sind für Sie da und machen mit unserer prachtvollen Blumen und vielfältigen Ideen jeden Anlass zu einem festlichen Erlebnis! Wenden Sie sich gerne an uns, wenn Sie spezielle Wünsch haben.
Wir helfen Ihren gerne weiter.
Unsere Kollektion
Unsere Geschenkideen:
/* ============================================
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;
}
(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 +
'' +
'
' +
'' +
'
';
}
async function fetchProducts(page, append) {
if (isLoading) return;
isLoading = true;
if (!append) {
productGrid.innerHTML = '';
} 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 = '';
}
}
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();
}
})();
Empfohlen
Preis: Niedrig zu Hoch
Preis: Hoch zu Niedrig
Neueste zuerst
Alphabetisch
0 Produkte
' + product.name + '
' + '' + priceHtml + '' + buttonHtml + '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.
Fehler beim Laden
Bitte versuchen Sie es erneut.
Schnelle Lieferung
Lieferung am gleichen Tag
Handgefertigt
Jedes Stück ein Unikat
Sichere Zahlung
SSL-verschlüsselt
.kontakt-hero { text-align: center; }
.kontakt-hero .hero-overline {
font-family: 'Outfit', sans-serif; font-weight: 300; font-size: clamp(12px, 2vw, 16px);
letter-spacing: 6px; text-transform: uppercase; color: var(--vs-accent);
margin-bottom: 20px; opacity: 0; animation: fadeUp 0.8s ease 0.2s forwards;
}
.kontakt-hero h1 {
font-family: 'Cormorant Garamond', serif; font-weight: 600;
font-size: clamp(40px, 8vw, 80px); line-height: 1.1; color: #ffffff;
margin: 0 0 20px 0; opacity: 0; animation: fadeUp 0.8s ease 0.4s forwards;
}
.kontakt-hero h1 span { color: var(--vs-accent); }
.kontakt-hero .hero-desc {
font-family: 'Outfit', sans-serif; font-weight: 300; font-size: clamp(14px, 1.5vw, 18px);
color: rgba(255,255,255,0.6); max-width: 500px; margin: 0 auto;
opacity: 0; animation: fadeUp 0.8s ease 0.6s forwards;
}
@keyframes fadeUp {
from { opacity: 0; transform: translateY(30px); }
to { opacity: 1; transform: translateY(0); }
}
Blumenstadl Schladming
Kontaktieren Sie uns
Wir freuen uns auf Ihre Nachricht und beraten Sie gerne persönlich.
.contact-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; margin-bottom: 40px; }
.contact-card {
background: #ffffff; border-radius: 16px; padding: 40px 30px;
text-align: center; transition: all 0.4s cubic-bezier(0.4,0,0.2,1);
border: 1px solid rgba(0,0,0,0.05); position: relative; overflow: hidden;
}
.contact-card::before {
content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 3px;
background: linear-gradient(90deg, var(--vs-accent), var(--vs-accent-light));
transform: scaleX(0); transition: transform 0.4s ease;
}
.contact-card:hover::before { transform: scaleX(1); }
.contact-card:hover { transform: translateY(-6px); box-shadow: 0 20px 60px rgba(26,10,15,0.1); }
.contact-card-icon {
width: 64px; height: 64px; border-radius: 50%;
background: linear-gradient(135deg, var(--vs-accent), var(--vs-accent-light));
display: flex; align-items: center; justify-content: center;
margin: 0 auto 20px; font-size: 24px; color: var(--vs-primary);
}
.contact-card h3 {
font-family: 'Cormorant Garamond', serif; font-weight: 600;
font-size: 22px; color: var(--vs-primary); margin: 0 0 10px;
}
.contact-card p {
font-family: 'Outfit', sans-serif; font-weight: 300;
font-size: 15px; color: #666; margin: 0 0 15px; line-height: 1.6;
}
.contact-card-link {
display: inline-flex; align-items: center; gap: 8px;
font-family: 'Outfit', sans-serif; font-weight: 500; font-size: 14px;
color: var(--vs-accent); text-decoration: none; letter-spacing: 1px;
text-transform: uppercase; transition: all 0.3s ease;
}
.contact-card-link:hover { color: var(--vs-primary); gap: 12px; }
.contact-card-link svg { width: 16px; height: 16px; transition: transform 0.3s ease; }
.contact-card-link:hover svg { transform: translateX(3px); }
@media (max-width: 980px) { .contact-cards { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .contact-cards { grid-template-columns: 1fr; } }
(function() {
var cards = document.querySelectorAll('.contact-card');
var observer = new IntersectionObserver(function(entries) {
entries.forEach(function(entry, i) {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
});
}, { threshold: 0.1 });
cards.forEach(function(card, i) {
card.style.opacity = '0';
card.style.transform = 'translateY(30px)';
card.style.transition = 'all 0.6s cubic-bezier(0.4,0,0.2,1) ' + (i * 0.15) + 's';
observer.observe(card);
});
})();











