﻿* {
      box-sizing: border-box;
    }

    body {
      margin: 0;
      overflow-x: hidden;
      color: #172433;
      background: #eaf1f6;
      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    }

    body[data-theme="dark"] {
      color: #e8eef5;
      background: #101821;
    }

    .app {
      display: contents;
    }

    header {
      position: sticky;
      top: 0;
      z-index: 20;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      padding: 12px 16px;
      background: #fff;
      border-bottom: 1px solid #d3dde7;
      box-shadow: 0 1px 8px rgba(29, 48, 68, 0.08);
    }

    body[data-theme="dark"] header {
      background: #172333;
      border-bottom-color: #2d4055;
      box-shadow: 0 1px 8px rgba(0, 0, 0, 0.25);
    }

    h1 {
      margin: 0;
      font-size: 18px;
      line-height: 1.2;
      white-space: nowrap;
    }

    .site-brand {
      display: grid;
      gap: 2px;
      flex: 0 1 auto;
      min-width: 0;
    }

    .site-tagline {
      margin: 0;
      color: #607386;
      font-size: 11px;
      line-height: 1.2;
      white-space: nowrap;
    }

    body[data-theme="dark"] .site-tagline {
      color: #aebdcb;
    }

    .site-search {
      position: relative;
      flex: 1 1 320px;
      max-width: 460px;
    }

    .search-field {
      display: grid;
      grid-template-columns: 1fr auto;
      gap: 6px;
    }

    .site-search input {
      width: 100%;
      height: 36px;
      padding: 0 12px;
      border: 1px solid #b9c8d4;
      border-radius: 8px;
      color: inherit;
      background: #f8fbfd;
      font: inherit;
    }

    .search-button {
      min-width: 64px;
      height: 36px;
      padding: 0 12px;
      font-size: 13px;
      font-weight: 800;
      white-space: nowrap;
    }

    .search-results {
      position: absolute;
      top: calc(100% + 6px);
      left: 0;
      right: 0;
      z-index: 30;
      display: grid;
      max-height: min(320px, 58dvh);
      overflow-y: auto;
      border: 1px solid #b9c8d4;
      border-radius: 8px;
      background: #fff;
      box-shadow: 0 12px 26px rgba(17, 35, 55, 0.18);
    }

    .search-results[hidden] {
      display: none;
    }

    .search-option {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      min-height: 44px;
      padding: 10px 12px;
      border: 0;
      border-bottom: 1px solid #e0e8ef;
      border-radius: 0;
      text-align: left;
      background: transparent;
      font: inherit;
    }

    .search-option:last-child {
      border-bottom: 0;
    }

    .search-option small {
      color: #607386;
      font-size: 12px;
      font-weight: 800;
      white-space: nowrap;
    }

    .search-option:hover,
    .search-option:focus {
      background: #eaf3fa;
    }

    body[data-theme="dark"] .site-search input {
      border-color: #40566d;
      background: #1d2b3b;
    }

    body[data-theme="dark"] .search-results {
      border-color: #40566d;
      background: #172333;
      box-shadow: 0 12px 26px rgba(0, 0, 0, 0.34);
    }

    body[data-theme="dark"] .search-option {
      border-bottom-color: #26394d;
    }

    body[data-theme="dark"] .search-option small {
      color: #aebdcb;
    }

    .controls {
      display: flex;
      flex: 0 0 auto;
      align-items: center;
      gap: 8px;
    }

    .support-link {
      display: inline-flex;
      align-items: center;
      height: 36px;
      padding: 0 12px;
      border: 1px solid #b9c8d4;
      border-radius: 8px;
      color: #12324d;
      background: #fff8df;
      font-size: 13px;
      font-weight: 800;
      text-decoration: none;
    }

    body[data-theme="dark"] .support-link {
      color: #f5f8fb;
      border-color: #665733;
      background: #352d1b;
    }

    button {
      border: 1px solid #b9c8d4;
      border-radius: 8px;
      color: #172433;
      background: #f8fbfd;
      cursor: pointer;
    }

    body[data-theme="dark"] button {
      color: #e8eef5;
      border-color: #40566d;
      background: #1d2b3b;
    }

    button:hover {
      background: #e8f0f6;
    }

    body[data-theme="dark"] button:hover {
      background: #26384b;
    }

    a:focus-visible,
    button:focus-visible,
    input:focus-visible,
    select:focus-visible,
    textarea:focus-visible {
      outline: 3px solid #1f6fb2;
      outline-offset: 3px;
    }

    body[data-theme="dark"] a:focus-visible,
    body[data-theme="dark"] button:focus-visible,
    body[data-theme="dark"] input:focus-visible,
    body[data-theme="dark"] select:focus-visible,
    body[data-theme="dark"] textarea:focus-visible {
      outline-color: #8fc7ff;
    }

    .icon-button {
      width: 40px;
      height: 36px;
      font-size: 20px;
      line-height: 1;
    }

    .map-shell {
      --map-background-color: #86bdd9;
      --map-grid-color: rgba(255, 255, 255, 0.16);
      --custom-map-background-image: none;
      --custom-map-background-opacity: 1;
      --country-fill: #b7b29d;
      --country-fill-opacity: 1;
      --country-stroke: rgba(74, 92, 105, 0.78);
      --country-hover-stroke: #273c50;
      --country-selected-fill: #e4d79d;
      --country-selected-stroke: rgba(194, 80, 58, 0.44);
      --saved-country-fill: #55798b;
      --saved-country-stroke: rgba(74, 92, 105, 0.92);
      --selected-country-detail-fill: rgba(252, 197, 86, 0.24);
      --selected-country-detail-stroke: rgba(191, 71, 45, 0.72);
      --country-border-width: 0.48;
      --country-emphasis-border-width: 0.56;
      --country-focus-border-width: 0.85;
      --selected-country-detail-border-width: 0.42;
      --map-label-fill: #102033;
      --map-label-stroke: rgba(255, 255, 255, 0.62);
      position: relative;
      height: calc(100dvh - 61px);
      min-height: 480px;
      scroll-margin-top: 64px;
      overflow: hidden;
      touch-action: none;
      cursor: grab;
      background-color: var(--map-background-color);
      background-image:
        linear-gradient(var(--map-grid-color) 1px, transparent 1px),
        linear-gradient(90deg, var(--map-grid-color) 1px, transparent 1px);
      background-size: 64px 64px;
    }

    body[data-theme="dark"] .map-shell {
      --map-background-color: #1c3d52;
      --map-grid-color: rgba(255, 255, 255, 0.07);
      --country-fill: #39443a;
      --country-stroke: #8ea2b4;
      --country-hover-stroke: #f0d48a;
      --country-selected-fill: #766f42;
      --country-selected-stroke: rgba(255, 142, 109, 0.5);
      --saved-country-fill: #1d4b67;
      --saved-country-stroke: #8ea2b4;
      --selected-country-detail-fill: rgba(247, 181, 76, 0.24);
      --selected-country-detail-stroke: rgba(255, 178, 109, 0.78);
      --map-label-fill: #f5f8fb;
      --map-label-stroke: rgba(16, 24, 33, 0.9);
    }

    .map-shell::before {
      content: "";
      position: absolute;
      inset: 0;
      z-index: 0;
      pointer-events: none;
      background-image: var(--custom-map-background-image);
      background-position: center;
      background-repeat: no-repeat;
      background-size: cover;
      opacity: var(--custom-map-background-opacity);
    }

    .map-shell.dragging {
      cursor: grabbing;
    }

    .city-popup-close {
      display: none;
    }

    .map-layer {
      position: absolute;
      inset: 0;
      z-index: 1;
      transform-origin: 0 0;
      will-change: auto;
      backface-visibility: visible;
    }

    .map-shell.dragging .map-layer {
      will-change: transform;
      backface-visibility: hidden;
    }

    .ad-drawer {
      --ad-panel-width: 220px;
      position: fixed;
      top: 73px;
      left: 12px;
      z-index: 18;
      display: grid;
      grid-template-columns: var(--ad-panel-width) auto;
      align-items: start;
      transform: translateX(calc(-1 * var(--ad-panel-width)));
      transition: transform 180ms ease;
    }

    .ad-drawer.open {
      transform: translateX(0);
    }

    .ad-panel {
      max-height: calc(100vh - 116px);
      overflow-y: auto;
      padding: 10px;
      border: 1px solid #cbd7e2;
      border-radius: 8px 0 8px 8px;
      background: rgba(255, 255, 255, 0.9);
      box-shadow: 0 8px 20px rgba(17, 35, 55, 0.12);
      backdrop-filter: blur(3px);
    }

    .ad-heading {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 8px;
      color: #24384f;
      font-size: 13px;
    }

    .ad-heading span {
      color: #6b7f94;
      font-size: 11px;
      font-weight: 800;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }

    .ad-list {
      display: grid;
      gap: 8px;
    }

    .ad-card {
      display: flex;
      align-items: center;
      justify-content: center;
      min-height: 48px;
      padding: 10px;
      border: 1px solid rgba(156, 174, 190, 0.65);
      border-radius: 8px;
      color: #12324d;
      background: rgba(255, 255, 255, 0.6);
    }

    .ad-card-disabled {
      cursor: default;
      opacity: 0.72;
      user-select: none;
    }

    .ad-card:not(.ad-card-disabled):hover,
    .ad-card:not(.ad-card-disabled):focus {
      text-decoration: none;
      border-color: #86b8d9;
      background: rgba(239, 247, 252, 0.9);
    }

    .ad-card-title {
      overflow: hidden;
      font-size: 13px;
      font-weight: 800;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    .ad-toggle {
      width: 34px;
      height: 42px;
      border-left: 0;
      border-radius: 0 8px 8px 0;
      background: rgba(255, 255, 255, 0.92);
      box-shadow: 0 8px 20px rgba(17, 35, 55, 0.12);
      font-size: 22px;
      font-weight: 900;
      cursor: pointer;
    }

    .ad-drawer:not(.open) .ad-toggle span {
      display: inline-block;
      transform: rotate(180deg);
    }

    body[data-theme="dark"] .ad-panel,
    body[data-theme="dark"] .ad-toggle {
      border-color: #40566d;
      background: rgba(23, 35, 51, 0.9);
      box-shadow: 0 8px 20px rgba(0, 0, 0, 0.26);
    }

    body[data-theme="dark"] .ad-heading,
    body[data-theme="dark"] .ad-card {
      color: #e8eef5;
    }

    body[data-theme="dark"] .ad-card {
      border-color: rgba(64, 86, 109, 0.9);
      background: rgba(24, 38, 56, 0.72);
    }

    body[data-theme="dark"] .ad-card:hover,
    body[data-theme="dark"] .ad-card:focus {
      border-color: #5e88ad;
      background: rgba(34, 50, 71, 0.95);
    }

    svg {
      display: block;
      width: 100%;
      height: 100%;
      overflow: visible;
    }

    .ocean {
      fill: transparent;
      pointer-events: none;
    }

    .country {
      fill: var(--country-fill);
      fill-opacity: var(--country-fill-opacity);
      stroke: var(--country-stroke);
      stroke-width: var(--country-border-width);
      vector-effect: non-scaling-stroke;
      cursor: pointer;
    }

    .map-shell.dragging .country {
      pointer-events: none;
    }

    .map-shell.dragging .country-label,
    .map-shell.dragging .city-label,
    .map-shell.dragging .layer-marker text,
    .map-shell.dragging .saved-marker text {
      display: none !important;
    }

    .map-shell.dragging .pin,
    .map-shell.dragging .city-dot,
    .map-shell.dragging .cluster,
    .map-shell.dragging .layer-marker,
    .map-shell.dragging .layer-cluster,
    .map-shell.dragging .saved-marker {
      pointer-events: none;
    }

    .map-shell.dragging .city-marker,
    .map-shell.dragging .cluster circle,
    .map-shell.dragging .layer-cluster circle,
    .map-shell.dragging .selected-country-detail,
    .map-shell.dragging .layer-marker,
    .map-shell.dragging .saved-marker {
      filter: none !important;
    }

    .map-shell.dragging .pin,
    .map-shell.dragging .city-dot,
    .map-shell.dragging .cluster,
    .map-shell.dragging .layer-marker,
    .map-shell.dragging .layer-cluster,
    .map-shell.dragging .saved-marker {
      opacity: 0.72;
    }

    .map-shell.horizontal-panning .pin,
    .map-shell.horizontal-panning .city-dot,
    .map-shell.horizontal-panning .cluster,
    .map-shell.horizontal-panning .layer-marker,
    .map-shell.horizontal-panning .layer-cluster,
    .map-shell.horizontal-panning .saved-marker {
      opacity: 0;
    }

    .map-shell.dragging .info-popups {
      opacity: 0.55;
      pointer-events: none;
    }

    body[data-theme="dark"] .country {
      fill: var(--country-fill);
      stroke: var(--country-stroke);
    }

    .country.coming-soon-country {
      fill: var(--country-fill);
      opacity: 1;
    }

    body[data-theme="dark"] .country.coming-soon-country {
      fill: var(--country-fill);
      opacity: 1;
    }

    .country:hover {
      stroke: var(--country-hover-stroke);
      stroke-width: var(--country-emphasis-border-width);
    }

    body[data-theme="dark"] .country:hover {
      stroke: var(--country-hover-stroke);
    }

    .country.saved {
      fill: var(--saved-country-fill);
      stroke: var(--saved-country-stroke);
      stroke-width: var(--country-emphasis-border-width);
    }

    body[data-theme="dark"] .country.saved {
      fill: var(--saved-country-fill);
      stroke: var(--saved-country-stroke);
    }

    .country.selected {
      fill: var(--country-selected-fill);
      stroke: var(--country-selected-stroke);
      stroke-width: var(--country-emphasis-border-width);
    }

    body[data-theme="dark"] .country.selected {
      fill: var(--country-selected-fill);
      stroke: var(--country-selected-stroke);
    }

    .country:focus-visible {
      stroke: #12324d;
      stroke-width: var(--country-focus-border-width);
    }

    body[data-theme="dark"] .country:focus-visible {
      stroke: #f5d77a;
    }

    .selected-country-detail {
      pointer-events: none;
      fill: var(--selected-country-detail-fill);
      stroke: var(--selected-country-detail-stroke);
      stroke-width: var(--selected-country-detail-border-width);
      vector-effect: non-scaling-stroke;
    }

    body[data-theme="dark"] .selected-country-detail {
      fill: var(--selected-country-detail-fill);
      stroke: var(--selected-country-detail-stroke);
    }

    .country:focus,
    .pin:focus,
    .city-dot:focus,
    .cluster:focus {
      outline: none;
    }

    .country-label {
      display: none;
      fill: var(--map-label-fill);
      font-size: var(--country-label-size, 5px);
      font-weight: 700;
      paint-order: stroke;
      pointer-events: none;
      stroke: var(--map-label-stroke);
      stroke-linejoin: round;
      stroke-width: var(--country-label-stroke-width, 0.45px);
      user-select: none;
    }

    body[data-theme="dark"] .country-label {
      fill: var(--map-label-fill);
      stroke: var(--map-label-stroke);
    }

    .show-country-labels .country-label {
      display: block;
    }

    .country-label.selected-label {
      display: block;
    }

    .pin,
    .cluster,
    .layer-marker,
    .layer-cluster,
    .saved-marker {
      cursor: pointer;
    }

    #selectedCountryLayer {
      pointer-events: none;
    }

    .city-dot .city-marker {
      fill: #df3c3c;
      stroke: #fff;
      stroke-width: 0.45;
    }

    .pin .city-marker {
      fill: #df3c3c;
      stroke: #fff;
      stroke-width: 0.55;
    }

    .hit-area {
      fill: transparent;
      stroke: transparent;
      pointer-events: all;
    }

    .city-dot,
    .city-dot * {
      cursor: default;
      pointer-events: none;
    }

    .city-dot.city-selectable {
      cursor: pointer;
      pointer-events: all;
    }

    .city-dot.city-selectable .hit-area {
      pointer-events: all;
    }

    .city-label {
      display: none;
      fill: var(--map-label-fill);
      font-size: 6.5px;
      font-weight: 800;
      paint-order: stroke;
      stroke: var(--map-label-stroke);
      stroke-width: var(--city-label-stroke-width, 0.45px);
      pointer-events: none;
    }

    body[data-theme="dark"] .city-label {
      fill: var(--map-label-fill);
      stroke: var(--map-label-stroke);
    }

    .city-label.visible {
      display: block;
    }

    .selected-city .city-marker {
      fill: #c81f42;
      filter: drop-shadow(0 0.7px 1.4px rgba(26, 29, 34, 0.22));
    }

    .pin:hover .city-marker,
    .city-dot:hover .city-marker,
    .pin:focus .city-marker,
    .city-dot:focus .city-marker {
      fill: #b91435;
      stroke-width: 0.65;
      filter: drop-shadow(0 0.7px 1.4px rgba(26, 29, 34, 0.22));
    }

    .pin:focus-visible .city-marker {
      stroke: #102033;
      stroke-width: 0.85;
    }

    body[data-theme="dark"] .pin:focus-visible .city-marker {
      stroke: #f5f8fb;
    }

    .cluster circle {
      fill: #254d73;
      stroke: #fff;
      stroke-width: 2.5;
      filter: drop-shadow(0 3px 4px rgba(26, 29, 34, 0.3));
    }

    .cluster text {
      fill: #fff;
      font-size: 11px;
      font-weight: 800;
      text-anchor: middle;
      dominant-baseline: central;
      pointer-events: none;
    }

    .layer-marker:focus-visible {
      filter: drop-shadow(0 0 2px rgba(16, 32, 51, 0.72));
    }

    .layer-marker:hover,
    .layer-marker:focus,
    .layer-marker.selected {
      filter: drop-shadow(0 0.7px 1.4px rgba(26, 29, 34, 0.2));
    }

    body[data-theme="dark"] .layer-marker:focus-visible {
      filter: drop-shadow(0 0 2px rgba(245, 248, 251, 0.72));
    }

    .layer-marker:focus,
    .layer-marker:focus-visible,
    .layer-cluster:focus,
    .layer-cluster:focus-visible {
      outline: none;
    }

    .layer-hit-area {
      fill: transparent;
      stroke: transparent;
      pointer-events: all;
    }

    .layer-marker path,
    .layer-marker rect,
    .layer-marker polygon {
      stroke: transparent;
      stroke-width: 0;
      vector-effect: non-scaling-stroke;
    }

    .layer-marker text {
      display: none;
      fill: var(--map-label-fill);
      font-size: 6.5px;
      font-weight: 800;
      paint-order: stroke;
      stroke: var(--map-label-stroke);
      stroke-width: 0.45px;
      pointer-events: none;
    }

    .layer-marker:hover text,
    .layer-marker:focus text,
    .layer-marker.selected text {
      display: block;
    }

    .layer-marker:hover path,
    .layer-marker:hover rect,
    .layer-marker:hover polygon,
