/* =====================================================================
   Flora Child Theme — woocommerce.css
   WooCommerce template and block overrides, Flora design-system tokens
   ===================================================================== */

/* ── SHOP / ARCHIVE ── */
/* Contain the [products] shortcode wrapper so grid never overflows. */
.woocommerce.columns-1,
.woocommerce.columns-2,
.woocommerce.columns-3,
.woocommerce.columns-4,
.flora-entry-content .woocommerce {
	width: 100%;
	max-width: 100%;
}
.woocommerce .products,
.woocommerce-page .products {
	display: grid !important;
	grid-template-columns: repeat(4, 1fr);
	gap: 14px !important;
	margin: 0 !important;
	padding: 0 !important;
	float: none !important;
	width: 100%;
	box-sizing: border-box;
	list-style: none;
}
.woocommerce .products::before,
.woocommerce .products::after { content: none !important; display: none !important; }

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
	display: flex;
	flex-direction: column;
	background: #fff;
	border-radius: var(--flora-radius-lg);
	border: .5px solid var(--flora-div);
	overflow: hidden;
	padding: 0;
	width: auto !important;
	float: none !important;
	margin: 0 !important;
	box-sizing: border-box;
	transition: transform .2s, box-shadow .2s, border-color .2s;
}
.woocommerce ul.products li.product:hover {
	transform: translateY(-3px);
	box-shadow: var(--flora-shadow-md);
	border-color: var(--flora-im);
}
.woocommerce ul.products li.product a img {
	width: 100%;
	height: 160px;
	object-fit: cover;
	display: block;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title {
	color: var(--flora-ink);
	font-size: .94rem;
	font-weight: 700;
	padding: 8px 12px 4px;
	margin: 0;
}
.woocommerce ul.products li.product .price {
	color: var(--flora-acc) !important;
	font-size: 1rem;
	font-weight: 700;
	padding: 0 12px 6px;
	display: block;
}
.woocommerce ul.products li.product .price del { color: var(--flora-muted) !important; font-size: .82rem; }
.woocommerce ul.products li.product .price ins { text-decoration: none !important; color: var(--flora-acc) !important; }

/* Loop Add to Cart */
.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product .add_to_cart_button {
	display: block !important;
	width: 100% !important;
	background: var(--flora-acc) !important;
	color: #fff !important;
	font-size: .75rem !important;
	font-weight: 700 !important;
	letter-spacing: .08em !important;
	text-transform: uppercase !important;
	padding: 10px !important;
	border: none !important;
	border-radius: 0 !important;
	cursor: pointer;
	transition: background .15s;
	margin-top: 6px;
	min-height: 44px;
}
.woocommerce ul.products li.product .button:hover {
	background: var(--flora-acc-h) !important;
	color: #fff !important;
}

/* ── FLORA PRODUCT CARD PARTS ── */
.flora-pc__link { display: block; text-decoration: none !important; flex: 1; }
.flora-pc__img {
	position: relative;
	background: var(--flora-icy);
	aspect-ratio: 1 / 1;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
.flora-pc__img img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover;
	display: block;
	margin: 0 !important;
}
.flora-pc__cat {
	font-size: .64rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--flora-muted);
	padding: 9px 12px 1px;
}
.flora-pc__nm,
.woocommerce ul.products li.product .flora-pc__nm {
	font-size: .94rem;
	font-weight: 700;
	color: var(--flora-ink);
	line-height: 1.3;
	padding: 0 12px 4px;
	margin: 0;
}
.flora-pc__pr,
.woocommerce ul.products li.product .flora-pc__pr.price {
	color: var(--flora-acc) !important;
	font-size: 1rem;
	font-weight: 700;
	padding: 0 12px 2px;
}
.flora-pc__st { padding: 0 12px 4px; }
.flora-pc__st .star-rating { font-size: .8rem; color: var(--flora-acc); margin: 0; }
.flora-pc .flora-loop-pts { padding: 0 12px 6px; margin-top: 0; }
.woocommerce ul.products li.product.flora-pc .button,
.woocommerce ul.products li.product.flora-pc .add_to_cart_button {
	margin-top: auto;
	border-radius: 0 !important;
}

