:root {
  --demo-font: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
  --demo-font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
  --demo-bg: #14161b;
  --demo-panel: #1d2027;
  --demo-inset: #171a20;
  --demo-text: #e8eaf0;
  --demo-muted: #9aa0ae;
  --demo-border: #2e323c;
  --demo-accent: #4f9be8;
  --demo-accent-strong: #2a81cb;
  --demo-accent-contrast: #ffffff;
  --demo-radius-sm: 4px;
  --demo-radius-pill: 999px;
  --demo-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4);
  --demo-shadow-lg: 0 3px 14px rgba(0, 0, 0, 0.4);
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  height: 100%;
  font: 14px/1.5 var(--demo-font);
  background: var(--demo-bg);
  color: var(--demo-text);
}

body {
  display: flex;
  flex-direction: column;
}

.demo-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 16px;
  border-bottom: 1px solid var(--demo-border);
  background: var(--demo-panel);
}

.demo-header h1 {
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.02em;
  margin: 0;
}

.demo-header small {
  color: var(--demo-muted);
  font-weight: 400;
  letter-spacing: 0.04em;
}

.demo-nav {
  display: flex;
  gap: 4px;
  padding: 8px 16px;
  border-bottom: 1px solid var(--demo-border);
  background: var(--demo-panel);
  overflow-x: auto;
}

.demo-nav button {
  border: 1px solid var(--demo-border);
  background: transparent;
  color: var(--demo-muted);
  padding: 6px 14px;
  border-radius: var(--demo-radius-sm);
  cursor: pointer;
  white-space: nowrap;
  font: inherit;
  transition: color 0.15s, border-color 0.15s, background-color 0.15s;
}

.demo-nav button:hover {
  color: var(--demo-text);
  border-color: var(--demo-accent);
}

.demo-nav button[aria-selected="true"] {
  background: var(--demo-accent-strong);
  border-color: var(--demo-accent-strong);
  color: var(--demo-accent-contrast);
}

.demo-nav button:focus-visible,
.demo-buttons button:focus-visible {
  outline: 2px solid var(--demo-accent);
  outline-offset: 1px;
}

.demo-main {
  flex: 1;
  min-height: 0;
}

.demo-section {
  display: flex;
  height: 100%;
}

.demo-section[hidden] { display: none; }

.demo-panel {
  width: 300px;
  flex: none;
  padding: 14px 16px;
  border-right: 1px solid var(--demo-border);
  background: var(--demo-panel);
  overflow-y: auto;
}

.demo-panel h2 {
  margin: 0 0 4px;
  font-size: 15px;
  font-weight: 600;
}

.demo-panel h3 {
  margin: 16px 0 6px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--demo-muted);
}

.demo-panel p { color: var(--demo-muted); margin: 4px 0 12px; }

.demo-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.demo-buttons button {
  border: 1px solid var(--demo-border);
  background: var(--demo-inset);
  color: var(--demo-text);
  padding: 6px 10px;
  border-radius: var(--demo-radius-sm);
  cursor: pointer;
  font: inherit;
  min-height: 32px;
  transition: color 0.15s, border-color 0.15s, background-color 0.15s;
}

.demo-buttons button:hover {
  border-color: var(--demo-accent);
  background: var(--demo-panel);
}

.demo-map {
  flex: 1;
  min-width: 0;
  background: var(--demo-inset);
  outline: none;
}

.demo-log {
  height: 180px;
  overflow-y: auto;
  margin: 0;
  padding: 6px 6px 6px 28px;
  border: 1px solid var(--demo-border);
  border-radius: var(--demo-radius-sm);
  background: var(--demo-inset);
  font: 12px/1.6 var(--demo-font-mono);
  color: var(--demo-muted);
}

.demo-readout {
  font: 12px/1.6 var(--demo-font-mono);
  color: var(--demo-muted);
}

#geojson-out {
  height: 220px;
  white-space: pre-wrap;
  padding: 8px;
  margin: 8px 0 0;
}

.demo-badge {
  background: var(--demo-accent-strong);
  border: 2px solid var(--demo-accent-contrast);
  border-radius: var(--demo-radius-pill);
  color: var(--demo-accent-contrast);
  font: 600 11px/20px var(--demo-font);
  text-align: center;
  box-shadow: var(--demo-shadow-sm);
}

.demo-tooltip-permanent { font-weight: 600; }

.demo-footer {
  padding: 10px 16px;
  border-top: 1px solid var(--demo-border);
  color: var(--demo-muted);
  font-size: 13px;
}
.demo-footer a { color: var(--demo-accent); }

@media (max-width: 700px) {
  .demo-section { flex-direction: column; }
  .demo-panel { width: auto; max-height: 40%; border-right: none; border-bottom: 1px solid var(--demo-border); }
  .demo-log { height: 90px; }
  #geojson-out { height: 110px; }
}
