/**
 * NA Subscriptions — front-end styles.
 *
 * Deliberately inherits the theme's font stack rather than importing one.
 * This block sits inside an existing product page and should read as part
 * of it, not as a plugin bolted on top.
 *
 * The only imported colour is the amber accent, pulled from the Golden
 * Spice label artwork, used solely to mark savings. Everything else is
 * neutral so the accent means something.
 */

:root {
	--na-ink: #1a1a1a;
	--na-ink-soft: #6b6b6b;
	--na-line: #e0ded9;
	--na-line-active: #1a1a1a;
	--na-surface: #ffffff;
	--na-surface-alt: #faf9f7;
	--na-accent: #c08a2e;
	--na-accent-soft: #f6efe1;
	--na-danger: #b32d2e;
	--na-radius: 8px;
}

/* ---------- Add-to-cart form layout ----------
 *
 * Most themes float .quantity and .single_add_to_cart_button. Our options
 * block is a block-level element, so those floats ride up alongside it and
 * land to the right. Forcing the form into a flex column puts everything in
 * one vertical stack.
 *
 * Scoped with :has(.na-subs-options) so products without a subscription
 * option keep whatever layout the theme intended.
 *
 * DOM order is already correct — WooCommerce fires
 * woocommerce_before_add_to_cart_button ahead of the quantity input — so
 * options, then quantity, then button needs no reordering.
 */

.single-product div.product form.cart:has(.na-subs-options),
.single-product div.product .woocommerce-variation-add-to-cart:has(.na-subs-options) {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 14px;
	max-width: 440px;
}

/* Theme clearfix pseudo-elements become phantom flex items and open up
 * mystery gaps. Neutralise them inside our stack only. */
.single-product div.product form.cart:has(.na-subs-options)::before,
.single-product div.product form.cart:has(.na-subs-options)::after,
.single-product div.product .woocommerce-variation-add-to-cart:has(.na-subs-options)::before,
.single-product div.product .woocommerce-variation-add-to-cart:has(.na-subs-options)::after {
	content: none;
	display: none;
}

/* Un-float the quantity box. */
.single-product div.product form.cart:has(.na-subs-options) .quantity,
.single-product div.product .woocommerce-variation-add-to-cart:has(.na-subs-options) .quantity {
	float: none;
	display: flex;
	align-items: center;
	margin: 0;
}

.single-product div.product form.cart:has(.na-subs-options) .quantity .qty,
.single-product div.product .woocommerce-variation-add-to-cart:has(.na-subs-options) .quantity .qty {
	width: 92px;
	min-height: 52px;
	padding: 0 8px;
	font-size: 16px; /* 16px+ prevents iOS zooming the page on focus. */
	text-align: center;
	border: 1px solid var(--na-line);
	border-radius: 6px;
}

/* Primary CTA fills the column. */
.single-product div.product form.cart:has(.na-subs-options) .single_add_to_cart_button,
.single-product div.product .woocommerce-variation-add-to-cart:has(.na-subs-options) .single_add_to_cart_button {
	float: none;
	width: 100%;
	margin: 0;
	min-height: 54px;
	line-height: 1.2;
}

/* Express checkout wrappers must not stretch oddly inside the column. */
.single-product div.product form.cart:has(.na-subs-options) #wc-stripe-payment-request-wrapper,
.single-product div.product .woocommerce-variation-add-to-cart:has(.na-subs-options) #wc-stripe-payment-request-wrapper {
	width: 100%;
	margin: 0;
	padding-top: 0 !important;
}

.single-product div.product form.cart:has(.na-subs-options) #wc-stripe-payment-request-button-separator,
.single-product div.product .woocommerce-variation-add-to-cart:has(.na-subs-options) #wc-stripe-payment-request-button-separator {
	margin: 0 !important;
	font-size: 12px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--na-ink-soft);
}

/* ---------- Purchase options ---------- */

.na-subs-options {
	margin: 0;
	width: 100%;
	max-width: 100%;
}

.na-subs-prompt {
	margin: 0 0 10px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--na-ink-soft);
}

