/*
 * Shared components and page sections (design §4, §5): typography helpers, buttons,
 * section heading rows, product and teaser cards, tinted bands, and the home page sections.
 */

/* ------------------------------------------------------------- Typography */
.is-style-eyebrow {
	margin-block: 0;
}

.line-band .is-style-eyebrow,
.line-band .line-step__no {

	/* accent fails AA on surface-alt; accent-strong passes (PLAN §20 #30). */
	color: var(--wp--preset--color--accent-strong);
}

.line-lead {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--700);
	max-inline-size: var(--wp--custom--measure--44);
	text-wrap: pretty;
}

.line-body {
	color: var(--wp--preset--color--ink-muted);
	line-height: var(--wp--custom--line-height--relaxed);
	text-wrap: pretty;
}

:where(h1, h2).wp-block-heading {
	text-wrap: balance;
}

/* ---------------------------------------------------------------- Buttons */

/* Outline and ghost styles in CSS too: WordPress prints a block style variation's CSS only on
   pages that contain a core button using it, and line-core blocks render the same markup. */
.wp-block-button.is-style-outline .wp-block-button__link {
	background: transparent;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--ink);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--500);
	padding-block: var(--wp--custom--component--button-outline--padding-block);
	padding-inline: var(--wp--custom--component--button-outline--padding-inline);
}

.wp-block-button.is-style-outline .wp-block-button__link:hover,
.wp-block-button.is-style-outline .wp-block-button__link:focus-visible {
	background-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--surface);
}

.wp-block-button.is-style-ghost .wp-block-button__link {
	background: transparent;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--500);
	padding-block: var(--wp--custom--component--button-outline--padding-block);
	padding-inline: var(--wp--custom--component--button-outline--padding-inline);
}

.wp-block-button.is-style-ghost .wp-block-button__link:hover {
	border-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--accent);
}

.wp-block-buttons {
	gap: var(--wp--preset--spacing--45);
}

/* ------------------------------------------------------ Section heading row */
.line-heading-row {
	align-items: flex-end;
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--60);
	justify-content: space-between;
	padding-block-end: var(--wp--preset--spacing--70);
}

.line-heading-row > * {
	margin: 0;
}

.line-view-all {
	font-size: var(--wp--preset--font-size--400);
}

/* ------------------------------------------------------------ Product card */

/* Image first (PLAN §6, §7 #5): the photograph sits in a quiet well and lifts 2 % inside it on
   hover or keyboard focus; the title and price share a line once the card is wide enough (a
   container query on the card itself), the price in tabular figures. */
.line-product-grid .wc-block-product-template {
	column-gap: var(--wp--preset--spacing--65);
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--wp--custom--layout--card-column)), 1fr));
	row-gap: var(--wp--preset--spacing--80);
}

/* `align-content: start`: a card stretched to its row's height keeps its rows at their own size, so
   the titles of a row line up whatever lies under them (glaze dots, a note — #49). */
.line-product-grid .wc-block-product {
	align-content: start;
	align-items: baseline;
	column-gap: var(--wp--preset--spacing--40);
	container-type: inline-size;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	position: relative;
	row-gap: var(--wp--preset--spacing--20);
}

.line-product-grid .wc-block-product > * {
	grid-column: 1 / -1;
	margin: 0;
}

.line-product-grid .wc-block-components-product-image {
	background: var(--wp--preset--color--surface-sunken);
	margin-block-end: var(--wp--preset--spacing--40);
	overflow: clip;
}

.line-product-grid .wc-block-components-product-image img {
	background: var(--wp--preset--color--media-placeholder);
}

@media (prefers-reduced-motion: no-preference) {

	.line-product-grid .wc-block-components-product-image img {
		transition: transform var(--wp--custom--motion--duration--relaxed) var(--wp--custom--motion--easing--standard);
	}

	.line-product-grid .wc-block-product:focus-within .wc-block-components-product-image img {
		transform: scale(var(--wp--custom--motion--lift));
	}
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {

	.line-product-grid .wc-block-product:hover .wc-block-components-product-image img {
		transform: scale(var(--wp--custom--motion--lift));
	}
}

/* Photographs that load after the page fade in (premium polish round 3, 21st.dev #20): the
   classes come from assets/js/enhance.js, which never sets them under reduced motion. An
   animation, not a transition, so the image lifts keep their own transitions. */
.line-fade.is-pending {
	opacity: 0;
}

.line-fade:not(.is-pending) {
	animation: line-fade-in var(--wp--custom--motion--duration--slow) var(--wp--custom--motion--easing--enter);
}

@keyframes line-fade-in {

	from {
		opacity: 0;
	}
}

.line-card__title {
	font-size: var(--wp--preset--font-size--700);
	font-weight: var(--wp--custom--font-weight--body);
	line-height: var(--wp--custom--line-height--title);
	margin: 0;
}

.line-card__title a {
	align-items: center;
	display: inline-flex;
	min-block-size: var(--wp--custom--target--min);
}

.line-product-field--note {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
	margin: 0;
}

.line-card__price {
	font-size: var(--wp--preset--font-size--500);
	font-weight: var(--wp--custom--font-weight--emphasis);
	margin: 0;
}

/* Wide enough: title and price on one line, the note under them. */
@container (min-width: 15rem) {

	.line-product-grid .wc-block-product > .line-card__title {
		grid-column: 1;
		grid-row: 2;
	}

	.line-product-grid .wc-block-product > .line-card__price {
		grid-column: 2;
		grid-row: 2;
	}
}

@media (hover: hover) and (pointer: fine) {

	.line-product-grid .wc-block-product:hover :is(.line-card__title a, .line-card__price) {
		color: var(--wp--preset--color--accent-strong);
	}
}

/* ------------------------------------------------------------ Tinted band */

/* The home custom-order band and the product quote band are paper bands (PLAN §5.6). */
.line-band,
.line-quote-band {
	background-color: var(--wp--preset--color--clay-wash);
	isolation: isolate;
	position: relative;
}

.line-band::before,
.line-quote-band::before {
	background-image: url(../textures/grain.webp);
	content: "";
	inset: 0;
	mix-blend-mode: multiply;
	opacity: var(--wp--custom--texture--grain-opacity);
	pointer-events: none;
	position: absolute;
	z-index: -1;
}

/* Museum labels (D5): the owner's small lines above headings stay, quiet and tracked. */
.is-style-eyebrow:lang(en) {
	letter-spacing: var(--wp--custom--letter-spacing--overline);
	text-transform: uppercase;
}

/* =============================================================== Home */
.line-main > .wp-block-post-content > * {
	margin-block: 0;
}

/* Hero (PLAN §6): the photograph takes the larger side and bleeds to the page edge; the text
   column is wide enough for the display headline to set in two lines at desktop widths. */
.line-hero {
	display: grid;
	grid-template-columns: 1.05fr 0.95fr;
	min-block-size: min(88svb, var(--wp--custom--layout--hero));
}

.line-hero__media {
	margin: 0;
}

.line-hero__media img {
	block-size: 100%;
	inline-size: 100%;
	object-fit: cover;
}

/* Side by side, the home photograph fills the hero's height instead of setting it, so a tall
   photo (the 4:5 home photo, or any the owner uploads) never pushes the hero past the first screen.
   The custom-order hero keeps its square image's height. */
.line-hero:not(.line-hero--custom) .line-hero__media {
	contain: size;
}

.line-hero__text {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--65);
	justify-content: center;
	padding-block: var(--wp--preset--spacing--90);
	padding-inline: var(--wp--preset--spacing--90) var(--wp--custom--gutter);
}

.line-hero__text > * {
	margin: 0;
}

.line-hero .line-lead {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--800);
	max-inline-size: var(--wp--custom--measure--38);
}

/* The first action carries the weight (solid), the second stays a quiet outline. */
.line-hero .wp-block-button:first-child .wp-block-button__link {
	background-color: var(--wp--preset--color--ink);
	border-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--surface);
}

.line-hero .wp-block-button:first-child .wp-block-button__link:is(:hover, :focus-visible) {
	background-color: var(--wp--preset--color--ink-soft);
	color: var(--wp--preset--color--surface);
}

/* Colophon: the three facts as one quiet line with short rules between them. */
.line-trust {
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	color: var(--wp--preset--color--ink-muted);
	display: flex;
	flex-wrap: wrap;
	font-size: var(--wp--preset--font-size--300);
	gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--70);
	justify-content: center;
	padding-block: var(--wp--preset--spacing--60);
	padding-inline: var(--wp--custom--gutter);
}

.line-trust > p {
	align-items: center;
	display: flex;
	gap: var(--wp--preset--spacing--70);
	margin: 0;
}

.line-trust > p + p::before {
	background-color: var(--wp--preset--color--line-strong);
	block-size: var(--wp--custom--border--hairline);
	content: "";
	inline-size: var(--wp--preset--spacing--60);
}

.line-trust:lang(en) {
	letter-spacing: var(--wp--custom--letter-spacing--overline);
}

/* Phones: the facts stack, so the rules between them go. */
@media (max-width: 767px) {

	.line-trust {
		align-items: center;
		flex-direction: column;
	}

	.line-trust > p + p::before {
		content: none;
	}
}

/* Studio story: the image takes the larger share. */
.line-studio {
	padding-block: var(--wp--preset--spacing--110);
}

.line-studio > .wp-block-group:not(.line-studio__text),
.line-studio {
	align-items: center;
	column-gap: var(--wp--preset--spacing--100);
	display: grid;
	grid-template-columns: 0.85fr 1.15fr;
}

.line-studio > * {
	margin: 0;
	max-inline-size: none;
}

.line-studio__text {
	align-items: flex-start;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--60);
}

.line-studio__text > * {
	margin: 0;
}

.line-studio__title {
	font-size: var(--wp--preset--font-size--title-2);
}

.line-studio__media img {
	background: var(--wp--preset--color--media-placeholder);
}

/* Featured pieces: two columns on phones; at desktop four, every second one set lower — a rhythm,
   not a row of equals. */
.line-home-collections {
	padding-block: var(--wp--preset--spacing--110) var(--wp--preset--spacing--100);
}

.line-home-collections .wc-block-product-template {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (min-width: 1025px) {

	.line-home-collections .wc-block-product-template {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	/* Cards are counted as shown: in the block editor a list keeps a hidden copy of the card being
	   edited right after it (style="display: none"), which must not shift the pattern
	   (plans/editor-site-parity_2026-10-10). On the site no card has that style. */
	.line-home-collections .wc-block-product:nth-child(even of :not([style*="display: none"])) {
		margin-block-start: var(--wp--preset--spacing--100);
	}
}

/* Custom-order band: a paper band; the three steps with large light numerals on hairlines. */
.line-custom-band {
	padding-block: var(--wp--preset--spacing--110);
}

.line-custom-band__grid {
	display: grid;
	gap: var(--wp--preset--spacing--80);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--wp--custom--layout--band-column)), 1fr));
}

.line-custom-band__grid > * {
	margin: 0;
}

.line-custom-band__intro > *,
.line-step > * {
	margin-block: 0;
}

.line-custom-band__intro {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
}

.line-custom-band__intro .line-body {
	max-inline-size: var(--wp--custom--measure--38);
}

.line-band__title {
	font-size: var(--wp--preset--font-size--title-2);
}

.line-step {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
	padding-block-start: var(--wp--preset--spacing--60);
}

.line-step__no {
	color: var(--wp--preset--color--accent-strong);
	font-size: var(--wp--preset--font-size--title-1);
	font-variant-numeric: lining-nums;
	font-weight: var(--wp--custom--font-weight--display);
	line-height: 1;
}

.line-step__title {
	font-size: var(--wp--preset--font-size--900);
	font-weight: var(--wp--custom--font-weight--body);
}

.line-step__body {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--500);
}

/* Chefs & projects mosaic: one wide 16:11 tile and two 3:4 tiles; each label sits on its
   photograph like a gallery card, 44 px high; the photograph lifts on hover or focus. */
.line-home-chefs {
	padding-block: var(--wp--preset--spacing--110);
}

.line-mosaic .wp-block-post-template {
	display: grid;
	gap: var(--wp--preset--spacing--60);
	grid-template-columns: 2fr 1fr 1fr;
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-mosaic .wp-block-post {
	overflow: clip;
	position: relative;
}

.line-mosaic .wp-block-post-featured-image {
	block-size: 100%;
	margin: 0;
}

.line-mosaic .wp-block-post-featured-image img {
	aspect-ratio: 3 / 4;
	background: var(--wp--preset--color--media-placeholder);
	block-size: 100%;
	object-fit: cover;
}

.line-mosaic .wp-block-post:first-child .wp-block-post-featured-image img {
	aspect-ratio: 16 / 11;
}

.line-mosaic__title {
	background: var(--wp--preset--color--surface);
	font-size: var(--wp--preset--font-size--300);
	font-weight: var(--wp--custom--font-weight--body);
	inset-block-end: var(--wp--preset--spacing--60);
	inset-inline-start: var(--wp--preset--spacing--60);
	margin: 0;
	padding-inline: var(--wp--preset--spacing--40);
	position: absolute;
}

.line-mosaic__title a {
	align-items: center;
	display: inline-flex;
	min-block-size: var(--wp--custom--target--min);
}

@media (prefers-reduced-motion: no-preference) {

	.line-mosaic .wp-block-post-featured-image img {
		transition: transform var(--wp--custom--motion--duration--relaxed) var(--wp--custom--motion--easing--standard);
	}

	.line-mosaic .wp-block-post:focus-within .wp-block-post-featured-image img {
		transform: scale(var(--wp--custom--motion--lift));
	}
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {

	.line-mosaic .wp-block-post:hover .wp-block-post-featured-image img {
		transform: scale(var(--wp--custom--motion--lift));
	}
}

/* Journal teasers (PLAN §7 #8): at desktop one lead story with a large image, the other two as
   rows with a small image beside the title. */
.line-home-journal {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	padding-block: var(--wp--preset--spacing--100) var(--wp--preset--spacing--110);
}

.line-teasers .wp-block-post-template {
	gap: var(--wp--preset--spacing--70);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--wp--custom--layout--card-column)), 1fr));
}

.line-teasers .wp-block-post {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
}

.line-teasers .wp-block-post > * {
	margin: 0;
}

.line-teasers .wp-block-post-featured-image img {
	background: var(--wp--preset--color--media-placeholder);
}

.line-post-meta--kicker {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--200);
}

.line-teasers__title {
	font-size: var(--wp--preset--font-size--800);
	font-weight: var(--wp--custom--font-weight--body);
	line-height: var(--wp--custom--line-height--title);
}

.line-teasers__title a {
	align-items: center;
	display: inline-flex;
	min-block-size: var(--wp--custom--target--min);
}

@media (hover: hover) and (pointer: fine) {

	.line-teasers .wp-block-post:hover .line-teasers__title a {
		color: var(--wp--preset--color--accent-strong);
	}
}

@media (min-width: 1025px) {

	.line-teasers .wp-block-post-template {
		column-gap: var(--wp--preset--spacing--100);
		grid-template-columns: 1.2fr 1fr;
		row-gap: var(--wp--preset--spacing--70);
	}

	.line-teasers .wp-block-post:first-child {
		grid-row: 1 / span 2;
	}

	.line-teasers .wp-block-post:first-child .line-teasers__title {
		font-size: var(--wp--preset--font-size--title-3);
	}

	.line-teasers .wp-block-post:not(:first-child) {
		align-content: start;
		border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
		column-gap: var(--wp--preset--spacing--60);
		display: grid;
		grid-template-columns: minmax(0, 0.8fr) minmax(0, 1fr);
		padding-block-start: var(--wp--preset--spacing--60);
	}

	.line-teasers .wp-block-post:not(:first-child) .wp-block-post-featured-image {
		grid-row: 1 / span 3;
	}
}

@media (max-width: 1024px) {

	.line-hero {
		grid-template-columns: 1fr;
	}

	.line-hero:not(.line-hero--custom) .line-hero__media {
		contain: none;
	}

	.line-hero__media img {
		aspect-ratio: 4 / 5;
		block-size: auto;
	}

	.line-hero__text {
		padding-block: var(--wp--preset--spacing--80);
		padding-inline: var(--wp--custom--gutter);
	}

	.line-studio {
		grid-template-columns: 1fr;
		row-gap: var(--wp--preset--spacing--80);
	}

	.line-mosaic .wp-block-post-template {
		grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--wp--custom--layout--band-column)), 1fr));
	}

	.line-mosaic .wp-block-post .wp-block-post-featured-image img,
	.line-mosaic .wp-block-post:first-child .wp-block-post-featured-image img {
		aspect-ratio: 4 / 3;
	}
}

/* Tablets and phones held sideways: a calmer image so the headline stays in the first screen. */
@media (min-width: 600px) and (max-width: 1024px), (max-height: 500px) {

	.line-hero__media img {
		aspect-ratio: 16 / 9;
	}
}

/* =========================================================== Page intro */
.line-intro {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
	margin-inline: auto;
	max-inline-size: var(--wp--custom--container--max);
	padding-block: var(--wp--preset--spacing--90) var(--wp--preset--spacing--70);
	padding-inline: var(--wp--custom--gutter);
}

.line-intro > * {
	margin-block: 0;
}

.line-intro__title {
	line-height: var(--wp--custom--line-height--tight);
}

.line-intro__lede {
	max-inline-size: var(--wp--custom--measure--52);
}

/* Links inside running text are underlined (WCAG 1.4.1, axe link-in-text-block): the intros of
   categories and collections, product descriptions, journal posts and prose pages carry internal
   links (SEO plan 2026-10-04). */
:is(.line-intro__lede, .line-pdp__description, .line-article__body, .line-prose) a:not([class]) {
	text-decoration-line: underline;
	text-decoration-thickness: var(--wp--custom--link--underline-thickness);
	text-underline-offset: var(--wp--custom--link--underline-offset);
}

/* ============================================================ Catalogue */
.line-filterbar {
	background: var(--wp--preset--color--surface);
	inset-block-start: var(--wp--custom--sticky--header);
	padding-block-end: var(--wp--preset--spacing--60);
	position: sticky;
	z-index: var(--wp--custom--z--filterbar);
}

.line-filterbar__bar {
	align-items: center;
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--50);
	justify-content: space-between;
	padding-block-end: var(--wp--preset--spacing--50);
}

