/*
Theme Name: domainhandel.biz
Theme URI: https://domainhandel.biz
Author: domainhandel.biz
Description: Eigenes Block-Theme für den Relaunch von domainhandel.biz (Anthrazit/Orange, WooCommerce + Germanized). Ersetzt Molti + Otter.
Version: 0.7.13
Requires at least: 6.5
Requires PHP: 8.0
Text Domain: domainhandel
*/

/* ---------- Self-hosted Marken-Schriften (DH-071) ---------- */
/* Lokale .woff2-Dateien statt Google-Fonts-Request, unabhängig vom "Local Google Fonts"-Plugin. Latin-Subset deckt deutsche Umlaute (ä/ö/ü/ß, U+00E4/00F6/00FC/00DF) bereits ab. */
@font-face {
	font-family: 'Barlow Semi Condensed';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('assets/fonts/barlow-semi-condensed-400.woff2') format('woff2');
}
@font-face {
	font-family: 'Barlow Semi Condensed';
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url('assets/fonts/barlow-semi-condensed-600.woff2') format('woff2');
}
@font-face {
	font-family: 'Barlow Semi Condensed';
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url('assets/fonts/barlow-semi-condensed-700.woff2') format('woff2');
}
@font-face {
	font-family: 'Source Serif 4';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('assets/fonts/source-serif-4-400.woff2') format('woff2');
}
@font-face {
	font-family: 'Source Serif 4';
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url('assets/fonts/source-serif-4-400-italic.woff2') format('woff2');
}
@font-face {
	font-family: 'Source Serif 4';
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url('assets/fonts/source-serif-4-600.woff2') format('woff2');
}
@font-face {
	font-family: 'Source Serif 4';
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url('assets/fonts/source-serif-4-700.woff2') format('woff2');
}
@font-face {
	font-family: 'JetBrains Mono';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('assets/fonts/jetbrains-mono-400.woff2') format('woff2');
}
@font-face {
	font-family: 'JetBrains Mono';
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url('assets/fonts/jetbrains-mono-500.woff2') format('woff2');
}
@font-face {
	font-family: 'JetBrains Mono';
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url('assets/fonts/jetbrains-mono-700.woff2') format('woff2');
}

:root {
	--dh-border: #e2ddd3;
	--dh-surface-sunken: #efece6;
	--dh-band-surface: var(--wp--preset--color--anthrazit-soft);
	--dh-shadow: rgba(47, 50, 56, 0.16);
	--dh-ghost: rgba(47, 50, 56, 0.05);
	--dh-pattern-line: rgba(255, 255, 255, 0.05);
}

a {
	text-decoration: none;
}
a:hover {
	text-decoration: none;
}

.dh-counter {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 44px;
	font-weight: 700;
	line-height: 1.1;
}
.dh-counter p {
	/* Die beiden Live-Zahlen ([dh_product_count]/[dh_years_since]) laufen durch einen Shortcode-Block
	   und werden dabei in ein <p> gewrapt (Standard-Absatzabstand), die dritte, fest eingetragene Zahl
	   "12.000+" nicht - dadurch stand sie sichtbar hoeher/anders zentriert als die anderen beiden. */
	margin: 0;
}

.dh-testimonial-card img {
	border-radius: 50%;
	width: 56px;
	height: 56px;
	object-fit: cover;
}

/* ---------- Site chrome ---------- */
/* Sticky muss auf dem von WordPress automatisch erzeugten Template-Part-Wrapper sitzen, nicht auf
   header.site-header selbst: der Wrapper ist exakt so hoch wie der Header (keine eigene Extra-Hoehe),
   wodurch position:sticky auf dem inneren Element sofort wieder "freigegeben" wird, sobald der Wrapper
   selbst aus dem Viewport scrollt - der Header klebte dadurch nur fuer die ersten paar Pixel Scroll und
   verschwand danach ganz normal. Der Wrapper ist Kind von .wp-site-blocks (praktisch seitenhoch), das
   gibt sticky den noetigen Spielraum ueber die ganze Seite. */
header.wp-block-template-part {
	position: sticky;
	top: 0;
	z-index: 60;
}
header.site-header {
	border-bottom: 1px solid var(--dh-border);
	background: #fff;
}
.dh-logo-img {
	/* !important noetig: WooCommerce laedt auf Shop/Produkt/Warenkorb/Kasse-Seiten eine eigene
	   Regel ".woocommerce img { height:auto; max-width:100% }", die durch den zusaetzlichen
	   Element-Selektor hoehere Spezifitaet hat als unsere einfache Klasse und sonst die
	   intrinsische Bildgroesse (500x200px) durchsetzt statt der Header-Hoehe. */
	height: 58px !important;
	width: auto !important;
	display: block;
}
.dh-logo-img.on-dark {
	filter: brightness(0) invert(1);
	opacity: 0.95;
}
.dh-nav-primary {
	display: flex;
	gap: 30px;
}
/* Der [dh_cart_icon]-Shortcode-Block wird von Gutenberg automatisch in ein <p> gewrapt (siehe
   .dh-counter p weiter unten fuer denselben Effekt) - hier wuerde das <p> als Block-Element den
   Header-Flex-Layout brechen. "display:contents" macht den Wrapper layoutmaessig unsichtbar, der
   Link verhaelt sich als waere er ein direktes Flex-Kind. */
.site-header .wp-block-group > p {
	display: contents;
}
.dh-cart-link {
	position: relative;
	display: flex;
	align-items: center;
	flex: none;
}
.dh-cart-icon {
	width: 23px;
	height: 23px;
	stroke: var(--wp--preset--color--anthrazit);
	fill: none;
	stroke-width: 1.6;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.dh-cart-count {
	position: absolute;
	top: -7px;
	right: -9px;
	min-width: 16px;
	height: 16px;
	padding: 0 3px;
	border-radius: 999px;
	background: var(--wp--preset--color--orange);
	color: #fff;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	font-weight: 700;
	line-height: 16px;
	text-align: center;
}
.dh-nav-toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 34px;
	height: 34px;
	padding: 0;
	border: none;
	background: none;
	cursor: pointer;
}
.dh-nav-toggle span {
	display: block;
	width: 100%;
	height: 2px;
	background: var(--wp--preset--color--anthrazit);
	border-radius: 1px;
	transition: transform 0.2s ease, opacity 0.2s ease;
}
.dh-nav-toggle[aria-expanded="true"] span:nth-child(1) {
	transform: translateY(7px) rotate(45deg);
}
.dh-nav-toggle[aria-expanded="true"] span:nth-child(2) {
	opacity: 0;
}
.dh-nav-toggle[aria-expanded="true"] span:nth-child(3) {
	transform: translateY(-7px) rotate(-45deg);
}
@media (max-width: 900px) {
	.dh-nav-toggle {
		display: flex;
	}
	.dh-nav-primary {
		display: none;
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		flex-direction: column;
		gap: 0;
		background: #fff;
		border-bottom: 1px solid var(--dh-border);
		box-shadow: 0 12px 24px -16px var(--dh-shadow);
	}
	.dh-nav-primary.is-open {
		display: flex;
	}
	.dh-nav-primary a {
		padding: 14px 32px;
		border-top: 1px solid var(--dh-border);
	}
}
.dh-eyebrow {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--orange);
	margin: 0 0 16px;
	display: flex;
	align-items: center;
	gap: 10px;
}
.dh-eyebrow::before {
	content: "";
	width: 22px;
	height: 1px;
	background: var(--wp--preset--color--orange);
	display: inline-block;
}

