/* ==================================================================
   Welcher Hund? — Design-System „Wesenskarten"
   mobile-first · 0 Dependencies · 0 Webfonts · light + dark

   DIE VIER REGELN DES SYSTEMS
   1. Container tragen eine harte 2px-Ink-Kante (--rule) und einen
      harten Offset-Schatten. Keine weichen Blur-Schatten, nirgends.
   2. Genau ZWEI Schattentiefen: --shadow-card (Bühnen, Hover) und
      --shadow-card-sm (Karten). Eine dritte Stufe ist ein Systembruch.
   3. Acid Lemon = primäre Aktion, sonst nichts. Und NIE ohne Ink-Kante:
      Lemon #E9FF56 ist luminanzgleich mit Papier #F7F3E8 (1,0:1) und
      verschwindet als randlose Fläche. Zustandsanzeigen (Fortschritt,
      Aktivmarker) tragen Ink oder Accent — nie Lemon.
   4. Text auf Flächen, die in BEIDEN Themes gleich sind (Lemon, Coral,
      Mint, Dimensionsfarben), nutzt --ink-fest/--paper-fest. Text auf
      kippenden Flächen (--surface, --wash) nutzt --ink/--muted.
      Vertauscht man das, verschwindet er in einem der beiden Themes.
   ================================================================== */

:root {
  /* ---- Wesenskarten-System (Design-System v1.0, kontrastgeprüft) ----
     Rollen strikt getrennt: Blau = Interaktion · Lemon = Aktion (nur Fläche!)
     Grün = positiv · Coral = K.-o. (nur Fläche!) · Ink/Paper = Basis        */
  --bg: #F7F3E8;            /* Warm White — Papier */
  --surface: #FFFDF7;
  --wash: #EFEADC;          /* dezente Flächen (Tracks, aktive Chips) */
  --ink: #101010;
  --muted: #63605A;
  --line: #DDD7C8;
  --line-strong: #101010;   /* Karten-Kontur: hart, nicht zart */
  --accent: #2448FF;        /* Ultramarine — Links, Fokus, Marke */
  --accent-ink: #FFFDF7;
  --accent-wash: #E7EBFF;
  --action: #E9FF56;        /* Acid Lemon — NUR Fläche, Ink-Text (17:1) */
  --action-ink: #101010;
  /* Feste Tokens: Flächen wie Lemon/Coral/Dimensionsfarben sind in BEIDEN Themes
     identisch — ihr Text darf deshalb nicht mit --ink kippen. Nie überschreiben. */
  --ink-fest: #101010;
  --paper-fest: #FFFDF7;
  --ok: #1E6B45;            /* Grün — positive Aussage als TEXT */
  --ok-wash: #BEE5C1;       /* Mint — positive Fläche */
  --warn: #B33A26;          /* dunkleres Coral für Text (AA auf Paper) */
  --warn-flat: #FF5A43;     /* Coral — NUR Fläche, Ink-Text */
  --warn-wash: #FFE7E2;
  /* Dimensionsfarben der sechs Wesenskarten */
  --dim-zeit: #2448FF; --dim-raum: #E9FF56; --dim-energie: #FF5A43;
  --dim-familie: #BEE5C1; --dim-erfahrung: #FFFDF7; --dim-pflege: #A8C4FF;
  --shadow-card: 6px 7px 0 var(--ink);
  --shadow-card-sm: 3px 4px 0 var(--ink);
  /* Gold = Bühnenfarbe des Quiz (Golden Retriever). NIE Statusfarbe, nie auf der Ergebnis-Seite.
     --gold nur für Fills/Border/große Texte (AA ab 3:1), --gold-ink für Kleintext auf Wash (AA 4.5:1). */
  /* Alt-Tokens der Gold-Bühne zeigen jetzt auf das Wesenskarten-System,
     damit bestehende Regeln ohne Bruch weiterlaufen. */
  --gold: var(--ink);
  --gold-ink: var(--ink);
  --gold-wash: var(--wash);
  --gold-line: var(--line);
  /* Radien: minimal. 12px/8px waren v3-Erbe und ließen jede Box weich wirken.
     Speist 9 Container-Boxen (--r) und 4 kleine Bedienelemente (--r-s).
     Pill-Formen (Chips, Balken) setzen 999px direkt und bleiben unberührt. */
  --r: 4px;
  --r-s: 3px;
  /* Die eine Container-Kante des Systems. --line-strong kippt korrekt mit dem Theme
     (Ink auf Papier, Creme auf Dunkel) und bleibt daher in beiden Themes sichtbar. */
  --rule: 2px solid var(--line-strong);
  --sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  /* Display für Headlines und Kartennamen: laut, eng, markant. Bewusst der Fallback-Stack
     aus den Referenz-Tokens statt geladener Webfonts — kein Google-CDN (DSGVO) und keine
     100 KB Schriftlast auf 7.084 Seiten. Der Charakter kommt aus Größe, Enge und Gewicht. */
  --display: "Archivo Black", "Arial Black", "Helvetica Neue", Impact, sans-serif;
  --condensed: "Barlow Condensed", "Arial Narrow", "Helvetica Neue Condensed", sans-serif;
  --maxw: 1020px;
  --tabbar-h: 58px;
}
/* ---------- Basis ---------- */
* { box-sizing: border-box; }
/* Das Wesenskarten-System IST ein Papier-Design: Warm White, Papiertextur, schwarze Tinte.
   Ein dunkler Grund zerstört genau diese Anmutung — die Referenz kennt keinen Dark Mode,
   dort ist Schwarz ein Akzent (Header, Match-Sektion), nie die Grundfläche.
   color-scheme: light verhindert außerdem, dass der Browser Formularfelder dunkel rendert. */
html { -webkit-text-size-adjust: 100%; overflow-x: clip; color-scheme: light; }
/* Lange Quell-URLs (z. B. Wikipedia-Links im Belegteil) dürfen innerhalb des Worts brechen.
   Bewusst NICHT global auf a gesetzt: das zerhackt sonst Rassennamen in Kartenlisten. */
.small a, .quellen a, .note a { overflow-wrap: anywhere; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
body {
  margin: 0; font-family: var(--sans); color: var(--ink); background: var(--bg);
  line-height: 1.6; font-size: 16px; -webkit-font-smoothing: antialiased;
  padding-bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px));
  /* Papiertextur: subtil sichtbar, 531 Byte SVG, wiederholt sich alle 320px */
  background-image: url("/assets/paper.svg");
  background-size: 320px 320px;
}
/* Headlines laut und eng — das ist die Stimme der Marke, nicht Inter-Systemschrift */
h1, .h-display {
  font-family: var(--display); font-weight: 900;
  letter-spacing: -.03em; line-height: .96; text-transform: none;
}
h2 { font-family: var(--display); font-weight: 900; letter-spacing: -.025em; line-height: 1.02; }
@media (min-width: 861px) { body { padding-bottom: 0; } }
img, svg { max-width: 100%; vertical-align: middle; }
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
/* Nur Umbruch und Außenabstand — Zeilenabstand, Laufweite und Gewicht kommen aus dem
   Display-Block darüber. Standen sie hier, überschrieben sie ihn bei gleicher Spezifität
   (spätere Regel gewinnt) und alle Headlines rendeten mit 1.15/700 statt .96/900. */
h1, h2, h3 { text-wrap: balance; margin: 0; }
h3 { line-height: 1.15; font-weight: 700; }
h1 { font-size: clamp(1.75rem, 5.4vw, 2.6rem); margin: .3em 0 .4em; }
h2 { font-size: clamp(1.25rem, 3.6vw, 1.55rem); margin: 2em 0 .6em; }
h3 { font-size: 1.05rem; margin: 1.4em 0 .4em; letter-spacing: -.012em; }
p { margin: .6em 0; }
.small, small { font-size: .855rem; color: var(--muted); }
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 20px; }
.narrow { max-width: 700px; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
::selection { background: var(--accent-wash); }

.label { font-size: .72rem; font-weight: 650; letter-spacing: .09em; text-transform: uppercase; color: var(--muted); }
.mono { font-family: var(--mono); font-size: .82rem; color: var(--muted); }

/* ---------- Header ---------- */
/* Schwarzer Header wie in der Referenz — Ink-Fläche, helle Marke, Lemon-CTA.
   Feste Tokens, weil die Fläche in beiden Themes identisch ist. */
.site-header { position: sticky; top: 0; z-index: 50; background: var(--ink-fest); border-bottom: var(--rule); }
.site-header .logo { color: var(--paper-fest); }
.site-header .logo .wordmark { color: var(--paper-fest); }
.site-header .logo:hover .wordmark { color: var(--action); }
.site-header .logo .logo-tld { color: var(--action); }
.site-header .nav a { color: var(--paper-fest); font-family: var(--condensed); font-size: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.site-header .nav a:hover { color: var(--action); background: transparent; }
.site-header .wrap { display: flex; align-items: center; gap: 18px; min-height: 56px; }
.logo { font-weight: 750; font-size: 1.06rem; letter-spacing: -.02em; color: var(--ink); display: flex; align-items: center; gap: 9px; }
.logo:hover { text-decoration: none; }
.logo .mark { width: 24px; height: 24px; flex: 0 0 auto; }
.nav { display: none; gap: 2px; margin-left: auto; align-items: center; }
.nav a { color: var(--muted); font-weight: 550; font-size: .92rem; padding: 7px 11px; border-radius: var(--r-s); }
.nav a:hover { color: var(--ink); text-decoration: none; background: var(--wash); }
.nav a.cta { background: var(--ink); color: var(--bg); font-weight: 650; margin-left: 6px; }
.nav a.cta:hover { background: var(--accent); color: var(--accent-ink); }
.header-cta { margin-left: auto; }
.header-cta a { background: var(--ink); color: var(--bg); font-weight: 650; font-size: .88rem; padding: 8px 15px; border-radius: var(--r-s); }
.header-cta a:hover { text-decoration: none; background: var(--accent); color: var(--accent-ink); }
@media (min-width: 861px) { .nav { display: flex; } .header-cta { display: none; } }
@media (min-width: 861px) { :root { --tabbar-h: 0px; } }

/* ---------- Bottom-Tabs (Mobile) ---------- */
.tabbar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 70;
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr));
  background: var(--bg); border-top: var(--rule);
  padding-bottom: env(safe-area-inset-bottom, 0px);
  height: calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px));
}
.tabbar a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; color: var(--muted); font-size: .64rem; font-weight: 600; letter-spacing: .015em; padding-top: 6px; }
.tabbar a:hover { text-decoration: none; }
.tabbar svg { width: 21px; height: 21px; stroke: currentColor; fill: none; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.tabbar a.active { color: var(--ink); box-shadow: inset 0 3px 0 var(--ink); }
.tabbar a.active svg { stroke-width: 2.1; }
@media (min-width: 861px) { .tabbar { display: none; } }

/* ---------- Footer ---------- */
.site-footer { margin-top: 80px; border-top: var(--rule); }
.site-footer .cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 28px; padding: 40px 0 28px; }
.site-footer h4 { margin: 0 0 12px; font-size: .72rem; font-weight: 650; letter-spacing: .09em; text-transform: uppercase; color: var(--muted); }
.site-footer ul { list-style: none; margin: 0; padding: 0; }
.site-footer li { margin: 7px 0; }
.site-footer a { color: var(--ink); font-size: .9rem; }
.site-footer .legal { border-top: 1px solid var(--line); padding: 18px 0 22px; font-size: .8rem; color: var(--muted); display: flex; flex-wrap: wrap; gap: 6px 22px; }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: var(--ink); color: var(--bg); font-weight: 650; font-size: .98rem;
  border: 0; cursor: pointer; padding: 13px 24px; border-radius: 10px;
  transition: background .15s ease;
}
.btn:hover { background: var(--accent); color: var(--accent-ink); text-decoration: none; }
.btn:active { opacity: .9; }
.btn.ghost { background: transparent; color: var(--ink); border: 1px solid var(--line-strong); }
.btn.ghost:hover { border-color: var(--ink); background: transparent; color: var(--ink); }
.btn.big { font-size: 1.05rem; padding: 15px 30px; }
@media (max-width: 480px) { .btn.big { width: 100%; } }

