/* Stratum -- base layout, header, hero, and strata-band system. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }

body.st-body {
	margin: 0;
	background: var(--st-ground);
	color: var(--st-ink);
	font-family: var(--st-font-body);
	font-size: var(--st-size-0);
	line-height: 1.55;
	-webkit-font-smoothing: antialiased;
}

a { color: inherit; }
img { max-width: 100%; display: block; }

.st-visually-hidden {
	position: absolute; width: 1px; height: 1px; overflow: hidden;
	clip: rect(0 0 0 0); white-space: nowrap; border: 0; padding: 0; margin: -1px;
}

.st-skip-link {
	position: absolute; top: -999px; left: 0; z-index: 999;
	background: var(--st-ink); color: var(--st-ground);
	padding: var(--st-space-2) var(--st-space-3);
	font-family: var(--st-font-body); font-weight: 600;
}
.st-skip-link:focus { top: 0; }

:focus-visible {
	outline: 2px solid var(--st-amber);
	outline-offset: 3px;
}

/* ---------------------------------------------------------------------
   Header. A thin instrument rail, not a centered logo bar -- the brand
   mark sits flush left at the grid edge, nav runs as a dense inline list
   with hairline separators (echoing the strata dividers used everywhere
   else), and the whole thing sits on a 1px rule rather than a shadow.
   ------------------------------------------------------------------- */
.st-header {
	position: sticky; top: 0; z-index: 40;
	display: flex; align-items: center; justify-content: space-between;
	gap: var(--st-space-4);
	padding: var(--st-space-3) var(--st-space-4);
	background: color-mix(in srgb, var(--st-ground) 92%, transparent);
	backdrop-filter: blur(10px);
	border-bottom: 1px solid var(--st-line);
}

.st-brand {
	display: flex; align-items: baseline; gap: var(--st-space-2);
	text-decoration: none; color: var(--st-ink);
	font-family: var(--st-font-display);
	font-weight: 900;
	font-size: var(--st-size-2);
	letter-spacing: -.01em;
	line-height: 1;
	white-space: nowrap;
}
.st-brand small {
	font-family: var(--st-font-mono);
	font-size: .625rem;
	font-weight: 500;
	letter-spacing: .12em;
	color: var(--st-ink-soft);
	text-transform: uppercase;
}

.st-nav { display: flex; align-items: center; gap: 0; min-width: 0; }
.st-nav ul {
	display: flex; align-items: center; list-style: none; margin: 0; padding: 0;
	font-family: var(--st-font-mono);
	font-size: .8125rem;
	letter-spacing: .02em;
}
.st-nav li { display: flex; align-items: center; }
.st-nav li + li::before {
	content: '/';
	color: var(--st-ink-faint);
	margin: 0 var(--st-space-2);
}
.st-nav a {
	text-decoration: none;
	padding: var(--st-space-1) 0;
	border-bottom: 1px solid transparent;
	transition: border-color .15s ease, color .15s ease;
}
.st-nav a:hover, .st-nav a:focus-visible { border-color: var(--st-amber); color: var(--st-amber-deep); }
.st-nav .current-menu-item a { border-color: var(--st-ink); }

.st-header-tools { display: flex; align-items: center; gap: var(--st-space-3); flex-shrink: 0; }
.st-icon-btn {
	display: inline-flex; align-items: center; justify-content: center;
	width: 2.25rem; height: 2.25rem;
	border: 1px solid var(--st-line-strong);
	background: transparent; color: var(--st-ink);
	border-radius: 50%;
	cursor: pointer;
}
.st-icon-btn svg { width: 1rem; height: 1rem; }

.st-nav-toggle { display: none; }

@media (max-width: 900px) {
	.st-nav { display: none; }
	.st-nav-toggle {
		display: inline-flex; align-items: center; justify-content: center;
		width: 2.25rem; height: 2.25rem; border: 1px solid var(--st-line-strong);
		background: none; cursor: pointer; flex-shrink: 0;
	}
}

/* ---------------------------------------------------------------------
   Strata bands. Every homepage section is a "band" of deliberately
   different height and rhythm -- not a repeating card-grid module. Each
   carries a mono eyebrow + index that encodes an actual position in the
   skin's real depth sequence where relevant (not decorative numbering).
   ------------------------------------------------------------------- */
