/* WEDO product page: quantity selector + buy button row (Figma spec).
   Layout relies on the JS-created .wedo-qty-btn-row wrapper — a pure-CSS
   flex/grid layout on form.cart is a VERIFIED dead end (the APFS
   .wcsatt-options-wrapper sibling breaks it in ways computed styles
   don't reveal). Do not re-attempt. */

.wedo-qty-btn-row {
	display: flex;
	align-items: center;
	gap: 32px;
	width: 100%;
}

/*
 * form.cart's own flex row (.wedo-qty-btn-row + APFS's
 * .wcsatt-add-to-subscription-wrapper checkbox) ships as `flex-wrap: nowrap`
 * from somewhere with higher specificity than a plain `form.cart` selector
 * (needs !important to win). This is NOT the redesign the note above warns
 * against -- it's one property flip plus a full-width flex-basis on the
 * checkbox wrapper, so that ONE item drops to its own row when there isn't
 * room, instead of being flex-shrunk down to its longest word's
 * min-content width. Surfaced by longer EN/RO/MK/SQ translations of "Add to
 * an existing subscription?" wrapping into an unreadable 3-4 line stack;
 * verified live that the qty+button row itself is unaffected (it already
 * fits on one line and stays there).
 */
form.cart {
	flex-wrap: wrap !important;
	row-gap: 12px;
}

.wcsatt-add-to-subscription-wrapper {
	flex-basis: 100%;
}

.wcsatt-add-to-subscription-wrapper label {
	display: flex;
	align-items: flex-start;
	gap: 6px;
}

/* Quantity: bare "− 1 +", no box (Figma group 691:1134 — 125×40). */
.wedo-qty-btn-row .quantity {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex: 0 0 auto;
	width: 125px !important;
	min-width: 125px;
	height: 40px;
	margin: 0 !important;
	padding: 0 !important;
	background: none !important;
	border: 0 !important;
	float: none;
}

.wedo-qty-btn-row .quantity .qty {
	width: 44px !important;
	border: 0 !important;
	background: transparent !important;
	box-shadow: none;
	font-family: Manrope, sans-serif;
	font-size: 30px;
	font-weight: 400;
	line-height: 1;
	color: #415350;
	text-align: center;
	padding: 0;
	margin: 0;
	appearance: textfield;
	-moz-appearance: textfield;
}

.wedo-qty-btn-row .quantity .qty::-webkit-inner-spin-button,
.wedo-qty-btn-row .quantity .qty::-webkit-outer-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.wedo-qty-btn-row .jet-woo-qty-control {
	flex: 0 0 auto;
	width: 31.4px;
	height: 31.4px;
	display: flex;
	align-items: center;
	justify-content: center;
	line-height: 0;
	text-decoration: none;
}

.wedo-qty-btn-row .jet-woo-qty-control .icon-svg,
.wedo-qty-btn-row .jet-woo-qty-control svg,
.wedo-qty-btn-row .jet-woo-qty-control img {
	width: 100% !important;
	height: 100% !important;
	display: block;
}

/* Buy button: fills the rest of the row, 48px pill (Figma 691:1132). */
.wedo-qty-btn-row .single_add_to_cart_button.button {
	height: 48px;
	display: flex;
	align-items: center;
	justify-content: center;
}

@media ( min-width: 768px ) {
	.wedo-qty-btn-row .single_add_to_cart_button.button {
		width: auto !important; /* jet-woo bundled CSS hardcodes width:100% */
		flex: 1 1 auto;
		min-width: 0;
	}
}

/* Elementor 4 dropped the align-justify width rule for buttons — restore it
   (used by the full-width quick-order button under the buy row). */
.elementor-widget-button.elementor-align-justify .elementor-button {
	width: 100% !important;
}

/* ------------------------------------------------------------------ *
 * Quick-order bar, Figma 691:1095 (desktop) / 698:1543 (mobile): a
 * TWO-part bar — bold label left, underlined "Натисни тук" + chevron
 * right. The Elementor button renders a single text, so the right part
 * is a pseudo-element. Scoped by the wedo-quick-order class set on the
 * widget's Advanced > CSS Classes.
 * ------------------------------------------------------------------ */
