/* Sultry City map explorer — aligns with child theme dark / gold / magenta gradient */

.sultry-city-map-explorer {
	max-width: 1160px;
	margin: 2.5rem auto 3.5rem;
	padding: 0 1.25rem;
	box-sizing: border-box;
}

.sultry-city-map-explorer__inner {
	position: relative;
}

.sultry-city-map-toolbar {
	display: flex;
	justify-content: center;
	gap: 0.5rem;
	margin-bottom: 1.25rem;
}

.sultry-city-map-mode {
	appearance: none;
	cursor: pointer;
	font-family: inherit;
	font-size: 0.95rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	padding: 0.65rem 1.75rem;
	border-radius: 999px;
	border: 1px solid rgba(212, 175, 55, 0.35);
	background: rgba(10, 10, 10, 0.65);
	color: #a0a0a0;
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	transition: color 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease, background 0.25s ease;
}

.sultry-city-map-mode:hover {
	color: #e8d5a3;
	border-color: rgba(212, 175, 55, 0.55);
}

.sultry-city-map-mode.is-active {
	color: #0a0a0a;
	border-color: transparent;
	background: linear-gradient(135deg, #e8b4d4 0%, #d4af37 55%, #f0d078 100%);
	box-shadow: 0 0 24px rgba(212, 175, 55, 0.35);
}

.sultry-city-map-frame {
	position: relative;
	margin: 0;
	border-radius: 14px;
	overflow: hidden;
	border: 1px solid rgba(212, 175, 55, 0.22);
	box-shadow: 0 28px 80px rgba(0, 0, 0, 0.55), inset 0 0 0 1px rgba(255, 255, 255, 0.04);
	background: #050505;
}

.sultry-city-map-image {
	display: block;
	width: 100%;
	height: auto;
	vertical-align: middle;
	min-height: 420px;
	object-fit: cover;
}

.sultry-city-map-svg {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	pointer-events: none;
}

.sultry-city-map-svg[hidden] {
	display: none !important;
}

/* Faction mode — same soft-edge language as districts (per-sector classes below) */
.sultry-city-map-svg--factions .sultry-city-hotspot--faction {
	pointer-events: auto;
	stroke: none;
	cursor: pointer;
	transition: fill 0.22s ease, filter 0.28s ease;
}

/* District mode — no strokes; soft edges via blur + colored glow only */
.sultry-city-map-svg--districts .sultry-city-hotspot--district {
	pointer-events: auto;
	stroke: none;
	cursor: pointer;
	transition: fill 0.22s ease, filter 0.28s ease;
}

.sultry-district--neon-verge,
.sultry-faction--velvet-syndicate {
	fill: rgba(255, 60, 160, 0.09);
	filter: blur(0.85px) drop-shadow(0 0 10px rgba(255, 70, 180, 0.32));
	animation: sultry-district-idle-neon 4.5s ease-in-out infinite;
}

.sultry-district--the-pinnacle {
	fill: rgba(255, 200, 120, 0.1);
	filter: blur(0.85px) drop-shadow(0 0 10px rgba(255, 190, 90, 0.34));
	animation: sultry-district-idle-gold 5s ease-in-out infinite;
}

.sultry-district--deep-reach,
.sultry-faction--undershade-network {
	fill: rgba(255, 90, 40, 0.1);
	filter: blur(0.85px) drop-shadow(0 0 11px rgba(255, 100, 50, 0.36));
	animation: sultry-district-idle-ember 4.2s ease-in-out infinite;
}

.sultry-district--iron-loop,
.sultry-faction--genforma:not(.sultry-city-hotspot--hidden) {
	fill: rgba(150, 145, 135, 0.11);
	filter: blur(0.85px) drop-shadow(0 0 9px rgba(160, 150, 140, 0.32));
	animation: sultry-district-idle-iron 5.2s ease-in-out infinite;
}

/* Genforma: full lower-right sector + classified pulse (overrides idle iron animation) */
.sultry-faction--genforma.sultry-city-hotspot--hidden {
	fill: rgba(150, 145, 135, 0.11);
	animation: sultry-city-pulse 2.8s ease-in-out infinite;
}

.sultry-district--civic-core {
	fill: rgba(80, 170, 255, 0.1);
	filter: blur(0.85px) drop-shadow(0 0 12px rgba(80, 170, 255, 0.4));
	animation: sultry-district-idle-civic 4.8s ease-in-out infinite;
}

@keyframes sultry-district-idle-neon {
	0%,
	100% {
		filter: blur(0.85px) drop-shadow(0 0 8px rgba(255, 70, 180, 0.22));
	}
	50% {
		filter: blur(0.85px) drop-shadow(0 0 20px rgba(255, 100, 200, 0.48));
	}
}

@keyframes sultry-district-idle-gold {
	0%,
	100% {
		filter: blur(0.85px) drop-shadow(0 0 8px rgba(255, 190, 100, 0.26));
	}
	50% {
		filter: blur(0.85px) drop-shadow(0 0 22px rgba(255, 210, 130, 0.52));
	}
}

@keyframes sultry-district-idle-ember {
	0%,
	100% {
		filter: blur(0.85px) drop-shadow(0 0 9px rgba(255, 100, 50, 0.28));
	}
	50% {
		filter: blur(0.85px) drop-shadow(0 0 22px rgba(255, 130, 70, 0.52));
	}
}

@keyframes sultry-district-idle-iron {
	0%,
	100% {
		filter: blur(0.85px) drop-shadow(0 0 7px rgba(140, 130, 120, 0.26));
	}
	50% {
		filter: blur(0.85px) drop-shadow(0 0 18px rgba(180, 165, 150, 0.42));
	}
}

@keyframes sultry-district-idle-civic {
	0%,
	100% {
		filter: blur(0.85px) drop-shadow(0 0 10px rgba(80, 170, 255, 0.3));
	}
	50% {
		filter: blur(0.85px) drop-shadow(0 0 24px rgba(120, 200, 255, 0.55));
	}
}

/* Aegis: upper-right + central hub — gold (Pinnacle) + cyan (Civic) glow */
.sultry-faction--aegis-combine {
	fill: rgba(200, 210, 230, 0.1);
	filter: blur(0.85px) drop-shadow(0 0 10px rgba(255, 190, 100, 0.32)) drop-shadow(0 0 12px rgba(80, 170, 255, 0.28));
	animation: sultry-faction-idle-aegis 5s ease-in-out infinite;
}

@keyframes sultry-faction-idle-aegis {
	0%,
	100% {
		filter: blur(0.85px) drop-shadow(0 0 8px rgba(255, 190, 100, 0.24)) drop-shadow(0 0 10px rgba(80, 170, 255, 0.24));
	}
	50% {
		filter: blur(0.85px) drop-shadow(0 0 22px rgba(255, 210, 130, 0.5)) drop-shadow(0 0 22px rgba(120, 200, 255, 0.48));
	}
}

.sultry-city-map-svg--districts .sultry-district--neon-verge:hover,
.sultry-city-map-svg--districts .sultry-district--neon-verge:focus,
.sultry-city-map-svg--factions .sultry-faction--velvet-syndicate:hover,
.sultry-city-map-svg--factions .sultry-faction--velvet-syndicate:focus {
	fill: rgba(255, 50, 150, 0.22);
	outline: none;
	filter: blur(0.85px) drop-shadow(0 0 28px rgba(255, 100, 200, 0.62)) drop-shadow(0 0 12px rgba(255, 60, 180, 0.45));
	animation: none;
}

.sultry-city-map-svg--districts .sultry-district--the-pinnacle:hover,
.sultry-city-map-svg--districts .sultry-district--the-pinnacle:focus {
	fill: rgba(255, 210, 140, 0.24);
	outline: none;
	filter: blur(0.85px) drop-shadow(0 0 28px rgba(255, 200, 100, 0.62));
	animation: none;
}

.sultry-city-map-svg--districts .sultry-district--deep-reach:hover,
.sultry-city-map-svg--districts .sultry-district--deep-reach:focus,
.sultry-city-map-svg--factions .sultry-faction--undershade-network:hover,
.sultry-city-map-svg--factions .sultry-faction--undershade-network:focus {
	fill: rgba(255, 100, 50, 0.24);
	outline: none;
	filter: blur(0.85px) drop-shadow(0 0 28px rgba(255, 120, 60, 0.62));
	animation: none;
}

.sultry-city-map-svg--districts .sultry-district--iron-loop:hover,
.sultry-city-map-svg--districts .sultry-district--iron-loop:focus,
.sultry-city-map-svg--factions .sultry-faction--genforma:hover,
.sultry-city-map-svg--factions .sultry-faction--genforma:focus {
	fill: rgba(170, 160, 150, 0.24);
	outline: none;
	filter: blur(0.85px) drop-shadow(0 0 26px rgba(160, 150, 140, 0.52));
	animation: none;
}

.sultry-city-map-svg--factions .sultry-faction--aegis-combine:hover,
.sultry-city-map-svg--factions .sultry-faction--aegis-combine:focus {
	fill: rgba(220, 225, 245, 0.2);
	outline: none;
	filter: blur(0.85px) drop-shadow(0 0 28px rgba(255, 200, 100, 0.58)) drop-shadow(0 0 28px rgba(100, 190, 255, 0.55));
	animation: none;
}

.sultry-city-map-svg--districts .sultry-district--civic-core:hover,
.sultry-city-map-svg--districts .sultry-district--civic-core:focus {
	fill: rgba(100, 190, 255, 0.24);
	outline: none;
	filter: blur(0.85px) drop-shadow(0 0 30px rgba(100, 190, 255, 0.68));
	animation: none;
}

.sultry-city-map-svg--districts .sultry-city-hotspot--district:focus-visible,
.sultry-city-map-svg--factions .sultry-city-hotspot--faction:focus-visible {
	outline: none;
}

.sultry-city-hotspot--hidden:not(.sultry-faction--genforma) {
	animation: sultry-city-pulse 2.8s ease-in-out infinite;
}

@keyframes sultry-city-pulse {
	0%,
	100% {
		fill: rgba(120, 200, 255, 0.07);
		filter: blur(0.75px) drop-shadow(0 0 8px rgba(120, 200, 255, 0.25));
	}
	50% {
		fill: rgba(186, 85, 127, 0.16);
		filter: blur(0.75px) drop-shadow(0 0 20px rgba(232, 180, 120, 0.45));
	}
}

@media (prefers-reduced-motion: reduce) {
	.sultry-city-hotspot--hidden {
		animation: none;
	}
	.sultry-city-map-mode,
	.sultry-city-map-svg--factions .sultry-city-hotspot--faction,
	.sultry-city-map-svg--districts .sultry-city-hotspot--district {
		transition: none;
	}
	.sultry-district--neon-verge,
	.sultry-district--the-pinnacle,
	.sultry-district--deep-reach,
	.sultry-district--iron-loop,
	.sultry-district--civic-core,
	.sultry-faction--velvet-syndicate,
	.sultry-faction--undershade-network,
	.sultry-faction--genforma,
	.sultry-faction--aegis-combine {
		animation: none;
	}
}

/* Modal */
.sultry-city-map-modal[hidden] {
	display: none !important;
}

.sultry-city-map-modal {
	position: fixed;
	inset: 0;
	z-index: 100050;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.5rem;
	box-sizing: border-box;
}

.sultry-city-map-modal__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(5, 5, 5, 0.72);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	cursor: zoom-out;
}