/* ---------- Hero ---------- */
.dh-hero-section {
	position: relative;
	overflow: hidden;
	border-bottom: 1px solid var(--dh-border);
}
.dh-hero-section::before {
	content: "//";
	position: absolute;
	top: -120px;
	right: -40px;
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	font-size: 460px;
	line-height: 1;
	color: var(--dh-ghost);
	pointer-events: none;
	user-select: none;
}
.dh-hero-grid {
	display: grid;
	grid-template-columns: 0.86fr 1.14fr;
	gap: 40px;
	align-items: start;
	padding: 76px 0 96px;
	position: relative;
}
.dh-hero-copy {
	padding-top: 26px;
}
.dh-hero-copy h1 {
	font-size: clamp(36px, 4.2vw, 54px);
	line-height: 1.05;
}
.dh-hero-copy h1 .dh-slash {
	color: var(--wp--preset--color--orange);
}
.dh-hero-copy p {
	font-size: 18px;
	max-width: 52ch;
	color: var(--wp--preset--color--anthrazit-soft);
}
.dh-hero-actions {
	display: flex;
	align-items: center;
	gap: 22px;
	margin-top: 22px;
	flex-wrap: wrap;
}
.dh-hero-actions .wp-block-button__link {
	padding: 14px 28px;
	box-shadow: 0 10px 24px -12px var(--dh-shadow);
	transition: transform 0.15s ease, filter 0.15s ease;
}
.dh-hero-actions .wp-block-button__link:hover {
	filter: brightness(1.05);
	transform: translateY(-1px);
	text-decoration: none;
}
.dh-hero-meta {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	color: var(--wp--preset--color--anthrazit-soft);
}

/* Hero visual: wide domain-card spread, always-visible top strip per card */
.hero-visual {
	position: relative;
	height: 620px;
	width: 100%;
}
.blob {
	position: absolute;
	width: 380px;
	height: 380px;
	right: 0;
	top: -20px;
	background: radial-gradient(circle at 30% 30%, var(--wp--preset--color--orange-tint), transparent 70%);
	border-radius: 50%;
	filter: blur(2px);
}
.card-stack {
	position: absolute;
	inset: 0;
}
.listing-card {
	position: absolute;
	left: 0;
	bottom: 40px;
	width: 300px;
	background: #fff;
	border: 1px solid var(--dh-border);
	border-radius: 9px;
	box-shadow: 0 20px 40px -18px var(--dh-shadow);
	overflow: hidden;
	cursor: pointer;
	transform-origin: 50% 100%;
	transition: transform 0.45s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.3s ease;
}
.listing-card.is-front {
	cursor: default;
	box-shadow: 0 28px 52px -16px var(--dh-shadow);
}
.listing-chrome {
	display: flex;
	align-items: center;
	gap: 9px;
	padding: 9px 13px;
	height: 36px;
	border-bottom: 1px solid var(--dh-border);
	background: var(--dh-surface-sunken);
}
.listing-lock {
	width: 10px;
	height: 10px;
	border: 1.5px solid var(--wp--preset--color--anthrazit-soft);
	border-radius: 2px;
	position: relative;
	flex: none;
}
.listing-lock::before {
	content: "";
	position: absolute;
	top: -5.5px;
	left: 1.2px;
	width: 5.5px;
	height: 5.5px;
	border: 1.5px solid var(--wp--preset--color--anthrazit-soft);
	border-bottom: none;
	border-radius: 4px 4px 0 0;
}
.listing-name {
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	font-size: 14.5px;
	color: var(--wp--preset--color--anthrazit);
	flex: 1;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.listing-price-chip {
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 700;
	font-size: 12px;
	color: var(--wp--preset--color--orange);
	flex: none;
	font-variant-numeric: tabular-nums;
}
.listing-body {
	padding: 16px 15px;
}
.listing-tags {
	display: flex;
	gap: 6px;
	margin: 0 0 12px;
}
.tag {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10.5px;
	letter-spacing: 0.04em;
	padding: 3px 8px;
	border-radius: 20px;
	background: var(--wp--preset--color--orange-tint);
	color: var(--wp--preset--color--orange);
}
.tag.neutral {
	background: var(--dh-surface-sunken);
	color: var(--wp--preset--color--anthrazit-soft);
}
.listing-status {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--anthrazit-soft);
	margin: 0 0 4px;
}
.listing-cta {
	display: block;
	margin-top: 10px;
	padding-top: 12px;
	border-top: 1px dashed var(--dh-border);
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	font-size: 14px;
	color: var(--wp--preset--color--orange);
}
.listing-cta:hover {
	text-decoration: none;
}
.listing-cta .dh-arrow {
	display: inline-block;
	transition: transform 0.18s ease;
}
.listing-cta:hover .dh-arrow {
	transform: translateX(4px);
}
.stack-hint {
	position: absolute;
	bottom: 4px;
	left: 12px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11.5px;
	color: var(--wp--preset--color--anthrazit-soft);
}

/* ---------- Services (editorial rows) ---------- */
.dh-section-head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 24px;
	margin-bottom: 32px;
	border-bottom: 1px solid var(--dh-border);
	padding-bottom: 18px;
}
.dh-section-head h2 {
	font-size: 15px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--anthrazit);
	margin: 0;
}
.dh-section-head .dh-count {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12.5px;
	color: var(--wp--preset--color--anthrazit-soft);
}
.service-rows {
	display: flex;
	flex-direction: column;
}
.service-row {
	display: flex;
	align-items: center;
	gap: 26px;
	padding: 28px 4px;
	border-bottom: 1px solid var(--dh-border);
	transition: background 0.18s ease;
	color: inherit;
}
.service-row:first-child {
	border-top: 1px solid var(--dh-border);
}
.service-row:hover {
	background: var(--dh-surface-sunken);
}
.icon-circle {
	width: 52px;
	height: 52px;
	border-radius: 50%;
	background: var(--wp--preset--color--orange-tint);
	display: flex;
	align-items: center;
	justify-content: center;
	flex: none;
}
.icon-circle svg {
	width: 24px;
	height: 24px;
	stroke: var(--wp--preset--color--orange);
	fill: none;
	stroke-width: 1.6;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.service-copy {
	flex: 1;
	min-width: 0;
}
.service-head-line {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	margin-bottom: 5px;
}
.service-copy h3 {
	margin: 0;
	font-size: 21px;
}
.service-badge {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10.5px;
	letter-spacing: 0.05em;
	padding: 4px 10px 4px 8px;
	border-radius: 20px;
	background: var(--dh-surface-sunken);
	color: var(--wp--preset--color--anthrazit-soft);
	display: inline-flex;
	align-items: center;
	gap: 6px;
	white-space: nowrap;
}
.service-badge .live-dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--wp--preset--color--orange);
	flex: none;
}
.service-copy p {
	margin: 0;
	color: var(--wp--preset--color--anthrazit-soft);
	font-size: 15px;
}
.service-row-go {
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	font-size: 14px;
	color: var(--wp--preset--color--anthrazit);
	flex: none;
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.service-row-go .dh-arrow {
	transition: transform 0.18s ease;
}
.service-row:hover .service-row-go {
	color: var(--wp--preset--color--orange);
}
.service-row:hover .service-row-go .dh-arrow {
	transform: translateX(4px);
}

/* ---------- Stats ---------- */
.dh-stats {
	position: relative;
	background: var(--wp--preset--color--anthrazit);
	color: #fff;
	padding: 76px 0;
	background-image: repeating-linear-gradient(-45deg, var(--dh-pattern-line), var(--dh-pattern-line) 1px, transparent 1px, transparent 26px);
}
.dh-stats-head {
	text-align: center;
	margin-bottom: 48px;
}
.dh-stats-head .dh-eyebrow {
	justify-content: center;
	color: #a9adb4;
}
.dh-stats-head h2 {
	color: #fff;
	font-size: 32px;
	margin: 0;
}
.dh-stats-head h2 .dh-accent {
	color: var(--wp--preset--color--orange);
}
.dh-stats-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1px;
	background: rgba(255, 255, 255, 0.09);
	border: 1px solid rgba(255, 255, 255, 0.09);
	border-radius: 10px;
	overflow: hidden;
}
.dh-stat {
	background: var(--dh-band-surface);
	text-align: center;
	padding: 34px 20px 30px;
}
.dh-stat .dh-counter {
	color: var(--wp--preset--color--orange);
	line-height: 1;
}
.dh-stat .dh-label {
	margin-top: 12px;
	color: #fff;
	font-size: 14.5px;
	font-family: var(--wp--preset--font-family--display);
	font-weight: 600;
}
.dh-stat .dh-src {
	margin-top: 8px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10.5px;
	color: #a9adb4;
	opacity: 0.75;
}

