/* The post that released a theme (inc/release-post.php). Design source:
   lab/the-post-that-released-a-theme.html. Tokens only.

   THE READING COLUMN SPEAKS FIRST (2026-08-24): the article gives every
   direct child of the content block the reading size through a selector
   carrying two classes and a :not — more specific than one class, so the
   note came out at 22px. Everything here that carries words states its
   voice under the same two-class prefix, and wins. */
/* THE NOTE IS PROSE (Manuel, 2026-08-24): no box, no status colour — the
   sentence simply stands at the top of the panel in the reading face, at
   body size, the way the post itself is set. */
/* THE DESCRIPTION under the grey box: one paragraph in the reading voice,
   saying what the theme is today. It is ordinary prose, not a note. */
.release-blurb,
.single-post-article .wp-block-post-content .release-blurb {
	/* THE SAME AIR ABOVE AS BELOW (Manuel, 2026-08-27): the archive card
	   stands --space-20 under this paragraph, so the paragraph stands
	   --space-20 under the coffee card. One gap, twice. */
	margin: var(--space-20) 0 0;
	font-family: var(--font-reading);
	font-size: var(--text-reading-body);
	line-height: var(--text-reading-body-line-height);
	color: var(--text-primary);
}
.single-post-article .wp-block-post-content .release-group-title {
	font-family: var(--font-sans);
	font-size: var(--text-lg);
	font-weight: 600;
	line-height: var(--text-base-line-height);
}

/* THE "LAST CHECKED" LINE STANDS IN THE PANEL (Manuel, 2026-08-26): the
   blue box under the picture made three boxes in a stack, which was too
   many. The sentence now opens the demo panel: full width across both
   columns, the group titles' sans and size but regular weight, and a
   hairline under it before the buttons. The panel's grid gap (40) is
   twice the padding; the negative margin brings the hairline's own air
   back to the panel's 20. */
.release-checked,
.single-post-article .wp-block-post-content .release-checked {
	flex-basis: 100%;
	margin: 0 0 calc(var(--space-5) - var(--space-5) * 2);
	padding: 0 0 var(--space-5);
	border-bottom: var(--border-width-default) solid var(--border-subtle);
	color: var(--text-primary);
	font-family: var(--font-sans);
	font-size: var(--text-lg);
	font-weight: 400;
	line-height: var(--text-base-line-height);
}


/* THE GROUPS: a title in the author box's voice, the buttons under it —
   and both on one card (Manuel, 2026-08-24), on the subtle ground so the
   panel reads as the current thing beside the archived post. The corner is
   the buttons' own, stepped out by the padding, so the arcs nest. */
.release-panel,
.single-post-article .wp-block-post-content .release-panel { margin-top: var(--space-8); }
/* TWO COLUMNS (Manuel, 2026-08-24): where to see it and where to get it
   stand beside each other, not stacked. The sentence spans both. Below
   about 520px of card the columns fall back into one, which is the same
   thing the reading column does on a phone. */
/* A BUTTON NEVER LEAVES ITS CARD (Manuel, 2026-09-24, a screenshot: in a mono
   face "Theme auf GitHub herunterladen" ran past the card's right edge). The
   grid's two columns were as wide as the card allowed, whatever their button
   needed, so a long label spilled out. A wrapping row instead: each group is
   at least as wide as its widest button, and when two no longer fit side by
   side the second drops under the first. The sentence still spans the row. */
