/*
 * CouponVerity public site stylesheet.
 *
 * Every value below traces to exactly one locked token in
 * docs/BRAND_UI_FOUNDATION.md section 5 (semantic token -> CSS custom
 * property -> component, per that document's section 16.1 mapping
 * requirement). No raw hex value appears anywhere below this block of
 * custom-property declarations, and no gradient is defined anywhere in this
 * file (Brand section 3 rule 9, section 16.2 rule 4).
 *
 * Inter self-hosting (Brand 15.1) is deferred: the fallback stack is
 * authoritative here, matching Brand section 6 boundary 4 ("no layout may
 * depend on Inter having loaded").
 */

:root {
	/* Brand tokens (B1-B3, locked) */
	--cv-brand-primary: #082e6a;
	--cv-brand-primary-hover: #06264f;
	--cv-brand-primary-active: #041b3b;
	--cv-brand-primary-soft: #e8eef7;
	--cv-brand-secondary: #59af36;
	--cv-brand-secondary-strong: #3a7a23;
	--cv-brand-secondary-hover: #30661c;
	--cv-brand-secondary-active: #275419;
	--cv-brand-secondary-soft: #edf7e8;

	/* Neutral / surface tokens */
	--cv-page-background: #f7f9fc;
	--cv-surface-primary: #ffffff;
	--cv-surface-secondary: #f1f3f6;
	--cv-text-primary: #0f172a;
	--cv-text-secondary: #475569;
	--cv-text-muted: #64748b;
	--cv-border-default: #d8dee7;
	--cv-border-strong: #7d8b9e;
	--cv-divider: #e6eaf0;

	/* Interaction tokens */
	--cv-link: #082e6a;
	--cv-link-hover: #06264f;
	--cv-focus-ring: #082e6a;
	--cv-disabled-background: #eff2f6;
	--cv-disabled-text: #8a94a3;

	/* Semantic status tokens */
	--cv-warning: #8a5a00;
	--cv-warning-soft: #fff6e5;
	--cv-expired: #5b6472;
	--cv-expired-soft: #f1f3f6;
	--cv-error: #b3261e;
	--cv-error-soft: #fdecea;

	/* Foreground on a brand-primary (navy) surface */
	--cv-on-dark: #ffffff;
	--cv-on-dark-muted: #cbd5e1;

	/* Type scale (section 15.1) */
	--cv-font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
		"Helvetica Neue", Arial, sans-serif;
	--cv-font-mono: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;

	/* Spacing scale, 8px base (section 15.3) */
	--cv-space-1: 4px;
	--cv-space-2: 8px;
	--cv-space-3: 12px;
	--cv-space-4: 16px;
	--cv-space-6: 24px;
	--cv-space-8: 32px;
	--cv-space-10: 40px;
	--cv-space-12: 48px;

	/* Shape */
	--cv-radius-control: 8px;
	--cv-radius-card: 12px;
	--cv-radius-badge: 6px;

	/* Layout (section 14.2) */
	--cv-container-max: 1200px;
	--cv-reading-max: 720px;
}

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

/*
 * Mobile overflow safety, scoped to the CouponVerity public-site root and the
 * actual dynamic-content components that can carry unbounded
 * operator/merchant/user-entered text.
 */
.cv-public .cv-store-card__name,
.cv-public .cv-category-card__name,
.cv-public .cv-offer-card__savings,
.cv-public .cv-offer-card__title,
.cv-public .cv-page-header h1,
.cv-public .cv-store-identity__body h1,
.cv-public .cv-breadcrumb li,
.cv-public .cv-button,
.cv-public .cv-header__search-input,
.cv-public .cv-footer__disclosure,
.cv-public .cv-store-index__search-message {
	overflow-wrap: anywhere;
}

.cv-public .cv-code,
.cv-public .cv-store-identity__domain {
	overflow-wrap: anywhere;
	max-width: 100%;
}

.cv-public .cv-header__bar > *,
.cv-public .cv-header__search-form,
.cv-public .cv-offer-card__info,
.cv-public .cv-offer-card__meta,
.cv-public .cv-page-header,
.cv-public .cv-footer__group,
.cv-public .cv-store-identity__body,
.cv-public .cv-grid > li,
.cv-public .cv-index-list > li {
	min-width: 0;
}

.cv-public img,
.cv-public svg {
	max-width: 100%;
	height: auto;
}

.cv-visually-hidden {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

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

body.cv-public {
	margin: 0;
	background: var(--cv-page-background);
	color: var(--cv-text-primary);
	font-family: var(--cv-font-family);
	font-size: 16px;
	line-height: 1.625;
}

.cv-public a:not(:where(.cv-button)) {
	color: var(--cv-link);
}

.cv-public a:not(:where(.cv-button)):hover {
	color: var(--cv-link-hover);
	text-decoration: underline;
}

.cv-public :focus-visible {
	outline: 2px solid var(--cv-focus-ring);
	outline-offset: 2px;
}

.cv-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	background: var(--cv-surface-primary);
	color: var(--cv-brand-primary);
	padding: var(--cv-space-2) var(--cv-space-4);
	z-index: 100;
	border-radius: var(--cv-radius-control);
}

.cv-skip-link:focus {
	left: var(--cv-space-4);
	top: var(--cv-space-4);
}

.cv-container {
	max-width: var(--cv-container-max);
	margin: 0 auto;
	padding: 0 var(--cv-space-4);
}

@media (min-width: 768px) {
	.cv-container {
		padding: 0 var(--cv-space-6);
	}
}

@media (min-width: 1024px) {
	.cv-container {
		padding: 0 var(--cv-space-8);
	}
}

/* Header */

.cv-header {
	background: var(--cv-brand-primary);
	color: var(--cv-on-dark);
	border-bottom: 3px solid var(--cv-brand-secondary-strong);
	box-shadow: 0 2px 8px rgba(8, 46, 106, 0.12);
}

.cv-header__bar {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--cv-space-3);
	padding: var(--cv-space-3) 0;
}

@media (min-width: 600px) {
	.cv-header__bar {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		justify-content: space-between;
		gap: var(--cv-space-4);
	}
}

@media (min-width: 768px) {
	.cv-header__bar {
		padding: var(--cv-space-4) 0;
	}
}

.cv-header .cv-header__logo {
	display: inline-flex;
	align-items: center;
	gap: var(--cv-space-2);
	color: var(--cv-on-dark);
	font-weight: 700;
	font-size: 20px;
	letter-spacing: -0.01em;
	text-decoration: none;
}

@media (min-width: 768px) {
	.cv-header .cv-header__logo {
		font-size: 22px;
	}
}

.cv-header .cv-header__logo:hover {
	color: var(--cv-on-dark);
	text-decoration: none;
	opacity: 0.95;
}

.cv-header__logo-mark {
	display: block;
	width: 40px;
	height: 24px;
}

@media (min-width: 768px) {
	.cv-header__logo-mark {
		width: 50px;
		height: 30px;
	}
}

.cv-nav {
	display: flex;
	flex-wrap: nowrap;
	flex-shrink: 0;
	gap: var(--cv-space-4);
}

@media (min-width: 768px) {
	.cv-nav {
		gap: var(--cv-space-6);
	}
}

.cv-nav a {
	color: var(--cv-on-dark);
	text-decoration: none;
	font-weight: 600;
	font-size: 15px;
	padding: var(--cv-space-1) var(--cv-space-2);
	border-radius: var(--cv-radius-control);
	transition: background 120ms ease;
}

.cv-nav a[aria-current="page"] {
	background: rgba(255, 255, 255, 0.12);
	text-decoration: none;
}

.cv-nav a:hover {
	background: rgba(255, 255, 255, 0.15);
	text-decoration: none;
}

/* Header search (Store Search Lite) */

.cv-header__search {
	flex: 1 1 auto;
	max-width: 480px;
	width: 100%;
}

.cv-header__search-form {
	display: flex;
	align-items: center;
	width: 100%;
	margin-top: 0;
}

.cv-header__search-input {
	flex: 1 1 auto;
	min-width: 0;
	min-height: 42px;
	padding: 0 16px 0 38px;
	border-radius: 8px 0 0 8px;
	border: 1px solid var(--cv-border-default);
	border-right: none;
	background-color: var(--cv-surface-primary);
	background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="%2364748B" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>');
	background-repeat: no-repeat;
	background-position: 12px center;
	color: var(--cv-text-primary);
	font-size: 14px;
	font-family: inherit;
}

.cv-header__search-button {
	min-height: 42px;
	padding: 0 16px;
	background: var(--cv-brand-secondary);
	color: #ffffff;
	border: none;
	border-radius: 0 8px 8px 0;
	font-weight: 600;
	font-size: 14px;
	cursor: pointer;
	white-space: nowrap;
	transition: background 120ms ease;
}

.cv-header__search-button:hover {
	background: var(--cv-brand-secondary-hover);
}

.cv-header__search-input::placeholder {
	color: var(--cv-text-muted);
}

/* Breadcrumb */

.cv-breadcrumb {
	padding: var(--cv-space-3) 0 0;
	font-size: 14px;
	color: var(--cv-text-secondary);
}

@media (min-width: 768px) {
	.cv-breadcrumb {
		padding: var(--cv-space-4) 0 0;
	}
}

.cv-breadcrumb ol {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 0 var(--cv-space-2);
	margin: 0;
	padding: 0;
}

.cv-breadcrumb li:not(:last-child)::after {
	content: "/";
	margin-left: var(--cv-space-2);
	color: var(--cv-border-strong);
}

.cv-breadcrumb [aria-current="page"] {
	color: var(--cv-text-primary);
	font-weight: 600;
}

/* Page header */

.cv-page-header {
	padding: var(--cv-space-4) 0 var(--cv-space-6);
}

.cv-page-header h1 {
	margin: var(--cv-space-2) 0 0;
	font-size: 28px;
	line-height: 36px;
	font-weight: 700;
	color: var(--cv-text-primary);
	letter-spacing: -0.01em;
}

@media (min-width: 768px) {
	.cv-page-header h1 {
		font-size: 34px;
		line-height: 42px;
	}
}

.cv-page-header__meta {
	margin-top: var(--cv-space-2);
	color: var(--cv-text-secondary);
	font-size: 16px;
}

.cv-count {
	margin: 0;
	color: var(--cv-brand-primary);
	font-size: 13px;
	font-weight: 600;
	display: inline-block;
	background: var(--cv-brand-primary-soft);
	padding: 3px 10px;
	border-radius: var(--cv-radius-badge);
}

/* Store hero block: identity (logo, name, meta, Visit Store) plus an
 * integrated Store Facts panel, both inside one card. Full width, no
 * page-length sidebar competing with the Offer list below it.
 */

.cv-store-hero {
	display: flex;
	flex-direction: column;
	gap: var(--cv-space-6);
	padding: var(--cv-space-5);
	margin: var(--cv-space-4) 0 var(--cv-space-6);
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: var(--cv-radius-card);
	box-shadow: 0 2px 8px rgba(15, 23, 42, 0.04);
}

@media (min-width: 768px) {
	.cv-store-hero {
		padding: var(--cv-space-6);
	}
}

@media (min-width: 1024px) {
	.cv-store-hero {
		flex-direction: row;
		align-items: center;
	}
}

.cv-store-hero__identity {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--cv-space-4);
	flex: 1 1 auto;
	min-width: 0;
}

@media (min-width: 600px) {
	.cv-store-hero__identity {
		flex-direction: row;
		align-items: center;
		gap: var(--cv-space-6);
	}
}

.cv-logo {
	width: 72px;
	height: 72px;
	flex: 0 0 auto;
	border-radius: var(--cv-radius-card);
	background: var(--cv-surface-secondary);
	border: 1px solid var(--cv-border-default);
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
	padding: var(--cv-space-2);
}

.cv-logo--small {
	width: 48px;
	height: 48px;
	border-radius: var(--cv-radius-control);
	padding: 4px;
}

.cv-logo--large {
	width: 88px;
	height: 88px;
	padding: var(--cv-space-3);
}

@media (min-width: 768px) {
	.cv-logo--large {
		width: 112px;
		height: 112px;
	}
}

.cv-logo--large .cv-logo__monogram {
	font-size: 40px;
}

.cv-logo img {
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
}

.cv-logo__monogram {
	font-size: 26px;
	font-weight: 700;
	color: var(--cv-brand-primary);
}

.cv-logo--small .cv-logo__monogram {
	font-size: 20px;
}

.cv-store-identity__body {
	min-width: 0;
	flex: 1 1 auto;
}

.cv-store-identity__body h1 {
	margin: 0 0 var(--cv-space-2);
	font-size: 24px;
	line-height: 32px;
	font-weight: 700;
	color: var(--cv-text-primary);
	letter-spacing: -0.01em;
}

@media (min-width: 768px) {
	.cv-store-identity__body h1 {
		font-size: 30px;
		line-height: 38px;
	}
}

.cv-store-identity__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--cv-space-2);
}

.cv-store-identity__category,
.cv-store-identity__domain {
	margin: 0 0 var(--cv-space-1);
	color: var(--cv-text-secondary);
	font-size: 14px;
}

.cv-store-identity__domain {
	overflow-wrap: anywhere;
	font-family: var(--cv-font-mono);
	color: var(--cv-text-muted);
}

.cv-store-identity__visit {
	margin: var(--cv-space-3) 0 var(--cv-space-2);
}

.cv-visit-store {
	font-weight: 600;
}

.cv-disclosure--inline {
	margin-top: 0;
	margin-bottom: var(--cv-space-6);
	padding: var(--cv-space-3) var(--cv-space-4);
	background: var(--cv-surface-secondary);
	border-radius: var(--cv-radius-control);
	border-left: 3px solid var(--cv-border-strong);
}

/* Offer list */

.cv-offer-list {
	display: flex;
	flex-direction: column;
	gap: var(--cv-space-4);
	margin: 0 0 var(--cv-space-8);
	padding: 0;
	list-style: none;
}