.line-filterbar__end {
	align-items: center;
	display: flex;
	gap: var(--wp--preset--spacing--40);
}

.line-filterbar__end > *,
.line-filterbar__bar > * {
	margin: 0;
}

/* Chips (catalogue, journal topics, project types). */
.line-chips {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--30);
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-chip {
	align-items: center;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	color: var(--wp--preset--color--ink);
	display: flex;
	font-size: var(--wp--preset--font-size--400);
	gap: var(--wp--custom--component--chip--gap);
	min-block-size: var(--wp--custom--component--chip--min-height);
	padding-block: var(--wp--custom--component--chip--padding-block);
	padding-inline: var(--wp--custom--component--chip--padding-inline);
	transition:
		background-color var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--standard),
		border-color var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--standard);
}

.line-chip:hover {
	border-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--ink);
}

.line-chip__count {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--200);
	font-variant-numeric: tabular-nums;
}

.line-chip[aria-current="page"] {
	border-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--surface);
	isolation: isolate;
	position: relative;
}

/* The current chip's ink is its own element (premium polish round 4, #28): with the page
   transition it slides from the chip left behind to the chip arrived at. */
.line-chip__mark {
	background-color: var(--wp--preset--color--ink);
	inset: 0;
	position: absolute;
	view-transition-name: line-chip-active;
	z-index: -1;
}

.line-chip[aria-current="page"] .line-chip__count {
	color: var(--wp--preset--color--on-ink-muted);
}

.line-result-count {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--400);
}

/* The sort menu (premium polish without motion #48, after 21st.dev's Native Select): its name
   before it, a hairline box with the site's arrow turned down; the browser's own picker stays. */
.line-filterbar .woocommerce-ordering {
	align-items: center;
	display: flex;
	gap: var(--wp--preset--spacing--30);
	margin: 0;
	position: relative;
}

.line-sort__label {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--400);
}

.line-filterbar .woocommerce-ordering select {
	appearance: none;
	background: var(--wp--preset--color--surface-raised);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-control);
	border-radius: 0;
	color: var(--wp--preset--color--ink);
	cursor: pointer;
	font: inherit;
	font-size: var(--wp--preset--font-size--400);
	min-block-size: var(--wp--custom--target--min);
	padding-block: var(--wp--custom--component--select--padding-block);
	padding-inline: var(--wp--custom--component--select--padding-inline) calc(var(--wp--custom--component--select--padding-inline) + var(--wp--custom--icon--arrow) + var(--wp--preset--spacing--20));
}

.line-filterbar .woocommerce-ordering::after {
	background-color: var(--wp--preset--color--ink);
	block-size: var(--wp--custom--icon--arrow);
	content: "";
	inline-size: var(--wp--custom--icon--arrow);
	inset-block-start: calc(50% - var(--wp--custom--icon--arrow) / 2);
	inset-inline-end: var(--wp--custom--component--select--padding-inline);
	mask: var(--line-icon-arrow) center / contain no-repeat;
	pointer-events: none;
	position: absolute;
	transform: rotate(90deg);
}

/* Catalogue grid (PLAN §6): 2 columns on phones (1 under 360 px), 3 on tablets, 4 from 1280. */
.line-catalog__grid {
	min-block-size: 50vb;
	padding-block: var(--wp--preset--spacing--70) var(--wp--preset--spacing--110);
}

.line-catalog__grid .line-product-grid .wc-block-product-template {
	column-gap: var(--wp--preset--spacing--60);
	grid-template-columns: repeat(2, minmax(0, 1fr));
	row-gap: var(--wp--preset--spacing--90);
}

@media (max-width: 359px) {

	.line-catalog__grid .line-product-grid .wc-block-product-template {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (min-width: 768px) {

	.line-catalog__grid .line-product-grid .wc-block-product-template {
		column-gap: var(--wp--preset--spacing--65);
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1280px) {

	.line-catalog__grid .line-product-grid .wc-block-product-template {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.line-card__badge {
	background: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--100);
	font-weight: var(--wp--custom--font-weight--emphasis);
	inset-block-start: var(--wp--preset--spacing--40);
	inset-inline-start: var(--wp--preset--spacing--40);
	padding-block: var(--wp--custom--component--badge--padding-block);
	padding-inline: var(--wp--custom--component--badge--padding-inline);
	position: absolute;
}

.line-empty {
	align-items: flex-start;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--45);
	padding-block: var(--wp--preset--spacing--90);
}

.line-empty > p:first-child {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--700);
	margin: 0;
}

/* CTA band (collections, projects). */
.line-cta-band {
	padding-block: var(--wp--preset--spacing--90);
}

.line-cta-band__inner {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--70);
	justify-content: space-between;
}

.line-cta-band__text {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
	max-inline-size: var(--wp--custom--measure--46);
}

.line-cta-band__text > *,
.line-cta-band__inner > * {
	margin: 0;
}

.line-cta-band__title {
	font-size: var(--wp--preset--font-size--title-3);
}

@media (max-width: 1024px) {

	.line-filterbar__bar {
		align-items: flex-start;
		flex-direction: column;
	}
}

/* Phones: all the chips in today's order, one row that scrolls sideways (owner decision D2), so
   the first pieces are in the first screen. The chips are links, so the row is keyboard-reachable. */
@media (max-width: 767px) {

	.line-filterbar__bar {
		align-items: stretch;
	}

	.line-filterbar .line-term-chips {
		align-self: stretch;
		max-inline-size: 100%;
		min-inline-size: 0;
	}

	.line-filterbar .line-chips {
		flex-wrap: nowrap;
		margin-inline: calc(var(--wp--custom--gutter) * -1);
		overflow: auto;
		padding-block: var(--wp--preset--spacing--10);
		padding-inline: var(--wp--custom--gutter);
		scroll-padding-inline: var(--wp--custom--gutter);
		scroll-snap-type: inline proximity;
		scrollbar-width: none;
	}

	.line-filterbar .line-chips > * {
		flex-shrink: 0;
		scroll-snap-align: start;
	}

	.line-filterbar .line-chip {
		white-space: nowrap;
	}
}

/* ======================================================== Product page */
.line-breadcrumbs {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--400);
	margin-block: 0;
	padding-block-start: var(--wp--preset--spacing--50);
}

.line-breadcrumbs a {
	color: var(--wp--preset--color--ink);
}

.line-pdp {
	padding-block-end: var(--wp--preset--spacing--100);
}

.line-pdp__grid {
	align-items: start;
	display: grid;
	gap: var(--wp--preset--spacing--100);
	grid-template-columns: 1.12fr 0.88fr;
	padding-block-start: var(--wp--preset--spacing--65);
}

.line-pdp__grid > * {
	margin: 0;
	max-inline-size: none;
}

/* Large image on top, four thumbnails below (design). From 1025px it stays beside the long
   options column while that scrolls (premium polish without motion, #38). */
.line-pdp__gallery {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--45);
	inset-block-start: var(--wp--custom--sticky--aside);
	position: sticky;
}

/* WooCommerce opens its full-screen view inside the gallery; sticky, the gallery is its own layer,
   and the text column and the header painted over the view and its close button. While the view
   is open the gallery rises above the page (plans/pdp-fullscreen-layer_2026-10-03). */
.line-pdp__gallery:has(.wc-block-product-gallery-dialog[open]) {
	z-index: var(--wp--custom--z--lightbox);
}

.line-pdp__gallery .wc-block-product-gallery-large-image,
.line-pdp__gallery .wc-block-product-gallery-thumbnails {
	inline-size: 100%;
	max-inline-size: none;
}

.line-pdp__gallery .wc-block-product-gallery-large-image {
	aspect-ratio: 4 / 5;
}

.line-pdp__gallery .wc-block-product-gallery-large-image :is(.wc-block-product-gallery-large-image__container, .wc-block-product-gallery-large-image__wrapper, img) {
	block-size: 100%;
	inline-size: 100%;
}

/* The full-screen view (plans/pdp-lightbox_2026-10-03): one photograph at a time, whole and fitted
   to the screen, on the paper colour. WooCommerce stacked every photograph at the screen's width in
   a column; here they sit in a row that snaps one at a time, each centred with half a screen of
   paper on either side, so a neighbour never shows. assets/js/enhance.js adds the arrows (the
   page's own buttons), the counter and the keys. */
.line-pdp__gallery .wc-block-product-gallery-dialog.wc-block-product-gallery-dialog {
	background-color: var(--wp--preset--color--surface);
	border: 0;
	/* stylelint-disable-next-line declaration-property-value-allowed-list -- the visible screen (phone toolbars) less WordPress's admin bar */
	block-size: calc(100dvb - var(--wp-admin--admin-bar--height, 0px));
}

.line-pdp__gallery .wc-block-product-gallery-dialog .wc-block-product-gallery-dialog__header {
	inset-block-start: 0;
	inset-inline: 0;
	padding: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
	pointer-events: none;
	position: absolute;
	z-index: 1;
}

.line-pdp__gallery .wc-block-product-gallery-dialog .wc-block-product-gallery-dialog__close-button {
	min-block-size: var(--wp--custom--target--min);
	min-inline-size: var(--wp--custom--target--min);
	pointer-events: auto;
}

.line-pdp__gallery .wc-block-product-gallery-dialog .wc-block-product-gallery-dialog__content {
	block-size: 100%;
	flex-direction: row;
	/* stylelint-disable-next-line declaration-property-value-allowed-list -- half a screen between photographs: a neighbour never shows */
	gap: 50vi;
	overflow-inline: auto;
	overflow-block: hidden;
	overscroll-behavior-inline: contain;
	padding-block: 0;
	/* stylelint-disable-next-line declaration-property-value-allowed-list -- lets the first and last photographs reach the centre */
	padding-inline: 50vi;
	scroll-snap-type: inline mandatory;
	scrollbar-width: none;
}

.line-pdp__gallery .wc-block-product-gallery-dialog .wc-block-product-gallery-dialog__content img {
	block-size: auto;
	flex: none;
	inline-size: auto;
	margin: 0;
	max-block-size: calc(100% - 2 * var(--wp--preset--spacing--100));
	/* stylelint-disable-next-line declaration-property-value-allowed-list -- the screen's width less room for the arrows */
	max-inline-size: calc(100vi - 2 * var(--wp--preset--spacing--110));
	scroll-snap-align: center;
	scroll-snap-stop: always;
}

/* A photograph not yet arrived takes its size from its ratio (assets/js/enhance.js sets it). */
.line-pdp__gallery .wc-block-product-gallery-dialog .wc-block-product-gallery-dialog__content img.line-lightbox__pending {
	aspect-ratio: var(--line-ratio);
	block-size: calc(100% - 2 * var(--wp--preset--spacing--100));
}

.line-lightbox__count {
	color: var(--wp--preset--color--ink-muted);
	direction: ltr;
	font-size: var(--wp--preset--font-size--300);
	font-variant-numeric: tabular-nums;
	inline-size: max-content;
	inset-block-start: var(--wp--preset--spacing--50);
	inset-inline: 0;
	margin-block: 0;
	margin-inline: auto;
	position: absolute;
	unicode-bidi: isolate;
	z-index: 1;
}

.line-lightbox__nav {
	inset-block-start: 50%;
	position: absolute;
	transform: translateY(-50%);
	z-index: 1;
}

.line-lightbox__nav--prev {
	inset-inline-start: var(--wp--preset--spacing--60);
}

.line-lightbox__nav--next {
	inset-inline-end: var(--wp--preset--spacing--60);
}

/* Previous at the left and next at the right in Hebrew too, as on the page and on the design's
   sides (plans/rtl-arrows_2026-10-04). */
.line-lightbox__nav--prev:dir(rtl) {
	inset-inline: auto var(--wp--preset--spacing--60);
}

.line-lightbox__nav--next:dir(rtl) {
	inset-inline: var(--wp--preset--spacing--60) auto;
}

/* Phones: the photograph takes the width; the arrows sit below it, within the thumb's reach. */
@media (max-width: 599px) {

	.line-pdp__gallery .wc-block-product-gallery-dialog .wc-block-product-gallery-dialog__content img {
		/* stylelint-disable-next-line declaration-property-value-allowed-list -- the screen's width less the side margins */
		max-inline-size: calc(100vi - 2 * var(--wp--preset--spacing--50));
	}

	.line-lightbox__nav {
		inset-block: auto var(--wp--preset--spacing--60);
		transform: none;
	}
}

/* A photo gallery runs left to right in both languages (plans/gallery-ltr-motion_2026-10-04): the
   right arrow, the → key and a finger moving left bring the next photograph in from the right, as
   in English, and the thumbnails follow the same order. Rows of photographs only: the arrows, the
   counters and the text keep the page's direction. */
.line-pdp__gallery :is(.wc-block-product-gallery-large-image__container, .wc-block-product-gallery-dialog__content, .wc-block-product-gallery-thumbnails__scrollable) {
	direction: ltr;
}

/* A photograph that fails to load shows its Hebrew description right to left. */
.line-pdp__gallery :is(.wc-block-product-gallery-large-image__container, .wc-block-product-gallery-dialog__content, .wc-block-product-gallery-thumbnails__scrollable) img:dir(rtl) {
	direction: rtl;
}

.line-pdp__gallery .wc-block-product-gallery-large-image img {
	aspect-ratio: auto;
	background: var(--wp--preset--color--media-placeholder);
	object-fit: cover;
}

.line-pdp__gallery .wc-block-product-gallery-thumbnails__scrollable {
	display: grid;
	gap: var(--wp--preset--spacing--40);
	grid-template-columns: repeat(4, 1fr);
}

.line-pdp__gallery .wc-block-product-gallery-thumbnails__thumbnail img {
	aspect-ratio: 4 / 5;
	background: var(--wp--preset--color--media-placeholder);
	object-fit: cover;
}

/* WooCommerce 11.1 saves the gallery with its `wc-block-product-gallery` class, which switches on
   WooCommerce's own gallery layout: the thumbnails as a proportional column (aspect-ratio 1/4,
   25 % basis) from 601 px, a 5:1 strip placed after the photograph and no previous / next on
   phones. The theme's layout replaces it (a row under the photograph, a rail from 1025 px, 44 px
   arrows as the visible cue that the photograph has siblings); the extra selectors outweigh
   WooCommerce's (up to four classes, and one `!important` on phones). */
.line-pdp .line-pdp__gallery.wc-block-product-gallery .wc-block-product-gallery-thumbnails.wc-block-product-gallery-thumbnails {
	aspect-ratio: auto !important;
	flex-basis: auto;
	order: 0;
}

.line-pdp .line-pdp__gallery.wc-block-product-gallery .wc-block-product-gallery-thumbnails__scrollable {
	flex-direction: row;
	overflow-block: auto;
}

.line-pdp__gallery .wc-block-product-gallery-thumbnails__thumbnail {
	flex-shrink: 1;
}

.line-pdp__gallery .wc-block-next-previous-buttons.wc-block-next-previous-buttons {
	display: flex;
}

/* In Hebrew too, previous is the left button pointing left and next the right one pointing right
   (plans/rtl-arrows_2026-10-04; the design's sides, with the arrows pointing outward as the owner
   approved — the design's own glyphs point inward). WooCommerce lays them out in reading order with
   mirrored glyphs, so the row runs the other way and the glyphs turn back (the full-screen view's
   copies too; their places are set with the view's arrows). The photographs run left to right
   (above), so the next one comes in from the right. */
.line-pdp__gallery .wc-block-next-previous-buttons.wc-block-next-previous-buttons:dir(rtl) {
	flex-direction: row-reverse;
}

.line-pdp__gallery .wc-block-next-previous-buttons__button:dir(rtl) svg {
	transform: scaleX(-1);
}

/* WooCommerce's hover zoom (premium polish round 2, 21st.dev #15) magnifies the photograph where
   the mouse is (its script sets the transform inline). A tap sends mouse events too and would
   leave the photograph magnified, so touch screens keep it at rest. */
@media (hover: none), (pointer: coarse) {

	.line-pdp__gallery [class~="wc-block-woocommerce-product-gallery-large-image__image--hoverZoom"] {
		transform: none !important;
	}
}

.line-pdp__gallery .wc-block-next-previous-buttons__button {
	background-color: var(--wp--preset--color--surface);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	min-block-size: var(--wp--custom--target--min);
	min-inline-size: var(--wp--custom--target--min);
}

/* Desktop: the thumbnails become a rail beside the photograph, at its reading-start side. */
@media (min-width: 1025px) {

	.line-pdp__grid .line-pdp__gallery {
		align-items: start;
		display: grid;
		gap: var(--wp--preset--spacing--50);
		grid-template-columns: var(--wp--custom--layout--gallery-rail) minmax(0, 1fr);
	}

	.line-pdp__grid .line-pdp__gallery .wc-block-product-gallery-thumbnails {
		grid-column: 1;
		grid-row: 1;
	}

	.line-pdp__grid .line-pdp__gallery .wc-block-product-gallery-large-image {
		grid-column: 2;
		grid-row: 1;
	}

	.line-pdp__grid .line-pdp__gallery .wc-block-product-gallery-thumbnails__scrollable {
		grid-template-columns: minmax(0, 1fr);
	}
}

.line-pdp__info {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--65);
	inset-block-start: var(--wp--custom--sticky--aside);
	position: sticky;
}

.line-pdp__info > *,
.line-pdp__title-block > * {
	margin: 0;
}

.line-pdp__title-block {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
}

.line-pdp__title {
	font-size: var(--wp--preset--font-size--title-1);
	line-height: var(--wp--custom--line-height--tight);
}

/* The heading's second line: what the piece is, in body size and weight (SEO plan D3). */
.line-pdp__kind {
	color: var(--wp--preset--color--ink-muted);
	display: block;
	font-size: var(--wp--preset--font-size--600);
	font-weight: var(--wp--custom--font-weight--body);
	letter-spacing: normal;
	line-height: var(--wp--custom--line-height--body);
	margin-block-start: var(--wp--preset--spacing--20);
}

.line-pdp__description {
	color: var(--wp--preset--color--ink-muted);
	max-inline-size: var(--wp--custom--measure--46);
}

.line-pdp__description p {
	margin: 0;
}

.line-pdp__price {
	font-size: var(--wp--preset--font-size--1200);
	font-weight: var(--wp--custom--font-weight--body);
	padding-block-start: var(--wp--preset--spacing--20);
}

