/* Typography and editorial rhythm */
h1,
h2,
h3,
h4,
h5,
h6 {
	margin: 0 0 var(--rk-space-5);
	color: var(--rk-color-ink);
	font-family: var(--rk-font-display);
	font-weight: 400;
	letter-spacing: var(--rk-tracking-display);
	line-height: var(--rk-leading-heading);
}

h1 {
	font-size: var(--rk-text-2xl);
}

h2 {
	font-size: var(--rk-text-xl);
}

h3 {
	font-size: var(--rk-text-lg);
}

p {
	margin: 0 0 var(--rk-space-5);
}

.rk-prose {
	max-width: var(--rk-content-reading);
}

.rk-prose > * + * {
	margin-top: var(--rk-space-5);
}

.rk-prose :where(h2, h3, h4) {
	margin-top: var(--rk-space-7);
}

.rk-prose :where(ul, ol) {
	padding-inline-start: 1.25rem;
}

.rk-prose blockquote {
	margin-block: var(--rk-space-7);
	padding-left: var(--rk-space-5);
	border-left: 2px solid var(--rk-color-brand);
	font-size: var(--rk-text-lg);
}

.rk-eyebrow {
	display: flex;
	flex-wrap: wrap;
	gap: var(--rk-space-2);
	margin: 0 0 var(--rk-space-3);
	color: var(--rk-sand-700);
	font-family: var(--rk-font-ui);
	font-size: var(--rk-text-xs);
	font-weight: 600;
	letter-spacing: var(--rk-tracking-ui);
	line-height: 1.4;
	text-transform: uppercase;
}

.rk-page-header {
	display: grid;
	align-content: end;
	min-height: clamp(10rem, 24vw, 22rem);
	max-width: var(--rk-content-narrow);
	padding-block: var(--rk-space-8) var(--rk-space-7);
}

.rk-page-header h1 {
	max-width: 18ch;
	margin: 0;
}

/* Buttons and links */
.rk-button,
.button,
button.button,
input[type="submit"],
.wp-element-button {
	display: inline-flex;
	justify-content: center;
	align-items: center;
	min-height: 2.875rem;
	padding: 0.75rem 1.75rem;
	border: 1px solid var(--rk-color-ink);
	border-radius: var(--rk-radius-none);
	background: transparent;
	color: var(--rk-color-ink);
	font-family: var(--rk-font-ui);
	font-size: var(--rk-text-xs);
	font-weight: 600;
	letter-spacing: var(--rk-tracking-ui);
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color var(--rk-duration-fast) var(--rk-ease-out), color var(--rk-duration-fast) var(--rk-ease-out), border-color var(--rk-duration-fast) var(--rk-ease-out), transform var(--rk-duration-fast) var(--rk-ease-out);
}

.rk-button:hover,
.button:hover,
button.button:hover,
input[type="submit"]:hover,
.wp-element-button:hover,
.rk-button--dark {
	border-color: var(--rk-color-ink);
	background: var(--rk-color-ink);
	color: var(--rk-color-paper);
}

.rk-button--dark:hover {
	border-color: var(--rk-color-brand);
	background: var(--rk-color-brand);
	color: var(--rk-color-ink);
}

.rk-button:active,
.button:active,
button.button:active,
input[type="submit"]:active {
	transform: translateY(1px);
}

:where(.rk-button, .button, button.button, input[type="submit"]):disabled,
:where(.rk-button, .button, button.button, input[type="submit"]).disabled {
	cursor: not-allowed;
	opacity: 0.45;
}

.rk-text-link {
	position: relative;
	display: inline-flex;
	align-items: center;
	min-height: 2.75rem;
	padding-right: 3rem;
	font-family: var(--rk-font-ui);
	font-size: var(--rk-text-xs);
	font-weight: 600;
	letter-spacing: var(--rk-tracking-ui);
	text-decoration: none;
	text-transform: uppercase;
}

.rk-text-link::after {
	position: absolute;
	right: 0;
	width: 2.25rem;
	height: 1px;
	background: currentColor;
	content: "";
	transform-origin: left;
	transition: transform var(--rk-duration-base) var(--rk-ease-out);
}

