:root {
	--kl-color-ink: #172727;
	--kl-color-muted: #536564;
	--kl-color-canvas: #f7faf9;
	--kl-color-paper: #ffffff;
	--kl-color-surface: #edf5f4;
	--kl-color-surface-strong: #d9ece9;
	--kl-color-primary: #0c4f54;
	--kl-color-primary-deep: #073a3e;
	--kl-color-interactive: #117782;
	--kl-color-secondary: #4faea6;
	--kl-color-spectral: #c8783a;
	--kl-color-border: #bfd0ce;
	--kl-color-focus: var(--kl-color-interactive);
	--kl-color-focus-on-dark: #ffd166;

	--kl-page-width: 80rem;
	--kl-content-width: 48rem;
	--kl-readable-width: 66ch;
	--kl-gutter: clamp(1.15rem, 4vw, 2.5rem);

	--kl-space-1: 0.35rem;
	--kl-space-2: 0.65rem;
	--kl-space-3: 1rem;
	--kl-space-4: 1.5rem;
	--kl-space-5: 2.25rem;
	--kl-space-6: 3.25rem;
	--kl-space-7: clamp(4rem, 8vw, 7rem);

	--kl-text-xs: 0.78rem;
	--kl-text-sm: 0.9rem;
	--kl-text-body: clamp(1rem, 0.97rem + 0.12vw, 1.08rem);
	--kl-text-lead: clamp(1.12rem, 1.02rem + 0.45vw, 1.35rem);
	--kl-heading-3: clamp(1.3rem, 1.08rem + 0.8vw, 1.8rem);
	--kl-heading-2: clamp(2rem, 1.48rem + 2vw, 3.25rem);
	--kl-heading-1: clamp(2.8rem, 1.9rem + 3.8vw, 5.75rem);
	--kl-page-title-weight: 650;
	--kl-page-title-tracking: -0.025em;
	--kl-page-title-leading: var(--kl-line-tight);
	--kl-line-tight: 1.06;
	--kl-line-heading: 1.16;
	--kl-line-body: 1.68;

	--kl-radius-sm: 0.35rem;
	--kl-radius-md: 0.8rem;
	--kl-radius-lg: 1.4rem;
	--kl-shadow-soft: 0 1rem 2.8rem rgba(7, 58, 62, 0.09);
	--kl-shadow-lift: 0 1.2rem 3.4rem rgba(7, 58, 62, 0.16);
	--kl-border: 1px solid var(--kl-color-border);

	--kl-motion-duration-fast: 150ms;
	--kl-motion-duration-standard: 360ms;
	--kl-motion-duration-slow: 720ms;
	--kl-motion-easing-standard: cubic-bezier(0.2, 0, 0, 1);
	--kl-motion-easing-emission: cubic-bezier(0.16, 1, 0.3, 1);
}

:where(.kl-home, .kl-news-overview, .kl-news-single, .kl-person-single, .kl-structured-page, .kl-harmonized-page, .kl-editorial-page) :focus-visible {
	outline: 3px solid var(--kl-color-focus);
	outline-offset: 4px;
}

:where(.kl-hero, .kl-identity) :focus-visible {
	outline-color: var(--kl-color-focus-on-dark);
}

:where(.kl-news-overview, .kl-news-single, .kl-person-single, .kl-structured-page, .kl-harmonized-page, .kl-editorial-page) :where(p, address, nav, aside) a:not(.kl-button) {
	color: var(--kl-color-interactive);
	text-decoration-thickness: 0.08em;
	text-underline-offset: 0.18em;
}

:where(.kl-news-overview, .kl-news-single, .kl-person-single, .kl-structured-page, .kl-harmonized-page, .kl-editorial-page) :where(p, address, nav, aside) a:not(.kl-button):hover {
	color: var(--kl-color-primary-deep);
}

/* Astra owns the accessible menu markup and mobile expansion controls. This
 * layer only makes the native one-level dropdown fit the KahmannLab system. */
.main-header-menu a:focus-visible,
.ast-menu-toggle:focus-visible {
	outline: 3px solid var(--kl-color-focus);
	outline-offset: 3px;
}

.main-header-menu > .menu-item > .menu-link:hover,
.main-header-menu > .menu-item > .menu-link:focus-visible,
.main-header-menu > .current-menu-item > .menu-link,
.main-header-menu > .current-menu-ancestor > .menu-link {
	color: var(--kl-color-interactive);
}

.skip-link {
	color: var(--kl-color-interactive);
}

.skip-link:focus {
	border-color: var(--kl-color-primary);
	background: var(--kl-color-canvas);
	color: var(--kl-color-interactive);
}

.ast-mobile-menu-trigger-minimal,
.ast-header-break-point .ast-button-wrap .menu-toggle {
	color: var(--kl-color-interactive);
}

.ast-mobile-menu-trigger-minimal:hover,
.ast-mobile-menu-trigger-minimal:focus-visible,
.ast-header-break-point .ast-button-wrap .menu-toggle:hover,
.ast-header-break-point .ast-button-wrap .menu-toggle:focus-visible {
	color: var(--kl-color-primary-deep);
}

/* Keep Astra's useful desktop control, but bring it into the shared interface
 * palette and remove it completely from the mobile interaction order. */
