/* The shared GPS map (src/assets/gps-globe.js, docs/site/MAP_LAYERS.md). Strature site style (WS-969 part 2 B): paper
   sea, warm land, house-navy hotspot rings and Newsreader names, IBM Plex for the rest. Likelihood takes three blues
   (navy = High or Severe, #2251FF = Elevated, #A9BCFF = Low with a navy number). No red anywhere on the map.
   Classes only (CSP); the site tokens (src/assets/site.css) win where the page defines them. */
.gg{--gg-paper:var(--paper,#FBF9F5);--gg-tint:var(--tint,#EFEDE7);--gg-hair:var(--hair,#D5D2CA);--gg-ink:var(--ink,#12181D);
  --gg-ink2:var(--graphite,#5C6670);--gg-navy:var(--navy,#132338);--gg-white:#FFFFFF;
  --gg-land:#E6E2D8;--gg-sea:var(--gg-paper);--gg-border:var(--gg-paper);--gg-grat:rgba(19,35,56,.06);--gg-acc:#2251FF;
  --gg-s0:#FFFFFF;--gg-s1:var(--gg-paper);--gg-s2:var(--gg-tint);
  --gg-b1:#DCE4FF;--gg-b2:#A9BCFF;--gg-b3:#2251FF;--gg-b4:#051C2C;--gg-in:#DBE4FF;--gg-hatch:rgba(92,102,112,.55);
  --gg-t1:#A9BCFF;--gg-t2:#2251FF;--gg-t3:#051C2C;--gg-t1i:#051C2C;
  --gg-font:var(--sans,"IBM Plex Sans","IBM Plex Sans Fallback","Segoe UI",Helvetica,Arial,sans-serif);
  --gg-serif:var(--serif,"Newsreader","Newsreader Fallback","Source Serif 4",Georgia,serif);
  position:relative;font:14px/1.4 var(--gg-font);color:var(--gg-ink)}
.gg-ui{display:flex;flex-direction:column;gap:6px}
.gg-tools{display:flex;gap:10px 12px;align-items:center;flex-wrap:wrap;min-height:34px}
.gg-seg{display:inline-flex;border:1px solid var(--gg-navy);border-radius:2px;padding:2px;background:var(--gg-paper)}
.gg-seg button,.gg-chips button{font:500 13px var(--gg-font);cursor:pointer;color:var(--gg-navy)}
.gg-seg button{border:0;background:transparent;padding:6px 16px;border-radius:1px;min-height:32px}
.gg-seg button[aria-pressed=true]{background:var(--gg-navy);color:var(--gg-white)}
.gg-chips{display:flex;gap:6px;flex-wrap:wrap}
.gg-chips button{border:1px solid var(--gg-hair);background:var(--gg-paper);padding:5px 11px;border-radius:2px;min-height:32px}
.gg-chips button[aria-pressed=true]{border-color:var(--gg-navy);background:var(--gg-navy);color:var(--gg-white)}
.gg-seg button:focus-visible,.gg-chips button:focus-visible{outline:2px solid var(--gg-acc);outline-offset:2px}
.gg-hint{font-size:12px;color:var(--gg-ink2)}
.gg-stage{position:relative;width:100%;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.gg-svg{display:block;width:100%;height:100%;overflow:visible}
.gg-foot{display:flex;justify-content:space-between;gap:8px 20px;flex-wrap:wrap;border-top:1px solid var(--gg-hair);padding-top:8px;font-size:12px;color:var(--gg-ink2)}
.gg-key{display:flex;gap:6px 16px;flex-wrap:wrap;align-items:center}
.gg-k{display:inline-flex;align-items:center;gap:6px}
.gg-sw{width:12px;height:12px;border-radius:50%;display:inline-block}
.gg-sw.gg-t1{background:var(--gg-t1)}.gg-sw.gg-t2{background:var(--gg-t2)}.gg-sw.gg-t3,.gg-sw.gg-t4{background:var(--gg-t3)}
.gg-sz{width:16px;height:16px;border-radius:50%;display:inline-block;background:var(--gg-t2);box-shadow:-9px 4px 0 -4px var(--gg-t2)}
.gg-kuw{width:12px;height:12px;border-radius:50%;display:inline-block;background:var(--gg-t3);box-shadow:0 0 0 2px var(--gg-paper),0 0 0 3.5px var(--gg-navy)}
.gg-kdot{width:7px;height:7px;border-radius:50%;display:inline-block;background:var(--gg-t2)}
.gg-kfold{width:14px;height:14px;display:inline-block;border:1.3px solid var(--gg-navy);border-bottom:3px solid var(--gg-t3);border-radius:2px;background:var(--gg-white)}
.gg-rg{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--gg-navy);display:inline-block}
.gg-zn{width:16px;height:10px;border:1.5px dashed var(--gg-acc);display:inline-block}
.gg-sh{width:16px;height:11px;display:inline-block}
.gg-sh.gg-b1{background:var(--gg-b1)}.gg-sh.gg-b2{background:var(--gg-b2)}.gg-sh.gg-b3{background:var(--gg-b3)}.gg-sh.gg-b4{background:var(--gg-b4)}
.gg-proj{color:var(--gg-ink2)}
.gg-live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:0}
/* map */
.gg-s0{stop-color:var(--gg-s0)}.gg-s1{stop-color:var(--gg-s1)}.gg-s2{stop-color:var(--gg-s2)}
.gg-sea{fill:var(--gg-sea)}
.gg-seag{stroke:none}             /* the globe sea: its fill is the radial gradient (set by gps-globe.js) */
.gg-grat{fill:none;stroke:var(--gg-grat);stroke-width:.6}
.gg-land{fill:var(--gg-land);stroke:var(--gg-border);stroke-width:.6;stroke-linejoin:round}
.gg-land.gg-b1{fill:var(--gg-b1)}.gg-land.gg-b2{fill:var(--gg-b2)}.gg-land.gg-b3{fill:var(--gg-b3)}.gg-land.gg-b4{fill:var(--gg-b4)}
.gg-land.gg-in{fill:var(--gg-in)}
/* no data: a hatch over the plain land (its fill is the pattern, set by attribute); tiny countries as circles */
.gg-nds{pointer-events:none}
.gg-ndh{stroke:var(--gg-border);stroke-width:.6}
.gg-hatch-bg{fill:var(--gg-land)}
.gg-hatch{stroke:var(--gg-hatch);stroke-width:1.3}
.gg-isls{cursor:default}
.gg-isl{stroke:var(--gg-paper);stroke-width:1}
.gg-knd{width:16px;height:11px;display:inline-block;background:repeating-linear-gradient(45deg,var(--gg-land) 0 3px,var(--gg-hatch) 3px 4.3px)}
.gg-outline{fill:none;stroke:var(--gg-hair);stroke-width:.8}
.gg-zone{fill:rgba(34,81,255,.05);stroke:var(--gg-acc);stroke-width:1.2;stroke-dasharray:4 3}
.gg-sbox{fill:rgba(19,35,56,.06);stroke:var(--gg-navy);stroke-width:1.2}
.gg-arc{fill:none;stroke:var(--gg-navy);stroke-linecap:round;opacity:.75;cursor:pointer}
.gg-arc.gg-w1{stroke-width:1}.gg-arc.gg-w2{stroke-width:1.8}.gg-arc.gg-w3{stroke-width:2.6}.gg-arc.gg-w4{stroke-width:3.6}
.gg-arc.gg-dash{stroke-dasharray:5 4}
.gg-arc.gg-geo{opacity:.5;cursor:default}
.gg-arrow{fill:var(--gg-navy)}
.gg-ar{width:18px;height:0;border-top:2px solid var(--gg-navy);display:inline-block}
.gg-grp{cursor:pointer}
.gg-grp circle{fill:rgba(19,35,56,.04);stroke:var(--gg-navy);stroke-width:1.4}
.gg-gn{font:600 13.5px var(--gg-serif);fill:var(--gg-navy);paint-order:stroke;stroke:var(--gg-paper);stroke-width:3.5px;stroke-linejoin:round}
/* markers (part 3 A1): disc size = Impact, blue = Likelihood; dots for the rest; a still navy ring = under way */
.gg-pt{cursor:pointer}
.gg-pt .gg-mk{stroke:var(--gg-white);stroke-width:1.4}   /* reads on navy (b4) and blue (b3) countries */
.gg-t1 .gg-mk{fill:var(--gg-t1)}.gg-t2 .gg-mk{fill:var(--gg-t2)}.gg-t3 .gg-mk,.gg-t4 .gg-mk{fill:var(--gg-t3)}
.gg-small .gg-mk{stroke-width:1.2}
.gg-pt .gg-uw{fill:none;stroke:var(--gg-navy);stroke-width:1.5}
.gg-hit{fill:transparent;stroke:none}          /* 24 px tap targets for dots, markers and folds */
.gg-pt .gg-dot{fill:var(--gg-navy);stroke:var(--gg-white);stroke-width:.8}
.gg-hollow .gg-mk{fill:var(--gg-white);stroke-width:2}
.gg-hollow.gg-t1 .gg-mk{stroke:var(--gg-t1)}.gg-hollow.gg-t2 .gg-mk{stroke:var(--gg-t2)}.gg-hollow.gg-t3 .gg-mk,.gg-hollow.gg-t4 .gg-mk{stroke:var(--gg-t3)}
.gg-hollow .gg-rk{fill:var(--gg-ink)}
.gg-tie{stroke:var(--gg-navy);stroke-width:.8}
.gg-rk{font:600 10.5px var(--gg-font);fill:var(--gg-white);text-anchor:middle;dominant-baseline:central;pointer-events:none}
.gg-rk.gg-rks{font-size:9.5px}
.gg-t1 .gg-rk{fill:var(--gg-t1i)}
.gg-ea{fill:var(--gg-navy);stroke:var(--gg-white);stroke-width:.8;paint-order:stroke}
.gg-sn .gg-mk{fill:var(--gg-white);stroke:var(--gg-navy);stroke-width:1.3}
.gg-sn .gg-rk{fill:var(--gg-navy)}
.gg-sf{fill:var(--gg-navy);stroke:none}
.gg-sfg{cursor:default}
.gg-sfr{fill:var(--gg-white);stroke:var(--gg-navy);stroke-width:1.5}     /* the strip's hotspot end, marked once */
.gg-ksf{width:12px;height:12px;border-radius:50%;display:inline-block;background:var(--gg-navy);box-shadow:inset 0 0 0 3px var(--gg-white),0 0 0 1.5px var(--gg-navy)}
.gg-ksn{width:14px;height:14px;border-radius:50%;display:inline-block;border:1.3px solid var(--gg-navy);background:var(--gg-white)}
/* off-frame folds: a white square with a navy border, the count inside, a bar in the highest Likelihood blue */
.gg-fold{cursor:pointer}
.gg-fold-sq{fill:var(--gg-white);stroke:var(--gg-navy);stroke-width:1.3;paint-order:stroke}
.gg-fold .gg-hit{fill:transparent}
.gg-fold-bar.gg-bar1{fill:var(--gg-t1)}.gg-fold-bar.gg-bar2{fill:var(--gg-t2)}.gg-fold-bar.gg-bar3,.gg-fold-bar.gg-bar4{fill:var(--gg-t3)}
.gg-fold-n{font:600 11.5px var(--gg-font);fill:var(--gg-navy);text-anchor:middle;dominant-baseline:central;pointer-events:none}
.gg-fold-t{font:500 11px var(--gg-font);fill:var(--gg-ink);paint-order:stroke;stroke:var(--gg-paper);stroke-width:3px;stroke-linejoin:round}
.gg-pt:focus-visible .gg-mk,.gg-grp:focus-visible circle,.gg-fold:focus-visible .gg-fold-sq{stroke:var(--gg-acc);stroke-width:3}
.gg-pt:focus,.gg-grp:focus,.gg-fold:focus{outline:none}
/* labels (part 4 A): margin columns on desktop, bands on the phone */
.gg-lab [data-p]{cursor:pointer}
.gg-lab .gg-t{font:500 13px var(--gg-font);fill:var(--gg-ink)}
.gg-lab .gg-n{font:600 13px var(--gg-font);fill:var(--gg-acc)}
.gg-lab .gg-m{font:400 11.5px var(--gg-font);fill:var(--gg-ink2)}
.gg-lab .gg-u{font:600 10.5px var(--gg-font);letter-spacing:.06em;fill:var(--gg-acc)}
.gg-lead{fill:none;stroke:var(--gg-navy);stroke-width:.8;opacity:.7}
.gg-side{font:400 11.5px var(--gg-font);fill:var(--gg-ink2)}
/* highlight (part 10 B): 180 ms, others dim to 38 %, one 600 ms pulse ring; scroll-sync focus (part 9 G) */
.gg-svg [data-p]{transition:opacity .18s ease-out}
/* labels leave while the camera moves (120 ms) and come back once it stops (250 ms) */
.gg-labs.gg-labout{opacity:0;pointer-events:none;transition:opacity .12s}
/* back in: no opacity fade (text must show its full AA colour at once); a 250 ms slide instead */
.gg-labs.gg-labin{animation:gg-labin .25s ease-out 1}
@keyframes gg-labin{from{transform:translateY(5px)}to{transform:none}}
.gg-hlon [data-p]{opacity:.38}
.gg-hlon .gg-lead{opacity:.27}
.gg-hlon [data-p].gg-hl{opacity:1}
.gg-hl .gg-mk{stroke:var(--gg-navy);stroke-width:2}
.gg-fold.gg-hl .gg-fold-sq{stroke-width:2.5}
.gg-pulse{fill:none;stroke:var(--gg-navy);stroke-width:1.5;pointer-events:none;transform-box:fill-box;transform-origin:center;animation:gg-pulse .6s ease-out 1 forwards}
@keyframes gg-pulse{from{transform:scale(1);opacity:.5}to{transform:scale(1.9);opacity:0}}
.gg-focus{fill:none;stroke:var(--gg-navy);stroke-width:2;pointer-events:none}
.gg-fname{font:600 12px var(--gg-font);fill:var(--gg-ink);paint-order:stroke;stroke:var(--gg-paper);stroke-width:3.5px;stroke-linejoin:round;pointer-events:none}
/* the locator globe */
.gg-loc-sea{fill:var(--gg-paper);stroke:rgba(19,35,56,.3);stroke-width:.8}
.gg-loc-land{fill:#D3CEC2}
.gg-loc-box{fill:rgba(34,81,255,.18);stroke:var(--gg-acc);stroke-width:1.5}
.gg-loc-rim{fill:none;stroke:rgba(19,35,56,.25);stroke-width:.6}
/* the docked tap card (part 4 E): over the map's corner on desktop, under the map on the phone */
.gg-card{position:absolute;z-index:2;width:290px;max-width:calc(100% - 20px);box-sizing:border-box;background:var(--gg-white);border:1px solid var(--gg-hair);border-top:3px solid var(--gg-navy);padding:12px 36px 12px 14px;box-shadow:0 6px 20px rgba(19,35,56,.12);font:13px/1.45 var(--gg-font);color:var(--gg-ink)}
.gg-card[hidden]{display:none}
.gg-card:focus{outline:2px solid var(--gg-acc);outline-offset:2px}
.gg-stage:focus{outline:none}
.gg-card.gg-card-ph{position:relative;left:auto;top:auto;width:auto;max-width:none;box-shadow:none}
.gg-card p{margin:0}
.gg-card-t{font:600 17px/1.25 var(--gg-serif);color:var(--gg-ink);margin-bottom:4px}
.gg-card-m{color:var(--gg-ink2)}
.gg-card-p{color:var(--gg-ink2);margin-top:2px}
.gg-card-u{display:inline-block;margin-left:8px;padding:0 5px;border:1px solid var(--gg-acc);color:var(--gg-acc);font:600 10.5px/1.6 var(--gg-font);letter-spacing:.06em;text-transform:uppercase}
.gg-card-go{display:inline-block;margin-top:8px;font-weight:600;color:var(--gg-acc);text-decoration:underline;text-underline-offset:3px}
.gg-card-go::after{content:" →"}
.gg-card-l{margin:6px 0 0;padding-left:18px}
.gg-card-l li{margin:1px 0}
.gg-card-l a{color:var(--gg-ink)}
.gg-card-more{list-style:none;margin-left:-18px;color:var(--gg-ink2)}
.gg-card-x{position:absolute;top:6px;right:6px;width:28px;height:28px;border:0;background:transparent;font:400 20px/1 var(--gg-font);color:var(--gg-ink2);cursor:pointer}
.gg-card-x:focus-visible,.gg-card-go:focus-visible{outline:2px solid var(--gg-acc);outline-offset:2px}
.gg-ph .gg-lab .gg-t{font-size:11.5px}.gg-ph .gg-lab .gg-n{font-size:11.5px}.gg-ph .gg-lab .gg-m{font-size:10.5px}
.gg-ph .gg-foot{font-size:11px}.gg-ph .gg-gn{font-size:12px}.gg-ph .gg-fold-t{font-size:10px}.gg-ph .gg-fname{font-size:11.5px}
/* the no-JS fallback (sitebuild/maps/globe.py) */
.gg-fallback{margin:0}
.gg-fb{display:block;width:100%;height:auto}
.gg-fb .gg-land{stroke-width:.4}
.gg-fb-map{overflow:hidden}
.gg-fb-co .gg-lab .gg-t{font-size:13px}   /* callouts=N: titled margin columns (part 8 A) */
.gg-fb-list{margin:8px 0 0;padding-left:22px;font:14px/1.45 var(--gg-font)}
.gg-fb-list li{margin:2px 0}
.gg-fb-list .gg-fb-place{color:var(--gg-ink2)}
.gg-fb-key{display:flex;flex-wrap:wrap;gap:4px 16px;list-style:none;margin:8px 0 0;padding:0;font:12px/1.4 var(--gg-font);color:var(--gg-ink2)}
.gg-fb-key li{display:inline-flex;align-items:center;gap:6px}
@media (prefers-reduced-motion:reduce){.gg *{transition:none!important;animation:none!important}.gg-pulse{display:none}}
