/*
Theme Name: Seete
Theme URI: https://seete.com
Author: b-it-projects
Author URI: https://b-it-projects.de
Description: Custom block theme for seete.com — Großküchentechnik, mobile Küchen und Küchencontainer. Design tokens derived from the existing brand (Bordeaux #5B131E).
Requires at least: 6.5
Tested up to: 6.9
Requires PHP: 8.1
Version: 0.2.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: seete
*/

/* ---------------------------------------------------------------------------
   Almost everything is expressed in theme.json. This file holds only what
   theme.json cannot express: German typesetting, focus states, and a few
   component behaviours.
   --------------------------------------------------------------------------- */


/* --- German typesetting -----------------------------------------------------
   The binding constraint on this site is compound-noun length:
   "Gemeinschaftsverpflegung" (24), "Großkücheneinrichtungen" (23),
   "Großküchentechnik" (17) are unbreakable units at H1 size.
   --------------------------------------------------------------------------- */

html {
	/* Requires lang="de" on <html> to hyphenate correctly. */
	hyphens: auto;
	-webkit-hyphens: auto;
}

h1, h2, h3, h4, h5, h6,
.wp-block-post-title,
.wp-block-site-title {
	/* Headings hyphenate only where an author places &shy; — automatic
	   hyphenation in display sizes looks accidental. overflow-wrap is the
	   safety net so a long compound can never overflow its container. */
	hyphens: manual;
	-webkit-hyphens: manual;
	overflow-wrap: break-word;
	text-wrap: balance;
}

/* Never uppercase headings: German capitalises nouns, so uppercasing destroys
   that signal and adds ~12% width to compounds that are already too long.
   The old Themify skin did this on h1 and h4. */
h1, h2, h3, h4, h5, h6 {
	text-transform: none;
}

/* Measure. 68ch at 17px ≈ 640px. Applies to running text only — :where()
   keeps specificity at 0 so any block-level override wins. */
:where(.entry-content, .wp-block-post-content) :where(p, li) {
	max-width: var(--wp--custom--measure, 68ch);
}


/* --- Focus -----------------------------------------------------------------
   The old site set a{outline:0} globally with no replacement, making keyboard
   focus invisible site-wide. This is the fix, and it is not optional.
   --------------------------------------------------------------------------- */

:focus-visible {
	outline: 2px solid var(--wp--preset--color--brand-500);
	outline-offset: 2px;
	border-radius: var(--wp--custom--radius--sm, 2px);
}

/* Only suppress the default ring where :focus-visible is supported, so the
   fallback ring survives in browsers that lack it. */
@supports selector(:focus-visible) {
	:focus:not(:focus-visible) {
		outline: none;
	}
}


/* --- Skip link -------------------------------------------------------------- */

.seete-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 999999;
	padding: 0.75rem 1.5rem;
	background: var(--wp--preset--color--brand-700);
	color: var(--wp--preset--color--surface-000);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	text-decoration: none;
}

.seete-skip-link:focus {
	left: 0.5rem;
	top: 0.5rem;
}


/* --- Root layout -------------------------------------------------------------
   WordPress applies block-gap between the template's root children, which puts
   a 1rem strip of page background between <header>, <main> and <footer>. Those
   three must stack flush — every section inside them carries its own padding,
   so the gap is never wanted here.

   Scoped to direct children only, so block-gap still governs content spacing.
   --------------------------------------------------------------------------- */

.wp-site-blocks > * + * {
	margin-block-start: 0;
}

/* Same problem one level deeper: core gives every child of a constrained
   container a block-gap margin, which puts a 1rem stripe of page background
   between two adjacent full-bleed section bands — visible as a white line
   between two beige sections.

   Scoped to alignfull-following-alignfull so ordinary content (paragraphs,
   headings, lists) keeps its vertical rhythm. Section bands carry their own
   padding, so they should always stack flush. */
.entry-content > .alignfull + .alignfull,
.wp-block-post-content > .alignfull + .alignfull {
	margin-block-start: 0;
}


/* --- Sticky header ----------------------------------------------------------
   Pinned at all times — the nav never hides on scroll.

   Sticky rather than fixed: the header keeps its place in normal flow, so
   engaging it shifts nothing. Fixed would need a placeholder element to avoid
   the jump.

   The negative `top` is the utility bar's measured height, so that bar tucks
   out of view once you scroll while the burgundy nav stays pinned. Keeping the
   utility bar on screen permanently would cost roughly 7rem of every viewport
   for a phone number that is also in the footer and in every CTA.
   --------------------------------------------------------------------------- */

/* Applied to the template-part wrapper, not to .seete-header inside it: a
   sticky element can only travel within its containing block, and .seete-header
   is boxed by that wrapper. Stuck on the inner element it would unstick as soon
   as the header scrolled past. The wrapper's parent is .wp-site-blocks, which
   spans the page. */
.wp-site-blocks > header.wp-block-template-part {
	position: sticky;
	/* Parks below the admin bar when one is present, and flush to the viewport
	   when it is not. Both values are measured in JS — see sticky-nav.js. The
	   fallbacks keep it sensible for the moment before that first runs. */
	top: calc(var(--seete-admin-bar-h, 0px) - var(--seete-eyebrow-h, 2.6rem));
	z-index: 90;
}


/* A shadow only once it is actually overlapping content, so the header stays
   flat at rest. */
body.seete-nav-stuck .seete-header-main {
	box-shadow: 0 1px 2px rgb(26 22 20 / 0.06), 0 2px 8px rgb(26 22 20 / 0.06);
}

/* Anchor targets must not land underneath the stuck bar, or the admin bar. */
html {
	scroll-padding-top: calc(6rem + var(--seete-admin-bar-h, 0px));
}

/* On a landscape phone a permanently pinned bar eats too much of the screen,
   so it scrolls away like any other content. */
@media (max-height: 480px) {
	.wp-site-blocks > header.wp-block-template-part {
		position: static;
	}
}



/* --- Header ------------------------------------------------------------------
   Both bars are full-bleed colour with constrained content. The rules below
   remove the stray block margins that otherwise make the padding look
   asymmetric — the text sits optically high in a bar whose padding is even.
   --------------------------------------------------------------------------- */

.seete-utility-bar :where(p),
.seete-header-main :where(p) {
	margin-block: 0;
}

/* The site-logo block ships as an inline-block figure with its own line-height,
   which adds a few phantom pixels under the image. */
.seete-header-main .wp-block-site-logo,
.seete-header-main .wp-block-site-logo img {
	display: block;
	margin-block: 0;
	line-height: 0;
}

.seete-header-main .wp-block-navigation {
	align-items: center;
}


/* --- Utility bar (kept from the current site's CI) -------------------------- */

.seete-utility-bar {
	font-size: var(--wp--preset--font-size--x-small);
	line-height: 1.4;
}

.seete-utility-bar a {
	text-decoration: none;
}

.seete-utility-bar a:hover,
.seete-utility-bar a:focus-visible {
	text-decoration: underline;
}


/* --- Navigation ------------------------------------------------------------- */

.wp-block-navigation .wp-block-navigation-item__content {
	text-decoration: none;
	font-weight: 500;
}

.wp-block-navigation .wp-block-navigation-item__content:hover,
.wp-block-navigation .wp-block-navigation-item__content:focus-visible {
	text-decoration: underline;
	text-underline-offset: 0.35em;
}

/* Current page gets a persistent marker, not just a colour change — colour
   alone is not a sufficient distinction (WCAG 1.4.1). Keyed off aria-current as
   well as the class, so the visual and the announced state cannot drift apart. */
.wp-block-navigation .current-menu-item > .wp-block-navigation-item__content,
.wp-block-navigation .current-menu-ancestor > .wp-block-navigation-item__content,
.wp-block-navigation [aria-current="page"],
.wp-block-navigation [aria-current="true"] {
	font-weight: 600;
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 0.35em;
}

/* In the burgundy bar the underline is the whole signal, so give it room. */
.seete-header-main .wp-block-navigation [aria-current="page"],
.seete-header-main .wp-block-navigation [aria-current="true"] {
	text-decoration-color: currentColor;
	text-underline-offset: 0.45em;
}


/* --- Lists ------------------------------------------------------------------ */

.wp-block-list.is-style-none {
	list-style: none;
	padding-left: 0;
	margin-left: 0;
}

.wp-block-list.is-style-none a {
	text-decoration: none;
}

.wp-block-list.is-style-none a:hover,
.wp-block-list.is-style-none a:focus-visible {
	text-decoration: underline;
}


/* --- Eckbeschlag -------------------------------------------------------------
   The corner casting is the one structural mark every ISO container carries, so
   it is what the primary button borrows — the site's single piece of ornament,
   spent on its most repeated element.

   Two corners, not four: Gutenberg renders the label straight inside the <a>,
   leaving no inner element for a third mark, so the pair sits diagonally and
   reads as a registration mark rather than an accident. Four short seams were
   tried instead and read as a ticket-stub perforation.

   Filled buttons only. On the outline variant the bracket lands a few pixels
   from the existing hairline and the two just look like a doubled border —
   which also leaves the mark doing useful work, since it now separates primary
   from secondary at a glance.
   --------------------------------------------------------------------------- */

