/*
Theme Name:   Cardypants
Theme URI:    https://cardypants.com
Author:       Tom Tash
Description:  Lean, lightning-fast custom WooCommerce theme for Cardypants vintage postcards. Etsy/eBay-style storefront. No page builder, no external fonts, one stylesheet.
Version:      1.0.7
Requires PHP: 7.4
License:      GPL-2.0-or-later
Text Domain:  cardypants
Tags:         e-commerce, woocommerce
*/

/* ══ Tokens ═══════════════════════════════════════════════════════════ */

:root {
	--cp-red: #d34f43;
	--cp-red-dark: #b53d33;
	--cp-blue: #004aad;
	--cp-blue-dark: #003c8c;
	--cp-yellow: #ffde59;
	--cp-cream: #faf7f1;
	--cp-cream-dark: #f3ede1;
	--cp-thumb-bg: #f0f0f0;
	--cp-ink: #262626;
	--cp-muted: #6d675e;
	--cp-line: #e7e1d5;
	--cp-white: #fff;
	--cp-green: #2e7d4f;
	--cp-radius: 10px;
	--cp-radius-sm: 6px;
	--cp-shadow: 0 1px 3px rgba(40, 30, 10, .08), 0 4px 14px rgba(40, 30, 10, .06);
	--cp-shadow-hover: 0 2px 6px rgba(40, 30, 10, .12), 0 10px 24px rgba(40, 30, 10, .10);
	--cp-serif: Georgia, "Times New Roman", "Palatino Linotype", serif;
	--cp-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

/* ══ Base ═════════════════════════════════════════════════════════════ */

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
	margin: 0;
	font-family: var(--cp-sans);
	font-size: 16px;
	line-height: 1.55;
	color: var(--cp-ink);
	background: var(--cp-white);
}

img { max-width: 100%; height: auto; }

a { color: var(--cp-blue); text-decoration: none; }
a:hover { text-decoration: underline; }

h1, h2, h3, h4 {
	font-family: var(--cp-serif);
	font-weight: 600;
	line-height: 1.2;
	color: var(--cp-ink);
	margin: 0 0 .6em;
}

h1 { font-size: 1.9rem; }
h2 { font-size: 1.45rem; }
h3 { font-size: 1.15rem; }

.cp-container {
	max-width: 1400px;
	margin-left: auto;
	margin-right: auto;
	padding-left: 32px;
	padding-right: 32px;
}

/**
 * Shop/category/product/cart/checkout wrapper. Deliberately narrower than
 * .cp-container: on typical and wide desktop screens, most of the "margin"
 * should come from auto-centering (like Etsy's boutique-width layout), not
 * from padding alone — padding is just the floor for laptop-width screens.
 */
.cp-shop-container {
	max-width: 1120px;
	margin-left: auto;
	margin-right: auto;
	padding-left: 32px;
	padding-right: 32px;
}

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	margin: -1px; padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	border: 0;
}

.skip-link:focus {
	position: fixed; top: 8px; left: 8px;
	width: auto; height: auto;
	clip: auto; margin: 0;
	background: var(--cp-blue); color: #fff;
	padding: 10px 16px; border-radius: var(--cp-radius-sm);
	z-index: 9999;
}

/* ══ Buttons & forms ══════════════════════════════════════════════════ */

.button,
button[type="submit"],
input[type="submit"],
.cp-btn-primary,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
	display: inline-block;
	background: var(--cp-blue);
	color: #fff;
	font-family: var(--cp-sans);
	font-size: .95rem;
	font-weight: 600;
	line-height: 1;
	padding: 13px 22px;
	border: 0;
	border-radius: 999px;
	cursor: pointer;
	text-decoration: none;
	transition: background .15s ease;
}

.button:hover,
button[type="submit"]:hover,
input[type="submit"]:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover {
	background: var(--cp-blue-dark);
	color: #fff;
	text-decoration: none;
}

.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce #respond input#submit.alt {
	background: var(--cp-red);
	color: #fff;
}
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover {
	background: var(--cp-red-dark);
}

