/*
Theme Name: Ferrand Library
Description: The Ferrand Library: a premium bookshop that speaks in the language of an old card catalog. Custom block theme by Ameen Systems.
Version: 0.1.0
Author: Ameen Systems
Text Domain: fl-ferrandlibrary
*/

/* ============ Tokens beyond theme.json ============ */
:root {
	--fl-stock: #F6F1E3;
	--fl-stock-deep: #EFE7D2;
	--fl-paper: #FDFBF5;
	--fl-spice: #A64B12;
	--fl-spice-deep: #7A340D;
	--fl-oxblood: #6E2B2B;
	--fl-brass: #B08D3F;
	--fl-brass-soft: #C7A85C;
	--fl-ink: #21201C;
	--fl-stamp: #A33327;
	--fl-muted: #6B6355;
	--fl-shadow: 30, 25, 12;
	--fl-page-bg: var(--fl-stock);
	--fl-page-text: var(--fl-ink);
	--fl-rail-bg: var(--fl-spice-deep);
	--fl-nav-bg: rgba(246, 241, 227, 0.92);
	--fl-nav-text: var(--fl-ink);
	--fl-card-bg: var(--fl-paper);
	--fl-font-book: 'EB Garamond', 'Iowan Old Style', Georgia, serif;
	--fl-font-typed: 'Special Elite', 'Courier New', monospace;
	--fl-font-label: 'Archivo Narrow', 'Arial Narrow', sans-serif;
}

/* After Hours: the reading room goes dark, the paper objects stay lit */
html[data-lamp="after"] {
	--fl-page-bg: #201209;
	--fl-page-text: #EDE5D0;
	--fl-rail-bg: #170D06;
	--fl-nav-bg: rgba(32, 18, 9, 0.92);
	--fl-nav-text: #EDE5D0;
	--fl-shadow: 0, 0, 0;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
	margin: 0;
	background: var(--fl-page-bg);
	color: var(--fl-page-text);
	font-family: var(--fl-font-book);
	transition: background-color 0.5s ease, color 0.5s ease;
	/* faint paper grain */
	background-image: radial-gradient(rgba(var(--fl-shadow), 0.028) 1px, transparent 1.4px);
	background-size: 5px 5px;
}

a { color: inherit; }
img { max-width: 100%; height: auto; }

/* ============ Scroll progress (brass thread) ============ */
#fl-progress {
	position: fixed; top: 0; left: 0; height: 3px; width: 0;
	background: linear-gradient(90deg, var(--fl-brass), var(--fl-brass-soft));
	z-index: 950;
}

/* ============ Cursor lamplight ============ */
#fl-lamplight {
	position: fixed; inset: 0; pointer-events: none; z-index: 1;
	background: radial-gradient(240px circle at var(--mx, 50%) var(--my, 30%), rgba(176, 141, 63, 0.10), transparent 70%);
	mix-blend-mode: multiply;
}
html[data-lamp="after"] #fl-lamplight {
	background: radial-gradient(280px circle at var(--mx, 50%) var(--my, 30%), rgba(199, 168, 92, 0.13), transparent 70%);
	mix-blend-mode: screen;
}

/* ============ Loader: the date-due stamp ============ */
#fl-loader {
	position: fixed; inset: 0; z-index: 1000;
	background: var(--fl-stock);
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 26px;
	transition: opacity 0.7s ease, visibility 0.7s ease;
}
#fl-loader .fl-stamp {
	font-family: var(--fl-font-typed);
	color: var(--fl-stamp);
	border: 3px solid var(--fl-stamp);
	border-radius: 4px;
	padding: 14px 26px 10px;
	text-align: center;
	transform: rotate(-7deg) scale(2.1);
	opacity: 0;
	line-height: 1.35;
	letter-spacing: 0.08em;
	box-shadow: inset 0 0 22px rgba(163, 51, 39, 0.14);
	-webkit-mask-image: radial-gradient(circle at 30% 60%, black 92%, rgba(0,0,0,0.72) 100%);
	        mask-image: radial-gradient(circle at 30% 60%, black 92%, rgba(0,0,0,0.72) 100%);
}
#fl-loader .fl-stamp .fl-stamp__brand { font-size: 1.05rem; }
#fl-loader .fl-stamp .fl-stamp__date { font-size: 1.35rem; }
#fl-loader.is-inked .fl-stamp {
	animation: fl-thunk 0.55s cubic-bezier(0.2, 1.6, 0.35, 1) forwards;
}
@keyframes fl-thunk {
	0% { transform: rotate(-7deg) scale(2.1); opacity: 0; }
	60% { transform: rotate(-7deg) scale(0.94); opacity: 1; }
	100% { transform: rotate(-7deg) scale(1); opacity: 1; }
}
#fl-loader .fl-loader__cap {
	font-family: var(--fl-font-typed);
	font-size: 0.85rem; letter-spacing: 0.14em; text-transform: uppercase;
	color: var(--fl-ink); opacity: 0.55;
}
#fl-loader.is-done { opacity: 0; }
#fl-loader.is-gone, html.fl-seen #fl-loader { display: none; }
html:not(.fl-js) #fl-loader { display: none; }
@media (prefers-reduced-motion: reduce) {
	#fl-loader { display: none; }
}

/* ============ Top rail ============ */
.fl-rail {
	position: relative; z-index: 5;
	background: var(--fl-rail-bg);
	color: #E9E2CC;
	font-family: var(--fl-font-label);
	font-size: 0.78rem; letter-spacing: 0.16em; text-transform: uppercase;
	display: flex; justify-content: center; gap: 2.2em;
	padding: 7px 16px;
	flex-wrap: wrap;
}
.fl-rail span { opacity: 0.85; }

/* ============ Masthead ============ */
.fl-masthead {
	position: relative;
	text-align: center;
	padding: 58px 20px 44px;
	overflow: hidden;
}
#fl-motes { position: absolute; inset: 0; pointer-events: none; }
.fl-masthead__inner { position: relative; z-index: 2; }
.fl-masthead__logo { width: 92px; height: auto; margin: 0 auto 10px; display: block; filter: drop-shadow(0 3px 10px rgba(var(--fl-shadow), 0.25)); transition: filter 0.5s ease; }
html[data-lamp="after"] .fl-masthead__logo { filter: invert(0.92) sepia(0.35) saturate(0.9) hue-rotate(10deg) drop-shadow(0 3px 10px rgba(0, 0, 0, 0.4)); }
.fl-masthead__title {
	font-family: var(--fl-font-book);
	font-weight: 600;
	font-size: clamp(2.4rem, 6vw, 3.6rem);
	margin: 0; letter-spacing: 0.01em;
}
.fl-masthead__title a { text-decoration: none; }
.fl-masthead__tagline {
	font-family: var(--fl-font-typed);
	font-size: 0.95rem; letter-spacing: 0.2em; text-transform: uppercase;
	margin: 10px 0 0; color: var(--fl-brass);
}
html[data-lamp="after"] .fl-masthead__tagline { color: var(--fl-brass-soft); }

/* ============ Nav deck (house standard: flat, full-width, radius 0) ============ */
.fl-nav {
	position: sticky; top: 0; z-index: 900;
	background: var(--fl-nav-bg);
	backdrop-filter: blur(8px);
	border-top: 1px solid rgba(176, 141, 63, 0.4);
	border-bottom: 1px solid rgba(176, 141, 63, 0.4);
	transition: box-shadow 0.3s ease, background-color 0.4s ease;
}
.fl-nav.is-scrolled { box-shadow: 0 6px 24px rgba(var(--fl-shadow), 0.12); }
.fl-nav__inner {
	max-width: 1200px; margin: 0 auto;
	display: flex; align-items: center; justify-content: space-between; gap: 18px;
	padding: 10px 20px;
}
.fl-nav__brand {
	font-family: var(--fl-font-book); font-weight: 600; font-size: 1.05rem;
	text-decoration: none; color: var(--fl-nav-text);
	opacity: 0; transform: translateY(4px); transition: opacity 0.3s ease, transform 0.3s ease;
	white-space: nowrap;
}
.fl-nav.is-scrolled .fl-nav__brand { opacity: 1; transform: none; }
.fl-nav__links { display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none; }
.fl-nav__links::-webkit-scrollbar { display: none; }
.fl-nav__links a {
	font-family: var(--fl-font-label); font-size: 0.86rem;
	letter-spacing: 0.14em; text-transform: uppercase;
	color: var(--fl-nav-text); text-decoration: none;
	padding: 8px 12px; border-radius: 0;
	border-bottom: 2px solid transparent;
	white-space: nowrap;
	transition: border-color 0.25s ease, color 0.25s ease;
}
.fl-nav__links a:hover { border-bottom-color: var(--fl-brass); color: var(--fl-spice); }
html[data-lamp="after"] .fl-nav__links a:hover { color: var(--fl-brass-soft); }
.fl-nav__tools { display: flex; align-items: center; gap: 8px; }
.fl-nav__btn {
	appearance: none; background: none; border: 1px solid rgba(176, 141, 63, 0.5);
	color: var(--fl-nav-text);
	font-size: 1rem; line-height: 1; padding: 7px 10px; cursor: pointer;
	border-radius: 0;
	transition: background-color 0.25s ease, color 0.25s ease;
}
.fl-nav__btn:hover { background: var(--fl-brass); color: var(--fl-paper); }