.release-panel {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	/* THE GAP IS TWICE THE PADDING (Manuel, 2026-08-24): the rule sits in
	   its middle, so each column stands the card's own --space-5 away from
	   it — the same distance as from the card's edge. 20 + 20 = 40. */
	gap: calc(var(--space-5) * 2);
	padding: var(--space-5);
	/* The field is declared as the interaction surface, not just painted:
	   `quire-surface` on the element reads THIS variable to derive hover,
	   selected and press. Painting alone left the rungs measured from the
	   page. */
	/* THE CARD RUNG (2026-09-08, 1.1.597, judged on lab/the-release-post.html):
	   the panel sat on the old "subtle" surface, which in the dark room is
	   BELOW the paper — so a button resting on the paper's colour hovered
	   darker than it rested, and read as having no hover at all (Manuel:
	   "the buttons don't have hover"). One card fill, like every card: the
	   paper as the mixing ground, one step up as the fill. */
	--interaction-surface: var(--surface-base);
	background: var(--surface-hover);
	--panel-ground: var(--surface-hover); /* the panel's own colour, named for its buttons (DS-365) */
	/* THE HAIRLINE IS BACK (Manuel, 2026-08-25, same evening), together
	   with the theme card's: the grey field on the white paper still wants
	   an edge to hold it apart. The rule between the columns stays gone. */
	/* One rung lighter than the controls' edge (Manuel, 2026-08-25: "visible
	   but lighter"): a field's outline should not compete with a button's. */
	border: var(--line-enclose) solid var(--border-subtle); /* a step, not a line (DS-353) */
	/* THE SAME CORNER AS THE ARCHIVE CARD (Manuel, 2026-08-24): two cards on
	   one page are one family, and this one was rounder than its neighbour. */
	border-radius: calc(var(--space-2-5) + var(--radius-row, var(--radius-control-base))); /* ADDS TO THE ROW CORNER (2026-09-26, the nesting audit): on the action square's own token the card took the pill's 999 and became a stadium that cut its headings and buttons, under Pill and at Very large */
}
/* The grid's gap is the distance now; the group states none of its own. */
.release-group {
	margin-top: 0;
	flex: 1 1 var(--layout-menu-min-width);
	min-inline-size: fit-content; /* its widest button, but never more than the card */
}
/* On a card narrower than the button itself, the label wraps inside it. */
.release-actions .quire-button { max-inline-size: 100%; white-space: normal; }
/* THE HAIRLINE BETWEEN THE COLUMNS IS GONE (Manuel, 2026-08-25). It was
   drawn on 2026-08-24 to hold the two groups apart; the gap already does
   that, and inside a panel that is itself a tinted field the rule was a
   third edge in a small box — the panel's own, the buttons' own, and one
   more down the middle. The distance between the columns is unchanged. */
.release-group-title { margin: 0 0 var(--space-3); color: var(--text-primary); }
/* THE BUTTONS STACK (Manuel, 2026-08-24): one demo a row, so a theme with
   many of them — Uku — grows downward instead of running into a second
   line of wrapped pills. They keep their own width. */
.release-actions {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--space-2);
	/* The buttons stand on the panel, not on the paper (DS-365, the theme
	   card's fix, see themes-page.css): a rung above the panel's colour. */
	--interaction-surface: var(--panel-ground);
	background: transparent;
}
/* LIFTED OFF THE GREY (Manuel, 2026-08-24): a white pill on the panel's
   own grey needs a hairline's worth of separation the border alone does
   not give. --elevation-raised-contained is the system's smallest lift —
   1px of contact and a 12px ambient, no stroke, because the button already
   carries its own. The same lift goes on the unfold button, which stands
   over the fading text. */
.release-actions .quire-button {
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: var(--space-1-5);
	/* The lift of 2026-08-24 went with the outline (DS-365). */
}
/* THE SYSTEM RULES THE MARK NOW (DS-331, 2026-08-27). This block used to say
   `width: 1em; height: 1em` and name no stroke, so the eye drew at 16 with a
   1px line — the SVG default, not the family's 1.25. Manuel, on the release
   panel: "the eye icon looks too small, too thin." Both halves came from the
   component ruling a slot it never filled: `.quire-button` said nothing about
   a glyph, so every consumer answered differently. It says it now, and the
   right amount of CSS here is none. */
/* THE HOVER WAS INVISIBLE (Manuel, 2026-08-27): the panel is a
   quire-surface, so it derives --surface-hover from its own subtle field,
   and that rung lands on the same grey the button already rests on
   (--surface-base). Same answer as the theme card: both states step one
   rung past the panel's. */