/* ---------- Chips (sparsam) ---------- */
.chip {
  display: inline-flex; align-items: center; gap: 5px; font-size: .78rem; font-weight: 550;
  padding: 3px 10px; border-radius: 999px; background: var(--wash); color: var(--muted);
  white-space: nowrap; max-width: 100%;
}
/* Chips mit langem Inhalt müssen brechen dürfen. Sonst erzwingt z. B. der FCI-Gruppenname
   „Pinscher und Schnauzer, Molosser, Schweizer Sennenhunde und andere Rassen" (73 Zeichen)
   eine Mindestbreite, die die ganze Seite horizontal scrollen lässt. */
.gruende .chip, .wunsch-preview .chip, .match-head .chip,
.breed-hero .chip { white-space: normal; text-align: left; }
a.chip, button.chip { position: relative; }
a.chip::after, button.chip::after { content: ""; position: absolute; inset: -8px 0; }  /* unsichtbare 44px-Hit-Area */
.chip.green { background: var(--ok-wash); color: var(--ok); }
.chip.plain { background: transparent; border: 1px solid var(--line); }
a.chip { color: var(--ink); }
a.chip:hover { text-decoration: none; border-color: var(--ink); background: var(--wash); }

/* ---------- Karten & Listen ---------- */
.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); padding: 20px; }
a.card { color: var(--ink); display: block; transition: border-color .15s ease; }
a.card:hover { text-decoration: none; border-color: var(--line-strong); }
a.card:hover strong { color: var(--accent); }
.grid { display: grid; gap: 12px; }
/* Grid-Items haben implizit min-width:auto und können nicht unter ihre Inhaltsbreite schrumpfen.
   Ohne das sprengt eine einzige lange Karte das Raster und die Seite scrollt horizontal. */
.grid > * { min-width: 0; }
.g2 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.g3 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr)); }
.g4 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 155px), 1fr)); }

/* Zeilen-Listen (statt Karten-Suppe) */
.list { border-top: 1px solid var(--line); }
.list > * { display: flex; align-items: center; gap: 12px; padding: 12px 2px; border-bottom: 1px solid var(--line); color: var(--ink); }
.list > a:hover { text-decoration: none; background: var(--wash); }
.list .grow { flex: 1; min-width: 0; }

/* Status-Badges: Text, kein Emoji-Pillenregal */
.suit { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px 20px; margin: 12px 0; }
.suit div { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--line); font-size: .93rem; }
.suit .yes { color: var(--accent); font-weight: 650; }
.suit .no { color: var(--muted); }

/* Hinweise: feine Linie statt Pastellfläche */
.note { border-left: 2px solid var(--line-strong); padding: 2px 0 2px 16px; margin: 16px 0; font-size: .93rem; color: var(--muted); }
.note.warn { border-color: var(--warn); color: var(--warn); }
.note.accent { border-color: var(--ok); color: var(--ink); }

/* Die kurze Antwort (AEO-Block) */
.bluf { border-left: 3px solid var(--accent); padding: 4px 0 4px 18px; margin: 22px 0; font-size: 1.08rem; line-height: 1.6; }
.bluf::before { content: "Die kurze Antwort"; display: block; font-size: .72rem; font-weight: 650; letter-spacing: .09em; text-transform: uppercase; color: var(--accent); margin-bottom: 5px; }

/* ---------- Avatare ---------- */
.avatar { flex: 0 0 auto; border-radius: 999px; overflow: hidden; }
.avatar svg { display: block; }

/* ---------- Balken ---------- */
.bars { display: grid; gap: 9px; margin: 16px 0; }
.bar-row { display: grid; grid-template-columns: minmax(105px, 165px) 1fr 38px; align-items: center; gap: 12px; font-size: .9rem; }
.bar-track { display: block; height: 6px; border-radius: 999px; background: var(--wash); overflow: hidden; }
.bar-fill { display: block; height: 100%; border-radius: 999px; background: var(--accent); transition: width .6s ease; }
.bar-fill.hot { background: var(--ink); }
.bar-val { text-align: right; font-variant-numeric: tabular-nums; color: var(--muted); font-size: .84rem; }

/* ---------- Fakten ---------- */
/* Außenkante hart, innere Trennlinien fein: 1px bleibt der Zeilentrenner INNERHALB
   eines Containers, 2px ist die Außenkante. Das hält die Kantenstärken bei zwei. */
.facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 140px), 1fr)); gap: 1px; margin: 20px 0; background: var(--line); border: var(--rule); border-radius: var(--r); overflow: hidden; box-shadow: var(--shadow-card-sm); }
.fact { background: var(--surface); padding: 13px 15px; }
.fact .k { font-size: .68rem; text-transform: uppercase; letter-spacing: .08em; color: var(--muted); font-weight: 650; }
.fact .v { font-size: 1.08rem; font-weight: 700; margin-top: 3px; font-variant-numeric: tabular-nums; letter-spacing: -.01em; }

/* ---------- Tabellen ---------- */
.tablewrap { overflow-x: auto; border: var(--rule); border-radius: var(--r); background: var(--surface); -webkit-overflow-scrolling: touch; box-shadow: var(--shadow-card-sm); }
table.cmp { border-collapse: collapse; width: 100%; font-size: .92rem; min-width: 420px; }
table.cmp th, table.cmp td { padding: 10px 14px; text-align: left; border-bottom: 1px solid var(--line); }
table.cmp tr:last-child td { border-bottom: 0; }
table.cmp thead th { font-size: .72rem; text-transform: uppercase; letter-spacing: .07em; color: var(--ink); font-weight: 700; background: var(--wash); border-bottom: var(--rule); }
td.win { font-weight: 650; color: var(--ok); }

/* ---------- Struktur ---------- */
.crumbs { font-size: .8rem; color: var(--muted); margin: 18px 0 4px; overflow-x: auto; white-space: nowrap; -webkit-overflow-scrolling: touch; }
.crumbs a { color: var(--muted); }
section.block { margin: 52px 0; }
.section-head { display: flex; align-items: baseline; gap: 12px; }
.section-head .more { margin-left: auto; font-size: .88rem; white-space: nowrap; }

/* ---------- Hero: das Quiz IST der Held ---------- */
.hero { padding: 40px 0 8px; }
.hero-split { display: grid; gap: 26px; align-items: center; }

/* ---------- Hero-Kartenstapel: die sechs Dimensionen als aufgefächerte Spielkarten ----------
   Kernbild der Marke. Überlappend, gegeneinander gedreht, die äußere Karte ragt bewusst
   über den Rand (Vorgabe: mindestens eine Karte im ersten Viewport angeschnitten). */
.hero-stapel { display: flex; justify-content: center; align-items: center; padding: 22px 0 30px; perspective: 900px; }
.hk {
  flex: 0 0 auto; width: clamp(82px, 9.6vw, 128px); aspect-ratio: 2 / 3;
  display: flex; flex-direction: column; padding: 9px 8px 10px;
  border: 2px solid var(--ink-fest); border-radius: 3px; overflow: hidden;
  box-shadow: var(--shadow-card-sm); color: var(--ink-fest);
  background-image: url("/assets/paper.svg"); background-size: 180px 180px; background-blend-mode: multiply;
  margin-left: clamp(-22px, -1.5vw, -12px); transform-origin: bottom center;
  transition: transform var(--motion, .2s) cubic-bezier(.16,1,.3,1);
}
.hk:first-child { margin-left: 0; }
.hk.wk-dunkel { color: var(--paper-fest); }
.hk:nth-child(1) { transform: rotate(-8deg) translateY(10px); }
.hk:nth-child(2) { transform: rotate(-4.5deg) translateY(2px); }
.hk:nth-child(3) { transform: rotate(-1.5deg) translateY(-3px); }
.hk:nth-child(4) { transform: rotate(2deg) translateY(-2px); }
.hk:nth-child(5) { transform: rotate(5.5deg) translateY(4px); }
.hk:nth-child(6) { transform: rotate(9deg) translateY(12px); }
.hero-stapel:hover .hk { transform: rotate(0) translateY(0); }
.hk-nr { font-family: var(--mono); font-size: .62rem; font-weight: 700; letter-spacing: .1em; opacity: .85; }
/* Größe am längsten Namen ausgerichtet („ERFAHRUNG", 9 Zeichen) — Arial Black als
   Fallback läuft deutlich breiter als Archivo Black und sprengte die Karte sonst. */
