/*
Theme Name: DentalKonzept MVZ
Theme URI: https://dentalkonzeptmvz.de
Author: WEB-2B GmbH
Author URI: https://web-2b.de
Description: Schlankes Block-Theme für das DentalKonzept MVZ Ingolstadt. Gestaltung über theme.json, nur Core-Blöcke.
Requires at least: 7.0
Tested up to: 7.1
Requires PHP: 8.1
Version: 1.2.1
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: dentalkonzept
*/

/* ---------------------------------------------------------------------------
 * Grundlagen
 * ------------------------------------------------------------------------ */

:root {
	--dk-radius: 18px;
	--dk-radius-gross: 24px;
	--dk-stern: #f2b01e;
	--dk-i-kalender: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/svg%3E");
	--dk-i-telefon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E");
	--dk-i-pfeil: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E");
	--dk-i-haus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10.5 12 3l9 7.5V20a1 1 0 0 1-1 1h-5v-6H9v6H4a1 1 0 0 1-1-1z'/%3E%3C/svg%3E");
	--dk-i-haken: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
}

html {
	scroll-behavior: smooth;
	scroll-padding-top: 2rem;
}

body {
	-webkit-font-smoothing: antialiased;
	font-variant-numeric: lining-nums;
}

/* Dekor-Flecken dürfen über den Rand ragen, ohne Querscrollen auszulösen. */
.wp-site-blocks,
.is-root-container {
	overflow-x: clip;
}

:where(h1, h2, h3, h4) {
	text-wrap: balance;
}

:where(h1, h2) strong {
	font-weight: 700;
}

:where(p) {
	text-wrap: pretty;
}

/* Silbentrennung dort, wo Spalten schmal werden. */
:where(.has-small-font-size, h3, .dk-name) {
	hyphens: auto;
}

:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent);
	outline-offset: 3px;
}

.screen-reader-text {
	border: 0;
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}

/* Randlose Abschnitte schließen bündig aneinander an. */
body .wp-site-blocks > * + *,
body :where(main, .wp-block-post-content) > .alignfull,
body :where(main, .wp-block-post-content) > .alignfull + * {
	margin-block-start: 0;
}

/* Textseiten: Lesespalte beginnt an der linken Rasterkante statt mittig. */
.dk-inhalt-links > :not(.alignwide):not(.alignfull) {
	margin-left: max(0px, (100% - var(--wp--style--global--wide-size)) / 2) !important;
}

/* Lesbare Absätze innerhalb breiter Abschnitte. */
.dk-lead {
	max-width: 36em;
}

/* Namen und Funktionen in Karten. */
.dk-name {
	color: var(--wp--preset--color--primary);
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	line-height: 1.3;
}

.has-primary-background-color .dk-name {
	color: var(--wp--preset--color--base);
}

.dk-rolle {
	color: var(--wp--preset--color--accent);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	margin-top: -0.25rem;
}

.dk-abstand-oben {
	margin-top: var(--wp--preset--spacing--30) !important;
}


/* ---------------------------------------------------------------------------
 * Kopfbereich
 * ------------------------------------------------------------------------ */

.dk-topbar {
	line-height: 1.4;
}

.dk-topbar a {
	text-decoration: none;
}

.dk-topbar a:hover {
	text-decoration: underline;
}

.dk-topbar .wp-block-icon {
	color: var(--wp--preset--color--accent-light);
	flex: none;
}

.dk-marke {
	position: relative;
}

.dk-wordmark {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 500;
	letter-spacing: 0.05em;
	line-height: 1.02;
	text-transform: uppercase;
	width: min-content;
}

.dk-wordmark a {
	color: inherit;
	text-decoration: none;
}

/* Logo und Wortmarke bilden gemeinsam einen Link zur Startseite. */
.dk-marke .dk-wordmark a::after {
	content: "";
	inset: 0;
	position: absolute;
}

/* Desktop-Navigation; das Mobilmenü hat eigene Regeln weiter unten. */
.dk-header .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation-item__content {
	border-bottom: 2px solid transparent;
	padding-block: 0.5rem;
}