/* ============ Buttons ============ */
.fl-btn, .wp-block-button__link.fl-btn {
	display: inline-block;
	font-family: var(--fl-font-label);
	font-size: 0.92rem; letter-spacing: 0.16em; text-transform: uppercase;
	background: var(--fl-spice); color: var(--fl-stock);
	border: 1px solid var(--fl-spice-deep);
	padding: 13px 26px; border-radius: 2px;
	text-decoration: none; cursor: pointer;
	position: relative; overflow: hidden;
	transition: background-color 0.3s ease, transform 0.2s ease, box-shadow 0.3s ease;
	will-change: transform;
}
.fl-btn:hover { background: var(--fl-oxblood); box-shadow: 0 8px 20px rgba(var(--fl-shadow), 0.22); }
.fl-btn--ghost { background: transparent; color: var(--fl-spice); border: 1px solid var(--fl-spice); }
html[data-lamp="after"] .fl-btn--ghost { color: var(--fl-brass-soft); border-color: var(--fl-brass); }
.fl-btn--ghost:hover { background: var(--fl-spice); color: var(--fl-stock); }
.fl-ripple {
	position: absolute; border-radius: 50%; pointer-events: none;
	background: rgba(246, 241, 227, 0.35);
	transform: scale(0); animation: fl-ripple 0.55s ease-out forwards;
}
@keyframes fl-ripple { to { transform: scale(3); opacity: 0; } }

/* ============ The Accession Card ============ */
.fl-card {
	position: relative;
	background: var(--fl-card-bg);
	border: 1px solid rgba(176, 141, 63, 0.35);
	border-radius: 3px;
	padding: 18px 18px 26px 34px;
	min-height: 190px;
	display: flex; gap: 10px;
	box-shadow: 0 2px 6px rgba(var(--fl-shadow), 0.12), 0 10px 22px rgba(var(--fl-shadow), 0.07);
	transition: transform 0.28s cubic-bezier(0.2, 1, 0.3, 1), box-shadow 0.28s ease;
	/* typed cards keep their paper color even After Hours */
	color: var(--fl-ink);
}
.fl-card:hover {
	transform: translateY(-7px) rotate(-0.6deg);
	box-shadow: 0 6px 12px rgba(var(--fl-shadow), 0.16), 0 24px 42px rgba(var(--fl-shadow), 0.16);
}
.fl-card[hidden] { display: none; }
/* red left margin rule, like the real cards */
.fl-card__rule { position: absolute; top: 0; bottom: 0; left: 24px; width: 1px; background: rgba(163, 51, 39, 0.55); }
/* the drawer-rod punch hole */
.fl-card__hole {
	position: absolute; bottom: 7px; left: 50%; transform: translateX(-50%);
	width: 13px; height: 13px; border-radius: 50%;
	background: var(--fl-page-bg);
	border: 1px solid rgba(var(--fl-shadow), 0.25);
	box-shadow: inset 0 1px 3px rgba(var(--fl-shadow), 0.25);
	transition: background-color 0.5s ease;
}
.fl-card__body { flex: 1; min-width: 0; }
.fl-card__callno {
	font-family: var(--fl-font-typed); font-size: 0.72rem;
	color: var(--fl-stamp); letter-spacing: 0.1em;
	margin-bottom: 8px;
}
.fl-card__status {
	margin-left: 10px;
	font-size: 0.58rem; letter-spacing: 0.14em;
	color: var(--fl-spice);
	border: 1px solid var(--fl-spice);
	border-radius: 2px;
	padding: 1px 5px;
	vertical-align: 1px;
}
.fl-card__author {
	font-family: var(--fl-font-typed); font-size: 0.82rem;
	margin: 0 0 4px; letter-spacing: 0.02em;
}
.fl-card__title { font-family: var(--fl-font-typed); font-size: 1.02rem; line-height: 1.3; margin: 0 0 8px; }
.fl-card__title a { text-decoration: none; color: inherit; }
.fl-card__title a:hover { color: var(--fl-oxblood); text-decoration: underline; text-underline-offset: 3px; }
.fl-card__imprint { font-family: var(--fl-font-typed); font-size: 0.74rem; opacity: 0.72; margin: 0 0 10px; }
.fl-card__tracings { font-family: var(--fl-font-typed); font-size: 0.66rem; opacity: 0.55; margin: 0; line-height: 1.7; }
.fl-card__tracings span { margin-right: 0.9em; }
.fl-card__cover {
	flex: 0 0 74px; align-self: flex-start;
	position: relative; transform: rotate(2.2deg);
	margin-top: 4px;
}
.fl-card__cover-img {
	width: 74px; height: 106px; object-fit: cover;
	border: 1px solid rgba(var(--fl-shadow), 0.2);
	box-shadow: 0 3px 8px rgba(var(--fl-shadow), 0.22);
	display: block;
}
.fl-card__clip {
	position: absolute; top: -7px; left: 50%; transform: translateX(-50%);
	width: 26px; height: 9px;
	background: linear-gradient(180deg, var(--fl-brass-soft), var(--fl-brass));
	border-radius: 2px 2px 0 0;
	box-shadow: 0 1px 2px rgba(var(--fl-shadow), 0.35);
	z-index: 2;
}
.fl-card__cover--none {
	width: 74px; height: 106px;
	background: var(--fl-spice);
	display: flex; align-items: center; justify-content: center;
	border: 1px solid var(--fl-spice-deep);
	box-shadow: 0 3px 8px rgba(var(--fl-shadow), 0.22);
}
.fl-card__stamp-mini {
	font-family: var(--fl-font-typed); font-size: 0.6rem; letter-spacing: 0.18em;
	color: var(--fl-stock); text-align: center; line-height: 1.8;
	border: 1px solid rgba(246, 241, 227, 0.5); padding: 6px 7px;
	transform: rotate(-6deg);
}

/* ============ Catalog grid ============ */
.fl-catalog-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
	gap: 26px;
	max-width: 1200px;
	margin: 0 auto;
	padding: 30px 20px 70px;
}

/* ============ Section primitives ============ */
.fl-section { padding: 64px 20px; }
.fl-section__inner { max-width: 1200px; margin: 0 auto; }
.fl-kicker {
	font-family: var(--fl-font-typed);
	font-size: 0.8rem; letter-spacing: 0.22em; text-transform: uppercase;
	color: var(--fl-stamp); margin: 0 0 14px;
}
html[data-lamp="after"] .fl-kicker { color: var(--fl-brass-soft); }
.fl-h2 {
	font-family: var(--fl-font-book); font-weight: 600;
	font-size: clamp(1.7rem, 3.6vw, 2.5rem);
	margin: 0 0 18px; line-height: 1.15;
}

/* ============ Hero: the box, annotated like a museum diagram ============ */
.fl-hero { padding: 76px 20px 70px; position: relative; overflow: hidden; }
.fl-hero__inner {
	max-width: 1200px; margin: 0 auto;
	display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
	gap: 56px; align-items: center;
}
.fl-hero h1 {
	font-family: var(--fl-font-book); font-weight: 600;
	font-size: clamp(2.2rem, 5vw, 3.4rem);
	line-height: 1.08; margin: 0 0 20px;
}
.fl-hero h1 em { font-style: italic; color: var(--fl-spice); }
html[data-lamp="after"] .fl-hero h1 em { color: var(--fl-brass-soft); }
.fl-hero__lede { font-size: 1.16rem; line-height: 1.6; margin: 0 0 30px; max-width: 34em; opacity: 0.9; }
.fl-hero__ctas { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; }
.fl-hero__note { font-family: var(--fl-font-typed); font-size: 0.78rem; letter-spacing: 0.06em; opacity: 0.6; margin-top: 16px; }