/* ---------- Testimonials ---------- */
.dh-testimonials {
	padding: 84px 0;
}
.dh-testi-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 1px;
	background: var(--dh-border);
	border: 1px solid var(--dh-border);
	border-radius: 10px;
	overflow: hidden;
}
.dh-testimonial-card {
	position: relative;
	background: #fff;
	padding: 32px 30px 28px;
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.dh-testimonial-card::before {
	content: "\201C";
	position: absolute;
	top: 6px;
	right: 20px;
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	font-size: 96px;
	color: var(--wp--preset--color--orange-tint);
	line-height: 1;
	pointer-events: none;
}
.dh-testi-top {
	display: flex;
	align-items: center;
	gap: 13px;
	position: relative;
}
.dh-testi-top img {
	border: 2px solid var(--wp--preset--color--orange-tint);
}
.dh-testi-top .dh-who strong {
	display: block;
	font-family: var(--wp--preset--font-family--display);
	font-size: 15.5px;
	font-weight: 700;
	color: var(--wp--preset--color--anthrazit);
}
.dh-testi-top .dh-who span {
	font-size: 12.5px;
	color: var(--wp--preset--color--anthrazit-soft);
}
.dh-testimonial-card q {
	font-style: italic;
	font-size: 16.5px;
	color: var(--wp--preset--color--anthrazit);
	quotes: none;
	margin: 0;
	position: relative;
}

/* ---------- CTA ---------- */
.dh-cta-band {
	padding: 0 0 84px;
}
.dh-cta-inner {
	position: relative;
	overflow: hidden;
	background: var(--wp--preset--color--orange);
	color: #fff;
	border-radius: 10px;
	padding: 48px 52px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 32px;
	flex-wrap: wrap;
}
.dh-cta-inner::after {
	content: "";
	position: absolute;
	inset: 0;
	background-image: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.07) 1px, transparent 1px, transparent 22px);
	pointer-events: none;
}
.dh-cta-inner > * {
	position: relative;
}
.dh-cta-inner h2 {
	color: #fff;
	font-size: 27px;
	margin-bottom: 8px;
}
.dh-cta-inner p {
	margin: 0 0 12px;
	max-width: 46ch;
	opacity: 0.95;
}
.dh-cta-checks {
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	font-size: 14px;
	display: flex;
	gap: 20px;
}
.dh-cta-inner .wp-block-button__link {
	border-color: #fff;
	color: #fff;
	background: transparent;
}
.dh-cta-inner .wp-block-button__link:hover {
	background: rgba(255, 255, 255, 0.14);
}

/* ---------- Footer ---------- */
.dh-footer-grid {
	display: grid;
	grid-template-columns: 1.6fr 1fr 1fr 1fr;
	gap: 36px;
}
.dh-footer-grid h4 {
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 500;
	font-size: 12px;
	letter-spacing: 0.09em;
	color: var(--wp--preset--color--orange);
	margin: 0 0 16px;
	text-transform: uppercase;
}
.dh-footer-brand .dh-logo-img {
	height: 72px !important;
	margin-bottom: 16px;
}
.dh-footer-brand p {
	color: #a9adb4;
	font-size: 14px;
	max-width: 32ch;
}
.dh-footer-bottom {
	margin-top: 44px;
	padding-top: 22px;
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: #a9adb4;
}

/* ---------- Breadcrumb (woocommerce_breadcrumb) ---------- */
/* !important auf den Font-Regeln in diesem Abschnitt: WooCommerce setzt auf Shop-/Produkt-Seiten
   ueber ".woocommerce"-Ancestor-Selektoren eigene Schriftarten mit hoeherer Spezifitaet, dadurch
   liefen Breadcrumb/Ergebniszaehler/Sortierung sichtbar in einer anderen Schrift als der Rest. */
.woocommerce-breadcrumb {
	/* Kundenwunsch 18.08.2026: UI-Fließtext auf die normale Artikel-Schrift statt Mono/Display,
	   nur echte Designelemente (Eyebrows, Buttons, Nav, Hero/Stats) behalten ihre Sonderschrift.
	   !important bleibt noetig, da WooCommerce hier weiterhin eine eigene Schriftart setzt. */
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 12.5px;
	color: var(--wp--preset--color--anthrazit-soft);
	padding: 22px 0 0;
	margin: 0 0 8px;
}
.woocommerce-breadcrumb a {
	color: var(--wp--preset--color--anthrazit-soft);
}
.woocommerce-breadcrumb a:hover {
	color: var(--wp--preset--color--orange);
}

/* ---------- Shop archive ---------- */
.dh-shop-page .wp-block-post-title,
.dh-shop-page h1.page-title {
	font-size: clamp(30px, 3.4vw, 42px);
	margin: 4px 0 30px;
}
.dh-shop-page .woocommerce-notices-wrapper:empty {
	display: none;
}
.woocommerce-result-count,
.woocommerce-ordering {
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 13px;
	color: var(--wp--preset--color--anthrazit-soft);
}
.woocommerce-ordering select {
	font-family: var(--wp--preset--font-family--body) !important;
	border: 1px solid var(--dh-border);
	border-radius: 4px;
	padding: 7px 10px;
	background: #fff;
}
.dh-per-page-form {
	float: right;
	margin: 0 12px 0 0;
	display: flex;
	align-items: center;
	gap: 8px;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 13px;
	color: var(--wp--preset--color--anthrazit-soft);
}
.dh-per-page-form select {
	font-family: var(--wp--preset--font-family--body) !important;
	border: 1px solid var(--dh-border);
	border-radius: 4px;
	padding: 7px 10px;
	background: #fff;
}
/* Kompakte Zeilenliste statt Bild-Karten (Kundenwunsch, Referenz buy.nameshift.com) - lehnt sich
   bewusst an das bestehende .service-row-Muster der Startseite an statt an einen neuen Stil. */
ul.products {
	display: flex;
	flex-direction: column;
	list-style: none;
	margin: 10px 0 0;
	padding: 0;
	border-top: 1px solid var(--dh-border);
}
ul.products li.product {
	/* WooCommerces eigenes woocommerce-layout.css setzt float:left + feste %-Breite fuer sein
	   klassisches Karten-Grid via Floats - hier explizit zurueckgesetzt, sonst kollidiert das
	   mit dem eigenen Zeilenlayout. */
	width: auto !important;
	float: none !important;
	margin: 0 !important;
	clear: none !important;
	display: flex;
	/* Domainname/Preis/MwSt-Hinweis laufen jetzt auf einheitlicher Schriftgroesse (16px, siehe
	   Kundenwunsch 18.08.2026 weiter unten) - "center" zentriert Text + Warenkorb-Button sauber
	   zwischen den Trennlinien der Zeile, ohne dass wie zuvor bei stark unterschiedlichen
	   Schriftgroessen ein optischer Versatz durch unterschiedlich hohe Boxen entsteht. */
	align-items: center;
	gap: 20px;
	padding: 18px 4px;
	border-bottom: 1px solid var(--dh-border);
	transition: background 0.15s ease;
	position: relative;
}
ul.products li.product:hover {
	background: var(--dh-surface-sunken);
}
/* WooCommerce/Germanized geben pro Karte mehrere <p>-Wrapper aus (u.a. einen jetzt leeren
   Thumbnail-Wrapper, da das Produktbild bewusst entfernt wurde) - Margins zuruecksetzen und
   leere Wrapper ausblenden, sonst reisst das die Zeile auseinander. */
ul.products li.product p {
	margin: 0;
}
ul.products li.product > p:empty,
ul.products li.product a.woocommerce-LoopProduct-link > p:empty {
	display: none !important;
}
ul.products li.product a.woocommerce-LoopProduct-link {
	display: flex !important;
	flex-wrap: nowrap !important;
	align-items: center !important;
	flex: 1;
	min-width: 0;
	color: inherit;
}
/* Der <p>, der .price umschliesst, ist selbst das Flex-Item (nicht der span.price darin) -
   WooCommerce/Germanized geben ihm sonst volle Blockbreite, wodurch er unter den Titel
   rutscht statt daneben zu stehen. */
