/**
 * CPMS frontend base: design tokens + shared components (§25.1).
 * All tokens scoped to .cpms-root so themes re-skin by overriding tokens —
 * never by fighting selectors (GAP-05, R-07). Logical properties throughout
 * for future RTL/Urdu (NFR-I18N-01). No global resets.
 */

.cpms-root {
	/* Color tokens (light) */
	--cpms-c-text: #1d2327;
	--cpms-c-muted: #646970;
	--cpms-c-accent: #0e7c7b;
	--cpms-c-accent-contrast: #ffffff;
	--cpms-c-surface: #ffffff;
	--cpms-c-surface-alt: #f6f7f7;
	--cpms-c-border: #dcdcde;
	--cpms-c-up: #b32d2e;
	--cpms-c-down: #1a7f37;
	/* Type & spacing */
	--cpms-font: inherit;
	--cpms-size: 1rem;
	--cpms-radius: 8px;
	--cpms-space: 8px;
	--cpms-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

	font-family: var(--cpms-font);
	color: var(--cpms-c-text);
	line-height: 1.55;
}

@media (prefers-color-scheme: dark) {
	.cpms-root {
		--cpms-c-text: #e4e6ea;
		--cpms-c-muted: #9ca3af;
		--cpms-c-surface: #1f2428;
		--cpms-c-surface-alt: #2a3136;
		--cpms-c-border: #3c434a;
		--cpms-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
	}
}

/* --- Badges & indicators (never color alone, §25.2) --- */

.cpms-root .cpms-badge {
	display: inline-block;
	padding: 1px 10px;
	border-radius: 999px;
	font-size: 0.72em;
	font-weight: 600;
	letter-spacing: 0.02em;
	background: var(--cpms-c-surface-alt);
	color: var(--cpms-c-muted);
	border: 1px solid var(--cpms-c-border);
}

.cpms-root .cpms-badge--flag {
	background: var(--cpms-c-accent);
	color: var(--cpms-c-accent-contrast);
	border-color: var(--cpms-c-accent);
}

.cpms-root .cpms-badge--lowest {
	color: var(--cpms-c-down);
}

.cpms-root .cpms-change--up {
	color: var(--cpms-c-up);
}

.cpms-root .cpms-change--down {
	color: var(--cpms-c-down);
}

/* --- Cards & grid --- */

.cpms-grid__cells {
	display: grid;
	grid-template-columns: repeat(var(--cpms-grid-cols, 4), minmax(0, 1fr));
	gap: calc(var(--cpms-space) * 2);
}

.cpms-card {
	background: var(--cpms-c-surface);
	border: 1px solid var(--cpms-c-border);
	border-radius: var(--cpms-radius);
	box-shadow: var(--cpms-shadow);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	height: 100%;
}

.cpms-card__media {
	display: block;
	aspect-ratio: 4 / 3;
	background: var(--cpms-c-surface-alt);
	text-align: center;
}

.cpms-card__img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.cpms-card__body {
	padding: calc(var(--cpms-space) * 1.5);
	display: flex;
	flex-direction: column;
	gap: calc(var(--cpms-space) * 0.75);
	flex: 1;
}

.cpms-card__title {
	font-size: 1em;
	margin: 0;
}

.cpms-card__title a {
	color: inherit;
	text-decoration: none;
}

.cpms-card__title a:hover,
.cpms-card__title a:focus {
	color: var(--cpms-c-accent);
}

.cpms-card__brand,
.cpms-card__updated {
	color: var(--cpms-c-muted);
	font-size: 0.82em;
}

.cpms-card__specs {
	list-style: none;
	margin: 0;
	padding: 0;
	font-size: 0.85em;
	color: var(--cpms-c-muted);
}

.cpms-card__price {
	margin-block-start: auto;
	font-size: 1.05em;
}

/* --- Product page --- */

.cpms-page__header {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	gap: calc(var(--cpms-space) * 3);
	margin-block-end: calc(var(--cpms-space) * 3);
}

.cpms-page__title {
	margin: 0 0 var(--cpms-space);
}

.cpms-page__amount {
	font-size: 1.6em;
	color: var(--cpms-c-accent);
}

.cpms-page__updated,
.cpms-page__brand {
	color: var(--cpms-c-muted);
}

.cpms-page__nav {
	display: flex;
	gap: calc(var(--cpms-space) * 2);
	border-block: 1px solid var(--cpms-c-border);
	padding: var(--cpms-space) 0;
	margin-block-end: calc(var(--cpms-space) * 2);
	position: sticky;
	inset-block-start: 0;
	background: var(--cpms-c-surface);
	z-index: 5;
}

