/*
Theme Name: ADHS Praxis München
Theme URI: https://www.adhs-testung-muenchen.de
Author: ecomedical AG
Author URI: https://www.ecomedical.ch
Description: ADHS-freundliches Block-Theme für die leitliniengerechte ADHS-Diagnostik bei Erwachsenen. Ruhige Gestaltung ohne ablenkende Bewegung, Selbstcheck mit einer Frage pro Bildschirm, Terminanfrage mit Zwischenspeicherung, Rückruf-Option und Vorbereitungs-Checkliste. Mit Installer für alle Inhalte, strukturierten Daten (SEO, AEO, GEO), llms.txt, Abilities API, Sicherheits- und DSGVO-Voreinstellungen.
Requires at least: 7.0
Tested up to: 7.1
Requires PHP: 8.1
Version: 1.1.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: adhs-praxis
Tags: block-patterns, block-styles, full-site-editing, accessibility-ready, style-variations, editor-style, wide-blocks, one-column, custom-colors, translation-ready
*/

/* -------------------------------------------------------------------------
   Globale Ergänzungen, die theme.json nicht abbilden kann.
   Gestaltungstokens (Farben, Typo, Abstände) liegen in theme.json.
   ------------------------------------------------------------------------- */

:root {
	--adhs-ease: cubic-bezier(.32, .72, 0, 1);
	--adhs-radius-l: 28px;
	--adhs-radius-m: 20px;
	--adhs-glass: color-mix(in srgb, var(--wp--preset--color--base) 86%, transparent);
	--adhs-glass-strong: color-mix(in srgb, var(--wp--preset--color--surface) 88%, transparent);
	--adhs-line: color-mix(in srgb, var(--wp--preset--color--contrast) 9%, transparent);
	--adhs-line-2: color-mix(in srgb, var(--wp--preset--color--contrast) 14%, transparent);
	--adhs-raised: #ffffff;
	--adhs-cta-from: var(--wp--preset--color--accent);
}

html { -webkit-text-size-adjust: 100%; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: clip; }
:where(h1, h2, h3, .wp-block-heading) { text-wrap: balance; }
:where(p, li) { text-wrap: pretty; }

/* Fokus immer klar sichtbar (WCAG 2.4.7 / 2.4.11) */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--wp--preset--color--accent);
	outline-offset: 3px;
	border-radius: 6px;
}

/* ---------- Kopfzeile: durchscheinendes Material ---------- */
/* Der Template-Part-Container (<header>) haftet oben, nicht die innere Gruppe –
   sonst hätte die Kopfzeile keinen Raum zum Haften. */
.wp-site-blocks > header.wp-block-template-part:has(.adhs-header) { position: sticky; top: 0; z-index: 40; }
.admin-bar .wp-site-blocks > header.wp-block-template-part:has(.adhs-header) { top: var(--wp-admin--admin-bar--height, 32px); }
/* Glas auf eigener Ebene: backdrop-filter direkt auf der Kopfzeile würde sie
   zum Bezugsrahmen für das fixierte Mobil-Menü machen. */
.adhs-header {
	position: relative;
	isolation: isolate;
	color: var(--wp--preset--color--contrast);
}
.adhs-header::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--adhs-glass);
	-webkit-backdrop-filter: saturate(180%) blur(20px);
	backdrop-filter: saturate(180%) blur(20px);
	box-shadow: 0 1px 0 var(--adhs-line);
	pointer-events: none;
}
/* Lesbarkeit: volle Textfarbe, ruhiges Gewicht, klare Markierung der aktuellen Seite */
.adhs-header .wp-block-navigation { color: var(--wp--preset--color--contrast); font-size: .9375rem; font-weight: 500; }
.adhs-header .wp-block-navigation-item__content { color: var(--wp--preset--color--contrast) !important; border-radius: 999px; padding: .5rem .75rem; transition: background .2s; }
.adhs-header .wp-block-navigation-item__content:hover { background: var(--adhs-line); text-decoration: none; }
.adhs-header .current-menu-item > .wp-block-navigation-item__content,
.adhs-header .wp-block-navigation-item__content[aria-current="page"] { background: var(--adhs-line); font-weight: 600; }
.adhs-header .wp-block-site-title, .adhs-header .wp-block-site-title a { color: var(--wp--preset--color--contrast); }
.adhs-header .wp-block-site-tagline { color: var(--wp--preset--color--contrast-3); }
/* Hilfsschalter (Ruhige Ansicht, Hell/Dunkel) als ruhige Gruppe */
.adhs-header .adhs-tools { gap: .125rem !important; padding-inline-start: .5rem; margin-inline-start: .25rem; border-inline-start: 1px solid var(--adhs-line); }