ul.products li.product a.woocommerce-LoopProduct-link > p {
	display: block !important;
	width: auto !important;
	flex: none !important;
}
ul.products li.product a.woocommerce-LoopProduct-link > p:not(:empty) {
	margin-left: 16px !important;
}
ul.products li.product img {
	display: none;
}
/* Domain + Preis + MwSt-Hinweis + Kaufen-Button in einer Zeile (Kundenwunsch 13.08.2026) */
/* Domainname/Preis/MwSt-Hinweis bewusst auf einen gemeinsamen Schriftstil vereinheitlicht
   (Kundenwunsch 18.08.2026) - gleiche Familie + gleiche Groesse fuer alle drei, nur der
   Domainname bleibt durch font-weight:700 hervorgehoben, Preis/MwSt-Hinweis sind normal. */
ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--wp--preset--font-family--body) !important;
	font-weight: 700;
	/* !important noetig: WooCommerce-Kern-CSS (woocommerce.css/woocommerce-blocktheme.css) hat eigene
	   ".woocommerce ul.products li.product .woocommerce-loop-product__title"-Regeln mit font-size in
	   em - durch die zusaetzliche ".woocommerce"-Bodyklasse auf Shop-Seiten hoehere Spezifitaet als
	   unsere Regel, gleiches Spezifitaets-Grundmuster wie beim Logo/Schriftart-Fund in DH-018. */
	font-size: 14px !important;
	margin: 0;
	color: var(--wp--preset--color--anthrazit);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	flex: 1 !important;
	min-width: 0;
}
ul.products li.product .price {
	font-family: var(--wp--preset--font-family--body) !important;
	font-weight: 400;
	color: var(--wp--preset--color--anthrazit);
	margin: 0 0 0 16px;
	/* !important: siehe Kommentar bei .woocommerce-loop-product__title oben - WooCommerce-Kern-CSS
	   setzt hier ebenfalls eine spezifischere ".woocommerce ..."-Regel (0.857em). */
	font-size: 14px !important;
	flex: none;
	white-space: nowrap;
}
/* Absicherung: die WooCommerce-Preis-Ausgabe verschachtelt Preiszahl/Waehrungssymbol in eigene
   Spans/bdi - erbt bei uns zwar bereits korrekt von .price, aber falls eine WooCommerce-Version
   dort doch eine eigene, spezifischere font-size-Regel mitbringt, hier zur Sicherheit explizit
   auf den Elternwert fixiert statt sich auf reine Vererbung zu verlassen. */
ul.products li.product .price .woocommerce-Price-amount,
ul.products li.product .price bdi,
ul.products li.product .price .woocommerce-Price-currencySymbol {
	font-size: inherit !important;
}
ul.products li.product .wc-gzd-additional-info.tax-info {
	flex: none;
	font-family: var(--wp--preset--font-family--body) !important;
	font-weight: 400;
	font-size: 14px !important;
	color: var(--wp--preset--color--anthrazit-soft);
	margin: 0 0 0 16px !important;
	white-space: nowrap;
}
ul.products li.product .button {
	flex: none;
	/* !important noetig: WooCommerce-Kern-CSS setzt ".woocommerce ul.products li.product .button"
	   mit margin-top:1em und gewinnt durch die zusaetzliche ".woocommerce"-Bodyklasse gegen unsere
	   einfache Regel (exakt dasselbe Spezifitaets-Muster wie bei .price/.woocommerce-loop-product__
	   title/Pagination, siehe DH-072-Notizen in ToDo.md) - der Button sass dadurch trotz des
	   eigentlich schon auf 0 gesetzten margin-top weiterhin sichtbar tiefer als Domainname/Preis/
	   MwSt-Hinweis in derselben Zeile, mit dem alten margin:0-Wert ohne !important blieb das
	   WooCommerce-margin-top:1em also weiterhin wirksam. */
	margin: 0 0 0 16px !important;
	padding: 8px 16px;
	border-radius: 4px;
	background: var(--wp--preset--color--anthrazit);
	color: #fff;
	font-family: var(--wp--preset--font-family--display) !important;
	font-weight: 700;
	font-size: 12.5px;
	white-space: nowrap;
}
ul.products li.product .button:hover {
	background: var(--wp--preset--color--orange);
	text-decoration: none;
}
@media (max-width: 640px) {
	ul.products li.product {
		flex-wrap: wrap;
		/* Kundenwunsch 20.08.2026: weniger Abstand zwischen den beiden Zeilen (Domainname / Preis+MwSt+
		   Button) pro Trefferzeile - row-gap eigens auf 4px reduziert (column-gap bleibt bei 20px fuer den
		   Abstand zwischen Preis/MwSt.-Hinweis/Button), Vertikal-Padding der Zeile leicht verkleinert. */
		row-gap: 4px;
		padding: 12px 4px;
	}
	/* Fund 20.08.2026 (DH-093): Der Link (Domainname+Preis) hat flex:1 + min-width:0 und wurde daher auf
	   Mobilgeraeten statt umzubrechen einfach auf 0 Breite zusammengedrueckt (Domainname unsichtbar, Preis
	   ueberlappte mit dem MwSt.-Hinweis). Fix: `display:contents` loest den Link als eigene Flex-Box auf,
	   sodass Domainname und Preis direkt zu Flex-Items der <li> werden - der Domainname bekommt dadurch
	   eine eigene volle Zeile (Kundenwunsch), Preis wandert zu MwSt.-Hinweis/Button in die naechste Zeile. */
	/* !important noetig: Basisregel weiter oben setzt "display:flex !important" auf denselben Selektor -
	   ohne eigenes !important hier gewinnt trotz Media Query weiterhin die Basisregel (gleiche Spezifitaet,
	   erste !important-Regel im Cascade-Ursprung zaehlt), display:contents griff dadurch beim ersten
	   Versuch gar nicht. */
	ul.products li.product a.woocommerce-LoopProduct-link {
		display: contents !important;
	}
	ul.products li.product .woocommerce-loop-product__title {
		/* flex-shrink:0 ist der eigentliche Fix - ohne das durfte der Titel trotz flex-basis:100% weiter
		   schrumpfen (die Ellipsis-Kuerzung "loeste" den Overflow aus Sicht des Flex-Algorithmus, ohne
		   dass ein echter Zeilenumbruch noetig schien), Domainname landete nur noch als "0-..." sichtbar. */
		flex: 1 0 100% !important;
	}
	/* Der Preis-<p> bekommt von einer Basisregel weiter oben (".../link > p:not(:empty)") einen
	   margin-left:16px !important, gedacht fuer die Desktop-Inline-Anordnung neben dem Titel im Link -
	   auf Mobilgeraeten (jetzt eigene Zeile mit MwSt.-Hinweis/Button) muss das auf 0 zurueckgesetzt
	   werden, sonst verschiebt sich der Preis so weit nach rechts, dass er mit dem MwSt.-Hinweis
	   ueberlappt statt sauber davor zu stehen. */
	ul.products li.product a.woocommerce-LoopProduct-link > p:not(:empty) {
		margin-left: 0 !important;
	}
	ul.products li.product .price,
	ul.products li.product .wc-gzd-additional-info.tax-info,
	ul.products li.product .button {
		/* Vertikaler Abstand kommt jetzt vom row-gap der <li> weiter oben - eigenes Top-Margin nur noch
		   auf 0 gesetzt, sonst addiert sich beides und die Zeile wirkt wieder zu hoch. */
		margin: 0 !important;
	}
	/* Kundenwunsch 20.08.2026: "In den Warenkorb"-Text auf Mobilgeraeten durch dasselbe Warenkorb-Icon
	   ersetzen, das auch im Header verwendet wird (siehe dh_cart_icon-Shortcode) - spart Breite in der
	   jetzt gedraengteren zweiten Zeile (Preis + MwSt.-Hinweis + Button). Text bleibt fuer Screenreader
	   im DOM (font-size:0 blendet nur visuell aus, accessible name bleibt unveraendert). */
	ul.products li.product .button {
		font-size: 0 !important;
		width: 34px;
		height: 34px;
		padding: 0 !important;
		display: inline-flex;
		align-items: center;
		justify-content: center;
		flex-shrink: 0;
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4h2l2.4 12.4a2 2 0 0 0 2 1.6h8.2a2 2 0 0 0 2-1.6L21 8H6'/%3E%3Ccircle cx='9.5' cy='20' r='1.4'/%3E%3Ccircle cx='17.5' cy='20' r='1.4'/%3E%3C/svg%3E");
		background-repeat: no-repeat;
		background-position: center;
		background-size: 18px 18px;
	}
}

