/* laava-features */
.lv-product-meta,
.lv-product-share {
	font-size: 14px;
	margin-top: 20px;
}
.lv-product-share a {
	margin-left: 12px;
}
.lv-product-dialog-open,
.lv-brand-logo {
	max-height: 40px;
	width: auto;
}
@media (prefers-reduced-motion: no-preference) {
	.lv-thumb-animation .flex-control-thumbs > li {
		animation: lv-thumb-in 0.45s ease both;
	}
	.lv-thumb-animation .flex-control-thumbs > li:nth-child(2) { animation-delay: 0.06s; }
	.lv-thumb-animation .flex-control-thumbs > li:nth-child(3) { animation-delay: 0.12s; }
	.lv-thumb-animation .flex-control-thumbs > li:nth-child(4) { animation-delay: 0.18s; }
	.lv-thumb-animation .flex-control-thumbs > li:nth-child(n + 5) { animation-delay: 0.24s; }
}
@keyframes lv-thumb-in {
	from { opacity: 0; transform: translateY(8px); }
}
.lv-description-toggle {
	border: 0;
	background: none;
	padding: 8px 0;
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
	font: inherit;
	margin-right: 20px;
}
.lv-product-dialog {
	width: min(90vw, 760px);
	max-height: 85dvh;
	padding: 32px;
	border: 0;
	border-radius: 0;
	overflow: auto;
}
/* scrim: motion.css (egységes) */
.lv-product-dialog > [data-lv-dialog-close] {
	float: right;
	width: 32px;
	height: 32px;
	background: none;
	border: 0;
	font-size: 28px;
	cursor: pointer;
}
.lv-description-clamped {
	display: -webkit-box;
	-webkit-line-clamp: var(--lv-description-lines);
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.lv-tabs-accordion .woocommerce-tabs > ul.tabs,
.lv-tabs-accordion-1 .woocommerce-tabs > ul.tabs,
.lv-tabs-accordion-2 .woocommerce-tabs > ul.tabs {
	display: none;
}
.lv-product-accordion {
	border-bottom: 1px solid #ebebeb;
}
.lv-product-accordion summary {
	padding: 20px;
	font-weight: 500;
	cursor: pointer;
}
.lv-gallery-left-thumbnails .woocommerce-product-gallery,
.lv-gallery-right-thumbnails .woocommerce-product-gallery {
	display: flex;
	gap: 12px;
	align-items: flex-start;
}
.lv-gallery-left-thumbnails .flex-viewport,
.lv-gallery-right-thumbnails .flex-viewport {
	flex: 1;
	width: calc(100% - 112px);
}
.lv-gallery-left-thumbnails .flex-control-thumbs,
.lv-gallery-right-thumbnails .flex-control-thumbs {
	display: flex !important;
	flex-direction: column;
	width: 100px !important;
	flex: none;
	margin: 0 !important;
}
.lv-gallery-left-thumbnails .flex-control-thumbs {
	order: -1;
}
.lv-gallery-left-thumbnails .flex-control-thumbs > li,
.lv-gallery-right-thumbnails .flex-control-thumbs > li {
	width: 100% !important;
}
.lv-gallery-grid-1 .woocommerce-product-gallery__wrapper,
.lv-gallery-grid-2 .woocommerce-product-gallery__wrapper {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
}
.lv-gallery-grid-1 .woocommerce-product-gallery__image:first-child {
	grid-column: 1/-1;
}
.lv-gallery-stacked .woocommerce-product-gallery__wrapper {
	display: grid;
	gap: 12px;
}
.lv-gallery-zoom {
	position: absolute;
	z-index: 10;
	pointer-events: none;
	background-repeat: no-repeat;
	background-size: 200%;
	background-color: #fff;
}
.lv-gallery-zoom[hidden] {
	display: none;
}
.lv-gallery-zoom--inner {
	inset: 0;
}
.lv-gallery-zoom--bounding {
	inset: 0 auto auto calc(100% + 20px);
	width: 100%;
	height: 100%;
	border: 1px solid #eee;
	box-shadow: 0 5px 20px #0002;
}
.lv-gallery-zoom--magnifier {
	width: 180px;
	height: 180px;
	border: 3px solid #fff;
	border-radius: 50%;
	box-shadow: 0 2px 15px #0003;
}
.woocommerce-product-gallery__image {
	position: relative;
}
@media (max-width: 767px) {
	.lv-gallery-zoom {
		display: none;
	}
}
/* Catalogue modes preserve the existing grid/sidebar and native GET parameters. */
.lv-catalog-views {
	display: flex;
	gap: 6px;
}
.lv-catalog-views button {
	height: 36px;
	border: 1px solid #ddd;
	background: #fff;
	color: #555;
	cursor: pointer;
	border-radius: 0;
	letter-spacing: 2px;
}
.lv-catalog-views button[aria-pressed='true'] {
	background: #000;
	color: #fff;
	border-color: #000;
}
.lv-main .lv-catalog-products ul.products:not(.swiper-wrapper) {
	grid-template-columns: repeat(
		var(--lv-user-columns, var(--laava-catalog-columns, 4)),
		minmax(0, 1fr)
	);
}
.lv-catalog-contained .lv-woo {
	max-width: var(--laava-container, 1440px);
}
.lv-catalog-sidebar-right .lv-catalog-layout {
	grid-template-columns: minmax(0, 1fr) 26%;
}
.lv-catalog-sidebar-right .lv-catalog-sidebar {
	order: 2;
}
.lv-catalog-sidebar-right .lv-catalog-products {
	order: 1;
}
.lv-catalog-list .lv-woo ul.products {
	grid-template-columns: 1fr !important;
}
.lv-catalog-list .lv-card-inner {
	display: grid;
	grid-template-columns: minmax(150px, 30%) 1fr;
	gap: 20px;
}
.lv-card-desc {
	display: none;
	margin: 0;
	font-size: 0.875rem;
	color: var(--laava-muted, #666);
}
.lv-catalog-list .lv-card-desc {
	display: block;
}
.lv-catalog-list .lv-card-summary {
	transform: none !important;
}
.lv-catalog-list .lv-card-purchase {
	grid-column: 2;
	grid-row: 2;
	visibility: visible !important;
	opacity: 1 !important;
	height: auto !important;
}
.lv-load-more {
	display: flex !important;
	margin: 40px auto 0;
}
.lv-load-more[hidden],
.woocommerce-pagination[hidden] {
	display: none !important;
}
.lv-top-categories {
	display: grid;
	grid-template-columns: repeat(var(--lv-top-columns, 5), minmax(0, 1fr));
	margin-bottom: 40px;
}
.lv-top-categories > a {
	position: relative;
	display: block;
	text-decoration: none;
	text-align: center;
	color: #000;
}
.lv-top-categories img {
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	border-radius: 0;
}
.lv-top-categories span {
	display: block;
	padding: 10px;
}
.lv-top-categories--inside span {
	position: absolute;
	bottom: 15px;
	left: 50%;
	transform: translateX(-50%);
	background: #fff;
	border-radius: 0;
}
.lv-catalog-header,
.lv-blog-header,
.lv-page-head {
	position: relative;
	isolation: isolate;
	background-size: cover;
	background-position: center;
	text-align: center;
}
.lv-catalog-header::before,
.lv-blog-header::before,
.lv-page-head::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
}
@media (max-width: 767px) {
	.lv-main .lv-catalog-products ul.products:not(.swiper-wrapper) {
		grid-template-columns: repeat(
			var(--lv-user-columns, var(--laava-catalog-columns-mobile, 2)),
			minmax(0, 1fr)
		);
	}
	.lv-top-categories {
		grid-template-columns: repeat(var(--lv-top-mobile, 2), minmax(0, 1fr));
	}
	.lv-catalog-sidebar-right .lv-catalog-layout {
		display: block;
	}
}

.lv-tabs-list .woocommerce-tabs > ul.tabs {
	display: none;
}
.lv-tabs-list .woocommerce-Tabs-panel {
	display: block !important;
	margin-bottom: 32px;
}
@media (min-width: 768px) {
	.lv-tabs-vertical .woocommerce-tabs {
		display: grid;
		grid-template-columns: 240px minmax(0, 1fr);
		gap: 30px;
	}
	.lv-tabs-vertical .woocommerce-tabs > ul.tabs {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		margin: 0;
		grid-column: 1;
		grid-row: 1/9;
		border-bottom: 0;
	}
	.lv-tabs-vertical .woocommerce-tabs .woocommerce-Tabs-panel {
		grid-column: 2;
	}
}
.lv-term-desc[style*='--lv-description-lines:0'] {
	display: block;
}

.lv-term-desc {
	display: -webkit-box;
	-webkit-line-clamp: var(--lv-description-lines, 10);
	-webkit-box-orient: vertical;
	overflow: hidden;
	margin-inline: auto;
}

.lv-product-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 280px;
	gap: 40px;
}
.lv-product-layout--sidebar-content {
	grid-template-columns: 280px minmax(0, 1fr);
}
.lv-product-layout--sidebar-content .lv-product-sidebar {
	grid-row: 1;
	grid-column: 1;
}
.lv-product-layout--sidebar-content .lv-product-layout-main {
	grid-row: 1;
	grid-column: 2;
}
.lv-product-layout-main {
	min-width: 0;
}
@media (max-width: 1024px) {
	.lv-product-layout {
		display: block;
	}
	.lv-product-sidebar {
		margin-top: 40px;
	}
}