/* Offer card component chrome lives in the "SimplyCodes Offer Card Layout"
 * section below — the single source of truth for .cv-offer-card,
 * .cv-offer-card__info and .cv-offer-card__action. Only the state
 * modifiers and metadata row that section doesn't touch stay here.
 */

.cv-offer-card--expired {
	background: var(--cv-expired-soft);
	opacity: 0.85;
}

.cv-offer-card--first {
	border-left: 5px solid var(--cv-brand-primary);
	box-shadow: 0 4px 14px rgba(8, 46, 106, 0.08);
}

.cv-offer-card__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--cv-space-2);
	margin-bottom: var(--cv-space-2);
}

.cv-chip {
	display: inline-block;
	border-radius: var(--cv-radius-badge);
	padding: 3px var(--cv-space-3);
	font-size: 13px;
	font-weight: 600;
}

.cv-chip--code {
	background: var(--cv-brand-primary-soft);
	color: var(--cv-brand-primary);
}

.cv-chip--deal {
	background: var(--cv-surface-secondary);
	color: var(--cv-text-secondary);
}

.cv-chip--warning {
	background: var(--cv-warning-soft);
	color: var(--cv-warning);
}

.cv-chip--expired {
	background: var(--cv-surface-secondary);
	color: var(--cv-expired);
}

.cv-timing {
	font-size: 13px;
	color: var(--cv-text-muted);
}

.cv-timing--warning {
	color: var(--cv-warning);
	font-weight: 600;
}

.cv-conditions {
	margin: var(--cv-space-2) 0 0;
	padding-left: var(--cv-space-4);
	font-size: 14px;
	line-height: 22px;
	color: var(--cv-text-secondary);
}

.cv-conditions li {
	margin-bottom: var(--cv-space-1);
}

.cv-conditions-more {
	font-size: 14px;
	color: var(--cv-link);
	cursor: pointer;
	background: none;
	border: none;
	padding: var(--cv-space-1) 0;
	font-family: inherit;
	font-weight: 600;
}

/* Buttons */

.cv-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 0 var(--cv-space-6);
	border-radius: var(--cv-radius-control);
	font-size: 15px;
	font-weight: 600;
	text-decoration: none;
	border: none;
	cursor: pointer;
	white-space: nowrap;
	transition: background 120ms ease, transform 120ms ease;
}

.cv-button--primary {
	background: var(--cv-brand-primary);
	color: var(--cv-on-dark);
}

.cv-button--primary:hover {
	background: var(--cv-brand-primary-hover);
	color: var(--cv-on-dark);
}

.cv-button--secondary-strong {
	background: var(--cv-brand-secondary-strong);
	color: var(--cv-on-dark);
}

.cv-button--secondary-strong:hover {
	background: var(--cv-brand-secondary-hover);
	color: var(--cv-on-dark);
}

.cv-button--primary:active {
	background: var(--cv-brand-primary-active);
	color: var(--cv-on-dark);
}

.cv-button--secondary-strong:active {
	background: var(--cv-brand-secondary-active);
	color: var(--cv-on-dark);
}

.cv-button[disabled],
.cv-button--disabled {
	background: var(--cv-disabled-background);
	color: var(--cv-disabled-text);
	cursor: not-allowed;
}

@media (max-width: 767px) {
	.cv-offer-card__action .cv-button,
	.cv-empty-state__actions .cv-button {
		width: 100%;
	}
}

.cv-show-code {
	width: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--cv-space-2);
}

.cv-show-code summary {
	list-style: none;
}

.cv-show-code summary::-webkit-details-marker {
	display: none;
}

.cv-code {
	font-family: var(--cv-font-mono);
	letter-spacing: 0.06em;
	font-size: 17px;
	font-weight: 700;
	background: var(--cv-surface-secondary);
	border: 1px dashed var(--cv-border-strong);
	border-radius: var(--cv-radius-control);
	padding: var(--cv-space-2) var(--cv-space-4);
	user-select: all;
	display: inline-block;
	margin: var(--cv-space-2) 0;
	color: var(--cv-brand-primary);
}

.cv-copy-code {
	margin-top: var(--cv-space-1);
}

/* Empty / gone / not-found states */

.cv-empty-state {
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: var(--cv-radius-card);
	padding: var(--cv-space-8) var(--cv-space-6);
	margin-bottom: var(--cv-space-8);
	text-align: center;
}

.cv-empty-state__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--cv-space-3);
	margin-top: var(--cv-space-4);
}

.cv-status-icon {
	display: block;
	margin: 0 auto var(--cv-space-4);
	color: var(--cv-brand-primary);
}

.cv-store-index__search-message {
	margin: 0 0 var(--cv-space-4);
	padding: var(--cv-space-3) var(--cv-space-4);
	background: var(--cv-surface-secondary);
	border-radius: var(--cv-radius-control);
	color: var(--cv-text-secondary);
	font-size: 14px;
}

/* Store description */

.cv-store-description {
	max-width: var(--cv-reading-max);
	color: var(--cv-text-secondary);
	margin-top: var(--cv-space-12);
	padding-top: var(--cv-space-6);
	border-top: 1px solid var(--cv-divider);
	margin-bottom: var(--cv-space-6);
}

/* Disclosure */

.cv-disclosure {
	font-size: 14px;
	color: var(--cv-text-secondary);
	margin-bottom: var(--cv-space-6);
}

/* Expired section */

.cv-expired-section {
	margin-top: var(--cv-space-6);
}

.cv-expired-section summary {
	cursor: pointer;
	font-weight: 600;
	padding: var(--cv-space-2) 0;
	color: var(--cv-text-secondary);
}

/* Category / store grid */

.cv-chips {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cv-space-2);
	margin: var(--cv-space-4) 0 var(--cv-space-6);
}

.cv-chips a {
	display: inline-block;
	border: 1px solid var(--cv-border-default);
	border-radius: 9999px;
	padding: var(--cv-space-1) var(--cv-space-4);
	text-decoration: none;
	color: var(--cv-text-secondary);
	font-size: 14px;
	font-weight: 500;
	background: var(--cv-surface-primary);
	transition: all 120ms ease;
}

.cv-chips a:hover {
	border-color: var(--cv-brand-primary);
	background: var(--cv-brand-primary-soft);
	color: var(--cv-brand-primary);
	text-decoration: none;
}

/* Grids & Cards */

.cv-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--cv-space-4);
	margin: 0 0 var(--cv-space-8);
	padding: 0;
	list-style: none;
}

@media (min-width: 640px) {
	.cv-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (min-width: 1024px) {
	.cv-grid {
		grid-template-columns: repeat(3, 1fr);
		gap: var(--cv-space-5);
	}
}

/* Store Cards */

.cv-store-card {
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: var(--cv-radius-card);
	box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
	transition: box-shadow 160ms ease, border-color 160ms ease, transform 160ms ease;
	overflow: hidden;
}

.cv-store-card:hover {
	transform: translateY(-2px);
	box-shadow: 0 6px 16px rgba(15, 23, 42, 0.08);
	border-color: var(--cv-border-strong);
}

.cv-store-card__link {
	display: block;
	padding: var(--cv-space-4);
	text-decoration: none;
	color: inherit;
}

.cv-store-card__body {
	display: flex;
	align-items: center;
	gap: var(--cv-space-3);
}

.cv-store-card__details {
	flex: 1 1 auto;
	min-width: 0;
}

.cv-store-card__name {
	font-size: 16px;
	font-weight: 700;
	margin: 0 0 var(--cv-space-1);
	line-height: 22px;
	color: var(--cv-text-primary);
}

.cv-store-card__summary {
	margin: 0;
}

/* Category Cards */

.cv-category-card {
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: var(--cv-radius-card);
	box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
	transition: box-shadow 160ms ease, border-color 160ms ease, transform 160ms ease;
	overflow: hidden;
}

.cv-category-card:hover,
.cv-category-card:focus-within {
	transform: translateY(-2px);
	box-shadow: 0 6px 16px rgba(15, 23, 42, 0.08);
	border-color: var(--cv-border-strong);
}

.cv-category-card__link {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding: var(--cv-space-5);
	height: 100%;
	text-decoration: none;
	color: inherit;
}

.cv-category-card__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: var(--cv-space-3);
}

.cv-category-card__icon {
	width: 40px;
	height: 40px;
	border-radius: 10px;
	background: var(--cv-brand-primary-soft);
	color: var(--cv-brand-primary);
	display: flex;
	align-items: center;
	justify-content: center;
}

.cv-category-card__name {
	font-size: 18px;
	font-weight: 700;
	margin: 0 0 var(--cv-space-2);
	color: var(--cv-text-primary);
}

.cv-category-card__footer {
	font-size: 14px;
	font-weight: 600;
	color: var(--cv-brand-primary);
}

/* The whole card is one link; the name and the "Explore deals" footer are
   what a visitor reads as clickable, so both answer to hover and to keyboard
   focus on that single link — no second, nested link is introduced. */
.cv-category-card__link:hover .cv-category-card__name,
.cv-category-card__link:focus-visible .cv-category-card__name {
	color: var(--cv-brand-primary);
}

.cv-category-card__link:hover .cv-category-card__footer,
.cv-category-card__link:focus-visible .cv-category-card__footer {
	text-decoration: underline;
}

/* Badges & Chips */

.cv-badge {
	display: inline-block;
	font-size: 12px;
	font-weight: 600;
	padding: 3px 10px;
	border-radius: 9999px;
	line-height: 1.2;
}

.cv-badge--primary {
	background: var(--cv-brand-primary-soft);
	color: var(--cv-brand-primary);
}

.cv-badge--success {
	background: var(--cv-brand-secondary-soft);
	color: var(--cv-brand-secondary-strong);
}

.cv-chip--category {
	background: var(--cv-brand-primary-soft);
	color: var(--cv-brand-primary);
	text-decoration: none;
	font-weight: 600;
	padding: 6px 14px;
	border-radius: 9999px;
	display: inline-block;
	transition: background 120ms ease;
}

.cv-chip--category:hover {
	background: #dbe4f0;
	text-decoration: none;
}

.cv-subcategories {
	margin-bottom: var(--cv-space-6);
	background: var(--cv-surface-primary);
	padding: var(--cv-space-4) var(--cv-space-5);
	border: 1px solid var(--cv-border-default);
	border-radius: var(--cv-radius-card);
}

.cv-subcategories__title {
	font-size: 14px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: var(--cv-text-muted);
	margin: 0 0 var(--cv-space-3);
}

.cv-chips {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cv-space-2);
}

/* Store Facts panel — the hero's compact right-hand column. */

.cv-store-facts {
	background: var(--cv-surface-secondary);
	border-radius: var(--cv-radius-card);
	padding: var(--cv-space-4) var(--cv-space-5);
}

@media (min-width: 1024px) {
	.cv-store-facts {
		width: 260px;
		flex: 0 0 260px;
	}
}

.cv-store-facts__title {
	font-size: 13px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: var(--cv-text-muted);
	margin: 0 0 var(--cv-space-3);
}

.cv-store-facts__list {
	margin: 0;
	padding: 0;
}

.cv-store-facts__item {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--cv-space-3);
	padding: var(--cv-space-2) 0;
}

.cv-store-facts__item:not(:last-child) {
	border-bottom: 1px solid var(--cv-divider);
}

.cv-store-facts__item dt {
	color: var(--cv-text-muted);
	font-size: 13px;
}

.cv-store-facts__item dd {
	margin: 0;
	font-weight: 600;
	color: var(--cv-text-primary);
	font-size: 14px;
	text-align: right;
}

/* Store page content — full width below the hero, no sidebar column. */

.cv-store-content {
	max-width: 100%;
}

.cv-section-title {
	font-size: 20px;
	font-weight: 700;
	color: var(--cv-text-primary);
	margin: 0 0 var(--cv-space-4);
}

/* Offer card layout */

.cv-offer-card {
	display: flex;
	flex-direction: column;
	gap: var(--cv-space-4);
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: 14px;
	padding: var(--cv-space-5);
	margin-bottom: var(--cv-space-4);
	box-shadow: 0 1px 3px rgba(15, 23, 42, 0.03);
	transition: box-shadow 160ms ease, border-color 160ms ease;
}

.cv-offer-card:hover {
	box-shadow: 0 6px 16px rgba(15, 23, 42, 0.08);
	border-color: var(--cv-border-strong);
}

@media (min-width: 640px) {
	.cv-offer-card {
		flex-direction: row;
		align-items: center;
		padding: var(--cv-space-6);
	}

	.cv-offer-card__savings-col {
		width: 160px;
		flex: 0 0 160px;
	}

	.cv-offer-card__info {
		flex: 1 1 auto;
		min-width: 0;
	}

	.cv-offer-card__action {
		width: 170px;
		flex: 0 0 170px;
		display: flex;
		align-items: center;
		justify-content: flex-end;
	}

	/* The action column's primary control — a plain .cv-button (Get Deal,
	 * Expired, unavailable) or the Show Code <summary> — always fills the
	 * column, so every card's CTA shares one width and one right edge
	 * regardless of label length. Structural (direct-child) selectors only,
	 * so this never depends on CODE vs DEAL and never touches the smaller
	 * Copy Code button nested inside the revealed code box.
	 */
	.cv-offer-card__action > .cv-button,
	.cv-offer-card__action > .cv-show-code > summary.cv-button {
		width: 100%;
		white-space: normal;
	}
}

.cv-offer-card__savings-box {
	background: var(--cv-brand-primary-soft);
	color: var(--cv-brand-primary);
	border-radius: 10px;
	padding: var(--cv-space-3) var(--cv-space-2);
	text-align: center;
	font-weight: 800;
	font-size: 16px;
	line-height: 1.25;
}

.cv-offer-card__title {
	font-size: 17px;
	font-weight: 700;
	color: var(--cv-text-primary);
	margin: 0 0 var(--cv-space-2);
}

.cv-code-box {
	margin-top: var(--cv-space-2);
	background: var(--cv-surface-secondary);
	padding: var(--cv-space-2);
	border-radius: var(--cv-radius-control);
	border: 1px dashed var(--cv-brand-primary);
	text-align: center;
}