/* ---------- Karten, Sektionen ---------- */
.is-style-karte { transition: box-shadow .4s var(--adhs-ease), transform .4s var(--adhs-ease); }
a.is-style-karte:hover, .is-style-karte:has(> .wp-block-read-more:hover) { transform: translateY(-2px); }

/* Nummerierte Hinweisliste */
.adhs-signs { counter-reset: sign; }
.adhs-signs > .wp-block-group { counter-increment: sign; position: relative; padding-left: 3rem !important; }
.adhs-signs > .wp-block-group::before {
	content: counter(sign);
	position: absolute; left: 0; top: 1.4rem;
	width: 2rem; height: 2rem; border-radius: 50%;
	display: grid; place-items: center;
	font-weight: 700; font-size: .875rem;
	color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--accent-soft);
}

/* "Kurz gesagt"-Liste mit Häkchen */
.adhs-tldr ul { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem 2rem; }
.adhs-tldr li { position: relative; padding-left: 1.9rem; }
.adhs-tldr li::before {
	content: ""; position: absolute; left: 0; top: .15em; width: 1.25rem; height: 1.25rem; border-radius: 50%;
	background: var(--wp--preset--color--sage-soft) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234f6b5e' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 12px no-repeat;
}
@media (width <= 640px) { .adhs-tldr ul { grid-template-columns: 1fr; } }

/* Schritt-Nummern */
.adhs-step-n { font-variant-numeric: tabular-nums; }

/* Chips */
.adhs-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.adhs-chips > p { margin: 0 !important; font-size: .8125rem; font-weight: 600; padding: .35rem .75rem; border-radius: 999px; background: var(--wp--preset--color--base-2); color: var(--wp--preset--color--contrast-2); }
.adhs-chips > p.adhs-chip-sage { background: var(--wp--preset--color--sage-soft); color: var(--wp--preset--color--sage); }
.adhs-chips > p.adhs-chip-accent { background: var(--wp--preset--color--accent-soft); color: var(--wp--preset--color--accent); }

/* Statusanzeige */
.adhs-status { display: inline-flex !important; align-items: center; gap: .5rem; }
.adhs-status::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; box-shadow: 0 0 0 4px var(--wp--preset--color--sage-soft); }

/* Porträt-Platzhalter */
.adhs-portrait { aspect-ratio: 4 / 5; display: grid !important; place-items: center; position: relative; overflow: hidden; }
.adhs-portrait img { width: 100%; height: 100%; object-fit: cover; }

/* Breadcrumbs */
.wp-block-breadcrumbs { font-size: var(--wp--preset--font-size--small); color: var(--wp--preset--color--contrast-3); }
.wp-block-breadcrumbs a { text-decoration: none; color: inherit; }
.wp-block-breadcrumbs a:hover { color: var(--wp--preset--color--contrast); text-decoration: underline; }

/* Accordion (FAQ) */
.wp-block-accordion .wp-block-accordion-item { border-bottom: 1px solid var(--adhs-line); }
.wp-block-accordion .wp-block-accordion-heading__toggle { padding-block: 1.25rem; font-weight: 600; letter-spacing: -.012em; }
.wp-block-accordion .wp-block-accordion-panel > *:last-child { margin-bottom: 1.25rem; }

/* Tabs */
.wp-block-tabs .wp-block-tab-list { gap: .25rem; background: var(--wp--preset--color--base-2); padding: .25rem; border-radius: 14px; display: inline-flex; flex-wrap: wrap; }
.wp-block-tabs .wp-block-tab-list button { border-radius: 11px; font-weight: 600; }

