.irannet-location-map {
	--irannet-map-height: 420px;
	--irannet-pin-x: 50%;
	--irannet-pin-y: 50%;
	--irannet-pin-size: 58px;
	--irannet-pin-color: #ef4444;
	--irannet-pin-icon-color: #fff;
	--irannet-pin-ring-color: rgba(239, 68, 68, .48);
	position: relative;
	width: 100%;
	min-width: 0;
	box-sizing: border-box;
	background: #fff;
	isolation: isolate;
}

.irannet-location-map *,
.irannet-location-map *::before,
.irannet-location-map *::after {
	box-sizing: border-box;
}

.irannet-location-map__canvas {
	position: relative;
	width: 100%;
	height: var(--irannet-map-height);
	min-height: 80px;
	border-radius: inherit;
	overflow: hidden;
	isolation: isolate;
	background:
		linear-gradient(135deg, rgba(226, 232, 240, .55), rgba(248, 250, 252, .92)),
		repeating-linear-gradient(45deg, transparent 0 18px, rgba(148, 163, 184, .08) 18px 19px);
}

.irannet-location-map__embed-wrap,
.irannet-location-map__iframe,
.irannet-location-map__static-link,
.irannet-location-map__static-image {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
}

.irannet-location-map__embed-wrap {
	position: relative;
}

.irannet-location-map__iframe,
.irannet-location-map__static-image {
	transition: filter .35s ease, transform .35s ease, opacity .35s ease;
}

.irannet-location-map__static-link {
	cursor: pointer;
}

.irannet-location-map__static-image {
	object-fit: cover;
	object-position: center;
}

/* Map visual presets */
.irannet-location-map--visual-grayscale .irannet-location-map__iframe,
.irannet-location-map--visual-grayscale .irannet-location-map__static-image {
	filter: grayscale(1) contrast(.94);
}

.irannet-location-map--visual-soft .irannet-location-map__iframe,
.irannet-location-map--visual-soft .irannet-location-map__static-image {
	filter: saturate(.78) brightness(1.08) contrast(.92);
}

.irannet-location-map--visual-dark .irannet-location-map__iframe,
.irannet-location-map--visual-dark .irannet-location-map__static-image {
	filter: saturate(.7) brightness(.72) contrast(1.08);
}

.irannet-location-map--visual-vivid .irannet-location-map__iframe,
.irannet-location-map--visual-vivid .irannet-location-map__static-image {
	filter: saturate(1.3) contrast(1.08);
}

/* Frame presets */
.irannet-location-map--frame-clean {
	background: transparent;
}

.irannet-location-map--frame-outline {
	border: 1px solid #e2e8f0;
}

.irannet-location-map--frame-elevated {
	box-shadow: 0 24px 60px rgba(15, 23, 42, .13);
}

.irannet-location-map--frame-glass {
	border: 1px solid rgba(255, 255, 255, .58);
	background: rgba(255, 255, 255, .56);
	box-shadow: 0 24px 70px rgba(15, 23, 42, .12);
	backdrop-filter: blur(16px);
	-webkit-backdrop-filter: blur(16px);
}