.cv-code {
	font-family: var(--cv-font-mono);
	font-weight: 700;
	font-size: 16px;
	color: var(--cv-brand-primary);
	margin: 0 0 var(--cv-space-2);
}

/* Footer */

.cv-footer {
	background: var(--cv-brand-primary);
	border-top: 3px solid var(--cv-brand-secondary-strong);
	color: var(--cv-on-dark);
	margin-top: var(--cv-space-12);
	padding: var(--cv-space-8) 0 var(--cv-space-6);
}

.cv-footer a {
	color: var(--cv-on-dark);
}

.cv-footer__groups {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cv-space-8);
	margin-bottom: var(--cv-space-6);
}

.cv-footer__group h2 {
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	margin: 0 0 var(--cv-space-2);
	color: var(--cv-on-dark-muted);
}

.cv-footer__group ul {
	list-style: none;
	padding: 0;
	margin: 0;
}

.cv-footer__group li {
	margin-bottom: var(--cv-space-1);
}

.cv-footer__disclosure {
	font-size: 14px;
	color: var(--cv-on-dark-muted);
	max-width: var(--cv-reading-max);
}

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

/* ========================================================================
 * CouponVerity public experience rebuild — shared shell + Store page.
 * Presentation-only overrides layered on the established token system.
 * ===================================================================== */

:root {
	--cv-store-canvas-max: 1240px;
	--cv-store-sidebar: 310px;
	--cv-store-grid-gap: 28px;
	--cv-shadow-soft: 0 10px 28px rgba(15, 23, 42, 0.07);
	--cv-shadow-card: 0 5px 18px rgba(15, 23, 42, 0.06);
}

/* Shared shell */

.cv-header {
	position: sticky;
	top: 0;
	z-index: 50;
	border-bottom-width: 2px;
	box-shadow: 0 6px 22px rgba(8, 46, 106, 0.16);
}

.cv-header__bar {
	display: grid;
	grid-template-columns: auto minmax(320px, 1fr) auto;
	align-items: center;
	gap: 30px;
	min-height: 74px;
	padding-top: 10px;
	padding-bottom: 10px;
}

.cv-header .cv-header__logo {
	gap: 10px;
	font-size: 25px;
	font-weight: 800;
	letter-spacing: -0.025em;
}

.cv-header__brand-mark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 58px;
	height: 38px;
	flex: 0 0 58px;
}

.cv-header__logo-mark {
	width: 58px;
	height: auto;
	max-height: 38px;
	object-fit: contain;
}

.cv-header__logo-text {
	line-height: 1;
}

.cv-header__search {
	max-width: 590px;
	justify-self: center;
}

.cv-header__search-form {
	min-height: 46px;
	background: var(--cv-surface-primary);
	border-radius: 10px;
	box-shadow: 0 2px 10px rgba(4, 27, 59, 0.12);
}

.cv-header__search-input {
	min-height: 46px;
	border: 0;
	padding-left: 42px;
	font-size: 15px;
	border-radius: 10px 0 0 10px;
}

.cv-header__search-button {
	min-height: 46px;
	padding: 0 22px;
	font-size: 15px;
	font-weight: 750;
	border-radius: 0 10px 10px 0;
}

.cv-nav {
	gap: 8px;
}

.cv-nav a {
	padding: 10px 12px;
	font-size: 15px;
	font-weight: 700;
}

.cv-footer {
	margin-top: 72px;
	padding: 38px 0 34px;
}

.cv-footer__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 56px;
	align-items: start;
}

.cv-footer__brand {
	max-width: 720px;
}

.cv-footer__logo {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-size: 21px;
	font-weight: 800;
	text-decoration: none;
	margin-bottom: 14px;
}

.cv-footer__logo img {
	width: 52px;
	height: auto;
}

.cv-footer__logo:hover {
	text-decoration: none;
}

.cv-footer__nav {
	display: grid;
	gap: 8px;
	min-width: 150px;
}

.cv-footer__nav h2 {
	margin: 0 0 4px;
	font-size: 12px;
	line-height: 1.4;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--cv-on-dark-muted);
}

.cv-footer__nav a {
	font-size: 15px;
	font-weight: 650;
	text-decoration: none;
}

.cv-footer__nav a:hover {
	text-decoration: underline;
}

.cv-footer__disclosure {
	margin: 0;
	font-size: 14px;
	line-height: 1.65;
}

/* Store page canvas and layout */

.cv-container--store {
	max-width: var(--cv-store-canvas-max);
}

.cv-container--store .cv-breadcrumb {
	padding-top: 22px;
	font-size: 13px;
}

.cv-store-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	grid-template-areas:
		"intro"
		"sidebar"
		"content";
	gap: 22px;
	padding: 18px 0 10px;
}

.cv-store-intro {
	grid-area: intro;
	display: flex;
	align-items: center;
	gap: 26px;
	min-width: 0;
	padding: 28px 30px;
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: 16px;
	box-shadow: var(--cv-shadow-soft);
	position: relative;
	overflow: hidden;
}

.cv-store-intro::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 5px;
	background: var(--cv-brand-secondary);
}

.cv-store-intro__logo {
	width: 104px;
	height: 104px;
	flex: 0 0 104px;
	padding: 14px;
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	box-shadow: 0 4px 16px rgba(15, 23, 42, 0.08);
}

.cv-store-intro__logo .cv-logo__monogram {
	font-size: 44px;
}

.cv-store-intro__body {
	min-width: 0;
	flex: 1 1 auto;
}

.cv-store-intro__eyebrow,
.cv-store-description__eyebrow,
.cv-offer-section__eyebrow,
.cv-store-info-card__eyebrow {
	margin: 0 0 6px;
	font-size: 12px;
	line-height: 1.3;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--cv-brand-secondary-strong);
}

.cv-store-intro h1 {
	margin: 0;
	max-width: 760px;
	font-size: 36px;
	line-height: 1.12;
	letter-spacing: -0.035em;
	font-weight: 820;
	color: var(--cv-text-primary);
}

.cv-store-intro__summary {
	max-width: 700px;
	margin: 12px 0 0;
	font-size: 15px;
	line-height: 1.65;
	color: var(--cv-text-secondary);
}

.cv-store-intro__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 7px 14px;
	margin-top: 14px;
	font-size: 14px;
}

.cv-topic-link {
	color: var(--cv-brand-primary);
	font-weight: 700;
	text-decoration: none;
	border-bottom: 1px solid var(--cv-border-default);
}

.cv-topic-link:hover {
	border-color: var(--cv-brand-primary);
	text-decoration: none;
}

.cv-topic-link--static {
	border-bottom: 0;
}

.cv-store-intro__offer-summary {
	color: var(--cv-text-muted);
	font-weight: 650;
}

.cv-store-intro__offer-summary::before {
	content: "•";
	margin-right: 12px;
	color: var(--cv-border-strong);
}

.cv-store-intro__actions {
	margin-top: 18px;
}

.cv-button--outline {
	min-height: 46px;
	padding: 0 18px;
	gap: 8px;
	background: var(--cv-surface-primary);
	color: var(--cv-brand-primary);
	border: 1px solid var(--cv-brand-primary);
	font-weight: 750;
}

.cv-button--outline:hover {
	background: var(--cv-brand-primary-soft);
	color: var(--cv-brand-primary);
}

/* Store sidebar */

.cv-store-sidebar {
	grid-area: sidebar;
	min-width: 0;
}

.cv-store-info-card {
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: 16px;
	box-shadow: var(--cv-shadow-card);
	overflow: hidden;
}

.cv-store-info-card__head {
	padding: 22px 22px 16px;
	border-bottom: 1px solid var(--cv-divider);
}

.cv-store-info-card__head h2 {
	margin: 0;
	font-size: 20px;
	line-height: 1.25;
	letter-spacing: -0.02em;
}

.cv-store-info-card__list {
	margin: 0;
}

.cv-store-info-card__row {
	display: grid;
	grid-template-columns: 38px minmax(0, 1fr);
	gap: 12px;
	align-items: center;
	padding: 15px 22px;
	border-bottom: 1px solid var(--cv-divider);
}

.cv-store-info-card__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 10px;
	background: var(--cv-brand-primary-soft);
	color: var(--cv-brand-primary);
	font-size: 14px;
	font-weight: 850;
}

.cv-store-info-card__row dt {
	margin: 0 0 2px;
	font-size: 11px;
	line-height: 1.3;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--cv-text-muted);
}

.cv-store-info-card__row dd {
	margin: 0;
	font-size: 16px;
	line-height: 1.35;
	font-weight: 760;
	color: var(--cv-text-primary);
	overflow-wrap: anywhere;
}

.cv-store-info-card__row dd a {
	text-decoration: none;
}

.cv-store-info-card__row dd a:hover {
	text-decoration: underline;
}

.cv-store-info-card__category {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 17px 22px;
	font-size: 13px;
	font-weight: 750;
	text-decoration: none;
	background: var(--cv-surface-secondary);
}

.cv-store-info-card__category:hover {
	text-decoration: none;
	background: var(--cv-brand-primary-soft);
}

/* Offer groups */

.cv-store-content {
	grid-area: content;
	min-width: 0;
}

.cv-offer-section {
	margin: 8px 0 40px;
}

.cv-offer-section + .cv-offer-section {
	margin-top: 46px;
}

.cv-offer-section__heading {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 18px;
	margin-bottom: 16px;
	padding-bottom: 12px;
	border-bottom: 1px solid var(--cv-divider);
}

.cv-offer-section__heading h2 {
	margin: 0;
	font-size: 27px;
	line-height: 1.15;
	letter-spacing: -0.025em;
	font-weight: 820;
}

.cv-offer-section--deal .cv-offer-section__heading h2 {
	font-size: 24px;
}

.cv-offer-section--deal .cv-offer-section__eyebrow {
	color: var(--cv-text-muted);
}

.cv-offer-section__count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 30px;
	height: 30px;
	padding: 0 9px;
	border-radius: 999px;
	background: var(--cv-brand-secondary-soft);
	color: var(--cv-brand-secondary-strong);
	font-size: 13px;
	font-weight: 800;
}

.cv-offer-section--deal .cv-offer-section__count {
	background: var(--cv-surface-secondary);
	color: var(--cv-text-secondary);
}

.cv-offer-list {
	gap: 14px;
	margin-bottom: 0;
}

.cv-offer-card {
	display: grid;
	grid-template-columns: 176px minmax(0, 1fr) 190px;
	gap: 0;
	align-items: stretch;
	min-height: 142px;
	padding: 0;
	margin: 0;
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: 14px;
	box-shadow: var(--cv-shadow-card);
	overflow: visible;
	transition: box-shadow 150ms ease, transform 150ms ease, border-color 150ms ease;
}

.cv-offer-card:hover {
	transform: translateY(-1px);
	border-color: var(--cv-border-strong);
	box-shadow: 0 12px 28px rgba(15, 23, 42, 0.09);
}

.cv-offer-card--first {
	border-left: 4px solid var(--cv-brand-primary);
	box-shadow: 0 10px 26px rgba(8, 46, 106, 0.1);
}

.cv-offer-card--deal {
	grid-template-columns: 132px minmax(0, 1fr) 180px;
	min-height: 108px;
	box-shadow: 0 3px 12px rgba(15, 23, 42, 0.045);
}

.cv-offer-card--expired {
	opacity: 0.68;
	background: var(--cv-surface-secondary);
}

.cv-offer-card__value {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-width: 0;
	padding: 20px 16px;
	text-align: center;
	background: var(--cv-brand-primary-soft);
	border-right: 1px dashed var(--cv-border-strong);
	position: relative;
}

.cv-offer-card--code .cv-offer-card__value::before,
.cv-offer-card--code .cv-offer-card__value::after {
	content: "";
	position: absolute;
	right: -9px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--cv-page-background);
	border: 1px solid var(--cv-border-default);
}

.cv-offer-card--code .cv-offer-card__value::before {
	top: -9px;
}

.cv-offer-card--code .cv-offer-card__value::after {
	bottom: -9px;
}

.cv-offer-card__value-kicker {
	font-size: 10px;
	line-height: 1.3;
	font-weight: 850;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--cv-text-muted);
}

.cv-offer-card__value-figure {
	display: block;
	margin-top: 4px;
	font-size: 31px;
	line-height: 1.05;
	letter-spacing: -0.04em;
	font-weight: 850;
	color: var(--cv-brand-primary);
}

.cv-offer-card__value-type {
	margin-top: 7px;
	font-size: 10px;
	line-height: 1;
	font-weight: 850;
	letter-spacing: 0.1em;
	color: var(--cv-brand-primary);
}

.cv-offer-card--deal .cv-offer-card__value {
	background: var(--cv-brand-secondary-soft);
	border-right: 1px solid var(--cv-divider);
	padding: 16px 12px;
}

.cv-offer-card__deal-mark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: var(--cv-surface-primary);
	color: var(--cv-brand-secondary-strong);
	font-weight: 800;
}

.cv-offer-card__deal-label {
	margin-top: 5px;
	font-size: 14px;
	font-weight: 820;
	color: var(--cv-brand-secondary-strong);
}

.cv-offer-card__deal-saving {
	margin-top: 2px;
	font-size: 12px;
	color: var(--cv-text-secondary);
}

.cv-offer-card__info {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-width: 0;
	padding: 22px 26px;
}

.cv-offer-card--deal .cv-offer-card__info {
	padding-top: 18px;
	padding-bottom: 18px;
}

.cv-offer-card__title {
	margin: 0 0 9px;
	font-size: 18px;
	line-height: 1.35;
	font-weight: 780;
	letter-spacing: -0.012em;
}

.cv-offer-card--deal .cv-offer-card__title {
	font-size: 17px;
	margin-bottom: 7px;
}

.cv-offer-card__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 12px;
	margin: 0;
}

.cv-offer-meta {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 12px;
	line-height: 1.45;
	font-weight: 600;
	color: var(--cv-text-muted);
}

.cv-offer-meta + .cv-offer-meta::before {
	content: "•";
	margin-right: 5px;
	color: var(--cv-border-strong);
}