.na-subs-option {
	display: block;
	position: relative;
	margin: 0 0 10px;
	padding: 14px 16px;
	background: var(--na-surface);
	border: 1px solid var(--na-line);
	border-radius: var(--na-radius);
	cursor: pointer;
	transition: border-color 0.15s ease, background 0.15s ease;
}

.na-subs-option:hover {
	border-color: #bdb9b1;
}

.na-subs-option input[type="radio"] {
	position: absolute;
	top: 18px;
	left: 16px;
	margin: 0;
	width: 16px;
	height: 16px;
	accent-color: var(--na-ink);
}

.na-subs-option__body {
	display: block;
	padding-left: 28px;
}

.na-subs-option__row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
}

.na-subs-option__label {
	font-size: 15px;
	font-weight: 600;
	color: var(--na-ink);
	line-height: 1.35;
}

.na-subs-option__price {
	flex-shrink: 0;
	font-size: 15px;
	font-weight: 600;
	color: var(--na-ink);
	white-space: nowrap;
}

.na-subs-option__price del {
	margin-right: 6px;
	font-weight: 400;
	color: var(--na-ink-soft);
	opacity: 1;
}

.na-subs-option__price ins {
	text-decoration: none;
	background: transparent;
	color: var(--na-ink);
}

/* Selected state — the border does the work, no colour wash.
 *
 * Both :has() and an explicit .is-selected class (set by JS) are honoured.
 * The detail panel's visibility is functional, not decorative, so it must
 * not depend on a single CSS feature resolving. */
.na-subs-option:has(input:checked),
.na-subs-option.is-selected {
	border-color: var(--na-line-active);
	border-width: 1px;
	box-shadow: inset 0 0 0 1px var(--na-line-active);
	background: var(--na-surface-alt);
}

.na-subs-option input:focus-visible {
	outline: 2px solid var(--na-ink);
	outline-offset: 3px;
}

/* Savings badge — the one place colour is spent. */
.na-subs-badge {
	display: inline-block;
	margin-left: 8px;
	padding: 2px 7px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--na-accent);
	background: var(--na-accent-soft);
	border-radius: 3px;
	vertical-align: 1px;
}

/* ---------- Subscribe detail panel ---------- */

.na-subs-option__detail {
	display: none;
	margin-top: 14px;
	padding-top: 14px;
	border-top: 1px solid var(--na-line);
}

.na-subs-option:has(input:checked) .na-subs-option__detail,
.na-subs-option.is-selected .na-subs-option__detail {
	display: block;
}

.na-subs-field {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 12px;
}

.na-subs-field__label {
	font-size: 13px;
	font-weight: 600;
	color: var(--na-ink);
	white-space: nowrap;
	margin: 0;
}

.na-subs-select {
	flex: 1;
	min-height: 42px;
	padding: 0 10px;
	font-size: 15px;
	color: var(--na-ink);
	background: var(--na-surface);
	border: 1px solid var(--na-line);
	border-radius: 6px;
	max-width: 100%;
}

.na-subs-select:focus-visible {
	outline: 2px solid var(--na-ink);
	outline-offset: 1px;
}

.na-subs-perks {
	margin: 0;
	padding: 0;
	list-style: none;
}

.na-subs-perks li {
	position: relative;
	margin: 0 0 5px;
	padding-left: 18px;
	font-size: 13px;
	line-height: 1.45;
	color: var(--na-ink-soft);
}

.na-subs-perks li::before {
	content: "";
	position: absolute;
	top: 6px;
	left: 2px;
	width: 5px;
	height: 8px;
	border-right: 1.5px solid var(--na-accent);
	border-bottom: 1.5px solid var(--na-accent);
	transform: rotate(45deg);
}

/* ---------- Express checkout notice ---------- */

.na-subs-notice {
	margin: 10px 0 0;
	padding: 9px 12px;
	font-size: 13px;
	line-height: 1.45;
	color: var(--na-ink-soft);
	background: var(--na-surface-alt);
	border-left: 2px solid var(--na-line-active);
	border-radius: 0 4px 4px 0;
}

.na-subs-notice[hidden] {
	display: none;
}