.line-product-price {
	align-items: baseline;
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--40);
}

.line-product-price__note {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--400);
}

/* Product options configurator (line/product-options; prefix line-config, the custom page owns .line-options). */
.line-config__form {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--65);
}

.line-config__group {
	border: 0;
	margin: 0;
	min-inline-size: 0;
	padding: 0;
}

.line-config__legend {
	display: flex;
	flex-wrap: wrap;
	font-size: var(--wp--preset--font-size--400);
	gap: var(--wp--preset--spacing--30);
	inline-size: 100%;
	margin-block-end: var(--wp--preset--spacing--40);
	padding: 0;
}

.line-config__hint {
	color: var(--wp--preset--color--ink-subtle);
}

.line-config__chips {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--30);
}

/* Native radios stay in the accessibility tree and keyboard order, stretched invisibly over the chip. */
.line-option-chip__input,
.line-option-row__input {
	block-size: 100%;
	cursor: pointer;
	inline-size: 100%;
	inset: 0;
	margin: 0;
	opacity: 0;
	position: absolute;
}

.line-option-chip {
	align-items: center;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	cursor: pointer;
	display: inline-flex;
	font-size: var(--wp--preset--font-size--500);
	gap: var(--wp--preset--spacing--30);
	min-block-size: var(--wp--custom--component--option-chip--min-height);
	padding-block: var(--wp--custom--component--option-chip--padding-block);
	padding-inline: var(--wp--custom--component--option-chip--padding-inline);
	position: relative;
	transition:
		background-color var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--standard),
		border-color var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--standard);
}

.line-option-chip:hover,
.line-option-row:hover {
	border-color: var(--wp--preset--color--ink);
}

.line-option-chip:has(:checked) {
	background: var(--wp--preset--color--ink);
	border-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--surface);
}

.line-option-chip--swatch {
	font-size: var(--wp--preset--font-size--400);
	padding-block: var(--wp--preset--spacing--30);
	padding-inline: var(--wp--preset--spacing--40) var(--wp--preset--spacing--45);
}

.line-option-chip--swatch:has(:checked) {
	background: transparent;
	color: var(--wp--preset--color--ink);
}

.line-option-chip__swatch {
	background: var(--line-swatch, var(--wp--preset--color--media-placeholder));
	block-size: var(--wp--custom--component--swatch--size);
	border-radius: var(--wp--custom--radius--round);
	box-shadow: inset 0 0 0 var(--wp--custom--border--hairline) var(--wp--custom--color--swatch-ring);
	flex: none;
	inline-size: var(--wp--custom--component--swatch--size);
}

:is(.line-option-chip, .line-option-row):has(:focus-visible) {
	outline: var(--wp--custom--focus--width) solid var(--wp--preset--color--ink);
	outline-offset: var(--wp--custom--focus--offset);
}

.line-config__rows {
	display: grid;
	gap: var(--wp--preset--spacing--30);
}

.line-option-row {
	align-items: center;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	cursor: pointer;
	display: flex;
	gap: var(--wp--custom--component--row--gap);
	justify-content: space-between;
	min-block-size: var(--wp--custom--component--row--min-height);
	padding-block: var(--wp--custom--component--row--padding-block);
	padding-inline: var(--wp--custom--component--row--padding-inline);
	position: relative;
	transition:
		background-color var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--standard),
		border-color var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--standard);
}

.line-option-row:has(:checked) {
	background: var(--wp--preset--color--surface-alt);
	border-color: var(--wp--preset--color--ink);
}

.line-option-row__text,
.line-addon__text {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--10);
}

.line-option-row__label {
	font-size: var(--wp--preset--font-size--500);
	font-weight: var(--wp--custom--font-weight--emphasis);
}

.line-option-row__sub,
.line-addon__sub {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
}

.line-option-row__tag {
	color: var(--wp--preset--color--accent-strong);
	font-size: var(--wp--preset--font-size--400);
}

.line-config__addons,
.line-config__buy {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--45);
	padding-block-start: var(--wp--preset--spacing--60);
}

.line-addon {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
}

.line-addon__toggle {
	align-items: flex-start;
	cursor: pointer;
	display: flex;
	gap: var(--wp--preset--spacing--40);
}

.line-addon__toggle input {
	accent-color: var(--wp--preset--color--ink);
	block-size: var(--wp--preset--spacing--60);
	flex: none;
	inline-size: var(--wp--preset--spacing--60);
	margin: 0;
}

.line-addon__title {
	font-size: var(--wp--preset--font-size--500);
}

.line-addon__fee {
	unicode-bidi: isolate;
}

/* The text field shows when its box is ticked (works without JavaScript). */
.line-addon:not(:has(.line-addon__toggle :checked)) .line-addon__more {
	display: none;
}

.line-addon__more label {
	font-size: var(--wp--preset--font-size--400);
}

.line-addon__note {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--300);
	margin: 0;
}

.line-config__qty {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--45);
}

.line-stepper {
	align-items: center;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-control);
	display: inline-flex;
}

.line-stepper__button {
	background: transparent;
	block-size: var(--wp--custom--component--stepper--size);
	border: 0;
	color: var(--wp--preset--color--ink);
	cursor: pointer;
	font: inherit;
	font-size: var(--wp--preset--font-size--900);
	inline-size: var(--wp--custom--component--stepper--size);
}

.line-stepper__button:disabled {
	color: var(--wp--preset--color--ink-subtle);
	cursor: default;
}

.line-stepper__value {
	appearance: textfield;
	background: transparent;
	block-size: var(--wp--custom--component--stepper--size);
	border: 0;
	color: var(--wp--preset--color--ink);
	font: inherit;
	font-size: var(--wp--preset--font-size--600);
	font-variant-numeric: tabular-nums;
	font-weight: var(--wp--custom--font-weight--emphasis);
	inline-size: var(--wp--custom--component--stepper--size);
	padding: 0;
	text-align: center;
}

.line-stepper__value::-webkit-inner-spin-button,
.line-stepper__value::-webkit-outer-spin-button {
	appearance: none;
	margin: 0;
}

.line-config__units {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--400);
}

.line-config__breakdown {
	background: var(--wp--preset--color--surface-alt);
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--20);
	padding-block: var(--wp--custom--component--row--padding-inline);
	padding-inline: var(--wp--preset--spacing--60);
}

.line-config__row {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--400);
	gap: var(--wp--preset--spacing--40);
	justify-content: space-between;
	margin: 0;
}

.line-config__row:not([hidden]) {
	display: flex;
}

.line-config__row span:last-child {
	font-variant-numeric: tabular-nums;
	unicode-bidi: isolate;
}

.line-config__row--total {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--800);
	font-weight: var(--wp--custom--font-weight--emphasis);
	margin-block-start: var(--wp--preset--spacing--20);
	padding-block-start: var(--wp--preset--spacing--40);
}

.line-config__cta {
	font-size: var(--wp--preset--font-size--600);
	letter-spacing: var(--wp--custom--letter-spacing--cta);
	min-block-size: var(--wp--custom--target--cta);
}

/* The phone bar (D3b): the same submit at the foot of the screen once the main button has scrolled
   away; it slides up from below (transform), none of it from 768 px up. */
.line-config__bar {
	display: none;
}

@media (max-width: 767px) {

	.line-config__bar {
		align-items: center;
		background-color: var(--wp--preset--color--surface);
		box-shadow: var(--wp--preset--shadow--raised);
		display: flex;
		gap: var(--wp--preset--spacing--50);
		inset-block-end: 0;
		inset-inline: 0;
		padding-block: var(--wp--preset--spacing--40) max(var(--wp--preset--spacing--40), env(safe-area-inset-bottom));
		padding-inline: max(var(--wp--custom--gutter), env(safe-area-inset-left), env(safe-area-inset-right));
		position: fixed;
		transform: translateY(100%);
		visibility: hidden;
		z-index: var(--wp--custom--z--header);
	}

	.line-config__bar.is-shown {
		transform: none;
		visibility: visible;
	}

	.line-config__bar-price {
		font-size: var(--wp--preset--font-size--800);
		font-variant-numeric: tabular-nums lining-nums;
		white-space: nowrap;
	}

	.line-config__bar-cta {
		flex: 1;
		min-block-size: var(--wp--custom--target--control);
	}
}

/* From 768 px the bar sits at the top with the piece's name (premium polish round 4, #22): it
   slides down once the main button has scrolled away, under the header's layer (the header, when
   it comes back on the way up, covers it). */
.line-config__bar-name {
	display: none;
}

@media (min-width: 768px) {

	.line-config__bar {
		align-items: center;
		background-color: var(--wp--preset--color--surface);
		box-shadow: var(--wp--preset--shadow--hairline-lift);
		display: flex;
		gap: var(--wp--preset--spacing--60);
		inset-block-start: 0;
		inset-inline: 0;
		padding-block: var(--wp--preset--spacing--40);
		padding-inline: max(var(--wp--custom--gutter), calc((100% - var(--wp--custom--container--max)) / 2));
		position: fixed;
		transform: translateY(-100%);
		visibility: hidden;
		z-index: calc(var(--wp--custom--z--header) - 1);
	}

	.line-config__bar.is-shown {
		transform: none;
		visibility: visible;
	}

	.line-config__bar-name {
		display: block;
		flex: 1;
		font-size: var(--wp--preset--font-size--700);
		min-inline-size: 0;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	.line-config__bar-price {
		font-size: var(--wp--preset--font-size--700);
		font-variant-numeric: tabular-nums lining-nums;
		white-space: nowrap;
	}

	.line-config__bar-cta {
		min-block-size: var(--wp--custom--target--min);
	}
}

@media (min-width: 768px) and (prefers-reduced-motion: no-preference) {

	.line-config__bar {
		transition:
			transform var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--exit),
			visibility 0s linear var(--wp--custom--motion--duration--quick);
	}

	.line-config__bar.is-shown {
		transition:
			transform var(--wp--custom--motion--duration--relaxed) var(--wp--custom--motion--easing--enter),
			visibility 0s;
	}
}

@media (max-width: 767px) and (prefers-reduced-motion: no-preference) {

	.line-config__bar {
		transition:
			transform var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--exit),
			visibility 0s linear var(--wp--custom--motion--duration--quick);
	}

	.line-config__bar.is-shown {
		transition:
			transform var(--wp--custom--motion--duration--relaxed) var(--wp--custom--motion--easing--enter),
			visibility 0s;
	}
}

.line-config__cta:disabled {
	cursor: default;
	opacity: 0.6;
}

.line-config__status {
	font-size: var(--wp--preset--font-size--400);
	margin: 0;
}

.line-config__status:empty {
	display: none;
}

.line-config__bulk:not([hidden]) {
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	color: var(--wp--preset--color--ink);
	display: block;
	padding-block: var(--wp--custom--component--button-outline--padding-block);
	padding-inline: var(--wp--custom--component--button-outline--padding-inline);
	text-align: center;
	text-decoration: none;
	transition: border-color var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--standard);
}

.line-config__bulk:hover {
	border-color: var(--wp--preset--color--ink);
}

/* Free-shipping progress (line/free-shipping-progress, design M-02): hairline track. */
.line-free-ship:not([hidden]) {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--20);
}

.line-free-ship__text {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
	margin: 0;
}

.line-free-ship.is-reached .line-free-ship__text {
	color: var(--wp--preset--color--ink);
}

.line-free-ship__track {
	background: var(--wp--preset--color--line);
	block-size: var(--wp--custom--border--hairline);
	inline-size: 100%;
}

.line-free-ship__fill {
	background: var(--wp--preset--color--ink);
	block-size: 100%;
	display: block;
}

.line-mini-cart__progress {
	padding-block: var(--wp--preset--spacing--45);
	padding-inline: var(--wp--preset--spacing--60);
}

.line-cart__progress {
	margin-block-end: var(--wp--preset--spacing--60);
	max-inline-size: var(--wp--custom--measure--46);
}

.line-mini-cart__empty,
.line-empty-cart__text {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--500);
	padding-block: var(--wp--preset--spacing--70);
	text-align: center;
}

.line-empty-cart__text {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--700);
	padding-block-end: 0;
}

.line-empty-cart__actions {
	justify-content: center;
}

/* Product page quote band (#quote, design §4.3; stacks at 768 instead of clipping). */
.line-quote-band {
	padding-block: var(--wp--preset--spacing--110);
	padding-inline: var(--wp--custom--gutter);
}

.line-quote-band__grid {
	display: grid;
	gap: var(--wp--preset--spacing--90);
	grid-template-columns: 0.9fr 1.1fr;
}

.line-quote-band__grid > *,
.line-quote-band__text > * {
	margin: 0;
}

.line-quote-band__text {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
}

.line-quote-band .is-style-eyebrow {

	/* accent fails AA on surface-alt (PLAN §20 #30). */
	color: var(--wp--preset--color--accent-strong);
}

.line-quote-band__title {
	font-size: var(--wp--preset--font-size--title-3);
	font-weight: var(--wp--custom--font-weight--display);
	line-height: var(--wp--custom--line-height--heading);
}

.line-quote-band__lede {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--600);
	line-height: var(--wp--custom--line-height--relaxed);
	max-inline-size: var(--wp--custom--measure--38);
}

.line-quote-form__form--band {
	display: grid;
	gap: var(--wp--preset--spacing--45);
	grid-template-columns: 1fr 1fr;
}

.line-quote-form__form--band .line-field--brief,
.line-quote-form__form--band .line-contact-form__actions {
	grid-column: 1 / -1;
}

.line-quote-form__band-submit {
	background: transparent;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--ink);
	color: var(--wp--preset--color--ink);
	cursor: pointer;
	font: inherit;
	font-size: var(--wp--preset--font-size--500);
	padding-block: var(--wp--custom--component--button-outline--padding-block);
	padding-inline: var(--wp--custom--component--button-outline--padding-inline);
	transition:
		background-color var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--standard),
		color var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--standard);
}

.line-quote-form__band-submit:hover {
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--surface);
}

.line-quote-form__full {
	align-items: center;
	color: var(--wp--preset--color--ink);
	display: inline-flex;
	font-size: var(--wp--preset--font-size--400);
	min-block-size: var(--wp--custom--target--min);
}

.line-quote-form__band-sent {
	font-size: var(--wp--preset--font-size--700);
	margin: 0;
}

@media (max-width: 768px) {

	.line-quote-band__grid,
	.line-quote-form__form--band {
		grid-template-columns: 1fr;
	}
}

/* Store notices in the status tones (design M-32). */
.wc-block-components-notice-banner {
	border-radius: 0;
	font-size: var(--wp--preset--font-size--400);
}

.wc-block-components-notice-banner.is-success {
	background: var(--wp--custom--status--positive--bg);
	border-color: var(--wp--custom--status--positive--line);
	color: var(--wp--custom--status--positive--fg);
}

.wc-block-components-notice-banner.is-error {
	background: var(--wp--custom--status--negative--bg);
	border-color: var(--wp--custom--status--negative--fg);
	color: var(--wp--custom--status--negative--fg);
}

.wc-block-components-notice-banner.is-info {
	background: var(--wp--custom--status--info--bg);
	border-color: var(--wp--custom--status--info--fg);
	color: var(--wp--custom--status--info--fg);
}

.wc-block-components-notice-banner > svg {
	fill: currentcolor;
}

/* Accordions (native details, one open at a time). */
.line-accordion {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
}

.line-accordion__item {
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
}

.line-accordion__title {
	align-items: center;
	cursor: pointer;
	display: flex;
	gap: var(--wp--preset--spacing--50);
	justify-content: space-between;
	list-style: none;
	min-block-size: var(--wp--custom--target--control);
	padding-block: var(--wp--preset--spacing--40);
}

.line-accordion__title::-webkit-details-marker {
	display: none;
}

.line-accordion__title::after {
	background-image:
		linear-gradient(currentcolor, currentcolor),
		linear-gradient(currentcolor, currentcolor);
	background-position: center;
	background-repeat: no-repeat;
	background-size: 100% var(--wp--custom--border--hairline), var(--wp--custom--border--hairline) 100%;
	block-size: 0.75em;
	color: var(--wp--preset--color--ink-subtle);
	content: "";
	flex-shrink: 0;
	inline-size: 0.75em;
}

.line-accordion__item[open] > .line-accordion__title::after {
	transform: rotate(45deg);
}

@media (prefers-reduced-motion: no-preference) {

	.line-accordion__title::after {
		transition: transform var(--wp--custom--motion--duration--base) var(--wp--custom--motion--easing--standard);
	}

	.line-accordion__item[open] > .line-accordion__body {
		animation: line-settle var(--wp--custom--motion--duration--base) var(--wp--custom--motion--easing--enter);
	}
}

.line-accordion__body {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--500);
	line-height: var(--wp--custom--line-height--relaxed);
	max-inline-size: var(--wp--custom--measure--52);
	padding-block-end: var(--wp--preset--spacing--50);
}

.line-accordion__body p {
	margin: 0;
}

/* Complementary pieces. */
.line-related {
	padding-block: var(--wp--preset--spacing--100) var(--wp--preset--spacing--110);
}

.line-related:not(:has(.wc-block-product)) {
	display: none;
}

.line-related__title {
	font-size: var(--wp--preset--font-size--1100);
	font-weight: var(--wp--custom--font-weight--body);
	margin-block: 0 var(--wp--preset--spacing--70);
}

.line-related__grid .wc-block-product-template {
	column-gap: var(--wp--preset--spacing--65);
	grid-template-columns: repeat(4, 1fr);
}

.line-related__grid .line-card__title {
	font-size: var(--wp--preset--font-size--600);
}

@media (max-width: 1024px) {

	.line-pdp__grid {
		grid-template-columns: 1fr;
	}

	.line-pdp__info,
	.line-pdp__gallery {
		position: static;
	}

	.line-related__grid .wc-block-product-template {
		grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--wp--custom--layout--related-column)), 1fr));
	}
}

@media (max-width: 767px) {

	.line-related__grid .wc-block-product-template {
		display: flex;
		gap: var(--wp--preset--spacing--60);
		margin-inline: calc(var(--wp--custom--gutter) * -1);
		overflow: auto;
		padding-inline: var(--wp--custom--gutter);
		scroll-padding-inline: var(--wp--custom--gutter);
		scroll-snap-type: inline mandatory;
		scrollbar-width: none;
	}

	.line-related__grid .wc-block-product {
		flex: 0 0 min(72%, var(--wp--custom--layout--card-column));
		scroll-snap-align: start;
	}
}

