* { box-sizing: border-box; margin: 0; padding: 0; }
/*html, body { width: 100%; height: 100%; font-family: system-ui, sans-serif; overflow: hidden; }*/
#wrap * { box-sizing: border-box; }
#wrap { width: 100%;height: 100%;overflow: hidden; position: relative; height: 900px;box-shadow: 0 1px 6px #0002;border-radius:8px; }

svg { width: 100%; height: 100%; display: block; cursor: grab; box-shadow: 0 1px 6px #0002; }
svg:active { cursor: grabbing; }

/* State paths — no hover pointer since not clickable 
.sp { fill: #e8dcc8; stroke: #fff; stroke-width: 1; }*/
/* State paths — with hover pointer since not clickable*/
.sp { fill: #e8dcc8; stroke: #fff; stroke-width: 1;  }
.sp:hover { fill: #c8b89a; }  /* change #c8b89a to any colour you want */

/* Observatory & Regional Lab markers — balloon pin shapes, colours handled in JS */
.obs-g { cursor: pointer; }


/* State labels */
.slabel {
  font-family: system-ui, sans-serif;
  font-size: 9px;
  font-weight: 600;
  fill: #3a3020;
  text-anchor: middle;
  dominant-baseline: middle;
  pointer-events: none;
  letter-spacing: 0.2px;
}
.slabel-tiny {
  font-size: 8px;
  fill: #555;
}
/* Tiny state markers */
.tiny-ring { fill: #e0a020; stroke: #fff; stroke-width: 1.5; }
.tiny-dot  { fill: #fff; pointer-events: none; }

/* Top bar */
#bar {
  position: absolute; top: 14px; left: 50%; transform: translateX(-50%);
  background: #fffffff5; border-radius: 12px; padding: 9px 18px;
  display: flex; align-items: center; gap: 12px;
  box-shadow: 0 2px 16px #0002; white-space: nowrap; z-index: 9; font-size: 13px;
}
.flag { display:flex; gap:2px; }
.flag i { display:block; width:4px; height:20px; border-radius:1px; }
#bar h1 { font-size:14px; font-weight:700; color:#111; }

/* Info card bottom-left */
#info {
  position: absolute; bottom: 20px; left: 20px;
  background: #fffffff5; border-radius: 10px; padding: 13px 16px;
  box-shadow: 0 2px 16px #0002; z-index: 9; min-width: 160px;
}
#ilbl { font-size:9px; font-weight:700; letter-spacing:1.2px; text-transform:uppercase; color:#999; margin-bottom:3px; }
#iname { font-size:17px; font-weight:800; color:#111; line-height:1.2; }
#isub  { font-size:11px; color:#666; margin-top:3px; }

/* Observatory popup */
#obs-popup {
  display: none; position: absolute;
  background: #fffffff7; border-radius: 12px; padding: 14px 16px;
  box-shadow: 0 4px 24px #0003; z-index: 20; min-width: 200px; max-width: 256px;
}
#obs-popup.show { display: block; }
#obs-close { position:absolute; top:10px; right:12px; background:none; border:none; font-size:16px; cursor:pointer; color:#999; }
#obs-close:hover { color:#333; }
#obs-code { font-size:10px; font-weight:700; letter-spacing:1.5px; text-transform:uppercase; color:#c0392b; margin-bottom:2px; }
#obs-name { font-size:16px; font-weight:800; color:#111; margin-bottom:8px; }
.obs-row { display:flex; gap:6px; margin-bottom:4px; font-size:12px; color:#444; }
.obs-lbl { font-weight:600; color:#888; min-width:60px; }
#obs-note { display:none; font-size:10px; color:#999; margin-top:6px; font-style:italic; line-height:1.4; }

/* Legend */
#legend {
  position: absolute; top: 72px; right: 20px;
  background: #fffffff5; border-radius: 10px; padding: 10px 14px;
  box-shadow: 0 2px 12px #0002; z-index: 9; font-size: 12px;
}
.leg-row { display:flex; align-items:center; gap:8px; margin-bottom:5px; }
.leg-row:last-child { margin-bottom:0; }
.leg-dot { width:12px; height:12px; border-radius:50%; border:2px solid #fff; box-shadow:0 0 0 1px #aaa; flex-shrink:0; }

/* Zoom */
#zc { position:absolute; bottom:20px; right:20px; display:flex; flex-direction:column; gap:4px; z-index:9; }
.zb { width:34px; height:34px; background:#fffffff5; border:1px solid #e0e0e0; border-radius:8px; font-size:17px; cursor:pointer; display:flex; align-items:center; justify-content:center; color:#333; box-shadow:0 1px 6px #0001; }
.zb:hover { background:#fff0e6; color:#e65c00; }

/* Tooltip */
#tip { position:fixed; background:#111c; color:#fff; padding:5px 11px; border-radius:6px; font-size:12px; font-weight:500; pointer-events:none; opacity:0; z-index:99; white-space:nowrap; transition:opacity .1s; }
#tip.on { opacity:1; }