/**
 * WooCommerce surface styles.
 *
 * Scoped under `body.flanfudge-shop` for archive / cart / checkout / my
 * account pages, and the slide-over mini-cart drawer (always rendered
 * once Woo is active).
 *
 * Visual references (Lovable):
 *   - https://flanfudge-direct.lovable.app/ (homepage product cards)
 *   - General Lovable luxury dessert aesthetic: olive on cream, soft
 *     shadows, generous radii, sage accents.
 *
 * @package FlanFudge
 */

/* =========================================================================
 * 1. Slide-over mini-cart drawer
 *
 *    Fires from the right side of the viewport when:
 *      - The header cart pill is clicked (`[data-flanfudge-cart-open]`)
 *      - The `added_to_cart` event is dispatched by Woo's AJAX add
 * ========================================================================= */

.ff-mini-cart {
	position: fixed;
	inset: 0;
	z-index: 1200;
	pointer-events: none;
	visibility: hidden;
}

.ff-mini-cart.is-open {
	pointer-events: auto;
	visibility: visible;
}

.ff-mini-cart__overlay {
	position: absolute;
	inset: 0;
	background: rgb(31 42 36 / 0.45);
	backdrop-filter: blur(2px);
	-webkit-backdrop-filter: blur(2px);
	opacity: 0;
	transition: opacity var(--ff-dur-base) var(--ff-ease-out);
}

.ff-mini-cart.is-open .ff-mini-cart__overlay {
	opacity: 1;
}

.ff-mini-cart__panel {
	position: absolute;
	top: 0;
	right: 0;
	height: 100%;
	width: min(420px, 100vw);
	background: var(--ff-bg);
	color: var(--ff-foreground);
	display: flex;
	flex-direction: column;
	transform: translateX(100%);
	transition: transform var(--ff-dur-base) var(--ff-ease-out);
	box-shadow: -24px 0 60px rgb(31 42 36 / 0.20);
	outline: none;
}

.ff-mini-cart.is-open .ff-mini-cart__panel {
	transform: translateX(0);
}

.ff-mini-cart__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 22px 24px 18px;
	border-bottom: 1px solid var(--ff-border);
}

body.flanfudge .ff-mini-cart__title {
	font-size: 1.25rem;
	font-weight: var(--ff-weight-medium);
	color: var(--ff-foreground);
	letter-spacing: -0.015em;
	margin: 0;
}

.ff-mini-cart__close {
	width: 36px;
	height: 36px;
	border: 0;
	background: transparent;
	color: var(--ff-foreground);
	border-radius: 50%;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	transition: background-color var(--ff-dur-fast) var(--ff-ease);
}

.ff-mini-cart__close:hover,
.ff-mini-cart__close:focus-visible {
	background: var(--ff-mist);
}

.ff-mini-cart__scroll {
	flex: 1 1 auto;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}

.ff-mini-cart__body {
	padding: 0;
}

/* Empty state */

.ff-mini-cart__empty {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 12px;
	padding: 32px 24px;
}

body.flanfudge .ff-mini-cart__empty-title {
	font-size: 1.0625rem;
	font-weight: var(--ff-weight-medium);
	color: var(--ff-foreground);
	margin: 0;
}

.ff-mini-cart__empty-sub {
	color: var(--ff-muted-fg);
	font-size: 0.9375rem;
	line-height: 1.5;
	margin: 0 0 8px;
}

/* Item list */

.ff-mini-cart__list {
	list-style: none;
	margin: 0;
	padding: 8px 0;
}

.ff-mini-cart__item {
	position: relative;
	display: grid;
	grid-template-columns: 64px 1fr auto;
	gap: 14px;
	align-items: flex-start;
	padding: 14px 24px;
	border-bottom: 1px solid var(--ff-border);
}

.ff-mini-cart__item:last-child {
	border-bottom: 0;
}

.ff-mini-cart__media {
	display: block;
	width: 64px;
	height: 64px;
	border-radius: var(--ff-radius);
	overflow: hidden;
	background: var(--ff-mist);
	flex-shrink: 0;
}