:is(
	.wp-block-button:not(.is-style-outline) > .wp-element-button,
	.seete-btn:not(.seete-btn--ghost)
) {
	position: relative;
}

/* currentColor, not white: the CTA band inverts the primary to a white plate
   with bordeaux text, where a hardcoded white bracket would disappear. Opacity
   rides on the pseudo-element because the border is all there is to fade. */
:is(
	.wp-block-button:not(.is-style-outline) > .wp-element-button,
	.seete-btn:not(.seete-btn--ghost)
)::before,
:is(
	.wp-block-button:not(.is-style-outline) > .wp-element-button,
	.seete-btn:not(.seete-btn--ghost)
)::after {
	content: "";
	position: absolute;
	inline-size: 9px;
	block-size: 9px;
	border: 1px solid currentColor;
	opacity: 0.42;
	pointer-events: none;
}

:is(
	.wp-block-button:not(.is-style-outline) > .wp-element-button,
	.seete-btn:not(.seete-btn--ghost)
)::before {
	inset-block-start: 4px;
	inset-inline-start: 4px;
	border-block-end: 0;
	border-inline-end: 0;
}

:is(
	.wp-block-button:not(.is-style-outline) > .wp-element-button,
	.seete-btn:not(.seete-btn--ghost)
)::after {
	inset-block-end: 4px;
	inset-inline-end: 4px;
	border-block-start: 0;
	border-inline-start: 0;
}

/* In forced-colors the border is repainted with the system colour and the
   opacity is dropped, so the bracket would come back at full strength as a
   stray mark next to the label. It is decoration — let it go. */
@media (forced-colors: active) {
	:is(
		.wp-block-button:not(.is-style-outline) > .wp-element-button,
		.seete-btn:not(.seete-btn--ghost)
	)::before,
	:is(
		.wp-block-button:not(.is-style-outline) > .wp-element-button,
		.seete-btn:not(.seete-btn--ghost)
	)::after {
		display: none;
	}
}


/* --- Cards ------------------------------------------------------------------
   Border, not shadow. This is the deliberate replacement for the old bevelled
   look, and it keeps cards legible against both white and surface-100.
   --------------------------------------------------------------------------- */

.seete-card {
	border: 1px solid var(--wp--preset--color--line-200);
	border-radius: var(--wp--custom--radius--md, 4px);
	background: var(--wp--preset--color--surface-000);
	height: 100%;
}

.seete-card {
	display: flex;
	flex-direction: column;
	transition: border-color 120ms ease;
}

.seete-card:hover,
.seete-card:focus-within {
	border-color: var(--wp--preset--color--brand-700);
}







@media (prefers-reduced-motion: reduce) {
	.seete-card {
		transition: none;
	}
}


/* --- Services ----------------------------------------------------------------
   Competitors in this sector either lead with photography (conzept.com,
   kesselrental.de) or with generic sector pictograms (lotsenbuero.com), and
   none of them publish a number. The card is built around that gap: a drawn
   technical elevation, and a meta line that says something concrete.

   The meta line is the point of the card, so it gets the mono face and a rule
   above it — it should read like a spec sheet entry, not a caption.
   --------------------------------------------------------------------------- */

.seete-services {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--60);
	margin: 0;
	padding: 0;
	list-style: none;
}

.seete-service {
	display: flex;
	flex-direction: column;
	padding: var(--wp--preset--spacing--70);
	border: 1px solid var(--wp--preset--color--line-200);
	border-radius: var(--wp--custom--radius--md, 4px);
	background: var(--wp--preset--color--surface-000);
	transition: border-color 140ms ease, background-color 140ms ease;
}

.seete-service:hover,
.seete-service:focus-within {
	border-color: var(--wp--preset--color--brand-700);
	background: var(--wp--preset--color--brand-050);
}

/* Tinted plate behind the icon — the same treatment as the modal's topic
   cards, so the two read as one system. */
.seete-service__plate {
	display: grid;
	place-items: center;
	width: 3.25rem;
	height: 3.25rem;
	margin-bottom: var(--wp--preset--spacing--60);
	border-radius: var(--wp--custom--radius--sm, 2px);
	background: var(--wp--preset--color--brand-100);
	color: var(--wp--preset--color--brand-700);
	transition: background-color 140ms ease;
}

.seete-service:hover .seete-service__plate {
	background: var(--wp--preset--color--brand-700);
	color: var(--wp--preset--color--surface-000);
}

.seete-service__plate .seete-icon {
	width: 2rem;
	height: 2rem;
}

.seete-service__title {
	margin: 0 0 var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--x-large);
	line-height: 1.25;
}

.seete-service__title a {
	text-decoration: none;
	color: var(--wp--preset--color--ink-900);
}

.seete-service:hover .seete-service__title a {
	color: var(--wp--preset--color--brand-700);
}

.seete-service__text {
	margin: 0 0 var(--wp--preset--spacing--50);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--ink-700);
	max-width: none;
}


.seete-service__actions {
	/* Pushed to the bottom so the CTAs line up across cards of unequal text. */
	margin: auto 0 0;
	padding-top: var(--wp--preset--spacing--30);
}

.seete-service__cta {
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	text-decoration: none;
}

.seete-service__cta::after {
	content: " →";
	white-space: nowrap;
}

.seete-service__cta:hover,
.seete-service__cta:focus-visible {
	text-decoration: underline;
}

@media (max-width: 1023px) {
	.seete-services {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 599px) {
	.seete-services {
		grid-template-columns: 1fr;
	}
}

@media (prefers-reduced-motion: reduce) {
	.seete-service,
	.seete-service__plate {
		transition: none;
	}
}


/* --- Project gallery ---------------------------------------------------------
   research/04 argued that photography is the largest visual lever on this site
   and that the old one wasted it. This is where that gets spent: a lead image
   at full width, then an even grid, with the project's hard numbers beside the
   introduction rather than buried in prose.
   --------------------------------------------------------------------------- */

.seete-project__head {
	max-width: 46rem;
	margin-bottom: var(--wp--preset--spacing--80);
}

.seete-project__eyebrow {
	margin: 0 0 var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--brand-700);
}

.seete-project__title {
	margin: 0 0 var(--wp--preset--spacing--50);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-2);
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: -0.005em;
	color: var(--wp--preset--color--ink-900);
	hyphens: manual;
}

.seete-project__intro {
	margin: 0;
	font-size: var(--wp--preset--font-size--large);
	color: var(--wp--preset--color--ink-700);
	max-width: none;
}

/* Definition list because that is what it is: a label and its value. Value
   above label visually — the number is what the eye should catch first. */
.seete-project__facts {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--80);
	margin: var(--wp--preset--spacing--70) 0 0;
	padding-top: var(--wp--preset--spacing--60);
	border-top: 1px solid var(--wp--preset--color--line-200);
}

.seete-project__facts dt {
	order: 2;
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--ink-500);
}

.seete-project__facts dd {
	order: 1;
	margin: 0 0 0.125rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--xx-large);
	font-weight: 600;
	line-height: 1.1;
	font-variant-numeric: tabular-nums;
	color: var(--wp--preset--color--brand-700);
}

.seete-project__facts > div {
	display: flex;
	flex-direction: column;
}

/* --- Gallery carousel --------------------------------------------------------
   The track is a real scroll container with scroll-snap, so it works by swipe
   and by scrollbar before any JavaScript runs. Nothing is display:none — every
   slide stays in the document for find-in-page and screen readers.
   --------------------------------------------------------------------------- */

.seete-gallery__stage {
	position: relative;
}

.seete-gallery__track {
	display: flex;
	gap: var(--wp--preset--spacing--60);
	margin: 0;
	padding: 0;
	list-style: none;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	border-radius: var(--wp--custom--radius--md, 4px);
}

.seete-gallery__track::-webkit-scrollbar {
	display: none;
}

.seete-gallery__slide {
	flex: 0 0 100%;
	scroll-snap-align: start;
	max-width: none;
}

.seete-gallery__slide figure {
	margin: 0;
}

.seete-gallery__slide img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: var(--wp--custom--radius--md, 4px);
	background: var(--wp--preset--color--surface-050);
}

.seete-gallery__slide figcaption {
	margin-top: var(--wp--preset--spacing--40);
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--ink-500);
}

/* Arrows only once JS is driving; without it the track is scrolled directly. */
.seete-gallery__nav {
	display: none;
}

.seete-gallery.is-enhanced .seete-gallery__nav {
	position: absolute;
	top: 50%;
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	margin-top: -2.25rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgb(255 255 255 / 0.92);
	box-shadow: 0 1px 2px rgb(26 22 20 / 0.12), 0 2px 8px rgb(26 22 20 / 0.12);
	cursor: pointer;
	transition: background-color 120ms ease;
}