.irannet-location-map--frame-accent::before {
	content: "";
	position: absolute;
	z-index: 5;
	inset-block-start: 0;
	inset-inline-start: 10%;
	width: 36%;
	height: 3px;
	border-radius: 999px;
	background: linear-gradient(90deg, #2563eb, #8b5cf6, #ec4899);
	box-shadow: 0 0 20px rgba(99, 102, 241, .45);
	pointer-events: none;
}

/* Click-to-load and interaction shields */
.irannet-location-map__load-layer,
.irannet-location-map__interaction-shield {
	position: absolute;
	z-index: 12;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
	background-position: center;
	background-size: cover;
	isolation: isolate;
}

.irannet-location-map__load-layer::before,
.irannet-location-map__interaction-shield::before {
	content: "";
	position: absolute;
	z-index: -1;
	inset: 0;
	background: rgba(15, 23, 42, .45);
	backdrop-filter: blur(2px);
	-webkit-backdrop-filter: blur(2px);
}
.irannet-location-map__load-layer { flex-direction: column; gap: 10px; }
.irannet-location-map__load-status { position: relative; z-index: 1; color: #fff; text-align: center; font-weight: 700; }
.irannet-location-map[data-load-mode="click"]:not(.is-map-loaded) .irannet-location-map__interaction-shield { visibility: hidden; pointer-events: none; }

.irannet-location-map__interaction-shield::before {
	background: rgba(15, 23, 42, .16);
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
}

.irannet-location-map__load-button,
.irannet-location-map__interaction-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 48px;
	padding: 12px 20px;
	border: 0;
	border-radius: 999px;
	background: #0f172a;
	color: #fff;
	font: inherit;
	font-weight: 800;
	line-height: 1.4;
	cursor: pointer;
	box-shadow: 0 14px 34px rgba(15, 23, 42, .28);
	transition: transform .24s ease, box-shadow .24s ease, opacity .24s ease;
}

.irannet-location-map__load-button:hover,
.irannet-location-map__load-button:focus-visible,
.irannet-location-map__interaction-button:hover,
.irannet-location-map__interaction-button:focus-visible {
	transform: translateY(-2px);
	box-shadow: 0 18px 42px rgba(15, 23, 42, .34);
}

.irannet-location-map__load-button:focus-visible,
.irannet-location-map__interaction-button:focus-visible {
	outline: 3px solid rgba(255, 255, 255, .65);
	outline-offset: 3px;
}

.irannet-location-map__load-icon,
.irannet-location-map__load-icon svg,
.irannet-location-map__route svg {
	display: inline-flex;
	width: 1em;
	height: 1em;
	fill: currentColor;
}

.irannet-location-map.is-map-loaded .irannet-location-map__load-layer,
.irannet-location-map.is-map-active .irannet-location-map__interaction-shield {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

/* Custom pin */
.irannet-location-map__pin {
	position: absolute;
	z-index: 20;
	inset-inline-start: var(--irannet-pin-x);
	inset-block-start: var(--irannet-pin-y);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--irannet-pin-size);
	height: var(--irannet-pin-size);
	color: inherit;
	text-decoration: none;
	transform: translate(-50%, -50%);
	isolation: isolate;
	cursor: default;
}

[dir="rtl"] .irannet-location-map__pin,
.irannet-location-map[dir="rtl"] .irannet-location-map__pin {
	transform: translate(50%, -50%);
}

.irannet-location-map__pin[href] {
	cursor: pointer;
}

.irannet-location-map__pin:focus-visible {
	outline: 3px solid color-mix(in srgb, var(--irannet-pin-color) 42%, transparent);
	outline-offset: 6px;
	border-radius: 999px;
}

.irannet-location-map__pin-core {
	position: relative;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	padding: 22%;
	background: var(--irannet-pin-color);
	color: var(--irannet-pin-icon-color);
	box-shadow: 0 14px 28px color-mix(in srgb, var(--irannet-pin-color) 36%, transparent);
	transition: transform .25s ease, box-shadow .25s ease;
}

.irannet-location-map__pin:hover .irannet-location-map__pin-core,
.irannet-location-map__pin:focus-visible .irannet-location-map__pin-core {
	transform: translateY(-3px) scale(1.05);
	box-shadow: 0 18px 36px color-mix(in srgb, var(--irannet-pin-color) 46%, transparent);
}

.irannet-location-map__pin-core svg,
.irannet-location-map__pin-core i,
.irannet-location-map__pin-core img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	fill: currentColor;
	color: currentColor;
}

.irannet-location-map__pin--shape-drop .irannet-location-map__pin-core {
	border-radius: 50% 50% 50% 12%;
	transform: rotate(-45deg);
}

.irannet-location-map__pin--shape-drop .irannet-location-map__pin-core > * {
	transform: rotate(45deg);
}

