.gpm-map{
	position:relative;
	width:100%;
	border-radius:16px;
	overflow:hidden;
	display:flex;
	align-items:center;
	justify-content:center;
}
.gpm-map .gpm-canvas{ display:block; max-width:100%; max-height:100%; }

.gpm-loading{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; z-index:2; }
.gpm-spinner{
	width:34px;height:34px;border-radius:50%;
	border:3px solid rgba(255,255,255,.18);
	border-top-color:rgba(255,255,255,.8);
	animation:gpm-spin .8s linear infinite;
}
@keyframes gpm-spin{ to{ transform:rotate(360deg); } }

.gpm-error{
	position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
	color:#fca5a5; font-size:14px; text-align:center; padding:0 24px; line-height:1.6;
}

/* tooltips */
.gpm-tip{
	background:#0f172a; color:#e2e8f0; padding:6px 10px; border-radius:8px;
	font-size:13px; line-height:1.4; box-shadow:0 6px 20px rgba(0,0,0,.4);
	border:1px solid rgba(255,255,255,.08);
}
.jvm-tooltip{
	background:#0f172a !important; color:#e2e8f0 !important;
	border:1px solid rgba(255,255,255,.08) !important; border-radius:8px !important;
	padding:5px 9px !important; font-size:13px !important;
}

/* flat markers: crisp, visible pins (markers are the SVG circles) */
.gpm-map svg circle{ filter:drop-shadow(0 1px 2px rgba(0,0,0,.55)); }

/* pulse for flat markers */
.gpm-pulse svg circle{ animation:gpm-pulse 1.7s ease-in-out infinite; transform-box:fill-box; transform-origin:center; }
@keyframes gpm-pulse{ 0%,100%{ opacity:1; } 50%{ opacity:.6; } }

/* reset / back-to-full-view button */
.gpm-reset-btn{
	position:absolute; top:14px; left:14px; z-index:7; display:none; align-items:center; gap:6px;
	background:rgba(15,23,42,.85); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
	color:#e2e8f0; border:1px solid rgba(255,255,255,.14);
	border-radius:999px; padding:7px 13px; font-size:12.5px; font-weight:600; cursor:pointer;
	box-shadow:0 8px 24px rgba(0,0,0,.3); transition:background .15s, transform .1s;
}
.gpm-reset-btn span{ font-size:15px; line-height:1; }
.gpm-reset-btn.is-visible{ display:inline-flex; }
.gpm-reset-btn.alt{ left:auto; right:14px; }
.gpm-reset-btn:hover{ background:rgba(15,23,42,.96); }
.gpm-reset-btn:active{ transform:scale(.96); }