#ast-scroll-top.ast-scroll-top-icon {
	border: 1px solid rgba(255, 255, 255, 0.35);
	background: var(--kl-color-interactive);
	box-shadow: 0 0.35rem 1rem rgba(7, 58, 62, 0.16);
	color: #fff;
	transition: background var(--kl-motion-duration-fast), box-shadow var(--kl-motion-duration-fast);
}

#ast-scroll-top.ast-scroll-top-icon:hover,
#ast-scroll-top.ast-scroll-top-icon:focus-visible {
	background: var(--kl-color-primary-deep);
	box-shadow: 0 0.45rem 1.2rem rgba(7, 58, 62, 0.2);
	color: #fff;
}

/* The existing footer artwork remains unchanged. Its scale, spacing and
 * surrounding surface now belong to the same restrained teal system. */
.site-footer {
	border-top: 1px solid var(--kl-color-border);
	background: var(--kl-color-canvas);
	color: var(--kl-color-muted);
}

.site-footer .site-primary-footer-wrap {
	padding-block: clamp(1.5rem, 4vw, 2.75rem);
	background: linear-gradient(115deg, var(--kl-color-canvas), var(--kl-color-surface));
}

.site-footer .site-primary-footer-inner-wrap {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: clamp(1.5rem, 4vw, 3rem);
	align-items: center;
	width: min(calc(100% - (2 * var(--kl-gutter))), var(--kl-page-width));
	max-width: var(--kl-page-width);
	margin-inline: auto;
}

.site-footer .site-footer-primary-section-1 {
	display: none;
}

.site-footer .site-footer-primary-section-2 {
	min-width: 0;
	justify-self: start;
}

.site-footer .site-footer-primary-section-3 {
	min-width: 0;
	justify-self: end;
}

.site-footer .footer-widget-area,
.site-footer .widget,
.site-footer .wp-block-image,
.site-footer .ast-footer-copyright {
	margin: 0;
}

.site-footer .wp-block-image img {
	display: block;
	width: min(20rem, 42vw);
	max-width: 100%;
	height: auto;
	box-shadow: 0 0.45rem 1.4rem rgba(7, 58, 62, 0.08);
}

.site-footer .ast-footer-copyright p:not(:last-child) {
	display: none;
}

.site-footer .ast-footer-copyright p:last-child {
	margin: 0;
	color: var(--kl-color-muted);
	font-size: var(--kl-text-sm);
	line-height: 1.5;
	text-align: right !important;
}

@media (min-width: 922px) {
	.ast-desktop .main-header-menu > .menu-item-has-children > .sub-menu {
		min-width: 15.5rem;
		padding: 0.45rem;
		margin-top: -0.15rem;
		border: 1px solid var(--kl-color-border);
		border-radius: var(--kl-radius-sm);
		background: rgba(247, 250, 249, 0.99);
		box-shadow: var(--kl-shadow-soft);
		transition: opacity var(--kl-motion-duration-fast), visibility var(--kl-motion-duration-fast);
	}

	.ast-desktop .main-header-menu .menu-item-has-children:hover > .sub-menu,
	.ast-desktop .main-header-menu .menu-item-has-children:focus-within > .sub-menu {
		left: 0;
		right: auto;
		visibility: visible;
		opacity: 1;
		transform: none;
	}

	.ast-desktop .main-header-menu .sub-menu .menu-link {
		padding: 0.68rem 0.85rem;
		border-radius: calc(var(--kl-radius-sm) * 0.75);
		color: var(--kl-color-ink);
		line-height: 1.35;
	}

	.ast-desktop .main-header-menu .sub-menu .menu-link:hover,
	.ast-desktop .main-header-menu .sub-menu .menu-link:focus-visible,
	.ast-desktop .main-header-menu .sub-menu .current-menu-item > .menu-link {
		background: var(--kl-color-surface);
		color: var(--kl-color-interactive);
	}
}

@media (max-width: 920px) {
	.ast-header-break-point .main-header-menu,
	.ast-header-break-point .main-header-menu .sub-menu {
		max-width: 100%;
		overflow-x: clip;
	}

	.ast-header-break-point .main-header-menu .sub-menu {
		width: 100%;
		min-width: 0;
		padding: 0.25rem 0 0.55rem 1rem;
		margin: 0;
		border-left: 2px solid var(--kl-color-surface-strong);
		background: var(--kl-color-canvas);
		box-shadow: none;
	}

	.ast-header-break-point .main-header-menu .sub-menu .menu-link {
		padding-block: 0.65rem;
		color: var(--kl-color-ink);
	}

	.ast-header-break-point .main-header-menu .ast-menu-toggle {
		color: var(--kl-color-interactive);
	}

	.site-footer .ast-builder-grid-row-container-inner {
		width: 100%;
		max-width: 100%;
		min-width: 0;
	}

	.site-footer .site-primary-footer-inner-wrap {
		grid-template-columns: 1fr;
		justify-items: center;
		text-align: center;
	}

	.site-footer .site-footer-primary-section-2,
	.site-footer .site-footer-primary-section-3 {
		justify-self: center;
	}

	.site-footer .wp-block-image img {
		width: min(14rem, 62vw);
		max-width: 100%;
		height: auto;
	}

	.site-footer .ast-footer-copyright p:last-child {
		text-align: center !important;
	}
}

@media (max-width: 767px) {
	#ast-scroll-top.ast-scroll-top-icon {
		display: none !important;
		visibility: hidden !important;
		pointer-events: none !important;
	}
}