/* One step under the pointer, one more on the press (Manuel, 2026-09-07:
   the hover was "way too strong for a secondary button" once DS-354 took the
   panel's ground a rung deeper and selected went with it). */
/* GONE (1.1.603, Manuel: "the hover on that button is weird"): these two
   reached the PRIMARY download button too and painted it the paper's grey
   under its white text. Every filled button hovers from its own fill by
   the site rule since 1.1.597, and the primary has its own states. */

/* THE ARCHIVE (2026-08-24, the card kept): a hairline and the bold title
   OUTSIDE, then the old post inside one outlined card — cropped when
   folded, the fade over its foot ending in the page's own ground, and the
   button riding the fade the way the code block's does. */
/* A WIDER GAP BETWEEN THE TWO CARDS (Manuel, 2026-08-24): the section step
   read as "still the same thing" with two cards either side of it. The
   rhythm's next step up — a new thing begins — separates them instead. */
/* PAST THE SCALE, ON PURPOSE (Manuel, 2026-08-24, third ask): 80 is the
   last rung and it was still reading as one block. 120 is a stated
   distance, derived from that rung, and it is a distance between two
   cards — not a rhythm step anything else should inherit. */
/* AND IT HAS TO BE SAID UNDER THE COLUMN'S OWN PREFIX (2026-08-24). The
   article sets `margin: 0 0 <paragraph>` on EVERY direct child of the
   content block through a two-class selector; a one-class rule here lost
   to it silently and the gap measured 0 while the stylesheet said 120.
   Three asks on this distance, and this is why none of them moved the page;
   80 is what it wanted once the rule actually applied. */
/* A POST WRITTEN NOW (Manuel, 2026-08-27): the five block themes whose
   release post was written in August 2026 carry no archive card; the text
   stands in the open, the same distance under the panel as the card. */
.release-body,
.single-post-article .wp-block-post-content .release-body { margin-top: var(--space-20); }
.release-archive,
.single-post-article .wp-block-post-content .release-archive {
	margin-top: var(--space-20);
	padding-bottom: var(--space-8);
}
.release-archive-banner,
.single-post-article .wp-block-post-content .release-archive-banner {
	/* NO BOX EITHER (Manuel, 2026-08-24): the sentence introducing the old
	   post is prose like the note above it — the reading face, body size,
	   italic to mark it as the editor speaking rather than the post. Then
	   a gap, a hairline, a gap, and the post itself begins. */
	margin: 0 0 var(--space-5);
	padding: 0 0 var(--space-5);
	border: 0;
	border-bottom: var(--border-width-default) solid var(--border-default);
	background: none;
	border-radius: 0;
	/* ITALIC, IN THE INK (Manuel, 2026-08-25, evening): the archive note is
	   the one italic sentence on the page, black; the accent lives on the
	   checked line above the panel instead. */
	color: var(--text-primary);
	font-family: var(--font-reading);
	font-style: italic;
	font-size: var(--text-reading-body);
	line-height: var(--text-reading-body-line-height);
}
.release-archive-card {
	position: relative;
	overflow: clip;
	border: var(--line-enclose) solid var(--border-default); /* DS-353 */
	border-radius: calc(var(--space-2-5) + var(--radius-row, var(--radius-control-base))); /* ADDS TO THE ROW CORNER (2026-09-26, the nesting audit): on the action square's own token the card took the pill's 999 and became a stadium that cut its headings and buttons, under Pill and at Very large */
	--interaction-surface: var(--surface-base); /* the paper (1.1.597) */
	/* A ground of its own (Manuel, 2026-09-07: "that folder section is just
	   irritating without lines" — a line OR a ground, never nothing). The
	   same grey as the support note: a box on the paper (2026-09-07 evening). */
	background: var(--surface-hover); /* THE CARD RUNG since 1.1.597: with the panel above and the support note, three boxes on one page sat on three greys */
	--fill-fade: 0px;
}
/* AND THE BAND GROWS BY THAT LINE (Manuel, 2026-08-26: "it looks like a
   complete fill, we can't see through"). Pulling the opaque point up one
   line inside a band of the same height shortened the see-through ramp to
   about a line and a half, and the fold read as a solid block with the text
   cut off. The band is one reading line taller now, so the ramp is as long
   as it was before 1.1.172 and the opaque stretch under it is the one line
   plus the button's air. */
