/*
Theme Name: Sanori
Theme URI: https://sanori.ch
Description: Custom child theme for Sanori Physiotherapie Appenzell.
Author: Peter Hadorn / WebEvolve
Author URI: https://webevolve.ch
Template: twentytwentyfive
Version: 1.26.0
License: GNU General Public License v2 or later
Text Domain: sanori
*/

:root {
	--sanori-shadow-soft: 0 24px 48px rgba(22, 58, 84, 0.08);
	--sanori-shadow-strong: 0 40px 80px rgba(22, 58, 84, 0.14);
	--sanori-radius-card: 1rem;
	--sanori-radius-panel: 1.25rem;
	--sanori-gradient-soft: radial-gradient(circle at top left, rgba(90, 138, 114, 0.16), transparent 42%), linear-gradient(135deg, #fffdf9 0%, #f5f0e8 100%);
	--sanori-border: rgba(22, 58, 84, 0.08);
	--sanori-border-mid: rgba(22, 58, 84, 0.12);
	--sanori-border-strong: rgba(22, 58, 84, 0.14);
	--sanori-border-hover: rgba(22, 58, 84, 0.24);
	--sanori-text-muted: rgba(26, 26, 26, 0.78);
	--sanori-text-soft: rgba(26, 26, 26, 0.82);
	--sanori-bg-white: #ffffff;
	--sanori-bg-overlay: rgba(255, 255, 255, 0.88);
	--sanori-error: #8b2e2e;
	--sanori-gold: #FBBE5E;
	--sanori-gold-text: #B8860B;
	--sanori-gold-soft: rgba(251, 190, 94, 0.15);
	--sanori-gold-border: rgba(251, 190, 94, 0.35);
	--sanori-navy-deep: #002A3E;
	--sanori-teal-dark: #2e7881;

	/* Swiss v2 — ink-on-paper discipline */
	--sanori-ink: #1A1A1A;                 /* off-black body */
	--sanori-ink-soft: rgba(26, 26, 26, 0.72);
	--sanori-rule: rgba(0, 60, 88, 0.10);  /* hairline */

	/* Macro-whitespace scale */
	--sanori-space-3xl: 8rem;              /* 128px */
	--sanori-space-4xl: 12rem;             /* 192px */

	/* Spacing tokens (D3 — see plans/2026-05-04-sanori-spacing-discipline-plan.md) */
	--sanori-gutter-desktop: 1.5rem;       /* 24px — page outer gutter, desktop & tablet */
	--sanori-gutter-mobile: 1rem;          /* 16px — page outer gutter, ≤640px */
	--sanori-page-max: 1400px;             /* page-shell cap */
	--sanori-page-max-narrow: 1180px;      /* homepage section cap */
	--sanori-section-rhythm-desktop: 8rem; /* 128px — Swiss publication rhythm */
	--sanori-section-rhythm-tablet: 6rem;  /* 96px */
	--sanori-section-rhythm-mobile: 4rem;  /* 64px */
	--sanori-panel-pad-desktop: 2.5rem;    /* 40px — .sanori-page-hero / .sanori-final-cta */
	--sanori-panel-pad-tablet: 2rem;       /* 32px */
	--sanori-panel-pad-mobile: 1.5rem;     /* 24px (override stays at 1rem for hero) */
	--sanori-card-pad-desktop: 2rem;       /* 32px */
	--sanori-card-pad-tablet: 1.75rem;     /* 28px */
	--sanori-card-pad-mobile: 1.25rem;     /* 20px */
	--sanori-h2-mt-desktop: 4.5rem;        /* 72px */
	--sanori-h2-mt-tablet: 3.5rem;
	--sanori-h2-mt-mobile: 2.5rem;
	--sanori-h2-mb-desktop: 1.25rem;
	--sanori-h2-mb-tablet: 1rem;
	--sanori-h2-mb-mobile: 0.75rem;
	--sanori-h3-mt-desktop: 3rem;          /* 48px */
	--sanori-h3-mt-tablet: 2.5rem;
	--sanori-h3-mt-mobile: 2rem;
	--sanori-h3-mb-desktop: 0.75rem;
	--sanori-h3-mb-tablet: 0.75rem;
	--sanori-h3-mb-mobile: 0.5rem;
	--sanori-paragraph-rhythm: 1.25rem;
	--sanori-paragraph-rhythm-mobile: 1rem;
	--sanori-list-rhythm: 0.5rem;
	--sanori-actions-mt-desktop: 1.5rem;
	--sanori-actions-mt-tablet: 1.25rem;
	--sanori-actions-mt-mobile: 1rem;
}

.sanori-homepage,
.sanori-homepage *,
.sanori-page-shell,
.sanori-page-shell * {
	box-sizing: border-box;
}

@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
}

body {
	text-wrap: pretty;
}

.wp-site-blocks {
	min-height: auto;
}

/* ── Buttons — hover & focus states ── */

.wp-element-button {
	transition: background-color 200ms ease, transform 200ms ease, box-shadow 200ms ease, color 200ms ease;
}

/* Darken teal buttons for WCAG AA contrast with white text (5.1:1) */
.wp-element-button.has-accent-1-background-color {
	background-color: var(--sanori-teal-dark) !important;
}

/* Unified CTA hover — gold fill + navy text + soft gold glow, identical for every button. */
.wp-element-button:hover,
.is-style-outline .wp-element-button:hover {
	background-color: var(--sanori-gold) !important;
	color: var(--wp--preset--color--contrast) !important;
	border-color: var(--sanori-gold) !important;
	text-decoration: none !important;
	transform: translateY(-2px) !important;
	box-shadow: 0 6px 24px rgba(251, 190, 94, 0.40), 0 0 40px rgba(251, 190, 94, 0.18) !important;
}

.wp-element-button:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 2px;
}

.wp-element-button:active {
	transform: translateY(1px);
	box-shadow: 0 2px 6px rgba(0, 60, 88, 0.12);
}

/* Outline buttons — paper bg, navy text, navy border. Same shape + padding as filled. */
.is-style-outline .wp-element-button {
	border-width: 2px !important;
	transition: background-color 200ms ease, color 200ms ease, transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease;
}

/* Outline hover handled by the unified rule at the top of this file. */

.is-style-outline .wp-element-button:active {
	transform: translateY(1px);
	box-shadow: 0 2px 6px rgba(58, 150, 162, 0.1);
}

/* ── Global element resets ── */

.wp-block-site-title a,
.wp-block-button__link {
	text-decoration: none;
}

/* ── Logo ── */

.sanori-logo-link {
	display: block;
	flex-shrink: 0;
	text-decoration: none;
}

.sanori-logo {
	display: block;
	width: auto;
	height: 4.5rem;
}

.sanori-logo--footer {
	height: 4rem;
	transition: transform 0.3s ease-out;
}

/* ── Header ── */

.sanori-site-header {
	position: sticky;
	top: 0;
	z-index: 20;
	padding-top: 0.5rem;
	padding-bottom: 0.5rem;
	background: var(--wp--preset--color--base);
}

.sanori-site-header .wp-block-site-title {
	letter-spacing: 0.01em;
}

.sanori-site-header .wp-block-buttons {
	gap: 0.75rem;
}

/* ── Navigation ── */

.sanori-nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	align-items: center;
	gap: 0.25rem 1rem;
	margin: 0;
}

.sanori-nav-links a {
	position: relative;
	padding: 0.6rem 0.5rem;
	color: var(--wp--preset--color--contrast) !important;
	text-decoration: none;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.sanori-nav-links a:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 2px;
}

/* Constrain header + footer inner width to match page-shell */
.sanori-site-header > .alignwide,
.sanori-site-footer > .alignwide {
	max-width: var(--sanori-page-max) !important;
}

/* CTA button in header — no underline, extra left spacing */
.sanori-site-header .wp-block-buttons {
	margin-left: 0.75rem;
}

/* Header CTA — kill underline / decoration leak from nav-link rules; bg + hover come from unified button rules. */
.sanori-site-header .wp-block-buttons a[class],
.sanori-site-header .wp-block-buttons a[class]:link,
.sanori-site-header .wp-block-buttons a[class]:visited {
	text-decoration: none !important;
	text-decoration-line: none !important;
	text-decoration-color: transparent !important;
	text-decoration-thickness: 0 !important;
	text-underline-offset: 0 !important;
	border-bottom: none !important;
	box-shadow: none !important;
	background-image: none !important;
	-webkit-text-decoration: none !important;
}

/* Header CTA text — white in non-hover state (beats .sanori-nav-links a color rule). */
.sanori-site-header .wp-block-buttons a.wp-element-button,
.sanori-site-header .wp-block-buttons a.wp-element-button:link,
.sanori-site-header .wp-block-buttons a.wp-element-button:visited {
	color: var(--wp--preset--color--base) !important;
}

/* Header CTA hover handled by the unified .wp-element-button:hover rule. */

.sanori-nav-links a:not(.wp-block-button__link)::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 0;
	width: 0;
	height: 2px;
	background: var(--wp--preset--color--accent-1);
	transition: width 0.3s ease-out;
}

.sanori-nav-links a:not(.wp-block-button__link):hover::after,
.sanori-nav-links a:not(.wp-block-button__link):focus-visible::after {
	width: 100%;
}

.sanori-nav-links a:not(.wp-block-button__link).is-active {
	color: var(--wp--preset--color--accent-1);
}

.sanori-nav-links a:not(.wp-block-button__link).is-active::after {
	width: 100%;
	background: var(--wp--preset--color--accent-1);
}

/* ── Footer ── */

.sanori-site-footer {
	background-color: var(--wp--preset--color--base) !important;
	color: var(--wp--preset--color--contrast) !important;
	border-top: 1px solid var(--sanori-gold);
}

.sanori-site-footer p,
.sanori-site-footer h3,
.sanori-site-footer .has-base-color.has-text-color {
	color: var(--wp--preset--color--contrast) !important;
}

