/**
 * MinárikBB – Mapa podnetov
 * Frontend štýly.
 *
 * VŠETKY selektory sú obmedzené prefixom .mbb-map-app, aby plugin nezasahoval
 * do žiadnych existujúcich štýlov webu mimo svojho kontajnera.
 */

.mbb-map-app {
	/* Dizajnové premenné podľa minarikbb.eu */
	--mbb-red: #C0182C;
	--mbb-red-dark: #8B0E1E;
	--mbb-red-light: #FCECED;
	--mbb-white: #FFFFFF;
	--mbb-black: #111111;
	--mbb-gray: #F4F4F4;
	--mbb-gray-mid: #7C7C7C;
	--mbb-gray-dark: #333333;
	--mbb-border: #E3E3E3;
	--mbb-map-bg: #FCFCFD;
	--mbb-radius: 8px;
	--mbb-radius-sm: 4px;
	--mbb-shadow: 0 1px 3px rgba(17, 17, 17, .08);
	--mbb-shadow-md: 0 4px 14px rgba(17, 17, 17, .10);
	--mbb-font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;

	box-sizing: border-box;
	max-width: 1300px;
	margin: 0 auto;
	padding: 0;
	font-family: var(--mbb-font);
	color: var(--mbb-black);
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}

.mbb-map-app *,
.mbb-map-app *::before,
.mbb-map-app *::after {
	box-sizing: border-box;
}

/* ===================== NADPISY KROKOV ===================== */

.mbb-map-app .mbb-section-title {
	margin: 0 0 16px;
	font-size: 20px;
	font-weight: 700;
	color: var(--mbb-black);
}

/* ===================== OZNÁMENIA ===================== */

.mbb-map-app .mbb-alert {
	padding: 14px 16px;
	border-radius: var(--mbb-radius);
	margin-bottom: 20px;
	font-size: 15px;
}

.mbb-map-app .mbb-alert--error {
	background: var(--mbb-red-light);
	border: 1px solid var(--mbb-red);
	color: var(--mbb-red-dark);
}

.mbb-map-app .mbb-alert--success {
	background: #EEF8F0;
	border: 1px solid #2E7D32;
	color: #1B5E20;
}

.mbb-map-app .mbb-alert ul {
	margin: 8px 0 0;
	padding-left: 20px;
}

/* ===================== MAPA ===================== */

.mbb-map-app .mbb-map {
	margin-bottom: 36px;
}

.mbb-map-app .mbb-map__canvas {
	position: relative;
	background: var(--mbb-map-bg);
	border: 1px solid var(--mbb-border);
	border-radius: var(--mbb-radius);
	box-shadow: var(--mbb-shadow);
	overflow: hidden;

	/* Zvislé rolovanie stránky zostáva zachované; po priblížení prstami
	   preberá gestá mapa, aby sa stránka pod prstom nehýbala. */
	touch-action: pan-y;
}

.mbb-map-app .mbb-map__canvas.is-zoomed {
	touch-action: none;
}

.mbb-map-app .mbb-map__svg {
	display: block;
	width: 100%;
	height: auto;
	background: var(--mbb-map-bg);
	overflow: visible;
}

.mbb-map-app [data-mbb-viewport] {
	transition: transform .3s ease;
}

/* Počas gesta sa prechod vypína, aby mapa presne sledovala prst. */
.mbb-map-app .mbb-map__canvas.is-gesture [data-mbb-viewport] {
	transition: none;
}

/* ---- Mestské časti ----
   Farba plochy prichádza z dátovej vrstvy cez vlastnosť --mbb-district-fill.
   Biele plné hranice a jemný tieň dávajú mape čistý schematický vzhľad. */

.mbb-map-app .mbb-map__districts {
	filter: drop-shadow(0 4px 10px rgba(23, 32, 40, .18));
}