/* AND MEASURED IN LINES, WITH LINES TO SHOW (Manuel, 2026-08-26, second
   ask: "like having a fill completely over the text"). Measured live: the
   ramp ran over under three lines and the fold held about four below the
   heading, so almost nothing was left for the fade to show through. The
   band is now the button's air, one solid line, and a ramp of three
   reading lines; the fold is three lines taller so those lines exist. */
/* AND THE BUTTON RIDES THE FADE (Manuel, 2026-08-26, third ask: "the
   button should sit on top of the fade, not underneath in that empty
   space"). The transparent bottom border the button stood in put it below
   the band, over nothing, while the crop sliced a line above it. The border
   is gone: the body crops at the card's inner edge, the band is five lines
   and is solid for its last two, and the button stands inside that solid
   stretch, over the text the fade has already closed. */
/* LIKE THE CODE BLOCK, NO MORE (Manuel, 2026-08-26, fourth ask: "it
   should be like the code block, we had it already"). The code block folds
   with a band of four lines, the system's own fade — transparent to the
   ground at the very bottom — the crop at the block's edge and the button
   24 off the bottom, over the band. The card now does exactly that with
   four reading lines; the restated gradient is gone. */
.release-archive-card.is-folded { --fill-fade: calc(4 * var(--text-reading-body) * var(--text-reading-body-line-height)); }
/* AND IT HAS TO BE SPENT BY THE CROP, NOT BY THE FOOT (Manuel, 2026-08-24:
   "a little white strip underneath the fade"). The body is clipped
   --space-6 above the card's bottom edge — that transparent border is what
   the button stands in — while the system's gradient reaches full colour at
   the very bottom. So the last line was sliced through at four fifths of the
   fade, still visible, and the band under it stood empty: a hard edge with a
   clean strip beneath it, which is exactly what a fade exists to prevent.
   The gradient is restated to arrive at the ground where the text stops. */
/* AND FULL ONE READING LINE BEFORE THE CROP (Manuel, 2026-08-25: "it's
   lying over the text"). Arriving at the ground exactly on the crop line
   only works when the crop falls between two lines; on Moog it fell
   through the middle of one, and the top half of that line showed under
   the button as a sliced strip with a hard edge below it. So the fade is
   opaque one line of reading text above the crop: whatever the crop cuts
   is already gone. The card's fold height is measured in the same unit. */
.release-archive-body { padding: var(--space-5); min-width: 0; }
/* THE CARD DECLARES ITSELF (Manuel, 2026-08-24): the old documentation
   headings are gone from the posts; the card's first word is what the box
   is. And the padding is the same on every side: the first child gives up
   its top margin, the last its bottom. */
.release-archive-body > :first-child { margin-block-start: 0; }
.release-archive-body > :last-child { margin-block-end: 0; }
.release-archive-card.is-folded .release-archive-body {
	/* TWO READING LINES TALLER (Manuel, 2026-08-25): the banner grew by a
	   line when the origin moved into it, so the fold shows the same amount
	   of the old post as before. */
	max-block-size: calc(var(--space-20) * 4.5 + 5 * var(--text-reading-body) * var(--text-reading-body-line-height));
	overflow: hidden;
	padding-bottom: 0;
}
.release-archive-more-row {
	position: relative;
	z-index: 1;
	display: flex;
	justify-content: center;
	padding: 0 var(--space-5) var(--space-5);
}
.release-archive-card.is-folded .release-archive-more-row {
	position: absolute;
	inset-inline: 0;
	bottom: var(--space-6);
	padding: 0;
}
/* THE OLD POST KEEPS THE READING VOICE (Manuel, 2026-08-24: "why sans serif
   headings?"). The ladder addresses direct children of the content block, and
   inside the card the post's own headings sit two levels down — so every one
   of them fell out of the article's face and back to the interface sans.
   The whole set is restated here against the same tokens: the ladder's rungs,
   the serif, the heading weight, the leading, the trim and the graded space
   above and below. Nothing new is chosen; the article's rules are simply
   reached one level deeper. */
