.ccfw {
	--ccfw-navy: #061a4d;
	--ccfw-orange: #ff4f2e;
	--ccfw-cream: #fbf7ef;
	--ccfw-ink-muted: #536078;
	--ccfw-rule: #d8d4cc;
	width: min(100%, 1240px);
	margin-inline: auto;
	padding: clamp(24px, 4vw, 64px) clamp(16px, 3vw, 32px);
	box-sizing: border-box;
}

/* Archive grids sit above Woodmart's product loop without inheriting row gutters. */
.woocommerce-shop .ccfw,
.tax-product_cat .ccfw {
	clear: both;
	width: 100%;
	max-width: 1240px;
}

.ccfw__header {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr);
	gap: 32px;
	align-items: end;
	margin-bottom: clamp(24px, 3vw, 40px);
}

.ccfw__heading {
	max-width: 18ch;
	margin: 0;
	color: var(--ccfw-navy);
	font-family: Georgia, 'Times New Roman', serif;
	font-size: clamp(2rem, 4vw, 3.75rem);
	font-weight: 700;
	line-height: .98;
	letter-spacing: -.035em;
}

.ccfw__description {
	max-width: 58ch;
	margin: 0;
	color: var(--ccfw-ink-muted);
	font-size: 1rem;
	line-height: 1.65;
}

.ccfw__grid {
	display: grid;
	grid-template-columns: repeat(var(--ccfw-columns, 4), minmax(0, 1fr));
	gap: clamp(18px, 2.4vw, 30px);
}

.ccfw-card {
	min-width: 0;
	background: #fff;
	border: 1px solid var(--ccfw-rule);
	border-radius: 2px;
	overflow: hidden;
	transition: border-color 180ms ease-out, box-shadow 180ms ease-out, transform 180ms ease-out;
}

.ccfw-card:hover {
	border-color: var(--ccfw-orange);
	box-shadow: 0 12px 28px rgba(6, 26, 77, .11);
	transform: translateY(-3px);
}

.ccfw-card__link {
	display: block;
	color: inherit;
	text-decoration: none;
	outline: none;
}

.ccfw-card__link:focus-visible {
	outline: none;
	box-shadow: inset 0 0 0 3px var(--ccfw-orange);
}

.ccfw-card__media {
	position: relative;
	margin: 0;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background: #f2ede4;
}

.ccfw--ratio-square .ccfw-card__media {
	aspect-ratio: 1;
}

.ccfw--ratio-landscape .ccfw-card__media {
	aspect-ratio: 4 / 3;
}

.ccfw-card__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center top;
	transition: transform 360ms cubic-bezier(.22, 1, .36, 1);
}

.ccfw-card:hover .ccfw-card__image {
	transform: scale(1.025);
}

.ccfw-card__body {
	position: relative;
	display: grid;
	gap: 4px;
	min-height: 104px;
	padding: 18px 52px 18px 18px;
	box-sizing: border-box;
}

.ccfw-card__title {
	color: var(--ccfw-navy);
	font-family: Georgia, 'Times New Roman', serif;
	font-size: clamp(1.1rem, 1.6vw, 1.38rem);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -.02em;
}

.ccfw--title-title .ccfw-card__title {
	text-transform: capitalize;
}

.ccfw--title-uppercase .ccfw-card__title {
	text-transform: uppercase;
}

.ccfw--title-lowercase .ccfw-card__title {
	text-transform: lowercase;
}

.ccfw-card__count {
	color: var(--ccfw-ink-muted);
	font-size: .95rem;
	font-variant-numeric: tabular-nums;
}

.ccfw-card__arrow {
	position: absolute;
	top: 50%;
	right: 18px;
	width: 24px;
	height: 24px;
	color: var(--ccfw-orange);
	transform: translateY(-50%);
	transition: transform 180ms ease-out;
}

.ccfw-card:hover .ccfw-card__arrow {
	transform: translate(3px, -50%);
}

@media (max-width: 1024px) {
	.ccfw__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 767px) {
	.ccfw__header {
		grid-template-columns: 1fr;
		gap: 14px;
	}

	.ccfw__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 14px;
	}

	.ccfw-card__body {
		min-height: 96px;
		padding: 14px 36px 14px 14px;
	}

	.ccfw-card__arrow {
		right: 13px;
		width: 20px;
		height: 20px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.ccfw-card,
	.ccfw-card__image {
		transition: none;
	}
}

@media (forced-colors: active) {
	.ccfw-card,
	.ccfw-card__link:focus-visible {
		border: 1px solid CanvasText;
	}
}
