/* ==========================================================================
   Seite: MECHANIK 3000 Kunden (Unternehmen/Kunden.aspx)
   Inhalt: schlanker Kopf mit «Referenzen», Titel und drei Kennzahlen, darunter
   die zoombare Schweizer Karte mit anonymen Kundenpunkten (Name + Ort erst
   per Klick vom Server, siehe Kunden.aspx.vb) und der Quellenangabe
   ========================================================================== */

/* ==========================================================================
   Farben dieser Seite (hell / dunkel): Karte, Punkte, Kopf
   ========================================================================== */
.customers-page {
  --map-land: #e6eef7;
  --map-border: #b9cde3;
  --map-dot: #2a6fb3;
  --map-dot-ring: #ffffff;
  --map-dot-active: #d52b1e;
  --map-canton: #a9bfd8;
  --map-lake: #b8d4f0;
  --map-lake-border: #9cc0e4;
  --list-muted: #5b7088;
  --head-glow: rgba(42, 111, 179, 0.12);
  --head-dots: rgba(42, 111, 179, 0.16);
}

html[data-theme="dark"] .customers-page {
  --map-land: #1c2c44;
  --map-border: #34507a;
  --map-dot: #5aa2e8;
  --map-dot-ring: #0e1728;
  --map-dot-active: #ff6b5f;
  --map-canton: #3a5578;
  --map-lake: #213e63;
  --map-lake-border: #2f5684;
  --list-muted: #b9cbe0;
  --head-glow: rgba(90, 162, 232, 0.16);
  --head-dots: rgba(90, 162, 232, 0.18);
}

/* ==========================================================================
   Kopf: Text links, drei kompakte Kennzahlen rechts in einer Zeile
   mit dezentem Punktraster als Anspielung auf die Karte
   ========================================================================== */
.customers-head {
  position: relative;
  overflow: hidden;
  margin-bottom: 1rem;
  padding: 1.25rem 1.5rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1.5rem;
  align-items: center;
  background:
    radial-gradient(circle at 100% 0%, var(--head-glow), transparent 55%),
    var(--card-bg);
}

/* Punktraster im Hintergrund des Kopfs (rechte Hälfte) */
.customers-head::before {
  content: "";
  position: absolute;
  inset: 0 0 0 50%;
  background-image: radial-gradient(var(--head-dots) 1.4px, transparent 1.6px);
  background-size: 18px 18px;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 60%);
  mask-image: linear-gradient(90deg, transparent, #000 60%);
  pointer-events: none;
}

.customers-head-text,
.customers-stats {
  position: relative;
}

/* Blaues Abzeichen «Referenzen» */
.customers-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0 0 0.45rem;
  padding: 0.22rem 0.65rem 0.22rem 0.5rem;
  border-radius: 999px;
  background: var(--map-dot);
  color: #ffffff;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

html[data-theme="dark"] .customers-eyebrow {
  color: #0e1728;
}

.customers-eyebrow .ico {
  width: 0.95rem;
  height: 0.95rem;
}

/* Titel «MECHANIK 3000 Kunden» */
.customers-head h1 {
  margin: 0 0 0.3rem;
  font-size: clamp(1.6rem, 2.6vw, 2.1rem);
  line-height: 1.15;
  letter-spacing: -0.02em;
}

/* Wort «Kunden» im Titel in Blau */
.customers-head h1 span {
  color: var(--map-dot);
}

/* Einleitungssatz unter dem Titel */
.customers-lead {
  margin: 0;
  max-width: 520px;
  font-size: 1rem;
  line-height: 1.5;
}

/* Kennzahlen «103 Kunden», «CH & FL», «30+ Jahre» */
.customers-stats {
  display: flex;
  gap: 0.6rem;
}

/* Eine Kennzahl-Kachel */
.customers-stats li {
  display: grid;
  grid-template-columns: auto auto;
  grid-template-rows: auto auto;
  column-gap: 0.6rem;
  align-items: center;
  padding: 0.55rem 0.85rem 0.55rem 0.6rem;
  border-radius: var(--radius-md);
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  box-shadow: 0 4px 14px rgba(18, 52, 90, 0.06);
}

/* Icon links über beide Zeilen, rechts Zahl über Beschriftung */
.customers-stats .icon {
  --icon-size: 34px;
  grid-row: 1 / 3;
}

/* Zahl (z. B. 103) */
.customers-stats strong {
  font-size: 1.15rem;
  line-height: 1.1;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  color: var(--dark-heading, var(--color-heading));
}

/* Beschriftung unter der Zahl */
.customers-stats span {
  font-size: 0.78rem;
  line-height: 1.2;
  color: var(--list-muted);
}

/* Tablet: Kennzahlen unter den Text */
@media (max-width: 1000px) {
  .customers-head {
    grid-template-columns: 1fr;
    gap: 1rem;
  }

  .customers-stats {
    flex-wrap: wrap;
  }

  .customers-head::before {
    inset: 0 0 40% 40%;
  }
}

/* Handy: weniger Innenabstand, Kennzahlen umbrechen */
@media (max-width: 560px) {
  .customers-head {
    padding: 1.1rem 1.1rem 1.2rem;
  }

  .customers-stats li {
    flex: 1 1 140px;
  }
}

