/* ==========================================================================
   Fern & Vessel — design system (design-brief.md)
   Dark-gallery botanical: Nightshade ground, bone gallery walls, brass rules.
   ========================================================================== */

:root {
	--night: oklch(24% 0.02 165);
	--night-deep: oklch(19% 0.018 165);
	--fern: oklch(47% 0.06 160);
	--fern-bright: oklch(55% 0.07 160);
	--sage: oklch(76% 0.03 155);
	--bone: oklch(94% 0.012 85);
	--bone-deep: oklch(89% 0.016 85);
	--brass: oklch(66% 0.07 75);
	--brass-dim: oklch(66% 0.07 75 / 0.55);
	--ink: oklch(27% 0.02 165);

	--f-display: "Fraunces", Georgia, serif;
	--f-body: "Inter", -apple-system, sans-serif;

	--pad-x: clamp(1.25rem, 4.5vw, 4rem);
	--band-y: clamp(4.5rem, 10vw, 8.5rem);
	--measure: 60ch;
	--rule: 1px solid var(--brass-dim);
	--ease: cubic-bezier(0.22, 1, 0.36, 1);
}

@font-face {
	font-family: "Fraunces";
	src: url("../fonts/fraunces-var.woff2") format("woff2");
	font-weight: 100 900; font-style: normal; font-display: swap;
}
@font-face {
	font-family: "Fraunces";
	src: url("../fonts/fraunces-italic-var.woff2") format("woff2");
	font-weight: 100 900; font-style: italic; font-display: swap;
}
@font-face {
	font-family: "Inter";
	src: url("../fonts/inter-var.woff2") format("woff2");
	font-weight: 100 900; font-style: normal; font-display: swap;
}

/* ---------- Base ---------- */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
	margin: 0;
	font-family: var(--f-body);
	font-size: 1.0625rem;
	line-height: 1.65;
	color: var(--ink);
	background: var(--bone);
	-webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
h1, h2, h3 {
	font-family: var(--f-display);
	font-variation-settings: "opsz" 72;
	font-weight: 500;
	line-height: 1.06;
	letter-spacing: -0.015em;
	margin: 0 0 0.5em;
}
h1 em, h2 em, .fv-closing__line em { font-style: italic; font-weight: 380; }
a { color: var(--fern); text-underline-offset: 3px; text-decoration-thickness: 1px; }
a:hover { color: var(--brass); }
:focus-visible { outline: 2px solid var(--brass); outline-offset: 3px; }
::selection { background: var(--fern); color: var(--bone); }
.screen-reader-text {
	position: absolute; clip-path: inset(50%); width: 1px; height: 1px; overflow: hidden;
}

/* ---------- Reveal (the single motion pattern) ---------- */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity 800ms var(--ease), transform 800ms var(--ease); transition-delay: var(--d, 0ms); }
.reveal.in { opacity: 1; transform: none; }
.fv-qa .reveal { opacity: 1; transform: none; transition: none; }
@media (prefers-reduced-motion: reduce) {
	.reveal { opacity: 1; transform: none; transition: none; }
	html { scroll-behavior: auto; }
}

/* ---------- Preloader (once per session; the specimen-rule motif) ---------- */
.fv-loader {
	position: fixed; inset: 0; z-index: 200;
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	background: var(--night-deep);
	animation: fv-loader-out 620ms var(--ease) 1250ms forwards;
}
.fv-loader::after {
	content: ""; position: absolute; inset: 0; pointer-events: none;
	background: radial-gradient(120% 90% at 50% 42%, transparent 42%, color-mix(in oklch, var(--night-deep) 72%, transparent) 100%);
}
.fv-loaded .fv-loader { display: none; } /* already shown this session */
.fv-loader__word {
	position: relative;
	font-family: var(--f-display); font-weight: 560;
	font-size: clamp(1.9rem, 6vw, 3rem); letter-spacing: -0.01em;
	color: var(--bone); white-space: nowrap;
	opacity: 0; transform: translateY(14px);
	animation: fv-loader-word 760ms var(--ease) 120ms forwards;
}
.fv-loader__word .amp { font-style: italic; font-weight: 380; color: var(--brass); }
.fv-loader__rule {
	position: relative; display: block;
	width: min(52vw, 15rem); margin-top: 1.15rem;
	border-top: 1px solid var(--brass);
	transform: scaleX(0); transform-origin: center;
	animation: fv-loader-rule 920ms var(--ease) 380ms forwards;
}
@keyframes fv-loader-word { to { opacity: 1; transform: none; } }
@keyframes fv-loader-rule { to { transform: scaleX(1); } }
@keyframes fv-loader-out { to { opacity: 0; visibility: hidden; } }
.fv-qa .fv-loader { display: none; }
@media (prefers-reduced-motion: reduce) {
	.fv-loader { animation: fv-loader-out 260ms linear 500ms forwards; }
	.fv-loader__word { animation: none; opacity: 1; transform: none; }
	.fv-loader__rule { animation: none; transform: scaleX(1); }
}