input[type="text"],
input[type="search"],
input[type="email"],
input[type="tel"],
input[type="password"],
input[type="number"],
select,
textarea {
	font-family: var(--cp-sans);
	font-size: 1rem;
	color: var(--cp-ink);
	background: #fff;
	border: 1px solid #c9c2b4;
	border-radius: var(--cp-radius-sm);
	padding: 10px 12px;
	max-width: 100%;
}

input:focus, select:focus, textarea:focus {
	outline: 2px solid var(--cp-blue);
	outline-offset: 1px;
}

/* ══ Header ═══════════════════════════════════════════════════════════ */

.cp-header { background: #fff; border-bottom: 1px solid var(--cp-line); }

/* Utility bar */
.cp-utility-bar { font-size: .875rem; }
.cp-utility-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding-top: 10px;
	padding-bottom: 6px;
}
.cp-utility-nav { display: flex; gap: 26px; flex-wrap: wrap; }
.cp-utility-nav a,
.cp-utility-account > a { color: var(--cp-ink); }
.cp-utility-nav a:hover { color: var(--cp-blue); }
.cp-utility-account { display: flex; align-items: center; gap: 18px; }

.cp-cart-link {
	position: relative;
	display: inline-flex;
	color: var(--cp-ink);
	padding: 4px;
}
.cp-cart-link:hover { color: var(--cp-blue); }
.cp-cart-count {
	position: absolute;
	top: -6px; right: -8px;
	min-width: 18px; height: 18px;
	display: none;
	align-items: center; justify-content: center;
	background: var(--cp-red);
	color: #fff;
	font-size: .7rem; font-weight: 700;
	border-radius: 999px;
	padding: 0 4px;
}
.cp-cart-count.has-items { display: inline-flex; }

.cp-nav-toggle {
	display: none;
	background: none; border: 0; padding: 4px;
	color: var(--cp-ink); cursor: pointer;
}

/* Masthead */
.cp-masthead-inner {
	display: flex;
	align-items: center;
	gap: 20px;
	padding-top: 10px;
	padding-bottom: 16px;
}

.cp-branding img { max-height: 64px; width: auto; display: block; }
.cp-logo-text {
	font-family: var(--cp-serif);
	font-size: 2rem;
	font-weight: 700;
	color: var(--cp-red);
	letter-spacing: .02em;
}
.cp-logo-text:hover { text-decoration: none; color: var(--cp-red-dark); }

/* Category dropdown */
.cp-cat-dd { position: relative; flex-shrink: 0; }
.cp-cat-dd-btn {
	display: inline-flex; align-items: center; gap: 7px;
	background: none;
	border: 0;
	font-size: .9rem;
	color: var(--cp-ink);
	padding: 10px 8px;
	cursor: pointer;
	border-radius: var(--cp-radius-sm);
}
.cp-cat-dd-btn:hover { background: var(--cp-cream); }
.cp-cat-dd-menu {
	position: absolute;
	top: calc(100% + 6px); left: 0;
	z-index: 200;
	min-width: 260px;
	max-height: 70vh;
	overflow: auto;
	margin: 0; padding: 8px;
	list-style: none;
	background: #fff;
	border: 1px solid var(--cp-line);
	border-radius: var(--cp-radius);
	box-shadow: var(--cp-shadow-hover);
}
.cp-cat-dd-menu a {
	display: block;
	padding: 9px 12px;
	color: var(--cp-ink);
	border-radius: var(--cp-radius-sm);
}
.cp-cat-dd-menu a:hover { background: var(--cp-cream); text-decoration: none; }
.cp-cat-dd-all a { color: var(--cp-blue); font-weight: 600; }

/* Search */
.cp-header-search { flex: 1; min-width: 0; }
.cp-searchform { display: flex; gap: 10px; }
.cp-searchform input[type="search"] {
	flex: 1; min-width: 0;
	border-radius: 999px;
	border: 2px solid var(--cp-ink);
	padding: 11px 20px;
}
.cp-search-btn {
	background: var(--cp-blue);
	color: #fff; font-weight: 600;
	border: 0; border-radius: 999px;
	padding: 0 26px;
	cursor: pointer;
}
.cp-search-btn:hover { background: var(--cp-blue-dark); }

