/* Base: reset, document defaults, shared utilities and accessibility helpers */

/* Design tokens */

/* Focus states for accessibility (keyboard nav only, not mouse/touch) */
a:focus-visible,
button:focus-visible {
  outline: 2px solid rgba(46, 141, 180, 0.5);
  outline-offset: 2px;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

:root {
  /* Brand */
  --color-blue: #41b8e8;
  --color-blue-light: #6bc9ef;
  --color-blue-dark: #37aede;
  --color-teal: #58c1aa;
  --color-teal-light: #76baa4;
  --color-teal-dark: #3c9f8a;
  --color-green: #329580;
  --color-purple: #6155a5;
  --color-purple-mid: #665ca1;
  --color-purple-light: #6d62ab;

  /* Neutrals (text and surfaces) */
  --color-gray-900: #383838;
  --color-gray-800: #545454;
  --color-gray-700: #6d6e6e;
  --color-gray-600: #747474;
  --color-gray-500: #8b8b8b;
  --color-gray-400: #9a9a9a;
  --color-gray-200: #dbdbdb;
  --color-gray-100: #ededed;
  --loading-circle-size: 300px;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

:focus {
  outline: 2px solid var(--color-purple);
  outline-offset: 2px;
}

map area {
  cursor: pointer;
}

* {
  margin: 0;
  padding: 0;
  -webkit-tap-highlight-color: transparent;
  box-sizing: border-box;
}

body {
  color: var(--color-gray-700);
  margin: 0;
  padding: 0;
  font-family: Montserrat, -apple-system, Roboto, Helvetica, sans-serif;
  line-height: 1.6;
}

@media screen and (max-width: 1200px) {
  .loading {
    text-align: center;
    padding: 40px;
    font-style: italic;
  }
}

@media (max-width: 480px) {
  :root {
    --loading-circle-size: 200px;
  }
}

@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