/* ================================================================ Journal */
.line-journal__filter .line-term-chips {
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	padding-block-end: var(--wp--preset--spacing--50);
}

.line-journal__filter {
	padding-block-end: var(--wp--preset--spacing--60);
}

.line-journal__feature {
	padding-block: var(--wp--preset--spacing--70) var(--wp--preset--spacing--60);
}

.line-feature .wp-block-post-template {
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-feature__grid {
	align-items: center;
	display: grid;
	gap: var(--wp--preset--spacing--80);
	grid-template-columns: 1.25fr 0.75fr;
}

.line-feature__grid > *,
.line-feature__text > * {
	margin: 0;
}

.line-feature__media img,
.line-feed .wp-block-post-featured-image img,
.line-article__media img,
.line-aside-posts__thumb img {
	background: var(--wp--preset--color--media-placeholder);
}

.line-feature__text {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
}

.line-feature__title {
	font-size: var(--wp--preset--font-size--title-1);
	line-height: var(--wp--custom--line-height--snug);
}

.line-feature__excerpt,
.line-feed__excerpt {
	color: var(--wp--preset--color--ink-muted);
}

.line-feature__excerpt p,
.line-feed__excerpt p {
	margin: 0;
}

.line-post-meta--read-more .wp-block-button__link {
	padding-block: var(--wp--custom--component--button-outline--padding-block);
}

.line-journal__feed {
	padding-block: var(--wp--preset--spacing--80) var(--wp--preset--spacing--100);
}

.line-feed .wp-block-post-template {
	column-gap: var(--wp--preset--spacing--65);
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--wp--custom--layout--feed-column)), 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
	row-gap: var(--wp--preset--spacing--80);
}

.line-feed .wp-block-post {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
}

.line-feed .wp-block-post > * {
	margin: 0;
}

.line-feed .wp-block-post-featured-image {
	margin-block-end: var(--wp--preset--spacing--20);
}

.line-post-meta--kicker-date {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--200);
	margin: 0;
}

.line-post-meta--kicker-date.is-style-eyebrow {
	color: var(--wp--preset--color--accent);
}

.line-feed__title {
	font-size: var(--wp--preset--font-size--800);
	font-weight: var(--wp--custom--font-weight--body);
	line-height: var(--wp--custom--line-height--title);
}

.line-feed__excerpt {
	font-size: var(--wp--preset--font-size--500);
}

.line-feed .wp-block-post:hover .line-feed__title a,
.line-feature .wp-block-post:hover .line-feature__title a {
	color: var(--wp--preset--color--accent);
}

/* Newsletter band (journal) — the form skin on a light band. */
.line-letter-band {
	padding-block: var(--wp--preset--spacing--90);
}

.line-letter-band__inner {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--70);
	justify-content: space-between;
}

.line-letter-band__inner > *,
.line-letter-band__text > * {
	margin: 0;
}

.line-letter-band__text {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
	max-inline-size: var(--wp--custom--measure--44);
}

.line-newsletter--band {
	min-inline-size: var(--wp--custom--layout--form-min);
}

.line-newsletter--band .line-newsletter__row {
	border-block-end-color: var(--wp--preset--color--ink);
}

.line-newsletter--band .line-newsletter__email {
	font-size: var(--wp--preset--font-size--600);
}

.line-newsletter--band .line-newsletter__email::placeholder {
	color: var(--wp--preset--color--ink-subtle);
}

.line-newsletter--band :is(.line-newsletter__consent, .line-newsletter__status) {
	color: var(--wp--preset--color--ink-muted);
}

.line-newsletter--band .line-newsletter__status.is-error {
	color: var(--wp--preset--color--error);
}

/* Stage 4 (PLAN §6): the lead story large; at desktop the feed becomes quiet rows (image beside
   the text, hairlines between); titles are 44 px targets; topic, catalogue and project chips are one
   scrolling row on phones; pagination links are 44 px squares. */
:is(.line-feature__title, .line-feed__title) a {
	align-items: center;
	display: inline-flex;
	min-block-size: var(--wp--custom--target--min);
	min-inline-size: var(--wp--custom--target--min);
}

@media (min-width: 1025px) {

	.line-feed .wp-block-post-template {
		grid-template-columns: minmax(0, 1fr);
		row-gap: 0;
	}

	.line-feed .wp-block-post {
		align-content: start;
		border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
		column-gap: var(--wp--preset--spacing--80);
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
		padding-block: var(--wp--preset--spacing--70);
	}

	.line-feed .wp-block-post > .wp-block-post-featured-image {
		grid-row: 1 / span 4;
	}

	.line-feed .wp-block-post > :not(.wp-block-post-featured-image) {
		grid-column: 2;
	}
}

.wp-block-query-pagination :is(a, .page-numbers) {
	align-items: center;
	display: inline-flex;
	justify-content: center;
	min-block-size: var(--wp--custom--target--min);
	min-inline-size: var(--wp--custom--target--min);
}

@media (max-width: 767px) {

	.line-term-chips {
		max-inline-size: 100%;
		min-inline-size: 0;
	}

	.line-term-chips .line-chips {
		flex-wrap: nowrap;
		margin-inline: calc(var(--wp--custom--gutter) * -1);
		overflow: auto;
		padding-block: var(--wp--preset--spacing--10);
		padding-inline: var(--wp--custom--gutter);
		scroll-padding-inline: var(--wp--custom--gutter);
		scroll-snap-type: inline proximity;
		scrollbar-width: none;
	}

	.line-term-chips .line-chips > * {
		flex-shrink: 0;
		scroll-snap-align: start;
	}

	.line-term-chips .line-chip {
		white-space: nowrap;
	}
}

/* ================================================================ Article */
.line-article-wrap {
	padding-block-end: var(--wp--preset--spacing--100);
}

.line-article {
	align-items: start;
	display: grid;
	gap: var(--wp--preset--spacing--90);
	grid-template-columns: minmax(0, 1fr) var(--wp--custom--container--aside);
	padding-block-start: var(--wp--preset--spacing--60);
}

.line-article > * {
	margin: 0;
	max-inline-size: none;
}

.line-article__main {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--65);
}

.line-article__main > *,
.line-article__header > * {
	margin: 0;
}

.line-article__header {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
}

.line-post-meta--kicker.is-style-eyebrow {
	color: var(--wp--preset--color--accent);
	font-size: var(--wp--preset--font-size--200);
}

.line-article__title {
	font-size: var(--wp--preset--font-size--title-1);
	line-height: var(--wp--custom--line-height--tight);
}

.line-article__excerpt {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--700);
	max-inline-size: var(--wp--custom--measure--60);
}

.line-article__excerpt p {
	margin: 0;
}

.line-post-meta--byline {
	align-items: center;
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	color: var(--wp--preset--color--ink-subtle);
	display: flex;
	flex-wrap: wrap;
	font-size: var(--wp--preset--font-size--300);
	gap: 0 var(--wp--preset--spacing--40);
	padding-block-start: var(--wp--preset--spacing--50);
}

.line-article__body {
	font-size: var(--wp--preset--font-size--700);
	line-height: var(--wp--custom--line-height--article);
	max-inline-size: var(--wp--custom--measure--68);
}

.line-article__body h2 {
	font-size: var(--wp--preset--font-size--1100);
	font-weight: var(--wp--custom--font-weight--body);
}

.line-article__body .wp-block-quote,
.wp-block-pullquote blockquote {
	margin-inline: 0;
	padding-inline-start: 0;
}

/* Editorial quotes (premium polish without motion, #43, after 21st.dev's Editorial Testimonial):
   a large quotation mark in clay above the words (a mask, mirrored in Hebrew), the speaker as
   the museum label. */
:is(.line-article__body .wp-block-quote, .wp-block-pullquote blockquote)::before {
	background-color: var(--wp--preset--color--accent-strong);
	block-size: calc(var(--wp--custom--icon--quote) * 0.75);
	content: "";
	display: block;
	inline-size: var(--wp--custom--icon--quote);
	margin-block-end: var(--wp--preset--spacing--40);
	mask: var(--line-icon-quote) center / contain no-repeat;
}

:is(.line-article__body .wp-block-quote, .wp-block-pullquote blockquote):dir(rtl)::before {
	transform: scaleX(-1);
}

.line-article__body .wp-block-quote p {
	font-size: var(--wp--preset--font-size--900);
	font-weight: var(--wp--custom--font-weight--display);
	line-height: var(--wp--custom--line-height--compact);
}

/* No italics on Hebrew runs (quote citations are italic by default); the speaker reads as the
   museum label (the eyebrow style). */
.wp-block-quote cite,
.wp-block-pullquote cite {
	color: var(--wp--preset--color--accent-strong);
	display: block;
	font-size: var(--wp--preset--font-size--200);
	font-style: normal;
	font-weight: 400;
	margin-block-start: var(--wp--preset--spacing--50);
}

:is(.wp-block-quote, .wp-block-pullquote) cite:lang(en) {
	letter-spacing: var(--wp--custom--letter-spacing--overline);
	text-transform: uppercase;
}

/* Drop cap (premium polish without motion, #44): an article's first paragraph opens with a letter
   three lines tall; browsers without `initial-letter` show the paragraph as before. */
.line-article__body > p:first-of-type::first-letter {
	color: var(--wp--preset--color--ink);
	font-weight: var(--wp--custom--font-weight--display);
	initial-letter: 3;
	margin-inline-end: var(--wp--preset--spacing--30);
}

.line-article__keywords {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--40);
}

.line-article__keywords > * {
	margin: 0;
}

.line-article__keywords-label {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
}

.line-keywords {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--30);
}

.line-keywords a {
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--300);
	min-block-size: var(--wp--custom--target--min);
	padding-block: var(--wp--custom--component--keyword--padding-block);
	padding-inline: var(--wp--custom--component--keyword--padding-inline);
}

/* Comments. */
.line-comments {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	padding-block-start: var(--wp--preset--spacing--70);
}

.line-comments .wp-block-comments-title {
	font-size: var(--wp--preset--font-size--1100);
	font-weight: var(--wp--custom--font-weight--body);
}

.line-comments .wp-block-comment-template {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
	list-style: none;
	padding: 0;
}

.line-comment {
	background: var(--wp--preset--color--surface-raised);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
	padding-block: var(--wp--preset--spacing--50);
	padding-inline: var(--wp--preset--spacing--60);
}

.line-comment > * {
	margin: 0;
}

.bypostauthor > .line-comment {
	background: var(--wp--preset--color--surface-sunken);
	border-color: var(--wp--preset--color--line-strong);
}

.line-comment__meta {
	align-items: baseline;
	gap: var(--wp--preset--spacing--40);
}

.line-comment__meta .wp-block-comment-author-name {
	font-size: var(--wp--preset--font-size--500);
	font-weight: var(--wp--custom--font-weight--emphasis);
}

.line-comment__meta .wp-block-comment-date {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
}

.line-comment-badge {
	background: var(--wp--preset--color--surface-alt);
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--200);
	font-weight: var(--wp--custom--font-weight--emphasis);
	padding-block: var(--wp--custom--component--badge--padding-block);
	padding-inline: var(--wp--preset--spacing--40);
}

.line-comment .wp-block-comment-content {
	font-size: var(--wp--preset--font-size--500);
}

.line-comment-form input:not([type="submit"], [type="checkbox"]),
.line-comment-form textarea {
	background: var(--wp--preset--color--surface-raised);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-control);
	border-radius: 0;
	font: inherit;
	padding-block: var(--wp--custom--component--input--padding-block);
	padding-inline: var(--wp--custom--component--input--padding-inline);
}

/* Sidebar. */
.line-article__aside {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--60);
	inset-block-start: var(--wp--custom--sticky--aside);
	position: sticky;
}

.line-article__aside > * {
	margin: 0;
}

.line-aside-box {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
}

.line-aside-box > * {
	margin: 0;
}

.line-aside-box--studio {
	background: var(--wp--preset--color--surface-alt);
	padding: var(--wp--preset--spacing--60);
}

.line-aside-box--share {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	padding-block-start: var(--wp--preset--spacing--50);
}

.line-aside-box__title {
	font-size: var(--wp--preset--font-size--500);
	font-weight: var(--wp--custom--font-weight--emphasis);
}

.line-aside-box__bio {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--500);
}

.line-aside-box__link.wp-block-button .wp-block-button__link {
	background: none;
	border: 0;
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	font-size: var(--wp--preset--font-size--400);
	padding: 0;
}

.line-aside-posts .wp-block-post-template {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--45);
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-aside-posts .wp-block-post {
	display: grid;
	gap: var(--wp--preset--spacing--40);
	grid-template-columns: var(--wp--custom--layout--aside-thumb) 1fr;
}

.line-aside-posts .wp-block-post > *,
.line-aside-posts__text > * {
	margin: 0;
}

.line-aside-posts__thumb img {
	aspect-ratio: 62 / 48;
	object-fit: cover;
}

.line-aside-posts__title {
	font-size: var(--wp--preset--font-size--500);
	font-weight: var(--wp--custom--font-weight--body);
	line-height: var(--wp--custom--line-height--title);
}

.line-aside-posts__date {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
}

.line-share {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--30);
}

.line-share__button {
	background: none;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	color: var(--wp--preset--color--ink);
	cursor: pointer;
	font: inherit;
	font-size: var(--wp--preset--font-size--300);
	min-block-size: var(--wp--custom--target--min);
	padding-block: var(--wp--custom--component--keyword--padding-block);
	padding-inline: var(--wp--custom--component--keyword--padding-inline);
}

.line-share__button:hover {
	border-color: var(--wp--preset--color--ink);
}

.line-share__status {
	color: var(--wp--preset--color--ink-subtle);
	flex-basis: 100%;
	font-size: var(--wp--preset--font-size--300);
	margin: 0;
}

.line-share__status:empty {
	display: none;
}

/* Previous/next band. */
.line-post-nav {
	border-block-end: 0;
	padding-block: var(--wp--preset--spacing--80);
}

.line-post-nav__inner {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--60);
	justify-content: space-between;
}

.line-post-nav__inner > *,
.line-post-nav__next > * {
	margin: 0;
}

.line-post-nav__next {
	text-align: end;
}

.line-post-nav__label {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
}

.line-post-nav__link {
	font-size: var(--wp--preset--font-size--700);
}

@media (max-width: 1024px) {

	.line-feature__grid,
	.line-article {
		grid-template-columns: 1fr;
	}

	.line-article__aside {
		position: static;
	}
}

/* Stage 4: reading comfort (English a little tighter than Hebrew) and 44 px targets in the article;
   the comment-count link in the byline is underlined (WCAG 1.4.1). */
.line-article__body:lang(en) {
	line-height: var(--wp--custom--line-height--relaxed);
}

/* Reading progress (premium polish round 2, 21st.dev #16): on journal articles a line at the top
   of the window fills from the reading start as the page is read — a scroll-driven animation, no
   script, decorative (no text). Not under reduced motion or where the browser lacks it. */
@supports (animation-timeline: scroll()) {

	@media (prefers-reduced-motion: no-preference) {

		.single-post::before {
			animation: line-reading linear both;
			animation-timeline: scroll(root block);
			background-color: var(--wp--preset--color--accent-strong);
			block-size: var(--wp--custom--progress--thickness);
			content: "";
			inset-block-start: 0;
			inset-inline: 0;
			pointer-events: none;
			position: fixed;
			transform-origin: left center;
			z-index: calc(var(--wp--custom--z--header) + 1);
		}

		.single-post:dir(rtl)::before {
			transform-origin: right center;
		}
	}
}

@keyframes line-reading {

	from {
		transform: scaleX(0);
	}

	to {
		transform: scaleX(1);
	}
}

.line-post-meta--byline a {
	align-items: center;
	display: inline-flex;
	justify-content: center;
	min-block-size: var(--wp--custom--target--min);
	min-inline-size: var(--wp--custom--target--min);
	text-decoration: underline;
}

:is(.line-keywords, .line-aside-posts__title, .line-comment__meta .wp-block-comment-date, .line-post-nav__link) a,
.line-post-nav a.line-post-nav__link,
.line-comment .comment-reply-link {
	align-items: center;
	display: inline-flex;
	min-block-size: var(--wp--custom--target--min);
}

.line-comment .comment-reply-link {
	min-inline-size: var(--wp--custom--target--min);
}

/* ======================================================= Chefs & projects */
.line-projects__list {
	padding-block: var(--wp--preset--spacing--60) var(--wp--preset--spacing--100);
}

.line-project-grid .wp-block-post-template {
	column-gap: var(--wp--preset--spacing--60);
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--wp--custom--layout--project-column)), 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
	row-gap: var(--wp--preset--spacing--80);
}

.line-project-grid .wp-block-post {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
}

.line-project-grid .wp-block-post > * {
	margin: 0;
}

.line-project-card__media {
	margin-block-end: var(--wp--preset--spacing--30);
	position: relative;
}

.line-project-card__media img,
.line-project__media img,
.line-project__content .wp-block-image img {
	background: var(--wp--preset--color--media-placeholder);
}

.line-project-card__type {
	background: var(--wp--preset--color--surface);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	font-size: var(--wp--preset--font-size--300);
	inset-block-end: var(--wp--preset--spacing--45);
	inset-inline-start: var(--wp--preset--spacing--45);
	padding-block: var(--wp--custom--component--badge--padding-block);
	padding-inline: var(--wp--custom--component--badge--padding-inline);
	position: absolute;
}

.line-project-card__type a {
	color: var(--wp--preset--color--ink-muted);
}

.line-post-meta--client-year {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
}

.line-project-card__title {
	font-size: var(--wp--preset--font-size--900);
	font-weight: var(--wp--custom--font-weight--body);
	line-height: var(--wp--custom--line-height--title);
}

.line-project-card__summary {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--500);
}

.line-project-card__summary p {
	margin: 0;
}

.line-post-meta--project-link a {
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	font-size: var(--wp--preset--font-size--400);
}

/* Stats band. */
.line-stats {
	padding-block: var(--wp--preset--spacing--90);
}