.irannet-location-map__pin--shape-drop:hover .irannet-location-map__pin-core,
.irannet-location-map__pin--shape-drop:focus-visible .irannet-location-map__pin-core {
	transform: translateY(-3px) scale(1.05) rotate(-45deg);
}

.irannet-location-map__pin--shape-circle .irannet-location-map__pin-core {
	border-radius: 50%;
}

.irannet-location-map__pin--shape-rounded .irannet-location-map__pin-core {
	border-radius: 28%;
}

.irannet-location-map__pin--shape-glass .irannet-location-map__pin-core {
	border: 1px solid rgba(255, 255, 255, .58);
	border-radius: 50%;
	background: color-mix(in srgb, var(--irannet-pin-color) 74%, transparent);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
}

.irannet-location-map__pin-rings,
.irannet-location-map__pin-rings::before,
.irannet-location-map__pin-rings::after {
	position: absolute;
	z-index: -1;
	inset: 50% auto auto 50%;
	width: 100%;
	height: 100%;
	border: 2px solid var(--irannet-pin-ring-color);
	border-radius: 50%;
	transform: translate(-50%, -50%);
	content: "";
	pointer-events: none;
}

.irannet-location-map__pin--effect-none .irannet-location-map__pin-rings {
	display: none;
}

.irannet-location-map__pin--effect-pulse .irannet-location-map__pin-rings {
	animation: irannet-map-pulse 1.7s ease-out infinite;
}

.irannet-location-map__pin--effect-radar .irannet-location-map__pin-rings {
	animation: irannet-map-radar 2.2s ease-out infinite;
}

.irannet-location-map__pin--effect-radar .irannet-location-map__pin-rings::before {
	animation: irannet-map-radar 2.2s .7s ease-out infinite;
}

.irannet-location-map__pin--effect-radar .irannet-location-map__pin-rings::after {
	animation: irannet-map-radar 2.2s 1.4s ease-out infinite;
}

.irannet-location-map__pin--effect-bounce {
	animation: irannet-map-bounce 1.9s ease-in-out infinite;
}

.irannet-location-map__pin--effect-glow .irannet-location-map__pin-core {
	animation: irannet-map-glow 1.8s ease-in-out infinite alternate;
}

.irannet-location-map__pin--effect-spin .irannet-location-map__pin-rings {
	border-style: dashed;
	animation: irannet-map-spin 5s linear infinite;
}

.irannet-location-map__pin-label {
	position: absolute;
	inset-block-end: calc(100% + 12px);
	left: 50%;
	display: block;
	max-width: min(240px, 70vw);
	padding: 8px 12px;
	border-radius: 10px;
	background: #0f172a;
	color: #fff;
	font-size: 13px;
	font-weight: 700;
	line-height: 1.5;
	white-space: nowrap;
	box-shadow: 0 10px 26px rgba(15, 23, 42, .22);
	transform: translateX(-50%) translateY(6px);
	opacity: 0;
	visibility: hidden;
	transition: opacity .22s ease, transform .22s ease, visibility .22s ease;
	pointer-events: none;
}

.irannet-location-map__pin-label::after {
	content: "";
	position: absolute;
	inset-block-start: 100%;
	left: 50%;
	border: 6px solid transparent;
	border-block-start-color: inherit;
	transform: translateX(-50%);
}

.irannet-location-map__pin--label-always .irannet-location-map__pin-label,
.irannet-location-map__pin--label-hover:hover .irannet-location-map__pin-label,
.irannet-location-map__pin--label-hover:focus-visible .irannet-location-map__pin-label {
	opacity: 1;
	visibility: visible;
	transform: translateX(-50%) translateY(0);
}

/* Information card */
.irannet-location-map__info {
	position: absolute;
	z-index: 15;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 7px;
	width: min(100%, 320px);
	margin: 0;
	padding: 18px;
	border: 1px solid rgba(255, 255, 255, .74);
	border-radius: 18px;
	background: rgba(255, 255, 255, .94);
	box-shadow: 0 18px 42px rgba(15, 23, 42, .15);
	font-style: normal;
	text-align: start;
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
}