.release-archive-body :is(h1, h2, h3, h4, h5, h6) {
	font-family: var(--wp--preset--font-family--font-serif);
	font-weight: var(--font-weight-article-heading);
	line-height: var(--line-height-article-heading);
	letter-spacing: var(--tracking-tight);
	text-box: trim-both cap alphabetic;
	color: var(--text-primary);
}
.release-archive-body h1 { font-size: var(--text-article-h1); }
.release-archive-body h2 { font-size: var(--text-article-h2); }
.release-archive-body h3 { font-size: var(--text-article-h3); }
.release-archive-body h4 { font-size: var(--text-article-h4); }
.release-archive-body h5 { font-size: var(--text-article-h5); }
.release-archive-body h6 { font-size: var(--text-article-h6); }
/* MORE AIR IN THE ARCHIVE, AND ONLY THERE (Manuel, 2026-08-24, measured
   against the privacy page: the gaps were already identical — 48 above a
   heading on both — but that page sets its headings at 26 and the reading
   ladder sets a post's at 36, so the same distance reads generous there and
   tight here. The old posts make it worse: many short sections one after
   another, where a modern article has long runs of text.
   The air grows, the ladder does not: 64 over an h2, 40 over an h3, with
   the space BELOW each heading left exactly as it is, so a heading still
   belongs to the text under it. Scoped to the card — nothing a post
   published today renders can move. */
.release-archive-body :is(h1, h2) {
	margin-block: var(--space-16) var(--space-reading-heading-below);
}
.release-archive-body :is(h3, h4) {
	margin-block: var(--space-10) var(--space-reading-subhead-below);
}
.release-archive-body :is(h5, h6) {
	margin-block: var(--space-reading-minor-above) var(--space-reading-minor-below);
	line-height: calc(
		(var(--line-height-article-heading) + var(--line-height-article-label)) / 2
	);
}

.release-archive-more {
	background: var(--surface-base);
	border-color: var(--border-default);
	box-shadow: var(--elevation-control);
}
@media (hover: hover) {
	.release-archive-more:hover { background: var(--surface-hover); border-color: var(--border-strong); 	}
}
.release-archive-more:active { background: var(--surface-pressed); }

/* THE FIRST HEADING'S AIR, OPTICAL (Manuel, 2026-08-28: "it should match
   visually not mathematically"). The rung of air added on 2026-08-27 made
   the top measure 25 against 21 at the sides, and above a 36 cap line that
   reads as a gap. Even numbers are not the answer either: the eye takes the
   empty band over a row of capitals as larger than the same distance beside
   a letter, so 21/21 already leans top-heavy. The first heading is pulled
   three above the card's 20, landing its cap line at 18 from the edge while
   the sides stay 21. Only the first one; everything below keeps the ladder. */
.release-archive-body > :is(h1, h2, h3):first-child { margin-block-start: -3px; }
/* THE SAME AIR WITH OR WITHOUT THE NOTE (Manuel, 2026-09-08, 1.1.615: "make
   that consistent across all theme release posts where it's folded"). On a
   card with the note, the hairline under it and the old post's first heading
   stand 64 apart: the note's 20 below collapses into the heading's 64 above.
   On the seven cards without the note the heading was the first child, pulled
   up to 17 from the card's edge, and the two kinds of card began at two
   different heights. Now the heading's cap line is 64 from the edge above it
   on every card: from the hairline where there is one, from the card's own
   edge where there is not. The heading after the note is said outright too,
   so an old post opening with an h3 does not fall back to the ladder's 40. */