.wedo-quick-order .elementor-button {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.wedo-quick-order .elementor-button::after {
	content: "Натисни тук";
	font-weight: 400;
	text-decoration: underline;
	text-underline-offset: 2px;
	padding-right: 16px;
	background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 11' fill='none'><path d='M1 1l4 4.5L1 10' stroke='%23415350' stroke-opacity='0.5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") right center / 6px 11px no-repeat;
}

/* ------------------------------------------------------------------ *
 * PRE-ENHANCEMENT STATE — kills a ~1s flash of unstyled quantity input.
 *
 * The server sends a BARE `<div class="quantity"><input type=number>`
 * plus a sibling button; BOTH the ± controls and the .wedo-qty-btn-row
 * wrapper are created client-side (jet's cqs_main.js, then our
 * add-to-cart.js). Everything above is scoped to that wrapper, so until
 * JS lands NOTHING here applies and the user sees a raw browser number
 * input (70×37, spinner arrows) stacked above a full-width button.
 * Measured on staging: native input painted 2925ms, ± injected 3551ms,
 * wrapper created 3931ms => 1006ms of unstyled paint. cqs_main.js is
 * `defer`-ed (wedo-performance-tweaks), which is most of that delay.
 *
 * Fix: reproduce the FINAL geometry on the server-rendered DOM, so the
 * JS enhancement becomes visually a no-op. Verified pixel-identical to
 * the enhanced state at 1440px: qty 125×40, button 324×48, gap 32,
 * zero leading/trailing space.
 *
 * Scoping notes (both matter):
 *  - `:not(:has(.wedo-qty-btn-row))` => these rules switch themselves OFF
 *    the moment the wrapper exists, so the enhanced state is untouched.
 *    In a browser without :has() the whole rule is dropped => we simply
 *    fall back to today's behaviour, never to something broken.
 *  - the ± icons are gated on `:not(.jet-woo-quantity-button-added)`
 *    (jet's own marker class) because jet injects the real controls
 *    ~380ms BEFORE our wrapper appears; without this gate that window
 *    would paint four icons instead of two.
 *
 * ⚠️ form.cart carries hello-elementor's clearfix ::before/::after
 * (content:" "; display:table). As soon as form.cart becomes a flex
 * container those two become ZERO-WIDTH FLEX ITEMS, each eating one
 * 32px column-gap (leading + trailing = 64px stolen from the button).
 * Same trap as .woocommerce-product-rating — hence content:none below.
 * ------------------------------------------------------------------ */
/* !important on display: something in the jet/Elementor cascade pins
   form.cart to display:block and wins on specificity (verified live —
   column-gap applied from this same rule while display did not). */
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) {
	display: flex !important;
	flex-wrap: wrap;
	align-items: center;
	column-gap: 32px;
	row-gap: 12px;
}

/* !important required — the theme's clearfix rule outranks this one
   (verified live: without it the two phantom items still stole 2×32px). */
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row))::before,
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row))::after {
	content: none !important;
	display: none !important;
}

/* APFS blocks keep their own full-width rows above the qty/button row. */
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .wcsatt-options-wrapper,
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .wcsatt-add-to-subscription-wrapper {
	flex: 0 0 100%;
}

.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex: 0 0 auto;
	width: 125px !important;
	min-width: 125px;
	height: 40px;
	margin: 0 !important;
	padding: 0 !important;
	background: none !important;
	border: 0 !important;
	float: none;
}

/* Placeholder ± glyphs, same 31.4px circles jet will inject. Decorative
   only (pseudo-elements can't take clicks) — the native input is still
   typeable, so a JS failure degrades to "styled but no steppers" rather
   than to today's unstyled box. */
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity:not(.jet-woo-quantity-button-added)::before,
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity:not(.jet-woo-quantity-button-added)::after {
	content: "";
	flex: 0 0 auto;
	width: 31.4px;
	height: 31.4px;
	background-repeat: no-repeat;
	background-size: 100% 100%;
}

.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity:not(.jet-woo-quantity-button-added)::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 31.4 31.4'><circle cx='15.7' cy='15.7' r='15.7' fill='%23FFFFFF'/><line x1='8.1' y1='15.7' x2='23.3' y2='15.7' stroke='%23000000' stroke-width='1'/></svg>");
}

.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity:not(.jet-woo-quantity-button-added)::after {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 31.4 31.4'><circle cx='15.7' cy='15.7' r='15.7' fill='%23FFFFFF'/><line x1='15.7' y1='8.1' x2='15.7' y2='23.3' stroke='%23000000' stroke-width='1'/><line x1='8.1' y1='15.7' x2='23.3' y2='15.7' stroke='%23000000' stroke-width='1'/></svg>");
}