/* Sale badge */
.woocommerce ul.products li.product .onsale,
.woocommerce span.onsale {
	background: var(--flora-sale) !important;
	color: var(--flora-sale-lt) !important;
	border-radius: var(--flora-radius-sm) !important;
	font-size: .72rem;
	font-weight: 700;
	padding: 3px 9px;
	top: 8px;
	left: 8px;
	min-height: unset;
	line-height: 1.4;
}

/* ── SINGLE PRODUCT ── */
.single-product .summary { color: var(--flora-ink); }
.single-product .product_title { font-size: clamp(1.4rem, 4vw, 2rem); font-weight: 700; color: var(--flora-ink); }
.single-product .price { font-size: 1.5rem; font-weight: 700; color: var(--flora-acc) !important; }
.single-product .woocommerce-product-rating .star-rating { color: var(--flora-acc); }

/* Variations */
.woocommerce-variation-availability { color: var(--flora-muted); font-size: .82rem; }
.variations select {
	background: var(--flora-lt) !important;
	border: 1.5px solid var(--flora-div) !important;
	color: var(--flora-ink) !important;
	padding: 8px 12px !important;
	border-radius: var(--flora-radius-md) !important;
	min-width: 160px;
}
.variations label { color: var(--flora-lun); font-size: .82rem; font-weight: 600; }

/* Quantity */
.quantity .qty {
	background: var(--flora-lt) !important;
	border: 1.5px solid var(--flora-div) !important;
	color: var(--flora-ink) !important;
	font-weight: 700;
	text-align: center;
	width: 70px !important;
	padding: 8px !important;
	border-radius: var(--flora-radius-md) !important;
}
.quantity .qty:focus { border-color: var(--flora-acc) !important; outline: none; }

/* Add to Cart button */
.single_add_to_cart_button,
.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button {
	background: var(--flora-acc) !important;
	color: #fff !important;
	font-weight: 700 !important;
	font-size: .88rem !important;
	border: none !important;
	border-radius: var(--flora-radius-md) !important;
	padding: 13px 26px !important;
	min-height: 46px;
	transition: background .15s;
}
.single_add_to_cart_button:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover {
	background: var(--flora-acc-h) !important;
	color: #fff !important;
}

/* Product tabs */
.woocommerce .woocommerce-tabs ul.tabs {
	border-bottom: 1px solid var(--flora-div);
	padding: 0;
	margin: 0 0 20px;
}
.woocommerce .woocommerce-tabs ul.tabs li {
	background: transparent;
	border: none;
	border-bottom: 2px solid transparent;
	border-radius: 0;
}
.woocommerce .woocommerce-tabs ul.tabs li.active {
	border-bottom-color: var(--flora-acc);
	background: transparent;
}
.woocommerce .woocommerce-tabs ul.tabs li a { color: var(--flora-lun); font-size: .88rem; font-weight: 600; }
.woocommerce .woocommerce-tabs ul.tabs li.active a { color: var(--flora-acc); }
.woocommerce .woocommerce-tabs ul.tabs::before,
.woocommerce .woocommerce-tabs ul.tabs::after { border: none; }

/* Review stars */
.woocommerce #reviews #comments .star-rating { color: var(--flora-acc); }