.sanori-site-footer a {
	color: inherit;
}

.sanori-site-footer .wp-block-columns {
	gap: 2.5rem;
}

.sanori-site-footer h3 {
	margin-bottom: 0.75rem;
	color: var(--wp--preset--color--accent-1);
}

/* ── Shared UI ── */

.sanori-eyebrow {
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.sanori-hero .sanori-eyebrow {
	color: var(--wp--preset--color--accent-1);
	text-align: left;
}

.sanori-hero .wp-block-buttons {
	justify-content: flex-start;
}

.sanori-hero .is-layout-constrained > * {
	margin-left: 0 !important;
}

.sanori-philosophy-band .sanori-eyebrow {
	color: var(--sanori-gold);
}

.sanori-homepage__label {
	display: inline-block;
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent-1);
}

.sanori-surface-card {
	border: 1px solid var(--sanori-border);
	border-radius: var(--sanori-radius-card);
	box-shadow: var(--sanori-shadow-soft);
}

/* ── WP block layout overrides for homepage ── */

.sanori-home-section--services > .wp-block-heading,
.sanori-home-section--services > p,
.sanori-home-section--services > .sanori-eyebrow {
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* ── Homepage shell ── */

.sanori-homepage {
	display: grid;
	justify-items: center;
	gap: clamp(2.5rem, 5vw, 5rem);
	width: 100%;
	max-width: none !important;
	padding-top: clamp(1.25rem, 2vw, 2rem);
	padding-bottom: clamp(4rem, 7vw, 7rem);
	overflow: hidden;
}

.sanori-homepage > section {
	box-sizing: border-box;
	max-width: var(--sanori-page-max-narrow);
	width: 100%;
	margin-inline: auto;
}

/* ── Hero ── */

.sanori-hero {
	display: flex;
	gap: clamp(1.5rem, 4vw, 3rem);
	padding: clamp(1.5rem, 3vw, 2.5rem) 0;
}

.sanori-hero__intro {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	gap: 0.75rem;
	flex: 1 1 0;
	min-width: 0;
	text-align: left;
	/* override WP .has-global-padding so text is symmetric with the photo column */
	padding-left: 0 !important;
	padding-right: 0 !important;
}

.sanori-hero h1 {
	margin: 0 0 var(--sanori-h2-mb-desktop);
	max-width: 22ch;
	font-size: clamp(1.9rem, 2.8vw, 3rem) !important;
	line-height: 1.1 !important;
	letter-spacing: -0.03em;
	color: var(--wp--preset--color--contrast);
}

.sanori-hero__lead {
	max-width: 39rem;
	margin: 0;
	font-size: clamp(1.08rem, 1.35vw, 1.28rem);
	line-height: 1.618;
	color: var(--sanori-ink);
}

.sanori-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
	margin-top: 0.5rem;
}

.sanori-secondary-link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-weight: 700;
	text-decoration: none;
	color: var(--wp--preset--color--contrast);
	transition: color 180ms ease;
}

.sanori-secondary-link:hover {
	color: var(--wp--preset--color--accent-1);
}

/* Hero outline button — navy border + navy text on light bg */
.sanori-hero .is-style-outline .wp-element-button {
	background-color: transparent !important;
	color: var(--wp--preset--color--contrast) !important;
	border-color: var(--wp--preset--color--contrast) !important;
}

.sanori-secondary-link::after {
	content: "\2192";
	transition: transform 180ms ease;
}

.sanori-secondary-link:hover::after {
	transform: translateX(3px);
}

.sanori-hero__aside {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 1rem;
	flex: 1 1 0;
	min-width: 18rem;
}

.sanori-hero__photo {
	overflow: hidden;
	border-radius: var(--sanori-radius-card);
}

.sanori-hero__photo .wp-block-image,
.sanori-philosophy-band__photo .wp-block-image,
.sanori-course-photo .wp-block-image {
	margin: 0;
}

.sanori-hero__photo img {
	display: block;
	width: 100% !important;
	height: auto !important;
	object-fit: contain;
	border-radius: var(--sanori-radius-card);
}

/* ── Homepage post-content styling ── */

.sanori-homepage .wp-block-post-content {
	max-width: 56rem !important;
}

/* Reset WP block gap and establish consistent rhythm */
.sanori-homepage .wp-block-post-content > * {
	margin-top: 1rem !important;
	margin-bottom: 0 !important;
}

.sanori-homepage .wp-block-post-content > *:first-child {
	margin-top: 0 !important;
}

/* Service cards: 2x2 grid with links */
.sanori-services-columns {
	gap: 1.25rem !important;
	margin-bottom: 0 !important;
}

.sanori-service-link {
	padding: var(--sanori-card-pad-desktop) !important;
	background: var(--sanori-bg-white);
	border-radius: var(--sanori-radius-card);
	border: 1px solid var(--sanori-border);
	height: 100%;
	display: flex !important;
	flex-direction: column;
	position: relative;
	cursor: pointer;
	box-shadow: 0 2px 8px rgba(22, 58, 84, 0.06);
	transition: border-color 200ms ease, box-shadow 200ms ease, transform 200ms ease;
}

/* Make entire card clickable via the h3 link */
.sanori-service-link h3 a::after {
	content: "";
	position: absolute;
	inset: 0;
}

.sanori-service-arrow {
	margin-top: auto !important;
	padding-top: 1rem;
}

.sanori-service-link:hover {
	border-color: var(--wp--preset--color--accent-1);
	box-shadow: 0 8px 24px rgba(0, 60, 88, 0.12);
	transform: translateY(-2px);
}

.sanori-service-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 2px;
}

.sanori-service-icon {
	margin-bottom: 0.75rem !important;
	text-align: center;
}

.sanori-service-icon img {
	width: 112px !important;
	height: 112px !important;
	object-fit: contain;
	margin: 0 auto;
	transition: transform 0.3s ease-out;
}

.sanori-service-link h3 {
	font-size: clamp(1.05rem, 1.4vw, 1.2rem) !important;
	margin-bottom: 0.5rem;
	min-height: 2.4em;
}

.sanori-service-link h3 a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.sanori-service-link p {
	color: var(--sanori-text-soft);
	font-size: 0.92rem;
	min-height: 3.6em;
}

.sanori-service-arrow a {
	color: var(--sanori-teal-dark);
	text-decoration: none;
	font-weight: 600;
	font-size: 1rem;
	transition: color 180ms ease;
}

.sanori-service-link:hover .sanori-service-arrow a {
	color: var(--sanori-gold);
	transform: translateX(6px);
	display: inline-block;
}

.sanori-service-arrow a {
	display: inline-block;
	transition: color 200ms ease, transform 200ms ease;
}

.sanori-service-link .is-layout-constrained > * {
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* Section breaks — generous space above h2s */
.sanori-homepage .wp-block-post-content > h2 {
	margin-top: 3.5rem !important;
	padding-top: 2rem;
	border-top: 1px solid var(--sanori-border);
}

.sanori-homepage .wp-block-post-content > h2:first-child {
	margin-top: 0 !important;
	border-top: none;
	padding-top: 0;
}

/* Tighter spacing for service columns after h2 */
.sanori-homepage .wp-block-post-content > .sanori-services-columns {
	margin-top: 1.25rem !important;
}

/* Photo spacing */
.sanori-homepage .wp-block-post-content > .sanori-home-photo {
	margin-top: 2.5rem !important;
}

.sanori-homepage .wp-block-post-content > .sanori-home-photo + h2 {
	border-top: none;
	margin-top: 1.5rem !important;
	padding-top: 0;
}

/* Practice photos tighter to heading */
.sanori-homepage .wp-block-post-content > .sanori-praxis-photos {
	margin-top: 1.25rem !important;
}

/* Photos */
.sanori-homepage .sanori-home-photo {
	margin-top: 3rem;
	margin-bottom: 0;
	overflow: hidden;
	border-radius: var(--sanori-radius-panel);
	max-width: none !important;
}

/* (moved to section spacing block above) */

.sanori-homepage .sanori-home-photo img {
	display: block;
	width: min(100%, 28rem) !important;
	aspect-ratio: 1;
	margin: 0 auto;
	object-fit: cover;
	object-position: center 10%;
	border-radius: var(--sanori-radius-panel);
}

/* Portrait photo — show face */
.sanori-homepage .wp-block-post-content > .sanori-home-photo:nth-of-type(2) img {
	object-position: center 15%;
}

/* Philosophy list — gold bullets */
.sanori-homepage .wp-block-post-content > ul {
	list-style: none;
	padding-left: 0;
}

.sanori-homepage .wp-block-post-content > ul > li {
	position: relative;
	padding-left: 1.25rem;
	margin-bottom: 0.75rem;
}

.sanori-homepage .wp-block-post-content > ul > li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.6em;
	width: 8px;
	height: 8px;
	background: var(--sanori-gold);
	border-radius: 50%;
}

/* Practice photos */
.sanori-praxis-photos {
	gap: 1rem !important;
}

.sanori-praxis-photo {
	overflow: hidden;
	border-radius: var(--sanori-radius-card);
}

.sanori-praxis-photo img {
	display: block;
	width: 100% !important;
	height: auto;
	border-radius: var(--sanori-radius-card);
}

/* Alternating section background */
.sanori-homepage .sanori-section-alt {
	background: linear-gradient(135deg, #f5f0e8 0%, #faf6ef 100%);
	margin-left: calc(-50vw + 50%) !important;
	margin-right: calc(-50vw + 50%) !important;
	padding: 3rem calc(50vw - 50%) 3.5rem !important;
	max-width: none !important;
}

.sanori-homepage .sanori-section-alt > h2:first-child {
	margin-top: 0 !important;
	border-top: none;
	padding-top: 0;
}

.sanori-homepage .sanori-section-alt + h2 {
	border-top: none;
}

/* Section-alt inner content inherits homepage styles */

.sanori-homepage .sanori-section-alt > ul {
	list-style: none;
	padding-left: 0;
}

.sanori-homepage .sanori-section-alt > ul > li {
	position: relative;
	padding-left: 1.25rem;
	margin-bottom: 0.75rem;
}

.sanori-homepage .sanori-section-alt > ul > li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.6em;
	width: 8px;
	height: 8px;
	background: var(--sanori-gold);
	border-radius: 50%;
}