.hk-name { font-family: var(--display); font-weight: 900; font-size: clamp(.64rem, .98vw, .9rem);
  text-transform: uppercase; letter-spacing: -.04em; line-height: .92; margin: 1px 0 4px;
  overflow-wrap: anywhere; -webkit-hyphens: auto; hyphens: auto; }
/* Fragetexte dürfen umbrechen und trennen, nie abgeschnitten werden.
   „Ersthund oder Hundeprofi?" lief sonst aus der Karte heraus. */
.hk-frage { font-size: clamp(.54rem, .74vw, .69rem); line-height: 1.22;
  -webkit-hyphens: auto; hyphens: auto; overflow-wrap: anywhere; }
.hk .wk-ico { margin: auto auto 4px 0; }
.hk-fuss { font-family: var(--mono); font-size: clamp(.5rem, .68vw, .62rem); line-height: 1.2; opacity: .8;
  border-top: 1px solid currentColor; padding-top: 4px; }
@media (max-width: 860px) {
  /* Mobil dieselbe Grammatik, nur enger — kein vereinfachtes SaaS-Layout */
  .hero-stapel { padding: 14px 0 20px; margin-inline: -20px; }
  .hk { width: clamp(74px, 17vw, 104px); margin-left: -13px; padding: 7px 6px 8px; }
  .hk-frage { display: none; }
}
@media (min-width: 861px) {
  /* Desktop: Full-Bleed-Bühne, füllt die Falz — das Quiz IST die Seite */
  .hero {
    margin-inline: calc(50% - 50vw);
    padding-inline: max(24px, calc(50vw - 620px));
    /* Feste Mindesthöhe statt Viewport-Kopplung: mit calc(100vh - 140px) und vertikaler
       Zentrierung schwamm der Inhalt bei hohen Fenstern in ~400px Leerraum oben UND unten.
       760px ist die Vorgabe des Design-Systems für die Bühne oberhalb 1280px. */
    min-height: 640px;
    /* Spalte, nicht Zeile: Bühne (Text + Kartenstapel) oben, erste Frage darunter.
       Als Flex-Zeile schrumpfte die Textspalte auf 207px und der H1 brach vierzeilig. */
    display: flex; flex-direction: column; justify-content: center;
    padding-top: 24px; padding-bottom: 24px;
  }
  .hero-split { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 48px; width: 100%; align-items: center; }
  .hero h1 { font-size: clamp(2.4rem, 3.8vw, 3.6rem); }
  .hero p.lead { font-size: 1.28rem; max-width: 460px; }
  .kick-hero .khead { padding: 15px 24px; font-size: .82rem; }
  .kick-hero .kbody { padding: 26px 24px; }
  .kick-hero .q { font-size: 1.55rem; margin-bottom: 18px; }
  .kick-hero .opts { gap: 11px; }
  .kick-hero .opts a { padding: 17px 20px; font-size: 1.08rem; }
  .kick-hero .kfoot { padding: 0 24px 20px; }
}
.hero .trust { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 18px; }
.kick-hero {
  background: var(--surface); border: 1px solid var(--gold-line); border-top: 3px solid var(--gold); border-radius: 16px;
  box-shadow: var(--shadow-card);
  overflow: hidden;
}
.kick-hero .khead {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 12px 18px; border-bottom: 1px solid var(--gold-line); background: var(--gold-wash);
  font-size: .78rem; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; color: var(--muted);
}
.kick-hero .khead .kbar { flex: 1; max-width: 90px; height: 3px; border-radius: 999px; background: var(--gold-line); position: relative; }
.kick-hero .khead .kbar::after { content: ""; position: absolute; inset: 0 95% 0 0; background: var(--gold); border-radius: 999px; }
.kick-hero .kbody { padding: 18px; }
.kick-hero .q { font-size: clamp(1.15rem, 3.4vw, 1.35rem); font-weight: 700; letter-spacing: -.015em; margin: 0 0 14px; }
.kick-hero .opts { display: grid; gap: 8px; }
.kick-hero .opts a {
  display: flex; align-items: center; gap: 11px; padding: 13px 15px;
  border: 1px solid var(--line-strong); border-radius: 10px;
  color: var(--ink); font-weight: 550; font-size: .96rem; transition: border-color .13s ease, background .13s ease;
}
.kick-hero .opts a:hover { text-decoration: none; border-color: var(--gold); background: var(--gold-wash); }
.kick-hero .opts a::before { content: ""; width: 8px; height: 8px; border-radius: 999px; border: 1.5px solid var(--line-strong); flex: 0 0 auto; }
.kick-hero .opts a:hover::before { border-color: var(--gold); background: var(--gold); }
.kick-hero .kfoot { padding: 0 18px 16px; }

/* ---------- Hero (alt) ---------- */
.hero-legacy { padding: 48px 0 8px; }
.hero .kicker { font-size: .78rem; font-weight: 650; letter-spacing: .09em; text-transform: uppercase; color: var(--muted); margin: 0 0 10px; }
.hero p.lead { font-size: clamp(1.02rem, 3.2vw, 1.18rem); color: var(--muted); max-width: 600px; }
.hero .actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 22px; align-items: center; }
.hero-pack { display: flex; margin: 24px 0 6px; }
@media (max-width: 480px) { .hero-pack .avatar:nth-child(n+6) { display: none; } }
.hero-pack .avatar { width: 44px; height: 44px; border: 2px solid var(--bg); margin-right: -9px; background: var(--surface); }
.hero-pack .morecount { display: grid; place-items: center; min-width: 44px; height: 44px; padding: 0 8px; border-radius: 999px; background: var(--wash); color: var(--muted); font-size: .72rem; font-weight: 650; border: 2px solid var(--bg); }

/* Kickstart (Frage 1 auf der Startseite) */
.kickstart { border: var(--rule); border-radius: var(--r); box-shadow: var(--shadow-card-sm); padding: 22px; margin: 30px 0 10px; background: var(--surface); }
.kickstart .q { font-size: 1.18rem; font-weight: 700; letter-spacing: -.015em; margin: 4px 0 14px; }
.kickstart .opts { display: grid; gap: 8px; }
@media (min-width: 640px) { .kickstart .opts { grid-template-columns: 1fr 1fr; } }
.kickstart .opts a {
  display: block; padding: 12px 16px; border: 1px solid var(--line-strong); border-radius: 10px;
  color: var(--ink); font-weight: 550; font-size: .95rem; transition: border-color .15s ease;
}
.kickstart .opts a:hover { text-decoration: none; border-color: var(--ink); }

/* ---------- Sticky-CTA ---------- */
.sticky-cta {
  position: fixed; bottom: calc(var(--tabbar-h) + 12px + env(safe-area-inset-bottom, 0px)); left: 50%; transform: translateX(-50%); z-index: 60;
  /* War der letzte weiche Blur-Schatten und die letzte Pille im Bestand — beides
     widerspricht dem System. Jetzt harte Kante, harter Versatzschatten, 3px Radius. */
  background: var(--surface); border: var(--rule); box-shadow: var(--shadow-card);
  border-radius: 3px; padding: 6px 6px 6px 16px; display: flex; gap: 12px; align-items: center;
  max-width: min(94vw, 480px); font-size: .88rem; flex-wrap: nowrap;
}
.sticky-cta > span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.sticky-cta .btn { padding: 9px 16px; font-size: .86rem; white-space: nowrap; flex: 0 0 auto; border-radius: 3px; box-shadow: 2px 3px 0 var(--ink-fest); }
@media (min-width: 861px) { .sticky-cta { bottom: 18px; } }

/* ==================================================================
   QUIZ
   ================================================================== */