.cpms-page__nav a {
	text-decoration: none;
	color: var(--cpms-c-text);
	font-weight: 600;
	min-height: 44px;
	display: inline-flex;
	align-items: center;
}

.cpms-variant-pill {
	border: 1px solid var(--cpms-c-border);
	background: var(--cpms-c-surface);
	color: var(--cpms-c-text);
	border-radius: 999px;
	padding: 6px 16px;
	margin: 0 6px 6px 0;
	cursor: pointer;
	min-height: 44px;
}

.cpms-variant-pill.is-active {
	border-color: var(--cpms-c-accent);
	background: var(--cpms-c-accent);
	color: var(--cpms-c-accent-contrast);
}

/* Pros / cons */

.cpms-proscons {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: calc(var(--cpms-space) * 2);
	margin-block-end: calc(var(--cpms-space) * 3);
}

.cpms-proscons__col {
	background: var(--cpms-c-surface-alt);
	border-radius: var(--cpms-radius);
	padding: calc(var(--cpms-space) * 2);
}

.cpms-proscons__col--pros h3 {
	color: var(--cpms-c-down);
}

.cpms-proscons__col--cons h3 {
	color: var(--cpms-c-up);
}

/* --- Breadcrumbs (§18.3) --- */

.cpms-breadcrumbs__list {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
	margin: 0 0 calc(var(--cpms-space) * 2);
	padding: 0;
	font-size: 0.85em;
	color: var(--cpms-c-muted);
}

.cpms-breadcrumbs__item:not(:last-child)::after {
	content: "›";
	margin-inline-start: 4px;
}

.cpms-breadcrumbs__item a {
	color: inherit;
	text-decoration: none;
}

.cpms-breadcrumbs__item a:hover,
.cpms-breadcrumbs__item a:focus {
	color: var(--cpms-c-accent);
}

/* --- Content blocks (Ch. 12) --- */

.cpms-block {
	margin-block-end: calc(var(--cpms-space) * 3);
}

.cpms-block__heading {
	margin: 0 0 var(--cpms-space);
}

.cpms-highlights__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: var(--cpms-space);
}

.cpms-highlights__item {
	background: var(--cpms-c-surface-alt);
	border-radius: var(--cpms-radius);
	padding: calc(var(--cpms-space) * 1.5);
}

.cpms-faq__item {
	border-block-end: 1px solid var(--cpms-c-border);
}

.cpms-faq__q {
	padding: calc(var(--cpms-space) * 1.5) 0;
	font-weight: 600;
	cursor: pointer;
	min-height: 44px;
}

.cpms-faq__a {
	padding-block-end: calc(var(--cpms-space) * 1.5);
	color: var(--cpms-c-muted);
}

.cpms-cta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cpms-space);
}

.cpms-cta__button {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding-inline: calc(var(--cpms-space) * 3);
	background: var(--cpms-c-accent);
	color: var(--cpms-c-accent-contrast);
	border-radius: var(--cpms-radius);
	text-decoration: none;
	font-weight: 600;
}

.cpms-callout {
	border-inline-start: 4px solid var(--cpms-c-accent);
	background: var(--cpms-c-surface-alt);
	border-radius: var(--cpms-radius);
	padding: calc(var(--cpms-space) * 2);
}

.cpms-callout--warning {
	border-inline-start-color: var(--cpms-c-up);
}

/* --- Guide / brand / category cards (§17.2, §18.4) --- */

.cpms-guides__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: calc(var(--cpms-space) * 2);
}

.cpms-guides__item a,
.cpms-brand-card,
.cpms-category-card {
	display: flex;
	flex-direction: column;
	gap: 4px;
	background: var(--cpms-c-surface);
	border: 1px solid var(--cpms-c-border);
	border-radius: var(--cpms-radius);
	padding: calc(var(--cpms-space) * 2);
	text-decoration: none;
	color: var(--cpms-c-text);
	height: 100%;
	min-height: 44px;
}

.cpms-guides__item a:hover,
.cpms-brand-card:hover,
.cpms-category-card:hover {
	border-color: var(--cpms-c-accent);
}

.cpms-guides__desc,
.cpms-guides__count,
.cpms-brand-card__count,
.cpms-category-card__count {
	color: var(--cpms-c-muted);
	font-size: 0.85em;
}

/* Focus visibility (WCAG 2.1 AA) */

.cpms-root a:focus-visible,
.cpms-root button:focus-visible {
	outline: 2px solid var(--cpms-c-accent);
	outline-offset: 2px;
}

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

/* --- Mobile (mobile-first audience, §25.1) --- */

@media (max-width: 782px) {
	.cpms-grid__cells {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cpms-page__header,
	.cpms-proscons {
		grid-template-columns: 1fr;
	}
}