/* FiboSearch harmonization */
.cp-header-search .dgwt-wcas-search-wrapp { max-width: none; }
.cp-header-search .dgwt-wcas-search-input {
	border-radius: 999px !important;
	border: 2px solid var(--cp-ink) !important;
}

/* Native Woo product search fallback */
.cp-header-search .woocommerce-product-search { display: flex; gap: 10px; }
.cp-header-search .woocommerce-product-search .search-field {
	flex: 1; min-width: 0;
	border-radius: 999px;
	border: 2px solid var(--cp-ink);
	padding: 11px 20px;
}
.cp-header-search .woocommerce-product-search button {
	border-radius: 999px;
	padding: 0 26px;
}

/* Promo bar */
.cp-promo-bar {
	background: var(--cp-yellow);
	text-align: center;
	font-weight: 600;
	font-size: .95rem;
	padding: 9px 16px;
}
.cp-promo-bar a { color: var(--cp-ink); }

/* Mobile nav */
.cp-mobile-nav { border-top: 1px solid var(--cp-line); background: #fff; }
.cp-mobile-menu { list-style: none; margin: 0; padding: 8px 24px; }
.cp-mobile-menu a {
	display: block;
	padding: 12px 0;
	color: var(--cp-ink);
	border-bottom: 1px solid var(--cp-line);
	font-size: 1rem;
}

/* ══ Homepage ═════════════════════════════════════════════════════════ */

.cp-home { padding-top: 28px; padding-bottom: 48px; }
.cp-home .cp-homepage-section { margin-bottom: 44px; }
.cp-home .cp-section-heading { font-family: var(--cp-serif); }

/* ══ Footer ═══════════════════════════════════════════════════════════ */

.cp-footer { background: var(--cp-cream); border-top: 1px solid var(--cp-line); margin-top: 56px; }

.cp-newsletter { border-bottom: 1px solid var(--cp-line); }
.cp-newsletter-inner {
	text-align: center;
	padding-top: 44px;
	padding-bottom: 44px;
	max-width: 720px;
}
.cp-newsletter-icon { color: var(--cp-red); }
.cp-newsletter-title { color: var(--cp-red); font-size: 1.8rem; margin: 10px 0 4px; }
.cp-newsletter-subtitle { font-family: var(--cp-sans); font-size: 1rem; font-weight: 600; margin-bottom: 16px; }
.cp-newsletter-note { color: var(--cp-muted); font-size: .9rem; }
.cp-newsletter .gform_wrapper form,
.cp-newsletter-widget form { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }

.cp-footer-cols {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 32px;
	padding-top: 40px;
	padding-bottom: 32px;
}
.cp-footer-col h3 {
	font-family: var(--cp-sans);
	font-size: .85rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: var(--cp-red);
}
.cp-footer-col ul { list-style: none; margin: 0; padding: 0; }
.cp-footer-col li { margin-bottom: 8px; }
.cp-footer-col a { color: var(--cp-ink); }
.cp-footer-col a:hover { color: var(--cp-blue); }

.cp-social { display: flex; gap: 14px; margin-top: 12px; }
.cp-social a { color: var(--cp-ink); display: inline-flex; }
.cp-social a:hover { color: var(--cp-blue); }
.cp-social svg { width: 22px; height: 22px; }

.cp-footer-legal {
	border-top: 1px solid var(--cp-line);
	font-size: .85rem;
	color: var(--cp-muted);
}
.cp-footer-legal p { margin: 14px 0; }

/* ══ Pages / posts ════════════════════════════════════════════════════ */

.cp-page { padding-top: 32px; padding-bottom: 48px; max-width: 980px; }
.cp-page-title { margin-bottom: .8em; }
.cp-entry-meta { color: var(--cp-muted); font-size: .9rem; }
.cp-entry-content img { border-radius: var(--cp-radius); }
.cp-404 { text-align: center; padding-top: 64px; padding-bottom: 80px; }
.cp-404 .cp-searchform { max-width: 480px; margin: 24px auto; }

/* About page (template-about.php) */
.cp-about { padding-top: 40px; padding-bottom: 64px; }
.cp-about-grid {
	display: grid;
	grid-template-columns: 0.9fr 1.1fr;
	gap: 48px;
	align-items: start;
}
.cp-about-title { font-size: 2.4rem; line-height: 1.15; margin: 0 0 24px; }
.cp-about-body p { margin: 0 0 1.2em; line-height: 1.7; color: var(--cp-ink); }
.cp-about-body p:last-child { margin-bottom: 0; }

.cp-about-photos { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.cp-about-photos figure { margin: 0; }
.cp-about-photos img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 12px;
	box-shadow: var(--cp-shadow);
}
.cp-about-photo-wide { grid-column: 1 / -1; }
.cp-about-photo-wide img { aspect-ratio: 16 / 10; }
.cp-about-photo-tall img { aspect-ratio: 4 / 5; }

@media (max-width: 880px) {
	.cp-about-grid { grid-template-columns: 1fr; gap: 32px; }
	.cp-about-title { font-size: 2rem; }
	.cp-about-media { order: 2; }
}

/* ══ WooCommerce: shop grid ═══════════════════════════════════════════ */

.cp-shop-main { padding-top: 28px; padding-bottom: 72px; }

.woocommerce-breadcrumb {
	font-size: .85rem;
	color: var(--cp-muted);
	padding-top: 16px;
	margin-bottom: 8px;
}
.woocommerce-breadcrumb a { color: var(--cp-muted); }
.cp-crumb-sep { margin: 0 7px; }

.woocommerce-products-header { margin-bottom: 8px; }
.woocommerce-products-header__title.page-title,
.cp-shop-main > .page-title {
	font-size: 1.75rem;
	margin: 4px 0 .35em;
}

/* Products-per-page control (alg plugin) — sits under the toolbar */
.cp-shop-main .alg-wc-products-per-page-form {
	margin: 0 0 22px;
	color: var(--cp-muted);
	font-size: .9rem;
}
.cp-shop-main .alg-wc-products-per-page-form select {
	margin-left: 6px;
	padding: 6px 10px;
}

/* Category/shop description copy — read as prose, not a run-on wall of text */
.term-description {
	max-width: 740px;
	margin: 20px 0 0;
	padding-top: 28px;
	border-top: 1px solid var(--cp-line);
	color: var(--cp-ink);
	font-size: 1rem;
	line-height: 1.7;
}
ul.products + .term-description,
.woocommerce-pagination + .term-description { margin-top: 48px; }
.term-description > *:first-child { margin-top: 0; }
.term-description p { margin: 0 0 1.1em; }
.term-description h1,
.term-description h2,
.term-description h3,
.term-description h4 {
	font-family: var(--cp-serif);
	margin: 1.6em 0 .55em;
}
.term-description h2 { font-size: 1.35rem; }
.term-description h3 { font-size: 1.1rem; }
.term-description h4 { font-size: 1rem; font-family: var(--cp-sans); font-weight: 700; }
.term-description ul, .term-description ol { margin: 0 0 1.1em; padding-left: 1.3em; }
.term-description li { margin-bottom: .4em; }
.term-description strong { color: var(--cp-ink); }
.term-description a { color: var(--cp-blue); }

/* Result count + sort dropdown, wrapped in a proper toolbar row */
.cp-shop-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px;
	margin: 22px 0 28px;
	padding-bottom: 18px;
	border-bottom: 1px solid var(--cp-line);
}
.cp-shop-toolbar .woocommerce-result-count,
.cp-shop-toolbar .woocommerce-ordering {
	margin: 0;
	float: none;
}
.woocommerce-result-count { color: var(--cp-muted); font-size: .9rem; }
.woocommerce-ordering select { padding: 8px 12px; }