.st-band {
	position: relative;
	border-bottom: 1px solid var(--st-line);
	padding: var(--st-space-16) var(--st-space-4);
}
.st-band > .st-band-inner {
	max-width: var(--st-container);
	margin: 0 auto;
}

.st-eyebrow {
	display: inline-flex; align-items: baseline; gap: var(--st-space-2);
	font-family: var(--st-font-mono);
	font-size: .75rem;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--st-ink-soft);
	margin: 0 0 var(--st-space-3);
}
.st-eyebrow .st-eyebrow-index {
	color: var(--st-amber-deep);
	font-weight: 600;
}

/* ---------------------------------------------------------------------
   Hero band: full-bleed photographic hero. The photograph IS the hero --
   headline sits low, overlaid directly on the image with a heavy scrim,
   not beside it in a boxed panel. A floating spec card breaks the frame
   at the bottom edge (sharp, amber-edged -- Stratum's own vocabulary,
   not a borrowed rounded-glass card), and a mono stat strip sits in the
   opposite top corner so the composition uses all four corners instead
   of one centered block.
   ------------------------------------------------------------------- */
.st-hero {
	position: relative;
	min-height: clamp(34rem, 92vh, 62rem);
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	isolation: isolate;
}
.st-hero-media { overflow: hidden; }
.st-hero-media {
	position: absolute; inset: 0;
	z-index: 0;
}
.st-hero-photo {
	width: 100%; height: 100%;
	object-fit: cover; object-position: 62% 38%;
	display: block;
	filter: grayscale(1) contrast(1.1) brightness(.92);
}
.st-hero-media::after {
	content: "";
	position: absolute; inset: 0;
	background:
		linear-gradient(90deg, color-mix(in srgb, var(--st-ink) 88%, transparent) 0%, color-mix(in srgb, var(--st-ink) 55%, transparent) 32%, transparent 62%),
		linear-gradient(0deg, color-mix(in srgb, var(--st-ink) 92%, transparent) 0%, color-mix(in srgb, var(--st-ink) 40%, transparent) 30%, transparent 58%),
		linear-gradient(180deg, color-mix(in srgb, var(--st-ink) 55%, transparent) 0%, transparent 26%);
}
.st-hero-content {
	position: relative; z-index: 1;
	max-width: var(--st-container);
	margin: 0 auto;
	width: 100%;
	padding: var(--st-space-16) var(--st-space-8) var(--st-space-16);
}
.st-eyebrow--on-photo { color: color-mix(in srgb, var(--st-paper) 78%, transparent); }
.st-eyebrow--on-photo .st-eyebrow-index { color: var(--st-amber); }
.st-hero-title {
	font-family: var(--st-font-display);
	font-weight: 900;
	font-style: normal;
	text-transform: uppercase;
	letter-spacing: -.015em;
	line-height: .84;
	margin: var(--st-space-3) 0 0;
	color: var(--st-paper);
	font-size: clamp(4rem, 2.2rem + 9vw, 9.5rem);
	text-wrap: balance;
	max-width: 20ch;
}
.st-hero-title em {
	font-style: normal;
	color: var(--st-amber);
}
.st-hero-lede {
	font-family: var(--st-font-editorial);
	font-style: italic;
	font-size: var(--st-size-2);
	line-height: 1.4;
	color: color-mix(in srgb, var(--st-paper) 82%, transparent);
	max-width: 34ch;
	margin: var(--st-space-6) 0 0;
	text-wrap: balance;
}
.st-hero-cta {
	display: flex; flex-wrap: wrap; align-items: center; gap: var(--st-space-4);
	margin-top: var(--st-space-8);
}
.st-btn {
	display: inline-flex; align-items: center; gap: var(--st-space-2);
	font-family: var(--st-font-mono);
	font-size: .8125rem; font-weight: 500; letter-spacing: .04em;
	text-decoration: none;
	padding: var(--st-space-3) var(--st-space-5);
	border: 1px solid var(--st-ink);
	border-radius: var(--st-radius);
	background: var(--st-ink); color: var(--st-ground);
	transition: background .15s ease, border-color .15s ease, color .15s ease, transform .15s ease;
}
.st-btn:hover, .st-btn:focus-visible { background: var(--st-amber-deep); border-color: var(--st-amber-deep); transform: translateY(-1px); }
.st-btn--ghost {
	background: transparent; color: var(--st-ink); border-color: var(--st-line-strong);
}
.st-btn--ghost:hover, .st-btn--ghost:focus-visible { border-color: var(--st-ink); background: transparent; color: var(--st-ink); }
.st-btn--on-photo {
	color: var(--st-paper); border-color: color-mix(in srgb, var(--st-paper) 55%, transparent);
}
.st-btn--on-photo:hover, .st-btn--on-photo:focus-visible {
	border-color: var(--st-paper); background: color-mix(in srgb, var(--st-paper) 12%, transparent); color: var(--st-paper);
}
.st-hero-cta .st-btn:not(.st-btn--ghost) {
	background: var(--st-amber); border-color: var(--st-amber); color: var(--st-ink);
}
.st-hero-cta .st-btn:not(.st-btn--ghost):hover, .st-hero-cta .st-btn:not(.st-btn--ghost):focus-visible {
	background: var(--st-paper); border-color: var(--st-paper); color: var(--st-ink);
}