/* ---------- Specimen label (signature element) ---------- */
.fv-label {
	display: inline-flex; align-items: baseline; gap: 0.7em;
	margin: 0 0 0.9rem;
	font-size: 0.7rem; font-weight: 560; letter-spacing: 0.22em; text-transform: uppercase;
	color: var(--brass);
}
.fv-label::before { content: ""; align-self: center; width: 2.6rem; border-top: var(--rule); }
.fv-label .fv-plate, .fv-label i {
	font-family: var(--f-display); font-style: italic; font-size: 0.85rem;
	text-transform: none; letter-spacing: 0.05em;
}

/* ---------- Buttons ---------- */
.fv-btn, button, input[type="submit"], button.single_add_to_cart_button, .woocommerce button.button, .woocommerce a.button, a.checkout-button, .wc-block-components-button {
	display: inline-block;
	background: var(--fern); color: var(--bone);
	border: 1px solid transparent; border-radius: 2px;
	font-family: var(--f-body); font-size: 0.78rem; font-weight: 620;
	letter-spacing: 0.14em; text-transform: uppercase; text-decoration: none;
	padding: 1em 2.1em; cursor: pointer;
	transition: background 180ms var(--ease), color 180ms var(--ease), border-color 180ms var(--ease);
}
.fv-btn:hover, button:hover, input[type="submit"]:hover, button.single_add_to_cart_button:hover, .woocommerce button.button:hover, .woocommerce a.button:hover { background: var(--fern-bright); color: var(--bone); }
button.single_add_to_cart_button.disabled, button.single_add_to_cart_button:disabled { background: color-mix(in oklch, var(--fern) 45%, var(--bone)); cursor: not-allowed; }
.fv-btn--ghost { background: transparent; border-color: var(--brass-dim); color: var(--bone); }
.fv-btn--ghost:hover { background: transparent; border-color: var(--brass); color: var(--brass); }
.fv-btn--line {
	background: transparent; border: 0; color: inherit; padding: 0.4em 0;
	border-bottom: 1px solid var(--brass-dim);
}
.fv-btn--line:hover { background: transparent; color: var(--brass); border-color: var(--brass); }

/* ---------- Header ---------- */
.fv-header {
	position: fixed; inset: 0 0 auto; z-index: 60;
	transition: background 240ms var(--ease), box-shadow 240ms var(--ease);
}
.fv-header.is-solid, body:not(.fv-has-hero) .fv-header {
	background: color-mix(in oklch, var(--night-deep) 92%, transparent);
	backdrop-filter: blur(10px);
	box-shadow: 0 1px 0 var(--brass-dim);
}
.fv-header__inner {
	display: flex; align-items: center; justify-content: space-between; gap: 2rem;
	padding: 1.1rem var(--pad-x);
}
.fv-wordmark {
	font-family: var(--f-display); font-size: 1.45rem; font-weight: 640; letter-spacing: -0.01em;
	color: var(--bone); text-decoration: none; white-space: nowrap;
}
.fv-wordmark .amp { font-style: italic; font-weight: 380; color: var(--brass); }
.fv-menu { display: flex; gap: clamp(1rem, 2.6vw, 2.2rem); list-style: none; margin: 0; padding: 0; }
.fv-menu a {
	font-size: 0.78rem; font-weight: 540; letter-spacing: 0.12em; text-transform: uppercase;
	color: var(--sage); text-decoration: none;
}
.fv-menu a:hover, .fv-menu .current-menu-item a { color: var(--bone); }
.fv-cart { position: relative; color: var(--sage); display: inline-flex; padding: 0.4rem; }
.fv-cart:hover { color: var(--brass); }
.fv-cart-count {
	position: absolute; top: -2px; right: -6px;
	min-width: 1.15rem; height: 1.15rem; border-radius: 50%;
	background: var(--brass); color: var(--night-deep);
	font-size: 0.65rem; font-weight: 700; line-height: 1.15rem; text-align: center;
	opacity: 0; transform: scale(0.5); transition: 200ms var(--ease);
}
.fv-cart-count.has-items { opacity: 1; transform: none; }
.fv-nav__toggle { display: none; }

