/* =========================================================================
 * Tap N Roll Singles — Global shop chrome
 * Cross-page tweaks that apply on every ShopWP page (header badge, focus
 * rings, MTG mana pips). Page-specific styles live in plp.css / pdp.css.
 *
 * v1.0.3:
 *   - Force Astra primary header bar to dark across all shop surfaces
 *   - Retint every ShopWP button surface (swp-*, wps-*, wpshop-*) to amber
 *   - Re-skin ShopWP product cards on the CPT archive (post-type-archive-wps_products)
 *   - Add archive toolbar (.tnr-archive-toolbar) styling for the new filter UI
 * ========================================================================= */

/* Header "Singles" badge — added next to the main logo via a small JS
   helper or hard-coded in header.php if needed. */
.tnr-singles-badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 10px;
	margin-left: var(--tnr-s-3);
	border-radius: var(--tnr-r-pill);
	border: 1px solid var(--tnr-amber);
	background: rgba(245, 166, 35, 0.10);
	color: var(--tnr-amber);
	font-family: var(--tnr-font-mono);
	font-size: 11px;
	letter-spacing: var(--tnr-ls-eyebrow);
	text-transform: uppercase;
}

/* Mana pips — generic look; per-color tints are derived from tokens */
.tnr-mana {
	display: inline-flex;
	gap: 3px;
	align-items: center;
}
.tnr-pip {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 22px;
	height: 22px;
	padding: 0 6px;
	border-radius: var(--tnr-r-pill);
	background: var(--tnr-card-2);
	color: var(--tnr-text);
	font-family: var(--tnr-font-mono);
	font-size: 12px;
	line-height: 1;
	border: 1px solid var(--tnr-line);
}
.tnr-pip-w { background: var(--tnr-mtg-w); color: #2A2418; border-color: transparent; }
.tnr-pip-u { background: var(--tnr-mtg-u); color: #0F1B2D; border-color: transparent; }
.tnr-pip-b { background: var(--tnr-mtg-b); color: #EDEDED; border-color: transparent; }
.tnr-pip-r { background: var(--tnr-mtg-r); color: #2A1410; border-color: transparent; }
.tnr-pip-g { background: var(--tnr-mtg-g); color: #112417; border-color: transparent; }
.tnr-pip-c { background: var(--tnr-mtg-c); color: #1A1E26; border-color: transparent; }

/* Focus rings — apply consistently across all interactive elements. */
.tapnroll-pdp :focus-visible,
.tapnroll-plp :focus-visible,
.tapnroll-cart :focus-visible,
body.shopwp :focus-visible,
body.post-type-archive-wps_products :focus-visible,
body.single-wps_products :focus-visible {
	outline: 2px solid var(--tnr-amber);
	outline-offset: 2px;
	border-radius: var(--tnr-r-1);
}

/* ShopWP's own grid sits on the dark surface, not Astra's default white sheet. */
.tapnroll-theme .wp-shopify,
.tapnroll-theme .wp-shopify *,
body.shopwp .wp-shopify,
body.shopwp .wp-shopify * {
	color: var(--tnr-text);
}
.wp-shopify a { color: var(--tnr-amber); }
.wp-shopify a:hover { color: var(--tnr-amber-2); }

/* =========================================================================
 * Astra header — dark across all shop surfaces
 * Astra's primary header bar is a flat white div by default. Force it dark
 * everywhere the Tap N Roll body class is present, plus the native ShopWP
 * surfaces. Use !important to defeat Astra's customizer-generated inline.
 * ========================================================================= */
.tapnroll-pdp .ast-primary-header-bar,
.tapnroll-plp .ast-primary-header-bar,
.tapnroll-cart .ast-primary-header-bar,
body.shopwp .ast-primary-header-bar,
body.post-type-archive-wps_products .ast-primary-header-bar,
body.single-wps_products .ast-primary-header-bar,
.tapnroll-pdp .main-header-bar,
.tapnroll-plp .main-header-bar,
.tapnroll-cart .main-header-bar,
body.shopwp .main-header-bar,
body.post-type-archive-wps_products .main-header-bar,
body.single-wps_products .main-header-bar {
	background: var(--tnr-bg) !important;
	background-color: var(--tnr-bg) !important;
	color: var(--tnr-text) !important;
	border-bottom: 1px solid var(--tnr-line) !important;
	box-shadow: none !important;
}
.tapnroll-pdp #masthead, .tapnroll-plp #masthead, .tapnroll-cart #masthead,
body.shopwp #masthead,
body.post-type-archive-wps_products #masthead,
body.single-wps_products #masthead {
	background: var(--tnr-bg) !important;
	border-bottom: 1px solid var(--tnr-line) !important;
}
.tapnroll-pdp .site-title a, .tapnroll-plp .site-title a, .tapnroll-cart .site-title a,
body.shopwp .site-title a,
body.post-type-archive-wps_products .site-title a,
body.single-wps_products .site-title a,
.tapnroll-pdp .ast-site-identity .site-description,
.tapnroll-plp .ast-site-identity .site-description,
.tapnroll-cart .ast-site-identity .site-description {
	color: var(--tnr-text) !important;
}
.tapnroll-pdp .main-header-menu a,
.tapnroll-plp .main-header-menu a,
.tapnroll-cart .main-header-menu a,
body.shopwp .main-header-menu a,
body.post-type-archive-wps_products .main-header-menu a,
body.single-wps_products .main-header-menu a,
.tapnroll-pdp .ast-header-break-point .main-header-menu a,
.tapnroll-plp .ast-header-break-point .main-header-menu a {
	color: var(--tnr-text) !important;
}
.tapnroll-pdp .main-header-menu a:hover,
.tapnroll-plp .main-header-menu a:hover,
.tapnroll-cart .main-header-menu a:hover,
body.shopwp .main-header-menu a:hover,
body.post-type-archive-wps_products .main-header-menu a:hover,
body.single-wps_products .main-header-menu a:hover {
	color: var(--tnr-amber) !important;
}
/* Astra's mobile menu toggle / cart icon */
.tapnroll-pdp .ast-mobile-menu-buttons-fill,
.tapnroll-plp .ast-mobile-menu-buttons-fill,
body.shopwp .ast-mobile-menu-buttons-fill {
	fill: var(--tnr-text) !important;
}

/* =========================================================================
 * ShopWP product cards (PLP / CPT archive)
 * ========================================================================= */
.wp-shopify .swp-item,
.wp-shopify .wps-item,
body.post-type-archive-wps_products .swp-item,
body.post-type-archive-wps_products .wps-item {
	background: var(--tnr-card) !important;
	border: 1px solid var(--tnr-line) !important;
	border-radius: var(--tnr-r-2) !important;
	padding: var(--tnr-s-3) !important;
	transition: transform var(--tnr-dur-fast) var(--tnr-ease),
	            border-color var(--tnr-dur-fast) var(--tnr-ease),
	            box-shadow var(--tnr-dur-fast) var(--tnr-ease);
}
.wp-shopify .swp-item:hover,
.wp-shopify .wps-item:hover {
	transform: translateY(-2px);
	border-color: var(--tnr-amber) !important;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
}
.wp-shopify .swp-product-title,
.wp-shopify .wps-product-title,
.wp-shopify .swp-item h3,
.wp-shopify .wps-item h3 {
	font: 500 14px/1.35 var(--tnr-font-body) !important;
	color: var(--tnr-text) !important;
	margin: var(--tnr-s-2) 0 var(--tnr-s-1) !important;
}
.wp-shopify .swp-product-price,
.wp-shopify .wps-product-price,
.wp-shopify .swp-price,
.wp-shopify .wps-price {
	font-family: var(--tnr-font-display) !important;
	font-size: 22px !important;
	color: var(--tnr-amber) !important;
	letter-spacing: 0.5px;
}
.wp-shopify .swp-product-image,
.wp-shopify .wps-product-image,
.wp-shopify .swp-item img,
.wp-shopify .wps-item img {
	border-radius: var(--tnr-r-1) !important;
	background: var(--tnr-card-2);
}

/* SOLD OUT badge — red so it reads */
.wp-shopify .swp-badge,
.wp-shopify .swp-badge-sold-out,
.wp-shopify .wps-product-status-text,
.swp-badge-sold-out,
.wps-product-status-text {
	background: var(--tnr-red) !important;
	color: #FFFFFF !important;
	font-family: var(--tnr-font-mono) !important;
	font-size: 11px !important;
	letter-spacing: var(--tnr-ls-eyebrow) !important;
	text-transform: uppercase !important;
	padding: 3px 8px !important;
	border-radius: var(--tnr-r-1) !important;
	border: none !important;
}

/* =========================================================================
 * ShopWP buttons — universal retint
 * Covers every ShopWP class prefix variant: .swp-*, .wps-*, .wpshop-*
 * !important is needed because ShopWP ships inline color via JS on render.
 * ========================================================================= */
.wp-shopify .swp-btn,
.wp-shopify .swp-button,
.wp-shopify .swp-button-pagination,
.wp-shopify .wps-btn,
.wp-shopify .wps-btn-next-page,
.swp-btn,
.swp-button,
.swp-button-pagination,
.wps-btn,
.wps-btn-next-page,
.wpshop-buy-button,
.wpshop button[type="submit"] {
	background: var(--tnr-amber) !important;
	background-color: var(--tnr-amber) !important;
	color: var(--tnr-amber-ink) !important;
	border: none !important;
	border-radius: var(--tnr-r-2) !important;
	padding: 12px 22px !important;
	font: 600 15px/1 var(--tnr-font-body) !important;
	letter-spacing: 0.2px !important;
	text-decoration: none !important;
	cursor: pointer !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	transition: background var(--tnr-dur-fast) var(--tnr-ease),
	            transform var(--tnr-dur-fast) var(--tnr-ease) !important;
}
.wp-shopify .swp-btn:hover,
.wp-shopify .swp-button:hover,
.wp-shopify .swp-button-pagination:hover,
.wp-shopify .wps-btn:hover,
.wp-shopify .wps-btn-next-page:hover,
.swp-btn:hover,
.swp-button:hover,
.swp-button-pagination:hover,
.wps-btn:hover,
.wps-btn-next-page:hover,
.wpshop-buy-button:hover,
.wpshop button[type="submit"]:hover {
	background: var(--tnr-amber-2) !important;
	background-color: var(--tnr-amber-2) !important;
	transform: translateY(-1px) !important;
}

/* "View product" / "View details" link rendered as a ghost button. */
.wp-shopify a.swp-link,
.wp-shopify a.swp-link.wps-products-link,
.wp-shopify .wps-products-link,
a.swp-link.wps-products-link {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 100% !important;
	padding: 10px 14px !important;
	margin-top: var(--tnr-s-2) !important;
	background: transparent !important;
	color: var(--tnr-amber) !important;
	border: 1px solid var(--tnr-amber) !important;
	border-radius: var(--tnr-r-2) !important;
	font: 600 14px/1 var(--tnr-font-body) !important;
	letter-spacing: 0.2px !important;
	text-decoration: none !important;
	transition: background var(--tnr-dur-fast) var(--tnr-ease),
	            color var(--tnr-dur-fast) var(--tnr-ease) !important;
}
.wp-shopify a.swp-link:hover,
.wp-shopify a.swp-link.wps-products-link:hover,
a.swp-link.wps-products-link:hover {
	background: var(--tnr-amber) !important;
	color: var(--tnr-amber-ink) !important;
}

/* Out-of-stock label / button state */
.wp-shopify .swp-out-of-stock,
.wp-shopify .swp-sold-out,
.wp-shopify .wps-out-of-stock-msg,
.swp-out-of-stock,
.swp-sold-out,
.wps-out-of-stock-msg {
	background: var(--tnr-card-2) !important;
	color: var(--tnr-faint) !important;
	border: 1px solid var(--tnr-line) !important;
	border-radius: var(--tnr-r-2) !important;
	padding: 10px 14px !important;
	font: 500 13px/1 var(--tnr-font-mono) !important;
	text-transform: uppercase !important;
	letter-spacing: var(--tnr-ls-eyebrow) !important;
	cursor: not-allowed !important;
}

/* =========================================================================
 * Floating cart icon (ShopWP's persistent corner cart)
 * ========================================================================= */
button.swp-cart-icon-fixed,
.swp-cart-icon-fixed,
.wps-cart-icon-fixed {
	background: var(--tnr-card) !important;
	border: 1px solid var(--tnr-amber) !important;
	border-radius: 50% !important;
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.45) !important;
}
.swp-cart-icon-fixed svg,
.swp-cart-icon-fixed path,
.wps-cart-icon-fixed svg,
.wps-cart-icon-fixed path {
	fill: var(--tnr-amber) !important;
	stroke: var(--tnr-amber) !important;
}
.swp-cart-counter,
.wps-cart-counter {
	background: var(--tnr-amber) !important;
	color: var(--tnr-amber-ink) !important;
	font-family: var(--tnr-font-mono) !important;
	font-weight: 700 !important;
	border: 2px solid var(--tnr-bg) !important;
}

/* =========================================================================
 * Archive toolbar (.tnr-archive-toolbar)
 * Injected by ShopWP_Bridge::render_archive_toolbar() on
 * is_post_type_archive(['wps_products','wps_collections']).
 * ========================================================================= */
.tnr-archive-toolbar {
	position: sticky;
	top: 0;
	z-index: 25;
	background: linear-gradient(180deg,
		rgba(15, 17, 21, 0.96) 0%,
		rgba(15, 17, 21, 0.88) 100%);
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
	border-bottom: 1px solid var(--tnr-line);
	padding: var(--tnr-s-4) 0;
	margin-bottom: var(--tnr-s-5);
}
.tnr-archive-toolbar__inner {
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 var(--tnr-s-4);
	display: flex;
	flex-direction: column;
	gap: var(--tnr-s-3);
}
.tnr-archive-toolbar__title {
	font-family: var(--tnr-font-display);
	font-size: clamp(28px, 4vw, 40px);
	letter-spacing: 1px;
	color: var(--tnr-text);
	margin: 0;
	text-transform: uppercase;
}
.tnr-archive-toolbar__form {
	display: flex;
	flex-wrap: wrap;
	gap: var(--tnr-s-2);
	align-items: stretch;
}
.tnr-input {
	background: var(--tnr-card);
	color: var(--tnr-text);
	border: 1px solid var(--tnr-line);
	border-radius: var(--tnr-r-2);
	padding: 10px 14px;
	font: 400 14px/1 var(--tnr-font-body);
	min-height: 42px;
	transition: border-color var(--tnr-dur-fast) var(--tnr-ease);
}
.tnr-input:hover { border-color: var(--tnr-line-2); }
.tnr-input:focus {
	outline: none;
	border-color: var(--tnr-amber);
	box-shadow: 0 0 0 3px rgba(245, 166, 35, 0.15);
}
.tnr-input--search {
	flex: 1 1 280px;
	min-width: 200px;
}
.tnr-input--select {
	flex: 0 0 auto;
	min-width: 140px;
	background-image: linear-gradient(45deg, transparent 50%, var(--tnr-muted) 50%),
	                  linear-gradient(135deg, var(--tnr-muted) 50%, transparent 50%);
	background-position: calc(100% - 18px) 50%, calc(100% - 12px) 50%;
	background-size: 6px 6px;
	background-repeat: no-repeat;
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	padding-right: 32px;
}
.tnr-archive-toolbar .tnr-btn,
.tnr-archive-toolbar .tnr-btn--ghost {
	background: transparent;
	color: var(--tnr-amber);
	border: 1px solid var(--tnr-amber);
	border-radius: var(--tnr-r-2);
	padding: 10px 18px;
	font: 600 14px/1 var(--tnr-font-body);
	letter-spacing: 0.2px;
	cursor: pointer;
	transition: background var(--tnr-dur-fast) var(--tnr-ease),
	            color var(--tnr-dur-fast) var(--tnr-ease);
}
.tnr-archive-toolbar .tnr-btn:hover,
.tnr-archive-toolbar .tnr-btn--ghost:hover {
	background: var(--tnr-amber);
	color: var(--tnr-amber-ink);
}

@media (min-width: 720px) {
	.tnr-archive-toolbar__inner {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		gap: var(--tnr-s-5);
	}
	.tnr-archive-toolbar__title { flex: 0 0 auto; }
	.tnr-archive-toolbar__form { flex: 1 1 auto; justify-content: flex-end; }
}

/* =========================================================================
 * Inline-style override layer — last in cascade
 * ShopWP's React renderer injects `style="color:#000"` directly on the
 * title and price nodes at runtime (driven by its `titleColor` /
 * `pricingColor` JS options, which default to black). Inline styles beat
 * any external CSS without !important, so we re-declare colors here with
 * the strongest selector form we can use without affecting non-shop pages.
 *
 * Selector strategy:
 *   1. Bare class with !important to cover every ShopWP render path.
 *   2. body.shopwp prefix to lock specificity above plp.css.
 *   3. Repeat for both .wps-* (legacy) and .swp-* (current) class trees.
 * ========================================================================= */
.wps-product-title,
.swp-product-title,
body.shopwp .wps-product-title,
body.shopwp .swp-product-title,
body.post-type-archive-wps_products .wps-product-title,
body.post-type-archive-wps_products .swp-product-title,
body.single-wps_products .wps-product-title,
body.single-wps_products .swp-product-title,
.tnr-plp__grid .wps-product-title,
.tnr-plp__grid .swp-product-title {
	color: var(--tnr-text) !important;
}
.wps-product-title a,
.swp-product-title a,
body.shopwp .wps-product-title a,
body.shopwp .swp-product-title a,
body.post-type-archive-wps_products .wps-product-title a,
body.post-type-archive-wps_products .swp-product-title a,
body.single-wps_products .wps-product-title a,
body.single-wps_products .swp-product-title a {
	color: var(--tnr-text) !important;
}
.wps-product-title a:hover,
.swp-product-title a:hover,
body.shopwp .wps-product-title a:hover,
body.shopwp .swp-product-title a:hover {
	color: var(--tnr-amber) !important;
}

.wps-product-price,
.swp-product-price,
body.shopwp .wps-product-price,
body.shopwp .swp-product-price,
body.post-type-archive-wps_products .wps-product-price,
body.post-type-archive-wps_products .swp-product-price,
body.single-wps_products .wps-product-price,
body.single-wps_products .swp-product-price,
.tnr-plp__grid .wps-product-price,
.tnr-plp__grid .swp-product-price {
	color: var(--tnr-amber) !important;
}

/* Vendor / type / description / any inline-styled grey text ShopWP injects. */
.wps-product-vendor,
.swp-product-vendor,
.wps-product-type,
.swp-product-type,
.wps-product-description,
.swp-product-description,
.wps-product-meta,
.swp-product-meta,
body.shopwp .wps-product-vendor,
body.shopwp .wps-product-type,
body.shopwp .wps-product-meta,
body.shopwp .wps-product-description {
	color: var(--tnr-muted) !important;
}

/* Nuke any literal `style="color:#000"` ShopWP slaps on the card body. */
.wp-shopify .wps-item *[style*="color: rgb(0"],
.wp-shopify .swp-item *[style*="color: rgb(0"],
.wp-shopify .wps-item *[style*="color:#000"],
.wp-shopify .swp-item *[style*="color:#000"],
body.shopwp [style*="color: rgb(0, 0, 0)"],
body.shopwp [style*="color:#000"] {
	color: var(--tnr-text) !important;
}

/* Final blanket inside cards: any direct text in a ShopWP <li> defaults
   to readable text, leaving prices/badges/buttons their own colors via
   their more-specific rules above. */
body.shopwp .wps-products > li,
body.shopwp .swp-products > li,
body.post-type-archive-wps_products .wps-products > li,
body.post-type-archive-wps_products .swp-products > li,
body.post-type-archive-wps_products .wps-item,
body.post-type-archive-wps_products .swp-item {
	color: var(--tnr-text) !important;
}


/* =========================================================================
 * Grid layout fix (v1.0.5)
 * ShopWP's own grid resolves to `grid-template-columns: <one fixed width>`
 * which collapses to a single column at our container width. Force a
 * responsive multi-column grid keyed on a sensible minimum card width.
 * Live DOM: <ul class="swp-items wps-items wps-items-list">
 *           <li class="swp-item wps-item swp-l-col">
 * ========================================================================= */
body.shopwp .swp-items,
body.shopwp .wps-items,
body.shopwp .wps-items-list,
body.shopwp .swp-products,
body.shopwp .wps-products,
body.post-type-archive-wps_products .swp-items,
body.post-type-archive-wps_products .wps-items,
body.post-type-archive-wps_products .wps-items-list {
	display: grid !important;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)) !important;
	gap: 24px !important;
	width: 100% !important;
	max-width: 1280px !important;
	margin: 0 auto !important;
	padding: 0 var(--tnr-s-4) !important;
	list-style: none !important;
}
body.shopwp .swp-items > li,
body.shopwp .wps-items > li,
body.shopwp .wps-items-list > li,
body.shopwp .swp-item,
body.shopwp .wps-item,
body.post-type-archive-wps_products .swp-item,
body.post-type-archive-wps_products .wps-item {
	width: auto !important;
	max-width: 100% !important;
	flex: none !important;
	margin: 0 !important;
	display: flex !important;
	flex-direction: column !important;
}

/* Defeat ShopWP's .swp-l-col legacy column class which pins width: 400px. */
body.shopwp .swp-l-col,
body.shopwp .swp-l-row,
body.shopwp .swp-col-1,
body.shopwp .swp-col-2,
body.shopwp .swp-col-3,
body.shopwp .swp-col-4,
body.shopwp .swp-col-5,
body.shopwp .swp-col-6 {
	width: auto !important;
	flex: none !important;
	max-width: 100% !important;
}

/* =========================================================================
 * Image normalisation (v1.0.5)
 * ShopWP renders <img class="swp-mw100 swp-product-image wps-product-image">
 * with object-fit: fill, so sources of different aspect ratios stretch
 * inconsistently. Use a fixed card-art aspect ratio (MTG 5:7 = ~0.714)
 * with object-fit: contain so each card shows the full image, padded
 * with our card-2 background. Eliminates per-product height drift.
 * ========================================================================= */
body.shopwp .swp-product-image,
body.shopwp .wps-product-image,
body.shopwp .swp-mw100,
body.post-type-archive-wps_products .swp-product-image,
body.post-type-archive-wps_products .wps-product-image {
	display: block !important;
	width: 100% !important;
	height: auto !important;
	aspect-ratio: 5 / 7 !important;
	object-fit: contain !important;
	object-position: center !important;
	background: var(--tnr-card-2) !important;
	border-radius: var(--tnr-r-2) !important;
	max-width: 100% !important;
	margin: 0 auto !important;
}
body.shopwp .swp-product-image-wrap,
body.shopwp .wps-product-image-wrap,
body.shopwp .swp-product-link,
body.shopwp a.swp-product-image,
body.shopwp a.wps-product-image {
	display: block !important;
	width: 100% !important;
	height: auto !important;
	aspect-ratio: 5 / 7 !important;
	overflow: hidden !important;
	border-radius: var(--tnr-r-2) !important;
}

/* =========================================================================
 * Typography scale rebuild (v1.0.5)
 * Live DOM: H2.swp-product-title.wps-products-title at 22px (Astra H2)
 *           SPAN.swp-price.swp-product-price.wps-product-individual-price 16px
 * Tighten to a compact, consistent card scale. Two-line clamp on title
 * keeps every card the same height regardless of name length.
 * ========================================================================= */
body.shopwp h2.swp-product-title,
body.shopwp h2.wps-products-title,
body.shopwp .swp-product-title,
body.shopwp .wps-product-title,
body.shopwp .wps-products-title,
body.post-type-archive-wps_products h2.swp-product-title,
body.post-type-archive-wps_products h2.wps-products-title,
body.post-type-archive-wps_products .swp-product-title,
body.post-type-archive-wps_products .wps-product-title {
	font-family: var(--tnr-font-body) !important;
	font-size: 14px !important;
	line-height: 1.35 !important;
	font-weight: 500 !important;
	letter-spacing: 0 !important;
	margin: 12px 0 6px !important;
	display: -webkit-box !important;
	-webkit-line-clamp: 2 !important;
	-webkit-box-orient: vertical !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	min-height: calc(14px * 1.35 * 2) !important;
}
body.shopwp .swp-price,
body.shopwp .swp-product-price,
body.shopwp .wps-product-price,
body.shopwp .wps-product-individual-price,
body.shopwp .wps-products-price,
body.post-type-archive-wps_products .swp-price,
body.post-type-archive-wps_products .swp-product-price,
body.post-type-archive-wps_products .wps-product-price,
body.post-type-archive-wps_products .wps-product-individual-price {
	font-family: var(--tnr-font-display) !important;
	font-size: 20px !important;
	line-height: 1 !important;
	font-weight: 400 !important;
	letter-spacing: 0.5px !important;
	color: var(--tnr-amber) !important;
}
body.shopwp .wps-product-pricing,
body.shopwp .swp-product-pricing {
	line-height: 1 !important;
	margin: 4px 0 12px !important;
}

/* Buttons inside cards — tighten to match the new scale. */
body.shopwp .swp-item .swp-btn,
body.shopwp .wps-item .swp-btn,
body.shopwp .swp-item .wps-btn,
body.shopwp .wps-item .wps-btn,
body.shopwp .swp-item button,
body.shopwp .wps-item button,
body.shopwp .swp-item .swp-button-pagination,
body.shopwp .wps-item .wps-btn-next-page {
	padding: 10px 16px !important;
	font-size: 13px !important;
	width: 100% !important;
}

/* Push pricing + buttons to the bottom of the card so all cards align. */
body.shopwp .swp-item,
body.shopwp .wps-item {
	gap: 0 !important;
}
body.shopwp .swp-item > *:last-child,
body.shopwp .wps-item > *:last-child {
	margin-top: auto !important;
}