/* ---------- Shop-Filter-Sidebar (DH-059/DH-023, Referenz nameshift.com/en-gb/domains) ---------- */
.dh-shop-layout {
	display: grid;
	grid-template-columns: 260px 1fr;
	gap: 40px;
	align-items: start;
	margin-top: 8px;
}
.dh-shop-filters {
	position: sticky;
	top: 20px;
	background: #fff;
	border: 1px solid var(--dh-border);
	border-radius: 9px;
	padding: 16px;
	/* max-height + overflow-y: Sicherheitsnetz gegen die klassische Sticky-Sidebar-Falle - waechst
	   der Filter-Inhalt (z.B. durch weitere Checkboxen) irgendwann hoeher als der Viewport, wuerde
	   "Filtern"/"Zurücksetzen" sonst unerreichbar unterhalb des sichtbaren Bereichs haengen, ohne
	   Moeglichkeit, dorthin zu scrollen (position:sticky "klemmt" ja bereits an top:20px fest). Mit
	   eigenem Overflow bleibt die Card immer vollstaendig erreichbar, notfalls per Innen-Scroll. */
	max-height: calc(100vh - 40px);
	overflow-y: auto;
}
.dh-filter-group {
	/* Bewusst ohne Trennlinien/Padding-Puffer zwischen den Gruppen (Kundenwunsch: "viel kompakter") -
	   ein knapper margin-bottom traegt hier die gesamte visuelle Trennung. */
	margin-bottom: 12px;
}
.dh-filter-group:last-of-type {
	margin-bottom: 0;
}
/* Gesamter Filter-Block auf einen einheitlichen Schriftstil gebracht (Kundenwunsch 18.08.2026:
   vorher wilder Mix aus Eyebrow-Grossschrift-Labels, einer fett/normalgrossen Zwischenueberschrift,
   unterschiedlich grossen Inputs und ungewollt fett gerenderten Checkbox-Texten). Alle Labels
   (Kategorie/Domainlaenge/Preis/Nur Domains ...) jetzt identisch: normale Gross-/Kleinschreibung,
   gleiche Groesse/Gewicht, kein Eyebrow-Letterspacing mehr. */
/* ">" statt Leerzeichen: sonst matcht die Regel wegen des generischen "label"-Selektors versehentlich
   auch die verschachtelten .dh-filter-check-Labels (echte Checkbox-Zeilen) weiter unten im selben
   Gruppen-Container und überschreibt dort ungewollt deren eigenes font-weight:400. */
.dh-filter-group > label,
.dh-filter-group--checks > label {
	display: block;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	color: var(--wp--preset--color--anthrazit) !important;
	margin-bottom: 6px;
}
.dh-filter-group select {
	width: 100%;
	padding: 8px 9px;
	border: 1px solid var(--dh-border);
	border-radius: 4px;
	background: #fff;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 13px !important;
	font-weight: 400 !important;
	color: var(--wp--preset--color--anthrazit);
}
.dh-filter-range {
	display: flex;
	align-items: center;
	gap: 7px;
}
.dh-filter-range input {
	width: 0;
	flex: 1;
	padding: 8px;
	border: 1px solid var(--dh-border);
	border-radius: 4px;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 13px !important;
	font-weight: 400 !important;
}
.dh-filter-range span {
	color: var(--wp--preset--color--anthrazit-soft);
	flex: none;
}
.dh-filter-checks {
	/* Eine Spalte statt zwei: bei "Ohne Bindestrich"/"Ohne Ziffern" reichte die Spaltenbreite der
	   schmalen Sidebar nicht, der Text brach haesslich zweizeilig um - eine Spalte mit knappem
	   Zeilenabstand ist kompakter als die urspruengliche Version und bleibt trotzdem lesbar. */
	display: flex;
	flex-direction: column;
	gap: 7px;
}
.dh-filter-check {
	display: flex !important;
	align-items: center;
	gap: 7px;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 13px !important;
	/* !important noetig: ohne eigene Regel erbten die Checkbox-Texte ungewollt fett von einer
	   generischen "label"-Regel (vermutlich WooCommerce-Kern-CSS, gleiches Spezifitaets-Grund-
	   muster wie schon bei .price/.woocommerce-loop-product__title) - sahen dadurch faelschlich
	   genauso fett aus wie die Gruppen-Ueberschrift "Nur Domains ...". */
	font-weight: 400 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	color: var(--wp--preset--color--anthrazit) !important;
	cursor: pointer;
}
.dh-filter-check input {
	width: 15px;
	height: 15px;
	flex: none;
	accent-color: var(--wp--preset--color--orange);
}
.dh-filter-actions {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin-top: 16px;
}
.dh-filter-submit {
	width: 100%;
	padding: 10px 16px;
	border: none;
	border-radius: 4px;
	background: var(--wp--preset--color--orange);
	color: #fff;
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	font-size: 13.5px;
	cursor: pointer;
}
.dh-filter-submit:hover {
	filter: brightness(1.05);
}
.dh-filter-reset {
	text-align: center;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 13px !important;
	font-weight: 400 !important;
	color: var(--wp--preset--color--anthrazit-soft);
}
.dh-filter-reset:hover {
	color: var(--wp--preset--color--anthrazit);
	text-decoration: underline;
}
@media (max-width: 900px) {
	.dh-shop-layout {
		/* minmax(0, 1fr) statt 1fr: eine reine 1fr-Spur bleibt sonst so breit wie der breiteste
		   Inhalt (Grid-Spuren sind standardmaessig minmax(auto,1fr), "auto" respektiert die
		   Min-Content-Breite der Kinder) - die gestapelte Filter-Sidebar erzwang dadurch eine
		   Spaltenbreite > Bildschirmbreite und verursachte horizontalen Overflow der ganzen Seite. */
		grid-template-columns: minmax(0, 1fr);
	}
	.dh-shop-filters {
		position: static;
		/* Das max-height/overflow-Sicherheitsnetz gegen sich selbst gehoert nur zur Sticky-Sidebar
		   auf breiten Screens - im gestapelten Mobile-Layout gibt es keinen Sticky-Kontext, der die
		   Card "einklemmen" koennte, daher hier bewusst wieder aufgehoben. */
		max-height: none;
		overflow-y: visible;
	}
}
.woocommerce-pagination {
	margin: 48px 0 80px;
}
.woocommerce-pagination ul.page-numbers {
	display: flex;
	gap: 8px;
	list-style: none;
	padding: 0;
	font-family: var(--wp--preset--font-family--body) !important;
	/* Auf dieselbe Groesse wie Domainname/Preis/MwSt-Hinweis in der Trefferliste gebracht
	   (Kundenwunsch 18.08.2026), plus !important - WooCommerce-Kern-CSS bringt fuer die
	   Pagination ebenfalls eine eigene ".woocommerce nav.woocommerce-pagination ..."-Regel mit
	   hoeherer Spezifitaet mit (gleiches Muster wie bei .price/.woocommerce-loop-product__title). */
	font-size: 14px !important;
}
.woocommerce-pagination a,
.woocommerce-pagination span {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: 36px !important;
	height: 36px !important;
	border: 1px solid var(--dh-border);
	border-radius: 4px;
	color: var(--wp--preset--color--anthrazit);
}
.woocommerce-pagination .page-numbers.current {
	background: var(--wp--preset--color--anthrazit);
	color: #fff;
	border-color: var(--wp--preset--color--anthrazit);
}

/* ---------- Single product ---------- */
.dh-product-page {
	padding-top: 8px;
}
/* DH-074: Zweispaltiger Kaufbereich (Referenz buy.nameshift.com/sourceforge.jp/de-de) - links
   Domainname + Vertrauens-Argumente, rechts der "Diese Domain kaufen"-Kaufkasten. Ersetzt die
   bisherige Galerie+Summary-Grid-Aufteilung (DH-018) komplett, siehe dh_single_product() in
   functions.php. */