.release-archive-body > :is(h1, h2, h3):first-child {
	margin-block-start: calc(var(--space-16) - var(--space-5));
}
.release-archive-banner + :is(h1, h2, h3) { margin-block-start: var(--space-16); }

/* THE EXPAND MARK ON A DARK PICTURE (Manuel, 2026-09-08: "because it's a
   dark ground and the icon is dark, it's barely visible"). The header cards
   that open every folded release post stand on near-black, and the lightbox
   trigger — the room's pill with the ink's mark — vanished on them. A
   stylesheet cannot read a picture's brightness, so the block says it: the
   image block carries the class `has-dark-ground` (set on all 76 cards), and
   on such a picture the pill takes the room's INVERSE surface and ink: dark
   pill and white mark in a light room, light pill and dark mark in a dark
   one — either way the opposite of the room, which on a dark picture is
   what shows. Light pictures keep the usual pill. Any picture in any post
   can take the class from the block's Advanced → Additional CSS class. */
body .wp-block-post-content .has-dark-ground .wp-lightbox-container button.lightbox-trigger,
body .wp-block-post-content .has-dark-ground .wp-lightbox-container button.lightbox-trigger:focus {
	color: var(--text-inverse);
	background-color: color-mix(in srgb, var(--surface-inverse) 80%, transparent);
	border-color: var(--border-inverse);
}
@media (hover: hover) {
	body .wp-block-post-content .has-dark-ground .wp-lightbox-container button.lightbox-trigger:hover {
		color: var(--text-inverse);
		background-color: color-mix(in srgb, var(--surface-inverse) 80%, transparent);
		border-color: var(--border-inverse);
	}
}
body .wp-block-post-content .has-dark-ground .wp-lightbox-container button.lightbox-trigger:focus-visible {
	background-color: var(--surface-inverse);
}
@media (hover: hover) {
	body .wp-block-post-content .has-dark-ground .wp-lightbox-container button.lightbox-trigger:hover {
		background-color: var(--surface-inverse);
	}
}

/* A BUTTON THAT IS A LINK KEEPS THE INK (2026-09-11, Manuel: the Live-Demo
   button in purple beside a purple download). The post's link colour, the
   accent since 1.1.714, reached these anchors because the panel stands
   inside the post's content; a button's words are the button's. */
.release-panel .quire-button,
.release-panel .quire-button svg {
	color: var(--text-primary);
}

/* THE FOLDED ARCHIVE'S HEADINGS ARE ÜBERSCHRIFTEN (Manuel, 2026-09-17). They
   are the old release notes' own h1 to h6, reading at the article's ladder, and
   every other heading in the article follows the role — these did not, because
   this file was written before the roles existed.

   Each multiplies the rung it already rests on, so the ladder inside the fold
   keeps its shape and moves as one with the article's.

   NOT GATED ON data-head-size, and that is the whole lesson of this rule. It was
   written that way to match Oberfläche's, and the attribute had been RETIRED
   three versions earlier when Überschriften's "Wie Fließtext" stop came out —
   only `ui` and `comment` stamp a size attribute at all. The rules parsed, sat
   in the file, matched nothing, and the headings quietly ignored the dial. A
   gate on an attribute nobody writes is indistinguishable from no rule.

   Ungated is safe here for the same reason the gate existed elsewhere: each rule
   multiplies the SAME ground the rule above it already sets, and --head-size is
   1 at rest, so at rest the value is the one that was there before.

   Wired here rather than in style.css: this file loads after it. */