.quiz-shell { max-width: 660px; margin: 0 auto; padding: 18px 20px 110px; }
#quiz {
  background: var(--surface); border: 1px solid var(--gold-line); border-top: 3px solid var(--gold);
  border-radius: 16px; padding: 24px 22px 26px;
  box-shadow: var(--shadow-card);
}
@media (max-width: 480px) { #quiz { padding: 18px 15px 20px; margin-inline: -6px; } }
.q-progress { margin: 8px 0 30px; }
.q-progress .track { display: block; height: 4px; border-radius: 999px; background: var(--gold-wash); box-shadow: inset 0 0 0 1px var(--gold-line); overflow: hidden; }
.q-progress .fill { display: block; height: 100%; background: var(--accent); border-radius: 999px; transition: width .45s ease; }
.q-progress .meta { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 2px 12px; margin-top: 8px; font-size: .8rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.q-progress .meta > span { white-space: nowrap; }
.q-progress .kandidaten { margin-left: auto; }
.q-progress .checkpoint { color: var(--gold-ink); font-weight: 650; }

.q-axis { margin-bottom: 10px; }
.q-title { font-size: clamp(1.35rem, 5vw, 1.7rem); font-weight: 700; letter-spacing: -.02em; margin: 6px 0 20px; line-height: 1.2; }
.q-hint { color: var(--muted); font-size: .88rem; margin: -12px 0 16px; }

.q-options { display: grid; gap: 9px; }
.q-opt {
  display: flex; align-items: center; gap: 13px; width: 100%; text-align: left;
  background: var(--surface); border: 1px solid var(--line-strong); border-radius: 10px;
  padding: 15px 16px; font: inherit; font-size: 1rem; font-weight: 550; color: var(--ink);
  cursor: pointer; min-height: 54px; transition: border-color .13s ease, background .13s ease, box-shadow .13s ease;
}
.q-opt .q-opt-text { min-width: 0; }
.q-opt .sub { display: block; font-size: .8rem; font-weight: 450; color: var(--muted); margin-top: 2px; line-height: 1.45; }
.q-opt:hover { border-color: var(--gold); }
.q-opt:active { background: var(--wash); }
.q-opt .key { flex: 0 0 auto; width: 24px; height: 24px; display: grid; place-items: center; border-radius: 6px; background: var(--wash); color: var(--muted); font-size: .76rem; font-weight: 650; font-variant-numeric: tabular-nums; }
@media (max-width: 640px) {
  .q-opt .key { display: none; }
  .q-opt.multi .key { display: grid; }   /* Multi braucht die Checkbox als Signal */
}

.q-foot { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; row-gap: 10px; margin-top: 22px; }
.q-foot .btn { max-width: 100%; }
.q-back { background: none; border: 0; color: var(--muted); font: inherit; font-size: .9rem; cursor: pointer; padding: 8px 10px; border-radius: var(--r-s); min-height: 44px; display: inline-flex; align-items: center; }
.q-back:hover { color: var(--ink); background: var(--wash); }
.q-important { margin-left: auto; display: flex; align-items: center; gap: 8px; font-size: .88rem; color: var(--muted); cursor: pointer; user-select: none; padding: 8px 12px; border-radius: var(--r-s); min-height: 44px; }
.q-important input { accent-color: var(--accent); width: 18px; height: 18px; cursor: pointer; }
.q-important.on { color: var(--accent); }

.q-stage { position: relative; }
.q-view { animation: qIn .24s ease; }
.q-view.leaving { animation: qOut .14s ease forwards; }
@keyframes qIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes qOut { to { opacity: 0; } }

.whisper { border-left: 2px solid var(--gold); padding: 4px 0 4px 14px; margin: 0 0 22px; font-size: .92rem; color: var(--muted); animation: qIn .3s ease; }
.whisper strong { color: var(--ink); }

.toast {
  position: fixed; left: 50%; bottom: calc(var(--tabbar-h) + 18px + env(safe-area-inset-bottom, 0px)); transform: translateX(-50%);
  background: var(--ink); color: var(--bg); font-size: .88rem; font-weight: 550;
  padding: 11px 18px; border-radius: 10px; z-index: 80;
  animation: toastIn .25s ease; max-width: 92vw; text-align: center;
}
@media (min-width: 861px) { .toast { bottom: 24px; } }
@keyframes toastIn { from { opacity: 0; transform: translate(-50%, 8px); } to { opacity: 1; transform: translate(-50%, 0); } }
.toast.leaving { opacity: 0; transition: opacity .25s ease; }

/* Ergebnis */
.result-stage { display: flex; flex-direction: column; gap: 16px; }
.result-stage h2 { margin-bottom: 0; }
.result-stage .match-card { margin-top: 10px; }
.result-stage > * { animation: rIn .4s ease both; }
.result-stage > *:nth-child(2) { animation-delay: .08s; }
.result-stage > *:nth-child(3) { animation-delay: .16s; }
.result-stage > *:nth-child(4) { animation-delay: .24s; }
.result-stage > *:nth-child(5) { animation-delay: .32s; }
@keyframes rIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

.arch-card { text-align: center; padding: 34px 24px 26px; }
.arch-card .emoji { font-size: 2.6rem; display: inline-block; }
.arch-card h2 { margin: 10px 0 4px; font-size: 1.6rem; }
.arch-card .motto { color: var(--muted); font-style: italic; }
.arch-traits { display: grid; gap: 0; grid-template-columns: 1fr; margin-top: 18px; text-align: left; }

.match-card { display: block; color: var(--ink); }
.match-top { display: flex; align-items: center; gap: 13px; }
.match-top .avatar { width: 54px; height: 54px; }
.match-head { display: flex; align-items: baseline; gap: 9px; flex-wrap: wrap; flex: 1; min-width: 0; }
.match-head .pct { margin-left: auto; font-weight: 750; font-size: 1.4rem; color: var(--ink); font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.gruende { display: flex; flex-wrap: wrap; gap: 8px 6px; margin-top: 10px; }

.stamp { display: inline-block; margin-top: 20px; font-family: var(--mono); font-size: .75rem; letter-spacing: .06em; color: var(--muted); }

.eval-scene { text-align: center; padding: 80px 0; }
.eval-scene .dots span { display: inline-block; width: 6px; height: 6px; border-radius: 999px; background: var(--muted); margin: 0 3px; animation: dotPulse 1s ease infinite; }
.eval-scene .dots span:nth-child(2) { animation-delay: .16s; }
.eval-scene .dots span:nth-child(3) { animation-delay: .32s; }
@keyframes dotPulse { 0%, 100% { opacity: .25; transform: none; } 50% { opacity: 1; transform: translateY(-3px); } }
.eval-scene .counter { font-size: .95rem; color: var(--muted); font-variant-numeric: tabular-nums; margin-top: 16px; }

details.fold { border: var(--rule); border-radius: var(--r); background: var(--surface); margin: 12px 0; }
details.fold summary { cursor: pointer; font-weight: 600; padding: 14px 18px; list-style: none; font-size: .95rem; }
details.fold summary::-webkit-details-marker { display: none; }
details.fold summary::after { content: "+"; float: right; color: var(--muted); font-weight: 400; }
details.fold[open] summary::after { content: "–"; }
details.fold .inner { padding: 0 18px 16px; }

/* ---------- Formularfelder: EINE Komponente für alle ----------
   Ersetzt sechs identische Inline-Styles im Generator und vier Einzelregeln hier.
   Kein `outline: none` im Fokus: der globale :focus-visible-Ring muss für
   Tastaturbedienung erhalten bleiben — die Randfärbung kommt additiv dazu. */
.feld,
.az-filter input[type="search"],
.hundle-input input,
.wunsch-input,
.recht-select {
  font: inherit; font-size: 1rem; padding: 11px 14px;
  border: var(--rule); border-radius: var(--r);
  background: var(--surface); color: var(--ink);
  box-shadow: var(--shadow-card-sm); min-width: 0;
}
.feld { width: 100%; margin-top: 6px; }
.feld:focus,
.az-filter input[type="search"]:focus,
.hundle-input input:focus,
.wunsch-input:focus,
.recht-select:focus { border-color: var(--accent); }

/* ---------- A-Z ---------- */
.az-filter { display: flex; gap: 8px; flex-wrap: wrap; margin: 20px 0; align-items: center; }
.az-filter input[type="search"] { flex: 1 1 100%; }
@media (min-width: 640px) { .az-filter input[type="search"] { flex: 1 1 280px; } }
/* Bedienbare Chips tragen die Systemkante — reine Metadaten-Chips bewusst nicht (siehe .chip) */
.az-filter button.chip { cursor: pointer; font: inherit; font-size: .82rem; padding: 7px 14px; border: var(--rule); background: var(--surface); color: var(--ink); border-radius: var(--r); }
.az-filter button.chip[aria-pressed="true"] { background: var(--action); color: var(--action-ink); border-color: var(--ink-fest); font-weight: 700; }

.card.rasse-mini, .rasse-mini { display: flex; align-items: center; gap: 12px; padding: 10px 14px; }
.rasse-mini .avatar { width: 42px; height: 42px; }
.rasse-mini .name { font-weight: 600; line-height: 1.3; font-size: .96rem; min-width: 0; }
.rasse-mini .meta { margin-left: auto; display: flex; gap: 5px; flex-wrap: wrap; justify-content: flex-end; min-width: 0; }
/* Umbrechen statt abschneiden: Herkünfte wie „Ehemalige Sowjetunion / Zentralasien" sind sonst
   breiter als die Rasterspalte und blähen die Seitenbreite auf. */
.rasse-mini .meta .chip { white-space: normal; text-align: right; }
@media (max-width: 480px) { .rasse-mini .meta .chip.plain { display: none; } }
/* Auf sehr schmalen Geräten rutscht die Chip-Gruppe unter den Namen, statt ihn zu quetschen. */
@media (max-width: 400px) {
  .card.rasse-mini, .rasse-mini { flex-wrap: wrap; row-gap: 6px; }
  .rasse-mini .meta { margin-left: 54px; justify-content: flex-start; }
}

/* ---------- Rasse-Hero / VS ---------- */
.breed-hero { display: flex; gap: 18px; align-items: center; margin: 14px 0 6px; }
.breed-hero > * { min-width: 0; }   /* Flex-Kinder dürfen schrumpfen (min-width:auto ist der Default) */
.breed-hero .avatar { width: clamp(76px, 20vw, 100px); height: clamp(76px, 20vw, 100px); }
.breed-hero h1 { margin: 0 0 8px; }
.breed-hero .chips { display: flex; gap: 6px; flex-wrap: wrap; }

.vs-hero { display: flex; align-items: center; justify-content: center; gap: 18px; margin: 24px 0 4px; }
.vs-hero .avatar { width: clamp(68px, 18vw, 92px); height: clamp(68px, 18vw, 92px); }
.vs-hero .vs { color: var(--muted); font-size: .8rem; font-weight: 650; letter-spacing: .08em; }

/* ---------- Prosa ---------- */
.prose { font-size: 1.01rem; }
.prose p { margin: .85em 0; }
.prose ul { padding-left: 22px; }
.prose li { margin: .35em 0; }
.toc { border: var(--rule); border-radius: var(--r); padding: 14px 18px; font-size: .9rem; background: var(--surface); }
.toc ul { margin: 6px 0 0; padding-left: 18px; }
.toc li { margin: 4px 0; }

.quiz-cta { border: var(--rule); border-radius: var(--r); box-shadow: var(--shadow-card-sm); padding: 24px; text-align: center; background: var(--surface); }
.quiz-cta h3 { margin: 0 0 4px; }
.quiz-cta .small { margin: 0 0 14px; }

/* ---------- BLUF-Kopier-Button (AEO: Zero-Click wird Brand-Distribution) ---------- */
.bluf { position: relative; }
.bluf-copy {
  position: absolute; top: 2px; right: 0; background: var(--surface); border: var(--rule);
  color: var(--ink); font: inherit; font-size: .72rem; font-weight: 650; padding: 4px 10px;
  border-radius: var(--r-s); cursor: pointer;
}
.bluf-copy:hover { background: var(--wash); }

/* ---------- Embed-Modus (Quiz als Widget) ---------- */
body.embed { --tabbar-h: 0px; }
body.embed { padding-bottom: 0; }
body.embed .site-header, body.embed .site-footer, body.embed .tabbar, body.embed .sticky-cta { display: none; }
.embed-credit { text-align: center; margin-top: 20px; }

/* ---------- Hundle (tägliches Rasse-Rätsel) ---------- */
.hundle-face { display: grid; place-items: center; margin: 18px 0; }
.hundle-face .avatar { width: 148px; height: 148px; transition: filter .5s ease; }
.hundle-guesses { display: grid; gap: 8px; margin: 16px 0; }
.hundle-row { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; font-size: .85rem; }
.hundle-row .gname { font-weight: 650; min-width: 130px; }
.hint { display: inline-flex; align-items: center; gap: 4px; font-size: .76rem; font-weight: 650; padding: 3px 9px; border-radius: 6px; background: var(--wash); color: var(--muted); }
.hint.ok { background: var(--accent); color: var(--accent-ink); }
.hundle-input { display: flex; gap: 8px; margin-top: 14px; }
.hundle-input input { flex: 1; font: inherit; font-size: 1rem; padding: 12px 16px; border-radius: 10px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink); min-width: 0; }
.hundle-input input:focus { border-color: var(--accent); outline: none; }

/* ---------- Quiz v3: Wunschhund + Signifier ---------- */
.wunsch-input {
  width: 100%; font: inherit; font-size: 1.05rem; padding: 14px 18px; border-radius: 10px;
  border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink);
}
.wunsch-input:focus { border-color: var(--gold); outline: none; }
.wunsch-input:focus-visible,
.hundle-input input:focus-visible,
.az-filter input[type="search"]:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.wunsch-preview { min-height: 56px; margin-top: 10px; display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-start; }
.wunsch-vorschlag { cursor: pointer; font-size: .88rem; padding: 10px 16px; min-height: 44px; background: var(--surface); }
.wunsch-vorschlag:hover { border-color: var(--gold); color: var(--gold-ink); }
.wunsch-hit { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border: 1px solid var(--gold-line); background: var(--gold-wash); border-radius: 10px; font-size: .95rem; animation: qIn .25s ease; margin-top: 14px; }
.q-progress .kandidaten { font-variant-numeric: tabular-nums; }
.q-progress .kandidaten em { font-style: normal; color: var(--gold-ink); font-weight: 700; animation: qIn .4s ease; }
.precision { border-bottom: 1px solid var(--line); padding-bottom: 12px; margin-bottom: 4px; text-wrap: pretty; }
@media (max-width: 480px) { .precision { font-size: .8rem; line-height: 1.5; } }
.wunsch-teaser { margin: 10px 0 0; }
.mini-match { display: flex; align-items: center; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); color: var(--ink); }
.mini-match:last-child { border-bottom: 0; padding-bottom: 0; }
.mini-match:hover { text-decoration: none; }
.mini-match:hover strong { color: var(--accent); }
.mini-match .avatar { flex: 0 0 auto; }
.mini-match .mm-name { flex: 1; min-width: 0; }
.mini-match .mm-pct { font-weight: 700; font-variant-numeric: tabular-nums; color: var(--accent); }
.cluster-label { margin: 18px 0 4px; }
.cluster-label a { color: var(--muted); }
.cluster-label a:hover { color: var(--accent); text-decoration: none; }
.lh-mark { color: var(--warn); font-weight: 700; cursor: help; }
/* Spezifität: das Markup ist class="chip plain lh-chip". .chip.plain (0,2,0) schlug die
   einklassige Regel (0,1,0), die Coral-Fläche rendert also nie — der stärkste K.-o.-Hinweis
   der Plattform sah aus wie ein neutrales Etikett. Jetzt .chip.lh-chip (0,2,0), später notiert. */