.lv-minicart-tools {
	border-top: 1px solid #eee;
	margin-top: 20px;
	padding-top: 10px;
}
.lv-minicart-tools details {
	padding: 10px 0;
}
.lv-minicart-tools summary {
	cursor: pointer;
}
.lv-minicart-tools label,
.lv-minicart-tools textarea,
.lv-minicart-tools input {
	display: block;
	width: 100%;
	margin: 10px 0;
}
.lv-minicart-tools .button {
	margin-top: 10px;
}
.lv-minicart-tools .shipping-calculator-form {
	padding-top: 12px;
}
.lv-minicart-recommendations {
	margin-top: 30px;
}
.lv-minicart-recommendations > h3 {
	font-size: 18px;
}
.lv-minicart-recommendations ul.products {
	display: flex !important;
	overflow-x: auto;
	gap: 16px;
	list-style: none;
	padding: 0;
}
.lv-minicart-recommendations li.product {
	flex: 0 0 160px !important;
	width: 160px !important;
	margin: 0 !important;
}
.lv-minicart-recommendations .lv-card-summary {
	transform: none !important;
}
.lv-minicart-recommendations .lv-card-purchase {
	opacity: 1;
	visibility: visible;
	height: auto;
}
.lv-minicart-recommendations.lv-mini-feature-quick-view .lv-card-purchase,
.lv-minicart-recommendations.lv-mini-feature-add-to-cart .lv-card-actions,
.lv-minicart-recommendations .lv-card__wish {
	display: none !important;
}
.lv-minicart-recommendations .lv-card-actions {
	opacity: 1;
	pointer-events: auto;
	bottom: 12px;
}