/* the flat-lay diagram */
.fl-boxlay { position: relative; padding: 30px 10px; }
.fl-boxlay__stage {
	position: relative;
	background: var(--fl-card-bg);
	border: 1px solid rgba(176, 141, 63, 0.4);
	border-radius: 4px;
	box-shadow: 0 3px 8px rgba(var(--fl-shadow), 0.12), 0 22px 44px rgba(var(--fl-shadow), 0.12);
	padding: 40px 34px 46px;
	color: var(--fl-ink);
}
.fl-boxlay__title {
	font-family: var(--fl-font-typed); font-size: 0.78rem;
	letter-spacing: 0.2em; text-transform: uppercase;
	color: var(--fl-stamp);
	margin: 0 0 26px; text-align: center;
}
.fl-boxlay__items { display: flex; align-items: flex-end; justify-content: center; gap: 30px; }
.fl-boxlay__item { text-align: center; }
.fl-boxlay__label {
	font-family: var(--fl-font-typed); font-size: 0.68rem; letter-spacing: 0.08em;
	margin-top: 12px; line-height: 1.5; opacity: 0.75;
}
.fl-boxlay__label strong { display: block; font-size: 0.74rem; opacity: 1; }
/* the book */
.fl-obj-book {
	width: 108px; height: 156px; margin: 0 auto;
	background: linear-gradient(105deg, var(--fl-spice) 0%, var(--fl-spice) 8%, var(--fl-spice-deep) 8.5%, var(--fl-spice) 9.5%, var(--fl-spice) 100%);
	border-radius: 3px 8px 8px 3px;
	box-shadow: inset -6px 0 12px rgba(0,0,0,0.25), 0 8px 18px rgba(var(--fl-shadow), 0.3);
	position: relative;
	transform: rotate(-2deg);
	display: flex; align-items: center; justify-content: center;
}
.fl-obj-book::after {
	content: "EX LIBRIS";
	font-family: var(--fl-font-typed); font-size: 0.6rem; letter-spacing: 0.2em;
	color: var(--fl-brass-soft);
	border: 1px solid var(--fl-brass);
	padding: 8px 10px;
}
/* the bookmark */
.fl-obj-bookmark {
	width: 44px; height: 138px; margin: 0 auto;
	background: var(--fl-paper);
	border: 1px solid rgba(176, 141, 63, 0.5);
	position: relative; transform: rotate(3deg);
	box-shadow: 0 6px 14px rgba(var(--fl-shadow), 0.22);
	clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 88%, 0 100%);
	display: flex; flex-direction: column; align-items: center; padding-top: 12px; gap: 7px;
}
.fl-obj-bookmark::before {
	content: ""; width: 22px; height: 22px; border-radius: 50%;
	border: 2px solid var(--fl-stamp);
	background: transparent;
}
.fl-obj-bookmark::after {
	content: "FERRAND";
	writing-mode: vertical-rl;
	font-family: var(--fl-font-typed); font-size: 0.62rem; letter-spacing: 0.3em;
	color: var(--fl-spice);
	max-height: 92px;
}
/* the rotating object (keychain) */
.fl-obj-charm { width: 72px; margin: 0 auto; position: relative; transform: rotate(-4deg); }
.fl-obj-charm__ring {
	width: 34px; height: 34px; border-radius: 50%;
	border: 4px solid var(--fl-brass);
	margin: 0 auto 6px;
	box-shadow: 0 2px 6px rgba(var(--fl-shadow), 0.3);
}
.fl-obj-charm__fob {
	width: 52px; height: 64px; margin: 0 auto;
	background: linear-gradient(160deg, var(--fl-brass-soft), var(--fl-brass));
	border-radius: 6px;
	display: flex; align-items: center; justify-content: center;
	font-family: var(--fl-font-book); font-weight: 700; font-size: 1.5rem; color: var(--fl-spice-deep);
	box-shadow: 0 6px 14px rgba(var(--fl-shadow), 0.28);
}
.fl-boxlay__always {
	position: absolute; top: 14px; right: 16px;
	font-family: var(--fl-font-typed); font-size: 0.6rem; letter-spacing: 0.12em;
	color: var(--fl-stamp);
	border: 1.5px solid var(--fl-stamp); border-radius: 3px;
	padding: 5px 8px; transform: rotate(6deg);
	opacity: 0.85;
}

/* ============ Reading Pass tiers (library membership cards) ============ */
.fl-tiers {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 28px;
	max-width: 1120px;
	margin: 40px auto 0;
	align-items: stretch;
}
/* the tiers break out of the narrow page column */
.fl-page .fl-tiers {
	width: min(1120px, calc(100vw - 40px));
	margin-left: 50%;
	transform: translateX(-50%);
}
.fl-tier {
	background: var(--fl-card-bg);
	color: var(--fl-ink);
	border: 1px solid rgba(176, 141, 63, 0.45);
	border-radius: 4px;
	overflow: hidden;
	display: flex; flex-direction: column;
	box-shadow: 0 3px 8px rgba(var(--fl-shadow), 0.12), 0 16px 34px rgba(var(--fl-shadow), 0.1);
	transition: transform 0.28s cubic-bezier(0.2, 1, 0.3, 1), box-shadow 0.28s ease;
}
.fl-tier:hover { transform: translateY(-6px); box-shadow: 0 8px 16px rgba(var(--fl-shadow), 0.16), 0 28px 52px rgba(var(--fl-shadow), 0.18); }
.fl-tier--lead { border-color: var(--fl-spice); }
.fl-tier__band {
	background: var(--fl-spice);
	color: var(--fl-stock);
	display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
	padding: 14px 20px;
	font-family: var(--fl-font-book); font-weight: 600; font-size: 1.25rem;
}
.fl-tier--lead .fl-tier__band { background: var(--fl-spice-deep); }
.fl-tier__books { font-family: var(--fl-font-label); font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; opacity: 0.85; }
.fl-tier__annual { padding: 22px 20px 0; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.fl-tier__price { font-family: var(--fl-font-book); font-weight: 700; font-size: 3.4rem; line-height: 1; }
.fl-tier__per { font-family: var(--fl-font-book); font-size: 1.15rem; opacity: 0.75; }
.fl-tier__billed { font-family: var(--fl-font-typed); font-size: 0.74rem; opacity: 0.65; margin: 6px 20px 0; }
.fl-tier__covenant { font-family: var(--fl-font-typed); font-size: 0.68rem; letter-spacing: 0.04em; opacity: 0.65; text-align: center; margin: 10px 20px 0; }
.fl-tier__covenant a { color: var(--fl-spice); text-decoration: none; }
.fl-tier__covenant a:hover { text-decoration: underline; }
.fl-tier--pick { border: 2px solid var(--fl-spice); position: relative; transform: scale(1.02); overflow: visible; }
/* Once the grid is a single full-bleed column the 2% lift hangs off both edges
   and the page scrolls sideways; the spice border already marks the pick. */
@media (max-width: 782px) { .fl-tier--pick { transform: none; } }
.fl-tier--pick .fl-tier__band { border-radius: 2px 2px 0 0; }
.fl-tier__pickstamp {
	position: absolute; top: -13px; left: 50%; transform: translateX(-50%) rotate(-2deg);
	font-family: var(--fl-font-typed); font-size: 0.62rem; letter-spacing: 0.14em;
	color: var(--fl-stock); background: var(--fl-spice);
	border-radius: 3px; padding: 4px 10px;
	box-shadow: 0 3px 8px rgba(var(--fl-shadow), 0.3);
	z-index: 2;
}
.fl-tier__stamp {
	display: inline-block;
	margin: 12px 20px 0;
	font-family: var(--fl-font-typed); font-size: 0.64rem; letter-spacing: 0.14em;
	color: var(--fl-stamp);
	border: 1.5px solid var(--fl-stamp); border-radius: 3px;
	padding: 4px 8px;
	transform: rotate(-2deg);
	align-self: flex-start;
}
.fl-tier__desc { padding: 14px 20px 0; margin: 0; font-size: 0.98rem; line-height: 1.6; flex: 1; }
.fl-tier .fl-btn { margin: 20px 20px 8px; text-align: center; }
.fl-tier__alts {
	font-family: var(--fl-font-typed); font-size: 0.7rem; letter-spacing: 0.04em;
	opacity: 0.6; margin: 0 20px 18px; text-align: center;
}

/* ============ Front page: how it works, quote band, latest notes ============ */
.fl-how__steps {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 24px; margin-top: 30px;
}
.fl-how__step {
	background: var(--fl-card-bg);
	color: var(--fl-ink);
	border: 1px solid rgba(176, 141, 63, 0.4);
	border-radius: 3px;
	padding: 24px 24px 20px;
	position: relative;
	box-shadow: 0 2px 6px rgba(var(--fl-shadow), 0.1), 0 12px 26px rgba(var(--fl-shadow), 0.07);
}
.fl-how__no {
	font-family: var(--fl-font-typed);
	font-size: 0.8rem; color: var(--fl-stamp); letter-spacing: 0.12em;
}
.fl-how__step h3 { font-family: var(--fl-font-book); font-weight: 600; font-size: 1.25rem; margin: 8px 0 8px; }
.fl-how__step p { margin: 0; font-size: 0.98rem; line-height: 1.6; opacity: 0.85; }
.fl-front-tiers { padding-bottom: 0; }
.fl-front-tiers + .wp-block-shortcode .fl-tiers, .fl-tiers { margin-bottom: 26px; }
.fl-quote-band {
	background: var(--fl-spice-deep);
	padding: 60px 20px;
	text-align: center;
	margin-top: 30px;
}
.fl-quote-band blockquote { margin: 0 auto; max-width: 720px; }
.fl-quote-band p {
	font-family: var(--fl-font-book); font-style: italic;
	font-size: clamp(1.4rem, 3vw, 2rem); line-height: 1.4;
	color: #EDE5D0; margin: 0 0 14px;
}
.fl-quote-band cite { font-style: normal; }
.fl-quote-band cite a {
	font-family: var(--fl-font-typed); font-size: 0.78rem; letter-spacing: 0.14em; text-transform: uppercase;
	color: var(--fl-brass-soft); text-decoration: none;
}
.fl-quote-band cite a:hover { text-decoration: underline; text-underline-offset: 4px; }
.fl-latest-notes__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 26px; margin-top: 26px; }
.fl-note--card {
	border: 1px solid rgba(176, 141, 63, 0.4);
	border-bottom: 1px solid rgba(176, 141, 63, 0.4);
	background: var(--fl-card-bg);
	color: var(--fl-ink);
	border-radius: 3px;
	padding: 22px 24px;
	box-shadow: 0 2px 6px rgba(var(--fl-shadow), 0.1);
}
.fl-note--card .fl-note__title { font-size: 1.25rem; }
.fl-note--card .fl-note__title a { color: inherit; }
.fl-latest-notes__all { margin: 26px 0 0; font-family: var(--fl-font-typed); font-size: 0.82rem; }
.fl-latest-notes__all a { color: var(--fl-spice); text-decoration: none; }
.fl-latest-notes__all a:hover { text-decoration: underline; text-underline-offset: 3px; }
html[data-lamp="after"] .fl-latest-notes__all a { color: var(--fl-brass-soft); }
.fl-related { margin-top: 54px; border-top: 1px dashed rgba(176, 141, 63, 0.5); padding-top: 30px; }