.cv-offer-meta--condition,
.cv-offer-meta--warning {
	color: var(--cv-warning);
}

.cv-offer-meta--expired {
	color: var(--cv-expired);
}

.cv-conditions {
	margin-top: 10px;
	margin-bottom: 0;
	padding-left: 18px;
	font-size: 13px;
	line-height: 1.55;
}

.cv-offer-card__action {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: 0;
	padding: 20px 20px;
	border-left: 1px dashed var(--cv-border-default);
}

.cv-offer-card__action > .cv-button,
.cv-offer-card__action > .cv-show-code,
.cv-offer-card__action > .cv-show-code > summary.cv-button {
	width: 100%;
}

.cv-offer-card__action .cv-button,
.cv-show-code summary.cv-button {
	min-height: 50px;
	font-size: 15px;
	font-weight: 780;
}

.cv-button--deal {
	background: var(--cv-brand-secondary-strong);
	color: var(--cv-on-dark);
}

.cv-button--deal:hover {
	background: var(--cv-brand-secondary-hover);
	color: var(--cv-on-dark);
}

.cv-button--small {
	min-height: 38px;
	padding: 0 12px;
	font-size: 12px;
	background: var(--cv-surface-primary);
	color: var(--cv-brand-primary);
	border: 1px solid var(--cv-border-default);
}

.cv-show-code {
	gap: 8px;
}

.cv-code-box {
	width: 100%;
	margin-top: 10px;
	padding: 10px;
	background: var(--cv-surface-secondary);
}

.cv-code {
	font-size: 15px;
}

/* Expired + About */

.cv-expired-section {
	margin: 6px 0 44px;
	border-top: 1px solid var(--cv-divider);
	border-bottom: 1px solid var(--cv-divider);
}

.cv-expired-section > summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 15px 2px;
	font-size: 14px;
	font-weight: 750;
	color: var(--cv-text-secondary);
}

.cv-expired-section > summary span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 26px;
	height: 26px;
	padding: 0 8px;
	border-radius: 999px;
	background: var(--cv-surface-secondary);
	font-size: 12px;
}

.cv-expired-section[open] {
	padding-bottom: 18px;
}

.cv-store-description {
	max-width: none;
	margin: 0;
	padding: 30px 32px;
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: 16px;
	box-shadow: var(--cv-shadow-card);
}

.cv-store-description h2 {
	margin: 0;
	font-size: 25px;
	line-height: 1.2;
	letter-spacing: -0.02em;
	color: var(--cv-text-primary);
}

.cv-store-description__body {
	max-width: 760px;
	margin-top: 13px;
	font-size: 15px;
	line-height: 1.75;
	color: var(--cv-text-secondary);
}

.cv-store-description__body > :first-child {
	margin-top: 0;
}

.cv-store-description__body > :last-child {
	margin-bottom: 0;
}

/* Desktop Store composition */

@media (min-width: 1024px) {
	.cv-store-layout {
		grid-template-columns: minmax(0, 1fr) var(--cv-store-sidebar);
		grid-template-areas:
			"intro sidebar"
			"content sidebar";
		column-gap: var(--cv-store-grid-gap);
		row-gap: 28px;
		align-items: start;
	}

	.cv-store-sidebar {
		position: sticky;
		top: 96px;
	}
}

/* Tablet and mobile */

@media (max-width: 1023px) {
	.cv-header__bar {
		grid-template-columns: auto 1fr;
		gap: 12px 20px;
	}

	.cv-header__search {
		grid-column: 1 / -1;
		grid-row: 2;
		max-width: none;
	}

	.cv-nav {
		justify-self: end;
	}

	.cv-store-info-card__list {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cv-store-info-card__row {
		border-bottom: 1px solid var(--cv-divider);
	}
}

@media (max-width: 767px) {
	.cv-header {
		position: relative;
	}

	.cv-header__bar {
		min-height: 0;
		padding-top: 10px;
		padding-bottom: 12px;
	}

	.cv-header .cv-header__logo {
		font-size: 20px;
	}

	.cv-header__brand-mark {
		width: 44px;
		height: 30px;
		flex-basis: 44px;
	}

	.cv-header__logo-mark {
		width: 44px;
		max-height: 30px;
	}

	.cv-nav a {
		font-size: 13px;
		padding: 8px 7px;
	}

	.cv-container--store .cv-breadcrumb {
		padding-top: 14px;
	}

	.cv-store-layout {
		padding-top: 12px;
		gap: 16px;
	}

	.cv-store-intro {
		align-items: flex-start;
		padding: 22px 18px 22px 20px;
		gap: 16px;
		border-radius: 14px;
	}

	.cv-store-intro__logo {
		width: 74px;
		height: 74px;
		flex-basis: 74px;
		padding: 10px;
	}

	.cv-store-intro__logo .cv-logo__monogram {
		font-size: 32px;
	}

	.cv-store-intro h1 {
		font-size: 27px;
		line-height: 1.13;
	}

	.cv-store-intro__summary {
		font-size: 14px;
	}

	.cv-store-intro__meta {
		gap: 6px 10px;
		font-size: 13px;
	}

	.cv-store-intro__offer-summary::before {
		margin-right: 8px;
	}

	.cv-store-info-card__head {
		padding: 18px 18px 14px;
	}

	.cv-store-info-card__list {
		grid-template-columns: 1fr;
	}

	.cv-store-info-card__row {
		padding: 13px 18px;
	}

	.cv-offer-section {
		margin-bottom: 34px;
	}

	.cv-offer-section + .cv-offer-section {
		margin-top: 36px;
	}

	.cv-offer-section__heading h2 {
		font-size: 24px;
	}

	.cv-offer-section--deal .cv-offer-section__heading h2 {
		font-size: 22px;
	}

	.cv-offer-card,
	.cv-offer-card--deal {
		grid-template-columns: 1fr;
		min-height: 0;
		border-radius: 13px;
	}

	.cv-offer-card__value,
	.cv-offer-card--deal .cv-offer-card__value {
		align-items: flex-start;
		padding: 14px 18px;
		text-align: left;
		border-right: 0;
		border-bottom: 1px solid var(--cv-divider);
	}

	.cv-offer-card--code .cv-offer-card__value {
		display: grid;
		grid-template-columns: auto auto 1fr;
		gap: 8px;
		align-items: baseline;
	}

	.cv-offer-card--code .cv-offer-card__value::before,
	.cv-offer-card--code .cv-offer-card__value::after {
		display: none;
	}

	.cv-offer-card__value-figure {
		font-size: 24px;
		margin: 0;
	}

	.cv-offer-card__value-type {
		margin: 0;
	}

	.cv-offer-card--deal .cv-offer-card__value {
		flex-direction: row;
		align-items: center;
		gap: 8px;
	}

	.cv-offer-card__deal-mark {
		width: 30px;
		height: 30px;
	}

	.cv-offer-card__deal-label {
		margin: 0;
	}

	.cv-offer-card__info {
		padding: 18px;
	}

	.cv-offer-card__title {
		font-size: 17px;
	}

	.cv-offer-card__action {
		padding: 0 18px 18px;
		border-left: 0;
	}

	.cv-offer-card__action .cv-button,
	.cv-show-code summary.cv-button {
		min-height: 48px;
	}

	.cv-store-description {
		padding: 24px 20px;
	}

	.cv-store-description h2 {
		font-size: 22px;
	}

	.cv-footer__inner {
		grid-template-columns: 1fr;
		gap: 26px;
	}

	.cv-footer__nav {
		grid-template-columns: repeat(2, max-content);
		align-items: end;
		gap: 8px 20px;
	}

	.cv-footer__nav h2 {
		grid-column: 1 / -1;
	}
}

@media (max-width: 479px) {
	.cv-header__logo-text {
		font-size: 18px;
	}

	.cv-header__search-input {
		font-size: 14px;
	}

	.cv-header__search-button {
		padding: 0 15px;
		font-size: 14px;
	}

	.cv-store-intro {
		flex-direction: column;
	}

	.cv-store-intro__logo {
		width: 68px;
		height: 68px;
		flex-basis: 68px;
	}

	.cv-store-intro h1 {
		font-size: 25px;
	}
}

/* Store-page SEO/discovery continuation: About -> Related Stores. */
.cv-related-stores {
	margin-top: 30px;
	padding-top: 30px;
	border-top: 1px solid var(--cv-divider);
}

.cv-related-stores__heading {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 20px;
	margin-bottom: 18px;
}

.cv-related-stores__eyebrow {
	margin: 0 0 5px;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--cv-brand-secondary);
}

.cv-related-stores__heading h2 {
	margin: 0;
	font-size: 25px;
	line-height: 1.2;
	letter-spacing: -0.02em;
	color: var(--cv-text-primary);
}

.cv-related-stores__heading p:not(.cv-related-stores__eyebrow) {
	max-width: 620px;
	margin: 7px 0 0;
	font-size: 14px;
	line-height: 1.55;
	color: var(--cv-text-secondary);
}

.cv-related-stores__more {
	flex: 0 0 auto;
	padding-bottom: 2px;
	font-size: 14px;
	font-weight: 750;
	white-space: nowrap;
}

.cv-related-stores__grid {
	margin-bottom: 0;
	gap: 14px;
}

.cv-related-stores .cv-store-card {
	box-shadow: none;
}

.cv-related-stores .cv-store-card__link {
	padding: 15px;
}

.cv-related-stores .cv-store-card__name {
	font-size: 15px;
}

.cv-related-stores .cv-store-card__summary .cv-badge {
	font-size: 11px;
}

@media (max-width: 767px) {
	.cv-related-stores {
		margin-top: 24px;
		padding-top: 24px;
	}

	.cv-related-stores__heading {
		align-items: flex-start;
		flex-direction: column;
		gap: 10px;
	}

	.cv-related-stores__heading h2 {
		font-size: 22px;
	}

	.cv-related-stores__more {
		white-space: normal;
	}
}

/* ========================================================================
 * M1.2 Visual Depth pass — Store page only.
 * Keeps the approved data/interaction model while adding stronger commerce
 * hierarchy, richer surfaces, and more intentional discovery depth.
 * ===================================================================== */

:root {
	--cv-store-canvas-max: 1280px;
	--cv-store-sidebar: 320px;
	--cv-store-grid-gap: 30px;
	--cv-shadow-hero: 0 18px 46px rgba(8, 46, 106, 0.11);
	--cv-shadow-panel: 0 12px 32px rgba(15, 23, 42, 0.075);
	--cv-shadow-offer: 0 8px 22px rgba(15, 23, 42, 0.065);
}

body.cv-public {
	background: var(--cv-page-background);
}

/* Stronger top shell without adding new product claims. */
.cv-header__bar {
	min-height: 78px;
}

.cv-header .cv-header__logo {
	font-size: 27px;
}

.cv-header__brand-mark {
	width: 64px;
	height: 42px;
	flex-basis: 64px;
}

.cv-header__logo-mark {
	width: 64px;
	max-height: 42px;
}

.cv-header__search {
	max-width: 640px;
}

.cv-header__search-form {
	min-height: 48px;
	box-shadow: 0 6px 20px rgba(4, 27, 59, 0.14);
}

.cv-header__search-input,
.cv-header__search-button {
	min-height: 48px;
}

.cv-container--store .cv-breadcrumb {
	padding-top: 24px;
	font-size: 13px;
}

/* Merchant hero: bigger brand anchor, still truthful and data-driven. */
.cv-store-intro {
	min-height: 218px;
	gap: 30px;
	padding: 34px 36px;
	border-color: var(--cv-border-default);
	border-radius: 18px;
	box-shadow: var(--cv-shadow-hero);
	background: var(--cv-surface-primary);
}

.cv-store-intro::before {
	width: 6px;
}

.cv-store-intro::after {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	width: 124px;
	height: 7px;
	background: var(--cv-brand-primary);
	border-radius: 0 18px 0 10px;
}

.cv-store-intro__logo {
	width: 122px;
	height: 122px;
	flex-basis: 122px;
	padding: 16px;
	border-radius: 18px;
	box-shadow: 0 10px 24px rgba(8, 46, 106, 0.1);
}

.cv-store-intro__logo .cv-logo__monogram {
	font-size: 52px;
}

.cv-store-intro__eyebrow {
	margin-bottom: 8px;
	font-size: 12px;
}

.cv-store-intro h1 {
	max-width: 780px;
	font-size: 40px;
	line-height: 1.08;
	letter-spacing: -0.04em;
}

.cv-store-intro__summary {
	max-width: 760px;
	margin-top: 14px;
	font-size: 16px;
	line-height: 1.7;
}

.cv-store-intro__meta {
	gap: 8px 10px;
	margin-top: 17px;
}

.cv-topic-link,
.cv-topic-link--static {
	display: inline-flex;
	align-items: center;
	min-height: 30px;
	padding: 4px 10px;
	border: 1px solid var(--cv-border-default);
	border-radius: 999px;
	background: var(--cv-surface-secondary);
	font-size: 13px;
	font-weight: 750;
	text-decoration: none;
}

.cv-topic-link:hover {
	background: var(--cv-brand-primary-soft);
	border-color: var(--cv-border-strong);
	text-decoration: none;
}

.cv-store-intro__offer-summary {
	display: inline-flex;
	align-items: center;
	min-height: 30px;
	padding: 4px 10px;
	border-radius: 999px;
	background: var(--cv-brand-secondary-soft);
	color: var(--cv-brand-secondary-strong);
	font-size: 13px;
	font-weight: 800;
}

.cv-store-intro__offer-summary::before {
	display: none;
}

.cv-store-intro__actions {
	margin-top: 20px;
}

.cv-button--outline {
	min-height: 50px;
	padding: 0 22px;
	background: var(--cv-brand-primary);
	color: var(--cv-on-dark);
	border-color: var(--cv-brand-primary);
	box-shadow: 0 7px 18px rgba(8, 46, 106, 0.16);
}

.cv-button--outline:hover {
	background: var(--cv-brand-primary-hover);
	color: var(--cv-on-dark);
}