/* ── SHOP LAYOUT (archive: titlebar + sidebar + grid) ── */
.flora-shop-titlebar {
	background: var(--flora-ink);
	border-bottom: 1px solid rgba(191,216,210,.15);
	padding: 16px 0;
}
.flora-shop-crumb { font-size: .78rem; color: var(--flora-muted); margin-bottom: 4px; }
.flora-shop-crumb a { color: var(--flora-im); }
.flora-shop-crumb a:hover { color: var(--flora-acc); }
.flora-shop-h1 { font-size: clamp(1.3rem, 4vw, 1.9rem); font-weight: 700; color: #F7F7F7; margin: 0; }
.flora-shop-sub { font-size: .8rem; color: var(--flora-muted); margin-top: 3px; }

.flora-shop-layout {
	display: grid;
	grid-template-columns: 220px 1fr;
	gap: 22px;
	align-items: start;
	padding: 22px 0;
}

/* Sidebar */
.flora-shop-sidebar {
	background: #fff;
	border: .5px solid var(--flora-div);
	border-radius: var(--flora-radius-lg);
	padding: 16px;
	position: sticky;
	top: 90px;
	box-shadow: var(--flora-shadow-sm);
}
.flora-shop-sb-h {
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--flora-acc);
	margin-bottom: 12px;
}
.flora-filter-sec { margin-bottom: 16px; }
.flora-filter-sec:last-child { margin-bottom: 0; }
.flora-filter-sec-t { font-size: .82rem; color: var(--flora-ink); font-weight: 700; margin-bottom: 8px; }
.flora-filter-list { list-style: none; margin: 0; padding: 0; }
.flora-fi { margin: 0; }
.flora-fi a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 6px 8px;
	border-radius: 6px;
	font-size: .85rem;
	color: var(--flora-lun);
	text-decoration: none;
	transition: background .15s, color .15s;
}
.flora-fi a:hover { background: var(--flora-icy); color: var(--flora-ok); }
.flora-fi.is-on a { color: var(--flora-acc); background: rgba(162,123,91,.08); }
.flora-fi-cnt {
	font-size: .68rem;
	color: var(--flora-muted);
	background: var(--flora-lt);
	border-radius: 20px;
	padding: 1px 8px;
	min-width: 22px;
	text-align: center;
	border: 1px solid var(--flora-div);
}
.flora-fi.is-on .flora-fi-cnt { color: var(--flora-acc); background: rgba(162,123,91,.08); border-color: rgba(162,123,91,.3); }
.flora-price-row { display: flex; gap: 6px; align-items: center; }
.flora-price-inp {
	width: 100%;
	min-width: 0;
	background: var(--flora-lt);
	border: 1.5px solid var(--flora-div);
	border-radius: var(--flora-radius-md);
	color: var(--flora-ink);
	padding: 7px 9px;
	font-size: .82rem;
}
.flora-price-inp:focus { border-color: var(--flora-acc); outline: none; box-shadow: 0 0 0 3px rgba(162,123,91,.1); }
.flora-price-inp::placeholder { color: var(--flora-muted); }
.flora-price-dash { color: var(--flora-muted); font-size: .8rem; }

/* Sidebar search */
.flora-search-wrap {
	display: flex;
	align-items: stretch;
	border: 1.5px solid var(--flora-div);
	border-radius: var(--flora-radius-md);
	overflow: hidden;
}
.flora-search-inp {
	flex: 1;
	min-width: 0;
	background: var(--flora-lt);
	border: none;
	outline: none;
	color: var(--flora-ink);
	padding: 8px 10px;
	font-size: .82rem;
}
.flora-search-inp::placeholder { color: var(--flora-muted); }
.flora-search-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--flora-acc);
	border: none;
	cursor: pointer;
	padding: 0 11px;
	color: #fff;
	flex-shrink: 0;
	transition: background .15s;
}
.flora-search-btn:hover { background: var(--flora-acc-h); }