/* ============ The Bookplate Fund ============ */
.fl-plate {
	max-width: 560px; margin: 44px auto;
	background: var(--fl-paper);
	border: 1px solid var(--fl-brass);
	padding: 22px;
	box-shadow: 0 4px 12px rgba(var(--fl-shadow), 0.12), 0 20px 44px rgba(var(--fl-shadow), 0.12);
	color: var(--fl-ink);
}
.fl-plate__inner {
	border: 4px solid var(--fl-spice);
	outline: 1px solid var(--fl-brass);
	outline-offset: -12px;
	text-align: center;
	padding: 40px 30px 34px;
}
.fl-plate__ex { font-family: var(--fl-font-book); font-weight: 700; font-size: 2.2rem; letter-spacing: 0.06em; color: var(--fl-spice); margin: 0 0 8px; }
.fl-plate__through { font-family: var(--fl-font-typed); font-size: 0.78rem; letter-spacing: 0.16em; text-transform: uppercase; margin: 0 0 26px; }
.fl-plate__honor { font-family: var(--fl-font-book); font-style: italic; font-size: 1.3rem; margin: 0 0 14px; }
.fl-plate__line { border-bottom: 2px dashed var(--fl-ink); max-width: 300px; margin: 0 auto 10px; height: 1.4em; }
.fl-plate__hint { font-family: var(--fl-font-typed); font-size: 0.68rem; opacity: 0.55; margin: 0; }
.fl-plate-tiers {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
	gap: 16px; max-width: 640px; margin: 10px auto 0;
}
.fl-plate-tier {
	background: var(--fl-card-bg);
	color: var(--fl-ink);
	border: 1px solid rgba(176, 141, 63, 0.5);
	border-radius: 3px;
	text-align: center; text-decoration: none;
	padding: 18px 10px 14px;
	transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}
.fl-plate-tier:hover { transform: translateY(-4px); border-color: var(--fl-spice); box-shadow: 0 10px 24px rgba(var(--fl-shadow), 0.16); }
.fl-plate-tier__count { display: block; font-family: var(--fl-font-book); font-weight: 700; font-size: 2rem; color: var(--fl-spice); }
.fl-plate-tier__label { display: block; font-family: var(--fl-font-typed); font-size: 0.7rem; letter-spacing: 0.08em; margin: 4px 0 6px; }
.fl-plate-tier__price { display: block; font-family: var(--fl-font-label); font-size: 0.85rem; letter-spacing: 0.1em; color: var(--fl-oxblood); }
.fl-plate-tiers__cta { text-align: center; margin: 26px 0 10px; }

/* ============ Comparisons, Covenant, Gifts, Tasting entry, Wall ============ */
.fl-compare { max-width: 860px; margin: 30px auto; padding: 0 20px; overflow-x: auto; }
.fl-compare table {
	width: 100%; min-width: 560px; border-collapse: collapse;
	background: var(--fl-card-bg); color: var(--fl-ink);
	border: 1px solid rgba(176, 141, 63, 0.5);
	font-size: 0.95rem;
}
.fl-compare th, .fl-compare td { padding: 12px 16px; border-bottom: 1px solid rgba(176, 141, 63, 0.3); text-align: left; vertical-align: top; }
.fl-compare th { font-family: var(--fl-font-label); letter-spacing: 0.12em; text-transform: uppercase; font-size: 0.76rem; background: var(--fl-spice); color: var(--fl-stock); }
.fl-compare th:first-child { background: var(--fl-spice-deep); }
.fl-compare td:first-child { font-family: var(--fl-font-typed); font-size: 0.8rem; color: var(--fl-stamp); white-space: nowrap; }
.fl-compare td:last-child { background: rgba(30, 77, 59, 0.05); }
.fl-covenant { max-width: 640px; margin: 10px auto 30px; padding: 0 20px; }
.fl-covenant ol { padding-left: 1.2em; }
.fl-covenant li { margin: 0 0 18px; font-size: 1.08rem; line-height: 1.6; }
.fl-covenant li strong { font-family: var(--fl-font-book); }
.fl-gift-tiers { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 22px; max-width: 860px; margin: 34px auto; padding: 0 20px; }
.fl-gift-tier {
	background: var(--fl-card-bg); color: var(--fl-ink);
	border: 1px solid rgba(176, 141, 63, 0.5); border-radius: 3px;
	text-align: center; text-decoration: none; padding: 26px 16px 22px;
	position: relative;
	transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}
.fl-gift-tier:hover { transform: translateY(-5px); border-color: var(--fl-spice); box-shadow: 0 12px 28px rgba(var(--fl-shadow), 0.16); }
.fl-gift-tier--lead { border-color: var(--fl-spice); }
.fl-gift-tier__months { display: block; font-family: var(--fl-font-book); font-weight: 700; font-size: 2.6rem; color: var(--fl-spice); line-height: 1; }
.fl-gift-tier__label { display: block; font-family: var(--fl-font-typed); font-size: 0.72rem; letter-spacing: 0.06em; margin: 8px 0 12px; }
.fl-gift-tier__price { display: block; font-family: var(--fl-font-book); font-weight: 600; font-size: 1.5rem; }
.fl-gift-tier__stamp {
	position: absolute; top: -12px; right: 12px;
	font-family: var(--fl-font-typed); font-size: 0.6rem; letter-spacing: 0.12em;
	color: var(--fl-stamp); border: 1.5px solid var(--fl-stamp); border-radius: 3px;
	background: var(--fl-card-bg);
	padding: 3px 7px; transform: rotate(4deg);
}
.fl-pp-card {
	max-width: 860px; margin: 20px auto 40px;
	background: var(--fl-card-bg); color: var(--fl-ink);
	border: 1px solid rgba(110, 43, 43, 0.55); border-left: 4px solid var(--fl-oxblood);
	border-radius: 3px;
	display: flex; gap: 26px; align-items: center; justify-content: space-between;
	padding: 24px 28px; flex-wrap: wrap;
	box-shadow: 0 3px 10px rgba(var(--fl-shadow), 0.1);
}
.fl-pp-card__body h3 { font-family: var(--fl-font-book); font-weight: 600; font-size: 1.5rem; margin: 4px 0 8px; }
.fl-pp-card__body p { margin: 0; max-width: 34em; }
.fl-pp-card__buy { text-align: center; }
.fl-pp-card__price { display: block; font-family: var(--fl-font-book); font-weight: 700; font-size: 2rem; }
.fl-pp-card__price small { font-size: 0.9rem; font-weight: 400; }
.fl-pp-card__alt { display: block; font-family: var(--fl-font-typed); font-size: 0.72rem; opacity: 0.65; margin: 4px 0 12px; }
.fl-dedication-wall { max-width: 860px; margin: 40px auto 20px; padding: 0 20px; }
.fl-dedication-wall__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 18px; margin-top: 16px; }
.fl-dedication {
	background: var(--fl-paper); color: var(--fl-ink);
	border: 1px solid rgba(176, 141, 63, 0.5);
	padding: 16px 18px 12px;
	box-shadow: 0 2px 6px rgba(var(--fl-shadow), 0.1);
}
.fl-dedication p { font-family: var(--fl-font-typed); font-size: 0.85rem; line-height: 1.6; margin: 0 0 8px; }
.fl-dedication span { font-family: var(--fl-font-label); font-size: 0.68rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--fl-brass); }