.rk-text-link:hover::after {
	transform: scaleX(0.55);
}

.rk-text-link--light {
	color: var(--rk-color-paper);
}

/* Forms */
label,
.form-row label {
	display: block;
	margin-bottom: var(--rk-space-2);
	color: var(--rk-color-ink);
	font-family: var(--rk-font-ui);
	font-size: var(--rk-text-xs);
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

:where(input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]), select, textarea) {
	width: 100%;
	min-height: 3rem;
	padding: 0.75rem 0;
	border: 0;
	border-bottom: 1px solid var(--rk-color-border-strong);
	border-radius: 0;
	background: transparent;
	color: var(--rk-color-text);
	font-family: var(--rk-font-body);
	transition: border-color var(--rk-duration-fast) var(--rk-ease-out), background-color var(--rk-duration-fast) var(--rk-ease-out);
}

textarea {
	min-height: 8rem;
	resize: vertical;
}

select {
	padding-right: 2rem;
	background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
	background-position: calc(100% - 0.75rem) 50%, calc(100% - 0.45rem) 50%;
	background-repeat: no-repeat;
	background-size: 0.35rem 0.35rem, 0.35rem 0.35rem;
	appearance: none;
}

:where(input, select, textarea)::placeholder {
	color: var(--rk-color-muted);
	opacity: 1;
}

:where(input:not([type="checkbox"]):not([type="radio"]), select, textarea):focus {
	border-color: var(--rk-color-brand);
	background: var(--rk-color-surface);
	outline: 0;
}

:where(input, select, textarea)[aria-invalid="true"],
.woocommerce-invalid :where(input, select, textarea) {
	border-color: var(--rk-color-error);
	background: var(--rk-color-error-bg);
}

:where(input[type="checkbox"], input[type="radio"]) {
	width: 1.125rem;
	height: 1.125rem;
	margin: 0 var(--rk-space-2) 0 0;
	border: 1px solid var(--rk-color-ink);
	accent-color: var(--rk-color-ink);
}

.rk-field-error {
	margin-top: var(--rk-space-2);
	color: var(--rk-color-error);
	font-size: var(--rk-text-sm);
}

.rk-search-form {
	padding-top: var(--rk-space-7);
}

.rk-search-form__row {
	display: grid;
	gap: var(--rk-space-4);
}

/* Notices and states */
.rk-notice {
	display: grid;
	grid-template-columns: 0.25rem 1fr;
	gap: var(--rk-space-4);
	margin: 0 0 var(--rk-space-5);
	padding: var(--rk-space-4) var(--rk-space-5);
	border: 0;
	background: var(--rk-color-info-bg);
	color: var(--rk-color-info);
	list-style: none;
}

.rk-notice::before {
	position: static;
	display: block;
	width: 0.25rem;
	height: 100%;
	background: currentColor;
	content: "";
}

.rk-notice > * {
	grid-column: 2;
}

.rk-notice--success {
	background: var(--rk-color-success-bg);
	color: var(--rk-color-success);
}

.rk-notice--error {
	background: var(--rk-color-error-bg);
	color: var(--rk-color-error);
}

.rk-notice--warning {
	background: var(--rk-color-warning-bg);
	color: var(--rk-color-warning);
}

.rk-notice__title {
	font-family: var(--rk-font-ui);
	letter-spacing: 0.04em;
}

.rk-notice__content p:last-child {
	margin-bottom: 0;
}

/*
 * WooCommerce notices
 *
 * WooCommerce outputs the message copy as a text node beside an optional
 * action link. Keep those three parts (status, copy, action) in predictable
 * columns instead of relying on WooCommerce's floated button and icon.
 */