.st-hero-figures {
	position: absolute; z-index: 1;
	top: var(--st-space-8); right: var(--st-space-8);
	display: flex; gap: var(--st-space-6);
	text-align: right;
}
.st-hero-figure dt {
	font-family: var(--st-font-mono); font-size: .625rem; letter-spacing: .1em;
	text-transform: uppercase; color: color-mix(in srgb, var(--st-paper) 55%, transparent); margin: 0 0 .25rem;
}
.st-hero-figure dd {
	font-family: var(--st-font-mono); font-size: var(--st-size-1); font-weight: 500;
	color: var(--st-paper); margin: 0; font-variant-numeric: tabular-nums;
}

/* Floating spec card: half-overlaps the hero's bottom edge so it reads
   as breaking the frame between the hero and the next band, rather than
   living tidily inside either one. */
.st-hero-float-card {
	position: absolute; z-index: 2;
	right: var(--st-space-8); bottom: 0;
	transform: translateY(50%);
	display: flex; align-items: center; gap: var(--st-space-4);
	max-width: 24rem;
	background: var(--st-paper);
	border-left: 3px solid var(--st-amber);
	box-shadow: 0 1.25rem 3rem -1rem color-mix(in srgb, var(--st-ink) 45%, transparent);
	padding: var(--st-space-5) var(--st-space-5);
	text-decoration: none;
	transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.st-hero-float-card:hover, .st-hero-float-card:focus-visible {
	transform: translateY(calc(50% - 4px));
	box-shadow: 0 1.5rem 3.5rem -1rem color-mix(in srgb, var(--st-ink) 55%, transparent);
	border-color: var(--st-amber-deep);
}
.st-hero-float-index {
	font-family: var(--st-font-mono); font-weight: 700; font-size: .8125rem;
	color: var(--st-amber-deep); flex-shrink: 0;
}
.st-hero-float-body { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.st-hero-float-title {
	font-family: var(--st-font-body); font-weight: 600; font-size: .9375rem;
	color: var(--st-ink); line-height: 1.25;
}
.st-hero-float-sub {
	font-family: var(--st-font-mono); font-size: .75rem; color: var(--st-ink-soft); line-height: 1.3;
}
.st-hero-float-arrow {
	font-size: 1.125rem; color: var(--st-amber); flex-shrink: 0; margin-left: auto;
	transition: transform .2s ease;
}
.st-hero-float-card:hover .st-hero-float-arrow, .st-hero-float-card:focus-visible .st-hero-float-arrow { transform: translateY(3px); }

@media (max-width: 900px) {
	.st-hero { min-height: 46rem; }
	.st-hero-content { padding: var(--st-space-10) var(--st-space-5) var(--st-space-12); }
	.st-hero-title { font-size: clamp(3rem, 2rem + 11vw, 5.5rem); max-width: 14ch; }
	.st-hero-figures {
		position: static;
		margin-top: var(--st-space-8); margin-left: var(--st-space-5); margin-right: var(--st-space-5);
		justify-content: flex-start; text-align: left; flex-wrap: wrap; row-gap: var(--st-space-4);
	}
	.st-hero-float-card {
		position: static; transform: none; max-width: none; box-shadow: none;
		margin-top: var(--st-space-6); margin-left: var(--st-space-5); margin-right: var(--st-space-5);
	}
}

/* ---------------------------------------------------------------------
   Cross-section band: the signature depth diagram gets its own full
   band, with a running mono readout beside it rather than inside it.
   ------------------------------------------------------------------- */
.st-section-band { background: var(--st-paper); }
.st-section-grid {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	gap: var(--st-space-8);
	align-items: start;
}
.st-section-head h2 {
	font-family: var(--st-font-display);
	font-weight: 700;
	text-transform: uppercase;
	font-size: var(--st-size-4);
	line-height: .95;
	letter-spacing: -.005em;
	margin: 0 0 var(--st-space-4);
	text-wrap: balance;
}
.st-section-head p {
	max-width: var(--st-measure);
	color: var(--st-ink-soft);
	font-size: var(--st-size-1);
	line-height: 1.6;
}
.st-section-caption {
	font-family: var(--st-font-mono); font-size: .75rem; color: var(--st-ink-faint);
	margin-top: var(--st-space-3);
}

.st-cross-section {
	position: relative;
	border: 1px solid var(--st-line-strong);
	background: var(--st-ground);
	min-height: 34rem;
	overflow: hidden;
}
.st-cross-section canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.st-cross-section-readout {
	position: absolute; top: var(--st-space-4); left: var(--st-space-4); right: var(--st-space-4);
	display: flex; justify-content: space-between; align-items: flex-start;
	font-family: var(--st-font-mono); font-size: .75rem; color: var(--st-ink-soft);
	pointer-events: none;
}
.st-cross-section-readout strong {
	display: block; color: var(--st-ink); font-size: var(--st-size-2);
	font-weight: 500;
}

@media (max-width: 900px) {
	.st-section-grid { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------------------
   Data band: the ingredient/depth table -- deliberately dense, mono,
   spreadsheet-honest, not another rounded-card grid.
   ------------------------------------------------------------------- */
.st-data-table { width: 100%; border-collapse: collapse; font-size: .875rem; }
.st-data-table caption { text-align: left; margin-bottom: var(--st-space-4); }
.st-data-table th, .st-data-table td {
	text-align: left; padding: var(--st-space-3) var(--st-space-3) var(--st-space-3) 0;
	border-bottom: 1px solid var(--st-line);
	vertical-align: top;
}
.st-data-table thead th {
	font-family: var(--st-font-mono); font-size: .6875rem; letter-spacing: .1em;
	text-transform: uppercase; color: var(--st-ink-faint); font-weight: 500;
	border-bottom: 1px solid var(--st-line-strong);
}
.st-data-table td.st-mono, .st-data-table th.st-mono { font-family: var(--st-font-mono); font-variant-numeric: tabular-nums; }
.st-data-table .st-ingredient-name { font-weight: 600; }
.st-data-table .st-ingredient-inci { display: block; font-family: var(--st-font-mono); font-size: .75rem; color: var(--st-ink-faint); font-weight: 400; }
.st-layer-chip {
	display: inline-flex; align-items: center; gap: .4em;
	font-family: var(--st-font-mono); font-size: .75rem;
	padding: .2em .6em; border-radius: 999px; border: 1px solid var(--st-line-strong);
	white-space: nowrap;
}
.st-layer-chip::before { content: ''; width: .5em; height: .5em; border-radius: 50%; background: currentColor; }
.st-layer-chip--amber { color: var(--st-amber-deep); }
.st-layer-chip--verdigris { color: var(--st-verdigris-deep); }

.st-table-wrap { overflow-x: auto; }

/* ---------------------------------------------------------------------
   Editorial pull-quote band.
   ------------------------------------------------------------------- */
.st-quote-band {
	background: var(--st-ink); color: var(--st-ground);
	position: relative; overflow: hidden;
	border-left: 3px solid var(--st-amber);
}
.st-quote-grid {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: var(--st-space-6);
	align-items: start;
}
.st-quote-mark {
	font-family: var(--st-font-display); font-weight: 900;
	font-size: clamp(6rem, 4rem + 8vw, 12rem);
	line-height: .7; margin: 0; margin-top: -.08em;
	color: var(--st-amber-deep);
	user-select: none;
}
.st-quote {
	max-width: 42rem;
	font-family: var(--st-font-editorial);
	font-style: italic;
	font-size: clamp(1.6rem, 1.2rem + 1.6vw, var(--st-size-3));
	line-height: 1.35;
	text-wrap: balance;
	margin: 0;
	padding-top: clamp(1.5rem, 1rem + 2vw, 3rem);
}
.st-quote cite {
	display: block; font-style: normal; font-family: var(--st-font-mono);
	font-size: .8125rem; color: color-mix(in srgb, var(--st-ground) 62%, transparent);
	margin-top: var(--st-space-4);
}
@media (max-width: 700px) {
	.st-quote-grid { grid-template-columns: 1fr; gap: var(--st-space-2); }
	.st-quote-mark { font-size: 5rem; }
	.st-quote { padding-top: 0; }
}

/* ---------------------------------------------------------------------
   Footer.
   ------------------------------------------------------------------- */
.st-footer { padding: var(--st-space-8) var(--st-space-4) var(--st-space-6); }
.st-footer-inner { max-width: var(--st-container); margin: 0 auto; }
.st-footer-grid {
	display: grid; grid-template-columns: 2fr repeat(3, 1fr); gap: var(--st-space-6);
	padding-bottom: var(--st-space-6); border-bottom: 1px solid var(--st-line);
}
.st-footer-grid h3 {
	font-family: var(--st-font-mono); font-size: .6875rem; letter-spacing: .1em;
	text-transform: uppercase; color: var(--st-ink-faint); margin: 0 0 var(--st-space-3);
}
.st-footer-grid ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--st-space-2); }
.st-footer-grid a { text-decoration: none; font-size: .9375rem; }
.st-footer-grid a:hover { color: var(--st-amber-deep); }
.st-footer-bottom {
	display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--st-space-2);
	padding-top: var(--st-space-4);
	font-family: var(--st-font-mono); font-size: .75rem; color: var(--st-ink-faint);
}
@media (max-width: 700px) { .st-footer-grid { grid-template-columns: 1fr 1fr; } }

@media (prefers-reduced-motion: reduce) {
	* { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}

/* ---------------------------------------------------------------------
   Static fallback for the cross-section canvas: reduced-motion, no
   WebGL2, or save-data. A real layered illustration via CSS gradients --
   not a blank box -- so the signature idea still reads with JS/GPU off.
   ------------------------------------------------------------------- */
[data-st-cross-section].st-cross-section--static {
	/* Contrast matched to the WebGL shader's boosted values (see
	   cross-section.js) -- a reduced-motion/no-WebGL visitor should see a
	   diagram that reads at a glance, not a second-class faint gradient. */
	background:
		linear-gradient(180deg,
			color-mix(in srgb, var(--st-amber) 22%, var(--st-paper)) 0%, color-mix(in srgb, var(--st-amber) 22%, var(--st-paper)) 7%,
			color-mix(in srgb, var(--st-amber) 30%, var(--st-ink) 20%) 7%, color-mix(in srgb, var(--st-amber) 30%, var(--st-ink) 20%) 22%,
			color-mix(in srgb, var(--st-verdigris) 26%, var(--st-ink) 58%) 22%, color-mix(in srgb, var(--st-verdigris) 26%, var(--st-ink) 68%) 78%,
			color-mix(in srgb, var(--st-verdigris) 8%, var(--st-ground) 80%) 78%, color-mix(in srgb, var(--st-verdigris) 8%, var(--st-ground) 80%) 100%);
}
[data-st-cross-section].st-cross-section--static::after {
	content: attr(data-st-static-caption);
	position: absolute; inset: auto var(--st-space-4) var(--st-space-4) var(--st-space-4);
	font-family: var(--st-font-mono); font-size: .6875rem; color: var(--st-ink-soft);
}

/* ---------------------------------------------------------------------
   Formulas archive: a real photograph-led card grid. An earlier version
   of this page was a dense mono list with 64px thumbnails -- defensible
   in theory ("spreadsheet-honest, not another card grid"), but in
   practice it read as a thin admin table, not a catalogue anyone would
   buy from. Photography leads; the mono/data layer (chips, format,
   price) rides along as a second layer of information, not the whole
   page.
   ------------------------------------------------------------------- */
.st-filter-bar {
	display: flex; flex-wrap: wrap; gap: var(--st-space-3);
	margin-bottom: var(--st-space-10);
}
.st-filter-bar a {
	display: inline-flex; align-items: center;
	font-family: var(--st-font-mono); font-size: .8125rem; letter-spacing: .02em;
	text-decoration: none; color: var(--st-ink-soft);
	padding: var(--st-space-2) var(--st-space-4);
	border: 1px solid var(--st-line-strong);
	border-radius: var(--st-radius);
	transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.st-filter-bar a:hover, .st-filter-bar a:focus-visible { border-color: var(--st-ink); color: var(--st-ink); }
.st-filter-bar a.is-current { background: var(--st-ink); border-color: var(--st-ink); color: var(--st-ground); }

.st-formula-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr));
	gap: var(--st-space-8) var(--st-space-6);
}
.st-formula-card {
	display: block; text-decoration: none; color: var(--st-ink);
	min-width: 0;
}
.st-formula-card-media {
	position: relative;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background: var(--st-paper-deep);
	margin-bottom: var(--st-space-4);
}
.st-formula-card-media img {
	position: absolute; inset: 0; width: 100%; height: 100%;
	object-fit: cover;
	filter: grayscale(1) contrast(1.05);
	transition: transform .5s cubic-bezier(.16,1,.3,1), filter .5s ease;
}
.st-formula-card:hover .st-formula-card-media img, .st-formula-card:focus-visible .st-formula-card-media img {
	transform: scale(1.04);
	filter: grayscale(0) contrast(1.05);
}
.st-formula-card-media-empty {
	position: absolute; inset: 0;
	display: flex; align-items: center; justify-content: center;
	padding: var(--st-space-4); text-align: center;
	font-family: var(--st-font-mono); font-size: .75rem; color: var(--st-ink-faint);
	background:
		repeating-linear-gradient(135deg, transparent 0 10px, color-mix(in srgb, var(--st-ink) 6%, transparent) 10px 11px);
}
.st-formula-card-price {
	position: absolute; right: var(--st-space-3); bottom: var(--st-space-3);
	font-family: var(--st-font-mono); font-weight: 600; font-size: .9375rem;
	background: var(--st-ground); color: var(--st-ink);
	padding: .3em .6em;
	font-variant-numeric: tabular-nums;
}
.st-formula-card-chips {
	display: flex; flex-wrap: wrap; align-items: center; gap: var(--st-space-3);
	margin-bottom: var(--st-space-2);
}
.st-formula-card-format {
	font-family: var(--st-font-mono); font-size: .6875rem; letter-spacing: .08em;
	text-transform: uppercase; color: var(--st-ink-faint);
}
.st-formula-card-name {
	font-family: var(--st-font-display); font-weight: 700; text-transform: uppercase;
	font-size: var(--st-size-2); letter-spacing: -.005em; line-height: 1.05;
	margin: 0 0 .3em;
}
.st-formula-card-strap {
	color: var(--st-ink-soft); font-size: .9375rem; line-height: 1.4; margin: 0;
}
.st-formula-card:hover .st-formula-card-name, .st-formula-card:focus-visible .st-formula-card-name { color: var(--st-amber-deep); }