/* Inline portrait photo inside merged section */
.sanori-portrait-inline {
	max-width: 26rem;
	margin: 2rem auto;
	overflow: hidden;
	border-radius: var(--sanori-radius-panel);
}

@media (max-width: 640px) {
	.sanori-portrait-inline {
		max-width: 18rem;
	}
}

.sanori-portrait-inline img {
	display: block;
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	object-position: center 15%;
	border-radius: var(--sanori-radius-panel);
}

/* Praxis photos — 2-col grid, natural aspect ratio, clickable */
.sanori-praxis-photos {
	gap: 1rem !important;
}

.sanori-praxis-photo {
	overflow: hidden;
	border-radius: var(--sanori-radius-card);
	cursor: zoom-in;
}

.sanori-praxis-photo img {
	display: block;
	width: 100% !important;
	height: auto;
	border-radius: var(--sanori-radius-card);
	transition: transform 300ms ease;
}

.sanori-praxis-photo:hover img {
	transform: scale(1.03);
}

/* Lightbox overlay */
.sanori-lightbox {
	position: fixed;
	inset: 0;
	z-index: 9999;
	background: rgba(0, 0, 0, 0.85);
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: zoom-out;
	opacity: 0;
	transition: opacity 250ms ease;
}

.sanori-lightbox.is-open {
	opacity: 1;
}

.sanori-lightbox img {
	max-width: 90vw;
	max-height: 90vh;
	object-fit: contain;
	border-radius: 0.5rem;
}

/* Praxis photos stacked — tighter spacing */
.sanori-homepage .wp-block-post-content > .sanori-home-photo + .sanori-home-photo {
	margin-top: 1rem !important;
}

/* CTA section — last h2 "Termin anfragen" — Swiss v2: navy bg + breathing room. */
.sanori-homepage .wp-block-post-content > h2:last-of-type {
	position: relative;
	margin-top: var(--sanori-section-rhythm-desktop);
	padding: clamp(3rem, 6vw, 5rem) clamp(2rem, 4vw, 3rem) 0;
	border-top: none;
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	border-radius: var(--sanori-radius-panel) var(--sanori-radius-panel) 0 0;
}

/* Hairline transition mark above the navy strip on the paper side. */
.sanori-homepage .wp-block-post-content > h2:last-of-type::before {
	content: '';
	position: absolute;
	top: calc(var(--sanori-section-rhythm-desktop) * -0.5);
	left: 12%;
	right: 12%;
	height: 1px;
	background: var(--sanori-rule);
}

.sanori-homepage .wp-block-post-content > h2:last-of-type ~ p {
	margin-top: 0 !important;
	padding: 0.75rem clamp(2rem, 4vw, 3rem) 0;
	background: var(--wp--preset--color--contrast);
	color: rgba(253, 249, 244, 0.82);
}

.sanori-homepage .wp-block-post-content > h2:last-of-type ~ ul {
	margin-top: 0 !important;
	padding: 1rem clamp(2rem, 4vw, 3rem) clamp(3rem, 6vw, 5rem);
	background: var(--wp--preset--color--contrast);
	border-radius: 0 0 var(--sanori-radius-panel) var(--sanori-radius-panel);
	list-style: none;
}

@media (max-width: 960px) {
	.sanori-homepage .wp-block-post-content > h2:last-of-type::before {
		top: calc(var(--sanori-section-rhythm-tablet) * -0.5);
	}
	.sanori-homepage .wp-block-post-content > h2:last-of-type {
		margin-top: var(--sanori-section-rhythm-tablet);
	}
}

@media (max-width: 640px) {
	.sanori-homepage .wp-block-post-content > h2:last-of-type::before {
		top: calc(var(--sanori-section-rhythm-mobile) * -0.5);
		left: 8%;
		right: 8%;
	}
	.sanori-homepage .wp-block-post-content > h2:last-of-type {
		margin-top: var(--sanori-section-rhythm-mobile);
	}
}

.sanori-homepage .wp-block-post-content > h2:last-of-type ~ ul li {
	padding-left: 0;
	padding-bottom: 0.5rem;
	margin-bottom: 0;
	color: rgba(253, 249, 244, 0.88);
	font-size: 1.05rem;
}

.sanori-homepage .wp-block-post-content > h2:last-of-type ~ ul li::before {
	display: none;
}

.sanori-homepage .wp-block-post-content > h2:last-of-type ~ ul a {
	color: var(--wp--preset--color--accent-3);
	text-decoration-color: rgba(193, 221, 226, 0.4);
}

.sanori-services-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 0.35fr);
	gap: clamp(1.5rem, 3vw, 2.5rem);
	align-items: start;
}

.sanori-services-photo {
	overflow: hidden;
	border-radius: var(--sanori-radius-card);
	position: sticky;
	top: 2rem;
}

.sanori-services-photo img {
	display: block;
	width: 100%;
	height: auto;
	object-fit: cover;
}

.sanori-home-section__intro h2 {
	margin-bottom: 0.75rem;
	padding-bottom: 0.75rem;
	font-size: clamp(1.8rem, 2.5vw, 2.5rem);
	line-height: 1.05;
	letter-spacing: -0.03em;
}

.sanori-home-section__intro p {
	color: var(--sanori-text-soft);
}

/* ── Service rows ── */

.sanori-service-list {
	display: grid;
}

.sanori-service-row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 1.25rem;
	align-items: start;
	padding: 1.35rem 0;
	border-bottom: 1px solid rgba(0, 60, 88, 0.10);
	text-decoration: none;
	color: inherit;
	transition: transform 180ms ease, border-color 180ms ease;
}

.sanori-service-row:first-child {
	border-top: 1px solid rgba(0, 60, 88, 0.10);
}

.sanori-service-row:last-child {
	border-bottom: 1px solid rgba(0, 60, 88, 0.10);
}

.sanori-service-row:hover,
.sanori-service-row:focus-visible {
	transform: none;
	border-color: var(--sanori-border-hover);
	background: var(--sanori-gold-soft);
}

.sanori-service-row:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 2px;
}

.sanori-service-row:hover .sanori-service-row__meta {
	color: var(--sanori-gold);
}

.sanori-service-row__index {
	display: none;
	font-size: 0.82rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent-1);
}

.sanori-service-row__body {
	display: block;
}

.sanori-service-row__title {
	display: block;
	margin: 0 0 0.35rem;
	font-family: var(--wp--preset--font-family--lora);
	font-size: clamp(1.15rem, 1.5vw, 1.4rem);
	font-weight: 700;
	line-height: 1.15;
	color: var(--wp--preset--color--contrast);
}

.sanori-service-row__desc {
	display: block;
	margin: 0;
	color: var(--sanori-text-muted);
}

.sanori-service-row__meta {
	font-weight: 700;
	white-space: nowrap;
	color: var(--sanori-text-muted);
}

.sanori-service-row__arrow {
	font-size: 1.4rem;
	color: var(--wp--preset--color--accent-1);
	transition: transform 180ms ease, color 180ms ease;
	align-self: center;
}

.sanori-service-row:hover .sanori-service-row__arrow {
	transform: translateX(4px);
	color: var(--sanori-gold);
}

/* ── Philosophy band (replaces dark expertise band) ── */

.sanori-philosophy-band {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
	padding: clamp(1.8rem, 4vw, 3rem);
	border-radius: var(--sanori-radius-panel);
	background: linear-gradient(165deg, var(--wp--preset--color--contrast) 0%, var(--wp--preset--color--contrast-2) 100%);
	color: rgba(253, 249, 244, 0.88);
}

.sanori-philosophy-band__photo {
	overflow: hidden;
	border-radius: var(--sanori-radius-card);
	aspect-ratio: 1;
	max-width: 16rem;
}

.sanori-philosophy-band__photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: top center;
}

.sanori-philosophy-band h2 {
	max-width: 22ch;
	color: var(--wp--preset--color--base);
	font-size: clamp(1.6rem, 2.2vw, 2rem) !important;
	margin-bottom: var(--sanori-h2-mb-desktop);
}

.sanori-philosophy-band p {
	color: rgba(253, 249, 244, 0.82);
}

.sanori-philosophy-band__details {
	display: grid;
	gap: 1rem;
	margin-top: 0.5rem;
	border-top: 2px solid rgba(251, 190, 94, 0.35);
	padding-top: 1rem;
}

.sanori-philosophy-band__details dt {
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--sanori-gold);
}

.sanori-philosophy-band__details dd {
	margin: 0.25rem 0 0;
	color: rgba(253, 249, 244, 0.78);
}

/* ── Course section with photo ── */

.sanori-course-section {
	grid-template-columns: minmax(0, 0.38fr) minmax(0, 0.62fr);
	align-items: start;
}

.sanori-course-section .sanori-eyebrow {
	color: var(--sanori-gold-text);
}

.sanori-course-section__visual {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
}

.sanori-course-photo {
	overflow: hidden;
	border-radius: var(--sanori-radius-card);
	border-top: 1px solid var(--sanori-rule);
}

.sanori-course-photo img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 20rem;
	object-fit: cover;
	object-position: center;
}

.sanori-course-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1rem;
}

/* Gesundheitsfragebogen download button inside the Kurse course sections */
.sanori-questionnaire-cta {
	margin-top: 1.25rem;
}

.sanori-questionnaire-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
	gap: 1.2rem;
}

.sanori-course-card {
	display: grid;
	gap: 0.75rem;
	padding: 1.25rem 1.5rem;
	background: transparent;
	border-radius: var(--sanori-radius-card);
	border: 1px solid var(--sanori-border);
	color: inherit;
	text-decoration: none;
	transition: transform 180ms ease, box-shadow 180ms ease;
}

