/* Sezonownia FX – animowane sceny sezonowe, efekty kart, odsłanianie przy przewijaniu. */

/* Stare drobne dekoracje zastępuje pełna scena */
.sz-deco, .season-halloween .sz-hero::after { display: none; }

/* ===== Hero + scena ===== */
.sz-hero { min-height: min(86vh, 820px); display: flex; align-items: center; isolation: isolate; padding: 80px 0 110px; }
.sz-hero__inner { z-index: 5; }
.sz-scene { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
.sz-scene svg { display: block; width: 100%; height: 100%; }
.sz-particles { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 4; }
.sz-layer { position: absolute; left: -2%; right: -2%; will-change: transform; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.sz-layer--sky { inset: 0 -2%; }
.sz-layer--far { bottom: 0; height: 62%; z-index: 1; }
.sz-layer--near { bottom: -2px; height: 40%; z-index: 3; }
.sz-scene__shade { position: absolute; inset: 0; z-index: 4; background: radial-gradient(70% 60% at 50% 45%, color-mix(in srgb, var(--bg) 55%, transparent), transparent 75%), linear-gradient(to bottom, transparent 70%, var(--bg)); }

/* Tytuł: miękkie „żarzenie” */
.sz-hero h1 { animation: sz-glow 4s ease-in-out infinite; }
.season-halloween .sz-hero h1 { animation: sz-flicker 6s linear infinite; }
@keyframes sz-glow { 50% { text-shadow: 0 0 60px color-mix(in srgb, var(--accent) 60%, transparent); } }
@keyframes sz-flicker {
	0%, 100% { text-shadow: 0 0 24px rgba(255,122,26,.55), 0 0 70px rgba(255,122,26,.25); opacity: 1; }
	41% { opacity: 1; } 42% { opacity: .55; text-shadow: none; } 43% { opacity: 1; }
	45% { opacity: .75; } 46% { opacity: 1; }
	70% { text-shadow: 0 0 34px rgba(255,122,26,.8), 0 0 100px rgba(167,139,250,.35); }
}
.sz-eyebrow { backdrop-filter: blur(6px); background: color-mix(in srgb, var(--surface) 60%, transparent); }
.sz-btn-lg { position: relative; overflow: hidden; }
.sz-btn-lg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,.55) 50%, transparent 70%); transform: translateX(-120%); animation: sz-shine 3.2s ease-in-out infinite 1s; }
@keyframes sz-shine { 60%, 100% { transform: translateX(120%); } }