.seete-gallery__nav:hover:not(:disabled) {
	background: var(--wp--preset--color--surface-000);
}

.seete-gallery__nav:disabled {
	opacity: 0;
	pointer-events: none;
}

.seete-gallery__nav--prev { left: var(--wp--preset--spacing--50); }
.seete-gallery__nav--next { right: var(--wp--preset--spacing--50); }

.seete-gallery__nav span {
	width: 0.6rem;
	height: 0.6rem;
	border-top: 2px solid var(--wp--preset--color--brand-700);
	border-right: 2px solid var(--wp--preset--color--brand-700);
}

.seete-gallery__nav--prev span {
	transform: rotate(-135deg);
	margin-left: 0.2rem;
}

.seete-gallery__nav--next span {
	transform: rotate(45deg);
	margin-right: 0.2rem;
}

.seete-gallery__thumbs {
	display: flex;
	gap: var(--wp--preset--spacing--40);
	margin: var(--wp--preset--spacing--50) 0 0;
	padding: 0;
	list-style: none;
	overflow-x: auto;
	scrollbar-width: thin;
}

.seete-gallery__thumbs li {
	max-width: none;
}

.seete-gallery__thumb {
	display: block;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	line-height: 0;
	opacity: 0.55;
	transition: opacity 120ms ease;
}

.seete-gallery__thumb img {
	display: block;
	width: 5.5rem;
	height: 3.6rem;
	object-fit: cover;
	border-radius: var(--wp--custom--radius--sm, 2px);
}

.seete-gallery__thumb:hover {
	opacity: 0.85;
}

/* Active thumbnail: full opacity plus a rule, so it is not signalled by
   brightness alone. */
.seete-gallery__thumb[aria-current="true"] {
	opacity: 1;
	box-shadow: inset 0 0 0 2px var(--wp--preset--color--brand-700);
	border-radius: var(--wp--custom--radius--sm, 2px);
}

@media (max-width: 599px) {
	.seete-gallery__thumb img {
		width: 4.25rem;
		height: 2.8rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.seete-gallery__nav,
	.seete-gallery__thumb {
		transition: none;
	}
}


.seete-project__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--60);
	margin: 0;
	padding: 0;
	list-style: none;
}

.seete-project__item {
	max-width: none;
}

/* The lead image carries the project — it gets the width. */
.seete-project__item.is-lead {
	grid-column: span 3;
}

.seete-project__item figure {
	margin: 0;
}

.seete-project__item img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	border-radius: var(--wp--custom--radius--md, 4px);
	background: var(--wp--preset--color--surface-050);
}

.seete-project__item.is-lead img {
	aspect-ratio: 16 / 9;
}

.seete-project__item figcaption {
	margin-top: var(--wp--preset--spacing--40);
	font-size: var(--wp--preset--font-size--x-small);
	line-height: 1.45;
	color: var(--wp--preset--color--ink-500);
}

@media (max-width: 1023px) {
	.seete-project__grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.seete-project__item.is-lead {
		grid-column: span 2;
	}
}

@media (max-width: 599px) {
	.seete-project__grid {
		grid-template-columns: 1fr;
	}
	.seete-project__item.is-lead {
		grid-column: span 1;
	}
	.seete-project__facts {
		gap: var(--wp--preset--spacing--60);
	}
}


/* --- Case study detail -------------------------------------------------------
   Narrow measure for the body, because these are read rather than scanned. The
   header carries the facts a buyer checks first — client, industry, date — as a
   definition list rather than a sentence, so they can be found without reading.
   --------------------------------------------------------------------------- */

/* Hero: a full-bleed image with the reference card overlapping it. The card is
   a solid surface — text never sits on the photograph.

   The section wrapper carries no top padding, so the image sits flush under the
   header. Case studies without a photograph put that space back here instead,
   or their heading would collide with the nav. */
.seete-cs__head {
	margin-bottom: var(--wp--preset--spacing--90);
}

.seete-cs__head:not(.seete-cs__head--media) {
	padding-top: var(--wp--preset--spacing--100);
}

.seete-cs__hero {
	position: relative;
	margin: 0 calc(50% - 50vw);
	width: 100vw;
	line-height: 0;
}

.seete-cs__hero img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	max-height: 62vh;
	object-fit: cover;
	background: var(--wp--preset--color--surface-100);
}

.seete-cs__card {
	position: relative;
	padding: var(--wp--preset--spacing--80);
	background: var(--wp--preset--color--surface-000);
	border: 1px solid var(--wp--preset--color--line-200);
	border-radius: var(--wp--custom--radius--md, 4px);
}

/* Pull the card up over the image. Only when there is an image to overlap. */
.seete-cs__head--media .seete-cs__card {
	margin-top: calc(-1 * var(--wp--preset--spacing--100));
	box-shadow: 0 1px 2px rgb(26 22 20 / 0.06), 0 2px 8px rgb(26 22 20 / 0.06);
}

/* Without a photograph the card would be a box floating on white, so it drops
   its chrome and becomes a plain header. */
.seete-cs__head:not(.seete-cs__head--media) .seete-cs__card {
	padding: 0 0 var(--wp--preset--spacing--70);
	background: none;
	border: 0;
	border-bottom: 1px solid var(--wp--preset--color--line-200);
	border-radius: 0;
}

.seete-cs__eyebrow {
	margin: 0 0 var(--wp--preset--spacing--40);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-500);
	max-width: none;
}

.seete-cs__eyebrow a {
	color: var(--wp--preset--color--brand-700);
	text-decoration: none;
}

.seete-cs__eyebrow a:hover,
.seete-cs__eyebrow a:focus-visible {
	text-decoration: underline;
}

.seete-cs__title {
	margin: 0 0 var(--wp--preset--spacing--50);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-1);
	font-weight: 600;
	line-height: 1.15;
	letter-spacing: -0.005em;
	color: var(--wp--preset--color--ink-900);
	hyphens: manual;
	text-wrap: balance;
}

.seete-cs__sub {
	margin: 0 0 var(--wp--preset--spacing--70);
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.5;
	color: var(--wp--preset--color--ink-500);
	max-width: none;
}

.seete-cs__meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--80);
	margin: 0;
	padding-top: var(--wp--preset--spacing--60);
	border-top: 1px solid var(--wp--preset--color--line-200);
}

.seete-cs__meta > div {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
}

.seete-cs__meta dt {
	font-size: var(--wp--preset--font-size--x-small);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-500);
}

.seete-cs__meta dd {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--ink-900);
}

@media (max-width: 767px) {
	.seete-cs__hero img {
		aspect-ratio: 4 / 3;
	}
	.seete-cs__head--media .seete-cs__card {
		margin-top: calc(-1 * var(--wp--preset--spacing--80));
	}
	.seete-cs__card {
		padding: var(--wp--preset--spacing--70);
	}
}

/* Figures from the project, reused from the gallery component so a case study
   and the homepage reference strip state numbers the same way. */
.seete-cs .seete-project__facts {
	margin: 0 0 var(--wp--preset--spacing--80);
	padding-top: 0;
	border-top: 0;
}

/* Body rhythm: these pages are long, so headings need room to separate. */
/* The audit sets 68ch as the default measure. At 880px that leaves paragraphs
   stopping well short of the column, so case studies run a little longer —
   still inside the comfortable range for continuous reading. */
.seete-cs .wp-block-post-content :where(p, li) {
	max-width: 74ch;
}

.seete-cs .wp-block-post-content > h2 {
	margin-top: var(--wp--preset--spacing--90);
}

.seete-cs .wp-block-post-content > h3 {
	margin-top: var(--wp--preset--spacing--70);
}

.seete-cs .wp-block-post-content > ul {
	margin-block: var(--wp--preset--spacing--50);
	padding-left: 1.1rem;
}

.seete-cs .wp-block-post-content > ul li {
	margin-bottom: 0.5rem;
	padding-left: 0.25rem;
}

.seete-cs .wp-block-post-content > ul li::marker {
	color: var(--wp--preset--color--brand-700);
}

/* The gallery is full-bleed inside a 760px column, so it can breathe. */
.seete-cs .alignfull {
	margin-inline: calc(50% - 50vw);
	max-width: 100vw;
	width: 100vw;
}

/* Outro band. Full-bleed beige so the page does not run white straight into
   the burgundy CTA, and so the onward navigation reads as a separate step from
   the case study itself. */
.seete-cs__outro {
	margin: var(--wp--preset--spacing--100) calc(50% - 50vw) 0;
	width: 100vw;
	padding: var(--wp--preset--spacing--90) var(--wp--preset--spacing--50);
	background: var(--wp--preset--color--surface-100);
}

.seete-cs__outro-inner {
	max-width: 880px;
	margin-inline: auto;
}

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