/* ---------- Hero ---------- */
.fv-hero {
	position: relative; min-height: 100svh;
	display: flex; align-items: flex-end;
	background: var(--night-deep); overflow: hidden;
}
.fv-hero__bg, .fv-hero__bg img { position: absolute; inset: 0; width: 100%; height: 100%; }
.fv-hero__bg img { object-fit: cover; opacity: 0.5; transform: scale(1.06); animation: fv-drift 18s var(--ease) forwards; }
@keyframes fv-drift { to { transform: scale(1); } }
.fv-qa .fv-hero__bg img, [data-reduced] .fv-hero__bg img { animation: none; transform: none; }
@media (prefers-reduced-motion: reduce) { .fv-hero__bg img { animation: none; transform: none; } }
.fv-hero__bg::after {
	content: ""; position: absolute; inset: 0;
	background:
		radial-gradient(120% 80% at 30% 20%, transparent 0%, color-mix(in oklch, var(--night-deep) 55%, transparent) 70%),
		linear-gradient(180deg, color-mix(in oklch, var(--night-deep) 62%, transparent) 0%, color-mix(in oklch, var(--night-deep) 18%, transparent) 40%, var(--night-deep) 96%);
}
.fv-hero__content {
	position: relative; width: 100%;
	padding: 9rem var(--pad-x) clamp(4rem, 9vh, 7rem);
}
.fv-hero__title {
	font-size: clamp(3rem, 8.2vw, 7rem);
	font-weight: 460;
	color: var(--bone);
	margin: 0.4em 0 0.35em;
	max-width: 11em;
}
.fv-hero__title em { color: var(--sage); }
.fv-hero__sub { max-width: 46ch; color: var(--sage); font-size: 1.06rem; margin: 0 0 2.2rem; }
.fv-hero__actions { display: flex; gap: 1rem; flex-wrap: wrap; }
.fv-hero .reveal { transition-duration: 900ms; }
.fv-hero .reveal:nth-child(1) { transition-delay: 100ms; }
.fv-hero .reveal:nth-child(2) { transition-delay: 220ms; }
.fv-hero .reveal:nth-child(3) { transition-delay: 360ms; }
.fv-hero .reveal:nth-child(4) { transition-delay: 480ms; }
.fv-hero__scroll {
	position: absolute; right: var(--pad-x); bottom: 2.2rem; height: 5.5rem; width: 1px;
}
.fv-hero__scroll span {
	position: absolute; inset: 0; background: var(--brass-dim);
	transform-origin: top; animation: fv-scrollhint 2.6s var(--ease) infinite;
}
@keyframes fv-scrollhint { 0% { transform: scaleY(0); } 45% { transform: scaleY(1); transform-origin: top; } 55% { transform-origin: bottom; } 100% { transform: scaleY(0); transform-origin: bottom; } }
.fv-qa .fv-hero__scroll span { animation: none; }
@media (prefers-reduced-motion: reduce) { .fv-hero__scroll span { animation: none; } }

/* ---------- Frames (plates as hung art) ---------- */
.fv-frame {
	display: block; position: relative;
	background: #fff; padding: clamp(8px, 1.1vw, 14px);
}
.fv-frame img { width: 100%; }
.fv-frame {
	outline: var(--rule); outline-offset: -1px;
	box-shadow:
		0 1px 2px oklch(20% 0.02 165 / 0.25),
		0 18px 44px -18px oklch(19% 0.018 165 / 0.55);
	transition: transform 450ms var(--ease), box-shadow 450ms var(--ease);
}
.fv-plate-card { display: block; text-decoration: none; color: inherit; }
.fv-plate-card:hover { color: inherit; }
.fv-plate-card:hover .fv-frame {
	transform: translateY(-6px);
	box-shadow:
		0 1px 2px oklch(20% 0.02 165 / 0.25),
		0 30px 60px -20px oklch(19% 0.018 165 / 0.65);
}
.fv-plate-card .fv-label { margin: 0.9rem 0 0; }