/* Grid: Woo outputs ul.products with column classes; grid handles all */
ul.products {
	display: grid !important;
	grid-template-columns: repeat(5, 1fr);
	gap: 26px;
	list-style: none;
	margin: 0 !important;
	padding: 0;
}
/* Woo's clearfix pseudo-elements (.woocommerce ul.products::before/::after)
   become stray grid items and shove the first product into cell 2, staggering
   the whole grid. Neutralize them at matching specificity so the grid fills
   left-to-right in even rows. */
.woocommerce ul.products::before,
.woocommerce ul.products::after,
ul.products::before,
ul.products::after { content: none !important; display: none !important; }

ul.products li.product {
	width: auto !important;
	float: none !important;
	margin: 0 !important;
	position: relative;
	background: #fff;
	border: 1px solid var(--cp-line);
	border-radius: var(--cp-radius);
	overflow: hidden;
	transition: box-shadow .15s ease, transform .15s ease;
	display: flex;
	flex-direction: column;
	min-width: 0;
}
ul.products li.product:hover {
	box-shadow: var(--cp-shadow-hover);
	transform: translateY(-2px);
}

ul.products li.product a.woocommerce-LoopProduct-link {
	display: flex;
	flex-direction: column;
	flex: 1;
	min-width: 0;
	color: var(--cp-ink);
	text-decoration: none;
}