.chip.lh-chip { background: var(--warn-wash); color: var(--warn); border: 2px solid var(--warn); font-weight: 700; }
.wunsch-mini { display: flex; align-items: center; gap: 8px; font-size: .82rem; color: var(--muted); margin: -18px 0 20px; }
.wunsch-mini .avatar { flex: 0 0 auto; }
.wunsch-mini strong { color: var(--gold-ink); }
.prio-box:not(:empty) { margin-top: 14px; padding: 12px 14px; background: var(--gold-wash); border: 1px solid var(--gold-line); border-radius: 10px; animation: qIn .25s ease; }
.prio-frage { margin: 0 0 8px; color: var(--gold-ink); font-weight: 600; }
.prio-box .prio-chip { cursor: pointer; background: var(--surface); border-color: var(--gold-line); color: var(--ink); font-size: .85rem; padding: 8px 14px; min-height: 40px; }
.prio-box .prio-chip:hover { border-color: var(--gold); }
.prio-box .prio-chip.on { border-color: var(--gold); box-shadow: inset 0 0 0 1px var(--gold); color: var(--gold-ink); font-weight: 650; }
.wunsch-card { border-color: var(--accent); border-width: 1.5px; }
.q-opt .key:empty { background: transparent; border: 1.5px solid var(--line-strong); border-radius: 6px; }
.q-opt.selected .key:empty { border-color: var(--accent); }

/* ---------- KI-Prompt-Packs ---------- */
.promptcard { border: var(--rule); border-radius: var(--r); box-shadow: var(--shadow-card-sm); background: var(--surface); margin: 18px 0; overflow: hidden; }
.promptcard .phead { display: flex; align-items: center; gap: 12px; padding: 16px 18px; border-bottom: var(--rule); }
.promptcard .phead h3 { margin: 0; flex: 1; }
.promptcard .pcopy { background: var(--ink); color: var(--bg); border: var(--rule); font: inherit; font-size: .82rem; font-weight: 650; padding: 8px 16px; border-radius: var(--r-s); cursor: pointer; white-space: nowrap; }
.promptcard .pcopy:hover { background: var(--accent); color: var(--accent-ink); }
.promptcard pre { margin: 0; padding: 16px 18px; font-family: var(--mono); font-size: .82rem; line-height: 1.55; white-space: pre-wrap; color: var(--ink); background: var(--wash); max-height: 300px; overflow-y: auto; }
.promptcard .pfor { padding: 10px 18px; }

/* ---------- Mythen-Prüfstelle ---------- */
.verdict { display: inline-block; font-family: var(--mono); font-size: .72rem; font-weight: 700; letter-spacing: .1em; padding: 4px 12px; border-radius: 6px; border: 1.5px solid; text-transform: uppercase; }
.verdict.false { color: var(--warn); border-color: var(--warn); }
.verdict.true { color: var(--accent); border-color: var(--accent); }
.verdict.mixed { color: var(--muted); border-color: var(--line-strong); }
.mythos { border: var(--rule); border-radius: var(--r); box-shadow: var(--shadow-card-sm); background: var(--surface); padding: 20px; margin: 14px 0; }
.mythos .claim { font-size: 1.08rem; font-weight: 700; letter-spacing: -.015em; margin: 0 0 10px; }

@media (max-width: 640px) {
  .bar-row { grid-template-columns: minmax(95px, 120px) 1fr 36px; }
  .card { padding: 16px; }
  section.block { margin: 40px 0; }
}

/* ---------- Druck: Checklisten & Starterpakete ---------- */
@media print {
  .site-header, .site-footer, .tabbar, .sticky-cta, .quiz-cta, .crumbs, .btn, script { display: none !important; }
  body { padding-bottom: 0; background: #fff; }
  .fold { border: 0; }
  .fold > summary { font-weight: 700; }
  .fold > .inner, details.fold:not([open]) > .inner { display: block !important; }
  a { color: inherit; text-decoration: none; }
  .card { position: static !important; box-shadow: none; }
}

.sp-list label:has(input:checked) strong { color: var(--muted); }
.sp-list label:has(input:checked) strong { text-decoration: line-through; text-decoration-thickness: 1px; }
@media print {
  body.print-list main > .wrap > *:not(h1):not(.sp-list):not(h3):not(#einkaufsliste) { display: none; }
  body.print-list #einkaufsliste, body.print-list h1, body.print-list .sp-list, body.print-list .sp-list + h3, body.print-list h3 { display: block; }
}

/* ---------- Produkt-Empfehlungen (Affiliate, tasteful) ---------- */
.produkte .produkt-row { display: flex; align-items: center; gap: 14px; padding: 13px 0; border-bottom: 1px solid var(--line); }
.produkte .produkt-row:last-of-type { border-bottom: 0; padding-bottom: 4px; }
.produkt-row .pr-body { flex: 1; min-width: 0; }
.produkt-row .pr-body strong { display: block; }
.produkt-row .pr-cta { flex: 0 0 auto; padding: 9px 16px; font-size: .88rem; }
.produkt-strip { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 14px; }
.prod-chip { background: var(--surface); border: 1px solid var(--line-strong); color: var(--ink); font-weight: 600; }
.prod-chip:hover { border-color: var(--accent); color: var(--accent); text-decoration: none; }
.affiliate-hinweis { color: var(--muted); margin: 12px 0 0; padding-top: 10px; border-top: 1px solid var(--line); }
.produkt-teaser .btn { margin-top: 2px; }
/* Checklisten-Zeile: Item links, Shop-Link rechts */
.sp-item { display: flex; align-items: center; gap: 10px; }
.sp-item > label { flex: 1; margin: 0; }
.sp-item .sp-preis { white-space: nowrap; margin-left: 6px; }
.sp-item:has(input:checked) { opacity: .5; }
.sp-item:has(input:checked) .shop-link { opacity: 0; pointer-events: none; }
.shop-link { flex: 0 0 auto; font-size: .82rem; font-weight: 650; color: var(--accent); white-space: nowrap; padding: 6px 4px; }
.shop-link::after { content: " ↗"; }
.shop-link:hover { text-decoration: underline; }
@media (max-width: 480px) {
  .produkte .produkt-row { flex-direction: column; align-items: stretch; gap: 8px; }
  .produkt-row .pr-cta { align-self: flex-start; padding: 9px 16px; font-size: .84rem; }
}
@media print {
  body.print-list .produkte, body.print-list .shop-link, body.print-list .affiliate-hinweis { display: none !important; }
}

/* ---------- Anzeigen (AdSense, nur Content-Seiten) ---------- */
.ad-slot { margin: 30px auto; max-width: 100%; text-align: center; clear: both; }
.ad-slot .ad-label { display: block; font-size: .64rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); opacity: .7; margin-bottom: 6px; }
.ad-slot ins { display: block; min-height: 90px; background: transparent; }
.block .ad-slot { margin: 8px auto; }
@media print { .ad-slot { display: none !important; } }

/* ---------- Rechts-Check im Ergebnis ---------- */
.recht-select { width: 100%; font: inherit; font-size: 1rem; padding: 12px 14px; margin: 12px 0 4px; border-radius: 10px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink); }
.recht-select:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.recht-out:not(:empty) { margin-top: 12px; animation: qIn .25s ease; }
.recht-pflichten { margin: 6px 0 10px; padding-left: 20px; font-size: .9rem; }
.recht-pflichten li { margin: 5px 0; }