/* Sidebar: intentional merchant context, not an admin table. */
.cv-store-info-card {
	border-radius: 18px;
	border-color: var(--cv-border-default);
	box-shadow: var(--cv-shadow-panel);
}

.cv-store-info-card__head {
	padding: 25px 24px 18px;
	background: var(--cv-surface-primary);
}

.cv-store-info-card__head h2 {
	font-size: 22px;
}

.cv-store-info-card__row {
	grid-template-columns: 44px minmax(0, 1fr);
	gap: 14px;
	padding: 18px 24px;
}

.cv-store-info-card__icon {
	width: 42px;
	height: 42px;
	border-radius: 12px;
	font-size: 15px;
}

.cv-store-info-card__row dt {
	font-size: 10px;
	letter-spacing: 0.085em;
}

.cv-store-info-card__row dd {
	font-size: 17px;
	font-weight: 800;
}

.cv-store-info-card__category {
	padding: 18px 24px;
	font-size: 14px;
}

.cv-store-explore-card {
	margin-top: 18px;
	padding: 24px;
	background: var(--cv-brand-primary);
	color: var(--cv-on-dark);
	border-radius: 18px;
	box-shadow: 0 14px 34px rgba(8, 46, 106, 0.16);
}

.cv-store-explore-card__eyebrow {
	margin: 0 0 6px;
	font-size: 11px;
	font-weight: 850;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--cv-brand-secondary);
}

.cv-store-explore-card h2 {
	margin: 0;
	font-size: 21px;
	line-height: 1.2;
	color: var(--cv-on-dark);
}

.cv-store-explore-card > p:not(.cv-store-explore-card__eyebrow) {
	margin: 9px 0 17px;
	font-size: 13px;
	line-height: 1.6;
	color: var(--cv-on-dark-muted);
}

.cv-store-explore-card__links {
	display: grid;
	gap: 8px;
}

.cv-store-explore-card__links a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	min-height: 42px;
	padding: 9px 11px;
	border: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: 10px;
	background: rgba(255, 255, 255, 0.08);
	color: var(--cv-on-dark) !important;
	font-size: 13px;
	font-weight: 750;
	text-decoration: none !important;
}

.cv-store-explore-card__links a:hover {
	background: rgba(255, 255, 255, 0.14);
}

/* Offer groups now read as deliberate shopping modules, not loose rows. */
.cv-offer-section {
	margin: 0 0 34px;
	padding: 26px;
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: 18px;
	box-shadow: var(--cv-shadow-panel);
}

.cv-offer-section + .cv-offer-section {
	margin-top: 0;
}

.cv-offer-section--code {
	border-top: 4px solid var(--cv-brand-primary);
}

.cv-offer-section--deal {
	border-top: 4px solid var(--cv-brand-secondary);
}

.cv-offer-section__heading {
	align-items: center;
	margin-bottom: 20px;
	padding: 0 0 15px;
}

.cv-offer-section__heading h2 {
	font-size: 29px;
}

.cv-offer-section--deal .cv-offer-section__heading h2 {
	font-size: 26px;
}

.cv-offer-section__count {
	min-width: 34px;
	height: 34px;
	font-size: 14px;
}

.cv-offer-list {
	gap: 16px;
}

.cv-offer-card {
	grid-template-columns: 190px minmax(0, 1fr) 204px;
	min-height: 154px;
	border-color: var(--cv-border-default);
	border-radius: 16px;
	box-shadow: var(--cv-shadow-offer);
	background: var(--cv-surface-primary);
}

.cv-offer-card--first {
	border-left-width: 5px;
	box-shadow: 0 14px 32px rgba(8, 46, 106, 0.12);
}

.cv-offer-card--deal {
	grid-template-columns: 150px minmax(0, 1fr) 194px;
	min-height: 118px;
	box-shadow: 0 6px 17px rgba(15, 23, 42, 0.055);
}

.cv-offer-card__value {
	padding: 24px 18px;
	background: var(--cv-brand-primary-soft);
}

.cv-offer-card__value-kicker {
	font-size: 10px;
	letter-spacing: 0.13em;
}

.cv-offer-card__value-figure {
	margin-top: 8px;
	font-size: 36px;
	line-height: 1;
	letter-spacing: -0.045em;
}

.cv-offer-card__value-type {
	margin-top: 10px;
	padding: 5px 9px;
	border-radius: 6px;
	background: var(--cv-brand-primary-soft);
	font-size: 10px;
}

.cv-offer-card--deal .cv-offer-card__value {
	background: var(--cv-brand-secondary-soft);
}

.cv-offer-card__deal-mark {
	width: 40px;
	height: 40px;
	box-shadow: inset 0 0 0 1px var(--cv-divider);
}

.cv-offer-card__deal-label {
	font-size: 15px;
}

.cv-offer-card__info {
	padding: 25px 28px;
}

.cv-offer-card__title {
	margin-bottom: 10px;
	font-size: 19px;
	line-height: 1.3;
	font-weight: 820;
}

.cv-offer-card--deal .cv-offer-card__title {
	font-size: 18px;
}

.cv-offer-meta {
	font-size: 12.5px;
}

.cv-conditions {
	margin-top: 11px;
	font-size: 13px;
}

.cv-offer-card__action {
	padding: 24px 22px;
	background: var(--cv-surface-primary);
}

.cv-offer-card__action .cv-button,
.cv-show-code summary.cv-button {
	min-height: 52px;
	font-size: 15px;
	border-radius: 10px;
	box-shadow: 0 5px 14px rgba(8, 46, 106, 0.11);
}

.cv-offer-card--deal .cv-offer-card__action .cv-button {
	box-shadow: 0 5px 14px rgba(58, 122, 35, 0.12);
}

/* Continuation content should feel like a deliberate editorial/discovery area. */
.cv-expired-section {
	margin: 8px 0 34px;
	background: rgba(255, 255, 255, 0.7);
	border: 1px solid var(--cv-divider);
	border-radius: 12px;
}

.cv-expired-section > summary {
	padding: 16px 18px;
}

.cv-store-description {
	padding: 34px 36px;
	border-radius: 18px;
	border-color: var(--cv-border-default);
	box-shadow: var(--cv-shadow-panel);
	position: relative;
	overflow: hidden;
}

.cv-store-description::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 5px;
	background: var(--cv-brand-secondary);
}

.cv-store-description h2 {
	font-size: 28px;
}

.cv-store-description__body {
	max-width: 820px;
	font-size: 16px;
	line-height: 1.78;
}

.cv-related-stores {
	margin-top: 26px;
	padding: 30px;
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: 18px;
	box-shadow: var(--cv-shadow-card);
}

.cv-related-stores__heading {
	margin-bottom: 22px;
}

.cv-related-stores__heading h2 {
	font-size: 28px;
}

.cv-related-stores__grid {
	gap: 16px;
}

.cv-related-stores .cv-store-card {
	background: var(--cv-surface-primary);
	border-color: var(--cv-border-default);
	box-shadow: 0 5px 15px rgba(15, 23, 42, 0.045);
	transition: transform 140ms ease, box-shadow 140ms ease, border-color 140ms ease;
}

.cv-related-stores .cv-store-card:hover {
	transform: translateY(-2px);
	border-color: var(--cv-border-strong);
	box-shadow: 0 10px 22px rgba(15, 23, 42, 0.075);
}

.cv-related-stores .cv-store-card__link {
	padding: 18px;
}

.cv-related-stores .cv-logo--small {
	width: 54px;
	height: 54px;
	flex-basis: 54px;
}

.cv-related-stores .cv-store-card__name {
	font-size: 16px;
}

.cv-footer {
	margin-top: 84px;
	padding-top: 46px;
	padding-bottom: 42px;
}

@media (min-width: 1024px) {
	.cv-store-layout {
		row-gap: 30px;
	}

	.cv-store-sidebar {
		top: 102px;
	}
}

@media (max-width: 1023px) {
	.cv-store-explore-card {
		margin-top: 0;
	}

	.cv-store-sidebar {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(280px, 0.7fr);
		gap: 18px;
	}
}

@media (max-width: 767px) {
	.cv-store-intro {
		min-height: 0;
		padding: 24px 20px;
	}

	.cv-store-intro::after {
		width: 82px;
		height: 5px;
	}

	.cv-store-intro__logo {
		width: 82px;
		height: 82px;
		flex-basis: 82px;
	}

	.cv-store-intro h1 {
		font-size: 29px;
	}

	.cv-store-intro__summary {
		font-size: 14px;
	}

	.cv-store-sidebar {
		grid-template-columns: 1fr;
	}

	.cv-store-explore-card {
		padding: 20px;
	}

	.cv-offer-section {
		padding: 20px 16px;
		border-radius: 16px;
	}

	.cv-offer-section__heading h2 {
		font-size: 25px;
	}

	.cv-offer-section--deal .cv-offer-section__heading h2 {
		font-size: 23px;
	}

	.cv-offer-card,
	.cv-offer-card--deal {
		min-height: 0;
	}

	.cv-offer-card__value,
	.cv-offer-card--deal .cv-offer-card__value {
		padding: 16px 18px;
	}

	.cv-offer-card__value-figure {
		font-size: 27px;
	}

	.cv-offer-card__info {
		padding: 19px 18px;
	}

	.cv-offer-card__action {
		padding: 0 18px 18px;
		background: var(--cv-surface-primary);
	}

	.cv-store-description,
	.cv-related-stores {
		padding: 24px 20px;
	}

	.cv-store-description h2,
	.cv-related-stores__heading h2 {
		font-size: 23px;
	}

	.cv-footer {
		margin-top: 58px;
	}
}

/* ==========================================================================\n   M1.3 — Merchant identity polish\n   Presentation only: real Store logos first, calmer hero/facts composition,\n   stronger related-store discovery, refined coupon stubs and footer.\n   ========================================================================== */

/* A real merchant logo is always preferred by the templates. The fallback is
   deliberately pictorial instead of a generated initial so missing assets do
   not make production look like a prototype directory. */
.cv-logo img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	object-position: center;
}

.cv-logo__fallback {
	display: block;
	width: 66%;
	height: 66%;
	margin: auto;
	background: center / contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' fill='none'%3E%3Cpath d='M12 27h40v25H12V27Z' fill='%23EAF1FB' stroke='%23082E6A' stroke-width='3'/%3E%3Cpath d='M9 25 14 12h36l5 13H9Z' fill='%23F3F7FC' stroke='%23082E6A' stroke-width='3' stroke-linejoin='round'/%3E%3Cpath d='M18 27v7a6 6 0 0 0 12 0v-7m4 0v7a6 6 0 0 0 12 0v-7' stroke='%235DBB2F' stroke-width='3' stroke-linecap='round'/%3E%3Cpath d='M25 52V40h14v12' stroke='%23082E6A' stroke-width='3'/%3E%3C/svg%3E");
}

/* Keep merchant identity strong without letting the hero delay the core task. */
.cv-store-intro {
	min-height: 188px;
	gap: 26px;
	padding: 28px 32px;
}

.cv-store-intro__logo {
	width: 112px;
	height: 112px;
	flex-basis: 112px;
	padding: 14px;
}

.cv-store-intro h1 {
	font-size: 37px;
	line-height: 1.08;
}

.cv-store-intro__summary {
	margin-top: 10px;
	line-height: 1.62;
}

.cv-store-intro__meta {
	margin-top: 13px;
}

.cv-store-intro__actions {
	margin-top: 16px;
}

/* Store facts belong to the same merchant overview, not a second discovery
   module. The previous duplicate “Find similar stores” card is removed from
   markup; Related Stores owns that job at the end of the page. */
.cv-store-info-card {
	box-shadow: 0 16px 38px rgba(15, 23, 42, 0.075);
}

.cv-store-info-card__head {
	padding: 23px 22px 17px;
}

.cv-store-info-card__row {
	padding: 16px 22px;
}

/* Coupon stubs: one idea, one label. Do not repeat COUPON / CODE / CODE. */
.cv-offer-card__value-kicker {
	font-size: 10px;
	letter-spacing: 0.115em;
}

.cv-offer-card__value-figure {
	font-size: 35px;
}

.cv-offer-card__value-figure--generic {
	max-width: 140px;
	font-size: 24px;
	line-height: 1.05;
}

.cv-offer-card__value-type {
	display: none;
}

/* Related Stores should read like merchant discovery. Real logos are larger,
   the whole card remains the link, and the directional affordance is quiet. */