/* ---------- Buttons der Theme-Blöcke ---------- */
.adhs-btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; border: 0; cursor: pointer; text-decoration: none; font: inherit; font-weight: 600; font-size: .9375rem; line-height: 1.2; border-radius: 999px; padding: .8rem 1.4rem; transition: transform .1s ease-out, background .2s; -webkit-tap-highlight-color: transparent; user-select: none; }
.adhs-btn:active { transform: scale(.97); }
.adhs-btn:disabled { opacity: .4; cursor: not-allowed; transform: none; }
.adhs-btn--primary { background: var(--wp--preset--color--accent); color: var(--wp--preset--color--on-accent); }
.adhs-btn--primary:hover:not(:disabled) { background: var(--wp--preset--color--accent-2); color: var(--wp--preset--color--on-accent); }
.adhs-btn--ghost { background: color-mix(in srgb, var(--wp--preset--color--contrast) 8%, transparent); color: var(--wp--preset--color--contrast); }
.adhs-btn--ghost:hover:not(:disabled) { background: color-mix(in srgb, var(--wp--preset--color--contrast) 13%, transparent); }
.adhs-btn--link { background: none; color: var(--wp--preset--color--accent); padding-inline: .25rem; }
.adhs-btn--link:hover { text-decoration: underline; }
.adhs-btn--sm { padding: .55rem 1rem; font-size: .875rem; }

/* ---------- Mobile Aktionsleiste ---------- */
.adhs-dock {
	position: fixed; left: 1rem; right: 1rem; bottom: 1rem; z-index: 31;
	padding: .625rem !important; border-radius: 22px;
	background: var(--adhs-glass-strong);
	-webkit-backdrop-filter: blur(24px) saturate(180%);
	backdrop-filter: blur(24px) saturate(180%);
	border: 1px solid var(--adhs-line);
	box-shadow: var(--wp--preset--shadow--medium);
	padding-bottom: calc(.625rem + env(safe-area-inset-bottom)) !important;
}
.adhs-dock .wp-block-button:first-child { flex: 1; }
.adhs-dock .wp-block-button:first-child .wp-block-button__link { width: 100%; }
@media (width <= 782px) { .wp-site-blocks { padding-bottom: 6rem; } }

/* ---------- Ruhige Ansicht: ändert keine Struktur ---------- */
:root[data-adhs-calm] body { font-size: 1.0625em; line-height: 1.6; }
:root[data-adhs-calm] *, :root[data-adhs-calm] *::before, :root[data-adhs-calm] *::after {
	animation: none !important; transition: none !important; scroll-behavior: auto !important;
}
:root[data-adhs-calm] .adhs-deco { visibility: hidden; }
:root[data-adhs-calm] .adhs-header::before, :root[data-adhs-calm] .adhs-dock { background: var(--wp--preset--color--base); -webkit-backdrop-filter: none; backdrop-filter: none; }
:root[data-adhs-calm] .is-style-abschnitt-dunkel { background: var(--wp--preset--color--base-2) !important; color: var(--wp--preset--color--contrast) !important; }
:root[data-adhs-calm] .is-style-abschnitt-dunkel :where(p, h2, h3, span) { color: inherit !important; }
:root[data-adhs-calm] .is-style-akzent-cta { background: var(--wp--preset--color--surface-2) !important; color: var(--wp--preset--color--contrast) !important; box-shadow: inset 0 0 0 1px var(--adhs-line); }
:root[data-adhs-calm] .is-style-akzent-cta :where(h2, p) { color: inherit !important; }
:root[data-adhs-calm] .is-style-akzent-cta .wp-block-button__link { background: var(--wp--preset--color--accent) !important; color: var(--wp--preset--color--on-accent) !important; }

/* ---------- Farbschema: Hell, Dunkel, Automatisch ----------
   Das Attribut data-adhs-scheme am <html>-Element steuert alles. Es wird
   serverseitig gesetzt und vor dem ersten Rendern aus der lokalen Wahl
   übernommen (kein Aufblitzen). Die Tokens liegen auf :root, genau dort, wo
   WordPress die Preset-Variablen ausgibt – nur so rechnen abgeleitete Werte
   wie das Glas der Kopfzeile mit den richtigen Farben. Im Editor fehlt das
   Attribut, dort bleibt die helle Darstellung. */