/* ---------- Marke: Wortmarke statt Kachel ---------- */
.logo { gap: 3px; align-items: baseline; }
.logo .wordmark { height: 21px; width: auto; color: var(--ink); display: block; }
.logo .logo-tld { font-size: .78rem; font-weight: 800; letter-spacing: -.02em; color: var(--muted); }
.logo:hover .wordmark { color: var(--accent); }
.logo .mark { display: none; }
@media (min-width: 861px) { .logo .wordmark { height: 24px; } }

/* ---------- Karten-Ästhetik: harte Kontur statt weichem Schatten ---------- */
.card, .quiz-cta, .kick-hero, #quiz {
  border-color: var(--line-strong);
  border-width: 2px;
  box-shadow: var(--shadow-card-sm);
}
.card { border-radius: 4px; }
a.card:hover { transform: translate(-1px, -1px); box-shadow: var(--shadow-card); }
.kick-hero, #quiz { border-radius: 5px; box-shadow: var(--shadow-card); }
.q-opt { border-radius: 3px; border-width: 2px; border-color: var(--line); }
.q-opt:hover { border-color: var(--ink); }
.q-opt.selected { background: var(--action); color: var(--action-ink);
  border-color: var(--ink-fest); box-shadow: inset 0 0 0 1px var(--ink-fest); }
.q-opt.selected .key { background: var(--ink-fest); color: var(--action); }
.q-opt.selected .sub { color: var(--action-ink); }

/* ---------- Primäre Aktion: Acid Lemon (nur Fläche, Ink-Text = 17:1) ---------- */
.btn { border: 2px solid var(--ink-fest); border-radius: 3px; background: var(--action); color: var(--action-ink); box-shadow: 3px 4px 0 var(--ink-fest); }
.btn:hover { background: var(--action); color: var(--action-ink); transform: translate(-1px,-1px); box-shadow: var(--shadow-card); }
.btn:active { transform: translate(1px,1px); box-shadow: 1px 1px 0 var(--ink); }
.btn.ghost { background: var(--surface); color: var(--ink); border-color: var(--line-strong); box-shadow: var(--shadow-card-sm); }
.btn.ghost:hover { background: var(--wash); }
.nav a.cta, .header-cta a { background: var(--action); color: var(--action-ink); border: 2px solid var(--ink-fest); border-radius: 3px; }
.nav a.cta:hover, .header-cta a:hover { background: var(--action); color: var(--action-ink); }

/* ---------- Wesenskarten: die sechs Lebensdimensionen ---------- */
.wk-kopf {
  display: inline-flex; align-items: center; gap: 9px;
  padding: 7px 14px 7px 11px; margin-bottom: 16px;
  border: 2px solid var(--ink-fest); border-radius: 3px;
  box-shadow: 3px 4px 0 var(--ink-fest); color: var(--ink-fest);
  font-weight: 800; letter-spacing: -.01em;
}
.wk-kopf.wk-dunkel { color: var(--paper-fest); }
.wk-kopf.wk-dunkel .wk-nr { color: var(--paper-fest); }
/* Deckkraft .85 ist das Minimum, das auf allen sechs Dimensionsflächen 4,5:1 hält
   (Ultramarine braucht .82). Die Nummer tritt über Größe und Mono-Satz zurück, nicht über Transparenz. */
.wk-nr { font-family: var(--mono); font-size: .68rem; font-weight: 700; opacity: .85; letter-spacing: .04em; }
.wk-ico { flex: 0 0 auto; }
.wk-name { font-size: .95rem; text-transform: uppercase; letter-spacing: .04em; }
@media (max-width: 480px) { .wk-kopf { padding: 6px 12px 6px 9px; margin-bottom: 13px; } .wk-name { font-size: .86rem; } }

/* ---------- Kartenfächer: sechs Wesenskarten je Rasse ---------- */
.wk-faecher { display: flex; gap: 5px; margin: 12px 0 4px; flex-wrap: wrap; }
.wk-mini {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px;
  width: 44px; height: 54px; flex: 0 0 auto;
  border: 2px solid var(--ink-fest); border-radius: 3px; box-shadow: 2px 3px 0 var(--ink-fest);
  color: var(--ink-fest); cursor: help;
}
.wk-mini.wk-dunkel { color: var(--paper-fest); }
.wk-mini-wert { font-family: var(--mono); font-size: .95rem; font-weight: 700; line-height: 1; }
.wk-mini .wk-ico { opacity: .85; }
.match-card:hover .wk-mini { box-shadow: 2px 3px 0 var(--ink); }
@media (max-width: 400px) { .wk-mini { width: 40px; height: 49px; } }

/* ---------- Claim ---------- */
.claim {
  font-size: clamp(1.15rem, 2.6vw, 1.5rem); font-weight: 800; letter-spacing: -.025em;
  margin: 0 0 10px; color: var(--ink); display: inline-block;
  border-bottom: 4px solid var(--accent); padding-bottom: 1px;
}

/* ---------- Wesenskarten groß (Rasseseite) ---------- */
/* Sechs Karten = EIN Fächer: auf Desktop eine Reihe, nicht als Raster zerfallen */
.wk-gross { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; margin: 14px 0 10px; }
@media (max-width: 900px) { .wk-gross { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; } }
/* Die Wesenskarte ist eine SPIELKARTE, kein Kachel-Tile: Hochformat 2:3, Nummer oben,
   Name laut in Display-Schrift, Wert in Mono, Papiertextur auf der Farbfläche.
   Radius max. 3px und harter Versatzschatten — Vorgabe des Design-Systems. */
.wk-karte {
  display: flex; flex-direction: column; padding: 9px 9px 10px;
  border: 2px solid var(--ink-fest); border-radius: 3px; box-shadow: var(--shadow-card-sm);
  color: var(--ink-fest); aspect-ratio: 2 / 3; position: relative; overflow: hidden;
  background-image: url("/assets/paper.svg"); background-size: 180px 180px;
  background-blend-mode: multiply;
}
.wk-karte.wk-dunkel { color: var(--paper-fest); }
.wk-karte .wk-nr { font-family: var(--mono); font-size: .66rem; font-weight: 700; opacity: .85; letter-spacing: .08em; }
/* Wie bei .hk-name am längsten Wort „ERFAHRUNG" ausgerichtet — sonst schneidet
   das overflow:hidden der Karte die letzten Buchstaben ab. */
/* „ERFAHRUNG" ist mit 9 Zeichen das längste Wort und passte bei keiner Größe sicher in
   die schmale Karte. Statt es abzuschneiden darf es umbrechen — auf einer Spielkarte
   ist ein zweizeiliger Titel richtig, ein abgeschnittener ist ein Fehler. */
.wk-karte-name {
  font-family: var(--display); font-weight: 900; font-size: clamp(.64rem, 1.02vw, .88rem);
  text-transform: uppercase; letter-spacing: -.04em; line-height: .92; margin-top: 1px;
  overflow-wrap: anywhere; -webkit-hyphens: auto; hyphens: auto;
}
.wk-karte .wk-ico { margin: auto 0 2px; }
.wk-karte-wert { font-family: var(--mono); font-size: clamp(1.5rem, 2.7vw, 2.1rem); font-weight: 700; line-height: 1; letter-spacing: -.04em; }
/* Lange Komposita („wohnungstauglich", „anfängertauglich") sprengen die schmale Karte.
   lang="de" ist gesetzt, also trennt der Browser korrekt; break-word als Rückfall. */
.wk-karte-txt { font-size: .7rem; line-height: 1.35; opacity: .8; margin-top: 2px;
  -webkit-hyphens: auto; hyphens: auto; overflow-wrap: break-word; }