.cv-related-stores__grid {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.cv-related-stores .cv-store-card {
	position: relative;
	min-height: 94px;
}

.cv-related-stores .cv-store-card__link {
	display: flex;
	align-items: center;
	min-height: 94px;
	padding: 16px 44px 16px 16px;
}

.cv-related-stores .cv-store-card__link::after {
	content: "→";
	position: absolute;
	right: 17px;
	top: 50%;
	transform: translateY(-50%);
	color: var(--cv-brand-primary);
	font-size: 18px;
	font-weight: 800;
}

.cv-related-stores .cv-logo--small {
	width: 60px;
	height: 60px;
	flex-basis: 60px;
	padding: 7px;
	background: #fff;
}

.cv-related-stores .cv-store-card__details {
	gap: 4px;
}

.cv-related-stores .cv-store-card__name {
	font-size: 16px;
	line-height: 1.25;
}

.cv-related-stores .cv-store-card__summary .cv-badge {
	background: transparent;
	padding: 0;
	color: var(--cv-text-muted);
	font-size: 12px;
	font-weight: 650;
}

/* Footer now closes the shopper journey with only routes that already exist. */
.cv-footer {
	margin-top: 74px;
	padding: 0 0 42px;
}

.cv-footer__explore {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 32px;
	padding: 32px 0;
	border-bottom: 1px solid rgba(255, 255, 255, 0.18);
}

.cv-footer__eyebrow {
	margin: 0 0 6px;
	color: var(--cv-brand-secondary);
	font-size: 11px;
	font-weight: 850;
	letter-spacing: 0.09em;
	text-transform: uppercase;
}

.cv-footer__explore h2 {
	margin: 0;
	color: var(--cv-on-dark);
	font-size: 25px;
	line-height: 1.15;
}

.cv-footer__explore p:not(.cv-footer__eyebrow) {
	margin: 7px 0 0;
	color: var(--cv-on-dark-muted);
	font-size: 14px;
}

.cv-footer__explore-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.cv-button--footer-primary,
.cv-button--footer-secondary {
	min-height: 46px;
	padding: 0 17px;
	border-radius: 9px;
	text-decoration: none !important;
}

.cv-button--footer-primary {
	background: var(--cv-brand-secondary);
	border-color: var(--cv-brand-secondary);
	color: #10250b !important;
}

.cv-button--footer-secondary {
	background: rgba(255, 255, 255, 0.08);
	border: 1px solid rgba(255, 255, 255, 0.24);
	color: var(--cv-on-dark) !important;
}

.cv-footer__inner {
	padding-top: 30px;
}

.cv-footer__tagline {
	margin: 10px 0 0;
	color: var(--cv-on-dark-muted);
	font-size: 14px;
}

.cv-footer__disclosure {
	margin-top: 12px;
	max-width: 720px;
}

@media (max-width: 1023px) {
	/* With the duplicate Explore card gone, facts use the whole width below
	   the hero instead of leaving a dead second column. */
	.cv-store-sidebar {
		display: block;
	}

	.cv-store-info-card__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cv-related-stores__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 767px) {
	.cv-store-intro {
		padding: 22px 18px;
	}

	.cv-store-intro__logo {
		width: 78px;
		height: 78px;
		flex-basis: 78px;
	}

	.cv-store-intro h1 {
		font-size: 28px;
	}

	.cv-store-info-card__list,
	.cv-related-stores__grid {
		grid-template-columns: 1fr;
	}

	.cv-related-stores .cv-store-card__link {
		min-height: 82px;
	}

	.cv-footer__explore {
		align-items: flex-start;
		flex-direction: column;
		padding: 28px 0;
	}

	.cv-footer__explore-actions {
		width: 100%;
	}

	.cv-footer__explore-actions .cv-button {
		width: 100%;
	}
}

/* ========================================================================
 * M1.5 — CouponFollow-inspired typography + presentation
 * Visual reference: CouponFollow Store pages. This is not a brand clone:
 * CouponVerity keeps its navy/green identity and only adopts the clearer
 * typographic hierarchy, flatter merchant header, offer-card anatomy and
 * two-column editorial rhythm.
 * ===================================================================== */

:root {
	--cv-font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
	--cv-font-heading: "Century Gothic", "Avenir Next", "Segoe UI", Arial, sans-serif;
	--cv-store-canvas-max: 1280px;
	--cv-store-sidebar: 300px;
	--cv-store-grid-gap: 28px;
}

body.cv-public {
	background: #eef3f9;
	font-family: var(--cv-font-family);
	font-size: 16px;
	line-height: 1.48;
	color: #252a30;
}

.cv-public h1,
.cv-public h2,
.cv-public h3,
.cv-public .cv-header__logo,
.cv-public .cv-button,
.cv-public .cv-store-card__name {
	font-family: var(--cv-font-heading);
}

/* Header: one strong commerce bar; search is part of the navigation rather
   than a separate oversized hero control. */
.cv-header {
	border-bottom-width: 1px;
	box-shadow: none;
}

.cv-header__bar {
	min-height: 78px;
	padding-top: 14px;
	padding-bottom: 14px;
}

.cv-header .cv-header__logo {
	font-size: 25px;
	font-weight: 700;
}

.cv-header__search-form {
	min-height: 46px;
	box-shadow: none;
}

.cv-header__search-input,
.cv-header__search-button {
	min-height: 46px;
}

/* Store header: closer to CouponFollow's merchant identity band. The Store
   identity spans the full width; the sidebar starts with the offer content. */
@media (min-width: 1024px) {
	.cv-store-layout {
		grid-template-columns: minmax(0, 1fr) var(--cv-store-sidebar);
		grid-template-areas:
			"intro intro"
			"content sidebar";
		column-gap: var(--cv-store-grid-gap);
		row-gap: 26px;
	}

	.cv-store-sidebar {
		position: sticky;
		top: 94px;
	}
}

.cv-container--store .cv-breadcrumb {
	padding-top: 22px;
	font-size: 13px;
}

.cv-store-intro {
	min-height: 0;
	padding: 28px 0 32px;
	gap: 24px;
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	overflow: visible;
}

.cv-store-intro::before,
.cv-store-intro::after,
.cv-store-intro__eyebrow {
	display: none;
}

.cv-store-intro__logo {
	width: 128px;
	height: 128px;
	flex-basis: 128px;
	padding: 10px;
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: 8px;
	box-shadow: none;
}

.cv-store-intro h1 {
	max-width: 900px;
	font-size: 40px;
	line-height: 1.12;
	letter-spacing: -0.035em;
	font-weight: 700;
	color: #2b2d30;
}

.cv-store-intro__summary {
	display: none;
}

.cv-store-intro__meta {
	margin-top: 13px;
	gap: 10px 18px;
	font-size: 15px;
}

.cv-topic-link,
.cv-topic-link--static {
	min-height: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	font-weight: 600;
	text-decoration: none;
}

.cv-topic-link:hover {
	background: transparent;
	border: 0;
	text-decoration: underline;
}

.cv-store-intro__offer-summary {
	min-height: 0;
	padding: 0;
	background: transparent;
	color: var(--cv-text-secondary);
	font-weight: 500;
}

.cv-store-intro__offer-summary::before {
	display: inline;
	content: "•";
	margin-right: 14px;
	color: var(--cv-text-muted);
}

.cv-store-intro__actions {
	margin-top: 17px;
}

.cv-store-intro__affiliate-note {
	margin: 9px 0 0;
	max-width: 54ch;
	font-size: 12px;
	line-height: 1.45;
	color: var(--cv-text-muted);
}

.cv-button--outline {
	min-height: 43px;
	padding: 0 17px;
	background: transparent;
	color: var(--cv-brand-primary);
	border: 1px solid var(--cv-brand-primary);
	border-radius: 5px;
	box-shadow: none;
}

.cv-button--outline:hover {
	background: var(--cv-brand-primary-soft);
	color: var(--cv-brand-primary);
}

/* Sidebar: editorial summary rather than dashboard card. */
.cv-store-sidepanel {
	color: #2d3136;
}

.cv-store-sidepanel__disclosure {
	margin: 0;
	padding: 0 0 20px;
	font-size: 14px;
	line-height: 1.45;
	color: #454a50;
}

.cv-store-sidepanel__section {
	padding: 22px 0;
	border-top: 1px solid #cfd7e2;
}

.cv-store-sidepanel__section h2 {
	margin: 0 0 15px;
	font-family: var(--cv-font-heading);
	font-size: 21px;
	line-height: 1.2;
	font-weight: 600;
	letter-spacing: -0.02em;
}

.cv-store-sidepanel__stats {
	margin: 0;
	display: grid;
	gap: 13px;
}

.cv-store-sidepanel__stats > div {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: baseline;
	gap: 14px;
}

.cv-store-sidepanel__stats dt {
	font-size: 15px;
	font-weight: 600;
}

.cv-store-sidepanel__stats dd {
	margin: 0;
	font-size: 15px;
	font-weight: 400;
}

.cv-store-sidepanel__website,
.cv-store-sidepanel__browse {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-size: 15px;
	font-weight: 600;
	text-decoration: none;
}

.cv-store-sidepanel__website:hover,
.cv-store-sidepanel__browse:hover {
	text-decoration: underline;
}

.cv-store-sidepanel__website--unlinked {
	color: var(--cv-text-secondary);
	cursor: default;
}

/* Offer groups: no outer card. The offer itself should carry the visual
   weight, matching CouponFollow's flatter list-on-canvas presentation. */
.cv-offer-section {
	margin: 0 0 38px;
	padding: 0;
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
}

.cv-offer-section--code,
.cv-offer-section--deal {
	border-top: 0;
}

.cv-offer-section + .cv-offer-section {
	margin-top: 42px;
}

.cv-offer-section__eyebrow {
	display: none;
}

.cv-offer-section__heading {
	align-items: center;
	margin-bottom: 16px;
	padding: 0;
	border-bottom: 0;
}

.cv-offer-section__heading h2,
.cv-offer-section--deal .cv-offer-section__heading h2 {
	font-size: 23px;
	line-height: 1.25;
	font-weight: 500;
	letter-spacing: -0.025em;
	color: #2b2d30;
}

.cv-offer-section__count {
	background: transparent;
	color: var(--cv-text-muted);
	font-size: 13px;
	font-weight: 500;
}

.cv-offer-list {
	gap: 20px;
}

.cv-offer-card,
.cv-offer-card--deal {
	grid-template-columns: 168px minmax(0, 1fr) 230px;
	min-height: 184px;
	background: var(--cv-surface-primary);
	border: 1px solid #e2e6ec;
	border-radius: 13px;
	box-shadow: 0 6px 16px rgba(30, 46, 66, 0.14);
	overflow: hidden;
}

.cv-offer-card:hover {
	transform: none;
	border-color: #d4dae3;
	box-shadow: 0 8px 20px rgba(30, 46, 66, 0.16);
}

.cv-offer-card--first {
	border-left-width: 1px;
	box-shadow: 0 7px 18px rgba(30, 46, 66, 0.15);
}

.cv-offer-card__value,
.cv-offer-card--deal .cv-offer-card__value {
	justify-content: center;
	padding: 30px 20px;
	background: var(--cv-surface-primary);
	border-right: 2px dashed #bcc4cf;
}

.cv-offer-card--code .cv-offer-card__value::before,
.cv-offer-card--code .cv-offer-card__value::after {
	display: none;
}

.cv-offer-card__value-kicker {
	display: none;
}

.cv-offer-card__value-figure {
	margin: 0;
	font-family: var(--cv-font-heading);
	font-size: 45px;
	line-height: 1;
	font-weight: 600;
	letter-spacing: -0.045em;
	color: #303236;
}

.cv-offer-card__value-figure--generic {
	font-size: 29px;
	line-height: 1.05;
}

.cv-offer-card__value-suffix {
	display: block;
	margin-top: 8px;
	font-family: var(--cv-font-heading);
	font-size: 21px;
	line-height: 1;
	font-weight: 400;
	letter-spacing: 0;
	color: #111827;
}

.cv-offer-card--deal .cv-offer-card__value {
	background: var(--cv-surface-primary);
}

.cv-offer-card__deal-mark {
	display: none;
}

.cv-offer-card__deal-label {
	font-family: var(--cv-font-heading);
	font-size: 25px;
	font-weight: 600;
	color: var(--cv-brand-secondary-strong);
}

.cv-offer-card__deal-saving {
	font-size: 14px;
	color: var(--cv-text-secondary);
}

.cv-offer-card__info,
.cv-offer-card--deal .cv-offer-card__info {
	padding: 28px 26px;
}

.cv-offer-card__merchant {
	display: flex;
	align-items: center;
	gap: 7px;
	margin-bottom: 8px;
	font-size: 14px;
	font-weight: 500;
	color: #31353a;
}

.cv-offer-card__merchant img,
.cv-offer-card__merchant-fallback {
	width: 27px;
	height: 27px;
	flex: 0 0 27px;
	object-fit: contain;
	border-radius: 2px;
}

.cv-offer-card__merchant-fallback {
	display: block;
	background: var(--cv-brand-primary-soft);
}

.cv-offer-card__title,
.cv-offer-card--deal .cv-offer-card__title {
	margin: 0 0 7px;
	font-family: var(--cv-font-heading);
	font-size: 25px;
	line-height: 1.15;
	font-weight: 600;
	letter-spacing: -0.03em;
	color: #2b2d30;
}

.cv-offer-card__meta {
	gap: 7px 12px;
	font-size: 14px;
}

.cv-offer-meta {
	font-size: 14px;
	color: #41464d;
}

.cv-offer-meta--condition {
	color: var(--cv-warning);
}

.cv-conditions {
	margin-top: 12px;
	font-size: 14px;
	line-height: 1.55;
	color: #4c535c;
}

.cv-offer-card__action {
	position: relative;
	align-items: center;
	justify-content: center;
	padding: 28px 18px;
	background: var(--cv-surface-primary);
	border-left: 0;
}

.cv-offer-card__action::before {
	content: "";
	position: absolute;
	left: 0;
	top: 24px;
	bottom: 24px;
	border-left: 1px dashed #c5ccd6;
}

.cv-show-code {
	position: relative;
	width: 100%;
	min-height: 54px;
	display: flex;
	align-items: center;
	justify-content: flex-end;
}

.cv-show-code::after {
	content: "CODE";
	position: absolute;
	right: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 105px;
	height: 54px;
	display: flex;
	align-items: center;
	justify-content: flex-end;
	padding-right: 13px;
	border: 2px dashed #4c6fd7;
	border-radius: 5px;
	color: var(--cv-brand-primary);
	font-family: var(--cv-font-heading);
	font-size: 18px;
	font-weight: 600;
	letter-spacing: 0.02em;
	background: #f8faff;
	z-index: 0;
}

.cv-show-code > summary.cv-button {
	position: relative;
	z-index: 1;
	width: calc(100% - 34px);
	margin-right: 34px;
	min-height: 54px;
	border-radius: 4px;
	font-family: var(--cv-font-heading);
	font-size: 17px;
	font-weight: 600;
	box-shadow: 0 3px 8px rgba(8, 46, 106, 0.18);
}

.cv-show-code[open]::after {
	display: none;
}

.cv-show-code[open] > summary.cv-button {
	width: 100%;
	margin-right: 0;
}

.cv-offer-card__action > .cv-button,
.cv-offer-card__action > .cv-show-code {
	max-width: 210px;
}

.cv-offer-card--deal .cv-offer-card__action .cv-button {
	min-height: 52px;
	border-radius: 4px;
	font-family: var(--cv-font-heading);
	font-size: 16px;
	font-weight: 600;
	box-shadow: 0 3px 8px rgba(58, 122, 35, 0.16);
}

/* Continuation content adopts the same flatter editorial system. */
.cv-expired-section {
	border-radius: 8px;
	box-shadow: none;
}

.cv-store-description,
.cv-related-stores {
	padding: 28px 0;
	background: transparent;
	border: 0;
	border-top: 1px solid #cfd7e2;
	border-radius: 0;
	box-shadow: none;
}

.cv-store-description::before,
.cv-related-stores::before {
	display: none;
}

.cv-store-description h2,
.cv-related-stores__heading h2 {
	font-family: var(--cv-font-heading);
	font-size: 26px;
	font-weight: 600;
	letter-spacing: -0.025em;
}

.cv-store-description__eyebrow,
.cv-related-stores__eyebrow {
	display: none;
}

.cv-store-description__body {
	font-size: 16px;
	line-height: 1.65;
}

.cv-related-stores__grid {
	gap: 13px;
}

.cv-related-stores .cv-store-card {
	border-radius: 8px;
	box-shadow: none;
}

.cv-related-stores .cv-store-card:hover {
	transform: none;
	box-shadow: 0 4px 12px rgba(30, 46, 66, 0.08);
}

@media (max-width: 1023px) {
	.cv-store-intro {
		padding-top: 22px;
		padding-bottom: 26px;
	}

	.cv-store-sidebar {
		display: block;
	}

	.cv-store-sidepanel {
		padding: 0;
	}

	.cv-store-sidepanel__stats {
		max-width: 480px;
	}
}

@media (max-width: 767px) {
	body.cv-public {
		font-size: 15px;
	}

	.cv-store-intro {
		align-items: flex-start;
		gap: 16px;
		padding: 18px 0 22px;
	}

	.cv-store-intro__logo {
		width: 76px;
		height: 76px;
		flex-basis: 76px;
	}

	.cv-store-intro h1 {
		font-size: 28px;
	}

	.cv-store-intro__meta {
		font-size: 13px;
	}

	.cv-offer-section__heading h2,
	.cv-offer-section--deal .cv-offer-section__heading h2 {
		font-size: 21px;
	}

	.cv-offer-card,
	.cv-offer-card--deal {
		grid-template-columns: 1fr;
		min-height: 0;
	}

	.cv-offer-card__value,
	.cv-offer-card--deal .cv-offer-card__value {
		border-right: 0;
		border-bottom: 1px dashed #bcc4cf;
		padding: 20px 18px;
	}

	.cv-offer-card__value-figure {
		font-size: 36px;
	}

	.cv-offer-card__value-suffix {
		font-size: 17px;
	}

	.cv-offer-card__info {
		padding: 20px 18px;
	}

	.cv-offer-card__title,
	.cv-offer-card--deal .cv-offer-card__title {
		font-size: 21px;
	}

	.cv-offer-card__action {
		padding: 0 18px 20px;
	}

	.cv-offer-card__action::before {
		display: none;
	}

	.cv-offer-card__action > .cv-button,
	.cv-offer-card__action > .cv-show-code {
		max-width: none;
		width: 100%;
	}

	.cv-show-code > summary.cv-button {
		width: calc(100% - 42px);
	}

	.cv-store-sidepanel__section h2 {
		font-size: 19px;
	}
}

/* ========================================================================
 * M1.5 — Final Store visual polish
 * Presentation only. Locks the approved Store architecture while correcting
 * CTA geometry, typography density, offer proportions, discovery spacing and
 * desktop reading rhythm.
 * ===================================================================== */

body.cv-public {
	background: #f5f7fa;
}

/* Merchant header: slightly tighter so the first coupon appears sooner. */
.cv-store-intro {
	padding-top: 24px;
	padding-bottom: 27px;
	gap: 22px;
}

.cv-store-intro__logo {
	width: 118px;
	height: 118px;
	flex-basis: 118px;
}

.cv-store-intro h1 {
	font-size: 38px;
	line-height: 1.14;
	letter-spacing: -0.028em;
	font-weight: 650;
}

/* Coupon cards: give the action zone enough physical room. */
.cv-offer-card--code {
	grid-template-columns: 168px minmax(0, 1fr) 278px;
}

.cv-offer-card--deal {
	grid-template-columns: 168px minmax(0, 1fr) 224px;
}

.cv-offer-card__title,
.cv-offer-card--deal .cv-offer-card__title {
	font-weight: 600;
	letter-spacing: -0.022em;
}

.cv-offer-card__action {
	padding-left: 22px;
	padding-right: 22px;
}

.cv-offer-card__action > .cv-show-code {
	max-width: none;
	width: 100%;
}

.cv-show-code {
	min-width: 0;
	overflow: visible;
}

/* The reveal stub should read as one intentional coupon control, not a broken
   box peeking out from a narrow button. */
.cv-show-code::after {
	right: 0;
	width: 118px;
	height: 54px;
	padding-right: 14px;
	border-width: 2px;
	font-size: 16px;
}

.cv-show-code > summary.cv-button {
	box-sizing: border-box;
	width: calc(100% - 42px);
	min-width: 198px;
	max-width: none;
	margin-right: 42px;
	padding: 0 20px;
	white-space: nowrap;
	word-break: normal;
	overflow-wrap: normal;
	line-height: 1;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 16px;
	font-weight: 650;
}

.cv-show-code[open] > summary.cv-button {
	width: 100%;
	min-width: 0;
	margin-right: 0;
}

.cv-offer-card--deal .cv-offer-card__action .cv-button {
	width: 100%;
	max-width: 178px;
	white-space: nowrap;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* Related Stores: clearly separate merchant identity from offer metadata. */
.cv-related-stores .cv-store-card__body {
	gap: 14px;
}

.cv-related-stores .cv-store-card__details {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 6px;
}

.cv-related-stores .cv-store-card__name {
	margin: 0;
	font-size: 16px;
	line-height: 1.25;
	font-weight: 650;
}

.cv-related-stores .cv-store-card__summary {
	display: block;
	margin: 0;
	line-height: 1.2;
}

.cv-related-stores .cv-store-card__summary .cv-badge {
	display: inline-block;
	line-height: 1.25;
}

.cv-related-stores .cv-logo--small {
	width: 64px;
	height: 64px;
	flex-basis: 64px;
}

/* Keep the editorial sidebar available while offers scroll on desktop. */
@media (min-width: 1024px) {
	.cv-store-sidebar {
		position: sticky;
		top: 92px;
		align-self: start;
	}
}

@media (max-width: 1180px) and (min-width: 1024px) {
	.cv-offer-card--code {
		grid-template-columns: 154px minmax(0, 1fr) 254px;
	}

	.cv-show-code > summary.cv-button {
		min-width: 184px;
		padding-left: 16px;
		padding-right: 16px;
		font-size: 15px;
	}
}

@media (max-width: 767px) {
	.cv-store-intro__logo {
		width: 74px;
		height: 74px;
		flex-basis: 74px;
	}

	.cv-store-intro h1 {
		font-size: 27px;
	}

	.cv-offer-card--code,
	.cv-offer-card--deal {
		grid-template-columns: 1fr;
	}

	.cv-show-code {
		width: 100%;
	}

	.cv-show-code::after {
		display: none;
	}

	.cv-show-code > summary.cv-button,
	.cv-show-code[open] > summary.cv-button {
		width: 100%;
		min-width: 0;
		margin-right: 0;
		white-space: nowrap;
	}

	.cv-offer-card--deal .cv-offer-card__action .cv-button {
		max-width: none;
	}
}



/* ========================================================================
 * M1.6 — Store final polish + editorial-entry preview
 * Presentation-only override. No routing, publication, importer, ordering,
 * verification/evidence, or production state changes.
 * ===================================================================== */

/* CouponFollow-inspired reveal geometry: one deliberate composite control.
   The action-column separator was visually colliding with the dashed reveal
   field, so the separator is removed rather than masked. */
.cv-offer-card__action::before {
	display: none;
}

/* The legacy flex-era width:170px was still constraining this grid item even
   after M1.5 widened the grid track. Let the action fill its actual grid cell. */
.cv-offer-card__action {
	width: auto;
	min-width: 0;
	justify-self: stretch;
	padding-left: 18px;
	padding-right: 18px;
}

.cv-offer-card--code {
	grid-template-columns: 168px minmax(0, 1fr) 304px;
}

.cv-show-code {
	--cv-code-peek: 72px;
	--cv-code-stub: 138px;
	min-height: 54px;
}

.cv-show-code::after {
	width: var(--cv-code-stub);
	height: 54px;
	padding: 0 15px 0 12px;
	box-sizing: border-box;
	justify-content: flex-end;
	border: 2px dashed #4c6fd7;
	border-radius: 5px;
	background: #f8faff;
	font-family: var(--cv-font-mono);
	font-size: 14px;
	font-weight: 750;
	letter-spacing: 0.035em;
	white-space: nowrap;
}

/* Standalone review can show a partial-code peek. Production without the
   optional data attribute keeps the existing generic CODE label. */
.cv-show-code[data-code-peek]::after {
	content: attr(data-code-peek);
}

.cv-offer-card__action > .cv-show-code > summary.cv-button {
	width: calc(100% - var(--cv-code-peek));
	min-width: 0;
	margin-right: var(--cv-code-peek);
	padding-left: 16px;
	padding-right: 16px;
	border-radius: 5px;
	font-size: 15px;
	font-weight: 680;
	letter-spacing: -0.01em;
	white-space: nowrap;
}

.cv-offer-card__action > .cv-show-code[open] > summary.cv-button {
	width: 100%;
	margin-right: 0;
}

/* Final editorial density: flatter coupon publishing cards, not dashboard
   tiles. Keep hierarchy strong while reducing decorative weight. */
.cv-offer-card {
	border-radius: 8px;
	box-shadow: 0 2px 8px rgba(15, 23, 42, 0.045);
}

.cv-offer-card:hover {
	transform: none;
	box-shadow: 0 5px 14px rgba(15, 23, 42, 0.07);
}

.cv-offer-card__title,
.cv-offer-card--deal .cv-offer-card__title {
	font-size: 18px;
	line-height: 1.32;
	font-weight: 620;
}

.cv-offer-card__value-figure {
	font-weight: 800;
}

.cv-store-description__body {
	max-width: 76ch;
}

/* Related Stores: merchant identity first. The existing data-driven template
   should render logo_file when present; fallback is reserved for missing assets. */
.cv-related-stores__grid {
	gap: 12px;
}

.cv-related-stores .cv-store-card {
	border-radius: 8px;
	background: #fff;
}

.cv-related-stores .cv-store-card__link {
	display: flex;
	align-items: center;
	gap: 14px;
	min-height: 94px;
	padding: 15px 16px;
}

.cv-related-stores .cv-logo--small {
	width: 58px;
	height: 58px;
	flex: 0 0 58px;
	padding: 6px;
	border-radius: 9px;
	background: #fff;
}

.cv-related-stores .cv-logo img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.cv-related-stores .cv-logo__fallback {
	width: 62%;
	height: 62%;
	opacity: .72;
}

.cv-related-stores .cv-store-card__details {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	gap: 5px;
	min-width: 0;
}

.cv-related-stores .cv-store-card__name {
	display: block;
	margin: 0;
	font-size: 16px;
	line-height: 1.22;
	font-weight: 680;
	color: var(--cv-text-primary);
}

.cv-related-stores .cv-store-card__summary {
	display: block;
	margin: 0;
	font-size: 12px;
	line-height: 1.25;
	color: var(--cv-text-muted);
}

.cv-related-stores .cv-store-card__summary .cv-badge {
	display: block;
	padding: 0;
	background: transparent;
	font-size: inherit;
	font-weight: 600;
	color: inherit;
}

.cv-related-stores .cv-store-card__link:hover .cv-store-card__name,
.cv-related-stores .cv-store-card__link:focus-visible .cv-store-card__name {
	color: var(--cv-brand-primary);
}

/* Three header destinations plus Saving Guides remain compact enough to wrap
   safely with the existing flex header rather than forcing fixed widths. */
.cv-nav a {
	white-space: nowrap;
}

@media (max-width: 1180px) and (min-width: 768px) {
	.cv-offer-card--code {
		grid-template-columns: 154px minmax(0, 1fr) 286px;
	}

	.cv-show-code {
		--cv-code-peek: 60px;
		--cv-code-stub: 124px;
	}

	.cv-offer-card__action > .cv-show-code > summary.cv-button {
		padding-left: 10px;
		padding-right: 10px;
		font-size: 14px;
	}

	.cv-nav {
		gap: 10px;
	}

	.cv-nav a {
		padding-left: 6px;
		padding-right: 6px;
		font-size: 14px;
	}
}

@media (max-width: 767px) {
	.cv-header__bar {
		grid-template-columns: minmax(0, 1fr);
		gap: 6px;
	}

	.cv-header .cv-header__logo {
		grid-column: 1;
		grid-row: 1;
		justify-self: start;
	}

	.cv-nav {
		grid-column: 1;
		grid-row: 2;
		justify-self: stretch;
		justify-content: flex-start;
		gap: 4px;
	}

	.cv-nav a {
		padding: 5px 7px;
		font-size: 12px;
	}

	.cv-header__search {
		grid-column: 1;
		grid-row: 3;
		width: 100%;
	}

	.cv-offer-card--code,
	.cv-offer-card--deal {
		grid-template-columns: 1fr;
	}

	.cv-show-code {
		--cv-code-peek: 0px;
	}

	.cv-show-code::after {
		display: none;
	}

	.cv-offer-card__action > .cv-show-code > summary.cv-button,
	.cv-offer-card__action > .cv-show-code[open] > summary.cv-button {
		width: 100%;
		margin-right: 0;
	}

	.cv-related-stores .cv-store-card__link {
		min-height: 86px;
		padding: 13px 14px;
	}

	.cv-related-stores .cv-logo--small {
		width: 54px;
		height: 54px;
		flex-basis: 54px;
	}
}

/* M1.6 alignment correction: closed <details> must be exactly the same 54px
   box as both visible layers. Without this, the hidden code box still contributes
   the flex gap, making the details box 62px tall and centering the dashed stub
   four pixels below the CTA. */
.cv-show-code:not([open]) {
	height: 54px;
	min-height: 54px;
	gap: 0;
}

.cv-show-code:not([open]) > .cv-code-box {
	display: none;
}

.cv-show-code:not([open])::after {
	top: 0;
	transform: none;
}

.cv-show-code:not([open]) > summary.cv-button {
	height: 54px;
	min-height: 54px;
}



/* ========================================================================
 * M1.6 deterministic reveal control + Daily Challenge nav shell
 * The reveal is now composed from real DOM children in the <summary> rather
 * than an absolutely positioned pseudo-element. This removes renderer/zoom
 * drift and keeps button + dashed code field on one physical flex/grid row.
 * ===================================================================== */

/* Retire every legacy pseudo/stub layer. */
.cv-show-code::after,
.cv-show-code:not([open])::after {
	display: none !important;
	content: none !important;
}

.cv-show-code,
.cv-show-code:not([open]) {
	width: 100%;
	height: auto;
	min-height: 0;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 8px;
	overflow: visible;
}

.cv-show-code:not([open]) {
	gap: 0;
}

.cv-show-code:not([open]) > .cv-code-box {
	display: none;
}

.cv-show-code__summary {
	--cv-reveal-height: 54px;
	--cv-reveal-peek-track: 92px;
	--cv-reveal-overlap: 10px;
	box-sizing: border-box;
	width: 100%;
	height: var(--cv-reveal-height);
	min-height: var(--cv-reveal-height);
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: minmax(0, 1fr) var(--cv-reveal-peek-track);
	align-items: stretch;
	gap: 0;
	list-style: none;
	cursor: pointer;
	background: transparent;
	border: 0;
	border-radius: 5px;
	line-height: 1;
}

.cv-show-code__summary::-webkit-details-marker {
	display: none;
}

.cv-show-code__button,
.cv-show-code__peek {
	box-sizing: border-box;
	height: var(--cv-reveal-height);
	min-height: var(--cv-reveal-height);
	display: inline-flex;
	align-items: center;
}

.cv-show-code__button {
	position: relative;
	z-index: 2;
	justify-content: center;
	min-width: 0;
	padding: 0 16px;
	border-radius: 5px;
	background: var(--cv-brand-primary);
	color: var(--cv-on-dark);
	font-family: var(--cv-font-heading);
	font-size: 15px;
	font-weight: 680;
	letter-spacing: -0.01em;
	white-space: nowrap;
	box-shadow: 0 3px 8px rgba(8, 46, 106, 0.18);
	transition: background 120ms ease;
}

.cv-show-code__peek {
	position: relative;
	z-index: 1;
	justify-content: flex-end;
	width: auto;
	margin-left: calc(-1 * var(--cv-reveal-overlap));
	padding: 0 14px 0 calc(12px + var(--cv-reveal-overlap));
	border: 2px dashed #4c6fd7;
	border-radius: 5px;
	background: #f8faff;
	color: var(--cv-brand-primary);
	font-family: var(--cv-font-mono);
	font-size: 14px;
	font-weight: 750;
	letter-spacing: 0.035em;
	white-space: nowrap;
}

.cv-show-code__summary:hover .cv-show-code__button {
	background: var(--cv-brand-primary-hover);
}

.cv-show-code__summary:focus-visible {
	outline: 3px solid rgba(76, 111, 215, 0.32);
	outline-offset: 3px;
}

.cv-show-code[open] .cv-show-code__summary {
	grid-template-columns: minmax(0, 1fr);
}

.cv-show-code[open] .cv-show-code__peek {
	display: none;
}

.cv-show-code[open] .cv-show-code__button {
	width: 100%;
}

/* Existing selectors targeted summary.cv-button; neutralize their geometry for
   this new summary structure so no inherited margin/width can reintroduce drift. */
.cv-offer-card__action > .cv-show-code > summary.cv-show-code__summary,
.cv-offer-card__action > .cv-show-code[open] > summary.cv-show-code__summary {
	width: 100%;
	min-width: 0;
	max-width: none;
	margin: 0;
	padding: 0;
}

@media (max-width: 1180px) and (min-width: 768px) {
	.cv-show-code__summary {
		--cv-reveal-peek-track: 82px;
		--cv-reveal-overlap: 8px;
	}

	.cv-show-code__button {
		padding-left: 10px;
		padding-right: 10px;
		font-size: 14px;
	}

	.cv-show-code__peek {
		padding-right: 11px;
		font-size: 13px;
	}
}

@media (max-width: 767px) {
	.cv-show-code__summary {
		grid-template-columns: minmax(0, 1fr);
	}

	.cv-show-code__peek {
		display: none;
	}

	.cv-show-code__button {
		width: 100%;
	}

	/* Four nav entries remain a simple wrapping header shell; no fixed widths. */
	.cv-nav {
		flex-wrap: wrap;
	}
}


/* ========================================================================
 * M1.7 content-entry hardening
 * - all four primary destinations are real anchors with one geometry contract
 * - Saving Guides uses native WordPress Posts
 * - Daily Challenge is a real noindex shell until game content exists
 * ===================================================================== */

.cv-nav {
	align-items: center;
}

.cv-nav .cv-nav__link {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 38px;
	padding: 0 12px;
	line-height: 1;
	white-space: nowrap;
}

.cv-nav .cv-nav__link:hover,
.cv-nav .cv-nav__link:focus-visible {
	background: rgba(255, 255, 255, 0.15);
	text-decoration: none;
}

.cv-editorial-page {
	padding-top: 22px;
	padding-bottom: 24px;
}

.cv-editorial-hero {
	max-width: 780px;
	padding: 28px 0 34px;
}

.cv-editorial-hero__eyebrow,
.cv-store-guides__eyebrow {
	margin: 0 0 8px;
	color: var(--cv-brand-secondary-strong);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.cv-editorial-hero h1 {
	margin: 0;
	font-size: clamp(34px, 5vw, 48px);
	line-height: 1.08;
	letter-spacing: -0.035em;
}

.cv-editorial-hero > p:last-child {
	max-width: 680px;
	margin: 14px 0 0;
	font-size: 17px;
	line-height: 1.6;
	color: var(--cv-text-muted);
}

.cv-editorial-empty,
.cv-challenge-shell {
	max-width: 900px;
	padding: 28px;
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: 10px;
}

.cv-editorial-empty h2,
.cv-challenge-shell h2 {
	margin: 0 0 10px;
	font-size: 24px;
}

.cv-editorial-empty p,
.cv-challenge-shell p {
	max-width: 680px;
	margin: 0;
	color: var(--cv-text-muted);
	line-height: 1.6;
}

.cv-editorial-empty__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 22px;
}

.cv-guide-listing > h2 {
	margin: 0 0 18px;
	font-size: 24px;
}

.cv-guide-grid {
	list-style: none;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
}

.cv-guide-card {
	min-width: 0;
}

.cv-guide-card__link {
	display: block;
	height: 100%;
	padding: 20px;
	background: var(--cv-surface-primary);
	border: 1px solid var(--cv-border-default);
	border-radius: 9px;
	color: var(--cv-text-primary);
	text-decoration: none;
	transition: border-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;
}

.cv-guide-card__link:hover,
.cv-guide-card__link:focus-visible {
	border-color: rgba(8, 46, 106, 0.28);
	box-shadow: 0 7px 20px rgba(15, 23, 42, 0.07);
	transform: translateY(-1px);
	text-decoration: none;
}

.cv-guide-card__date {
	margin: 0 0 9px;
	font-size: 12px;
	color: var(--cv-text-muted);
}

.cv-guide-card__title {
	margin: 0;
	font-size: 20px;
	line-height: 1.3;
	letter-spacing: -0.02em;
}

.cv-guide-card__excerpt {
	margin: 10px 0 0;
	font-size: 14px;
	line-height: 1.55;
	color: var(--cv-text-muted);
}

.cv-guide-card__cta {
	display: inline-block;
	margin-top: 16px;
	color: var(--cv-brand-primary);
	font-size: 13px;
	font-weight: 750;
}

.cv-challenge-shell {
	display: grid;
	grid-template-columns: 74px minmax(0, 1fr);
	gap: 22px;
	align-items: start;
}

.cv-challenge-shell__mark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 64px;
	height: 64px;
	border-radius: 12px;
	background: rgba(77, 177, 52, 0.12);
	color: var(--cv-brand-secondary-strong);
	font-size: 32px;
	font-weight: 800;
}

.cv-challenge-shell .cv-button {
	margin-top: 20px;
}

.cv-store-guides {
	margin-top: 34px;
	padding-top: 28px;
	border-top: 1px solid var(--cv-border-default);
}

.cv-store-guides__heading {
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: 20px;
	margin-bottom: 16px;
}

.cv-store-guides__heading h2 {
	margin: 0;
	font-size: 26px;
}

.cv-store-guides__heading > a {
	flex: 0 0 auto;
	font-size: 13px;
	font-weight: 700;
}

.cv-guide-grid--store {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.cv-guide-grid--store .cv-guide-card__link {
	padding: 17px 18px;
}

.cv-guide-grid--store .cv-guide-card__title {
	font-size: 18px;
}

.cv-guide-article {
	max-width: 820px;
	margin: 24px auto 0;
}

.cv-guide-article__header {
	padding-bottom: 24px;
	border-bottom: 1px solid var(--cv-border-default);
}

.cv-guide-article__header h1 {
	margin: 0;
	font-size: clamp(34px, 5vw, 48px);
	line-height: 1.12;
	letter-spacing: -0.035em;
}

.cv-guide-article__date {
	margin: 12px 0 0;
	color: var(--cv-text-muted);
	font-size: 13px;
}

.cv-guide-article__content {
	padding: 28px 0;
	font-size: 17px;
	line-height: 1.72;
}

.cv-guide-article__content h2,
.cv-guide-article__content h3 {
	margin-top: 1.6em;
	line-height: 1.25;
}

.cv-guide-article__content img {
	max-width: 100%;
	height: auto;
}

.cv-guide-article__footer {
	padding-top: 20px;
	border-top: 1px solid var(--cv-border-default);
	font-weight: 700;
}

@media (max-width: 1180px) and (min-width: 768px) {
	.cv-nav .cv-nav__link {
		min-height: 34px;
		padding: 0 6px;
		font-size: 14px;
	}
}

@media (max-width: 767px) {
	.cv-nav .cv-nav__link {
		min-height: 30px;
		padding: 0 7px;
		font-size: 12px;
	}

	.cv-guide-grid,
	.cv-guide-grid--store {
		grid-template-columns: 1fr;
	}

	.cv-editorial-hero {
		padding: 22px 0 26px;
	}

	.cv-editorial-empty,
	.cv-challenge-shell {
		padding: 20px;
	}

	.cv-challenge-shell {
		grid-template-columns: 1fr;
	}

	.cv-store-guides__heading {
		align-items: flex-start;
		flex-direction: column;
		gap: 8px;
	}
}

/* M1.7 known visual hardening carried forward from the production review. */
.cv-offer-card__merchant-fallback {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--cv-brand-primary);
	font-family: var(--cv-font-heading);
	font-size: 12px;
	font-weight: 800;
	line-height: 1;
}

/* A CODE Offer with no explicit savings field must not reserve an empty 168px
   value column. The title still renders exactly as stored/presented; the grid
   simply collapses so the card does not look broken or imply a missing stat. */
.cv-offer-card--code.cv-offer-card--no-value {
	grid-template-columns: minmax(0, 1fr) 304px;
}

.cv-offer-card--code.cv-offer-card--no-value .cv-offer-card__value {
	display: none;
}

@media (max-width: 1180px) and (min-width: 768px) {
	.cv-offer-card--code.cv-offer-card--no-value {
		grid-template-columns: minmax(0, 1fr) 286px;
	}
}

@media (max-width: 767px) {
	.cv-offer-card--code.cv-offer-card--no-value {
		grid-template-columns: 1fr;
	}
}

/* M1.8 — Store FAQ + editorial interlink layer. */
.cv-store-faq {
	margin-top: 28px;
	padding: 28px 30px;
	background: #fff;
	border: 1px solid var(--cv-border, #d8e0ea);
	border-radius: 10px;
}

.cv-store-faq__heading {
	margin-bottom: 16px;
}

.cv-store-faq__eyebrow {
	margin: 0 0 6px;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--cv-green, #4eaf35);
}

.cv-store-faq__heading h2 {
	margin: 0;
	font-size: clamp(20px, 2vw, 26px);
	line-height: 1.22;
}

.cv-store-faq__item {
	border-top: 1px solid var(--cv-border, #d8e0ea);
}

.cv-store-faq__item:last-child {
	border-bottom: 1px solid var(--cv-border, #d8e0ea);
}

.cv-store-faq__item summary {
	position: relative;
	padding: 15px 34px 15px 0;
	font-weight: 700;
	line-height: 1.4;
	cursor: pointer;
	list-style: none;
}

.cv-store-faq__item summary::-webkit-details-marker {
	display: none;
}

.cv-store-faq__item summary::after {
	content: "+";
	position: absolute;
	right: 5px;
	top: 50%;
	transform: translateY(-50%);
	font-size: 22px;
	font-weight: 500;
}

.cv-store-faq__item[open] summary::after {
	content: "−";
}

.cv-store-faq__answer {
	padding: 0 34px 15px 0;
	color: var(--cv-muted, #536070);
	line-height: 1.65;
}

.cv-store-faq__answer > :first-child {
	margin-top: 0;
}

.cv-store-faq__answer > :last-child {
	margin-bottom: 0;
}

.cv-guide-related-stores {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 14px;
	margin-top: 24px;
	padding: 16px 18px;
	background: #f6f8fb;
	border: 1px solid var(--cv-border, #d8e0ea);
	border-radius: 8px;
}

.cv-guide-related-stores a {
	font-weight: 700;
}

@media (max-width: 767px) {
	.cv-store-faq {
		padding: 22px 18px;
	}
}