.ff-mini-cart__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.ff-mini-cart__info {
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.ff-mini-cart__name {
	color: var(--ff-foreground);
	font-weight: var(--ff-weight-medium);
	font-size: 0.9375rem;
	line-height: 1.3;
	letter-spacing: -0.005em;
	text-decoration: none;
}

.ff-mini-cart__name:hover {
	color: var(--ff-accent);
}

.ff-mini-cart__meta {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 0.8125rem;
	color: var(--ff-muted-fg);
}

.ff-mini-cart__qty {
	font-variant-numeric: tabular-nums;
}

.ff-mini-cart__sub {
	color: var(--ff-foreground);
	font-weight: var(--ff-weight-bold);
}

.ff-mini-cart__sub bdi {
	font-weight: inherit;
}

.ff-mini-cart__remove {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: transparent;
	color: var(--ff-muted-fg);
	font-size: 18px;
	line-height: 1;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	text-decoration: none;
	transition: background-color var(--ff-dur-fast) var(--ff-ease),
	            color var(--ff-dur-fast) var(--ff-ease);
}

.ff-mini-cart__remove.is-removing {
	opacity: 0.45;
	pointer-events: none;
}

.ff-mini-cart__remove:hover,
.ff-mini-cart__remove:focus-visible {
	background: var(--ff-mist);
	color: var(--ff-foreground);
}

/* Totals + actions */

.ff-mini-cart__totals {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 18px 24px;
	border-top: 1px solid var(--ff-border);
	background: var(--ff-cream-soft);
	font-size: 0.9375rem;
	color: var(--ff-foreground);
}

.ff-mini-cart__totals strong {
	font-size: 1.125rem;
	font-weight: var(--ff-weight-bold);
	letter-spacing: -0.01em;
}

.ff-mini-cart__actions {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px;
	padding: 16px 24px 24px;
	background: var(--ff-bg);
}

.ff-mini-cart__actions .flanfudge-btn {
	width: 100%;
}

/* Toast strip — slides down from the top of the panel after a successful add */

.ff-mini-cart__toast {
	position: absolute;
	left: 16px;
	right: 16px;
	top: 14px;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 14px;
	border-radius: var(--ff-radius-pill);
	background: var(--ff-foreground);
	color: var(--ff-cream);
	font-size: 0.875rem;
	font-weight: var(--ff-weight-medium);
	box-shadow: 0 12px 32px rgb(31 42 36 / 0.25);
	transform: translateY(-120%);
	opacity: 0;
	pointer-events: none;
	transition: transform var(--ff-dur-base) var(--ff-ease-out),
	            opacity var(--ff-dur-base) var(--ff-ease-out);
}

.ff-mini-cart__toast.is-visible {
	transform: translateY(0);
	opacity: 1;
}

/* Cart count badge in the header */

.ff-cart-count {
	position: absolute;
	top: -4px;
	right: -4px;
	min-width: 18px;
	height: 18px;
	padding: 0 5px;
	border-radius: 9px;
	background: var(--ff-cream);
	color: var(--ff-foreground);
	font-size: 11px;
	font-weight: var(--ff-weight-bold);
	line-height: 18px;
	text-align: center;
	font-variant-numeric: tabular-nums;
	transition: transform var(--ff-dur-fast) var(--ff-ease);
}

.ff-cart-count[data-count="0"] {
	display: none;
}

.ff-cart-count.is-bumping {
	animation: ff-cart-bump 0.4s var(--ff-ease-out);
}

@keyframes ff-cart-bump {
	0%   { transform: scale(1); }
	30%  { transform: scale(1.35); }
	60%  { transform: scale(0.92); }
	100% { transform: scale(1); }
}

/* Pill is `position: relative` so the badge can absolute-position. */
body.flanfudge .ff-icon-btn--cart {
	position: relative;
}

/* The +Add pill flashes briefly while the AJAX call is in flight. */

.ff-product__add.loading {
	opacity: 0.6;
	pointer-events: none;
}

.ff-product__add.added::after {
	content: "✓";
	margin-left: 4px;
	font-weight: var(--ff-weight-bold);
}

/* WooCommerce default places a "View Cart" link after the Add button.
   We surface that as a one-off CTA in the slide-over instead, so hide
   the inline duplicate. */
.ff-product__row .added_to_cart.wc-forward {
	display: none;
}

/* =========================================================================
 * 2. Shop archive (Menu page) chrome
 * ========================================================================= */

body.flanfudge-shop .ff-section--shop {
	padding-block: clamp(40px, 6vw, 96px);
}

/* =========================================================================
 * Editorial header (eyebrow + title + subtitle)
 *
 * Pixel-tuned to match https://flanfudge-direct.lovable.app/menu — the
 * Lovable hero is left-aligned, the eyebrow is uppercase letterspaced
 * sage, the H1 is dark olive 500-weight, and there's a hairline
 * separator below the hero that the chip row sits inside.
 * ========================================================================= */

.ff-shop-hero {
	max-width: 760px;
	margin: 0 0 clamp(28px, 3.5vw, 56px);
}

.ff-shop-hero__eyebrow {
	margin-bottom: var(--ff-space-3);
}

body.flanfudge .ff-shop-hero__title {
	font-size: clamp(2.5rem, 3vw + 1rem, 3.75rem);
	font-weight: var(--ff-weight-bold);
	letter-spacing: -0.03em;
	line-height: 1.02;
	margin: 0 0 var(--ff-space-4);
	color: var(--ff-foreground);
}

.ff-shop-hero__subtitle {
	color: var(--ff-muted-fg);
	font-size: clamp(1rem, 0.4vw + 0.95rem, 1.125rem);
	line-height: 1.6;
	margin: 0;
	max-width: 56ch;
}

/* =========================================================================
 * Category filter chips
 *
 * Lovable shows a single horizontal row between two faint hairlines.
 * Inactive chips have a soft sage tint, active is solid dark olive with
 * cream text. No border on the chip itself; the only borders in this
 * area belong to the wrapping <nav>.
 * ========================================================================= */

.ff-shop-filters {
	margin: 0 0 clamp(32px, 4vw, 56px);
	padding: var(--ff-space-5) 0;
	border-top: 1px solid var(--ff-border);
	border-bottom: 1px solid var(--ff-border);
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	/* Hide the scrollbar on overflow so the chip row reads as a deliberate
	   horizontal nav element rather than an incidental scroller. */
	scrollbar-width: none;
}

.ff-shop-filters::-webkit-scrollbar {
	display: none;
}

.ff-shop-filters__list {
	display: inline-flex;
	flex-wrap: nowrap;
	gap: 10px;
	list-style: none;
	margin: 0;
	padding: 0;
}

@media (min-width: 768px) {
	.ff-shop-filters__list {
		flex-wrap: wrap;
		gap: 12px;
	}
}

/* Chip selector is intentionally scoped under `body.flanfudge` so it
   wins (specificity 0,2,1) against WooCommerce's default `.woocommerce
   a` (0,1,1) AND Elementor's typography rules — the active "All" chip
   was rendering its label invisible on the live site because Elementor
   was forcing the anchor colour back to the foreground value over our
   cream. Listing every link-state explicitly closes the visited /
   focus loophole too. */
body.flanfudge .ff-shop-filters__chip,
body.flanfudge .ff-shop-filters__chip:link,
body.flanfudge .ff-shop-filters__chip:visited {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 0 22px;
	border-radius: var(--ff-radius-pill);
	border: 0;
	background: rgb(163 185 122 / 0.16);
	color: var(--ff-foreground);
	font-size: 0.9375rem;
	font-weight: var(--ff-weight-semibold);
	letter-spacing: 0;
	text-decoration: none;
	white-space: nowrap;
	-webkit-tap-highlight-color: transparent;
	transition: background-color var(--ff-dur-fast) var(--ff-ease),
	            color var(--ff-dur-fast) var(--ff-ease),
	            transform var(--ff-dur-fast) var(--ff-ease);
}

body.flanfudge .ff-shop-filters__chip:hover,
body.flanfudge .ff-shop-filters__chip:focus-visible {
	background: rgb(163 185 122 / 0.28);
	color: var(--ff-foreground);
	outline: none;
}

body.flanfudge .ff-shop-filters__chip:focus-visible {
	outline: 2px solid var(--ff-ring);
	outline-offset: 2px;
}

body.flanfudge .ff-shop-filters__chip:active {
	transform: scale(0.97);
}

body.flanfudge .ff-shop-filters__chip.is-active,
body.flanfudge .ff-shop-filters__chip.is-active:link,
body.flanfudge .ff-shop-filters__chip.is-active:visited,
body.flanfudge .ff-shop-filters__chip.is-active:hover,
body.flanfudge .ff-shop-filters__chip.is-active:focus-visible {
	background: var(--ff-foreground);
	color: var(--ff-cream);
}

/* The chip label sits in its own <span> so we can lock its colour
   independently of any plugin-injected `a > *` colour rule. */
body.flanfudge .ff-shop-filters__chip-label {
	color: inherit;
	font: inherit;
	letter-spacing: inherit;
}

body.flanfudge-shop .ff-section--shop .woocommerce-result-count {
	color: var(--ff-muted-fg);
	font-size: 0.875rem;
	margin: 0;
}

body.flanfudge-shop .ff-section--shop .woocommerce-ordering {
	margin: 0 0 var(--ff-space-6);
}

body.flanfudge-shop .ff-section--shop .woocommerce-ordering select {
	padding: 10px 14px;
	border-radius: var(--ff-radius-pill);
	border: 1px solid var(--ff-border);
	background: var(--ff-card);
	color: var(--ff-foreground);
	font-family: inherit;
	font-size: 0.875rem;
	cursor: pointer;
}

body.flanfudge-shop .ff-section--shop .woocommerce-notices-wrapper {
	margin-bottom: var(--ff-space-6);
}

/* WC's `<ul class="products">` is replaced by `<div class="ff-products">`
   via `woocommerce_product_loop_start`. But Woo also fires `loop-start.php`
   in some themes — defensively normalise both shapes here. */
body.flanfudge-shop ul.products {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--ff-space-6);
	list-style: none;
	padding: 0;
	margin: 0;
}