.mbb-map-app .mbb-district {
	fill: var(--mbb-district-fill, var(--mbb-gray));
	stroke: var(--mbb-white);
	stroke-width: 3;
	stroke-linejoin: round;
	cursor: pointer;
	outline: none;

	/* Zväčšenie okolo vlastného stredu nastavuje JavaScript ako CSS
	   transform v jednotkách viewBoxu, preto je počiatok v bode 0 0. */
	transform-origin: 0 0;
	transition: transform .22s ease, opacity .22s ease, stroke-width .18s ease, filter .18s ease;
}

.mbb-map-app .mbb-district.is-hover {
	filter: brightness(1.06) saturate(1.06);
	stroke-width: 4;
}

.mbb-map-app .mbb-district:focus-visible {
	stroke: #16212A;
	stroke-width: 4.5;
	filter: brightness(1.06) saturate(1.06);
}

/* Vybraná oblasť: výraznejší biely obrys, jemný tieň, zdvihnutie. */
.mbb-map-app .mbb-district.is-selected {
	stroke: var(--mbb-white);
	stroke-width: 5;
	filter: drop-shadow(0 6px 12px rgba(23, 32, 40, .38)) saturate(1.06);
}

/* Ostatné oblasti sa pri výbere zosvetlia. */
.mbb-map-app .mbb-map__districts.has-selection .mbb-district:not(.is-selected) {
	opacity: .75;
}

/* ---- Názvy oblastí a skupín ----
   Textové vrstvy nikdy nezachytávajú kliknutie, aby neprekryli
   klikateľnosť menších oblastí pod veľkými názvami skupín. */

.mbb-map-app .mbb-map__labels,
.mbb-map-app .mbb-map__group-labels,
.mbb-map-app .mbb-district-label,
.mbb-map-app .mbb-group-label {
	pointer-events: none;
}

.mbb-map-app .mbb-district-label {
	font-family: var(--mbb-font);
	font-size: var(--mbb-label-size, 16px);
	font-weight: 600;
	fill: #1F2A33;
	text-anchor: middle;
	dominant-baseline: middle;
	paint-order: stroke;
	stroke: rgba(255, 255, 255, .62);
	stroke-width: 2.5px;
	stroke-linejoin: round;
	transition: font-size .18s ease, fill .18s ease, opacity .22s ease;
}

.mbb-map-app .mbb-district-label.is-hover {
	font-size: calc(var(--mbb-label-size, 16px) * 1.1);
}

.mbb-map-app .mbb-district-label.is-selected {
	font-size: calc(var(--mbb-label-size, 16px) * 1.12);
	fill: #10191F;
	stroke: rgba(255, 255, 255, .85);
}

.mbb-map-app .mbb-map__labels.has-selection .mbb-district-label:not(.is-selected) {
	opacity: .78;
}

/* Veľký názov skupiny (volebného obvodu). Skupiny Stred, Fončorda a Radvaň
   tvorí jediná oblasť – ich veľký názov je priamo popiskom tejto oblasti. */
.mbb-map-app .mbb-group-label,
.mbb-map-app .mbb-district-label--group {
	font-family: var(--mbb-font);
	font-size: var(--mbb-label-size, 26px);
	font-weight: 800;
	fill: #16212A;

	/* Veľké názvy sa píšu verzálkami iba vizuálne – v dátach, vo formulári
	   aj v databáze zostávajú názvy oblastí v pôvodnom tvare. */
	text-transform: uppercase;
	letter-spacing: .04em;
	text-anchor: middle;
	dominant-baseline: middle;
	paint-order: stroke;
	stroke: rgba(255, 255, 255, .55);
	stroke-width: 3px;
	stroke-linejoin: round;
}

.mbb-map-app .mbb-map__status {
	margin: 12px 0 0;
	font-size: 15px;
	color: var(--mbb-gray-dark);
	min-height: 1.6em;
}

.mbb-map-app .mbb-map__status.is-error {
	color: var(--mbb-red-dark);
	font-weight: 600;
}

/* ===================== FORMULÁR ===================== */

.mbb-map-app .mbb-form-wrap {
	background: var(--mbb-gray);
	border-radius: var(--mbb-radius);
	padding: 28px;
	scroll-margin-top: 90px;
}

.mbb-map-app .mbb-field {
	margin-bottom: 20px;
}

