/* Kaliningrad sites map (Cognifare) */
.km {
	--km-bg: #1D2227;
	--km-sea: #171B1F;
	--km-land: #20252A;
	--km-oblast: #2F363D;
	--km-line: #3A4249;
	--km-text: #E7E4DD;
	--km-muted: #A3A8AD;
	--km-accent: #C0714F;
	--km-forces: #C0714F;
	--km-air: #A58CC8;
	--km-transit: #D2CEC5;
	--km-power: #D6C08A;
	--km-oil: #A88B5A;
	--km-ind: #86A6C6;
	--km-waste: #9DB06A;
	--km-migr: #F28A2E;
	--km-incur: #E2402F;
	--km-open: #8FB79A;
	--km-limited: #E0B65E;
	--km-closed: #E0806F;
	position: relative;
	color: var(--km-text);
	background: var(--km-bg);
	font-family: var(--wp--preset--font-family--sans, "IBM Plex Sans", system-ui, sans-serif);
	font-size: 15px;
	line-height: 1.5;
}
.km *, .km *::before, .km *::after { box-sizing: border-box; }

/* Toolbar: category filters and zoom */
.km-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 10px 16px;
	padding: 0 0 14px;
}
.km-filters { display: flex; flex-wrap: wrap; gap: 12px 22px; margin: 0; padding: 0; list-style: none; }
.km-fgroup { display: flex; flex-direction: column; gap: 6px; }
.km-fgroup-label { font-size: 11px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--km-muted); }
.km-fgroup-row { display: flex; flex-wrap: wrap; gap: 8px; }
.km-filter {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 40px;
	padding: 6px 12px 6px 10px;
	border: 1px solid var(--km-line);
	border-radius: 999px;
	background: transparent;
	color: var(--km-text);
	font: inherit;
	font-size: 14px;
	cursor: pointer;
}
.km-filter:hover { border-color: var(--km-muted); }
.km-filter[aria-pressed="false"] { color: var(--km-muted); opacity: .55; }
.km-filter[aria-pressed="false"] svg { filter: grayscale(1); }
.km-filter .km-count { color: var(--km-muted); font-size: 12px; }
.km-zoom { position: absolute; top: 10px; right: 10px; z-index: 4; display: flex; flex-direction: column; gap: 6px; }
.km-zoom button {
	width: 40px; height: 40px;
	border: 1px solid var(--km-line);
	border-radius: 6px;
	background: rgba(23,27,31,.88);
	color: var(--km-text);
	font: 600 18px/1 var(--wp--preset--font-family--sans, system-ui, sans-serif);
	cursor: pointer;
}
.km-zoom button:hover { border-color: var(--km-muted); }
.km button:focus-visible, .km-mk:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 2px; }

/* Map stage */
.km-stage {
	position: relative;
	overflow: hidden;
	border: 1px solid var(--km-line);
	background: var(--km-sea);
	touch-action: none;
	cursor: grab;
	user-select: none;
	-webkit-user-select: none;
}
.km-stage.is-panning { cursor: grabbing; }
.km-stage svg { display: block; width: 100%; height: auto; }
.km-hint {
	position: absolute; left: 10px; bottom: 8px;
	margin: 0; font-size: 12px; color: var(--km-muted);
	pointer-events: none;
}