.lv-minicart-woo-form-wrapper .shipping-calculator-button {
	display: none;
}
.lv-minicart-woo-form-wrapper .shipping-calculator-form {
	display: block !important;
}

.lv-compare-add {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 50px;
	height: 50px;
	padding: 0;
	border: 1px solid #eee;
	border-radius: 0;
	background: #fff;
	color: #242424;
	cursor: pointer;
}
.lv-compare-add:hover,
.lv-compare-add[aria-pressed='true'] {
	background: #000;
	color: #fff;
}
.lv-compare-dialog {
	width: min(95vw, 1200px);
}
.lv-compare-dialog > [data-lv-compare-close] {
	float: right;
	border: 0;
	background: none;
	font-size: 28px;
	cursor: pointer;
}
.lv-compare-scroll {
	overflow: auto;
}
.lv-compare-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
	table-layout: fixed;
}
.lv-compare-table th,
.lv-compare-table td {
	min-width: 170px;
	padding: 16px;
	border: 1px solid #eee;
	vertical-align: top;
	text-align: left;
}
.lv-compare-table th:first-child {
	width: 140px;
}
.lv-compare-table img {
	width: 100%;
	max-height: 200px;
	object-fit: cover;
	border-radius: 0;
}
.lv-compare-table a {
	color: inherit;
	text-decoration: none;
}
.lv-compare-table th button {
	float: right;
	border: 0;
	background: none;
	font-size: 24px;
	cursor: pointer;
}
.lv-compare-status {
	position: fixed;
	right: 20px;
	bottom: 90px;
	z-index: 9999;
	background: #fff;
	padding: 20px;
	border: 1px solid #ddd;
	box-shadow: 0 3px 20px #0002;
	border-radius: 0;
	max-width: calc(100vw - 40px);
}
.lv-compare-status[hidden] {
	display: none;
}
@media (max-width: 767px) {
	.lv-compare-add {
		width: 38px;
		height: 38px;
	}
	.lv-compare-table {
		min-width: 650px;
	}
}

.lv-compare-bar {
	position: fixed;
	right: 20px;
	bottom: 80px;
	z-index: 90;
	padding: 14px 22px;
	border: 0;
	border-radius: 0;
	background: #000;
	color: #fff;
	cursor: pointer;
	font: inherit;
	box-shadow: 0 3px 15px #0002;
}
.lv-compare-bar[hidden] {
	display: none;
}

/* laava-motion */
/*
 * LAAVA mozgás- és popup-réteg (docs/motion-spec.md, vászon „MOTION v1” + Popup/PopupAjanlat/MobilHeader scrim).
 * Utolsóként töltődik (inc/assets.php, wp_enqueue_scripts 100), így a komponensek után érvényesül. A tokenek
 * (--ease, --dur, --dur-s) és a mo-* keyframe-ek a tokens.css-ben vannak; csökkentett mozgásnál ott .01ms-ra állnak.
 *
 * Elv: csak opacity / transform jellegű tulajdonság mozog (a magasság-lenyíló a kivétel). A dialógusoknál az önálló
 * `scale` / `translate` tulajdonságot animáljuk, nem a `transform`-ot, így nem ütközik a komponens saját transformjával
 * (pl. a kereső translateX(-50%)-os középre igazításával). A záró animációt a motion.js indítja (.is-closing), és csak
 * utána hívja a natív close()-t, így a nyitott állapotú ([open]) geometria a kifutás alatt is megmarad.
 */

/* ---------------------------------------------------------------- Lenyíló / accordion (<details>) */
/* Magasság 0 → auto, a tartalom mo-in-nel jön be. Kivétel minden olyan <details>, amelynek a tartalma abszolút
   pozicionált lenyíló (pl. katalógus gyorsszűrő .lv-qf): ott a ::details-content 0 magassága levágná a panelt. */
details:not(.lv-qf){interpolate-size:allow-keywords}
details:not(.lv-qf)::details-content{block-size:0;overflow:clip;transition:block-size var(--dur) var(--ease),content-visibility var(--dur) allow-discrete}
details:not(.lv-qf)[open]::details-content{block-size:auto}
details:not(.lv-qf)[open]>:not(summary){animation:mo-in var(--dur) var(--ease)}
summary{transition:background-color var(--dur-s) var(--ease),border-color var(--dur-s) var(--ease),color var(--dur-s) var(--ease)}

/* Lenyíló jellegű <details> (gyorsszűrő): a hover-lenyíló mozgása – átlátszóság + 4 px, 160 ms. */
.lv-qf[open]>.lv-qf__dd{animation:lv-drop var(--dur-s) var(--ease)}
@keyframes lv-drop{from{opacity:0;translate:0 -4px}}

/* ---------------------------------------------------------------- Script által beszúrt / megjelenített elemek */
/* docs/motion-spec.md „Script-vezérelt elemek”: a JS ezekre a két osztályra hivatkozik (belépő animáció). */
.moi{animation:mo-in var(--dur) var(--ease)}
.moi-f{animation:mo-fade var(--dur) var(--ease)}

/* ---------------------------------------------------------------- Vezérlők átmenete (Interakciok board) */
/* Szín, keret, háttér 160 ms-mal; a komponensek saját (150 ms, ease-out) értékeit egységesíti. */
.lv-btn,.lv-hbtn,.lv-chip,.lv-qf>summary{transition:background-color var(--dur-s) var(--ease),border-color var(--dur-s) var(--ease),color var(--dur-s) var(--ease),box-shadow var(--dur-s) var(--ease),filter var(--dur-s) var(--ease)}
.lv-qf__chv{transition:transform var(--dur) var(--ease)}