/* THE INTERMEDIATE STATE — jet has injected its real ± controls but our
   wrapper doesn't exist yet (~380ms window, jet fires on element_ready,
   we wrap 60ms after that). The placeholder pseudo-elements above have
   already switched off (.jet-woo-quantity-button-added), but the real
   controls' sizing lives under .wedo-qty-btn-row and can't reach them
   yet — so they collapsed to their intrinsic 16×16 and visibly SHRANK
   before snapping back to 31.4. Mirror the sizing here so the handover
   is invisible. Measured: intermediate 16×16 vs final 31×31. */
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity .jet-woo-qty-control {
	flex: 0 0 auto;
	width: 31.4px;
	height: 31.4px;
	display: flex;
	align-items: center;
	justify-content: center;
	line-height: 0;
	text-decoration: none;
}

.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity .jet-woo-qty-control .icon-svg,
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity .jet-woo-qty-control svg,
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity .jet-woo-qty-control img {
	width: 100% !important;
	height: 100% !important;
	display: block;
}

/* Structural resets ONLY — deliberately no typography here. The number's
   font-size/family/colour come from the jet widget's own Elementor
   controls (.elementor-element-993c4b5 .qty), which match this element
   in BOTH states and outrank the .wedo-qty-btn-row rules above (final
   renders 22px, not the 30px declared at line 58). Re-declaring type
   here would make the pre state differ from the post state — the exact
   flash this block exists to remove. */
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity .qty {
	width: 44px !important;
	border: 0 !important;
	background: transparent !important;
	box-shadow: none;
	text-align: center;
	padding: 0;
	margin: 0;
	appearance: textfield;
	-moz-appearance: textfield;
	/* colour IS re-declared (unlike size/family): the final value comes from
	   the wrapper-scoped rule at line 67, which can't reach this state. */
	color: #415350;
}

.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity .qty::-webkit-inner-spin-button,
.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity .qty::-webkit-outer-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .single_add_to_cart_button.button {
	height: 48px;
	display: flex;
	align-items: center;
	justify-content: center;
	width: auto !important; /* jet's bundled CSS hardcodes width:100% */
	flex: 1 1 0%;
	min-width: 0;
}

/* Mobile pre-enhancement: mirror the enhanced mobile metrics below. */
@media ( max-width: 767px ) {
	.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) {
		flex-wrap: nowrap;
		column-gap: 20px;
	}

	.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity {
		width: 108px !important;
		min-width: 108px;
		height: 32px;
	}

	.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity:not(.jet-woo-quantity-button-added)::before,
	.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity:not(.jet-woo-quantity-button-added)::after,
	.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity .jet-woo-qty-control {
		width: 23px;
		height: 23px;
	}

	.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .quantity .qty {
		width: 24px !important;
	}

	.jet-woo-builder-single-ajax-add-to-cart form.cart:not(:has(.wedo-qty-btn-row)) > .single_add_to_cart_button.button {
		height: 46px;
	}
}

/* Mobile (Figma Group 11 / 698:1538): qty and buy button share ONE row —
   qty 108×32 with 23px circles, button 46px filling the rest, 20px gap. */
@media ( max-width: 767px ) {
	.wedo-qty-btn-row {
		flex-wrap: nowrap;
		gap: 20px;
	}

	.wedo-qty-btn-row .quantity {
		width: 108px !important;
		min-width: 108px;
		height: 32px;
	}

	.wedo-qty-btn-row .quantity .qty {
		width: 24px !important;
		font-size: 22px;
	}

	.wedo-qty-btn-row .jet-woo-qty-control {
		width: 23px;
		height: 23px;
	}

	.wedo-qty-btn-row .single_add_to_cart_button.button {
		width: auto !important; /* jet's button_width_mobile:100% forces a wrap otherwise */
		flex: 1 1 auto;
		min-width: 0;
		height: 46px;
	}
}

/* ------------------------------------------------------------------ *
 * Title-row product rating (native Elementor Pro widget) — Figma
 * 691:1124 stars + 691:1130 "5.0 от 30 отзива". The text span is
 * appended by the elementor/widget/render_content filter in the
 * plugin bootstrap. Stars themselves are styled via the widget's own
 * controls (star_color/star_size on the 33618 instance).
 * ------------------------------------------------------------------ */
.woocommerce-product-rating {
	display: flex !important;
	align-items: center;
	gap: 10px;
}
/* The theme's clearfix ::before/::after (content:" "; display:table) become
   zero-width FLEX ITEMS here — the leading one + the 10px gap silently
   indented the stars 10px off the text grid. !important: the theme's
   clearfix selector outranks a plain class. */
.woocommerce-product-rating::before,
.woocommerce-product-rating::after {
	content: none !important;
}
.wedo-rating-text {
	font-family: Manrope, sans-serif;
	font-size: 18px;
	font-weight: 600;
	line-height: 1.2;
	color: rgba(65, 83, 80, 0.6);
}
@media (max-width: 768px) {
	.wedo-rating-text { font-size: 16px; }
}