/* ============ The Reader's Accession Card ============ */
.fl-taste-record { max-width: 620px; margin: 10px auto 40px; }
.fl-taste-record__row { font-family: var(--fl-font-typed); font-size: 0.82rem; line-height: 1.7; margin: 0 0 6px; }
.fl-taste-record__row span { color: var(--fl-stamp); margin-right: 0.5em; }
.fl-taste-record .fl-card__imprint a { color: var(--fl-spice); }
.fl-taste-cta {
	max-width: 620px; margin: 10px auto 40px; text-align: center;
	background: var(--fl-card-bg); color: var(--fl-ink);
	border: 1px dashed rgba(176, 141, 63, 0.6); border-radius: 3px;
	padding: 30px 26px;
}
.fl-taste-cta p { margin: 0 0 14px; }

/* ============ Impact line + Your Shelf ============ */
.fl-impact-line {
	text-align: center;
	font-family: var(--fl-font-typed);
	font-size: 0.86rem; letter-spacing: 0.1em;
	opacity: 0.72;
	margin: 0;
	padding: 30px 20px 46px;
}
.fl-impact-line strong { color: var(--fl-spice); font-weight: 400; }
html[data-lamp="after"] .fl-impact-line strong { color: var(--fl-brass-soft); }
.fl-your-shelf {
	background: var(--fl-card-bg);
	color: var(--fl-ink);
	border: 1px solid rgba(176, 141, 63, 0.45);
	border-left: 3px solid var(--fl-spice);
	border-radius: 3px;
	padding: 20px 24px;
	max-width: 480px;
	box-shadow: 0 3px 10px rgba(var(--fl-shadow), 0.1);
}
.fl-your-shelf__books { font-family: var(--fl-font-book); font-weight: 600; font-size: 1.3rem; margin: 0 0 6px; }
.fl-your-shelf__donated { margin: 0 0 12px; font-size: 0.98rem; }
.fl-your-shelf__bar {
	height: 10px; border-radius: 999px;
	background: var(--fl-stock-deep);
	border: 1px solid rgba(176, 141, 63, 0.4);
	overflow: hidden;
}
.fl-your-shelf__bar span {
	display: block; height: 100%;
	background: linear-gradient(90deg, var(--fl-spice), var(--fl-brass));
	border-radius: 999px;
	transition: width 0.6s ease;
}

/* ============ Footer ============ */
.fl-footer {
	background: var(--fl-spice-deep);
	color: #E9E2CC;
	padding: 54px 20px 30px;
	margin-top: 40px;
}
.fl-footer__inner { max-width: 1200px; margin: 0 auto; }
.fl-footer__grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 40px; margin-bottom: 40px; }
.fl-footer__brand p { margin: 10px 0 0; font-size: 0.95rem; opacity: 0.8; max-width: 30em; }
.fl-footer__motto { font-family: var(--fl-font-typed); font-size: 0.78rem !important; letter-spacing: 0.04em; opacity: 0.6 !important; }
.fl-nav__account { text-decoration: none; font-family: var(--fl-font-label); font-size: 0.8rem; letter-spacing: 0.12em; text-transform: uppercase; line-height: 1.15; }
.fl-footer__title { font-family: var(--fl-font-book); font-weight: 600; font-size: 1.35rem; margin: 0; }
.fl-footer__col h3 {
	font-family: var(--fl-font-label); font-size: 0.8rem;
	letter-spacing: 0.2em; text-transform: uppercase;
	color: var(--fl-brass-soft); margin: 0 0 14px;
}
.fl-footer__col a { display: block; color: #E9E2CC; text-decoration: none; padding: 4px 0; font-size: 0.95rem; opacity: 0.85; }
.fl-footer__col a:hover { opacity: 1; color: var(--fl-brass-soft); }
.fl-footer__base {
	border-top: 1px solid rgba(233, 226, 204, 0.15);
	padding-top: 22px;
	display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
}
.fl-footer__legal { font-size: 0.85rem; opacity: 0.65; font-family: var(--fl-font-label); letter-spacing: 0.06em; }
.fl-ameen-pill {
	display: inline-block;
	font-family: var(--fl-font-label); font-size: 0.78rem; letter-spacing: 0.1em;
	background: var(--fl-stock); color: var(--fl-spice-deep);
	padding: 7px 16px; border-radius: 999px;
	text-decoration: none;
	transition: background-color 0.25s ease, transform 0.25s ease;
}
.fl-ameen-pill:hover { background: var(--fl-brass-soft); transform: translateY(-2px); }

/* ============ Single book ============ */
.fl-book-single { max-width: 1000px; margin: 0 auto; padding: 40px 20px 70px; }
.fl-book-single__top { display: grid; grid-template-columns: minmax(0, 1fr) 240px; gap: 44px; align-items: start; }
.fl-book-single__cover img { width: 100%; height: auto; border: 1px solid rgba(var(--fl-shadow), 0.2); box-shadow: 0 14px 34px rgba(var(--fl-shadow), 0.25); }
.fl-book-single .fl-card { max-width: 560px; }
.fl-book-single__desc { margin-top: 44px; font-size: 1.12rem; line-height: 1.75; max-width: 46em; }
.fl-book-single__desc p { margin: 0 0 1.2em; }
.fl-detail-list {
	margin-top: 34px;
	font-family: var(--fl-font-typed); font-size: 0.84rem; line-height: 2.1;
	border-top: 1px dashed rgba(176, 141, 63, 0.5);
	padding-top: 18px;
	max-width: 34em;
}
.fl-detail-list span { color: var(--fl-stamp); margin-right: 0.6em; }
html[data-lamp="after"] .fl-detail-list span { color: var(--fl-brass-soft); }

/* ============ Manifesto prose (Odyssey, About, Giving) ============ */
.fl-manifesto { max-width: 640px; margin: 0 auto; font-size: 1.12rem; line-height: 1.78; }
.fl-manifesto p { margin: 0 0 1.35em; }
.fl-manifesto__open {
	font-family: var(--fl-font-book); font-style: italic;
	font-size: 1.4rem; line-height: 1.5;
	color: var(--fl-spice);
}
html[data-lamp="after"] .fl-manifesto__open { color: var(--fl-brass-soft); }
.fl-manifesto__close { border-top: 1px dashed rgba(176, 141, 63, 0.5); padding-top: 1.3em; }
.fl-manifesto strong { font-family: var(--fl-font-book); font-weight: 700; }
.fl-manifesto a { color: var(--fl-spice); text-underline-offset: 3px; }
html[data-lamp="after"] .fl-manifesto a { color: var(--fl-brass-soft); }

/* ============ Reading Notes journal ============ */
.fl-journal { max-width: 720px; margin: 0 auto; padding: 30px 20px 70px; }
.fl-note {
	border-bottom: 1px dashed rgba(176, 141, 63, 0.5);
	padding: 30px 0 34px;
}
.fl-note:last-of-type { border-bottom: 0; }
.fl-note__date, .fl-note-single .fl-note__date {
	font-family: var(--fl-font-typed);
	font-size: 0.74rem; letter-spacing: 0.14em; text-transform: uppercase;
	color: var(--fl-stamp);
}
html[data-lamp="after"] .fl-note__date { color: var(--fl-brass-soft); }
.fl-note__title { font-family: var(--fl-font-book); font-weight: 600; font-size: 1.65rem; line-height: 1.2; margin: 8px 0 10px; }
.fl-note__title a { text-decoration: none; }
.fl-note__title a:hover { color: var(--fl-oxblood); }
html[data-lamp="after"] .fl-note__title a:hover { color: var(--fl-brass-soft); }
.fl-note__excerpt { font-size: 1.04rem; line-height: 1.65; opacity: 0.88; }
.fl-note-single h1 { margin-bottom: 4px; }
.fl-note-single .wp-block-post-content { margin-top: 26px; font-size: 1.12rem; line-height: 1.75; }
.fl-note-single .wp-block-post-content p { margin: 0 0 1.2em; }
.fl-note__return { margin-top: 40px; font-family: var(--fl-font-typed); font-size: 0.82rem; }
.fl-note__return a { text-decoration: none; color: var(--fl-spice); }
html[data-lamp="after"] .fl-note__return a { color: var(--fl-brass-soft); }
.wp-block-query-pagination { display: flex; justify-content: space-between; margin-top: 30px; font-family: var(--fl-font-typed); font-size: 0.85rem; }

/* ============ Generic page ============ */
.fl-page { max-width: 760px; margin: 0 auto; padding: 46px 20px 80px; }
.fl-page h1 { font-family: var(--fl-font-book); font-weight: 600; font-size: clamp(2rem, 4.4vw, 2.9rem); }

/* ============ Archive header ============ */
.fl-archive-head { text-align: center; padding: 50px 20px 6px; }
.fl-archive-head .fl-kicker { margin-bottom: 10px; }
.fl-archive-head h1 { font-family: var(--fl-font-book); font-weight: 600; font-size: clamp(2rem, 4.5vw, 3rem); margin: 0 0 10px; }
.fl-archive-head p { font-family: var(--fl-font-typed); font-size: 0.85rem; letter-spacing: 0.1em; opacity: 0.65; margin: 0; }

/* ============ The drawer: filter deck ============ */
.fl-filter-deck {
	max-width: 1200px; margin: 26px auto 0;
	padding: 0 20px;
	display: grid;
	grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) minmax(0, 1fr);
	gap: 16px;
}
.fl-filter-deck__label {
	display: block;
	font-family: var(--fl-font-label); font-size: 0.72rem;
	letter-spacing: 0.2em; text-transform: uppercase;
	color: var(--fl-brass);
	margin-bottom: 6px;
}
.fl-filter-deck input[type="search"],
.fl-filter-deck select {
	width: 100%;
	font-family: var(--fl-font-typed); font-size: 0.92rem;
	color: var(--fl-ink);
	background: var(--fl-paper);
	border: 1px solid rgba(176, 141, 63, 0.55);
	border-radius: 2px;
	padding: 11px 12px;
	box-shadow: inset 0 1px 3px rgba(var(--fl-shadow), 0.09);
}
.fl-filter-deck input[type="search"]:focus,
.fl-filter-deck select:focus {
	outline: 2px solid var(--fl-brass);
	outline-offset: 1px;
}
.fl-drawer-count {
	max-width: 1200px; margin: 14px auto 0;
	padding: 0 20px;
	font-family: var(--fl-font-typed); font-size: 0.8rem;
	letter-spacing: 0.08em; opacity: 0.6;
}
.fl-drawer-empty {
	text-align: center; padding: 60px 20px 30px;
	font-family: var(--fl-font-typed);
}
@keyframes fl-riffle-in {
	from { opacity: 0; transform: translateY(14px) rotate(-0.8deg); }
	to { opacity: 1; transform: none; }
}