.seete-cs__nav-item {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	padding: var(--wp--preset--spacing--60);
	background: var(--wp--preset--color--surface-000);
	border: 1px solid var(--wp--preset--color--line-200);
	border-radius: var(--wp--custom--radius--md, 4px);
	text-decoration: none;
	transition: border-color 140ms ease, background-color 140ms ease;
}

.seete-cs__nav-item:hover,
.seete-cs__nav-item:focus-visible {
	border-color: var(--wp--preset--color--brand-700);
	background: var(--wp--preset--color--brand-050);
}

.seete-cs__nav-item--next {
	text-align: right;
}

.seete-cs__nav-label {
	font-size: var(--wp--preset--font-size--x-small);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-500);
}

.seete-cs__nav-title {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 600;
	line-height: 1.25;
	color: var(--wp--preset--color--ink-900);
	hyphens: manual;
}

.seete-cs__back {
	margin: var(--wp--preset--spacing--70) 0 0;
	font-size: var(--wp--preset--font-size--small);
	max-width: none;
}

@media (max-width: 599px) {
	.seete-cs__nav {
		grid-template-columns: 1fr;
	}
	.seete-cs__nav-item--next {
		text-align: left;
	}
	.seete-cs__meta {
		gap: var(--wp--preset--spacing--60);
	}
}

@media (prefers-reduced-motion: reduce) {
	.seete-cs__nav-item {
		transition: none;
	}
}


/* --- Case study cards --------------------------------------------------------
   The client and the industry sit on the card, not just the title. For a buyer
   deciding whether Seete has done anything resembling their situation, "Kunde:
   Flughafen München GmbH / Branche: Luftfahrt" answers more than a headline.
   --------------------------------------------------------------------------- */

.seete-cases {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--60);
	margin: 0;
	padding: 0;
	list-style: none;
}

.seete-case {
	max-width: none;
}

.seete-case__link {
	display: flex;
	flex-direction: column;
	height: 100%;
	border: 1px solid var(--wp--preset--color--line-200);
	border-radius: var(--wp--custom--radius--md, 4px);
	background: var(--wp--preset--color--surface-000);
	text-decoration: none;
	overflow: hidden;
	transition: border-color 140ms ease;
}

.seete-case__link:hover,
.seete-case__link:focus-visible {
	border-color: var(--wp--preset--color--brand-700);
}

.seete-case__media {
	display: block;
	line-height: 0;
}

.seete-case__media img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

/* Not every case study has photography yet. A tinted plate with the container
   mark is a deliberate placeholder rather than a broken-looking gap. */
.seete-case__media--empty {
	display: grid;
	place-items: center;
	aspect-ratio: 3 / 2;
	background: var(--wp--preset--color--brand-050);
	color: var(--wp--preset--color--brand-700);
}

.seete-case__media--empty .seete-icon {
	width: 3rem;
	height: 3rem;
}

.seete-case__body {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
	padding: var(--wp--preset--spacing--60);
	flex: 1;
}

.seete-case__cat {
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--brand-700);
}

.seete-case__title {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 600;
	line-height: 1.25;
	color: var(--wp--preset--color--ink-900);
	hyphens: manual;
}

.seete-case__link:hover .seete-case__title,
.seete-case__link:focus-visible .seete-case__title {
	color: var(--wp--preset--color--brand-700);
}

.seete-case__sub {
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.5;
	color: var(--wp--preset--color--ink-700);
}

.seete-case__meta {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
	margin-top: var(--wp--preset--spacing--40);
	padding-top: var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--line-200);
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--ink-500);
}

.seete-case__more {
	margin-top: auto;
	padding-top: var(--wp--preset--spacing--50);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--brand-700);
}

.seete-case__more::after {
	content: " →";
	white-space: nowrap;
}

@media (max-width: 1023px) {
	.seete-cases {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 599px) {
	.seete-cases {
		grid-template-columns: 1fr;
	}
}

@media (prefers-reduced-motion: reduce) {
	.seete-case__link {
		transition: none;
	}
}


/* --- Use cases ---------------------------------------------------------------
   Two columns, not three. There are exactly four scenarios, and four items in a
   three-column grid always strands one on its own row.

   Icon beside the text rather than above it, which is the other reason for a
   separate component: stacked icon-over-title is the homepage services card,
   and repeating that shape here would make the page read as one long grid.
   The horizontal arrangement also gives German compounds the width they need.
   --------------------------------------------------------------------------- */

.seete-usecases {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--wp--preset--spacing--60);
	margin: 0;
	padding: 0;
	list-style: none;
}

.seete-usecase {
	display: flex;
	align-items: flex-start;
	gap: var(--wp--preset--spacing--60);
	padding: var(--wp--preset--spacing--70);
	border: 1px solid var(--wp--preset--color--line-200);
	border-radius: var(--wp--custom--radius--md, 4px);
	background: var(--wp--preset--color--surface-000);
	max-width: none;
}

.seete-usecase__plate {
	display: grid;
	place-items: center;
	flex: none;
	width: 3rem;
	height: 3rem;
	border-radius: var(--wp--custom--radius--sm, 2px);
	background: var(--wp--preset--color--brand-100);
	color: var(--wp--preset--color--brand-700);
}

.seete-usecase__plate .seete-icon {
	width: 1.875rem;
	height: 1.875rem;
}

.seete-usecase__title {
	margin: 0 0 var(--wp--preset--spacing--30);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 600;
	line-height: 1.25;
	color: var(--wp--preset--color--ink-900);
	hyphens: manual;
}

.seete-usecase__text {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.55;
	color: var(--wp--preset--color--ink-700);
	max-width: none;
}

@media (max-width: 767px) {
	.seete-usecases {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 479px) {
	/* Below this the two-column card itself stops working — stack inside it. */
	.seete-usecase {
		flex-direction: column;
		gap: var(--wp--preset--spacing--50);
	}
}


/* --- Machine cards -----------------------------------------------------------
   The specification data is the reason this page can beat the sector — no
   competitor publishes a dimension, a capacity or a kW figure. So the numbers
   get the mono face, tabular figures and a ruled list of their own, rather than
   being buried in prose the way everyone else's are.
   --------------------------------------------------------------------------- */

.seete-machines {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--60);
}

.seete-machine {
	display: flex;
	flex-direction: column;
	padding: var(--wp--preset--spacing--70);
	border: 1px solid var(--wp--preset--color--line-200);
	border-radius: var(--wp--custom--radius--md, 4px);
	background: var(--wp--preset--color--surface-000);
}

.seete-machine__name {
	margin: 0 0 var(--wp--preset--spacing--50);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 600;
	line-height: 1.2;
	color: var(--wp--preset--color--ink-900);
	hyphens: manual;
}

.seete-machine__specs {
	margin: 0 0 var(--wp--preset--spacing--60);
	padding: 0;
	border-top: 1px solid var(--wp--preset--color--line-200);
}

.seete-machine__specs > div {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: var(--wp--preset--spacing--40);
	align-items: baseline;
	padding: 0.5rem 0;
	border-bottom: 1px solid var(--wp--preset--color--line-200);
}

.seete-machine__specs dt {
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--ink-500);
}

.seete-machine__specs dd {
	margin: 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--x-small);
	font-variant-numeric: tabular-nums;
	text-align: right;
	color: var(--wp--preset--color--ink-900);
}

.seete-machine__label {
	margin: 0 0 var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-500);
}

.seete-machine__kit {
	margin: 0 0 var(--wp--preset--spacing--60);
	padding: 0;
	list-style: none;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.5;
	color: var(--wp--preset--color--ink-700);
}

.seete-machine__kit li {
	position: relative;
	padding-left: 0.9rem;
	margin-bottom: 0.25rem;
	max-width: none;
}

.seete-machine__kit li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.62em;
	width: 4px;
	height: 4px;
	background: var(--wp--preset--color--brand-700);
}

.seete-machine__cta {
	margin: auto 0 0;
	padding-top: var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.seete-machine__cta a {
	text-decoration: none;
}

.seete-machine__cta a::after {
	content: " →";
	white-space: nowrap;
}

.seete-machine__cta a:hover,
.seete-machine__cta a:focus-visible {
	text-decoration: underline;
}

@media (max-width: 1023px) {
	.seete-machines {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 599px) {
	.seete-machines {
		grid-template-columns: 1fr;
	}
}


/* --- Checklist --------------------------------------------------------------- */

.seete-checklist {
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: var(--wp--preset--font-size--small);
}

.seete-checklist li {
	position: relative;
	padding: 0.5rem 0 0.5rem 1.75rem;
	border-bottom: 1px solid var(--wp--preset--color--line-200);
	color: var(--wp--preset--color--ink-700);
	max-width: none;
}

.seete-checklist li:last-child {
	border-bottom: 0;
}

.seete-checklist li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 1.15em;
	width: 0.75rem;
	height: 0.4rem;
	border-left: 2px solid var(--wp--preset--color--brand-700);
	border-bottom: 2px solid var(--wp--preset--color--brand-700);
	transform: rotate(-45deg);
}


/* --- Process steps -----------------------------------------------------------
   Namespaced `seete-process`, not `seete-step`: the enquiry modal already owns
   `.seete-step`, and enquiry-modal.css loads after this file — so the modal's
   `flex: 1; overflow-y: auto; padding: 2.25rem` was landing on these and
   wrecking them. Shared-sounding class names between the two stylesheets are a
   standing trap; keep component prefixes distinct.

   Numbered because the content genuinely is a sequence — you cannot order
   before the site has been assessed. A continuous hairline with a marker per
   step reads as progression; four disconnected boxes do not.
   --------------------------------------------------------------------------- */

.seete-process {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--wp--preset--spacing--70);
	margin: var(--wp--preset--spacing--80) 0 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--wp--preset--color--line-200);
}

