/* World Map, Country Explorer and Flags of the World. Map colours are artwork-like and readable in both themes. */
.geo-ref,.geo-explorer{--geo-sea:#dcebf5;--geo-land:#b9d3c6;--geo-edge:#ffffff;--geo-hover:#f7cf69;--geo-pick:#197b74;--geo-label:#183b43}
@media (prefers-color-scheme:dark){.geo-ref,.geo-explorer{--geo-sea:#13303a;--geo-land:#4d7a6c;--geo-edge:#13303a;--geo-hover:#c99a35;--geo-pick:#8cf1dc;--geo-label:#f1fbf7}}
.geo-toolbar{align-items:end}
.geo-map-wrap{position:relative;margin-block:.75rem;border-radius:var(--radius);overflow:hidden;background:var(--geo-sea);border:1px solid var(--border)}
.geo-map{display:block;width:100%;height:clamp(260px,58vh,620px);touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
.geo-map:active{cursor:grabbing}
.geo-land{fill:var(--geo-land);stroke:var(--geo-edge);stroke-width:.6;vector-effect:non-scaling-stroke;cursor:pointer;transition:fill .15s}
.geo-land:hover{fill:var(--geo-hover)}
.geo-land.is-selected{fill:var(--geo-pick);stroke:var(--text);stroke-width:1.2}
.geo-names text{fill:var(--geo-label);font-family:inherit;font-weight:600;pointer-events:none;paint-order:stroke;stroke:var(--geo-sea);stroke-width:.25;stroke-linejoin:round}
.geo-zoom{position:absolute;right:.5rem;top:.5rem;display:flex;flex-direction:column;gap:.35rem}
.geo-zoom .btn{min-width:44px;min-height:44px;justify-content:center;box-shadow:var(--shadow)}
.geo-labels{display:flex;gap:.5rem;align-items:center;min-height:44px}
.geo-card-head{display:flex;gap:1rem;align-items:center;margin-bottom:.75rem}
.geo-card-head h2{margin:0;font-size:clamp(1.3rem,4.5vw,1.8rem)}.geo-card-head p{margin:.15rem 0 0}
.geo-card-flag{width:clamp(96px,28vw,140px);height:auto;aspect-ratio:4/3;border-radius:6px;border:1px solid var(--border);flex:none;background:var(--surface-2)}
.geo-facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,140px),1fr));gap:.5rem;margin:0}.geo-facts .geo-fact-wide{grid-column:span 2}@media (max-width:330px){.geo-facts .geo-fact-wide{grid-column:auto}}
.geo-facts div{padding:.6rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}
.geo-facts dt{font-size:.8rem;color:var(--muted);font-weight:600}.geo-facts dd{margin:.15rem 0 0;font-weight:600;overflow-wrap:anywhere}
.geo-locator{display:block;width:100%;height:200px;margin-top:.75rem;border-radius:var(--radius-sm);background:var(--geo-sea);border:1px solid var(--border)}
.geo-locator .geo-land{cursor:default}.geo-locator .geo-land:hover{fill:var(--geo-land)}.geo-locator .geo-land.is-selected,.geo-locator .geo-land.is-selected:hover{fill:var(--geo-pick)}
.geo-links{margin-top:.75rem}
.geo-explorer{display:grid;gap:1rem}
@media (min-width:900px){.geo-explorer{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:start}.geo-explorer #geo-card{position:sticky;top:5rem}}
.geo-list{list-style:none;margin:0;padding:0;display:grid;gap:.35rem;max-height:min(70vh,760px);overflow:auto;overscroll-behavior:contain}
.geo-list a{display:flex;gap:.75rem;align-items:center;min-height:48px;padding:.35rem .5rem;border-radius:var(--radius-sm);color:var(--text);text-decoration:none}
.geo-list a:hover,.geo-list .is-current a{background:var(--accent-soft)}
.geo-list img{width:32px;height:24px;border-radius:3px;border:1px solid var(--border);flex:none}
.geo-list span{display:flex;flex-direction:column;min-width:0}.geo-list small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.geo-flags{list-style:none;margin:.5rem 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(140px,44%),1fr));gap:.75rem}
.geo-flags button{display:flex;flex-direction:column;gap:.4rem;width:100%;padding:.5rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;font-weight:600;text-align:center;cursor:pointer}
.geo-flags button:hover{border-color:var(--accent)}
.geo-flags img{width:100%;height:auto;aspect-ratio:4/3;border-radius:4px;border:1px solid var(--border);background:var(--surface-2)}
.geo-dialog{width:min(94vw,560px);max-height:90dvh;overflow:auto;padding:1rem;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.geo-dialog::backdrop{background:#0009}.geo-dialog form{margin-top:.75rem}
.geo-dialog .geo-card-flag{width:clamp(120px,40vw,200px)}
@media (prefers-reduced-motion:reduce){.geo-land{transition:none}}