.dk-header .wp-block-navigation__responsive-container:not(.is-menu-open) .current-menu-item > .wp-block-navigation-item__content,
.dk-header .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation-item__content[aria-current="page"],
.dk-header .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation-item__content:hover {
	border-bottom-color: var(--wp--preset--color--accent-light);
	text-decoration: none;
}

/* Startseiten-Link als kleines Haus; im Mobilmenü mit Beschriftung. */
.dk-home-link .wp-block-navigation-item__content {
	align-items: center;
	display: inline-flex;
	gap: 0.5em;
}

.dk-home-link .wp-block-navigation-item__content::before {
	background: currentColor;
	content: "";
	flex: none;
	height: 1.25rem;
	mask: var(--dk-i-haus) center / contain no-repeat;
	width: 1.25rem;
}

.wp-block-navigation__responsive-container:not(.is-menu-open) .dk-home-link .wp-block-navigation-item__content {
	font-size: 0;
}

.dk-header .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container {
	border: 1px solid var(--wp--preset--color--linie) !important;
	border-radius: 12px;
	box-shadow: var(--wp--preset--shadow--soft);
	padding: 0.5rem 0;
	text-transform: none;
	letter-spacing: 0;
}

.dk-header .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	border: 0;
	padding: 0.45rem 1.1rem;
}

/* Mobilmenü (Template-Part „mobilmenue“): linksbündige Liste, Kontakt unten.
 * Es liegt im <nav> des Kopfs und erbt sonst dessen Versalien-Typografie. */
.dk-mobilmenue {
	display: flex;
	flex-direction: column;
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 400;
	letter-spacing: normal;
	min-height: 100dvh;
	text-transform: none;
}

/* Linkfarbe aus dem Block greift im Overlay nicht (Core rendert ohne Element-Styles). */
.dk-mobilmenue a:where(:not(.wp-element-button)) {
	color: inherit;
}

.dk-mobilmenue > .dk-mobilnav {
	margin-top: var(--wp--preset--spacing--30);
}

/* Auf dem Tablet bleibt die Liste lesbar schmal. */
.dk-mobilmenue > :is(.dk-mobilnav, .dk-mobilmenue-kontakt) {
	max-width: 36rem;
}

.dk-mobilmenue > .dk-mobilmenue-kontakt {
	margin-top: auto;
	padding-top: var(--wp--preset--spacing--30);
}

.dk-mobilmenue .wp-block-navigation-overlay-close {
	border: 1px solid rgb(255 255 255 / 0.3);
	border-radius: 50%;
	color: inherit;
	flex: none;
	height: 2.75rem;
	width: 2.75rem;
}

.dk-mobilmenue .dk-mobilnav.wp-block-navigation {
	font-size: var(--wp--preset--font-size--large);
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
}

.dk-mobilmenue .dk-mobilnav .wp-block-navigation__container {
	align-items: stretch;
	width: 100%;
}

.dk-mobilmenue .dk-mobilnav .wp-block-navigation__container > .wp-block-navigation-item {
	align-items: stretch;
	border-bottom: 1px solid rgb(255 255 255 / 0.14);
	flex-direction: column;
	gap: 0;
}

.dk-mobilmenue .dk-mobilnav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
	align-items: center;
	display: flex;
	font-size: inherit;
	gap: 0.75rem;
	padding: 0.75rem 0;
}

/* Leistungen sind immer aufgeklappt, der Auf-/Zu-Pfeil entfällt. */
.dk-mobilmenue .dk-mobilnav .wp-block-navigation__submenu-icon {
	display: none;
}

/* Pfeil rechts als Hinweis „hier geht es weiter“. */
.dk-mobilmenue .dk-mobilnav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content::after {
	background: currentColor;
	content: "";
	flex: none;
	height: 1.1rem;
	margin-left: auto;
	mask: var(--dk-i-pfeil) center / contain no-repeat;
	opacity: 0.45;
	width: 1.1rem;
}