.seete-process__item {
	position: relative;
	padding-top: var(--wp--preset--spacing--60);
}

/* Sits on the hairline, so the row reads as one bar rather than four cards. */
.seete-process__item::before {
	content: "";
	position: absolute;
	inset-block-start: -2px;
	inset-inline-start: 0;
	inline-size: 2.75rem;
	block-size: 3px;
	background: var(--wp--preset--color--brand-700);
}

.seete-process__num {
	display: block;
	margin-bottom: var(--wp--preset--spacing--40);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--x-small);
	font-variant-numeric: tabular-nums;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--brand-700);
}

.seete-process__title {
	margin: 0 0 var(--wp--preset--spacing--30);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 600;
	line-height: 1.25;
	color: var(--wp--preset--color--ink-900);
	hyphens: manual;
}

.seete-process__text {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.55;
	color: var(--wp--preset--color--ink-700);
	max-width: none;
}

/* Five-phase variant. The count is content, not styling — a process with five
   stages should show five, not be padded or trimmed to fit a four-column grid. */
.seete-process--5 {
	grid-template-columns: repeat(5, 1fr);
}

@media (max-width: 1023px) {
	.seete-process,
	.seete-process--5 {
		grid-template-columns: repeat(2, 1fr);
		row-gap: var(--wp--preset--spacing--80);
	}
}

@media (max-width: 599px) {
	.seete-process {
		grid-template-columns: 1fr;
		border-top: 0;
	}

	/* Stacked, a rule per step is clearer than one long shared line. */
	.seete-process__item {
		border-top: 1px solid var(--wp--preset--color--line-200);
	}
}

/* --- FAQ ---------------------------------------------------------------------
   Native <details>: open/close with no JavaScript, findable by in-page search
   in browsers that expand hidden content, and keyboard operable for free.
   --------------------------------------------------------------------------- */

.seete-faq__item {
	border-bottom: 1px solid var(--wp--preset--color--line-200);
}

.seete-faq__q {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--50);
	padding: var(--wp--preset--spacing--60) 0;
	cursor: pointer;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 600;
	line-height: 1.3;
	color: var(--wp--preset--color--ink-900);
	list-style: none;
}

.seete-faq__q::-webkit-details-marker {
	display: none;
}

.seete-faq__q::after {
	content: "";
	flex: none;
	width: 0.7rem;
	height: 0.7rem;
	margin-top: 0.45em;
	border-right: 2px solid var(--wp--preset--color--brand-700);
	border-bottom: 2px solid var(--wp--preset--color--brand-700);
	transform: rotate(45deg);
	transition: transform 160ms ease;
}

.seete-faq__item[open] .seete-faq__q::after {
	transform: rotate(-135deg);
}

.seete-faq__q:hover {
	color: var(--wp--preset--color--brand-700);
}

.seete-faq__a {
	padding-bottom: var(--wp--preset--spacing--60);
}

.seete-faq__a p {
	margin: 0;
	color: var(--wp--preset--color--ink-700);
}


/* --- Related links -----------------------------------------------------------
   An index, not another card grid. By this point the page has already shown
   use-case cards, process steps and an FAQ; a fourth boxed grid reads as
   filler. Full-width rows split by hairlines give the section its own rhythm,
   and match what it actually is — navigation onward.
   --------------------------------------------------------------------------- */

.seete-related {
	margin: 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--wp--preset--color--line-200);
}

.seete-related li {
	border-bottom: 1px solid var(--wp--preset--color--line-200);
	max-width: none;
}

.seete-related a {
	display: grid;
	grid-template-columns: 1fr auto;
	align-items: center;
	column-gap: var(--wp--preset--spacing--60);
	/* No inline padding or negative margin: the hover fill lines up exactly with
	   the hairlines above and below it. Any bleed past the column reads as a
	   misalignment against those rules. */
	padding-block: var(--wp--preset--spacing--60);
	text-decoration: none;
	transition: background-color 140ms ease;
}

.seete-related a:hover,
.seete-related a:focus-visible {
	background: var(--wp--preset--color--brand-050);
}

.seete-related__title {
	grid-column: 1;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--xx-large);
	font-weight: 600;
	line-height: 1.2;
	color: var(--wp--preset--color--ink-900);
	hyphens: manual;
}

.seete-related a:hover .seete-related__title,
.seete-related a:focus-visible .seete-related__title {
	color: var(--wp--preset--color--brand-700);
}

.seete-related__text {
	grid-column: 1;
	margin-top: 0.25rem;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.5;
	color: var(--wp--preset--color--ink-500);
}

/* Chevron drawn from borders rather than typed, so it keeps its weight at any
   size and never depends on a glyph being present in the font. Static: the
   row's background fill is the hover signal, and a second moving part
   competes with it. */
.seete-related a::after {
	content: "";
	grid-column: 2;
	grid-row: 1 / span 2;
	width: 0.6rem;
	height: 0.6rem;
	border-top: 2px solid var(--wp--preset--color--brand-700);
	border-right: 2px solid var(--wp--preset--color--brand-700);
	transform: rotate(45deg);
	/* Inset from the row's right edge. Set as a margin rather than a translate:
	   the element is rotated, so a translate would move it along the diagonal. */
	margin-inline-end: var(--wp--preset--spacing--30);
}

@media (max-width: 599px) {
	.seete-related__title {
		font-size: var(--wp--preset--font-size--x-large);
	}
}

@media (prefers-reduced-motion: reduce) {
	.seete-faq__q::after,
	.seete-related a {
		transition: none;
	}
}


/* --- Reference strip (social proof) -----------------------------------------
   The proof here is the project scale, not the logo. A grey logo says "they
   exist"; "650 m² Interimskantine aus 40 Modulen" says Seete can actually do
   the thing the visitor is trying to buy — so the fact line is not a subtitle,
   it is the payload.
   --------------------------------------------------------------------------- */

/* Visually hidden but still announced. Used where a heading is needed to give
   a section meaning in the accessibility tree but would be visual clutter. */
.seete-sr-only {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.seete-logos__list {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: var(--wp--preset--spacing--70);
	margin: 0;
	padding: 0;
	list-style: none;
}

.seete-logos__item {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
	padding-inline-end: var(--wp--preset--spacing--50);
	border-left: 1px solid var(--wp--preset--color--line-200);
	padding-inline-start: var(--wp--preset--spacing--60);
}

.seete-logos__item:first-child {
	border-left: 0;
	padding-inline-start: 0;
}

/* One optical size for every mark, whether it is type or an inlined SVG. */
.seete-logos__mark {
	display: flex;
	align-items: center;
	min-height: 1.75rem;
	color: var(--wp--preset--color--ink-900);
}

.seete-logos__mark--type {
	font-family: var(--wp--preset--font-family--display);
	/* Trust-bar scale, not section-heading scale — it sits inside the hero. */
	font-size: 1.125rem;
	font-weight: 600;
	line-height: 1.15;
	letter-spacing: -0.005em;
	hyphens: manual;
}

.seete-logos__mark--svg svg {
	width: auto;
	height: 1.75rem;
	max-width: 100%;
	/* The monochrome transform. Requires fill="currentColor" in the file. */
	fill: currentColor;
}

.seete-logos__fact {
	font-size: var(--wp--preset--font-size--x-small);
	line-height: 1.45;
	color: var(--wp--preset--color--ink-500);
	text-wrap: pretty;
}

.seete-logos__link {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
	text-decoration: none;
	color: inherit;
}

.seete-logos__link:hover .seete-logos__mark,
.seete-logos__link:focus-visible .seete-logos__mark {
	color: var(--wp--preset--color--brand-700);
}

.seete-logos__note {
	margin: var(--wp--preset--spacing--60) 0 0;
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--ink-500);
}

@media (max-width: 1023px) {
	.seete-logos__list {
		grid-template-columns: repeat(2, 1fr);
		gap: var(--wp--preset--spacing--60);
	}

	.seete-logos__item:nth-child(odd) {
		border-left: 0;
		padding-inline-start: 0;
	}
}

@media (max-width: 599px) {
	.seete-logos__list {
		grid-template-columns: 1fr;
	}

	.seete-logos__item {
		border-left: 0;
		padding-inline-start: 0;
		padding-block-end: var(--wp--preset--spacing--50);
		border-bottom: 1px solid var(--wp--preset--color--line-200);
	}

	.seete-logos__item:last-child {
		border-bottom: 0;
		padding-block-end: 0;
	}
}