.release-archive-body h1 { font-size: max(var(--text-floor-content), calc(var(--text-article-h1) * var(--head-size, 1))); }
.release-archive-body h2 { font-size: max(var(--text-floor-content), calc(var(--text-article-h2) * var(--head-size, 1))); }
.release-archive-body h3 { font-size: max(var(--text-floor-content), calc(var(--text-article-h3) * var(--head-size, 1))); }
.release-archive-body h4 { font-size: max(var(--text-floor-content), calc(var(--text-article-h4) * var(--head-size, 1))); }
.release-archive-body h5 { font-size: max(var(--text-floor-content), calc(var(--text-article-h5) * var(--head-size, 1))); }
.release-archive-body h6 { font-size: max(var(--text-floor-content), calc(var(--text-article-h6) * var(--head-size, 1))); }
.release-archive-body :is(h1, h2, h3, h4, h5, h6) {
	font-family: var(--head-face, var(--face-newsreader));
	letter-spacing: calc(var(--tracking-tight) + var(--head-tracking, 0em));
	word-spacing: var(--head-words, normal);
	text-transform: var(--head-case, none);
	font-style: var(--head-style, normal);
}

/* THE TWO LINES THAT WORE TWO ROLES (Manuel, 2026-09-17, measured the hour the
   release post could first be rendered here).

   "Live-Demos ansehen" and "Zuletzt aktualisiert im August 2026…" took their
   FACE from Oberfläche and their SIZE from Fließtext. Neither was chosen: both
   are `<p>` elements the theme injects into the post content, and Fließtext's
   size rule names every `p` in there, so it reached them and outranked this
   file's own `--text-lg` — at rest as well, which is why they read at 22 and not
   at the size this file states.

   Filed by the same three questions as the rest of the day. A title over a group
   of buttons is Abschnittstitel; a line of small print about a version is
   Nebentext, and so is the banner over an archived post.

   `:root` leads each selector so it outranks the paragraph rule outright rather
   than tying with it and winning on load order, which is a thing that can be
   undone by moving a file. */
:root .single-post-article .wp-block-post-content p.release-group-title,
:root p.release-group-title {
	font-family: var(--title-face, var(--face-inter));
	/* THE GROUND IS WHAT THEY REST AT, NOT WHAT THIS FILE MEANT. Both lines read
	   at --text-reading-body today, because the paragraph rule has been beating
	   this file's own --text-lg since before the roles existed. Multiplying
	   --text-lg would have "corrected" that and shrunk two lines on a live page
	   nobody asked to change. The rest is the rest; the dial moves from there. */
	/* AT THE SIZE THIS FILE ALWAYS STATED (Manuel, 2026-09-18, twice: "those are a
	   little big?", "still too big"): 16, --text-lg, as a member of
	   Abschnittstitel, Release-Titel, dialled on its own when released. The
	   accident above is over. */
	font-size: max(var(--text-floor-content), calc(var(--text-lg) * var(--title-size-release, var(--title-size, 1))));
	letter-spacing: var(--title-tracking, normal);
	word-spacing: var(--title-words, normal);
	text-transform: var(--title-case, none);
	font-style: var(--title-style, normal);
	/* ITS REST IS 600 AND NOT THE ROLE'S MEDIUM. Written as the role's own rest
	   this line dropped from semibold to medium — measured, on a page that had
	   been renderable for twenty minutes. A role's fallback is always the value
	   the ELEMENT rests at, never the value the role rests at. */
	font-weight: var(--title-weight, var(--font-weight-semibold));
}
:root .single-post-article .wp-block-post-content :is(p.release-checked, p.release-archive-banner),
:root :is(p.release-checked, p.release-archive-banner) {
	font-family: var(--small-face, var(--face-inter));
	font-size: max(var(--text-floor-content), calc(var(--text-lg) * var(--small-size-release, var(--small-size, 1)))); /* 16, as a member of Nebentext, Release-Hinweise (2026-09-18) */
	letter-spacing: var(--small-tracking, normal);
	word-spacing: var(--small-words, normal);
	text-transform: var(--small-case, none);
	font-style: var(--small-style, normal);
}
:root[data-small-leading] :is(p.release-checked, p.release-archive-banner) { line-height: calc(var(--text-base-line-height) * var(--small-leading, 1)); }