/* Brand-wide grid contract: 1 / 2 / 4 columns at desktop. Matches the
   "You might also love" related row and the Menu page below. */
@media (min-width: 640px)  { body.flanfudge-shop ul.products { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { body.flanfudge-shop ul.products { grid-template-columns: repeat(4, 1fr); gap: var(--ff-space-6); } }

body.flanfudge-shop ul.products li.product {
	margin: 0;
	padding: 0;
	background: transparent;
	display: flex;
}

/* The .ff-product card renders inside <li.product> — let it take the
   full cell so the inner radius/shadow comes from the card itself. */
body.flanfudge-shop ul.products li.product > .ff-product {
	flex: 1;
}

/* =========================================================================
 * Menu page grid — `.ff-products--menu` is the WC-decoupled markup that
 * the "Menu — FlanFudge" page template emits. Selectors are scoped
 * under `body.flanfudge` (specificity 0,2,1) so they always beat
 * WooCommerce's `.woocommerce.columns-N ul.products` (0,3,1) variants
 * that otherwise pin every card to 22 % / 30 % / 16 % width on the
 * shop archive route. The grid stays the same on both routes:
 *
 *   < 640 px  → 1 column
 *   ≥ 640 px  → 2 columns
 *   ≥ 1024 px → 4 columns  (matches "You might also love" + Shop)
 * ========================================================================= */

body.flanfudge .ff-products--menu {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--ff-space-6);
	list-style: none;
	margin: 0;
	padding: 0;
	width: 100%;
}

/* Small tablets: 2-up menu grid (phones stay 1-up until 480px) */
@media (min-width: 480px) {
	body.flanfudge .ff-products--menu {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (min-width: 640px) {
	body.flanfudge .ff-products--menu {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (min-width: 1024px) {
	body.flanfudge .ff-products--menu {
		grid-template-columns: repeat(4, 1fr);
		gap: var(--ff-space-6);
	}
}

/* Each grid cell is a plain <div> — clear any inherited float / width
   that may have leaked in from GP, Elementor or a child theme. The
   contained card stretches to fill the cell so the radius / shadow
   live on .ff-product itself. */
body.flanfudge .ff-products--menu .ff-products__cell {
	display: flex;
	flex-direction: column;
	width: 100%;
	max-width: none;
	min-width: 0;
	margin: 0;
	padding: 0;
	float: none;
	background: transparent;
	list-style: none;
}

body.flanfudge .ff-products--menu .ff-products__cell > .ff-product {
	flex: 1;
	width: 100%;
	max-width: none;
}

/* =========================================================================
 * Shop / Menu product card refinements
 *
 * The base `.ff-product` styling (sections.css) gives us the card chrome
 * and hover. Below we layer in the Lovable-specific tweaks that only
 * apply on the shop/menu surfaces — 4:5 portrait image, larger title,
 * generous breathing room, no enforced description min-height. The
 * homepage signature-picks grid keeps the square portrait it already
 * uses so it stays visually consistent with the existing design.
 * ========================================================================= */

body.flanfudge-shop .ff-product {
	background: var(--ff-card);
	border-radius: 20px;
	box-shadow: 0 1px 2px rgb(31 42 36 / 0.04),
	            0 8px 24px rgb(31 42 36 / 0.05);
}

body.flanfudge-shop .ff-product:hover {
	transform: translateY(-4px);
	box-shadow: 0 18px 44px rgb(31 42 36 / 0.10);
}

/* Brand-wide product-card image ratio. `.ff-product__media` already
   sets 1 / 1 in sections.css; we re-assert it here so the higher-
   specificity `body.flanfudge-shop` selector keeps it consistent on
   the Menu / Shop / Category routes (previously this rule forced
   4 / 5 only on shop pages, which broke parity with the homepage
   signature picks and the PDP "You might also love" row). */
body.flanfudge-shop .ff-product__media {
	aspect-ratio: 1 / 1;
}

body.flanfudge-shop .ff-product__badge {
	top: 14px;
	left: 14px;
	padding: 7px 14px;
	background: rgb(247 241 225 / 0.98);
	color: var(--ff-foreground);
	font-size: 10px;
	letter-spacing: 0.12em;
	box-shadow: 0 2px 6px rgb(31 42 36 / 0.10);
}

body.flanfudge-shop .ff-product__body {
	padding: var(--ff-space-5) var(--ff-space-5) var(--ff-space-5);
	gap: 6px;
}

body.flanfudge-shop .ff-product__title,
body.flanfudge .ff-product__title {
	font-size: 1.125rem;
	font-weight: var(--ff-weight-bold);
	color: var(--ff-foreground);
	line-height: 1.25;
	letter-spacing: -0.015em;
	margin: 0;
}

body.flanfudge-shop .ff-product__desc {
	color: var(--ff-muted-fg);
	font-size: 0.9375rem;
	line-height: 1.55;
	margin: 0;
	min-height: 0;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

body.flanfudge-shop .ff-product__row {
	margin-top: var(--ff-space-4);
	padding-top: 0;
}

body.flanfudge-shop .ff-product__price {
	font-size: 1.0625rem;
	font-weight: var(--ff-weight-bold);
	color: var(--ff-foreground);
}

body.flanfudge-shop .ff-product__add {
	min-height: 38px;
	padding: 0.5rem 1rem;
	font-size: 0.9375rem;
}

/* "No desserts in this category" empty state. */
.ff-shop-empty {
	padding: clamp(48px, 6vw, 96px) 0;
	text-align: center;
	color: var(--ff-muted-fg);
}

.ff-shop-empty p {
	margin: 0 0 var(--ff-space-5);
}

/* Menu listing — no WC loop toolbar (count, sort, pagination). */
body.flanfudge-page--menu .woocommerce-result-count,
body.flanfudge-page--menu .woocommerce-ordering,
body.flanfudge-page--menu .woocommerce-pagination,
body.flanfudge-page--menu .ff-shop-pagination,
body.flanfudge-shop--menu .woocommerce-result-count,
body.flanfudge-shop--menu .woocommerce-ordering,
body.flanfudge-shop--menu .woocommerce-pagination,
body.flanfudge-shop--menu .ff-shop-pagination,
body.post-type-archive-product:not([class*="tax-product"]) .woocommerce-result-count,
body.post-type-archive-product:not([class*="tax-product"]) .woocommerce-ordering,
body.post-type-archive-product:not([class*="tax-product"]) .woocommerce-pagination,
body.woocommerce-shop .woocommerce-result-count,
body.woocommerce-shop .woocommerce-ordering,
body.woocommerce-shop .woocommerce-pagination {
	display: none;
}

/* Pagination for the custom Menu page template. */
.ff-shop-pagination {
	margin-top: clamp(48px, 5vw, 80px);
	display: flex;
	justify-content: center;
}

.ff-shop-pagination ul {
	display: inline-flex;
	gap: 6px;
	list-style: none;
	padding: 0;
	margin: 0;
}

.ff-shop-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding: 0 14px;
	border-radius: var(--ff-radius-pill);
	background: rgb(163 185 122 / 0.16);
	color: var(--ff-foreground);
	text-decoration: none;
	font-size: 0.9375rem;
	font-weight: var(--ff-weight-semibold);
}

.ff-shop-pagination .page-numbers.current,
.ff-shop-pagination .page-numbers:hover {
	background: var(--ff-foreground);
	color: var(--ff-cream);
}

/* Pagination */

body.flanfudge-shop .woocommerce-pagination {
	margin-top: var(--ff-space-12);
	text-align: center;
}

body.flanfudge-shop .woocommerce-pagination ul {
	display: inline-flex;
	gap: 6px;
	list-style: none;
	padding: 0;
	margin: 0;
	border: 0;
}

body.flanfudge-shop .woocommerce-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 38px;
	height: 38px;
	padding: 0 14px;
	border-radius: var(--ff-radius-pill);
	border: 1px solid var(--ff-border);
	background: var(--ff-card);
	color: var(--ff-foreground);
	font-weight: var(--ff-weight-medium);
	text-decoration: none;
}

body.flanfudge-shop .woocommerce-pagination .page-numbers.current {
	background: var(--ff-foreground);
	color: var(--ff-cream);
	border-color: var(--ff-foreground);
}

body.flanfudge-shop .woocommerce-pagination .page-numbers:hover {
	border-color: var(--ff-foreground);
}

/* Sale flash — shared between loop and single. */

.ff-onsale {
	position: absolute;
	top: 16px;
	right: 16px;
	padding: 6px 12px;
	background: var(--ff-foreground);
	color: var(--ff-cream);
	font-size: 10px;
	font-weight: var(--ff-weight-bold);
	letter-spacing: var(--ff-tracking-widest);
	text-transform: uppercase;
	border-radius: var(--ff-radius-pill);
	z-index: 2;
}

/* Breadcrumbs */

.ff-breadcrumb {
	font-size: 0.8125rem;
	color: var(--ff-muted-fg);
	margin: 0 0 var(--ff-space-6);
	letter-spacing: 0.01em;
}

.ff-breadcrumb a {
	color: var(--ff-muted-fg);
	text-decoration: none;
}

.ff-breadcrumb a:hover {
	color: var(--ff-foreground);
}

.ff-breadcrumb__sep {
	margin: 0 8px;
	color: var(--ff-muted-fg);
	opacity: 0.6;
}

/* =========================================================================
 * Reduced motion (mini-cart lives in this bundle — must load globally)
 * ========================================================================= */

@media (prefers-reduced-motion: reduce) {
	.ff-mini-cart__panel,
	.ff-mini-cart__overlay,
	.ff-mini-cart__toast {
		transition: none;
	}
	.ff-cart-count.is-bumping {
		animation: none;
	}
}