.line-stats__grid {
	display: grid;
	gap: var(--wp--preset--spacing--80);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--wp--custom--layout--card-column)), 1fr));
}

.line-stat {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--20);
	padding-block-start: var(--wp--preset--spacing--50);
}

.line-stat > * {
	margin: 0;
}

.line-stat__value {
	font-size: var(--wp--preset--font-size--title-1);
	font-variant-numeric: lining-nums;
	font-weight: var(--wp--custom--font-weight--display);
	line-height: 1;
}

.line-stat__label {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--500);
}

/* Single project. */
.line-project {
	padding-block-end: var(--wp--preset--spacing--100);
}

.line-project__hero {
	align-items: start;
	display: grid;
	gap: var(--wp--preset--spacing--80);
	grid-template-columns: 1.2fr 0.8fr;
	padding-block: var(--wp--preset--spacing--65) var(--wp--preset--spacing--90);
}

.line-project__hero > *,
.line-project__side > * {
	margin: 0;
	max-inline-size: none;
}

.line-project__side {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
}

.line-post-meta--type-year.is-style-eyebrow {
	color: var(--wp--preset--color--accent);
	font-size: var(--wp--preset--font-size--200);
}

.line-project__title {
	font-size: var(--wp--preset--font-size--title-1);
	line-height: var(--wp--custom--line-height--tight);
}

.line-project__summary {
	font-size: var(--wp--preset--font-size--700);
}

.line-project__summary p {
	margin: 0;
}

.line-facts {
	margin: 0;
}

.line-facts__row {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	display: flex;
	gap: var(--wp--preset--spacing--50);
	justify-content: space-between;
	padding-block: var(--wp--preset--spacing--40);
}

.line-facts__row:last-child {
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
}

.line-facts dt {
	color: var(--wp--preset--color--ink-subtle);
}

.line-facts dd {
	margin: 0;
	text-align: end;
}

.line-project__content {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--90);
}

.line-project__content > * {
	margin: 0;
}

.line-project__story {
	column-gap: var(--wp--preset--spacing--80);
	row-gap: var(--wp--preset--spacing--70);
}

.line-project__story-title {
	font-size: var(--wp--preset--font-size--900);
	font-weight: var(--wp--custom--font-weight--body);
	margin-block: 0 var(--wp--preset--spacing--30);
}

.line-project__story p {
	color: var(--wp--preset--color--ink-muted);
	margin: 0;
}

.wp-block-pullquote {
	border: 0;
	margin: 0;
	padding: 0;
	text-align: start;
}

.wp-block-pullquote blockquote p {
	font-size: var(--wp--preset--font-size--900);
	font-weight: var(--wp--custom--font-weight--display);
	line-height: var(--wp--custom--line-height--compact);
	margin: 0;
}

.line-project__gallery.wp-block-gallery {
	display: grid;
	gap: var(--wp--preset--spacing--60);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--wp--custom--layout--gallery-column)), 1fr));
}

.line-project__gallery.wp-block-gallery .wp-block-image {
	inline-size: auto;
	margin: 0;
}

.line-project-products__title {
	font-size: var(--wp--preset--font-size--500);
	font-weight: var(--wp--custom--font-weight--emphasis);
	margin-block: var(--wp--preset--spacing--90) var(--wp--preset--spacing--40);
}

.line-project-products__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-project-products__row {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	display: flex;
	justify-content: space-between;
	padding-block: var(--wp--preset--spacing--45);
}

.line-project-products__row:last-child {
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
}

@media (max-width: 1024px) {

	.line-project__hero {
		grid-template-columns: 1fr;
	}

	.line-project__story {
		grid-template-columns: 1fr;
	}
}

/* Stage 4: projects as a gallery wall — two columns from 768 px, every third tile (and a last
   tile left alone) across the row at 16:9; the figures in the stats band as large light numerals; the single project's facts
   stay beside the photograph while it scrolls (desktop, PLAN §7 #7); links are 44 px targets. */
:is(.line-project-card__title, .line-project-card__type, .line-post-meta--project-link, .line-project-products__row) a {
	align-items: center;
	display: inline-flex;
	justify-content: center;
	min-block-size: var(--wp--custom--target--min);
	min-inline-size: var(--wp--custom--target--min);
}

@media (min-width: 768px) {

	.line-project-grid .wp-block-post-template {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	/* A tile left alone in the last row spans it too (no empty half-row). Tiles are counted as shown
	   (the block editor's hidden copy of the tile being edited is not counted, as above). */
	.line-project-grid .wp-block-post:is(:nth-child(3n + 1 of :not([style*="display: none"])), :nth-child(3n + 2 of :not([style*="display: none"])):nth-last-child(1 of :not([style*="display: none"]))) {
		grid-column: 1 / -1;
	}

	/* The image carries core's inline aspect-ratio (4/3, from the block): the frame sets 16:9 and
	   the link and image fill its height, so the inline ratio no longer applies. */
	.line-project-grid .wp-block-post:is(:nth-child(3n + 1 of :not([style*="display: none"])), :nth-child(3n + 2 of :not([style*="display: none"])):nth-last-child(1 of :not([style*="display: none"]))) .line-project-card__media .wp-block-post-featured-image {
		aspect-ratio: 16 / 9;
	}

	.line-project-grid .wp-block-post:is(:nth-child(3n + 1 of :not([style*="display: none"])), :nth-child(3n + 2 of :not([style*="display: none"])):nth-last-child(1 of :not([style*="display: none"]))) .line-project-card__media :is(a, img) {
		block-size: 100%;
		display: block;
	}
}

@media (min-width: 1025px) {

	.line-project__side {
		align-self: start;
		inset-block-start: var(--wp--custom--sticky--aside);
		position: sticky;
	}
}

/* ============================================================ Form fields */
.line-field {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--20);
}

.line-field label {
	font-size: var(--wp--preset--font-size--400);
}

.line-field :is(input, select, textarea),
.line-faq-search__input {
	background: var(--wp--preset--color--surface-raised);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-control);
	border-radius: 0;
	color: var(--wp--preset--color--ink);
	font: inherit;
	font-size: var(--wp--preset--font-size--500);
	padding-block: var(--wp--custom--component--input--padding-block);
	padding-inline: var(--wp--custom--component--input--padding-inline);
}

.line-field :is(input, textarea)[aria-invalid="true"] {
	border-color: var(--wp--preset--color--error);
}

.line-field__error {
	color: var(--wp--preset--color--error);
	font-size: var(--wp--preset--font-size--300);
	margin: 0;
}

.line-field__error:empty {
	display: none;
}

/* ================================================================ Support */
html {
	scroll-padding-block-start: calc(var(--wp--custom--sticky--header) + var(--wp--preset--spacing--60));
}

.line-faq-search {
	max-inline-size: var(--wp--custom--layout--search-field);
}

.line-faq-search__input {
	inline-size: 100%;
}

.line-faq-search__empty {
	color: var(--wp--preset--color--ink-muted);
	margin-block: var(--wp--preset--spacing--40) 0;
}

.line-support {
	padding-block: var(--wp--preset--spacing--60) var(--wp--preset--spacing--110);
}

.line-support__grid {
	align-items: start;
	display: grid;
	gap: var(--wp--preset--spacing--90);
	grid-template-columns: var(--wp--custom--layout--toc) minmax(0, 1fr);
}

.line-support__grid > * {
	margin: 0;
	max-inline-size: none;
}

.line-support__toc {
	inset-block-start: var(--wp--custom--sticky--aside);
	position: sticky;
}

.line-support__toc > * {
	margin: 0;
}

.line-support__toc-label {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
	margin-block-end: var(--wp--preset--spacing--40);
}

.line-toc {
	border-inline-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	display: flex;
	flex-direction: column;
	gap: 0;
	list-style: none;
	margin: 0;
	padding-inline-start: var(--wp--preset--spacing--50);
}

.line-toc a {
	font-size: var(--wp--preset--font-size--500);
	position: relative;
}

/* The section being read (premium polish round 3, 21st.dev #19): its link carries aria-current
   (assets/js/enhance.js), turns ink and a 2 px marker settles on the list's rail. */
.line-toc a::before {
	background-color: var(--wp--preset--color--ink);
	block-size: 1lh;
	content: "";
	inline-size: var(--wp--custom--progress--thickness);
	inset-block-start: calc(50% - 0.5lh);
	inset-inline-start: calc(-1 * var(--wp--preset--spacing--50) - var(--wp--custom--progress--thickness) / 2 - var(--wp--custom--border--hairline) / 2);
	pointer-events: none;
	position: absolute;
	transform: scaleY(0);
}

.line-toc a[aria-current="true"] {
	color: var(--wp--preset--color--ink);
}

.line-toc a[aria-current="true"]::before {
	transform: scaleY(1);
}

/* A section reached from the contents takes focus for keyboard users (assets/js/enhance.js); the
   section itself draws no ring — the reader's place is the heading at the top of the window. */
.line-support__section[tabindex="-1"]:focus {
	outline: none;
}

@media (prefers-reduced-motion: no-preference) {

	.line-toc a::before {
		transition: transform var(--wp--custom--motion--duration--base) var(--wp--custom--motion--easing--enter);
	}
}

.line-support__sections {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--100);
}

.line-support__sections > *,
.line-support__section > * {
	margin: 0;
}

.line-support__section {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--60);
}

.line-support__title {
	font-size: var(--wp--preset--font-size--1200);
	font-weight: var(--wp--custom--font-weight--body);
}

.line-ship-table table {
	background: var(--wp--preset--color--surface-raised);
	border-collapse: collapse;
	inline-size: 100%;
}

.line-ship-table td {
	border: 0;
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	padding-block: var(--wp--preset--spacing--45);
	padding-inline: var(--wp--preset--spacing--60);
}

.line-ship-table td:last-child {
	text-align: end;
}

.line-support__note {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--500);
}

.line-numbered {
	counter-reset: line-step;
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-numbered > li {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	counter-increment: line-step;
	display: flex;
	gap: var(--wp--preset--spacing--60);
	padding-block: var(--wp--preset--spacing--50);
}

.line-numbered > li::before {
	color: var(--wp--preset--color--accent);
	content: counter(line-step, decimal-leading-zero);
	font-size: var(--wp--preset--font-size--300);
	padding-block-start: var(--wp--preset--spacing--10);
}

.line-care {
	display: grid;
	gap: var(--wp--preset--spacing--60);
	grid-template-columns: 1fr 1fr;
}

.line-care > * {
	margin: 0;
}

.line-care__panel {
	padding: var(--wp--preset--spacing--60);
}

.line-care__panel > * {
	margin: 0;
}

.line-care__panel--ok {
	background: var(--wp--custom--status--positive--bg);
	color: var(--wp--custom--status--positive--fg);
}

.line-care__panel--no {
	background: var(--wp--custom--status--negative--bg);
	color: var(--wp--custom--status--negative--fg);
}

.line-care__title {
	font-size: var(--wp--preset--font-size--700);
	font-weight: var(--wp--custom--font-weight--emphasis);
	margin-block-end: var(--wp--preset--spacing--40);
}

.line-care__list {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
	padding-inline-start: var(--wp--preset--spacing--60);
}

/* FAQ (core Details). */
.line-faq {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
}

.line-faq .wp-block-details {
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	margin: 0;
}

.line-faq summary {
	align-items: center;
	cursor: pointer;
	display: flex;
	justify-content: space-between;
	list-style: none;
	min-block-size: var(--wp--custom--target--control);
	padding-block: var(--wp--preset--spacing--50);
}

.line-faq summary::-webkit-details-marker {
	display: none;
}

.line-faq summary::after {
	color: var(--wp--preset--color--ink-subtle);
	content: "+";
	font-size: var(--wp--preset--font-size--900);
	line-height: 1;
}

.line-faq details[open] > summary::after {
	content: "−";
}

.line-faq details > p {
	color: var(--wp--preset--color--ink-muted);
	margin-block: 0 var(--wp--preset--spacing--50);
	max-inline-size: var(--wp--custom--measure--60);
}

/* Stockists. */
.line-stockists {
	display: grid;
	gap: var(--wp--preset--spacing--45);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--wp--custom--layout--stockist-column)), 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-stockist {
	background: var(--wp--preset--color--surface-raised);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	padding: var(--wp--preset--spacing--60);
}

.line-stockist > * {
	margin: 0;
}

.line-stockist__details {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--400);
}

.line-studio-card {
	align-items: center;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	display: grid;
	gap: var(--wp--preset--spacing--40);
	grid-template-columns: 1fr auto;
	padding: var(--wp--preset--spacing--60);
}

.line-studio-card > * {
	margin: 0;
}

.line-studio-card__title {
	font-size: var(--wp--preset--font-size--700);
}

.line-studio-card__text {
	color: var(--wp--preset--color--ink-muted);
	grid-column: 1;
}

.line-studio-card .wp-block-buttons {
	grid-column: 2;
	grid-row: 1 / span 2;
}

/* Contact block. */
.line-contact {
	border: 0;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--60);
	padding: var(--wp--preset--spacing--80);
}

.line-contact > * {
	margin: 0;
}

.line-contact .line-business--contacts {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--50);
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-contact-form__form {
	display: grid;
	gap: var(--wp--preset--spacing--45);
	grid-template-columns: 1fr 1fr;
}

.line-field--message,
.line-contact-form__actions {
	grid-column: 1 / -1;
}

.line-contact-form__actions {
	align-items: center;
	display: flex;
	gap: var(--wp--preset--spacing--50);
}

.line-contact-form__actions > * {
	margin: 0;
}

.line-contact-form__status {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--300);
}

.line-contact-form__sent p {
	font-size: var(--wp--preset--font-size--700);
	margin-block: 0 var(--wp--preset--spacing--50);
}

.line-contact-form__again {
	background: none;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--ink);
	color: var(--wp--preset--color--ink);
	cursor: pointer;
	font: inherit;
	padding-block: var(--wp--custom--component--button-outline--padding-block);
	padding-inline: var(--wp--custom--component--button-outline--padding-inline);
}

@media (max-width: 1024px) {

	.line-support__grid,
	.line-care,
	.line-contact-form__form {
		grid-template-columns: 1fr;
	}

	.line-support__toc {
		position: static;
	}
}

/* Stage 4: 44 × 44 px targets in the table of contents and for the section links (a short word
   like "FAQ" keeps its place at the reading start); 48 px FAQ questions. */
.line-toc a,
.line-support__section p > a:only-child {
	align-items: center;
	display: inline-flex;
	min-block-size: var(--wp--custom--target--min);
	min-inline-size: var(--wp--custom--target--min);
}

/* ========================================================== Custom orders */
.line-hero--custom {
	grid-template-columns: 0.9fr 1.1fr;
	min-block-size: 64vb;
}

.line-hero--custom .line-hero__text {
	align-items: flex-start;
	gap: var(--wp--preset--spacing--60);
	padding-block: var(--wp--preset--spacing--100);
	padding-inline: var(--wp--preset--spacing--90);
}

.line-process {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--70);
	padding-block: var(--wp--preset--spacing--100) var(--wp--preset--spacing--70);
}

.line-process > * {
	margin: 0;
}

.line-process__grid {

	/* A flex item with auto margins (constrained layout) would shrink to its max-content width. */
	box-sizing: border-box;
	display: grid;
	gap: 0;
	grid-template-columns: minmax(0, 1fr);
	inline-size: 100%;
}

.line-process__grid > * {
	margin: 0;
}

.line-step__time {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
	padding-block-start: var(--wp--preset--spacing--10);
}

.line-custom-two {
	padding-block: var(--wp--preset--spacing--90);
}

.line-custom-two__grid {
	align-items: start;
	display: grid;
	gap: var(--wp--preset--spacing--65);
	grid-template-columns: 1fr 1fr;
}

.line-custom-two__grid > * {
	margin: 0;
}

.line-options {
	background: var(--wp--preset--color--surface-alt);
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
	padding: var(--wp--preset--spacing--70);
}

.line-options > *,
.line-option > *,
.line-pricing > * {
	margin: 0;
}

.line-option {
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	display: flex;
	gap: var(--wp--preset--spacing--45);
	justify-content: space-between;
	padding-block-end: var(--wp--preset--spacing--30);
}

.line-option__label {
	font-size: var(--wp--preset--font-size--500);
}

.line-option__detail {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--400);
	text-align: end;
}

.line-pricing {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
}

.line-pricing__title {
	font-size: var(--wp--preset--font-size--900);
	font-weight: var(--wp--custom--font-weight--body);
}

.line-pricing__intro {
	font-size: var(--wp--preset--font-size--500);
	max-inline-size: var(--wp--custom--measure--44);
}

.line-tiers table {
	background: var(--wp--preset--color--surface-raised);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	border-collapse: collapse;
	inline-size: 100%;
}

.line-tiers td {
	border: 0;
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-faint);
	font-size: var(--wp--preset--font-size--500);
	font-variant-numeric: tabular-nums lining-nums;
	padding-block: var(--wp--preset--spacing--45);
	padding-inline: var(--wp--preset--spacing--50);
}

.line-tiers td:last-child {
	font-weight: var(--wp--custom--font-weight--emphasis);
	text-align: end;
}

.line-pricing__note {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
}

/* Brief band. */
.line-brief {
	padding-block: var(--wp--preset--spacing--100);
}

.line-brief__grid {
	align-items: start;
	display: grid;
	gap: var(--wp--preset--spacing--80);
	grid-template-columns: 0.8fr 1.2fr;
}

.line-brief__grid > *,
.line-brief__intro > * {
	margin: 0;
}

.line-brief__intro {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
}

.line-brief__intro .line-body {
	max-inline-size: var(--wp--custom--measure--34);
}