:root[data-adhs-scheme] { color-scheme: light; }
:root[data-adhs-scheme="dark"] {
	--wp--preset--color--base: #0f0f0e;
	--wp--preset--color--base-2: #171716;
	--wp--preset--color--surface: #1c1c1b;
	--wp--preset--color--surface-2: #262624;
	--wp--preset--color--contrast: #f5f5f7;
	--wp--preset--color--contrast-2: #d8d8dc;
	--wp--preset--color--contrast-3: #b0b0b5;
	--wp--preset--color--accent: #e8735e;
	--wp--preset--color--accent-2: #f39079;
	--wp--preset--color--accent-soft: #2e1b17;
	--wp--preset--color--on-accent: #1a0d0a;
	--wp--preset--color--sage: #9cc0ae;
	--wp--preset--color--sage-soft: #1d2723;
	--adhs-glass: color-mix(in srgb, #0f0f0e 86%, transparent);
	--adhs-line: color-mix(in srgb, #f5f5f7 12%, transparent);
	--adhs-line-2: color-mix(in srgb, #f5f5f7 18%, transparent);
	--adhs-raised: #3a3a37;
	--adhs-cta-from: #9c2b1e;
	color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
	:root[data-adhs-scheme="auto"] {
		--wp--preset--color--base: #0f0f0e;
		--wp--preset--color--base-2: #171716;
		--wp--preset--color--surface: #1c1c1b;
		--wp--preset--color--surface-2: #262624;
		--wp--preset--color--contrast: #f5f5f7;
		--wp--preset--color--contrast-2: #d8d8dc;
		--wp--preset--color--contrast-3: #b0b0b5;
		--wp--preset--color--accent: #e8735e;
		--wp--preset--color--accent-2: #f39079;
		--wp--preset--color--accent-soft: #2e1b17;
		--wp--preset--color--on-accent: #1a0d0a;
		--wp--preset--color--sage: #9cc0ae;
		--wp--preset--color--sage-soft: #1d2723;
		--adhs-glass: color-mix(in srgb, #0f0f0e 86%, transparent);
		--adhs-line: color-mix(in srgb, #f5f5f7 12%, transparent);
		--adhs-line-2: color-mix(in srgb, #f5f5f7 18%, transparent);
	--adhs-raised: #3a3a37;
	--adhs-cta-from: #9c2b1e;
		color-scheme: dark;
	}
}
/* Beim Umschalten keine Übergänge – der Wechsel passiert in einem Bild. */
:root.adhs-switching *, :root.adhs-switching *::before, :root.adhs-switching *::after { transition: none !important; }

/* ---------- Barrierearme Systemeinstellungen ---------- */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
@media (prefers-reduced-transparency: reduce) {
	.adhs-header::before, .adhs-dock { background: var(--wp--preset--color--base); -webkit-backdrop-filter: none; backdrop-filter: none; }
}
@media (prefers-contrast: more) {
	:root { --adhs-line: color-mix(in srgb, var(--wp--preset--color--contrast) 35%, transparent); }
}
@media print {
	.adhs-header, .adhs-dock, .adhs-anfrage--dialog, .wp-block-adhs-praxis-ruhige-ansicht { display: none !important; }
}

/* ---------- Ergänzungen für Patterns ---------- */
.is-style-etikett { display: inline-block; width: fit-content; }
.is-style-etikett.adhs-tag-sage { background: var(--wp--preset--color--sage-soft) !important; color: var(--wp--preset--color--sage) !important; }
.adhs-tldr-h { color: var(--wp--preset--color--sage) !important; margin-bottom: .75rem !important; }
.is-style-akzent-cta .is-style-outline .wp-block-button__link { background: transparent !important; color: #fff !important; box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .6); }
.is-style-textlink .wp-block-button__link { background: transparent !important; color: var(--wp--preset--color--accent) !important; padding-inline: .25rem !important; }
.is-style-textlink .wp-block-button__link:hover { text-decoration: underline; }
.adhs-hint { margin-top: .5rem !important; }
.adhs-meta { color: var(--wp--preset--color--contrast-3); }
.adhs-meta .wp-block-icon svg { width: 16px; height: 16px; }
.adhs-stat-num { font-variant-numeric: tabular-nums; }
.adhs-stat { border-top: 1px solid rgba(255, 255, 255, .14); padding-top: 1.5rem; }
.adhs-reviewed { display: inline-flex; align-items: center; gap: .4rem; font-size: var(--wp--preset--font-size--small); color: var(--wp--preset--color--contrast-3); margin: 0; }
.adhs-reviewed svg { color: var(--wp--preset--color--sage); flex: none; }
.adhs-kv .wp-block-list { list-style: none; padding: 0; margin: 0; }
.adhs-kv .wp-block-list li { display: flex; justify-content: space-between; gap: 1rem; padding: .875rem 0; border-bottom: 1px solid var(--adhs-line); }
.adhs-kv .wp-block-list li strong { font-weight: 600; text-align: right; }
.adhs-kv .wp-block-list li span { color: var(--wp--preset--color--contrast-2); }
.adhs-quote { font-size: clamp(1.4rem, 2.6vw, 2rem); line-height: 1.3; letter-spacing: -.02em; font-weight: 600; }
.adhs-sources .wp-block-list { font-size: var(--wp--preset--font-size--small); }
.is-style-abschnitt-dunkel .is-style-ueberzeile { color: #f08a74 !important; }
.is-style-abschnitt-dunkel a { color: #f5f5f7; }
.is-style-abschnitt-dunkel .adhs-stat a { color: #a1a1a6; text-decoration-color: rgba(255,255,255,.3); }

.adhs-rounded img { border-radius: var(--wp--preset--border-radius--l, 28px); }
.adhs-kv-row { border-bottom: 1px solid var(--adhs-line); padding-block: .5rem; margin-block: 0 !important; }
.adhs-kv-row p { margin: 0; }
.adhs-kv-row > .wp-block-column:last-child p { text-align: right; }
.adhs-tldr--stack ul { grid-template-columns: 1fr !important; }
.adhs-footer-list { list-style: none; padding: 0; display: grid; gap: .45rem; }
.adhs-footer-list a, .adhs-legal-links a, .adhs-footer a { color: var(--wp--preset--color--contrast-2); text-decoration: none; }
.adhs-footer-list a:hover, .adhs-legal-links a:hover { color: var(--wp--preset--color--contrast); text-decoration: underline; }
.adhs-footer-legal { border-top: 1px solid var(--adhs-line); }
.adhs-dock .wp-block-buttons { gap: .5rem; }
.adhs-dock .is-style-outline .wp-block-button__link { white-space: nowrap; }

.adhs-stat-num { font-weight: 700 !important; letter-spacing: -.04em; line-height: 1 !important; white-space: nowrap; font-size: clamp(2rem, 4vw, 3rem) !important; }
.adhs-header .wp-block-navigation-item__content, .adhs-header .wp-block-button__link { white-space: nowrap; }
.adhs-header .wp-block-site-title { white-space: nowrap; }
:where(.wp-site-blocks) :where(p, li) { hyphens: auto; -webkit-hyphens: auto; overflow-wrap: break-word; }
.adhs-sources a { overflow-wrap: anywhere; }

/* Theme-Blöcke: verlässliche Box-Berechnung */
.adhs-anfrage, .adhs-anfrage *, .adhs-sc, .adhs-sc * { box-sizing: border-box; }
.adhs-header .wp-block-site-tagline { white-space: nowrap; }
@media (width <= 1280px) { .adhs-header .adhs-tools .adhs-calm-btn__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } }
@media (width <= 480px) { .adhs-header .wp-block-site-tagline { display: none; } }
.adhs-opt-grid + .adhs-field { margin-top: 1.25rem; }
@media (width <= 1024px) { .adhs-header .adhs-tools { border-inline-start: 0; padding-inline-start: 0; margin-inline-start: 0; } }
.adhs-footer-legal { align-items: center; row-gap: 1rem; }