.sanori-questionnaire-card {
	display: grid;
	gap: 0.75rem;
	padding: 1.4rem;
	background: rgba(255, 255, 255, 0.96);
	border: 1px solid var(--sanori-rule);
	color: inherit;
	text-decoration: none;
	transition: transform 180ms ease, box-shadow 180ms ease;
}

a.sanori-course-card:hover,
a.sanori-course-card:focus-visible {
	transform: translateY(-3px);
	box-shadow: var(--sanori-shadow-strong);
}

.sanori-course-card h3 {
	margin: 0;
	font-size: clamp(1.1rem, 1.4vw, 1.3rem);
}

.sanori-questionnaire-card h3 {
	margin: 0;
	font-size: clamp(1.3rem, 2vw, 1.55rem);
}

.sanori-course-card__title {
	display: block;
	margin: 0;
	font-family: var(--wp--preset--font-family--lora);
	font-size: clamp(1.3rem, 2vw, 1.55rem);
	font-weight: 700;
	line-height: 1.15;
	color: var(--wp--preset--color--contrast);
}

.sanori-course-card__desc {
	display: block;
	color: var(--sanori-text-muted);
}

.sanori-course-card__meta {
	margin: 0;
	font-weight: 700;
	font-size: 0.85rem;
	color: var(--wp--preset--color--accent-1);
}

.sanori-course-card--action {
	align-content: end;
	background: transparent;
}

/* ── Final CTA ── */

.sanori-final-cta {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: 1.5rem;
	padding: clamp(3rem, 7vw, 6rem) clamp(1.8rem, 4vw, 3.5rem);
	border-radius: var(--sanori-radius-panel);
	background: var(--wp--preset--color--contrast);
	color: rgba(253, 249, 244, 0.88);
}

/* Hairline transition above the final CTA — paper-side separator. */
.sanori-final-cta::before {
	content: '';
	position: absolute;
	top: calc(var(--sanori-section-rhythm-desktop) * -0.5);
	left: 12%;
	right: 12%;
	height: 1px;
	background: var(--sanori-rule);
}

@media (max-width: 960px) {
	.sanori-final-cta::before {
		top: calc(var(--sanori-section-rhythm-tablet) * -0.5);
	}
}

@media (max-width: 640px) {
	.sanori-final-cta::before {
		top: calc(var(--sanori-section-rhythm-mobile) * -0.5);
		left: 8%;
		right: 8%;
	}
}

.sanori-final-cta h2 {
	color: var(--wp--preset--color--base);
	margin-bottom: var(--sanori-h2-mb-desktop);
}

.sanori-final-cta .sanori-eyebrow {
	color: var(--wp--preset--color--accent-3);
}

.sanori-final-cta .wp-element-button {
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
}

/* Final-CTA button hover handled by the unified .wp-element-button:hover rule at the top of this file. */

.sanori-final-cta .sanori-secondary-link {
	color: rgba(253, 249, 244, 0.9);
}

.sanori-final-cta .sanori-secondary-link:hover {
	color: var(--wp--preset--color--accent-3);
}

/* ── Inline panel ── */

.sanori-page-cta {
	border-radius: var(--sanori-radius-panel);
}

.sanori-page-cta p {
	color: rgba(253, 249, 244, 0.82);
}

.sanori-page-cta .is-style-outline .wp-element-button {
	color: var(--wp--preset--color--base) !important;
	border-color: rgba(253, 249, 244, 0.4) !important;
}

/* Page-CTA button hovers handled by the unified .wp-element-button:hover rule at the top of this file. */

.sanori-inline-panel {
	border-radius: 1.5rem;
}

/* ── Service page layout ── */

.sanori-page-shell {
	display: grid;
	gap: var(--sanori-section-rhythm-desktop);
	width: 100%;
	max-width: var(--sanori-page-max);
	margin: 0 auto;
}

@media (max-width: 960px) {
	.sanori-page-shell {
		gap: var(--sanori-section-rhythm-tablet);
	}
}

@media (max-width: 640px) {
	.sanori-page-shell {
		gap: var(--sanori-section-rhythm-mobile);
	}
}

/* Section rhythm — give top-level sections inside post-content the section-rhythm gap. */
.wp-block-post-content > .wp-block-group:not(:first-child),
.wp-block-post-content > .wp-block-columns + .wp-block-group,
.wp-block-post-content > .alignfull + *,
.wp-block-post-content > .sanori-section-alt,
.wp-block-post-content > .sanori-page-hero ~ .sanori-section-alt,
.wp-block-post-content > .sanori-page-cta,
.wp-block-post-content > .sanori-final-cta,
.wp-block-post-content > .sanori-photo-strip,
.wp-block-post-content > .sanori-philosophy-band {
	margin-top: var(--sanori-section-rhythm-desktop) !important;
}

@media (max-width: 960px) {
	.wp-block-post-content > .wp-block-group:not(:first-child),
	.wp-block-post-content > .wp-block-columns + .wp-block-group,
	.wp-block-post-content > .alignfull + *,
	.wp-block-post-content > .sanori-section-alt,
	.wp-block-post-content > .sanori-page-cta,
	.wp-block-post-content > .sanori-final-cta,
	.wp-block-post-content > .sanori-photo-strip,
	.wp-block-post-content > .sanori-philosophy-band {
		margin-top: var(--sanori-section-rhythm-tablet) !important;
	}
}

@media (max-width: 640px) {
	.wp-block-post-content > .wp-block-group:not(:first-child),
	.wp-block-post-content > .wp-block-columns + .wp-block-group,
	.wp-block-post-content > .alignfull + *,
	.wp-block-post-content > .sanori-section-alt,
	.wp-block-post-content > .sanori-page-cta,
	.wp-block-post-content > .sanori-final-cta,
	.wp-block-post-content > .sanori-photo-strip,
	.wp-block-post-content > .sanori-philosophy-band {
		margin-top: var(--sanori-section-rhythm-mobile) !important;
	}
}

/* Force page shell wide — override WP constrained layout */
.sanori-page-shell.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
	max-width: 100% !important;
	width: 100% !important;
}

.sanori-page-shell.is-layout-constrained > .alignwide {
	max-width: 100% !important;
	width: 100% !important;
}

.sanori-page-hero {
	padding: clamp(1.5rem, 4vw, 2.5rem);
	border: 1px solid var(--sanori-border);
	border-radius: var(--sanori-radius-panel);
	background: var(--sanori-gradient-soft);
	box-shadow: var(--sanori-shadow-soft);
	max-width: none !important;
	width: 100% !important;
}

/* Content page icons — centered at top of content */
.sanori-content-icon {
	margin: 1.5rem auto 0.5rem !important;
	text-align: center;
}

.sanori-content-icon img {
	width: 160px !important;
	height: 160px !important;
	object-fit: contain;
	margin: 0 auto;
}

.sanori-page-hero .wp-block-post-title,
.sanori-page-hero > h1,
.sanori-page-hero h1.wp-block-heading {
	margin-top: 0.2rem;
	margin-bottom: var(--sanori-h2-mb-desktop);
	font-size: clamp(2rem, 2.8vw, 3rem) !important;
	line-height: 0.98 !important;
	letter-spacing: -0.04em;
	text-wrap: balance;
}

.sanori-page-hero__lead {
	max-width: 40rem;
	margin: 0;
	font-size: clamp(1.02rem, 1.2vw, 1.16rem);
}

.sanori-page-hero__actions {
	margin-top: 1.5rem;
}

.sanori-page-hero__card {
	padding: 1.5rem;
	background: rgba(255, 255, 255, 0.82);
	backdrop-filter: blur(10px);
}

.sanori-page-hero__list {
	margin: 0;
	padding-left: 1.15rem;
}

.sanori-page-hero__list li + li {
	margin-top: 0.75rem;
}

.sanori-page-columns {
	align-items: start;
}

.sanori-content-panel {
	background: linear-gradient(180deg, var(--sanori-bg-white), rgba(245, 240, 232, 0.82));
}

.sanori-content-panel .wp-block-post-content,
.sanori-content-panel .wp-block-post-content > * {
	max-width: none;
}

.sanori-sticky-column {
	position: sticky;
	top: 5rem;
	max-height: calc(100vh - 6rem);
}

/* ── Map, form, booking ── */

.sanori-map-card,
.sanori-booking-embed {
	overflow: hidden;
	border-radius: var(--sanori-radius-card);
	background: transparent;
}

/* When the booking embed is combined with surface-card, suppress the card chrome —
   the iframe sits inside the page panel, no nested-card frame. */
.sanori-booking-embed.sanori-surface-card {
	border: none;
	box-shadow: none;
	background: transparent;
}

.sanori-map-card iframe {
	display: block;
	width: 100%;
	min-height: 28rem;
	border: 0;
}

.sanori-form-message {
	margin: 1rem 0 1.25rem;
	padding: 0.95rem 1rem;
	border-radius: 0.75rem;
	font-weight: 700;
}

.sanori-form-message--success {
	background: rgba(193, 217, 206, 0.45);
	color: var(--wp--preset--color--contrast);
}

.sanori-form-message--error {
	background: rgba(180, 69, 69, 0.12);
	color: var(--sanori-error);
}

/* ── Modern contact form ── */

.sanori-contact-form {
	display: flex;
	flex-direction: column;
	gap: 0.85rem;
	padding: 1.5rem;
	background: var(--sanori-bg-white);
	border-radius: var(--sanori-radius-panel);
	border: 1px solid var(--sanori-border);
	box-shadow: var(--sanori-shadow-soft);
	width: 80%;
	margin: 0 auto;
}

.sanori-contact-form__lead {
	color: var(--sanori-ink);
	margin: 0;
}

.sanori-contact-form > br,
.sanori-contact-form > p:empty,
.sanori-contact-form > p:not([class]) {
	display: none;
}

.sanori-contact-form__title {
	font-size: 1.35rem;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	margin: 0 0 0.25rem;
}