@media (max-width: 520px) {
  .wk-gross { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
  .wk-karte { padding: 9px 8px 11px; min-height: 128px; }
  .wk-karte-wert { font-size: 1.45rem; }
  .wk-karte-name { font-size: .7rem; }
  .wk-karte-txt { font-size: .73rem; line-height: 1.3; opacity: .88; }  /* 11.7px — lesbar statt gequetscht */
}

/* ---------- Kartenduell (Vergleichsseiten) ---------- */
.wk-duell { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin: 12px 0 22px; }
.wk-duell-name { font-weight: 800; font-size: .92rem; margin: 0 0 7px; letter-spacing: -.01em; }
.wk-duell .wk-faecher { margin: 0; gap: 4px; }
@media (max-width: 620px) {
  .wk-duell { grid-template-columns: 1fr; gap: 14px; }
}

/* ---------- Hero-CTA: Acid Lemon auf Ink, groß genug für den ersten Viewport ---------- */
.hero-cta { margin: 20px 0 18px; }
.btn.btn-gross {
  font-family: var(--condensed); font-size: 1.22rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em;
  padding: 14px 30px; box-shadow: var(--shadow-card);
}
.btn.btn-gross:hover { box-shadow: 8px 9px 0 var(--ink-fest); }
/* Die erste Quizkarte ist eine eigene Sektion in voller Breite — kein Anhängsel der Bühne. */
.hero-quiz { margin-top: 4px; }
/* Antworten zweispaltig, sobald Platz ist: vier volle Zeilen wirken sonst wie ein Formular */
@media (min-width: 861px) { .kick-hero .opts { grid-template-columns: 1fr 1fr; gap: 10px; } }

/* ---------- Match-Badge: Prozentzahl auf Ink, Einordnung auf Acid Lemon ----------
   Nachbau der Referenz-Match-Ansicht („86% / SEHR GUTER MATCH").
   Beide Flächen sind themenfest, deshalb durchgehend --ink-fest/--paper-fest. */
.match-badge { margin-left: auto; display: flex; flex-direction: column; align-items: stretch; flex: 0 0 auto; }
.match-head .pct {
  margin: 0; background: var(--ink-fest); color: var(--paper-fest);
  font-family: var(--mono); font-weight: 700; font-size: 1.5rem; letter-spacing: -.04em;
  font-variant-numeric: tabular-nums; text-align: center; padding: 5px 12px 4px;
  border: 2px solid var(--ink-fest); border-bottom: 0; border-radius: 3px 3px 0 0;
}
.match-label {
  background: var(--action); color: var(--ink-fest);
  font-family: var(--mono); font-size: .58rem; font-weight: 700;
  letter-spacing: .09em; text-transform: uppercase; text-align: center;
  padding: 3px 8px 4px; border: 2px solid var(--ink-fest); border-radius: 0 0 3px 3px;
  white-space: nowrap;
}
@media (max-width: 480px) { .match-head .pct { font-size: 1.28rem; } .match-label { font-size: .53rem; letter-spacing: .06em; } }

/* ==================================================================
   REFERENZ-GRAMMATIK — gilt für ALLE Sections und Module
   Aus reference/hundstyp-wesenskarten-reference.png:
   jede Sektion trägt ein schwarzes Label-Badge in Mono über der
   Display-Headline; jede Karte ist ein physisches Objekt mit harter
   Kante und Versatzschatten.
   ================================================================== */

/* Section-Label — das schwarze Kästchen der Referenz („WESENSKARTEN", „MATCH-ANSICHTEN") */
.block[data-label]::before {
  content: attr(data-label);
  display: inline-block; margin-bottom: 12px;
  background: var(--ink-fest); color: var(--paper-fest);
  font-family: var(--mono); font-size: .62rem; font-weight: 700;
  letter-spacing: .14em; text-transform: uppercase;
  padding: 4px 10px 3px; border-radius: 2px;
}
.block { margin: 68px 0; }
.block > h2, .section-head h2 { font-family: var(--display); font-weight: 900; letter-spacing: -.03em; line-height: 1; }
.section-head { display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }
.section-head .more { margin-left: auto; font-family: var(--condensed); font-weight: 700;
  text-transform: uppercase; letter-spacing: .06em; font-size: .95rem; }

/* Karten sind Objekte: harte Kante, Versatzschatten, minimaler Radius, spürbarer Hover */
.card {
  border: var(--rule); border-radius: 3px; box-shadow: var(--shadow-card-sm);
  background: var(--surface); transition: transform .16s cubic-bezier(.16,1,.3,1), box-shadow .16s cubic-bezier(.16,1,.3,1);
}
a.card:hover { transform: translate(-2px, -2px); box-shadow: var(--shadow-card); text-decoration: none; }
.card > strong { font-family: var(--condensed); font-size: 1.16rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .01em; line-height: 1.1; display: block; }
.card h3 { font-family: var(--display); font-weight: 900; font-size: 1.02rem; letter-spacing: -.02em; margin: 0 0 6px; }

/* „So funktioniert's" — nummerierte Schrittkarten wie die Prozessleiste der Referenz */
.schritte { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); gap: 14px; }
.schritt { position: relative; padding: 34px 16px 16px; border: var(--rule); border-radius: 3px;
  background: var(--surface); box-shadow: var(--shadow-card-sm); }
.schritt::before {
  content: attr(data-nr); position: absolute; top: -2px; left: -2px;
  background: var(--ink-fest); color: var(--action);
  font-family: var(--mono); font-size: .7rem; font-weight: 700; letter-spacing: .08em;
  padding: 4px 10px 3px; border-radius: 3px 0 3px 0;
}
.schritt h3 { font-family: var(--display); font-weight: 900; font-size: 1.05rem; letter-spacing: -.02em; margin: 0 0 6px; }
.schritt p { margin: 0; font-size: .93rem; }

/* ---------- Quiz: Antwortoptionen sind Karten, keine Formularzeilen ---------- */
.q-opt, .kick-hero .opts a, .kickstart .opts a {
  border: var(--rule); border-radius: 3px; background: var(--surface);
  box-shadow: var(--shadow-card-sm);
  transition: transform .14s cubic-bezier(.16,1,.3,1), box-shadow .14s cubic-bezier(.16,1,.3,1), background .13s;
}
.q-opt:hover, .kick-hero .opts a:hover, .kickstart .opts a:hover {
  transform: translate(-2px, -2px); box-shadow: var(--shadow-card);
  border-color: var(--line-strong); background: var(--surface);
}
.q-opt:active { transform: translate(1px, 1px); box-shadow: 1px 1px 0 var(--line-strong); }
/* Gewählt = Lemon-Fläche mit Ink-Kante — dieselbe Sprache wie jede primäre Aktion */
.q-opt.selected { background: var(--action); color: var(--action-ink); border-color: var(--ink-fest); box-shadow: var(--shadow-card-sm); }
.q-opt.selected:hover { background: var(--action); }
/* Die Quizbühne trägt Papiertextur wie eine Kartenauslage */
#quiz, .kick-hero { background-image: url("/assets/paper.svg"); background-size: 320px 320px; }
/* Fortschritt: Ink, nicht Lemon — Lemon auf Wash wäre 1,08:1 und unsichtbar */
.q-progress .fill, .kick-hero .khead .kbar::after { background: var(--ink); }
.q-progress .track, .kick-hero .khead .kbar { background: var(--wash); box-shadow: inset 0 0 0 1px var(--line-strong); }

/* ---------- Rassenkarte: der Rasseseiten-Hero als Spielkarte ----------
   Nachbau der „HUNDERASSEN-KARTEN" aus dem Referenzbild: Karte mit laufender
   Nummer oben links, Motiv in der Mitte, Monogramm unten rechts. */
.rassenkarte {
  position: relative; flex: 0 0 auto;
  display: grid; place-items: center;
  width: 132px; aspect-ratio: 2 / 3; padding: 20px 10px;
  border: var(--rule); border-radius: 3px; box-shadow: var(--shadow-card);
  background: var(--surface); background-image: url("/assets/paper.svg");
  background-size: 180px 180px; background-blend-mode: multiply;
}
.rassenkarte .avatar { width: 92px; height: 92px; }
.rk-nr {
  position: absolute; top: 7px; left: 8px;
  font-family: var(--mono); font-size: .62rem; font-weight: 700;
  letter-spacing: .1em; color: var(--ink); opacity: .8;
}
.rk-monogramm {
  position: absolute; right: 8px; bottom: 6px;
  font-family: var(--display); font-weight: 900; font-size: .78rem;
  letter-spacing: -.04em; color: var(--ink); opacity: .55;
}
.breed-hero h1 { font-size: clamp(2rem, 5.6vw, 3.2rem); }
@media (max-width: 520px) {
  .rassenkarte { width: 104px; padding: 16px 8px; }
  .rassenkarte .avatar { width: 72px; height: 72px; }
}

/* ==================================================================
   QUIZ ALS KARTENSTAPEL
   Vorbild ist das Handy-Mockup der Referenz: die Frage ist eine
   aufgedeckte Karte — farbiger Kartenkopf mit Nummer, Dimensionsname
   und Zähler, darunter die Antworten als Karten. Kein Formular.
   ================================================================== */
.kk-kopf {
  display: flex; align-items: center; gap: 9px;
  padding: 10px 16px; color: var(--ink-fest);
  border-bottom: var(--rule);
  font-family: var(--display); font-weight: 900; letter-spacing: -.02em;
  background-image: url("/assets/paper.svg"); background-size: 180px 180px; background-blend-mode: multiply;
}
.kk-kopf.wk-dunkel { color: var(--paper-fest); }
.kk-nr { font-family: var(--mono); font-size: .68rem; font-weight: 700; letter-spacing: .1em; opacity: .85; }
.kk-name { font-size: 1.02rem; text-transform: uppercase; letter-spacing: -.02em; }
.kk-zaehler { margin-left: auto; font-family: var(--mono); font-size: .68rem; font-weight: 700;
  letter-spacing: .06em; opacity: .85; white-space: nowrap; }
/* Die Bühne selbst ist die Karte: harte Kante, minimaler Radius, Kopf bündig */
.kick-hero, #quiz {
  border: var(--rule); border-radius: 3px; box-shadow: var(--shadow-card);
  overflow: hidden; background: var(--surface);
}
.kick-hero .kbody { padding: 20px 18px 18px; }
.kick-hero .q, .q-title { font-family: var(--display); font-weight: 900; letter-spacing: -.025em; line-height: 1.05; }
/* Die alte Fortschrittszeile entfällt — der Zähler sitzt jetzt im Kartenkopf */
.kick-hero .khead { display: none; }
/* Im echten Quiz blieb „Frage 14 von 25" neben „Karte 14 / 25" stehen — doppelt gemoppelt.
   Der Kartenkopf trägt den Zähler, die Fortschrittszeile behält Balken und Kandidatenzahl. */
.q-progress .meta > span:first-child { display: none; }
.q-progress .meta { justify-content: flex-end; }
.q-progress .meta .checkpoint { display: inline; }   /* Etappen-Hinweis bleibt sichtbar */
@media (max-width: 480px) { .kk-kopf { padding: 9px 13px; } .kk-name { font-size: .92rem; } .kk-zaehler { font-size: .62rem; } }

/* ---------- Sektionsführung auf ALLEN Seitentypen ----------
   Die Inhaltsseiten (Rassen, Vergleiche, Register, Ratgeber, Recht, Starterpaket)
   nutzen kein .block-Gerüst. Damit auch dort die Referenz-Grammatik greift, bekommt
   jede H2 im Inhaltsbereich eine harte Oberkante — das gliedert die Seite in
   Abschnitte wie die Trennlinien im Referenzbogen. */