/* --- Founder ---------------------------------------------------------------- */

.seete-founder__portrait {
	margin: 0;
	border-radius: var(--wp--custom--radius--md, 4px);
	overflow: hidden;
}

.seete-founder__portrait img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	/* The available portrait is 581×333 and low-res for this size. Favouring
	   the upper area keeps his face in frame when the crop bites. */
	object-position: 50% 30%;
}

.seete-founder__quote {
	margin: var(--wp--preset--spacing--50) 0 var(--wp--preset--spacing--60);
	padding: 0 0 0 var(--wp--preset--spacing--60);
	border-left: 3px solid var(--wp--preset--color--brand-700);
}

.seete-founder__quote p {
	margin: 0 0 var(--wp--preset--spacing--50);
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.5rem, 2.6vw, 2rem);
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -0.005em;
	color: var(--wp--preset--color--ink-900);
	hyphens: manual;
	text-wrap: balance;
	max-width: none;
}

.seete-founder__by {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
}

.seete-founder__name {
	font-weight: 600;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--ink-900);
}

.seete-founder__role {
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--ink-500);
}


/* --- Video ------------------------------------------------------------------ */

.seete-video {
	margin: 0;
}

.seete-video__player {
	display: block;
	width: 100%;
	height: auto;
	/* Matches the cropped source, so no letterboxing is reintroduced. */
	aspect-ratio: 1280 / 460;
	background: var(--wp--preset--color--ink-900);
	border-radius: var(--wp--custom--radius--md, 4px);
}

.seete-video__caption,
.seete-embed__credit {
	margin: var(--wp--preset--spacing--50) 0 0;
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--ink-500);
}


/* --- Click-to-load embed ----------------------------------------------------
   Nothing reaches the embed host until the visitor presses the button.
   --------------------------------------------------------------------------- */

.seete-embed {
	position: relative;
	aspect-ratio: 16 / 9;
	border-radius: var(--wp--custom--radius--md, 4px);
	overflow: hidden;
	background: var(--wp--preset--color--ink-900);
}

.seete-embed__poster {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.seete-embed__start {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	width: 100%;
	padding: var(--wp--preset--spacing--70);
	border: 0;
	background: rgb(26 22 20 / 0.55);
	color: var(--wp--preset--color--surface-000);
	font-family: inherit;
	cursor: pointer;
	text-align: center;
	transition: background-color 140ms ease;
}

.seete-embed__start:hover,
.seete-embed__start:focus-visible {
	background: rgb(58 12 19 / 0.72);
}

.seete-embed__icon svg {
	width: 3rem;
	height: 3rem;
}

.seete-embed__label {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--xx-large);
	font-weight: 600;
	line-height: 1.2;
}

/* The disclosure is part of the control, not fine print hidden elsewhere. */
.seete-embed__note {
	max-width: 34rem;
	font-size: var(--wp--preset--font-size--x-small);
	line-height: 1.5;
	opacity: 0.9;
}

.seete-embed__frame {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.seete-embed.is-loaded .seete-embed__start,
.seete-embed.is-loaded .seete-embed__poster {
	display: none;
}

@media (prefers-reduced-motion: reduce) {
	.seete-embed__start {
		transition: none;
	}
}


/* --- Spec tables ------------------------------------------------------------
   Container dimensions, kW, litres, m². Tabular figures so columns align.
   --------------------------------------------------------------------------- */

.seete-specs table {
	border-collapse: collapse;
	width: 100%;
}

.seete-specs :is(td, th) {
	border-bottom: 1px solid var(--wp--preset--color--line-200);
	padding: 0.75rem 1rem 0.75rem 0;
	text-align: left;
	vertical-align: top;
}

.seete-specs th {
	font-weight: 600;
	color: var(--wp--preset--color--ink-900);
	white-space: nowrap;
}

.seete-specs td {
	font-variant-numeric: tabular-nums;
	font-feature-settings: "tnum";
}

/* Tables must scroll inside their own container, never the page body. */
.seete-specs {
	overflow-x: auto;
}



/* --- Media ------------------------------------------------------------------ */

img,
video {
	max-width: 100%;
	height: auto;
}

/* Three permitted aspect ratios, replacing the nine currently in use. */
.seete-ratio-3-2 img { aspect-ratio: 3 / 2; object-fit: cover; width: 100%; }
.seete-ratio-16-9 img { aspect-ratio: 16 / 9; object-fit: cover; width: 100%; }
.seete-ratio-1-1 img { aspect-ratio: 1 / 1; object-fit: cover; width: 100%; }


/* --- Motion ----------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}


/* --- Print ------------------------------------------------------------------
   Procurement people print spec pages. Make that not embarrassing.
   --------------------------------------------------------------------------- */

@media print {
	.wp-block-navigation,
	.seete-utility-bar,
	.seete-skip-link,
	.wp-block-template-part[class*="footer"] {
		display: none;
	}

	a[href^="http"]::after {
		content: " (" attr(href) ")";
		font-size: 0.85em;
		word-break: break-all;
	}
}

/* --- Single-image gallery -----------------------------------------------------
   One photograph does not need carousel chrome. Matches the slide treatment so
   a one-image and a many-image case study still look like the same component.
   --------------------------------------------------------------------------- */

.seete-gallery__single {
	margin: 0;
}

.seete-gallery__single img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: var(--wp--custom--radius--md, 4px);
	background: var(--wp--preset--color--surface-050);
}

.seete-gallery__single figcaption {
	margin-top: var(--wp--preset--spacing--40);
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--ink-500);
}

/* --- Timeline -----------------------------------------------------------------
   A continuous rail with a marker per entry, rather than a stack of ruled rows.
   Same language as the process section on /kuechencontainer/: a line that runs
   through, and a burgundy mark where something happened. A chronology should
   look like one.

   The when-column carries a year where the source states one and a relative
   marker where it does not — "Kurz darauf", "Danach". Inventing 1998 from
   "kaum zwei Jahre später" would read more precise than the source actually is,
   so those entries are styled to sit back rather than pretend to be dates.
   --------------------------------------------------------------------------- */

.seete-timeline {
	--seete-rail: 7.5rem;

	margin: var(--wp--preset--spacing--80) 0 0;
	padding: 0;
	list-style: none;
}

.seete-timeline__item {
	position: relative;
	display: grid;
	grid-template-columns: var(--seete-rail) 1fr;
	column-gap: var(--wp--preset--spacing--80);
	padding-bottom: var(--wp--preset--spacing--90);
	max-width: none;
}

.seete-timeline__item:last-child {
	padding-bottom: 0;
}

/* The rail. Runs from this entry's marker to the next one, so it stops at the
   last entry instead of trailing into whitespace. */
.seete-timeline__item::before {
	content: "";
	position: absolute;
	top: 0.75rem;
	bottom: 0;
	left: calc(var(--seete-rail) + var(--wp--preset--spacing--80) / 2);
	width: 1px;
	background: var(--wp--preset--color--line-200);
}

.seete-timeline__item:last-child::before {
	display: none;
}

/* The marker sits on the rail. Square rather than round — it matches the module
   boxes in the enquiry modal and the bars in the process row.

   Filled where the source gives a year, hollow where it does not. The
   distinction is real information: 1996 and 2004 are dates Seete states, the
   rest is sequence. */
.seete-timeline__item::after {
	content: "";
	position: absolute;
	top: 0.5rem;
	left: calc(var(--seete-rail) + var(--wp--preset--spacing--80) / 2 - 4.5px);
	width: 10px;
	height: 10px;
	background: var(--wp--preset--color--surface-000);
	box-shadow: inset 0 0 0 2px var(--wp--preset--color--brand-700);
}

.seete-timeline__item.is-dated::after {
	background: var(--wp--preset--color--brand-700);
}

.seete-timeline__when {
	padding-top: 0.15rem;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--x-small);
	font-variant-numeric: tabular-nums;
	letter-spacing: 0.06em;
	line-height: 1.5;
	text-align: right;
	color: var(--wp--preset--color--ink-500);
}

.seete-timeline__item.is-dated .seete-timeline__when {
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--brand-700);
}

.seete-timeline__title {
	margin: 0 0 var(--wp--preset--spacing--40);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--xx-large);
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: -0.005em;
	color: var(--wp--preset--color--ink-900);
	hyphens: manual;
}

.seete-timeline__text {
	margin: 0;
	font-size: var(--wp--preset--font-size--medium);
	line-height: 1.65;
	color: var(--wp--preset--color--ink-700);
	max-width: 62ch;
}

