
.ka, .ka__frage {
  --ka-blau: #026CDF;
  --ka-blau-dunkel: #0147B1;
  --ka-blau-hell: #DCEBFF;
  --ka-marke: #14253A;
  --ka-text: #2b3033;
  --ka-neben: #61686c;
  --ka-leise: #868B8E;
  --ka-linie: #dbe3ea;
  --ka-rand: #e9e9e9;
  --ka-grund: #f5f5f5;
  --ka-weiss: #ffffff;
  --ka-erfolg: #7CB945;
}


.ka { position: relative; margin: 0; display: flex; flex-direction: column; gap: 0.5rem; min-width: 0; }

.ka__frage {
  font-size: 1.0625rem; line-height: 1.5; font-style: italic; font-weight: 600;
  color: var(--ka-marke); margin: 0;
}

.ka__buehne { overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; }

.ka:not(.ka--vollbild) .ka__buehne,
.ka:not(.ka--vollbild) .ka__buehne * { cursor: pointer; }
.ka__ecke {
  position: absolute; top: 0.75rem; right: 0.75rem; z-index: 1;
  display: inline-flex; align-items: center; gap: 0.5rem; min-height: 2.75rem; padding: 0 1rem;
  border-radius: 999px; border: 2px solid var(--ka-blau); background: var(--ka-weiss); color: var(--ka-blau);
  font: inherit; font-size: 0.875rem; font-weight: 700; line-height: 1; cursor: pointer;
  transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
}
.ka__ecke-symbol { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.ka__ecke:focus-visible { outline: 3px solid var(--ka-blau); outline-offset: 2px; }
.ka__ecke:active { background: var(--ka-marke); border-color: var(--ka-marke); color: var(--ka-weiss); }
@media (hover: hover) {
  .ka:not(.ka--vollbild) .ka__buehne:hover .ka__svg,
  .ka:not(.ka--vollbild):has(.ka__ecke:hover) .ka__svg {
    border-color: var(--ka-blau); box-shadow: 0 18px 48px rgba(43, 48, 51, .12);
  }
  .ka__ecke:hover,
  .ka:not(.ka--vollbild):has(.ka__buehne:hover) .ka__ecke {
    background: var(--ka-blau-dunkel); border-color: var(--ka-blau-dunkel); color: var(--ka-weiss);
  }
}

.ka__kopfleiste { display: none; }
.ka--vollbild {
  position: fixed; inset: 1rem; z-index: 1000; margin: 0;
  padding: 1rem clamp(1rem, 3vw, 2rem);
  background: var(--ka-grund); overflow: auto; overscroll-behavior: contain;
  border: 3px solid var(--ka-blau); border-radius: 16px;
  box-shadow: 0 24px 64px rgba(43, 48, 51, .28);
  animation: ka-auf 320ms ease-out;
}
.ka-hinterlegung { position: fixed; inset: 0; z-index: 999; background: rgba(10, 24, 40, .72); animation: ka-auf 320ms ease-out; }
.ka__zu-leiste { display: none; }
.ka--vollbild .ka__zu-leiste {
  display: flex; justify-content: flex-end; position: sticky; top: 0; z-index: 3; height: 0;
  margin: -1rem calc(-1 * clamp(1rem, 3vw, 2rem)) 0 0;
}
.ka--vollbild .ka__zu { margin: 0.5rem 0.5rem 0 0; box-shadow: 0 6px 18px rgba(43, 48, 51, .12); }
.ka--vollbild .ka__kopfleiste { display: flex; align-items: flex-start; gap: 1rem; padding-right: 3rem; margin-bottom: 0.5rem; }
.ka__zu {
  flex: none; width: 2.75rem; height: 2.75rem; display: grid; place-items: center; padding: 0;
  border: 1px solid var(--ka-rand); border-radius: 50%; background: var(--ka-weiss); color: var(--ka-text); cursor: pointer;
}
.ka__zu svg { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.ka__zu:focus-visible { outline: 3px solid var(--ka-blau); outline-offset: 2px; }
@media (hover: hover) { .ka__zu:hover { border-color: var(--ka-blau); color: var(--ka-blau); } }
.ka__vollfrage {
  flex: 1; margin: 0; font-size: 1.25rem; line-height: 1.5; font-style: italic; font-weight: 600;
  color: var(--ka-marke);
}
.ka--vollbild .ka__buehne { cursor: default; }
.ka--vollbild .ka__svg {
  width: min(100%, calc((100vh - 16rem) / 0.574)); width: min(100%, calc((100dvh - 16rem) / 0.574));
  height: auto; max-width: none; max-height: none;
  margin: 0 auto;
}
.ka--vollbild [data-ka-vergroessern] { display: none; }
html.ka-vollbild-offen, html.ka-vollbild-offen body { overflow: hidden; }
@keyframes ka-auf { from { opacity: 0; } to { opacity: 1; } }
.ka__svg {
  display: block; width: 100%; height: auto; min-width: 820px;
  max-height: calc(100vh - 170px);
  background: var(--ka-weiss); border: 2px solid var(--ka-rand); border-radius: 16px;
  box-shadow: 0 6px 18px rgba(43, 48, 51, .08);
  transition: border-color 120ms ease, box-shadow 120ms ease;
}
.ka__hinweis { display: none; margin: 0; font-size: 0.875rem; color: var(--ka-neben); }

.ka__unterschrift { margin: 0; font-size: 0.875rem; line-height: 1.5; color: var(--ka-neben); max-width: 110ch; }

.ka-spalte { fill: var(--ka-neben); font-size: 14px; font-weight: 700; letter-spacing: 0.12em; }

.ka-karte rect { fill: var(--ka-weiss); stroke: var(--ka-linie); stroke-width: 1.5; }
.ka-karte__typ { fill: var(--ka-marke); font-size: 16px; font-weight: 700; }
.ka-karte__inhalt { fill: var(--ka-text); font-size: 15px; }
.ka-karte__meta { fill: var(--ka-neben); font-size: 15px; }
.ka-karte__streifen { fill: var(--ka-blau); stroke: none; }
.ka-karte--start > rect:first-child { fill: var(--ka-blau-hell); }
.ka-karte .ka-start__grund { fill: var(--ka-blau); stroke: none; }
.ka-start__text { fill: var(--ka-weiss); font-size: 12px; font-weight: 700; }

.ka-karte--gesperrt rect { fill: var(--ka-grund); stroke: var(--ka-leise); stroke-dasharray: 6 4; }
.ka-karte--gesperrt .ka-karte__typ,
.ka-karte--gesperrt .ka-karte__inhalt { fill: var(--ka-neben); }
.ka-karte--gesperrt .ka-karte__streifen { fill: var(--ka-leise); }
.ka-knoten.is-gesperrt rect { fill: var(--ka-grund); stroke: var(--ka-leise); stroke-dasharray: 6 4; }
.ka-knoten.is-gesperrt text { fill: var(--ka-neben); }
.ka-kante.is-gesperrt, .ka-beleg.is-gesperrt { stroke: var(--ka-leise); stroke-dasharray: 4 5; }
.ka-schloss { fill: none; stroke: var(--ka-neben); stroke-width: 1.8; }

.ka-beleg { fill: none; stroke: var(--ka-leise); stroke-width: 1.4; stroke-dasharray: 3 4; }
.ka-schreibweise { fill: var(--ka-neben); font-size: 15px; font-style: italic; }

.ka-kante { fill: none; stroke: var(--ka-blau); stroke-width: 2.2; }
.ka-kante--antwort { stroke-width: 3.2; }
.ka-kante__text { fill: var(--ka-blau-dunkel); font-size: 15px; font-weight: 600; }
.ka-kante__grund { fill: var(--ka-weiss); }

.ka-knoten rect { fill: var(--ka-weiss); stroke: var(--ka-marke); stroke-width: 1.6; }
.ka-knoten__name { fill: var(--ka-marke); font-size: 16px; font-weight: 700; }
.ka-knoten__typ { fill: var(--ka-neben); font-size: 15px; }
.ka-knoten--kunde rect { fill: var(--ka-blau-hell); stroke: var(--ka-blau); stroke-width: 2.4; }
.ka-knoten--haus rect { fill: var(--ka-grund); }

.ka-schritt circle { fill: var(--ka-blau); }
.ka-schritt text { fill: var(--ka-weiss); font-size: 15px; font-weight: 700; }
.ka-schritt--klein text { font-size: 13px; }

.ka-antwort rect { fill: var(--ka-weiss); stroke: var(--ka-erfolg); stroke-width: 3; }
.ka-antwort__marke { fill: var(--ka-erfolg); }
.ka-antwort__kopf { fill: var(--ka-text); font-size: 15px; font-weight: 700; letter-spacing: 0.12em; }
.ka-antwort__text { fill: var(--ka-text); font-size: 16px; font-weight: 600; }

[data-bis] { opacity: 0; }
.ka[data-phase] [data-ab] {
  opacity: 0;
  transition: opacity 200ms ease-out, transform 200ms ease;
}
.ka[data-phase] [data-ab].is-an { opacity: 1; transition-delay: calc(var(--i, 0) * 300ms); }
.ka[data-phase] .ka-kante--antwort:not(.is-fett) { stroke-width: 2.2; }
.ka-kante--antwort { transition: stroke-width 200ms ease; }
.ka-karte rect, .ka-karte text, .ka-schloss { transition: fill 200ms ease, stroke 200ms ease, opacity 200ms ease; }
.ka[data-phase] .ka-karte:not(.ka-karte--gesperrt) .ka-schloss { opacity: 0; }

.ka-geist rect { fill: var(--ka-weiss); stroke: var(--ka-blau); stroke-dasharray: 6 4; }
.ka-geist.is-flug { transform: translate(var(--dx), var(--dy)); }

.ka__leiste { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 1rem; }
.ka__knopf {
  min-height: 2.75rem; padding: 0 1rem; border-radius: 999px;
  font: inherit; font-size: 0.875rem; font-weight: 700; line-height: 1;
  color: var(--ka-blau); background: var(--ka-weiss); border: 2px solid var(--ka-blau); cursor: pointer;
  transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
}
.ka__knopf:hover { background: var(--ka-blau-dunkel); border-color: var(--ka-blau-dunkel); color: var(--ka-weiss); }
.ka__knopf:focus-visible { outline: 3px solid var(--ka-blau); outline-offset: 2px; }
.ka__info { flex: 1 1 20rem; margin: 0; font-size: 0.875rem; line-height: 1.5; color: var(--ka-text); }

.ka--vollbild .ka-knoten[data-ka-knoten] { cursor: pointer; }
.ka-knoten[data-ka-knoten]:focus { outline: none; }
.ka-knoten[data-ka-knoten]:focus-visible rect,
.ka-knoten.is-gewaehlt rect { stroke: var(--ka-blau); stroke-width: 3.5; }
.ka-knoten[data-ka-knoten]:hover rect { stroke: var(--ka-blau-dunkel); }
.ka.is-auswahl:not([data-phase]) .ka-karte:not(.is-beleg):not(.is-gewaehlt),
.ka.is-auswahl[data-phase] .ka-karte.is-an:not(.is-beleg):not(.is-gewaehlt) { opacity: 0.35; }
.ka-karte.is-beleg > rect:first-child { stroke: var(--ka-blau); stroke-width: 2.5; }

.ka--vollbild .ka-karte[data-ka-karte] { cursor: pointer; }
.ka-karte[data-ka-karte]:focus { outline: none; }
.ka-karte[data-ka-karte]:focus-visible > rect:first-child,
.ka-karte.is-gewaehlt > rect:first-child { stroke: var(--ka-blau); stroke-width: 3.5; }
.ka-karte[data-ka-karte]:hover > rect:first-child { stroke: var(--ka-blau-dunkel); }
.ka.is-auswahl--karte:not([data-phase]) .ka-knoten[data-ka-knoten]:not([data-bis]):not(.is-beleg),
.ka.is-auswahl--karte[data-phase] .ka-knoten[data-ka-knoten].is-an:not(.is-beleg) { opacity: 0.35; }
.ka-knoten.is-beleg rect { stroke: var(--ka-blau); stroke-width: 2.5; }

.ka__kennung {
  display: inline-flex; align-items: center; padding: 0.25rem 0.75rem; border-radius: 999px;
  font-size: 0.75rem; font-weight: 600; line-height: 1.5;
  color: var(--ka-neben); background: var(--ka-weiss); border: 1px solid var(--ka-rand);
}

@media (prefers-reduced-motion: reduce) {
    transition: none !important;
  }
  .ka--vollbild, .ka-hinterlegung { animation: none; }
}

@media (max-width: 900px) {
  .ka__svg { max-height: none; }
  .ka--vollbild { inset: 0.5rem; border-radius: 12px; }
  .ka__vollfrage { font-size: 1rem; }
  .ka__hinweis { display: block; }
}