/* Square thumbnails: the whole postcard is always shown (object-fit: contain)
   inside a 1:1 box, so landscape cards get letterbox padding top/bottom and
   portrait cards get pillarbox padding left/right, filled with a light grey.
   Hard-capped so a stray placeholder/broken image can't blow out the card. */
ul.products li.product img {
	display: block !important;
	width: 100% !important;
	height: auto !important;
	aspect-ratio: 1 / 1 !important;
	object-fit: contain !important;
	object-position: center !important;
	background: var(--cp-thumb-bg) !important;
	margin: 0 !important;
	max-height: none;
	flex-shrink: 0;
	/* When an image fails to load, browsers fall back to rendering the alt
	   text inside the <img> box. Firefox and Safari let that text push the
	   element past its aspect-ratio height, which stretches the grid row and
	   throws off the whole page. Zeroing the text metrics means broken images
	   collapse to an empty square instead. The alt attribute is untouched, so
	   screen readers still announce it. */
	font-size: 0 !important;
	line-height: 0 !important;
	color: transparent !important;
	overflow: hidden !important;
	contain: size layout paint;
}

/* Failed thumbnail: show a neutral "image unavailable" square rather than a
   blank grey box. Applied by theme.js on the img's error event. */
ul.products li.product img.cp-img-failed {
	background:
		url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 24 24' fill='none' stroke='%23b9b2a8' stroke-width='1.3'%3E%3Crect x='2.5' y='4.5' width='19' height='15' rx='2'/%3E%3Ccircle cx='8.5' cy='10' r='1.6'/%3E%3Cpath d='M4 17l5-5 3.5 3.5L16 12l4 4'/%3E%3C/svg%3E")
		center center / 44px 44px no-repeat,
		var(--cp-thumb-bg) !important;
}
ul.products li.product .woocommerce-product-gallery__image--placeholder,
ul.products li.product .woocommerce-placeholder {
	aspect-ratio: 1 / 1;
	overflow: hidden;
}

/* Title: clamp to two lines and reserve that height on every card so short
   and long titles line up and can never overlap the price below. The
   .woocommerce prefix is needed to beat Woo's own loop-title rule. */
.woocommerce ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--cp-sans);
	font-size: .92rem;
	font-weight: 500;
	line-height: 1.35;
	padding: 10px 12px 4px;
	margin: 0;
	display: -webkit-box !important;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden !important;
	min-height: calc(1.35em * 2 + 14px);
}

ul.products li.product .price {
	padding: 4px 12px 12px;
	margin: 0;
	color: var(--cp-ink);
	font-size: 1.05rem;
	font-weight: 700;
	margin-top: auto;
}
ul.products li.product .price del {
	color: var(--cp-muted);
	font-weight: 400;
	font-size: .85rem;
	margin-right: 6px;
}
ul.products li.product .price ins { text-decoration: none; color: var(--cp-green); }

ul.products li.product .star-rating { margin: 2px 12px; font-size: .8rem; }

