/* Erzeugerkarte – abgestimmt auf house-of-food-ffm.de (GeneratePress, Lato).
   Schrift und Textfarbe kommen vom Theme. Die Theme-Variablen (--contrast-2 usw.)
   werden genutzt, falls vorhanden; die Markerfarben stehen in den Karten-Einstellungen. */
.hofk {
	--hofk-farbe: #3e77bc;
	--hofk-farbe-messe: #eb5e50;
	--hofk-hoehe: 480px;
	--hofk-text: var(--contrast, #222);
	--hofk-link: var(--contrast-2, #3e77bc);
	--hofk-flaeche: var(--base-2, #f7f8f9);
	--hofk-rand: #d9dde2;
	margin: 1.5em 0;
}
.hofk *, .hofk *::before, .hofk *::after { box-sizing: border-box; }

/* ---------- Buttons im Stil der Seite (weiß, blaue Kontur, eckig) ---------- */
.hofk-btn,
.hofk-reset,
.hofk-consent-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 12px 20px;
	font: inherit;
	font-size: 15px;
	line-height: 1.3;
	color: var(--hofk-link);
	background: #fff;
	border: 1px solid var(--hofk-link);
	border-radius: 0;
	cursor: pointer;
	white-space: nowrap;
	transition: background-color .15s, color .15s;
}
.hofk-btn:hover, .hofk-btn:focus-visible,
.hofk-reset:hover, .hofk-reset:focus-visible,
.hofk-consent-btn:hover, .hofk-consent-btn:focus-visible {
	color: #fff;
	background: var(--hofk-link);
}

/* ---------- Filter ---------- */
.hofk-filter {
	background: var(--hofk-flaeche);
	border: 1px solid var(--hofk-rand);
	padding: 20px;
	margin: 0 0 10px;
}
.hofk-filter-row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
	gap: 14px 18px;
}
.hofk-filter-row-2 {
	margin-top: 18px;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	align-items: end;
}
.hofk-field { display: flex; flex-direction: column; gap: 5px; margin: 0; font-size: 15px; }
.hofk-field > span { font-weight: 700; }
.hofk-field-search { grid-column: 1 / -1; }
.hofk-field input[type="search"],
.hofk-field select {
	width: 100%;
	min-height: 44px;
	padding: 8px 12px;
	font: inherit;
	font-size: 16px; /* verhindert Zoom auf iOS */
	color: var(--hofk-text);
	background: #fff;
	border: 1px solid var(--hofk-rand);
	border-radius: 0;
}
.hofk-field input[type="search"]:focus,
.hofk-field select:focus {
	outline: 2px solid var(--hofk-link);
	outline-offset: -1px;
	border-color: var(--hofk-link);
}
.hofk-field-radius input[type="range"] { width: 100%; accent-color: var(--hofk-link); margin: 8px 0 2px; }
.hofk-radius-out { font-size: 15px; }
.hofk-checks { display: flex; flex-direction: column; gap: 8px; }
.hofk-check { display: flex; align-items: center; gap: 10px; margin: 0; font-size: 15px; cursor: pointer; }
.hofk-check input { accent-color: var(--hofk-link); width: 18px; height: 18px; margin: 0; flex: none; }
.hofk-reset { justify-self: start; }
.hofk-count { margin: 10px 0 12px; font-size: 15px; color: #555; }

/* ---------- Karte ---------- */
.hofk-map-wrap {
	position: relative;
	isolation: isolate; /* bleibt unter Seitenleiste & Menüs */
	height: var(--hofk-hoehe);
	border: 1px solid var(--hofk-rand);
	overflow: hidden;
	background: var(--base, #f0f0f0);
}
.hofk-map { position: absolute; inset: 0; z-index: 0; font: inherit; }
.hofk-consent {
	position: absolute;
	inset: 0;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
	text-align: center;
	background:
		linear-gradient(rgba(255, 255, 255, .55) 1px, transparent 1px) 0 0 / 40px 40px,
		linear-gradient(90deg, rgba(255, 255, 255, .55) 1px, transparent 1px) 0 0 / 40px 40px,
		var(--base, #f0f0f0);
}
.hofk-consent-inner {
	max-width: 460px;
	background: #fff;
	padding: 24px 26px;
	border: 1px solid var(--hofk-rand);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
}
.hofk-consent-inner p { margin: 0; font-size: 15px; line-height: 1.5; }
.hofk-consent-note { color: #555; }

.hofk-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 20px;
	list-style: none;
	margin: 10px 0 28px;
	padding: 0;
	font-size: 14px;
}
.hofk-legend li { display: flex; align-items: center; gap: 7px; margin: 0; }
.hofk-dot {
	width: 14px; height: 14px; border-radius: 50%; flex: none;
	background: var(--hofk-farbe); border: 2px solid #fff;
	box-shadow: 0 0 0 1px rgba(0, 0, 0, .3);
}
.hofk-dot-messe { background: var(--hofk-farbe-messe); }
.hofk-dot-center { background: #fff; border: 2px solid #222; box-shadow: none; }

.hofk .leaflet-container { font-family: inherit; }
.hofk-tooltip { font-size: 14px; line-height: 1.45; border-radius: 0; }
.hofk-tooltip strong { color: var(--hofk-link); font-weight: 700; }
.hofk-tooltip-hint { margin-top: 4px; color: #666; font-size: 13px; }
.hofk-popup .leaflet-popup-content-wrapper { border-radius: 0; }
.hofk-popup .leaflet-popup-content { margin: 14px 16px; font-size: 14px; line-height: 1.5; }
.hofk-popup-title { display: block; font-size: 17px; font-weight: 400; color: var(--hofk-link); margin-bottom: 4px; }
.hofk-popup-text { margin: 6px 0 !important; }
.hofk-popup .hofk-pdfs { margin-top: 6px; }

/* ---------- Liste ---------- */
.hofk-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
	gap: 20px;
}
.hofk-card {
	margin: 0;
	padding: 20px 22px;
	background: #fff;
	border: 1px solid var(--hofk-rand);
	border-top: 4px solid var(--hofk-farbe);
	display: flex;
	flex-direction: column;
	gap: 10px;
	transition: box-shadow .15s;
}
.hofk-card.is-messe { border-top-color: var(--hofk-farbe-messe); }
.hofk-card.is-active { box-shadow: 0 3px 14px rgba(0, 0, 0, .1); }
.hofk-card.is-flash { box-shadow: 0 0 0 3px var(--hofk-link); }
.hofk-card-head { display: flex; gap: 14px; align-items: flex-start; }
.hofk-logo { width: 56px; height: 56px; object-fit: contain; flex: none; }
.hofk-name {
	margin: 0;
	font-size: 20px;
	font-weight: 400;
	line-height: 1.3;
	color: var(--hofk-link);
}
.hofk-meta { margin: 3px 0 0; font-size: 14px; color: #555; }
.hofk-badges { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; margin: 0; padding: 0; }
.hofk-badge {
	margin: 0;
	padding: 2px 10px;
	font-size: 13px;
	line-height: 1.6;
	color: var(--hofk-text);
	background: color-mix(in srgb, var(--hofk-farbe) 14%, #fff);
	border: 1px solid color-mix(in srgb, var(--hofk-farbe) 45%, #fff);
}
.hofk-badge-messe {
	background: color-mix(in srgb, var(--hofk-farbe-messe) 14%, #fff);
	border-color: color-mix(in srgb, var(--hofk-farbe-messe) 50%, #fff);
}
.hofk-badge-light { background: var(--hofk-flaeche); border-color: var(--hofk-rand); }
.hofk-produkte, .hofk-address { margin: 0; font-size: 16px; }
.hofk-address { color: #444; }
.hofk-contact { list-style: none; margin: 0; padding: 0; font-size: 15px; }
.hofk-contact li { margin: 0 0 2px; overflow-wrap: anywhere; }
.hofk a { color: var(--hofk-link); }

/* PDF-Zertifikate */
.hofk-pdfs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; font-size: 15px; }
.hofk-pdfs li { margin: 0; }
.hofk-pdf { display: inline-flex; align-items: baseline; gap: 8px; overflow-wrap: anywhere; }
.hofk-pdf-tag {
	flex: none;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .04em;
	padding: 0 5px;
	color: #fff;
	background: #b32d2e;
	text-decoration: none;
}

.hofk-details summary { cursor: pointer; font-size: 15px; font-weight: 700; color: var(--hofk-text); }
.hofk-details dl { margin: 8px 0 0; font-size: 15px; }
.hofk-details dt { font-weight: 700; margin-top: 8px; }
.hofk-details dd { margin: 0; }
.hofk-linkbtn {
	align-self: flex-start;
	margin-top: auto;
	padding: 0;
	font: inherit;
	font-size: 15px;
	color: var(--hofk-link);
	background: none;
	border: 0;
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}
.hofk-popup .hofk-linkbtn { margin-top: 6px; font-size: 14px; }
.hofk-empty { padding: 20px; text-align: center; color: #555; }

@media (max-width: 768px) {
	.hofk-filter { padding: 16px; }
	.hofk-map-wrap { height: min(var(--hofk-hoehe), 62vh); min-height: 320px; }
	.hofk-list { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
	.hofk-card, .hofk-btn, .hofk-reset, .hofk-consent-btn { transition: none; }
}
