.geography-section { width: 100%; }
.geo-detail-choice { position:absolute; top:12px; left:12px; z-index:4; max-width:min(320px,calc(100% - 24px)); padding:10px 12px; border:1px solid rgba(155,217,242,.22); border-radius:10px; background:rgba(4,22,32,.94); }
.geo-detail-choice button { min-height:44px; padding:8px 12px; border:1px solid rgba(155,217,242,.45); border-radius:7px; color:#d9f4ff; background:#123849; font:500 13px/1.4 'Manrope',sans-serif; }
.geo-detail-choice p { margin-top:7px; font:12px/1.45 'Manrope',sans-serif; color:#b5d0dd; }
.geo-detail-choice a { color:#d9f4ff; text-decoration:underline; }
.geo-detail-choice [hidden] { display:none; }
.geo-detail-choice button:focus-visible,.geo-detail-choice a:focus-visible { outline:2px solid #c9f2ff; outline-offset:3px; }
.geo-pins a.geo-pin { display:flex; align-items:center; justify-content:center; text-decoration:none; }
.geo-shell { width: 100%; overflow: visible; padding: 0; }
.geo-stage { position: relative; min-width: 0; height: clamp(370px,32vw,490px); border: 1px solid rgba(137,204,234,.18); border-radius: 10px; overflow: hidden; background: radial-gradient(ellipse at 45% 55%,rgba(35,113,146,.22),transparent 75%),rgba(2,17,26,.48); touch-action: pan-y; outline-offset: 4px; }
.geo-canvas.maplibregl-map { font-family: 'Manrope', sans-serif; text-align: left; }
.geo-canvas .maplibregl-canvas { cursor: grab !important; }
.geo-canvas .maplibregl-canvas:active { cursor: grabbing !important; }
.geo-canvas .maplibregl-canvas:focus-visible { outline: 2px solid #c1edff; outline-offset: -3px; }
.geo-canvas .maplibregl-ctrl-attrib { color: #d0e5ed; background: rgba(4,20,29,.94); border-radius: 8px; font: 12px/1.6 'Manrope', sans-serif; }
.geo-canvas .maplibregl-ctrl-attrib a { color: #d0e5ed; }
.geo-canvas .maplibregl-ctrl-attrib-button { width: 44px; height: 44px; filter: invert(1); background-repeat: no-repeat; background-position: center; background-size: 20px; list-style: none; }
.geo-canvas .maplibregl-ctrl-attrib-button::-webkit-details-marker { display: none; }
.geo-canvas .maplibregl-ctrl-attrib.maplibregl-compact { min-height: 44px; padding-right: 44px; }
.geo-canvas .maplibregl-ctrl-bottom-left { max-width: calc(100% - 120px); }
.geo-canvas .maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib { padding-left: 44px; padding-right: 6px; max-width: 100%; box-sizing: border-box; }
.geo-canvas .maplibregl-ctrl-attrib-inner { white-space: normal; overflow-wrap: anywhere; max-height: 88px; overflow-y: auto; overscroll-behavior: contain; }
.geo-canvas .maplibregl-cooperative-gesture-screen { color: #e0f4fb; background: rgba(3,17,25,.83); font: 16px/1.5 'Manrope', sans-serif; padding: 24px; }
.geo-fallback { width: 100%; height: 100%; object-fit: contain; opacity: .45; }
.geo-canvas,.geo-pins,.geo-leaders { position: absolute; inset: 0; width: 100%; height: 100%; }
.geo-canvas svg { display: block; width: 100%; height: 100%; }
.geo-graticule { fill: none; stroke: rgba(155,217,242,.11); stroke-width: .6; }
.geo-land { fill: rgba(68,137,166,.27); stroke: rgba(167,218,238,.48); stroke-width: .7; stroke-linejoin: round; }
.geo-borders { fill: none; stroke: rgba(169,217,239,.22); stroke-width: .5; stroke-linejoin: round; }
.geo-lakes { fill: #082432; stroke: rgba(129,198,223,.35); stroke-width: .5; }
.geo-canvas path { vector-effect: non-scaling-stroke; }
.geo-pins,.geo-leaders { pointer-events: none; }
.geo-leaders line { stroke: #b9edff; stroke-width: 1; opacity: .65; }
.geo-pin { position: absolute; transform: translate(-50%,-50%); width: 44px; height: 44px; padding: 0; border: 1px solid rgba(177,230,252,.75); border-radius: 50%; background: rgba(10,39,54,.94); color: #d9f4ff; font-size: 13px; font-weight: 650; pointer-events: auto; box-shadow: 0 0 0 5px rgba(125,211,246,.08),0 0 25px rgba(105,194,234,.15); transition: background .15s; }
.geo-pin[hidden] { display: none; }
.geo-pin[aria-expanded="true"],.geo-pin:hover { background: #b6ecff; color: #0b3141; }
.geo-zoom { position: absolute; right: 12px; bottom: 12px; display: flex; gap: 6px; z-index: 3; }
.geo-zoom button { width: 44px; height: 44px; border-radius: 8px; border: 1px solid rgba(190,229,245,.35); background: #0a2635; color: #e4f7ff; font-size: 24px; line-height: 1; }
.geo-card { position: absolute; z-index: 5; width: min(304px,calc(100% - 24px)); padding: 22px; border: 1px solid rgba(192,235,255,.42); border-radius: 12px; background: rgba(5,24,35,.97); box-shadow: 0 20px 45px rgba(0,0,0,.34); }
.geo-card { display: flex; flex-direction: column; max-height: calc(100% - 80px); overflow: hidden; }
.geo-card[hidden] { display: none; }
.geo-card-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 44px; margin-bottom: 8px; flex-shrink: 0; }
.geo-card-close { border: 0; background: transparent; color: #d9f2ff; width: 44px; height: 44px; flex-shrink: 0; font-size: 25px; }
.geo-card-place { font-size: 14px; color: #aad7eb; margin: 0; }
.geo-card-body { min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding-right: 4px; scrollbar-color: #82bad1 transparent; scrollbar-width: thin; }
.geo-card h3 { font-size: 23px; font-weight: 500; letter-spacing: -.025em; line-height: 1.2; margin-bottom: 12px; }
.geo-card-type { font-size: 12px; color: #a8bfcc; margin-bottom: 14px; }
.geo-card-description { color: #d1e1e8; font-size: 16px; line-height: 1.5; }
.geo-card-link { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; min-height: 44px; margin-top: 12px; border-radius: 8px; background: #d9f1fc; color: #102f3e; padding: 10px 14px; text-decoration: none; font-size: 14px; }
.geo-pin:focus-visible,.geo-zoom button:focus-visible,.geo-card a:focus-visible,.geo-card button:focus-visible,.geo-card-body:focus-visible,.geo-canvas .maplibregl-ctrl-attrib-inner:focus-visible { outline: 2px solid #c9f2ff; outline-offset: -2px; }
@media(max-width:1000px) { .geo-stage { height: 390px; } }
@media(max-width:560px) { .geo-stage { height: 340px; } .geo-card { padding: 18px; } .geo-card h3 { font-size: 20px; } .geo-card-description { font-size: 14px; } }
@media(prefers-reduced-motion:reduce) { .geo-pin { transition: none; } }