.dk-mobilmenue .dk-mobilnav.wp-block-navigation .wp-block-navigation__submenu-container {
	background: rgb(255 255 255 / 0.07);
	border: 0;
	border-radius: 14px;
	color: inherit;
	gap: 0;
	margin: 0 0 0.875rem;
	min-width: 0;
	padding: 0.5rem 1.125rem;
	position: static;
}

.dk-mobilmenue .dk-mobilnav .wp-block-navigation__submenu-container .wp-block-navigation-item {
	background: none;
}

.dk-mobilmenue .dk-mobilnav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	color: rgb(255 255 255 / 0.85);
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 500;
	padding: 0.3rem 0;
}

@media (hover: hover) {
	.dk-mobilmenue .dk-mobilnav .wp-block-navigation-item__content:hover {
		color: var(--wp--preset--color--accent-light);
	}
}

.dk-mobilmenue .dk-mobilnav .current-menu-item > .wp-block-navigation-item__content,
.dk-mobilmenue .dk-mobilnav .wp-block-navigation-item__content[aria-current="page"] {
	color: var(--wp--preset--color--accent-light);
	text-decoration: none;
}

/* Beim Umbruch rutscht Navigation samt Termin-Button an den rechten Rand. */
.dk-header .alignwide > .wp-block-group:last-child {
	margin-left: auto;
}

/* Das E-Mail-Icon gehört mit zur Klickfläche des Links. */
.dk-topbar-mail {
	position: relative;
}

.dk-topbar-mail a::after {
	content: "";
	inset: -0.5rem;
	position: absolute;
}

/* Adresse und Zeiten erst, wenn alles in eine Zeile passt (~1060 px). */
@media (max-width: 1099.98px) {
	.dk-topbar .dk-nur-desktop {
		display: none;
	}

	.dk-topbar .dk-topbar-kontakt {
		flex-wrap: nowrap;
		margin-left: auto;
	}
}

/* Schmale Handys: Telefon bleibt ausgeschrieben, die E-Mail zeigt nur das Icon
 * (Adresse bleibt für Screenreader lesbar). */
@media (max-width: 479.98px) {
	.dk-topbar .dk-topbar-kontakt {
		justify-content: space-between;
		width: 100%;
	}

	.dk-topbar .dk-topbar-mail {
		gap: 0;
	}

	.dk-topbar-mail a {
		font-size: 0;
	}

	.dk-topbar-mail .wp-block-icon {
		width: 22px;
	}
}

/* Menü-Button rund wie der Schließen-Knopf im Mobilmenü. */
.dk-header .wp-block-navigation__responsive-container-open {
	align-items: center;
	border: 1px solid var(--wp--preset--color--linie);
	border-radius: 50%;
	color: var(--wp--preset--color--primary);
	height: 2.75rem;
	justify-content: center;
	width: 2.75rem;
}

/* Bis 1024 px passt die Desktop-Zeile nicht: Logo und Menü-Button bleiben
 * nebeneinander, der Termin-Button wandert in die feste Leiste unten.
 * Core schaltet das Overlay nur bis 600 px – hier bis 1024 px verlängert. */
@media (max-width: 1023.98px) {
	.dk-header .alignwide {
		flex-wrap: nowrap;
	}

	.dk-header .dk-kopf-termin {
		display: none;
	}
}

@media (min-width: 600px) and (max-width: 1023.98px) {
	.dk-header .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}

	.dk-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}
}

@media (max-width: 599.98px) {
	.dk-header .wp-block-site-logo img {
		width: 52px;
	}
}

/* ---------------------------------------------------------------------------
 * Buttons und Links mit Icons
 * ------------------------------------------------------------------------ */

.wp-element-button {
	align-items: center;
	display: inline-flex;
	gap: 0.6em;
	justify-content: center;
	min-height: 3.25rem;
	transition: background-color 0.2s, color 0.2s, border-color 0.2s;
}