ul.products li.product .button {
	margin: 0 12px 14px;
	align-self: flex-start;
	font-size: .85rem;
	padding: 10px 18px;
}

/* Sale badge — pill, green like the mock-up deal chips */
.woocommerce span.onsale,
span.onsale {
	position: absolute;
	top: 10px; left: 10px;
	z-index: 5;
	background: #d8efdf;
	color: var(--cp-green);
	font-size: .78rem;
	font-weight: 700;
	line-height: 1;
	padding: 6px 10px;
	border-radius: 999px;
	min-width: 0; min-height: 0;
	margin: 0;
}

/* Pagination */
.woocommerce nav.woocommerce-pagination { text-align: center; margin-top: 32px; }
.woocommerce nav.woocommerce-pagination ul {
	border: 0; display: inline-flex; gap: 6px;
}
.woocommerce nav.woocommerce-pagination ul li { border: 0; }
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
	padding: 10px 15px;
	border-radius: 999px;
	color: var(--cp-ink);
}
.woocommerce nav.woocommerce-pagination ul li span.current,
.woocommerce nav.woocommerce-pagination ul li a:hover {
	background: var(--cp-ink);
	color: #fff;
}

/* ══ WooCommerce: single product ══════════════════════════════════════ */

.woocommerce div.product {
	position: relative;
	margin-top: 32px;
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	column-gap: 56px;
	row-gap: 0;
	align-items: start;
}

/* Gallery + summary sit side by side; everything else (tabs, upsells,
   related) spans the full width beneath them. */
.woocommerce div.product > .images,
.woocommerce div.product > .summary {
	width: 100% !important;
	float: none !important;
	margin: 0 !important;
}
.woocommerce div.product > .woocommerce-tabs,
.woocommerce div.product > .woocommerce-product-attributes,
.woocommerce div.product > .related.products,
.woocommerce div.product > .upsells.products {
	grid-column: 1 / -1;
}

.woocommerce div.product div.images img {
	border-radius: var(--cp-radius);
	border: 1px solid var(--cp-line);
	background: var(--cp-cream);
}

.woocommerce div.product .summary { padding-top: 4px; }

.woocommerce div.product .product_title {
	font-family: var(--cp-serif);
	font-size: 1.75rem;
	margin-bottom: .4em;
}

.woocommerce div.product p.price {
	color: var(--cp-ink);
	font-size: 1.6rem;
	font-weight: 700;
	margin: .6em 0;
}
.woocommerce div.product p.price del { color: var(--cp-muted); font-size: 1.1rem; }
.woocommerce div.product p.price ins { text-decoration: none; color: var(--cp-green); }

.woocommerce div.product form.cart { margin: 24px 0; }
.woocommerce div.product form.cart .button { font-size: 1.05rem; padding: 15px 34px; }

.woocommerce div.product .product_meta {
	font-size: .88rem;
	color: var(--cp-muted);
	border-top: 1px solid var(--cp-line);
	padding-top: 16px;
	margin-top: 8px;
}
.woocommerce div.product .product_meta > span { display: block; margin-bottom: 4px; }
.woocommerce div.product .product_meta .cp-tax-postcard-artist,
.woocommerce div.product .product_meta .cp-tax-postcard-publisher { color: var(--cp-muted); }

/* Real Photo (RPPC) badge under the product title */
.cp-rppc-badge { margin: 0 0 .6em; }
.cp-rppc-badge span {
	display: inline-block;
	background: var(--cp-blue);
	color: #fff;
	font-size: .72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .05em;
	padding: 4px 11px;
	border-radius: 999px;
}

