/* ============================================================
   Bester Caterer — Design System v2  "Forest & Lime"
   Ruhiges Premium-Grün · viel Weißraum · große Rundungen
   Vend Sans (selbst gehostet)
   ============================================================ */

/* Vend Sans — lokal ausgeliefert, keine Google-Verbindung */
@font-face {
  font-family: 'Vend Sans'; font-style: normal; font-weight: 300 700; font-display: swap;
  src: url(fonts/vend-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Vend Sans'; font-style: normal; font-weight: 300 700; font-display: swap;
  src: url(fonts/vend-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Vend Sans'; font-style: italic; font-weight: 300 700; font-display: swap;
  src: url(fonts/vend-italic-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Vend Sans'; font-style: italic; font-weight: 300 700; font-display: swap;
  src: url(fonts/vend-italic-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  /* --- surfaces --- */
  --paper:        #eef1ec;   /* Seitenhintergrund, warmes Off-White */
  --paper-2:      #e3e8e0;
  --paper-card:   #ffffff;   /* Karten */
  --paper-soft:   #f5f8f3;

  /* --- ink / text --- */
  --ink:          #14211d;   /* fast-schwarzes Tannengrün */
  --ink-soft:     #45514c;
  --ink-faint:    #5a655f;   /* AA-konform auf Weiß */
  --line:         #e2e7e1;
  --line-strong:  #cfd6ce;

  /* --- accent: forest & lime --- */
  --brass:        #0c6152;   /* „Akzent" (Zahlen, Icons) — remapped auf Grün */
  --brass-deep:   #044034;   /* Links / dunkler Akzent (AA auf Weiß) */
  --brass-light:  #cfe6a3;   /* helle Akzentfläche = Lime-Ton */
  --lime:         #e5f0c6;   /* Signature-Lime */
  --lime-deep:    #d3e6a1;
  --lime-ink:     #2c3a12;   /* Text auf Lime */

  /* --- dark surfaces (Forest) --- */
  --laurel:       #034f46;   /* Primär-Grün */
  --laurel-deep:  #022e29;   /* dunkelstes Grün */
  --laurel-light: #0c6152;
  --forest-grad:  linear-gradient(150deg, #045349 0%, #023b33 100%);
  --bordeaux:     #7a2f2c;
  --good:         #0c6152;

  /* --- type --- */
  --display: 'Vend Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --serif:   'Vend Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --sans:    'Vend Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  /* --- radius / shadow --- */
  --r-sm: 12px;
  --r:    18px;
  --r-lg: 20px;
  --r-xl: 24px;
  --pill: 999px;
  --shadow-sm: 0 1px 2px rgba(3,49,40,.05), 0 4px 14px rgba(3,49,40,.05);
  --shadow:    0 10px 34px rgba(3,49,40,.09), 0 2px 8px rgba(3,49,40,.05);
  --shadow-lg: 0 26px 64px rgba(3,49,40,.16), 0 8px 24px rgba(3,49,40,.09);

  --maxw: 1400px;

  /* --- sticky offsets: EINE Quelle für Subnav, Sidebar, Anker und Scroll-Spy --- */
  --masthead-h: 73px;   /* 72px Leiste + 1px Linie */
  --subnav-h:   46px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  font-family: var(--sans);
  color: var(--ink);
  background-color: var(--paper);
  font-size: 15px;
  line-height: 1.62;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  /* clip statt hidden: verhindert Quer-Scrollen genauso, macht den Body aber
     NICHT zum Scroll-Container — sonst frieren scroll-getriebene view()-
     Animationen (Header-Parallax) ein. */
  overflow-x: clip;
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }

/* ---------- typography ---------- */
h1, h2, h3, h4 {
  font-family: var(--display);
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -.015em;
  margin: 0 0 .5em;
  color: var(--ink);
}
h1 { font-size: clamp(2.1rem, 5vw, 3.6rem); font-weight: 500; }
h2 { font-size: clamp(1.5rem, 3.1vw, 2.25rem); }
h3 { font-size: clamp(1.08rem, 1.8vw, 1.35rem); font-weight: 500; }
.category-hero h1 { font-size: clamp(1.9rem, 4.5vw, 3.1rem); }
p { margin: 0 0 1em; }
strong { font-weight: 600; }
.lead { font-size: 1.1rem; font-weight: 400; color: var(--ink-soft); line-height: 1.55; letter-spacing: -.005em; }

.eyebrow {
  font-family: var(--sans);
  font-size: .65rem; font-weight: 600;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--brass-deep);
  display: inline-flex; align-items: center; gap: .6em;
}
.eyebrow::before { content:""; width: 22px; height: 2px; border-radius:2px; background: var(--laurel-light); display:inline-block; }

/* Lime-Pill-Eyebrow (auf dunklen Flächen / Hero) */
.eyebrow-pill {
  display:inline-flex; align-items:center; gap:.5em;
  font-family: var(--sans); font-size:.63rem; font-weight:600;
  letter-spacing:.16em; text-transform:uppercase;
  padding:7px 16px; border-radius:var(--pill);
  background: rgba(229,240,198,.14); border:1px solid rgba(229,240,198,.32);
  color: var(--lime);
}
.eyebrow-pill.solid { background: var(--lime); border-color:transparent; color: var(--lime-ink); }

.serif-num { font-family: var(--display); font-variant-numeric: lining-nums; }

/* ---------- layout ---------- */
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 24px; }
.narrow { max-width: 760px; margin: 0 auto; padding: 0 24px; }
section { padding: clamp(52px, 8vw, 104px) 0; }

/* ---------- masthead ---------- */
.masthead {
  position: sticky; top: 0; z-index: 100;
  background: rgba(238,241,236,.8);
  backdrop-filter: saturate(150%) blur(14px);
  border-bottom: 1px solid var(--line);
}
.masthead .wrap { display: flex; align-items: center; justify-content: space-between; height: 72px; }
.brand { display: flex; align-items: center; gap: 11px; }
/* Die Bildmarke steht ohne Kreis — ihre viewBox ist auf die Marke zugeschnitten
   und damit nicht quadratisch. Höhe deshalb auto, sonst wird sie gestaucht. */
.brand .mark { width: 42px; height: auto; }
.brand .name { font-family: var(--display); font-weight: 500; font-size: 1.17rem; letter-spacing: -.02em; }
.brand .name b { color: var(--laurel); font-weight: 600; }
.nav { display: flex; align-items: center; gap: 6px; }
.nav a { font-size: .93rem; font-weight: 500; color: var(--ink-soft); transition: color .2s, background .2s; padding: 9px 15px; border-radius: var(--pill); }
.nav a:not(.cta):hover { color: var(--laurel); background: rgba(3,79,70,.06); }
.nav a[aria-current="page"]:not(.cta) { color: var(--laurel); }
.nav .cta {
  font-weight: 600; color: #fff;
  background: var(--laurel); padding: 10px 20px; margin-left: 8px;
}
.nav .cta:hover { background: var(--laurel-deep); color: #fff; }
.nav-toggle { display: none; }

/* Städte-Dropdown (datengetrieben aus den Live-Regionen). CSS-only:
   Desktop öffnet per :hover / :focus-within, Mobile rendert die Städte inline. */
.nav-drop { position: relative; }
.nav-drop-label {
  display: inline-flex; align-items: center; gap: 5px; cursor: pointer;
  font-size: .93rem; font-weight: 500; color: var(--ink-soft);
  background: none; border: 0; padding: 9px 15px; border-radius: var(--pill);
  transition: color .2s, background .2s; font-family: inherit;
}
.nav-drop-label:hover { color: var(--laurel); background: rgba(3,79,70,.06); }
.nav-drop-caret { transition: transform .2s; }
.nav-drop:hover .nav-drop-caret, .nav-drop:focus-within .nav-drop-caret { transform: rotate(180deg); }
.nav-drop-menu {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 120;
  min-width: 210px; padding: 7px; display: flex; flex-direction: column; gap: 2px;
  background: var(--paper); border: 1px solid var(--line); border-radius: 14px;
  box-shadow: 0 14px 34px rgba(3,42,38,.14);
  opacity: 0; visibility: hidden; transform: translateY(-6px);
  transition: opacity .18s, transform .18s, visibility .18s;
}
.nav-drop:hover .nav-drop-menu, .nav-drop:focus-within .nav-drop-menu {
  opacity: 1; visibility: visible; transform: none;
}
.nav-drop-menu a { padding: 9px 13px; border-radius: 9px; white-space: nowrap; }
.nav-drop-menu a:hover { color: var(--laurel); background: rgba(3,79,70,.06); }

/* ---------- Bedarfs-Finder (Header-Widget) ---------- */
/* Bedarfs-Finder: prominente KI-Suche unter dem Hero, über die volle Layout-Grid-Breite. */
.finder { padding: clamp(24px, 3.6vw, 40px) 0 8px; }
.finder .wrap { position: relative; }
.finder-field { position: relative; }
.finder-sub { text-align: center; font-size: .82rem; color: var(--ink-soft); margin: 13px auto 0; max-width: 66ch; }
.finder-box { display: flex; align-items: center; gap: 9px; background: var(--paper-card, #fff);
  border: 1.5px solid var(--line); border-radius: var(--pill); padding: 8px 8px 8px 18px;
  box-shadow: 0 12px 30px -12px rgba(3,79,70,.18);
  transition: border-color .18s, box-shadow .18s; }
.finder-box:focus-within { border-color: var(--laurel); box-shadow: 0 0 0 4px rgba(3,79,70,.08), 0 12px 30px -12px rgba(3,79,70,.2); }
/* Eingabefeld (Startseite UND Antwortseite) — klassenbasiert, nicht an einer ID hängend. */
.finder-box input[type="search"] { flex: 1 1 auto; min-width: 0; border: 0; background: transparent; font: inherit; font-size: 1rem; color: var(--ink); padding: 8px 0; outline: none; -webkit-appearance: none; appearance: none; }
.finder-box input[type="search"]::placeholder { color: var(--ink-faint); }
.finder-box input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; }
.finder-ico { color: var(--laurel); flex: 0 0 auto; }
/* Animierter AI-Orb als Such-Icon (reines CSS, unsere Farben). */
.ai-orb { position: relative; width: 24px; height: 24px; border-radius: 50%; flex: 0 0 auto; overflow: hidden;
  background: radial-gradient(circle at 32% 28%, #f0f8d8 0%, #c7e39a 30%, #0b4f47 82%);
  box-shadow: inset 0 0 6px rgba(255,255,255,.5), 0 0 0 1px rgba(3,79,70,.10);
  animation: orb-glow 3.4s ease-in-out infinite; }
.ai-orb::after { content: ''; position: absolute; inset: -40%;
  background: conic-gradient(from 0deg, transparent 0%, rgba(199,227,154,.95) 22%, transparent 52%, rgba(11,79,71,.55) 76%, transparent 100%);
  animation: orb-spin 3.6s linear infinite; }
.ai-orb-core { position: absolute; inset: 0; border-radius: 50%; z-index: 1;
  background: radial-gradient(circle at 34% 30%, rgba(255,255,255,.9) 0%, transparent 42%); }
@keyframes orb-spin { to { transform: rotate(360deg); } }
@keyframes orb-glow {
  0%, 100% { box-shadow: inset 0 0 6px rgba(255,255,255,.5), 0 0 6px rgba(11,79,71,.22); }
  50% { box-shadow: inset 0 0 8px rgba(255,255,255,.6), 0 0 14px rgba(166,217,106,.55); }
}
@media (prefers-reduced-motion: reduce) { .ai-orb, .ai-orb::after { animation: none; } }
/* WebGL-Orb (assets/orb.js): Canvas füllt den Kreis, der CSS-Wirbel (::after) tritt zurück,
   der äußere Glow-Puls bleibt. Größen: Standard 24px, --lg 44px (Chat-Avatar), --xl 56px. */
.ai-orb-gl { position: absolute; inset: 0; width: 100%; height: 100%; border-radius: 50%; display: block; z-index: 2; }
.ai-orb.is-gl::after, .ai-orb.is-gl .ai-orb-core { display: none; }
.ai-orb.is-gl { background: var(--laurel-deep); }
.ai-orb--lg { width: 44px; height: 44px; }
.ai-orb--xl { width: 56px; height: 56px; }
.ai-orb.is-thinking { animation-duration: 1.2s; }
@keyframes orb-glow-strong {
  0%, 100% { box-shadow: 0 0 8px rgba(11,79,71,.25); }
  50% { box-shadow: 0 0 22px rgba(166,217,106,.75), 0 0 44px rgba(166,217,106,.25); }
}
.ai-orb.is-thinking { animation: orb-glow-strong 1.2s ease-in-out infinite; }
#finderInput { flex: 1; min-width: 0; border: 0; background: transparent; outline: none;
  font: inherit; font-size: 1rem; color: var(--ink); padding: 8px 4px; }
#finderInput::placeholder { color: var(--ink-soft); opacity: .8; }
#finderInput::-webkit-search-decoration, #finderInput::-webkit-search-cancel-button { display: none; }
.finder-go { flex: 0 0 auto; border: 0; cursor: pointer; background: var(--laurel); color: #f2f8f0;
  font: inherit; font-weight: 600; font-size: .92rem; padding: 10px 18px; border-radius: var(--pill); transition: background .18s; }
.finder-go:hover { background: var(--laurel-deep); }
.finder-clear { flex: 0 0 auto; border: 0; background: none; cursor: pointer; color: var(--ink-soft);
  font-size: 1rem; padding: 6px 8px; }
.finder-panel { position: absolute; left: 0; right: 0; top: calc(100% - 4px); z-index: 95;
  background: var(--paper); border: 1px solid var(--line); border-radius: 16px; box-shadow: 0 20px 48px rgba(3,42,38,.18);
  padding: 8px; max-height: min(70vh, 560px); overflow-y: auto; }
.finder-intro { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding: 8px 10px 12px; border-bottom: 1px solid var(--line); margin-bottom: 6px; }
.finder-intro .fi-lbl { font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-soft); margin-right: 4px; }
.fi-chip { font-size: .8rem; padding: 4px 10px; border-radius: 999px; background: rgba(3,79,70,.07); color: var(--laurel-deep); font-weight: 600; }
.fi-chip.city { background: var(--laurel); color: #eef5e0; }
.finder-hint { font-size: .78rem; color: var(--ink-soft); padding: 4px 10px 8px; }
.fi-row { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; align-items: baseline;
  padding: 11px 12px; border-radius: 11px; text-decoration: none; color: inherit; }
.fi-row:hover, .fi-row:focus { background: rgba(3,79,70,.06); outline: none; }
.fi-name { font-weight: 700; font-size: .98rem; color: var(--ink); }
.fi-score { font-weight: 800; font-size: 1rem; color: var(--laurel-deep); font-variant-numeric: tabular-nums; }
.fi-meta { grid-column: 1; font-size: .82rem; color: var(--ink-soft); display: flex; flex-wrap: wrap; gap: 4px 10px; }
.fi-tags { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 5px; margin-top: 5px; }
.fi-tag { font-size: .73rem; padding: 3px 8px; border-radius: 999px; background: rgba(3,79,70,.07); color: var(--laurel-deep); font-weight: 600; }
.fi-empty { padding: 18px 12px; color: var(--ink-soft); font-size: .9rem; }
.fi-empty a { color: var(--laurel); font-weight: 600; }
.finder-foot { padding: 9px 12px 6px; margin-top: 4px; border-top: 1px solid var(--line); font-size: .74rem; color: var(--ink-soft); display: flex; justify-content: space-between; gap: 10px; }
.fi-src { margin-left: auto; font-size: .68rem; font-weight: 700; letter-spacing: .04em; padding: 4px 9px; border-radius: 999px; background: var(--laurel); color: #eef5e0; }
.fi-src.load { background: transparent; color: var(--ink-soft); border: 1px dashed var(--line); animation: fiPulse 1.2s ease-in-out infinite; }
@keyframes fiPulse { 0%, 100% { opacity: .45; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .fi-src.load { animation: none; } }
@media (max-width: 680px) {
  .finder-go { padding: 10px 14px; }
  #finderInput { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) { .finder-box, .finder-go { transition: none; } }

/* ---------- buttons ---------- */
.btn {
  display: inline-flex; align-items: center; gap: .6em;
  font-family: var(--sans); font-weight: 600; font-size: .87rem;
  padding: 13px 24px; border-radius: var(--pill); cursor: pointer;
  border: 1.5px solid transparent; transition: transform .18s, background .2s, box-shadow .2s, border-color .2s;
  line-height: 1;
}
.btn:hover { transform: none; }
.btn-primary { background: var(--laurel); color: #fff; box-shadow: var(--shadow-sm); }
.btn-primary:hover { background: var(--laurel-deep); color: #fff; box-shadow: var(--shadow); }
.btn-accent { background: var(--lime); color: var(--lime-ink); }
.btn-accent:hover { background: var(--lime-deep); color: var(--lime-ink); }
.btn-ghost { background: transparent; color: var(--laurel); border-color: var(--line-strong); }
.btn-ghost:hover { border-color: var(--laurel); color: var(--laurel); background: rgba(3,79,70,.04); }
/* Pill-Button mit Icon-Chip (Referenz-Look) */
.btn.has-ico { padding-left: 6px; }
.btn .ico {
  width: 34px; height: 34px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  flex: none;
}
.btn-primary .ico { background: var(--lime); color: var(--laurel); }
.btn-accent .ico { background: var(--laurel); color: var(--lime); }
.btn .ico svg { width: 16px; height: 16px; }

/* Fokus-Sichtbarkeit (A11y) */
a:focus-visible, button:focus-visible, select:focus-visible, summary:focus-visible, input:focus-visible {
  outline: 3px solid var(--laurel-light); outline-offset: 2px; border-radius: 6px;
}

/* ---------- hero (Forest-Card) ---------- */
.hero { padding-top: clamp(28px, 4vw, 44px); padding-bottom: 0; }
.hero-card {
  background: #034f46; color: #eaf3ea;
  border-radius: var(--r-xl);
  --hero-gallery-width: 444px;
  display: block;
  box-shadow: var(--shadow-lg); overflow: hidden; position: relative;
}
.hero-copy {
  /* Rechte Polsterung reserviert die Galerie-Breite + ihren Links-Versatz (56px),
     damit der Text die nach links gerueckte Galerie nicht beruehrt. */
  padding: clamp(34px, 5vw, 72px) calc(var(--hero-gallery-width) + clamp(56px, 6vw, 96px)) clamp(32px, 3vw, 48px) clamp(34px, 5vw, 72px);
  position: relative; z-index: 2;
}
.hero-card h1 { color: #fff; margin: .32em 0 0; letter-spacing: -.02em; }
.hero-card h1 .accent { color: var(--lime); font-style: normal; }
.hero-lead { color: rgba(234,243,234,.82); font-size: 1.06rem; line-height: 1.55; max-width: 44ch; margin: 1.1em 0 0; }
.hero-actions { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 30px; }
.hero-features { display: flex; gap: 22px; flex-wrap: wrap; margin-top: 40px; padding-top: 26px; border-top: 1px solid rgba(234,243,234,.16); }
.hero-feature { display: flex; align-items: flex-start; gap: 12px; flex: 1 1 170px; min-width: 0; max-width: 230px; }
.hero-feature svg { flex: none; color: var(--lime); margin-top: 2px; }
.hero-feature b { display: block; color: #fff; font-family: var(--display); font-weight: 500; font-size: .92rem; }
.hero-feature span { font-size: .77rem; color: rgba(234,243,234,.7); line-height: 1.4; }
.hero-art { display: flex; justify-content: center; position: relative; z-index: 1; }
.hero-art .seal-xl { width: min(340px, 82%); filter: drop-shadow(0 22px 46px rgba(0,0,0,.34)); animation: floaty 7s ease-in-out infinite; }
@keyframes floaty { 0%,100%{ transform: translateY(0) rotate(-1.2deg);} 50%{ transform: translateY(-12px) rotate(1.2deg);} }

/* ---------- hero parallax gallery (Referenz-Look) ---------- */
.hero-gallery {
  position: absolute; top: 0; right: 44px; bottom: 0; z-index: 1;
  width: var(--hero-gallery-width); height: 100%;
  display: flex; gap: 16px; justify-content: flex-end; overflow: hidden;
}
.hero-gallery .col { display: flex; flex-direction: column; gap: 0; will-change: transform; align-self: flex-start; }
.hero-gallery .gallery-sequence { display: flex; flex-direction: column; gap: 16px; padding-bottom: 16px; }
.hero-gallery .col.up   { animation: marquee-up 48s linear infinite; }
.hero-gallery .col.down { animation: marquee-down 42s linear infinite; }
.hero-gallery img {
  width: 200px; height: 250px; object-fit: cover; border-radius: 16px; flex: none;
  border: 0; box-shadow: none; background: #04463d;
}
@keyframes marquee-up   { from { transform: translateY(0); }     to { transform: translateY(-50%); } }
@keyframes marquee-down { from { transform: translateY(-50%); }  to { transform: translateY(0); } }

/* ---------- trust strip ---------- */
.trust-strip { border-bottom: 1px solid var(--line); }
.trust-strip .wrap { display: flex; flex-wrap: wrap; gap: 16px 36px; justify-content: space-between; padding-top: 26px; padding-bottom: 26px; }
.trust-item { display: flex; align-items: center; gap: 11px; font-size: .81rem; color: var(--ink-soft); font-weight: 500; }
.trust-item svg { color: var(--laurel); flex: none; }

/* ---------- region picker ---------- */
.bl-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.bl-card {
  position: relative; padding: 20px 18px; border: 1px solid var(--line); border-radius: var(--r);
  background: var(--paper-card); transition: transform .2s, box-shadow .2s, border-color .2s; overflow: hidden;
}
.bl-card.live:hover { border-color: var(--laurel-light); transform: translateY(-3px); box-shadow: var(--shadow); }
.bl-card .bl-name { font-family: var(--display); font-weight: 500; font-size: 1.03rem; padding-right: 56px; min-height: 1.4em; }
.bl-card .bl-meta { font-size: .74rem; color: var(--ink-faint); margin-top: 3px; }
.bl-card.soon { opacity: .6; }
.bl-card .pill { position: absolute; top: 13px; right: 13px; font-size: .56rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: 4px 9px; border-radius: var(--pill); }
.bl-card.live .pill { background: var(--lime); color: var(--lime-ink); }
.bl-card.soon .pill { background: var(--paper-2); color: var(--ink-faint); }
/* Live-Indikator (pulsierender Punkt) + Anbieter-Anzahl als Mehrwert statt bloßem „Live". */
.bl-card .live-pill { display: inline-flex; align-items: center; gap: 5px; }
.live-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--laurel); flex: 0 0 auto; animation: livePulse 2s ease-out infinite; }
@keyframes livePulse { 0% { box-shadow: 0 0 0 0 rgba(11,79,71,.5); } 70% { box-shadow: 0 0 0 5px rgba(11,79,71,0); } 100% { box-shadow: 0 0 0 0 rgba(11,79,71,0); } }
.bl-card .bl-count { font-size: .95rem; color: var(--ink-soft); margin-top: 8px; }
.bl-card .bl-count b { font-size: 1.2rem; font-weight: 800; color: var(--laurel-deep); font-variant-numeric: tabular-nums; margin-right: 2px; }
@media (prefers-reduced-motion: reduce) { .live-dot { animation: none; } }

/* ---------- ranking list ---------- */
.rank-list { display: flex; flex-direction: column; gap: 16px; }
.kat-list-titel { font-family: var(--display); font-size: clamp(20px, 2.3vw, 27px); color: var(--laurel); margin: 40px 0 18px; letter-spacing: .01em; }
.rank-list + .kat-list-titel { margin-top: 56px; }
.rank-card {
  display: grid; grid-template-columns: 84px 1fr auto; gap: 24px; align-items: stretch;
  background: var(--paper-card); border: 1px solid var(--line); border-radius: var(--r-lg);
  padding: 24px 28px; transition: transform .2s, box-shadow .2s, border-color .2s;
  position: relative;
}
.rank-card:hover { transform: translateY(-3px); box-shadow: var(--shadow); border-color: var(--line-strong); }
/* Full-Service-Kennzeichnung: klein, rechts oben neben dem Namen — signalisiert
   den Voll-Caterer (statt spezialisiertem Barkeeper/Barista), meist Premium. */
.rank-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.rank-head h3 { margin: 0; }
.fs-flag { flex: none; margin-top: 2px; font-size: .6rem; font-weight: 600; letter-spacing: .07em;
  text-transform: uppercase; color: var(--brass-deep); background: rgba(3,79,70,.07);
  border: 1px solid var(--line); border-radius: var(--pill); padding: 4px 10px; white-space: nowrap; }
.rank-card.top1 { border-color: var(--laurel-light); background: linear-gradient(180deg, #f4f9ec, var(--paper-card)); }
.rank-card.top1::after { content:""; position:absolute; inset:0; border-radius: var(--r-lg); padding:1.5px; background: linear-gradient(135deg, var(--lime-deep), transparent 45%); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events:none; }
.rank-num { font-family: var(--display); font-weight: 500; font-size: 3rem; line-height: 1; color: var(--laurel-light); align-self: center; text-align: center; font-variant-numeric: lining-nums; }
.rank-card.top1 .rank-num, .rank-card.top2 .rank-num, .rank-card.top3 .rank-num { color: var(--laurel); }
.rank-body { min-width: 0; }
.rank-body h3 { margin-bottom: 5px; }
.rank-body h3 a:hover { color: var(--laurel); }
.rank-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 10px; }
.tag { font-size: .65rem; font-weight: 600; letter-spacing: .01em; padding: 4px 11px; border-radius: var(--pill); background: var(--paper-soft); color: var(--ink-soft); border: 1px solid var(--line); }
.tag.cat { background: var(--paper-soft); color: var(--ink); border-color: var(--line-strong); }
.tag.top10 { background: var(--lime); color: var(--lime-ink); border-color: transparent; }
.tag.warn { background: #fbf3dd; color: #7a5a1f; border-color: #ecdcae; }
.rank-desc { font-size: .86rem; color: var(--ink-soft); margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.rank-side { display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: 7px; min-width: 150px; }
.score-ring { display: flex; align-items: baseline; gap: 4px; font-family: var(--display); }
.score-ring .v { font-size: 1.8rem; font-weight: 600; color: var(--ink); }
.score-ring .m { font-size: .79rem; color: var(--ink-faint); }
.rating-line { display: flex; align-items: center; gap: 6px; font-size: .77rem; color: var(--ink-soft); }
.stars { color: #d9a531; letter-spacing: 1px; font-size: .72rem; }
.rank-side .src { font-size: .65rem; color: var(--ink-faint); }
.mini-link { font-size: .77rem; font-weight: 600; color: var(--brass-deep); display: inline-flex; align-items: center; gap: 4px; }
.mini-link:hover { gap: 8px; }

/* ---------- note box ---------- */
.note-box { border: 1px solid var(--line); border-radius: var(--r); padding: 24px 28px; background: var(--paper-soft); margin-top: 28px; }
.note-box h4 { font-family: var(--display); font-weight: 500; font-size: 1.01rem; margin: 0 0 6px; }
.note-box p { font-size: .83rem; color: var(--ink-soft); margin: 0; }

/* ---------- profile ---------- */
.profile-head { display: grid; grid-template-columns: 1fr 220px; gap: 40px; align-items: start; }
.crumbs { font-size: .76rem; color: var(--ink-faint); margin-bottom: 18px; display: flex; gap: 8px; flex-wrap: wrap; }
.crumbs a:hover { color: var(--laurel); }
.rank-badge-inline { display: inline-flex; align-items: center; gap: 10px; background: var(--laurel); color: #fff; padding: 8px 18px 8px 13px; border-radius: var(--pill); font-weight: 600; font-size: .81rem; margin-bottom: 16px; }
.rank-badge-inline .n { font-family: var(--display); font-size: .95rem; color: var(--lime); }
.profile-badge { width: min(360px, 100%); justify-self: center; filter: drop-shadow(0 14px 30px rgba(3,49,40,.2)); }
.profile-badge svg, .seal-section-badge svg, .seal-hero-preview svg { display: block; width: 100%; height: auto; }

.scorecard { background: var(--forest-grad); color: #dbe8dd; border-radius: var(--r-lg); padding: 28px 30px; margin: 8px 0; }
.scorecard h4 { color: #fff; font-family: var(--display); font-weight: 500; margin: 0 0 4px; }
.scorecard .sc-total { display: flex; align-items: baseline; gap: 8px; margin: 6px 0 20px; }
.scorecard .sc-total .v { font-family: var(--display); font-size: 2.25rem; font-weight: 600; color: var(--lime); }
.sc-row { display: grid; grid-template-columns: 1fr 46px; gap: 12px; align-items: center; margin-bottom: 10px; }
.sc-label { font-size: .74rem; color: #c3d3c5; display: flex; justify-content: space-between; }
.sc-label .w { color: #8fa793; }
.sc-bar { grid-column: 1 / -1; height: 6px; border-radius: var(--pill); background: rgba(255,255,255,.12); overflow: hidden; margin-top: -4px; margin-bottom: 6px; }
.sc-bar > span { display: block; height: 100%; background: linear-gradient(90deg, var(--lime-deep), var(--lime)); border-radius: var(--pill); }
.sc-val { font-family: var(--display); font-weight: 600; font-size: .86rem; text-align: right; color: #fff; }

.facts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; margin: 24px 0; }
.fact { background: var(--paper-card); padding: 17px 19px; }
.fact dt { font-size: .63rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-faint); font-weight: 600; margin-bottom: 4px; }
.fact dd { margin: 0; font-size: .86rem; color: var(--ink); }

.strengths { list-style: none; padding: 0; margin: 16px 0; display: grid; gap: 11px; }
.strengths li { position: relative; padding-left: 32px; font-size: .88rem; color: var(--ink-soft); }
.strengths li::before {
  content:""; position: absolute; left: 0; top: 1px; width: 20px; height: 20px; border-radius: 50%;
  background: var(--laurel) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23e5f0c6' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") no-repeat center;
}

.sources { font-size: .74rem; color: var(--ink-faint); }
.sources a { color: var(--brass-deep); text-decoration: underline; text-underline-offset: 2px; word-break: break-word; }

.prose h2 { margin-top: 1.6em; }
.prose-callout { border-left: 3px solid var(--laurel-light); padding: 6px 0 6px 20px; color: var(--ink-soft); font-style: italic; margin: 22px 0; }

/* ---------- methodik table ---------- */
.crit-table { width: 100%; border-collapse: collapse; margin: 24px 0; font-size: .86rem; }
.crit-table th, .crit-table td { text-align: left; padding: 13px 14px; border-bottom: 1px solid var(--line); }
.crit-table th { font-family: var(--sans); font-size: .65rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-faint); font-weight: 600; }
.crit-table td.wt { font-family: var(--display); font-weight: 600; color: var(--laurel); white-space: nowrap; }
.crit-table tr:hover td { background: var(--paper-soft); }

/* ---------- criteria formula ---------- */
.criteria-chart-wrap { margin: 24px 0; padding: clamp(18px,3vw,28px); background: var(--paper-soft); border: 1px solid var(--line); border-radius: var(--r); }
.criteria-chart { display: block; width: 100%; max-width: 100%; height: auto; }
.criteria-chart .criteria-label { fill: var(--ink-soft); font-family: var(--sans); font-size: 13px; font-weight: 600; }
.criteria-chart .criteria-value { font-family: var(--sans); font-size: 12px; font-weight: 700; }
.criteria-chart .criteria-track { fill: #e1e8df; }
.criteria-chart-wrap figcaption { margin-top: 12px; color: var(--ink-faint); font-size: .7rem; }

/* ---------- homepage criteria ---------- */
.criteria-variant { position: relative; min-width: 0; }
.criteria-variant video { display: block; }
.criteria-variant .criteria-video-fallback { display: none; }
.criteria-variant-content { min-width: 0; }
.criteria-variant-content .lead { max-width: 52ch; }

.criteria-variant--framed { position: relative; overflow: hidden; background: var(--paper); padding-bottom: 170px; }
.criteria-variant--framed > .wrap { position: relative; z-index: 1; }
.crit-fall { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.crit-chip {
  position: absolute; top: 0; left: 0;
  display: inline-flex; align-items: center;
  padding: 56px 70px; border-radius: var(--pill);
  background: rgba(3,79,70,.06); border: 1px solid rgba(3,79,70,.13);
  color: rgba(3,79,70,.62);
  font-size: clamp(.8rem, .92vw, .95rem); font-weight: 400; font-family: var(--display);
  letter-spacing: .06em;
  white-space: nowrap;
  will-change: transform; visibility: hidden;
}
.crit-fall.is-ready .crit-chip { visibility: visible; }
.criteria-variant-framed-layout { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 48px; align-items: center; }
.criteria-variant-framed-image img, .criteria-variant-framed-image video { width: 100%; height: 460px; object-fit: cover; border-radius: 20px; box-shadow: var(--shadow); }

/* ---------- siegel generator ---------- */
.gen-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 34px; align-items: start; }
.gen-preview { background: var(--paper-soft); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 40px; display: flex; align-items: center; justify-content: center; }
.seal-hero-preview { width: min(460px, 100%); margin: 28px 0 0; }
.seal-section-badge { width: min(380px, 100%); margin: 0 auto 20px; }
.code-box { background: #06231e; color: #cfe6cf; border-radius: var(--r-sm); padding: 18px; font-family: ui-monospace, 'SF Mono', Menlo, monospace; font-size: .72rem; line-height: 1.6; overflow-x: auto; white-space: pre-wrap; word-break: break-all; }
.copy-btn { margin-top: 12px; }

/* ---------- disclaimer ---------- */
.disclaimer { background: var(--paper-soft); border: 1px solid var(--line-strong); border-left: 3px solid var(--laurel-light); border-radius: var(--r-sm); padding: 16px 20px; font-size: .79rem; color: var(--ink-soft); }
.disclaimer strong { color: var(--brass-deep); }

/* ---------- lead generation ---------- */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:28px 0}
.step{background:var(--paper-card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px}
.step b{display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:500;font-size:.95rem}
.step .n{width:26px;height:26px;border-radius:50%;background:var(--laurel);color:var(--lime);display:inline-flex;align-items:center;justify-content:center;font-size:.77rem;flex:none}
.step p{margin:8px 0 0;font-size:.81rem;color:var(--ink-soft)}
.lead-form{max-width:640px;display:grid;gap:16px;margin-top:28px}
.lead-form label,.pf-form>label:not(.consent){font-weight:600;font-size:.81rem;display:grid;gap:6px}
.lead-form :is(input:not([type="checkbox"]),select,textarea),.pf-form :is(input:not([type="checkbox"]),select){width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:14px;font:inherit;background:var(--paper-card);color:var(--ink)}
.pf-form :is(input:not([type="checkbox"]),select){background:#fff}
.lead-form :is(input:not([type="checkbox"]),select,textarea):focus-visible,.pf-form :is(input:not([type="checkbox"]),select):focus-visible{outline:3px solid var(--lime);outline-offset:2px;border-color:var(--laurel)}
.lead-form select,.pf-form select,#catSel{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23034f46' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:16px;padding-right:42px}
#catSel{padding:12px 42px 12px 14px;border:1px solid var(--line);border-radius:14px;font:inherit;background-color:var(--paper-card);color:var(--ink)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.lead-form label.consent,.consent{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:.77rem;color:var(--ink-soft)}
.consent input{width:auto;margin-top:3px;flex:none;accent-color:var(--laurel)}
/* Freiwilliges Werbekaestchen: sichtbar abgesetzt vom Pflichtkaestchen (MH 02.10.2026). */
.consent--optional{margin-top:4px}
.consent-hint{margin:12px 0 6px;padding-top:12px;border-top:1px solid var(--line);font-size:.73rem;color:var(--ink-soft)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.fine{font-size:.7rem;color:var(--ink-faint)}
.form-terms{font-size:.77rem;line-height:1.5;color:var(--ink-soft);margin:0}
.form-terms a,.consent a{color:var(--brass-deep);text-decoration:underline;text-underline-offset:2px}
.form-fine{margin:0}
.legal h2{font-size:1.08rem;margin:28px 0 8px}
.legal p{color:var(--ink-soft);line-height:1.65;margin:0 0 10px}
.legal .lead{color:var(--ink)}

/* ---------- Header-Bildleiste (Netz-Seiten: Ranking, Kategorie, Profil) ---------- */
/* Cover-Leiste unmittelbar unter dem Menue, gleiche Hoehe ueberall (roter
   Faden). Harte, gerade Unterkante (kein Ausblenden) + sanfter Parallax:
   das Bild ist groesser als die Leiste und wandert beim Scrollen langsamer als
   die Seite. overflow:clip (NICHT hidden) — hidden wuerde die Leiste zum
   Scroll-Container machen und die view()-Timeline einfrieren. Reines CSS. */
.page-hero{position:relative;width:100%;height:clamp(190px,24vw,300px);overflow:clip;background:var(--laurel-deep);box-shadow:0 1px 0 rgba(2,46,41,.10)}
/* Bild immer zentriert (background-position center); leicht groesser als die
   Leiste, damit der Parallax es verschieben kann ohne Rand. Amplitude bewusst
   klein (+-8%), damit die Ruhelage nahe der Bildmitte bleibt. */
.page-hero-media{position:absolute;left:0;right:0;top:-12%;height:124%;
  background:var(--hero-img) center center/cover no-repeat;will-change:transform;
  animation:page-hero-parallax linear both;animation-timeline:view();animation-range:cover 0% cover 100%}
@keyframes page-hero-parallax{from{transform:translateY(-8%)}to{transform:translateY(8%)}}
@media (prefers-reduced-motion:reduce){.page-hero-media{animation:none;transform:none}}
/* Content direkt unter dem Header hochziehen (Breadcrumbs/H1 above the fold) —
   die grosse Standard-Section-Polsterung wuerde ihn sonst weit nach unten
   druecken. Gilt fuer Ranking-, Kategorie- und Profilseiten gleichermassen. */
.page-hero + section{padding-top:clamp(16px,2.4vw,28px)}

/* Profil-Layout (Inhalt + 360px-Sidebar): Grid-Kinder duerfen unter ihre
   Inhaltsbreite schrumpfen (min-width:0 statt auto) — sonst erzwingen breite
   Inhalte (z. B. das 460px-Guetesiegel-SVG) Quer-Scrollen. Auf schmalen
   Viewports zusaetzlich einspaltig. Mobile ist Hauptkanal dieser Netz-Seiten. */
.profile-grid{min-width:0}
.profile-grid > *{min-width:0}
.profile-badge svg{max-width:100%;height:auto}
/* Breite Datentabellen scrollen in ihrem .table-scroll-Wrapper (siehe Profil-Redesign),
   nicht als display:block-Tabelle — das ließ sie ihre Karte nicht mehr füllen. */
@media (max-width:700px){
  .profile-grid{grid-template-columns:1fr !important;gap:32px !important}
}

/* ---------- laufende Faktenkarten ---------- */
.stimmen { background: var(--lime); padding: clamp(48px, 7vw, 90px) 0; overflow: hidden; }
.stimmen-head { text-align: center; max-width: 620px; margin: 0 auto clamp(30px, 4vw, 48px); }
.stimmen-head .eyebrow { color: var(--laurel-deep); }
.stimmen-head h2 { margin: .35rem 0 .5rem; }
.stimmen-head .lead { color: var(--ink-soft); margin: 0 auto; }
/* 3D-Perspektiv-Marquee (Magicui-Look): geneigte Karten-Wand, vertikale gegenläufige Spalten. */
.stimmen-3d { --mq-gap: 18px; position: relative; display: flex; justify-content: center; gap: var(--mq-gap);
  height: clamp(460px, 62vh, 620px); overflow: hidden; perspective: 480px;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 9%, #000 91%, transparent 100%);
  mask-image: linear-gradient(to bottom, transparent 0, #000 9%, #000 91%, transparent 100%); }
/* Gerade oben abgeschnitten (nur rotateX, kein rotateZ/Y) + reingezoomt (scale), füllt flächig. */
.stimmen-plane { display: flex; flex-direction: row; gap: var(--mq-gap); align-items: flex-start;
  transform: rotateX(20deg) scale(1.16); transform-origin: center 42%; }
.vmarquee { display: flex; flex-direction: column; gap: var(--mq-gap); overflow: hidden; }
.vmarquee-group { display: flex; flex-direction: column; flex-shrink: 0; gap: var(--mq-gap);
  animation: vmarquee-y var(--mq-dur, 40s) linear infinite; will-change: transform; }
.vmarquee--rev .vmarquee-group { animation-direction: reverse; }
@keyframes vmarquee-y { to { transform: translateY(calc(-100% - var(--mq-gap))); } }

.stimmen-card { width: clamp(220px, 23vw, 280px); flex: 0 0 auto; background: var(--paper-card); border: 1px solid var(--line); border-radius: 20px; padding: 24px 26px; margin: 0; box-shadow: 0 12px 24px -8px rgba(3,79,70,.16), 0 4px 6px -4px rgba(3,79,70,.10); }
.stimmen-text { margin: 0; font-size: 1rem; color: var(--ink-soft); line-height: 1.5; }
.stimmen-foot { display: flex; align-items: center; gap: 8px; margin-top: 20px; }
.stimmen-chip { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: var(--lime); color: var(--laurel); flex: none; }
.stimmen-meta { display: flex; flex-direction: column; min-width: 0; }
.stimmen-label { font-family: var(--display); font-weight: 500; letter-spacing: -.025em; line-height: 20px; color: var(--ink); }
.stimmen-kat { font-size: .86rem; line-height: 20px; opacity: .6; letter-spacing: -.025em; color: var(--ink-soft); }
.stimmen-avatar { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--lime); color: var(--laurel); font-family: var(--display); font-weight: 500; font-size: .86rem; flex: none; }
/* Mobile: 3D-Wand auf 2 Spalten, weniger Neigung/Zoom -> Karten lesbar statt abgeschnitten. */
@media (max-width: 680px) {
  .stimmen-3d { height: clamp(380px, 66vh, 500px); perspective: 640px; }
  .stimmen-plane { transform: rotateX(12deg) scale(1); }
  .stimmen-plane .vmarquee:nth-child(n+3) { display: none; }
  .stimmen-card { width: 46vw; padding: 18px 20px; border-radius: 16px; }
}

/* ---------- pre-footer lead ---------- */
.prefooter{background:#034f46;padding:clamp(56px,8vw,104px) 0}
.pf-card{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:minmax(0,38fr) minmax(0,62fr);background:var(--paper-card);border-radius:24px;box-shadow:var(--shadow-lg);overflow:hidden}
.pf-panel{display:flex;flex-direction:column;align-items:flex-start;background:var(--laurel-deep);color:#dbe8dd;padding:clamp(32px,4vw,58px)}
.pf-panel h2{color:#fff;margin:10px 0 14px}
.pf-panel .eyebrow{color:var(--lime);margin:0}
.pf-panel .eyebrow::before{background:var(--lime)}
.pf-intro{color:#c3d3c5;max-width:34ch}
.pf-trust{list-style:none;display:grid;gap:12px;margin:18px 0 0;padding:0;color:#eaf3ea;font-size:.84rem;font-weight:600}
.pf-trust li{display:flex;align-items:center;gap:10px}
.pf-trust .ph-icon{box-sizing:content-box;padding:3px;border-radius:50%;background:var(--lime);color:var(--lime-ink)}
.pf-note{margin:28px 0 0;color:#9db3a1;font-size:.68rem;line-height:1.5}
.pf-form-panel{padding:clamp(32px,4vw,58px);background:#f2f7ea}
.pf-form{display:grid;gap:18px;margin:0}
.pf-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.pf-form label:not(.consent){font-weight:600;font-size:.81rem;display:grid;gap:6px;color:var(--ink)}
/* Gemeinsame Formular-/Lead-Icons: lokale Phosphor-SVGs statt CSS-Zeichen. */
.pf-form label:has(select){position:relative}
.pf-form select + .ph-icon{position:absolute;right:14px;bottom:15px;pointer-events:none}
.lm-badge .ph-icon{width:1em;height:1em}
.nav-drop-caret{display:inline-flex}
.pf-form .field--full{grid-column:1 / -1}
.pf-form :is(input:not([type="checkbox"]),select,textarea){width:100%;padding:12px 14px;border:1px solid rgba(3,79,70,.18);border-radius:14px;font:inherit;background:#fff;color:var(--ink)}
.pf-form .pf-fields select{appearance:none;background-image:none;padding-right:40px}
.pf-form textarea{resize:vertical;min-height:84px}
.pf-form :is(input:not([type="checkbox"]),select,textarea):focus-visible{outline:3px solid var(--lime);outline-offset:2px;border-color:var(--laurel)}
.pf-form .consent{color:var(--ink-soft)}
.pf-form .consent a{color:var(--brass-deep);text-decoration:underline}
.pf-submit{width:100%;justify-content:center;font-size:1rem}
.pf-form button,.lead-form button{justify-self:start}

/* ---------- Lead-Panel: Matching-Bühne (Anfrage → Orb prüft & verteilt → 5 Angebote) ----------
   .lm ist Container; .lm-stage rechnet in em mit 1em = 1/330 der Breite → die Bühne skaliert als
   Ganzes (Desktop 330px, mobil schmaler). Zustände über [data-phase] aus app.js; ohne Attribut
   (kein JS, Reduced Motion, außerhalb des Viewports) steht das Endbild. */
.lm{width:100%;max-width:330px;margin:22px 0 2px;container-type:inline-size}
.lm-stage{position:relative;font-size:calc(100cqw / 330);width:100%;height:302em}
.lm-req{position:absolute;left:80em;top:0;width:170em;height:56em;box-sizing:border-box;padding:9em 12em;border-radius:11em;background:#f3f7ec;color:#034f46;box-shadow:0 10em 26em rgba(2,46,41,.45);display:flex;flex-direction:column;justify-content:center;gap:7em;z-index:3}
.lm-req::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.7),transparent 45%);pointer-events:none}
.lm-req-h{font-family:var(--display);font-size:9.5em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1}
.lm-tags{display:flex;gap:5em}
.lm-tags i{font-style:normal;font-size:9em;font-weight:600;line-height:1;padding:.55em .8em;border-radius:99em;background:rgba(3,79,70,.1);white-space:nowrap}
.lm-ghost{opacity:0;z-index:4;transition:transform .9s cubic-bezier(.55,0,.75,.35),opacity .55s ease-in .35s}
.lm-orbwrap{position:absolute;left:123em;top:86em;width:84em;height:84em;z-index:2;display:flex}
.lm-orb.ai-orb{display:block;width:84em;height:84em;animation:none;box-shadow:0 0 0 1em rgba(229,240,198,.15),0 18em 40em rgba(2,46,41,.6)}
.lm-orb.ai-orb.is-thinking{animation:orb-glow-strong 1.2s ease-in-out infinite}
.lm-ring,.lm-scan{position:absolute;border-radius:50%;pointer-events:none}
.lm-ring{inset:-9em;border:1.5em solid rgba(229,240,198,.32);opacity:.7}
.lm-scan{inset:-7em;opacity:0;background:conic-gradient(from 0deg,transparent 0 250deg,rgba(229,240,198,.95) 330deg,transparent 360deg);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3.5em),#000 calc(100% - 3em));mask:radial-gradient(farthest-side,transparent calc(100% - 3.5em),#000 calc(100% - 3em));transition:opacity .3s}
.lm-chipwrap{position:absolute;z-index:3;opacity:0;transform:translateY(6em) scale(.94);transition:opacity .35s,transform .35s}
.lm-chipwrap:nth-of-type(1){left:10em;top:92em}
.lm-chipwrap:nth-of-type(2){right:10em;top:92em}
.lm-chipwrap:nth-of-type(3){left:10em;top:140em}
.lm-chipwrap:nth-of-type(4){right:10em;top:140em}
.lm-chip{display:inline-flex;align-items:center;gap:.55em;padding:.42em .85em .42em .5em;border-radius:99em;font-size:9.5em;font-weight:600;line-height:1.2;color:#eaf3ea;background:rgba(229,240,198,.1);border:.1em solid rgba(229,240,198,.28);white-space:nowrap}
.lm-chip .ph-icon{box-sizing:content-box;padding:2px;border-radius:50%;background:var(--lime);color:var(--laurel)}
.lm-caption{position:absolute;left:0;right:0;top:182em;height:18em}
.lm-step{position:absolute;left:0;right:0;top:0;display:flex;align-items:center;justify-content:center;gap:.6em;font-size:11.5em;font-weight:600;color:#eaf3ea;opacity:0;transform:translateY(.5em);transition:opacity .4s,transform .4s;white-space:nowrap}
.lm-step::before{content:attr(data-n);display:inline-grid;place-items:center;width:1.8em;height:1.8em;border-radius:50%;background:var(--lime);color:#034f46;font-size:.8em;font-weight:800;flex:none}
.lm-step b{color:var(--lime);font-weight:800}
.lm-step--3{opacity:1;transform:none}
.lm-cards{position:absolute;left:0;top:214em;width:100%;height:88em}
.lm-card{position:absolute;left:0;top:0;width:54em;height:80em;z-index:var(--i);transform:translate(calc(10em + var(--i) * 64em),0) rotate(0deg);transition:transform .6s cubic-bezier(.4,0,.2,1) calc(var(--i) * .05s),opacity .4s}
.lm-card-in{position:relative;box-sizing:border-box;width:100%;height:100%;padding:8em 7em 8em;border-radius:9em;background:#f3f7ec;box-shadow:0 12em 26em rgba(2,46,41,.5);display:flex;flex-direction:column}
.lm-card-in::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.75),transparent 40%);pointer-events:none}
.lm-card-k{font-size:6.2em;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(3,79,70,.55);line-height:1;padding-right:1.6em}
.lm-card-n{font-family:var(--display);font-size:17em;font-weight:700;color:#034f46;line-height:1;margin-top:.12em}
.lm-l{display:block;height:3.5em;border-radius:2em;background:rgba(3,79,70,.16);margin-top:6em;width:var(--w)}
.lm-l--sum{margin-top:auto;background:rgba(3,79,70,.4)}
.lm-badge{position:absolute;top:-.7em;right:-.7em;width:1.9em;height:1.9em;border-radius:50%;background:var(--lime);color:#034f46;display:grid;place-items:center;font-size:11em;font-weight:800;line-height:1;box-shadow:0 .35em .9em rgba(2,46,41,.5);z-index:1}
/* Phasen (gesetzt von app.js) */
.lm[data-phase="send"] .lm-ghost{opacity:1;transform:none;transition:opacity .3s}
.lm[data-phase="check"] .lm-ghost{opacity:0;transform:translate(0,100em) scale(.28)}
.lm[data-phase="check"] .lm-ring{animation:lmRing 1.3s ease-out infinite}
.lm[data-phase="check"] .lm-scan{opacity:1;animation:lmSpin 1s linear infinite}
.lm[data-phase="check"] .lm-chipwrap{opacity:1;transform:none;transition-delay:calc(.7s + var(--i) * .32s)}
.lm[data-phase] .lm-step--3{opacity:0;transform:translateY(.5em)}
.lm[data-phase="send"] .lm-step--1,.lm[data-phase="check"] .lm-step--2,.lm[data-phase="out"] .lm-step--3,.lm[data-phase="row"] .lm-step--3,.lm[data-phase="done"] .lm-step--3,.lm[data-phase="rest"] .lm-step--3,.lm[data-phase="reset"] .lm-step--3{opacity:1;transform:none}
.lm[data-phase="send"] .lm-card,.lm[data-phase="check"] .lm-card{opacity:0;transform:translate(138em,-126em) scale(.25) rotate(0deg);transition:none}
.lm[data-phase="out"] .lm-card{opacity:1;transform:translate(calc(138em + var(--fx)),var(--fy)) rotate(var(--fr));transition:transform .75s cubic-bezier(.2,1.25,.35,1) calc(var(--i) * .11s),opacity .3s calc(var(--i) * .11s)}
.lm[data-phase="reset"] .lm-card{opacity:0;transition:opacity .45s}
.lm[data-phase="send"] .lm-badge,.lm[data-phase="check"] .lm-badge,.lm[data-phase="out"] .lm-badge,.lm[data-phase="row"] .lm-badge{transform:scale(0)}
.lm[data-phase="done"] .lm-badge,.lm[data-phase="rest"] .lm-badge{animation:lmPop .45s cubic-bezier(.2,1.4,.4,1) calc(var(--i) * .09s) both}
.lm[data-phase="rest"] .lm-card-in{animation:lmFloat 3.2s ease-in-out calc(var(--i) * -.5s) infinite}
@keyframes lmRing{0%{transform:scale(1);opacity:.7}100%{transform:scale(1.32);opacity:0}}
@keyframes lmSpin{to{transform:rotate(360deg)}}
@keyframes lmPop{0%{transform:scale(0)}60%{transform:scale(1.2)}100%{transform:scale(1)}}
@keyframes lmFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-3em)}}
@media (prefers-reduced-motion: reduce){.lm *,.lm *::before{animation:none !important;transition:none !important}}


/* ---------- Profil: Komponenten-Sprache + Erzählreihenfolge (UX-Review 09/2026) ----------
   Rollen sichtbar machen: Handlung = Button, Navigation = unterstrichener Textlink,
   Eigenschaft = Text ohne Kapsel. Nachweise als native <details>, standardmäßig zu. */
.rank-meta{margin:0 0 10px;font-size:.875rem;font-weight:600;color:var(--ink-soft);line-height:1.5}
.rank-meta+.rank-meta{margin-top:-6px}
.text-link{color:var(--brass-deep);text-decoration:underline;text-underline-offset:.2em;font-weight:600}
.text-link:hover{color:var(--laurel)}
.on-dark .text-link,.text-link.on-dark{color:var(--lime)}
.profile-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin:10px 0 16px;font-size:.875rem;color:var(--ink-soft)}
.profile-meta .tag--category{font-weight:700;color:var(--ink)}
.profile-meta .meta-tag::before{content:"·";margin-right:14px;color:var(--ink-faint)}
.ideal{margin:14px 0 0;font-size:1rem;line-height:1.6;color:var(--ink);max-width:74ch}
.ideal b{font-weight:700}
.strengths--top{margin:14px 0 0;max-width:74ch}
.trust-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;margin:22px 0 0;padding:14px 18px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper-card);font-size:.9rem;color:var(--ink-soft);max-width:74ch;box-sizing:border-box}
.trust-line b{color:var(--ink);font-family:var(--display);font-size:1.08rem;font-weight:600;margin-right:4px}
.trust-line .muted{color:var(--ink-faint)}
.trust-line .text-link{margin-left:auto}
.trust-note{margin:8px 0 0;font-size:.8rem;color:var(--ink-faint);line-height:1.5;max-width:74ch}
.facts--inline{margin:0}
.hint-p{color:var(--ink-soft);font-size:.9rem;margin:-6px 0 14px}
.evidence{border-bottom:1px solid var(--line-strong);scroll-margin-top:calc(var(--masthead-h) + var(--subnav-h) + 24px)}
.evidence:first-of-type,.hint-p+.evidence{border-top:1px solid var(--line-strong)}
.evidence>summary{min-height:44px;padding:14px 0;color:var(--brass-deep);font-weight:600;cursor:pointer;display:flex;align-items:center;gap:12px;list-style:none;line-height:1.4}
.evidence>summary::-webkit-details-marker{display:none}
.evidence>summary:hover{color:var(--laurel)}
.evidence>summary:focus-visible{outline:3px solid var(--laurel);outline-offset:3px;border-radius:6px}
.evidence[open]>summary{color:var(--ink)}
.evidence-body{padding:2px 0 26px}
.evidence-body>.table-card{margin-top:10px}
.evidence-body>.verify-card{margin-top:8px}
.evidence-body>.strengths{margin:0}
.evidence-body>p:first-child{margin-top:4px}
.ev-h{font-family:var(--display);font-weight:500;font-size:1.05rem;margin:16px 0 8px}
.evidence-body>.ev-h:first-child{margin-top:6px}
.profile-head{scroll-margin-top:calc(var(--masthead-h) + 16px)}

/* Siegel-Generator: Ausführung wählen */
.badge-styles{border:0;padding:0;margin:0 0 16px;display:grid;gap:8px}
.badge-styles legend{font-weight:600;font-size:.81rem;margin-bottom:6px}
.badge-style{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--paper-card);cursor:pointer}
.badge-style:has(input:checked){border-color:var(--laurel);box-shadow:inset 0 0 0 1px var(--laurel)}
.badge-style input{accent-color:var(--laurel)}
.badge-style span{display:flex;flex-direction:column;line-height:1.3}
.badge-style b{font-size:.9rem}
.badge-style small{color:var(--ink-soft);font-size:.76rem}

/* ---------- footer ---------- */
.site-footer { position: relative; display: flex; align-items: flex-start; min-height: min(88vh, 760px); padding: 56px 0 0; overflow: hidden; background: var(--laurel-deep); }
.footer-bg { position: absolute; inset: -12% 0; z-index: 0; background: url('img/footer-bg.jpg') center / cover no-repeat; will-change: transform; }
.footer-bg::after { content:""; position:absolute; inset:0; background:rgba(2,46,41,.34); pointer-events:none; }
.footer-inner { position: relative; z-index: 1; width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(20px, 4vw, 40px); }
.footer-card { overflow: hidden; border-radius: 24px; background: rgba(255,255,255,.95); box-shadow: 0 20px 45px -12px rgba(2,46,41,.35); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); animation: footerCardIn .8s cubic-bezier(.16,1,.3,1) both; }
@keyframes footerCardIn { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: none; } }
.footer-card-top { display: flex; flex-direction: column; align-items: flex-start; gap: 34px; padding: clamp(28px, 4vw, 44px); }
.footer-brand { flex: 0 1 34ch; min-width: 0; }
.footer-brand-head { display: flex; align-items: center; gap: 13px; width: fit-content; }
.footer-logo { display: inline-flex; flex: none; }
.footer-logo .mark { display: block; width: 54px; height: auto; }
.footer-wordmark { color: var(--ink); font-family: var(--display); font-size: clamp(1.3rem, 2vw, 1.6rem); font-weight: 500; letter-spacing: -.02em; line-height: 1; }
.site-footer .f-about { max-width: 34ch; margin: 14px 0 0; color: var(--ink-soft); font-size: .81rem; line-height: 1.6; }
.footer-cols { display: flex; flex: 1 1 auto; flex-wrap: wrap; gap: clamp(28px,4vw,56px); min-width: 0; }
.footer-col { flex: 1 1 130px; min-width: 0; }
.footer-col h5 { margin: 0 0 14px; color: var(--ink-faint); font-family: var(--sans); font-size: .68rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.footer-col a { display: block; padding: 4px 0; overflow-wrap: anywhere; color: var(--ink-soft); font-size: .81rem; font-weight: 500; line-height: 1.45; transition: color .2s; }
.footer-col a:hover { color: var(--laurel); }
.footer-col .footer-link--pending { opacity: .65; }
.footer-card-bottom { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px 24px; padding: 18px clamp(28px, 4vw, 44px); border-top: 1px solid var(--line); background: #fff; color: var(--ink-faint); font-size: .72rem; }
.footer-card-bottom p { margin: 0; }
.footer-made { white-space: nowrap; }

@media (min-width: 860px) {
  .footer-card-top { flex-direction: row; justify-content: space-between; gap: 48px; }
  .footer-cols { justify-content: flex-end; }
}

/* ---------- Städtegalerie (sg-): 3:4, native Scroll-Snap ---------- */
.sg-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; }
.sg-intro { max-width: 72ch; margin-bottom: 0; }
.sg-controls { display: flex; flex: none; gap: 8px; }
.sg-controls[hidden] { display: none; }
.sg-button {
  display: grid; place-items: center; width: 48px; height: 48px; padding: 0;
  border: 1px solid var(--laurel); border-radius: 50%; background: var(--paper);
  color: var(--laurel-deep); cursor: pointer;
}
.sg-button:hover { background: var(--lime); }
.sg-button[aria-disabled="true"] { opacity: .4; cursor: default; background: var(--paper); }
.sg-viewport { margin: 26px 0 0; }
/* Raster statt Slider (MH 15.09.): vier Spalten, Reihen untereinander; Buttons entfallen. */
.sg-list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; list-style: none; padding: 0; margin: 0; }
.sg-controls { display: none !important; }
.sg-item { min-width: 0; }
.sg-card {
  position: relative; isolation: isolate; display: flex; align-items: flex-end;
  width: 100%; aspect-ratio: 3 / 4; overflow: hidden; border-radius: var(--r-xl);
  background: linear-gradient(145deg, var(--laurel), var(--laurel-deep)); color: var(--paper-card);
}
.sg-image { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; transition: transform 400ms ease; }
.sg-mark { position: absolute; width: 86%; height: auto; top: -3%; right: -14%; z-index: -2; color: var(--lime); opacity: .16; }
.sg-content {
  position: relative; width: 100%; padding: 22px 20px; line-height: 1.45;
  /* Mindestens 88 % Laurel-Deep unter ALLEN Textzeilen, auch bei Umbruch.
     Weiß/Lime auf weißem Foto als Worst Case: > 8,6:1. Verlauf beginnt darüber. */
  background: linear-gradient(to bottom, color-mix(in srgb, var(--laurel-deep) 88%, transparent), var(--laurel-deep));
}
.sg-content::before {
  content: ""; position: absolute; left: 0; right: 0; bottom: 100%; height: 68px; pointer-events: none;
  background: linear-gradient(to bottom, transparent, color-mix(in srgb, var(--laurel-deep) 88%, transparent));
}
.sg-content h3 { color: var(--paper-card); font-size: clamp(1.4rem, 2.2vw, 1.95rem); line-height: 1.1; margin: 0 0 12px; overflow-wrap: anywhere; }
.sg-count { font-size: .95rem; margin: 0 0 6px; }
.sg-count strong { font-weight: 600; color: var(--lime); }
.sg-facts { display: flex; flex-wrap: wrap; gap: 2px 12px; font-size: .8rem; margin: 0; }
.sg-cta { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 20px; color: var(--lime); font-size: .88rem; font-weight: 600; }
.sg-card-soon { background: var(--forest-grad); }
.sg-card-soon .sg-mark { opacity: .08; }
.sg-card-soon h3 { color: var(--lime); }
.sg-soon-text { color: var(--paper); margin: 0; font-size: .9rem; }
.sg-card:focus-visible, .sg-button:focus-visible, .sg-viewport:focus-visible { outline: 3px solid var(--laurel); outline-offset: 3px; }
.sg-card:focus-visible { box-shadow: inset 0 0 0 2px var(--lime); }
.sg-credits { margin-top: 32px; }
.sg-credits ul { padding-left: 20px; }
.sg-credits li { margin-bottom: 8px; }
.sg-credits a { color: var(--brass-deep); text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 1023px) { .sg-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } }
@media (max-width: 599px) { .sg-header { flex-direction: column; align-items: flex-start; } }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .sg-card:hover .sg-image { transform: scale(1.04); }
}
@media (prefers-reduced-motion: reduce) {
  .sg-image { transition: none; }
  .sg-viewport { scroll-behavior: auto; }
}

/* ---------- reveal ---------- */
.reveal { opacity: 0; transform: translateY(18px); animation: reveal .7s cubic-bezier(.2,.7,.2,1) forwards; }
@keyframes reveal { to { opacity: 1; transform: none; } }

/* ---------- responsive ---------- */
/* Marquee braucht keine Spalten-Breakpoints mehr — Karten sind clamp-breit, Zeilen scrollen. */

@media (max-width: 940px) {
  .hero-copy { padding: clamp(30px, 7vw, 52px) clamp(30px, 7vw, 52px) clamp(30px, 6vw, 48px); }
  .hero-art { order: -1; }
  .hero-art .seal-xl { width: 210px; }
  .hero-gallery { display: none; }
  .criteria-variant-framed-layout { grid-template-columns: 1fr; gap: 32px; }
  .criteria-variant-framed-image img, .criteria-variant-framed-image video { height: min(460px, 120vw); }
  .pf-card{grid-template-columns:1fr}
  .pf-fields{grid-template-columns:1fr}
  .bl-grid { grid-template-columns: repeat(2, 1fr); }
  .profile-head { grid-template-columns: 1fr; }
  .profile-badge { justify-self: start; width: min(360px, 100%); }
  .gen-grid { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
  body { font-size: 14px; }
  .nav { position: fixed; inset: 72px 0 auto; flex-direction: column; align-items: stretch; gap: 0; background: var(--paper); border-bottom: 1px solid var(--line); padding: 8px 24px 16px; transform: translateY(-140%); transition: transform .3s; }
  .nav.open { transform: none; }
  .nav a { padding: 13px 0; border-radius:0; border-bottom: 1px solid var(--line); }
  .nav a:not(.cta):hover { background: none; }
  .nav .cta { text-align: center; margin: 12px 0 0; }
  /* Städte-Dropdown im Mobil-Menü: kein Panel, Städte inline aufgeklappt. */
  .nav-drop { width: 100%; }
  .nav-drop-label { width: 100%; justify-content: space-between; padding: 13px 0; border-bottom: 1px solid var(--line); border-radius: 0; }
  .nav-drop-caret { display: none; }
  .nav-drop-menu {
    position: static; opacity: 1; visibility: visible; transform: none;
    min-width: 0; padding: 0 0 6px; gap: 0; border: 0; border-radius: 0;
    box-shadow: none; background: none;
  }
  .nav-drop-menu a { padding: 11px 0 11px 16px; border-radius: 0; border-bottom: 1px solid var(--line); font-size: .9rem; color: var(--ink-soft); }
  .nav-toggle { display: inline-flex; background: none; border: none; cursor: pointer; padding: 8px; color: var(--ink); }
  .rank-card { grid-template-columns: 48px 1fr; gap: 14px; padding: 20px; }
  .rank-num { font-size: 2rem; }
  .rank-side { grid-column: 1 / -1; flex-direction: row; align-items: center; justify-content: space-between; min-width: 0; border-top: 1px solid var(--line); padding-top: 12px; margin-top: 4px; }
  .facts { grid-template-columns: 1fr; }
  .hero-features { gap: 18px; }
}

@media (max-width: 680px) {
  .form-grid{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr}
  .pf-form button,.lead-form button{width:100%;justify-content:center}
}

@media (max-width: 767px) {
}

@media (max-width: 859px) {
  .criteria-variant--framed { padding-bottom: 120px; }
  .crit-chip { font-size: .74rem; padding: 26px 32px; }
  .crit-chip:nth-child(n+9) { display: none; }
}

/* ---------- reduced motion (A11y-Fix: Inhalt bleibt sichtbar) ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1 !important; transform: none !important; }
  .hero-art .seal-xl { animation: none !important; }
  .criteria-variant video { display: none; }
  .criteria-variant .criteria-video-fallback { display: block; }
  .hero-gallery .col { animation: none !important; }
  .vmarquee-group { animation: none; }
  .vmarquee { overflow: visible; }
  .stimmen-3d { height: auto; perspective: none; overflow: visible; -webkit-mask-image: none; mask-image: none; }
  .stimmen-plane { transform: none; flex-wrap: wrap; justify-content: center; }
  .crit-fall { display: none; }
}

/* ---------- Kategorien & Tags (Lexikon-/Taxonomie-Seite) ---------- */
.lex-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); gap: 20px; margin-top: 28px; }
.lex-card { background: var(--paper-card); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 24px 26px; }
.lex-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.lex-card-head h3 { margin: 0; }
.lex-typ { flex: none; margin-top: 2px; font-size: .58rem; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; padding: 4px 10px; border-radius: var(--pill); white-space: nowrap; }
.lex-typ.voll { background: rgba(3,79,70,.08); color: var(--brass-deep); }
.lex-typ.spez { background: var(--lime); color: var(--lime-ink); }
.lex-card p { color: var(--ink-soft); font-size: .9rem; line-height: 1.5; margin: 12px 0 16px; }
.lex-gruppen { display: flex; flex-wrap: wrap; gap: 6px; }
.lex-taggroup { margin-top: 30px; padding-top: 22px; border-top: 1px solid var(--line); }
.lex-taggroup:first-of-type { margin-top: 24px; }
.lex-taggroup h3 { margin: 0; }
.lex-desc { color: var(--ink-faint); font-size: .87rem; margin: 5px 0 14px; max-width: 74ch; }
.lex-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.lex-tag { font-size: .82rem; font-weight: 500; padding: 8px 15px; border-radius: var(--pill); background: var(--paper-soft); border: 1px solid var(--line); color: var(--ink); }
.lex-table-wrap { overflow-x: auto; margin-top: 26px; }
.lex-table { border-collapse: collapse; width: 100%; min-width: 660px; font-variant-numeric: tabular-nums; }
.lex-table th, .lex-table td { border: 1px solid var(--line); padding: 11px 14px; text-align: center; font-size: .86rem; }
.lex-table thead th { background: var(--paper-soft); font-family: var(--display); font-weight: 500; }
.lex-table tbody th { text-align: left; font-weight: 600; white-space: nowrap; }
.lex-yes { color: var(--laurel); font-size: 1rem; }
.lex-no { color: var(--line-strong); }
.lex-rules { margin: 22px 0 0; padding: 0; list-style: none; }
.lex-rules li { position: relative; padding: 13px 0 13px 30px; border-bottom: 1px solid var(--line); color: var(--ink-soft); line-height: 1.5; }
.lex-rules li::before { content: "§"; position: absolute; left: 0; top: 13px; color: var(--brass-deep); font-weight: 700; }

/* Sticky Inhalts-Subnav */
/* top = Masthead-Höhe: vorher top:0 → die Leiste verschwand beim Scrollen hinter dem sticky
   Masthead und war faktisch nie sichtbar. */
.subnav { position: sticky; top: var(--masthead-h); z-index: 90; background: rgba(238,241,236,.9); backdrop-filter: blur(12px); border-bottom: 1px solid var(--line); border-top: 1px solid var(--line); }
.subnav .wrap { display: flex; gap: 6px; overflow-x: auto; padding-top: 10px; padding-bottom: 10px; scrollbar-width: none; }
.subnav .wrap::-webkit-scrollbar { display: none; }
.subnav a { flex: none; font-size: .76rem; font-weight: 600; color: var(--ink-soft); padding: 7px 14px; border-radius: var(--pill); border: 1px solid transparent; transition: color .2s, background .2s; }
.subnav a:hover { color: var(--laurel); background: rgba(3,79,70,.06); }
/* Aktiver Abschnitt (Scroll-Spy in app.js) — ein echtes Orientierungssignal, kein Deko-Highlight. */
.subnav a[aria-current] { color: var(--laurel); background: var(--lime); border-color: transparent; }


/* ============================================================
   KI-SUCHE — Antwortseite /suche/ (finder.js)
   Chips = verstandener Bedarf (entfernbar), Fragen-Karten = Gegenfragen,
   Ergebnis = rank-card wie in den Ranglisten, Passung als Lime-Tag.
   ============================================================ */
.s-title { max-width: 24ch; }
.s-refine { margin-top: 18px; max-width: 780px; }
.s-intent { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 16px; min-height: 30px; }
.s-lbl { font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-faint); font-weight: 600; margin-right: 4px; }
.s-chip { display: inline-flex; align-items: center; gap: 7px; font-size: .8rem; font-weight: 600; padding: 5px 6px 5px 12px; border-radius: var(--pill); background: rgba(3,79,70,.07); color: var(--laurel-deep); }
.s-chip.city { background: var(--laurel); color: #eef5e0; }
.s-x { border: 0; background: rgba(0,0,0,.08); color: inherit; width: 18px; height: 18px; border-radius: 50%; cursor: pointer; font-size: .82rem; line-height: 1; padding: 0; }
.s-chip.city .s-x { background: rgba(255,255,255,.22); }
.s-ki { margin-left: 4px; font-size: .78rem; }
.s-notice { margin-top: 16px; background: #fbf3dd; border: 1px solid #ecdcae; color: #5a4413; border-radius: var(--r); padding: 14px 18px; font-size: .88rem; line-height: 1.55; }
.s-notice.soft { background: var(--paper-card); border-color: var(--line); color: var(--ink-soft); }
.s-notice b { color: inherit; font-weight: 600; }
.s-notice a { color: inherit; text-decoration: underline; }
.s-fragen { display: grid; gap: 12px; margin-top: 18px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.s-fragen:empty { display: none; }
.s-frage { background: var(--paper-card); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 16px 18px; box-shadow: var(--shadow-sm); }
.s-frage-kopf { display: flex; align-items: center; gap: 10px; }
.s-frage-kopf b { font-family: var(--display); font-weight: 500; font-size: 1.02rem; }
.s-opt { font-size: .62rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-faint); }
.s-skip { margin-left: auto; border: 0; background: none; color: var(--ink-faint); font: inherit; font-size: .76rem; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
.s-hinweis { font-size: .76rem; color: var(--ink-faint); margin: 4px 0 0; }
.s-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.s-answer { border: 1px solid var(--line-strong); background: var(--paper-soft); color: var(--ink); border-radius: var(--pill); padding: 8px 14px; font: inherit; font-size: .84rem; font-weight: 600; cursor: pointer; transition: background .15s, border-color .15s; }
.s-answer:hover { background: var(--lime); border-color: var(--lime-deep); }
.s-listhead h2 { margin-bottom: 4px; }
.s-listhead .lead { margin-bottom: 20px; max-width: 72ch; }
.tag.s-match { background: var(--lime); color: var(--lime-ink); border-color: transparent; }
.tag.s-miss { color: var(--ink-faint); text-decoration: line-through; }
.s-warum { font-size: .74rem; color: var(--ink-faint); margin: 8px 0 0; }
.s-cta { display: grid; grid-template-columns: 1fr auto; gap: 24px; align-items: center; background: var(--forest-grad); color: #dbe8dd; border-radius: var(--r-xl); padding: 26px 30px; margin-top: 32px; }
.s-cta .eyebrow { color: var(--lime); }
.s-cta .eyebrow::before { background: var(--lime); }
.s-cta h3 { color: #fff; margin: 8px 0 4px; }
.s-cta p { margin: 0; color: #c3d3c5; font-size: .9rem; }
.s-trans { margin-top: 24px; }
@media (max-width: 680px) { .s-cta { grid-template-columns: 1fr; } .s-cta .btn { width: 100%; justify-content: center; } }

/* ============================================================
   BC ASSISTANT — Chat-Seite /suche/ (chat.js)
   Links Gespräch (Text + Liste + Chips + CTA je Antwort), rechts
   mitlaufende Auswahl; mobil eine Spalte + Sticky-CTA.
   ============================================================ */
.chat-page { padding-top: clamp(18px, 2.4vw, 30px); }
.chat-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 32px; align-items: start; margin-top: 8px; }
.chat-col { background: var(--paper-card); border: 1px solid var(--line); border-radius: var(--r-xl); box-shadow: var(--shadow-sm); display: flex; flex-direction: column; }
.chat-head { display: flex; align-items: center; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--line); }
.chat-avatar { width: 40px; height: 40px; border-radius: 50%; background: var(--laurel); display: grid; place-items: center; flex: none; }
.chat-avatar svg { width: 24px; height: 24px; display: block; }
.chat-head b { display: block; font-family: var(--display); font-weight: 500; font-size: 1.05rem; }
.chat-ki { font-size: .74rem; color: var(--ink-faint); }
.chat-stream { padding: 20px; display: flex; flex-direction: column; gap: 16px; overflow-y: auto; max-height: 68vh; min-height: 40vh; }
.msg { display: flex; flex-direction: column; gap: 10px; }
.msg.user { align-items: flex-end; }
.msg.user .msg-bubble { background: var(--laurel); color: #eef5e0; border-radius: 18px 18px 4px 18px; max-width: 80%; }
.msg.bot .msg-bubble { background: var(--paper-soft); border: 1px solid var(--line); border-radius: 18px 18px 18px 4px; max-width: 92%; }
.msg-bubble { padding: 12px 16px; font-size: .92rem; line-height: 1.55; }
.msg-text { white-space: pre-line; }
.msg-src { display: inline-block; margin-top: 8px; font-size: .62rem; letter-spacing: .08em; text-transform: uppercase; color: var(--laurel); font-weight: 600; }
.msg-src.off { color: var(--ink-faint); }
.msg.typing .msg-bubble { color: var(--ink-faint); font-size: .84rem; }
.dots { display: inline-flex; gap: 3px; margin-right: 6px; vertical-align: middle; }
.dots i { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--laurel-light); animation: dot 1.2s infinite; }
.dots i:nth-child(2) { animation-delay: .2s; }
.dots i:nth-child(3) { animation-delay: .4s; }
@keyframes dot { 0%, 80%, 100% { opacity: .25; } 40% { opacity: 1; } }
.msg-list { display: flex; flex-direction: column; gap: 8px; }
.cl-item { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: 12px; align-items: center; background: var(--paper-card); border: 1px solid var(--line); border-radius: var(--r); padding: 12px 14px; }
.cl-item.top1 { border-color: var(--laurel-light); background: linear-gradient(180deg, #f4f9ec, var(--paper-card)); }
.cl-n { font-family: var(--display); font-size: 1.5rem; color: var(--laurel); text-align: center; }
.cl-body { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.cl-name { font-weight: 600; font-size: .96rem; color: var(--ink); }
.cl-name:hover { color: var(--laurel); }
.cl-meta { font-size: .74rem; color: var(--ink-soft); }
.cl-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 2px; }
.cl-side { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.cl-score { font-family: var(--display); font-weight: 600; font-size: 1.15rem; color: var(--ink); }
.cl-score small { font-size: .65rem; color: var(--ink-faint); margin-left: 2px; font-weight: 500; }
.msg-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.s-answer.skip { background: transparent; border-style: dashed; color: var(--ink-faint); }
.msg-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.msg-cta { padding: 10px 18px; font-size: .88rem; }
.chat-form { display: flex; gap: 10px; padding: 14px 16px; border-top: 1px solid var(--line); align-items: flex-end; }
.chat-form textarea { flex: 1; resize: none; border: 1.5px solid var(--line-strong); border-radius: 18px; padding: 11px 16px; font: inherit; font-size: .95rem; line-height: 1.4; min-height: 46px; max-height: 160px; outline: none; background: var(--paper-card); color: var(--ink); }
.chat-form textarea:focus { border-color: var(--laurel); box-shadow: 0 0 0 4px rgba(3,79,70,.08); }
.chat-hint { font-size: .72rem; color: var(--ink-faint); padding: 0 20px 14px; margin: 0; line-height: 1.5; }
.chat-side { position: sticky; top: calc(var(--masthead-h) + 20px); }
.chat-side-card { background: var(--forest-grad); color: #dbe8dd; border-radius: var(--r-xl); padding: 22px 24px; box-shadow: var(--shadow); }
.chat-side-card .eyebrow { color: var(--lime); }
.chat-side-card .eyebrow::before { background: var(--lime); }
.sl-head { color: #fff; font-family: var(--display); font-size: 1.05rem; margin: 8px 0 12px; }
.side-list { display: flex; flex-direction: column; gap: 4px; margin-bottom: 16px; }
.sl-item { display: grid; grid-template-columns: 22px 1fr auto; gap: 8px; align-items: baseline; font-size: .86rem; padding: 6px 0; border-bottom: 1px solid rgba(234,243,234,.14); }
.sl-n { color: var(--lime); font-family: var(--display); }
.sl-name { color: #fff; font-weight: 600; }
.sl-name:hover { color: var(--lime); }
.sl-score { color: #c3d3c5; font-variant-numeric: tabular-nums; }
.sl-empty { font-size: .82rem; color: #b6c6b9; margin: 0 0 12px; }
.chat-side-card .btn { width: 100%; justify-content: center; }
.chat-side-foot { font-size: .66rem; color: #8fa793; margin: 12px 0 0; }
.chat-sticky { display: none; }
@media (max-width: 1000px) {
  .chat-grid { grid-template-columns: 1fr; }
  .chat-side { display: none; }
  .chat-stream { max-height: none; }
  .chat-sticky { display: block; position: fixed; left: 0; right: 0; bottom: 0; z-index: 150; padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); background: rgba(238,241,236,.92); backdrop-filter: blur(10px); border-top: 1px solid var(--line); }
  .chat-sticky[hidden] { display: none; }
  .chat-sticky .btn { width: 100%; justify-content: center; }
  .msg.bot .msg-bubble, .msg.user .msg-bubble { max-width: 100%; }
  .cl-item { grid-template-columns: 28px minmax(0, 1fr); }
  .cl-side { grid-column: 2; flex-direction: row; align-items: center; justify-content: space-between; }
}

/* ============================================================
   EINWILLIGUNG (Consent-Banner, selbst gehostet) + Rechtstexte
   Nicht-blockierend: kein Backdrop, Seite bleibt bedienbar.
   „Alle akzeptieren" und „Nur notwendige" gleich gewichtet.
   ============================================================ */
/* Prefix „cst" — „.consent" ist bereits die Checkbox-Zeile der Lead-Formulare. */
.cst { position: fixed; z-index: 200; left: 16px; right: 16px; bottom: 16px; display: flex; justify-content: flex-start; pointer-events: none; }
/* display:flex/grid würde das hidden-Attribut überstimmen — explizit ausblenden. */
.cst[hidden], .cst-details[hidden] { display: none !important; }
.cst-card { pointer-events: auto; width: min(580px, 100%); background: var(--paper-card); border: 1px solid var(--line-strong); border-radius: var(--r-xl); box-shadow: var(--shadow-lg); padding: 24px 26px 22px; }
.cst-card h2 { font-size: 1.3rem; margin: 8px 0 8px; }
.cst-text { font-size: .88rem; color: var(--ink-soft); line-height: 1.55; margin: 0 0 16px; }
.cst-text b { color: var(--ink); font-weight: 600; }
.cst-text a { color: var(--brass-deep); text-decoration: underline; text-underline-offset: 2px; }
.cst-details { border-top: 1px solid var(--line); padding-top: 14px; margin-bottom: 14px; display: grid; gap: 12px; }
.cst-row { display: flex; gap: 12px; align-items: flex-start; font-size: .84rem; color: var(--ink-soft); line-height: 1.5; cursor: pointer; }
.cst-row input { margin: 3px 0 0; width: 18px; height: 18px; flex: none; accent-color: var(--laurel); }
.cst-row b { color: var(--ink); font-weight: 600; }
.cst-record { font-size: .72rem; color: var(--ink-faint); margin: 0; }
.cst-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.cst-actions .btn { padding: 11px 18px; font-size: .88rem; }
@media (max-width: 680px) {
  .cst { left: 0; right: 0; bottom: 0; }
  .cst-card { width: 100%; border-radius: var(--r-xl) var(--r-xl) 0 0; padding: 20px 20px 18px; }
  .cst-actions .btn { flex: 1 1 100%; justify-content: center; }
}
/* Hinweis im Bedarfs-Finder, wenn die KI-Verfeinerung mangels Einwilligung aus ist. */
.fi-consent { padding: 8px 12px 4px; font-size: .78rem; color: var(--ink-soft); line-height: 1.5; }
.fi-consent b { color: var(--ink); }
.fi-link { background: none; border: 0; padding: 0; font: inherit; color: var(--brass-deep); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
/* Rechtstexte (Datenschutz/Impressum): ruhige Lesetypografie */
.legal h2 { font-size: 1.35rem; margin-top: 1.9em; scroll-margin-top: calc(var(--masthead-h) + 24px); }
.legal h3 { font-size: 1.02rem; margin: 1.4em 0 .4em; }
.legal p, .legal li { color: var(--ink-soft); }
.legal ul { padding-left: 20px; margin: 0 0 1em; }
.legal li { margin-bottom: .35em; }
.legal a { color: var(--brass-deep); text-decoration: underline; text-underline-offset: 2px; }
.legal .legal-box { background: var(--paper-card); border: 1px solid var(--line); border-radius: var(--r); padding: 16px 20px; margin: 14px 0 18px; }
.legal .legal-box p { margin: 0; }
.legal .legal-toc { font-size: .88rem; columns: 2; column-gap: 28px; list-style: none; padding: 0; }
@media (max-width: 600px) { .legal .legal-toc { columns: 1; } }
.legal .legal-stand { font-size: .78rem; color: var(--ink-faint); margin-top: 32px; }

/* Visuell verborgen, für Screenreader zugänglich. */
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* ============================================================
   Enterprise-Profil · ep-* · isoliert von anderen Seitentypen
   Raster 12 Spalten, 8/4 ab 1024, 9/3 ab 1200; Rhythmus 4/8/12/16/24/32/48/64.
   ============================================================ */
:root { --ep-shadow: 0 2px 4px rgba(20,33,29,.03), 0 16px 40px rgba(20,33,29,.04); }
.ep { --subnav-h: 56px; padding: 24px 0 64px; font-size: 16px; }
.ep [hidden] { display: none !important; }
.ep-wrap { max-width: 1328px; }
.ep-layout { display: grid; grid-template-columns: repeat(12,minmax(0,1fr)); gap: 32px; align-items: start; }
.ep-layout > * { min-width: 0; }
/* 0. Runde 3 · Bild-Slot: reservierte Fläche, Text und Credit außerhalb des Fotos. */
.ep-hero { margin: 0; width: 100%; background: var(--laurel-deep); }
.ep-hero img { display: block; width: 100%; height: clamp(190px, 24vw, 300px); aspect-ratio: auto; object-fit: cover; object-position: var(--ep-image-position,50% 50%); border-radius: 0; background: var(--paper-2); }
.ep-hero + .ep-wrap { padding-top: clamp(16px, 2.4vw, 28px); }
.ep-hero figcaption { text-align: right; color: var(--ink-faint); font-size: 12px; margin: 6px auto 0; max-width: var(--maxw); padding: 0 clamp(20px, 4vw, 40px); }
.ep-gallery { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; margin: 24px 0; }
.ep-gallery figure { margin: 0; min-width: 0; }
.ep-gallery figcaption { color: var(--ink-faint); font-size: 12px; margin-top: 6px; text-align: right; overflow-wrap: anywhere; }
.ep-gallery img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; object-position: var(--ep-image-position,50% 50%); border-radius: 8px; background: var(--paper-2); }
.ep-head,.ep-main { grid-column: 1 / span 8; }
.ep-crumbs { display: flex; flex-wrap: wrap; gap: 4px 12px; margin: 0 0 32px; font-size: 12px; color: var(--ink-faint); }
.ep-crumbs a { min-height: 44px; display: inline-flex; align-items: center; }
.ep-crumbs > span { align-self: center; }
.ep :is(h1,h2,h3,p,li,dd,address,a) { overflow-wrap: anywhere; }
.ep p:last-child { margin-bottom: 0; }
.ph-icon { display: inline-block; flex: none; vertical-align: middle; }
.ep-label { display: block; color: var(--ink-soft); font-size: 12px; line-height: 1.5; font-weight: 600; }
.ep-note { font-size: 13px; line-height: 1.6; color: var(--ink-faint); }
.ep-link { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; color: var(--brass-deep); text-decoration: underline; text-underline-offset: 4px; }
.ep-link:hover { text-decoration-thickness: 2px; }
.ep a:focus-visible,.ep summary:focus-visible,.ep select:focus-visible,.ep [tabindex]:focus-visible { outline: 3px solid var(--laurel); outline-offset: 4px; }
.ep .btn { min-height: 48px; border-radius: 8px; padding: 12px 16px; line-height: 1.3; justify-content: center; text-align: center; }
.ep-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 24px; margin-top: 24px; }
.ep-actions .ep-context { display: contents; }
/* display:contents schlaegt die Browserregel fuer [hidden]; der Anfrage-Knopf muss sich aber ausblenden lassen. */
.ep-actions .ep-context[hidden] { display: none; }
/* Mehrere Platzierungen stehen offen nebeneinander (SEO-Berater 03.10.2026), jede mit eigener Beschriftung. */
#profil-kennzahlen .ep-context + .ep-context { margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--line); }
/* 1. Identität und Kennzahlen: Rollen statt dekorativer Pills. */
.ep-kicker { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; padding-bottom: 12px; margin-bottom: 16px; border-bottom: 1px solid var(--line-strong); color: var(--ink-faint); font-size: 12px; }
.ep-kicker > span:first-child { display: flex; gap: 8px; align-items: center; text-transform: uppercase; letter-spacing: .08em; }
.ep-category { color: var(--brass-deep); font-size: 14px; font-weight: 600; margin-bottom: 8px; }
.ep h1 { font-size: clamp(36px,3.6vw,56px); font-weight: 600; letter-spacing: -.045em; line-height: 1.04; max-width: 22ch; margin-bottom: 12px; }
.ep-location { display: flex; gap: 8px; align-items: baseline; color: var(--ink-faint); font-size: 14px; margin-bottom: 4px; }
/* Firmensitz und Einsatzgebiet stehen getrennt (MH 03.10.2026): der Sitz ist eine Tatsache, das Gebiet unsere Einordnung. */
.ep-servicearea { color: var(--ink-faint); font-size: 14px; margin: 0 0 16px 28px; }
.ep-positioning { max-width: 68ch; color: var(--ink-soft); font-size: 16px; line-height: 1.6; margin-bottom: 16px; }
.ep-context-picker { margin: 24px 0; }
.ep-context-picker label { display: block; font-size: 12px; font-weight: 600; margin-bottom: 8px; }
.ep-context-picker select { width: 100%; min-height: 48px; padding: 12px; font: inherit; font-size: 14px; color: var(--ink); background: var(--paper-card); border: 1px solid var(--line-strong); border-radius: 8px; }
.ep-context-picker p { font-size: 12px; color: var(--ink-faint); margin-top: 8px; }
.ep-context-label { font-size: 12px; color: var(--ink-soft); margin: 16px 0 8px; }
.ep-stats { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); margin: 0; border: 1px solid var(--line-strong); border-radius: 12px; overflow: hidden; background: var(--paper-card); }
.ep-stats > div { padding: 16px; border-left: 1px solid var(--line); min-width: 0; }
.ep-stats > div:first-child { background: var(--lime); border-left: 0; }
.ep-stats dt { font-size: 12px; color: var(--ink-soft); line-height: 1.4; }
.ep-stats dd { font-size: 28px; line-height: 1.2; font-weight: 600; margin: 12px 0 0; font-variant-numeric: tabular-nums; letter-spacing: -.035em; }
.ep-stats dd > span { font-size: 12px; font-weight: 400; letter-spacing: 0; white-space: nowrap; }
.ep-stats dd > small { display: block; font-size: 14px; line-height: 1.5; letter-spacing: 0; }
.ep-stats p { margin: 8px 0 0; font-size: 12px; line-height: 1.5; color: var(--ink-soft); font-weight: 400; letter-spacing: 0; }
.ep-stats .ep-link { gap: 4px; min-height: 44px; }

.ep-open-teaser { display: flex; gap: 8px; align-items: baseline; font-size: 13px; color: var(--ink-soft); margin: 24px 0 0; }
/* 2. Summary-Rail: derselbe Inhalt und dieselben Aktionen an jedem Breakpoint. */
.ep-rail { grid-column: 9 / -1; grid-row: 1 / 3; position: sticky; top: calc(var(--masthead-h) + 24px); max-height: calc(100svh - var(--masthead-h) - 48px); overflow-y: auto; border-radius: 16px; box-shadow: var(--shadow); }
.ep-rail-box { background: var(--laurel-deep); color: var(--paper-card); padding: 24px; }
.ep-rail .ep-label { color: var(--lime); }
.ep-rail-name { font-size: 24px; font-weight: 600; letter-spacing: -.02em; line-height: 1.2; margin: 12px 0; }
.ep-rail-category { color: var(--lime); font-size: 13px; margin-bottom: 24px; }
.ep-rail-score { display: flex; align-items: center; gap: 16px; }
.ep-rail-score > div:last-child { min-width: 0; }
.ep-rail-score strong { display: block; font-size: 24px; line-height: 1.2; }
.ep-rail-score span { display: block; font-size: 12px; margin-top: 8px; }
.ep-gauge { position: relative; width: 112px; flex: 0 0 112px; aspect-ratio: 1; }
.ep-gauge svg { width: 100%; height: 100%; fill: none; stroke-width: 6; }
.ep-gauge-track { stroke: var(--laurel-light); }
.ep-gauge-value { stroke: var(--lime); stroke-linecap: round; }
.ep-gauge > div { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; flex-direction: column; }
.ep-gauge strong { font-size: 28px; font-variant-numeric: tabular-nums; }
.ep-gauge span { font-size: 11px; margin-top: 4px; }
.ep-rail-rating { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; border-top: 1px solid var(--laurel-light); padding-top: 24px; margin-top: 24px; }
.ep-rail-rating > span { white-space: nowrap; font-size: 20px; font-variant-numeric: tabular-nums; }
.ep-rail-rating small { font-size: 12px; text-align: right; }
.ep-rail-customer { font-size: 14px; margin: 16px 0 24px; }
.ep-rail-customer small { display: block; font-size: 12px; }
.ep-rail-actions { display: grid; gap: 8px; }
.ep-rail-website { display: flex; gap: 8px; align-items: center; justify-content: center; min-height: 44px; color: var(--paper-card); font-size: 14px; border: 1px solid var(--laurel-light); border-radius: 8px; }
.ep-rail-website:hover { background: var(--laurel); }
.ep-rail a:focus-visible { outline-color: var(--lime); }
.ep-rail-foot { border-top: 1px solid var(--laurel-light); padding-top: 16px; margin-top: 16px; font-size: 12px; }
.ep-rail-foot a { display: flex; gap: 8px; align-items: center; min-height: 44px; text-decoration: underline; text-underline-offset: 4px; }
.ep-mobile-score { display: none; }
/* 3. Navigation und Abschnittsrhythmus. Keine Hover-Effekte an Karten. */
.ep-nav { top: var(--masthead-h); margin: 0 0 24px; border-top: 0; align-self: start; }
.ep-nav .wrap { position: relative; padding: 0; gap: 24px; scroll-padding-inline: 16px; }
.ep-nav a { padding: 16px 0; min-height: 56px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; font-size: 13px; }
.ep-nav a[aria-current] { background: transparent; border-bottom-color: var(--laurel); }
.ep-nav a:hover { background: transparent; color: var(--brass-deep); border-bottom-color: var(--ink-faint); }
.ep-nav a:focus-visible { outline-offset: -3px; }
.ep-content { display: grid; gap: 24px; }
.ep-panel { padding: 24px; background: var(--paper-card); border: 1px solid var(--line); border-radius: 16px; box-shadow: var(--ep-shadow); }
.ep :is(section,[id],details) { scroll-margin-top: calc(var(--masthead-h) + var(--subnav-h) + 24px); }
.ep-section-head { display: flex; align-items: baseline; gap: 16px; margin-bottom: 16px; }
.ep-index { font-size: 12px; color: var(--ink-faint); font-variant-numeric: tabular-nums; }
.ep h2 { font-size: 28px; line-height: 1.15; letter-spacing: -.025em; margin-bottom: 8px; }
.ep h3 { font-size: 16px; line-height: 1.4; font-weight: 600; }
.ep-subheading { margin: 24px 0 8px; }
.ep-inset,.ep-ideal { padding: 16px; background: var(--paper-soft); border: 1px solid var(--line); border-radius: 8px; margin-bottom: 24px; }
.ep-inset p,.ep-ideal p { margin-top: 8px; }
.ep-ideal { padding: 0 0 16px; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent; margin-bottom: 16px; }
.ep-empty { padding: 16px; background: var(--paper-soft); font-size: 14px; color: var(--ink-soft); }
/* 4. Anlassabgleich und Leistungsprofil. */
.ep-fit { margin-bottom: 16px; }
.ep-fit-row { display: grid; grid-template-columns: 32px minmax(0,1fr) minmax(0,1fr); align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.ep-fit-symbol { display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid var(--line-strong); border-radius: 8px; color: var(--ink-faint); }
.ep-fit-symbol.is-documented { background: var(--lime); color: var(--laurel-deep); border-color: transparent; }
.ep-fit-row > strong { font-size: 14px; }
.ep-fit-row > span:last-child { font-size: 13px; color: var(--ink-soft); }
.ep-fit-row .ep-link { display: flex; font-size: 12px; }
.ep-strengths,.ep-service-list { padding: 0; margin: 16px 0 24px; list-style: none; }
.ep-strengths li,.ep-service-list li { display: flex; gap: 12px; align-items: baseline; margin: 12px 0; }
.ep-strengths .ph-icon,.ep-service-list .ph-icon { color: var(--laurel); }
.ep-capacity { display: flex; gap: 12px; padding: 16px 0; border-block: 1px solid var(--line); }
.ep-capacity small { font-size: 12px; color: var(--ink-faint); }
.ep-tags { display: flex; flex-wrap: wrap; gap: 8px 16px; list-style: none; margin: 12px 0 0; padding: 0; }
.ep-tags li { font-size: 13px; padding-left: 12px; border-left: 2px solid var(--line-strong); }
/* 5. Quellen und Reputation: Verteilung zeigt Mengen, niemals Sterne. */
.ep-notice { display: flex; align-items: baseline; gap: 12px; padding: 16px; margin: 0 0 24px; font-size: 14px; background: var(--paper-soft); border-left: 3px solid var(--laurel); }
.ep-notice { color: var(--ink-soft); }
.ep-warning-text { display: block; margin-top: 8px; }
.ep-distribution { margin: 16px 0; }
.ep-distribution figcaption { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; font-size: 13px; }
.ep-distribution figcaption span { display: block; font-size: 12px; color: var(--ink-faint); margin-top: 0; }
.ep-stack { display: flex; height: 12px; gap: 2px; margin: 12px 0; border-radius: 4px; overflow: hidden; border: 1px solid var(--line-strong); }
.ep-stack span,.ep-legend i { background: var(--source-color); }
.ep-legend { padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 8px 24px; margin: 0; font-size: 12px; }
.ep-legend li { display: flex; align-items: baseline; gap: 8px; }
.ep-legend i { width: 10px; height: 10px; flex: 0 0 10px; border: 1px solid var(--ink-faint); }
.ep-legend b { margin-left: auto; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ep-sources { list-style: none; padding: 0; margin: 0; }
.ep-source { display: grid; grid-template-columns: minmax(0,1fr) minmax(88px,auto); gap: 8px 16px; align-items: center; padding: 12px 0; border-top: 1px solid var(--line); }
.ep-source h3 { margin: 0; }
.ep-source h3 .ep-link { margin-top: -8px; }
.ep-source-meta { font-size: 12px; color: var(--ink-soft); margin: -4px 0 4px; }
.ep-source-value { text-align: right; font-variant-numeric: tabular-nums; }
.ep-source-value strong { font-size: 20px; line-height: 1.2; }
.ep-source-value span { font-size: 12px; margin-left: 4px; }
.ep-source-value small { display: block; font-size: 12px; color: var(--ink-faint); }
.ep-source-date { grid-column: 1 / -1; font-size: 12px; color: var(--ink-faint); margin: 0; }
.ep-source-date > span { display: block; color: var(--ink-soft); }
.ep-review-summary { display: flex; flex-wrap: wrap; gap: 16px 24px; padding: 16px 0; margin: 0; border-block: 1px solid var(--line-strong); }
.ep-review-summary > div { flex: 1 1 180px; min-width: 0; }
.ep-review-summary dt { color: var(--ink-soft); font-size: 12px; }
.ep-review-summary dd { margin: 8px 0 0; font-size: 28px; line-height: 1.2; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--laurel-deep); }
.ep-review-summary dd > span,.ep-review-summary dd > small { font-size: 13px; font-weight: 400; }
.ep-review-summary p { color: var(--ink-faint); font-size: 12px; line-height: 1.5; font-weight: 400; margin: 4px 0 0; }
.ep-big-number { font-size: 36px; line-height: 1.2; letter-spacing: -.035em; margin: 8px 0 0; font-variant-numeric: tabular-nums; color: var(--laurel-deep); }
.ep-big-number > span { font-size: 14px; letter-spacing: 0; }
/* 6. Acht Kriterien; zugängliche Rechentabelle im nativen Detail. */
.ep-judgement-head { display: flex; justify-content: space-between; align-items: start; gap: 16px; margin-bottom: 24px; }
.ep-judgement-head > div { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; }
.ep-judgement-head h3 { font-size: 24px; margin: 0; }
.ep-judgement-head .ep-big-number { flex-shrink: 0; }
.ep-criteria { display: grid; gap: 16px 24px; margin: 0 0 16px; }
.ep-criterion { position: relative; margin: 0; }
.ep-criterion dt { padding-right: 108px; font-size: 14px; line-height: 1.5; }
.ep-criterion dt > span { display: block; font-size: 12px; color: var(--ink-faint); margin-top: 4px; }
.ep-criterion dd { margin: 8px 0 0; font-variant-numeric: tabular-nums; }
.ep-criterion dd > b { position: absolute; right: 0; top: 0; max-width: 100px; font-size: 16px; text-align: right; }
.ep-criterion dd > b span { font-size: 12px; font-weight: 400; color: var(--ink-faint); }
.ep-track { display: block; width: 100%; height: 8px; border-radius: 2px; background: var(--paper-2); overflow: hidden; }
.ep-track > span { display: block; height: 100%; background: var(--laurel); }
.ep .evidence { border-bottom: 1px solid var(--line-strong); }
.ep-disclosure { display: inline-flex; flex: none; }
.ep-disclosure [data-weight="fill"],.evidence[open] > summary .ep-disclosure [data-weight="regular"] { display: none; }
.evidence[open] > summary .ep-disclosure [data-weight="fill"] { display: inline-block; }
.ep .evidence summary { min-height: 48px; padding: 12px 0; font-size: 14px; color: var(--brass-deep); }
.ep .evidence-body { padding: 0 0 24px; font-size: 14px; }
.ep-table-scroll { overflow-x: auto; margin-bottom: 16px; }
.ep-table { width: 100%; min-width: 480px; border-collapse: collapse; font-size: 13px; text-align: left; }
.ep-table caption { text-align: left; padding: 12px 0; color: var(--ink-soft); }
.ep-table :is(th,td) { padding: 12px 8px; border-bottom: 1px solid var(--line); vertical-align: top; }
.ep-table th { font-weight: 600; }
.ep-table td { font-variant-numeric: tabular-nums; }
.ep-table tfoot { background: var(--paper-soft); }
/* 7. Prüfprotokoll, Kontakt und nächste Handlung. */
.ep-timeline { padding: 0; list-style: none; margin: 16px 0; }
.ep-timeline li { display: flex; align-items: start; gap: 16px; position: relative; padding-bottom: 16px; }
.ep-timeline li:not(:last-child)::before { content: ''; position: absolute; top: 32px; bottom: 0; left: 15px; width: 1px; background: var(--line-strong); }
.ep-step-icon { display: grid; place-items: center; flex: 0 0 32px; height: 32px; background: var(--paper-soft); border: 1px solid var(--line-strong); border-radius: 50%; color: var(--laurel); }
.ep-timeline h3 { margin: 4px 0; }
.ep-timeline p { font-size: 14px; margin-bottom: 4px; }
.ep-source-links { list-style: none; padding: 0; margin: 0; }
.ep-source-links a { max-width: 100%; font-size: 13px; }
.ep-contact { display: flex; gap: 24px; }
.ep-contact-icon { background: var(--paper-soft); display: grid; place-items: center; flex: 0 0 48px; height: 48px; border: 1px solid var(--line); border-radius: 12px; }
.ep-contact address { font-style: normal; font-size: 18px; margin: 8px 0; }
.ep-next { margin-top: 24px; padding: 16px; background: var(--paper-soft); border-radius: 8px; }
.ep-seal-link { margin-top: 24px; font-size: 12px; }
/* Hinweis auf die Selbstuebernahme am Ende des Profils (MH 02.10.2026). */
.ep-claim { display: flex; gap: 10px; align-items: flex-start; margin: 24px 0 0; padding-top: 18px; border-top: 1px solid var(--line); font-size: 13px; line-height: 1.6; color: var(--ink-soft); }
.ep-claim svg { flex: 0 0 auto; margin-top: 2px; color: var(--brass-deep); }
.ep-claim strong { color: var(--ink); }
.ep-claim .ep-link { display: inline-flex; margin-top: 2px; }
/* 8. Breakpoints: 1024 => 976 px Raster, 643/309 bei 24 px Gutter. */
/* Runde 3 · zwei Kriterien/Anlässe nebeneinander, sobald Zeilen genug Platz haben. */
@media (min-width:1200px) {
  /* Breiteres Dossier, kompakte Rail: 952 / 296 px bei 1440 px Viewport. */
  .ep-head,.ep-main { grid-column: 1 / span 9; }
  .ep-rail { grid-column: 10 / -1; }
  .ep-source { grid-template-columns: minmax(0,1fr) 104px minmax(0,1fr); gap: 16px; padding: 8px 0; }
  .ep-source-date { grid-column: 3; }
  .ep-source-value { text-align: left; }
  .ep-criteria { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 24px; }
  .ep-criterion { display: flex; flex-direction: column; }
  .ep-criterion dt { flex: 1; padding-right: 88px; }
  .ep-criterion dd > b { max-width: 80px; }
  .ep-timeline { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px 24px; }
  .ep-timeline li { padding: 0; }
  .ep-timeline li::before { display: none; }
  .ep-timeline li:last-child:nth-child(odd) { grid-column: 1 / -1; }
}
@media (min-width:768px) {
  .ep-fit { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0 24px; }
  .ep-fit-row { grid-template-columns: 32px minmax(0,1fr); gap: 0 12px; }
  .ep-fit-symbol { grid-row: 1 / 3; align-self: start; }
  .ep-fit-row > span:last-child { grid-column: 2; }
  .ep-service-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: 24px; }
  .ep-service-list > li:only-child { grid-column: 1 / -1; }
}
@media (min-width:1024px) and (max-width:1199px) {
  .ep-layout { gap: 24px; }
  .ep-panel { padding: 24px; }
  .ep-stats > div { padding: 12px; }
  .ep-stats dd { font-size: 24px; }
  .ep-rail-box { padding: 24px 16px; }
}
@media (max-width:1023px) {
  .ep-layout { display: block; }
  .ep-head { padding-bottom: 24px; }
  .ep-nav { margin-bottom: 24px; }
  .ep-rail { position: static; max-height: none; margin-bottom: 24px; }
  .ep.is-enhanced .ep-rail { position: fixed; inset: auto 0 0; z-index: 110; margin: 0; border-radius: 12px 12px 0 0; max-height: 50svh; box-shadow: 0 -8px 32px rgba(20,33,29,.14); }
  .ep.is-enhanced .ep-rail.is-parked { visibility: hidden; pointer-events: none; }
  .ep.is-enhanced .ep-rail-box { max-width: 768px; margin: auto; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); }
  .ep.is-enhanced .ep-rail { background: var(--laurel-deep); }
  .ep.is-enhanced .ep-rail :is(.ep-rail-label,.ep-gauge,.ep-rail-foot,.ep-rail-rating) { display: none; }
  .ep.is-enhanced .ep-rail-name { font-size: 16px; margin: 0 0 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .ep.is-enhanced .ep-rail .ep-context { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,120px); gap: 4px 12px; }
  .ep.is-enhanced .ep-rail-category { grid-column: 1; font-size: 12px; margin: 0; }
  .ep.is-enhanced .ep-rail-score { grid-column: 1; }
  .ep.is-enhanced .ep-rail-score > div { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
  .ep.is-enhanced .ep-rail-score strong { font-size: 13px; }
  .ep.is-enhanced .ep-rail-score span { display: none; }
  .ep.is-enhanced .ep-mobile-score { display: inline; font-size: 13px; font-weight: 400; }
  .ep.is-enhanced .ep-rail-customer { grid-column: 2; grid-row: 1 / 3; font-size: 12px; margin: 0; text-align: right; }
  .ep.is-enhanced .ep-rail-customer small { font-size: 11px; }
  .ep.is-enhanced .ep-rail-actions { grid-column: 1 / -1; grid-template-columns: minmax(0,1fr) auto; margin-top: 8px; }
  .ep.is-enhanced .ep-rail-actions .btn { min-height: 44px; font-size: 13px; padding: 8px 12px; }
  .ep.is-enhanced .ep-rail-website { font-size: 13px; padding: 8px 12px; }
  .ep [id] { scroll-margin-bottom: 192px; }
  html:has(.ep.is-enhanced) { scroll-padding-bottom: calc(176px + env(safe-area-inset-bottom)); }
}
@media (max-width:767px) {
  .ep-hero img { height: clamp(160px, 42vw, 220px); border-radius: 0; }
  .ep-gallery { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ep-review-summary > div { flex-basis: 120px; }
  .ep { padding-top: 16px; }
  .ep-wrap { padding-inline: 16px; }
  .ep-crumbs { margin-bottom: 24px; }
  .ep-stats { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ep-stats > div:nth-child(3) { border-left: 0; }
  .ep-stats > div:nth-child(n+3) { border-top: 1px solid var(--line); }
  .ep-positioning { font-size: 16px; }
  .ep-panel { padding: 24px 16px; border-radius: 12px; }
  .ep h2 { font-size: 24px; }
  .ep-section-head { gap: 12px; }
  .ep-fit-row { grid-template-columns: 32px minmax(0,1fr); }
  .ep-fit-row > span:last-child { grid-column: 2; }
  .ep-fit-row .ep-link { display: inline-flex; margin-left: 8px; }
  .ep-inset,.ep-ideal,.ep-next { padding: 16px; }
  .ep-source { gap: 8px 12px; }
  .ep-contact { gap: 12px; }
  .ep-contact-icon { flex-basis: 32px; height: 32px; }
  .ep-big-number { font-size: 28px; }
  .ep-judgement-head { flex-wrap: wrap; }
  .ep-criterion dt { padding-right: 88px; }
  .ep-criterion dd > b { max-width: 80px; }
  .ep .ep-actions { gap: 8px 16px; }
}
body:has(.ep) .ep-lead-context { color: var(--ink); font-size: 14px; padding-bottom: 16px; border-bottom: 1px solid var(--line-strong); }
body:has(.ep) #anfrage { scroll-margin-top: calc(var(--masthead-h) + 24px); }
@media (max-width:680px) { body:has(.nav.open) .ep.is-enhanced .ep-rail { visibility: hidden; pointer-events: none; } }
/* 9. Progressive Bewegung: ohne JS sichtbar, nur einmal beim Eintritt. */
@media (prefers-reduced-motion:no-preference) {
  .ep .ep-enter { animation: ep-enter .45s ease-out both; }
  .ep .evidence[open] > .evidence-body { animation: ep-enter .2s ease-out both; }
  @keyframes ep-enter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
}
@media (prefers-reduced-motion:reduce) {
  html:has(.ep) { scroll-behavior: auto; }
  .ep * { animation: none !important; transition: none !important; }
}

/* Angaben des Anbieters (Partner-Portal): eigener, gekennzeichneter Abschnitt auf der Profilseite. */
.ep-anbieter-kurz { font-size: 18px; line-height: 1.5; margin: 0 0 14px; }
.ep-anbieter-text p { margin: 0 0 12px; max-width: 68ch; }
.ep-anbieter-gebiet p { margin: 0; color: var(--ink-soft); }
.ep-anbieter-stand { margin-top: 14px; color: var(--ink-faint); }
.ep-anbieter-stand small { font-size: 12px; }
