.hblm2-map { margin: 1.5rem 0; }
.hblm2-map__form { display: flex; gap: .75rem; align-items: flex-end; flex-wrap: wrap; margin-bottom: 1rem; }
.hblm2-map__field { display: flex; flex-direction: column; gap: .25rem; }
.hblm2-map__field label { font-size: .85rem; font-weight: 700; }
.hblm2-map__field select { min-width: 12rem; padding: .4rem .55rem; }
.hblm2-map__field--league select { min-width: min(100%, 28rem); }
.hblm2-map__title { margin: .5rem 0; }
.hblm2-map__summary { display: flex; gap: .5rem; flex-wrap: wrap; margin: .75rem 0; }
.hblm2-map__summary span { border: 1px solid currentColor; border-radius: 999px; padding: .15rem .6rem; font-size: .9rem; opacity: .85; }
.hblm2-map__toolbar { margin: .75rem 0; }
.hblm2-map__button { border: 1px solid #bbb; background: #fff; border-radius: .35rem; padding: .45rem .75rem; cursor: pointer; }
.hblm2-map__button--small { padding: .35rem .6rem; }
.hblm2-map__layout { display: grid; grid-template-columns: minmax(240px, 30%) minmax(0, 1fr); gap: 1rem; align-items: stretch; }
.hblm2-map--fixed .hblm2-map__layout { grid-template-columns: minmax(250px, 300px) minmax(0, 1fr); }
.hblm2-map__sidebar { border: 1px solid #ddd; border-radius: .5rem; background: #fff; overflow: hidden; max-height: 70vh; display: flex; flex-direction: column; }
.hblm2-map--fixed .hblm2-map__sidebar { max-height: none; }
.hblm2-map__sidebar-title { margin: 0; padding: .75rem 1rem; border-bottom: 1px solid #e5e5e5; font-size: 1rem; background: #f7f7f7; }
.hblm2-map__team-list { list-style: none; margin: 0; padding: .25rem; overflow: auto; }
.hblm2-map--fixed .hblm2-map__team-list { overflow: visible; }
.hblm2-map__team-item { margin: 0; padding: 0; }
.hblm2-map__team-link { width: 100%; display: flex; gap: .6rem; align-items: center; text-align: left; border: 0; border-radius: .4rem; background: transparent; padding: .5rem .6rem; color: inherit; cursor: pointer; }
.hblm2-map__team-link:hover, .hblm2-map__team-link:focus, .hblm2-map__team-link.is-active { background: #eef5fb; outline: none; }
.hblm2-map__team-link--disabled { cursor: default; opacity: .55; flex-wrap: wrap; }
.hblm2-map__team-link--disabled:hover { background: transparent; }
.hblm2-map__team-logo { flex: 0 0 auto; width: 28px; height: 28px; object-fit: contain; border-radius: .2rem; background: #fff; }
.hblm2-map__team-logo--empty { display: inline-block; background: #e9eef3; }
.hblm2-map__team-number { flex: 0 0 auto; min-width: 1.85rem; height: 1.85rem; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; background: #1d6fb8; color: #fff; font-size: .82rem; font-weight: 700; line-height: 1; }
.hblm2-map__team-name { min-width: 0; font-size: .95rem; line-height: 1.2; font-weight: 600; }
.hblm2-map__team-note { margin-left: calc(28px + 1.85rem + 1.2rem); flex-basis: 100%; font-size: .75rem; opacity: .7; }
.hblm2-map__map-column { min-width: 0; }
.hblm2-map__map-title { margin: 0 0 .5rem; font-size: 1.05rem; font-weight: 700; }
.hblm2-map__canvas { min-height: 580px; height: 70vh; border: 1px solid #ddd; border-radius: .5rem; overflow: hidden; background: #f7f7f7; }
.hblm2-map--fixed .hblm2-map__canvas { min-height: 520px; height: clamp(520px, 58vh, 680px); }
.hblm2-map__marker-icon { background: transparent; border: 0; }
.hblm2-map__marker-icon span { width: 32px; height: 32px; border-radius: 999px 999px 999px 0; transform: rotate(-45deg); display: flex; align-items: center; justify-content: center; background: #1d6fb8; color: #fff; border: 2px solid #fff; box-shadow: 0 2px 8px rgba(0,0,0,.35); }
.hblm2-map__marker-icon b { transform: rotate(45deg); display: block; font-weight: 700; font-size: 14px; line-height: 1; }

.hblm2-map__circle-marker { filter: drop-shadow(0 2px 5px rgba(0,0,0,.35)); }
.hblm2-map__number-tooltip {
  background: transparent;
  border: 0;
  box-shadow: none;
  color: #fff;
  font-weight: 700;
  font-size: 13px;
  line-height: 1;
  text-shadow: 0 1px 2px rgba(0,0,0,.35);
  pointer-events: none;
}
.hblm2-map__number-tooltip::before { display: none; }

.hblm2-map__details { margin-top: 1rem; }
.hblm2-map__details ul { margin-top: .5rem; }
.hblm2-map__leaflet-missing { padding: 1rem; border: 1px solid #ddd; border-radius: .5rem; background: #fff8e5; }
.hblm2-map__notice { padding: .75rem 1rem; border: 1px solid #ddd; border-radius: .5rem; background: #fff8e5; margin-bottom: 1rem; }
@media (max-width: 900px) {
  .hblm2-map__layout { grid-template-columns: 1fr; }
  .hblm2-map__sidebar { max-height: none; }
  .hblm2-map__canvas { height: 60vh; }
}

.hblm2-map__number-label-icon {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  pointer-events: none !important;
  z-index: 700 !important;
}
.hblm2-map__number-label-icon span {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 28px !important;
  height: 28px !important;
  color: #fff !important;
  font-weight: 700 !important;
  font-size: 13px !important;
  line-height: 1 !important;
  text-align: center !important;
  text-shadow: 0 1px 2px rgba(0,0,0,.45) !important;
  pointer-events: none !important;
}


.hblm2-map .leaflet-marker-icon {
  max-width: none !important;
}
.hblm2-map .leaflet-marker-icon.is-hblm2-highlighted {
  filter: drop-shadow(0 0 7px rgba(29, 111, 184, .85));
  transform-origin: bottom center;
}
.hblm2-map__number-tooltip--pin {
  min-width: 1.45rem;
  height: 1.45rem;
  padding: 0 .25rem;
  border-radius: 999px;
  background: #1d6fb8 !important;
  color: #fff !important;
  border: 2px solid #fff !important;
  box-shadow: 0 1px 4px rgba(0,0,0,.35) !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* v0.6.19: robuste nummerierte Marker auch bei mehreren Karten auf einer Seite */
.hblm2-map .hblm2-map__marker-icon {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}
.hblm2-map .hblm2-map__marker-icon span {
  box-sizing: border-box !important;
}
.hblm2-map .hblm2-map__marker-icon.is-hblm2-highlighted span,
.hblm2-map .leaflet-marker-icon.is-hblm2-highlighted span {
  transform: scale(1.18);
}

/* v0.6.23: PNG-Kartengrafik-Export */
.hblm2-map__toolbar { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }
.hblm2-map__toolbar--fixed { margin-top: 0; }
.hblm2-map__button { text-decoration: none; display: inline-flex; align-items: center; justify-content: center; line-height: 1.2; }
.hblm2-map__button--primary { border-color: #1d6fb8; background: #1d6fb8; color: #fff; }
.hblm2-map__button--primary:hover, .hblm2-map__button--primary:focus { background: #155b97; color: #fff; }


/* v0.6.41: GeoJSON-basierte Online-Flächenkarte */
.hblm2-map--mode-geojson .hblm2-map__canvas {
  background: linear-gradient(145deg, #f7f8f4 0%, #eef3ea 100%);
}
.hblm2-map--mode-geojson .leaflet-container {
  background: transparent;
}
.hblm2-map__area-label {
  border: 0 !important;
  background: rgba(255,255,255,.58) !important;
  box-shadow: none !important;
  color: #3f6538 !important;
  font-size: .72rem !important;
  font-weight: 700 !important;
  line-height: 1.1 !important;
  padding: .1rem .25rem !important;
  text-align: center;
  white-space: normal !important;
  max-width: 9rem;
}
.hblm2-map__area-label::before { display: none !important; }

/* v0.6.42: reduzierte Beschriftung der GeoJSON-Flächenkarte */
.hblm2-map--mode-geojson .hblm2-map__area-label {
    display: none;
}
.hblm2-map--mode-geojson .hblm2-map__city-label {
    background: rgba(255,255,255,.82);
    border: 0;
    box-shadow: none;
    color: #475569;
    font-size: .72rem;
    font-weight: 500;
    padding: 0 2px;
}
.hblm2-map--mode-geojson .hblm2-map__city-label::before {
    display: none;
}
.hblm2-map--mode-geojson .hblm2-map__city-label--major {
    color: #1f2937;
    font-weight: 700;
}


/* Eigenständiger GeoJSON-Renderer ohne Leaflet-Abhängigkeit */
.hblm2-map__geojson-svg{display:block;width:100%;height:100%;min-height:520px;background:#f7f9f6}
.hblm2-map__geojson-area{stroke:none}.hblm2-map__geojson-county-boundary{stroke:#6f8f67;stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.hblm2-map__geojson-area--0{fill:#edf4e8}.hblm2-map__geojson-area--1{fill:#e7f0e1}.hblm2-map__geojson-area--2{fill:#f2f6ec}.hblm2-map__geojson-area--3{fill:#eaf3e5}.hblm2-map__geojson-area--4{fill:#f5f7ef}
.hblm2-map__svg-city circle{fill:#64748b}.hblm2-map__svg-city text{font:12px Arial,sans-serif;fill:#56606c;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}.hblm2-map__svg-city.is-major text{font-weight:700;fill:#334155}
.hblm2-map__svg-marker{cursor:pointer;transition:filter .15s ease,transform .15s ease;transform-box:fill-box;transform-origin:center}.hblm2-map__svg-marker circle{fill:#1d6fb8;stroke:#fff;stroke-width:3;filter:drop-shadow(0 2px 3px rgba(0,0,0,.28))}.hblm2-map__svg-marker text{font:700 14px Arial,sans-serif;fill:#fff;text-anchor:middle;pointer-events:none}.hblm2-map__svg-marker:hover,.hblm2-map__svg-marker:focus,.hblm2-map__svg-marker.is-highlighted{transform:scale(1.18);filter:brightness(1.08)}

.hblm2-map__debug { margin-top: .75rem; }
.hblm2-map__debug summary { cursor: pointer; font-weight: 600; }
.hblm2-map__debug dl { display: grid; grid-template-columns: minmax(150px, 240px) 1fr; gap: .25rem .75rem; margin: .75rem 0 0; }
.hblm2-map__debug dt { font-weight: 600; }
.hblm2-map__debug dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.hblm2-map__debug code { white-space: normal; }

/* v0.6.46: GeoJSON-Standortpunkte, Verbindungslinien und kollisionsfreie Logos */
.hblm2-map__svg-connector{stroke:#64748b;stroke-width:1.25;stroke-linecap:round;opacity:.78;vector-effect:non-scaling-stroke}
.hblm2-map__svg-location{fill:#0f4f86;stroke:#fff;stroke-width:2.2;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3));vector-effect:non-scaling-stroke}
.hblm2-map__svg-logo-plate{fill:#fff;stroke:#d7dee7;stroke-width:2;filter:drop-shadow(0 2px 4px rgba(0,0,0,.25));vector-effect:non-scaling-stroke}
.hblm2-map__svg-marker.has-logo image{pointer-events:none}
.hblm2-map__svg-number-badge{fill:#1d6fb8;stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}
.hblm2-map__svg-number-text{font:700 10px Arial,sans-serif;fill:#fff;text-anchor:middle;pointer-events:none}
.hblm2-map__svg-marker.has-logo>circle:not(.hblm2-map__svg-logo-plate):not(.hblm2-map__svg-number-badge){fill:initial}
.hblm2-map__svg-marker .hblm2-map__svg-logo-plate{fill:#fff;stroke:#d7dee7;stroke-width:2}
.hblm2-map__svg-marker .hblm2-map__svg-number-badge{fill:#1d6fb8;stroke:#fff;stroke-width:2}
.hblm2-map__svg-marker .hblm2-map__svg-number-text{font:700 10px Arial,sans-serif;fill:#fff;text-anchor:middle}


/* v0.6.49: reduzierte Oberfläche, echte Standortnummern und mobile Optimierung */
.hblm2-map__layout { grid-template-columns: minmax(190px, 23%) minmax(0, 1fr); }
.hblm2-map--fixed .hblm2-map__layout { grid-template-columns: minmax(190px, 240px) minmax(0, 1fr); }
.hblm2-map__sidebar { max-height: 70vh; }
.hblm2-map__team-list { padding: .35rem; }
.hblm2-map__team-link { gap: .45rem; padding: .42rem .45rem; }
.hblm2-map__team-logo { width: 25px; height: 25px; }
.hblm2-map__team-number { min-width: 1.65rem; height: 1.65rem; font-size: .76rem; }
.hblm2-map__team-name { font-size: .9rem; }
.hblm2-map__toolbar:empty { display: none; }

/* Kreisflächen werden als County-Gruppe gefiltert. Dadurch entsteht nur der
   äußere Kreisumriss; Gemeinde-/Ortsgrenzen innerhalb des Kreises entfallen. */
.hblm2-map__geojson-county { isolation: isolate; }
.hblm2-map__geojson-area { stroke: none !important; }
.hblm2-map__geojson-county-boundary { display: none !important; }

/* Pfeil vom Logo zum tatsächlichen Standort */
.hblm2-map__svg-connector {
  stroke: #64748b;
  stroke-width: 1.15;
  stroke-linecap: round;
  opacity: .82;
  vector-effect: non-scaling-stroke;
}
.hblm2-map__svg-location {
  fill: #1d6fb8;
  stroke: #fff;
  stroke-width: 2.4;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,.32));
  vector-effect: non-scaling-stroke;
}
.hblm2-map__svg-location-number {
  font: 700 9px Arial, sans-serif;
  fill: #fff;
  text-anchor: middle;
  pointer-events: none;
}
.hblm2-map__svg-logo-fallback { fill: #fff; stroke: #aeb9c5; stroke-width: 2; }
.hblm2-map__svg-logo-fallback-text { font: 700 18px Arial,sans-serif; fill: #1d6fb8; text-anchor: middle; }
.hblm2-map__svg-number-badge,
.hblm2-map__svg-number-text { display: none !important; }

@media (max-width: 900px) {
  .hblm2-map { margin: 1rem 0; }
  .hblm2-map__form { align-items: stretch; }
  .hblm2-map__field, .hblm2-map__field select, .hblm2-map__field--league select { width: 100%; min-width: 0; }
  .hblm2-map__layout { display: flex; flex-direction: column; gap: .75rem; }
  .hblm2-map__map-column { order: 1; }
  .hblm2-map__sidebar { order: 2; max-height: none; overflow: visible; }
  .hblm2-map__canvas,
  .hblm2-map--fixed .hblm2-map__canvas { min-height: 420px; height: min(68vh, 620px); border-radius: .35rem; }
  .hblm2-map__geojson-svg { min-height: 420px; }
  .hblm2-map__team-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: visible; gap: .15rem; }
  .hblm2-map__team-link { height: 100%; }
}
@media (max-width: 560px) {
  .hblm2-map__summary { display: none; }
  .hblm2-map__toolbar { width: 100%; }
  .hblm2-map__button { width: 100%; }
  .hblm2-map__canvas,
  .hblm2-map--fixed .hblm2-map__canvas { min-height: 340px; height: 56vh; }
  .hblm2-map__geojson-svg { min-height: 340px; }
  .hblm2-map__team-list { grid-template-columns: 1fr; }
  .hblm2-map__team-logo { width: 24px; height: 24px; }
  .hblm2-map__team-name { font-size: .88rem; }
}


/* v0.7.0: gemeinsame Marker-Engine für Leaflet und GeoJSON */
.hblm2-map__leaflet-location-wrap,
.hblm2-map__leaflet-logo-wrap,
.hblm2-map__leaflet-arrow-wrap { background: transparent !important; border: 0 !important; }
.hblm2-map__leaflet-location {
  display: flex; align-items: center; justify-content: center;
  box-sizing: border-box; border-radius: 999px;
  background: #1d6fb8; color: #fff; border: 2.5px solid #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,.38);
  font: 700 10px/1 Arial, sans-serif; white-space: nowrap;
}
.hblm2-map__leaflet-logo {
  display: flex; align-items: center; justify-content: center;
  width: 48px; height: 48px; box-sizing: border-box;
  border-radius: 50%; background: #fff; border: 2px solid #d7dee7;
  box-shadow: 0 2px 7px rgba(0,0,0,.28);
  overflow: hidden; transition: transform .15s ease, box-shadow .15s ease;
}
.hblm2-map__leaflet-logo img { width: 40px; height: 40px; object-fit: contain; display: block; }
.hblm2-map__leaflet-logo-fallback { color: #1d6fb8; font: 700 19px/1 Arial,sans-serif; }
.hblm2-map__leaflet-logo-wrap.is-hblm2-highlighted .hblm2-map__leaflet-logo {
  transform: scale(1.17); box-shadow: 0 4px 13px rgba(0,0,0,.38);
}
.hblm2-map__leaflet-arrow {
  display: block; width: 0; height: 0;
  border-top: 4px solid transparent; border-bottom: 4px solid transparent;
  border-left: 8px solid #64748b; transform-origin: 50% 50%;
  filter: drop-shadow(0 1px 1px rgba(255,255,255,.8));
}
.hblm2-map__leaflet-arrow-wrap.is-hblm2-highlighted .hblm2-map__leaflet-arrow { border-left-color: #1d6fb8; }
.hblm2-map__leaflet-connector { transition: stroke-width .15s ease, stroke .15s ease, opacity .15s ease; }
.hblm2-map__leaflet-connector.is-highlighted { stroke: #1d6fb8 !important; stroke-width: 2.4 !important; opacity: 1 !important; }


/* v0.7.1: reduzierte Leaflet-Basiskarte und verknüpfte GeoJSON-Tooltips */
.hblm2-map--mode-leaflet .leaflet-tile-pane { filter: saturate(.45) contrast(.94) brightness(1.035); }
.hblm2-map--mode-leaflet .hblm2-map__city-label {
  background: rgba(255,255,255,.82); border: 0; box-shadow: none;
  color: #52606d; font-size: .71rem; font-weight: 500; padding: 0 2px;
}
.hblm2-map--mode-leaflet .hblm2-map__city-label::before { display:none; }
.hblm2-map--mode-leaflet .hblm2-map__city-label--major { color:#263442; font-weight:700; }
.hblm2-map__geojson-tooltip {
  position:absolute; z-index:40; transform:translate(-50%, calc(-100% - 34px));
  max-width:230px; padding:.42rem .58rem; border-radius:.35rem;
  background:rgba(255,255,255,.97); border:1px solid #d7dee7;
  box-shadow:0 3px 12px rgba(15,23,42,.24); color:#1f2937;
  font-size:.82rem; line-height:1.3; text-align:left; pointer-events:none; white-space:nowrap;
}
.hblm2-map__geojson-tooltip::after {
  content:''; position:absolute; left:50%; top:100%; margin-left:-6px;
  border:6px solid transparent; border-top-color:rgba(255,255,255,.97);
}
.hblm2-map__geojson-tooltip[hidden] { display:none !important; }
.hblm2-map__geojson-tooltip strong { font-weight:700; }
.hblm2-map__geojson-tooltip span { color:#64748b; }


.hblm2-map__export-group {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    align-items: center;
}

.hblm2-map__button--export {
    text-decoration: none;
    background: #fff;
    color: #185a8d;
    border: 1px solid #8fb2cc;
}

.hblm2-map__button--export:hover,
.hblm2-map__button--export:focus {
    background: #eef6fb;
    color: #10496f;
}