.layer-marker:focus path,
    .layer-marker:focus rect,
    .layer-marker:focus polygon {
      stroke: transparent;
      stroke-width: 0;
    }

    .layer-marker.heritage path {
      fill: #8b5cf6;
    }

    .layer-marker.airport rect {
      fill: #0f7b8f;
    }

    .layer-marker.themepark path {
      fill: #d14f7b;
    }

    .layer-marker.spot polygon {
      fill: #e0a900;
    }

    body[data-theme="dark"] .layer-marker text {
      fill: var(--map-label-fill);
      stroke: var(--map-label-stroke);
    }

    .layer-cluster circle {
      fill: #193f5f;
      stroke: #fff;
      stroke-width: 2;
      filter: drop-shadow(0 3px 4px rgba(26, 29, 34, 0.28));
    }

    .layer-cluster text {
      fill: #fff;
      font-size: 10px;
      font-weight: 900;
      text-anchor: middle;
      dominant-baseline: central;
      pointer-events: none;
    }

    .layer-cluster.heritage circle {
      fill: #6d46c9;
    }

    .layer-cluster.airport circle {
      fill: #0f7b8f;
    }

    .layer-cluster.themepark circle {
      fill: #b43b68;
    }

    .layer-cluster.spot circle {
      fill: #aa7d00;
    }

    .saved-marker:focus,
    .saved-marker:focus-visible {
      outline: none;
    }

    .saved-marker .saved-ring {
      fill: rgba(255, 255, 255, 0.2);
      stroke: #f6d36b;
      stroke-width: 0.65;
      vector-effect: non-scaling-stroke;
    }

    .saved-marker .saved-hit-area {
      fill: transparent;
      stroke: transparent;
      pointer-events: all;
    }

    .saved-marker .city-marker {
      fill: #df3c3c;
      stroke: #fff;
      stroke-width: 0.45;
    }

    .saved-marker path,
    .saved-marker rect,
    .saved-marker polygon {
      stroke: transparent;
      stroke-width: 0;
      vector-effect: non-scaling-stroke;
    }

    .saved-marker.heritage path {
      fill: #8b5cf6;
    }

    .saved-marker.airport rect {
      fill: #0f7b8f;
    }

    .saved-marker.themepark path {
      fill: #d14f7b;
    }

    .saved-marker.spot polygon {
      fill: #e0a900;
    }

    .saved-marker text {
      display: none;
      fill: var(--map-label-fill);
      font-size: 6.5px;
      font-weight: 800;
      paint-order: stroke;
      pointer-events: none;
      stroke: var(--map-label-stroke);
      stroke-width: var(--saved-label-stroke-width, 0.28px);
    }

    .saved-marker:hover,
    .saved-marker:focus,
    .saved-marker.selected {
      filter: drop-shadow(0 0.7px 1.4px rgba(26, 29, 34, 0.22));
    }

    .saved-marker:hover text,
    .saved-marker:focus text,
    .saved-marker.near-pointer text,
    .saved-marker.selected text {
      display: block;
    }

    body[data-theme="dark"] .saved-marker .saved-ring {
      fill: rgba(16, 32, 51, 0.28);
      stroke: #ffd978;
    }

    .perf-panel {
      position: absolute;
      right: 12px;
      bottom: 12px;
      z-index: 5;
      min-width: 220px;
      max-width: calc(100% - 24px);
      padding: 34px 10px 10px;
      border: 1px solid #cbd7e2;
      border-radius: 8px;
      background: rgba(255, 255, 255, 0.92);
      box-shadow: 0 8px 20px rgba(17, 35, 55, 0.16);
      font-size: 12px;
    }

    .perf-panel.hidden,
    .perf-panel[hidden] {
      display: none;
    }

    .perf-close {
      position: absolute;
      top: 8px;
      left: 8px;
      width: 28px;
      height: 28px;
      border-radius: 50%;
      font-size: 18px;
      font-weight: 900;
      line-height: 1;
    }

    .perf-panel dl {
      grid-template-columns: 112px 1fr;
      gap: 3px 8px;
      margin-top: 8px;
      font-size: 12px;
    }

    body[data-theme="dark"] .perf-panel {
      border-color: #40566d;
      background: rgba(23, 35, 51, 0.92);
    }

    .info-popups {
      --left-ad-toggle-safe-offset: 56px;
      --popup-card-width: 300px;
      --popup-card-scale: 1;
      --popup-card-overflow-adjust: 0px;
      --popup-card-gap: 10px;
      --popup-total-width: 610px;
      position: absolute;
      z-index: 4;
      display: flex;
      gap: var(--popup-card-gap);
      align-items: start;
      top: 12px;
      max-width: min(var(--popup-total-width), calc(100vw - 84px));
    }

    .info-popups[hidden] {
      display: none;
    }

    .info-popups.side-left {
      flex-direction: row;
      left: var(--left-ad-toggle-safe-offset);
      right: auto;
    }

    .info-popups.side-right {
      flex-direction: row-reverse;
      left: auto;
      right: 64px;
    }

    .info-card {
      flex: 0 0 var(--popup-card-width);
      width: var(--popup-card-width);
      margin-right: var(--popup-card-overflow-adjust);
      max-height: calc(100dvh - 108px);
      overflow: auto;
      padding: 12px;
      border: 1px solid #cbd7e2;
      border-radius: 8px;
      background: #fff;
      box-shadow: 0 14px 32px rgba(17, 35, 55, 0.25);
      transform: scale(var(--popup-card-scale));
      transform-origin: top left;
    }

    .info-popups.side-right .info-card {
      margin-right: 0;
      margin-left: var(--popup-card-overflow-adjust);
      transform-origin: top right;
    }

    body[data-theme="dark"] .info-card {
      color: #e8eef5;
      border-color: #40566d;
      background: #172333;
      box-shadow: 0 14px 32px rgba(0, 0, 0, 0.38);
    }

    .info-card[hidden] {
      display: none;
    }

    .info-title {
      display: flex;
      align-items: start;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 8px;
    }

    .info-title h2 {
      margin: 0;
      font-size: 18px;
      line-height: 1.2;
    }

    .info-subtitle {
      margin: 2px 0 0;
      color: #627285;
      font-size: 13px;
    }

    .close {
      width: 28px;
      height: 28px;
      border-radius: 50%;
      font-size: 18px;
      line-height: 1;
    }

    dl {
      display: grid;
      grid-template-columns: 92px 1fr;
      gap: 6px 10px;
      margin: 0;
      font-size: 14px;
    }

    dt {
      color: #627285;
    }

    dd {
      margin: 0;
      font-weight: 700;
    }

    .city-link-list {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
    }

    .city-link-button {
      min-height: 28px;
      padding: 4px 9px;
      border: 1px solid #b9c9d8;
      border-radius: 999px;
      color: #12324d;
      font: inherit;
      font-size: 13px;
      font-weight: 800;
      background: #eef5fb;
      cursor: pointer;
    }

    .city-link-button:hover,
    .city-link-button:focus {
      border-color: #d94747;
      color: #a11933;
      background: #fff5f5;
    }

    body[data-theme="dark"] .city-link-button {
      color: #e8eef5;
      border-color: #40566d;
      background: #223247;
    }

    .city-title-row,
    .country-title-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      min-width: 0;
    }

    .city-title-row h2,
    .country-title-row h2 {
      min-width: 0;
    }

    #cityTitleActions,
    #countryTitleActions {
      display: inline-flex;
      flex: 0 0 auto;
      gap: 6px;
      align-items: center;
    }

    .base-city-inline-button,
    .country-save-toggle {
      flex: 0 0 auto;
      min-height: 24px;
      padding: 2px 8px;
      border: 1px solid #b9c9d8;
      border-radius: 999px;
      color: #12324d;
      background: #eef5fb;
      font: inherit;
      font-size: 12px;
      font-weight: 800;
      white-space: nowrap;
      cursor: pointer;
    }

    .base-city-inline-button:hover,
    .base-city-inline-button:focus,
    .country-save-toggle:hover,
    .country-save-toggle:focus {
      border-color: #86b8d9;
      background: #e8f0f6;
    }

    .country-save-toggle.saved {
      border-color: var(--saved-country-stroke);
    }

    .base-city-inline-button.active {
      border-color: #86b8d9;
    }

    body[data-theme="dark"] .base-city-inline-button,
    body[data-theme="dark"] .country-save-toggle {
      color: #e8eef5;
      border-color: #40566d;
      background: #223247;
    }

    body[data-theme="dark"] .base-city-inline-button:hover,
    body[data-theme="dark"] .base-city-inline-button:focus,
    body[data-theme="dark"] .country-save-toggle:hover,
    body[data-theme="dark"] .country-save-toggle:focus {
      background: #26384b;
    }

    body[data-theme="dark"] .country-save-toggle.saved {
      border-color: var(--saved-country-stroke);
    }

    body[data-theme="dark"] .base-city-inline-button.active {
      border-color: #7fb7dc;
    }

    .saved-entity-toggle {
      flex: 0 0 auto;
      min-height: 24px;
      padding: 2px 8px;
      border: 1px solid #b9c9d8;
      border-radius: 999px;
      color: #12324d;
      background: #eef5fb;
      font: inherit;
      font-size: 12px;
      font-weight: 800;
      white-space: nowrap;
      cursor: pointer;
    }

    .saved-entity-toggle:hover,
    .saved-entity-toggle:focus {
      border-color: #86b8d9;
      background: #e8f0f6;
    }

    .saved-entity-toggle.saved {
      border-color: #f6d36b;
    }

    body[data-theme="dark"] .saved-entity-toggle {
      color: #e8eef5;
      border-color: #40566d;
      background: #223247;
    }

    body[data-theme="dark"] .saved-entity-toggle:hover,
    body[data-theme="dark"] .saved-entity-toggle:focus {
      background: #26384b;
    }

    body[data-theme="dark"] .saved-entity-toggle.saved {
      border-color: #ffd978;
    }

    a {
      color: #0f5f95;
      text-decoration: none;
    }

    a:hover {
      text-decoration: underline;
    }

    .mode-drawer {
      position: fixed;
      top: 73px;
      right: 12px;
      z-index: 18;
      display: grid;
      grid-template-columns: auto 260px;
      align-items: start;
      transform: translateX(260px);
      transition: transform 180ms ease;
    }

    .saved-layer-panel {
      display: grid;
      gap: 8px;
      margin-top: 14px;
      padding-top: 14px;
      border-top: 1px solid #d6e1ea;
    }

    body[data-theme="dark"] .saved-layer-panel {
      border-color: #26394d;
    }

    .saved-layer-heading {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
    }

    .saved-layer-heading .overlay-title {
      margin: 0;
    }

    #savedLayerCount {
      color: #647587;
      font-size: 12px;
      font-weight: 800;
      white-space: nowrap;
    }

    body[data-theme="dark"] #savedLayerCount {
      color: #b6c3d1;
    }

    .saved-layer-clear {
      min-height: 34px;
      border: 1px solid #c4d2df;
      border-radius: 8px;
      background: #f3f8fc;
      color: #12324d;
      font: inherit;
      font-size: 13px;
      font-weight: 800;
    }

    .saved-layer-clear {
      cursor: pointer;
    }

    body[data-theme="dark"] .saved-layer-clear {
      color: #e8eef5;
      border-color: #40566d;
      background: #223247;
    }

    .mode-drawer.open {
      transform: translateX(0);
    }

    .drawer-toggle {
      width: 42px;
      height: 42px;
      border-radius: 8px 0 0 8px;
      border-right: 0;
      font-size: 20px;
      background: rgba(255, 255, 255, 0.94);
      box-shadow: 0 8px 20px rgba(17, 35, 55, 0.16);
    }

    body[data-theme="dark"] .drawer-toggle {
      background: rgba(23, 35, 51, 0.96);
      box-shadow: 0 8px 20px rgba(0, 0, 0, 0.32);
    }

    .drawer-panel {
      max-height: calc(100vh - 116px);
      overflow-y: auto;
      min-height: 160px;
      padding: 10px;
      border: 1px solid #cbd7e2;
      border-radius: 0 8px 8px 8px;
      background: rgba(255, 255, 255, 0.96);
      box-shadow: 0 8px 20px rgba(17, 35, 55, 0.16);
    }

    body[data-theme="dark"] .drawer-panel {
      border-color: #40566d;
      background: rgba(23, 35, 51, 0.96);
      box-shadow: 0 8px 20px rgba(0, 0, 0, 0.32);
    }

    .tabs {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 6px;
      margin-bottom: 10px;
    }

    .tab-button,
    .overlay-button {
      height: 34px;
      padding: 0 10px;
      font-size: 13px;
      font-weight: 700;
    }

    .tab-button.active,
    .overlay-button.active {
      color: #fff;
      border-color: #254d73;
      background: #254d73;
    }

    .tab-panel[hidden] {
      display: none;
    }

    .mode-options {
      display: grid;
      gap: 8px;
    }

    .theme-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      padding: 8px 2px 12px;
      border-bottom: 1px solid #d7e1ea;
      font-size: 13px;
      font-weight: 800;
    }

    body[data-theme="dark"] .theme-row {
      border-color: #40566d;
    }

    .theme-switch {
      position: relative;
      width: 44px;
      height: 24px;
      padding: 0;
      border: 0;
      border-radius: 999px;
      background: #d3dde7;
      cursor: pointer;
      transition: background 160ms ease;
    }

    .theme-switch::before {
      content: "";
      position: absolute;
      top: 3px;
      left: 3px;
      width: 18px;
      height: 18px;
      border-radius: 50%;
      background: #fff;
      box-shadow: 0 1px 3px rgba(17, 35, 55, 0.25);
      transition: transform 160ms ease;
    }

    .theme-switch.active {
      background: #155bd4;
    }

    .theme-switch.active::before {
      transform: translateX(20px);
    }

    .overlay-title {
      margin: 10px 0 6px;
      color: #627285;
      font-size: 12px;
      font-weight: 800;
    }

    body[data-theme="dark"] .overlay-title {
      color: #b8c6d5;
    }

    .overlay-options {
      display: grid;
      gap: 6px;
    }

    .empty-settings {
      margin: 6px 0 0;
      color: #627285;
      font-size: 13px;
    }

    .site-content {
      background: #f6f9fc;
    }

    body[data-theme="dark"] .site-content {
      background: #101821;
    }

    .content-section {
      max-width: 1080px;
      margin: 0 auto;
      padding: 48px 18px;
    }

    .content-section h2 {
      margin: 0 0 14px;
      font-size: 26px;
      line-height: 1.25;
    }

    .content-section p {
      max-width: 760px;
      margin: 0 0 16px;
      color: #536476;
      line-height: 1.8;
    }

    body[data-theme="dark"] .content-section p {
      color: #b8c6d5;
    }

    .section-kicker {
      margin: 0 0 8px;
      color: #0f5f95;
      font-size: 12px;
      font-weight: 900;
      letter-spacing: 0;
      text-transform: uppercase;
    }

    body[data-theme="dark"] .section-kicker {
      color: #8bc5ee;
    }

    .detail-section {
      display: grid;
      gap: 18px;
      scroll-margin-top: 84px;
    }

    .detail-heading {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 16px;
    }

    .detail-heading > div {
      flex: 1 1 auto;
      min-width: 0;
    }

    .detail-heading p,
    .site-footer .footer-intro {
      max-width: none;
    }

    .detail-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 14px;
    }

    .detail-panel {
      padding: 16px;
      border: 1px solid #d6e1ea;
      border-radius: 8px;
      background: #fff;
    }

    #detailBody .external-link-notice {
      grid-column: 1 / -1;
      max-width: none;
      margin: 0;
      color: #647587;
      font-size: 12px;
      line-height: 1.6;
    }

    #detailBody .external-link-notice a {
      color: inherit;
      text-decoration: underline;
      text-underline-offset: 2px;
    }

    body[data-theme="dark"] .detail-panel {
      border-color: #40566d;
      background: #172333;
    }

    .detail-panel h3 {
      margin: 0 0 10px;
      font-size: 17px;
    }

    .detail-panel-heading {
      display: flex;
      align-items: start;
      justify-content: space-between;
      gap: 12px;
      margin: 0 0 10px;
    }

    .detail-panel-heading h3 {
      margin: 0;
    }

    .detail-panel-actions {
      display: inline-flex;
      flex: 0 0 auto;
      gap: 6px;
      align-items: center;
      justify-content: end;
    }

    .external-map-link {
      display: inline-flex;
      min-height: 24px;
      align-items: center;
      justify-content: center;
      padding: 2px 8px;
      border: 1px solid #b9c9d8;
      border-radius: 6px;
      color: #18324b;
      background: #f5f8fb;
      font: inherit;
      font-size: 12px;
      font-weight: 700;
      line-height: 1.2;
      text-decoration: none;
      white-space: nowrap;
      cursor: pointer;
    }

    .external-map-link:hover,
    .external-map-link:focus-visible {
      border-color: #86b8d9;
      background: #e8f0f6;
      text-decoration: underline;
    }

    body[data-theme="dark"] .external-map-link {
      color: #e8eef5;
      border-color: #40566d;
      background: #223247;
    }

    body[data-theme="dark"] .external-map-link:hover,
    body[data-theme="dark"] .external-map-link:focus-visible {
      background: #26384b;
    }

    .theme-park-catalog,
    .city-catalog {
      display: grid;
      gap: 14px;
    }

    .theme-park-catalog-section,
    .city-catalog-section {
      min-width: 0;
    }

    .theme-park-catalog-section + .theme-park-catalog-section,
    .city-catalog-section + .city-catalog-section {
      padding-top: 12px;
      border-top: 1px solid #d6e1ea;
    }

    body[data-theme="dark"] .theme-park-catalog-section + .theme-park-catalog-section,
    body[data-theme="dark"] .city-catalog-section + .city-catalog-section {
      border-top-color: #40566d;
    }

    .theme-park-catalog-section h4,
    .city-catalog-section h4 {
      margin: 0 0 8px;
      color: #40556a;
      font-size: 13px;
    }

    body[data-theme="dark"] .theme-park-catalog-section h4,
    body[data-theme="dark"] .city-catalog-section h4 {
      color: #b9c7d6;
    }

    .theme-park-group-list,
    .city-region-list {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
    }

    .theme-park-country-groups {
      max-height: 148px;
      overflow-y: auto;
      padding-right: 4px;
      scrollbar-gutter: stable;
    }

    .city-catalog-all-sections {
      max-height: 420px;
      overflow-y: auto;
      padding-right: 4px;
      scrollbar-gutter: stable;
    }

    .theme-park-group-button,
    .catalog-group-button {
      min-height: 30px;
      padding: 5px 9px;
      border: 1px solid #b9c9d8;
      border-radius: 6px;
      color: #12324d;
      background: #f4f8fb;
      font: inherit;
      font-size: 12px;
      font-weight: 800;
      cursor: pointer;
    }

    .theme-park-group-button:hover,
    .theme-park-group-button:focus-visible,
    .theme-park-group-button.active,
    .theme-park-catalog-item.active,
    .catalog-group-button:hover,
    .catalog-group-button:focus-visible,
    .city-catalog-item.active {
      border-color: #d94747;
      color: #a11933;
      background: #fff5f5;
    }

    body[data-theme="dark"] .theme-park-group-button,
    body[data-theme="dark"] .catalog-group-button {
      color: #e8eef5;
      border-color: #40566d;
      background: #1d2b3b;
    }

    body[data-theme="dark"] .theme-park-group-button:hover,
    body[data-theme="dark"] .theme-park-group-button:focus-visible,
    body[data-theme="dark"] .theme-park-group-button.active,
    body[data-theme="dark"] .theme-park-catalog-item.active,
    body[data-theme="dark"] .catalog-group-button:hover,
    body[data-theme="dark"] .catalog-group-button:focus-visible,
    body[data-theme="dark"] .city-catalog-item.active {
      border-color: #e06a6a;
      color: #fff;
      background: #4a2730;
    }

    .coming-soon-panel {
      border-style: dashed;
    }

    .service-panel {
      background: #f8fbfd;
    }

    body[data-theme="dark"] .service-panel {
      background: #142031;
    }

    .travel-service-planner {
      display: grid;
      gap: 14px;
    }

    .travel-service-genres,
    .travel-service-modes,
    .travel-service-sites {
      display: flex;
      flex-wrap: wrap;
      gap: 7px;
    }

    .travel-service-genre,
    .travel-service-mode,
    .travel-service-reset {
      min-height: 34px;
      padding: 6px 11px;
      border: 1px solid #b9c9d8;
      border-radius: 8px;
      color: #18324b;
      background: #eef5fb;
      font: inherit;
      font-size: 13px;
      font-weight: 800;
      cursor: pointer;
    }

    .travel-service-genre.active,
    .travel-service-mode.active {
      border-color: #d94747;
      color: #fff;
      background: #b7283f;
      box-shadow: 0 0 0 2px rgba(217, 71, 71, 0.16);
    }

    .travel-service-mode-row {
      display: flex;
      flex-wrap: wrap;
      gap: 8px 12px;
      align-items: center;
    }

    .travel-service-mode-label {
      color: #40556a;
      font-size: 13px;
      font-weight: 800;
    }

    .travel-service-reset {
      margin-left: auto;
      background: #fff;
    }

    .travel-service-mode-help,
    .travel-service-storage-note,
    .travel-service-affiliate-note,
    .travel-service-provider-note {
      margin: 0;
      color: #647587;
      font-size: 12px;
      line-height: 1.55;
    }

    .travel-service-storage-note,
    .travel-service-affiliate-note {
      font-weight: 700;
    }

    .travel-service-form {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 10px 12px;
    }

    .travel-service-field {
      display: grid;
      gap: 5px;
      min-width: 0;
      color: #40556a;
      font-size: 12px;
      font-weight: 800;
    }

    .travel-service-field input {
      width: 100%;
      min-width: 0;
      min-height: 38px;
      padding: 7px 9px;
      border: 1px solid #b9c9d8;
      border-radius: 7px;
      color: #13283b;
      background: #fff;
      font: inherit;
      font-size: 14px;
      box-sizing: border-box;
    }

    .travel-service-field input:focus {
      border-color: #2980b9;
      outline: 2px solid rgba(41, 128, 185, 0.18);
      outline-offset: 1px;
    }

    .travel-service-site-groups {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 14px;
    }

    .travel-service-destinations {
      min-width: 0;
      padding-top: 12px;
      border-top: 1px solid #d6e1ea;
    }

    .travel-service-destinations h4 {
      margin: 0 0 8px;
      color: #40556a;
      font-size: 13px;
    }

    .travel-service-site {
      display: inline-flex;
      min-height: 32px;
      align-items: center;
      padding: 5px 10px;
      border: 1px solid #b9c9d8;
      border-radius: 999px;
      color: #12324d;
      background: #eef5fb;
      font-size: 13px;
      font-weight: 800;
      text-decoration: none;
    }

    .travel-service-site:hover,
    .travel-service-site:focus-visible {
      border-color: #86b8d9;
      background: #e8f0f6;
      text-decoration: underline;
    }

    body[data-theme="dark"] .travel-service-genre,
    body[data-theme="dark"] .travel-service-mode,
    body[data-theme="dark"] .travel-service-reset,
    body[data-theme="dark"] .travel-service-site {
      color: #e8eef5;
      border-color: #40566d;
      background: #223247;
    }

    body[data-theme="dark"] .travel-service-genre.active,
    body[data-theme="dark"] .travel-service-mode.active {
      border-color: #f07878;
      color: #fff;
      background: #8d2538;
    }

    body[data-theme="dark"] .travel-service-mode-label,
    body[data-theme="dark"] .travel-service-field,
    body[data-theme="dark"] .travel-service-destinations h4 {
      color: #b9c7d6;
    }

    body[data-theme="dark"] .travel-service-mode-help,
    body[data-theme="dark"] .travel-service-storage-note,
    body[data-theme="dark"] .travel-service-affiliate-note,
    body[data-theme="dark"] .travel-service-provider-note {
      color: #b6c3d1;
    }

    body[data-theme="dark"] .travel-service-field input {
      color: #f3f6f9;
      border-color: #40566d;
      background: #101a28;
      color-scheme: dark;
    }

    body[data-theme="dark"] .travel-service-destinations {
      border-top-color: #40566d;
    }

    body[data-theme="dark"] .travel-service-site:hover,
    body[data-theme="dark"] .travel-service-site:focus-visible {
      background: #2a3c52;
    }

    @media (max-width: 640px) {
      .travel-service-form,
      .travel-service-site-groups {
        grid-template-columns: 1fr;
      }

      .travel-service-reset {
        width: 100%;
        margin-left: 0;
      }
    }

    .muted-note {
      margin: 0 0 10px;
      color: #647587;
      font-size: 13px;
      line-height: 1.6;
    }

    body[data-theme="dark"] .muted-note {
      color: #b6c3d1;
    }

    .detail-list {
      display: grid;
      grid-template-columns: 120px 1fr;
      gap: 8px 12px;
      margin: 0;
      font-size: 14px;
    }

    .detail-list dt {
      color: #627285;
      font-weight: 700;
    }

    .detail-list dd {
      margin: 0;
      font-weight: 700;
    }

    .sample-value {
      color: #9a5b00;
    }

    body[data-theme="dark"] .sample-value {
      color: #f0bc67;
    }

    .link-list,
    .service-links,
    .service-button-list {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      align-items: center;
    }

    .service-button-list {
      flex-direction: column;
      align-items: flex-start;
    }

    .service-button-row {
      display: flex;
      align-items: center;
      gap: 8px;
    }

    .link-list a,
    .service-links a,
    .service-button-list a,
    .service-placeholder-button,
    .detail-action {
      display: inline-flex;
      align-items: center;
      min-height: 30px;
      padding: 5px 10px;
      border: 1px solid #b9c9d8;
      border-radius: 999px;
      background: #eef5fb;
      color: #12324d;
      font-size: 13px;
      font-weight: 800;
      text-decoration: none;
    }

    body[data-theme="dark"] .link-list a,
    body[data-theme="dark"] .service-links a,
    body[data-theme="dark"] .service-button-list a,
    body[data-theme="dark"] .service-placeholder-button,
    body[data-theme="dark"] .detail-action {
      color: #e8eef5;
      border-color: #40566d;
      background: #223247;
    }

    .service-placeholder-button {
      opacity: 0.72;
    }

    .service-placeholder-note {
      margin-right: 8px;
      color: #647587;
      font-size: 13px;
      font-weight: 700;
    }

    body[data-theme="dark"] .service-placeholder-note {
      color: #b6c3d1;
    }

    .service-section {
      border-top: 1px solid #d6e1ea;
    }

    body[data-theme="dark"] .service-section {
      border-color: #26394d;
    }

    .detail-preview {
      display: grid;
      grid-template-columns: minmax(240px, 0.8fr) 1fr;
      gap: 22px;
      align-items: center;
      margin-top: 22px;
    }

    .image-placeholder {
      min-height: 220px;
      border-radius: 8px;
      background:
        linear-gradient(135deg, rgba(37, 77, 115, 0.82), rgba(134, 189, 217, 0.74)),
        linear-gradient(45deg, transparent 48%, rgba(255, 255, 255, 0.35) 49%, rgba(255, 255, 255, 0.35) 51%, transparent 52%);
      background-size: auto, 28px 28px;
    }

    .footer-links {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: 16px;
      margin-top: 20px;
      padding-top: 20px;
      border-top: 1px solid #d7e0ea;
    }

    body[data-theme="dark"] .footer-links {
      border-top-color: #2d4055;
    }

    .footer-links h3 {
      margin: 0 0 8px;
      font-size: 14px;
    }

    .footer-links a,
    .footer-links button {
      display: block;
      margin: 6px 0;
      padding: 0;
      border: 0;
      background: transparent;
      color: #52677a;
      font-family: inherit;
      font-size: 13px;
      text-align: left;
      text-decoration: none;
      cursor: pointer;
    }

    .footer-links a:hover,
    .footer-links a:focus,
    .footer-links button:hover,
    .footer-links button:focus {
      text-decoration: underline;
    }

    body[data-theme="dark"] .footer-links a,
    body[data-theme="dark"] .footer-links button {
      color: #b8c6d5;
    }

    .footer-attribution {
      margin: 18px 0 0;
      padding-top: 14px;
      border-top: 1px solid #d7e0ea;
      color: #647587;
      font-size: 11px;
      line-height: 1.7;
    }

    .footer-attribution a {
      color: inherit;
    }

    body[data-theme="dark"] .footer-attribution {
      border-top-color: #2d4055;
      color: #b8c6d5;
    }

    .footer-info-panel {
      border: 1px solid #d4e0ea;
    }

    .footer-info-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 16px;
      margin-bottom: 12px;
    }

    .footer-info-header h2 {
      margin: 0;
    }

    .footer-info-close {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 34px;
      height: 34px;
      flex: 0 0 auto;
      border: 1px solid #b9c9d8;
      border-radius: 999px;
      background: #eef5fb;
      color: #12324d;
      font-size: 22px;
      font-weight: 800;
      line-height: 1;
      cursor: pointer;
    }

    .footer-info-body {
      display: grid;
      gap: 10px;
      max-width: 760px;
      margin-inline: auto;
    }

    .footer-info-body p {
      margin: 0;
      line-height: 1.7;
    }

    .how-to-guide {
      display: grid;
      gap: 22px;
      width: min(100%, 760px);
      margin-inline: auto;
    }

    .how-to-guide > p,
    .how-to-guide h2,
    .how-to-guide h3,
    .how-to-guide ul,
    .how-to-guide ol {
      margin-top: 0;
      margin-bottom: 0;
    }

    .how-to-guide h2 {
      font-size: 20px;
    }

    .how-to-guide h3 {
      margin-bottom: 6px;
      font-size: 16px;
    }

    .how-to-action {
      padding: 0 3px;
      border-radius: 3px;
      color: #174f73;
      background: rgba(98, 167, 211, 0.1);
      font-weight: 700;
    }

    body[data-theme="dark"] .how-to-action {
      color: #b9dcf3;
      background: rgba(83, 151, 196, 0.12);
    }

    .how-to-start {
      padding: 18px;
      border: 1px solid #b9d3e6;
      border-radius: 10px;
      background: #f3f9fd;
    }

    body[data-theme="dark"] .how-to-start {
      border-color: #3a5c76;
      background: #172c3e;
    }

    .how-to-steps,
    .how-to-feature-list {
      display: grid;
      gap: 14px;
      padding-left: 24px;
    }

    .how-to-steps li::marker {
      color: #1d628e;
      font-weight: 800;
    }

    body[data-theme="dark"] .how-to-steps li::marker {
      color: #8fc8ef;
    }

    .base-city-examples {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 8px;
      margin: 10px 0;
    }

    .base-city-example {
      min-width: 0;
      margin: 0;
      padding: 10px 12px;
      border-left: 3px solid #4f91bd;
      border-radius: 0 7px 7px 0;
      background: rgba(255, 255, 255, 0.72);
    }

    .base-city-example h4 {
      margin: 0 0 8px;
      font-size: 14px;
    }

    .base-city-example dl {
      display: grid;
      grid-template-columns: max-content minmax(0, 1fr);
      gap: 5px 10px;
      margin: 0;
      font-size: 13px;
    }

    .base-city-example dt {
      color: #52677a;
      font-weight: 700;
    }

    .base-city-example dd {
      min-width: 0;
      margin: 0;
    }

    .base-city-example p {
      margin: 8px 0 0;
      font-size: 13px;
    }

    body[data-theme="dark"] .base-city-example {
      border-left-color: #78b7df;
      background: rgba(10, 24, 37, 0.42);
    }

    body[data-theme="dark"] .base-city-example dt {
      color: #a9bdce;
    }

    .how-to-note {
      padding-top: 16px;
      border-top: 1px solid #d7e0ea;
      color: #52677a;
      font-size: 13px;
    }

    body[data-theme="dark"] .how-to-note {
      border-top-color: #2d4055;
      color: #b8c6d5;
    }

    .legal-page .detail-section > p,
    .legal-page .detail-section > h1,
    .legal-page .detail-section > h2,
    .legal-page .detail-section > ul,
    .legal-page .detail-section > ol,
    .legal-page .detail-section > .section-kicker {
      width: min(100%, 760px);
      margin-left: auto;
      margin-right: auto;
    }

    body[data-theme="dark"] .footer-info-panel {
      border-color: #26394d;
    }

    body[data-theme="dark"] .footer-info-close {
      color: #e8eef5;
      border-color: #40566d;
      background: #223247;
    }

    .contact-content {
      display: grid;
      gap: 18px;
      width: min(100%, 760px);
      margin-inline: auto;
    }

    .contact-content > p,
    .contact-form-panel > p {
      margin: 0;
      line-height: 1.7;
    }

    .contact-mode-switch {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 8px;
    }

    .contact-mode-switch button {
      min-height: 44px;
      padding: 9px 12px;
      font: inherit;
      font-weight: 800;
    }

    .contact-mode-switch button.active {
      color: #fff;
      border-color: #285f8f;
      background: #285f8f;
    }

    body[data-theme="dark"] .contact-mode-switch button.active {
      color: #fff;
      border-color: #3979af;
      background: #2b5d88;
    }

    .contact-form-panel {
      display: grid;
      gap: 14px;
      padding-top: 18px;
      border-top: 1px solid #d4e0ea;
    }

    .contact-form-panel[hidden] {
      display: none;
    }

    body[data-theme="dark"] .contact-form-panel {
      border-top-color: #2d4055;
    }

    .contact-form-panel h2 {
      margin: 0;
      font-size: 20px;
    }

    .contact-form {
      display: grid;
      gap: 16px;
    }

    .contact-form-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 14px;
    }

    .contact-form-grid label {
      display: grid;
      align-content: start;
      gap: 6px;
      min-width: 0;
      color: #52677a;
      font-size: 13px;
      font-weight: 800;
    }

    body[data-theme="dark"] .contact-form-grid label {
      color: #b8c6d5;
    }

    .contact-form-grid label > span {
      display: flex;
      flex-wrap: wrap;
      align-items: baseline;
      justify-content: space-between;
      gap: 6px;
    }

    .contact-form-grid strong,
    .contact-form-grid small {
      font-size: 11px;
    }

    .contact-form-grid strong {
      color: #8b3b2e;
    }

    .contact-form-grid small {
      color: #647587;
    }

    body[data-theme="dark"] .contact-form-grid strong {
      color: #ffb29d;
    }

    body[data-theme="dark"] .contact-form-grid small {
      color: #9eafc0;
    }

    .contact-form input,
    .contact-form select,
    .contact-form textarea {
      width: 100%;
      min-width: 0;
      border: 1px solid #b9c8d4;
      border-radius: 8px;
      color: #172433;
      background: #f8fbfd;
      font: inherit;
    }

    .contact-form input,
    .contact-form select {
      min-height: 42px;
      padding: 8px 10px;
    }

    .contact-form textarea {
      min-height: 150px;
      padding: 10px;
      line-height: 1.55;
      resize: vertical;
    }

    body[data-theme="dark"] .contact-form input,
    body[data-theme="dark"] .contact-form select,
    body[data-theme="dark"] .contact-form textarea {
      color: #e8eef5;
      border-color: #40566d;
      background: #172333;
    }

    .contact-field-wide {
      grid-column: 1 / -1;
    }

    .contact-honeypot {
      position: fixed;
      left: -10000px;
      width: 1px;
      height: 1px;
      overflow: hidden;
    }

    .contact-verification {
      min-height: 65px;
    }

    .contact-submit-row {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 12px;
    }

    .contact-submit {
      min-height: 42px;
      padding: 8px 14px;
      font: inherit;
      font-weight: 800;
    }

    .contact-submit:disabled {
      cursor: not-allowed;
      opacity: 0.55;
    }

    .contact-status {
      flex: 1 1 240px;
      min-height: 24px;
      margin: 0;
      color: #52677a;
      font-size: 13px;
      line-height: 1.5;
    }

    .contact-status[data-status="success"] {
      color: #17643a;
      font-weight: 800;
    }

    .contact-status[data-status="error"] {
      color: #9a3025;
      font-weight: 800;
    }

    body[data-theme="dark"] .contact-status {
      color: #b8c6d5;
    }

    body[data-theme="dark"] .contact-status[data-status="success"] {
      color: #82d6a5;
    }

    body[data-theme="dark"] .contact-status[data-status="error"] {
      color: #ffad9e;
    }

    .legal-footer-links {
      display: flex;
      flex-wrap: wrap;
      gap: 10px 16px;
      margin-top: 26px;
      padding-top: 16px;
      border-top: 1px solid #d6e1ea;
      font-size: 12px;
    }

    .legal-footer-link {
      color: #627285;
      text-decoration: none;
      text-shadow: 0 1px 0 rgba(255, 255, 255, 0.45);
    }

    .legal-footer-link:hover,
    .legal-footer-link:focus {
      text-decoration: underline;
    }

    body[data-theme="dark"] .legal-footer-links {
      border-top-color: #26394d;
    }

    body[data-theme="dark"] .legal-footer-link {
      color: #aebdcb;
      text-shadow: none;
    }

    .footer-notes {
      display: grid;
      gap: 8px;
      margin-top: 26px;
      padding-top: 18px;
      border-top: 1px solid #d6e1ea;
    }

    .footer-notes h3 {
      margin: 10px 0 0;
      font-size: 15px;
    }

    .footer-notes p {
      margin: 0;
      font-size: 13px;
    }

    body[data-theme="dark"] .footer-notes {
      border-color: #26394d;
    }

    .to-top {
      position: fixed;
      right: 18px;
      bottom: 18px;
      z-index: 8;
      width: 44px;
      height: 44px;
      border-radius: 50%;
      box-shadow: 0 10px 22px rgba(17, 35, 55, 0.22);
      opacity: 0;
      pointer-events: none;
      transform: translateY(8px);
      transition: opacity 160ms ease, transform 160ms ease;
      font-size: 11px;
      font-weight: 900;
      letter-spacing: 0.04em;
    }

    .to-top.visible {
      opacity: 1;
      pointer-events: auto;
      transform: translateY(0);
    }

    .setting-row {
      display: grid;
      gap: 6px;
      font-size: 13px;
      font-weight: 700;
    }

    select {
      width: 100%;
      height: 34px;
      padding: 0 8px;
      border: 1px solid #b9c8d4;
      border-radius: 8px;
      color: #172433;
      background: #f8fbfd;
      font: inherit;
    }

    body[data-theme="dark"] select {
      color: #e8eef5;
      border-color: #40566d;
      background: #1d2b3b;
    }

    .translation-help-backdrop {
      position: fixed;
      inset: 0;
      z-index: 80;
      display: grid;
      place-items: center;
      padding: 20px;
      background: rgba(12, 22, 34, 0.36);
    }

    .translation-help-backdrop[hidden] {
      display: none;
    }

    .translation-help-dialog {
      position: relative;
      width: min(420px, 100%);
      padding: 22px;
      border: 1px solid #cbd7e2;
      border-radius: 8px;
      color: #172433;
      background: rgba(255, 255, 255, 0.98);
      box-shadow: 0 18px 42px rgba(17, 35, 55, 0.24);
    }

    body[data-theme="dark"] .translation-help-dialog {
      color: #e8eef5;
      border-color: #40566d;
      background: rgba(23, 35, 51, 0.98);
      box-shadow: 0 18px 42px rgba(0, 0, 0, 0.42);
    }

    .translation-help-dialog h2 {
      margin: 0 36px 10px 0;
      font-size: 20px;
    }

    .translation-help-message {
      margin: 0 0 18px;
      padding-left: 22px;
      line-height: 1.7;
    }

    .translation-help-message li + li {
      margin-top: 6px;
    }

    .translation-help-actions {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
    }

    .translation-help-dialog button {
      min-height: 34px;
      padding: 0 14px;
      border: 1px solid #b9c8d4;
      border-radius: 8px;
      color: #172433;
      background: #f8fbfd;
      font: inherit;
      font-weight: 800;
      cursor: pointer;
    }

    .translation-help-dialog button:hover {
      background: #e8f0f6;
    }

    .translation-help-dialog .translation-help-primary {
      color: #fff;
      border-color: #254d73;
      background: #254d73;
    }

    .translation-help-close {
      position: absolute;
      top: 12px;
      right: 12px;
      width: 34px;
      min-height: 34px;
      padding: 0;
      border-radius: 50%;
      font-size: 20px;
      line-height: 1;
    }

    body[data-theme="dark"] .translation-help-dialog button {
      color: #e8eef5;
      border-color: #40566d;
      background: #1d2b3b;
    }

    body[data-theme="dark"] .translation-help-dialog button:hover {
      background: #25384d;
    }

    body[data-theme="dark"] .translation-help-dialog .translation-help-primary {
      color: #fff;
      border-color: #2e6fa7;
      background: #2e6fa7;
    }

    .map-appearance-settings {
      display: grid;
      gap: 10px;
      margin-top: 12px;
      padding: 12px 0;
      border-top: 2px solid #c6d4e0;
      border-bottom: 2px solid #c6d4e0;
    }

    body[data-theme="dark"] .map-appearance-settings {
      border-color: #4b637b;
    }

    .background-setting {
      padding-top: 0;
      border-top: 0;
    }

    .background-setting + .background-setting {
      padding-top: 10px;
      border-top: 1px solid #d7e1ea;
    }

    body[data-theme="dark"] .background-setting + .background-setting {
      border-color: #40566d;
    }

    .background-actions {
      display: grid;
      grid-template-columns: 1fr 1fr;
      align-items: center;
      gap: 8px;
    }

    .background-setting input[type="file"] {
      position: absolute;
      width: 1px;
      height: 1px;
      overflow: hidden;
      clip: rect(0, 0, 0, 0);
      white-space: nowrap;
    }

    .background-control-button,
    .background-actions button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-height: 30px;
      padding: 0 9px;
      border: 1px solid #b9c8d4;
      border-radius: 8px;
      color: #172433;
      background: #f8fbfd;
      font: inherit;
      font-size: 12px;
      font-weight: 800;
      cursor: pointer;
    }

    .background-control-button:hover,
    .background-actions button:hover {
      background: #e8f0f6;
    }

    body[data-theme="dark"] .background-control-button,
    body[data-theme="dark"] .background-actions button {
      color: #e8eef5;
      border-color: #40566d;
      background: #1d2b3b;
    }

    body[data-theme="dark"] .background-control-button:hover,
    body[data-theme="dark"] .background-actions button:hover {
      background: #26384b;
    }

    .background-status {
      min-width: 0;
      overflow: hidden;
      color: #6b7f94;
      font-size: 12px;
      font-weight: 700;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    body[data-theme="dark"] .background-status {
      color: #9fb0c2;
    }

    .range-heading {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
    }

    .range-heading span {
      color: #12324d;
      font-size: 12px;
      font-weight: 900;
    }

    body[data-theme="dark"] .range-heading span {
      color: #e8eef5;
    }

    .background-setting input[type="range"] {
      width: 100%;
      accent-color: #254d73;
    }

    .popup-setting select {
      width: 100%;
      min-height: 36px;
      padding: 6px 10px;
      border: 1px solid #b9c9d8;
      border-radius: 8px;
      background: #fff;
      color: #1d3348;
      font: inherit;
      font-weight: 800;
    }

    body[data-theme="dark"] .popup-setting select {
      border-color: #4d637b;
      background: #17273a;
      color: #f2f6fb;
    }

    .map-color-grid {
      display: grid;
      gap: 8px;
    }

    .map-color-control {
      display: grid;
      grid-template-columns: 112px minmax(0, 1fr);
      gap: 8px;
      align-items: center;
      min-width: 0;
      padding: 7px;
      border: 1px solid #d2dde7;
      border-radius: 8px;
      background: rgba(248, 251, 253, 0.72);
    }

    body[data-theme="dark"] .map-color-control {
      border-color: #334a61;
      background: rgba(29, 43, 59, 0.72);
    }

    .map-color-value {
      display: grid;
      grid-template-columns: 34px minmax(0, 1fr);
      gap: 7px;
      align-items: center;
      min-width: 0;
    }

    .map-color-button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 6px;
      min-width: 0;
      height: 30px;
      padding: 0 8px;
      border: 1px solid #b9c8d4;
      border-radius: 8px;
      color: #172433;
      background: #f8fbfd;
      font: inherit;
      font-size: 12px;
      font-weight: 800;
      text-align: left;
      cursor: pointer;
    }

    .map-color-button:hover {
      background: #e8f0f6;
    }

    body[data-theme="dark"] .map-color-button {
      color: #e8eef5;
      border-color: #40566d;
      background: #1d2b3b;
    }

    body[data-theme="dark"] .map-color-button:hover {
      background: #26384b;
    }

    .map-color-swatch {
      width: 34px;
      height: 30px;
      border: 1px solid rgba(18, 50, 77, 0.22);
      border-radius: 8px;
      background: linear-gradient(135deg, rgba(255, 255, 255, 0.24), transparent), #86bdd9;
      box-shadow:
        inset 0 0 0 1px rgba(255, 255, 255, 0.28),
        0 1px 2px rgba(17, 35, 55, 0.12);
    }

    body[data-theme="dark"] .map-color-swatch {
      border-color: rgba(232, 238, 245, 0.22);
      box-shadow:
        inset 0 0 0 1px rgba(255, 255, 255, 0.12),
        0 1px 2px rgba(0, 0, 0, 0.24);
    }

    .map-color-picker {
      position: absolute;
      width: 1px;
      height: 1px;
      overflow: hidden;
      opacity: 0;
      pointer-events: none;
    }

    .map-color-hex {
      width: 100%;
      min-width: 0;
      height: 30px;
      padding: 0 8px;
      border: 1px solid #b9c8d4;
      border-radius: 8px;
      color: #12324d;
      background: #fff;
      font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;
      font-size: 12px;
      font-weight: 800;
      letter-spacing: 0;
      text-transform: uppercase;
    }

    body[data-theme="dark"] .map-color-hex {
      color: #e8eef5;
      border-color: #40566d;
      background: #142031;
    }

    .performance-panel-setting {
      margin-top: 12px;
      padding-top: 12px;
      border-top: 1px solid #d7e1ea;
    }

    .performance-panel-setting .theme-row {
      padding-top: 0;
    }

    body[data-theme="dark"] .performance-panel-setting {
      border-color: #40566d;
    }

    .settings-reset-row {
      margin-top: 12px;
      padding-top: 12px;
      border-top: 1px solid #d7e1ea;
    }

    body[data-theme="dark"] .settings-reset-row {
      border-color: #40566d;
    }

    .settings-reset-row button {
      width: 100%;
      min-height: 34px;
      padding: 0 10px;
      border: 1px solid #b9c8d4;
      border-radius: 8px;
      color: #172433;
      background: #f8fbfd;
      font-size: 13px;
      font-weight: 800;
    }

    .settings-reset-row button:hover {
      background: #e8f0f6;
    }

    body[data-theme="dark"] .settings-reset-row button {
      color: #e8eef5;
      border-color: #40566d;
      background: #1d2b3b;
    }

    body[data-theme="dark"] .settings-reset-row button:hover {
      background: #26384b;
    }

    @media (hover: none) and (pointer: coarse) {
      .map-layer text {
        text-rendering: geometricPrecision;
      }

      header {
        flex-wrap: nowrap;
        padding: 8px;
        gap: 6px;
      }

      h1 {
        display: none;
      }

      .site-brand {
        display: none;
      }

      .controls {
        gap: 5px;
      }

      .icon-button {
        display: none;
      }

      .support-link {
        height: 42px;
        padding: 0 9px;
        font-size: 12px;
      }

      .map-shell {
        height: calc(100dvh - 59px);
        min-height: 430px;
        scroll-margin-top: 64px;
      }

      .country-label {
        font-size: var(--country-label-size, 5px);
      }

      .city-label {
        font-size: 6px;
      }

      .info-popups {
        left: 8px;
        right: 8px;
        top: auto;
        bottom: 12px;
        flex-direction: row;
        gap: 8px;
        max-width: none;
        padding: 2px 0;
        overflow-x: auto;
        overflow-y: hidden;
        overscroll-behavior-x: contain;
        scroll-snap-type: x mandatory;
        scrollbar-width: none;
        pointer-events: auto;
      }

      .info-popups::-webkit-scrollbar {
        display: none;
      }

      .info-popups.side-left,
      .info-popups.side-right {
        left: 8px;
        right: 8px;
        flex-direction: row;
      }

      .info-card {
        flex: 0 0 calc(100vw - 32px);
        min-width: calc(100vw - 32px);
        width: calc(100vw - 32px);
        margin: 0;
        transform: none;
        max-height: min(38dvh, 260px);
        padding: 10px;
        scroll-snap-align: start;
        scroll-snap-stop: always;
        pointer-events: auto;
      }

      .info-popups.side-right .info-card {
        margin: 0;
        transform: none;
      }

      #cityCard:not([hidden]) {
        order: -1;
      }

      .info-title {
        gap: 6px;
        margin-bottom: 5px;
      }

      .info-title h2 {
        max-width: none;
        overflow: visible;
        font-size: 14px;
        text-overflow: clip;
        white-space: normal;
      }

      .info-subtitle {
        display: inline;
        margin: 0 0 0 6px;
        font-size: 11px;
      }

      .info-card dl {
        grid-template-columns: auto minmax(0, 1fr);
        gap: 3px 6px;
        font-size: 12px;
      }

      .info-card dt,
      .info-card dd {
        min-width: 0;
        overflow: visible;
        text-overflow: clip;
        white-space: normal;
      }

      .info-card dt:empty {
        display: none;
      }

      .info-card dt:empty + dd {
        grid-column: 1 / -1;
      }

      .info-card .detail-action {
        width: 100%;
        min-height: 40px;
        padding: 7px 10px;
        font-size: 13px;
      }

      .close {
        width: 36px;
        height: 36px;
        flex: 0 0 auto;
        font-size: 18px;
      }

      .city-popup-close {
        display: inline-flex;
        align-items: center;
        justify-content: center;
      }

      .city-title-row,
      .country-title-row {
        align-items: flex-start;
        gap: 6px;
      }

      #cityTitleActions,
      #countryTitleActions {
        flex-wrap: wrap;
        justify-content: flex-end;
      }

      .mode-drawer {
        top: 67px;
        right: 8px;
        grid-template-columns: auto min(280px, calc(100vw - 68px));
        transform: translateX(min(280px, calc(100vw - 68px)));
      }

      .drawer-panel {
        max-height: calc(100dvh - 78px);
      }

      .drawer-toggle {
        width: 44px;
        height: 44px;
      }

      .tab-button,
      .overlay-button,
      .saved-layer-clear,
      .settings-reset-row button {
        min-height: 44px;
        height: auto;
      }

      .detail-preview,
      .detail-grid,
      .base-city-examples,
      .footer-links {
        grid-template-columns: 1fr;
      }

      .contact-mode-switch,
      .contact-form-grid {
        grid-template-columns: 1fr;
      }

      .contact-field-wide {
        grid-column: auto;
      }

      .site-search {
        display: block;
        flex: 1 1 auto;
        min-width: 0;
        max-width: none;
      }

      .search-field {
        gap: 4px;
      }

      .site-search input {
        height: 42px;
        min-width: 0;
        padding: 0 9px;
      }

      .search-button {
        min-width: 42px;
        height: 42px;
        padding: 0 8px;
        font-size: 0;
      }

      .search-button::after {
        content: "Go";
        font-size: 12px;
      }

      .search-option {
        min-height: 48px;
        padding: 12px;
      }

      .ad-drawer {
        --ad-panel-width: min(190px, calc(100vw - 68px));
        top: 67px;
        left: 8px;
      }

      .ad-toggle {
        width: 44px;
        height: 44px;
      }

      .ad-panel {
        max-height: calc(100dvh - 78px);
      }

      .detail-heading {
        display: grid;
        gap: 10px;
      }

      .detail-section {
        scroll-margin-top: 68px;
      }
    }