/* description panel */
.gpm-desc-panel{
	--gpm-accent:#14b8a6;
	position:absolute; z-index:6;
	background:rgba(15,23,42,.9);
	backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
	color:#e2e8f0; border:1px solid rgba(255,255,255,.1);
	border-radius:14px; padding:18px 18px 16px; width:min(300px,80%);
	box-shadow:0 20px 50px rgba(0,0,0,.45);
	opacity:0; pointer-events:none; transition:opacity .28s ease, transform .28s ease;
	max-height:calc(100% - 32px); overflow:auto;
}
.gpm-desc-panel.is-open{ opacity:1; pointer-events:auto; }
.gpm-desc-panel.pos-right{ top:16px; right:16px; transform:translateX(14px); }
.gpm-desc-panel.pos-left{ top:16px; left:16px; transform:translateX(-14px); }
.gpm-desc-panel.pos-bottom{ left:50%; bottom:16px; width:min(380px,88%); transform:translate(-50%,14px); }
.gpm-desc-panel.pos-right.is-open,.gpm-desc-panel.pos-left.is-open{ transform:translateX(0); }
.gpm-desc-panel.pos-bottom.is-open{ transform:translate(-50%,0); }
.gpm-desc-name{ font-size:18px; font-weight:700; color:#fff; padding-inline-end:22px; }
.gpm-desc-name::before{
	content:""; display:inline-block; width:9px; height:9px; border-radius:50%;
	background:var(--gpm-accent); margin-inline-end:8px; vertical-align:middle;
	box-shadow:0 0 0 4px color-mix(in srgb, var(--gpm-accent) 25%, transparent);
}
.gpm-desc-text{ font-size:13.5px; line-height:1.6; color:#cbd5e1; margin-top:8px; }
.gpm-desc-link{ display:inline-block; margin-top:12px; font-size:13px; font-weight:600; color:var(--gpm-accent); text-decoration:none; }
.gpm-desc-link:hover{ text-decoration:underline; }
.gpm-desc-close{
	position:absolute; top:10px; inset-inline-end:12px;
	background:transparent; border:0; color:#94a3b8; font-size:22px; line-height:1;
	cursor:pointer; padding:0; width:24px; height:24px;
}
.gpm-desc-close:hover{ color:#fff; }

/* branch list inside the panel */
.gpm-desc-list{ margin-top:12px; display:flex; flex-direction:column; gap:2px; border-top:1px solid rgba(255,255,255,.08); padding-top:8px; }
.gpm-desc-item{ display:flex; flex-direction:column; gap:2px; padding:8px; border-radius:9px; text-decoration:none; color:inherit; transition:background .15s; }
a.gpm-desc-item:hover{ background:rgba(255,255,255,.06); }
.gpm-desc-item-name{ font-size:13.5px; font-weight:600; color:#fff; }
.gpm-desc-item-name::before{ content:"•"; color:var(--gpm-accent); margin-inline-end:7px; }
.gpm-desc-item-desc{ font-size:12px; color:#94a3b8; padding-inline-start:15px; }

/* city groups inside the panel */
.gpm-desc-group{ margin-top:6px; }
.gpm-desc-panel .gpm-desc-group:first-of-type{ border-top:1px solid rgba(255,255,255,.08); padding-top:10px; margin-top:12px; }
.gpm-desc-group + .gpm-desc-group{ border-top:1px solid rgba(255,255,255,.06); padding-top:6px; margin-top:6px; }
.gpm-desc-group-label{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:#5eead4; font-weight:700; margin:2px 8px 5px; }

/* pin popup (tooltip on marker click) */
.gpm-pin-pop{
	--gpm-accent:#14b8a6;
	position:absolute; z-index:8;
	background:rgba(15,23,42,.96); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
	color:#e2e8f0; border:1px solid rgba(255,255,255,.14);
	border-radius:12px; padding:12px 14px; min-width:150px; max-width:240px;
	box-shadow:0 14px 34px rgba(0,0,0,.45);
	transform:translate(-50%,-100%) translateY(-12px);
	opacity:0; pointer-events:none; transition:opacity .18s ease;
}
.gpm-pin-pop.is-open{ opacity:1; pointer-events:auto; }
.gpm-pin-pop.below{ transform:translate(-50%,0) translateY(12px); }
.gpm-pin-pop::after{
	content:""; position:absolute; left:50%; transform:translateX(-50%);
	border:7px solid transparent; bottom:-13px; border-top-color:rgba(15,23,42,.96);
}
.gpm-pin-pop.below::after{ bottom:auto; top:-13px; border-top-color:transparent; border-bottom-color:rgba(15,23,42,.96); }
.gpm-pin-name{ font-size:14.5px; font-weight:700; color:#fff; padding-inline-end:18px; }
.gpm-pin-name::before{ content:""; display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--gpm-accent); margin-inline-end:7px; vertical-align:middle; }
.gpm-pin-link{ display:block; margin-top:8px; font-size:12.5px; font-weight:600; color:var(--gpm-accent); text-decoration:none; }
.gpm-pin-link:hover{ text-decoration:underline; }
.gpm-pin-gmaps span{ font-size:10px; margin-inline-end:2px; }
.gpm-pin-close{ position:absolute; top:7px; inset-inline-end:9px; background:transparent; border:0; color:#94a3b8; font-size:18px; line-height:1; cursor:pointer; padding:0; width:20px; height:20px; }
.gpm-pin-close:hover{ color:#fff; }

/* flowing comet along flat arcs */
@keyframes gpm-arc-flow{ to{ stroke-dashoffset:calc(var(--gpm-shift) * -1); } }

@media (prefers-reduced-motion:reduce){
	.gpm-spinner{ animation-duration:1.6s; }
	.gpm-pulse svg circle{ animation:none; }
	.gpm-arc-comet{ animation:none !important; opacity:0 !important; }
	.gpm-desc-panel{ transition:opacity .2s; }
}