/* ---------- Editorial series sections ---------- */
.fv-series {
	position: relative; overflow: hidden;
	padding: var(--band-y) var(--pad-x);
}
.fv-series--dark {
	background:
		radial-gradient(130% 100% at 50% 0%, color-mix(in oklch, var(--night) 86%, var(--fern)) 0%, var(--night) 52%, var(--night-deep) 100%);
	color: var(--sage);
}
.fv-series--dark h2 { color: var(--bone); }
.fv-series--bone { background: var(--bone); }
.fv-series--bone .fv-frame { outline-color: oklch(66% 0.07 75 / 0.35); }
.fv-ghost-numeral {
	position: absolute; top: 50%; transform: translateY(-50%);
	right: -0.06em; left: auto;
	font-family: var(--f-display); font-style: italic; font-weight: 340;
	font-size: clamp(16rem, 34vw, 30rem); line-height: 1;
	color: currentColor; opacity: 0.075;
	pointer-events: none; user-select: none;
}
.fv-series--bone .fv-ghost-numeral { opacity: 0.05; }
html:has(body.fv-qa) { scroll-behavior: auto; }
.fv-series--flip .fv-ghost-numeral { right: auto; left: -0.06em; }
.fv-series__inner {
	position: relative;
	display: grid; grid-template-columns: minmax(30ch, 0.9fr) 1.4fr;
	gap: clamp(2.5rem, 6vw, 6rem); align-items: center;
	max-width: 90rem; margin: 0 auto;
}
.fv-series--flip .fv-series__inner { grid-template-columns: 1.4fr minmax(30ch, 0.9fr); }
.fv-series--flip .fv-series__text { order: 2; }
.fv-series--flip .fv-series__plates { order: 1; }
.fv-series__text h2 { font-size: clamp(2.2rem, 4.6vw, 3.9rem); }
.fv-series__copy { max-width: 46ch; margin: 0 0 1.8rem; }
.fv-series__plates {
	display: grid; grid-template-columns: repeat(3, 1fr);
	gap: clamp(1rem, 2.4vw, 2rem); align-items: start;
}
.fv-series__plates .fv-plate-card:nth-child(2) { transform: translateY(2.2rem); }
.fv-series__plates .fv-plate-card:nth-child(3) { transform: translateY(-1.1rem); }

/* Conservatory strip */
.fv-conservatory { padding: clamp(3rem, 6vw, 4.5rem) var(--pad-x); border-top: var(--rule); border-bottom: var(--rule); }
.fv-conservatory__inner { max-width: 90rem; margin: 0 auto; }
.fv-conservatory h2 { font-size: clamp(1.6rem, 3vw, 2.4rem); margin: 0; }
.fv-dim { color: color-mix(in oklch, currentColor 55%, transparent); font-style: italic; font-weight: 380; }

/* ---------- Vessel line ---------- */
.fv-vessel { background: var(--night-deep); color: var(--sage); padding: var(--band-y) var(--pad-x); }
.fv-vessel__inner {
	display: grid; grid-template-columns: 1fr 1fr;
	gap: clamp(2.5rem, 6vw, 6rem); align-items: center;
	max-width: 90rem; margin: 0 auto;
}
.fv-vessel h2 { color: var(--bone); font-size: clamp(2rem, 4vw, 3.2rem); }
.fv-vessel__text p:not(.fv-label) { max-width: 48ch; }
.fv-vessel__img { margin: 0; }
.fv-vessel__img img { outline: var(--rule); outline-offset: 12px; }
.fv-vessel__img .fv-label { margin: 1.4rem 0 0; }

/* ---------- Closing ---------- */
.fv-closing { background: var(--bone); padding: var(--band-y) var(--pad-x); text-align: center; }
.fv-closing__inner { max-width: 60rem; margin: 0 auto; }
.fv-closing .fv-label { justify-content: center; }
.fv-closing__line {
	font-family: var(--f-display); font-size: clamp(2rem, 5vw, 3.6rem);
	font-weight: 460; line-height: 1.1; letter-spacing: -0.015em; margin: 0.2em 0 0.7em;
}