@media (max-width: 767px) {
	.seete-timeline {
		--seete-rail: 0rem;
	}

	.seete-timeline__item {
		grid-template-columns: 1fr;
		row-gap: var(--wp--preset--spacing--30);
		padding-left: var(--wp--preset--spacing--70);
		padding-bottom: var(--wp--preset--spacing--80);
	}

	.seete-timeline__item::before {
		left: 4px;
		top: 1.1rem;
	}

	.seete-timeline__item::after {
		left: 0;
		top: 0.85rem;
	}

	.seete-timeline__when {
		text-align: left;
		padding-top: 0;
	}

	.seete-timeline__title {
		font-size: var(--wp--preset--font-size--x-large);
	}
}

.seete-founder__caption {
	margin-top: var(--wp--preset--spacing--40);
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--ink-500);
}

@media (max-width: 599px) {
	.seete-timeline__item {
		grid-template-columns: 1fr;
		gap: var(--wp--preset--spacing--30);
	}
	.seete-timeline__when {
		line-height: 1.4;
	}
}

/* ---------------------------------------------------------------------------
   Kundendienst — the service desk and the rate card
   ---------------------------------------------------------------------------
   Two ideas carry this page.

   The desk is a solid brand-900 panel holding the phone number, because the
   person reading this page usually has something broken and wants one thing:
   to reach somebody. Everything else on the page is quieter than it.

   The rate card is the page's real differentiator. Of the competitor service
   pages reviewed, none publishes an hourly rate, a surcharge or a per-kilometre
   cost. Seete's are public, so they are set as figures — mono, tabular,
   right-aligned against a hairline — and read as a price list rather than as
   prose apologising for itself.
   --------------------------------------------------------------------------- */

.seete-desk {
	background: var(--wp--preset--color--brand-900);
	color: var(--wp--preset--color--surface-000);
	padding: var(--wp--preset--spacing--80);
	max-width: none;
}

.seete-desk__label {
	margin: 0;
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: rgb(255 255 255 / 0.62);
}

/* The one big thing on the page. Condensed keeps a 16-character number on one
   line at this size even on a 360px screen. */
.seete-desk__tel {
	display: inline-block;
	margin-top: var(--wp--preset--spacing--40);
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.9rem, 1.2rem + 2.4vw, 2.75rem);
	line-height: 1.1;
	font-weight: 600;
	color: var(--wp--preset--color--surface-000);
	text-decoration: none;
	font-variant-numeric: tabular-nums;
}

.seete-desk__tel:hover .seete-desk__tel-num,
.seete-desk__tel:focus-visible .seete-desk__tel-num {
	text-decoration: underline;
	text-underline-offset: 0.14em;
}

.seete-desk__mail {
	margin: var(--wp--preset--spacing--30) 0 0;
	font-size: var(--wp--preset--font-size--small);
}

.seete-desk__mail a {
	color: rgb(255 255 255 / 0.8);
	text-underline-offset: 0.16em;
}

.seete-desk__mail a:hover,
.seete-desk__mail a:focus-visible {
	color: var(--wp--preset--color--surface-000);
}

/* Open/closed uses the filled-versus-hollow marker established by the timeline
   on /unternehmen/, not green-versus-red. A green would fight the burgundy, and
   the state is carried by the words anyway — so the mark never has to be read
   as colour to be understood. */
.seete-desk__status {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	margin: var(--wp--preset--spacing--60) 0 0;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.seete-desk__status::before {
	content: "";
	width: 9px;
	height: 9px;
	flex: none;
	background: var(--wp--preset--color--surface-000);
}

.seete-desk__status.is-closed {
	color: rgb(255 255 255 / 0.72);
	font-weight: 400;
}

.seete-desk__status.is-closed::before {
	background: transparent;
	box-shadow: inset 0 0 0 1.5px rgb(255 255 255 / 0.55);
}

.seete-desk__sub {
	margin: var(--wp--preset--spacing--60) 0 var(--wp--preset--spacing--30);
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: rgb(255 255 255 / 0.62);
}

.seete-desk__hours {
	margin: 0;
	border-top: 1px solid rgb(255 255 255 / 0.16);
}

.seete-desk__row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--wp--preset--spacing--40);
	padding: 0.7rem 0;
	border-bottom: 1px solid rgb(255 255 255 / 0.16);
	font-size: var(--wp--preset--font-size--small);
	color: rgb(255 255 255 / 0.78);
}

.seete-desk__row dt,
.seete-desk__row dd {
	margin: 0;
}

.seete-desk__row dd {
	font-family: var(--wp--preset--font-family--mono);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

/* Today's line, so the panel answers "and is that today?" without the reader
   counting weekdays. Set by service-status.js; absent on holidays. */
.seete-desk__row.is-today {
	color: var(--wp--preset--color--surface-000);
	font-weight: 600;
}

.seete-desk__note {
	margin: var(--wp--preset--spacing--50) 0 0;
	font-size: var(--wp--preset--font-size--x-small);
	line-height: 1.6;
	color: rgb(255 255 255 / 0.62);
}

/* --- the rate card ------------------------------------------------------- */

/* Two columns of roughly equal measure, never one wide one. A rate row only
   reads as a pair when the label and the figure are close enough to scan in one
   movement; across a 1200px page they read as two unrelated columns. */
/* No max-width here. This is a direct child of a constrained group, so the
   layout's own 1200px clamp and auto margins have to survive — overriding them
   lets the whole card escape the container and run edge-to-edge. Only children
   below the clamp opt out. */
.seete-rates {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: var(--wp--preset--spacing--90) var(--wp--preset--spacing--100);
	align-items: start;
}

/* Zuschläge and Servicefahrzeug stack inside the second column. */
.seete-rates__col {
	display: grid;
	gap: var(--wp--preset--spacing--90);
	min-width: 0;
}

.seete-rates__group {
	min-width: 0;
}

.seete-rates__head {
	margin: 0 0 var(--wp--preset--spacing--40);
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--brand-700);
}

.seete-rates__list {
	margin: 0;
	border-top: 1px solid var(--wp--preset--color--line-200);
}

.seete-rates__item {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--wp--preset--spacing--60);
	padding: var(--wp--preset--spacing--50) 0;
	border-bottom: 1px solid var(--wp--preset--color--line-200);
}

.seete-rates__list--tight {
	margin-top: var(--wp--preset--spacing--60);
}

.seete-rates__term {
	margin: 0;
	font-size: var(--wp--preset--font-size--medium);
	line-height: 1.4;
	color: var(--wp--preset--color--ink-700);
	max-width: 34ch;
	text-wrap: pretty;
}

.seete-rates__note {
	display: block;
	margin-top: 0.35rem;
	font-size: var(--wp--preset--font-size--x-small);
	line-height: 1.55;
	color: var(--wp--preset--color--ink-500);
}

.seete-rates__val {
	margin: 0;
	flex: none;
	text-align: right;
	white-space: nowrap;
}

.seete-rates__num {
	display: block;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 600;
	line-height: 1.15;
	font-variant-numeric: tabular-nums;
	color: var(--wp--preset--color--brand-700);
}

/* "Nach Aufwand" is a sentence, not a figure — setting it at the size of one
   makes it read as a price it is not. */
.seete-rates__val--text .seete-rates__num {
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 600;
	color: var(--wp--preset--color--ink-700);
}

.seete-rates__unit {
	display: block;
	margin-top: 0.2rem;
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--ink-500);
}

.seete-rates__zones {
	margin: 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--wp--preset--color--line-200);
}

.seete-rates__zone {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: baseline;
	gap: var(--wp--preset--spacing--40);
	padding: var(--wp--preset--spacing--50) 0;
	border-bottom: 1px solid var(--wp--preset--color--line-200);
	max-width: none;
}

.seete-rates__zone-name {
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-900);
}

.seete-rates__zone-range {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--ink-500);
	font-variant-numeric: tabular-nums;
}

.seete-rates__zone-val {
	text-align: right;
	white-space: nowrap;
}

.seete-rates__foot {
	grid-column: 1 / -1;
	margin: 0;
	padding-top: var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--x-small);
	line-height: 1.6;
	color: var(--wp--preset--color--ink-500);
	max-width: 68ch;
}

/* --- the two stated capabilities ----------------------------------------- */

.seete-capability {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: var(--wp--preset--spacing--70);
}

.seete-capability__item {
	max-width: none;
	padding-top: var(--wp--preset--spacing--50);
	border-top: 1px solid var(--wp--preset--color--line-200);
}

.seete-capability__icon {
	display: block;
	color: var(--wp--preset--color--brand-700);
}

.seete-capability__icon .seete-icon {
	width: 32px;
	height: 32px;
}

.seete-capability__title {
	margin: var(--wp--preset--spacing--40) 0 var(--wp--preset--spacing--20);
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.25;
}

.seete-capability__text {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.6;
	color: var(--wp--preset--color--ink-500);
	max-width: 46ch;
}

@media (max-width: 781px) {
	.seete-rates {
		grid-template-columns: 1fr;
		gap: var(--wp--preset--spacing--80);
	}

	.seete-rates__col {
		gap: var(--wp--preset--spacing--80);
	}

	.seete-desk {
		padding: var(--wp--preset--spacing--70);
	}
}