/* ------------------------------------------------------------------ *
 * Fluid desktop typography (1025-1919px): at 1920 the sizes are
 * pixel-exact Figma (48/24/22/20/18, verified via design pulls);
 * on narrower desktops the layout scales (content = vw-140) but fixed
 * fonts looked oversized vs the proportionally-scaled Figma frame —
 * the user-reported "fonts bigger than Figma". Each rule is the Figma
 * px expressed as vw of the 1920 frame, clamped so 1025-1366 doesn't
 * get unreadably small. !important beats Elementor's wrapper-specific
 * control CSS. ≥1920 resolves to the exact Figma px.
 *
 * (Product title/H1 used to be forced here too (62px, fluid) but that
 * fought the widget's own typography control — removed 2026-07-28 so
 * the Elementor control (now 22/mobile+mobile_extra+tablet, 32/tablet_
 * extra+laptop+desktop+widescreen, set directly on the widget) is the
 * single source of truth for title size.)
 * ------------------------------------------------------------------ */
@media (min-width: 1025px) and (max-width: 1919px) {
	.wedo-feature__heading,
	.wedo-rp__heading,
	.wedo-rev__heading,
	.wedo-faq__heading {
		font-size: clamp(28px, 2.5vw, 48px) !important;     /* 48 @1920 */
		line-height: 1.25 !important;                       /* 60/48 */
	}

	.wedo-rev__score-num {
		font-size: clamp(64px, 5.7292vw, 110px) !important; /* 110 @1920 */
	}

	.wedo-po__title,
	.wedo-po__price {
		font-size: clamp(15px, 1.25vw, 24px) !important;    /* 24 @1920 */
	}

	/* Carousel card texts follow the 850-era redesign scale (691:1198/1202):
	   title 22/600, price 28/700 — split from the po rule (both were 24
	   against the pre-redesign file). */
	.wedo-rp__title {
		font-size: clamp(14px, 1.1458vw, 22px) !important;  /* 22 @1920 */
		line-height: 1.1 !important;
	}

	.wedo-rp__price {
		font-size: clamp(17px, 1.4583vw, 28px) !important;  /* 28 @1920 */
		line-height: 1.15 !important;
	}

	.wedo-feature__item-title {
		font-size: clamp(14px, 1.1458vw, 22px) !important;  /* 22 @1920 */
		line-height: 1.5 !important;
	}

	.wedo-feature__item-text {
		font-size: clamp(13px, 1.0417vw, 20px) !important;  /* 20 @1920 */
		line-height: 1.4 !important;
	}

	.wedo-rev__text,
	.wedo-rev__item p,
	.wedo-rating-text {
		font-size: clamp(13px, 0.9375vw, 18px) !important;  /* 18 @1920 */
		line-height: 1.444 !important;
	}

	/* Main product section native texts (description, bullets, card subtitles,
	   benefits, trust badges, accordion) — same proportional scaling. */
	[data-id="bd5dc8a"] p, [data-id="bd5dc8a"] li,
	[data-id="8bb175e"] p, [data-id="8bb175e"] li,
	.wedo-po__subtitle, .wedo-po__benefits, .wedo-po__regular,
	[data-id="5a07d7b3"] .elementor-heading-title,
	[data-id="5a07d7b3"] p,
	/* The trust badges' body copy is matched via `p` — but the BG "Безплатна
	   доставка" text-editor stores a BARE TEXT NODE (no <p> wrapper) while its
	   two siblings store "<p>…</p>", so it alone escaped this rule and rendered
	   at the control's 16px next to their 13px. Matching the widget element
	   itself catches the text whether or not it happens to be wrapped —
	   note this site runs Elementor's optimized DOM output, so there is NO
	   .elementor-widget-container to hang it on. */
	[data-id="5a07d7b3"] .elementor-widget-text-editor {
		font-size: clamp(13px, 0.8333vw, 16px) !important;  /* 16 @1920 */
		line-height: 1.5 !important;
	}
}

/* Smaller stars site-wide (user request 2026-07-22, deliberately below the
   earlier Figma-derived sizes): title-row 24 max (was 31), histogram 18 max
   (was 24), all fluid with the desktop range and calm on mobile. */