/* ---------- Signup form ---------- */
.fv-signup-form { display: flex; gap: 0.7rem; flex-wrap: wrap; margin-top: 1.4rem; }
.fv-signup-form input[type="email"] {
	flex: 1 1 15rem; min-width: 0;
	background: color-mix(in oklch, var(--bone) 7%, transparent);
	border: 1px solid color-mix(in oklch, var(--sage) 32%, transparent);
	border-radius: 2px; color: var(--bone);
	font: inherit; padding: 0.9em 1.1em;
}
.fv-signup-form input[type="email"]::placeholder { color: color-mix(in oklch, var(--sage) 65%, transparent); }
.fv-closing .fv-signup-form input[type="email"], .fv-band--bone .fv-signup-form input[type="email"] {
	background: #fff; color: var(--ink); border-color: color-mix(in oklch, var(--ink) 25%, transparent);
}

/* ---------- Archive / gallery wall ---------- */
.fv-archive-head {
	background:
		radial-gradient(130% 120% at 50% -20%, color-mix(in oklch, var(--night) 84%, var(--fern)) 0%, var(--night-deep) 78%);
	color: var(--sage);
	padding: clamp(9rem, 16vh, 12rem) var(--pad-x) clamp(3rem, 6vw, 4.5rem);
}
.fv-archive-head__inner { max-width: 90rem; margin: 0 auto; }
.fv-archive-head h1 { color: var(--bone); font-size: clamp(2.6rem, 5.6vw, 4.6rem); margin: 0 0 0.3em; }
.fv-archive-head__desc { max-width: 62ch; margin: 0; }
.fv-wall { background: var(--bone); padding: clamp(3.5rem, 7vw, 5.5rem) var(--pad-x) var(--band-y); }
.fv-wall__grid {
	display: grid; grid-template-columns: repeat(3, 1fr);
	gap: clamp(2rem, 4.5vw, 4rem) clamp(1.6rem, 3.5vw, 3rem);
	max-width: 90rem; margin: 0 auto;
}
.fv-plate-card__meta { display: block; padding-top: 0.15rem; }
.fv-plate-card__title {
	display: block; font-family: var(--f-display); font-size: 1.22rem; font-weight: 540;
	margin-top: 0.2rem;
}
.fv-plate-card__price { display: block; font-size: 0.9rem; opacity: 0.75; margin-top: 0.15rem; }
.fv-wall__pagination { text-align: center; margin-top: 3rem; }
.fv-wall__pagination .page-numbers { display: inline-flex; gap: 0.6rem; list-style: none; padding: 0; }
.fv-wall__pagination a, .fv-wall__pagination span.current {
	padding: 0.5em 0.9em; text-decoration: none; border: 1px solid var(--brass-dim); border-radius: 2px;
}
.fv-wall__pagination span.current { background: var(--fern); color: var(--bone); border-color: transparent; }
.fv-wall__empty { text-align: center; }

/* ---------- Single product ---------- */
.fv-single { background: var(--bone); }
.fv-single__inner {
	display: grid; grid-template-columns: 1.15fr 1fr;
	gap: clamp(2.5rem, 6vw, 6rem);
	max-width: 90rem; margin: 0 auto;
	padding: clamp(8rem, 14vh, 10rem) var(--pad-x) var(--band-y);
	align-items: start;
}
.fv-single__stage { position: sticky; top: 7rem; }
.fv-single__frame { max-width: 34rem; margin: 0 auto; }
.fv-single__frame .woocommerce-product-gallery { position: relative; }
.fv-single__frame img {
	background: #fff; padding: clamp(10px, 1.4vw, 16px);
	outline: var(--rule); outline-offset: -1px;
	box-shadow: 0 1px 2px oklch(20% 0.02 165 / 0.25), 0 26px 60px -22px oklch(19% 0.018 165 / 0.55);
}
.fv-single__frame .flex-control-thumbs { display: flex; gap: 0.6rem; list-style: none; padding: 0; margin: 1rem 0 0; }
.fv-single__frame .flex-control-thumbs img { padding: 4px; width: 4.5rem; cursor: pointer; }
.fv-crumbs { font-size: 0.78rem; letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 1.6rem; opacity: 0.75; }
.fv-crumbs a { text-decoration: none; }
.fv-crumbs .sep { color: var(--brass); padding: 0 0.2em; }
.fv-single__title { font-size: clamp(2.2rem, 4.2vw, 3.6rem); margin: 0.15em 0 0.35em; }
.fv-single__excerpt { font-family: var(--f-display); font-style: italic; font-size: 1.08rem; opacity: 0.8; margin: 0 0 1.4rem; }
.fv-single__price { font-family: var(--f-display); font-size: 1.5rem; font-weight: 560; margin-bottom: 1.6rem; }
.fv-single__price .woocommerce-Price-amount { color: inherit; }
.fv-single__form .variations { width: 100%; border-collapse: collapse; margin-bottom: 1rem; }
.fv-single__form .variations th { display: none; }
.fv-single__form .variations td { display: block; padding: 0; }
.fv-single__form .variations select {
	width: 100%; font: inherit; padding: 0.85em 1em;
	border: 1px solid color-mix(in oklch, var(--ink) 30%, transparent); border-radius: 2px;
	background: #fff; color: var(--ink);
}
.fv-single__form .reset_variations { font-size: 0.78rem; }
.fv-single__form .single_variation_wrap .woocommerce-variation-price { margin-bottom: 1rem; font-weight: 620; }
.fv-single__form .quantity { display: inline-block; margin-right: 0.8rem; }
.fv-single__form .quantity .qty { width: 4.2rem; padding: 0.85em 0.6em; font: inherit; border: 1px solid color-mix(in oklch, var(--ink) 30%, transparent); border-radius: 2px; text-align: center; }
.fv-single-note {
	margin: 1.6rem 0; padding: 1rem 1.2rem;
	border-left: 2px solid var(--brass);
	background: color-mix(in oklch, var(--brass) 8%, transparent);
	font-size: 0.88rem; line-height: 1.6;
}
.fv-single__desc { max-width: var(--measure); }
.fv-related { background: var(--night); color: var(--sage); padding: var(--band-y) var(--pad-x); }
.fv-related__inner { max-width: 90rem; margin: 0 auto; }
.fv-related__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(1.6rem, 3.5vw, 3rem); margin-top: 2rem; }