.line-brief__contacts {
	color: var(--wp--preset--color--ink-muted);
	display: flex;
	flex-wrap: wrap;
	font-size: var(--wp--preset--font-size--400);
	gap: var(--wp--preset--spacing--40);
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-brief .line-field :is(input, select, textarea) {
	background: var(--wp--preset--color--surface);
}

.line-quote-form__form {
	display: grid;
	gap: var(--wp--preset--spacing--50);
	grid-template-columns: 1fr 1fr;
}

.line-field--brief,
.line-field--wants,
.line-quote-form__form .line-contact-form__actions {
	grid-column: 1 / -1;
}

.line-field--wants {
	border: 0;
	margin: 0;
	padding: 0;
}

.line-field--wants legend {
	font-size: var(--wp--preset--font-size--400);
	margin-block-end: var(--wp--preset--spacing--20);
	padding: 0;
}

.line-chip--toggle {
	background: var(--wp--preset--color--surface);
	cursor: pointer;
	min-block-size: var(--wp--custom--component--toggle-chip--min-height);
	padding-block: var(--wp--custom--component--toggle-chip--padding-block);
	padding-inline: var(--wp--custom--component--toggle-chip--padding-inline);
}

.line-chip--toggle input {
	block-size: 1px;
	clip-path: inset(50%);
	inline-size: 1px;
	overflow: hidden;
	position: absolute;
}

.line-chip--toggle:has(input:checked) {
	background: var(--wp--preset--color--ink);
	border-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--surface);
}

.line-chip--toggle:has(input:focus-visible) {
	outline: var(--wp--custom--focus--width) solid var(--wp--preset--color--ink);
	outline-offset: var(--wp--custom--focus--offset);
}

.line-quote-form__sent {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--45);
	max-inline-size: var(--wp--custom--measure--52);
}

.line-quote-form__sent > * {
	margin: 0;
}

.line-quote-form__sent-title {
	font-size: var(--wp--preset--font-size--title-2);
	line-height: var(--wp--custom--line-height--snug);
}

@media (max-width: 1024px) {

	.line-hero--custom,
	.line-custom-two__grid,
	.line-brief__grid,
	.line-quote-form__form {
		grid-template-columns: 1fr;
	}

	.line-hero--custom .line-hero__text {
		padding-block: var(--wp--preset--spacing--80);
		padding-inline: 0;
	}
}

/* Stage 4: the five steps as a timeline (PLAN §7 #10) — on a vertical hairline on phones, a
   numbered row from 1024 px; tier prices in tabular figures; the square hero image stays square. */
.line-process .line-step {
	border-block-start: 0;
	border-inline-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	padding-block: var(--wp--preset--spacing--40) var(--wp--preset--spacing--70);
	padding-inline-start: var(--wp--preset--spacing--70);
}

@media (min-width: 1024px) {

	.line-process__grid {
		gap: var(--wp--preset--spacing--60);
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}

	.line-process .line-step {
		border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
		border-inline-start: 0;
		padding-block: var(--wp--preset--spacing--60) 0;
		padding-inline-start: 0;
	}
}

@media (max-width: 1024px) {

	.line-hero--custom .line-hero__media img {
		aspect-ratio: 1;
	}
}

/* ===================================================== Search, 404, legal */
.line-search-form {
	max-inline-size: var(--wp--custom--layout--search-field);
}

.line-search-form .wp-block-search__input {
	background: var(--wp--preset--color--surface-raised);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-control);
	border-radius: 0;
	font: inherit;
	padding-block: var(--wp--custom--component--input--padding-block);
	padding-inline: var(--wp--custom--component--input--padding-inline);
}

.line-search-form .wp-block-search__button {
	background: var(--wp--preset--color--ink);
	border: 0;
	border-radius: 0;
	color: var(--wp--preset--color--surface);
	font: inherit;
	margin-inline-start: 0;
	padding-inline: var(--wp--custom--component--button-outline--padding-inline);
}

.line-not-found__intro {
	padding-block-end: var(--wp--preset--spacing--110);
}

.line-not-found__actions {
	gap: var(--wp--preset--spacing--45);
}

.line-legal {
	padding-block: var(--wp--preset--spacing--90) var(--wp--preset--spacing--110);
}

.line-legal__title {
	font-size: var(--wp--preset--font-size--title-1);
	line-height: var(--wp--custom--line-height--tight);
}

.line-legal__body {
	font-size: var(--wp--preset--font-size--700);
	line-height: var(--wp--custom--line-height--relaxed);
}

.line-legal__body :is(h2, h3) {
	margin-block: var(--wp--preset--spacing--80) var(--wp--preset--spacing--40);
}

/* Lawyer-review notice and the owner's placeholders stay visible until the texts are final. */
.line-legal__draft {
	background: var(--wp--custom--status--progress--bg);
	color: var(--wp--custom--status--progress--fg);
	font-size: var(--wp--preset--font-size--500);
	padding-block: var(--wp--preset--spacing--40);
	padding-inline: var(--wp--preset--spacing--50);
}

.line-placeholder {
	background: var(--wp--custom--status--progress--bg);
	color: var(--wp--custom--status--progress--fg);
	unicode-bidi: isolate;
}

.line-legal__table {
	font-size: var(--wp--preset--font-size--500);
	overflow: auto;
}

.line-legal__table table {
	border-collapse: collapse;
	inline-size: 100%;
}

.line-legal__table :is(th, td) {
	border: 0;
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	padding-block: var(--wp--preset--spacing--40);
	padding-inline: var(--wp--preset--spacing--40);
	text-align: start;
	vertical-align: top;
}

.line-legal__table th {
	font-weight: var(--wp--custom--font-weight--emphasis);
}

/* Privacy notice of every public form (line-core Form_Notice): full width of the form grid. */
.line-form-notice {
	grid-column: 1 / -1;
}

/* Cancellation form (line/cancellation-form): the contact form's layout. */
.line-cancel-form__form {
	display: grid;
	gap: var(--wp--preset--spacing--45);
	grid-template-columns: 1fr 1fr;
	margin-block-start: var(--wp--preset--spacing--50);
}

.line-field--reason,
.line-field--notes,
.line-field--defective,
.line-cancel-form__actions {
	grid-column: 1 / -1;
}

.line-field--defective {
	border: 0;
	flex-direction: row;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--60);
	margin: 0;
	padding: 0;
}

.line-field--defective legend {
	font-size: var(--wp--preset--font-size--400);
	margin-block-end: var(--wp--preset--spacing--20);
	padding: 0;
}

.line-form-notice,
.line-cancel-form__status {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--300);
	margin: 0;
}

/* Links inside running text are underlined (WCAG 1.4.1). */
.line-form-notice a,
.line-legal__body p a,
.line-legal__body li a {
	text-decoration: underline;
}

.line-cancel-form__actions {
	align-items: center;
	display: flex;
	gap: var(--wp--preset--spacing--50);
}

.line-cancel-form__actions > * {
	margin: 0;
}

.line-cancel-form__sent p {
	font-size: var(--wp--preset--font-size--700);
}

@media (max-width: 768px) {

	.line-cancel-form__form {
		grid-template-columns: 1fr;
	}
}

/* Stage 4: the 404 code as large light numerals (the paragraph is the template's own "404"). */
.line-not-found__code.is-style-eyebrow {
	color: var(--wp--preset--color--accent-strong);
	font-size: var(--wp--preset--font-size--display);
	font-variant-numeric: lining-nums;
	font-weight: var(--wp--custom--font-weight--display);
	letter-spacing: 0;
	line-height: var(--wp--custom--line-height--display-hebrew);
	margin-block-end: var(--wp--preset--spacing--40);
}

/* ============================================================== Commerce */
.line-commerce {
	padding-block: var(--wp--preset--spacing--80) var(--wp--preset--spacing--110);
}

.line-commerce__title {
	font-size: var(--wp--preset--font-size--1300);
}

.line-header--checkout .line-header__back {
	font-size: var(--wp--preset--font-size--500);
	margin: 0;
}

.line-header--checkout .line-logo {
	block-size: var(--wp--custom--logo--checkout);
}

.line-commerce :is(.wc-block-components-text-input input, .wc-block-components-textarea, .wc-blocks-components-select__select, .wc-block-components-combobox .components-combobox-control input) {
	border-color: var(--wp--preset--color--line-control);
	border-radius: 0;
}

.line-commerce .wc-block-components-button:not(.is-link) {
	background: var(--wp--preset--color--ink);
	border-radius: 0;
	color: var(--wp--preset--color--surface);
}

.line-commerce .wc-block-components-button:not(.is-link):hover {
	background: var(--wp--preset--color--ink-soft);
}

.line-commerce :is(.wc-block-components-sidebar, .wp-block-woocommerce-checkout-order-summary-block) {
	background: var(--wp--preset--color--surface-alt);
}

/* WooCommerce hides the focus of the Ship / Pickup toggle (outline: none on :focus-within) and
   shows only a faint tint: the theme's focus ring instead (WCAG 2.4.7, 1.4.11). */
.line-commerce .wc-block-checkout__shipping-method-option:focus-visible {
	outline: var(--wp--custom--focus--width) solid var(--wp--preset--color--ink);
	outline-offset: var(--wp--custom--focus--offset);
}

/* Order receipt (plans/order-receipt-card_2026-10-06, after 21st.dev's Ticket Confirmation Card):
   the order confirmation's status, facts, items and "what happens next" in one receipt card
   (`line-receipt` in templates/order-confirmation.html, 720 px column); line-core adds the
   order's status to the body (`line-order--{status}`, Woo\Confirmation). */

/* The card: a white receipt on the page's warm surface, square corners like the rest of the site. */
.line-receipt {
	--line-receipt-notch: var(--wp--preset--spacing--65);

	background: var(--wp--preset--color--surface-raised);
	box-shadow: var(--wp--preset--shadow--overlay);
	margin-block: var(--wp--preset--spacing--70) var(--wp--preset--spacing--90);
	overflow: hidden;
	padding: var(--wp--preset--spacing--80);
}

/* Tear lines between the parts: a dashed rule with a round bite out of each edge. */
.line-receipt > * + * {
	border-block-start: var(--wp--custom--border--quote) dashed var(--wp--preset--color--line-strong);
	margin-block-start: var(--wp--preset--spacing--70);
	padding-block-start: var(--wp--preset--spacing--70);
	position: relative;
}

.line-receipt > * + *::before,
.line-receipt > * + *::after {
	background: var(--wp--preset--color--surface);
	block-size: var(--line-receipt-notch);
	border-radius: var(--wp--custom--radius--round);
	content: "";
	inline-size: var(--line-receipt-notch);
	inset-block-start: calc(var(--line-receipt-notch) / -2 - var(--wp--custom--border--quote) / 2);
	position: absolute;
}

.line-receipt > * + *::before {
	inset-inline-start: calc(-1 * var(--wp--preset--spacing--80) - var(--line-receipt-notch) / 2);
}

.line-receipt > * + *::after {
	inset-inline-end: calc(-1 * var(--wp--preset--spacing--80) - var(--line-receipt-notch) / 2);
}

/* A part with nothing in it (no "what next" for a failed order; no facts until a guest confirms
   their e-mail) takes no room and draws no tear line. */
.line-receipt > :not(:has(*)) {
	display: none;
}

/* Head: a mark in a soft circle, the heading, the thank-you line. */
.line-receipt__head {
	position: relative;
	text-align: center;
}

.line-receipt__head::before,
.line-receipt__head::after {
	block-size: var(--wp--preset--spacing--90);
	content: "";
	inline-size: var(--wp--preset--spacing--90);
}

.line-receipt__head::before {
	background: var(--wp--custom--status--positive--bg);
	border-radius: var(--wp--custom--radius--round);
	display: block;
	margin-block-end: var(--wp--preset--spacing--60);
	margin-inline: auto;
}

.line-receipt__head::after {
	background: var(--wp--custom--status--positive--fg);
	inset-block-start: 0;
	inset-inline: 0;
	margin-inline: auto;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 50% no-repeat;
	position: absolute;
}

/* Waiting for a bank transfer: a clock in the "progress" tone instead of the tick. */
.line-order--on-hold .line-receipt__head::before,
.line-order--pending .line-receipt__head::before {
	background: var(--wp--custom--status--progress--bg);
}

.line-order--on-hold .line-receipt__head::after,
.line-order--pending .line-receipt__head::after {
	background: var(--wp--custom--status--progress--fg);
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='8'/%3E%3Cpath d='M12 7.5V12l3 2'/%3E%3C/svg%3E");
}

/* The payment failed: an exclamation mark in the "negative" tone; WooCommerce's retry links stay. */
.line-order--failed .line-receipt__head::before {
	background: var(--wp--custom--status--negative--bg);
}

.line-order--failed .line-receipt__head::after {
	background: var(--wp--custom--status--negative--fg);
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 6.5v7'/%3E%3Cpath d='M12 17.5v.01'/%3E%3C/svg%3E");
}

/* Cancelled or refunded: a quiet dash in the "neutral" tone under WooCommerce's own heading. */
.line-order--cancelled .line-receipt__head::before,
.line-order--refunded .line-receipt__head::before {
	background: var(--wp--custom--status--neutral--bg);
}

.line-order--cancelled .line-receipt__head::after,
.line-order--refunded .line-receipt__head::after {
	background: var(--wp--custom--status--neutral--fg);
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'%3E%3Cpath d='M7.5 12h9'/%3E%3C/svg%3E");
}

.line-receipt .line-confirmation__status {
	font-size: inherit;
	margin: 0;
}

.line-receipt .line-confirmation__status h1 {
	font-size: var(--wp--preset--font-size--title-2);
	font-weight: var(--wp--custom--font-weight--display);
	line-height: var(--wp--custom--line-height--tight);
	margin-block: 0 var(--wp--preset--spacing--40);
}

.line-receipt .line-confirmation__status > p {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--600);
	margin-block: 0;
}

.line-receipt .line-confirmation__status > p + p,
.line-receipt .wc-block-order-confirmation-status-description {
	margin-block-start: var(--wp--preset--spacing--40);
}

/* Facts: small labels over their values, as on a ticket stub. */
.line-receipt .wc-block-order-confirmation-summary {
	margin: 0;
}

.line-receipt .wc-block-order-confirmation-summary-list {
	display: grid;
	gap: var(--wp--preset--spacing--60) var(--wp--preset--spacing--70);
	grid-auto-flow: dense;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-receipt .wc-block-order-confirmation-summary-list-item {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--10);
	margin: 0;
	padding: 0;
}

.line-receipt .wc-block-order-confirmation-summary-list-item__key {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
	font-weight: var(--wp--custom--font-weight--body);
}

.line-receipt .wc-block-order-confirmation-summary-list-item__value {
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--600);
	font-weight: var(--wp--custom--font-weight--emphasis);
	inline-size: fit-content;
	max-inline-size: 100%;
	overflow-wrap: anywhere;
}

/* WooCommerce prints the facts as number, date, total, e-mail, payment: the e-mail address
   takes a full row and always reads left to right (bidi isolation), set at the line's start. */
.line-receipt .wc-block-order-confirmation-summary-list-item:nth-child(4) {
	grid-column: 1 / -1;
}

.line-receipt .wc-block-order-confirmation-summary-list-item:nth-child(4) .wc-block-order-confirmation-summary-list-item__value {
	direction: ltr;
	unicode-bidi: isolate;
}

/* On a right-to-left page a wrapping address stays on its label's side (the page's direction,
   not the address's own). */
.line-receipt .wc-block-order-confirmation-summary-list-item:nth-child(4) .wc-block-order-confirmation-summary-list-item__value:dir(rtl) {
	text-align: end;
}

@media (min-width: 600px) {

	.line-receipt .wc-block-order-confirmation-summary-list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.line-receipt .wc-block-order-confirmation-summary-list-item:nth-child(4) {
		grid-column: span 2;
	}
}

/* The payment method's own instructions (bank transfer) as a quiet "progress" note in the card. */
.line-receipt .wc-block-order-confirmation-additional-information {
	background: var(--wp--custom--status--progress--bg);
	color: var(--wp--custom--status--progress--fg);
	margin-block: var(--wp--preset--spacing--60) 0;
	padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--60);
}

.line-receipt .wc-block-order-confirmation-additional-information > :first-child {
	margin-block-start: 0;
}

.line-receipt .wc-block-order-confirmation-additional-information > :last-child {
	margin-block-end: 0;
}

.line-receipt .wc-bacs-bank-details-heading {
	font-size: var(--wp--preset--font-size--500);
	font-weight: var(--wp--custom--font-weight--strong);
	margin-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--20);
}

.line-receipt .wc-bacs-bank-details {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--20) var(--wp--preset--spacing--60);
	list-style: none;
	margin: 0;
	padding: 0;
}

/* Items: receipt lines — no boxes, a hairline above the sums, a larger total. */
.line-receipt .wc-block-order-confirmation-totals {
	margin: 0;
}

.line-receipt .wc-block-order-confirmation-totals__table {
	border: 0;
	border-collapse: collapse;
	inline-size: 100%;
	margin: 0;
}

.line-receipt .wc-block-order-confirmation-totals__table :is(th, td) {
	border: 0;
	font-weight: var(--wp--custom--font-weight--body);
	padding-block: var(--wp--preset--spacing--30);
	padding-inline: 0;
	text-align: start;
	vertical-align: baseline;
}

.line-receipt .wc-block-order-confirmation-totals__table .wc-block-order-confirmation-totals__total {
	text-align: end;
	white-space: nowrap;
}

.line-receipt .wc-block-order-confirmation-totals__table thead th {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
	padding-block: 0 var(--wp--preset--spacing--40);
}

.line-receipt .wc-block-order-confirmation-totals__table tbody td {
	padding-block: var(--wp--preset--spacing--40);
}

.line-receipt .wc-block-order-confirmation-totals__table tbody a {
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}

.line-receipt .wc-block-order-confirmation-totals__table .wc-item-meta {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
	list-style: none;
	margin: var(--wp--preset--spacing--20) 0 0;
	padding: 0;
}

.line-receipt .wc-block-order-confirmation-totals__table .wc-item-meta :is(strong, p) {
	display: inline;
	font-weight: inherit;
	margin: 0;
}

.line-receipt .wc-block-order-confirmation-totals__table tfoot tr:first-child > * {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	padding-block-start: var(--wp--preset--spacing--50);
}

.line-receipt .wc-block-order-confirmation-totals__table tfoot tr:last-child > * {
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--800);
	padding-block-start: var(--wp--preset--spacing--40);
}

.line-receipt .wc-block-order-confirmation-totals__table [class~="includes_tax"] {
	color: var(--wp--preset--color--ink-subtle);
	display: block;
	font-size: var(--wp--preset--font-size--200);
}

/* The stub: "what happens next" as three short numbered lines. */
.line-receipt .line-next {
	margin: 0;
}

.line-receipt .line-next__title {
	font-size: var(--wp--preset--font-size--700);
	font-weight: var(--wp--custom--font-weight--body);
	margin-block: 0 var(--wp--preset--spacing--40);
}

