/**
 * Vexillum Gold Reserve Program - Checkout & Product Page Styles
 *
 * Scope: term selector (product page), notices, cart/checkout line item
 * lock countdown, and the price-lock expiry takeover UI (checkout page).
 * Enqueued only on is_product() / is_checkout() by VGP_Checkout::enqueue_assets().
 *
 * All selectors are namespaced with "vgp-" to avoid colliding with theme
 * or other plugin styles.
 */

:root {
	--vgp-gold: #b8860b;
	--vgp-gold-dark: #8a640a;
	--vgp-gold-light: #f7ecd1;
	--vgp-ink: #1f2937;
	--vgp-muted: #6b7280;
	--vgp-border: #e2ddd0;
	--vgp-success: #2e7d32;
	--vgp-success-bg: #edf7ed;
	--vgp-error: #b3261e;
	--vgp-error-bg: #fdecea;
	--vgp-warning: #9a6700;
	--vgp-warning-bg: #fff6e0;
	--vgp-radius: 8px;
	--vgp-shadow: 0 1px 3px rgba(31, 41, 55, 0.08);
}

/* -----------------------------------------------------------------------
 * Notices (sold out / paused / unavailable / error)
 * ---------------------------------------------------------------------*/

.vgp-notice {
	margin: 0 0 1.25em;
	padding: 0.85em 1em;
	border-radius: var(--vgp-radius);
	border: 1px solid transparent;
	font-size: 0.95em;
	line-height: 1.5;
}

.vgp-notice--sold-out,
.vgp-notice--unavailable {
	background: var(--vgp-warning-bg);
	border-color: #f1dfa8;
	color: var(--vgp-warning);
}

.vgp-notice--paused {
	background: #eef1f5;
	border-color: #d7dde5;
	color: var(--vgp-muted);
}

.vgp-notice--error {
	background: var(--vgp-error-bg);
	border-color: #f3c8c5;
	color: var(--vgp-error);
}

/* -----------------------------------------------------------------------
 * Term selector (product page)
 * ---------------------------------------------------------------------*/

.vgp-term-selector {
	margin: 0 0 1.5em;
	padding: 1.1em 1.2em 1.3em;
	border: 1px solid var(--vgp-border);
	border-radius: var(--vgp-radius);
	background: #fffdf8;
}

.vgp-term-selector__heading {
	margin: 0 0 0.75em;
	font-weight: 600;
	color: var(--vgp-ink);
}

.vgp-term-option {
	display: flex;
	align-items: flex-start;
	gap: 0.65em;
	padding: 0.85em 0.9em;
	margin-bottom: 0.6em;
	border: 1.5px solid var(--vgp-border);
	border-radius: var(--vgp-radius);
	background: #fff;
	cursor: pointer;
	transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
}

.vgp-term-option:last-child {
	margin-bottom: 0;
}

.vgp-term-option:hover {
	border-color: var(--vgp-gold);
}

.vgp-term-option:has(input:checked) {
	border-color: var(--vgp-gold);
	background: var(--vgp-gold-light);
	box-shadow: var(--vgp-shadow);
}

/* Fallback for browsers without :has() support - JS toggles this class
   on the parent label when its radio is selected. See vgp-checkout.js. */
.vgp-term-option.is-selected {
	border-color: var(--vgp-gold);
	background: var(--vgp-gold-light);
	box-shadow: var(--vgp-shadow);
}

.vgp-term-option input[type="radio"] {
	margin-top: 0.2em;
	accent-color: var(--vgp-gold);
	flex-shrink: 0;
}

.vgp-term-option__label {
	display: block;
	font-weight: 600;
	color: var(--vgp-ink);
	margin-bottom: 0.2em;
}

.vgp-term-option__details {
	display: block;
	font-size: 0.88em;
	color: var(--vgp-muted);
	line-height: 1.5;
}

.vgp-term-option input:focus-visible {
	outline: 2px solid var(--vgp-gold-dark);
	outline-offset: 2px;
}

/* -----------------------------------------------------------------------
 * Cart / checkout line item lock display
 * ---------------------------------------------------------------------*/