@media (max-width: 599px) {
	.seete-rates__item,
	.seete-rates__zone {
		grid-template-columns: 1fr;
		display: grid;
		gap: var(--wp--preset--spacing--20);
	}

	.seete-rates__val,
	.seete-rates__zone-val {
		text-align: left;
	}

	.seete-rates__num {
		display: inline;
	}

	.seete-rates__unit {
		display: inline;
		margin-left: 0.4rem;
	}
}

/* ---------------------------------------------------------------------------
   Kontakt — how to reach us, and where we are
   ---------------------------------------------------------------------------
   The form itself is styled in assets/css/enquiry-modal.css, where it shares
   field styling with the modal. What is here is the page furniture around it.
   --------------------------------------------------------------------------- */

.seete-reach {
	display: grid;
	gap: var(--wp--preset--spacing--60);
	border-top: 1px solid var(--wp--preset--color--line-200);
	padding-top: var(--wp--preset--spacing--60);
}

.seete-reach__label {
	margin: 0 0 var(--wp--preset--spacing--20);
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-500);
}

.seete-reach__value {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 600;
	line-height: 1.15;
	color: var(--wp--preset--color--brand-700);
	text-decoration: none;
	font-variant-numeric: tabular-nums;
}

/* An address is longer than a phone number and must not be forced onto one
   line at a size chosen for digits. */
.seete-reach__value--mail {
	font-size: var(--wp--preset--font-size--large);
	overflow-wrap: anywhere;
}

.seete-reach__value:hover,
.seete-reach__value:focus-visible {
	text-decoration: underline;
	text-underline-offset: 0.14em;
}

.seete-reach__hours {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--ink-700);
}

.seete-reach__hours > div {
	display: flex;
	gap: var(--wp--preset--spacing--40);
	padding: 0.2rem 0;
}

.seete-reach__hours dt {
	min-width: 3.5rem;
	font-family: var(--wp--preset--font-family--mono);
	color: var(--wp--preset--color--ink-500);
}

.seete-reach__hours dd {
	margin: 0;
	font-variant-numeric: tabular-nums;
}

.seete-address {
	margin: 0;
	font-style: normal;
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.55;
	color: var(--wp--preset--color--ink-700);
}

.seete-address__name {
	display: block;
	font-weight: 600;
	color: var(--wp--preset--color--ink-900);
}

.seete-address__route {
	margin: var(--wp--preset--spacing--50) 0 0;
	font-size: var(--wp--preset--font-size--small);
}

.seete-address__ext {
	margin-left: 0.2em;
	font-size: 0.85em;
}

/* ---------------------------------------------------------------------------
   Team
   ---------------------------------------------------------------------------
   Four people cover four functions with no overlap: ownership, planning,
   commercial, service. For a buyer weighing Seete against a large supplier
   that is the interesting fact, so the role is set above the name in the same
   label style the site uses for structural information, and the four read as a
   set of functions rather than as four portraits.

   Deliberately no hover lift, no card border, no social icons. There is nothing
   to click — the live page publishes no per-person contact details and this
   rebuild does not invent any — so anything that looks interactive would lie.
   --------------------------------------------------------------------------- */

.seete-team {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--wp--preset--spacing--80) var(--wp--preset--spacing--70);
	margin: 0;
	padding: 0;
	list-style: none;
}

.seete-team__member {
	max-width: none;
}

.seete-team__portrait {
	margin: 0 0 var(--wp--preset--spacing--50);
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--wp--preset--color--surface-100);
}

.seete-team__portrait img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	/* The three re-hosted portraits are only 320px wide. Framing on the upper
	   part of the picture keeps the face out of the crop when the card is
	   wider than the source is tall. */
	object-position: 50% 25%;
	display: block;
}

.seete-team__role {
	margin: 0 0 var(--wp--preset--spacing--20);
	padding-bottom: var(--wp--preset--spacing--30);
	border-bottom: 1px solid var(--wp--preset--color--line-200);
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	line-height: 1.45;
	color: var(--wp--preset--color--brand-700);
}

.seete-team__name {
	margin: var(--wp--preset--spacing--30) 0 0;
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.25;
	/* "Dipl.-Ing. Jörg Tschense" is the longest and must not hyphenate. */
	hyphens: manual;
}

.seete-team__bio {
	margin: var(--wp--preset--spacing--30) 0 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.6;
	color: var(--wp--preset--color--ink-500);
}

.seete-related--compact {
	margin-top: var(--wp--preset--spacing--70);
}

@media (max-width: 900px) {
	.seete-team {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 479px) {
	.seete-team {
		grid-template-columns: 1fr;
		gap: var(--wp--preset--spacing--70);
	}
}

/* ---------------------------------------------------------------------------
   Jobs
   ---------------------------------------------------------------------------
   The audience is a Großküchenmonteur, a Zimmermann, a Montagehelfer — reading
   this on a phone, probably on a break. So the vacancy is the unit: role, what
   the work actually is, and one obvious way to apply. No culture section, no
   benefits grid padded to six tiles when Seete names three things.

   The list is set as a stack of full-width entries rather than a card grid.
   Three vacancies in a three-column grid would leave the tasks in columns too
   narrow to read, and would go ragged the moment a fourth is added or one is
   filled — which for a vacancy list is a certainty, not a risk.
   --------------------------------------------------------------------------- */

.seete-jobs {
	margin: 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--wp--preset--color--line-200);
}

.seete-job {
	display: grid;
	grid-template-columns: minmax(0, 20rem) minmax(0, 1fr);
	gap: var(--wp--preset--spacing--60) var(--wp--preset--spacing--100);
	padding: var(--wp--preset--spacing--80) 0;
	border-bottom: 1px solid var(--wp--preset--color--line-200);
	max-width: none;
	/* Anchor targets: the schema gives each vacancy its own @id, so a link into
	   one should not land under the sticky header. */
	scroll-margin-top: 7rem;
}

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

.seete-job__icon {
	color: var(--wp--preset--color--brand-700);
}

.seete-job__icon .seete-icon {
	width: 34px;
	height: 34px;
}

.seete-job__title {
	margin: 0;
	font-size: var(--wp--preset--font-size--x-large);
	line-height: 1.25;
	/* "Großküchenmonteur" and "Großkücheneinrichtungen" are long enough to need
	   a break opportunity, but should break where German breaks them. */
	hyphens: auto;
}

.seete-job__body {
	min-width: 0;
}

.seete-job__label {
	margin: 0 0 var(--wp--preset--spacing--40);
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-500);
}

.seete-job__tasks {
	margin: 0;
}

.seete-job__tasks li {
	max-width: 68ch;
}

.seete-job__apply {
	margin: var(--wp--preset--spacing--60) 0 0;
}

.seete-job__link {
	display: inline-flex;
	align-items: baseline;
	gap: 0.5rem;
	font-weight: 600;
	text-decoration: none;
	color: var(--wp--preset--color--brand-700);
	border-bottom: 1px solid currentColor;
	padding-bottom: 0.1rem;
}

.seete-job__link:hover,
.seete-job__link:focus-visible {
	color: var(--wp--preset--color--brand-500);
}

/* Nudged, not animated. The chevron on the Küchencontainer page taught that a
   transition here reads as fidget rather than affordance. */
.seete-job__link:hover .seete-job__arrow {
	transform: translateX(2px);
}

.seete-job__arrow {
	display: inline-block;
}

.seete-jobs__empty {
	margin: 0;
	padding: var(--wp--preset--spacing--80) 0;
	border-top: 1px solid var(--wp--preset--color--line-200);
	border-bottom: 1px solid var(--wp--preset--color--line-200);
	font-size: var(--wp--preset--font-size--large);
	color: var(--wp--preset--color--ink-700);
}

/* --- how to apply -------------------------------------------------------- */

.seete-apply {
	border-top: 1px solid var(--wp--preset--color--line-200);
	padding-top: var(--wp--preset--spacing--60);
}

.seete-apply__label {
	margin: 0 0 var(--wp--preset--spacing--20);
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-500);
}

.seete-apply__mail {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 600;
	line-height: 1.15;
	color: var(--wp--preset--color--brand-700);
	text-decoration: none;
	overflow-wrap: anywhere;
}

.seete-apply__mail:hover,
.seete-apply__mail:focus-visible {
	text-decoration: underline;
	text-underline-offset: 0.14em;
}

.seete-apply__alt {
	margin: var(--wp--preset--spacing--50) 0 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.7;
	color: var(--wp--preset--color--ink-500);
}

@media (max-width: 781px) {
	.seete-job {
		grid-template-columns: 1fr;
		gap: var(--wp--preset--spacing--50);
	}

	.seete-job__head {
		flex-direction: row;
		align-items: center;
		gap: var(--wp--preset--spacing--40);
	}

	.seete-job__icon .seete-icon {
		width: 28px;
		height: 28px;
	}

	.seete-job__title {
		font-size: var(--wp--preset--font-size--large);
	}
}