.dh-product-hero {
	display: grid;
	grid-template-columns: 1.05fr 0.95fr;
	gap: 56px;
	align-items: start;
	padding: 8px 0 50px;
}
.dh-product-name {
	font-size: clamp(30px, 3.4vw, 42px);
	margin: 0 0 24px;
}
.dh-trust-bullets {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 16px;
	max-width: 44ch;
}
.dh-trust-bullets li {
	position: relative;
	padding-left: 19px;
	color: var(--wp--preset--color--anthrazit-soft);
	font-size: 15px;
	line-height: 1.5;
}
.dh-trust-bullets li::before {
	content: "✓";
	position: absolute;
	left: 0;
	top: 0;
	color: var(--wp--preset--color--orange);
	font-weight: 700;
}
.dh-trust-bullets li strong {
	color: var(--wp--preset--color--anthrazit);
}
.dh-product-buybox {
	background: var(--dh-surface-sunken);
	border: 1px solid var(--dh-border);
	border-radius: 12px;
	padding: 28px 28px 26px;
}
.dh-buybox-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--anthrazit-soft);
	margin: 0 0 12px;
}
.dh-product-buybox p.price {
	font-family: var(--wp--preset--font-family--body);
	font-weight: 700;
	font-size: 30px;
	color: var(--wp--preset--color--orange);
	margin: 0 0 6px;
}
.dh-product-buybox .legal-price-info {
	font-size: 13px;
	color: var(--wp--preset--color--anthrazit-soft);
	margin: 0 0 18px;
}
.dh-product-buybox .woocommerce-product-details__short-description {
	font-size: 13.5px;
	color: var(--wp--preset--color--anthrazit-soft);
	margin: 0 0 18px;
	padding-top: 16px;
	border-top: 1px solid var(--dh-border);
}
.dh-seo-facts {
	margin: 0 0 20px;
}
.dh-seo-facts-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 14px 16px;
}
.dh-seo-fact {
	display: flex;
	flex-direction: column;
	gap: 4px;
	background: var(--wp--preset--color--papier);
	border: 1px solid var(--dh-border);
	border-radius: 8px;
	padding: 10px 12px;
}
.dh-seo-fact-label {
	font-weight: 700;
	font-size: 12px;
	color: var(--wp--preset--color--anthrazit);
}
.dh-seo-fact-value {
	font-size: 14px;
	color: var(--wp--preset--color--anthrazit-soft);
}
.dh-seo-facts-note {
	margin: 12px 0 0;
	font-size: 11.5px;
	color: var(--wp--preset--color--anthrazit-soft);
	opacity: 0.85;
}
.dh-product-buybox form.cart {
	margin: 4px 0 0;
}
.dh-product-buybox .quantity {
	display: none;
}
.dh-product-buybox .single_add_to_cart_button {
	width: 100%;
	padding: 16px 30px;
	font-size: 15px;
	box-shadow: 0 10px 24px -12px var(--dh-shadow);
}
.dh-product-buybox .single_add_to_cart_button:hover {
	filter: brightness(1.05);
}
/* "1 vorrätig" ist fuer Einzelstueck-Domains keine sinnvolle Information (Kundenwunsch
   18.08.2026) - Lagerbestand selbst bleibt unangetastet (steuert weiterhin, ob "In den
   Warenkorb" ueberhaupt anklickbar ist), nur die Textanzeige wird ausgeblendet. */
.dh-product-buybox .stock {
	display: none;
}
/* DH-079: "Sonstige Domain-Kennzahlen" optisch aufgewertet (Kundenwunsch 18.08.2026) - echte
   Eyebrow+Überschrift statt der kleinen grauen Mono-Zeile, und jede Kennzahl bekommt jetzt eine
   eigene kleine Karte statt als flache Liste in einem großen Kasten zu stehen (gleiches Muster wie
   .dh-seo-fact im Kaufkasten: Kartenhintergrund heller als die umgebende Fläche). */
.dh-facts-card {
	background: var(--dh-surface-sunken);
	border: 1px solid var(--dh-border);
	border-radius: 12px;
	padding: 32px 28px 28px;
	margin: 0 0 56px;
}
.dh-facts-card h2 {
	font-size: 24px;
	margin: 0 0 22px;
}
.dh-facts-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 12px;
}
.dh-fact {
	display: flex;
	flex-direction: column;
	gap: 6px;
	background: var(--wp--preset--color--papier);
	border: 1px solid var(--dh-border);
	border-radius: 8px;
	padding: 14px 14px 12px;
}
.dh-fact-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10.5px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	font-weight: 700;
	color: var(--wp--preset--color--anthrazit-soft);
}
.dh-fact-value {
	font-size: 18px;
	font-weight: 700;
	color: var(--wp--preset--color--anthrazit);
}
.dh-fact-wide {
	grid-column: 1 / -1;
}
.dh-fact-wide .dh-fact-value {
	font-size: 14px;
	font-weight: 600;
	word-break: break-all;
}
.dh-facts-note {
	margin: 20px 0 0;
	font-size: 11.5px;
	color: var(--wp--preset--color--anthrazit-soft);
	opacity: 0.85;
}
/* DH-074: Kleines Abwicklungs-FAQ + "Andere Domains" unter dem Kaufbereich (volle Breite). */
.dh-product-faq {
	max-width: 760px;
	margin: 8px 0 60px;
}
.dh-product-faq h2 {
	font-size: 26px;
	margin: 0 0 6px;
}
/* DH-079: "domainhandel.biz in Zahlen" sitzt jetzt direkt in der LINKEN Spalte unter den
   Vertrauens-Argumenten (Kundenfeedback 18.08.2026, zweite Runde - vorher als eigene volle-Breite-
   Sektion unter dem Kaufbereich, siehe DH-078). Linksbündig statt zentriert, damit es sich nahtlos
   in den übrigen linksbündigen Spalteninhalt (H1, Bulletliste) einfügt. */
