/*
 * Pubquiz „Wo liegt?“: Karte (frontend/js/geo/map.js), Leinwand (A1, C1–C6) und Handy (Fadenkreuz, „Hier!“).
 * Die Karte ist eine dunkle Kartentisch-Fläche mit hellem Land; sie trägt ihre eigenen Farben und passt so zu jedem Bühnen-Theme.
 * Größen der Leinwand in --pq-k (1 % der Höhe einer 16:9-Leinwand), sonst in px.
 */
.geo-map {
  --geo-sea: #0b1830;
  --geo-dot: rgb(255 255 255 / 0.07);
  --geo-neighbor: #172c4f;
  --geo-neighbor-edge: #2a4370;
  --geo-land: #f5ebcf;
  --geo-land-edge: #c79f55;
  --geo-gem: rgb(122 94 48 / 0.28);
  --geo-kreis: rgb(122 86 36 / 0.62);
  --geo-land-border: rgb(122 86 36 / 0.5);
  --geo-river: #3cb6ff;
  --geo-label: #8fa5cc;
  --geo-gold: #ffc83d;
  --geo-k: var(--pq-k, 10px);
  position: absolute;
  inset: 0;
  overflow: hidden;
  /* clip statt nur hidden: die gezoomte Fläche ist größer als die Karte, und ein „hidden“-Kasten lässt sich trotzdem scrollen
     (Fokus, scrollIntoView, iOS-Textauswahl) – dann läge alles unter dem Finger um den Scrollversatz daneben. */
  overflow: clip;
  background: var(--geo-neighbor);
  color: #fff;
  user-select: none;
  -webkit-user-select: none;
}
.geo-map__surface {
  position: absolute;
  left: 0;
  top: 0;
  transform-origin: 0 0;
}
/* Während Pinch, Schieben und Gleiten: nur die fertige Ebene verschieben/skalieren; danach (Klasse weg) zeichnet der Browser scharf neu. */
.geo-map--moving .geo-map__surface { will-change: transform; }
.geo-map__base,
.geo-map__lines {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}
.geo-map__lines {
  overflow: hidden;
}
.geo-map__overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
/* Vignette über die ganze Fläche (nicht nur die viewBox: sonst sähe man deren Rand). */
.geo-map::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(115% 95% at 50% 45%, transparent 55%, rgb(3 8 20 / 0.55) 100%);
  z-index: 1;
}
.geo-map > :not(.geo-map__surface) { z-index: 2; }
.geo-sea { fill: transparent; }
.geo-dot { fill: var(--geo-dot); }
.geo-neighbor { fill: var(--geo-neighbor); }
.geo-neighbor-edges path { fill: none; stroke: var(--geo-neighbor-edge); stroke-width: 1.4px; stroke-dasharray: 2 4; }
.geo-land-shadow { fill: #000; opacity: 0.5; }
.geo-land { fill: var(--geo-land); }
.geo-land-edge { fill: none; stroke: var(--geo-land-edge); stroke-width: 2.2px; stroke-linejoin: round; }
.geo-gemeinden path { fill: none; stroke: var(--geo-gem); stroke-width: 0.8px; }
.geo-laender path { fill: none; stroke: var(--geo-land-border); stroke-width: 0.9px; }
.geo-map--no-regions .geo-laender,
.geo-map--no-regions .geo-kreise,
.geo-map--no-regions .geo-gemeinden { display: none; }
.geo-label--water { font-style: italic; font-weight: 600; letter-spacing: 0.3em; fill: #5f89c4; }
.geo-kreise path { fill: none; stroke: var(--geo-kreis); stroke-width: 1.6px; stroke-dasharray: 5 3; }
.geo-river { fill: none; stroke: var(--geo-river); stroke-width: 3px; stroke-linecap: round; stroke-linejoin: round; }
.geo-river-glow { fill: none; stroke: rgb(60 182 255 / 0.32); stroke-width: 9px; stroke-linecap: round; stroke-linejoin: round; }
.geo-label {
  fill: var(--geo-label);
  font: 800 19px/1 Inter, system-ui, sans-serif;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  paint-order: stroke;
  stroke: rgb(11 24 48 / 0.75);
  stroke-width: 4px;
}
.geo-vignette { pointer-events: none; }
.geo-map__attr {
  position: absolute;
  right: 0.7em;
  bottom: 0.45em;
  margin: 0;
  font-size: max(10px, calc(1.15 * var(--geo-k)));
  line-height: 1.2;
  color: rgb(255 255 255 / 0.62);
  text-shadow: 0 1px 2px rgb(0 0 0 / 0.6);
  pointer-events: none;
  text-align: right;
  max-width: calc(100% - 1.4em);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.geo-map--phone .geo-map__attr,
.geo-map--mini .geo-map__attr {
  font-size: 9.5px;
}

/* Flächen: Ziel (Auflösung) und Joker (Handy). */
.geo-target { fill: rgb(255 200 61 / 0.5); stroke: #f59f00; stroke-width: 2.6px; }
.geo-target.is-fading { animation: geo-fade 900ms ease-out both; }
.geo-joker,
.geo-joker rect { fill: rgb(80 220 255 / 0.28); stroke: #3cdcff; stroke-width: 2px; }
.geo-joker { animation: geo-joker 1.8s ease-in-out infinite alternate; }

/* Pins: Spitze am Punkt, gleich groß bei jedem Zoom. */
.geo-pin {
  --geo-pin: #ff5a5f;
  position: absolute;
  width: calc(2.5 * var(--geo-k));
  aspect-ratio: 32 / 44;
  transform: translate(-50%, -100%) scale(var(--geo-inv, 1));
  transform-origin: 50% 100%;
  filter: drop-shadow(0 calc(0.25 * var(--geo-k)) calc(0.25 * var(--geo-k)) rgb(0 0 0 / 0.45));
}
.geo-pin__svg { display: block; width: 100%; height: 100%; overflow: visible; }
.geo-pin__body { fill: var(--geo-pin); stroke: #fff; stroke-width: 2.4; }
.geo-pin__dot { fill: #fff; }
.geo-pin.is-drop .geo-pin__svg { animation: geo-drop 560ms cubic-bezier(0.25, 1.35, 0.45, 1) both; animation-delay: var(--geo-delay, 0ms); }
.geo-pin--swarm { --geo-pin: var(--geo-gold); width: calc(3.6 * var(--geo-k)); z-index: 3; }
.geo-pin--swarm .geo-pin__body { stroke: #5c3d00; stroke-width: 2; }
.geo-pin--swarm .geo-pin__dot { fill: #5c3d00; }
.geo-pin--top { width: calc(3 * var(--geo-k)); z-index: 4; }
.geo-pin--r1 .geo-pin__body { stroke: var(--geo-gold); stroke-width: 3.4; }
.geo-pin--mine { --geo-pin: var(--pq-team, #ff3d6e); width: 30px; z-index: 5; }
.geo-pin--mine .geo-pin__body { stroke-width: 2.8; }
.geo-map--mini .geo-pin { width: 20px; }

/* Fahne mit Wellenring. */
.geo-flag {
  position: absolute;
  width: calc(4.2 * var(--geo-k));
  aspect-ratio: 40 / 56;
  transform: translate(-6%, -100%) scale(var(--geo-inv, 1));
  transform-origin: 6% 100%;
  z-index: 6;
  filter: drop-shadow(0 calc(0.3 * var(--geo-k)) calc(0.3 * var(--geo-k)) rgb(0 0 0 / 0.5));
}
.geo-map--mini .geo-flag { width: 26px; }
.geo-flag__svg { display: block; width: 100%; height: 100%; overflow: visible; }
.geo-flag__pole { fill: #2b2b33; }
.geo-flag__cloth { fill: #e8173a; stroke: #fff; stroke-width: 1.4; transform-origin: 6px 14px; animation: geo-wave 2.4s ease-in-out infinite; }
.geo-flag__check { fill: rgb(255 255 255 / 0.22); transform-origin: 6px 14px; animation: geo-wave 2.4s ease-in-out infinite; }
.geo-flag.is-drop .geo-flag__svg { animation: geo-flagdrop 700ms cubic-bezier(0.2, 1.4, 0.4, 1) both; }
.geo-ripple {
  position: absolute;
  width: calc(16 * var(--geo-k));
  aspect-ratio: 1;
  border: calc(0.45 * var(--geo-k)) solid #ffd54a;
  border-radius: 50%;
  transform: translate(-50%, -50%) scale(0);
  opacity: 0;
  animation: geo-ripple 1500ms ease-out both;
  animation-delay: calc(var(--i, 0) * 320ms + 380ms);
}

/* Ringe 5/10/15 km. */
.geo-ring { fill: none; stroke: rgb(16 28 54 / 0.7); stroke-width: 2px; stroke-dasharray: 7 6; }
.geo-rings.is-drawing .geo-ring { transform-box: fill-box; transform-origin: center; animation: geo-ring 800ms cubic-bezier(0.2, 0.9, 0.3, 1) both; animation-delay: calc(var(--i, 0) * 160ms + 300ms); }
.geo-ring-label {
  position: absolute;
  transform: translate(-50%, -50%);
  padding: 0.08em 0.5em;
  border-radius: 999px;
  background: rgb(16 28 54 / 0.85);
  color: #fff;
  font-size: calc(1.5 * var(--geo-k));
  font-weight: 800;
  white-space: nowrap;
}
.geo-ring-label.is-pop { animation: geo-pop 400ms ease-out both; animation-delay: calc(var(--i, 0) * 160ms + 600ms); }

/* Wärmewolke der vielen Tipps. */
.geo-heat circle { fill: #ff7a3d; opacity: 0.16; filter: blur(calc(0.9 * var(--geo-k))); }
.geo-heat.is-fading { animation: geo-fade 1200ms ease-out 900ms both; }

/* Linien der besten drei. */
.geo-line__under { stroke: rgb(12 22 44 / 0.85); stroke-width: 7; stroke-linecap: round; }
.geo-line__over { stroke: var(--geo-gold); stroke-width: 3.4; stroke-linecap: round; }
.geo-line--r2 .geo-line__over { stroke: #e5edf7; }
.geo-line--r3 .geo-line__over { stroke: #f0a868; }
.geo-line--mine .geo-line__over { stroke: #ff3d6e; }
.geo-line.is-drawing line { stroke-dasharray: 1; stroke-dashoffset: 1; animation: geo-draw 700ms ease-out both; animation-delay: calc(var(--i, 0) * 260ms); }

/* Beschriftungen auf der Karte. */
.geo-tag {
  position: absolute;
  --geo-tx: -50%;
  --geo-ty: calc(-100% - 4.4 * var(--geo-k));
  transform: translate(var(--geo-tx), var(--geo-ty));
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  padding: 0.2em 0.65em;
  border-radius: 999px;
  background: rgb(12 22 44 / 0.92);
  color: #fff;
  font-size: calc(2 * var(--geo-k));
  font-weight: 800;
  line-height: 1.15;
  white-space: nowrap;
  box-shadow: 0 calc(0.3 * var(--geo-k)) calc(0.8 * var(--geo-k)) rgb(0 0 0 / 0.35);
  z-index: 7;
}
.geo-tag.is-pop { animation: geo-pop 420ms cubic-bezier(0.2, 1.5, 0.4, 1) both; animation-delay: calc(var(--i, 0) * 260ms + 300ms); }
.geo-tag--s { --geo-ty: calc(1.2 * var(--geo-k)); }
.geo-tag--e { --geo-tx: calc(2 * var(--geo-k)); --geo-ty: calc(-50% - 2 * var(--geo-k)); }
.geo-tag--w { --geo-tx: calc(-100% - 2 * var(--geo-k)); --geo-ty: calc(-50% - 2 * var(--geo-k)); }
.geo-tag__rank {
  display: inline-grid;
  place-items: center;
  min-width: 1.35em;
  height: 1.35em;
  border-radius: 50%;
  background: var(--geo-gold);
  color: #3a2700;
  font-size: 0.85em;
  box-shadow: 0 0 0 0.12em var(--geo-team, transparent);
}
.geo-tag--r2 .geo-tag__rank { background: #e5edf7; color: #1b2840; }
.geo-tag--r3 .geo-tag__rank { background: #f0a868; color: #3c1d00; }
.geo-tag--swarm.is-gone { animation: geo-gone 500ms ease forwards; }
.geo-tag--swarm { --geo-ty: calc(-100% - 5.4 * var(--geo-k)); background: var(--geo-gold); color: #3a2700; font-size: calc(1.6 * var(--geo-k)); text-transform: uppercase; letter-spacing: 0.08em; }
.geo-tag--target {
  --geo-tx: calc(3.4 * var(--geo-k));
  --geo-ty: calc(-100% - 2.4 * var(--geo-k));
  flex-direction: column;
  align-items: flex-start;
  gap: 0;
  border-radius: calc(1 * var(--geo-k));
  background: #fff;
  color: #14161f;
  border-left: calc(0.6 * var(--geo-k)) solid #e8173a;
  font-size: calc(2.6 * var(--geo-k));
}
.geo-tag--target small { font-size: 0.55em; font-weight: 700; opacity: 0.7; }
.geo-far {
  position: absolute;
  width: calc(6.4 * var(--geo-k));
  aspect-ratio: 1;
  transform: translate(-50%, -62%);
  border: calc(0.35 * var(--geo-k)) dashed #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 calc(0.35 * var(--geo-k)) rgb(255 80 120 / 0.55);
  z-index: 5;
}
.geo-far.is-pop { animation: geo-pop 420ms ease-out both, geo-pulse 1.4s ease-in-out 420ms 3; }

/* Fadenkreuz (Handy): fest in der Mitte der Karte, Nadelspitze genau im Mittelpunkt; die Karte bewegt sich darunter. */
.geo-cross {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 0;
  height: 0;
  z-index: 6;
  pointer-events: none;
}
.geo-cross__h,
.geo-cross__v {
  position: absolute;
  background: rgb(255 255 255 / 0.9);
  box-shadow: 0 0 0 1px rgb(0 0 0 / 0.45);
}
.geo-cross__h { left: -22px; top: -0.75px; width: 44px; height: 1.5px; }
.geo-cross__v { left: -0.75px; top: -22px; width: 1.5px; height: 44px; }
.geo-cross::after {
  content: "";
  position: absolute;
  left: -3px;
  top: -3px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--pq-team, #ff3d6e);
  box-shadow: 0 0 0 1.5px #fff;
}
.geo-cross .geo-pin__svg {
  --geo-pin: var(--pq-team, #ff3d6e);
  position: absolute;
  /* Spitze (viewBox 16,43 von 32×44) genau im Kreuzungspunkt: Breite 30 px → Höhe 41,25 px, Spitze 0,94 px über der Unterkante */
  left: -15px;
  top: calc(-41.25px * 43 / 44);
  width: 30px;
  height: 41.25px;
  max-width: none;
  max-height: none;
  opacity: 0.55;
  filter: drop-shadow(0 3px 3px rgb(0 0 0 / 0.45));
}
.geo-cross.is-set .geo-pin__svg { opacity: 1; }
.geo-cross.is-sent .geo-pin__body { stroke: #fff; stroke-width: 3.4; }
.geo-pin--ghost { opacity: 0.45; z-index: 4; }

/* ------------------------- Leinwand ------------------------- */
.pq-stage--geo > .pq-geo { order: 2; }
.pq-stage--geo > .pq-floor { order: 3; }
.pq-geo {
  flex: 1 1 0;
  min-height: calc(30 * var(--pq-k, 10px));
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0;
}
/* Gegen `.pq-stage … > * { flex: 0 0 auto }`: die Karte nimmt die freie Höhe. */
.quiz-elimination.pq-stage.pq-stage--geo:has(> .quiz-elimination-header) > .pq-geo {
  flex: 1 1 0;
  min-height: calc(24 * var(--pq-k));
}
.pq-geo__card {
  position: relative;
  flex: 0 0 auto;
  min-height: 0;
  border-radius: calc(2.2 * var(--pq-k, 10px));
  overflow: hidden;
  background: #0b1830;
  box-shadow: 0 calc(1 * var(--pq-k, 10px)) calc(3 * var(--pq-k, 10px)) rgb(0 0 0 / 0.28), inset 0 0 0 1px rgb(255 255 255 / 0.08);
}
.pq-geo__map { position: absolute; inset: 0; }
.pq-geo__card.is-floating-in .geo-map__surface > * { animation: geo-float 1000ms cubic-bezier(0.2, 0.8, 0.2, 1) both; }
.pq-geo__badge {
  position: absolute;
  bottom: calc(1.6 * var(--pq-k, 10px));
  left: calc(1.6 * var(--pq-k, 10px));
  margin: 0;
  padding: 0.25em 0.8em;
  border-radius: 999px;
  background: rgb(255 255 255 / 0.12);
  border: 1px solid rgb(255 255 255 / 0.28);
  color: #eef3ff;
  font-size: calc(2.4 * var(--pq-k, 10px));
  font-weight: 800;
  letter-spacing: 0.04em;
  backdrop-filter: blur(6px);
  z-index: 8;
}
.pq-geo__pins {
  position: absolute;
  top: calc(1.4 * var(--pq-k, 10px));
  right: calc(1.4 * var(--pq-k, 10px));
  margin: 0;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-end;
  max-width: 50%;
  gap: 0.2em 0.45em;
  padding: 0.25em 0.8em 0.3em;
  border-radius: calc(1.4 * var(--pq-k, 10px));
  background: #0a1530;
  border: 1px solid rgb(255 255 255 / 0.16);
  box-shadow: 0 4px 14px rgb(0 0 0 / 0.35);
  color: #eef3ff;
  font-size: calc(2.4 * var(--pq-k, 10px));
  font-weight: 700;
  z-index: 8;
  text-shadow: 0 2px 6px rgb(0 0 0 / 0.5);
}
.pq-geo__pins-n { font-size: 2.2em; line-height: 1; color: #ffc83d; font-variant-numeric: tabular-nums; }
.pq-geo__pins.is-bump .pq-geo__pins-n { animation: geo-bump 420ms ease-out; }
.pq-geo__caption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(2.2 * var(--pq-k, 10px));
  width: max-content;
  max-width: 88%;
  margin-inline: auto;
  padding: 0.3em 1em 0.35em;
  border-radius: 999px;
  background: rgb(8 16 34 / 0.86);
  border: 1px solid rgb(255 255 255 / 0.18);
  color: #fff;
  font-size: calc(3 * var(--pq-k, 10px));
  font-weight: 800;
  line-height: 1.2;
  text-align: center;
  box-shadow: 0 calc(0.6 * var(--pq-k, 10px)) calc(2 * var(--pq-k, 10px)) rgb(0 0 0 / 0.4);
  backdrop-filter: blur(8px);
  z-index: 8;
  animation: geo-caption 380ms ease-out both;
}
.pq-geo__caption[hidden] { display: none; }
.pq-geo__caption[data-tone="swarm"] { border-color: var(--geo-gold, #ffc83d); }
.pq-geo__caption[data-tone="top"] { background: linear-gradient(90deg, #a86b00, #e0a100); color: #1d1300; }
.pq-geo__caption[data-tone="quip"] { background: #ff3d6e; border-color: #fff; }
.pq-geo__caption[data-tone="target"] { background: #fff; color: #14161f; }

/* Frage: kompakte Kopfzeile, die Karte bekommt den Platz. */
.pq-stage--geo > .quiz-elimination-question { font-size: calc(5 * var(--pq-k) * var(--pq-qfit, 1)); }
/* Frage: Die Karte steht unter der Kopfzeile über die ganze Höhe; Frage und Zeitbalken stehen rechts über Zähler und Stufe (Seitenspalte
   der Karte). Spalten: Rand | Karte (--geo-card-w aus geoScene.js) | Abstand | Seitenspalte | Rand, ohne Spaltenabstand – so steht die
   Gruppe mittig wie Karte und Seitenspalte in .pq-geo, und die Frage genau über der Seitenspalte. */
.quiz-elimination.pq-stage.pq-stage--geo:not(.pq-stage--ended):has(> .pq-geo) {
  --geo-side-w: min(calc(60 * var(--pq-k)), 36vw);
  --geo-gap: calc(2.4 * var(--pq-k));
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--geo-card-w, 0px) var(--geo-gap) var(--geo-side-w) minmax(0, 1fr);
  grid-template-rows: auto auto auto minmax(0, 1fr);
  column-gap: 0;
  row-gap: calc(1.6 * var(--pq-k));
}
.pq-stage--geo:not(.pq-stage--ended):has(> .pq-geo) > * { grid-column: 4; }
.pq-stage--geo:not(.pq-stage--ended):has(> .pq-geo) > .quiz-elimination-header { grid-column: 1 / -1; grid-row: 1; }
/* Lange Wörter (Hochsauerlandkreis) brechen nicht mitten im Wort um; stageFit.js verkleinert die Schrift, bis sie passen. */
.pq-stage--geo:not(.pq-stage--ended):has(> .pq-geo) > .quiz-elimination-question { grid-row: 2; text-align: left; overflow-wrap: normal; }
.pq-stage--geo:not(.pq-stage--ended):has(> .pq-geo) > .pq-stage-timebar { grid-row: 3; }
.pq-stage--geo:not(.pq-stage--ended):has(> .pq-geo) > .pq-geo { grid-column: 1 / -1; grid-row: 2 / -1; min-height: 0; gap: var(--geo-gap); }
.pq-stage--geo:not(.pq-stage--ended) > .pq-geo > .pq-geo__side { width: var(--geo-side-w); }
.pq-stage--geo:not(.pq-stage--ended) > .pq-geo > .pq-geo__side > .pq-geo__pins { margin-bottom: 0; }

/* Auflösung: links die Karte, rechts Punktevergabe und Rangliste bzw. Teambalken (ohne Podest und Sprechblasen). */
.quiz-elimination.pq-stage.pq-stage--geo.pq-stage--ended:has(> .pq-geo) {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
  grid-template-rows: auto auto minmax(0, 1fr);
  column-gap: calc(2.4 * var(--pq-k));
  align-items: stretch;
}
.pq-stage--geo.pq-stage--ended:has(> .pq-geo) > * { grid-column: 1 / -1; }
/* Die Karte reicht bis unter die Kopfzeile; die Frage steht rechts über Punktevergabe und Rangliste. */
.pq-stage--geo.pq-stage--ended:has(> .pq-geo) > .quiz-elimination-question { grid-column: 2; grid-row: 2; font-size: calc(4 * var(--pq-k)); text-align: left; }
.pq-stage--geo.pq-stage--ended:has(> .pq-geo) > .pq-geo { grid-column: 1; grid-row: 2 / 4; min-height: 0; }
.pq-stage--geo.pq-stage--ended:has(> .pq-geo) > .pq-floor {
  grid-column: 2;
  grid-row: 3;
  height: auto;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  padding-top: 0;
  border-top: 0;
}
.pq-stage--geo.pq-stage--ended > .pq-floor > .pq-tippers { display: none; }
.pq-stage--geo.pq-stage--ended > .pq-floor .pq-ranking,
.pq-stage--geo.pq-stage--ended > .pq-floor .pq-team-bars { font-size: calc(2.6 * min(1vh, 0.5625vw)); }
.pq-stage--geo.pq-stage--ended > .pq-floor > .pq-floor__side { justify-content: flex-start; }
.pq-stage--geo.pq-stage--ended > .pq-tips { display: none; }

/* Moderation: die Karte ruhig und kleiner. */
.quiz-elimination:not(.pq-stage) > .pq-geo { min-height: 260px; max-height: 420px; aspect-ratio: var(--geo-ratio, 817.9 / 633); width: min(100%, 540px); margin: 0.75rem auto; }
.quiz-elimination:not(.pq-stage) > .pq-geo .pq-geo__card { --pq-k: 6px; }

/* ------------------------- Handy ------------------------- */
.pq-geo-phone {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin-top: 0.4rem;
}
/* Einblendung oben links auf der Karte (Stufe, Anleitung): halbtransparent, weg nach dem ersten Schieben/Tippen. */
.pq-geo-phone__intro {
  position: absolute;
  left: 10px;
  top: 10px;
  max-width: calc(100% - 76px);
  z-index: 7;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  pointer-events: none;
  transition: opacity 240ms ease-out;
}
.pq-geo-phone__intro.is-gone { opacity: 0; }
.pq-geo-phone__level {
  margin: 0;
  padding: 0.15em 0.7em;
  border-radius: 999px;
  background: rgb(255 255 255 / 0.88);
  color: #14161f;
  font-size: 0.8rem;
  font-weight: 700;
}
.pq-geo-phone__hint {
  margin: 0;
  padding: 0.35em 0.65em;
  border-radius: 10px;
  background: rgb(8 18 38 / 0.74);
  color: #fff;
  font-size: 0.84rem;
  font-weight: 600;
  line-height: 1.3;
}
@media (prefers-reduced-motion: reduce) {
  .pq-geo-phone__intro { transition: none; }
}
.pq-geo-phone__map {
  position: relative;
  width: 100%;
  height: min(58vh, 100vw);
  min-height: 260px;
  border-radius: 18px;
  overflow: hidden;
  background: #0b1830;
  touch-action: none;
  overscroll-behavior: contain;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent;
  box-shadow: 0 6px 18px rgb(0 0 0 / 0.22);
}
.pq-geo-phone__map .geo-map { touch-action: none; }
.pq-geo-phone__map:focus-visible { outline: 3px solid var(--accent, #4338ca); outline-offset: 3px; }
.pq-geo-phone__tools {
  position: absolute;
  top: 10px;
  right: 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  z-index: 10;
}
.pq-geo-phone__zoom {
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 12px;
  background: rgb(255 255 255 / 0.92);
  color: #14161f;
  font-size: 1.5rem;
  font-weight: 800;
  line-height: 1;
  box-shadow: 0 2px 8px rgb(0 0 0 / 0.3);
  cursor: pointer;
}
/* Unten auf der Karte (über dem Quellenvermerk): Joker-Hinweis (bleibt) und Stand des Tipps. */
.pq-geo-phone__notes {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 22px;
  z-index: 7;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  pointer-events: none;
}
.pq-geo-phone__joker {
  align-self: stretch;
  margin: 0;
  padding: 0.4em 0.7em;
  border-radius: 12px;
  background: rgb(226 248 255 / 0.92);
  color: #04364a;
  font-weight: 700;
  font-size: 0.85rem;
  pointer-events: none;
}
.pq-geo-phone__joker[hidden] { display: none; }
.pq-geo-phone__status {
  margin: 0;
  padding: 0.35em 0.75em;
  border-radius: 12px;
  background: rgb(255 255 255 / 0.92);
  color: #14161f;
  text-align: center;
  font-size: 0.86rem;
  font-weight: 600;
  line-height: 1.3;
  box-shadow: 0 2px 8px rgb(0 0 0 / 0.25);
}
.pq-geo-phone__status[hidden] { display: none; }
.pq-geo-phone__status.is-confirmed { font-weight: 700; color: #137a3a; }
.pq-geo-phone__status.is-failed,
.pq-geo-phone__status.is-late,
.pq-geo-phone__status.is-invalid { color: #b42318; font-weight: 700; }
.pq-geo-phone__send {
  min-height: 54px;
  font-size: 1.35rem;
  font-weight: 900;
  letter-spacing: 0.02em;
  border-radius: 16px;
}
.pq-geo-phone__send:disabled { opacity: 0.5; }
.pq-geo-mini {
  position: relative;
  width: 100%;
  aspect-ratio: var(--geo-ratio, 817.9 / 633);
  margin: 0.75rem 0 0.25rem;
  border-radius: 16px;
  overflow: hidden;
  background: #0b1830;
}
.geo-map--mini .geo-label { font-size: 24px; }

/* ------------------------- Bewegung ------------------------- */
@keyframes geo-drop {
  0% { transform: translateY(-260%); opacity: 0; }
  55% { opacity: 1; }
  72% { transform: translateY(5%); }
  86% { transform: translateY(-6%); }
  100% { transform: translateY(0); opacity: 1; }
}
@keyframes geo-flagdrop {
  0% { transform: translateY(-180%) rotate(-12deg); opacity: 0; }
  60% { transform: translateY(4%) rotate(4deg); opacity: 1; }
  100% { transform: translateY(0) rotate(0); }
}
@keyframes geo-wave {
  0%, 100% { transform: skewY(0deg) scaleX(1); }
  50% { transform: skewY(-4deg) scaleX(0.94); }
}
@keyframes geo-ripple {
  0% { transform: translate(-50%, -50%) scale(0.05); opacity: 0.95; }
  100% { transform: translate(-50%, -50%) scale(1); opacity: 0; }
}
@keyframes geo-ring {
  from { transform: scale(0.2); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}
@keyframes geo-draw {
  to { stroke-dashoffset: 0; }
}
@keyframes geo-pop {
  0% { opacity: 0; scale: 0.6; }
  100% { opacity: 1; scale: 1; }
}
@keyframes geo-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes geo-pulse {
  0%, 100% { scale: 1; }
  50% { scale: 1.18; }
}
@keyframes geo-bump {
  0% { scale: 1; }
  40% { scale: 1.3; }
  100% { scale: 1; }
}
@keyframes geo-caption {
  from { opacity: 0; translate: 0 30%; }
  to { opacity: 1; translate: 0 0; }
}
@keyframes geo-float {
  from { opacity: 0; transform: translateY(6%) scale(0.94); }
  to { opacity: 1; transform: none; }
}
@keyframes geo-joker {
  from { opacity: 0.55; }
  to { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .geo-map *,
  .pq-geo *,
  .geo-flag__cloth,
  .geo-flag__check { animation: none !important; }
  .geo-line line { stroke-dashoffset: 0 !important; }
  .geo-tag--swarm.is-gone { opacity: 0; }
}

/* ------------------------- Leinwand: Zahl der Pins, beste drei, Platzmarken ------------------------- */
.pq-geo__card > .qe-answered.pq-geo__pins { position: absolute; }
.pq-geo__card > .qe-answered .qe-all-answered,
.pq-geo__card > .qe-answered [class*="all"] { font-size: 0.75em; }
.pq-geo__card > .qe-answered.is-pulse .pq-geo__pins-n { animation: geo-bump 420ms ease-out; }
.geo-medal {
  display: inline-grid;
  place-items: center;
  width: 1.45em;
  height: 1.45em;
  border-radius: 50%;
  background: #ffc83d;
  color: #3a2700;
  font-weight: 900;
}
.geo-medal--r2 { background: #e5edf7; color: #1b2840; }
.geo-medal--r3 { background: #f0a868; color: #3c1d00; }

/* Leinwand: die besten drei über der Rangliste (Seitenspalte), im Look der Karte. */
.pq-geo-top {
  margin: 0 0 calc(2 * var(--pq-k, 10px));
  padding: calc(1.2 * var(--pq-k, 10px)) calc(1.4 * var(--pq-k, 10px));
  border-radius: calc(1.6 * var(--pq-k, 10px));
  background: linear-gradient(160deg, #13284a, #0b1830);
  color: #fff;
  font-size: calc(2.6 * var(--pq-k, 10px));
  box-shadow: 0 calc(0.8 * var(--pq-k, 10px)) calc(2.4 * var(--pq-k, 10px)) rgb(0 0 0 / 0.25);
}
.pq-geo-top.is-hidden { visibility: hidden; }
.pq-geo-top.is-pop { animation: geo-slide 460ms cubic-bezier(0.2, 1.2, 0.4, 1) both; }
.pq-geo-top.is-pop .pq-geo-top__row { animation: geo-slide 460ms cubic-bezier(0.2, 1.2, 0.4, 1) both; animation-delay: calc(var(--i, 0) * 240ms + 200ms); }
.pq-geo-top__title { margin: 0 0 0.45em; font-size: 0.8em; font-weight: 900; letter-spacing: 0.1em; text-transform: uppercase; color: #ffd76a; }
.pq-geo-top__list { margin: 0; padding: 0; list-style: none; display: grid; gap: 0.5em; }
.pq-geo-top__row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  column-gap: 0.55em;
  padding-left: 0.45em;
  border-left: 0.2em solid var(--geo-team, transparent);
}
.pq-geo-top__rank {
  display: inline-grid;
  place-items: center;
  width: 1.5em;
  height: 1.5em;
  border-radius: 50%;
  background: #ffc83d;
  color: #3a2700;
  font-weight: 900;
}
.pq-geo-top__row--r2 .pq-geo-top__rank { background: #e5edf7; color: #1b2840; }
.pq-geo-top__row--r3 .pq-geo-top__rank { background: #f0a868; color: #3c1d00; }
.pq-geo-top__name { font-weight: 800; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pq-geo-top__name.is-anon { font-weight: 600; font-style: italic; opacity: 0.75; }
.pq-geo-top__km { font-weight: 900; font-variant-numeric: tabular-nums; color: #ffd76a; }
.pq-geo-top__hit { grid-column: 2 / -1; font-size: 0.62em; font-weight: 900; letter-spacing: 0.1em; text-transform: uppercase; color: #7ef0a8; }
.geo-medal {
  position: absolute;
  font-size: calc(1.5 * var(--geo-k));
  transform: translate(-50%, calc(-100% - 3.6 * var(--geo-k))) scale(var(--geo-inv, 1));
  box-shadow: 0 0 0 calc(0.25 * var(--geo-k)) #0c162c;
  z-index: 8;
}
.geo-medal.is-pop { animation: geo-pop 420ms cubic-bezier(0.2, 1.5, 0.4, 1) both; animation-delay: calc(var(--i, 0) * 260ms + 350ms); }
@keyframes geo-gone {
  to { opacity: 0; }
}
@keyframes geo-slide {
  from { opacity: 0; translate: 30% 0; }
  to { opacity: 1; translate: 0 0; }
}


/* ------------------------- Normale Sessions (Fragetyp „Wo liegt?“) ------------------------- */
.stage-frame.stage-geo {
  --pq-k: min(1vh, 0.5625vw);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: calc(1.2 * var(--pq-k));
  min-height: calc(72 * var(--pq-k));
}
.stage-geo__question {
  flex: 0 0 auto;
  margin: 0;
  text-align: center;
  font-size: calc(5 * var(--pq-k));
  line-height: 1.15;
}
.stage-frame.stage-geo > .pq-geo {
  flex: 0 0 auto;
  width: 100%;
  height: calc(62 * var(--pq-k));
  min-height: calc(30 * var(--pq-k));
}
/* Leinwand: Die QR-Karte bekommt eine rechte Spalte (wie bei Multiple Choice) statt eines Bands über die ganze Breite; die Karte nimmt
   die ganze Resthöhe unter der Frage (bis zur Steuerleiste). */
.stage-frame.stage-frame--regular.stage-geo:not(.stage-geo--moderation) {
  padding-inline-end: max(var(--stage-pad-x), var(--stage-chrome-right, 0px));
  padding-bottom: max(1vh, 12px);
}
.stage-frame.stage-geo:not(.stage-geo--moderation) > .pq-geo { flex: 1 1 0; height: auto; }
.stage-geo__note {
  flex: 0 0 auto;
  margin: 0;
  text-align: center;
  font-size: calc(2.4 * var(--pq-k));
  opacity: 0.75;
}
/* Moderation (Presenter-Ansicht): die Karte ruhig und kleiner. */
.stage-geo--moderation {
  --pq-k: 6px;
}
.stage-geo--moderation .stage-geo__question {
  font-size: 1.15rem;
  text-align: left;
}
.stage-geo--moderation > .pq-geo {
  flex: none;
  min-height: 260px;
  max-height: 420px;
  aspect-ratio: var(--geo-ratio, 817.9 / 633);
  width: min(100%, 540px);
  margin: 0.75rem auto;
}
/* Handy nach der Freigabe: eigenes Ergebnis über der kleinen Karte. */
.geo-join-result { display: grid; gap: 0.4rem; }
.geo-join-result__line { margin: 0; font-weight: 700; font-size: 1.05rem; text-align: center; }
.geo-join-result__swarm { margin: 0; text-align: center; font-size: 0.9rem; }

/* Europa: ganz Europa auf einer Karte (viewBox rund 1.068 Einheiten breit): dünne Staatsgrenzen und Landrand, kleine Schrift.
 * Schriftgrößen gelten in Karteneinheiten (die Karte skaliert mit; auf dem Handy wächst sie beim Zoomen mit). Die Anker der Namen sitzen
 * im Paket (Bau: scripts/geo/build-pack-eu.js, Halbbreite je Zeichen) und halten den ganzen Namen im Kartenrahmen. */
.geo-map[data-geo-map="europa"] .geo-laender path { stroke-width: 0.6px; }
.geo-map[data-geo-map="europa"] .geo-land-edge { stroke-width: 1.2px; }
.geo-map[data-geo-map="europa"] .geo-label { font-size: 19px; letter-spacing: 0.02em; stroke-width: 3.5px; }
.geo-map[data-geo-map="europa"] .geo-label--water { font-size: 17px; letter-spacing: 0.08em; stroke-width: 3px; }
.geo-map--mini[data-geo-map="europa"] .geo-label { font-size: 20px; }
.geo-map--mini[data-geo-map="europa"] .geo-label--water { font-size: 18px; }

/* Pakete mit großer Karte (Deutschland): Flüsse und Grenzen dünner, Beschriftungen kleiner */
.geo-map[data-geo-map="deutschland"] .geo-river { stroke-width: 1.5px; }
.geo-map[data-geo-map="deutschland"] .geo-river-glow { stroke-width: 4px; }
.geo-map[data-geo-map="deutschland"] .geo-land-edge { stroke-width: 1.6px; }
.geo-map[data-geo-map="deutschland"] .geo-label { font-size: 14px; letter-spacing: 0.16em; }
.geo-map--mini[data-geo-map="deutschland"] .geo-label { font-size: 17px; }

/* Handy: Die Karte füllt die Breite; ihre Höhe setzt das Skript (Platz bis über „Hier!“), auch bei hochkanten Paketen. */

/* Hochkantes Paket auf der Leinwand: Seitenspalte neben der Karte (Zähler oben, Stufe und Zeile unten), nichts liegt auf dem Land. */
.pq-geo--tall { gap: calc(2.4 * var(--pq-k, 10px)); }
.pq-geo__side {
  flex: 0 0 auto;
  width: calc(30 * var(--pq-k, 10px));
  align-self: stretch;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: calc(1.4 * var(--pq-k, 10px));
  min-width: 0;
}
.pq-geo__side > * { position: static; margin: 0; max-width: 100%; width: auto; align-self: flex-start; }
/* Querformat: Streifen unter der Karte (Zähler, Stufe, Spruch), nichts liegt auf dem Land. */
.pq-geo--wide { flex-direction: column; gap: calc(1.2 * var(--pq-k, 10px)); }
.pq-geo__strip {
  flex: 0 0 auto;
  width: 100%;
  min-height: calc(5.4 * var(--pq-k, 10px));
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: calc(0.8 * var(--pq-k, 10px)) calc(1.6 * var(--pq-k, 10px));
}
.pq-geo__strip > * { position: static; margin: 0; max-width: 92%; width: max-content; }
.pq-geo__strip > .pq-geo__pins { font-size: calc(2.2 * var(--pq-k, 10px)); max-width: 50%; }
.pq-geo__strip > .pq-geo__badge { background: #0b1830; border-color: transparent; }
.quiz-elimination:not(.pq-stage) > .pq-geo .pq-geo__strip { --pq-k: 6px; }
.pq-geo__side > .pq-geo__pins { margin-bottom: auto; max-width: 100%; justify-content: flex-start; }
.pq-geo__side > .pq-geo__caption { border-radius: calc(2 * var(--pq-k, 10px)); font-size: calc(2.6 * var(--pq-k, 10px)); text-align: left; align-self: stretch; }
.geo-tag__pop { display: block; font-weight: 600; opacity: 0.85; }
.pq-geo__side > .pq-geo__badge { background: #0b1830; border-color: transparent; color: #eef3ff; font-size: calc(2.4 * var(--pq-k, 10px)); }
.pq-geo__side > .pq-geo__pins { font-size: calc(2.2 * var(--pq-k, 10px)); }
.pq-geo__side > .pq-geo__pins * { white-space: normal; }
.geo-tag--target.geo-tag--w { --geo-tx: calc(-100% - 3.4 * var(--geo-k)); align-items: flex-end; text-align: right; }

/* Landespakete (Rheinland-Pfalz und Baden-Württemberg hochkant, Nordrhein-Westfalen quer): Flüsse und Ränder dünner, Beschriftungen kleiner; Gemeindegrenzen zarter */
.geo-map[data-geo-map="rheinland-pfalz"] .geo-river,
.geo-map[data-geo-map="baden-wuerttemberg"] .geo-river,
.geo-map[data-geo-map="nordrhein-westfalen"] .geo-river { stroke-width: 1.8px; }
.geo-map[data-geo-map="rheinland-pfalz"] .geo-river-glow,
.geo-map[data-geo-map="baden-wuerttemberg"] .geo-river-glow,
.geo-map[data-geo-map="nordrhein-westfalen"] .geo-river-glow { stroke-width: 5px; }
.geo-map[data-geo-map="rheinland-pfalz"] .geo-land-edge,
.geo-map[data-geo-map="baden-wuerttemberg"] .geo-land-edge,
.geo-map[data-geo-map="nordrhein-westfalen"] .geo-land-edge { stroke-width: 1.8px; }
.geo-map[data-geo-map="rheinland-pfalz"] .geo-gemeinden path,
.geo-map[data-geo-map="baden-wuerttemberg"] .geo-gemeinden path,
.geo-map[data-geo-map="nordrhein-westfalen"] .geo-gemeinden path { stroke-width: 0.6px; }
.geo-map[data-geo-map="rheinland-pfalz"] .geo-label { font-size: 14px; letter-spacing: 0.1em; stroke-width: 3px; }
.geo-map[data-geo-map="baden-wuerttemberg"] .geo-label { font-size: 17px; letter-spacing: 0.1em; stroke-width: 3px; }
.geo-map[data-geo-map="nordrhein-westfalen"] .geo-label { font-size: 19px; letter-spacing: 0.1em; stroke-width: 3.5px; }
.geo-map--mini[data-geo-map="rheinland-pfalz"] .geo-label { font-size: 18px; }
.geo-map--mini[data-geo-map="baden-wuerttemberg"] .geo-label { font-size: 22px; }
.geo-map--mini[data-geo-map="nordrhein-westfalen"] .geo-label { font-size: 26px; }
.geo-map[data-geo-map="baden-wuerttemberg"] .geo-label--water { font-size: 10px; letter-spacing: 0.12em; stroke-width: 2px; }
.geo-map--mini[data-geo-map="baden-wuerttemberg"] .geo-label--water { font-size: 13px; }
/* Bayern (hochkant, rund 1,5-mal so weit wie Baden-Württemberg): dieselben Strichstärken und Schriftgrößen, auf die größere Karte umgerechnet */
.geo-map[data-geo-map="bayern"] .geo-river { stroke-width: 2.6px; }
.geo-map[data-geo-map="bayern"] .geo-river-glow { stroke-width: 7px; }
.geo-map[data-geo-map="bayern"] .geo-land-edge { stroke-width: 2.6px; }
.geo-map[data-geo-map="bayern"] .geo-gemeinden path { stroke-width: 0.9px; }
.geo-map[data-geo-map="bayern"] .geo-label { font-size: 30px; letter-spacing: 0.1em; stroke-width: 4px; }
.geo-map--mini[data-geo-map="bayern"] .geo-label { font-size: 38px; }
.geo-map[data-geo-map="bayern"] .geo-label--water { font-size: 18px; letter-spacing: 0.12em; stroke-width: 3px; }
.geo-map--mini[data-geo-map="bayern"] .geo-label--water { font-size: 23px; }
/* Niedersachsen, Bremen, Hamburg: ähnlich groß wie Bayern, gleiche Strichstärken. */
.geo-map[data-geo-map="niedersachsen"] .geo-river { stroke-width: 2.6px; }
.geo-map[data-geo-map="niedersachsen"] .geo-river-glow { stroke-width: 7px; }
.geo-map[data-geo-map="niedersachsen"] .geo-land-edge { stroke-width: 2.6px; }
.geo-map[data-geo-map="niedersachsen"] .geo-gemeinden path { stroke-width: 0.9px; }
.geo-map[data-geo-map="niedersachsen"] .geo-label { font-size: 30px; letter-spacing: 0.1em; stroke-width: 4px; }
.geo-map--mini[data-geo-map="niedersachsen"] .geo-label { font-size: 38px; }
.geo-map[data-geo-map="niedersachsen"] .geo-label--water { font-size: 18px; letter-spacing: 0.12em; stroke-width: 3px; }
.geo-map--mini[data-geo-map="niedersachsen"] .geo-label--water { font-size: 23px; }
/* Hessen (hochkant, ähnlich groß wie Baden-Württemberg): dieselben Strichstärken und Schriftgrößen */
.geo-map[data-geo-map="hessen"] .geo-river { stroke-width: 1.8px; }
.geo-map[data-geo-map="hessen"] .geo-river-glow { stroke-width: 5px; }
.geo-map[data-geo-map="hessen"] .geo-land-edge { stroke-width: 1.8px; }
.geo-map[data-geo-map="hessen"] .geo-gemeinden path { stroke-width: 0.6px; }
.geo-map[data-geo-map="hessen"] .geo-label { font-size: 17px; letter-spacing: 0.1em; stroke-width: 3px; }
.geo-map--mini[data-geo-map="hessen"] .geo-label { font-size: 22px; }
.geo-map[data-geo-map="hessen"] .geo-label--water { font-size: 10px; letter-spacing: 0.12em; stroke-width: 2px; }
.geo-map--mini[data-geo-map="hessen"] .geo-label--water { font-size: 13px; }
/* Thüringen (über 600 Gemeinden, ähnlich groß wie Hessen): gleiche Strichstärken und Schriftgrößen wie Hessen */
.geo-map[data-geo-map="thueringen"] .geo-river { stroke-width: 1.8px; }
.geo-map[data-geo-map="thueringen"] .geo-river-glow { stroke-width: 5px; }
.geo-map[data-geo-map="thueringen"] .geo-land-edge { stroke-width: 1.8px; }
.geo-map[data-geo-map="thueringen"] .geo-gemeinden path { stroke-width: 0.6px; }
.geo-map[data-geo-map="thueringen"] .geo-label { font-size: 17px; letter-spacing: 0.1em; stroke-width: 3px; }
.geo-map--mini[data-geo-map="thueringen"] .geo-label { font-size: 22px; }
.geo-map[data-geo-map="thueringen"] .geo-label--water { font-size: 10px; letter-spacing: 0.12em; stroke-width: 2px; }
.geo-map--mini[data-geo-map="thueringen"] .geo-label--water { font-size: 13px; }
/* Sachsen-Anhalt (218 Gemeinden, ähnlich groß wie Thüringen): gleiche Strichstärken und Schriftgrößen wie Thüringen */
.geo-map[data-geo-map="sachsen-anhalt"] .geo-river { stroke-width: 1.8px; }
.geo-map[data-geo-map="sachsen-anhalt"] .geo-river-glow { stroke-width: 5px; }
.geo-map[data-geo-map="sachsen-anhalt"] .geo-land-edge { stroke-width: 1.8px; }
.geo-map[data-geo-map="sachsen-anhalt"] .geo-gemeinden path { stroke-width: 0.6px; }
.geo-map[data-geo-map="sachsen-anhalt"] .geo-label { font-size: 17px; letter-spacing: 0.1em; stroke-width: 3px; }
.geo-map--mini[data-geo-map="sachsen-anhalt"] .geo-label { font-size: 22px; }
.geo-map[data-geo-map="sachsen-anhalt"] .geo-label--water { font-size: 10px; letter-spacing: 0.12em; stroke-width: 2px; }
.geo-map--mini[data-geo-map="sachsen-anhalt"] .geo-label--water { font-size: 13px; }
/* Sachsen (418 Gemeinden, ähnlich groß wie Sachsen-Anhalt und Thüringen): gleiche Strichstärken und Schriftgrößen wie Thüringen */
.geo-map[data-geo-map="sachsen"] .geo-river { stroke-width: 1.8px; }
.geo-map[data-geo-map="sachsen"] .geo-river-glow { stroke-width: 5px; }
.geo-map[data-geo-map="sachsen"] .geo-land-edge { stroke-width: 1.8px; }
.geo-map[data-geo-map="sachsen"] .geo-gemeinden path { stroke-width: 0.6px; }
.geo-map[data-geo-map="sachsen"] .geo-label { font-size: 17px; letter-spacing: 0.1em; stroke-width: 3px; }
.geo-map--mini[data-geo-map="sachsen"] .geo-label { font-size: 22px; }
.geo-map[data-geo-map="sachsen"] .geo-label--water { font-size: 10px; letter-spacing: 0.12em; stroke-width: 2px; }
.geo-map--mini[data-geo-map="sachsen"] .geo-label--water { font-size: 13px; }
/* Schleswig-Holstein (kleiner als Hessen, über 1.100 Gemeinden): gleiche Strichstärken und Schriftgrößen wie Hessen */
.geo-map[data-geo-map="schleswig-holstein"] .geo-river { stroke-width: 1.8px; }
.geo-map[data-geo-map="schleswig-holstein"] .geo-river-glow { stroke-width: 5px; }
.geo-map[data-geo-map="schleswig-holstein"] .geo-land-edge { stroke-width: 1.8px; }
.geo-map[data-geo-map="schleswig-holstein"] .geo-gemeinden path { stroke-width: 0.6px; }
.geo-map[data-geo-map="schleswig-holstein"] .geo-label { font-size: 17px; letter-spacing: 0.1em; stroke-width: 3px; }
.geo-map--mini[data-geo-map="schleswig-holstein"] .geo-label { font-size: 22px; }
.geo-map[data-geo-map="schleswig-holstein"] .geo-label--water { font-size: 10px; letter-spacing: 0.12em; stroke-width: 2px; }
.geo-map--mini[data-geo-map="schleswig-holstein"] .geo-label--water { font-size: 13px; }
/* Mecklenburg-Vorpommern (724 Gemeinden, Küste und Inseln): gleiche Strichstärken und Schriftgrößen wie Schleswig-Holstein */
.geo-map[data-geo-map="mecklenburg-vorpommern"] .geo-river { stroke-width: 1.8px; }
.geo-map[data-geo-map="mecklenburg-vorpommern"] .geo-river-glow { stroke-width: 5px; }
.geo-map[data-geo-map="mecklenburg-vorpommern"] .geo-land-edge { stroke-width: 1.8px; }
.geo-map[data-geo-map="mecklenburg-vorpommern"] .geo-gemeinden path { stroke-width: 0.6px; }
.geo-map[data-geo-map="mecklenburg-vorpommern"] .geo-label { font-size: 17px; letter-spacing: 0.1em; stroke-width: 3px; }
.geo-map--mini[data-geo-map="mecklenburg-vorpommern"] .geo-label { font-size: 22px; }
.geo-map[data-geo-map="mecklenburg-vorpommern"] .geo-label--water { font-size: 10px; letter-spacing: 0.12em; stroke-width: 2px; }
.geo-map--mini[data-geo-map="mecklenburg-vorpommern"] .geo-label--water { font-size: 13px; }
/* Berlin und Brandenburg (über 400 Gemeinden, viele Seen): gleiche Strichstärken und Schriftgrößen wie Schleswig-Holstein */
.geo-map[data-geo-map="berlin-brandenburg"] .geo-river { stroke-width: 1.8px; }
.geo-map[data-geo-map="berlin-brandenburg"] .geo-river-glow { stroke-width: 5px; }
.geo-map[data-geo-map="berlin-brandenburg"] .geo-land-edge { stroke-width: 1.8px; }
.geo-map[data-geo-map="berlin-brandenburg"] .geo-gemeinden path { stroke-width: 0.6px; }
.geo-map[data-geo-map="berlin-brandenburg"] .geo-label { font-size: 17px; letter-spacing: 0.1em; stroke-width: 3px; }
.geo-map--mini[data-geo-map="berlin-brandenburg"] .geo-label { font-size: 22px; }
.geo-map[data-geo-map="berlin-brandenburg"] .geo-label--water { font-size: 10px; letter-spacing: 0.12em; stroke-width: 2px; }
.geo-map--mini[data-geo-map="berlin-brandenburg"] .geo-label--water { font-size: 13px; }

/* Handy: kein SVG-Filter (Schlagschatten des Landes): Safari rechnet ihn beim Scharfstellen nach jedem Zoom über die ganze Fläche neu. */
.geo-map--phone .geo-land-shadow { display: none; }

/* Kartenfrage: Platz für die Karte. Session: Anleitung steht auf der Karte, die Datenschutz-Zeile rückt unter „Hier!“ (per Scrollen
   erreichbar). Pubquiz: Probelauf-Hinweis einzeilig, Frage enger. */
.join-question-card__content:has(.pq-geo-phone) #join-instruction { display: none; }
.join-question-card__content:has(.pq-geo-phone) #join-privacy-line { order: 10; }
.join-question-card__content:has(.pq-geo-phone) #join-thumb { order: 11; }
.pq-frame-body:has(.pq-geo-phone) .qe-testrun {
  margin-top: 2px;
  padding: 2px 8px;
  font-size: 0.76rem;
  width: auto;
  max-width: 100%;
  contain: inline-size; /* der einzeilige Text darf den Rahmen nicht verbreitern */
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pq-frame-body:has(.pq-geo-phone) .quiz-elimination-question { margin-top: 2px; margin-bottom: -6px; }
.pq-frame-body:has(.pq-geo-phone) .pq-geo-phone { margin-top: 0.2rem; gap: 0.4rem; }