/* ============ Vault panel + buy slot ============ */
.fl-vault-panel {
	background: var(--fl-card-bg);
	color: var(--fl-ink);
	border: 1px solid rgba(176, 141, 63, 0.4);
	border-left: 3px solid var(--fl-spice);
	border-radius: 3px;
	padding: 22px 26px;
	margin: 36px 0 0;
	box-shadow: 0 3px 10px rgba(var(--fl-shadow), 0.1);
	font-size: 1.02rem; line-height: 1.7;
}
.fl-vault-panel p { margin: 0 0 1em; }
.fl-vault-panel p:last-child { margin-bottom: 0; }
.fl-buy-slot { margin-top: 20px; text-align: center; }
.fl-buy-slot .fl-btn { width: 100%; text-align: center; }
.fl-buy-slot__note {
	font-family: var(--fl-font-typed); font-size: 0.72rem;
	letter-spacing: 0.06em; opacity: 0.65; margin: 10px 0 0;
}
.fl-buy-slot__shelf {
	font-family: var(--fl-font-typed); font-size: 0.78rem;
	letter-spacing: 0.06em; opacity: 0.6;
	text-align: center; margin-top: 18px;
}

/* ============ FluentCart, paper edition ============ */
.fct-product-gallery-wrapper img { border: 1px solid rgba(176, 141, 63, 0.4); box-shadow: 0 10px 30px rgba(var(--fl-shadow), 0.16); }
.fct-product-tab-nav-item {
	font-family: var(--fl-font-label) !important;
	letter-spacing: 0.14em; text-transform: uppercase;
	font-size: 0.82rem !important;
	color: var(--fl-page-text);
}
.fct-product-tab-nav-item.active, .fct-product-tab-nav-item[aria-selected="true"] {
	color: var(--fl-spice);
	border-color: var(--fl-brass) !important;
}
html[data-lamp="after"] .fct-product-tab-nav-item.active { color: var(--fl-brass-soft); }
.fct-product-variant-item {
	font-family: var(--fl-font-typed) !important;
	background: var(--fl-paper) !important;
	border: 1px solid rgba(176, 141, 63, 0.55) !important;
	border-radius: 2px !important;
	color: var(--fl-ink) !important;
}
.fct-product-variant-item.selected, .fct-product-variant-item[aria-checked="true"], .fct-product-variant-item.active {
	border-color: var(--fl-spice) !important;
	box-shadow: 0 0 0 2px var(--fl-spice) !important;
}
.fct-product-item-price, .fct-item-price {
	font-family: var(--fl-font-book);
	color: var(--fl-page-text);
}
.fluent-cart-direct-checkout-button, .fct_buy_section button {
	font-family: var(--fl-font-label) !important;
	font-size: 0.92rem !important;
	letter-spacing: 0.16em !important; text-transform: uppercase !important;
	background: var(--fl-spice) !important;
	color: var(--fl-stock) !important;
	border: 1px solid var(--fl-spice-deep) !important;
	border-radius: 2px !important;
	padding: 14px 28px !important;
	transition: background-color 0.3s ease, box-shadow 0.3s ease !important;
}
.fluent-cart-direct-checkout-button:hover, .fct_buy_section button:hover {
	background: var(--fl-oxblood) !important;
	box-shadow: 0 8px 20px rgba(var(--fl-shadow), 0.22) !important;
}
.fct-checkout-modal { border-radius: 4px !important; border: 1px solid var(--fl-brass) !important; }
.fct-checkout-modal-close { background: var(--fl-spice) !important; color: var(--fl-stock) !important; }
/* product page column rhythm */
.single-fluent-products .wp-block-post-content { max-width: 1100px; margin: 30px auto 60px; padding: 0 20px; }

/* ============ Fluent Forms, paper edition ============ */
.fluentform { max-width: 640px; margin: 20px auto 0; }
.fluentform .ff-el-form-control {
	font-family: var(--fl-font-typed);
	font-size: 0.95rem;
	color: var(--fl-ink);
	background: var(--fl-paper);
	border: 1px solid rgba(176, 141, 63, 0.55);
	border-radius: 2px;
	box-shadow: inset 0 1px 3px rgba(var(--fl-shadow), 0.09);
	padding: 11px 12px;
}
.fluentform .ff-el-form-control:focus {
	outline: 2px solid var(--fl-brass);
	outline-offset: 1px;
	border-color: var(--fl-brass);
	box-shadow: none;
}
.fluentform .ff-el-input--label label {
	font-family: var(--fl-font-label);
	font-size: 0.74rem; letter-spacing: 0.18em; text-transform: uppercase;
	color: var(--fl-brass);
}
.fluentform .ff-btn-submit {
	font-family: var(--fl-font-label);
	font-size: 0.92rem; letter-spacing: 0.16em; text-transform: uppercase;
	background: var(--fl-spice);
	color: var(--fl-stock);
	border: 1px solid var(--fl-spice-deep);
	border-radius: 2px;
	padding: 13px 26px;
	cursor: pointer;
	transition: background-color 0.3s ease, box-shadow 0.3s ease;
}
.fluentform .ff-btn-submit:hover { background: var(--fl-oxblood); box-shadow: 0 8px 20px rgba(var(--fl-shadow), 0.22); }
.fluentform .ff-message-success {
	font-family: var(--fl-font-typed);
	background: var(--fl-paper);
	color: var(--fl-ink);
	border: 1.5px solid var(--fl-spice);
	border-radius: 3px;
	padding: 16px 20px;
}

