/* =========================================================================
   FESTGO theme — design system
   Spigen-inspired: clean, high-contrast, generous whitespace, product-first.
   All colours are CSS variables so the palette can be re-themed later (and
   overridden from ACF / the Customizer without touching this file).
   ========================================================================= */

/* ---- Fonts (self-hosted). Drop the .woff2 files in /assets/fonts/. -------- */
@font-face {
	font-family: 'DM Sans';
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url('../fonts/dm-sans.woff2') format('woff2');
}
@font-face {
	font-family: 'DM Sans';
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url('../fonts/dm-sans-700.woff2') format('woff2');
}
@font-face {
	font-family: 'Inter';
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url('../fonts/inter-400.woff2') format('woff2');
}

/* ---- Design tokens ------------------------------------------------------- */
:root {
	--c-bg: #ffffff;
	--c-surface: #f5f5f4;
	--c-surface-2: #ececea;
	--c-ink: #111214;
	--c-ink-2: #45484d;
	--c-muted: #8a8d93;
	--c-line: #e5e5e3;
	--c-accent: #111214;        /* primary action colour — swap later */
	--c-accent-ink: #ffffff;
	--c-sale: #d0342c;
	--c-success: #1c7c46;
	--c-star: #f5a623;

	--font-head: 'DM Sans', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
	--font-body: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;

	--container: 1320px;
	--gutter: clamp(16px, 4vw, 40px);
	--radius: 12px;
	--radius-sm: 8px;
	--radius-pill: 999px;

	--shadow-sm: 0 1px 2px rgba(17, 18, 20, .06);
	--shadow: 0 6px 24px rgba(17, 18, 20, .08);
	--shadow-lg: 0 20px 60px rgba(17, 18, 20, .16);

	--header-h: 72px;
	--topbar-h: 38px;
	--ease: cubic-bezier(.4, 0, .2, 1);
}

/* ---- Reset / base -------------------------------------------------------- */
/* Hide Astra's built-in scroll-to-top button (we don't use it). */
div#ast-scroll-top { display: none !important; }
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0;
	background: var(--c-bg);
	color: var(--c-ink);
	font-family: var(--font-body);
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	/* Sticky footer: short pages (404, empty cart) must not leave white space
	   below the footer. Fixed-position children (drawers, admin bar) are out of
	   flow and unaffected. */
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}
#content.site-content { flex: 1 0 auto; }
footer.site-footer { flex: none; }
h1, h2, h3, h4, h5 { font-family: var(--font-head); font-weight: 700; line-height: 1.15; margin: 0 0 .5em; letter-spacing: -.01em; }
h1 { font-size: clamp(1.9rem, 4vw, 3rem); }
h2 { font-size: clamp(1.5rem, 3vw, 2.1rem); }
h3 { font-size: clamp(1.15rem, 2vw, 1.4rem); }
a { color: inherit; text-decoration: none; transition: color .15s var(--ease); }
a:hover { color: var(--c-ink-2); }
img { max-width: 100%; height: auto; display: block; }
/* The hidden attribute must always win, even over components that set an
   explicit display (flex/grid). */
[hidden] { display: none !important; }
button { font: inherit; cursor: pointer; }
ul { margin: 0; padding: 0; list-style: none; }
:focus-visible { outline: 2px solid var(--c-ink); outline-offset: 2px; }

/* ---- Layout -------------------------------------------------------------- */
.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }
/* Shop / category archive uses a near-full-width container (capped) so the grid
   breathes on large screens. */
.container--shop { max-width: 2560px; }
.section { padding-block: clamp(40px, 6vw, 80px); }
.section--tight { padding-block: clamp(28px, 4vw, 48px); }
.section__head { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 24px; }
.section__head h2 { margin: 0; }
.section__link { font-family: var(--font-head); font-weight: 600; font-size: .95rem; display: inline-flex; align-items: center; gap: 6px; }
.grid { display: grid; gap: clamp(14px, 2vw, 28px); }

/* ---- Icons --------------------------------------------------------------- */
.icon { display: inline-block; vertical-align: middle; flex: none; }