.mbb-map-app .mbb-field--select-district {
	margin-top: 16px;
	margin-bottom: 0;
}

.mbb-map-app .mbb-field label,
.mbb-map-app .mbb-fieldset legend {
	display: block;
	margin-bottom: 6px;
	font-size: 15px;
	font-weight: 600;
	color: var(--mbb-black);
}

.mbb-map-app .mbb-req {
	color: var(--mbb-red);
}

.mbb-map-app .mbb-optional {
	font-weight: 400;
	color: var(--mbb-gray-mid);
}

.mbb-map-app .mbb-input {
	display: block;
	width: 100%;
	min-height: 44px;
	padding: 10px 14px;
	font-family: var(--mbb-font);
	font-size: 16px;
	color: var(--mbb-black);
	background: var(--mbb-white);
	border: 1px solid var(--mbb-border);
	border-radius: var(--mbb-radius-sm);
	transition: border-color .15s ease, box-shadow .15s ease;
}

.mbb-map-app .mbb-input:focus {
	outline: none;
	border-color: var(--mbb-red);
	box-shadow: 0 0 0 3px rgba(192, 24, 44, .15);
}

.mbb-map-app .mbb-input.has-error {
	border-color: var(--mbb-red);
	background: var(--mbb-red-light);
}

.mbb-map-app .mbb-input--readonly {
	background: #EDEDED;
	color: var(--mbb-gray-dark);
	font-weight: 600;
	cursor: default;
}

.mbb-map-app .mbb-textarea {
	min-height: 120px;
	resize: vertical;
	line-height: 1.55;
}

.mbb-map-app .mbb-file {
	padding: 9px 12px;
	font-size: 15px;
}

.mbb-map-app .mbb-help {
	margin: 6px 0 0;
	font-size: 13px;
	color: var(--mbb-gray-mid);
}

.mbb-map-app .mbb-counter {
	margin: 6px 0 0;
	font-size: 13px;
	color: var(--mbb-gray-mid);
	text-align: right;
}

.mbb-map-app .mbb-counter.is-near-limit {
	color: var(--mbb-red);
	font-weight: 600;
}

.mbb-map-app .mbb-error {
	margin: 6px 0 0;
	font-size: 14px;
	font-weight: 600;
	color: var(--mbb-red-dark);
	min-height: 0;
}

.mbb-map-app .mbb-error:empty {
	display: none;
}

.mbb-map-app .mbb-fieldset {
	border: 0;
	padding: 0;
	margin-bottom: 20px;
}