.sanori-form-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0.85rem;
}

/* Floating label */
.sanori-floating-label {
	position: relative;
}

.sanori-floating-label input,
.sanori-floating-label textarea {
	width: 100%;
	padding: 1.5rem 1rem 0.5rem;
	min-height: 3.25rem;
	font-size: 1rem;
	font-family: inherit;
	color: var(--wp--preset--color--contrast);
	background: var(--wp--preset--color--base);
	border: 1.5px solid var(--sanori-border-mid);
	border-radius: 0.75rem;
	outline: none;
	transition: border-color 200ms ease, box-shadow 200ms ease;
}

.sanori-floating-label label {
	position: absolute;
	left: 1rem;
	top: 50%;
	transform: translateY(-50%);
	font-size: 1rem;
	color: var(--sanori-text-soft);
	pointer-events: none;
	transition: all 200ms ease;
}

.sanori-floating-label textarea + label,
.sanori-floating-label textarea ~ label {
	top: 0.85rem;
	transform: none;
}

/* Float up when focused or has value */
.sanori-floating-label input:focus + label,
.sanori-floating-label input:not(:placeholder-shown) + label {
	top: 0.5rem;
	transform: none;
	font-size: 0.75rem;
	color: var(--wp--preset--color--accent-1);
}

.sanori-floating-label textarea:focus + label,
.sanori-floating-label textarea:not(:placeholder-shown) + label,
.sanori-floating-label textarea:focus ~ label,
.sanori-floating-label textarea:not(:placeholder-shown) ~ label {
	top: 0.35rem;
	font-size: 0.75rem;
	color: var(--wp--preset--color--accent-1);
}

/* Focus ring */
.sanori-floating-label input:focus,
.sanori-floating-label textarea:focus {
	border-color: var(--wp--preset--color--accent-1);
	box-shadow: 0 0 0 3px rgba(58, 150, 162, 0.12);
}

/* Checkbox field for topic selection */
.sanori-checkbox-field {
	border: 1.5px solid var(--sanori-border-mid);
	border-radius: 0.75rem;
	padding: 0.75rem 1rem;
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.25rem 1.25rem;
}

.sanori-checkbox-field br,
.sanori-checkbox-field > p {
	display: contents;
}

.sanori-checkbox-field__label {
	width: 100%;
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--wp--preset--color--contrast);
	padding: 0 0.25rem;
}

.sanori-checkbox-option {
	display: flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.15rem 0;
	cursor: pointer;
	font-size: 0.92rem;
	color: var(--wp--preset--color--contrast);
}

.sanori-checkbox-option input[type="checkbox"] {
	width: 1.1rem;
	height: 1.1rem;
	accent-color: var(--wp--preset--color--accent-1);
	cursor: pointer;
	flex-shrink: 0;
}

.sanori-checkbox-option span {
	font-weight: 500;
}

/* Submit button */
.sanori-submit-btn {
	width: 100%;
	padding: 1rem !important;
	font-size: 1.05rem !important;
	font-weight: 600;
	background-color: var(--wp--preset--color--accent-1) !important;
	color: var(--wp--preset--color--base) !important;
	border: none;
	border-radius: 0.75rem !important;
	cursor: pointer;
	transition: background-color 200ms ease, color 200ms ease, transform 200ms ease, box-shadow 200ms ease;
}

.sanori-submit-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 2px;
}

/* Hover handled by the unified .wp-element-button:hover rule (gold fill + navy text + glow). */

.sanori-submit-btn:active {
	transform: scale(0.98);
}

/* Validation errors */
.sanori-floating-label small[role="alert"] {
	display: block;
	margin-top: 0.35rem;
	font-size: 0.8rem;
	font-weight: 600;
	color: var(--sanori-error);
}

.sanori-booking-embed__frame {
	display: block;
	width: 100%;
	min-height: 600px;
	border: 0;
	overflow: hidden;
	background: var(--wp--preset--color--base);
}

/* ── Service photos ── */

.sanori-service-photo {
	overflow: hidden;
	border-radius: var(--sanori-radius-card);
}

.sanori-service-photo img {
	display: block;
	width: 100% !important;
	height: auto !important;
	max-height: 32rem;
	object-fit: cover;
	aspect-ratio: 4 / 5;
	object-position: center 20%;
}

.sanori-page-hero--about .sanori-service-photo img {
	aspect-ratio: 3 / 4;
	object-position: top center;
}

/* ── Post content ── */

.wp-block-post-content {
	max-width: 90% !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

.wp-block-post-content.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
	max-width: none !important;
}

/* D2 heading rhythm — ratio ≥3 for h2, ≥4 for h3.
   Scope: post-content body (service pages = .sanori-content-panel,
   long-form text = .wp-block-post-content). Excludes hero/cta/band components. */
.sanori-content-panel h2,
.wp-block-post-content > h2 {
	margin-top: var(--sanori-h2-mt-desktop);
	margin-bottom: var(--sanori-h2-mb-desktop);
}

.sanori-content-panel h3,
.wp-block-post-content > h3 {
	margin-top: var(--sanori-h3-mt-desktop);
	margin-bottom: var(--sanori-h3-mb-desktop);
}

/* First heading inside a panel should not have huge top space */
.sanori-content-panel > h2:first-child,
.sanori-content-panel > h3:first-child,
.sanori-content-panel > .wp-block-column h2:first-child,
.sanori-content-panel > .wp-block-column h3:first-child,
.sanori-content-panel > .wp-block-columns > .wp-block-column > h2:first-child,
.sanori-content-panel > .wp-block-columns > .wp-block-column > h3:first-child {
	margin-top: 0;
}

@media (max-width: 960px) {
	.sanori-content-panel h2,
	.wp-block-post-content > h2 {
		margin-top: var(--sanori-h2-mt-tablet);
		margin-bottom: var(--sanori-h2-mb-tablet);
	}
	.sanori-content-panel h3,
	.wp-block-post-content > h3 {
		margin-top: var(--sanori-h3-mt-tablet);
		margin-bottom: var(--sanori-h3-mb-tablet);
	}
}

@media (max-width: 640px) {
	.sanori-content-panel h2,
	.wp-block-post-content > h2 {
		margin-top: var(--sanori-h2-mt-mobile);
		margin-bottom: var(--sanori-h2-mb-mobile);
	}
	.sanori-content-panel h3,
	.wp-block-post-content > h3 {
		margin-top: var(--sanori-h3-mt-mobile);
		margin-bottom: var(--sanori-h3-mb-mobile);
	}
}

/* Enforce type scale: H1 > H2 > H3 > H4 */
h1, .wp-block-heading:where(h1) {
	font-size: clamp(2rem, 2.8vw, 3rem) !important;
}

h2, .wp-block-heading:where(h2) {
	font-size: clamp(1.5rem, 2.2vw, 1.9rem) !important;
}

h3, .wp-block-heading:where(h3) {
	font-size: clamp(1.2rem, 1.6vw, 1.45rem) !important;
}

h4, .wp-block-heading:where(h4) {
	font-size: clamp(1.05rem, 1.3vw, 1.15rem) !important;
	letter-spacing: 0.01em;
}

.wp-block-post-content ul {
	padding-left: 1.15rem;
}

.wp-block-post-content li + li {
	margin-top: 0.55rem;
}

.wp-block-post-content a {
	word-break: break-word;
}

/* ── Mobile hamburger menu ── */

.sanori-menu-toggle {
	display: none;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: none;
	border-radius: 0.5rem;
	background: transparent;
	color: var(--wp--preset--color--contrast);
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
}