.dh-mini-stats {
	margin: 28px 0 0;
	padding-top: 24px;
	border-top: 1px solid var(--dh-border);
	max-width: 44ch;
}
.dh-mini-stats-title {
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	font-size: 15px;
	color: var(--wp--preset--color--anthrazit);
	margin: 0 0 16px;
}
.dh-mini-stats-title .dh-accent {
	color: var(--wp--preset--color--orange);
}
.dh-mini-stats-row {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 14px;
}
.dh-mini-stat-icon {
	width: 19px;
	height: 19px;
	margin: 0 0 7px;
	stroke: var(--wp--preset--color--orange);
	fill: none;
	stroke-width: 1.5;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.dh-mini-stat-value {
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 700;
	font-size: 20px;
	color: var(--wp--preset--color--anthrazit);
	line-height: 1.1;
}
.dh-mini-stat-label {
	margin-top: 4px;
	font-size: 11.5px;
	color: var(--wp--preset--color--anthrazit-soft);
}
/* DH-079: SEDO-Hinweissatz steht jetzt eigenständig zwischen "Sonstige Domain-Kennzahlen" und dem
   FAQ (vorher Teil von .dh-mini-stats) - eigene Trennlinie/Abstand statt an die Stats-Box gebunden. */
.dh-sedo-note {
	margin: 0 0 40px;
	padding-top: 22px;
	border-top: 1px solid var(--dh-border);
	text-align: center;
	font-size: 13px;
	color: var(--wp--preset--color--anthrazit-soft);
	max-width: 68ch;
	margin-left: auto;
	margin-right: auto;
}
.dh-sedo-note a {
	color: var(--wp--preset--color--orange);
}
.dh-related-domains {
	margin: 0 0 60px;
}
.dh-related-domains h2 {
	font-size: 26px;
	margin: 0 0 24px;
}
.dh-related-grid {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 14px;
}
.dh-related-card {
	display: flex;
	flex-direction: column;
	gap: 8px;
	background: var(--dh-surface-sunken);
	border: 1px solid var(--dh-border);
	border-radius: 10px;
	padding: 18px 16px;
	color: inherit;
	transition: border-color 0.15s ease, transform 0.15s ease;
}
.dh-related-card:hover {
	border-color: var(--wp--preset--color--orange);
	transform: translateY(-2px);
}
.dh-related-name {
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 700;
	font-size: 14px;
	color: var(--wp--preset--color--anthrazit);
	word-break: break-word;
}
.dh-related-price {
	font-size: 14px;
	color: var(--wp--preset--color--orange);
}

/* WooCommerce description tabs */
.woocommerce-tabs {
	margin: 20px 0 70px;
}
.woocommerce-tabs ul.tabs {
	display: flex;
	gap: 4px;
	list-style: none;
	padding: 0;
	margin: 0 0 -1px;
	border-bottom: 1px solid var(--dh-border);
}
.woocommerce-tabs ul.tabs li {
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	font-size: 14.5px;
}
.woocommerce-tabs ul.tabs li a {
	display: block;
	padding: 12px 18px;
	color: var(--wp--preset--color--anthrazit-soft);
}
.woocommerce-tabs ul.tabs li.active a {
	color: var(--wp--preset--color--anthrazit);
	border-bottom: 2px solid var(--wp--preset--color--orange);
}
.woocommerce-Tabs-panel {
	padding: 28px 2px;
	color: var(--wp--preset--color--anthrazit-soft);
}
.woocommerce-Tabs-panel h2 {
	font-size: 20px;
	margin-bottom: 14px;
}

@media (max-width: 980px) {
	.dh-hero-grid {
		grid-template-columns: 1fr;
	}
	.hero-visual {
		height: 460px;
	}
	.listing-card {
		width: 230px;
	}
	.dh-stats-grid {
		grid-template-columns: 1fr;
	}
	.dh-testi-grid {
		grid-template-columns: 1fr;
	}
	.dh-footer-grid {
		/* minmax(0, 1fr) statt 1fr: eine reine 1fr-Spur bleibt sonst so breit wie ihr breitester
		   Inhalt (Grid-Spuren sind standardmaessig minmax(auto,1fr)) - ein einzelnes langes Wort
		   wie "Datenschutzerklärung" in einer Footer-Spalte erzwang dadurch horizontalen Overflow
		   der ganzen Seite, gleiches Muster wie beim Shop-Filter-Grid weiter oben. */
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	}
	.dh-hero-section::before {
		font-size: 260px;
		top: -60px;
	}
	.service-row {
		flex-wrap: wrap;
	}
	.service-row-go {
		margin-left: 78px;
	}
	.dh-product-hero {
		grid-template-columns: 1fr;
		gap: 30px;
		/* Kundenwunsch 20.08.2026: Abstand zur naechsten Karte (.dh-facts-card) auf Mobil/Tablet wirkte
		   zu gross - Desktop-Wert 50px war fuer die zweispaltige Ansicht gedacht, auf einer Spalte reicht
		   deutlich weniger. */
		padding-bottom: 24px;
	}
	.dh-facts-grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.dh-related-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

/* ---------- Content-Seiten (Domainankauf/Domainvermittlung/FAQ, DH-019-Muster) ---------- */
.dh-page {
	max-width: 760px;
	margin: 0 auto;
	padding: 64px 32px 40px;
}
.dh-page h1 {
	font-size: clamp(34px, 4vw, 46px);
	margin: 6px 0 24px;
}
.dh-page > p:first-of-type {
	font-size: 18px;
	color: var(--wp--preset--color--anthrazit-soft);
	max-width: 64ch;
}
.dh-page h3 {
	font-size: 22px;
	margin: 44px 0 14px;
}
.dh-page p {
	max-width: 68ch;
}
/* Fund 20.08.2026 (Staging-Durchgang): lange URLs als sichtbarer Linktext (z. B. in der
   Datenschutzerklärung/Anbieter-Links) brechen ohne dies auf schmalen Viewports nicht um und
   verursachen horizontalen Overflow. */
.dh-page a {
	overflow-wrap: break-word;
	word-break: break-word;
}
.dh-checklist {
	list-style: none;
	margin: 20px 0 8px;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 16px;
	max-width: 68ch;
}
.dh-checklist li {
	position: relative;
	padding-left: 32px;
	color: var(--wp--preset--color--anthrazit-soft);
}
.dh-checklist li::before {
	content: "✓";
	position: absolute;
	left: 0;
	top: 1px;
	color: var(--wp--preset--color--orange);
	font-weight: 700;
}
.dh-checklist li strong {
	color: var(--wp--preset--color--anthrazit);
}
.dh-process {
	background: var(--dh-surface-sunken);
	border: 1px solid var(--dh-border);
	border-radius: 10px;
	padding: 40px 36px;
	margin: 56px 0 8px;
	scroll-margin-top: 90px;
}
.dh-process h2 {
	font-size: 26px;
	margin: 6px 0 28px;
}
.dh-step-list {
	list-style: none;
	counter-reset: dh-step;
	margin: 0 0 28px;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.dh-step-list li {
	counter-increment: dh-step;
	display: flex;
	align-items: center;
	gap: 16px;
}
.dh-step-list li::before {
	content: counter(dh-step);
	flex: none;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: var(--wp--preset--color--orange-tint);
	color: var(--wp--preset--color--orange);
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 700;
	display: flex;
	align-items: center;
	justify-content: center;
}
/* ---------- FAQ-Akkordeon (natives <details>, keine JS-Abhängigkeit) ---------- */
.dh-faq-list {
	margin: 24px 0 0;
	border-top: 1px solid var(--dh-border);
}
.dh-faq-list details {
	border-bottom: 1px solid var(--dh-border);
	padding: 18px 0;
}
.dh-faq-list summary {
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	font-size: 17px;
	color: var(--wp--preset--color--anthrazit);
	cursor: pointer;
	list-style: none;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}
.dh-faq-list summary::-webkit-details-marker {
	display: none;
}
.dh-faq-list summary::after {
	content: "+";
	flex: none;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 20px;
	color: var(--wp--preset--color--orange);
	transition: transform 0.15s ease;
}
.dh-faq-list details[open] summary::after {
	transform: rotate(45deg);
}
.dh-faq-list p {
	margin: 12px 0 0;
	color: var(--wp--preset--color--anthrazit-soft);
	max-width: 68ch;
}
.dh-faq-list p a {
	color: var(--wp--preset--color--orange);
}
@media (max-width: 640px) {
	.dh-process {
		padding: 28px 22px;
	}
	.dh-related-grid {
		grid-template-columns: 1fr;
	}
	.dh-seo-facts-grid {
		grid-template-columns: 1fr;
	}
}

/* ---------- Kontakt-Seite (DH-063) ---------- */
.dh-contact-page {
	max-width: 1120px;
	margin: 0 auto;
	padding: 64px 32px 90px;
}
.dh-contact-layout {
	display: grid;
	grid-template-columns: 0.85fr 1.15fr;
	gap: 56px;
	align-items: start;
}
.dh-contact-intro h1 {
	font-size: clamp(30px, 3.6vw, 42px);
	margin: 6px 0 20px;
}
.dh-contact-intro > p {
	font-size: 17px;
	color: var(--wp--preset--color--anthrazit-soft);
	max-width: 48ch;
}
.dh-contact-direct {
	margin-top: 40px;
	padding-top: 28px;
	border-top: 1px solid var(--dh-border);
}
.dh-contact-direct h4 {
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 500;
	font-size: 12px;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--orange);
	margin: 0 0 14px;
}
.dh-contact-direct ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-size: 15px;
}
.dh-contact-direct a {
	color: var(--wp--preset--color--anthrazit);
}
.dh-contact-direct a:hover {
	color: var(--wp--preset--color--orange);
}
.dh-contact-form-wrap {
	background: #fff;
	border: 1px solid var(--dh-border);
	border-radius: 10px;
	padding: 38px;
}
/* CF7-Formularvorlage nutzt <label> ohne <p>-Wrapper je Feld (siehe functions.php-Notiz) -
   Feldabstand deshalb ueber margin-bottom auf dem direkten <label>-Kind, nicht auf <p>. */
.dh-contact-form-wrap .wpcf7-form > label {
	display: block;
	margin-bottom: 18px;
	font-family: var(--wp--preset--font-family--body);
	font-weight: 600;
	font-size: 14px;
	color: var(--wp--preset--color--anthrazit);
}
.dh-contact-form-wrap .wpcf7-form input[type="text"],
.dh-contact-form-wrap .wpcf7-form input[type="email"],
.dh-contact-form-wrap .wpcf7-form textarea {
	display: block;
	width: 100%;
	margin-top: 7px;
	padding: 11px 13px;
	border: 1px solid var(--dh-border);
	border-radius: 4px;
	font-family: var(--wp--preset--font-family--body);
	font-size: 15px;
	color: var(--wp--preset--color--anthrazit);
	background: var(--dh-surface-sunken);
	text-transform: none;
	letter-spacing: normal;
}
.dh-contact-form-wrap .wpcf7-form textarea {
	min-height: 130px;
	resize: vertical;
}
.dh-contact-form-wrap .wpcf7-form input:focus,
.dh-contact-form-wrap .wpcf7-form textarea:focus {
	outline: none;
	border-color: var(--wp--preset--color--orange);
	background: #fff;
}
/* DH-Kundenwunsch 18.08.2026: kleinere Schrift für die Zustimmungs-Checkbox. Das CF7-Feld
   [acceptance] selbst erzeugt kein <label> um Checkbox+Text (anders als die übrigen Felder, die
   manuell in <label>…</label> im Formulartext eingefasst sind) - der Text landet dadurch als
   ungestylter Fließtext in einem klassenlosen <p>. Fix an der Quelle: im Formulartext ein
   <label class="dh-consent-label"> ergänzt (siehe wpcf7-Formular "Kontaktformular neu"), analog zu
   den anderen Feldern, statt einen nie greifenden Selektor zu pflegen. */
.dh-contact-form-wrap .dh-consent-label {
	display: block;
	font-family: var(--wp--preset--font-family--body);
	font-size: 12px;
	line-height: 1.6;
	text-transform: none;
	letter-spacing: normal;
	color: var(--wp--preset--color--anthrazit-soft);
	margin: 4px 0 22px;
}
.dh-contact-form-wrap .dh-consent-label input {
	float: left;
	margin: 3px 10px 0 0;
	accent-color: var(--wp--preset--color--orange);
}
.dh-contact-form-wrap .dh-consent-label a {
	color: var(--wp--preset--color--orange);
}
.dh-contact-form-wrap .wpcf7-not-valid-tip {
	display: block;
	color: #c0392b;
	font-size: 12.5px;
	margin-top: 5px;
	font-family: var(--wp--preset--font-family--body);
	text-transform: none;
}
.dh-contact-form-wrap .wpcf7-response-output {
	margin: 20px 0 0;
	padding: 13px 16px;
	border-radius: 6px;
	font-size: 14px;
}
/* CF7-Submit traegt kein wp-element-button (nur der Klick/Fokus-Klassenzusatz kommt vom Plugin) -
   theme.json-Button-Styling wird deshalb nicht automatisch angewendet, hier manuell nachgezogen. */
.dh-contact-form-wrap .wpcf7-submit {
	background: var(--wp--preset--color--orange);
	color: #fff;
	border: none;
	border-radius: 4px;
	padding: 13px 32px;
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	font-size: 14.5px;
	cursor: pointer;
}
.dh-contact-form-wrap .wpcf7-submit:hover {
	filter: brightness(1.05);
}
.dh-contact-form-wrap .wpcf7-submit:disabled {
	opacity: 0.6;
	cursor: default;
}
@media (max-width: 900px) {
	.dh-contact-layout {
		grid-template-columns: 1fr;
	}
}

/* ---------- Warenkorb (DH-064) ---------- */
/* Nutzt bereits das moderne WooCommerce-Cart-Block-Markup (kein eigenes Theme-Template noetig,
   siehe ToDo.md DH-015) - hier nur editoriale Politur ueber die stabilen wc-block-*-Klassen. */
.wp-block-woocommerce-cart {
	max-width: 1120px;
	margin: 0 auto;
	padding: 8px 32px 90px;
	/* box-sizing: content-box (Browser-Default) addiert das Padding sonst ZUSAETZLICH zur Breite -
	   bei knappem mobilem Platz (Block darf laut WP-Grid-Layout ohnehin nur die volle verfuegbare
	   Breite einnehmen) fuehrte das zu 64px (32+32) horizontalem Overflow der ganzen Seite. */
	box-sizing: border-box;
}
.wc-block-cart-items__header-image {
	display: none;
}
.wc-block-cart-item__image {
	display: none;
}
/* Kasse: Bestellübersicht-Sidebar zeigt sonst denselben grauen Platzhalter pro Zeile
   (eigener Block, andere Klasse als der Warenkorb-Block oben). */
.wc-block-components-order-summary-item__image {
	/* !important noetig: WooCommerce setzt ".wc-block-components-order-summary .wc-block-
	   components-order-summary-item__image { display:flex }" mit hoeherer Spezifitaet (2 Klassen). */
	display: none !important;
}
.wc-block-cart-items__header-product,
.wc-block-cart-items__header-total {
	font-family: var(--wp--preset--font-family--body);
	font-size: 13px;
	color: var(--wp--preset--color--anthrazit-soft);
}
.wc-block-components-product-name {
	font-weight: 700;
}
.wc-block-cart-item__prices .price,
.wc-block-components-product-price__value {
	font-weight: 700;
	color: var(--wp--preset--color--orange);
}
.wc-block-cart__totals-title {
	font-size: 13px;
	color: var(--wp--preset--color--anthrazit-soft);
}
.wp-block-woocommerce-cart-order-summary-block {
	background: var(--dh-surface-sunken);
	border: 1px solid var(--dh-border);
	border-radius: 9px;
	padding: 22px 20px;
}
.wc-block-components-totals-item__value {
	font-weight: 700;
}
.wc-block-cart__submit-button {
	width: 100%;
	text-align: center;
	padding: 15px 20px !important;
}

/* ---------- Mein Konto (DH-015/DH-064) ---------- */
/* Seite lief bisher als unveroeffentlichter Entwurf (WooCommerce-Bestellmails verlinken aber
   direkt auf /mein-konto/view-order/... - Link ging fuer echte Kunden ins Leere) - veroeffentlicht
   und hier nur die Standard-woocommerce-MyAccount-*-Klassen editorial gestylt. Registrierung bleibt
   bewusst ueberall deaktiviert (WooCommerce > Konten und Datenschutz), nur Gast-Kauf + Login fuer
   bestehende Konten, siehe CLAUDE.md/DH-045. */
/* Grid statt Flexbox fuehrte hier zu unvorhersehbarem Auto-Placement (WooCommerce-eigenes
   woocommerce-layout.css setzt Float+Prozentbreiten auf .woocommerce-MyAccount-navigation/-content
   mit !important) - Flexbox mit expliziten !important-Breiten ist robuster gegen diesen Konflikt,
   gleiches Muster wie beim Shop-Archiv weiter oben in dieser Datei. */
.woocommerce-account .woocommerce {
	display: flex !important;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 48px;
	max-width: 900px;
	margin: 0 auto;
	padding: 8px 32px 90px;
}
.woocommerce-MyAccount-navigation {
	float: none !important;
	width: 210px !important;
	flex: 0 0 210px !important;
}
.woocommerce-MyAccount-content {
	float: none !important;
	width: 0 !important;
	flex: 1 1 0 !important;
	min-width: 280px;
}
.woocommerce-MyAccount-navigation ul {
	list-style: none;
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--dh-border);
}
.woocommerce-MyAccount-navigation-link a {
	display: block;
	padding: 12px 2px;
	border-bottom: 1px solid var(--dh-border);
	font-family: var(--wp--preset--font-family--display);
	font-weight: 600;
	font-size: 14.5px;
	color: var(--wp--preset--color--anthrazit-soft);
}
.woocommerce-MyAccount-navigation-link a:hover,
.woocommerce-MyAccount-navigation-link.is-active a {
	color: var(--wp--preset--color--orange);
}
.woocommerce-MyAccount-content mark {
	background: none;
	font-weight: 700;
	color: var(--wp--preset--color--anthrazit);
}
@media (max-width: 640px) {
	.woocommerce-MyAccount-navigation,
	.woocommerce-MyAccount-content {
		flex-basis: 100% !important;
	}
}
@media (max-width: 640px) {
	.dh-footer-grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (prefers-reduced-motion: reduce) {
	.listing-card,
	.service-row,
	.dh-arrow {
		transition: none !important;
	}
}