/* ---------------------------------------------------------------------
   Formula single: the photograph is the dominant visual (matching the
   homepage hero's rule); the per-formula cross-section diagram becomes
   a smaller, clearly secondary panel underneath it, not the entire
   visual slot -- a page selling a $58 product cannot lead with a
   diagram in place of a photo of the product.
   ------------------------------------------------------------------- */
.st-formula-head-grid {
	display: grid;
	grid-template-columns: minmax(0, 6fr) minmax(0, 5fr);
	gap: var(--st-space-10);
	align-items: start;
}
.st-formula-eyebrow-row { display: flex; align-items: center; gap: var(--st-space-3); margin-bottom: var(--st-space-3); }
.st-formula-format-chip {
	font-family: var(--st-font-mono); font-size: .6875rem; letter-spacing: .08em; text-transform: uppercase;
	color: var(--st-ink-soft); border: 1px solid var(--st-line-strong); border-radius: var(--st-radius);
	padding: .2em .6em;
}
.st-formula-name {
	font-family: var(--st-font-display); font-weight: 900; text-transform: uppercase;
	letter-spacing: -.01em; line-height: .92; margin: 0;
	font-size: clamp(2.2rem, 1.6rem + 2.6vw, var(--st-size-4));
}
.st-formula-strap {
	font-family: var(--st-font-editorial); font-style: italic; font-size: var(--st-size-1);
	color: var(--st-ink-soft); max-width: 34ch; margin: var(--st-space-3) 0 0;
}
.st-formula-price-row {
	display: flex; align-items: baseline; gap: var(--st-space-3);
	margin-top: var(--st-space-5); padding-top: var(--st-space-4);
	border-top: 1px solid var(--st-line);
}
.st-formula-price { font-family: var(--st-font-mono); font-weight: 700; font-size: var(--st-size-3); font-variant-numeric: tabular-nums; }
.st-formula-size { font-family: var(--st-font-mono); font-size: .875rem; color: var(--st-ink-soft); }