.woocommerce div.product .woocommerce-tabs {
	margin-top: 56px;
	padding-top: 40px;
	border-top: 1px solid var(--cp-line);
	max-width: 820px;
}
.woocommerce div.product .woocommerce-tabs ul.tabs {
	padding: 0; margin: 0 0 1.5em;
	border-bottom: 1px solid var(--cp-line);
}
.woocommerce div.product .woocommerce-tabs ul.tabs::before { border-color: var(--cp-line); }
.woocommerce div.product .woocommerce-tabs ul.tabs li {
	background: transparent;
	border: 0;
	border-radius: 0;
	margin: 0 8px 0 0;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	font-weight: 600;
	color: var(--cp-muted);
	padding: 12px 18px;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
	color: var(--cp-ink);
	box-shadow: inset 0 -3px 0 var(--cp-red);
}
.woocommerce div.product .woocommerce-tabs .panel {
	line-height: 1.7;
}
.woocommerce div.product .woocommerce-tabs .panel > h2 {
	font-family: var(--cp-serif);
	font-size: 1.25rem;
}
.woocommerce div.product .woocommerce-tabs .panel p { margin: 0 0 1.1em; }

.related.products,
.upsells.products {
	margin-top: 56px;
	padding-top: 40px;
	border-top: 1px solid var(--cp-line);
}
.related.products > h2,
.upsells.products > h2 {
	font-family: var(--cp-serif);
	font-size: 1.35rem;
	margin: 0 0 24px;
}

/* ══ Hi-Res Scan request (cardypants-hires-scan plugin) ═══════════════ */

.cardy-hires-section {
	margin: 22px 0;
	padding: 20px 22px;
	background: var(--cp-cream);
	border: 1px solid var(--cp-line);
	border-radius: var(--cp-radius);
}
.cardy-hires-title {
	margin: 0 0 6px;
	font-family: var(--cp-serif);
	font-size: 1.15rem;
	font-weight: 600;
	color: var(--cp-ink);
}
.cardy-hires-intro {
	margin: 0 0 14px;
	font-size: .9rem;
	line-height: 1.6;
	color: var(--cp-muted);
}
.cardy-hires-price {
	margin: 0 0 16px;
	font-size: 1rem;
	color: var(--cp-ink);
}
.cardy-hires-badge {
	display: inline-block;
	margin-left: 8px;
	background: var(--cp-yellow);
	color: var(--cp-ink);
	font-size: .68rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .05em;
	padding: 3px 9px;
	border-radius: 999px;
	vertical-align: middle;
}
.cardy-hires-field { margin: 0 0 12px; }
.cardy-hires-field label {
	display: block;
	font-size: .82rem;
	font-weight: 600;
	margin-bottom: 4px;
	color: var(--cp-ink);
}
.cardy-hires-field input { width: 100%; max-width: 380px; }
.cardy-hires-submit { margin-top: 4px; }
.cardy-hires-note {
	margin: 10px 0 0;
	font-size: .78rem;
	color: var(--cp-muted);
}

.cardy-hires-confirmation {
	margin: 22px 0;
	padding: 16px 20px;
	background: var(--cp-cream);
	border: 1px solid var(--cp-line);
	border-left: 4px solid var(--cp-green);
	border-radius: var(--cp-radius-sm);
}
.cardy-hires-confirmation strong { display: block; margin-bottom: 4px; color: var(--cp-green); }
.cardy-hires-confirmation span { font-size: .88rem; color: var(--cp-muted); }

/* ══ CardyPantsCash rewards (cardypantscash-rewards plugin) ═══════════ */

.cardypantscash-header {
	margin: 0 0 20px;
	padding: 16px 18px;
	background: var(--cp-cream);
	border: 1px solid var(--cp-line);
	border-radius: var(--cp-radius);
}
.cardypantscash-title {
	margin: 0;
	font-size: 1.25rem;
	color: var(--cp-red);
}
.cardypantscash-tagline {
	margin: 2px 0 0;
	font-size: .88rem;
	color: var(--cp-muted);
}
.cardypantscash-code {
	display: inline-block;
	background: var(--cp-cream-dark);
	border: 1px solid var(--cp-line);
	border-radius: 999px;
	padding: 3px 12px;
	font-family: "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;
	font-size: .85rem;
	font-weight: 600;
	letter-spacing: .03em;
	color: var(--cp-ink);
}