/* ---------- Prose pages ---------- */
.fv-page { background: var(--bone); padding: clamp(9rem, 15vh, 11rem) var(--pad-x) var(--band-y); }
.fv-page__inner, .fv-page-prose { max-width: var(--measure); margin: 0 auto; }
.fv-page h1 { font-size: clamp(2.4rem, 5vw, 3.8rem); margin-bottom: 1.2em; }
.fv-page h2 { font-size: 1.45rem; margin-top: 2.2em; }

/* ---------- Woo cart/checkout/account (styled, not rebuilt) ---------- */
.woocommerce-cart .fv-page table.shop_table, .fv-page .woocommerce table.shop_table {
	width: 100%; border-collapse: collapse; border: var(--rule);
}
.fv-page .woocommerce { max-width: 70rem; margin: 0 auto; }
.fv-page .woocommerce table.shop_table th, .fv-page .woocommerce table.shop_table td {
	padding: 0.9em; border-bottom: 1px solid color-mix(in oklch, var(--ink) 12%, transparent); text-align: left;
}
.fv-page .woocommerce img { background: #fff; padding: 4px; outline: var(--rule); width: 4.5rem; }
.fv-page .woocommerce input.input-text, .fv-page .woocommerce select {
	font: inherit; padding: 0.7em 0.9em; border: 1px solid color-mix(in oklch, var(--ink) 30%, transparent); border-radius: 2px; width: 100%;
}
.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce-notices-wrapper .woocommerce-message, .woocommerce-message, .woocommerce-info, .woocommerce-error {
	display: flex; align-items: center; flex-wrap: wrap; gap: 0.6rem 1.2rem;
	list-style: none; margin: 0 0 1.6rem; padding: 0.95rem 1.25rem;
	font-size: 0.95rem; line-height: 1.5; color: var(--ink);
	border: 0; border-left: 2px solid var(--fern);
	background: color-mix(in oklch, var(--fern) 8%, transparent);
}
/* Woo's default classic-green glyph is absolutely-positioned and overlaps our text — drop it. */
.woocommerce-message::before, .woocommerce-info::before, .woocommerce-error::before { content: none; display: none; }
.woocommerce-error { border-left-color: oklch(55% 0.19 25); background: oklch(55% 0.19 25 / 0.08); }
.woocommerce-message .button, .woocommerce-info .button, .woocommerce-error .button {
	float: none; margin: 0 0 0 auto; padding: 0.7em 1.5em; font-size: 0.72rem;
}

/* ---------- Footer ---------- */
.fv-footer { background: var(--night-deep); color: var(--sage); border-top: var(--rule); }
.fv-footer__inner {
	display: grid; grid-template-columns: 1.2fr 1.2fr 0.8fr;
	gap: clamp(2rem, 5vw, 4rem);
	max-width: 90rem; margin: 0 auto;
	padding: clamp(3rem, 6vw, 4.5rem) var(--pad-x);
}
.fv-footer .fv-wordmark { font-size: 1.25rem; }
.fv-footer__line { font-size: 0.88rem; margin: 0.8rem 0 0; opacity: 0.8; }
.fv-menu--footer { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; }
.fv-menu--footer a { color: var(--sage); text-decoration: none; font-size: 0.88rem; }
.fv-menu--footer a:hover { color: var(--brass); }
.fv-footer__base {
	display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap;
	padding: 1.2rem var(--pad-x) 1.6rem;
	border-top: 1px solid color-mix(in oklch, var(--sage) 14%, transparent);
	font-size: 0.75rem; letter-spacing: 0.05em; opacity: 0.7;
}
.fv-footer__rule { flex: 0 0 2.5rem; border-top: var(--rule); }

/* ---------- Responsive ---------- */
@media (max-width: 960px) {
	.fv-series__inner, .fv-series--flip .fv-series__inner { grid-template-columns: 1fr; }
	.fv-series--flip .fv-series__text { order: 1; }
	.fv-series--flip .fv-series__plates { order: 2; }
	.fv-vessel__inner { grid-template-columns: 1fr; }
	.fv-single__inner { grid-template-columns: 1fr; padding-top: 7rem; }
	.fv-single__stage { position: static; }
	.fv-wall__grid, .fv-related__grid { grid-template-columns: repeat(2, 1fr); }
	.fv-footer__inner { grid-template-columns: 1fr; }
	.fv-ghost-numeral { font-size: 15rem; opacity: 0.045; }
}
@media (max-width: 700px) {
	.fv-nav__toggle {
		display: inline-flex; flex-direction: column; gap: 5px;
		background: transparent; border: 0; padding: 0.6rem;
	}
	.fv-nav__toggle-bar { width: 1.4rem; border-top: 2px solid var(--bone); transition: transform 200ms var(--ease); }
	.fv-nav-open .fv-nav__toggle-bar:first-child { transform: translateY(3.5px) rotate(45deg); }
	.fv-nav-open .fv-nav__toggle-bar:last-child { transform: translateY(-3.5px) rotate(-45deg); }
	.fv-nav__list {
		position: fixed; inset: 0; z-index: -1;
		display: grid; place-content: center;
		background: var(--night-deep);
		opacity: 0; pointer-events: none; transition: opacity 240ms var(--ease);
	}
	.fv-nav-open .fv-nav__list { opacity: 1; pointer-events: auto; z-index: 55; }
	.fv-menu { flex-direction: column; text-align: center; gap: 1.4rem; }
	.fv-menu a { font-size: 1.05rem; }
	.fv-series__plates { grid-template-columns: repeat(3, 1fr); gap: 0.8rem; }
	.fv-series__plates .fv-plate-card .fv-label { display: none; }
	.fv-wall__grid { grid-template-columns: 1fr 1fr; gap: 1.5rem 1rem; }
	.fv-plate-card__title { font-size: 1rem; }
	.fv-hero__title { font-size: clamp(2.6rem, 12vw, 3.4rem); }
	.fv-hero__scroll { display: none; }
}

/* Beat woocommerce-general's classic purple (.woocommerce button.button.alt, spec 0,2,2) */
.woocommerce button.button.alt, .woocommerce a.button.alt, .woocommerce input.button.alt,
.woocommerce #respond input#submit.alt {
	background: var(--fern); color: var(--bone);
}
.woocommerce button.button.alt:hover, .woocommerce a.button.alt:hover, .woocommerce input.button.alt:hover {
	background: var(--fern-bright); color: var(--bone);
}
.woocommerce button.button.alt.disabled, .woocommerce button.button.alt:disabled {
	background: color-mix(in oklch, var(--fern) 45%, var(--bone));
}

/* Search / archive results */
.fv-result { padding: 1.2rem 0; border-bottom: var(--rule); }
.fv-result__title { font-size: 1.4rem; margin: 0.2em 0; }
.fv-result__title a { text-decoration: none; color: inherit; }
.fv-result__title a:hover { color: var(--brass); }
.fv-wall__empty-wrap { text-align: center; padding: 2rem 0 1rem; }