/* Sidebar filter button */
.flora-btn--block { display: block; width: 100%; text-align: center; }
.flora-btn--sm { font-size: .8rem; padding: 8px 14px; }
.flora-btn--primary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--flora-acc);
	color: #fff;
	font-weight: 700;
	border: none;
	border-radius: var(--flora-radius-md);
	padding: 10px 20px;
	cursor: pointer;
	text-decoration: none;
	transition: background .15s;
	margin-top: 8px;
}
.flora-btn--primary:hover { background: var(--flora-acc-h); color: #fff; }

/* Main column top bar */
.flora-shop-top {
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 14px;
}
.flora-shop-top .woocommerce-result-count { margin: 0; color: var(--flora-lun); font-size: .85rem; }
.flora-shop-top form.woocommerce-ordering { margin: 0; }
.flora-shop-top select {
	border: 1.5px solid var(--flora-div) !important;
	border-radius: var(--flora-radius-md) !important;
	color: var(--flora-ink) !important;
	background: #fff !important;
	padding: 6px 10px !important;
	font-size: .84rem !important;
}
.flora-shop-empty {
	color: var(--flora-muted);
	padding: 30px;
	text-align: center;
	background: #fff;
	border: 1px dashed var(--flora-div);
	border-radius: var(--flora-radius-lg);
}

/* Shop grid is 3-up inside the layout; home grid stays 4-up. */
.flora-shop-main ul.products,
.flora-shop-main .woocommerce .products {
	grid-template-columns: repeat(3, 1fr) !important;
}

/* Pagination */
.woocommerce-pagination ul { display: flex; gap: 6px; list-style: none; padding: 0; margin: 22px 0 0; justify-content: center; }
.woocommerce-pagination ul li a,
.woocommerce-pagination ul li span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 36px;
	height: 36px;
	border-radius: var(--flora-radius-md);
	border: 1.5px solid var(--flora-div);
	font-size: .85rem;
	color: var(--flora-lun);
	text-decoration: none;
	transition: border-color .15s, color .15s, background .15s;
	background: #fff;
}
.woocommerce-pagination ul li a:hover { border-color: var(--flora-acc); color: var(--flora-acc); }
.woocommerce-pagination ul li span.current { background: var(--flora-acc); color: #fff; border-color: var(--flora-acc); }

/* ── CART ── */
.woocommerce table.shop_table {
	border-collapse: collapse;
	width: 100%;
	border: .5px solid var(--flora-div);
	border-radius: var(--flora-radius-lg);
	overflow: hidden;
}
.woocommerce table.shop_table th {
	font-size: .78rem;
	text-transform: uppercase;
	letter-spacing: .5px;
	color: var(--flora-lun);
	background: var(--flora-lt);
	padding: 12px 14px;
	border-bottom: 1px solid var(--flora-div);
}
.woocommerce table.shop_table td {
	border-top: 1px solid var(--flora-div) !important;
	color: var(--flora-ink) !important;
	padding: 12px 14px !important;
	background: #fff;
}
.woocommerce table.shop_table td.product-name a { color: var(--flora-ink) !important; font-weight: 700; }
.woocommerce table.shop_table td.product-name a:hover { color: var(--flora-acc) !important; }
.woocommerce table.shop_table td.product-total { color: var(--flora-acc) !important; font-weight: 700; }
.woocommerce a.remove { color: var(--flora-muted) !important; font-size: 18px !important; transition: color .15s; }
.woocommerce a.remove:hover { color: var(--flora-err) !important; }

/* Cart totals */
.cart_totals h2 { font-family: var(--flora-font-brand); font-size: 15px; font-weight: 700; color: var(--flora-ink); }
.cart_totals table.shop_table th { font-size: .82rem; color: var(--flora-lun); }
.cart_totals table.shop_table td { font-size: .9rem; color: var(--flora-ink); font-weight: 600; }
.cart_totals table.shop_table .order-total th,
.cart_totals table.shop_table .order-total td { font-family: var(--flora-font-brand); font-size: 1.05rem; font-weight: 700; }
.wc-proceed-to-checkout .checkout-button {
	background: var(--flora-acc) !important;
	color: #fff !important;
	font-weight: 700 !important;
	border-radius: var(--flora-radius-md) !important;
	padding: 14px !important;
}
.wc-proceed-to-checkout .checkout-button:hover { background: var(--flora-acc-h) !important; }

/* Coupon input */
.coupon .input-text {
	border: 1.5px solid var(--flora-div) !important;
	border-radius: var(--flora-radius-md) !important;
	color: var(--flora-ink) !important;
	padding: 9px 12px !important;
	font-size: .85rem !important;
}
.coupon .input-text:focus { border-color: var(--flora-acc) !important; outline: none; }

/* WooCommerce notices */
.woocommerce-message { background: var(--flora-icy); border-left: 4px solid var(--flora-ok); color: var(--flora-ok); border-top: none; border-radius: var(--flora-radius-md); font-size: .88rem; }
.woocommerce-error   { background: #FEF0F0; border-left: 4px solid var(--flora-err); color: var(--flora-err); border-top: none; border-radius: var(--flora-radius-md); font-size: .88rem; }
.woocommerce-info    { background: #FFF8F0; border-left: 4px solid var(--flora-acc); color: var(--flora-lun); border-top: none; border-radius: var(--flora-radius-md); font-size: .88rem; }
.woocommerce-message a.button,
.woocommerce-error a.button   { font-size: .8rem !important; padding: 8px 14px !important; }

/* ── ACCOUNT ── */
.woocommerce-account .woocommerce { display: flex; gap: 22px; align-items: flex-start; }
.woocommerce-account .woocommerce-MyAccount-navigation {
	min-width: 200px;
	background: #fff;
	border: .5px solid var(--flora-div);
	border-radius: var(--flora-radius-lg);
	overflow: hidden;
	box-shadow: var(--flora-shadow-sm);
}
.woocommerce-account .woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; }
.woocommerce-account .woocommerce-MyAccount-navigation ul li a {
	display: block;
	padding: 10px 16px;
	font-size: .85rem;
	color: var(--flora-lun);
	border-bottom: 1px solid var(--flora-div);
	text-decoration: none;
	transition: background .15s, color .15s;
}
.woocommerce-account .woocommerce-MyAccount-navigation ul li:last-child a { border-bottom: none; }
.woocommerce-account .woocommerce-MyAccount-navigation ul li a:hover { background: var(--flora-icy); color: var(--flora-ok); }
.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a,
.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--is-active a { background: var(--flora-ink); color: #F7F7F7; }
.woocommerce-account .woocommerce-MyAccount-content { flex: 1; min-width: 0; }

/* Product earn indicator (Flora Rewards) */
.flora-loop-pts {
	font-size: .72rem;
	color: var(--flora-ok);
	background: var(--flora-icy);
	border: 1px solid var(--flora-im);
	border-radius: var(--flora-radius-pill);
	padding: 2px 8px;
	display: inline-block;
	margin: 2px 0 4px;
}

/* ── RESPONSIVE ── */
@media (max-width: 1024px) {
	.flora-shop-main ul.products { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 768px) {
	.flora-shop-layout { grid-template-columns: 1fr; gap: 14px; }
	.flora-shop-sidebar { position: static; }
	.woocommerce .products,
	.woocommerce-page .products { grid-template-columns: repeat(2, 1fr) !important; }
	.woocommerce-account .woocommerce { flex-direction: column; }
	.woocommerce-account .woocommerce-MyAccount-navigation { width: 100%; }
}
@media (max-width: 480px) {
	.flora-shop-main ul.products,
	.woocommerce .products { grid-template-columns: 1fr 1fr !important; }
	.flora-shop-top { flex-direction: column; align-items: flex-start; }
}

/* ══════════════════════════════════════════════════════════════════════
   SINGLE PRODUCT — two-column flexbox layout (image | summary)
   Overrides WooCommerce float-based defaults which many parent themes reset.
   ══════════════════════════════════════════════════════════════════════ */
.woocommerce div.product,
.single-product .product {
	display: flex !important;
	flex-wrap: wrap;
	gap: 36px;
	align-items: flex-start;
	padding: 28px 0;
}

/* Gallery column — 45% */
.woocommerce div.product div.images,
.woocommerce div.product .woocommerce-product-gallery {
	flex: 0 0 calc(46% - 18px) !important;
	max-width: calc(46% - 18px) !important;
	width: auto !important;
	float: none !important;
}

/* Summary column — fills remaining space */
.woocommerce div.product div.summary,
.woocommerce div.product .entry-summary {
	flex: 1 1 260px !important;
	min-width: 260px !important;
	width: auto !important;
	float: none !important;
}

/* Gallery thumbnails strip */
.woocommerce-product-gallery__wrapper { margin: 0; }
.woocommerce-product-gallery .flex-viewport { border-radius: var(--flora-radius-lg); overflow: hidden; }
.woocommerce-product-gallery__image img {
	width: 100%;
	height: auto;
	display: block;
	border-radius: var(--flora-radius-lg);
}
.woocommerce-product-gallery .flex-control-thumbs {
	display: flex;
	gap: 6px;
	margin-top: 8px;
	list-style: none;
	padding: 0;
}
.woocommerce-product-gallery .flex-control-thumbs li { flex: 0 0 auto; }
.woocommerce-product-gallery .flex-control-thumbs img {
	width: 64px !important;
	height: 64px !important;
	object-fit: cover;
	border-radius: 6px;
	border: 2px solid transparent;
	cursor: pointer;
	transition: border-color .15s;
}
.woocommerce-product-gallery .flex-control-thumbs .flex-active img { border-color: var(--flora-acc); }

/* Full-width below-fold sections (tabs, related products) */
.woocommerce div.product .woocommerce-tabs,
.woocommerce div.product #reviews,
.related.products,
.upsells.products {
	width: 100% !important;
	flex-basis: 100% !important;
	float: none !important;
}

/* Single product page wrapper padding */
.single-product .flora-entry-content,
.single-product .entry-content,
.woocommerce-page.single-product #primary {
	padding: 0 20px;
	max-width: 1200px;
	margin: 0 auto;
}

/* Summary typography */
.woocommerce div.product .product_title {
	font-family: var(--flora-font-brand);
	font-size: clamp(1.3rem, 3.5vw, 1.9rem);
	font-weight: 700;
	color: var(--flora-ink);
	margin-bottom: 8px;
	line-height: 1.25;
}
.woocommerce div.product p.price,
.woocommerce div.product span.price {
	font-size: 1.5rem !important;
	font-weight: 700;
	color: var(--flora-acc) !important;
	display: block;
	margin-bottom: 14px;
}
.woocommerce div.product .woocommerce-product-rating {
	margin-bottom: 12px;
}
.woocommerce div.product .woocommerce-product-details__short-description {
	font-size: .92rem;
	color: var(--flora-lun);
	line-height: 1.7;
	margin-bottom: 18px;
}

/* Responsive: stack on tablets */
@media (max-width: 768px) {
	.woocommerce div.product,
	.single-product .product {
		flex-direction: column !important;
		gap: 20px;
	}
	.woocommerce div.product div.images,
	.woocommerce div.product .woocommerce-product-gallery {
		flex: 0 0 100% !important;
		max-width: 100% !important;
	}
	.woocommerce div.product div.summary,
	.woocommerce div.product .entry-summary {
		flex: 0 0 100% !important;
		min-width: 0 !important;
	}
}

/* ══════════════════════════════════════════════════════════════════════
   SINGLE PRODUCT — overflow / cut-off fix (v2.2.0)

   Reported bug: on mobile, the product detail page (image, category
   pills, THC/Ratio/Category/Stock facts box, description, and the
   "You may also like" related-products row) run past the right edge of
   the screen and get clipped, with no way to scroll to see the rest.

   Root cause: nothing in this theme constrains the *width* of content
   inside div.product/.entry-summary or of the related-products grid, so
   any fixed-width child (a table, a flex row that doesn't wrap, or a
   block-based related-products grid with its own hard-coded column
   count) can push the layout wider than the viewport. This section adds
   defensive, broad-coverage rules so nothing inside the product page can
   ever exceed the viewport width, regardless of what markup rendered it
   (classic WooCommerce templates OR the newer block-based
   Related Products block).
   ══════════════════════════════════════════════════════════════════════ */
body.single-product { overflow-x: hidden; }

.single-product .entry-summary,
.single-product .entry-summary * ,
.single-product div.product,
.single-product div.product * {
	max-width: 100%;
	box-sizing: border-box;
}
.single-product img { max-width: 100%; height: auto; }

/* Any attribute/facts table WooCommerce (or a plugin) renders on the
   product page — force it to fit and wrap instead of overflowing. */
.single-product table,
.single-product table.shop_attributes,
.single-product .woocommerce-product-attributes {
	width: 100% !important;
	max-width: 100% !important;
	table-layout: fixed;
	word-break: break-word;
}
.single-product table.shop_attributes th,
.single-product table.shop_attributes td {
	word-break: break-word;
	white-space: normal !important;
}

/* Category / attribute pill rows — wrap instead of forcing one line */
.single-product .posted_in,
.single-product .tagged_as,
.single-product .woocommerce-product-attributes-item__value,
.single-product .wc-attribute-pills,
.single-product .product_meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	max-width: 100%;
}

/* Related / upsell products — classic WooCommerce markup */
.related.products,
.upsells.products {
	max-width: 100%;
	overflow: hidden;
}
.related.products ul.products,
.upsells.products ul.products {
	display: grid !important;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)) !important;
	gap: 14px !important;
	width: 100%;
	max-width: 100%;
	box-sizing: border-box;
}
.related.products ul.products li.product,
.upsells.products ul.products li.product {
	min-width: 0;
	max-width: 100%;
}
.related.products ul.products li.product img,
.upsells.products ul.products li.product img {
	width: 100%;
	max-width: 100%;
	height: auto;
}