:is(.has-icon-kalender, .has-icon-telefon, .has-icon-pfeil) .wp-element-button::before,
.dk-link-pfeil a::after,
.dk-link-telefon a::before {
	background: currentColor;
	content: "";
	flex: none;
	height: 1.15em;
	mask: var(--dk-i) center / contain no-repeat;
	width: 1.15em;
}

.has-icon-kalender { --dk-i: var(--dk-i-kalender); }
.has-icon-telefon,
.dk-link-telefon { --dk-i: var(--dk-i-telefon); }
.has-icon-pfeil,
.dk-link-pfeil { --dk-i: var(--dk-i-pfeil); }

.has-icon-pfeil .wp-element-button::before {
	order: 2;
}

.dk-link-pfeil a,
.dk-link-telefon a {
	align-items: center;
	display: inline-flex;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	gap: 0.6em;
	text-decoration: none;
}

.dk-link-pfeil a:hover::after {
	transform: translateX(3px);
}

/* Heller Button auf dunklem Grund. */
.wp-block-button.is-style-outline.dk-hell > .wp-element-button {
	background: transparent;
	border-color: var(--wp--preset--color--accent-light);
	color: var(--wp--preset--color--base);
}

/* ---------------------------------------------------------------------------
 * Listen
 * ------------------------------------------------------------------------ */

.is-style-haken {
	list-style: none;
	padding-left: 0;
}

.is-style-haken li {
	padding-left: 1.75em;
	position: relative;
}

.is-style-haken li + li {
	margin-top: 0.5em;
}

.is-style-haken li::before {
	background: var(--wp--preset--color--accent);
	content: "";
	height: 1.1em;
	left: 0;
	mask: var(--dk-i-haken) center / contain no-repeat;
	position: absolute;
	top: 0.25em;
	width: 1.1em;
}

.is-style-haken.dk-reihe {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem 1.6rem;
}

.is-style-haken.dk-reihe li + li {
	margin-top: 0;
}

/* Nummerierte Linkkacheln (Leistungsübersicht). */
.is-style-kacheln {
	counter-reset: dk-kachel;
	display: grid;
	gap: 0.875rem;
	grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
	list-style: none;
	padding: 0;
}

.is-style-kacheln li {
	counter-increment: dk-kachel;
	display: flex;
	margin: 0;
}

.is-style-kacheln a {
	align-items: center;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--linie);
	border-radius: 16px;
	box-sizing: border-box;
	color: var(--wp--preset--color--primary);
	display: flex;
	flex: 1;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	gap: 1rem;
	line-height: 1.3;
	padding: 1rem 1.25rem 1rem 1.375rem;
	text-decoration: none;
	transition: border-color 0.2s, box-shadow 0.2s;
}

.is-style-kacheln a::before {
	color: var(--wp--preset--color--accent);
	content: counter(dk-kachel, decimal-leading-zero);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 500;
	min-width: 1.4rem;
}

.is-style-kacheln a::after {
	background: var(--wp--preset--color--accent);
	content: "";
	flex: none;
	height: 1.25rem;
	margin-left: auto;
	mask: var(--dk-i-pfeil) center / contain no-repeat;
	width: 1.25rem;
}

.is-style-kacheln a:hover {
	border-color: var(--wp--preset--color--accent-light);
	box-shadow: var(--wp--preset--shadow--soft);
}

/* Telefon-Kachel als dunkler Abschluss. */
.is-style-kacheln li:has(a[href^="tel:"]) {
	counter-increment: none;
}

.is-style-kacheln a[href^="tel:"] {
	background: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
}

.is-style-kacheln a[href^="tel:"]::before {
	background: var(--wp--preset--color--accent-light);
	content: "";
	height: 1.35rem;
	mask: var(--dk-i-telefon) center / contain no-repeat;
	min-width: 1.35rem;
}

.is-style-kacheln a[href^="tel:"]::after {
	display: none;
}

/* Linkliste (Seitenliste in der Seitenspalte). */
.is-style-linkliste {
	list-style: none;
	margin: 0;
	padding: 0;
}