.mbb-map-app .mbb-radios {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.mbb-map-app .mbb-radio {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 8px 16px;
	margin: 0;
	font-weight: 400;
	background: var(--mbb-white);
	border: 1px solid var(--mbb-border);
	border-radius: var(--mbb-radius-sm);
	cursor: pointer;
	transition: border-color .15s ease, background .15s ease;
}

.mbb-map-app .mbb-radio:hover {
	border-color: var(--mbb-red);
}

.mbb-map-app .mbb-radio input {
	width: 18px;
	height: 18px;
	accent-color: var(--mbb-red);
	margin: 0;
}

.mbb-map-app .mbb-radio:focus-within {
	border-color: var(--mbb-red);
	box-shadow: 0 0 0 3px rgba(192, 24, 44, .15);
}

.mbb-map-app .mbb-checkbox {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	font-weight: 400;
	font-size: 15px;
	line-height: 1.55;
	cursor: pointer;
}

.mbb-map-app .mbb-checkbox input {
	flex: 0 0 auto;
	width: 22px;
	height: 22px;
	margin-top: 2px;
	accent-color: var(--mbb-red);
}

.mbb-map-app .mbb-checkbox a {
	color: var(--mbb-red);
	text-decoration: underline;
}

.mbb-map-app .mbb-checkbox a:hover {
	color: var(--mbb-red-dark);
}

.mbb-map-app .mbb-field--consent {
	background: var(--mbb-white);
	border: 1px solid var(--mbb-border);
	border-radius: var(--mbb-radius-sm);
	padding: 16px;
}

.mbb-map-app .mbb-grid-2 {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 20px;
}

.mbb-map-app .mbb-photo-preview {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-top: 12px;
	padding: 10px;
	background: var(--mbb-white);
	border: 1px solid var(--mbb-border);
	border-radius: var(--mbb-radius-sm);
	font-size: 14px;
}

.mbb-map-app .mbb-photo-preview img {
	width: 64px;
	height: 64px;
	object-fit: cover;
	border-radius: var(--mbb-radius-sm);
	flex: 0 0 auto;
}

.mbb-map-app .mbb-photo-preview__name {
	flex: 1 1 auto;
	word-break: break-word;
	color: var(--mbb-gray-dark);
}

.mbb-map-app .mbb-turnstile {
	min-height: 0;
}

.mbb-map-app .mbb-actions {
	margin-top: 24px;
}

.mbb-map-app .mbb-legal {
	margin: 18px 0 0;
	font-size: 13px;
	color: var(--mbb-gray-mid);
}

/* Honeypot – skryté aj pre čítačky obrazovky, ale vyplniteľné robotmi */

.mbb-map-app .mbb-hp {
	position: absolute !important;
	left: -9999px !important;
	top: auto !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
}

/* ===================== TLAČIDLÁ ===================== */

.mbb-map-app .mbb-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 11px 24px;
	font-family: var(--mbb-font);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	border: 1px solid transparent;
	border-radius: var(--mbb-radius-sm);
	cursor: pointer;
	transition: background .15s ease, color .15s ease, border-color .15s ease;
}

.mbb-map-app .mbb-btn:focus-visible {
	outline: 3px solid rgba(192, 24, 44, .35);
	outline-offset: 2px;
}

.mbb-map-app .mbb-btn--primary {
	background: var(--mbb-red);
	color: var(--mbb-white);
}

.mbb-map-app .mbb-btn--primary:hover {
	background: var(--mbb-red-dark);
}

.mbb-map-app .mbb-btn--primary[disabled] {
	background: var(--mbb-gray-mid);
	cursor: not-allowed;
}

.mbb-map-app .mbb-btn--ghost {
	background: var(--mbb-white);
	color: var(--mbb-gray-dark);
	border-color: var(--mbb-border);
}

.mbb-map-app .mbb-btn--ghost:hover {
	border-color: var(--mbb-red);
	color: var(--mbb-red);
}

.mbb-map-app .mbb-btn--ghost.is-active {
	background: var(--mbb-red);
	border-color: var(--mbb-red);
	color: var(--mbb-white);
}

/* ===================== RESPONZÍVNOSŤ ===================== */

@media (max-width: 900px) {
	.mbb-map-app .mbb-grid-2 {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 640px) {
	.mbb-map-app .mbb-form-wrap {
		padding: 20px 16px;
		border-radius: var(--mbb-radius-sm);
	}

	/* Na mobile mierne väčšie popisky, ale stále úmerné veľkosti plochy. */
	.mbb-map-app .mbb-district-label,
	.mbb-map-app .mbb-district-label.is-hover,
	.mbb-map-app .mbb-district-label.is-selected {
		font-size: calc(var(--mbb-label-size, 16px) * 1.14);
	}

	.mbb-map-app .mbb-actions .mbb-btn {
		width: 100%;
	}

	.mbb-map-app .mbb-radio {
		width: 100%;
	}
}

/* Bez hover efektu (dotykové zariadenia) – hover štýly sa neuplatnia */

@media (hover: none) {
	.mbb-map-app .mbb-district.is-hover:not(.is-selected) {
		stroke-width: 3;
		filter: none;
	}

	.mbb-map-app .mbb-district-label.is-hover:not(.is-selected) {
		font-size: var(--mbb-label-size, 16px);
	}
}

/* Používatelia, ktorí si vypli animácie */

@media (prefers-reduced-motion: reduce) {
	.mbb-map-app *,
	.mbb-map-app [data-mbb-viewport] {
		transition: none !important;
		animation: none !important;
	}
}