.line-receipt .line-next__list.is-style-steps {
	gap: 0;
	grid-auto-flow: row;
}

.line-receipt .line-next__list.is-style-steps > li {
	align-items: baseline;
	border-block-start: 0;
	font-size: var(--wp--preset--font-size--400);
	gap: var(--wp--preset--spacing--50);
	grid-template-columns: auto 1fr;
	padding-block: var(--wp--preset--spacing--30);
}

.line-receipt .line-next__list.is-style-steps > li::before {
	font-size: var(--wp--preset--font-size--900);
}

/* The rest of the page under the receipt. */
.line-receipt ~ .line-confirmation__back {
	text-align: center;
}

/* Arrival: the card settles in, the mark draws itself. Nothing moves for reduced motion. */
@media (prefers-reduced-motion: no-preference) {

	.line-receipt {
		animation: line-receipt-in var(--wp--custom--motion--duration--slow) var(--wp--custom--motion--easing--enter) both;
	}

	.line-receipt__head::before {
		animation: line-receipt-pop var(--wp--custom--motion--duration--relaxed) var(--wp--custom--motion--easing--enter) var(--wp--custom--motion--duration--base) both;
	}

	.line-receipt__head::after {
		animation: line-receipt-draw var(--wp--custom--motion--duration--slow) var(--wp--custom--motion--easing--standard) var(--wp--custom--motion--duration--slow) both;
	}

	.line-order--on-hold .line-receipt__head::after,
	.line-order--pending .line-receipt__head::after,
	.line-order--failed .line-receipt__head::after,
	.line-order--cancelled .line-receipt__head::after,
	.line-order--refunded .line-receipt__head::after {
		animation-name: line-receipt-fade;
	}
}

@keyframes line-receipt-in {

	from {
		opacity: 0;
		transform: translateY(var(--wp--preset--spacing--50));
	}
}

@keyframes line-receipt-pop {

	from {
		opacity: 0;
		transform: scale(0.6);
	}
}

/* The tick is drawn the same way in both languages (it is not a direction). */
@keyframes line-receipt-draw {

	from {
		clip-path: inset(0 100% 0 0);
	}

	to {
		clip-path: inset(0);
	}
}

@keyframes line-receipt-fade {

	from {
		opacity: 0;
	}
}

/* Printing the confirmation leaves out the site's header and footer, the steps, the account panel
   and the back link: the receipt, then the addresses and consent answers. */
@media print {

	.woocommerce-order-received :is(.wp-site-blocks > header, .wp-site-blocks > footer, .line-steps, .line-confirmation__back, .wc-block-order-confirmation-create-account) {
		display: none;
	}

	.line-receipt {
		box-shadow: none;
	}
}

/* Stage 4: the order's consent answers as question / answer rows on hairlines (WooCommerce
   floats the answer beside long bold questions); the two addresses stack on phones. */
.line-confirmation .wc-block-components-additional-fields-list {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	margin: 0;
}

.line-confirmation .wc-block-components-additional-fields-list :is(dt, dd) {
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	margin: 0;
	padding-block: var(--wp--preset--spacing--40);
}

.line-confirmation .wc-block-components-additional-fields-list dt {
	color: var(--wp--preset--color--ink-muted);
	font-weight: inherit;
	padding-inline-end: var(--wp--preset--spacing--50);
}

.line-confirmation .wc-block-components-additional-fields-list dd {
	color: var(--wp--preset--color--ink);
	text-align: end;
}

/* The address boxes' headings (owner decision, Stage 5): quiet labels above each box. */
.line-confirmation__heading {
	font-size: var(--wp--preset--font-size--700);
	font-weight: var(--wp--custom--font-weight--body);
	margin-block: 0 var(--wp--preset--spacing--40);
}

@media (max-width: 480px) {

	.line-confirmation .line-confirmation__addresses {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Stage 4 (PLAN §6, Operate): WooCommerce's cart, checkout and account — 44 px targets, a 12 px
   floor for its small print, the reassurance line under the checkout (D3a). */
:is(.wc-block-cart, .wc-block-checkout) .wc-block-components-panel__button,
[class~="wc-block-components-address-form__address_2-toggle"],
.wc-block-checkout__login-prompt,
.wc-block-cart .wc-block-components-product-name,
[class~="woocommerce-LostPassword"] a,
.wc-block-components-notice-banner__content .button {
	align-items: center;
	display: inline-flex;
	justify-content: center;
	min-block-size: var(--wp--custom--target--min);
	min-inline-size: var(--wp--custom--target--min);
}

/* The account menu as a quiet list: full-width rows on hairlines, the current page in ink with
   its underline (the rows are the targets, so short Hebrew words are never narrow). */
[class~="woocommerce-MyAccount-navigation"] ul {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
	list-style: none;
	margin: 0;
	padding: 0;
}

[class~="woocommerce-MyAccount-navigation"] li {
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line);
}

[class~="woocommerce-MyAccount-navigation"] a {
	align-items: center;
	color: var(--wp--preset--color--ink-muted);
	display: flex;
	min-block-size: var(--wp--custom--target--control);
	text-decoration: none;
	transition: color var(--wp--custom--motion--duration--quick) var(--wp--custom--motion--easing--standard);
}

[class~="woocommerce-MyAccount-navigation"] a:hover,
[class~="woocommerce-MyAccount-navigation"] [class~="is-active"] a {
	color: var(--wp--preset--color--ink);
}

[class~="woocommerce-MyAccount-navigation"] [class~="is-active"] a {
	text-decoration: underline;
	text-decoration-thickness: var(--wp--custom--link--thickness);
	text-underline-offset: var(--wp--custom--link--underline-offset);
}

.wc-block-cart .wc-block-components-quantity-selector {
	inline-size: auto;
}

.wc-block-cart .wc-block-components-quantity-selector__button,
.wc-block-cart .wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input,
.wc-block-cart .wc-block-cart-item__remove-link {
	min-block-size: var(--wp--custom--target--min);
	min-inline-size: var(--wp--custom--target--min);
}

.wc-block-cart .wc-block-cart-item__remove-link {
	align-items: center;
	display: inline-flex;
	justify-content: center;
}

:is(.wc-block-cart, .wc-block-checkout, .wc-block-mini-cart__drawer) :is(.wc-block-components-product-badge, .wc-block-components-product-details, .wc-block-components-totals-shipping__via, .wc-block-components-totals-footer-item-tax) {
	font-size: var(--wp--preset--font-size--200);
}

.line-checkout__note {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--300);
	margin-block: var(--wp--preset--spacing--60) 0;
}

/* ================================================= Block style variations
   Premium redesign PLAN §5.6. Colours and padding of band-paper / band-kiln / pull / text-link
   live in theme.json; what theme.json cannot express is here. */

/* Paper band: clay wash + a static paper grain under the content (no runtime filter). */
.wp-block-group.is-style-band-paper {
	isolation: isolate;
	position: relative;
}

.wp-block-group.is-style-band-paper::before {
	background-image: url(../textures/grain.webp);
	content: "";
	inset: 0;
	mix-blend-mode: multiply;
	opacity: var(--wp--custom--texture--grain-opacity);
	pointer-events: none;
	position: absolute;
	z-index: -1;
}

/* Eyebrows keep AA contrast on tinted and dark bands. */
.is-style-band-paper .is-style-eyebrow {
	color: var(--wp--preset--color--accent-strong);
}

.is-style-band-kiln .is-style-eyebrow {
	color: var(--wp--preset--color--on-ink-muted);
}

/* On a plate: the image sits on a sunken mat; it lifts slightly on hover or keyboard focus. */
.wp-block-image.is-style-plate {
	background-color: var(--wp--preset--color--surface-sunken);
	overflow: clip;
	padding: var(--wp--preset--spacing--70);
}

.wp-block-image.is-style-plate img {
	display: block;
	inline-size: 100%;
}

@media (prefers-reduced-motion: no-preference) {

	.wp-block-image.is-style-plate img {
		transition: transform var(--wp--custom--motion--duration--relaxed) var(--wp--custom--motion--easing--standard);
	}

	.wp-block-image.is-style-plate:focus-within img {
		transform: scale(var(--wp--custom--motion--lift));
	}
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {

	.wp-block-image.is-style-plate:hover img {
		transform: scale(var(--wp--custom--motion--lift));
	}
}

/* Numbered steps: a real ordered list; large light numerals joined by a hairline. */
.wp-block-list.is-style-steps {
	counter-reset: line-step;
	display: grid;
	gap: 0;
	list-style: none;
	margin-inline: 0;
	padding: 0;
}

.wp-block-list.is-style-steps > li {
	border-block-start: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
	counter-increment: line-step;
	display: grid;
	gap: var(--wp--preset--spacing--50) var(--wp--preset--spacing--70);
	grid-template-columns: auto 1fr;
	padding-block: var(--wp--preset--spacing--70);
}

.wp-block-list.is-style-steps > li::before {
	color: var(--wp--preset--color--accent-strong);
	content: counter(line-step);
	font-size: var(--wp--preset--font-size--title-2);
	font-variant-numeric: lining-nums;
	font-weight: var(--wp--custom--font-weight--display);
	line-height: 1;
	min-inline-size: 1.5ch;
}

.is-style-band-kiln .wp-block-list.is-style-steps > li {
	border-block-start-color: var(--wp--preset--color--ink-muted);
}

.is-style-band-kiln .wp-block-list.is-style-steps > li::before {
	color: var(--wp--preset--color--on-ink-muted);
}

@media (min-width: 1024px) {

	.wp-block-list.is-style-steps {
		gap: var(--wp--preset--spacing--80);
		grid-auto-columns: minmax(0, 1fr);
		grid-auto-flow: column;
	}

	.wp-block-list.is-style-steps > li {
		grid-template-columns: 1fr;
	}
}

/* Quiet accordion: hairline rows, a +/× mark, content settles in (transform + opacity only). */
.wp-block-details.is-style-quiet {
	border-block-end: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-strong);
}

.wp-block-details.is-style-quiet > summary {
	align-items: center;
	cursor: pointer;
	display: flex;
	gap: var(--wp--preset--spacing--50);
	justify-content: space-between;
	list-style: none;
	min-block-size: var(--wp--custom--target--control);
	padding-block: var(--wp--preset--spacing--50);
}

.wp-block-details.is-style-quiet > summary::-webkit-details-marker {
	display: none;
}

.wp-block-details.is-style-quiet > summary::after {
	background-image:
		linear-gradient(currentcolor, currentcolor),
		linear-gradient(currentcolor, currentcolor);
	background-position: center;
	background-repeat: no-repeat;
	background-size: 100% var(--wp--custom--border--hairline), var(--wp--custom--border--hairline) 100%;
	block-size: 0.75em;
	content: "";
	flex-shrink: 0;
	inline-size: 0.75em;
}

.wp-block-details.is-style-quiet[open] > summary::after {
	transform: rotate(45deg);
}

.wp-block-details.is-style-quiet > :not(summary) {
	margin-block-end: var(--wp--preset--spacing--60);
}

@media (prefers-reduced-motion: no-preference) {

	.wp-block-details.is-style-quiet > summary::after {
		transition: transform var(--wp--custom--motion--duration--base) var(--wp--custom--motion--easing--standard);
	}

	.wp-block-details.is-style-quiet[open] > :not(summary) {
		animation: line-settle var(--wp--custom--motion--duration--base) var(--wp--custom--motion--easing--enter);
	}
}

@keyframes line-settle {

	from {
		opacity: 0;
		transform: translateY(calc(var(--wp--preset--spacing--20) * -1));
	}
}

/* Pull quote: a short clay rule above the words, no side border. */
.wp-block-quote.is-style-pull::before {
	background-color: var(--wp--preset--color--accent-strong);
	block-size: var(--wp--custom--border--quote);
	content: "";
	display: block;
	inline-size: var(--wp--preset--spacing--90);
	margin-block-end: var(--wp--preset--spacing--60);
}

.wp-block-quote.is-style-pull cite {
	color: var(--wp--preset--color--ink-muted);
	display: block;
	font-size: var(--wp--preset--font-size--300);
	font-style: normal;
	margin-block-start: var(--wp--preset--spacing--50);
}

/* Oversized wordmark: sized in container query units against its nearest container (the
   footer) or the viewport, so it scales with the page and never overflows. */
.wp-block-site-title.is-style-oversized {
	direction: ltr;
	font-size: var(--wp--preset--font-size--wordmark-oversized);
	letter-spacing: var(--wp--custom--letter-spacing--wordmark);
	line-height: 1;
	text-align: center;
	unicode-bidi: isolate;
}

/* The typed name only (the logo has no tracking to balance): the tracking after the last letter,
   balanced on the other side (as in the header). */
.wp-block-site-title.is-style-oversized:not(:has(.line-logo)) {
	padding-inline-start: var(--wp--custom--letter-spacing--wordmark);
}

.wp-block-site-title.is-style-oversized a {
	color: inherit;
	display: block;
}

/* As the logo (inc/logo.php): a share of its container's width, centred; the height follows. The
   space below keeps the mark's own baseline off the footer bar's hairline. */
.wp-block-site-title.is-style-oversized .line-logo {
	block-size: auto;
	inline-size: var(--wp--custom--logo--oversized);
	margin-block-end: var(--wp--preset--spacing--50);
	margin-inline: auto;
	overflow: visible;
}

/* Project gallery captions sit under the image as text (core draws them as a scrolling overlay,
   which became an unfocusable scroll region at 768 and overlapped the next heading at 834). */
.line-project__gallery.wp-block-gallery.has-nested-images figure.wp-block-image figcaption {
	background: none;
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--300);
	max-block-size: none;
	overflow: visible;
	padding: var(--wp--preset--spacing--40) 0 0;
	position: static;
	text-align: start;
}

.line-project__gallery.wp-block-gallery.has-nested-images figure.wp-block-image:has(figcaption)::before {
	content: none;
}

/* Core's cropped gallery grows each image from a zero flex basis, so a lazy photo is 0 px tall
   until it loads and the page jumps under the reader. The image's own ratio sets its height
   (`:not(#individual-image)` matches the weight of core's selector). */
.line-project__gallery.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) img {
	block-size: auto;
	flex: none;
}

/* ============================================================== Stage 5 */

/* Adapt (PLAN §8): tablets and phones held sideways keep the side-by-side layouts of the heroes,
   the product page and the project page, so the headline shares the first screen with the
   photograph instead of waiting under a full-width image. The text takes the larger share. */
@media (min-width: 768px) and (max-width: 1024px) and (orientation: landscape) {

	.line-hero,
	.line-hero--custom {
		grid-template-columns: 0.9fr 1.1fr;
	}

	.line-hero:not(.line-hero--custom) .line-hero__media {
		contain: size;
	}

	.line-hero .line-hero__media img {
		aspect-ratio: auto;
		block-size: 100%;
	}

	.line-hero__text,
	.line-hero--custom .line-hero__text {
		padding-block: var(--wp--preset--spacing--70);
		padding-inline: var(--wp--preset--spacing--70) var(--wp--custom--gutter);
	}

	.line-pdp__grid,
	.line-project__hero {
		grid-template-columns: 1fr 1fr;
	}
}

/* Animate: the one authored moment — the hero photograph settles onto the wall once, like a piece
   being hung. Transform only: the image paints at once (no effect on LCP) and nothing moves on
   scroll; none of it under reduced motion. */
@media (prefers-reduced-motion: no-preference) {

	.line-hero__media {
		overflow: clip;
	}

	.line-hero__media img {
		animation: line-hang var(--wp--custom--motion--duration--hang) var(--wp--custom--motion--easing--enter);
	}
}

@keyframes line-hang {

	from {
		transform: scale(var(--wp--custom--motion--hang));
	}
}

/* ======================================================= Polish round 4 */

/* The footer's large logo rises piece by piece as it comes into view (#27; the letters until
   plans/site-logo_2026-10-01): a scroll-driven animation on the mark's own view timeline; before
   the footer is reached the pieces are simply at rest. Each piece moves by the same share of the
   whole mark's height (view-box), as the letters did by their line's. */
.line-footer__mark {
	view-timeline: --line-mark block;
}

.line-footer__mark .line-logo__piece {
	transform-box: view-box;
}

.line-footer__mark .line-logo__piece:nth-child(2) {
	--line-i: 1;
}

.line-footer__mark .line-logo__piece:nth-child(3) {
	--line-i: 2;
}

@supports (animation-timeline: view()) {

	@media (prefers-reduced-motion: no-preference) {

		.line-footer__mark .line-logo__piece {
			animation: line-rise linear forwards;
			animation-range: entry calc(var(--line-i, 0) * 8%) entry calc(70% + var(--line-i, 0) * 8%);
			animation-timeline: --line-mark;
		}
	}
}

@keyframes line-rise {

	from {
		transform: translateY(30%);
	}

	to {
		transform: none;
	}
}

/* The home headline settles word after word on arrival (#29): never hidden (the LCP paints at
   once), transform only. */
.line-word {
	display: inline-block;
}

@media (prefers-reduced-motion: no-preference) {

	.line-hero__title .line-word {
		animation: line-word-rise var(--wp--custom--motion--duration--slow) var(--wp--custom--motion--easing--enter) both;
		animation-delay: calc(var(--line-i) * var(--wp--custom--motion--stagger) * 2);
	}
}

@keyframes line-word-rise {

	from {
		transform: translateY(0.3em);
	}
}

/* The line just added in the cart drawer (#23, instead of a separate card): it settles in and a
   clay wash fades behind it (assets/js/enhance.js marks it; never under reduced motion). */
.wc-block-mini-cart__drawer .is-new {
	isolation: isolate;
	position: relative;
}

.wc-block-mini-cart__drawer .is-new::before {
	animation: line-wash var(--wp--custom--motion--duration--hang) var(--wp--custom--motion--easing--standard) forwards;
	background-color: var(--wp--preset--color--clay-wash);
	content: "";
	inset: 0;
	pointer-events: none;
	position: absolute;
	z-index: -1;
}

.wc-block-mini-cart__drawer .is-new > * {
	animation: line-word-rise var(--wp--custom--motion--duration--relaxed) var(--wp--custom--motion--easing--enter);
}