.sanori-menu-toggle svg {
	width: 1.25rem;
	height: 1.25rem;
	stroke: currentColor;
	stroke-width: 2;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.sanori-menu-toggle:hover,
.sanori-menu-toggle:focus-visible {
	background: var(--sanori-border);
}

.sanori-menu-toggle .sanori-menu-close {
	display: none;
}

.sanori-site-header.menu-open .sanori-menu-toggle .sanori-menu-open {
	display: none;
}

.sanori-site-header.menu-open .sanori-menu-toggle .sanori-menu-close {
	display: block;
}

/* ── Responsive: tablet ── */

@media (max-width: 768px) {
	.sanori-contact-form {
		width: 100%;
	}

	.sanori-menu-toggle {
		display: flex;
		order: 2;
	}

	.sanori-site-header .alignwide > .wp-block-group:last-child {
		flex-wrap: nowrap !important;
		align-items: center;
		gap: 0.5rem;
	}

	.sanori-nav-links {
		display: none !important;
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		flex-direction: column;
		gap: 0;
		margin: 0;
		padding: 1rem 0 0.5rem;
		background: rgba(253, 249, 244, 0.98);
		backdrop-filter: blur(14px);
		box-shadow: 0 8px 24px var(--sanori-border);
		border-bottom: 1px solid var(--sanori-border);
		z-index: 100;
	}

	.sanori-nav-links a {
		display: block;
		padding: 0.85rem var(--wp--preset--spacing--40, 1.5rem) !important;
		font-size: 1rem;
	}

	.sanori-nav-links a:hover {
		background: var(--sanori-border);
	}

	.sanori-site-header.menu-open .sanori-nav-links {
		display: flex !important;
	}

	/* Anchor the mobile dropdown to the actual outer header bottom (sticky already gives `position: sticky`,
	   which is a containing-block for the nav's `position: absolute; top: 100%`). */
	.sanori-site-header > .wp-block-group {
		position: static;
	}

	/* Bug #1 + #4: CTA hidden by default, visible inside nav dropdown */
	.sanori-site-header .wp-block-buttons {
		display: none !important;
	}

	.sanori-site-header.menu-open .sanori-nav-links .wp-block-buttons {
		display: flex !important;
		padding: 0.75rem var(--wp--preset--spacing--40, 1.5rem);
	}

	.sanori-site-header.menu-open .sanori-nav-links .wp-block-button {
		width: 100%;
	}

	.sanori-site-header.menu-open .sanori-nav-links .wp-block-button__link {
		width: 100%;
		text-align: center;
	}

	/* Bug #3 + #8: Force page columns to single column on mobile */
	.sanori-page-columns {
		flex-direction: column !important;
	}

	.sanori-page-columns > .wp-block-column {
		flex-basis: 100% !important;
		width: 100% !important;
	}

	.sanori-sticky-column {
		position: static;
		max-height: none;
	}
}

@media (max-width: 960px) {
	.sanori-hero {
		flex-direction: column;
		gap: clamp(1.5rem, 3vw, 2.5rem);
		padding: clamp(1.5rem, 3vw, 2.5rem);
	}

	.sanori-service-link {
		padding: var(--sanori-card-pad-tablet) !important;
	}

	.sanori-hero__aside {
		min-width: 0;
		width: 100%;
	}

	.sanori-hero__photo,
	.sanori-hero__photo .wp-block-image {
		width: 100%;
		margin: 0;
	}

	.sanori-hero__photo img {
		width: 100% !important;
		display: block;
	}

	.sanori-home-section--services,
	.sanori-course-section,
	.sanori-final-cta {
		grid-template-columns: 1fr;
	}

	.sanori-philosophy-band {
		grid-template-columns: 1fr;
	}

	.sanori-philosophy-band__photo img {
		max-height: 24rem;
	}

	.sanori-card-grid,
	.sanori-course-grid,
	.sanori-questionnaire-grid {
		grid-template-columns: 1fr;
	}

	.sanori-form-row {
		grid-template-columns: 1fr;
	}

	.sanori-service-row {
		grid-template-columns: minmax(0, 1fr);
	}

	.sanori-service-row__meta {
		grid-column: 1;
	}

	.sanori-nav-links {
		justify-content: flex-start;
	}

	.sanori-page-hero__columns,
	.sanori-page-columns {
		flex-direction: column !important;
		flex-wrap: nowrap !important;
	}

	.sanori-page-hero__columns > .wp-block-column,
	.sanori-page-columns > .wp-block-column {
		flex-basis: 100% !important;
		width: 100% !important;
	}

	.sanori-sticky-column {
		position: static;
		max-height: none;
	}
}

/* ── Responsive: small mobile ── */

@media (max-width: 640px) {
	body {
		--wp--style--root--padding-right: var(--sanori-gutter-mobile);
		--wp--style--root--padding-left: var(--sanori-gutter-mobile);
	}

	.sanori-page-shell {
		padding-left: var(--sanori-gutter-mobile) !important;
		padding-right: var(--sanori-gutter-mobile) !important;
	}

	.sanori-site-header,
	.sanori-site-footer {
		padding-left: var(--sanori-gutter-mobile) !important;
		padding-right: var(--sanori-gutter-mobile) !important;
	}

	.sanori-hero,
	.sanori-final-cta,
	.sanori-page-hero,
	.sanori-page-cta,
	.sanori-inline-panel,
	.sanori-section-alt {
		padding-left: 1.25rem !important;
		padding-right: 1.25rem !important;
	}

	.sanori-hero {
		padding: 2rem 1rem !important;
		gap: 1.25rem !important;
	}

	.sanori-content-panel {
		margin-left: 0 !important;
		margin-right: 0 !important;
	}

	.wp-block-post-content {
		max-width: 100% !important;
	}

	.sanori-booking-embed {
		border: none;
		border-radius: 0;
		box-shadow: none;
	}

	.sanori-content-panel {
		padding: 0.5rem !important;
		border-radius: 0.75rem;
	}

	.sanori-service-link {
		padding: var(--sanori-card-pad-mobile) !important;
	}

	.sanori-service-icon img {
		width: 80px !important;
		height: 80px !important;
	}

	.sanori-service-link h3 {
		min-height: auto;
	}

	.sanori-service-link p {
		min-height: auto;
	}

	.sanori-content-panel .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
	.sanori-content-panel .wp-block-post-content.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
	.sanori-content-panel.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
		max-width: none !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}

	.sanori-page-hero .sanori-page-hero__columns {
		gap: 0.75rem !important;
	}

	.sanori-page-hero .wp-block-column[style*="flex-basis:40%"],
	.sanori-page-hero .wp-block-column[style*="flex-basis:44%"] {
		display: none;
	}

	.sanori-philosophy-band {
		padding-left: var(--sanori-gutter-mobile);
		padding-right: var(--sanori-gutter-mobile);
	}

	/* Bug #6 + #7: Smaller headings on mobile to prevent ugly word breaks */
	.sanori-hero h1,
	.sanori-page-hero h1,
	.sanori-page-hero .wp-block-post-title {
		font-size: 1.5rem !important;
		word-break: normal;
		overflow-wrap: anywhere;
		hyphens: none;
	}

	.sanori-page-hero .wp-block-post-title,
	.sanori-page-hero h1.wp-block-heading {
		margin-bottom: var(--sanori-h2-mb-mobile);
	}

	.sanori-page-hero {
		padding: 1rem !important;
	}

	.sanori-page-hero .sanori-eyebrow {
		font-size: 0.7rem !important;
	}

	/* Bug #9: Map card needs more height on mobile */
	.sanori-map-card iframe {
		min-height: 16rem;
	}

	.sanori-site-header .wp-block-button__link {
		width: auto;
	}

	.sanori-map-card iframe {
		min-height: 22rem;
	}

	.sanori-hero h1 {
		max-width: none;
		font-size: 1.75rem !important;
	}

	.sanori-hero__lead {
		font-size: 0.95rem !important;
		line-height: 1.5 !important;
	}

	.sanori-actions,
	.sanori-page-hero__actions {
		align-items: stretch;
	}

	.sanori-actions .wp-element-button,
	.sanori-page-hero__actions .wp-element-button,
	.sanori-service-row__meta {
		width: 100%;
	}

	/* Homepage service cards mobile */
	.sanori-services-columns {
		flex-direction: column !important;
		gap: 1rem !important;
	}

	.sanori-service-link {
		padding: 1.15rem !important;
	}

	.sanori-homepage .sanori-home-photo img {
		height: 14rem;
	}

	.sanori-homepage .wp-block-post-content > h2:last-of-type {
		padding: 1.75rem 1.25rem 0;
	}

	.sanori-homepage .wp-block-post-content > h2:last-of-type ~ p {
		padding: 0.5rem 1.25rem 0;
	}

	.sanori-homepage .wp-block-post-content > h2:last-of-type ~ ul {
		padding: 0.5rem 1.25rem 1.75rem;
	}
}