/* ============ Edition-verified + report panel + wanted list ============ */
.fl-card__everified {
	display: inline-block; margin-left: 8px;
	font-size: 0.6rem; letter-spacing: 0.1em;
	color: var(--fl-spice);
	border: 1px solid var(--fl-spice); border-radius: 2px;
	padding: 1px 4px; vertical-align: 1px;
}
.fl-everified-badge {
	display: inline-block;
	font-family: var(--fl-font-typed); font-size: 0.68rem; letter-spacing: 0.14em;
	color: var(--fl-stamp);
	border: 2px solid var(--fl-stamp); border-radius: 3px;
	padding: 6px 10px; transform: rotate(-1.5deg);
	margin: 0 0 14px;
}
.fl-report-panel {
	background: var(--fl-card-bg);
	color: var(--fl-ink);
	border: 1px solid rgba(176, 141, 63, 0.4);
	border-left: 3px solid var(--fl-oxblood);
	border-radius: 3px;
	padding: 22px 26px;
	margin: 36px 0 0;
	box-shadow: 0 3px 10px rgba(var(--fl-shadow), 0.1);
	font-size: 1.02rem; line-height: 1.7;
}
.fl-report-panel p { margin: 0 0 1em; }
.fl-report-panel p:last-child { margin-bottom: 0; }
.fl-report-panel__teaser {
	font-family: var(--fl-font-typed); font-size: 0.78rem !important;
	letter-spacing: 0.04em; opacity: 0.8;
	border-top: 1px dashed rgba(176, 141, 63, 0.5); padding-top: 1em;
}
.fl-report-panel__teaser a { color: var(--fl-spice); }
.fl-listing-report { margin-top: 18px; }
.fl-listing-report__teaser { font-family: var(--fl-font-typed); font-size: 0.78rem; opacity: 0.8; }
.fl-wanted-section { max-width: 640px; margin: 0 auto 34px; }
.fl-wanted-section h2 { font-family: var(--fl-font-book); font-weight: 600; font-size: 1.5rem; margin: 0 0 4px; }
.fl-wanted-note { font-family: var(--fl-font-typed); font-size: 0.76rem; opacity: 0.65; margin: 0 0 14px; }
.fl-wanted-list { list-style: none; margin: 0; padding: 0; }
.fl-wanted-list li {
	display: flex; align-items: baseline; gap: 12px;
	border-bottom: 1px dashed rgba(176, 141, 63, 0.45);
	padding: 10px 2px;
}
.fl-wanted-fl { font-family: var(--fl-font-typed); font-size: 0.72rem; color: var(--fl-stamp); }
.fl-wanted-list a { font-family: var(--fl-font-book); font-size: 1.08rem; text-decoration: none; color: inherit; }
.fl-wanted-list a:hover { color: var(--fl-spice); text-decoration: underline; text-underline-offset: 3px; }
.fl-wanted-author { font-family: var(--fl-font-typed); font-size: 0.72rem; opacity: 0.6; margin-left: auto; }
.fl-wanted-empty { text-align: center; font-family: var(--fl-font-typed); opacity: 0.7; }

/* ============ Reveal on scroll ============ */
.fl-reveal { opacity: 0; transform: translateY(18px); transition: opacity 0.7s ease, transform 0.7s ease; }
.fl-reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
	.fl-reveal { opacity: 1; transform: none; transition: none; }
	.fl-card, .fl-btn { transition: none; }
}

/* ============ Mobile ============ */
@media (max-width: 900px) {
	.fl-hero__inner { grid-template-columns: 1fr; gap: 40px; }
	.fl-book-single__top { grid-template-columns: 1fr; }
	.fl-book-single__cover { order: -1; max-width: 210px; }
	.fl-footer__grid { grid-template-columns: 1fr; gap: 28px; }
}
@media (max-width: 600px) {
	.fl-catalog-grid { grid-template-columns: 1fr; }
	.fl-filter-deck { grid-template-columns: 1fr; }
	.fl-boxlay__items { gap: 16px; }
	.fl-rail { gap: 1em; font-size: 0.68rem; }
	.fl-masthead { padding: 40px 16px 30px; }
}