.is-style-linkliste a {
	align-items: center;
	border-bottom: 1px solid var(--wp--preset--color--linie);
	color: var(--wp--preset--color--primary);
	display: flex;
	font-weight: 600;
	justify-content: space-between;
	padding: 0.625rem 0;
	text-decoration: none;
}

.is-style-linkliste a::after {
	background: var(--wp--preset--color--accent);
	content: "";
	height: 1.1rem;
	mask: var(--dk-i-pfeil) center / contain no-repeat;
	width: 1.1rem;
}

.is-style-linkliste .current-menu-item > a {
	color: var(--wp--preset--color--accent);
}

/* ---------------------------------------------------------------------------
 * Organische Bildmasken („Klecks“) mit versetztem Farbschatten
 * ------------------------------------------------------------------------ */

[class*="is-style-klecks-"] {
	isolation: isolate;
	position: relative;
}

[class*="is-style-klecks-"] img {
	display: block;
	mask-position: center;
	mask-repeat: no-repeat;
	mask-size: 100% 100%;
	width: 100%;
}

[class*="is-style-klecks-"]::before {
	background: var(--wp--preset--color--accent-soft);
	content: "";
	inset: 0;
	mask-position: center;
	mask-repeat: no-repeat;
	mask-size: 100% 100%;
	position: absolute;
	z-index: -1;
}

.is-style-klecks-portrait-1 img { mask-image: url(assets/images/maske-portrait-1.webp); }
.is-style-klecks-portrait-1::before { mask-image: url(assets/images/maske-portrait-3.webp); transform: translate(5%, 4%) rotate(6deg); }

.is-style-klecks-portrait-2 img { mask-image: url(assets/images/maske-portrait-2.webp); }
.is-style-klecks-portrait-2::before { mask-image: url(assets/images/maske-portrait-3.webp); transform: translate(-5%, 4%) rotate(-5deg); }

.is-style-klecks-portrait-3 img { mask-image: url(assets/images/maske-portrait-3.webp); }
.is-style-klecks-portrait-3::before { mask-image: url(assets/images/maske-portrait-1.webp); transform: translate(5%, 5%) rotate(4deg); }

.is-style-klecks-quer-1 img { mask-image: url(assets/images/maske-quer-1.webp); }
.is-style-klecks-quer-1::before { mask-image: url(assets/images/maske-quer-2.webp); transform: translate(-3%, 4%) rotate(-3deg); }

.is-style-klecks-quer-2 img { mask-image: url(assets/images/maske-quer-2.webp); }
.is-style-klecks-quer-2::before { mask-image: url(assets/images/maske-quer-1.webp); transform: translate(3%, 4%) rotate(4deg); }

/* Schatten auf hellblauem Grund etwas kräftiger. */
.has-surface-alt-background-color [class*="is-style-klecks-"]::before,
.has-surface-background-color [class*="is-style-klecks-"]::before {
	background: #c4e2eb;
}

/* ---------------------------------------------------------------------------
 * Aquarell-Dekor (rein dekorativ, daher im CSS)
 * ------------------------------------------------------------------------ */

.dk-band {
	background: url(assets/images/aquarell-band.webp) center top / cover no-repeat;
}

.dk-seitenkopf,
.dk-fleck-rechts,
.dk-fleck-links,
.dk-hero-bild,
.dk-karte {
	isolation: isolate;
	position: relative;
}

.dk-seitenkopf::after {
	background: url(assets/images/aquarell-band.webp) center top / cover no-repeat;
	bottom: 0;
	content: "";
	height: 120px;
	left: 0;
	opacity: 0.8;
	position: absolute;
	right: 0;
	z-index: -1;
}

.dk-fleck-rechts,
.dk-fleck-links {
	overflow: hidden;
}

.dk-hero-bild::before,
.dk-fleck-rechts::before,
.dk-fleck-links::before,
.dk-karte::before {
	aspect-ratio: 1;
	background: url(assets/images/aquarell-fleck.webp) center / contain no-repeat;
	content: "";
	pointer-events: none;
	position: absolute;
	z-index: -1;
}

.dk-hero-bild::before {
	right: -12%;
	top: -8%;
	width: min(112%, 600px);
}