body.woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error),
body.woocommerce-page :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) {
	position: relative;
	display: grid;
	grid-template-columns: 0.1875rem minmax(0, 1fr) auto;
	grid-auto-flow: row;
	column-gap: clamp(var(--rk-space-4), 1.5vw, var(--rk-space-5));
	row-gap: var(--rk-space-3);
	align-items: center;
	width: 100%;
	min-height: 4.5rem;
	margin: 0 0 var(--rk-space-7);
	padding: var(--rk-space-3) var(--rk-space-5);
	border: var(--rk-border-thin);
	border-radius: var(--rk-radius-none);
	outline: none;
	background: var(--rk-color-surface-raised);
	color: var(--rk-color-text);
	font-family: var(--rk-font-body);
	font-size: var(--rk-text-sm);
	font-weight: 400;
	letter-spacing: 0;
	line-height: 1.5;
	list-style: none;
}

body.woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before,
body.woocommerce-page :is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before {
	position: static;
	inset: auto;
	display: block;
	grid-column: 1;
	grid-row: 1;
	align-self: stretch;
	width: 0.1875rem;
	height: auto;
	min-height: 2.75rem;
	margin: 0;
	border: 0;
	border-radius: 0;
	background: var(--rk-color-brand);
	color: inherit;
	font: inherit;
	content: "";
}

body.woocommerce .woocommerce-message::before,
body.woocommerce-page .woocommerce-message::before {
	background: var(--rk-color-success);
}

body.woocommerce .woocommerce-error::before,
body.woocommerce-page .woocommerce-error::before {
	background: var(--rk-color-error);
}

.rk-woocommerce-notice__content {
	display: flex;
	gap: clamp(var(--rk-space-3), 1.2vw, var(--rk-space-5));
	align-items: baseline;
	grid-column: 2;
	grid-row: 1;
	min-width: 0;
}

.rk-woocommerce-notice__label {
	flex: 0 0 auto;
	color: var(--rk-sand-700);
	font-family: var(--rk-font-ui);
	font-size: 0.625rem;
	font-weight: 700;
	letter-spacing: var(--rk-tracking-ui);
	line-height: 1.2;
	text-transform: uppercase;
}

.rk-woocommerce-notice__text {
	min-width: 0;
	color: var(--rk-color-text);
	font-size: 0.9375rem;
	font-weight: 500;
	line-height: 1.45;
}

body.woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) > .button,
body.woocommerce-page :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) > .button,
body.woocommerce .woocommerce-error > li > .button,
body.woocommerce-page .woocommerce-error > li > .button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	float: none;
	grid-column: 3;
	grid-row: 1;
	min-width: 11.75rem;
	min-height: 2.75rem;
	margin: 0;
	padding: 0.6875rem 1.125rem;
	border: 1px solid var(--rk-color-ink);
	background: var(--rk-color-ink);
	color: var(--rk-color-paper);
	font-family: var(--rk-font-ui);
	font-size: 0.625rem;
	font-weight: 600;
	letter-spacing: var(--rk-tracking-ui);
	line-height: 1.2;
	text-align: center;
	text-transform: uppercase;
}

body.woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) > .button:hover,
body.woocommerce-page :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) > .button:hover,
body.woocommerce .woocommerce-error > li > .button:hover,
body.woocommerce-page .woocommerce-error > li > .button:hover {
	border-color: var(--rk-color-brand);
	background: var(--rk-color-brand);
	color: var(--rk-color-ink);
}

body.woocommerce .woocommerce-error > li,
body.woocommerce-page .woocommerce-error > li {
	display: flex;
	gap: var(--rk-space-5);
	justify-content: space-between;
	align-items: center;
	grid-column: 2 / -1;
	margin: 0;
	padding: 0;
}

body.woocommerce .woocommerce-error > li + li,
body.woocommerce-page .woocommerce-error > li + li {
	padding-top: var(--rk-space-3);
	border-top: var(--rk-border-thin);
}

/* WooCommerce Blocks uses a different notice component. */
.wc-block-components-notice-banner {
	box-sizing: border-box;
	min-height: 5rem;
	margin: 0 0 var(--rk-space-6) !important;
	padding: var(--rk-space-4) var(--rk-space-5) !important;
	border: var(--rk-border-thin) !important;
	border-left: 0.25rem solid var(--rk-color-brand) !important;
	border-radius: var(--rk-radius-none) !important;
	background: var(--rk-color-surface-raised) !important;
	color: var(--rk-color-text) !important;
	font-family: var(--rk-font-body);
	font-size: var(--rk-text-sm);
	line-height: 1.5;
}