/* Relations: where a book stands next to the others */
.fl-relation {
	max-width: 720px; margin: 0 auto 14px;
	padding: 10px 16px;
	border-left: 3px solid var(--fl-brass, #B08D3F);
	background: rgba(176, 141, 63, 0.08);
	font-size: 0.94rem; line-height: 1.6;
}
.fl-relation a { color: var(--fl-spice, #A64B12); }

/* Series: the number leads, because order is the point */
.fl-series-grid { display: grid; gap: 26px 20px; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); max-width: 1120px; margin: 0 auto; padding: 0 22px 70px; }
.fl-series-item { position: relative; }
.fl-series-no {
	position: absolute; top: -14px; left: -10px; z-index: 3;
	width: 40px; height: 40px; line-height: 40px; text-align: center;
	background: var(--fl-spice, #A64B12); color: #F6F1E3;
	border-radius: 50%;
	font-family: 'American Typewriter', 'Courier New', monospace; font-size: 1rem;
	box-shadow: 0 3px 8px rgba(30, 25, 12, 0.28);
}

/* ==========================================================================
   Cookie consent, dressed in library stock.
   CookieAdmin ships Arial and a 4px radius; the colours come from its own
   settings (inline, left alone) and everything below is typography, rule and
   spacing so the notice reads as one more card off the shelf.
   ========================================================================== */
.cookieadmin_law_container,
.cookieadmin_cookie_modal,
.cookieadmin_law_container *,
.cookieadmin_cookie_modal * { font-family: var(--fl-font-book, 'EB Garamond', Georgia, serif); }

/* The footer notice mirrors the masthead rail: edge to edge, brass hairline.
   The plugin insets the whole bar by 15px; a rail with a gap is not a rail. */
.cookieadmin_law_container.cookieadmin_footer { padding: 0; }
.cookieadmin_law_container.cookieadmin_footer .cookieadmin_consent_inside {
	border-width: 2px 0 0 0;
	border-top-style: solid;
	border-radius: 0;
	box-shadow: 0 -6px 24px rgba(33, 32, 28, 0.14);
	padding: 24px clamp(22px, 5vw, 64px) 26px;
}

/* Title and body share one measure, so they share one left edge. */
.cookieadmin_law_container.cookieadmin_footer #cookieadmin_notice_title,
.cookieadmin_law_container.cookieadmin_footer .cookieadmin_notice_group {
	max-width: 1180px;
	margin-left: auto;
	margin-right: auto;
}
.cookieadmin_law_container.cookieadmin_footer .cookieadmin_notice_con { padding-left: 0; padding-right: 0; }

/* Title: typed, not shouted. */
#cookieadmin_notice_title,
#cookieadmin_preference_title {
	font-family: var(--fl-font-typed, 'Special Elite', monospace) !important;
	font-size: 1rem;
	letter-spacing: 0.01em;
	margin: 0 auto 10px;
}
.cookieadmin_notice_con { line-height: 1.6; font-size: 1.02rem; max-width: 74ch; }
.cookieadmin_notice_con p { margin: 0; }

/* Buttons wear the house label: narrow, uppercase, squared off. */
.cookieadmin_btn {
	font-family: var(--fl-font-label, 'Archivo Narrow', sans-serif) !important;
	text-transform: uppercase;
	letter-spacing: 0.09em;
	font-size: 0.82rem;
	border-radius: 2px;
	border: 1px solid var(--fl-brass, #B08D3F);
	padding: 11px 20px;
	transition: transform 0.14s ease, box-shadow 0.14s ease;
}
.cookieadmin_btn:hover { transform: translateY(-1px); box-shadow: 0 3px 10px rgba(33, 32, 28, 0.18); }
.cookieadmin_customize_btn { border-color: transparent; text-decoration: underline; text-underline-offset: 3px; }
.cookieadmin_customize_btn:hover { border-color: var(--fl-brass, #B08D3F); text-decoration: none; }

/* Policy links belong together under the prose, not split across the bar. */
.cookieadmin_law_container.cookieadmin_footer .cookieadmin_notice_group { position: relative; }
.cookieadmin_law_container.cookieadmin_footer .cookieadmin_policy_link_box {
	display: inline-block;
	margin: 10px 18px 0 0;
}
.cookieadmin_law_container.cookieadmin_footer .cookieadmin_policy_link_box a {
	font-family: var(--fl-font-label, 'Archivo Narrow', sans-serif);
	text-transform: uppercase;
	letter-spacing: 0.09em;
	font-size: 11px;
	text-underline-offset: 3px;
	display: inline-block;
}
/* Both links share one container with nothing between them, so the gap and
   the separator have to be drawn here or they read as one run of text. */
.cookieadmin_law_container.cookieadmin_footer .cookieadmin_policy_link_box a + a {
	margin-left: 20px;
	position: relative;
}
.cookieadmin_law_container.cookieadmin_footer .cookieadmin_policy_link_box a + a::before {
	content: "\00B7";
	position: absolute;
	left: -12px;
	text-decoration: none;
	color: var(--fl-brass, #B08D3F);
}

/* The drawer of categories. */
.cookieadmin_cookie_modal { border-radius: 3px; }
.cookieadmin_cookie_modal .cookieadmin_mod_head { border-bottom: 1px solid var(--fl-brass, #B08D3F); }
.cookieadmin_types .cookieadmin_header { font-family: var(--fl-font-typed, 'Special Elite', monospace); }
.cookieadmin_remark,
.cookieadmin_show_pref_cookies {
	font-family: var(--fl-font-label, 'Archivo Narrow', sans-serif) !important;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-size: 0.76rem;
}

/* Inside the drawer, Save is the one real action; Accept steps back. */
.cookieadmin_cookie_modal .cookieadmin_accept_btn {
	background-color: var(--fl-stock-deep, #EFE7D2) !important;
	color: var(--fl-ink, #21201C) !important;
}

@media (prefers-reduced-motion: reduce) {
	.cookieadmin_btn { transition: none; }
	.cookieadmin_btn:hover { transform: none; }
}

@media (max-width: 600px) {
	.cookieadmin_law_container.cookieadmin_footer .cookieadmin_consent_inside { padding: 18px 18px 20px; }
	.cookieadmin_btn { width: 100%; margin: 4px 0; }
}

/* ==========================================================================
   The gates: the 404 card. Same anatomy as an accession card, because a page
   that is missing should still look like it belongs to this library.
   The static 401/403/500/503 documents in /errors/ carry their own copy of
   these rules, since the web server serves them without WordPress.
   ========================================================================== */
.fl-gate-page { padding: 56px 22px 96px; }
.fl-gate {
	position: relative;
	max-width: 620px; margin: 0 auto;
	background: var(--fl-paper);
	border: 1px solid var(--fl-brass);
	border-radius: 2px;
	box-shadow: 0 12px 34px rgba(var(--fl-shadow), 0.14);
	padding: 44px 44px 62px;
	text-align: center;
}
.fl-gate::before {
	content: ""; position: absolute; top: 14px; bottom: 14px; left: 20px;
	width: 1px; background: rgba(163, 51, 39, 0.42);
}
.fl-gate::after {
	content: ""; position: absolute; left: 50%; bottom: 16px; transform: translateX(-50%);
	width: 14px; height: 14px; border-radius: 50%;
	background: var(--fl-stock-deep); box-shadow: inset 0 1px 2px rgba(30, 25, 12, 0.35);
}
.fl-gate__callno {
	font-family: var(--fl-font-typed); font-size: 13px; letter-spacing: 0.14em;
	color: var(--fl-stamp); margin: 0 0 10px;
}
.fl-gate__kicker {
	font-family: var(--fl-font-label); text-transform: uppercase; letter-spacing: 0.16em;
	font-size: 11.5px; color: var(--fl-oxblood); margin: 0 0 12px;
}
.fl-gate__title {
	font-family: var(--fl-font-book); font-weight: 600;
	font-size: clamp(26px, 4.6vw, 34px); line-height: 1.2; margin: 0 0 14px; color: var(--fl-ink);
}
.fl-gate__body {
	font-size: 16.5px; line-height: 1.68; color: var(--fl-muted, #6B6355);
	margin: 0 auto 26px; max-width: 46ch;
}
.fl-gate__actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.fl-btn--ghost { background: var(--fl-stock-deep); color: var(--fl-ink); }
.fl-btn--ghost:hover { background: var(--fl-stock); }
@media (max-width: 520px) { .fl-gate { padding: 34px 24px 56px; } }

/* ==========================================================================
   Policy pages. A privacy policy is still a document from this library, so it
   gets the same paper, the same typed labels and the same numbered tracings
   the catalog cards use. Long prose, set to be read rather than skimmed past.
   ========================================================================== */
.fl-policy { max-width: 760px; margin: 0 auto; padding: 0 22px 90px; }
.fl-policy__stamp {
	display: inline-block;
	font-family: var(--fl-font-typed); font-size: 11px; letter-spacing: 0.12em;
	color: var(--fl-stamp); border: 1px solid rgba(163, 51, 39, 0.5);
	border-radius: 2px; padding: 5px 10px; transform: rotate(-1.2deg);
	margin: 0 0 22px;
}
/* The short version sits in a card, because most people read only this. */
.fl-policy__tldr {
	position: relative;
	background: var(--fl-paper);
	border: 1px solid var(--fl-brass);
	border-left: 3px solid var(--fl-spice);
	border-radius: 2px;
	padding: 26px 30px;
	margin: 0 0 42px;
	box-shadow: 0 6px 20px rgba(var(--fl-shadow), 0.10);
}
.fl-policy__tldr h2 {
	font-family: var(--fl-font-typed); font-size: 13px; letter-spacing: 0.12em;
	text-transform: uppercase; color: var(--fl-oxblood); margin: 0 0 14px;
}
.fl-policy__tldr ul { margin: 0; padding-left: 20px; }
.fl-policy__tldr li {
	font-family: var(--fl-font-book); font-size: 16.5px; line-height: 1.62;
	color: var(--fl-ink); margin: 0 0 9px;
}
.fl-policy__tldr li::marker { color: var(--fl-brass); }

.fl-policy section { margin: 0 0 38px; }
.fl-policy h2.fl-policy__h {
	font-family: var(--fl-font-book); font-size: clamp(21px, 3vw, 26px);
	font-weight: 600; color: var(--fl-ink); margin: 0 0 6px; line-height: 1.25;
}
.fl-policy h2.fl-policy__h .n {
	font-family: var(--fl-font-typed); font-size: 13px; color: var(--fl-stamp);
	margin-right: 10px; vertical-align: 2px;
}
.fl-policy h3 {
	font-family: var(--fl-font-label); text-transform: uppercase; letter-spacing: 0.1em;
	font-size: 12px; color: var(--fl-oxblood); margin: 22px 0 8px;
}
.fl-policy p, .fl-policy li {
	font-family: var(--fl-font-book); font-size: 17px; line-height: 1.72; color: var(--fl-ink);
}
.fl-policy p { margin: 0 0 14px; }
.fl-policy ul { margin: 0 0 14px; padding-left: 20px; }
.fl-policy li { margin: 0 0 7px; }
.fl-policy a { color: var(--fl-oxblood); text-underline-offset: 3px; }
.fl-policy a:hover { color: var(--fl-spice); }
.fl-policy hr.fl-policy__rule {
	border: 0; border-top: 1px solid var(--fl-brass); margin: 34px 0;
}

/* The cookie register: a table that still reads as a card drawer. */
.fl-cookies { border-collapse: collapse; width: 100%; margin: 0 0 20px; }
.fl-cookies th {
	font-family: var(--fl-font-label); text-transform: uppercase; letter-spacing: 0.1em;
	font-size: 11px; color: var(--fl-oxblood); text-align: left;
	padding: 0 12px 8px 0; border-bottom: 1px solid var(--fl-brass);
}
.fl-cookies td {
	font-family: var(--fl-font-book); font-size: 15.5px; line-height: 1.55; color: var(--fl-ink);
	padding: 11px 12px 11px 0; border-bottom: 1px solid var(--fl-stock-deep); vertical-align: top;
}
.fl-cookies td code {
	font-family: var(--fl-font-typed); font-size: 13px; color: var(--fl-stamp);
	background: none; padding: 0;
}
.fl-cookies tr:last-child td { border-bottom: 0; }
@media (max-width: 640px) {
	.fl-cookies, .fl-cookies tbody, .fl-cookies tr, .fl-cookies td { display: block; width: 100%; }
	.fl-cookies thead { display: none; }
	.fl-cookies tr { border-bottom: 1px solid var(--fl-stock-deep); padding: 10px 0; }
	.fl-cookies td { border: 0; padding: 3px 0; }
	.fl-cookies td:first-child { font-family: var(--fl-font-typed); }
}