.dk-fleck-rechts::before {
	opacity: 0.55;
	right: -180px;
	top: -200px;
	width: 560px;
}

.dk-fleck-links::before {
	bottom: -220px;
	left: -200px;
	opacity: 0.5;
	width: 520px;
}

.dk-karte::before {
	left: 50%;
	opacity: 0.45;
	top: 50%;
	transform: translate(-50%, -50%);
	width: 380px;
}

/* ---------------------------------------------------------------------------
 * Startseite: Hero mit schwebenden Karten
 * ------------------------------------------------------------------------ */

.dk-hero-bild {
	margin-inline: auto;
	max-width: 420px;
	padding-block: 1.5rem;
	width: 100%;
}

.dk-hero-bild > .wp-block-image {
	margin: 0;
}

.dk-hero-bild--quer {
	max-width: none;
}

.dk-hero-bild--quer::before {
	right: -8%;
	top: -14%;
	width: 70%;
}

.dk-float {
	box-shadow: var(--wp--preset--shadow--soft);
	position: absolute;
	z-index: 1;
}

.dk-float > * {
	margin: 0;
}

.dk-float--name {
	bottom: 3.5rem;
	left: -1.75rem;
}

.dk-float--bewertung {
	right: -1.375rem;
	top: 4.5rem;
}

@media (max-width: 599.98px) {
	.dk-float--name { left: 0; }
	.dk-float--bewertung { right: 0; }
}

.dk-sterne {
	font-size: 0 !important;
	line-height: 1;
}

/* Füllgrad kommt bei gebundener Google-Note als --dk-anteil aus functions.php. */
.dk-sterne::before {
	-webkit-background-clip: text;
	background-clip: text;
	background-image: linear-gradient(90deg, var(--dk-stern) var(--dk-anteil, 100%), rgb(150 160 175 / 0.4) 0);
	color: transparent;
	content: "★★★★★";
	display: inline-block;
	font-size: 1.125rem;
	letter-spacing: 0.1em;
}

.dk-sterne.has-large-font-size::before {
	font-size: 1.5rem;
}

.dk-strich {
	background: var(--wp--preset--color--primary-dark);
	border: 0;
	height: 2px;
	margin-inline: auto;
	opacity: 1;
	width: 160px;
}

/* Bildcollage im Praxis-Abschnitt. */
.dk-collage {
	padding: 0 1.75rem 3rem 0;
	position: relative;
}

.dk-collage > .wp-block-image {
	margin: 0;
}

.dk-collage > .wp-block-image + .wp-block-image {
	bottom: 0;
	position: absolute;
	right: 0;
	width: 46%;
}

/*
 * Großes Bild in der Raumgalerie füllt exakt die Höhe der Nachbarspalte.
 * Absolut positioniert, damit seine eigene Bildhöhe die Zeile nicht mitbestimmt.
 */
.dk-bild-hoch {
	height: 100%;
	margin: 0;
	min-height: 360px;
	position: relative;
}

.dk-bild-hoch img {
	height: 100%;
	inset: 0;
	object-fit: cover;
	position: absolute;
	width: 100%;
}

.wp-block-column > .wp-block-image:last-child {
	margin-bottom: 0;
}

.wp-block-image .wp-element-caption {
	margin-top: 0.75rem;
}

/* Initialen-Avatar in Bewertungskarten. */
.dk-avatar {
	align-items: center;
	aspect-ratio: 1;
	background: var(--wp--preset--color--accent-soft);
	border-radius: 999px;
	color: var(--wp--preset--color--accent);
	display: flex;
	flex: none;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	justify-content: center;
	width: 2.5rem;
}

/* Ganze Karte klickbar über den ersten Link. */
.dk-linkkarte {
	position: relative;
	transition: box-shadow 0.2s, border-color 0.2s;
}

.dk-linkkarte a {
	color: inherit;
	text-decoration: none;
}

.dk-linkkarte a::after {
	border-radius: inherit;
	content: "";
	inset: 0;
	position: absolute;
}