.wc-block-components-notice-banner.is-success {
	border-left-color: var(--rk-color-success) !important;
}

.wc-block-components-notice-banner.is-error {
	border-left-color: var(--rk-color-error) !important;
}

.wc-block-components-notice-banner > svg {
	display: none;
}

.wc-block-components-notice-banner > .wc-block-components-notice-banner__content {
	display: flex;
	gap: var(--rk-space-4);
	justify-content: space-between;
	align-items: center;
}

@media (max-width: 47.99rem) {
	body.woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error),
	body.woocommerce-page :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) {
		grid-template-columns: 0.1875rem minmax(0, 1fr);
		padding: var(--rk-space-4);
	}

	.rk-woocommerce-notice__content {
		align-items: flex-start;
		flex-direction: column;
		gap: var(--rk-space-2);
	}

	body.woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before,
	body.woocommerce-page :is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before {
		grid-row: 1 / span 2;
	}

	body.woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) > .button,
	body.woocommerce-page :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) > .button,
	body.woocommerce .woocommerce-error > li > .button,
	body.woocommerce-page .woocommerce-error > li > .button {
		grid-column: 2;
		grid-row: auto;
		width: 100%;
		min-width: 0;
	}

	body.woocommerce .woocommerce-error > li,
	body.woocommerce-page .woocommerce-error > li {
		align-items: stretch;
		flex-direction: column;
	}

	.wc-block-components-notice-banner > .wc-block-components-notice-banner__content {
		align-items: stretch;
		flex-direction: column;
	}
}

.rk-empty-state {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: var(--rk-space-5);
	align-items: start;
	max-width: var(--rk-content-narrow);
	margin-inline: auto;
	padding-block: calc(var(--rk-header-height) + var(--rk-space-9)) var(--rk-space-10);
}

.rk-empty-state__index {
	color: var(--rk-color-secondary);
	font-family: var(--rk-font-numeric);
	font-size: clamp(5rem, 22vw, 14rem);
	font-weight: 600;
	line-height: 0.75;
}

.rk-empty-state h1 {
	max-width: 15ch;
}

.rk-empty-state p {
	max-width: 40rem;
}

.rk-skeleton {
	position: relative;
	overflow: hidden;
	background: var(--rk-color-surface-raised);
}

.rk-skeleton::after {
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.62), transparent);
	content: "";
	transform: translateX(-100%);
	animation: rk-skeleton 1.6s infinite var(--rk-ease-out);
}

@keyframes rk-skeleton {
	to { transform: translateX(100%); }
}