.sultry-city-map-modal__panel {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	width: 100%;
	max-width: min(1180px, 96vw);
	max-height: min(92vh, 920px);
	overflow: hidden;
	border-radius: 16px;
	border: 1px solid rgba(212, 175, 55, 0.28);
	background: linear-gradient(165deg, rgba(22, 18, 16, 0.97) 0%, rgba(8, 8, 8, 0.98) 100%);
	box-shadow: 0 32px 100px rgba(0, 0, 0, 0.75);
	animation: sultry-city-modal-in 0.38s cubic-bezier(0.2, 0.85, 0.25, 1) both;
}

@keyframes sultry-city-modal-in {
	from {
		opacity: 0;
		transform: translateY(18px) scale(0.97);
		filter: blur(6px);
	}
	to {
		opacity: 1;
		transform: translateY(0) scale(1);
		filter: blur(0);
	}
}

@media (prefers-reduced-motion: reduce) {
	.sultry-city-map-modal__panel {
		animation: none;
	}
}

body.sultry-city-map-modal-open {
	overflow: hidden;
}

.sultry-city-map-modal__panel:focus {
	outline: none;
}

.sultry-city-map-modal__body {
	flex: 1 1 auto;
	min-height: 0;
	padding: 2.25rem 2rem 2rem;
	color: #c4c4c4;
	font-size: 0.98rem;
	line-height: 1.65;
	overflow-y: auto;
	overflow-x: hidden;
	overscroll-behavior: contain;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.sultry-city-map-modal__body::-webkit-scrollbar {
	width: 0;
	height: 0;
}

/* Two-column modal: main (hero + copy) | aside (key sites / sub-factions) */
.sultry-city-map-modal__layout {
	display: grid;
	grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr);
	gap: 1.75rem 2rem;
	align-items: stretch;
}