/* ==========================================================================
   Kundenkarte: Karte über die ganze Breite (bewusst ohne Kundenliste)
   ========================================================================== */
.customers-map {
  padding: 1.1rem 1.3rem 1.3rem;
}

/* Hinweis «Klicken Sie auf einen Punkt …» über der Karte */
.customer-map-hint {
  margin: 0 0 0.6rem;
  font-size: 0.92rem;
  color: var(--list-muted);
}

/* Rahmen der Karte (Bezugspunkt für Zoom-Knöpfe und Namens-Popup) */
.customer-map {
  position: relative;
  max-width: 1000px;
  margin: 0 auto;
}

/* Zoom: Linien bleiben beim Zoomen gleich dick (vector-effect), Punkte passt das Script an.
   Ungezoomt darf man auf dem Handy über die Karte hinweg scrollen, gezoomt verschiebt ein Finger die Karte. */
.customer-map-svg {
  touch-action: pan-x pan-y;
  border-radius: var(--radius-md);
  overflow: hidden;
  user-select: none;
  -webkit-user-select: none;
}

/* Gezoomt: Karte lässt sich verschieben (Hand-Cursor) */
.customer-map.is-zoomed .customer-map-svg {
  touch-action: none;
  cursor: grab;
}

.customer-map.is-dragging .customer-map-svg {
  cursor: grabbing;
}

/* ==========================================================================
   Zoom-Knöpfe unten rechts (+ / − / ganze Karte)
   ========================================================================== */
.map-zoom {
  position: absolute;
  right: 0.4rem;
  bottom: 0.4rem;
  z-index: 3;
  display: flex;
  border-radius: 10px;
  overflow: hidden;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  box-shadow: 0 6px 16px rgba(18, 52, 90, 0.12);
}

.map-zoom-btn {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--dark-heading, var(--color-heading));
  cursor: pointer;
  transition: background-color 160ms ease, color 160ms ease;
}

.map-zoom-btn + .map-zoom-btn {
  border-left: 1px solid var(--card-border);
}

.map-zoom-btn:hover:not(:disabled),
.map-zoom-btn:focus-visible {
  background: var(--map-dot);
  color: #ffffff;
}

.map-zoom-btn:disabled {
  opacity: 0.35;
  cursor: default;
}

.map-zoom-btn .ico {
  width: 18px;
  height: 18px;
}

/* Kurzer Hinweis «Strg + Mausrad», wenn ohne Strg über der Karte gescrollt wird */
.map-wheel-hint {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 3;
  transform: translate(-50%, -50%);
  margin: 0;
  padding: 0.6rem 1rem;
  border-radius: 10px;
  background: rgba(15, 31, 51, 0.82);
  color: #ffffff;
  font-size: 0.9rem;
  font-weight: 600;
  pointer-events: none;
}

.map-wheel-hint[hidden] {
  display: none;
}

.customer-map-svg {
  display: block;
  width: 100%;
  height: auto;
}

/* ==========================================================================
   Karteninhalt: Land, Kantonsgrenzen, Seen, Kundenpunkte
   Umriss Schweiz und Liechtenstein
   ========================================================================== */
.map-land {
  fill: var(--map-land);
  stroke: var(--map-border);
  stroke-width: 1.5;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}

/* Kantonsgrenzen (gestrichelt) */
.map-cantons {
  fill: none;
  stroke: var(--map-canton);
  stroke-width: 1;
  stroke-dasharray: 4 3;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}

/* Seen */
.map-lakes {
  fill: var(--map-lake);
  stroke: var(--map-lake-border);
  stroke-width: 0.8;
  vector-effect: non-scaling-stroke;
}

/* Kundenpunkt (beim Überfahren / angeklickt: rot und grösser) */
.map-dot {
  fill: var(--map-dot);
  stroke: var(--map-dot-ring);
  stroke-width: 2.5;
  cursor: pointer;
  transform-box: fill-box;
  transform-origin: center;
  transition: transform 160ms ease, fill 160ms ease;
}

.map-dot:hover,
.map-dot.is-highlight {
  fill: var(--map-dot-active);
  transform: scale(1.6);
}

/* ==========================================================================
   Popup mit Name und Ort nach dem Klick auf einen Punkt
   ========================================================================== */
.map-tooltip {
  position: absolute;
  z-index: 2;
  transform: translate(-50%, calc(-100% - 10px));
  display: grid;
  gap: 0.1rem;
  padding: 0.45rem 0.75rem;
  border-radius: 8px;
  background: #0f1f33;
  color: #ffffff;
  font-size: 0.85rem;
  white-space: nowrap;
  pointer-events: none;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.25);
}

/* display:grid oben würde sonst das hidden-Attribut überschreiben */
.map-tooltip[hidden] {
  display: none;
}

/* Ort (PLZ + Ort) unter dem Namen */
.map-tooltip span {
  opacity: 0.8;
}

/* ==========================================================================
   Quellenangabe unter der Karte («Kartengrundlage: BFS …»)
   ========================================================================== */
.customer-map-source {
  margin: 0.6rem 0 0;
  text-align: right;
  font-size: 0.75rem;
  color: var(--list-muted);
}

/* Dark Mode: Popup heller als der dunkle Hintergrund */
html[data-theme="dark"] .map-tooltip {
  background: #26405f;
  border: 1px solid #3d5f88;
}