/* Breadcrumbs and pagination */
.rk-breadcrumbs,
.woocommerce-breadcrumb {
	margin-bottom: var(--rk-space-5);
	color: var(--rk-color-muted);
	font-family: var(--rk-font-ui);
	font-size: var(--rk-text-xs);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

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

.rk-breadcrumbs li:not(:last-child)::after {
	margin-left: var(--rk-space-2);
	content: "/";
}

.rk-breadcrumbs a {
	text-decoration: none;
}

.rk-pagination ul {
	display: flex;
	flex-wrap: wrap;
	gap: var(--rk-space-2);
	justify-content: center;
	margin: var(--rk-space-8) 0 0;
	padding: 0;
	list-style: none;
}

.rk-pagination a,
.rk-pagination span {
	display: grid;
	place-items: center;
	min-width: 2.75rem;
	height: 2.75rem;
	border: var(--rk-border-thin);
	font-family: var(--rk-font-numeric);
	font-size: var(--rk-text-sm);
	font-variant-numeric: tabular-nums;
	text-decoration: none;
}

.rk-pagination .current,
.rk-pagination a:hover {
	border-color: var(--rk-color-ink);
	background: var(--rk-color-ink);
	color: var(--rk-color-paper);
}

/* Shared commerce/editorial primitives */
.rk-price,
.price {
	color: var(--rk-sand-700);
	font-family: var(--rk-font-numeric);
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	letter-spacing: 0.04em;
}

.rk-badge,
.onsale,
.stock {
	display: inline-flex;
	align-items: center;
	min-height: 1.75rem;
	padding: 0.25rem 0.6rem;
	border: 1px solid currentColor;
	border-radius: 0;
	font-family: var(--rk-font-ui);
	font-size: 0.625rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	line-height: 1;
	text-transform: uppercase;
}

.rk-badge--muted,
.out-of-stock {
	color: var(--rk-color-muted);
}

.rk-meta,
.product_meta,
.posted_in,
.tagged_as {
	color: var(--rk-color-muted);
	font-family: var(--rk-font-ui);
	font-size: var(--rk-text-xs);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.quantity {
	display: inline-flex;
	align-items: center;
}

.quantity .qty {
	width: 5rem;
	min-height: 2.875rem;
	padding-inline: var(--rk-space-3);
	border: var(--rk-border-strong);
	font-family: var(--rk-font-numeric);
	font-variant-numeric: tabular-nums;
	text-align: center;
}

.rk-tabs,
.woocommerce-tabs {
	margin-top: var(--rk-space-8);
}

.rk-tabs__list,
.woocommerce-tabs .tabs {
	display: flex;
	gap: var(--rk-space-5);
	margin: 0 0 var(--rk-space-5);
	padding: 0;
	border-bottom: var(--rk-border-thin);
	list-style: none;
}

.rk-tabs__list a,
.woocommerce-tabs .tabs a {
	display: inline-flex;
	align-items: center;
	min-height: 2.75rem;
	font-family: var(--rk-font-ui);
	font-size: var(--rk-text-xs);
	font-weight: 600;
	letter-spacing: var(--rk-tracking-ui);
	text-decoration: none;
	text-transform: uppercase;
}

.rk-accordion,
.woocommerce-Tabs-panel {
	border-bottom: var(--rk-border-thin);
}

.rk-accordion summary {
	display: flex;
	justify-content: space-between;
	align-items: center;
	min-height: 3.5rem;
	cursor: pointer;
	font-family: var(--rk-font-ui);
	font-size: var(--rk-text-sm);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.rk-accordion summary::after {
	content: "+";
}

.rk-accordion[open] summary::after {
	content: "−";
}

/* Cards use their own container rather than viewport assumptions. */
.rk-product-card,
.rk-article-card {
	container-type: inline-size;
}

.rk-product-card__media,
.rk-article-card__media {
	display: block;
	overflow: hidden;
	background: var(--rk-color-surface-raised);
}

.rk-product-card__media {
	aspect-ratio: 1 / 1;
}

.rk-product-card__media img,
.rk-article-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--rk-duration-slow) var(--rk-ease-out);
}

@media (hover: hover) {
	.rk-product-card:hover .rk-product-card__media img,
	.rk-article-card:hover .rk-article-card__media img {
		transform: scale(1.025);
	}
}

.rk-product-card__body,
.rk-article-card__body {
	padding-top: var(--rk-space-4);
}

.rk-product-card__title,
.rk-article-card__title {
	margin: 0 0 var(--rk-space-2);
	font-size: var(--rk-text-sm);
	line-height: 1.35;
}

.rk-product-card__title a,
.rk-article-card__title a {
	text-decoration: none;
}

.rk-article-card__excerpt {
	font-size: var(--rk-text-sm);
}

@container (min-width: 34rem) {
	.rk-product-card--horizontal,
	.rk-article-card--horizontal {
		display: grid;
		grid-template-columns: minmax(10rem, 0.8fr) 1.2fr;
		gap: var(--rk-space-5);
	}
}

.rk-tag-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--rk-space-2);
	margin-top: var(--rk-space-7);
}

@media (min-width: 40rem) {
	.rk-search-form__row {
		grid-template-columns: 1fr auto;
		align-items: end;
	}
}

@media (min-width: 48rem) {
	.rk-empty-state {
		grid-template-columns: minmax(8rem, 0.45fr) 1fr;
		align-items: center;
	}
}

@media (prefers-reduced-motion: reduce) {
	.rk-skeleton::after {
		animation: none;
		opacity: 0.35;
	}
}