.sultry-city-map-modal__main {
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
	min-height: 100%;
	min-width: 0;
}

.sultry-city-map-modal__aside {
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
	min-height: 100%;
	min-width: 0;
	padding: 0.35rem 0 0.35rem 1.75rem;
	border-left: 1px solid rgba(212, 175, 55, 0.14);
	background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.025) 35%, rgba(255, 255, 255, 0.035) 100%);
	border-radius: 0 4px 4px 0;
}

/* Desktop two-column: both columns vertically center their content in the shared row height */
@media (min-width: 901px) {
	.sultry-city-map-modal__main,
	.sultry-city-map-modal__aside {
		justify-content: center;
	}

	.sultry-city-map-modal__aside .sultry-city-map-location:not(.sultry-city-map-location--text-only) {
		grid-template-columns: minmax(0, 118px) 1fr;
		gap: 0.85rem;
	}
}

.sultry-city-map-modal__aside .sultry-city-map-modal__subhead {
	margin-top: 0;
}

.sultry-city-map-modal__title {
	margin: 0 0 1rem;
	font-size: clamp(1.55rem, 3vw, 2rem);
	font-weight: 800;
	letter-spacing: 0.02em;
	line-height: 1.2;
	background: linear-gradient(120deg, #e8b4d4 0%, #d4af37 45%, #f5e6b8 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.sultry-city-map-modal__title--genforma {
	background: linear-gradient(120deg, #9fd4ff 0%, #ba557f 50%, #d4af37 100%);
	-webkit-background-clip: text;
	background-clip: text;
}

.sultry-city-map-modal__badge {
	margin: -0.25rem 0 1rem;
	font-size: 0.72rem;
	text-transform: uppercase;
	letter-spacing: 0.14em;
	color: rgba(159, 212, 255, 0.85);
}

.sultry-city-map-modal__lead p,
.sultry-city-map-modal__territory p,
.sultry-city-map-modal__territory-text p,
.sultry-city-map-location__desc p,
.sultry-city-map-subcard__desc p,
.sultry-city-map-subcard__regions p {
	margin: 0 0 0.75rem;
}

.sultry-city-map-modal__hero-img {
	margin: 1rem 0 0;
	border-radius: 10px;
	overflow: hidden;
	border: 1px solid rgba(255, 255, 255, 0.06);
}

.sultry-city-map-modal__hero-img img {
	display: block;
	width: 100%;
	height: auto;
}

.sultry-city-map-modal__subhead {
	margin: 0 0 0.85rem;
	font-size: 1.05rem;
	font-weight: 700;
	color: #daa960;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.sultry-city-map-locations {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 1.1rem;
	justify-content: flex-start;
}

.sultry-city-map-location {
	display: grid;
	grid-template-columns: minmax(0, 140px) 1fr;
	gap: 1rem;
	align-items: start;
	padding-bottom: 1.25rem;
	border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.sultry-city-map-location:last-child {
	border-bottom: none;
	padding-bottom: 0;
}

.sultry-city-map-location--text-only {
	grid-template-columns: 1fr;
}

.sultry-city-map-location__img {
	border-radius: 8px;
	overflow: hidden;
	border: 1px solid rgba(212, 175, 55, 0.15);
}

.sultry-city-map-location__img img {
	display: block;
	width: 100%;
	height: auto;
}

.sultry-city-map-location__title {
	margin: 0 0 0.35rem;
	font-size: 1.05rem;
	font-weight: 700;
	color: #f0e6d2;
}

.sultry-city-map-modal__territory {
	margin-top: 0.5rem;
	padding: 0.75rem 1rem;
	border-radius: 10px;
	background: rgba(212, 175, 55, 0.06);
	border: 1px solid rgba(212, 175, 55, 0.12);
}

/* Genforma: one column; no aside */
.sultry-city-map-modal__layout--single {
	grid-template-columns: 1fr;
}

.sultry-city-map-modal__main--single {
	justify-content: flex-start;
}

.sultry-city-map-modal__territory--with-cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem 1.5rem;
}

.sultry-city-map-modal__territory-text {
	flex: 1 1 14rem;
	min-width: 0;
}

.sultry-city-map-modal__territory-cta {
	flex: 0 0 auto;
	align-self: center;
}

.sultry-city-map-subgrid {
	display: flex;
	flex-direction: column;
	gap: 1.1rem;
	justify-content: flex-start;
}

.sultry-city-map-subcard {
	padding: 1rem 1.1rem;
	border-radius: 12px;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(255, 255, 255, 0.06);
}

.sultry-city-map-subcard__title {
	margin: 0 0 0.5rem;
	font-size: 1.08rem;
	color: #eee6d8;
}

.sultry-city-map-subcard__regions {
	margin: 0.5rem 0 0.75rem;
	font-size: 0.92rem;
	color: #9a9a9a;
}

/* Sub-faction CTAs — distinct silhouettes */
.sultry-city-cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-top: 0.35rem;
	padding: 0.55rem 1.15rem;
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-decoration: none;
	border-radius: 8px;
	transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, border-color 0.2s ease;
}

.sultry-city-cta:hover {
	transform: translateY(-1px);
}

.sultry-city-cta--helion {
	color: #0a0a0a;
	background: linear-gradient(135deg, #e8d5a3, #c9a227);
	border: 1px solid #f5e6b8;
	box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2) inset;
}

.sultry-city-cta--corelogic {
	color: #dfefff;
	background: transparent;
	border: 1px solid rgba(120, 180, 255, 0.65);
	box-shadow: 0 0 18px rgba(80, 140, 255, 0.25);
}

.sultry-city-cta--veritas {
	color: #0a0a0a;
	background: #a8a8a8;
	border: 1px dashed #555;
	font-family: ui-monospace, monospace;
	letter-spacing: 0.1em;
}

.sultry-city-cta--redline {
	color: #ffb4b4;
	background: rgba(80, 0, 0, 0.45);
	border: 1px solid #ff4444;
	box-shadow: 0 0 20px rgba(255, 50, 50, 0.25);
}

.sultry-city-cta--hollow {
	color: #f5e6c8;
	background: radial-gradient(circle at 30% 30%, #3a3020, #120e0a);
	border: 1px solid #8a7040;
}

.sultry-city-cta--smoke {
	color: #d0d0d0;
	background: linear-gradient(180deg, #2a2a2a, #121212);
	border: 1px solid #555;
	border-style: double;
}

.sultry-city-cta--crimson {
	color: #ffe8ef;
	background: linear-gradient(135deg, #6a1a3a, #3a0a20);
	border: 1px solid #ff6a9a;
	box-shadow: 0 0 22px rgba(255, 80, 140, 0.25);
}

.sultry-city-cta--eidolon {
	color: #f0e8ff;
	background: rgba(90, 60, 140, 0.45);
	border: 1px solid rgba(200, 160, 255, 0.5);
	box-shadow: 0 0 24px rgba(160, 100, 255, 0.2);
}

.sultry-city-cta--velvet-chain {
	color: #0a0a0a;
	background: linear-gradient(90deg, #d4af37, #ba557f);
	border: none;
}

.sultry-city-cta--genforma-a {
	color: #cffff8;
	background: rgba(0, 40, 40, 0.65);
	border: 1px solid #4dd4c4;
	box-shadow: 0 0 18px rgba(77, 212, 196, 0.25);
}

.sultry-city-cta--genforma-b {
	color: #f8f0ff;
	background: transparent;
	border: 1px solid rgba(200, 120, 255, 0.45);
	border-radius: 2px;
	font-style: italic;
	text-transform: none;
	letter-spacing: 0.03em;
}

.sultry-city-cta--genforma-c {
	color: #0a0a0a;
	background: repeating-linear-gradient(-45deg, #222, #222 4px, #333 4px, #333 8px);
	border: 1px solid #888;
	font-variant: small-caps;
}

@media (max-width: 900px) {
	.sultry-city-map-modal__layout {
		grid-template-columns: 1fr;
		min-height: 0;
		gap: 1.5rem;
	}

	.sultry-city-map-modal__aside {
		padding: 1.5rem 0 0;
		border-left: none;
		border-top: 1px solid rgba(212, 175, 55, 0.14);
		background: linear-gradient(180deg, rgba(255, 255, 255, 0.03) 0%, transparent 40%);
		border-radius: 0;
	}
}

@media (max-width: 600px) {
	.sultry-city-map-location {
		grid-template-columns: 1fr;
	}
	.sultry-city-map-modal__body {
		padding: 2rem 1.25rem 1.5rem;
	}
}