/* ══ WooCommerce: notices, cart, checkout, account ════════════════════ */

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	border-radius: var(--cp-radius-sm);
	background: var(--cp-cream);
	border-top-color: var(--cp-blue);
}
.woocommerce-message { border-top-color: var(--cp-green); }
.woocommerce-error { border-top-color: var(--cp-red); }
.woocommerce-message::before { color: var(--cp-green); }
.woocommerce-info::before { color: var(--cp-blue); }

.woocommerce table.shop_table {
	border: 1px solid var(--cp-line);
	border-radius: var(--cp-radius);
	border-collapse: separate;
	border-spacing: 0;
}
.woocommerce table.shop_table th,
.woocommerce table.shop_table td { border-color: var(--cp-line); }
.woocommerce table.shop_table td.product-name a { color: var(--cp-ink); font-weight: 600; }

.woocommerce .cart_totals h2,
.woocommerce-checkout h3 { font-family: var(--cp-serif); }

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea { padding: 10px 12px; }

.woocommerce-account .woocommerce-MyAccount-navigation ul {
	list-style: none; margin: 0; padding: 0;
}
.woocommerce-account .woocommerce-MyAccount-navigation li {
	border-bottom: 1px solid var(--cp-line);
}
.woocommerce-account .woocommerce-MyAccount-navigation li a {
	display: block; padding: 12px 4px; color: var(--cp-ink);
}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a {
	color: var(--cp-red); font-weight: 700;
}

/* ══ Responsive ═══════════════════════════════════════════════════════ */

@media (max-width: 1100px) {
	ul.products { grid-template-columns: repeat(4, 1fr); }
	.cp-container,
	.cp-shop-container { padding-left: 24px; padding-right: 24px; }
	.woocommerce div.product { column-gap: 36px; }
}

@media (max-width: 880px) {
	ul.products { grid-template-columns: repeat(3, 1fr); gap: 16px; }

	.cp-utility-nav { display: none; }
	.cp-nav-toggle { display: inline-flex; }

	.cp-masthead-inner { flex-wrap: wrap; gap: 12px; padding-bottom: 12px; }
	.cp-branding { order: 1; }
	.cp-cat-dd { order: 2; margin-left: auto; }
	.cp-header-search { order: 3; flex-basis: 100%; }

	.cp-footer-cols { grid-template-columns: 1fr 1fr; }

	.woocommerce div.product {
		grid-template-columns: 1fr;
		row-gap: 28px;
	}
	.woocommerce div.product .summary { padding-top: 0; }
	.woocommerce div.product .woocommerce-tabs,
	.related.products,
	.upsells.products { margin-top: 40px; padding-top: 32px; }

	.cp-shop-toolbar { margin: 18px 0 22px; }
}

@media (max-width: 560px) {
	ul.products { grid-template-columns: repeat(2, 1fr); gap: 12px; }
	.cp-container,
	.cp-shop-container { padding-left: 16px; padding-right: 16px; }
	.cp-branding img { max-height: 48px; }
	.cp-footer-cols { grid-template-columns: 1fr; }
	.cp-search-btn { padding: 0 18px; }
	h1 { font-size: 1.5rem; }

	.cp-shop-main { padding-top: 20px; padding-bottom: 48px; }
	.term-description { padding-top: 22px; margin-top: 32px; }
	.woocommerce div.product form.cart .button { width: 100%; text-align: center; }
}

/* ══ Motion preferences ═══════════════════════════════════════════════ */

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ── Homepage intro / H1 ─────────────────────────────────────────────── */

.cp-home-intro {
	margin: 22px 0 20px;
	text-align: center;
}

.cp-home-title {
	margin: 0;
	font-family: var(--cp-serif);
	font-size: clamp(1.5rem, 3.2vw, 2.15rem);
	line-height: 1.15;
	letter-spacing: -.01em;
	color: var(--cp-ink);
}

.cp-home-sub {
	margin: 10px auto 0;
	max-width: 62ch;
	color: var(--cp-muted);
	font-size: 1rem;
	line-height: 1.55;
}

@media (max-width: 700px) {
	.cp-home-intro { margin: 16px 0; text-align: left; }
	.cp-home-sub { font-size: .94rem; }
}