/* Related products — newer block-based markup (Product Collection /
   Related Products blocks), in case the site is running a WooCommerce
   version that renders these as Gutenberg blocks instead of the
   classic template. Same fix, different selectors. */
.single-product .wp-block-woocommerce-related-products,
.single-product .wc-block-related-products,
.single-product .wc-block-grid,
.single-product .wp-block-post-template {
	max-width: 100% !important;
	width: 100% !important;
	box-sizing: border-box;
	overflow: hidden;
}
.single-product .wc-block-grid__products,
.single-product .wp-block-post-template {
	display: grid !important;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)) !important;
	gap: 14px !important;
}
.single-product .wc-block-grid__product,
.single-product .wp-block-post-template > li {
	min-width: 0 !important;
	max-width: 100% !important;
}

@media (max-width: 480px) {
	.related.products ul.products,
	.upsells.products ul.products,
	.single-product .wc-block-grid__products,
	.single-product .wp-block-post-template {
		grid-template-columns: repeat(2, 1fr) !important;
	}
}

/* ══════════════════════════════════════════════════════════════════════
   PRODUCT CARD — compact image height to match mockup
   ══════════════════════════════════════════════════════════════════════ */

/* WooCommerce default loop image */
.woocommerce ul.products li.product a img {
	height: 90px !important;
	object-fit: cover;
}

