.map-stage.is-3d,.map-stage.map-pending{height:490px;background:radial-gradient(ellipse at 55% 55%,#f2bf000d,transparent 68%);isolation:isolate}
.map-stage.is-3d>.iran-map,.map-stage.is-3d>.map-graphic{display:none}
.webgl-map{position:absolute;inset:0;overflow:hidden;border-radius:16px;opacity:0;transition:opacity .65s var(--ease)}
.map-ready .webgl-map{opacity:1}
.map-pending>.iran-map,.map-pending>.map-callout,.map-pending>.map-graphic{visibility:hidden;opacity:0;pointer-events:none}
.map-loading{position:absolute;inset:0;z-index:9;display:flex;align-items:center;justify-content:center;flex-direction:column;background:var(--canvas);transition:opacity .6s var(--ease),transform .6s var(--ease);pointer-events:none;border-radius:16px}
.map-loading.leaving{opacity:0;transform:scale(1.025)}
.loading-orbit{position:relative;width:215px;height:185px;display:grid;place-items:center}
.loading-orbit:before{content:'';position:absolute;width:135px;height:135px;border-radius:50%;background:#f2bf000c;box-shadow:0 0 0 22px #f2bf0005;animation:loadingBreathe 2.5s ease-in-out infinite}
.loading-silhouette{width:205px;height:175px;fill:#f2bf0009;stroke:#b9a458;stroke-width:2.4;stroke-dasharray:320 240;animation:loadingOutline 4s linear infinite;position:relative;z-index:1}
.loading-sweep{position:absolute;inset:5px 40px;border-radius:50%;border:1px solid transparent;border-top-color:#f2bf0080;animation:loadingTurn 3s linear infinite}
.loading-copy{text-align:center;font-size:13px;font-weight:650;line-height:2.2;color:var(--ink);margin-top:6px}
.loading-copy span{display:block;font-size:10px;font-weight:400;color:var(--muted)}
.loading-dots{display:flex;gap:5px;margin-top:13px;direction:ltr}
.loading-dots i{width:4px;height:4px;border-radius:50%;background:var(--brand);animation:loadingDot 1.5s ease-in-out infinite}
.loading-dots i:nth-child(2){animation-delay:.18s}.loading-dots i:nth-child(3){animation-delay:.36s}
.map-picker-skeleton{height:45px;margin:13px 12px 0;border:1px solid var(--line);border-radius:9px;background:var(--surface);display:flex;align-items:center;padding:0 14px;font-size:10px;color:var(--muted)}
@keyframes loadingOutline{to{stroke-dashoffset:-1120}}@keyframes loadingTurn{to{transform:rotate(360deg)}}@keyframes loadingBreathe{50%{transform:scale(1.08);opacity:.6}}@keyframes loadingDot{0%,75%,100%{opacity:.3;transform:translateY(0)}35%{opacity:1;transform:translateY(-3px)}}
.webgl-map canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab;outline-offset:-4px}
.webgl-map canvas:active{cursor:grabbing}
.map-city-labels{position:absolute;inset:0;pointer-events:none}
.city-3d-label{position:absolute;left:0;top:0;display:flex;align-items:center;justify-content:center;gap:4px;pointer-events:auto;background:var(--surface);color:var(--ink);font:500 10px Vazirmatn;line-height:1.6;border:1px solid var(--line);border-radius:6px;min-width:37px;min-height:27px;padding:4px 7px;box-shadow:0 3px 12px #173e2210;white-space:nowrap;transition:background .2s,opacity .2s,border-color .2s;will-change:transform}
.city-3d-label:hover,.city-3d-label.chosen{background:var(--brand);border-color:#d7aa00;color:#22291b;z-index:3}
.label-beacon{width:4px;height:4px;border-radius:50%;background:#bd9400}
.city-3d-label.dormant{width:14px;min-width:14px;min-height:14px;height:14px;padding:0;border-radius:50%;background:var(--surface);border-color:#9eafa2;box-shadow:0 0 0 4px #8da99b0f;z-index:0}
.city-3d-label.dormant .label-beacon{background:#9eafa2}
.city-3d-label.dormant>span:last-child{position:absolute;top:18px;background:var(--surface);border:1px solid var(--line);padding:2px 6px;border-radius:4px;opacity:0;pointer-events:none}
.city-3d-label.dormant:hover>span:last-child,.city-3d-label.dormant:focus-visible>span:last-child{opacity:1}
.map-stage.is-3d .map-callout{top:38px;left:30px;min-width:165px;pointer-events:auto;z-index:5;max-width:260px}
.map-stage.is-3d .map-callout:after{display:none}
.map-callout.center-callout{left:28px!important;top:32px!important}
.map-callout.center-callout strong{max-width:170px;white-space:normal;font-size:11px}
.map-callout.center-callout div>span{font-size:9px}
.map-3d-toolbar{position:absolute;right:12px;top:75px;z-index:6;display:flex;flex-direction:column;gap:3px;padding:5px;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:0 5px 24px #1b43200a}
.map-3d-toolbar button{width:32px;height:34px;display:grid;place-items:center;border:0;border-radius:6px;background:transparent;line-height:1;font-size:23px;font-family:Vazirmatn,sans-serif;color:var(--ink);transition:background .2s}
.map-3d-toolbar button:hover{background:var(--soft)}
.map-3d-toolbar button[data-map-action=expand]{font-size:25px}
.map-3d-toolbar button[data-map-action=pause]{font-size:17px}
.map-3d-toolbar>span{height:1px;background:var(--line);margin:2px 4px}
.map-interaction-hint{position:absolute;bottom:6px;left:0;right:0;pointer-events:none;text-align:center;color:var(--muted);font-size:9px;z-index:2}
.station-inset-caption{position:absolute;bottom:38px;left:10px;background:var(--surface);border:1px solid var(--line);border-radius:7px;padding:6px 9px;color:var(--muted);font:500 8px Vazirmatn;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:5px;max-width:170px;z-index:2}
.station-inset-caption:hover{border-color:var(--brand)}
.inset-live{width:5px;height:5px;border-radius:50%;background:var(--green)}
.inset-open{color:var(--ink);font-size:8px;font-weight:600}
.map-center-picker{position:relative;display:flex;gap:9px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:9px;margin:13px 12px 0;padding:8px 12px;max-width:100%;font-size:10px}
.map-center-picker label{color:var(--muted);white-space:nowrap}
.map-center-picker select{background:transparent;border:0;width:100%;min-height:27px;max-width:100%;font-size:10px;cursor:pointer}
.map-center-picker select option{font-size:12px}
.map-panel.is-expanded{position:fixed;inset:22px;width:auto;align-self:auto;z-index:90;background:var(--canvas);border:1px solid var(--line);box-shadow:0 20px 120px #0004;border-radius:20px;display:flex;flex-direction:column;padding:25px 25px 18px;animation:modalIn .35s var(--ease)}
.map-panel.is-expanded .map-stage{flex:1;height:auto;min-height:0}
.map-panel.is-expanded .map-top-label{right:30px;top:22px;font-size:13px}
.map-panel.is-expanded .map-3d-toolbar{right:30px;top:88px}
.map-panel.is-expanded .map-bottom{margin-top:0;font-size:12px;padding:0 12px}
.map-panel.is-expanded .map-source{font-size:10px}
.map-panel.is-expanded .map-legend{font-size:11px}
.map-panel.is-expanded .map-center-picker{max-width:500px;width:100%;margin:12px auto 0;font-size:12px}
.map-panel.is-expanded .map-center-picker select{font-size:12px}
.map-panel.is-expanded .station-inset-caption{left:20px;bottom:38px;max-width:180px}
.map-panel.is-expanded .map-callout{left:30px;top:35px}
.map-expanded-scrim{position:fixed;inset:0;background:#122119a6;backdrop-filter:blur(6px);z-index:80}
.map-is-open{overflow:hidden}
.map-home-control{position:absolute;top:66px;right:18px;z-index:7;animation:calloutIn .35s var(--ease)}
.map-home-control button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:43px;padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);font:600 11px Vazirmatn;box-shadow:0 5px 25px #1839260a;transition:background .2s,transform .2s}
.map-home-control button:hover{background:var(--soft)}
.map-home-control button:active{transform:scale(.96)}
.map-home-control .icon{width:18px;height:18px}
.map-panel.is-expanded .map-interaction-hint{font-size:11px}
.webgl-fallback{font-size:10px;color:var(--muted);text-align:center}
.selected-center{border-color:var(--brand);box-shadow:0 0 0 2px #f2bf0026}
.card-map-actions{display:flex;gap:9px;align-items:center}
.map-center-button{color:var(--ink);font-weight:600}
.card-map-actions .card-details{font-size:10px}
.card-footer{flex-wrap:wrap}
.center-card .card-address{font-size:12px;line-height:1.9;min-height:46px}
.center-card .card-title-row h3{font-size:15px}
.center-card .card-title-row p{font-size:11px}
.center-card .card-tags span{font-size:10px}
.center-card .phone-link{font-size:12px}
.network-strip{margin-top:22px}
@media(min-width:1450px){.map-stage.is-3d,.map-stage.map-pending{height:530px}}
@media(max-width:1100px){.map-stage.is-3d,.map-stage.map-pending{height:470px}.map-3d-toolbar{right:5px}.map-stage.is-3d .map-callout{left:16px;top:40px;min-width:145px;max-width:190px}.card-map-actions{gap:7px}.card-map-actions .card-details{font-size:9px}}
@media(max-width:760px){.map-stage.is-3d,.map-stage.map-pending{height:415px;margin-top:12px}.map-panel{padding-top:22px}.map-top-label{top:14px}.map-3d-toolbar{top:66px;right:0;padding:3px;gap:2px}.map-3d-toolbar button{width:32px;height:34px}.map-stage.is-3d .map-callout{top:17px!important;left:8px!important;padding:7px;min-width:145px;max-width:205px}.map-interaction-hint{font-size:8px;bottom:0}.city-3d-label{font-size:9px;min-height:25px;padding:3px 6px;min-width:33px}.station-inset-caption{left:5px;bottom:35px;font-size:7px;max-width:150px;padding:5px}.inset-open{font-size:7px}.map-center-picker{margin:12px 0 0;padding:8px;font-size:9px}.map-center-picker select{font-size:10px}.map-panel.is-expanded{inset:9px;padding:35px 10px 14px;border-radius:14px}.map-panel.is-expanded .map-top-label{right:16px;top:13px;font-size:11px}.map-panel.is-expanded .map-3d-toolbar{right:10px;top:85px}.map-panel.is-expanded .map-stage{height:auto;min-height:0}.map-panel.is-expanded .map-interaction-hint{font-size:8px}.map-panel.is-expanded .map-legend{font-size:9px}.map-panel.is-expanded .map-source{font-size:8px}.map-panel.is-expanded .map-center-picker{width:100%;font-size:9px}.map-panel.is-expanded .map-center-picker select{font-size:10px}.center-card .card-title-row h3{font-size:13px}.center-card .card-address{font-size:11px}.center-card .card-tags span{font-size:9px}.card-map-actions{width:100%;justify-content:space-between;gap:7px}.card-map-actions .card-details{font-size:10px}.network-strip{margin-top:8px}}
@media(max-width:400px){.map-stage.is-3d,.map-stage.map-pending{height:370px}.map-stage.is-3d .map-callout{max-width:172px;min-width:130px}.city-3d-label{font-size:8px;padding:2px 4px;min-height:23px;min-width:26px}.card-map-actions{width:auto;gap:13px}.center-card .card-title-row h3{font-size:15px}.center-card .card-address{font-size:12px}.map-3d-toolbar button{width:30px}.station-inset-caption{left:0;max-width:128px}}
@media(prefers-reduced-motion:reduce){.city-3d-label{will-change:auto}}