.irannet-location-map--info-top-start .irannet-location-map__info {
	inset-block-start: 18px;
	inset-inline-start: 18px;
}

.irannet-location-map--info-top-end .irannet-location-map__info {
	inset-block-start: 18px;
	inset-inline-end: 18px;
}

.irannet-location-map--info-bottom-start .irannet-location-map__info {
	inset-block-end: 18px;
	inset-inline-start: 18px;
}

.irannet-location-map--info-bottom-end .irannet-location-map__info {
	inset-block-end: 18px;
	inset-inline-end: 18px;
}

.irannet-location-map--info-below .irannet-location-map__canvas {
	height: auto;
	overflow: visible;
}

.irannet-location-map--info-below .irannet-location-map__embed-wrap,
.irannet-location-map--info-below .irannet-location-map__static-link,
.irannet-location-map--info-below > .irannet-location-map__canvas > .irannet-location-map__static-image,
.irannet-location-map--info-below .irannet-location-map__empty {
	height: var(--irannet-map-height);
	border-radius: inherit;
	overflow: hidden;
}

.irannet-location-map--info-below .irannet-location-map__info {
	position: relative;
	inset: auto;
	width: 100%;
	max-width: none;
	margin-top: 14px;
}

.irannet-location-map--info-side-start .irannet-location-map__canvas,
.irannet-location-map--info-side-end .irannet-location-map__canvas {
	display: grid;
	grid-template-columns: minmax(220px, 32%) minmax(0, 1fr);
	align-items: stretch;
	gap: var(--irannet-map-panel-gap, 20px);
	height: auto;
	overflow: visible;
	background: transparent;
}
.irannet-location-map--info-side-end .irannet-location-map__canvas { grid-template-columns: minmax(0, 1fr) minmax(220px, 32%); }
.irannet-location-map__map-area {
	position: relative;
	grid-column: 2;
	grid-row: 1;
	min-width: 0;
	height: var(--irannet-map-height, 420px);
	min-height: 220px;
	border-radius: inherit;
	overflow: hidden;
}
.irannet-location-map--info-side-end .irannet-location-map__map-area { grid-column: 1; }
.irannet-location-map__map-area > .irannet-location-map__static-image { height: 100%; }
.irannet-location-map--info-side-start .irannet-location-map__embed-wrap,
.irannet-location-map--info-side-end .irannet-location-map__embed-wrap,
.irannet-location-map--info-side-start .irannet-location-map__static-link,
.irannet-location-map--info-side-end .irannet-location-map__static-link,
.irannet-location-map--info-side-start > .irannet-location-map__canvas > .irannet-location-map__static-image,
.irannet-location-map--info-side-end > .irannet-location-map__canvas > .irannet-location-map__static-image,
.irannet-location-map--info-side-start .irannet-location-map__empty,
.irannet-location-map--info-side-end .irannet-location-map__empty {
	grid-column: 2;
	grid-row: 1;
	height: var(--irannet-map-height, 420px);
	min-height: 220px;
	border-radius: inherit;
	overflow: hidden;
}
.irannet-location-map--info-side-end .irannet-location-map__embed-wrap,
.irannet-location-map--info-side-end .irannet-location-map__static-link,
.irannet-location-map--info-side-end > .irannet-location-map__canvas > .irannet-location-map__static-image,
.irannet-location-map--info-side-end .irannet-location-map__empty { grid-column: 1; }
.irannet-location-map--info-side-start .irannet-location-map__info,
.irannet-location-map--info-side-end .irannet-location-map__info {
	position: relative;
	grid-column: 1;
	grid-row: 1;
	inset: auto;
	width: 100%;
	max-width: none;
	justify-content: center;
	box-shadow: 0 12px 36px rgba(15, 23, 42, .09);
}
.irannet-location-map--info-side-end .irannet-location-map__info { grid-column: 2; }