.st-formula-anchors h2 {
	font-family: var(--st-font-mono); font-size: .6875rem; letter-spacing: .1em; text-transform: uppercase;
	color: var(--st-ink-faint); margin: var(--st-space-8) 0 var(--st-space-4);
}
.st-formula-anchor-list { list-style: none; margin: 0; padding: 0; }
.st-formula-anchor-list li {
	padding: var(--st-space-4) 0; border-top: 1px solid var(--st-line);
	cursor: default; transition: background .15s ease;
}
.st-formula-anchor-list li:last-child { border-bottom: 1px solid var(--st-line); }
.st-formula-anchor-list li:hover, .st-formula-anchor-list li:focus-visible { background: color-mix(in srgb, var(--st-amber) 6%, transparent); outline: none; }
.st-formula-anchor-name { font-weight: 600; margin-right: var(--st-space-3); }
.st-formula-anchor-note { color: var(--st-ink-soft); font-size: .9375rem; margin: var(--st-space-1) 0 0; max-width: 46ch; }

.st-formula-visual { display: flex; flex-direction: column; gap: var(--st-space-5); }
.st-formula-visual-photo {
	position: relative; aspect-ratio: 4 / 5; overflow: hidden; background: var(--st-paper-deep);
}
.st-formula-visual-photo img {
	position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
	filter: grayscale(1) contrast(1.05);
}
.st-formula-visual-diagram {
	position: relative; min-height: 11rem; overflow: hidden;
}
.st-formula-visual-diagram .st-formula-visual-diagram-label {
	position: absolute; z-index: 1; left: var(--st-space-4); top: var(--st-space-3);
	font-family: var(--st-font-mono); font-size: .6875rem; letter-spacing: .08em; text-transform: uppercase;
	color: var(--st-paper); pointer-events: none;
}
/* Without a photo (an honest gap, not force-filled), the diagram takes
   the full visual slot at its old, larger size -- still the strongest
   thing available, just no longer masquerading as a product photo. */
.st-formula-visual:not(:has(.st-formula-visual-photo)) .st-formula-visual-diagram { min-height: 32rem; }

.st-usage-note {
	border-left: 3px solid var(--st-amber); background: var(--st-paper);
	padding: var(--st-space-5) var(--st-space-6);
	max-width: var(--st-measure);
}
.st-usage-note p { margin: 0; color: var(--st-ink-soft); }

@media (max-width: 900px) {
	.st-formula-head-grid { grid-template-columns: 1fr; }
	.st-formula-visual { order: -1; }
}