.vgp-lock-countdown {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	font-weight: 600;
	color: var(--vgp-success);
}

.vgp-lock-countdown::before {
	content: "";
	width: 0.5em;
	height: 0.5em;
	border-radius: 50%;
	background: var(--vgp-success);
	flex-shrink: 0;
}

.vgp-lock-countdown.is-expiring {
	color: var(--vgp-warning);
}

.vgp-lock-countdown.is-expiring::before {
	background: var(--vgp-warning);
}

.vgp-lock-countdown.is-expired {
	color: var(--vgp-error);
}

.vgp-lock-countdown.is-expired::before {
	background: var(--vgp-error);
}

/* -----------------------------------------------------------------------
 * Persistent countdown bar (injected by JS on product + checkout pages)
 * ---------------------------------------------------------------------*/

.vgp-countdown-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1em;
	flex-wrap: wrap;
	margin: 0 0 1.25em;
	padding: 0.75em 1em;
	border-radius: var(--vgp-radius);
	background: var(--vgp-gold-light);
	border: 1px solid #ecd8a0;
	font-size: 0.95em;
}

.vgp-countdown-bar__label {
	color: var(--vgp-ink);
	font-weight: 500;
}

.vgp-countdown-bar__time {
	font-variant-numeric: tabular-nums;
	font-weight: 700;
	color: var(--vgp-gold-dark);
	font-size: 1.05em;
	letter-spacing: 0.02em;
}

.vgp-countdown-bar.is-expiring {
	background: var(--vgp-warning-bg);
	border-color: #f1dfa8;
}

.vgp-countdown-bar.is-expiring .vgp-countdown-bar__time {
	color: var(--vgp-warning);
}

/* -----------------------------------------------------------------------
 * Price-lock expired takeover (checkout page)
 * ---------------------------------------------------------------------*/

.vgp-expired-overlay {
	display: flex;
	flex-direction: column;
	gap: 0.6em;
	margin: 0 0 1.5em;
	padding: 1.1em 1.2em;
	border-radius: var(--vgp-radius);
	background: var(--vgp-error-bg);
	border: 1px solid #f3c8c5;
}

.vgp-expired-overlay__title {
	margin: 0;
	font-weight: 700;
	color: var(--vgp-error);
	font-size: 1.05em;
}

.vgp-expired-overlay__body {
	margin: 0;
	color: var(--vgp-ink);
	font-size: 0.92em;
	line-height: 1.5;
}

.vgp-expired-overlay__new-price {
	margin: 0.2em 0 0;
	font-size: 0.95em;
	color: var(--vgp-ink);
}

.vgp-expired-overlay__new-price strong {
	color: var(--vgp-gold-dark);
}

.vgp-expired-overlay__actions {
	margin-top: 0.4em;
}

.vgp-btn-accept-price {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	padding: 0.65em 1.2em;
	border: none;
	border-radius: var(--vgp-radius);
	background: var(--vgp-gold);
	color: #fff;
	font-weight: 600;
	font-size: 0.95em;
	cursor: pointer;
	transition: background-color 0.15s ease;
}

.vgp-btn-accept-price:hover:not(:disabled) {
	background: var(--vgp-gold-dark);
}

.vgp-btn-accept-price:disabled {
	opacity: 0.65;
	cursor: not-allowed;
}

.vgp-expired-overlay__error {
	margin: 0.3em 0 0;
	color: var(--vgp-error);
	font-size: 0.88em;
}

/* When the lock has expired, block interaction with the actual place-order
   button/payment area until the customer accepts the refreshed price. */
.vgp-checkout-locked #place_order,
.vgp-checkout-locked .wc-proceed-to-checkout .checkout-button {
	pointer-events: none;
	opacity: 0.5;
}

/* -----------------------------------------------------------------------
 * Small screens
 * ---------------------------------------------------------------------*/

@media (max-width: 480px) {
	.vgp-countdown-bar {
		flex-direction: column;
		align-items: flex-start;
	}

	.vgp-term-option {
		align-items: center;
	}
}