.irannet-location-map__name {
	display: block;
	color: #0f172a;
	font-size: 1.05rem;
	font-weight: 900;
	line-height: 1.5;
}

.irannet-location-map__address,
.irannet-location-map__phone {
	display: block;
	color: #475569;
	font-size: .9rem;
	font-weight: 500;
	line-height: 1.75;
	text-decoration: none;
}

.irannet-location-map__phone:hover,
.irannet-location-map__phone:focus-visible {
	text-decoration: underline;
}

.irannet-location-map__route {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 38px;
	margin-top: 5px;
	padding: 8px 14px;
	border-radius: 999px;
	background: #2563eb;
	color: #fff;
	font-size: .85rem;
	font-weight: 800;
	line-height: 1.4;
	text-decoration: none;
	transition: transform .22s ease, box-shadow .22s ease, opacity .22s ease;
}

.irannet-location-map__route:hover,
.irannet-location-map__route:focus-visible {
	color: inherit;
	transform: translateY(-2px);
	box-shadow: 0 10px 24px color-mix(in srgb, currentColor 18%, transparent);
}

.irannet-location-map__route:focus-visible {
	outline: 3px solid rgba(37, 99, 235, .25);
	outline-offset: 3px;
}

/* Empty state */
.irannet-location-map__empty {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 12px;
	width: 100%;
	height: 100%;
	padding: 28px;
	background: linear-gradient(135deg, #f8fafc, #eef2ff);
	color: #475569;
	font-size: .95rem;
	font-weight: 700;
	line-height: 1.8;
	text-align: center;
}

.irannet-location-map__empty-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 58px;
	height: 58px;
	border-radius: 50%;
	background: #fff;
	color: #ef4444;
	font-size: 34px;
	box-shadow: 0 12px 30px rgba(15, 23, 42, .1);
}

@keyframes irannet-map-pulse {
	0% { transform: translate(-50%, -50%) scale(.8); opacity: .72; }
	75%, 100% { transform: translate(-50%, -50%) scale(1.55); opacity: 0; }
}

@keyframes irannet-map-radar {
	0% { transform: translate(-50%, -50%) scale(.65); opacity: .75; }
	100% { transform: translate(-50%, -50%) scale(2.15); opacity: 0; }
}

@keyframes irannet-map-bounce {
	0%, 100% { margin-top: 0; }
	50% { margin-top: -12px; }
}

@keyframes irannet-map-glow {
	from { box-shadow: 0 12px 26px color-mix(in srgb, var(--irannet-pin-color) 32%, transparent); }
	to { box-shadow: 0 16px 42px color-mix(in srgb, var(--irannet-pin-color) 68%, transparent); }
}

@keyframes irannet-map-spin {
	to { transform: translate(-50%, -50%) rotate(360deg); }
}

@media (max-width: 767px) {
	.irannet-location-map--info-side-start .irannet-location-map__canvas,
	.irannet-location-map--info-side-end .irannet-location-map__canvas { display: flex; flex-direction: column; }
	.irannet-location-map--info-side-start .irannet-location-map__info,
	.irannet-location-map--info-side-end .irannet-location-map__info {
		width: 100% !important;
		max-width: none;
		inset: auto !important;
	}
	.irannet-location-map__info {
		inset-inline: 12px !important;
		width: auto !important;
		max-width: none;
	}

	.irannet-location-map--info-top-start .irannet-location-map__info,
	.irannet-location-map--info-top-end .irannet-location-map__info {
		inset-block-start: 12px;
	}

	.irannet-location-map--info-bottom-start .irannet-location-map__info,
	.irannet-location-map--info-bottom-end .irannet-location-map__info {
		inset-block-end: 12px;
	}

	.irannet-location-map__pin-label {
		max-width: 68vw;
		white-space: normal;
		text-align: center;
	}
}

@media (prefers-reduced-motion: reduce) {
	.irannet-location-map *,
	.irannet-location-map *::before,
	.irannet-location-map *::after {
		scroll-behavior: auto !important;
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
	}
}