/* Base map */
.km-land { fill: var(--km-land); }
.km-oblast { fill: var(--km-oblast); }
.km-water { fill: var(--km-sea); }
.km-river { fill: none; stroke: #3F5D74; stroke-width: 1.4; stroke-linejoin: round; stroke-linecap: round; }
.km-river-major { stroke: #4A6C86; stroke-width: 1.9; }
.km-river-minor { stroke-width: 1.1; }
.km-river-lab { font-family: var(--wp--preset--font-family--serif, Georgia, serif); font-style: italic; font-size: 10.5px; fill: #7593AA; paint-order: stroke; stroke: var(--km-oblast); stroke-width: 2.5px; stroke-linejoin: round; letter-spacing: .3px; }
.km-road { fill: none; stroke: #48515A; stroke-width: 1; }
.km-road-minor { fill: none; stroke: #3A4249; stroke-width: .7; }
.km-border { fill: none; stroke: var(--km-accent); stroke-width: 1.4; stroke-dasharray: 5 3; }
.km-town-dot { fill: #8D959C; }
.km-town { font-size: 11px; fill: #9AA0A6; paint-order: stroke; stroke: var(--km-oblast); stroke-width: 3px; stroke-linejoin: round; }
.km-town.r1 { font-size: 14px; font-weight: 600; fill: var(--km-text); }
.km-town.r2 { font-size: 12px; fill: #C3C6C9; }
.km-country { font-size: 13px; font-weight: 600; letter-spacing: 4px; fill: #5E666D; }
.km-sea, .km-lagoon { font-family: var(--wp--preset--font-family--serif, Georgia, serif); font-style: italic; font-size: 12px; fill: #56616A; }
.km-base text { pointer-events: none; }

/* Markers */
.km-leader { stroke: var(--km-muted); stroke-width: 1; opacity: .7; vector-effect: non-scaling-stroke; }
.km-anchor { fill: var(--km-text); }
.km-mk { cursor: pointer; outline: none; }
.km-mk .shape { stroke: #171B1F; stroke-width: 1.5; }
.km-mk text { font: 700 9.5px var(--wp--preset--font-family--sans, system-ui, sans-serif); fill: #171B1F; text-anchor: middle; dominant-baseline: central; pointer-events: none; }
.km-mk.cat-forces .shape { fill: var(--km-forces); }
.km-mk.cat-air .shape { fill: var(--km-air); }
.km-mk.cat-transit .shape { fill: var(--km-transit); }
.km-mk.cat-power .shape { fill: var(--km-power); }
.km-mk.cat-oil .shape { fill: var(--km-oil); }
.km-mk.cat-industry .shape { fill: var(--km-ind); }
.km-mk.cat-waste .shape { fill: var(--km-waste); }
.km-mk.cat-migration .shape { fill: var(--km-migr); }
.km-mk.cat-incursion .shape { fill: var(--km-incur); }
.km-mk.cat-migration text, .km-mk.cat-incursion text { fill: #fff; }
.km-mk.cat-migration text, .km-mk.cat-incursion text { fill: #fff; font-weight: 700; }
.km-mk.cat-migration .shape, .km-mk.cat-incursion .shape { stroke: #FFD27A; stroke-width: 1.2; }
.km-mk.ws-closed .shape { fill-opacity: .55; }
.km-mk.ws-planned .shape { stroke-dasharray: 3 2; }
.km-mk.st-open .shape { fill: var(--km-open); }
.km-mk.st-limited .shape { fill: var(--km-limited); }
.km-mk.st-closed .shape { fill: var(--km-closed); }
.km-mk.is-indicative .shape, .km-mk.is-area .shape { stroke-dasharray: 3 2; }
.km-mk:hover .shape, .km-mk:focus-visible .shape, .km-mk.is-hot .shape { stroke: var(--km-text); stroke-width: 2.5; }
.km-mk.is-hidden, .km-leaderg.is-hidden { display: none; }

/* Dual-use ring and highlight */
.km-ring { fill: none; stroke: var(--km-text); stroke-width: 1.6; stroke-dasharray: 2.5 2; }
.km-dual-only .km-markers .km-mk:not(.is-lit) { opacity: .22; }
.km-dual-only .km-leaderg { opacity: .3; }
.km-dual-btn[aria-pressed="true"] { border-color: var(--km-text); background: rgba(231,228,221,.08); }
.km-dual-btn[aria-pressed="false"] { opacity: 1; color: var(--km-text); }

/* Tooltip */
.km-tip {
	position: absolute;
	z-index: 5;
	width: max-content;
	max-width: min(300px, calc(100% - 16px));
	padding: 12px 14px 13px;
	border: 1px solid var(--km-line);
	border-top: 2px solid var(--km-accent);
	background: #171B1F;
	box-shadow: 0 8px 24px rgba(0,0,0,.45);
	color: var(--km-text);
	pointer-events: none;
	opacity: 0;
	transform: translateY(4px);
	transition: opacity .12s ease, transform .12s ease;
}
.km-tip.is-on { opacity: 1; transform: none; }
.km-tip .km-tip-meta { display: block; margin-bottom: 4px; font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--km-muted); }
.km-tip .km-tip-name { display: block; margin-bottom: 4px; font-family: var(--wp--preset--font-family--serif, Georgia, serif); font-size: 17px; font-weight: 600; line-height: 1.25; }
.km-tip .km-tip-desc { display: block; font-size: 13.5px; line-height: 1.5; color: #C3C6C9; }
.km-tip .km-tip-dual { display: block; margin-top: 6px; font-size: 12.5px; line-height: 1.45; color: var(--km-text); }
.km-tip .km-tip-pos { display: block; margin-top: 6px; font-size: 11.5px; color: var(--km-muted); }

/* Narrow stages: the tooltip docks under the map instead of covering it */
.km-docked .km-tip { position: relative; display: none; width: auto; max-width: none; border: 0; border-top: 2px solid var(--km-accent); box-shadow: none; transform: none; transition: none; }
.km-docked .km-tip.is-on { display: block; }

/* List of all sites */
.km-list { margin-top: 14px; border-top: 1px solid var(--km-line); }
.km-list summary {
	padding: 12px 0;
	font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
	color: var(--km-muted); cursor: pointer;
}
.km-groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 18px 28px; padding: 4px 0 8px; }
.km-group h3 { margin: 0 0 8px; font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--km-accent); }
.km-group ol { margin: 0; padding: 0; list-style: none; }
.km-group li button {
	display: flex; gap: 8px; width: 100%;
	padding: 4px 0; border: 0; background: none;
	color: var(--km-text); font: inherit; font-size: 14px; text-align: left; cursor: pointer;
}
.km-group li button:hover .km-li-name, .km-group li button:focus-visible .km-li-name { text-decoration: underline; }
.km-li-no { flex: 0 0 1.6em; color: var(--km-muted); font-variant-numeric: tabular-nums; }
.km-li-st { color: var(--km-muted); }
.km-source { margin: 12px 0 0; font-size: 12px; color: var(--km-muted); }
.km-source a { color: var(--km-muted); }

@media (max-width: 640px) {
	.km-zoom { top: 6px; right: 6px; gap: 4px; }
	.km-zoom button { width: 32px; height: 32px; font-size: 15px; }
	.km-filter { min-height: 36px; }
	.km-filter { font-size: 13px; padding: 5px 10px 5px 8px; }
	.km-hint { display: none; }
}

/* Extras used by larger regional maps */
.km-city { fill: #3A424A; }
.km-region { fill: none; stroke: #5E666D; stroke-width: .9; }
.km-region-lab { font-size: 11px; font-weight: 600; letter-spacing: 3px; fill: #535B62; }
.km-town.r4 { font-size: 11px; fill: #6F777E; }
.km-town-dot.r4 { fill: #5E666D; }
.km-muni { fill: none; stroke: #555E66; stroke-width: .7; stroke-dasharray: 2 2; vector-effect: non-scaling-stroke; }

/* Tall regions: keep the map a comfortable size on wide screens */
.km-portrait .km-stage { max-width: 820px; margin-inline: auto; }

.km-ring-ru { stroke: #E0806F; stroke-dasharray: none; stroke-width: 1.8; }