.dk-linkkarte:hover {
	box-shadow: var(--wp--preset--shadow--soft);
}

/* Öffnungszeiten als zweispaltige Liste. */
.dk-zeiten {
	grid-template-columns: auto 1fr !important;
}

.dk-zeiten > * {
	margin: 0;
}

/* ---------------------------------------------------------------------------
 * Zwei-Klick-Karte
 * ------------------------------------------------------------------------ */

.dk-karte {
	overflow: hidden;
}

.dk-karte.is-geladen {
	padding: 0 !important;
}

.dk-karte iframe {
	border: 0;
	display: block;
	height: 100%;
	min-height: 340px;
	width: 100%;
}

/* ---------------------------------------------------------------------------
 * Zitat, Werte, Akkordeon
 * ------------------------------------------------------------------------ */

.dk-zitat {
	text-align: center;
}

.dk-zitat::before {
	background: url(assets/images/logo.webp) center / contain no-repeat;
	content: "";
	display: block;
	height: 72px;
	margin: 0 auto 1.375rem;
	width: 72px;
}

.dk-zitat cite {
	color: var(--wp--preset--color--muted);
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--small);
	font-style: normal;
	font-weight: 400;
}

.wp-block-accordion-heading__toggle {
	gap: 1rem;
	min-height: 4rem;
	padding: 1.25rem 1.5rem;
}

.wp-block-accordion-heading__toggle-icon {
	color: var(--wp--preset--color--accent);
	font-size: 1.5em;
	font-weight: 300;
}

/* Sprungziel im Panel: Titel bleibt beim Anspringen sichtbar. */
.wp-block-accordion-panel [id] {
	scroll-margin-top: 7rem;
}

.dk-akkordeon-flach .wp-block-accordion-item {
	background: var(--wp--preset--color--surface);
	border-color: transparent;
}

/* ---------------------------------------------------------------------------
 * Leistungsseiten
 * ------------------------------------------------------------------------ */

@media (min-width: 782px) {
	.dk-aside {
		position: sticky;
		top: 2rem;
	}
}

.dk-nummer {
	align-items: center;
	aspect-ratio: 1;
	background: var(--wp--preset--color--primary);
	border-radius: 999px;
	color: var(--wp--preset--color--base);
	display: flex;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	justify-content: center;
	width: 2.5rem;
}

/* ---------------------------------------------------------------------------
 * Fußbereich
 * ------------------------------------------------------------------------ */

.dk-footer a:not(.wp-element-button) {
	color: inherit;
}

.dk-footer .wp-block-icon {
	color: var(--wp--preset--color--base);
}

.dk-footer-nav.wp-block-navigation {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
}

.dk-footer-nav .wp-block-navigation-item__content {
	color: var(--wp--preset--color--base);
}

.dk-overline {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.dk-zentriert {
	text-align: center;
}

.dk-footer-unten a {
	text-decoration: underline;
}

/* Kleiner schwebender Termin-Button unten rechts, solange der Kopf keinen zeigt. */
.dk-termin-leiste {
	display: none;
}

@media (max-width: 1023.98px) {
	.dk-termin-leiste {
		bottom: calc(1rem + env(safe-area-inset-bottom));
		display: block;
		margin: 0 !important;
		position: fixed;
		right: var(--wp--preset--spacing--30);
		z-index: 90;
	}

	/* Heller Rand hebt den Button auch über dem dunklen Fußbereich ab. */
	.dk-termin-leiste .wp-element-button {
		border: 1px solid rgb(255 255 255 / 0.4);
		box-shadow: 0 10px 24px -10px rgb(16 32 63 / 0.55);
		min-height: 2.75rem;
		padding: 0.6rem 1.15rem;
	}

	/* Platz am Seitenende, damit der Button die letzte Zeile nicht verdeckt. */
	.dk-footer-unten {
		padding-bottom: 4rem;
	}
}

/* ---------------------------------------------------------------------------
 * Bewegung reduzieren
 * ------------------------------------------------------------------------ */

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	* {
		transition: none !important;
	}
}