/* Flora custom product card image area */
.flora-pc__img {
	position: relative;
	background: var(--flora-icy);
	height: 90px !important;
	aspect-ratio: unset !important;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
.flora-pc__img img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover;
	display: block;
	margin: 0 !important;
}

/* ══════════════════════════════════════════════════════════════════════
   HOME PAGE — CATEGORY GRID
   ══════════════════════════════════════════════════════════════════════ */
.flora-cat-grid {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: 12px;
}
.flora-cat-card {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	text-decoration: none !important;
	background: #fff;
	border: .5px solid var(--flora-div);
	border-radius: var(--flora-radius-lg);
	padding: 16px 10px;
	transition: box-shadow .2s, border-color .2s, transform .15s;
}
.flora-cat-card:hover {
	box-shadow: 0 3px 14px rgba(0,0,0,.09);
	border-color: var(--flora-im);
	transform: translateY(-2px);
}
.flora-cat-icon {
	width: 50px;
	height: 50px;
	background: var(--flora-icy);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-bottom: 10px;
	transition: background .15s;
}
.flora-cat-card:hover .flora-cat-icon { background: var(--flora-im); }
.flora-cat-name {
	font-family: var(--flora-font-brand);
	font-size: .72rem;
	font-weight: 600;
	color: var(--flora-ink);
	letter-spacing: .05em;
	line-height: 1.3;
}
.flora-cat-count {
	font-family: var(--flora-font-body);
	font-size: .68rem;
	color: var(--flora-muted);
	margin-top: 3px;
}

/* Responsive category grid */
@media (max-width: 900px) {
	.flora-cat-grid { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 600px) {
	.flora-cat-grid { grid-template-columns: repeat(3, 1fr); gap: 9px; }
	.flora-cat-icon { width: 42px; height: 42px; }
}
@media (max-width: 380px) {
	.flora-cat-grid { grid-template-columns: repeat(2, 1fr); }
}
