.diplomatic-map-panel {
  min-width: 0;
  margin: 0 0 22px;
  padding: 14px;
  border: 1px solid #47564c;
  background: linear-gradient(180deg, #303b32, #202b25 58%, #273229);
  box-shadow: inset 0 1px #77847545, inset 0 -1px #10181190, 0 6px 14px #14221930;
}
.diplomatic-map-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 0 2px 12px;
}
.diplomatic-map-heading .eyebrow { color: #9caa96; font-size: 9px; }
.diplomatic-map-heading h2 { margin: 3px 0 0; font-size: 17px; color: #d0d5bf; }
.diplomatic-map-readout { flex: none; color: #aebda7; font-size: 10px; font-variant-numeric: tabular-nums; }
.diplomatic-map-shell {
  position: relative;
  min-width: 0;
  height: clamp(280px, 44vh, 560px);
  overflow: hidden;
  border: 6px solid #18201b;
  border-radius: 22px / 18px;
  background: #141c1d;
  box-shadow: inset 0 0 0 1px #83917b40, 0 1px #6471588c, 0 -1px #0e1710;
}
#diplomatic-map { display: block; width: 100%; height: 100%; touch-action: none; }
#diplomatic-map:focus-visible { outline: 2px solid #d0dabc; outline-offset: -5px; }
.diplomatic-map-footer { display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; gap: 12px 20px; margin-top: 13px; }
.diplomatic-map-legend { display: flex; flex-wrap: wrap; gap: 8px 18px; min-width: 0; flex: 1 1 340px; margin: 0; padding: 0; list-style: none; color: #bdc8b7; font-size: 10px; }
.diplomatic-map-legend li { display: flex; align-items: center; gap: 7px; max-width: 100%; }
.diplomatic-map-legend b { font: 9px var(--mono, "IBM Plex Mono", monospace); color: #d1d5bd; }
.diplomatic-map-swatch { display: inline-block; flex: none; width: 17px; height: 13px; border: 1px solid #ced9c963; background: var(--government-color, #263031); }
.diplomatic-map-swatch.pattern-diagonal { background-image: repeating-linear-gradient(135deg, transparent 0 3px, #10211b5c 3px 4px); }
.diplomatic-map-swatch.pattern-reverse { background-image: repeating-linear-gradient(45deg, transparent 0 3px, #10211b5c 3px 4px); }
.diplomatic-map-swatch.pattern-horizontal { background-image: repeating-linear-gradient(0deg, transparent 0 3px, #10211b5c 3px 4px); }
.diplomatic-map-swatch.pattern-vertical { background-image: repeating-linear-gradient(90deg, transparent 0 3px, #10211b5c 3px 4px); }
.diplomatic-map-swatch.pattern-cross,
.diplomatic-map-swatch.pattern-grid { background-image: repeating-linear-gradient(0deg, transparent 0 5px, #10211b5c 5px 6px), repeating-linear-gradient(90deg, transparent 0 5px, #10211b5c 5px 6px); }
.diplomatic-map-swatch.pattern-dots { background-image: radial-gradient(#10211b90 1px, transparent 1.5px); background-size: 5px 5px; }
.diplomatic-map-swatch.pattern-fog { background: repeating-linear-gradient(45deg, #141c1d 0 3px, #344140 3px 4px); }
.diplomatic-map-controls { display: flex; align-items: center; gap: 5px; flex: none; }
.diplomatic-map-controls button { min-width: 44px; min-height: 36px; padding: 6px 12px; color: #d0d5bf; border-color: #73816c; background: linear-gradient(#3b473b, #29372d); box-shadow: inset 0 1px #98a28c3b, 0 2px #101b13; }
.diplomatic-map-controls button:active { transform: translateY(1px); box-shadow: inset 0 1px #98a28c20; }
.diplomatic-map-controls button:focus-visible { outline: 2px solid #d0dabc; outline-offset: 3px; }
.diplomatic-map-caption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 5px 20px; margin-top: 10px; color: #a9b6a0; font: 9px var(--mono, "IBM Plex Mono", monospace); line-height: 1.6; }
.diplomatic-map-panel .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
@media (max-width: 600px) {
  .diplomatic-map-panel { padding: 9px; }
  .diplomatic-map-heading { gap: 8px; }
  .diplomatic-map-heading h2 { font-size: 15px; }
  .diplomatic-map-shell { height: clamp(260px, 42vh, 330px); border-width: 4px; border-radius: 18px / 15px; }
  .diplomatic-map-footer { gap: 10px; }
  .diplomatic-map-legend { flex-basis: 100%; gap: 7px 13px; }
  .diplomatic-map-controls { margin-left: auto; }
  .diplomatic-map-controls button { min-height: 44px; }
  .diplomatic-map-caption { font-size: 9px; }
}
@media (prefers-reduced-motion: reduce) {
  .diplomatic-map-panel *, .diplomatic-map-panel *::before, .diplomatic-map-panel *::after { animation: none; transition: none; }
}