/* ---- Buttons ------------------------------------------------------------- */
.btn,
.button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	font-family: var(--font-head); font-weight: 600; font-size: .95rem;
	padding: 13px 22px; border-radius: var(--radius-pill); border: 1px solid transparent;
	background: var(--c-accent); color: var(--c-accent-ink); line-height: 1;
	transition: transform .12s var(--ease), background .15s var(--ease), opacity .15s;
}
.btn:hover, .button:hover,
.woocommerce a.button:hover, .woocommerce button.button:hover,
.woocommerce button.button.alt:hover { background: #000; color: #fff; transform: translateY(-1px); }
.btn:active { transform: translateY(0); }
.btn--ghost { background: transparent; color: var(--c-ink); border-color: var(--c-line); }
.btn--ghost:hover { background: var(--c-ink); color: #fff; }
.btn--block { width: 100%; }
.btn--lg { padding: 16px 28px; font-size: 1rem; }
.btn[disabled], .btn.is-loading { opacity: .55; pointer-events: none; }

/* ---- Badges -------------------------------------------------------------- */
.badge { display: inline-block; font-family: var(--font-head); font-weight: 700; font-size: .68rem; letter-spacing: .04em; text-transform: uppercase; padding: 5px 9px; border-radius: var(--radius-sm); }
.badge--new { background: var(--c-ink); color: #fff; }
.badge--sale { background: var(--c-sale); color: #fff; }
.badge--soon { background: #bfeef0; color: #063b3d; }

/* =========================================================================
   Topbar + Header
   ========================================================================= */
.topbar { background: var(--c-ink); color: #fff; font-size: .82rem; }
.topbar__inner { min-height: var(--topbar-h); display: flex; align-items: center; justify-content: center; gap: 24px; text-align: center; }
.topbar a { color: #fff; opacity: .85; }
.topbar a:hover { opacity: 1; }

.site-header { position: sticky; top: 0; z-index: 60; background: rgba(255,255,255,.92); backdrop-filter: saturate(1.4) blur(10px); border-bottom: 1px solid var(--c-line); }
.site-header__inner { min-height: var(--header-h); display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: clamp(12px, 3vw, 32px); }
.site-brand { font-family: var(--font-head); font-weight: 700; font-size: 1.5rem; letter-spacing: -.02em; }
.site-brand img { max-height: 34px; width: auto; }

/* Primary nav */
.primary-nav { display: flex; justify-content: center; }
.primary-nav ul { display: flex; gap: clamp(14px, 2vw, 30px); }
.primary-nav a { font-family: var(--font-head); font-weight: 600; font-size: .9rem; padding: 8px 0; position: relative; }
.primary-nav > ul > li > a::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--c-ink); transform: scaleX(0); transform-origin: left; transition: transform .2s var(--ease); }
.primary-nav > ul > li:hover > a::after,
.primary-nav .current-menu-item > a::after { transform: scaleX(1); }
/* Dropdowns */
.primary-nav .sub-menu { position: absolute; top: 100%; left: 0; min-width: 220px; background: #fff; border: 1px solid var(--c-line); border-radius: var(--radius-sm); box-shadow: var(--shadow); padding: 8px; opacity: 0; visibility: hidden; transform: translateY(6px); transition: .18s var(--ease); z-index: 5; }
.primary-nav li { position: relative; }
.primary-nav li:hover > .sub-menu { opacity: 1; visibility: visible; transform: translateY(0); }
.primary-nav .sub-menu a { display: block; padding: 9px 12px; border-radius: 6px; font-weight: 500; }
.primary-nav .sub-menu a:hover { background: var(--c-surface); }

/* -------------------------------------------------------------------------
   Mega menu (auto-built from product_cat: brands → series → models)
   Full-width hover panels on desktop; accordion in the drawer on mobile.
   ------------------------------------------------------------------------- */
.mega-nav { align-items: center; }
.mega-item__link { display: inline-flex; align-items: center; gap: 4px; }
.mega-item__link .icon { transition: transform .2s var(--ease); }
.mega-item.has-mega:hover > .mega-item__link .icon,
.mega-item.has-mega:focus-within > .mega-item__link .icon { transform: rotate(180deg); }
.mega-item__link--accent { color: var(--c-sale); }
.mega-item__link--accent::after { background: var(--c-sale) !important; }

/* The panel anchors to the header (full width), so the item must not create
   its own positioning context. */
.mega-item.has-mega { position: static; }

.mega {
	position: absolute;
	left: 0; right: 0;
	top: 100%;
	background: #fff;
	border-top: 1px solid var(--c-line);
	border-bottom: 1px solid var(--c-line);
	box-shadow: var(--shadow-lg);
	padding: clamp(20px, 3vw, 36px) 0;
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	transition: opacity .22s var(--ease), transform .22s var(--ease), visibility .22s var(--ease);
	transition-delay: .12s;              /* forgiving hover intent */
	z-index: 55;
	max-height: calc(100vh - var(--header-h) - var(--topbar-h));
	overflow-y: auto;
}
.mega-item.has-mega:hover > .mega,
.mega-item.has-mega:focus-within > .mega {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
	transition-delay: 0s;
}
.mega__cols {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap: clamp(14px, 1.6vw, 26px) clamp(20px, 3vw, 44px);
	align-items: start;
}
/* Single-series brands (Google, OnePlus) flow models across columns.
   Two paths: the auto menu adds .mega--flat; the WP-menu walker relies on
   :has() to detect a lone column (degrades to one column on old browsers). */
.mega--flat .mega__cols,
.mega__cols:has(> .mega-col:only-child) { display: block; }
.mega--flat .mega-col__list,
.mega__cols:has(> .mega-col:only-child) .mega-col__list { display: block; columns: 4 200px; column-gap: clamp(20px, 3vw, 44px); }
.mega--flat .mega-col__list li,
.mega__cols:has(> .mega-col:only-child) .mega-col__list li { break-inside: avoid; }

.mega .mega-col__title {
	display: block;
	font-family: var(--font-head);
	font-weight: 700;
	font-size: .95rem;
	color: var(--c-ink);
	margin-bottom: 10px;
	padding: 0 0 8px;
	border-bottom: 1px solid var(--c-line);
}
.mega .mega-col__title:hover { color: var(--c-accent); }
.mega .mega-col__list { display: flex; flex-direction: column; gap: 0; }
.mega .mega-col__list a {
	display: block;
	padding: 5px 0;
	font-family: var(--font-body);
	font-weight: 500;
	font-size: .875rem;
	color: var(--c-ink-2);
	transition: color .15s var(--ease), padding-left .15s var(--ease);
}
.mega .mega-col__list a::after { content: none !important; }   /* no underline swipe here */
.mega .mega-col__list a:hover { color: var(--c-ink); padding-left: 5px; }

/* Mobile mega (inside the nav drawer) — accordion */
.mobile-mega { display: flex; flex-direction: column; }
.mobile-mega__brand { border-bottom: 1px solid var(--c-line); }
.mobile-mega__toggle {
	width: 100%;
	display: flex; align-items: center; justify-content: space-between; gap: 8px;
	padding: 14px 2px;
	background: none; border: 0; cursor: pointer;
	font-family: var(--font-head); font-weight: 600; font-size: 1.02rem;
	color: var(--c-ink); text-align: left;
}
.mobile-mega__toggle .icon { flex: none; transition: transform .2s var(--ease); }
.mobile-mega__toggle[aria-expanded="true"] .icon { transform: rotate(180deg); }
.mobile-mega__toggle--sub { font-size: .95rem; font-weight: 500; padding: 11px 2px 11px 12px; }
.mobile-mega__panel, .mobile-mega__list { display: none; }
.mobile-mega__panel.is-open, .mobile-mega__list.is-open { display: block; }
.mobile-mega__panel { padding-left: 8px; }
.mobile-mega__group { border-top: 1px solid var(--c-line); }
.mobile-mega__list { padding: 2px 0 10px 20px; }
.mobile-mega__list a { display: block; padding: 8px 4px; color: var(--c-ink-2); font-size: .92rem; }
.mobile-mega__list a:hover { color: var(--c-ink); }
.mobile-mega__brandlink, .mobile-mega__grouplink { display: block; padding: 14px 2px; font-family: var(--font-head); font-weight: 600; }
.mobile-mega__grouplink { padding-left: 12px; font-weight: 500; }

/* Header actions */
.header-actions { display: flex; align-items: center; gap: clamp(6px, 1.4vw, 14px); justify-self: end; }
.header-action { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: var(--radius-pill); color: var(--c-ink); background: transparent; border: 0; }
.header-action:hover { background: var(--c-surface); }
.header-action__badge { position: absolute; top: 4px; right: 2px; min-width: 18px; height: 18px; padding: 0 4px; border-radius: 999px; background: var(--c-accent); color: #fff; font-size: .68rem; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.nav-toggle { display: none; }

/* -------------------------------------------------------------------------
   Search overlay (icon → full-width live search)
   ------------------------------------------------------------------------- */
.search-overlay {
	position: fixed;
	inset: 0;
	z-index: 200;
	background: rgba(17, 18, 20, .42);
	opacity: 0;
	visibility: hidden;
	transition: opacity .2s var(--ease), visibility .2s var(--ease);
}
.search-overlay.is-open { opacity: 1; visibility: visible; }

.search-overlay__sheet {
	background: #fff;
	box-shadow: var(--shadow-lg);
	display: flex;
	flex-direction: column;
	max-height: 92vh;
	transform: translateY(-14px);
	transition: transform .24s var(--ease);
}
.search-overlay.is-open .search-overlay__sheet { transform: none; }

.search-overlay__bar { border-bottom: 1px solid var(--c-line); }
.search-form {
	display: flex;
	align-items: center;
	gap: 10px;
	width: min(var(--container), 100%);
	margin-inline: auto;
	padding: clamp(14px, 2.4vw, 22px) var(--gutter);
}
.search-form__icon { display: inline-flex; color: var(--c-muted); flex: none; }
.search-form__input {
	flex: 1 1 auto;
	border: 0;
	outline: 0;
	background: transparent;
	font-family: var(--font-head);
	font-size: clamp(1.1rem, 2.4vw, 1.5rem);
	color: var(--c-ink);
	min-width: 0;
}
.search-form__clear, .search-form__submit {
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px; height: 42px;
	border: 0;
	background: transparent;
	color: var(--c-ink-2);
	border-radius: var(--radius-pill);
	cursor: pointer;
}
.search-form__clear:hover, .search-form__submit:hover { background: var(--c-surface); color: var(--c-ink); }

.search-overlay__panel { overflow-y: auto; overflow-x: hidden; }
.search-overlay__panel > .container { padding-top: 18px; padding-bottom: 22px; }
.search-results { min-height: 4px; transition: opacity .15s var(--ease); }
.search-results.is-loading { opacity: .5; }
.search-results__head { font-family: var(--font-head); font-weight: 700; font-size: .95rem; margin-bottom: 8px; }
.search-results__list { display: flex; flex-direction: column; }

.search-result {
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 10px 6px;
	border-radius: var(--radius-sm);
	color: var(--c-ink);
	transition: background .15s var(--ease);
}
.search-result:hover { background: var(--c-surface); }
.search-result__img { flex: none; width: 56px; height: 56px; border-radius: var(--radius-sm); overflow: hidden; background: var(--c-surface); }
.search-result__img img { width: 100%; height: 100%; object-fit: cover; }
.search-result__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.search-result__title { font-weight: 600; font-size: .98rem; }
.search-result__price { color: var(--c-ink-2); font-size: .9rem; }
.search-result__price del { color: var(--c-muted); font-weight: 400; margin-right: 6px; }
.search-result__price ins { text-decoration: none; color: var(--c-sale); font-weight: 700; }

.search-results__empty { padding: 24px 6px; color: var(--c-ink-2); }
.search-results__more {
	display: inline-block;
	margin-top: 12px;
	padding: 4px 6px;
	font-family: var(--font-head);
	font-weight: 600;
	color: var(--c-accent);
	border-bottom: 2px solid transparent;
}
.search-results__more:hover { border-bottom-color: var(--c-accent); }

/* =========================================================================
   Hero
   ========================================================================= */
.hero { position: relative; }
.hero__slider { display: flex; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scrollbar-width: none; }
.hero__slider::-webkit-scrollbar { display: none; }
.hero__slide { position: relative; flex: 0 0 100%; scroll-snap-align: start; min-height: clamp(560px, 55vw, 800px); display: grid; align-items: center; background: var(--c-surface); overflow: hidden; }
.hero__slide img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* Scrim only when there's a background image, so text stays readable over any photo. */
.hero__slide--has-image::before { content: ''; position: absolute; inset: 0; z-index: 1; background: linear-gradient(90deg, rgba(0,0,0,.62) 0%, rgba(0,0,0,.32) 42%, rgba(0,0,0,0) 72%); }
.hero__content { position: relative; z-index: 2; padding: var(--gutter); max-width: 560px; }
.hero__content h1 { margin-bottom: .3em; }
.hero__content p { font-size: 1.1rem; color: var(--c-ink-2); margin-bottom: 1.4em; }
.hero__slide--has-image .hero__content { color: #fff; }
.hero__slide--has-image .hero__content h1 { color: #fff; }
.hero__slide--has-image .hero__content p { color: rgba(255,255,255,.92); }
.hero__dots { position: absolute; bottom: 18px; left: 0; right: 0; display: flex; justify-content: center; gap: 8px; z-index: 3; }
.hero__dot { width: 8px; height: 8px; border-radius: 999px; background: rgba(17,18,20,.25); border: 0; padding: 0; }
.hero__dot.is-active { background: var(--c-ink); width: 22px; }

/* =========================================================================
   Category tiles
   ========================================================================= */
/* Columns follow the number of categories (set inline via --cat-count); fills the full width. */
.cat-tiles { grid-template-columns: repeat(var(--cat-count, 6), minmax(0, 1fr)); }
.cat-tile { text-align: center; }
.cat-tile__img { aspect-ratio: 1; background: var(--c-surface); border-radius: var(--radius); display: grid; place-items: center; overflow: hidden; margin-bottom: 10px; transition: transform .2s var(--ease); }
.cat-tile:hover .cat-tile__img { transform: translateY(-3px); box-shadow: var(--shadow); }
.cat-tile__img img { width: 100%; height: 100%; object-fit: cover; }
.cat-tile span { font-family: var(--font-head); font-weight: 600; font-size: .88rem; }

/* =========================================================================
   Promo banner
   ========================================================================= */
.promo { background: var(--c-ink); color: #fff; border-radius: var(--radius); padding: clamp(20px, 4vw, 32px); display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.promo h3 { color: #fff; margin: 0; }
.promo .btn { background: #fff; color: var(--c-ink); }
.promo .btn:hover { background: var(--c-surface); color: var(--c-ink); }

/* =========================================================================
   Product card + sliders
   ========================================================================= */
.product-slider { position: relative; }
.product-track,
.products-grid.is-slider { display: flex; gap: clamp(12px, 1.6vw, 22px); overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 6px; align-items: stretch; }
.product-track::-webkit-scrollbar { display: none; }
.product-track > .product-card { flex: 0 0 clamp(220px, 24vw, 300px); scroll-snap-align: start; }

.slider-nav { display: flex; gap: 8px; flex: none; }
.slider-nav button { width: 40px; height: 40px; border-radius: 999px; border: 1px solid var(--c-line); background: #fff; color: var(--c-ink); display: grid; place-items: center; flex: none; }
.slider-nav button:hover { background: var(--c-ink); color: #fff; }
.slider-nav button[disabled] { opacity: .35; pointer-events: none; }
.slider-nav button[data-slide="prev"] .icon { transform: rotate(180deg); }

/* Keep slider tracks from ever spilling past their container. */
.product-track, .cards-track { max-width: 100%; }
.product-track > .product-card { flex: 0 0 clamp(200px, 21vw, 250px); }

.product-card { position: relative; display: flex; flex-direction: column; height: 100%; }
.product-card__media { position: relative; aspect-ratio: 1; background: #fff; border-radius: var(--radius); overflow: hidden; margin-bottom: 14px; display: grid; place-items: center; }
.product-card__media img { width: 100%; height: 100%; object-fit: contain; transition: transform .45s var(--ease); }
.product-card:hover .product-card__media img { transform: scale(1.05); }
.product-card__badges { position: absolute; top: 12px; left: 12px; display: flex; flex-direction: column; gap: 6px; z-index: 2; }
.product-card__fav { position: absolute; top: 12px; right: 12px; z-index: 2; width: 36px; height: 36px; border-radius: 999px; background: rgba(255,255,255,.92); border: 0; display: grid; place-items: center; color: var(--c-ink); opacity: 0; transform: translateY(-4px); transition: .18s var(--ease); }
.product-card:hover .product-card__fav { opacity: 1; transform: translateY(0); }
/* Reserve two lines so ratings + price line up across cards of different name length. */
.product-card__title { font-family: var(--font-head); font-weight: 600; font-size: .95rem; line-height: 1.4; margin: 0 0 7px; min-height: 2.66em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.product-card__title a { color: var(--c-ink); }
.product-card__title a:hover { color: var(--c-ink-2); }
.product-card__meta { color: var(--c-muted); font-size: .82rem; margin-bottom: 6px; }
/* Rating: always 5 stars — gold when the product has reviews, grey otherwise. */
.product-card__rating { display: flex; align-items: center; gap: 2px; color: #d9d9d5; margin: 0 0 9px; }
.product-card__rating.is-rated { color: var(--c-star); }
.product-card__rating svg { width: 14px; height: 14px; }
.product-card__rating-count { color: var(--c-muted); font-size: .76rem; margin-left: 5px; }
.product-card__price { font-family: var(--font-head); font-weight: 700; font-size: 1rem; display: flex; gap: 8px; align-items: baseline; margin-top: auto; }
.product-card__price del { color: var(--c-muted); font-weight: 500; font-size: .88rem; }
.product-card__price ins { text-decoration: none; color: var(--c-sale); }
/* Colour swatches: click to swap the photo (when a variation image exists). */
.product-card__swatches { display: flex; flex-wrap: wrap; gap: 7px; margin: 12px 0 0; }
.swatch-dot { width: 18px; height: 18px; border-radius: 999px; border: 1px solid rgba(0,0,0,.15); padding: 0; background-size: cover; background-position: center; cursor: default; transition: transform .16s var(--ease), box-shadow .16s var(--ease); }
.product-card__swatches .swatch-dot[data-photo] { cursor: pointer; }
.product-card__swatches .swatch-dot[data-photo]:hover { transform: scale(1.18); box-shadow: 0 0 0 1px #fff, 0 0 0 2.5px var(--c-ink); }
.product-card__swatches .swatch-dot.is-active { outline: 1.5px solid var(--c-ink); outline-offset: 2px; }
.product-rating { display: inline-flex; align-items: center; gap: 4px; color: var(--c-star); font-size: .8rem; }
.product-rating .count { color: var(--c-muted); }
/* Saved-to-wishlist heart: stays visible and fills in. */
.product-card__fav.is-active { opacity: 1; transform: none; color: var(--c-sale); }
.product-card__fav.is-active svg { fill: currentColor; }
/* Touch devices have no hover, so the reveal-on-hover heart is unreachable —
   always show it below 768px. */
@media (max-width: 768px) {
	.product-card__fav { opacity: 1; transform: none; }
	/* Show the full product name on narrow screens instead of clamping it to
	   two lines (long phone-model names were getting cut with an ellipsis). */
	.product-card__title { min-height: 0; display: block; -webkit-line-clamp: none; overflow: visible; }
}

/* Single product: add-to-wishlist button under the add-to-cart form. Shares the
   [data-wishlist] toggle; .is-active (set by JS when saved) swaps the label. */
.product-wishlist { display: inline-flex; align-items: center; gap: 9px; margin-top: 14px; padding: 11px 20px; border: 1px solid var(--c-line); border-radius: var(--radius-pill); background: #fff; color: var(--c-ink); font: inherit; font-weight: 600; font-size: .92rem; cursor: pointer; transition: .18s var(--ease); }
.product-wishlist:hover { border-color: var(--c-ink); }
.product-wishlist svg { width: 18px; height: 18px; transition: .18s var(--ease); }
.product-wishlist .product-wishlist__label--added,
.product-wishlist.is-active .product-wishlist__label--add { display: none; }
.product-wishlist.is-active .product-wishlist__label--added { display: inline; }
.product-wishlist.is-active { border-color: var(--c-sale); color: var(--c-sale); }
.product-wishlist.is-active svg { fill: currentColor; }

/* Wishlist: hide the header badge when empty; page layout. */
.js-wishlist-count[data-count="0"] { display: none; }
/* The default page template renders the content full-width, so give the
   wishlist its own container to line up with the (contained) page title. */
.wishlist { max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }
.wishlist__bar { display: flex; align-items: center; justify-content: flex-end; gap: 12px; margin-bottom: 22px; min-height: 44px; }
.wishlist__share { display: inline-flex; align-items: center; gap: 8px; }
.wishlist__copied { color: var(--c-success); font-size: .88rem; font-weight: 600; }
.wishlist__grid ul.products { margin: 0; }
.wishlist__empty { text-align: center; padding: clamp(40px, 8vw, 90px) 20px; display: grid; gap: 18px; justify-items: center; }
.wishlist__empty p { color: var(--c-muted); font-size: 1.05rem; }

/* =========================================================================
   Shop / archive + filters (FacetWP-ready markup)
   ========================================================================= */
.shop-layout { display: grid; grid-template-columns: 280px 1fr; gap: clamp(24px, 3vw, 48px); align-items: start; }
.shop-toolbar { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 24px; padding-bottom: 20px; border-bottom: 1px solid var(--c-line); }
.shop-toolbar h1 { font-size: clamp(1.8rem, 3vw, 2.6rem); line-height: 1.1; }
.shop-toolbar__count { color: var(--c-muted); font-size: .9rem; }
.shop-order select { font: inherit; padding: 10px 16px; border: 1px solid var(--c-line); border-radius: var(--radius-pill); background: #fff; cursor: pointer; }

/* Sticky filter rail */
.filters { position: sticky; top: calc(var(--header-h) + 16px); }
.filters__group { border-bottom: 1px solid var(--c-line); }
.filters__toggle { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 18px 2px; background: none; border: 0; cursor: pointer; font-family: var(--font-head); font-weight: 700; font-size: .8rem; letter-spacing: .06em; text-transform: uppercase; color: var(--c-ink); }
.filters__chevron { flex: none; color: var(--c-muted); transition: transform .22s var(--ease); }
.filters__group.is-collapsed .filters__chevron { transform: rotate(-90deg); }
.filters__body { padding: 0 2px 20px; display: grid; gap: 12px; }
.filters__group.is-collapsed .filters__body { display: none; }
.filters__list { display: flex; flex-direction: column; gap: 2px; max-height: 264px; overflow-y: auto; overflow-x: hidden; margin: 0 -2px; padding: 0 2px; }

/* Custom checkbox rows */
.facet-check { position: relative; display: flex; align-items: center; gap: 11px; font-size: .9rem; cursor: pointer; padding: 6px; border-radius: var(--radius-sm); transition: background .15s; }
.facet-check:hover { background: var(--c-surface); }
.facet-check input { position: absolute; opacity: 0; width: 0; height: 0; }
.facet-check__box { flex: none; width: 19px; height: 19px; border: 1.5px solid var(--c-line); border-radius: 5px; display: grid; place-items: center; transition: .15s var(--ease); }
.facet-check__box::after { content: ''; width: 5px; height: 9px; margin-top: -2px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg) scale(0); transition: transform .15s var(--ease); }
.facet-check input:checked + .facet-check__box { background: var(--c-ink); border-color: var(--c-ink); }
.facet-check input:checked + .facet-check__box::after { transform: rotate(45deg) scale(1); }
.facet-check input:focus-visible + .facet-check__box { outline: 2px solid var(--c-ink); outline-offset: 2px; }
.facet-check__label { line-height: 1.3; }

.facet-search input { width: 100%; padding: 10px 12px; border: 1px solid var(--c-line); border-radius: var(--radius-sm); font: inherit; }
.facet-search input:focus { outline: none; border-color: var(--c-ink); }

/* Colour swatches (solid or texture image) */
.facet-swatches { display: flex; flex-wrap: wrap; gap: 10px; }
.facet-swatch { position: relative; width: 30px; height: 30px; border-radius: 999px; border: 1px solid rgba(0,0,0,.12); cursor: pointer; background-size: cover; background-position: center; }
.facet-swatch input { position: absolute; inset: 0; opacity: 0; cursor: pointer; margin: 0; }
.facet-swatch.is-checked { outline: 2px solid var(--c-ink); outline-offset: 2px; }

/* Pills */
.facet-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.facet-pill { position: relative; border: 1px solid var(--c-line); border-radius: var(--radius-pill); padding: 8px 14px; font-size: .84rem; cursor: pointer; background: #fff; transition: .15s; }
.facet-pill:hover { border-color: var(--c-ink); }
.facet-pill input { position: absolute; opacity: 0; }
.facet-pill.is-checked { background: var(--c-ink); color: #fff; border-color: var(--c-ink); }

/* Price: dual-thumb slider + manual from/to inputs */
.price-slider { position: relative; height: 26px; margin: 2px 6px 6px; }
.price-slider__rail { position: absolute; top: 50%; left: 0; right: 0; height: 4px; transform: translateY(-50%); background: var(--c-surface-2); border-radius: 999px; }
.price-slider__fill { position: absolute; top: 0; bottom: 0; left: 0; right: 0; background: var(--c-ink); border-radius: 999px; }
.price-slider__input { position: absolute; top: 0; left: 0; width: 100%; height: 26px; margin: 0; background: none; pointer-events: none; -webkit-appearance: none; appearance: none; }
.price-slider__input::-webkit-slider-thumb { -webkit-appearance: none; pointer-events: auto; width: 18px; height: 18px; border-radius: 999px; background: #fff; border: 2px solid var(--c-ink); box-shadow: var(--shadow); cursor: pointer; }
.price-slider__input::-moz-range-thumb { pointer-events: auto; width: 18px; height: 18px; border-radius: 999px; background: #fff; border: 2px solid var(--c-ink); cursor: pointer; }
.price-slider__input::-webkit-slider-runnable-track { background: none; border: 0; }
.price-slider__input::-moz-range-track { background: none; border: 0; }
.range { display: flex; align-items: center; gap: 10px; }
.range__field { position: relative; flex: 1; display: flex; align-items: center; }
.range__field input { width: 100%; padding: 9px 22px 9px 10px; border: 1px solid var(--c-line); border-radius: var(--radius-sm); font: inherit; font-size: .88rem; }
.range__field input:focus { outline: none; border-color: var(--c-ink); }
.range__cur { position: absolute; right: 9px; color: var(--c-muted); font-size: .85rem; pointer-events: none; }
.range__dash { color: var(--c-muted); }

.filters__reset { margin-top: 20px; }
.btn--block { display: flex; width: 100%; justify-content: center; }

/* Active-filter chips (above the grid) */
.active-filters { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 22px; }
.active-filters[hidden] { display: none; }
.chip { display: inline-flex; align-items: center; gap: 7px; background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--radius-pill); padding: 7px 14px; font-size: .84rem; font-weight: 600; color: var(--c-ink); cursor: pointer; transition: .15s; }
.chip:hover { border-color: var(--c-ink); }
.chip__x { font-size: 1.05rem; line-height: 1; color: var(--c-muted); }
.chip:hover .chip__x { color: var(--c-ink); }
.chip--clear { background: none; border: 0; color: var(--c-muted); text-decoration: underline; padding: 7px 6px; }

/* Only the product <ul> is a grid — NOT the `related products` <section>,
   which also carries a `.products` class (that made the heading + items sit
   side by side). */
ul.products { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: clamp(16px, 2vw, 30px) clamp(14px, 1.6vw, 24px); margin: 0; padding: 0; list-style: none; }
.filters-open-btn { display: none; position: relative; }
/* Active-filter count badge on the mobile "Filtrai" button. */
.filters-open-btn__badge {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 20px; height: 20px; margin-left: 2px; padding: 0 6px;
	border-radius: var(--radius-pill); background: var(--c-accent); color: #fff;
	font-size: .72rem; font-weight: 700; line-height: 1;
}
.filters-open-btn__badge[hidden] { display: none; }
/* Drawer head + sticky apply bar only matter on mobile (see media query). */
.filters .filters__head,
.filters__apply { display: none; }

/* Pagination */
.js-pagination[hidden] { display: none; }
.woocommerce-pagination { margin-top: 36px; }
.woocommerce-pagination ul { display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; }
.woocommerce-pagination a, .woocommerce-pagination span { display: grid; place-items: center; min-width: 40px; height: 40px; border-radius: 999px; border: 1px solid var(--c-line); color: var(--c-ink); text-decoration: none; }
.woocommerce-pagination a[data-page] { cursor: pointer; transition: border-color .15s, background .15s, color .15s; }
.woocommerce-pagination a[data-page]:hover { border-color: var(--c-ink); }
/* !important: WooCommerce core CSS (active because <body> carries the
 * "woocommerce" class) targets span.current with higher specificity and would
 * otherwise override only the background — leaving a white number on white. */
.woocommerce-pagination .current { background: var(--c-ink) !important; color: #fff !important; border-color: var(--c-ink) !important; }
.woocommerce-pagination .dots { border: none; }

/* =========================================================================
   Single product
   ========================================================================= */
.product-single { display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(24px, 4vw, 56px); align-items: start; }
.product-gallery { align-self: start; }
/* The gallery is tall (all photos), so the summary (buy box) sticks and follows
   as you scroll through the images — like Spigen. */
.product-summary { position: sticky; top: calc(var(--header-h) + 16px); align-self: start; }

/* WooCommerce forces `float` + `width:48%` on the gallery and summary, which
   fights our grid and squishes both columns to ~half their cell. Reset them to
   fill the grid cells. */
.product-single .woocommerce-product-gallery,
.product-single .summary,
.product-single .product-summary { width: 100% !important; float: none !important; margin: 0 !important; }

/* Static 2-column image grid (the flexslider is disabled in setup.php) —
   equal-size square photos, Spigen-style. */
.product-single .woocommerce-product-gallery__wrapper { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; width: 100% !important; margin: 0; transform: none !important; }
.product-single .woocommerce-product-gallery__image { width: 100% !important; margin: 0 !important; float: none !important; }
.product-single .woocommerce-product-gallery__image a { display: block; }
.product-single .woocommerce-product-gallery__image img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: var(--radius); background: #fff; display: block; }
.product-single .woocommerce-product-gallery .flex-control-thumbs { display: none; }
.product-single .woocommerce-product-gallery__trigger { z-index: 2; }
/* Product title: default h1 is far too large for the narrow summary column and
   breaks one word per line — cap it. */
.product-single .product_title { font-family: var(--font-head); font-weight: 700; font-size: clamp(1.5rem, 2.4vw, 2.1rem); line-height: 1.15; margin: 6px 0 14px; }
.product-summary .price { font-family: var(--font-head); font-weight: 700; font-size: 1.7rem; margin: 12px 0; }
.product-summary .price del { color: var(--c-muted); font-weight: 500; font-size: 1.1rem; margin-right: 8px; }
.summary-label { font-family: var(--font-head); font-weight: 600; font-size: .85rem; text-transform: uppercase; letter-spacing: .03em; color: var(--c-ink-2); margin: 18px 0 10px; }

.variations-swatches { margin: 6px 0 4px; }
.variations-swatches__label { font-size: .85rem; color: var(--c-ink-2); margin-bottom: 10px; }
.variations-swatches__label span { text-transform: uppercase; letter-spacing: .04em; font-weight: 600; font-size: .78rem; }
.variations-swatches__label .js-swatch-name { color: var(--c-ink); font-family: var(--font-head); }
.variations-swatches__label .js-swatch-name:not(:empty)::before { content: "|"; color: var(--c-line); margin: 0 8px; font-weight: 400; }
.variations-swatches__grid { display: flex; flex-wrap: wrap; gap: 10px; }
.variation-swatch { width: 42px; height: 42px; border-radius: 10px; border: 1px solid rgba(0,0,0,.14); cursor: pointer; position: relative; padding: 0; background-color: #fff; background-size: cover; background-position: center; transition: transform .12s var(--ease), box-shadow .12s var(--ease); }
.variation-swatch:hover { transform: translateY(-1px); }
.variation-swatch.is-active { border-color: var(--c-ink); box-shadow: 0 0 0 2px var(--c-ink); }
/* Light swatches need a visible edge when selected. */
.variation-swatch.is-active::after { content: ""; position: absolute; inset: 3px; border-radius: 6px; box-shadow: inset 0 0 0 2px #fff; }

/* WooCommerce variable-product form: drop the default table chrome and lay the
   attribute rows out as clean stacked blocks. */
.variations_form .variations,
.variations_form .variations tbody,
.variations_form .variations tr,
.variations_form .variations td,
.variations_form .variations th { display: block; width: auto; border: 0; padding: 0; margin: 0; }
.variations_form .variations tr + tr { margin-top: 18px; }
.variations_form .variations .label label { font-family: var(--font-head); font-weight: 600; font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; color: var(--c-ink-2); margin-bottom: 10px; display: block; }
.variations_form .variations td.value { position: relative; }
.variations_form .reset_variations { display: inline-block; margin-top: 8px; font-size: .8rem; color: var(--c-muted); text-decoration: underline; }

.single_variation_wrap { margin-top: 20px; }
.woocommerce-variation-price .price { font-family: var(--font-head); font-weight: 700; font-size: 1.5rem; color: var(--c-ink); display: block; margin-bottom: 6px; }
.woocommerce-variation-availability { font-size: .85rem; color: var(--c-ink-2); margin-bottom: 12px; }
.woocommerce-variation-add-to-cart { display: flex; align-items: stretch; gap: 12px; flex-wrap: wrap; }
.woocommerce-variation-add-to-cart.woocommerce-variation-add-to-cart-disabled { opacity: .55; }
/* Simple products: the whole cart form IS the qty + button row (variable
   products keep their table above the .woocommerce-variation-add-to-cart row). */
.product-summary form.cart:not(.variations_form) { display: flex; align-items: stretch; gap: 12px; flex-wrap: wrap; margin: 22px 0; }
/* Shared quantity + add-to-cart button styling for both product types. */
.product-summary .quantity { flex: 0 0 auto; margin: 0; }
.product-summary .quantity input.qty { width: 78px; height: 54px; text-align: center; border: 1px solid var(--c-line); border-radius: var(--radius-sm); font: inherit; -moz-appearance: textfield; }
.product-summary .quantity input.qty::-webkit-outer-spin-button,
.product-summary .quantity input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.product-summary .single_add_to_cart_button { flex: 1 1 220px; min-height: 54px; }

.qty-add { display: flex; gap: 12px; margin: 22px 0; }
.qty { display: inline-flex; align-items: center; border: 1px solid var(--c-line); border-radius: var(--radius-pill); overflow: hidden; }
.qty button { width: 44px; height: 48px; border: 0; background: #fff; font-size: 1.2rem; }
.qty input { width: 44px; text-align: center; border: 0; height: 48px; font: inherit; -moz-appearance: textfield; }
.qty input::-webkit-outer-spin-button, .qty input::-webkit-inner-spin-button { -webkit-appearance: none; }

/* Reassurance block under the add-to-cart button. */
.product-perks { margin-top: 24px; padding-top: 22px; border-top: 1px solid var(--c-line); display: grid; gap: 14px; }
/* Availability note. Client text (per-product "kada atvyksta" or the global
 * "kai prekės nėra") replaces WooCommerce's stock line via the
 * woocommerce_get_availability filter — for simple products and per variation.
 * Style that line as a calm bordered box instead of the bare red text. */
.product-summary p.stock,
.woocommerce-variation-availability p.stock { margin: 14px 0 0; padding: 12px 14px; background: var(--c-surface); border: 1px solid var(--c-line); border-left: 3px solid var(--c-accent); border-radius: var(--radius-sm); font-size: .92rem; line-height: 1.5; color: var(--c-ink); font-weight: 500; }
.product-summary p.stock.out-of-stock,
.woocommerce-variation-availability p.stock.out-of-stock { color: var(--c-ink); }

.product-perks__delivery { display: flex; align-items: center; gap: 10px; font-size: .92rem; color: var(--c-ink); }
.product-perks__delivery .icon { flex: none; color: var(--c-ink); }
.perk-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.perk-card { display: flex; gap: 14px; padding: 16px 18px; background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--radius); }
.perk-card__icon { flex: none; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 999px; background: #fff; border: 1px solid var(--c-line); color: var(--c-ink); }
.perk-card__body { display: grid; gap: 4px; }
.perk-card__body strong { font-family: var(--font-head); font-weight: 600; font-size: .98rem; color: var(--c-ink); }
.perk-card__body p { margin: 0; font-size: .86rem; line-height: 1.55; color: var(--c-ink-2); }
.perk-card .footer-payments { margin-top: 8px; }
.perk-card .pay-badge { filter: none; }

.product-tabs { margin-top: clamp(40px, 6vw, 72px); }
/* WooCommerce tab nav (ul.tabs.wc-tabs) styled as a clean underline nav. */
.product-tabs .wc-tabs, .product-tabs ul.tabs { display: flex; gap: 24px; list-style: none; margin: 0 0 24px; padding: 0; border-bottom: 1px solid var(--c-line); flex-wrap: wrap; }
.product-tabs ul.tabs li { margin: 0; }
.product-tabs ul.tabs li a { font-family: var(--font-head); font-weight: 600; padding: 12px 2px; display: inline-block; border-bottom: 2px solid transparent; color: var(--c-muted); }
.product-tabs ul.tabs li.active a, .product-tabs ul.tabs li a:hover { color: var(--c-ink); border-color: var(--c-ink); }
.product-tabs .woocommerce-Tabs-panel { max-width: 820px; line-height: 1.7; color: var(--c-ink-2); }
.product-tabs .woocommerce-Tabs-panel > h2:first-child { font-family: var(--font-head); font-size: 1.3rem; margin: 0 0 12px; color: var(--c-ink); }

/* Stacked Description / Reviews sections (replaces the WooCommerce tabs). */
.product-sections { margin-top: clamp(40px, 6vw, 72px); display: grid; gap: clamp(36px, 5vw, 60px); }
.product-section { max-width: 820px; }
.product-section__head { font-family: var(--font-head); font-weight: 700; font-size: clamp(1.4rem, 2.4vw, 1.9rem); margin: 0 0 18px; padding-bottom: 14px; border-bottom: 1px solid var(--c-line); }
.product-section .prose { color: var(--c-ink-2); line-height: 1.7; }
/* -------------------------------------------------------------------------
   CusRev (Customer Reviews for WooCommerce) — enhanced UI, restyled to match
   the store: our tokens, DM Sans headings, ink accent (not the plugin green),
   and field/button styling consistent with the rest of the product page. The
   "Add a review" button toggles the form open/closed (CusRev's own behaviour),
   so we must NOT force the form visible here.
   ------------------------------------------------------------------------- */
#atsiliepimai #reviews { max-width: 820px; }
#atsiliepimai .woocommerce-Reviews-title { display: none; }

/* Top row: average rating + "leave a review" trigger. */
#atsiliepimai .cr-ajax-reviews-nosummary { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin: 0 0 22px; }
#atsiliepimai .cr-nosummary-rating-cnt { display: inline-flex; align-items: center; gap: 10px; }
#atsiliepimai .cr-nosummary-rating-cnt svg { width: 30px; height: auto; }
#atsiliepimai .cr-nosummary-rating-val { font-family: var(--font-head); font-weight: 700; font-size: 1.5rem; color: var(--c-ink); line-height: 1; }
#atsiliepimai .cr-nosummary-rating-lbl { color: var(--c-muted); font-size: .9rem; }
#atsiliepimai .cr-nosummary-add { font-family: var(--font-head); font-weight: 700; font-size: .9rem; line-height: 1; padding: 13px 22px; border: 0; border-radius: var(--radius-pill); background: var(--c-accent); color: var(--c-accent-ink); cursor: pointer; transition: opacity .18s var(--ease); }
#atsiliepimai .cr-nosummary-add:hover { opacity: .85; }

/* Search + count/sort bar. */
#atsiliepimai .cr-ajax-search > div { display: flex; align-items: center; gap: 8px; border: 1px solid var(--c-line); border-radius: var(--radius-sm); padding: 0 12px; background: var(--c-bg); }
/* CusRev absolutely-positions the search/clear icons; pull them into the flex
   row so they sit beside the input instead of overlapping the placeholder. */
#atsiliepimai .cr-ajax-search-icon { position: static; flex: none; }
#atsiliepimai .cr-clear-input { position: static; flex: none; display: inline-flex; }
#atsiliepimai .cr-ajax-search input.cr-input-text { flex: 1; min-width: 0; border: 0; padding: 12px 22px; background: transparent; font: inherit; color: var(--c-ink); }
#atsiliepimai .cr-ajax-search input.cr-input-text:focus { outline: none; }
#atsiliepimai .cr-count-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 18px 0 4px; padding: 0; background: none; border-bottom: 1px solid var(--c-line); padding-bottom: 12px; }
#atsiliepimai .cr-count-row-count { color: var(--c-muted); font-size: .88rem; }
#atsiliepimai .cr-ajax-reviews-sort { border: 1px solid var(--c-line); border-radius: var(--radius-sm); padding: 7px 10px; font: inherit; font-size: .85rem; color: var(--c-ink); background: var(--c-bg); cursor: pointer; }

/* Review list. */
#atsiliepimai ol.commentlist { margin: 0; padding: 0; list-style: none; }
#atsiliepimai ol.commentlist li.review { padding: 22px 0; margin: 0; border-bottom: 1px solid var(--c-line); }
#atsiliepimai .comment_container { display: grid; grid-template-columns: 48px 1fr; gap: 14px; }
#atsiliepimai .cr-avatar { width: 48px; height: 48px; border-radius: var(--radius-pill); }
#atsiliepimai .cr-comment-text { min-width: 0; }
#atsiliepimai .cr-meta-author-title .woocommerce-review__author { font-family: var(--font-head); font-weight: 700; color: var(--c-ink); }
#atsiliepimai .woocommerce-review__published-date { color: var(--c-muted); font-size: .82rem; white-space: nowrap; flex: none; }
#atsiliepimai .cr-comment-text .meta { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 0 0 6px; }
#atsiliepimai .cr-meta-author-featured-date { flex: 1 1 auto; min-width: 0; }
#atsiliepimai .crstar-rating-svg { color: var(--c-star); margin: 2px 0 8px; }
#atsiliepimai .crstar-rating-svg svg { width: 17px; height: 17px; }
#atsiliepimai .cr-comment-text .description { color: var(--c-ink-2); line-height: 1.6; }
#atsiliepimai .cr-comment-text .description p { margin: 0; }

/* Leave-a-review form. */
#atsiliepimai .cr-review-form-wrap { border: 1px solid var(--c-line); border-radius: var(--radius); padding: clamp(18px, 3vw, 28px); margin-top: 24px; }
#atsiliepimai .cr-review-form-nav { display: flex; align-items: center; justify-content: space-between; margin: 0 0 18px; padding-bottom: 14px; border-bottom: 1px solid var(--c-line); padding-top: 14px; }
#atsiliepimai .cr-nav-left { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-head); font-weight: 700; color: var(--c-ink); }
#atsiliepimai .cr-nav-left svg path { stroke: var(--c-ink); }
#atsiliepimai .cr-nav-right { cursor: pointer; }
#atsiliepimai .cr-review-form-item { display: flex; align-items: center; gap: 12px; margin: 0 0 20px; }
#atsiliepimai .cr-review-form-item img { width: 52px; height: 52px; object-fit: cover; border-radius: var(--radius-sm); }
#atsiliepimai .cr-review-form-item span { font-weight: 600; color: var(--c-ink); }
#atsiliepimai .cr-review-form-rating-label,
#atsiliepimai .cr-review-form-lbl { font-family: var(--font-head); font-weight: 700; font-size: .9rem; color: var(--c-ink); margin: 0 0 8px; }
#atsiliepimai .cr-review-form-comment,
#atsiliepimai .cr-review-form-ne { margin-top: 18px; }
#atsiliepimai .cr-review-form-ne { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
#atsiliepimai .cr-review-form-name,
#atsiliepimai .cr-review-form-email { min-width: 0; width: 100%;}
.woocommerce-js #reviews #review_form {
    padding: 0 !important;
}
/* CusRev sets a narrow fixed width on the name/email inputs — force them to fill
   their grid column so the two fields line up with the textarea above. */
#atsiliepimai .cr-review-form-comment-txt,
#atsiliepimai .cr-review-form-txt { width: 100% !important; box-sizing: border-box; border: 1px solid var(--c-line); border-radius: var(--radius-sm); padding: 11px 13px; font: inherit; color: var(--c-ink); background: var(--c-bg); }
#atsiliepimai .cr-review-form-comment-txt:focus,
#atsiliepimai .cr-review-form-txt:focus { outline: none; border-color: var(--c-ink); }
#atsiliepimai .cr-form-item-media { margin-top: 18px; }
#atsiliepimai .cr-review-form-terms { margin-top: 16px; display: flex; align-items: flex-start; gap: 8px; }
#atsiliepimai .cr-review-form-terms label { display: inline-flex; align-items: flex-start; gap: 8px; color: var(--c-ink-2); font-size: .88rem; line-height: 1.4; }
#atsiliepimai .cr-review-form-buttons { display: flex; gap: 12px; margin-top: 22px; }
#atsiliepimai .cr-review-form-submit { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-head); font-weight: 700; padding: 13px 26px; border: 0; border-radius: var(--radius-pill); background: var(--c-accent); color: var(--c-accent-ink); cursor: pointer; transition: opacity .18s var(--ease); }
#atsiliepimai .cr-review-form-submit:hover { opacity: .85; }
#atsiliepimai .cr-review-form-cancel { font-family: var(--font-head); font-weight: 700; padding: 13px 26px; border: 1px solid var(--c-line); border-radius: var(--radius-pill); background: transparent; color: var(--c-ink); cursor: pointer; }
#atsiliepimai .cr-review-form-cancel:hover { background: var(--c-surface); }
#atsiliepimai .cr-review-form-field-error { color: var(--c-sale); font-size: .8rem; margin-top: 5px; }

@media (max-width: 560px) {
	#atsiliepimai .cr-review-form-ne { grid-template-columns: 1fr; }
	#atsiliepimai .cr-review-form-item span {
		font-size: 18px;
		line-height: 22px;
	}
}

.product-faq { margin-top: 32px; }
.product-faq__head { font-family: var(--font-head); font-weight: 700; font-size: 1.15rem; margin: 0 0 6px; }
.product-faq .faq { max-width: 820px; }

/* Related / up-sell products below the single product: one row that turns into
   a horizontal slider when the cards no longer fit. */
.related.products, .up-sells.products { margin-top: clamp(40px, 6vw, 72px); }
.related.products > h2, .up-sells.products > h2 { font-family: var(--font-head); font-weight: 700; font-size: clamp(1.4rem, 2.4vw, 1.9rem); margin: 0 0 24px; }
.related.products ul.products, .up-sells.products ul.products { --gap: 20px; --per: 4; display: flex; grid-template-columns: none; gap: var(--gap); overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 6px; }
.related.products ul.products::-webkit-scrollbar, .up-sells.products ul.products::-webkit-scrollbar { display: none; }
.related.products ul.products > li, .up-sells.products ul.products > li { flex: 0 0 calc((100% - (var(--per) - 1) * var(--gap)) / var(--per)); scroll-snap-align: start; margin: 0; }
/* Desktop: all 4 fit. ≤1024: cards get bigger so it becomes a slider. */
@media (max-width: 1024px) { .related.products ul.products, .up-sells.products ul.products { --per: 2.5; } }
@media (max-width: 600px)  { .related.products ul.products, .up-sells.products ul.products { --per: 1.3; --gap: 14px; } }

/* =========================================================================
   Newsletter
   ========================================================================= */
.newsletter { background: var(--c-surface); border-radius: var(--radius); padding: clamp(28px, 5vw, 56px); text-align: center; }
.newsletter form { display: flex; gap: 10px; max-width: 440px; margin: 18px auto 0; }
.newsletter input[type="email"] { flex: 1; padding: 14px 18px; border: 1px solid var(--c-line); border-radius: var(--radius-pill); font: inherit; background: #fff; }

/* =========================================================================
   Footer
   ========================================================================= */
.site-footer { background: var(--c-ink); color: #cfd1d4; margin-top: clamp(48px, 8vw, 96px); }
.site-footer a { color: #cfd1d4; }
.site-footer a:hover { color: #fff; }
.footer-cols { display: grid; grid-template-columns: 1.5fr repeat(3, 1fr); gap: clamp(24px, 4vw, 56px); padding-block: clamp(40px, 6vw, 64px); }
.footer-widget__title { color: #fff; font-family: var(--font-head); font-size: 1rem; font-weight: 700; margin: 0 0 16px; }
.footer-col ul { display: flex; flex-direction: column; gap: 10px; }
.footer-col a { font-size: .92rem; }

/* Brand column: logo → text → socials */
.footer-brand__logo { display: inline-flex; align-items: center; margin-bottom: 14px; }
.footer-brand__logo .site-brand { color: #fff; font-family: var(--font-head); font-weight: 700; font-size: 1.6rem; }
.footer-brand__logo img { max-height: 40px; width: auto; filter: brightness(0) invert(1); }
.footer-brand__text { max-width: 34ch; font-size: .9rem; line-height: 1.55; color: #a9acb1; margin: 0 0 20px; }
.footer-social { display: flex; gap: 10px; }
.footer-social__link { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: var(--radius-pill); background: rgba(255,255,255,.08); color: #fff; transition: background .18s var(--ease), transform .18s var(--ease); }
.footer-social__link:hover { background: rgba(255,255,255,.18); color: #fff; transform: translateY(-2px); }

/* Bottom bar: payments · currency · copyright */
.footer-bottom { border-top: 1px solid rgba(255,255,255,.1); padding-block: 20px; font-size: .82rem; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 16px; }
.footer-payments { display: flex; flex-wrap: wrap; gap: 6px; justify-self: start; }
.pay-badge { display: inline-flex; line-height: 0; }
.pay-badge svg { display: block; border-radius: 5px; }
.footer-currency { justify-self: center; color: #fff; font-weight: 600; }
.footer-copy { justify-self: end; text-align: right; color: #a9acb1; }
@media (max-width: 900px) {
	.footer-cols { grid-template-columns: 1fr 1fr; }
	.footer-brand { grid-column: 1 / -1; }
}
@media (max-width: 680px) {
	.footer-bottom { grid-template-columns: 1fr; justify-items: center; text-align: center; gap: 14px; }
	.footer-payments { justify-self: center; justify-content: center; }
	.footer-copy { justify-self: center; text-align: center; }
}
@media (max-width: 480px) {
	.footer-cols { grid-template-columns: 1fr; }
}

/* =========================================================================
   Cart drawer / off-canvas
   ========================================================================= */
.drawer-backdrop { position: fixed; inset: 0; background: rgba(17,18,20,.4); opacity: 0; visibility: hidden; transition: .25s var(--ease); z-index: 90; }
.drawer-backdrop.is-open { opacity: 1; visibility: visible; }
.drawer { position: fixed; top: 0; right: 0; height: 100%; width: min(420px, 92vw); background: #fff; z-index: 95; transform: translateX(100%); transition: transform .3s var(--ease); display: flex; flex-direction: column; }
.drawer.is-open { transform: none; }
.drawer--left { right: auto; left: 0; transform: translateX(-100%); }
.drawer--left.is-open { transform: none; }
.drawer__head { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px; border-bottom: 1px solid var(--c-line); }
.drawer__head h3 { margin: 0; }
.drawer__body { flex: 1; overflow: auto; padding: 20px; }
.drawer__close { border: 0; background: none; }

/* Cart drawer: the mini-cart owns its own scroll + sticky footer, so the body
   must not scroll or pad. */
#cart-drawer .drawer__body { padding: 0; overflow: hidden; display: flex; flex-direction: column; min-height: 0; }

/* --- Mini-cart ---------------------------------------------------------- */
.mini-cart { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.mini-cart__scroll { flex: 1 1 auto; overflow-y: auto; overscroll-behavior: contain; padding: 4px 20px 20px; }
/* Selectors are deliberately over-qualified: Astra/WooCommerce style the same
   list with ".woocommerce ul.cart_list li ...", which outranks plain classes. */
.mini-cart ul.woocommerce-mini-cart { list-style: none; margin: 0; padding: 0; }

.mini-cart ul.woocommerce-mini-cart li.woocommerce-mini-cart-item {
	display: grid;
	grid-template-columns: 68px minmax(0, 1fr) 24px;
	gap: 4px 14px;
	align-items: center;
	padding: 16px 0;
	border-bottom: 1px solid var(--c-line);
	margin: 0;
	float: none;
}
.mini-cart ul.woocommerce-mini-cart li.woocommerce-mini-cart-item:last-child { border-bottom: 0; }
.mini-cart ul.woocommerce-mini-cart li.woocommerce-mini-cart-item::after,
.mini-cart ul.woocommerce-mini-cart li.woocommerce-mini-cart-item::before { content: none; }

.mini-cart .mini-cart-item__media {
	grid-column: 1; grid-row: 1;
	width: 68px; height: 68px;
	border-radius: var(--radius-sm); overflow: hidden; background: #fff;
	display: grid; place-items: center;
}
.mini-cart .mini-cart-item__media a { display: block; width: 100%; height: 100%; }
/* WooCommerce absolutely-positions widget thumbnails
   (".woocommerce-js ul.product_list_widget li img"), which pulls the image out
   of the grid cell — put it back in flow. */
.mini-cart ul.woocommerce-mini-cart li.woocommerce-mini-cart-item img {
	position: static; transform: none;
	width: 100%; height: 100%; object-fit: contain;
	float: none; margin: 0; box-shadow: none;
}
.mini-cart .mini-cart-item__body { grid-column: 2; grid-row: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.mini-cart a.mini-cart-item__title,
.mini-cart span.mini-cart-item__title {
	font-family: var(--font-head); font-weight: 600; font-size: .9rem; line-height: 1.35;
	color: var(--c-ink); text-decoration: none; display: block; padding: 0;
	overflow-wrap: anywhere;
}
.mini-cart a.mini-cart-item__title:hover { color: var(--c-ink-2); }
.mini-cart .mini-cart-item__body .variation { margin: 0; font-size: .78rem; color: var(--c-muted); }
.mini-cart .mini-cart-item__body .variation dt,
.mini-cart .mini-cart-item__body .variation dd { display: inline; margin: 0; padding: 0; font-weight: 400; }
.mini-cart .mini-cart-item__body .variation p { display: inline; margin: 0; }
.mini-cart .mini-cart-item__body .variation dd + dt::before { content: " · "; }
.mini-cart .mini-cart-item__body .quantity { font-size: .85rem; color: var(--c-ink-2); }
.mini-cart ul.woocommerce-mini-cart li.woocommerce-mini-cart-item a.remove {
	grid-column: 3; grid-row: 1;
	position: static; float: none;
	width: 24px; height: 24px; display: grid; place-items: center;
	border-radius: 999px; background: none; color: var(--c-muted);
	font-size: 1.1rem; line-height: 1; text-decoration: none;
	transition: .16s var(--ease);
}
.mini-cart ul.woocommerce-mini-cart li.woocommerce-mini-cart-item a.remove:hover { background: var(--c-surface); color: var(--c-ink); }
.mini-cart ul.woocommerce-mini-cart li.woocommerce-mini-cart-item.is-removing { opacity: .45; pointer-events: none; }

/* Footer — pinned below the scroll area, never scrolls away. */
.mini-cart__foot {
	flex: none;
	padding: 18px 20px calc(18px + env(safe-area-inset-bottom));
	border-top: 1px solid var(--c-line);
	background: #fff;
	display: grid;
	gap: 14px;
}
.mini-cart__foot .woocommerce-mini-cart__total {
	display: flex; align-items: baseline; justify-content: space-between;
	gap: 12px; margin: 0; border: 0; padding: 0;
	font-size: .95rem; color: var(--c-ink-2);
}
.mini-cart__foot .woocommerce-mini-cart__total strong { font-family: var(--font-head); font-size: 1.25rem; color: var(--c-ink); }
.mini-cart__foot .woocommerce-mini-cart__buttons { display: grid; gap: 10px; margin: 0; }
.mini-cart__foot .woocommerce-mini-cart__buttons .btn { width: 100%; text-align: center; justify-content: center; }

.mini-cart__empty { flex: 1; display: grid; align-content: center; justify-items: center; gap: 16px; padding: 40px 20px; text-align: center; }
.mini-cart__empty svg { color: var(--c-muted); }
.mini-cart__empty p { margin: 0; color: var(--c-muted); }

/* --- Free-shipping progress bar ----------------------------------------- */
.ship-bar { display: grid; gap: 8px; }
.ship-bar__text { display: flex; align-items: center; gap: 7px; margin: 0; font-size: .86rem; color: var(--c-ink-2); }
.ship-bar__text strong { color: var(--c-ink); font-weight: 600; }
.ship-bar__track { height: 6px; border-radius: 999px; background: var(--c-surface-2); overflow: hidden; }
.ship-bar__fill { display: block; height: 100%; border-radius: 999px; background: var(--c-ink); transition: width .4s var(--ease); }
.ship-bar.is-reached .ship-bar__text,
.ship-bar.is-reached .ship-bar__text strong { color: var(--c-success); }
.ship-bar.is-reached .ship-bar__fill { background: var(--c-success); }

/* =========================================================================
   Responsive
   ========================================================================= */
@media (max-width: 1024px) {
	.cat-tiles { grid-template-columns: repeat(4, 1fr); }
	.product-single { grid-template-columns: 1fr; }
	.product-gallery { position: static; }
	.product-summary { position: static; }
}
@media (max-width: 768px) {
	/* Mobile gallery: one large image with the rest peeking, swipe to slide. */
	.product-single .woocommerce-product-gallery__wrapper { display: flex; grid-template-columns: none; overflow-x: auto; scroll-snap-type: x mandatory; gap: 10px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	.product-single .woocommerce-product-gallery__wrapper::-webkit-scrollbar { display: none; }
	.product-single .woocommerce-product-gallery__image { flex: 0 0 86%; scroll-snap-align: center; }
}
@media (max-width: 900px) {
	.primary-nav, .header-search { display: none; }
	.nav-toggle { display: inline-flex; }
	.site-header__inner { grid-template-columns: auto auto 1fr; }
	.site-brand { justify-self: start; }
	.shop-layout { grid-template-columns: 1fr; }
	/* Filter panel slides in from the LEFT. A flex column: scrolling body in the
	   middle, fixed head on top and a sticky "apply" bar pinned to the bottom. */
	.filters { position: fixed; inset: 0 auto 0 0; width: min(360px, 92vw); background: #fff; z-index: 95; transform: translateX(-100%); transition: transform .3s var(--ease); padding: 0; overflow: hidden; box-shadow: var(--shadow-lg); display: flex; flex-direction: column; }
	.filters.is-open { transform: none; }
	.filters > form { flex: 1 1 auto; overflow-y: auto; padding: 4px 20px 20px; }
	.filters-open-btn { display: inline-flex; }
	/* Header with title + close, pinned atop the drawer. */
	.filters .filters__head { display: flex; flex: none; }
	/* Sticky bottom bar: the button shows the live result count so it is obvious
	   the filter took effect, and tapping it reveals the filtered products. */
	.filters__apply { display: block; flex: none; padding: 12px 20px calc(12px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--c-line); background: #fff; }
	.filters__apply .btn { padding-top: 14px; padding-bottom: 14px; }
	.filters__apply-count { opacity: .85; margin-left: 4px; }
	ul.products { grid-template-columns: repeat(2, 1fr); }
	/* Toolbar wraps so the sort control never runs off-screen. */
	.shop-toolbar { flex-wrap: wrap; align-items: flex-start; gap: 12px; }
	.shop-toolbar > div:first-child { flex: 1 1 100%; }
	.shop-toolbar__actions { flex-wrap: wrap; width: 100%; justify-content: flex-start !important; }
	.shop-order, .shop-order select { max-width: 100%; }
}
@media (max-width: 560px) {
	/* Categories become a horizontal slider when they no longer fit. */
	.cat-tiles { display: flex; grid-template-columns: none; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	.cat-tiles::-webkit-scrollbar { display: none; }
	.cat-tile { flex: 0 0 clamp(104px, 30%, 150px); scroll-snap-align: start; }
	ul.products { grid-template-columns: repeat(2, 1fr); gap: 12px; }
	.newsletter form { flex-direction: column; }
	.topbar__inner { gap: 12px; font-size: .74rem; }
	.qty-add { flex-wrap: wrap; }
}

/* =========================================================================
   Homepage section builder: big banners
   ========================================================================= */
.banners { display: grid; gap: clamp(16px, 2vw, 28px); }
.banners--cols-2 { grid-template-columns: repeat(2, 1fr); }
.banner { position: relative; display: block; border-radius: var(--radius); overflow: hidden; min-height: clamp(320px, 42vw, 520px); background: var(--c-surface); text-decoration: none; }
.banners--cols-2 .banner { min-height: clamp(260px, 30vw, 400px); }
.banner__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.banner__body { position: relative; z-index: 2; max-width: 560px; padding: clamp(24px, 4vw, 56px); display: grid; gap: 14px; align-content: center; height: 100%; }
.banner.align-center .banner__body { margin-inline: auto; text-align: center; }
.banner.align-right .banner__body { margin-inline-start: auto; text-align: right; justify-items: end; }
.banner.is-light .banner__body { color: #fff; }
.banner.is-dark .banner__body { color: var(--c-ink); }
.banner__eyebrow { font-size: .8rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; opacity: .85; }
.banner__title { font-family: var(--font-head); font-weight: 700; font-size: clamp(1.6rem, 3.4vw, 2.6rem); line-height: 1.08; margin: 0; }
.banner__text { margin: 0; max-width: 44ch; opacity: .92; }
.banner.align-center .banner__text { margin-inline: auto; }
.banner.align-right .banner__text { margin-inline-start: auto; }
.banner__btn { justify-self: start; margin-top: 6px; }
.banner.align-center .banner__btn { justify-self: center; }
.banner.align-right .banner__btn { justify-self: end; }
.banner.is-light .banner__btn { background: #fff; color: var(--c-ink); }

/* =========================================================================
   Homepage section builder: "get to know us" cards (with optional video)
   ========================================================================= */
.cards-section { position: relative; }
.cards-track { display: flex; gap: clamp(12px, 1.6vw, 22px); overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 6px; }
.cards-track::-webkit-scrollbar { display: none; }
.card { flex: 0 0 clamp(240px, 26vw, 320px); scroll-snap-align: start; text-decoration: none; color: inherit; }
.card__media { position: relative; aspect-ratio: 3/4; border-radius: var(--radius); overflow: hidden; background: var(--c-surface-2); }
.card__img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.card:hover .card__img { transform: scale(1.04); }
/* Text sits ON the image, over a gradient scrim. */
.card__overlay { position: absolute; inset: 0; z-index: 3; padding: 20px; display: flex; flex-direction: column; gap: 6px; color: #fff; background: linear-gradient(180deg, rgba(0,0,0,.6) 0%, rgba(0,0,0,.18) 38%, rgba(0,0,0,0) 62%); pointer-events: none; }
.card__eyebrow { font-size: .74rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; opacity: .9; }
.card__title { font-family: var(--font-head); font-weight: 700; font-size: 1.15rem; line-height: 1.2; margin: 0; color: #fff; }
.card__text { margin: 2px 0 0; font-size: .88rem; line-height: 1.4; opacity: .92; }
.card__play { position: absolute; inset: 0; margin: auto; width: 64px; height: 64px; border-radius: 999px; border: 0; background: rgba(255,255,255,.92); color: var(--c-ink); display: grid; place-items: center; cursor: pointer; transition: transform .18s var(--ease), background .18s; z-index: 4; }
.card__play:hover { transform: scale(1.06); background: #fff; }
.card__play .icon { margin-left: 3px; }
.card__video { position: absolute; inset: 0; background: #000; opacity: 0; visibility: hidden; z-index: 5; }
.card__video video, .card__video iframe { width: 100%; height: 100%; border: 0; object-fit: cover; }
.card.is-playing .card__video { opacity: 1; visibility: visible; }
.card.is-playing .card__play, .card.is-playing .card__overlay { opacity: 0; visibility: hidden; }

/* =========================================================================
   Homepage section builder: customer reviews slider
   ========================================================================= */
.reviews-section { position: relative; }
.reviews-track { display: flex; gap: clamp(12px, 1.6vw, 22px); overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 6px; max-width: 100%; }
.reviews-track::-webkit-scrollbar { display: none; }
.review { position: relative; flex: 0 0 clamp(290px, 30vw, 390px); scroll-snap-align: start; margin: 0; background: #fff; border: 1px solid var(--c-line); border-radius: var(--radius); padding: clamp(24px, 2.6vw, 34px); display: flex; flex-direction: column; gap: 16px; box-shadow: var(--shadow-sm); overflow: hidden; transition: box-shadow .22s var(--ease), transform .22s var(--ease); }
.review:hover { box-shadow: var(--shadow); transform: translateY(-3px); }
/* Decorative quote mark behind the content */
.review__quote { position: absolute; top: 6px; right: 20px; z-index: 0; font-family: Georgia, 'Times New Roman', serif; font-size: 6rem; line-height: 1; color: var(--c-surface-2); pointer-events: none; user-select: none; }
.review > *:not(.review__quote) { position: relative; z-index: 1; }
.review__stars { display: inline-flex; gap: 3px; color: var(--c-line); }
.review__star.is-on { color: var(--c-star); }
.review__star .icon { display: block; }
.review__text { margin: 0; font-size: 1rem; line-height: 1.62; color: var(--c-ink-2); }
.review__author { display: flex; align-items: center; gap: 12px; margin-top: auto; padding-top: 16px; border-top: 1px solid var(--c-line); }
.review__avatar { width: 46px; height: 46px; border-radius: 999px; object-fit: cover; flex: none; }
.review__id { display: flex; flex-direction: column; line-height: 1.3; }
.review__id strong { font-family: var(--font-head); font-size: .98rem; color: var(--c-ink); }
.review__id small { color: var(--c-muted); font-size: .82rem; }

/* Contact requisites list */
.requisites { display: grid; grid-template-columns: auto 1fr; gap: 4px 16px; margin: 8px 0 0; }
.requisites dt { color: var(--c-muted); font-size: .9rem; }
.requisites dd { margin: 0; font-size: .9rem; }

/* Free rich-text section */
.richtext > :first-child { margin-top: 0; }
.richtext img { max-width: 100%; height: auto; border-radius: var(--radius); }

@media (max-width: 768px) {
	.banners--cols-2 { grid-template-columns: 1fr; }
	.banner__body { max-width: 100%; }
	/* On mobile the horizontal scrim doesn't cover full-width text — use a
	   stronger, more even overlay so the hero copy stays readable. */
	.hero__slide--has-image::before { background: linear-gradient(180deg, rgba(0,0,0,.42) 0%, rgba(0,0,0,.5) 45%, rgba(0,0,0,.68) 100%); }
	.hero__content { max-width: 100%; }
}

/* =========================================================================
   Info / legal / FAQ pages
   ========================================================================= */
.prose-narrow { max-width: 820px; margin-inline: auto; }
.prose-head { margin-bottom: clamp(20px, 3vw, 32px); }
.prose-head h1 { margin-bottom: 8px; }
.prose-head .lead { font-size: 1.12rem; color: var(--c-ink-2); margin: 0; max-width: 60ch; }

.prose { color: var(--c-ink-2); line-height: 1.7; }
.prose > :first-child { margin-top: 0; }
.prose h2 { font-size: clamp(1.25rem, 2vw, 1.5rem); color: var(--c-ink); margin: 1.6em 0 .5em; }
.prose h3 { font-size: 1.1rem; color: var(--c-ink); margin: 1.3em 0 .4em; }
.prose p { margin: 0 0 1em; }
.prose ul, .prose ol { margin: 0 0 1em; padding-left: 1.4em; }
.prose li { margin-bottom: .4em; }
.prose a { color: var(--c-ink); text-decoration: underline; text-underline-offset: 2px; }
.prose a:hover { color: var(--c-accent); }

/* FAQ accordion (native <details>) */
.faq { border-top: 1px solid var(--c-line); }
.faq-item { border-bottom: 1px solid var(--c-line); }
.faq-item__q { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 4px; cursor: pointer; list-style: none; font-family: var(--font-head); font-weight: 600; font-size: 1.05rem; color: var(--c-ink); }
.faq-item__q::-webkit-details-marker { display: none; }
.faq-item__q .icon { flex: none; color: var(--c-ink-2); transition: transform .2s var(--ease); }
.faq-item[open] .faq-item__q .icon { transform: rotate(180deg); }
.faq-item__a { padding: 0 4px 20px; color: var(--c-ink-2); line-height: 1.7; }
.faq-item__a > :first-child { margin-top: 0; }
.faq-item__a > :last-child { margin-bottom: 0; }

/* About / Contact page layouts (responsive) */
.contact-grid { display: grid; grid-template-columns: 1.2fr .8fr; gap: clamp(24px, 4vw, 56px); align-items: start; }
.about-story-grid { display: grid; gap: clamp(24px, 4vw, 56px); align-items: center; }
.about-story-grid.has-image { grid-template-columns: 1fr 1fr; }
.about-values-grid { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.about-stats-grid { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
.contact-grid iframe { max-width: 100%; border: 0; }
@media (max-width: 782px) {
	.contact-grid,
	.about-story-grid.has-image { grid-template-columns: 1fr; }
}

/* Utilities */
.is-hidden { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }
.text-center { text-align: center; }

/* =========================================================================
   404 — page not found
   ========================================================================= */
.error-404 { text-align: center; padding-block: clamp(48px, 9vw, 120px); }
.error-404__inner { max-width: 560px; margin-inline: auto; }
.error-404__code { font-family: var(--font-head); font-weight: 800; font-size: clamp(5rem, 20vw, 11rem); line-height: .9; letter-spacing: -.04em; color: var(--c-ink); margin: 0; }
.error-404__title { font-family: var(--font-head); font-size: clamp(1.4rem, 4vw, 2.1rem); margin: 6px 0 14px; }
.error-404__text { color: var(--c-muted); font-size: 1.05rem; line-height: 1.6; margin: 0 0 28px; }
.error-404__actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }

/* =========================================================================
   WooCommerce — cart / checkout / order-received / account
   ========================================================================= */
/* The default page template renders content full-width; contain it. */
body.woocommerce-page .page-content { max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }

/* Notices */
.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-noreviews {
	border: 1px solid var(--c-line); border-left-width: 4px; border-radius: var(--radius-sm);
	background: var(--c-surface); padding: 14px 18px; margin: 0 0 24px; list-style: none;
	font-size: .94rem; color: var(--c-ink); display: flex; align-items: center; flex-wrap: wrap; gap: 10px;
}
.woocommerce-message { border-left-color: var(--c-success); }
.woocommerce-error { border-left-color: var(--c-sale); }
.woocommerce-info { border-left-color: var(--c-ink); }
.woocommerce-message .button, .woocommerce-info .button, .woocommerce-error .button { margin-left: auto; }

/* WooCommerce absolutely-positions its glyph (::before with position:absolute,
   left:1.5em) which lands on top of the text in our flex layout. Put it back in
   flow so it becomes a normal flex item ahead of the message. */
.woocommerce-message::before,
.woocommerce-info::before,
.woocommerce-error::before {
	position: static; flex: none; display: inline-block;
	width: auto; height: auto; top: auto; left: auto; margin: 0;
	line-height: 1.4; font-size: 1.05em;
}
.woocommerce-message::before { color: var(--c-success); }
.woocommerce-error::before { color: var(--c-sale); }
.woocommerce-info::before { color: var(--c-ink); }

/* Buttons on these pages → theme pill */
.woocommerce-cart .button, .woocommerce-checkout .button, .woocommerce-account .button,
.woocommerce-order-received .button, .woocommerce-cart input.button, .woocommerce-checkout input.button,
.woocommerce-cart button.button, .woocommerce-checkout button.button,
.woocommerce #place_order, .checkout-button, .wc-proceed-to-checkout .button {
	display: inline-flex; align-items: center; justify-content: center; text-decoration: none;
	background: var(--c-accent); color: var(--c-accent-ink); border: 0; border-radius: var(--radius-pill);
	padding: 14px 26px; font-family: var(--font-head); font-weight: 700; font-size: .92rem; line-height: 1;
	cursor: pointer; transition: opacity .18s var(--ease);
}
.woocommerce-cart .button:hover, .woocommerce-checkout .button:hover, .woocommerce #place_order:hover, .checkout-button:hover { opacity: .85; color: var(--c-accent-ink); }
/* Secondary actions */
.woocommerce button[name="update_cart"], .woocommerce button[name="apply_coupon"] {
	background: transparent; color: var(--c-ink); border: 1px solid var(--c-line);
	white-space: nowrap; padding: 0 22px; min-height: 46px; line-height: 1.2;
}
.woocommerce button[name="update_cart"]:hover, .woocommerce button[name="apply_coupon"]:hover { background: var(--c-surface); opacity: 1; }
.woocommerce button[name="update_cart"]:disabled { opacity: .45; cursor: not-allowed; }
.woocommerce button[name="update_cart"][disabled] { opacity: .4; }

/* Form fields */
.woocommerce form .form-row { margin: 0 0 16px; }
.woocommerce form .form-row label { display: block; font-size: .86rem; font-weight: 600; margin-bottom: 6px; color: var(--c-ink); }
.woocommerce .form-row input.input-text, .woocommerce .form-row textarea, .woocommerce .form-row select,
.woocommerce #order_comments, .select2-container .select2-selection--single {
	width: 100%; border: 1px solid var(--c-line); border-radius: var(--radius-sm); padding: 12px 13px;
	font: inherit; color: var(--c-ink); background: var(--c-bg); min-height: 48px;
}
.woocommerce .form-row input.input-text:focus, .woocommerce .form-row textarea:focus, .woocommerce .form-row select:focus { outline: none; border-color: var(--c-ink); }
.select2-container--default .select2-selection--single { display: flex; align-items: center; }
.select2-container--default .select2-selection--single .select2-selection__arrow { height: 100%; }

/* ---- Cart ---- */
.woocommerce-cart .page-content .woocommerce { display: grid; grid-template-columns: minmax(0,1fr) minmax(300px, 380px); gap: clamp(24px, 4vw, 56px); align-items: start; }
.woocommerce-cart .woocommerce-notices-wrapper { grid-column: 1 / -1; }
.woocommerce-cart .woocommerce-cart-form { grid-column: 1; width: 100% !important; float: none !important; margin: 0 !important; }
.woocommerce-cart .cart-collaterals { grid-column: 2; width: 100% !important; float: none !important; margin: 0 !important; }
.woocommerce-cart .cart-collaterals .cart_totals { width: 100% !important; float: none !important; }

/* Fixed layout so Astra's default column widths don't squash the product name. */
.woocommerce-cart table.shop_table { width: 100%; border-collapse: collapse; border: 0; table-layout: fixed; }
.woocommerce-cart table.shop_table thead th { text-align: left; font-family: var(--font-head); font-size: .76rem; letter-spacing: .05em; text-transform: uppercase; color: var(--c-muted); padding: 0 12px 14px; border-bottom: 1px solid var(--c-line); }
.woocommerce-cart table.shop_table td { padding: 18px 12px; border-bottom: 1px solid var(--c-line); vertical-align: middle; }
.woocommerce-cart th.product-remove, .woocommerce-cart td.product-remove { width: 44px; }
.woocommerce-cart th.product-thumbnail, .woocommerce-cart td.product-thumbnail { width: 96px; }
.woocommerce-cart th.product-name, .woocommerce-cart td.product-name { width: auto; text-align: left; }
.woocommerce-cart th.product-price, .woocommerce-cart td.product-price { width: 100px; }
.woocommerce-cart th.product-quantity, .woocommerce-cart td.product-quantity { width: 110px; }
.woocommerce-cart th.product-subtotal, .woocommerce-cart td.product-subtotal { width: 110px; }
.woocommerce-cart .product-remove a.remove { display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 999px; background: var(--c-surface); color: var(--c-ink) !important; font-size: 17px; line-height: 1; text-decoration: none; }
.woocommerce-cart .product-remove a.remove:hover { background: var(--c-sale); color: #fff !important; }
.woocommerce-cart .product-thumbnail img { width: 72px; height: 72px; object-fit: contain; border-radius: var(--radius-sm); background: var(--c-surface); }
.woocommerce-cart .product-name a { color: var(--c-ink); font-weight: 600; }
.woocommerce-cart td.product-price, .woocommerce-cart td.product-subtotal { font-weight: 600; }
.woocommerce-cart .quantity input.qty { width: 72px; height: 46px; text-align: center; border: 1px solid var(--c-line); border-radius: var(--radius-sm); font: inherit; }
.woocommerce-cart .actions { padding-top: 20px !important; display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between; align-items: center; border: 0 !important; }
.woocommerce-cart .actions .coupon { display: flex; gap: 8px; align-items: center; }
/* WooCommerce caps this input with an ID-based rule
   (".woocommerce-js #content table.cart [name=coupon_code] { max-height:35px }"),
   so the override has to carry an ID too. */
body.woocommerce-cart #content table.cart td.actions .coupon .input-text {
	width: auto; min-width: 190px;
	height: 46px; max-height: none; padding: 0 14px;
	border: 1px solid var(--c-line); border-radius: var(--radius-sm);
	background: #fff; font: inherit; line-height: 44px; color: var(--c-ink);
}
body.woocommerce-cart #content table.cart td.actions .coupon .input-text:focus { outline: none; border-color: var(--c-ink); }
body.woocommerce-cart #content table.cart td.actions .coupon .input-text::placeholder { color: var(--c-muted); }
.woocommerce-cart .cart_totals { border: 1px solid var(--c-line); border-radius: var(--radius); padding: clamp(20px, 3vw, 30px); }
.woocommerce-cart .cart_totals h2 { font-family: var(--font-head); font-size: 1.2rem; margin: 0 0 16px; }
.woocommerce-cart .cart_totals table { width: 100%; border-collapse: collapse; }
.woocommerce-cart .cart_totals th, .woocommerce-cart .cart_totals td { padding: 12px 0; text-align: left; border-bottom: 1px solid var(--c-line); vertical-align: top; }
.woocommerce-cart .cart_totals td { text-align: right; }
.woocommerce-cart .cart_totals .order-total th, .woocommerce-cart .cart_totals .order-total td { border-bottom: 0; font-size: 1.1rem; font-weight: 700; }
.woocommerce-cart .wc-proceed-to-checkout { margin-top: 18px; padding: 0; }
.woocommerce-cart .wc-proceed-to-checkout .button { width: 100%; }

/* ---- Checkout ---- */
.woocommerce-checkout form.checkout { display: grid; grid-template-columns: minmax(0,1fr) minmax(320px, 420px); gap: clamp(24px, 4vw, 56px); align-items: start; }
.woocommerce-checkout #customer_details { grid-column: 1; width: 100% !important; float: none !important; }
.woocommerce-checkout .checkout__sidebar { grid-column: 2; position: sticky; top: calc(var(--header-h) + 16px); }
.woocommerce-checkout .col2-set .col-1, .woocommerce-checkout .col2-set .col-2 { width: 100% !important; float: none !important; }
.woocommerce-checkout .col2-set .col-2 { margin-top: 24px; }
/* Astra floats the heading and the review box side by side
   (".woocommerce.woocommerce-checkout form #order_review_heading { float:right;
   width:40% }") and pads the heading via a ":not(#id)" rule that carries TWO
   IDs. Beating that needs a second ID of our own — hence "#content". */
.woocommerce-checkout #content form.checkout .checkout__sidebar #order_review_heading {
	float: none; width: auto; padding: 0; margin: 0 0 14px; border: 0; background: none;
	font-family: var(--font-head); font-size: 1.2rem; line-height: 1.2;
}
.woocommerce-checkout #content form.checkout .checkout__sidebar #order_review {
	width: 100%; float: none;
	border: 1px solid var(--c-line); border-radius: var(--radius);
	padding: clamp(20px, 3vw, 28px);
}
.woocommerce-checkout .woocommerce-checkout-review-order-table { width: 100%; border-collapse: collapse; table-layout: auto; }
.woocommerce-checkout .woocommerce-checkout-review-order-table th, .woocommerce-checkout .woocommerce-checkout-review-order-table td { padding: 10px 0; text-align: left; border-bottom: 1px solid var(--c-line); vertical-align: top; }
.woocommerce-checkout .woocommerce-checkout-review-order-table td { text-align: right; }
/* The product cell ships as display:flex, which blockifies the "× 1" quantity
   (a flex item can never stay inline — no !important or inline style helps).
   Restoring table-cell is the only fix, and it also lets the column widths work. */
.woocommerce-checkout #content #order_review table.shop_table td.product-name {
	display: table-cell; text-align: left; width: 62%; padding-right: 12px;
}
.woocommerce-checkout #content #order_review table.shop_table th { text-align: left; }
.woocommerce-checkout #content #order_review table.shop_table th.product-total,
.woocommerce-checkout #content #order_review table.shop_table td.product-total { width: 38%; text-align: right; white-space: nowrap; }
.woocommerce-checkout #content #order_review table.shop_table .product-quantity { font-weight: 600; color: var(--c-muted); }
.woocommerce-checkout #content #order_review table.shop_table tfoot td { text-align: right; white-space: nowrap; }
.woocommerce-checkout .order-total th, .woocommerce-checkout .order-total td { font-size: 1.1rem; font-weight: 700; border-bottom: 0; }
.woocommerce-checkout #payment { background: transparent; border-radius: 0; }
.woocommerce-checkout #payment ul.payment_methods { border: 0; padding: 16px 0; margin: 0; list-style: none; border-top: 1px solid var(--c-line); }
.woocommerce-checkout #payment ul.payment_methods li { margin-bottom: 8px; }
.woocommerce-checkout #payment div.payment_box { background: var(--c-surface); border-radius: var(--radius-sm); font-size: .88rem; padding: 12px 14px; }
.woocommerce-checkout #payment div.payment_box::before { display: none; }
.woocommerce-checkout #payment .place-order { padding: 0; }
.woocommerce-checkout #place_order { width: 100%; margin-top: 10px; }
.woocommerce-form-coupon-toggle { margin-bottom: 18px; }

/* ---- Order received / thank you ---- */
.woocommerce-thankyou-order-received { font-family: var(--font-head); font-size: clamp(1.3rem, 3vw, 1.8rem); font-weight: 700; margin: 0 0 24px; }
.woocommerce-order-overview { display: flex; flex-wrap: wrap; gap: 0; list-style: none; margin: 0 0 32px; padding: 0; border: 1px solid var(--c-line); border-radius: var(--radius); overflow: hidden; }
.woocommerce-order-overview li { flex: 1 1 150px; padding: 16px 20px; border-right: 1px solid var(--c-line); font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; color: var(--c-muted); }
.woocommerce-order-overview li:last-child { border-right: 0; }
.woocommerce-order-overview li strong { display: block; margin-top: 6px; font-size: 1rem; text-transform: none; letter-spacing: 0; color: var(--c-ink); }
.woocommerce-order .woocommerce-order-details, .woocommerce-order .woocommerce-customer-details { margin-top: 32px; }
.woocommerce-order table.shop_table { width: 100%; border-collapse: collapse; }
.woocommerce-order table.shop_table th, .woocommerce-order table.shop_table td { padding: 12px 0; text-align: left; border-bottom: 1px solid var(--c-line); }
.woocommerce-order .woocommerce-customer-details address { border: 1px solid var(--c-line); border-radius: var(--radius); padding: 18px 20px; font-style: normal; line-height: 1.7; }
.woocommerce-order h2, .woocommerce-account h2, .woocommerce-order-details__title, .woocommerce-column__title { font-family: var(--font-head); font-size: 1.2rem; margin: 0 0 14px; }

/* ---- Responsive ----
   The card breakpoint is 768px on purpose: that is where WooCommerce's own
   "shop_table_responsive" rules turn every cell into a block and float a
   data-title label in front of it. Using a lower value left a broken range
   where Woo had restructured the table but our styling had not caught up. */
@media (max-width: 1024px) {
	.woocommerce-cart .page-content .woocommerce { grid-template-columns: 1fr; }
	.woocommerce-cart .woocommerce-cart-form, .woocommerce-cart .cart-collaterals { grid-column: 1; }
	.woocommerce-checkout form.checkout { grid-template-columns: 1fr; }
	.woocommerce-checkout #customer_details, .woocommerce-checkout .checkout__sidebar { grid-column: 1; }
	.woocommerce-checkout .checkout__sidebar { position: static; }
}
@media (max-width: 768px) {
	/* Cart rows become stacked cards with per-cell labels. */
	.woocommerce-cart table.shop_table { table-layout: auto; }
	.woocommerce-cart table.shop_table thead { display: none; }
	.woocommerce-cart table.shop_table,
	.woocommerce-cart table.shop_table tbody,
	.woocommerce-cart table.shop_table tr { display: block; width: 100%; }

	.woocommerce-cart table.shop_table tr.cart_item {
		position: relative;
		border: 1px solid var(--c-line);
		border-radius: var(--radius);
		padding: 16px 46px 16px 104px;
		margin-bottom: 14px;
		min-height: 104px;
	}
	.woocommerce-cart table.shop_table tr.cart_item td {
		display: block; width: auto;
		border: 0; padding: 3px 0;
		text-align: left !important;
	}

	/* Reuse WooCommerce's own data-title label, but un-float it and hide it on
	   the cells that don't need one. */
	.woocommerce-cart table.shop_table_responsive tr.cart_item td::before {
		float: none !important;
		font-weight: 600; color: var(--c-muted); margin-right: 6px;
	}
	.woocommerce-cart table.shop_table_responsive tr.cart_item td.product-remove::before,
	.woocommerce-cart table.shop_table_responsive tr.cart_item td.product-thumbnail::before,
	.woocommerce-cart table.shop_table_responsive tr.cart_item td.product-name::before { content: none !important; }

	.woocommerce-cart .cart_item td.product-remove { position: absolute; top: 12px; right: 12px; width: auto; padding: 0; }
	.woocommerce-cart .cart_item td.product-thumbnail { position: absolute; top: 16px; left: 16px; width: auto; padding: 0; }
	.woocommerce-cart .cart_item td.product-thumbnail img { width: 72px; height: 72px; }
	.woocommerce-cart .cart_item td.product-name { font-weight: 600; padding-bottom: 6px; }
	.woocommerce-cart .cart_item td.product-quantity { display: flex !important; align-items: center; gap: 8px; padding-top: 8px; }
	.woocommerce-cart .cart_item td.product-quantity::before { margin-right: 0; }

	/* The actions row is not a product card: coupon field, "apply" and "update"
	   stack full-width. Note this must stay display:flex — an earlier
	   display:block here silently killed the column layout and let
	   WooCommerce's floats push the update button back to the right. */
	.woocommerce-cart table.shop_table tr:not(.cart_item) td.actions {
		display: flex; flex-direction: column; align-items: stretch; gap: 10px;
		width: 100%; padding: 20px 0 0 !important;
	}
	body.woocommerce-cart #content table.cart td.actions .coupon {
		display: flex; flex-direction: column; align-items: stretch; gap: 10px;
		float: none; width: 100%; margin: 0;
	}
	body.woocommerce-cart #content table.cart td.actions .coupon .input-text { width: 100%; min-width: 0; }
	/* Covers both "apply coupon" and "update cart" — WooCommerce gives them a
	   5px side margin that breaks the alignment. */
	body.woocommerce-cart #content table.cart td.actions .button { width: 100%; margin: 0; }

	.woocommerce-order-overview li { flex: 1 1 100%; border-right: 0; border-bottom: 1px solid var(--c-line); }
	.woocommerce-order-overview li:last-child { border-bottom: 0; }
}

/* ======================================================================
   Quantity stepper — WooCommerce .quantity turned into a − [n] + pill.
   Buttons injected via WooCommerce hooks (inc/woocommerce.php); behaviour
   in theme.js. Covers the single-product summary and the cart page.
   ====================================================================== */
.qty-caption { flex-basis: 100%; margin: 0 0 2px; font-weight: 600; font-size: .95rem; color: var(--c-ink); }
.product-summary .quantity,
.woocommerce-cart .quantity {
	display: inline-flex; align-items: center; overflow: hidden;
	border: 1px solid var(--c-line); border-radius: var(--radius-sm); background: #fff;
}
.product-summary .quantity { height: 54px; }
.woocommerce-cart .quantity { height: 46px; }
.product-summary .quantity input.qty,
.woocommerce-cart .quantity input.qty {
	width: 52px; height: 100%; border: 0; border-radius: 0; background: transparent;
	text-align: center; font: inherit; -moz-appearance: textfield;
}
.qty-btn {
	flex: 0 0 auto; width: 44px; height: 100%; padding: 0; border: 0;
	background: transparent; color: var(--c-ink); font-size: 1.35rem; line-height: 1;
	cursor: pointer; display: grid; place-items: center; user-select: none;
	transition: background .15s;
}
.qty-btn:hover { background: var(--c-surface); }
.qty-btn:active { background: var(--c-surface-2); }
.qty-btn:disabled { opacity: .3; cursor: default; }
.qty-btn:disabled:hover { background: transparent; }
.woocommerce-cart .quantity .qty-btn { width: 38px; font-size: 1.2rem; }

/* ======================================================================
   Facet info tooltips — the "i" beside a material shows its explanation
   (from the term description). Hover/focus on desktop, tap on mobile.
   ====================================================================== */
.facet-check-row { display: flex; align-items: center; gap: 6px; }
.facet-check-row .facet-check { flex: 1 1 auto; min-width: 0; }
.facet-info {
	position: relative; flex: 0 0 auto; display: inline-grid; place-items: center;
	width: 22px; height: 22px; padding: 0; border: 0; border-radius: var(--radius-pill);
	background: transparent; color: var(--c-muted); cursor: pointer;
	transition: color .15s, background .15s;
}
.facet-info:hover,
.facet-info:focus-visible,
.facet-info[aria-expanded="true"] { color: var(--c-ink); background: var(--c-surface); outline: none; }

/* Shared floating bubble (appended to <body> by theme.js, position:fixed). */
.facet-tip {
	position: fixed; left: 0; top: 0; z-index: 9999;
	max-width: 240px; padding: 9px 11px; border-radius: var(--radius-sm);
	background: var(--c-ink); color: #fff; font-size: .8rem; line-height: 1.45;
	text-align: left; white-space: normal; pointer-events: none;
	box-shadow: 0 10px 28px rgba(0, 0, 0, .22);
	opacity: 0; visibility: hidden; transform: translateY(3px);
	transition: opacity .12s var(--ease), transform .12s var(--ease);
}
.facet-tip.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.facet-tip::after {
	content: ""; position: absolute; top: 100%; left: var(--tip-arrow, 50%);
	margin-left: -6px; border: 6px solid transparent; border-top-color: var(--c-ink);
}
.facet-tip.facet-tip--below::after {
	top: auto; bottom: 100%; border-top-color: transparent; border-bottom-color: var(--c-ink);
}

/* ======================================================================
   Product description — style the client's imported HTML (headings +
   feature lists) into a branded rhythm. Scoped to the description section
   so the blog/page .prose stays as-is.
   ====================================================================== */
.product-section .prose { max-width: 760px; }
.product-section .prose h2 {
	font-size: clamp(1.2rem, 2vw, 1.45rem); font-weight: 700; color: var(--c-ink);
	margin: 1.5em 0 .5em; letter-spacing: -.01em;
}
.product-section .prose h3 {
	margin: 1.6em 0 .7em; padding-top: 1.3em; border-top: 1px solid var(--c-line);
	font-size: 1.08rem; font-weight: 700; color: var(--c-ink);
}
.product-section .prose > :first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.product-section .prose ul { list-style: none; margin: 0 0 1.3em; padding: 0; }
.product-section .prose ul li {
	position: relative; padding-left: 1.4em; margin-bottom: .5em; color: var(--c-ink-2);
}
.product-section .prose ul li::before {
	content: ""; position: absolute; left: .2em; top: .62em;
	width: 5px; height: 5px; border-radius: var(--radius-pill);
	background: var(--c-ink-2);
}
.product-section .prose ul li strong,
.product-section .prose p strong { color: var(--c-ink); }

/* ======================================================================
   Public product code ("Kodas") — customer-facing reference under the
   title, plus the low-stock line and the gallery disclaimer note.
   ====================================================================== */
.product-code { margin: 6px 0 2px; font-size: .85rem; color: var(--c-muted); }
.product-code span { color: var(--c-ink-2); font-weight: 600; letter-spacing: .01em; }

/* "Liko X": inline and calm — the client wanted the number visible, not the
   boxed out-of-stock note. Higher specificity beats the p.stock box above. */
.product-summary p.stock.festgo-low-stock,
.woocommerce-variation-availability p.stock.festgo-low-stock {
	margin: 10px 0 0; padding: 0; background: none; border: 0; border-radius: 0;
	font-weight: 600; color: #1f8a44;
}

.product-gallery__note {
	margin: 14px 0 0; font-size: .8rem; line-height: 1.5;
	color: #777; max-width: 66ch;
}