/* ── Scroll-reveal animations ── */
@keyframes sanori-reveal {
	from {
		opacity: 0;
		transform: translateY(1.5rem);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.sanori-reveal {
	opacity: 0;
}

.sanori-reveal.is-visible {
	animation: sanori-reveal 0.5s ease-out forwards;
}

/* Stagger service cards */
.sanori-services-columns .sanori-service-link.sanori-reveal.is-visible:nth-child(1) { animation-delay: 0s; }
.sanori-services-columns .sanori-service-link.sanori-reveal.is-visible:nth-child(2) { animation-delay: 0.1s; }

/* ── Icon hover animation ── */
.sanori-service-link:hover .sanori-service-icon img {
	transform: rotate(3deg) scale(1.05);
	transition: transform 0.3s ease-out;
}

/* Section heading accent bar removed in Swiss v2 — hierarchy carried by type alone. */

/* Footer headings — must read as headings, not subtler than the link list below. */
.sanori-site-footer h3,
.sanori-site-footer h3.has-body-font-size {
	font-size: var(--wp--preset--font-size--heading-3) !important;
	letter-spacing: 0.02em;
	margin-bottom: 1rem !important;
}

/* ── Footer link hover ── */
.sanori-site-footer a {
	transition: color 200ms ease;
}

.sanori-site-footer a:hover {
	color: var(--wp--preset--color--accent-1) !important;
}

/* ── Footer logo hover ── */
.sanori-logo-link--footer:hover .sanori-logo--footer {
	transform: scale(1.05);
}

@media (prefers-reduced-motion: reduce) {
	.sanori-reveal.is-visible {
		animation: none;
		opacity: 1;
	}

	.sanori-service-link:hover .sanori-service-icon img,
	.sanori-logo--footer,
	.sanori-nav-links a::after {
		transition: none !important;
	}

	.overview-btn--filled {
		animation: none;
	}
}

/* ─────────────────────────────────────────────────────────────
   Swiss v2 — ink-on-paper, arrow-in-circle CTA, ambient, grain
   ───────────────────────────────────────────────────────────── */

/* Body ink: off-black on warm paper. Headlines stay navy via element styles. */
body {
	color: var(--sanori-ink);
}

/* Arrow-in-circle pattern — every CTA on the site, identical padding everywhere. */
.wp-element-button {
	display: inline-flex !important;
	align-items: center;
	gap: 0.65rem;
	position: relative;
	border-radius: 9999px !important;
	padding-top: 0.85rem !important;
	padding-bottom: 0.85rem !important;
	padding-left: 1.5rem !important;
	padding-right: 0.6rem !important;
	transition: background-color 240ms cubic-bezier(0.32, 0.72, 0, 1),
	            color 240ms cubic-bezier(0.32, 0.72, 0, 1),
	            transform 240ms cubic-bezier(0.32, 0.72, 0, 1),
	            box-shadow 240ms cubic-bezier(0.32, 0.72, 0, 1),
	            border-color 240ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}

.wp-element-button::after {
	content: '';
	flex: 0 0 auto;
	width: 2rem;
	height: 2rem;
	border-radius: 50%;
	background-color: rgba(255, 255, 255, 0.16);
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='5' y1='12' x2='19' y2='12'/><polyline points='13 6 19 12 13 18'/></svg>");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 0.95rem 0.95rem;
	transition: transform 400ms cubic-bezier(0.32, 0.72, 0, 1),
	            background-color 240ms cubic-bezier(0.32, 0.72, 0, 1);
}

/* On hover: arrow rotates -45° → right (→) becomes up-right (↗), with a small slide. */
.wp-element-button:hover::after {
	transform: translateX(2px) rotate(-45deg);
	background-color: rgba(0, 60, 88, 0.14);
}

/* Every button — including outline and CTA-panel — uses the same white-alpha arrow circle
   (matches the filled-teal reference). On hover the circle tints navy-alpha against gold bg. */
.wp-element-button::after,
.is-style-outline .wp-element-button::after,
.sanori-final-cta .wp-element-button::after,
.sanori-page-cta .wp-element-button::after {
	background-color: rgba(255, 255, 255, 0.16) !important;
}

/* Outline button arrow circle — context-aware so the circle is visible on every bg.
   Paper bg (hero, services): navy hairline + soft navy-alpha fill.
   Navy bg (final-cta, page-cta): white hairline + soft white-alpha fill. */
.sanori-hero .is-style-outline .wp-element-button::after {
	background-color: rgba(0, 60, 88, 0.06) !important;
	border: 1px solid rgba(0, 60, 88, 0.28) !important;
	box-sizing: border-box;
}

.sanori-final-cta .is-style-outline .wp-element-button::after,
.sanori-page-cta .is-style-outline .wp-element-button::after {
	background-color: rgba(255, 255, 255, 0.10) !important;
	border: 1px solid rgba(255, 255, 255, 0.55) !important;
	box-sizing: border-box;
}

/* On hover the button fills gold (light bg) — switch all outline circles to navy-alpha so they stay readable. */
.sanori-hero .is-style-outline .wp-element-button:hover::after,
.sanori-final-cta .is-style-outline .wp-element-button:hover::after,
.sanori-page-cta .is-style-outline .wp-element-button:hover::after {
	background-color: rgba(0, 60, 88, 0.14) !important;
	border-color: rgba(0, 60, 88, 0.32) !important;
}

.wp-element-button:hover::after,
.is-style-outline .wp-element-button:hover::after,
.sanori-final-cta .wp-element-button:hover::after,
.sanori-page-cta .wp-element-button:hover::after {
	background-color: rgba(0, 60, 88, 0.14) !important;
}

/* Navy CTA panel — override the inline 24px padding with proper breathing room. */
.sanori-page-cta {
	padding: clamp(2.75rem, 5vw, 4.5rem) clamp(2rem, 4vw, 3rem) !important;
}

.sanori-page-cta .wp-block-buttons,
.sanori-page-cta .sanori-actions,
.sanori-final-cta .wp-block-buttons,
.sanori-final-cta .sanori-actions {
	margin-top: 1.75rem !important;
	display: flex !important;
	flex-wrap: wrap !important;
	justify-content: flex-start !important;
	gap: 0.85rem 1.25rem !important;
	row-gap: 0.85rem !important;
}

.sanori-page-cta .wp-block-button,
.sanori-final-cta .wp-block-button {
	flex: 0 0 auto;
	max-width: 100%;
}

.sanori-page-cta .wp-element-button,
.sanori-final-cta .wp-element-button {
	max-width: 100%;
}

/* ── Ambient parallax layer + film grain ── */

.sanori-ambient {
	position: fixed;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background: radial-gradient(circle at 28% 38%,
		rgba(58, 150, 162, 0.22) 0%,
		transparent 58%);
	opacity: 0.05;
	animation: sanori-ambient-drift 48s ease-in-out infinite alternate;
}

@keyframes sanori-ambient-drift {
	to { transform: translate(8vw, -6vh) scale(1.1); }
}

.sanori-grain {
	position: fixed;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	mix-blend-mode: multiply;
	opacity: 0.03;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

/* Push real content above the ambient layers */
.wp-site-blocks,
.sanori-site-header,
.sanori-site-footer {
	position: relative;
	z-index: 2;
}

@media (max-width: 640px) {
	.sanori-ambient { opacity: 0.03; }
}

/* ── Dark mode — token registration only, no body bg swap.
   Full substrate swap would require redefining every section background;
   for now we only register the dark-side ink/rule tokens so future work
   can opt in by component, and we tune the ambient layer for dark UAs. */
@media (prefers-color-scheme: dark) {
	:root {
		--sanori-ink-dark: #EDEDE8;
		--sanori-rule-dark: rgba(253, 249, 244, 0.08);
	}

	.sanori-grain { mix-blend-mode: multiply; opacity: 0.035; }
	.sanori-ambient { opacity: 0.07; }
}

/* High-specificity hover override — beats every scoped base-state rule. Gold + glow on EVERY button. */
.sanori-site-header .wp-block-buttons a[class]:hover,
.sanori-site-header .wp-block-buttons a[class]:focus,
.sanori-hero .wp-element-button:hover,
.sanori-hero .is-style-outline .wp-element-button:hover,
.sanori-final-cta .wp-element-button:hover,
.sanori-final-cta .is-style-outline .wp-element-button:hover,
.sanori-page-cta .wp-element-button:hover,
.sanori-page-cta .is-style-outline .wp-element-button:hover {
	background-color: var(--sanori-gold) !important;
	color: var(--wp--preset--color--contrast) !important;
	border-color: var(--sanori-gold) !important;
	text-decoration: none !important;
	transform: translateY(-2px) !important;
	box-shadow: 0 6px 24px rgba(251, 190, 94, 0.40), 0 0 40px rgba(251, 190, 94, 0.18) !important;
}

/* ── Reduced motion — ambient + arrow stay still ── */
@media (prefers-reduced-motion: reduce) {
	.sanori-ambient { animation: none; }
	.wp-element-button::after { transition: none !important; }
	.wp-element-button:hover::after { transform: none; }
}

/* ── Header & footer — full-bleed paper bg + gold hairline; inner row capped to content ── */

/* Outer: edge-to-edge paper, equal vertical padding, gold hairline. */
.sanori-site-header {
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
	padding-top: 1.25rem !important;
	padding-bottom: 1.25rem !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
	background: var(--wp--preset--color--base) !important;
	border-bottom: 1px solid var(--sanori-gold) !important;
}

.sanori-site-footer {
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
	padding-top: clamp(3.5rem, 6vw, 5.5rem) !important;
	padding-bottom: clamp(2.5rem, 4vw, 4rem) !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
	background-color: var(--wp--preset--color--base) !important;
	border-top: 1px solid var(--sanori-gold) !important;
}

/* Gap between the columns row and the legal/copyright line. */
.sanori-site-footer > .wp-block-columns.alignwide {
	margin-bottom: clamp(2.5rem, 5vw, 4rem) !important;
}

.sanori-site-footer > p {
	margin-top: clamp(2rem, 4vw, 3rem) !important;
	padding-top: clamp(1.5rem, 3vw, 2.25rem) !important;
	border-top: 1px solid var(--sanori-rule) !important;
}

/* Inner alignwide row — capped to content width, padded to match <main>'s inner gutter. */
.sanori-site-header > .wp-block-group.alignwide,
.sanori-site-footer > .wp-block-columns.alignwide,
.sanori-site-footer > .wp-block-group.alignwide {
	max-width: var(--sanori-page-max) !important;
	margin-left: auto !important;
	margin-right: auto !important;
	padding-left: 24px !important;
	padding-right: 24px !important;
	box-sizing: border-box !important;
}

/* Footer legal/copyright paragraph — same cap as columns row. */
.sanori-site-footer > p {
	max-width: var(--sanori-page-max) !important;
	margin-left: auto !important;
	margin-right: auto !important;
	padding-left: 24px !important;
	padding-right: 24px !important;
	box-sizing: border-box !important;
}

/* ── Legal/content pages (Impressum, Datenschutz) — breathing room around the surface card ── */

/* Tighten the H1 → card gap, override the inline spacing|40 (24px) margin-bottom. */
.sanori-page-shell > .wp-block-post-title {
	margin-bottom: clamp(1.25rem, 2.5vw, 2rem) !important;
}

/* Surface card needs real top + bottom padding, not 24px — override inline style. */
.sanori-page-shell > .sanori-content-panel.sanori-surface-card {
	padding-top: clamp(2.75rem, 5vw, 4.25rem) !important;
	padding-bottom: clamp(2.75rem, 5vw, 4.25rem) !important;
	padding-left: clamp(1.75rem, 4vw, 3rem) !important;
	padding-right: clamp(1.75rem, 4vw, 3rem) !important;
}

/* ── Online-Anmeldung: native booking — Swiss flat ── */

.sanori-booking {
	display: flex;
	flex-direction: column;
}

/* Section eyebrow already styled by .sanori-eyebrow theme rule. */
.sanori-booking .sanori-eyebrow {
	margin-bottom: 1.25rem;
}

/* Course list — hairline rules between rows only. */
.sanori-booking__overview-list {
	display: flex;
	flex-direction: column;
	border-top: 1px solid rgba(26, 26, 26, 0.12);
}

.sanori-booking__row {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1.5rem;
	padding: 1.25rem 0;
	border-bottom: 1px solid rgba(26, 26, 26, 0.12);
	transition: background 200ms ease;
}

.sanori-booking__row:hover {
	background: color-mix(in oklab, #2e7881 4%, transparent);
}

.sanori-booking__row-title {
	font-size: 1.05rem;
	color: var(--sanori-ink, #1A1A1A);
	font-weight: 600;
}

.sanori-booking__note {
	margin-top: 1.25rem;
	font-size: 0.88rem;
	font-style: italic;
	color: var(--sanori-ink-soft, rgba(26, 26, 26, 0.72));
}

/* Buttons */
.sanori-booking__btn {
	display: inline-block;
	padding: 0.9rem 1.5rem;
	font-family: inherit;
	font-size: 1rem;
	font-weight: 700;
	border-radius: 0.75rem;
	border: 2px solid transparent;
	cursor: pointer;
	text-decoration: none !important;
	transition: background 200ms ease, color 200ms ease, border-color 200ms ease, transform 200ms ease, box-shadow 200ms ease;
}

.sanori-booking__btn--outline {
	background: transparent;
	color: var(--sanori-ink, #163a54);
	border-color: var(--sanori-ink, #163a54);
}

.sanori-booking__btn--filled {
	background: #2e7881;
	color: var(--wp--preset--color--base, #fdf9f4);
	border-color: #2e7881;
}

/* Gesundheitsfragebogen download — secondary next to the course action */
.sanori-booking__row-actions {
	display: flex;
	gap: 0.75rem;
	align-items: center;
	flex-wrap: wrap;
	justify-content: flex-end;
}

.sanori-booking__btn--ghost {
	background: transparent;
	color: #2e7881;
	border-color: transparent;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.sanori-booking__btn--ghost:hover {
	background: transparent;
	color: var(--sanori-ink, #163a54);
	border-color: transparent;
	transform: none;
	box-shadow: none;
}

.sanori-booking__btn--outline:hover,
.sanori-booking__btn--filled:hover {
	background: #FBBE5E;
	color: var(--sanori-ink, #163a54);
	border-color: #FBBE5E;
	transform: translateY(-3px);
	box-shadow: 0 6px 24px rgba(251, 190, 94, 0.4), 0 0 40px rgba(251, 190, 94, 0.15);
}

@keyframes sanori-booking-pulse {
	0%, 100% { box-shadow: 0 0 0 0 rgba(46, 120, 129, 0.3); }
	50% { box-shadow: 0 0 0 8px rgba(46, 120, 129, 0); }
}

.sanori-booking__btn--filled {
	animation: sanori-booking-pulse 2s ease-in-out 2s 1;
}

/* Sold-out badge */
.sanori-booking__badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0.85rem 1.5rem;
	border-radius: 9999px;
	font-weight: 700;
	font-size: 1rem;
}

.sanori-booking__badge--sold {
	background: rgba(58, 150, 162, 0.10);
	color: #2e7881;
	border: 1px solid rgba(58, 150, 162, 0.35);
}

/* Detail panel — flat, hairline divider above, flush-left. */
.sanori-booking__detail {
	margin-top: clamp(3rem, 6vw, 6rem);
	padding-top: clamp(2rem, 4vw, 3rem);
	border-top: 1px solid rgba(26, 26, 26, 0.12);
}

.sanori-booking__course-name {
	font-size: clamp(1.5rem, 2.5vw, 2rem);
	font-weight: 600;
	color: var(--sanori-ink, #1A1A1A);
	margin: 0 0 0.75rem;
	letter-spacing: -0.02em;
	line-height: 1.15;
}

.sanori-booking__desc {
	color: var(--sanori-ink-soft, rgba(26, 26, 26, 0.72));
	font-size: 1rem;
	margin: 0 0 1.25rem;
	max-width: 50rem;
}

.sanori-booking__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0 0 1.25rem;
}

.sanori-booking__meta span {
	display: inline-flex;
	padding: 0.4rem 0.7rem;
	border-radius: 0.75rem;
	background: var(--wp--preset--color--base-2, #f5f0e8);
	color: var(--sanori-ink, #163a54);
	font-weight: 700;
	font-size: 0.9rem;
}

.sanori-booking__spots {
	display: inline-block;
	padding: 0.65rem 1.8rem;
	background: var(--wp--preset--color--base-2, #f5f0e8);
	color: var(--sanori-ink, #163a54);
	font-weight: 700;
	font-size: 1rem;
	border-radius: 9999px;
	margin: 0 0 1.5rem;
}

.sanori-booking__spots.is-full {
	background: rgba(58, 150, 162, 0.10);
	color: #2e7881;
}

.sanori-booking__schedule-title {
	font-size: 1.05rem;
	font-weight: 700;
	margin: 1.5rem 0 0.5rem;
	color: var(--sanori-ink, #163a54);
}

.sanori-booking__schedule {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.92rem;
	text-align: center;
}

.sanori-booking__schedule th {
	font-weight: 700;
	color: var(--sanori-ink, #163a54);
	padding: 0.5rem 0.75rem;
	border-bottom: 2px solid rgba(22, 58, 84, 0.12);
}

.sanori-booking__schedule td {
	padding: 0.4rem 0.75rem;
	color: var(--sanori-ink-soft, #2a4f6a);
}

.sanori-booking__policy {
	margin-top: 1rem;
	font-size: 0.88rem;
	color: var(--sanori-ink-soft, #2a4f6a);
}

.sanori-booking__calendar-note {
	margin-top: 1.25rem;
	font-size: 0.88rem;
	color: var(--sanori-ink-soft, #2a4f6a);
}

/* Form — flat, hairline divider above. */
.sanori-booking__form-card {
	margin-top: clamp(3rem, 6vw, 6rem);
	padding-top: clamp(2rem, 4vw, 3rem);
	border-top: 1px solid rgba(26, 26, 26, 0.12);
}

.sanori-booking__form-intro {
	margin-bottom: 1.5rem;
}

.sanori-booking__form-intro h2 {
	font-size: clamp(1.5rem, 2.5vw, 2rem);
	letter-spacing: -0.02em;
	line-height: 1.15;
	margin: 0 0 0.5rem;
}

.sanori-booking__helper {
	font-size: 0.95rem;
	margin: 0;
}

.sanori-booking__form-card label {
	display: grid;
	gap: 0.4rem;
	margin-bottom: 1.5rem;
	color: var(--sanori-ink, #1A1A1A);
}

.sanori-booking__form-card label:not(.sanori-booking__consent) > span:first-child {
	font-size: 0.78rem;
	text-transform: uppercase;
	letter-spacing: 0.18em;
	font-weight: 600;
	color: var(--sanori-ink-soft, rgba(26, 26, 26, 0.72));
}

.sanori-booking__consent {
	margin-top: 0.5rem;
	font-size: 0.95rem;
}

.sanori-booking__form-card button[type="submit"] {
	display: inline-block;
	margin-top: 1.5rem;
	padding: 0.9rem 1.75rem;
	font-family: inherit;
	font-size: 1rem;
	font-weight: 700;
	border-radius: 0.75rem;
	border: 2px solid #2e7881;
	background: #2e7881;
	color: var(--wp--preset--color--base, #fdf9f4);
	cursor: pointer;
	transition: background 200ms ease, color 200ms ease, border-color 200ms ease, transform 200ms ease, box-shadow 200ms ease;
}

.sanori-booking__form-card button[type="submit"]:hover {
	background: #FBBE5E;
	color: var(--sanori-ink, #1A1A1A);
	border-color: #FBBE5E;
	transform: translateY(-3px);
	box-shadow: 0 6px 24px rgba(251, 190, 94, 0.4), 0 0 40px rgba(251, 190, 94, 0.15);
}

.sanori-booking__form-card button[type="submit"]:disabled {
	opacity: 0.55;
	cursor: not-allowed;
}

.sanori-booking__form-card input,
.sanori-booking__form-card select,
.sanori-booking__form-card textarea {
	width: 100%;
	padding: 0.65rem 0;
	border: 0;
	border-bottom: 1px solid rgba(26, 26, 26, 0.2);
	border-radius: 0;
	background: transparent;
	font: inherit;
	font-size: 1rem;
	color: var(--sanori-ink, #1A1A1A);
	transition: border-color 200ms ease;
}

.sanori-booking__form-card input:focus,
.sanori-booking__form-card select:focus,
.sanori-booking__form-card textarea:focus {
	outline: none;
	border-bottom-color: #2e7881;
}

.sanori-booking__form-card textarea {
	min-height: 6rem;
	resize: vertical;
	border: 1px solid rgba(26, 26, 26, 0.2);
	padding: 0.75rem 1rem;
}

.sanori-booking__form-card select {
	appearance: none;
	-webkit-appearance: none;
	background-image: linear-gradient(45deg, transparent 50%, var(--sanori-ink, #1A1A1A) 50%),
	                  linear-gradient(135deg, var(--sanori-ink, #1A1A1A) 50%, transparent 50%);
	background-position: calc(100% - 14px) 1.1rem, calc(100% - 9px) 1.1rem;
	background-size: 5px 5px, 5px 5px;
	background-repeat: no-repeat;
	padding-right: 1.5rem;
}

.sanori-booking__form-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.85rem;
}

@media (min-width: 600px) {
	.sanori-booking__form-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.sanori-booking__consent input[type="checkbox"] {
	width: 1.15rem;
	height: 1.15rem;
	margin: 0;
	flex: 0 0 auto;
	accent-color: #2e7881;
}

.sanori-booking__field-error {
	font-size: 0.85rem;
	color: #aa4949;
	font-weight: 600;
}

.sanori-booking__status {
	margin-bottom: 1rem;
	padding: 0.9rem 1rem;
	font-weight: 700;
	border-radius: 0.75rem;
}

.sanori-booking__status--success {
	background: rgba(193, 217, 206, 0.38);
	color: var(--sanori-ink, #163a54);
}

.sanori-booking__status--error {
	background: rgba(170, 73, 73, 0.12);
	color: #aa4949;
}

@media (max-width: 540px) {
	.sanori-booking__row {
		flex-direction: column;
		align-items: stretch;
		gap: 0.75rem;
	}
	.sanori-booking__row-title {
		font-size: 1rem;
	}
}

/* Tight mobile (<=380px): compact the schedule table */
@media (max-width: 380px) {
	.sanori-booking__schedule {
		font-size: 0.8rem;
	}
	.sanori-booking__schedule th,
	.sanori-booking__schedule td {
		padding: 0.3rem 0.35rem;
	}
	.sanori-booking__btn,
	.sanori-booking__form-card button[type="submit"] {
		padding: 0.8rem 1rem;
		font-size: 0.95rem;
	}
}

/* Constrain /online-buchung/ content to ~2/3 width on desktop, centered */
.page-id-174 .wp-block-post-content {
	max-width: 56rem;
	margin-inline: auto;
}

