/* spawnobject-heatmap — generated by scripts/tools-v2/build-tool-css.js from
   views/v1-backup/tools-spawnobject-heatmap.ejs. DO NOT EDIT BY HAND: npm run test:tools-page-v2
   regenerates it and fails if this file has drifted.

   The shared vocabulary (.btn-primary, .form-input, .tool-card, .badge-*,
   .toast-*, #map, headings) is NOT here — public/css/tools-page-v2.css
   declares it once for every tool page. What is left is this tool's own,
   with its colour literals resolved to theme tokens and every selector
   scoped to the tool body so nothing reaches the shared header. */

.tpv2-body #mapContainer {
  height: 600px;
  width: 100%;
  position: relative;
  border-radius: 0.5rem;
  overflow: hidden;
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}

.tpv2-body .leaflet-control-coordinates {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(255, 255, 255, 0.85);
  color: var(--sk-text);
  padding: 0.5rem 1rem;
  border-radius: 0.5rem;
  font-family: monospace;
  font-size: 0.875rem;
  z-index: 999;
  pointer-events: none;
  border: 1px solid rgba(0, 0, 0, 0.1);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  font-weight: 600;
  width: auto;
  text-align: center;
}

.tpv2-body .location-label {
  background: none;
  border: none;
  font-size: 11px;
  font-family: 'Public Sans', sans-serif;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.7px;
}

.tpv2-body .location-label div {
  color: rgba(255, 255, 255, 0.95);
  text-shadow:
  -1px -1px 2px rgba(0,0,0,0.8),
  1px -1px 2px rgba(0,0,0,0.8),
  -1px 1px 2px rgba(0,0,0,0.8),
  1px 1px 2px rgba(0,0,0,0.8);
  white-space: nowrap;
  transition: transform 0.2s ease;
  pointer-events: none;
  user-select: none;
}

.tpv2-body .map-btn.active-map {
  background-color: var(--sk-info);
  color: white;
  font-weight: 600;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.tpv2-body .spinner {
  border: 2px solid color-mix(in srgb, var(--sk-info) 30%, transparent);
  border-radius: 50%;
  border-top: 2px solid var(--sk-info);
  width: 16px;
  height: 16px;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.tpv2-body .object-type-item {
  display: flex;
  align-items: center;
  padding: 0.25rem 0;
  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

.tpv2-body .object-type-item:last-child {
  border-bottom: none;
}

.tpv2-body .object-type-color {
  width: 12px;
  height: 12px;
  border-radius: 2px;
  margin-right: 0.5rem;
  border: 1px solid rgba(0, 0, 0, 0.2);
}

.tpv2-body .leaflet-div-icon {
  background: none;
  border: none;
}

.tpv2-body .heatmap-marker {
  border-radius: 50%;
  opacity: 0.6;
}

.tpv2-body .performance-warning {
  background-color: var(--sk-warning-soft);
  border: 1px solid var(--sk-danger);
  color: var(--sk-warning-text);
  padding: 0.75rem;
  border-radius: 0.375rem;
  margin-top: 1rem;
}

.tpv2-body .marker-cluster-small {
  background-color: var(--sk-info);
  border: 2px solid var(--sk-info);
}

.tpv2-body .marker-cluster-small div {
  background-color: var(--sk-info);
  color: white;
  font-weight: bold;
  font-size: 12px;
  line-height: 36px;
  text-align: center;
  border-radius: 18px;
  width: 36px;
  height: 36px;
}

.tpv2-body .marker-cluster-medium {
  background-color: var(--sk-warning);
  border: 2px solid var(--sk-warning);
}

.tpv2-body .marker-cluster-medium div {
  background-color: var(--sk-warning);
  color: white;
  font-weight: bold;
  font-size: 12px;
  line-height: 36px;
  text-align: center;
  border-radius: 18px;
  width: 36px;
  height: 36px;
}

.tpv2-body .marker-cluster-large {
  background-color: var(--sk-danger);
  border: 2px solid var(--sk-danger);
}

.tpv2-body .marker-cluster-large div {
  background-color: var(--sk-danger);
  color: white;
  font-weight: bold;
  font-size: 12px;
  line-height: 36px;
  text-align: center;
  border-radius: 18px;
  width: 36px;
  height: 36px;
}

.tpv2-body .object-popup {
  min-width: 200px;
}

.tpv2-body .cluster-popup {
  min-width: 250px;
  max-width: 350px;
}

.tpv2-body .cluster-popup .max-h-48 {
  max-height: 12rem;
}

.tpv2-body #dragDropOverlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--sk-info-soft);
  backdrop-filter: blur(2px);
  z-index: 9999;
  display: none;
  justify-content: center;
  align-items: center;
  pointer-events: none;
}

.tpv2-body .drag-drop-content {
  background: var(--sk-surface);
  border: 3px dashed var(--sk-info);
  border-radius: 12px;
  padding: 3rem;
  text-align: center;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  max-width: 400px;
  margin: 0 1rem;
}

.tpv2-body .drag-drop-icon {
  color: var(--sk-info-text);
  width: 4rem;
  height: 4rem;
  margin: 0 auto 1rem;
  display: block;
}

.tpv2-body .file-input-row {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin-bottom: 1rem;
  padding: 0.75rem;
  border: 1px solid var(--sk-border);
  border-radius: 0.5rem;
  background-color: var(--sk-surface);
}

.tpv2-body .file-input-row.has-file {
  border-color: var(--sk-success);
  background-color: var(--sk-bg);
}

@media (min-width: 640px) {
.tpv2-body .file-input-row {
  flex-direction: row;
  align-items: center;
}
}

@media (max-width: 768px) {
.tpv2-body .container {
  padding-left: 1rem;
  padding-right: 1rem;
}

.tpv2-body #mapContainer {
  height: 400px !important;
  border-radius: 0.5rem;
}

.tpv2-body .map-btn {
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.tpv2-body input[type="range"] {
  height: 32px;
  -webkit-appearance: none;
  appearance: none;
}

.tpv2-body input[type="range"]::-webkit-slider-thumb {
  height: 24px;
  width: 24px;
  border-radius: 50%;
  background: var(--sk-info);
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}

.tpv2-body input[type="range"]::-moz-range-thumb {
  height: 24px;
  width: 24px;
  border-radius: 50%;
  background: var(--sk-info);
  cursor: pointer;
  border: none;
}

.tpv2-body .form-checkbox,
.tpv2-body .form-radio {
  min-height: 20px !important;
  min-width: 20px !important;
}

.tpv2-body input[type="file"] + label {
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.tpv2-body input[type="text"],
.tpv2-body input[type="search"] {
  min-height: 44px;
}
}

@media (max-width: 480px) {
.tpv2-body .container {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}

.tpv2-body #mapContainer {
  height: 350px !important;
}

.tpv2-body .flex.gap-2 {
  flex-direction: column;
}

.tpv2-body .flex.gap-2 > * {
  width: 100%;
}

.tpv2-body .bg-white.shadow-md.rounded-lg {
  padding: 0.75rem;
}

.tpv2-body #objectTypesList {
  max-height: 200px !important;
}
}
