/*
 * Reusable PRP component contracts.
 *
 * New `prp-c-*` classes are opt-in. Existing markup is not rewritten in
 * Phase 1, so these definitions do not alter current visual output.
 */

.prp-c-button {
	display: inline-flex;
	min-height: 44px;
	align-items: center;
	justify-content: center;
	gap: var(--prp-space-2);
	padding: 0.75rem 1.125rem;
	border: var(--prp-border-subtle);
	border-radius: var(--prp-radius-sm);
	background: var(--prp-color-surface);
	color: var(--prp-color-link);
	font-family: var(--prp-font-sans);
	font-size: var(--prp-text-sm);
	font-weight: var(--prp-font-weight-bold);
	line-height: 1;
	text-align: center;
	text-decoration: none;
	transition:
		background-color var(--prp-duration-fast) var(--prp-ease-standard),
		border-color var(--prp-duration-fast) var(--prp-ease-standard),
		color var(--prp-duration-fast) var(--prp-ease-standard),
		transform var(--prp-duration-fast) var(--prp-ease-standard);
}

.prp-c-button:hover {
	transform: translateY(-1px);
}

.prp-c-button--primary {
	border-color: var(--prp-color-navy-800);
	background: var(--prp-color-navy-800);
	color: var(--prp-color-text-inverse);
}

.prp-c-button--secondary {
	border-color: var(--prp-color-pacific-600);
	background: var(--prp-color-pacific-600);
	color: var(--prp-color-text-inverse);
}

.prp-c-button--outline {
	border-color: var(--prp-color-navy-800);
	background: transparent;
	color: var(--prp-color-navy-800);
}

.prp-c-button[disabled],
.prp-c-button[aria-disabled="true"] {
	cursor: not-allowed;
	opacity: 0.55;
	transform: none;
}

.prp-c-link {
	color: var(--prp-color-link);
	font-weight: var(--prp-font-weight-bold);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
}

.prp-c-eyebrow {
	margin: 0 0 var(--prp-space-3);
	color: var(--prp-color-pacific-600);
	font-size: var(--prp-text-xs);
	font-weight: var(--prp-font-weight-black);
	letter-spacing: var(--prp-tracking-label);
	line-height: 1.3;
	text-transform: uppercase;
}

.prp-c-section-heading {
	max-width: var(--prp-measure-copy);
	color: var(--prp-color-heading);
	font-family: var(--prp-font-display);
	font-size: var(--prp-text-3xl);
	letter-spacing: var(--prp-tracking-tight);
	line-height: var(--prp-leading-heading);
}

.prp-c-badge {
	display: inline-flex;
	min-height: 28px;
	align-items: center;
	gap: var(--prp-space-2);
	padding: 0.35rem 0.65rem;
	border: var(--prp-border-subtle);
	border-radius: var(--prp-radius-pill);
	background: var(--prp-color-surface-soft);
	color: var(--prp-color-text-muted);
	font-size: var(--prp-text-xs);
	font-weight: var(--prp-font-weight-bold);
	line-height: 1.2;
}

.prp-c-badge--positive {
	border-color: #cae9dc;
	background: var(--prp-color-positive-surface);
	color: var(--prp-color-positive);
}

.prp-c-badge--warning {
	border-color: #f2dfb6;
	background: var(--prp-color-warning-surface);
	color: var(--prp-color-warning);
}

.prp-c-badge--danger {
	border-color: #f0cbd1;
	background: var(--prp-color-danger-surface);
	color: var(--prp-color-danger);
}

.prp-c-price {
	display: inline-flex;
	align-items: baseline;
	gap: var(--prp-space-2);
	color: var(--prp-color-heading);
	font-variant-numeric: tabular-nums;
	font-weight: var(--prp-font-weight-black);
}

.prp-c-card,
.prp-c-panel {
	border: var(--prp-border-subtle);
	border-radius: var(--prp-radius-md);
	background: var(--prp-color-surface);
	color: var(--prp-color-text);
}

.prp-c-card {
	padding: var(--prp-space-6);
	box-shadow: var(--prp-shadow-sm);
}

.prp-c-panel {
	padding: clamp(var(--prp-space-6), 4vw, var(--prp-space-12));
	border-radius: var(--prp-radius-lg);
}

.prp-c-trust-item {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: var(--prp-space-3);
	align-items: start;
	color: var(--prp-color-text-muted);
}

.prp-c-progress {
	overflow: hidden;
	width: 100%;
	height: 8px;
	border-radius: var(--prp-radius-pill);
	background: var(--prp-color-mist);
}

.prp-c-progress > span {
	display: block;
	width: var(--prp-progress, 0%);
	height: 100%;
	border-radius: inherit;
	background: var(--prp-color-pacific-600);
	transition: width var(--prp-duration-base) var(--prp-ease-standard);
}

.prp-c-field {
	display: grid;
	gap: var(--prp-space-2);
}

.prp-c-field > label {
	color: var(--prp-color-heading);
	font-size: var(--prp-text-sm);
	font-weight: var(--prp-font-weight-bold);
}

.prp-c-field :where(input, select, textarea) {
	width: 100%;
	min-height: 44px;
	padding: 0.75rem 0.875rem;
	border: var(--prp-border-subtle);
	border-radius: var(--prp-radius-sm);
	background: var(--prp-color-surface);
	color: var(--prp-color-text);
}

.prp-c-field [aria-invalid="true"] {
	border-color: var(--prp-color-danger);
}

.prp-c-dialog {
	position: fixed;
	z-index: var(--prp-z-modal);
	inset: 0;
	display: grid;
	place-items: center;
	padding: var(--prp-gutter);
	background: rgba(6, 21, 47, 0.56);
}

.prp-c-dialog__panel {
	overflow: auto;
	width: min(42rem, 100%);
	max-height: calc(100dvh - (2 * var(--prp-gutter)));
	padding: var(--prp-space-8);
	border-radius: var(--prp-radius-lg);
	background: var(--prp-color-surface);
	box-shadow: var(--prp-shadow-lg);
}