/* ===== Halloween ===== */
.season-halloween .sz-hero { background: radial-gradient(90% 70% at 78% 18%, #3b1f5c 0%, #1a1029 45%, var(--bg) 80%); }
.sz-moon { position: absolute; top: 9%; right: 12%; width: clamp(110px, 14vw, 190px); aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle at 38% 36%, #fff6dc, #ffd98a 55%, #f2b45a); box-shadow: 0 0 60px 18px rgba(255, 210, 130, .35), 0 0 180px 60px rgba(255, 160, 60, .18); animation: sz-moon 9s ease-in-out infinite; }
.sz-moon span { position: absolute; border-radius: 50%; background: rgba(200, 140, 60, .25); }
.sz-moon span:nth-child(1) { width: 22%; height: 22%; left: 22%; top: 30%; }
.sz-moon span:nth-child(2) { width: 14%; height: 14%; left: 58%; top: 56%; }
.sz-moon span:nth-child(3) { width: 9%; height: 9%; left: 46%; top: 22%; }
@keyframes sz-moon { 50% { box-shadow: 0 0 80px 26px rgba(255, 210, 130, .45), 0 0 220px 80px rgba(255, 160, 60, .22); } }
.sz-cloud { position: absolute; height: 46px; border-radius: 999px; background: rgba(40, 24, 64, .85); filter: blur(4px); animation: sz-cloud 38s linear infinite; }
.sz-cloud::before, .sz-cloud::after { content: ""; position: absolute; border-radius: 50%; background: inherit; }
.sz-cloud::before { width: 50%; height: 140%; left: 14%; bottom: 20%; }
.sz-cloud::after { width: 36%; height: 110%; right: 14%; bottom: 30%; }
.sz-cloud--1 { width: 260px; top: 16%; }
.sz-cloud--2 { width: 180px; top: 26%; animation-duration: 52s; animation-delay: -26s; opacity: .7; }
@keyframes sz-cloud { from { transform: translateX(110vw); } to { transform: translateX(-320px); } }

.sz-windows rect { fill: #ffb347; animation: sz-window 3.8s infinite steps(1); filter: drop-shadow(0 0 6px #ff9a2e); }
.sz-windows rect:nth-child(2) { animation-delay: -1.3s; } .sz-windows rect:nth-child(3) { animation-delay: -2.1s; } .sz-windows rect:nth-child(4) { animation-delay: -.6s; }
@keyframes sz-window { 0% { opacity: 1; } 37% { opacity: .35; } 39% { opacity: 1; } 71% { opacity: .7; } 73% { opacity: 1; } }

.sz-bats { position: absolute; inset: 0; z-index: 2; }
.sz-bat { display: block; position: absolute; top: 0; left: 0; width: var(--s, 56px); offset-rotate: 0deg; animation: sz-bat var(--d, 14s) linear infinite var(--dl, 0s); }
.sz-bat svg { width: 100%; overflow: visible; fill: #0d0717; filter: drop-shadow(0 0 2px rgba(200,170,255,.7)) drop-shadow(0 0 10px rgba(120,80,200,.5)); animation: sz-bob 1.2s ease-in-out infinite; }
.sz-bat .w { transform-box: view-box; transform-origin: 40px 17px; animation: sz-flap-l .26s ease-in-out infinite alternate; }
.sz-bat .r { animation-name: sz-flap-r; }
@keyframes sz-flap-l { from { transform: rotate(-22deg); } to { transform: rotate(28deg) scaleY(.8); } }
@keyframes sz-flap-r { from { transform: rotate(22deg); } to { transform: rotate(-28deg) scaleY(.8); } }
@keyframes sz-bob { 50% { transform: translateY(8px); } }
@keyframes sz-bat {
	0% { transform: translate(-12vw, var(--y0, 20vh)) scale(.8); }
	25% { transform: translate(22vw, calc(var(--y0, 20vh) - 8vh)) scale(1); }
	50% { transform: translate(50vw, calc(var(--y0, 20vh) + 6vh)) scale(1.1); }
	75% { transform: translate(78vw, calc(var(--y0, 20vh) - 4vh)) scale(.95); }
	100% { transform: translate(112vw, var(--y0, 20vh)) scale(.8); }
}
.sz-bat--1 { --s: 96px; --d: 13s; --y0: 18vh; }
.sz-bat--2 { --s: 60px; --d: 17s; --dl: -5s; --y0: 10vh; }
.sz-bat--3 { --s: 80px; --d: 11s; --dl: -8s; --y0: 30vh; }
.sz-bat--4 { --s: 46px; --d: 21s; --dl: -2s; --y0: 6vh; opacity: .7; }
.sz-bat--5 { --s: 70px; --d: 15s; --dl: -11s; --y0: 24vh; animation-direction: reverse; }
.sz-bat--6 { --s: 56px; --d: 24s; --dl: -15s; --y0: 14vh; opacity: .55; animation-direction: reverse; }
.sz-bat--7 { --s: 40px; --d: 19s; --dl: -7s; --y0: 36vh; }

.sz-ghost { position: absolute; z-index: 2; width: clamp(70px, 8vw, 120px); opacity: .0; animation: sz-ghost 12s ease-in-out infinite; }
.sz-ghost svg { width: 100%; fill: rgba(240, 236, 255, .88); filter: drop-shadow(0 0 18px rgba(200, 190, 255, .7)); }
.sz-ghost .eye, .sz-ghost .mouth { fill: #1a1029; }
.sz-ghost .eye { animation: sz-blink 5s infinite; transform-box: fill-box; transform-origin: center; }
.sz-ghost--1 { left: 8%; top: 34%; }
.sz-ghost--2 { right: 26%; top: 46%; width: clamp(50px, 5vw, 80px); animation-delay: -6s; animation-duration: 14s; }
@keyframes sz-ghost {
	0% { opacity: 0; transform: translate(0, 30px) rotate(-6deg); }
	15% { opacity: .9; }
	50% { opacity: .75; transform: translate(40px, -30px) rotate(6deg); }
	85% { opacity: .9; }
	100% { opacity: 0; transform: translate(0, 30px) rotate(-6deg); }
}
@keyframes sz-blink { 0%, 92%, 100% { transform: scaleY(1); } 95% { transform: scaleY(.1); } }

.sz-pumpkin { position: absolute; bottom: 30%; font-size: clamp(34px, 4vw, 60px); filter: drop-shadow(0 0 18px rgba(255, 140, 30, .9)); animation: sz-pumpkin 2.6s ease-in-out infinite; }
.sz-pumpkin--1 { left: 6%; } .sz-pumpkin--2 { left: 18%; bottom: 10%; font-size: clamp(26px, 3vw, 44px); animation-delay: -.9s; } .sz-pumpkin--3 { right: 9%; bottom: 18%; animation-delay: -1.7s; }
@keyframes sz-pumpkin { 0%, 100% { filter: drop-shadow(0 0 14px rgba(255,140,30,.7)); } 40% { filter: drop-shadow(0 0 28px rgba(255,170,40,1)); transform: translateY(-2px); } 55% { filter: drop-shadow(0 0 10px rgba(255,120,20,.6)); } }

.sz-spider { position: absolute; top: 0; left: 18%; z-index: 3; display: flex; flex-direction: column; align-items: center; animation: sz-spider 9s cubic-bezier(.5,0,.3,1) infinite; }
.sz-spider__thread { width: 1px; height: 160px; background: linear-gradient(rgba(255,255,255,.1), rgba(255,255,255,.5)); }
.sz-spider__body { font-size: 30px; margin-top: -6px; animation: sz-sway 2.4s ease-in-out infinite; }
@keyframes sz-spider { 0%, 100% { transform: translateY(-170px); } 30%, 60% { transform: translateY(0); } 70% { transform: translateY(-60px); } 78% { transform: translateY(-20px); } }
@keyframes sz-sway { 50% { transform: rotate(14deg); } }

.sz-fog { position: absolute; left: -20%; width: 140%; height: 34%; bottom: 0; z-index: 3; background: radial-gradient(40% 60% at 25% 70%, rgba(190, 170, 230, .22), transparent 70%), radial-gradient(35% 50% at 70% 80%, rgba(190, 170, 230, .18), transparent 70%); filter: blur(10px); animation: sz-fog 22s ease-in-out infinite alternate; }
.sz-fog--2 { bottom: 6%; opacity: .7; animation-duration: 30s; animation-direction: alternate-reverse; }
@keyframes sz-fog { to { transform: translateX(12%); } }

/* ===== Boże Narodzenie ===== */
.season-xmas .sz-hero { background: radial-gradient(90% 70% at 50% 0%, #1d4a3a 0%, #0f2a20 50%, var(--bg) 85%); }
.sz-moon--cold { background: radial-gradient(circle at 38% 36%, #ffffff, #e6eef7 60%, #c9d8e8); box-shadow: 0 0 60px 20px rgba(220, 235, 255, .3); top: 10%; right: 14%; width: clamp(80px, 10vw, 140px); }
.sz-aurora { position: absolute; inset: 0 0 50% 0; background: linear-gradient(100deg, transparent 20%, rgba(80, 255, 180, .12) 40%, rgba(120, 180, 255, .12) 55%, transparent 75%); filter: blur(30px); animation: sz-aurora 14s ease-in-out infinite alternate; }
@keyframes sz-aurora { to { transform: translateX(10%) skewX(-10deg); opacity: .6; } }
.sz-lights { position: absolute; top: 0; left: 0; right: 0; z-index: 5; display: flex; justify-content: space-between; margin: 0; padding: 0 2%; list-style: none; height: 46px; }
.sz-lights::before { content: ""; position: absolute; left: 0; right: 0; top: 8px; height: 30px; border-bottom: 2px solid #2b3f35; border-radius: 0 0 50% 50% / 0 0 100% 100%; }
.sz-lights li { position: relative; top: 26px; width: 12px; height: 20px; border-radius: 50%; background: #e8423f; box-shadow: 0 4px 18px 3px rgba(232, 66, 63, .8); animation: sz-bulb 1.6s ease-in-out infinite; }
.sz-lights li::before { content: ""; position: absolute; top: -5px; left: 3px; width: 6px; height: 6px; background: #334; border-radius: 2px; }
.sz-lights li:nth-child(3n+2) { background: #f3c74b; box-shadow: 0 4px 18px 3px rgba(243, 199, 75, .8); animation-delay: -.5s; }
.sz-lights li:nth-child(3n) { background: #4fd18b; box-shadow: 0 4px 18px 3px rgba(79, 209, 139, .8); animation-delay: -1s; }
.sz-lights li:nth-child(even) { top: 32px; }
@keyframes sz-bulb { 50% { opacity: .35; box-shadow: none; } }
.sz-sleigh { position: absolute; top: 22%; left: 0; z-index: 2; font-size: clamp(26px, 3vw, 40px); white-space: nowrap; letter-spacing: -6px; transform: scaleX(-1); filter: drop-shadow(0 0 10px rgba(255,255,255,.5)); animation: sz-sleigh 22s linear infinite; }
@keyframes sz-sleigh { 0% { transform: translate(-20vw, 10vh) scaleX(-1); } 50% { transform: translate(50vw, -2vh) scaleX(-1); } 100% { transform: translate(120vw, 6vh) scaleX(-1); } }
.sz-windows--warm rect { fill: #ffcf6b; filter: drop-shadow(0 0 10px #ffb02e); animation: sz-warm 4s ease-in-out infinite; }
@keyframes sz-warm { 50% { opacity: .8; } }
.sz-smoke { position: absolute; right: 21.5%; top: 6%; }
.sz-smoke span { position: absolute; width: 18px; height: 18px; border-radius: 50%; background: rgba(255,255,255,.35); filter: blur(4px); animation: sz-smoke 4.5s ease-out infinite; }
.sz-smoke span:nth-child(2) { animation-delay: -1.5s; } .sz-smoke span:nth-child(3) { animation-delay: -3s; }
@keyframes sz-smoke { from { transform: translate(0, 0) scale(.5); opacity: .8; } to { transform: translate(30px, -90px) scale(2.4); opacity: 0; } }

/* ===== Walentynki ===== */
.season-valentine .sz-hero { background: radial-gradient(90% 70% at 50% 10%, #6b1534 0%, #3a0c1c 50%, var(--bg) 85%); }
.sz-bokeh span { position: absolute; border-radius: 50%; background: radial-gradient(circle, rgba(255, 140, 170, .45), transparent 70%); animation: sz-bokeh 10s ease-in-out infinite; }
.sz-bokeh span:nth-child(1) { width: 220px; height: 220px; left: 6%; top: 12%; }
.sz-bokeh span:nth-child(2) { width: 140px; height: 140px; left: 70%; top: 20%; animation-delay: -2s; }
.sz-bokeh span:nth-child(3) { width: 300px; height: 300px; left: 40%; top: 55%; animation-delay: -4s; }
.sz-bokeh span:nth-child(4) { width: 90px; height: 90px; left: 85%; top: 60%; animation-delay: -6s; }
.sz-bokeh span:nth-child(5) { width: 180px; height: 180px; left: 15%; top: 65%; animation-delay: -8s; }
.sz-bokeh span:nth-child(n+6) { width: 60px; height: 60px; left: calc(var(--i, 1) * 9%); top: 40%; animation-duration: 7s; }
@keyframes sz-bokeh { 50% { transform: translate(20px, -30px) scale(1.15); opacity: .6; } }
.sz-bigheart { position: absolute; font-size: clamp(60px, 9vw, 140px); filter: drop-shadow(0 0 30px rgba(255, 77, 125, .7)); animation: sz-heart 3s ease-in-out infinite; }
.sz-bigheart--1 { left: 7%; top: 22%; } .sz-bigheart--2 { right: 9%; top: 16%; animation-delay: -1s; font-size: clamp(48px, 7vw, 110px); } .sz-bigheart--3 { right: 16%; bottom: 14%; animation-delay: -2s; font-size: clamp(40px, 5vw, 80px); }
@keyframes sz-heart { 0%, 100% { transform: scale(1) rotate(-6deg); } 15% { transform: scale(1.15) rotate(-6deg); } 30% { transform: scale(1) rotate(-6deg); } 45% { transform: scale(1.1) rotate(-6deg); } }

/* ===== Licznik: liczby „przeskakują” ===== */
.sz-countdown__units span { backdrop-filter: blur(6px); background: color-mix(in srgb, var(--surface) 70%, transparent); }
.sz-countdown__units b.is-tick { animation: sz-tick .45s cubic-bezier(.2,1.6,.4,1); }
@keyframes sz-tick { from { transform: translateY(-40%) scale(1.25); opacity: .2; } }

/* ===== Karty produktów ===== */
@media (hover: hover) and (pointer: fine) {
	.woocommerce ul.products li.product { transform-style: preserve-3d; transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
	.woocommerce ul.products li.product.is-tilting { transition: transform .06s linear; }
	.woocommerce ul.products li.product::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: radial-gradient(240px circle at var(--mx, 50%) var(--my, 50%), color-mix(in srgb, var(--accent) 22%, transparent), transparent 60%); opacity: 0; transition: opacity .25s; }
	.woocommerce ul.products li.product:hover::after { opacity: 1; }
	.woocommerce ul.products li.product:hover a img { transform: scale(1.06) rotate(-1.5deg); }
}
.woocommerce ul.products li.product a img { transition: transform .4s cubic-bezier(.2,.8,.2,1); }
.woocommerce ul.products li.product { overflow: hidden; }
.season-halloween .woocommerce ul.products li.product:hover { animation: sz-wobble .5s ease; }
@keyframes sz-wobble { 30% { rotate: -1deg; } 60% { rotate: 1deg; } }

/* Wybuch emoji po dodaniu do koszyka */
.sz-burst { position: fixed; z-index: 9999; pointer-events: none; font-size: 22px; animation: sz-burst .9s cubic-bezier(.15,.8,.3,1) forwards; }
@keyframes sz-burst { to { transform: translate(var(--bx), var(--by)) rotate(var(--br)) scale(.4); opacity: 0; } }
.sz-cart-link.is-bump .sz-cart-count { animation: sz-bump .6s cubic-bezier(.2,1.8,.4,1); }
@keyframes sz-bump { 40% { transform: scale(1.7); } }

/* ===== Odsłanianie przy przewijaniu ===== */
.sz-js .sz-reveal { opacity: 0; transform: translateY(40px); transition: opacity .8s ease, transform .8s cubic-bezier(.2,.8,.2,1); }
.sz-js .sz-reveal.is-in { opacity: 1; transform: none; }
.sz-js .sz-reveal.is-in ul.products li.product { animation: sz-rise .7s cubic-bezier(.2,.8,.2,1) both; }
.sz-js .sz-reveal.is-in ul.products li.product:nth-child(2) { animation-delay: .1s; }
.sz-js .sz-reveal.is-in ul.products li.product:nth-child(3) { animation-delay: .2s; }
.sz-js .sz-reveal.is-in ul.products li.product:nth-child(4) { animation-delay: .3s; }
.sz-js .sz-reveal.is-in ul.products li.product:nth-child(5) { animation-delay: .4s; }
@keyframes sz-rise { from { opacity: 0; transform: translateY(50px) scale(.96); } }

@media (max-width: 720px) {
	.sz-hero { min-height: 88vh; padding: 64px 0 120px; }
	.sz-ghost--2, .sz-bat--4, .sz-bat--6, .sz-bat--7, .sz-cloud--2 { display: none; }
	.sz-spider { left: 8%; }
	.sz-lights li:nth-child(n+15) { display: none; }
}

@media (prefers-reduced-motion: reduce) {
	.sz-particles, .sz-bats, .sz-ghost, .sz-sleigh, .sz-spider { display: none; }
	.sz-js .sz-reveal { opacity: 1; transform: none; }
}