/* ---------- Cart flag ---------- */

.na-subs-cart-flag {
	display: inline-block;
	margin-left: 6px;
	padding: 1px 6px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--na-accent);
	background: var(--na-accent-soft);
	border-radius: 3px;
}

/* ---------- My Account table ---------- */

.na-subs-table {
	width: 100%;
	margin-bottom: 20px;
	border-collapse: collapse;
}

.na-subs-table th {
	padding: 10px 12px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--na-ink-soft);
	text-align: left;
	border-bottom: 1px solid var(--na-line);
}

.na-subs-table td {
	padding: 14px 12px;
	font-size: 14px;
	color: var(--na-ink);
	border-bottom: 1px solid var(--na-line);
	vertical-align: middle;
}

.na-subs-qty {
	color: var(--na-ink-soft);
	font-size: 13px;
}

.na-subs-status {
	display: inline-block;
	padding: 3px 9px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	border-radius: 3px;
	background: #efeee9;
	color: var(--na-ink-soft);
}

.na-subs-status--active {
	background: #e6f0e8;
	color: #2e6b3f;
}

.na-subs-status--on-hold {
	background: var(--na-accent-soft);
	color: var(--na-accent);
}

.na-subs-status--cancelled,
.na-subs-status--expired {
	background: #f2eaea;
	color: var(--na-danger);
}

.na-subs-actions {
	white-space: nowrap;
	text-align: right;
}

.na-subs-link {
	display: inline-block;
	margin-left: 12px;
	font-size: 13px;
	color: var(--na-ink);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.na-subs-link:first-child {
	margin-left: 0;
}

.na-subs-link--danger {
	color: var(--na-danger);
}

.na-subs-empty {
	padding: 28px;
	text-align: center;
	background: var(--na-surface-alt);
	border-radius: var(--na-radius);
}

/* ---------- Mobile ---------- */

@media (max-width: 768px) {
	.single-product div.product form.cart:has(.na-subs-options),
	.single-product div.product .woocommerce-variation-add-to-cart:has(.na-subs-options) {
		max-width: 100%;
	}

	.na-subs-options {
		max-width: 100%;
	}

	/* Let the row wrap rather than stack — keeping the price on the same
	 * line as its label is what makes the two options comparable at a
	 * glance. It only drops below when the badge genuinely runs out of room. */
	.na-subs-option__row {
		flex-wrap: wrap;
		row-gap: 2px;
	}

	.na-subs-option__label {
		flex: 1 1 auto;
		min-width: 0;
	}

	.na-subs-field {
		flex-direction: column;
		align-items: stretch;
		gap: 6px;
	}

	.na-subs-field__label {
		white-space: normal;
	}

	.na-subs-select {
		width: 100%;
		min-height: 46px;
	}

	.na-subs-table thead {
		display: none;
	}

	.na-subs-table,
	.na-subs-table tbody,
	.na-subs-table tr,
	.na-subs-table td {
		display: block;
		width: 100%;
	}

	.na-subs-table tr {
		margin-bottom: 14px;
		padding: 6px 0;
		border: 1px solid var(--na-line);
		border-radius: var(--na-radius);
	}

	.na-subs-table td {
		display: flex;
		justify-content: space-between;
		gap: 12px;
		border-bottom: none;
		padding: 8px 14px;
	}

	.na-subs-table td::before {
		content: attr(data-title);
		font-size: 12px;
		font-weight: 700;
		text-transform: uppercase;
		color: var(--na-ink-soft);
	}

	.na-subs-actions {
		text-align: left;
		flex-wrap: wrap;
	}

	.na-subs-link {
		margin: 4px 12px 0 0;
	}
}

/* Narrow phones — tighten padding so the cards don't eat the viewport. */
@media (max-width: 400px) {
	.na-subs-option {
		padding: 12px 12px;
	}

	.na-subs-option input[type="radio"] {
		left: 12px;
		top: 16px;
	}

	.na-subs-option__body {
		padding-left: 24px;
	}

	.na-subs-option__label,
	.na-subs-option__price {
		font-size: 14px;
	}
}

/* ---------- Reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
	.na-subs-option {
		transition: none;
	}
}

/* ---------- Account: subscription cards ---------- */

.na-subs-card {
	margin: 0 0 20px;
	padding: 18px;
	background: var(--na-surface);
	border: 1px solid var(--na-line);
	border-radius: var(--na-radius);
}

.na-subs-card__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
	padding-bottom: 14px;
	border-bottom: 1px solid var(--na-line);
}