main .wrap > h2, .wrap.narrow > h2 {
  border-top: var(--rule); padding-top: 14px; margin-top: 2.4em;
}
main .wrap > h2:first-of-type, .wrap.narrow > h2:first-of-type { margin-top: 1.6em; }
/* Fließtext bleibt ruhig: keine Kante über H3 */
h3 { font-family: var(--condensed); font-weight: 700; text-transform: uppercase; letter-spacing: .02em; font-size: 1.12rem; }

/* ---------- K.-o.-Karte: die roteste Aussage der Plattform ----------
   Referenzvorgabe: „Konflikte und K.-o. erscheinen in Coral" und dürfen nie wie
   neutrale Hinweise aussehen. Coral ist eine themenfeste Fläche → --ink-fest als Text. */
.ko-fold { border-color: var(--warn-flat); }
.ko-fold > summary {
  display: flex; align-items: center; gap: 12px;
  background: var(--warn-flat); color: var(--ink-fest);
  padding: 12px 16px; font-weight: 700;
  background-image: url("/assets/paper.svg"); background-size: 180px 180px; background-blend-mode: multiply;
}
.ko-fold[open] > summary { border-bottom: var(--rule); }
.ko-fold > summary::after { color: var(--ink-fest); }
.ko-marke {
  font-family: var(--display); font-weight: 900; font-size: 1.15rem;
  letter-spacing: -.04em; line-height: 1; flex: 0 0 auto;
  background: var(--ink-fest); color: var(--warn-flat);
  padding: 5px 9px 4px; border-radius: 2px;
}
.ko-text { font-family: var(--condensed); font-size: 1.04rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .02em; line-height: 1.15; }
@media (max-width: 480px) { .ko-marke { font-size: 1rem; } .ko-text { font-size: .92rem; } }

/* ==================================================================
   FEINSCHLIFF — aus der Sechs-Dimensionen-Prüfung, gegengeprüft
   ================================================================== */

/* ---------- Satzbreite: Textblöcke messen ~66 Zeichen ----------
   Gemessen liefen Absätze mit 82–122 Zeichen pro Zeile — bei deutschen Komposita
   verliert das Auge dort die Zeile. Nur Fließtext wird begrenzt; Raster, Tabellen
   und Kartenfächer bleiben unberührt, sonst zerfällt das Layout. */
main .wrap > p, main .wrap > ul, main .wrap > ol, main .wrap > dl,
main .wrap > .bluf, main .wrap > .toc,
.prose p, .prose ul, .prose ol,
details.fold .inner p, details.fold .inner ul { max-width: 56ch; }
.bluf { max-width: 58ch; }
/* 56ch statt 66ch: die Einheit ch misst die Breite der Ziffer 0, die breiter ist als
   der Durchschnitt der Kleinbuchstaben — 66ch ergaben gemessen 81 echte Zeichen. */

/* ---------- Breadcrumb: verschachtelte .wrap rückten ihn 20px gegen die H1 ein ----------
   crumbsHtml erzeugt <nav class="crumbs wrap"> INNERHALB eines .wrap — 20px außen plus
   20px innen. Ein gebrochener linker Satzrand direkt über der Headline, auf jeder Seite. */
.crumbs.wrap { max-width: none; padding-inline: 0; margin-inline: 0; }

/* ---------- Absatzrhythmus und Lesbarkeit ---------- */
.prose p, main .wrap > p { margin: 0 0 1.05em; }
p { -webkit-hyphens: auto; hyphens: auto; }
h1, h2, h3, .kk-name, .hk-name, .wk-karte-name, .match-head > strong { -webkit-hyphens: manual; hyphens: manual; }

/* ---------- Der Match-Name ist der wichtigste Text des Produkts ----------
   .card > strong traf ihn nie (Kindkombinator, er liegt in .match-head) — er stand als
   einziger Kartentitel in der Systemschrift neben einem 24px-Mono-Badge. */
.match-head > strong {
  font-family: var(--display); font-weight: 900;
  font-size: clamp(1.14rem, 4.4vw, 1.44rem);
  letter-spacing: -.03em; line-height: 1.02;
  min-width: 0; overflow-wrap: anywhere;
}
@media (max-width: 400px) { .match-head > strong { font-size: 1.08rem; } }
.rasse-mini .name { font-family: var(--condensed); font-size: 1.05rem; font-weight: 700; letter-spacing: .01em; }

/* ---------- Sprungmarken landeten unter dem klebenden Header ---------- */
html { scroll-padding-top: 76px; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* ---------- Eine Geste, eine Dauer, eine Kurve ----------
   Vorher sieben Dauern (.13s–.6s) und drei Kurven für dieselbe Bewegung. */
:root { --takt: .16s; --kurve: cubic-bezier(.16, 1, .3, 1); }
.card, a.card, .btn, .q-opt, .chip, .kick-hero .opts a, .kickstart .opts a,
.feld, .az-filter input[type="search"], details.fold summary, .bluf-copy, .promptcard .pcopy {
  transition: transform var(--takt) var(--kurve), box-shadow var(--takt) var(--kurve),
              background-color var(--takt) var(--kurve), border-color var(--takt) var(--kurve),
              color var(--takt) var(--kurve);
}

/* ---------- Rückmeldung auf JEDES Bedienelement ---------- */
a.chip:hover, button.chip:hover { border-color: var(--line-strong); transform: translate(-1px, -1px); }
a.chip:active, button.chip:active { transform: translate(0, 0); }
details.fold summary { cursor: pointer; }
details.fold > summary:hover { background: var(--wash); }
.ko-fold > summary:hover { background: var(--warn-flat); filter: brightness(1.06); }
/* Eigener Press-Zustand statt grauem System-Highlight auf Touch */
a, button, summary, .q-opt, .chip { -webkit-tap-highlight-color: transparent; }

/* ---------- Reduzierte Bewegung: auch Verzögerungen abschalten ----------
   Vorher wurden nur Dauern genullt — verzögerte Übergänge starteten weiterhin
   versetzt und das Ergebnis flackerte. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    transition-delay: 0ms !important;
    animation-delay: 0ms !important;
    scroll-behavior: auto !important;
  }
}

/* ---------- Tippziele: Fußzeile und Navigation ---------- */
.site-footer li { margin: 0; }
.site-footer li a { display: inline-flex; align-items: center; min-height: 40px; padding: 2px 0; }
.crumbs a { display: inline-block; padding: 4px 0; }

/* ---------- Deckkraft drückte Text unter die Kontrastschwelle ---------- */
.wk-karte-txt { opacity: .92; }
.hk-fuss, .hk-nr, .kk-nr, .kk-zaehler { opacity: 1; }
.wk-nr { opacity: .9; }

/* ---------- Mobil: Vergleichstabelle zeigte die zweite Rasse gar nicht ----------
   table.cmp hat min-width: 420px im Scrollcontainer — auf 320–375px lag Spalte 3
   (die zweite Rasse) außerhalb, ohne Hinweis, dass dort noch etwas ist. */
@media (max-width: 560px) {
  table.cmp { min-width: 0; table-layout: fixed; width: 100%; }
  table.cmp th, table.cmp td { padding: 9px 8px; overflow-wrap: anywhere; -webkit-hyphens: auto; hyphens: auto; font-size: .86rem; }
  table.cmp th:first-child, table.cmp td:first-child { width: 34%; }
}
table.cmp td, table.cmp th { font-variant-numeric: tabular-nums lining-nums; }
table.cmp thead th { font-family: var(--condensed); }

/* ---------- Wesenskarten schnitten auf 320px ihre Deutung ab ----------
   Die Flaggschiff-Komponente auf 304 Rasseseiten: aspect-ratio 2:3 gab bei drei
   Spalten à ~90px nur ~135px Höhe — zu wenig für Nummer, Name, Icon, Wert und Text. */
@media (max-width: 400px) {
  .wk-karte { aspect-ratio: auto; min-height: 150px; }
  .wk-karte-txt { font-size: .74rem; line-height: 1.28; }
}

/* ---------- Sticky-CTA verdeckte das Seitenende ----------
   Sie liegt fest über dem Inhalt; ohne Reserve am Seitenfuß bleibt der letzte
   Absatz dauerhaft darunter verborgen. */
body:has(.sticky-cta) .site-footer { padding-bottom: 92px; }
@media (min-width: 861px) { body:has(.sticky-cta) .site-footer { padding-bottom: 72px; } }
.sticky-cta > span { font-family: var(--condensed); font-size: .96rem; }

/* ---------- Karten-Überschriften brachen bei 360–430px aus der Karte ---------- */
.card > strong, .schritt h3, .card h3 { overflow-wrap: anywhere; -webkit-hyphens: auto; hyphens: auto; }

/* ---------- Match-Badge: Einordnung stand bei 8,5px ---------- */
.match-label { font-size: .62rem; letter-spacing: .07em; }
@media (max-width: 480px) { .match-label { font-size: .58rem; letter-spacing: .05em; } }

/* ---------- Fokusring muss auf JEDER Fläche sichtbar sein ----------
   Ultramarine auf Ink ergibt nur 3,12:1, auf Coral 1,97:1 — auf dunklen und
   farbigen Flächen trägt deshalb Lemon den Ring (17,1:1 auf Ink). */
.site-header a:focus-visible, .tabbar a:focus-visible,
.ko-fold > summary:focus-visible, .promptcard .pcopy:focus-visible,
.match-head .pct:focus-visible, .btn:focus-visible {
  outline: 3px solid var(--action); outline-offset: 2px;
}
.promptcard .pcopy:focus-visible { outline-offset: -3px; }

/* ---------- Skip-Link: fehlte komplett ----------
   Tastaturnutzer mussten sich auf jeder Seite durch Header und Navigation tabben. */
.skip-link {
  position: absolute; left: 12px; top: -60px; z-index: 100;
  background: var(--action); color: var(--ink-fest);
  border: var(--rule); border-radius: 3px; box-shadow: var(--shadow-card-sm);
  padding: 10px 18px; font-family: var(--condensed); font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em;
  transition: top var(--takt) var(--kurve);
}
.skip-link:focus { top: 10px; text-decoration: none; }
main:focus { outline: none; }