/* ---------------------------------------------------------------- Egységes popup-háttér (scrim) */
/* Minden popup, drawer és panel háttere: 10% ásványtinta (a --min a termékoldal body-ján / a minikosáron van, a ::backdrop
   a dialógustól örököl) + 50% grafit + 5 px homályosítás. A lightbox szándékosan erősebb (docs/lightbox-spec.md), az nem ez. */
dialog::backdrop{background:color-mix(in srgb,var(--min,#1F1D1B) 10%,rgba(31,29,27,.5));-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}
.lv-backdrop,.lv-dr__bd{background:color-mix(in srgb,var(--min,#1F1D1B) 10%,rgba(31,29,27,.5));-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}

/* ---------------------------------------------------------------- Dialógusok: nyitás és zárás */
@keyframes lv-dlg-in{from{opacity:0;scale:.97}}
@keyframes lv-dlg-out{to{opacity:0;scale:.97}}
@keyframes lv-bd-in{from{opacity:0}}
@keyframes lv-bd-out{to{opacity:0}}
@keyframes lv-sheet-in{from{translate:0 100%}}
@keyframes lv-sheet-out{to{translate:0 100%}}
@keyframes lv-left-in{from{translate:-100% 0}}
@keyframes lv-left-out{to{translate:-100% 0}}
@keyframes lv-right-in{from{translate:100% 0}}
@keyframes lv-right-out{to{translate:100% 0}}

/* Alap: középre nyíló ablak (gyorsnézet, összehasonlítás, vélemény, termék-dialógusok, kereső, ajánlat-popup desktopon). */
dialog[open]{animation:lv-dlg-in var(--dur) var(--ease)}
dialog[open]::backdrop{animation:lv-bd-in var(--dur) var(--ease)}
dialog.is-closing{animation:lv-dlg-out var(--dur) var(--ease) forwards}
dialog.is-closing::backdrop{animation:lv-bd-out var(--dur) var(--ease) forwards}

/* Balról nyíló drawer: a régi teljes szűrőpanel és a katalógus szűrőpanelje desktopon (storefront.css: inset 0 auto 0 0). */
.lv-filter-panel[open]{animation:lv-left-in var(--dur) var(--ease)}
.lv-filter-panel.is-closing{animation:lv-left-out var(--dur) var(--ease) forwards}
/* Jobbról nyíló kereső (oldalsáv-változat). */
.lv-search--sidebar[open]{animation:lv-right-in var(--dur) var(--ease)}
.lv-search--sidebar.is-closing{animation:lv-right-out var(--dur) var(--ease) forwards}
/* Alsó lapok mobilon: a katalógus szűrőpanelje (≤ 767 px) és a pénztár előtti ajánlat (≤ 599 px). */
@media (max-width:767px){
	.lv-catalog2 .lv-filter-panel[open]{animation:lv-sheet-in var(--dur) var(--ease)}
	.lv-catalog2 .lv-filter-panel.is-closing{animation:lv-sheet-out var(--dur) var(--ease) forwards}
}
@media (max-width:599px){
	.lv-popup[open]{animation:lv-sheet-in var(--dur) var(--ease)}
	.lv-popup.is-closing{animation:lv-sheet-out var(--dur) var(--ease) forwards}
}

/* ---------------------------------------------------------------- Osztállyal nyíló fiókok */
/* Minikosár-fiók (cart.js: hidden → is-open, zárásnál 250 ms múlva hidden): a csúszás a tokenekkel; a háttér beúszik. */
.lv-minicart{transition:transform var(--dur) var(--ease)}
.lv-backdrop:not([hidden]){animation:lv-bd-in var(--dur) var(--ease)}

/* ---------------------------------------------------------------- Csökkentett mozgás */
/* A tokenek .01ms-ra állnak (tokens.css); ami nem tokenen fut vagy elmosás, azt itt kapcsoljuk ki. */
@media (prefers-reduced-motion:reduce){
	details::details-content{transition:none}
	dialog[open],dialog[open]::backdrop,dialog.is-closing,dialog.is-closing::backdrop,.lv-backdrop,.moi,.moi-f,.lv-qf[open]>.lv-qf__dd{animation:none!important}
}

/* ================================================================ Állapotok (B-059 2. kör)
 * Vászon: Allapotok/Betoltes (váz, spinner), Termek (készletjelző), Kosar (visszavonás-toast), Koszono (pipa-rajz),
 * Kategoria (betöltött elemek), Main (hero dia). Az időzítések a boardok értékei; csökkentett mozgásnál lent kikapcsolva.
 */

/* Váz (skeleton): finom csillogás a lapos bézs helyett (Allapotok .sk: 1,4 s, 400% széles átmenet). Katalógus „Továbbiak”
   váza (catalog-laava.js) és az élő kereső váza (Core live-search.js), valamint az általános .lv-sk osztály. */
@keyframes lv-skm{from{background-position:100% 50%}to{background-position:0 50%}}
.lv-sk,.lv-skel__img,.lv-skel__l,.lvls-skel .lvls-th,.lvls-skel__t i{background:linear-gradient(90deg,#F3EEE8 25%,#FAF7F3 37%,#F3EEE8 63%);background-size:400% 100%;animation:lv-skm 1.4s ease infinite}

/* Töltésjelző a gombon (Allapotok: kattintás után forgó jelző, a gomb tiltott, a szélessége nem változik). A felirat
   átlátszó lesz, de a helyét megtartja; a jelző a gomb közepén. Sötét gombon fehér, világos (ikon-) gombon grafit. */
@keyframes lv-spn{to{rotate:360deg}}
.lv-spin{display:inline-block;width:18px;height:18px;box-sizing:border-box;border:2px solid rgba(255,255,255,.4);border-top-color:#FFFFFF;border-radius:50%;animation:lv-spn 800ms linear infinite;vertical-align:-3px}
:is(.single_add_to_cart_button,.lv-btn,.lv-hbtn).loading,:is(.lv-btn,.lv-hbtn)[aria-busy="true"]{position:relative;color:transparent!important;pointer-events:none}
/* Töltés közben a gomb tiltott, de NEM halványul (a Woo a :disabled gombot 50%-ra veszi, a fehér jelző szürkén elveszne). */
:is(.single_add_to_cart_button,.lv-btn,.lv-hbtn).loading:is(:disabled,.disabled){opacity:1!important;cursor:progress}
/* transform:none: a gombok ::after-jára más szabály ferdítést (skewX) tehet, az torzítaná a kört; a forgás a `rotate` tulajdonság. */
:is(.single_add_to_cart_button,.lv-btn,.lv-hbtn).loading::after,:is(.lv-btn,.lv-hbtn)[aria-busy="true"]::after{content:"";transform:none;position:absolute;left:50%;top:50%;width:var(--lv-btn-spin,18px);height:var(--lv-btn-spin,18px);margin:calc(var(--lv-btn-spin,18px) / -2) 0 0 calc(var(--lv-btn-spin,18px) / -2);box-sizing:border-box;border:2px solid rgba(255,255,255,.4);border-top-color:#FFFFFF;border-radius:50%;animation:lv-spn 800ms linear infinite}
/* B-093: világos alapú gombon (körvonalas, világos, szellem) a fehér jelző nem látszana – grafit jelző. */
:is(.lv-btn--outline,.lv-hbtn--outline,.lv-btn--light,.lv-hbtn--light,.lv-btn--round):is(.loading,[aria-busy="true"])::after{border-color:rgba(36,33,31,.2);border-top-color:var(--laava-graphite,#24211F)}
/* A kártya kosár-ikonja (fehér kör): az ikon helyén grafit jelző. */
.lv-product-card .lv-cva__btn.loading{position:relative}
.lv-product-card .lv-cva__btn.loading svg{opacity:0!important}
.lv-product-card .lv-cva__btn.loading::after{content:"";transform:none;position:absolute;left:50%;top:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;border:2px solid rgba(36,33,31,.2);border-top-color:#24211F;border-radius:50%;animation:lv-spn 800ms linear infinite}

/* Készletjelző: kevés készletnél (a Woo „Alacsony készlet küszöbe” alatt, B-061) borostyán (Termek board: „● Már csak 2 db”
   #9A5B00); eddig a „Készleten” zöldjét kapta. */
.lv-pd-stock.is-low{color:#9A5B00}

/* Visszavonás-toast a kosár oldalon (Kosar .ktoast): a Woo „… eltávolítva. Visszavonás?” értesítése alul középen, grafit
   dobozban, 6 s után eltűnik (a hely nem ugrik, mert fix pozíciójú). Mobilon a 84 px-es alsó sáv fölött. A halvány világos
   keret a grafit lábléc fölött választja el (árnyék a design-szabály szerint nincs).
   Kedvencek (Kedvencek .fvt, B-061): ugyanez a sáv a JS-es eltávolításnál (.lv-undo-toast, storefront.js) és JS nélkül a
   WCBoost „… eltávolítva a kedvencekből. Visszavonom” értesítésén (.wcboost-wishlist-page). */
@keyframes lv-toast{0%,94%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}
.lv-undo-toast,.wcboost-wishlist-page .woocommerce-message:has(.restore-item),.woocommerce-cart :is(.woocommerce-message,.wc-block-components-notice-banner):has(.restore-item){position:fixed;left:50%;bottom:24px;z-index:9990;translate:-50% 0;display:flex;align-items:center;gap:16px;width:max-content;max-width:calc(100vw - 32px);box-sizing:border-box;margin:0;padding:12px 16px;border:1px solid rgba(255,255,255,.16);border-radius:0;background:#24211F;color:#FFFFFF;font-size:14px;line-height:1.4;box-shadow:none;animation:mo-in var(--dur) var(--ease),lv-toast 6s forwards}
.wcboost-wishlist-page .woocommerce-message:has(.restore-item)::before,.woocommerce-cart :is(.woocommerce-message,.wc-block-components-notice-banner):has(.restore-item)::before,.woocommerce-cart .wc-block-components-notice-banner:has(.restore-item)>svg{display:none}
.wcboost-wishlist-page .woocommerce-message:has(.restore-item) .restore-item,.woocommerce-cart :is(.woocommerce-message,.wc-block-components-notice-banner):has(.restore-item) .restore-item{color:#FFFFFF;font-weight:500;text-decoration:underline;text-underline-offset:3px}
@media (max-width:599px){.woocommerce-cart :is(.woocommerce-message,.wc-block-components-notice-banner):has(.restore-item){bottom:84px}}
/* A JS-es sáv a vászon .fvt méretei szerint (2/6/2/16 px, 12 px köz, a gomb 44 px magas érintési felület). */
.lv-undo-toast{gap:12px;padding:2px 6px 2px 16px}
.lv-undo-toast[hidden]{display:none}
.lv-undo-toast__btn{min-height:44px;margin:0;padding:0 10px;border:0;background:none;color:#FFFFFF;font:inherit;font-weight:500;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.lv-undo-toast__btn:hover{background:none;color:#FFFFFF;opacity:.85}
.lv-undo-toast__btn:focus-visible{outline:2px solid #FFFFFF;outline-offset:-2px;border-radius:0}

/* Sikeres fizetés pipa: a vonal kirajzolódik (Koszono .kchk: 0,5 s, 0,2 s késleltetés). A path pathLength="1". */
@keyframes lv-draw{to{stroke-dashoffset:0}}
.lv-ty__badge--ok svg path{stroke-dasharray:1;stroke-dashoffset:1;animation:lv-draw .5s .2s ease-out forwards}

/* „Továbbiak betöltése”: a betöltött termékek felúsznak (Kategoria lmin: 8 px, 0,35 s); a JS a .lv-lmin osztályt teszi rájuk. */
@keyframes lv-lmin{from{opacity:0;translate:0 8px}}
.lv-lmin{animation:lv-lmin .35s ease-out both}

/* Főoldali hero: a megjelenő dia áttűnik (Main .fadein 300 ms), a szövege felúszik (Main .rise 350 ms). */
@keyframes lv-rise{from{opacity:0;translate:0 8px}}
.lv-hero__slide:not([hidden]){animation:mo-fade 300ms ease-out both}
.lv-hero__slide:not([hidden]) .lv-hero__copy{animation:lv-rise 350ms ease-out both}

@media (prefers-reduced-motion:reduce){
	.lv-sk,.lv-skel__img,.lv-skel__l,.lvls-skel .lvls-th,.lvls-skel__t i,.lv-lmin,.lv-hero__slide:not([hidden]),.lv-hero__slide:not([hidden]) .lv-hero__copy{animation:none}
	.lv-ty__badge--ok svg path{animation:none;stroke-dashoffset:0}
	/* A toast eltűnése nem mozgás, csak időzítés: marad, a beúszás nélkül. */
	.lv-undo-toast,.wcboost-wishlist-page .woocommerce-message:has(.restore-item),.woocommerce-cart :is(.woocommerce-message,.wc-block-components-notice-banner):has(.restore-item){animation:lv-toast 6s forwards}
	/* A forgó jelző lassan, de forog: állapotot jelez (WCAG: lényeges animáció). */
	.lv-spin,:is(.single_add_to_cart_button,.lv-btn,.lv-hbtn).loading::after,.lv-product-card .lv-cva__btn.loading::after{animation-duration:1.6s}
}

/* laava-notices */
/* B-131 (Gábor): minden hiba-, info-, siker- és figyelmeztető üzenet LAAVA-stílusban – a klasszikus Woo (.woocommerce-error/-info/
   -message), a Block (.wc-block-components-notice-banner) és a WP-figyelmeztetés (.notice) egy rendszerben.
   Szögletes (B-120), bézs alap, 3 px bal oldali színsáv típusonként, a Woo ikonfontja és kék felső kerete nélkül, kompakt gomb. */
:root{--lv-n-info:#5C3D2E;--lv-n-ok:#2F6B45;--lv-n-warn:#B07A1E;--lv-n-err:#8E1B2B}
.woocommerce-message,.woocommerce-info,.woocommerce-error,.woocommerce-notice,.wc-block-components-notice-banner,.lv-main .notice{
	position:relative;list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin:0 0 20px;padding:14px 18px 14px 20px!important;
	border:0!important;border-left:3px solid var(--lv-n-info)!important;border-radius:0!important;background:#F6F1EB!important;color:#24211F!important;
	font-family:var(--laava-font-body,'DM Sans',system-ui,sans-serif);font-size:15px;line-height:1.55;box-shadow:none!important;outline:0}
.woocommerce-message,.wc-block-components-notice-banner.is-success{border-left-color:var(--lv-n-ok)!important}
.woocommerce-error,.wc-block-components-notice-banner.is-error{border-left-color:var(--lv-n-err)!important;background:#FBF1F0!important}
.wc-block-components-notice-banner.is-warning,.lv-main .notice-warning{border-left-color:var(--lv-n-warn)!important;background:#FBF5EA!important}
.woocommerce-message::before,.woocommerce-info::before,.woocommerce-error::before{content:none!important;display:none!important}
.woocommerce-error>li{list-style:none;margin:0;padding:0}
.woocommerce-error{flex-direction:column;align-items:flex-start}
.wc-block-components-notice-banner>svg{flex:none;width:20px;height:20px;padding:0!important;border-radius:0!important;background:transparent!important;fill:var(--lv-n-info)!important}
.wc-block-components-notice-banner.is-success>svg{fill:var(--lv-n-ok)!important}
.wc-block-components-notice-banner.is-error>svg{fill:var(--lv-n-err)!important}
.wc-block-components-notice-banner.is-warning>svg{fill:var(--lv-n-warn)!important}
.wc-block-components-notice-banner__content{flex:1 1 240px;min-width:0;color:inherit!important;font-size:15px}
:is(.woocommerce-message,.woocommerce-info,.woocommerce-error,.wc-block-components-notice-banner) a:not(.button):not(.wc-forward){color:inherit;text-decoration:underline;text-underline-offset:3px}
:is(.woocommerce-message,.woocommerce-info,.woocommerce-error,.wc-block-components-notice-banner) :is(.button,.wc-forward,.wp-element-button):not(.wc-block-components-notice-banner__dismiss){
	order:9;float:none!important;margin:0 0 0 auto!important;display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 18px!important;
	border:1px solid #24211F!important;border-radius:0!important;background:#24211F!important;color:#fff!important;
	font:500 11px/1 var(--laava-font-body,'DM Sans',sans-serif)!important;letter-spacing:.14em;text-transform:uppercase;text-decoration:none!important;white-space:nowrap}
:is(.woocommerce-message,.woocommerce-info,.woocommerce-error,.wc-block-components-notice-banner) :is(.button,.wc-forward,.wp-element-button):not(.wc-block-components-notice-banner__dismiss):hover{background:#fff!important;color:#24211F!important}
.wc-block-components-notice-banner .wc-block-components-button:not(.wp-element-button){color:inherit}
@media (max-width:599px){:is(.woocommerce-message,.woocommerce-info,.woocommerce-error,.wc-block-components-notice-banner) :is(.button,.wc-forward,.wp-element-button):not(.wc-block-components-notice-banner__dismiss){margin:4px 0 0!important;width:100%}}
/* B-077 (2026-11-08): a Block értesítés bezáró gombja is .wp-element-button – a fenti kompakt gombszabály szürke/fekete téglalappá
   (mobilon teljes szélességű csíkká) tette, az X ikon nem látszott. Saját 44×44-es, átlátszó ikon-gomb a doboz jobb felső sarkában. */
.wc-block-components-notice-banner:has(>.wc-block-components-notice-banner__dismiss){padding-right:52px!important}
.wc-block-components-notice-banner>.wc-block-components-notice-banner__dismiss{position:absolute!important;top:4px;right:4px;display:inline-flex;align-items:center;justify-content:center;
	width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;
	background:transparent!important;color:#24211F!important;box-shadow:none!important;cursor:pointer}
.wc-block-components-notice-banner>.wc-block-components-notice-banner__dismiss svg{width:20px!important;height:20px!important;fill:currentColor!important;background:none!important}
.wc-block-components-notice-banner>.wc-block-components-notice-banner__dismiss:hover{background:rgba(36,33,31,.06)!important}
.wc-block-components-notice-banner>.wc-block-components-notice-banner__dismiss:focus-visible{outline:2px solid #24211F!important;outline-offset:-2px}

/* laava-icon-motion */
/*
 * B-163 (Gábor, 2026-11-08): LAAVA ikonok rámutatásra animálnak – „It's Hover” mintájára (az ikon egy része céltudatosan mozdul,
 * nem díszítés), de React/Motion nélkül, tiszta CSS-sel. Minden ikon a közös `laava_svg()`-ből jön (`.lv-ic--{név}` osztály),
 * így egy helyen él az összes mozgás.
 *
 * Kiváltó: a befoglaló link/gomb/összefoglaló rámutatása vagy billentyűfókusza (`:hover`, `:focus-visible`) – így a gomb teljes
 * felülete indítja, nem csak a kis ikon. Csak egeres eszközön (hover:hover), és csak ha a látogató nem kért csökkentett mozgást.
 * Hossz: 360–700 ms, egyszer játszódik le rámutatásonként; a drágakő-részletek (`.lv-gem`) mindenhol felcsillannak.
 */
@media (hover:hover) and (prefers-reduced-motion:no-preference){
	/* A mozgó részek a saját dobozuk közepe körül fordulnak/nőnek – csak rámutatás közben (a kosár-állapot animációit nem érinti). */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) :is(svg[class*="lv-ic--"],svg[class*="lv-ic--"] *){transform-box:fill-box;transform-origin:center}

	/* Kiváltó-segéd: H = a befoglaló interaktív elem rámutatva / fókuszban. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) [class*="lv-ic--"] .lv-gem{animation:lvIcGem 620ms cubic-bezier(.3,.7,.3,1)}

	/* Kereső: a lencse körbe „keres” (kis billegés a fogantyú körül). */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--search{animation:lvIcSearch 560ms ease-in-out;transform-origin:44% 44%}
	/* Fiók: a fej bólint. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--user>circle{animation:lvIcNod 520ms ease-in-out}
	/* Kedvencek: dobban a szív. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg:is(.lv-ic--heart,.lv-ic--heart-filled)>path{animation:lvIcBeat 620ms ease-in-out}
	/* Menü: a vonalak jobbra csúsznak és vissza. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--menu>path:first-child{animation:lvIcSlide 520ms ease-in-out}
	/* Bezárás: negyed fordulat. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--close{animation:lvIcTurn 420ms cubic-bezier(.3,.7,.3,1)}
	/* Nyilak: a mutatott irányba lökődnek. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg:is(.lv-ic--chevron-right,.lv-ic--arrow-right)>path{animation:lvIcNudgeR 460ms ease-in-out}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--chevron-left>path{animation:lvIcNudgeL 460ms ease-in-out}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--chevron-down>path{animation:lvIcNudgeD 460ms ease-in-out}
	/* Kosár: a kosár megbillen, a tartalma felugrik; kosárba-tétel ikonon a plusz megfordul. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg:is(.lv-ic--cart,.lv-ic--cart-add){animation:lvIcTilt 560ms ease-in-out;transform-origin:50% 90%}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--cart .lv-ci{animation:lvIcHop 560ms ease-in-out}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--cart-add>path:last-child{animation:lvIcTurn 460ms ease-in-out}
	/* Szállítás: a kocsi előre gurul és visszaugrik. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--truck{animation:lvIcDrive 640ms ease-in-out}
	/* Lakat: a kengyel felemelkedik. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--lock>path:nth-of-type(1){animation:lvIcLift 560ms ease-in-out}
	/* Ajándék: a masni felpattan. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--gift>path:nth-of-type(n+2){animation:lvIcLift 560ms ease-in-out}
	/* Naptár: a karikák megbillennek. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--calendar-gem>path:nth-of-type(1){animation:lvIcLift 520ms ease-in-out}
	/* Csillag / szikra: fordul egyet és felragyog. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg:is(.lv-ic--star,.lv-ic--sparkle){animation:lvIcSpark 640ms cubic-bezier(.3,.7,.3,1)}
	/* Kuka: megbillen. Címke: kileng a lyukánál. Visszaküldés: visszafordul. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--trash{animation:lvIcShake 460ms ease-in-out;transform-origin:50% 30%}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--tag{animation:lvIcSwing 620ms ease-in-out;transform-origin:20% 20%}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--return{animation:lvIcBack 600ms ease-in-out}
	/* Szem: pislog. Levél: a fedél lebben. Üzenet: felpattan. Nagyító: ráközelít. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--eye>path:first-child{animation:lvIcBlink 420ms ease-in-out}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--mail>path{animation:lvIcFlap 520ms ease-in-out;transform-origin:50% 0}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--chat{animation:lvIcHop 520ms ease-in-out}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--zoom{animation:lvIcZoom 460ms ease-in-out}
	/* Pipa: újrarajzolódik. Szűrő: a sorok elcsúsznak. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--check>path{stroke-dasharray:24;animation:lvIcDraw 520ms ease-out}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--filter>path{animation:lvIcSlide 520ms ease-in-out}
	/* Kristály-, karkötő-, könyv- és gyűrű-ikon: finom lebegés. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg:is(.lv-ic--crystals,.lv-ic--bracelet,.lv-ic--book,.lv-ic--ring,.lv-ic--camera,.lv-ic--shield,.lv-ic--help){animation:lvIcFloat 620ms ease-in-out}
	/* B-164 sima kristályok: a csúcs megbillen és lebeg, a drágakő felvillan (fordul + nő), a nyers kő megemelkedik. */
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--crystal-point{animation:lvIcTilt 620ms ease-in-out;transform-origin:50% 90%}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--gem{animation:lvIcGemBig 640ms cubic-bezier(.3,.7,.3,1)}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--gem>path:last-child{animation:lvIcShine 640ms ease-in-out}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--crystal-raw{animation:lvIcFloat 620ms ease-in-out}
	:is(a,button,summary,label,[role="button"]):is(:hover,:focus-visible) svg.lv-ic--crystal-raw>path:last-child{animation:lvIcShine 620ms ease-in-out}
	/* „Vissza a tetejére” nyíl (B-154): felfelé lökődik. */
	.lv-back-to-top:is(:hover,:focus-visible) svg{animation:lvIcUp 520ms ease-in-out}

	@keyframes lvIcGem{0%{transform:none}40%{transform:scale(1.55) rotate(45deg)}100%{transform:none}}
	@keyframes lvIcSearch{0%,100%{transform:none}25%{transform:rotate(-12deg) translate(-.5px,-.5px)}60%{transform:rotate(9deg)}}
	@keyframes lvIcNod{0%,100%{transform:none}40%{transform:translateY(-1.6px)}70%{transform:translateY(.4px)}}
	@keyframes lvIcBeat{0%,100%{transform:none}30%{transform:scale(1.2)}55%{transform:scale(.94)}75%{transform:scale(1.06)}}
	@keyframes lvIcSlide{0%,100%{transform:none}45%{transform:translateX(2px)}}
	@keyframes lvIcTurn{0%{transform:none}100%{transform:rotate(90deg)}}
	@keyframes lvIcNudgeR{0%,100%{transform:none}45%{transform:translateX(3px)}}
	@keyframes lvIcNudgeL{0%,100%{transform:none}45%{transform:translateX(-3px)}}
	@keyframes lvIcNudgeD{0%,100%{transform:none}45%{transform:translateY(2.5px)}}
	@keyframes lvIcTilt{0%,100%{transform:none}30%{transform:rotate(-9deg)}65%{transform:rotate(5deg)}}
	@keyframes lvIcHop{0%,100%{transform:none}40%{transform:translateY(-2.2px)}70%{transform:translateY(.4px)}}
	@keyframes lvIcDrive{0%,100%{transform:none}45%{transform:translateX(3px)}70%{transform:translateX(-1px)}}
	@keyframes lvIcLift{0%,100%{transform:none}45%{transform:translateY(-2px)}}
	@keyframes lvIcSpark{0%{transform:none}50%{transform:rotate(36deg) scale(1.15)}100%{transform:rotate(72deg)}}
	@keyframes lvIcShake{0%,100%{transform:none}25%{transform:rotate(-10deg)}55%{transform:rotate(8deg)}80%{transform:rotate(-3deg)}}
	@keyframes lvIcSwing{0%,100%{transform:none}35%{transform:rotate(-14deg)}70%{transform:rotate(6deg)}}
	@keyframes lvIcBack{0%{transform:none}60%{transform:rotate(-45deg)}100%{transform:none}}
	@keyframes lvIcBlink{0%,100%{transform:none}45%{transform:scaleY(.1)}}
	@keyframes lvIcFlap{0%,100%{transform:none}45%{transform:scaleY(.6)}}
	@keyframes lvIcZoom{0%,100%{transform:none}45%{transform:scale(1.14)}}
	@keyframes lvIcDraw{0%{stroke-dashoffset:24}100%{stroke-dashoffset:0}}
	@keyframes lvIcFloat{0%,100%{transform:none}45%{transform:translateY(-2px)}}
	@keyframes lvIcGemBig{0%,100%{transform:none}40%{transform:scale(1.14) rotate(-6deg)}70%{transform:scale(.97) rotate(2deg)}}
	@keyframes lvIcShine{0%,100%{opacity:1}40%{opacity:.25}}
	@keyframes lvIcUp{0%,100%{transform:none}45%{transform:translateY(-3px)}}
}