.na-subs-card__id {
	margin-right: 8px;
	font-size: 13px;
	font-weight: 700;
	color: var(--na-ink-soft);
}

.na-subs-card__next {
	font-size: 13px;
	color: var(--na-ink-soft);
}

.na-subs-card__next strong {
	margin-left: 6px;
	color: var(--na-ink);
}

.na-subs-alert {
	margin: 14px 0 0;
	padding: 10px 12px;
	font-size: 13px;
	line-height: 1.5;
	color: #8a5a00;
	background: var(--na-accent-soft);
	border-left: 3px solid var(--na-accent);
	border-radius: 0 4px 4px 0;
}

.na-subs-items {
	margin: 0;
	padding: 0;
	list-style: none;
}

.na-subs-item {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 14px 0;
	border-bottom: 1px solid var(--na-line);
}

.na-subs-item__thumb {
	flex: 0 0 56px;
	width: 56px;
}

.na-subs-item__thumb img {
	width: 100%;
	height: auto;
	border-radius: 4px;
	display: block;
}

.na-subs-item__info {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.na-subs-item__name {
	font-size: 14px;
	font-weight: 600;
	color: var(--na-ink);
}

.na-subs-item__price {
	font-size: 13px;
	color: var(--na-ink-soft);
}

.na-subs-item__qty {
	flex: 0 0 auto;
	text-align: right;
}

.na-subs-qty-form {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0;
}

.na-subs-qty-form input[type="number"] {
	width: 68px;
	min-height: 40px;
	padding: 0 6px;
	font-size: 16px;
	text-align: center;
	border: 1px solid var(--na-line);
	border-radius: 5px;
}

.na-subs-mini {
	padding: 8px 12px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #fff;
	background: var(--na-ink);
	border: 0;
	border-radius: 5px;
	cursor: pointer;
}

.na-subs-mini:hover {
	background: #000;
}

.na-subs-hint {
	display: block;
	margin-top: 4px;
	font-size: 11px;
	color: var(--na-ink-soft);
}

.na-subs-totals {
	margin: 14px 0 0;
	padding: 12px 0 0;
	font-size: 14px;
}

.na-subs-totals > div {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	padding: 4px 0;
	color: var(--na-ink-soft);
}

.na-subs-totals__grand {
	margin-top: 6px;
	padding-top: 10px !important;
	border-top: 2px solid var(--na-ink);
	font-weight: 700;
	color: var(--na-ink) !important;
}

.na-subs-controls {
	margin: 14px 0 0;
	padding: 14px 0 0;
	border-top: 1px solid var(--na-line);
}

.na-subs-freq-form {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	margin: 0;
}

.na-subs-freq-form label {
	font-size: 13px;
	font-weight: 600;
	color: var(--na-ink);
	margin: 0;
}

.na-subs-freq-form select {
	min-height: 42px;
	padding: 0 10px;
	font-size: 15px;
	border: 1px solid var(--na-line);
	border-radius: 6px;
	background: var(--na-surface);
}

.na-subs-card .na-subs-actions {
	margin: 14px 0 0;
	padding: 14px 0 0;
	border-top: 1px solid var(--na-line);
	text-align: left;
	white-space: normal;
}

.na-subs-card .na-subs-link:first-child {
	margin-left: 0;
}

@media (max-width: 600px) {
	.na-subs-item {
		flex-wrap: wrap;
	}

	.na-subs-item__qty {
		flex: 1 1 100%;
		text-align: left;
		padding-left: 70px;
	}

	.na-subs-qty-form {
		justify-content: flex-start;
	}

	.na-subs-card .na-subs-link {
		display: inline-block;
		margin: 0 14px 8px 0;
	}
}