@media (min-width: 1025px) {
	.woocommerce-product-rating .star-rating {
		font-size: clamp(22px, 1.6146vw, 31px) !important; /* Figma 691:1124: 31px @1920 */
	}
	.wedo-rev__hist-stars {
		font-size: clamp(17px, 1.25vw, 24px) !important;   /* Figma 691:1254: 24px @1920 */
	}
}
/* Mobile title-row stars: Figma 698:1530 = ~18px */
@media (max-width: 1024px) {
	.woocommerce-product-rating .star-rating {
		font-size: 18px !important;
	}
}

/* 481-1024: the desktop typography controls carry PIXEL line-heights (60/28/26)
   that leak onto the smaller mobile/tablet font sizes (e.g. 20px heading with
   a 60px line-height = triple spacing). Unitless ratios restore correct
   row spacing at every size. NOT ≤480: there the widgets' mobile control
   defaults own the line-heights (Figma-exact) — !important here would stomp
   them (the R9 lesson). */
@media (min-width: 481px) and (max-width: 1024px) {
	.wedo-feature__heading {
		line-height: 1.25 !important;
	}
	.wedo-feature__item-text {
		line-height: 1.4 !important;
	}
	.wedo-rev__text,
	.wedo-rev__item p {
		line-height: 1.444 !important;
	}
}

/* Figma mobile rating text (698:1536): 13px Regular. (481-768 keeps the
   earlier 16px rule above.) */
@media (max-width: 480px) {
	.wedo-rating-text {
		font-size: 13px;
		font-weight: 400;
	}
}

/* 481-1024 (big phones / phone landscape / tablets): the section headings
   otherwise render their raw desktop 48px control value — oversized for the
   range (5 lines inside the feature half-column at 1024, near-full-bleed
   lines at 768). No Figma frame exists for this range; scaled to sit between
   the mobile 22 and the desktop fluid floor 28. */
@media (min-width: 481px) and (max-width: 1024px) {
	.wedo-feature__heading,
	.wedo-rp__heading,
	.wedo-rev__heading,
	.wedo-faq__heading {
		font-size: clamp(28px, 4.2vw, 36px) !important;
		line-height: 1.25 !important;
	}
}

/* ------------------------------------------------------------------ *
 * Title-row rating — mobile compaction + click-to-reviews (2026-08-31)
 *
 * Rendered markup, byte-identical in every language (WooCommerce core
 * classes + the .wedo-rating-text span appended by the
 * elementor/widget/render_content filter in the plugin bootstrap):
 *
 *   .woocommerce-product-rating          (display:flex, gap:10px, above)
 *     |- .star-rating                    stars
 *     |- .wedo-rating-text               "4.8 от 4 отзива" / "4.8 from 4
 *     |                                   reviews" / "4.8 din 4 recenzii"
 *     `- a.woocommerce-review-link       "(4 клиентски отзива)" — the
 *                                        parenthesised count, and the
 *                                        ONLY part long enough to push
 *                                        the row onto a second line at
 *                                        375/390px.
 *
 * So <768px hides exactly that one element and nothing else: stars and
 * the numeric score keep their existing sizes and stay on one line.
 * display:none (not visibility/opacity) so it claims zero space — and
 * it costs no functionality, because add-to-cart.js promotes the whole
 * .woocommerce-product-rating row to the #reviews link on every
 * viewport. Class-name based only, so BG/EN/RO/MK/SQ behave identically.
 * ------------------------------------------------------------------ */
@media (max-width: 767.98px) {
	.woocommerce-product-rating .woocommerce-review-link {
		display: none !important;
	}

	/* Belt and braces against a 2nd row: the two survivors never wrap and
	   never shrink into an ellipsis. Scoped to mobile so the desktop
	   layout above is untouched. */
	.woocommerce-product-rating {
		flex-wrap: nowrap;
	}

	.woocommerce-product-rating .star-rating,
	.woocommerce-product-rating .wedo-rating-text {
		flex: 0 0 auto;
		white-space: nowrap;
	}
}

/* Whole-row click target (behaviour lives in add-to-cart.js). The row
   only becomes a real control once the JS has tagged it, so an
   un-enhanced row (JS blocked/failed) keeps a plain text cursor and the
   inner <a href="#reviews"> as its fallback. */
.woocommerce-product-rating[data-wedo-rating-link] {
	cursor: pointer;
}

.woocommerce-product-rating[data-wedo-rating-link]:focus-visible {
	outline: 2px solid rgba(65, 83, 80, 0.6);
	outline-offset: 4px;
	border-radius: 4px;
}

/* The inner link is no longer its own tab stop (add-to-cart.js sets
   tabindex="-1" so the row is the single stop) — keep it from painting a
   second, nested focus ring when clicked. */
.woocommerce-product-rating[data-wedo-rating-link] .woocommerce-review-link:focus {
	outline: none;
}