@keyframes line-wash {

	from {
		opacity: 1;
	}

	to {
		opacity: 0;
	}
}

/* The full-screen photograph opens as a zoom from its place (#24): assets/js/enhance.js names the
   photograph and its full-screen twin for one view transition around WooCommerce's own dialog. */
::view-transition-group(line-zoom) {
	animation-duration: var(--wp--custom--motion--duration--relaxed);
	animation-timing-function: var(--wp--custom--motion--easing--enter);
}

/* Only the photograph moves (plans/pdp-zoom-layers_2026-10-03): while the zoom runs, the names kept
   for page transitions (the header, the cards' photographs from line-core Card_Media, inline) are
   off, so those elements stay in the page under the view and fade with it, instead of drawing over
   it as layers of their own. The photograph's own name is inline and `important`. */
:root.line-zooming * {
	view-transition-name: none !important;
}

/* ======================================================= Polish round 5 */

/* Prices roll (#30): assets/js/enhance.js keeps the Interactivity API's text for assistive
   technology (visually hidden) and shows a decorative twin whose changed digits roll into place,
   clipped to the line. */
.line-roll__source {
	block-size: 1px;
	clip-path: inset(50%);
	inline-size: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
}

.line-roll__number {
	clip-path: inset(0);
	display: inline-block;
	font-variant-numeric: tabular-nums;
	unicode-bidi: isolate;
}

.line-roll__digit {
	display: inline-block;
	white-space: pre;
}

/* Photo counter (#31): a quiet paper label at the viewer's reading-end foot, where the thumbnail
   rail is not shown. */
.line-gallery__count {
	background-color: var(--wp--preset--color--surface);
	font-size: var(--wp--preset--font-size--300);
	font-variant-numeric: tabular-nums;
	inset-block-end: var(--wp--preset--spacing--40);
	inset-inline-end: var(--wp--preset--spacing--40);
	padding: var(--wp--preset--spacing--10) var(--wp--preset--spacing--30);
	pointer-events: none;
	position: absolute;
	z-index: 2;
}

@media (min-width: 1025px) {

	.line-gallery__count {
		display: none;
	}
}

/* Cards rise in a wave (#34, softened by the motion quiet pass): product cards, project cards and
   journal rows settle upward by a short step while they enter the view, one column a little after
   the other — a CSS scroll-driven animation, so nothing moves without support or under reduced
   motion, and whatever is in view on arrival is at rest. `translate`, so it composes with the
   image lift. */
@supports (animation-timeline: view()) {

	@media (prefers-reduced-motion: no-preference) {

		:is(.wc-block-product, .line-project-grid .wp-block-post, .line-journal__feed .wp-block-post) {
			animation: line-rise-in linear both;
			animation-range: entry calc(var(--line-col, 0) * 3%) entry calc(30% + var(--line-col, 0) * 3%);
			animation-timeline: view();
		}

		:is(.wc-block-product, .line-project-grid .wp-block-post, .line-journal__feed .wp-block-post):nth-child(4n + 2) {
			--line-col: 1;
		}

		:is(.wc-block-product, .line-project-grid .wp-block-post, .line-journal__feed .wp-block-post):nth-child(4n + 3) {
			--line-col: 2;
		}

		:is(.wc-block-product, .line-project-grid .wp-block-post, .line-journal__feed .wp-block-post):nth-child(4n + 4) {
			--line-col: 3;
		}
	}
}

@keyframes line-rise-in {

	from {
		translate: 0 var(--wp--preset--spacing--40);
	}
}

/* ================================================ Polish without motion */

/* Size circles (#39): each size chip draws a circle at its share of the largest size — a hairline
   in the text's colour, inside the swatch's box so the chips keep their rhythm. */
.line-option-chip__size {
	block-size: var(--wp--custom--component--swatch--size);
	display: inline-grid;
	flex: none;
	inline-size: var(--wp--custom--component--swatch--size);
	place-items: center;
}

.line-option-chip__size::before {
	aspect-ratio: 1;
	border: var(--wp--custom--border--hairline) solid currentcolor;
	border-radius: var(--wp--custom--radius--round);
	content: "";
	inline-size: calc(100% * var(--line-size, 1));
}

/* Glaze dots under a card's price (#40): the colours the piece comes in. */
.line-card__glazes {
	display: flex;
	flex-basis: 100%;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--20);
	list-style: none;
	margin: var(--wp--preset--spacing--20) 0 0;
	padding: 0;
}

.line-card__glaze {
	background: var(--line-swatch, var(--wp--preset--color--media-placeholder));
	block-size: var(--wp--preset--spacing--40);
	border-radius: var(--wp--custom--radius--round);
	box-shadow: inset 0 0 0 var(--wp--custom--border--hairline) var(--wp--custom--color--swatch-ring);
	inline-size: var(--wp--preset--spacing--40);
}

/* Suggestions on the empty cart, an empty search and "page not found" (#41): the home page's
   featured pieces under a quiet heading. */
.line-suggestions {
	margin-block-start: var(--wp--preset--spacing--100);
}

.line-suggestions__title {
	font-size: var(--wp--preset--font-size--title-2);
	font-weight: var(--wp--custom--font-weight--display);
	margin-block: 0 var(--wp--preset--spacing--70);
}

/* ============================================== Polish without motion, 2 */

/* Promises under "Add to cart" (#47, after 21st.dev's Badge with icon): three short items, each
   after a hairline icon in the text's colour (masks in global.css). */
.line-promises {
	color: var(--wp--preset--color--ink-subtle);
	display: flex;
	flex-wrap: wrap;
	font-size: var(--wp--preset--font-size--300);
	gap: var(--wp--preset--spacing--30) var(--wp--preset--spacing--60);
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-promise {
	align-items: center;
	display: inline-flex;
	gap: var(--wp--preset--spacing--20);
}

.line-promise::before {
	background-color: currentcolor;
	block-size: var(--wp--preset--font-size--500);
	content: "";
	flex: none;
	inline-size: var(--wp--preset--font-size--500);
	mask: var(--line-promise-icon) center / contain no-repeat;
}

.line-promise--hand {
	--line-promise-icon: var(--line-icon-vessel);
}

.line-promise--time {
	--line-promise-icon: var(--line-icon-time);
}

.line-promise--ship {
	--line-promise-icon: var(--line-icon-parcel);
}

/* A collection's or category's header with its first piece's photograph (#46, after 21st.dev's
   Editorial Image Hero): text at the reading start, the 4:5 photograph at the end from 1025px;
   under the text on smaller screens. */
.line-intro__cover {
	aspect-ratio: 4 / 5;
	background-color: var(--wp--preset--color--surface-sunken);
	margin: var(--wp--preset--spacing--70) 0 0;
	overflow: clip;
}

.line-intro__cover img {
	block-size: 100%;
	display: block;
	inline-size: 100%;
	object-fit: cover;
}

@media (min-width: 1025px) {

	.line-intro:has(> .line-intro__cover) {
		align-items: end;
		column-gap: var(--wp--preset--spacing--100);
		display: grid;
		grid-template-columns: minmax(0, 1fr) var(--wp--custom--container--drawer);
	}

	.line-intro:has(> .line-intro__cover) > :not(.line-intro__cover) {
		grid-column: 1;
	}

	.line-intro__cover {
		grid-column: 2;
		grid-row: 1 / span 6;
		margin: 0;
	}
}


/*
 * Sales (plans/sales_2026-10-01; after 21st.dev's Badge Tag and Single Plan Pricing Card's
 * compare-at price, rebuilt natively): the regular price struck in a lighter ink, the sale price in
 * clay, a quiet "Sale" label on the card's photograph, the set tags a sale overrides struck. Static.
 */
:where(.wc-block-components-product-price, .line-card__price, .line-product-price) del,
.wc-block-components-product-price__regular {
	color: var(--wp--preset--color--ink-muted);
	font-weight: var(--wp--custom--font-weight--body);
	text-decoration-line: line-through;
	text-decoration-thickness: var(--wp--custom--border--hairline);
}

:where(.wc-block-components-product-price, .line-card__price) ins,
.wc-block-components-product-price__value.is-discounted {
	color: var(--wp--preset--color--accent-strong);
	text-decoration: none;
}

.line-product-price__was {
	font-size: var(--wp--preset--font-size--800);
}

.line-product-price.is-sale .line-product-price__amount {
	color: var(--wp--preset--color--accent-strong);
}

.line-product-price__terms {
	color: var(--wp--preset--color--ink-subtle);
	flex-basis: 100%;
	font-size: var(--wp--preset--font-size--400);
}

.line-product-price__terms-text:not(:first-child)::before {
	content: "· ";
}

.line-card__sale {
	background: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--accent-strong);
	font-size: var(--wp--preset--font-size--100);
	font-weight: var(--wp--custom--font-weight--emphasis);
	inset-block-start: var(--wp--preset--spacing--40);
	inset-inline-end: var(--wp--preset--spacing--40);
	padding-block: var(--wp--custom--component--badge--padding-block);
	padding-inline: var(--wp--custom--component--badge--padding-inline);
	pointer-events: none;
	position: absolute;
	z-index: 1;
}

.line-option-row__tag.is-void {
	color: var(--wp--preset--color--ink-muted);
	text-decoration-line: line-through;
	text-decoration-thickness: var(--wp--custom--border--hairline);
}

.line-config__sale-note {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--400);
	margin-block: var(--wp--preset--spacing--30) 0;
}

.line-config__bar-prices {
	align-items: baseline;
	display: flex;
	gap: var(--wp--preset--spacing--20);
}

.line-config__bar-was {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--400);
	font-variant-numeric: tabular-nums lining-nums;
	white-space: nowrap;
}

.line-config__bar-prices:has(.line-config__bar-was:not([hidden])) .line-config__bar-price {
	color: var(--wp--preset--color--accent-strong);
}

/* Phones: the struck total sits over the total, so the bar's button keeps its width. */
@media (max-width: 767px) {

	.line-config__bar-prices {
		align-items: flex-start;
		flex-direction: column;
		gap: 0;
	}
}

/* ============================================== Polish without motion, 3 */

/* Order steps (#51, after 21st.dev's Checkout Steps Breadcrumb): cart · details & payment ·
   confirmation, each numbered in a small hairline circle, joined by a short hairline; the current
   step in ink with a filled circle, the cart linked back from the checkout. */
.line-steps {
	margin-block: 0 var(--wp--preset--spacing--50);
}

.line-steps__list {
	align-items: center;
	counter-reset: line-order-step;
	display: flex;
	flex-wrap: wrap;
	font-size: var(--wp--preset--font-size--400);
	gap: var(--wp--preset--spacing--20) var(--wp--preset--spacing--40);
	list-style: none;
	margin: 0;
	padding: 0;
}

.line-steps__step {
	align-items: center;
	color: var(--wp--preset--color--ink-muted);
	counter-increment: line-order-step;
	display: inline-flex;
	gap: var(--wp--preset--spacing--40);
}

.line-steps__step:not(:last-child)::after {
	background-color: var(--wp--preset--color--line-strong);
	block-size: var(--wp--custom--border--hairline);
	content: "";
	inline-size: var(--wp--preset--spacing--60);
}

.line-steps__label {
	align-items: center;
	color: inherit;
	display: inline-flex;
	gap: var(--wp--preset--spacing--30);
	min-block-size: var(--wp--custom--target--min);
	min-inline-size: var(--wp--custom--target--min);
}

.line-steps__label::before {
	align-items: center;
	block-size: var(--wp--preset--spacing--60);
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--line-control);
	border-radius: var(--wp--custom--radius--round);
	content: counter(line-order-step);
	display: inline-flex;
	font-size: var(--wp--preset--font-size--200);
	font-variant-numeric: lining-nums tabular-nums;
	inline-size: var(--wp--preset--spacing--60);
	justify-content: center;
}

.line-steps__step.is-current {
	color: var(--wp--preset--color--ink);
}

.line-steps__step.is-current .line-steps__label::before {
	background-color: var(--wp--preset--color--ink);
	border-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--surface);
}

a.line-steps__label {
	text-decoration-line: underline;
}

/* Phones: three equal columns, each number over its label (no connecting hairlines). */
@media (max-width: 599px) {

	.line-steps__list {
		align-items: start;
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.line-steps__step {
		justify-content: center;
	}

	.line-steps__step:not(:last-child)::after {
		content: none;
	}

	.line-steps__label {
		flex-direction: column;
		font-size: var(--wp--preset--font-size--300);
		text-align: center;
	}
}

/* A cart emptied in place (WooCommerce swaps in its empty-cart block without a reload): the steps
   and the pairings go with the pieces, as on a page loaded empty. */
.line-cart-page:has(.wp-block-woocommerce-empty-cart-block) :is(.line-steps, .line-suggestions--pair) {
	display: none;
}

/* "What happens next" on the order confirmation (#52, after 21st.dev's Order Confirmation Card):
   the site's numbered steps under a quiet heading. */
.line-next {
	margin-block: var(--wp--preset--spacing--80);
}

.line-next__title {
	font-size: var(--wp--preset--font-size--title-2);
	font-weight: var(--wp--custom--font-weight--display);
	margin-block: 0 var(--wp--preset--spacing--60);
}

.line-next__list > li {
	font-size: var(--wp--preset--font-size--500);
}

/* The order summary in view (#53, after 21st.dev's Order Summary Separator): on computers the
   cart's and checkout's summary column stays beside the list / form, under the sticky header
   (WooCommerce's own offset is 24 px, under the header); hairline separators and a larger total. */
@media (min-width: 1025px) {

	.line-cart-page .wc-block-cart__sidebar,
	.line-checkout-page .wc-block-checkout__sidebar.is-sticky {
		align-self: flex-start;
		inset-block-start: calc(var(--wp--custom--sticky--header) + var(--wp--preset--spacing--40));
		position: sticky;
	}
}

.line-commerce .wc-block-components-totals-wrapper {
	border-block-start-color: var(--wp--preset--color--line-strong);
}

.line-commerce .wc-block-components-totals-footer-item :is(.wc-block-components-totals-item__label, .wc-block-components-totals-item__value) {
	font-size: var(--wp--preset--font-size--800);
}

/* The next story as a photo card (#57, after 21st.dev's Blog Grid featured card): one link —
   the photograph (4:3) beside its label, title and topic · reading time; stacked on phones. */
.line-next-story {
	flex: 1 1 28rem;
	max-inline-size: 46rem;
}

.line-next-story__link {
	align-items: center;
	color: inherit;
	display: grid;
	gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--60);
	grid-template-columns: repeat(2, minmax(0, 1fr));
	text-decoration: none;
}

.line-next-story.has-no-image .line-next-story__link {
	grid-template-columns: minmax(0, 1fr);
}

.line-next-story__media {
	aspect-ratio: 4 / 3;
	background-color: var(--wp--preset--color--surface-sunken);
	display: block;
	overflow: clip;
}

.line-next-story__image {
	block-size: 100%;
	display: block;
	inline-size: 100%;
	object-fit: cover;
}

.line-next-story__text {
	display: grid;
	gap: var(--wp--preset--spacing--30);
}

.line-next-story__label,
.line-next-story__meta {
	color: var(--wp--preset--color--ink-subtle);
	font-size: var(--wp--preset--font-size--300);
}

.line-next-story__title {
	font-size: var(--wp--preset--font-size--title-2);
	font-weight: var(--wp--custom--font-weight--display);
	line-height: var(--wp--custom--line-height--tight);
	text-decoration-color: transparent;
	text-decoration-line: underline;
	text-decoration-thickness: var(--wp--custom--link--underline-thickness);
	text-underline-offset: var(--wp--custom--link--underline-offset);
	text-wrap: balance;
}

.line-next-story__link:is(:hover, :focus-visible) .line-next-story__title {
	text-decoration-color: currentcolor;
}

@media (max-width: 599px) {

	.line-next-story__link {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ============================================== Polish without motion, 4 */

/* "My account" (#59, after 21st.dev's Order Status Tracker): an order's progress in the checkout
   steps' circles; the latest order on the account's first screen as a paper card. */
.line-order-progress {
	margin-block: var(--wp--preset--spacing--40) var(--wp--preset--spacing--60);
}

.line-latest-order {
	background-color: var(--wp--preset--color--surface-alt);
	display: grid;
	gap: var(--wp--preset--spacing--30);
	margin-block: var(--wp--preset--spacing--60);
	padding: var(--wp--preset--spacing--60);
}

.line-latest-order__title {
	font-size: var(--wp--preset--font-size--title-2);
	font-weight: var(--wp--custom--font-weight--display);
	margin: 0;
}

.line-latest-order__meta {
	font-variant-numeric: tabular-nums lining-nums;
	margin: 0;
}

.line-latest-order .line-order-progress {
	margin-block-end: 0;
}

/* A calmer sign-in (#61, after 21st.dev's Split Login): the form beside a paper panel — why an
   account helps, and that ordering works without one; stacked below 768 px. */
.line-signin {
	display: grid;
	gap: var(--wp--preset--spacing--80);
}

.line-signin__aside {
	align-content: start;
	background-color: var(--wp--preset--color--clay-wash);
	display: grid;
	gap: var(--wp--preset--spacing--40);
	padding: var(--wp--preset--spacing--70);
}

.line-signin__title {
	font-size: var(--wp--preset--font-size--title-2);
	font-weight: var(--wp--custom--font-weight--display);
	margin: 0;
}

.line-signin__list {
	display: grid;
	gap: var(--wp--preset--spacing--30);
	margin: 0;
	padding-inline-start: var(--wp--preset--spacing--50);
}

.line-signin__guest {
	color: var(--wp--preset--color--ink-muted);
	margin: 0;
}

.line-signin__guest a {
	color: var(--wp--preset--color--ink);
	text-decoration-line: underline;
	text-decoration-thickness: var(--wp--custom--link--underline-thickness);
	text-underline-offset: var(--wp--custom--link--underline-offset);
}

/* The account's orders table: the order number and its actions are 44 px targets (WooCommerce
   sets them as bare text links, 18 px tall). */
.woocommerce-orders-table :is(.woocommerce-orders-table__cell-order-number, .woocommerce-orders-table__cell-order-actions) a {
	align-items: center;
	display: inline-flex;
	min-block-size: var(--wp--custom--target--min);
}

@media (min-width: 768px) {

	.line-signin {
		align-items: start;
		grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
	}
}
