/* =========================================================
   Sonelo — Landingpage im Fonio-Design-Konzept
   Tokens & Stil abgeleitet aus fonio-design-spec.md
   ========================================================= */

:root {
  /* Farben */
  --bg: #ffffff;
  --ink: #0f0f16;
  --muted: #555b6e;
  --muted-2: #2a2a34;
  --accent: #1A73FF;
  --accent-soft: #EDF4FF;
  --surface: #f7f8fc;
  --surface-2: #f8f8f8;
  --border: #E1E9F4;
  --scaffold-line: rgba(20, 24, 56, 0.07);
  --dark: #0f0f16;
  --success: #4fd04f;
  --on-dark: #ffffff;
  --on-dark-muted: rgba(255, 255, 255, 0.6);

  /* Radien */
  --r-sm: 10px;
  --r-md: 12px;
  --r-lg: 18px;
  --r-pill: 9999px;

  /* Schatten (dezent) */
  --shadow-sm: 0 2px 5px rgba(0, 0, 0, 0.04);
  --shadow-card: 0 2px 9px rgba(57, 58, 77, 0.08);
  --shadow-pop: 0 12px 40px rgba(57, 58, 77, 0.12);

  /* Getönte, gestapelte Schatten (Stripe/Comeau-Logik: Marken-Tint, negativer Spread)
     — erzeugen "echte" Tiefe für Premium-Cards statt eines flachen Schattens. */
  --shadow-rest:
    0 1px 2px rgba(40, 42, 80, 0.05),
    0 4px 8px -2px rgba(40, 42, 80, 0.05),
    0 12px 24px -8px rgba(40, 42, 80, 0.07);
  --shadow-active:
    0 1px 2px rgba(40, 42, 80, 0.06),
    0 8px 18px -4px rgba(40, 42, 80, 0.08),
    0 28px 50px -14px rgba(26, 115, 255, 0.26);

  /* Layout */
  --container: 1280px;
  --container-narrow: 940px;
  --section-y: 96px;

  --font: "Roboto", system-ui, -apple-system, sans-serif;
}

/* Reset */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; overflow-x: clip; } /* clip auch auf html: mobile Safari/Chrome propagieren body-clip nicht zuverlässig → Viewport scrollte sonst seitlich (Blob-Überhang). clip bricht sticky Nav NICHT. */
body {
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.5;
  color: var(--ink);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip; /* verhindert horizontalen Scroll durch Blobs, ohne sticky Nav zu brechen */
}
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
ul { list-style: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }

/* Layout helpers */
.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: 24px; }
.narrow { max-width: var(--container-narrow); }
.section { padding-block: var(--section-y); }

/* ── Scaffolding-Gitter: dezente Hilfslinien wie eine Bauzeichnung ──
   Vertikale Linien laufen an den Rändern der Content-Spalte durchgehend
   über die ganze Seite; horizontale Linien trennen die einzelnen Sections.
   Reines Overlay (pointer-events:none) → keinerlei Einfluss auf Interaktionen. */
#top { position: relative; }
#top::before {
  content: "";
  position: absolute;
  top: 0; bottom: 0; left: 0; right: 0;
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  border-left: 1px solid var(--scaffold-line);
  border-right: 1px solid var(--scaffold-line);
  pointer-events: none;
  z-index: 3;
}
.section { border-top: 1px solid var(--scaffold-line); }
.center { text-align: center; }

/* Eyebrow / Kicker */
.eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 14px; color: var(--muted); font-weight: 400;
  letter-spacing: 0.01em;
}
.eyebrow::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%;
  background: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft);
}

/* Typo */
h1, h2, h3, h4 { font-weight: 500; line-height: 1.1; letter-spacing: -0.01em; color: var(--ink); }
.h-hero { font-size: clamp(40px, 6vw, 60px); font-weight: 700; line-height: 1.04; letter-spacing: -0.02em; }
.h-section { font-size: clamp(30px, 4vw, 40px); line-height: 1.1; }
.h-card { font-size: 20px; line-height: 1.25; }
.lead { font-size: 18px; color: var(--muted); line-height: 1.6; }
.subtle { color: var(--muted); }
.accent { color: var(--accent); }
.section-head { max-width: 640px; }
.section-head.center { margin-inline: auto; }
.section-head .h-section { margin-top: 14px; }
.section-head p { margin-top: 16px; }

/* Buttons */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  border-radius: var(--r-md); font-size: 16px; font-weight: 400;
  padding: 14px 22px; transition: transform .15s ease, background .2s ease, box-shadow .2s ease, opacity .2s ease;
  white-space: nowrap;
}
.btn-sm { padding: 9px 18px; border-radius: var(--r-sm); font-size: 14px; }
.btn-dark { background: var(--ink); color: #fff; }
.btn-dark:hover { background: #23282E; transform: translateY(-1px); }
.btn-accent { background: var(--accent); color: #fff; box-shadow: 0 6px 18px rgba(26, 115, 255,0.28); }
.btn-accent:hover { background: #0066CC; transform: translateY(-1px); }
.btn-outline { background: transparent; color: var(--ink); border: 1px solid var(--border); }
.btn-outline:hover { background: var(--surface); border-color: #CFDAEA; }
.btn-ghost { color: var(--muted); padding: 14px 8px; }
.btn-ghost:hover { color: var(--ink); }
.btn-light { background: #fff; color: var(--ink); }
.btn-light:hover { transform: translateY(-1px); box-shadow: var(--shadow-card); }

/* ============ NAVBAR ============ */
.nav {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255,255,255,0.8); backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid transparent; transition: border-color .2s ease, box-shadow .2s ease;
}
.nav.scrolled { border-bottom-color: var(--border); box-shadow: var(--shadow-sm); }
.nav-inner { display: flex; align-items: center; justify-content: space-between; height: 72px; }
.brand { display: flex; align-items: center; gap: 10px; font-weight: 600; font-size: 18px; }
.brand-mark {
  width: 30px; height: 30px; border-radius: 9px; display: block;
  object-fit: contain; flex: none;
}
.nav-links { display: flex; align-items: center; gap: 32px; }
.nav-links a { font-size: 15px; color: var(--muted); transition: color .15s ease; }
.nav-links a:hover { color: var(--ink); }
.nav-cta { display: flex; align-items: center; gap: 12px; }
.nav-toggle { display: none; color: var(--ink); }
.nav-toggle .nav-ico-close { display: none; }
.nav.nav-open .nav-toggle .nav-ico-open { display: none; }
.nav.nav-open .nav-toggle .nav-ico-close { display: block; }

/* ============ HERO ============ */
.hero {
  position: relative;
  display: flex; flex-direction: column; justify-content: center;
  min-height: calc(100dvh - 72px); /* füllt den ersten Bildschirm (abzüglich Navbar) */
  padding-top: 56px; padding-bottom: 88px;
}
.hero-wave { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; filter: blur(1.5px); }
.hero-inner { position: relative; z-index: 2; text-align: center; max-width: 820px; margin-inline: auto; }
.hero .eyebrow { margin-bottom: 6px; }
.hero .h-hero { margin-top: 26px; }
.hero .lead { margin: 28px auto 0; max-width: 620px; }
.hero-actions { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 38px; flex-wrap: wrap; }

/* ---- KI-Anruf-Widget (kompakte, hochkant Karte) ---- */
.call-card {
  max-width: 360px; margin: 40px auto 0; text-align: center;
  background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg);
  box-shadow: var(--shadow-pop); padding: 26px 24px;
  transition: transform .28s ease, box-shadow .28s ease;
}
.call-card:hover { transform: translateY(-2px); box-shadow: 0 18px 50px rgba(57,58,77,0.16); }
.call-card-title { font-size: 16px; font-weight: 500; color: var(--ink); margin-bottom: 16px; }
.call-bar { display: flex; flex-direction: column; gap: 12px; }
.call-input {
  display: flex; align-items: center; gap: 10px; width: 100%;
  border: 1px solid var(--border); border-radius: var(--r-sm); background: #fff;
  padding: 2px 14px; transition: border-color .2s ease, box-shadow .2s ease;
}
.call-input:focus-within { border-color: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft); }
.call-input .flag { font-size: 20px; line-height: 1; flex: none; }
.call-input input {
  flex: 1; min-width: 0; border: 0; outline: 0; background: transparent;
  font-family: inherit; font-size: 16px; color: var(--ink); padding: 13px 0;
}
.call-input input::placeholder { color: #9aa0b4; }
.call-bar .btn { width: 100%; border-radius: var(--r-sm); padding: 14px 18px; }
.call-bar .btn[disabled] { opacity: .75; cursor: default; }
.call-bar .btn .btn-label { display: inline-flex; align-items: center; gap: 8px; }

.call-spinner {
  width: 16px; height: 16px; border: 2px solid rgba(255,255,255,.45);
  border-top-color: #fff; border-radius: 50%; animation: spin .7s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

.call-hint { font-size: 13px; color: var(--muted); margin-top: 14px; transition: color .2s ease; }
.call-card.is-error .call-input { border-color: #e0526b; box-shadow: 0 0 0 4px rgba(224,82,107,.12); }
.call-card.is-error .call-hint { color: #d23a55; }
.call-card.is-success .call-input { border-color: var(--success); box-shadow: 0 0 0 4px rgba(79,208,79,.14); }
.call-card.is-success .call-hint { color: #2faa2f; font-weight: 500; }

.hero-secondary { display: flex; align-items: center; justify-content: center; margin-top: 18px; }

@media (max-width: 560px) { .call-card { max-width: 100%; } }

/* Blobs */
.blob { position: absolute; border-radius: 50%; filter: blur(60px); opacity: .55; z-index: 1; pointer-events: none; }
.blob-1 { width: 460px; height: 460px; top: -120px; left: -140px;
  background: radial-gradient(circle at 30% 30%, #6EAAFE, #1A73FF 55%, transparent 72%); }
.blob-2 { width: 420px; height: 420px; top: -60px; right: -120px;
  background: radial-gradient(circle at 60% 40%, #7de2d1, #6EAAFE 55%, transparent 72%); }
/* Unterer Übergangs-Glow: sitzt überwiegend in der Hero, läuft nur sanft in die nächste Section aus */
.blob-3 { width: min(820px, 100vw); height: 460px; bottom: -110px; left: 50%; transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 50%, rgba(124,128,255,0.42), rgba(110,168,254,0.16) 44%, rgba(125,226,209,0.05) 64%, transparent 76%);
  filter: blur(80px); opacity: .72; }

/* Trust row */
.trust { margin-top: 64px; position: relative; z-index: 2; }
.trust-label { display: inline-flex; align-items: center; gap: 10px; font-size: 14px; color: var(--muted); }
.avatars { display: inline-flex; }
.avatars span {
  width: 26px; height: 26px; border-radius: 50%; border: 2px solid #fff; margin-left: -8px;
  background: linear-gradient(135deg, #6EAAFE, #1A73FF) center/cover no-repeat; display: inline-block;
  box-shadow: 0 1px 3px rgba(16, 24, 40, .18);
}
.avatars span:first-child { margin-left: 0; }
.avatars .av-handwerk   { background-image: url("/assets/trust/handwerk.jpg"); }
.avatars .av-immobilien { background-image: url("/assets/trust/immobilien.jpg"); }
.avatars .av-friseur    { background-image: url("/assets/trust/friseur.jpg"); }
.channels { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 26px; }
.channels .chip {
  display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--muted-2);
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-pill);
  padding: 8px 16px;
}
.channels .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); }

/* Floating status cards in hero */
.float-card {
  position: absolute; z-index: 2; background: #fff; border: 1px solid var(--border);
  border-radius: var(--r-md); box-shadow: var(--shadow-pop); padding: 12px 14px;
  display: flex; align-items: center; gap: 10px; font-size: 13px;
}
.float-card .ico { width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center; background: var(--accent-soft); color: var(--accent); flex: none; }
.float-card .ico.green { background: #e7f9e7; color: #2faa2f; }
.float-card b { font-weight: 500; display: block; }
.float-card small { color: var(--muted); font-size: 11px; }
.fc-1 { top: 80px; left: 4%; }
.fc-2 { top: 180px; right: 3%; }
.fc-3 { bottom: 40px; left: 7%; }
.fc-4 { bottom: 90px; right: 6%; }
@media (max-width: 1080px) { .float-card { display: none; } }

/* ============ CARDS / CAPABILITIES ============ */
#capabilities { position: relative; z-index: 1; } /* Inhalt über dem Hero-Glow, Glow scheint durch */
.cards-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 56px; }
.card {
  background: #fff; border: 1px solid rgba(15, 15, 40, 0.07); border-radius: var(--r-lg);
  padding: 28px 26px;
  box-shadow: var(--shadow-rest), inset 0 1px 0 rgba(255, 255, 255, 0.9);
  transition: transform .45s cubic-bezier(.22,1,.36,1), box-shadow .45s cubic-bezier(.22,1,.36,1), border-color .45s ease;
}
.card:hover { transform: translateY(-3px); box-shadow: var(--shadow-active), inset 0 1px 0 rgba(255, 255, 255, 0.9); border-color: rgba(26, 115, 255, 0.30); }
.card .ico-lg {
  width: 46px; height: 46px; border-radius: 13px; display: grid; place-items: center;
  background: var(--accent-soft); color: var(--accent); margin-bottom: 18px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7), inset 0 0 0 1px rgba(26, 115, 255, 0.08);
}
.card .h-card { margin-bottom: 10px; }
.card p { color: var(--muted); font-size: 15px; }

/* ============ EINRICHTUNG / PROCESS — geführte Sticky-Scroll-Section ============ */
/* Ambientes, richtungsloses Mesh-Glow (ersetzt den gerichteten Card-Verlauf) */
#process { position: relative; overflow: clip; } /* clip statt hidden: bricht position:sticky nicht */
#process::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(46% 42% at 80% 26%, rgba(26, 115, 255,0.10), transparent 62%),
    radial-gradient(42% 46% at 16% 72%, rgba(34,211,238,0.075), transparent 64%),
    radial-gradient(38% 38% at 50% 108%, rgba(124,128,255,0.06), transparent 60%);
}
#process .container { position: relative; z-index: 1; max-width: min(var(--container), 90vw); }
#process .section-head { margin-bottom: clamp(40px, 5vw, 72px); }

/* Pin-Track: gibt der Section Scroll-Strecke; der Pin rastet ein und wird gescrubbt */
.js .process-pin-track { height: 230vh; } /* kürzer = snappigeres Durchscrubben, weniger Totzeit pro Schritt */
.js .process-pin { position: sticky; top: 0; min-height: 100vh; display: flex; align-items: center; box-sizing: border-box; padding-block: clamp(24px, 5vh, 64px); }
.process-pin .process-flow { width: 100%; margin-top: 0; align-items: center; }
/* Ohne JS: kein Pin, alles im normalen Fluss sichtbar */
html:not(.js) .process-pin { position: static; min-height: 0; }

.process-flow {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 6vw, 84px); margin-top: 64px; align-items: start;
}

/* ---- Linke Spalte: Schritt-Sequenz an der Connector-Line ---- */
.process-steps { position: relative; padding-left: 78px; }
.proc-line {
  position: absolute; left: 26px; top: 18px; bottom: 22px; width: 2px;
  background: var(--border); border-radius: 2px; overflow: hidden;
}
.proc-line-fill {
  position: absolute; left: 0; top: 0; width: 100%; height: 0;
  background: linear-gradient(180deg, #1A73FF, #22d3ee); border-radius: 2px;
  transition: height .18s linear;
}

.proc-step { position: relative; padding: 4px 0 52px; }
.proc-step:last-child { padding-bottom: 0; }

.proc-node {
  position: absolute; left: -78px; top: -2px; width: 54px; height: 54px;
  border-radius: 50%; display: grid; place-items: center;
  background: #fff; border: 1px solid var(--border); box-shadow: var(--shadow-sm);
  transition: box-shadow .45s ease, border-color .45s ease, transform .45s ease;
}
.proc-num {
  font-size: 17px; font-weight: 600; color: var(--muted);
  font-variant-numeric: tabular-nums; transition: color .45s ease;
}
.proc-step.is-active .proc-node {
  border-color: var(--accent); transform: scale(1.05);
  box-shadow: 0 0 0 6px var(--accent-soft), 0 0 26px rgba(26, 115, 255,0.45);
}
.proc-step.is-active .proc-num { color: var(--accent); }

/* Inhalt dimmt, wenn nicht aktiv (nur mit JS — ohne JS alles voll sichtbar) */
.proc-content { transition: opacity .45s ease; }
.js .proc-content { opacity: .42; }
.js .proc-step.is-active .proc-content { opacity: 1; }

.proc-tag {
  display: inline-block; font-size: 11px; letter-spacing: .12em; text-transform: uppercase;
  font-weight: 600; color: var(--accent); margin-bottom: 12px;
  font-family: ui-monospace, "SF Mono", "Roboto Mono", Menlo, monospace;
}
.proc-content h3 { font-size: clamp(19px, 1.5vw, 22px); font-weight: 600; letter-spacing: -0.01em; margin: 0 0 9px; }
.proc-content p { color: var(--muted); font-size: 15px; line-height: 1.6; }
.proc-pill {
  display: inline-flex; align-items: center; gap: 8px; margin-top: 18px;
  background: #fff; border: 1px solid var(--border); border-radius: var(--r-pill);
  padding: 8px 14px; font-size: 13px; font-weight: 500; color: var(--ink);
  box-shadow: var(--shadow-sm);
  transition: box-shadow .45s ease, transform .45s ease, border-color .45s ease;
}
.proc-step.is-active .proc-pill {
  box-shadow: var(--shadow-card); border-color: #D3DFEF; transform: translateY(-1px);
}

/* ---- Rechte Spalte: Visual-Bühne (statisch — der äußere Pin hält die Section fest;
   KEINE eigene Sticky hier, sonst hakt sie beim Verlassen der Section) ---- */
.process-stage { align-self: center; }
.proc-stage-inner { position: relative; min-height: 440px; }

/* Kontinuierlicher Fortschritts-Indikator BEI den Visuals (rechts) — bewegt sich beim
   Scrollen immer mit, auch innerhalb eines Schritts, damit nie „nichts passiert". */
.proc-stage-bar { display: flex; align-items: center; gap: 14px; margin-bottom: 20px; }
.proc-stage-count {
  flex: none; font-size: 12px; letter-spacing: .12em; color: var(--muted);
  font-family: ui-monospace, "SF Mono", "Roboto Mono", Menlo, monospace;
}
.proc-stage-count b { color: var(--accent); font-weight: 600; }
.proc-progress {
  position: relative; flex: 1; height: 4px; border-radius: var(--r-pill);
  background: var(--surface); border: 1px solid var(--border); overflow: hidden;
}
.proc-progress-fill {
  position: absolute; left: 0; top: 0; height: 100%; width: 0; border-radius: inherit;
  background: linear-gradient(90deg, #1A73FF, #22d3ee); transition: width .1s linear;
}

.proc-visual {
  position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center;
  gap: 16px; padding: 30px; border-radius: var(--r-lg);
  background: #fff; border: 1px solid var(--border);
  box-shadow:
    0 1px 2px rgba(57,58,77,0.05),
    0 4px 8px rgba(57,58,77,0.05),
    0 12px 24px rgba(57,58,77,0.06),
    0 28px 56px rgba(57,58,77,0.08),
    inset 0 1px 0 #fff;
  opacity: 0; visibility: hidden; transform: translateY(12px) scale(.985);
  transition: opacity .5s ease, transform .5s ease, visibility .5s;
}
.proc-visual.is-active { opacity: 1; visibility: visible; transform: none; }
/* Dezenter Gradient-Border-Akzent nur auf der aktiven Karte */
.proc-visual::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px;
  background: linear-gradient(140deg, rgba(26, 115, 255,0.55), rgba(34,211,238,0.30) 48%, transparent 74%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  opacity: 0; transition: opacity .5s ease; pointer-events: none;
}
.proc-visual.is-active::before { opacity: 1; }

.proc-v-head {
  display: inline-flex; align-items: center; gap: 9px;
  font-size: 12px; font-weight: 500; color: var(--muted);
}
.proc-v-dot {
  width: 8px; height: 8px; border-radius: 50%; flex: none;
  background: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft);
}
.proc-v-cap { font-size: 13.5px; color: var(--muted); line-height: 1.55; }
.proc-v-cap b { color: var(--ink); font-weight: 600; }

/* Ohne JS: Visuals statisch gestapelt statt absolut/versteckt */
html:not(.js) .proc-stage-inner { min-height: 0; }
html:not(.js) .proc-visual {
  position: static; opacity: 1; visibility: visible; transform: none; margin-bottom: 16px;
}
html:not(.js) .proc-content { opacity: 1; }

/* ---- Visual 1 · Betriebs-Profil (Analyse) ---- */
.proc-profile { display: flex; flex-direction: column; gap: 14px; }
.proc-profile-top { display: flex; align-items: center; gap: 12px; }
.proc-avatar {
  width: 44px; height: 44px; border-radius: 13px; flex: none; display: grid; place-items: center;
  background: linear-gradient(135deg, #1A73FF, #22d3ee); color: #fff; font-weight: 700; font-size: 15px;
  box-shadow: 0 6px 16px rgba(26, 115, 255,0.30);
}
.proc-profile-id b { display: block; font-size: 15px; font-weight: 600; color: var(--ink); }
.proc-profile-id span { font-size: 12.5px; color: var(--muted); }
.proc-fields { display: flex; flex-direction: column; gap: 8px; }
.proc-field {
  display: flex; align-items: center; justify-content: space-between;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--r-sm); padding: 11px 13px;
}
.pf-k { font-size: 13px; color: var(--muted); }
.pf-v { font-size: 13px; font-weight: 500; color: var(--ink); }

/* ---- Visual 2 · Training-Dashboard ---- */
.proc-train { display: flex; flex-direction: column; gap: 16px; }
.proc-counter { font-size: 14px; color: var(--muted); display: flex; align-items: baseline; }
.proc-counter b {
  font-size: 36px; font-weight: 700; letter-spacing: -0.02em; margin-right: 10px;
  background: linear-gradient(135deg, #1A73FF, #22d3ee);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.proc-bar { height: 8px; border-radius: var(--r-pill); background: var(--surface); border: 1px solid var(--border); overflow: hidden; }
.proc-bar-fill { display: block; height: 100%; width: 88%; border-radius: inherit; background: linear-gradient(90deg, #1A73FF, #22d3ee); }
.proc-examples { display: flex; flex-direction: column; gap: 8px; }
.proc-ex {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--r-sm); padding: 9px 12px;
}
.pe-q { font-size: 13px; color: var(--ink); }
.pe-a { font-size: 12px; font-weight: 600; color: #2faa2f; flex: none; }

/* ---- Visual 3 · Live-Anruf ---- */
.proc-call { display: flex; flex-direction: column; align-items: center; gap: 14px; text-align: center; padding: 4px 0; }
.proc-booked {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 13px; font-weight: 500; color: #207a20;
  background: #e7f9e7; border: 1px solid #bfe9bf; border-radius: var(--r-pill); padding: 7px 14px;
}
.proc-booked .tcheck {
  width: 18px; height: 18px; border-radius: 50%; flex: none; display: grid; place-items: center;
  background: #2faa2f; color: #fff; font-size: 11px; font-weight: 700;
}

/* ============ "AGENT IN AKTION" — lebendige Cards ============ */
/* Ambientes Glow hinter den Cards (Blob-Pattern wiederverwendet) */
.caps-stage {
  position: relative;
  background:
    radial-gradient(38% 48% at 16% 18%, rgba(26, 115, 255,.09), transparent 70%),
    radial-gradient(34% 44% at 86% 26%, rgba(34,211,238,.07), transparent 70%),
    radial-gradient(46% 56% at 62% 98%, rgba(185,168,255,.09), transparent 72%);
}
.caps-glow {
  position: absolute; z-index: 0; left: 50%; top: 50%;
  width: min(860px, 92%); height: 320px; transform: translate(-50%, -50%);
  background: radial-gradient(ellipse at 50% 50%,
    rgba(124,128,255,0.20), rgba(110,168,254,0.10) 45%, rgba(125,226,209,0.05) 66%, transparent 78%);
  filter: blur(72px); opacity: .85; pointer-events: none;
}
.caps-stage .cards-3 { position: relative; z-index: 1; margin-top: 56px; }

/* Cards als Flex-Spalte → Mini-Visuals sitzen bündig unten */
.cards-3 .card { display: flex; flex-direction: column; position: relative; cursor: pointer; }
.cards-3 .card:focus-visible {
  outline: none; border-color: var(--accent);
  box-shadow: var(--shadow-active), 0 0 0 3px var(--accent-soft), inset 0 1px 0 rgba(255,255,255,.9);
}
/* Eine gemeinsame, weiche Transition (deckt Reveal UND Sequenz-Glow ab) */
.js .cards-3 .card {
  transition: opacity .6s cubic-bezier(.22,1,.36,1), transform .5s cubic-bezier(.22,1,.36,1),
              box-shadow .5s cubic-bezier(.22,1,.36,1), border-color .5s ease;
}
.cap-viz {
  margin-top: 20px; padding: 14px;
  min-height: 150px; flex: 1 1 auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  box-shadow: inset 0 1px 2px rgba(40, 42, 80, 0.04);
}
/* Koordinator-Panel: Rows vertikal mittig, damit der gestreckte Raum gleichmäßig sitzt */
.cap-coord { display: flex; flex-direction: column; justify-content: center; }

/* Sequenzierung: nur die aktive Card "lebt", die anderen ruhen dezent zurückgenommen.
   Mehrdimensionales De-Emphasize (Opazität + Sättigung + Mini-Scale) wirkt wie echte
   Vorder-/Hintergrund-Tiefe statt eines harten An/Aus-Schalters. Der Aktiv-Look ist ein
   STATISCHER Zustand → gilt auch bei reduced-motion, damit die Hierarchie erhalten bleibt. */
.js .cards-3 .card .cap-viz {
  opacity: .58; filter: saturate(.82);
  transition: opacity .55s cubic-bezier(.22,1,.36,1), filter .55s ease;
}
.js .cards-3 .card.is-active .cap-viz { opacity: 1; filter: none; }
.js .cards-3 .card:not(.is-active) { transform: scale(.99); }
.js .cards-3 .card.is-active {
  transform: translateY(-6px);
  border-color: rgba(26, 115, 255,.32);
  box-shadow: var(--shadow-active), inset 0 1px 0 rgba(255,255,255,.9);
}
/* Schimmernde Energie-Kante nur auf der aktiven Card (Marken-Gradient via mask-composite,
   kein Extra-DOM-Element nötig) */
.js .cards-3 .card.is-active::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px;
  background: linear-gradient(135deg, rgba(185,168,255,.9), rgba(26, 115, 255,.85) 45%, rgba(34,211,238,.7));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  pointer-events: none; z-index: 2;
}

/* Progress-Track pro Card: macht vorhersehbar, wann die Sequenz weiterspringt.
   Füllung läuft über --dwell (von JS gesetzt); bei Hover/Focus eingefroren. */
.cap-progress {
  position: absolute; top: 0; left: 16px; right: 16px; height: 2px;
  border-radius: 2px; overflow: hidden; opacity: 0;
  transition: opacity .4s ease; z-index: 3; pointer-events: none;
}
.cap-progress > i {
  display: block; height: 100%; width: 100%;
  background: linear-gradient(90deg, #1A73FF, #22d3ee);
  transform: scaleX(0); transform-origin: left;
}
@media (prefers-reduced-motion: no-preference) {
  .js .cards-3 .card.is-active .cap-progress { opacity: 1; }
  .js .cards-3 .card.is-active .cap-progress > i {
    animation: capFill var(--dwell, 5000ms) linear forwards;
  }
  .caps-stage.is-paused .cap-progress > i { animation-play-state: paused; }
}
@keyframes capFill { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* Kanal-Wortliste (typografisch statt Icon-Badges) */
.cap-channels { display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
  gap: 8px 14px; margin-top: 24px; font-size: 14px; color: var(--muted); }
.cap-channels span { transition: color .5s ease; }
.cap-channels .sep { color: #CFDAEA; }
.cap-channels[data-active="chat"] .g-chat,
.cap-channels[data-active="call"] .g-call,
.cap-channels[data-active="coord"] .g-coord { color: var(--accent); font-weight: 500; }

/* ---- Card 1: WhatsApp-Chat (realistische App-UI) ---- */
/* "Handy" reicht bis zur unteren Card-Kante und fadet dort weich aus (~zur Hälfte abgeschnitten) */
.cap-chat { padding: 0; overflow: hidden; background: #efeae2; border-color: #d7d3cb;
  border-radius: var(--r-md) var(--r-md) 0 0;
  display: flex; flex-direction: column; margin-bottom: -10px;
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 95%, transparent 100%);
          mask-image: linear-gradient(to bottom, #000 0%, #000 95%, transparent 100%); }
/* iOS-Statusbar über dem Header */
.wa-status { display: flex; align-items: center; justify-content: space-between;
  padding: 5px 13px 3px; background: #008069; color: #fff;
  font-size: 12px; font-weight: 600; font-variant-numeric: tabular-nums; }
.wa-clock { font-family: -apple-system, "SF Pro Text", system-ui, sans-serif; letter-spacing: .02em; }
.wa-sys { display: inline-flex; align-items: center; gap: 5px; }
.wa-signal { width: 17px; height: 11px; }
.wa-wifi { width: 16px; height: 12px; }
.wa-batt { width: 24px; height: 12px; }
/* Grüner WhatsApp-Header */
.wa-head { position: relative; z-index: 2; display: flex; align-items: center; gap: 9px; padding: 9px 12px;
  background: linear-gradient(180deg, #00a884, #008069); color: #fff;
  box-shadow: 0 2px 6px rgba(0, 60, 50, .18); }
.wa-back { display: grid; place-items: center; flex: none; margin-right: -3px; opacity: .95; }
.wa-back svg { width: 15px; height: 15px; }
.cap-chat .chat-av { width: 30px; height: 30px; border-radius: 50%; flex: none; display: grid; place-items: center;
  background: linear-gradient(135deg, #6EAAFF, #1A73FF); color: #fff; font-size: 13px; font-weight: 600;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.45), 0 1px 3px rgba(0,0,0,.2); }
.cap-chat .chat-meta { display: flex; flex-direction: column; line-height: 1.2; }
.cap-chat .chat-meta b { font-size: 13.5px; font-weight: 600; color: #fff; }
.cap-chat .chat-on { display: inline-flex; align-items: center; font-size: 11px; color: rgba(255,255,255,.85); font-style: normal; }
.cap-chat .chat-on::before { content: none; }
.wa-actions { margin-left: auto; display: inline-flex; align-items: center; gap: 17px; }
.wa-actions svg { width: 19px; height: 19px; opacity: .95; }
/* Beiger Chat-Hintergrund + dezentes Doodle-Pattern */
.wa-body { display: flex; flex-direction: column; gap: 7px; padding: 12px 12px 14px; min-height: 0; flex: 1 1 auto;
  background-color: #efeae2;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90' viewBox='0 0 90 90'%3E%3Cg fill='none' stroke='%23d6cfc2' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 18c2-3 6-3 8 0'/%3E%3Ccircle cx='62' cy='16' r='3'/%3E%3Cpath d='M24 52l4 4 7-8'/%3E%3Cpath d='M66 54v8M62 58h8'/%3E%3Cpath d='M50 76c2-2 5-2 7 0'/%3E%3Ccircle cx='20' cy='74' r='2.5'/%3E%3C/g%3E%3C/svg%3E"); }
/* Bubbles im WhatsApp-Stil (Tail an oberer Ecke, Zeit + Lesehaken in der Bubble) */
.cap-chat .bubble { position: relative; max-width: 82%; font-size: 13px; line-height: 1.36;
  padding: 6px 10px 6px; border-radius: 8px; box-shadow: 0 1px 1.5px rgba(11,20,26,.16); }
.cap-chat .bubble .wa-time { position: absolute; right: 9px; bottom: 5px;
  display: inline-flex; align-items: center; gap: 3px; font-size: 10px; color: #667781; line-height: 1; }
/* Unsichtbarer Platzhalter in der letzten Textzeile → die Uhrzeit klebt nie am Text */
.cap-chat .bubble-in::after, .cap-chat .bubble-out::after { content: ""; display: inline-block; height: 1px; }
.cap-chat .bubble-in::after { width: 36px; }
.cap-chat .bubble-out::after { width: 54px; }
.cap-chat .bubble-in { align-self: flex-start; background: #fff; color: #111b21; border-top-left-radius: 0; }
.cap-chat .bubble-out { align-self: flex-end; background: #d9fdd3; color: #111b21; border-top-right-radius: 0; }
.cap-chat .bubble-out .wa-time { color: #5a8a62; }
.wa-ticks { width: 15px; height: 9px; color: #53bdeb; }
.cap-chat .bubble-in::before { content: ""; position: absolute; top: 0; left: -7px;
  border: 7px solid transparent; border-top-color: #fff; border-right-width: 0; }
.cap-chat .bubble-out::before { content: ""; position: absolute; top: 0; right: -7px;
  border: 7px solid transparent; border-top-color: #d9fdd3; border-left-width: 0; }
/* Tipp-Indikator: gleiche Seite wie die folgende Agent-Antwort (rechts/ausgehend) */
.cap-chat .bubble-typing { position: relative; align-self: flex-end; background: #d9fdd3; color: #111b21;
  border-radius: 8px; border-top-right-radius: 0; display: inline-flex; gap: 4px; padding: 9px 11px;
  box-shadow: 0 1px 1.5px rgba(11,20,26,.16); }
.cap-chat .bubble-typing::before { content: ""; position: absolute; top: 0; right: -7px;
  border: 7px solid transparent; border-top-color: #d9fdd3; border-left-width: 0; }
.cap-chat .bubble-typing span { width: 6px; height: 6px; border-radius: 50%; background: #8aa392; }
/* Tipp-Indikator und finale Antwort teilen sich denselben Platz → Höhe bleibt konstant */
.wa-slot { position: relative; display: flex; flex-direction: column; }
.cap-chat .wa-slot .bubble-typing { position: absolute; right: 0; bottom: 0; margin: 0; }
/* Datums-Trenner */
.wa-date { align-self: center; margin: 0 0 3px; }
.wa-date span { background: #fff; color: #54656f; font-size: 10px; font-weight: 500; letter-spacing: .03em;
  padding: 3px 9px; border-radius: 7px; box-shadow: 0 1px .5px rgba(11,20,26,.1); }
/* Chat-Bubbles werden per JS sequenziell getaktet (nur bei erlaubter Bewegung) */
@media (prefers-reduced-motion: no-preference) {
  .js .cap-chat .bubble { opacity: 0; transform: translateY(8px);
    transition: opacity .4s cubic-bezier(.22,1,.36,1), transform .4s cubic-bezier(.22,1,.36,1); }
  .js .cap-chat .bubble.show { opacity: 1; transform: none; }
  /* Tipp-Indikator nimmt nur Platz ein, solange er sichtbar ist (sonst kein Lücken-Abstand) */
  .js .cap-chat .bubble-typing { display: none; }
  .js .cap-chat .bubble-typing.show { display: inline-flex; }
  .js .cap-chat .bubble-typing span { animation: typingDot 1.3s infinite ease-in-out; }
  .js .cap-chat .bubble-typing span:nth-child(2) { animation-delay: .18s; }
  .js .cap-chat .bubble-typing span:nth-child(3) { animation-delay: .36s; }
}
@keyframes typingDot { 0%, 60%, 100% { transform: translateY(0); opacity: .45; } 30% { transform: translateY(-4px); opacity: 1; } }

/* ---- Card 2: iOS-Telefonat (realistische Anruf-UI) ---- */
.cap-call { padding: 0; overflow: hidden; border: none; color: #fff;
  display: flex; flex-direction: column;
  border-radius: var(--r-md) var(--r-md) 0 0; margin-bottom: -28px;
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 80%, transparent 100%);
          mask-image: linear-gradient(to bottom, #000 0%, #000 80%, transparent 100%);
  background:
    radial-gradient(125% 70% at 50% -8%, #40526A, transparent 60%),
    radial-gradient(90% 60% at 50% 38%, rgba(124,128,255,.14), transparent 70%),
    linear-gradient(180deg, #272D35, #12161B); }
.ios-call { display: flex; flex-direction: column; align-items: center; gap: 9px;
  padding: 18px 14px 16px; text-align: center; flex: 1 1 auto; }
.ios-head { display: flex; flex-direction: column; gap: 2px; }
.ios-name { font-size: 19px; font-weight: 500; letter-spacing: -.01em;
  font-family: -apple-system, "SF Pro Display", system-ui, sans-serif;
  text-shadow: 0 1px 4px rgba(0,0,0,.35); }
.ios-sub { font-size: 13px; color: rgba(235,235,245,.6);
  font-family: ui-monospace, "SF Mono", Menlo, monospace; font-variant-numeric: tabular-nums; }
.ios-orb { position: relative; display: grid; place-items: center; width: 74px; height: 74px; margin: 4px 0; }
.ios-orb::before { content: ""; position: absolute; width: 108px; height: 108px; border-radius: 50%;
  background: radial-gradient(circle, rgba(124,128,255,.55), transparent 65%); filter: blur(18px); z-index: 0; }
.ios-blob { width: 70px; height: 70px; border-radius: 50%; position: relative; z-index: 1;
  background:
    radial-gradient(circle at 33% 27%, rgba(255,255,255,.9), transparent 40%),
    radial-gradient(circle at 35% 30%, #B5D4FF, #1A73FF 55%, #22d3ee 135%);
  box-shadow: 0 8px 26px rgba(26, 115, 255,.55), inset 0 2px 8px rgba(255,255,255,.5), inset 0 -4px 10px rgba(34,30,80,.4); }
.ios-orb-ring { position: absolute; width: 70px; height: 70px; border-radius: 50%;
  border: 1.5px solid rgba(196,181,255,.6); z-index: 0; }
.ios-caption { width: 100%; margin: 14px 0 2px; padding: 9px 11px; border-radius: 13px;
  background: rgba(255,255,255,.13); border: 1px solid rgba(255,255,255,.12);
  -webkit-backdrop-filter: blur(8px) saturate(140%); backdrop-filter: blur(8px) saturate(140%);
  box-shadow: 0 6px 18px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.12);
  font-size: 12px; line-height: 1.45; color: rgba(255,255,255,.96); }
/* Live-Transkript (Untertitel) */
.call-transcript span { display: inline-block; }
.call-transcript .caret { width: 2px; height: 1em; background: #fff; vertical-align: -2px; margin-left: 1px; }
/* Blob pulsiert + Transkript tippt sich Wort für Wort — nur bei aktiver Card */
@media (prefers-reduced-motion: no-preference) {
  .js .cards-3 .card.is-active .cap-call .ios-blob { animation: orbPulse 2.4s cubic-bezier(.4,0,.2,1) infinite; }
  .js .cards-3 .card.is-active .cap-call .ios-orb-ring { animation: orbRing 2.4s ease-out infinite; }
  .js .cards-3 .card.is-active .cap-call .call-transcript span {
    opacity: 0; animation: wordIn .5s cubic-bezier(.22,1,.36,1) forwards; }
  .js .cards-3 .card.is-active .cap-call .call-transcript span:nth-child(1) { animation-delay: .22s; }
  .js .cards-3 .card.is-active .cap-call .call-transcript span:nth-child(2) { animation-delay: .40s; }
  .js .cards-3 .card.is-active .cap-call .call-transcript span:nth-child(3) { animation-delay: .58s; }
  .js .cards-3 .card.is-active .cap-call .call-transcript span:nth-child(4) { animation-delay: .76s; }
  .js .cards-3 .card.is-active .cap-call .call-transcript span:nth-child(5) { animation-delay: .94s; }
  .js .cards-3 .card.is-active .cap-call .call-transcript span:nth-child(6) { animation-delay: 1.12s; }
  .js .cards-3 .card.is-active .cap-call .call-transcript span:nth-child(7) { animation-delay: 1.30s; }
  .js .cards-3 .card.is-active .cap-call .call-transcript span:nth-child(8) { animation-delay: 1.48s; }
  .js .cards-3 .card.is-active .cap-call .call-transcript span:nth-child(9) { animation-delay: 1.66s; }
  .js .cards-3 .card.is-active .cap-call .call-transcript span:nth-child(10) { animation-delay: 1.84s; }
  .js .cards-3 .card.is-active .cap-call .call-transcript .caret {
    animation: caretBlink .9s steps(1) infinite; animation-delay: 2.0s; }
}
@keyframes caretBlink { 50% { opacity: 0; } }
@keyframes wordIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* Voice-Wave-Balken (GETEILT mit der Process-Section — NICHT entfernen) */
.voice-bars { display: flex; align-items: center; gap: 4px; height: 40px; margin-bottom: 14px; }
.voice-bars i {
  flex: 1; height: 100%; border-radius: var(--r-pill);
  background: linear-gradient(to top, #1A73FF, #22d3ee);
  transform: scaleY(.24); transform-origin: center; opacity: .92;
}
.voice-bars i:nth-child(1)  { animation-delay: .00s; }
.voice-bars i:nth-child(2)  { animation-delay: .18s; }
.voice-bars i:nth-child(3)  { animation-delay: .35s; }
.voice-bars i:nth-child(4)  { animation-delay: .50s; }
.voice-bars i:nth-child(5)  { animation-delay: .62s; }
.voice-bars i:nth-child(6)  { animation-delay: .40s; }
.voice-bars i:nth-child(7)  { animation-delay: .25s; }
.voice-bars i:nth-child(8)  { animation-delay: .10s; }
.voice-bars i:nth-child(9)  { animation-delay: .30s; }
.voice-bars i:nth-child(10) { animation-delay: .55s; }
.voice-bars i:nth-child(11) { animation-delay: .70s; }
.voice-bars i:nth-child(12) { animation-delay: .45s; }
.voice-bars i:nth-child(13) { animation-delay: .20s; }
.voice-bars i:nth-child(14) { animation-delay: .05s; }
@keyframes voicePulse { 0%, 100% { transform: scaleY(.24); } 50% { transform: scaleY(1); } }

/* ---- Card 3: Koordinierer / n8n-Workflow (Trigger → Action-Nodes) ---- */
.cap-coord .flow { position: relative; display: flex; align-items: center; flex: 1 1 auto; min-height: 184px; }
.flow-wires { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0;
  fill: none; stroke: #CCDBF0; stroke-width: 1.6; }
.flow-trigger { flex: none; z-index: 1; }
.flow-actions { flex: 1; min-width: 0; margin-left: 22px; z-index: 1;
  display: flex; flex-direction: column; justify-content: space-between; gap: 12px; }
.node { position: relative; display: flex; align-items: center; gap: 9px; padding: 8px 11px;
  background: #fff; border: 1px solid #E6ECF5; border-radius: 12px;
  box-shadow: 0 1px 2px rgba(40,42,80,.06), 0 8px 18px -8px rgba(40,42,80,.22); }
.node-trig { background: linear-gradient(180deg, #fff, #F5F9FF); }
.node-ic { width: 28px; height: 28px; flex: none; border-radius: 9px; display: grid; place-items: center;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 2px 5px rgba(40,42,80,.28); }
.node-ic svg { width: 16px; height: 16px; }
.ic-call { background: linear-gradient(135deg, #6EAAFF, #1A73FF); }
.ic-doc  { background: linear-gradient(135deg, #3b9eff, #2f7ff0); }
.ic-cal  { background: linear-gradient(135deg, #7BB2FF, #5C9AF0); }
.ic-star { background: linear-gradient(135deg, #ffb24d, #ff9f1c); }
.node-tx { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; }
.node-tx b { font-size: 11.5px; font-weight: 600; color: var(--ink); white-space: nowrap; }
.node-tx small { font-size: 9.5px; color: var(--muted); }
.node-dot { position: absolute; top: 50%; width: 7px; height: 7px; border-radius: 50%; z-index: 2;
  background: #fff; border: 1.5px solid #B3C8E6; transform: translateY(-50%); }
.node-out { right: -4px; }
.node-in { left: -4px; }
@keyframes wireFlow { to { stroke-dashoffset: -8; } }
@keyframes nodePop { from { opacity: 0; transform: translateX(8px); } to { opacity: 1; transform: none; } }
@keyframes dotPop {
  0% { transform: translateY(-50%) scale(0); }
  60% { transform: translateY(-50%) scale(1.5); }
  100% { transform: translateY(-50%) scale(1); }
}
/* Sequenz: erst fließen die dotted Wires los → am Ziel ploppt der Punkt wie ein Blob → Node erscheint */
@media (prefers-reduced-motion: no-preference) {
  .js .cards-3 .card.is-active .cap-coord .flow-wires path {
    stroke: #8DB8F5; stroke-width: 2.4; stroke-linecap: round; stroke-dasharray: 0.5 7.5;
    animation: wireFlow .7s linear infinite; }
  /* Ziel-Punkte ploppen gestaffelt, sobald die Linie "ankommt" */
  .js .cards-3 .card.is-active .cap-coord .flow-actions .node-in {
    animation: dotPop .5s cubic-bezier(.34,1.56,.64,1) backwards; }
  .js .cards-3 .card.is-active .cap-coord .flow-actions .node:nth-child(1) .node-in { animation-delay: .55s; }
  .js .cards-3 .card.is-active .cap-coord .flow-actions .node:nth-child(2) .node-in { animation-delay: 1.05s; }
  .js .cards-3 .card.is-active .cap-coord .flow-actions .node:nth-child(3) .node-in { animation-delay: 1.55s; }
  /* Node erscheint zusammen mit seinem Punkt */
  .js .cards-3 .card.is-active .cap-coord .flow-actions .node {
    opacity: 0; animation: nodePop .45s cubic-bezier(.22,1,.36,1) forwards; }
  .js .cards-3 .card.is-active .cap-coord .flow-actions .node:nth-child(1) { animation-delay: .55s; }
  .js .cards-3 .card.is-active .cap-coord .flow-actions .node:nth-child(2) { animation-delay: 1.05s; }
  .js .cards-3 .card.is-active .cap-coord .flow-actions .node:nth-child(3) { animation-delay: 1.55s; }
}

/* Staggered Reveal der 3 Cards (nutzt bestehendes .reveal/.in-System) */
.cards-3 .reveal:nth-child(2) { transition-delay: .08s; }
.cards-3 .reveal:nth-child(3) { transition-delay: .16s; }

/* ============ SPLIT (Dashboard) ============ */
.split { display: grid; grid-template-columns: 1fr 1.15fr; gap: 56px; align-items: center; }
.split .feature-list { margin-top: 28px; display: grid; gap: 18px; }
.feature-list li { display: flex; gap: 14px; align-items: flex-start; }
.feature-list .tick {
  width: 24px; height: 24px; border-radius: 50%; flex: none; display: grid; place-items: center;
  background: var(--accent-soft); color: var(--accent); margin-top: 1px;
}
.feature-list b { font-weight: 500; }
.feature-list span.txt { color: var(--muted); }

/* Dashboard mockup */
.dash {
  background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg);
  box-shadow: 0 1px 3px rgba(28,28,64,0.05), 0 10px 24px rgba(28,28,64,0.09), 0 26px 50px rgba(28,28,64,0.12); overflow: hidden;
}
.dash-bar { display: flex; align-items: center; gap: 8px; padding: 12px 16px; border-bottom: 1px solid var(--border); }
.dash-bar .dots { display: flex; gap: 6px; }
.dash-bar .dots i { width: 10px; height: 10px; border-radius: 50%; background: #E4E9F1; }
.dash-bar .url { font-size: 11px; color: var(--muted); margin-left: 6px; background: var(--surface); padding: 4px 12px; border-radius: var(--r-pill); }
.dash-live { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 500; color: #1a9d5a; }
.dash-live i { width: 7px; height: 7px; border-radius: 50%; background: #1fc16b; box-shadow: 0 0 0 3px rgba(31,193,107,0.18); }
.dash-app { display: flex; align-items: stretch; }
.dash-side { flex: none; width: 50px; background: var(--surface); border-right: 1px solid var(--border); display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 13px 0; }
.ds-logo { width: 30px; height: 30px; border-radius: 9px; object-fit: contain; display: block; margin-bottom: 8px; }
.ds-ico { width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center; color: #a3a8bd; }
.ds-ico.is-active { background: var(--accent-soft); color: var(--accent); }
.ds-bottom { margin-top: auto; }
.dash-main { flex: 1; min-width: 0; padding: 17px 19px; }
.dash-hello { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; }
.dash-hello h4 { font-size: 17px; }
.dash-hello .date { font-size: 12px; color: var(--muted); }
.dash-user { width: 34px; height: 34px; border-radius: 50%; flex: none; background: linear-gradient(135deg, #6EAAFE, #1A73FF); color: #fff; display: grid; place-items: center; font-size: 12px; font-weight: 600; }
.kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.kpi { background: #fff; border: 1px solid var(--border); border-radius: var(--r-sm); padding: 12px 11px; box-shadow: 0 1px 2px rgba(28,28,64,0.04), 0 2px 6px rgba(28,28,64,0.05); }
.kpi .label { font-size: 11px; color: var(--muted); }
.kpi .val { font-size: 23px; font-weight: 600; margin-top: 3px; }
.dash-chart { margin-top: 15px; background: #fff; border: 1px solid var(--border); border-radius: var(--r-md); padding: 14px 16px 26px; box-shadow: 0 1px 2px rgba(28,28,64,0.04), 0 3px 8px rgba(28,28,64,0.05); }
.chart-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 14px; }
.chart-head b { font-size: 13px; font-weight: 500; }
.chart-delta { font-size: 12px; font-weight: 500; color: var(--success); }
.chart-bars { display: flex; align-items: flex-end; gap: 8px; height: 58px; }
.chart-bars span { flex: 1; height: var(--h); min-height: 6px; border-radius: 4px 4px 2px 2px; background: linear-gradient(180deg, #84B7FF, var(--accent)); opacity: .8; position: relative; }
.chart-bars span:nth-child(4) { opacity: 1; box-shadow: 0 5px 12px rgba(26, 115, 255,0.32); }
.chart-bars span::after { content: attr(data-d); position: absolute; bottom: -17px; left: 0; right: 0; text-align: center; font-size: 9px; color: var(--muted); }
.feed-head { font-size: 12px; font-weight: 500; color: var(--muted); margin-bottom: 4px; }
.kpi .delta { font-size: 12px; color: var(--success); font-weight: 500; display: inline-flex; align-items: center; gap: 2px; }
.dash-feed { margin-top: 18px; border-top: 1px solid var(--border); padding-top: 14px; display: grid; gap: 6px; }
.feed-row { display: flex; align-items: center; gap: 11px; font-size: 13px; padding: 7px 8px; border-radius: var(--r-sm); transition: background .15s ease; }
.feed-row:hover { background: var(--surface); }
/* farbige Icon-Badges pro Aktivitätstyp */
.feed-row .ficon { width: 28px; height: 28px; border-radius: 8px; flex: none; display: grid; place-items: center; }
.feed-row .fc-call { background: #e6f7ee; color: #1a9d5a; }
.feed-row .fc-chat { background: #e9f9ef; color: #25954f; }
.feed-row .fc-doc  { background: var(--accent-soft); color: var(--accent); }
.feed-row .fc-star { background: #fff4e0; color: #e0a020; }
.feed-row .ftext { display: flex; flex-direction: column; line-height: 1.3; min-width: 0; }
.feed-row .ftext b { font-weight: 500; font-size: 13px; color: var(--ink); }
.feed-row .ftext small { font-size: 11.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.feed-row .when { margin-left: auto; color: var(--muted); font-size: 11px; flex: none; align-self: flex-start; padding-top: 2px; }

/* ============ PROCESS — Motion & Stagger ============ */
/* Gestaffeltes Einblenden der Schritte (nutzt bestehendes .reveal/.in-System) */
.process-steps .proc-step.reveal:nth-of-type(2) { transition-delay: .07s; }
.process-steps .proc-step.reveal:nth-of-type(3) { transition-delay: .14s; }

/* Voice-Orb / Live-Anruf-UI der Process-Section V3 (war früher mit der Capabilities-Card
   geteilt — diese ist jetzt iOS-UI, daher hier eigenständig auf .proc-call gescoped) */
.proc-call .call-live { display: inline-flex; align-items: center; gap: 7px; margin-bottom: 14px;
  padding: 4px 10px; border-radius: var(--r-pill); background: #fff; border: 1px solid var(--border);
  font-size: 11.5px; color: var(--muted); font-family: ui-monospace, "SF Mono", Menlo, monospace;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7); }
.proc-call .call-live .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--success);
  box-shadow: 0 0 0 2px #fff, 0 0 6px rgba(79,208,79,.8); }
.proc-call .voice-orb { position: relative; display: grid; place-items: center; height: 84px; margin-bottom: 16px; }
.proc-call .voice-orb::before { content: ""; position: absolute; width: 120px; height: 120px; border-radius: 50%;
  background: radial-gradient(circle, rgba(26, 115, 255,.32), transparent 65%); filter: blur(18px); z-index: 0; }
.proc-call .orb-core { width: 56px; height: 56px; border-radius: 50%; position: relative; z-index: 1;
  background:
    radial-gradient(circle at 32% 26%, rgba(255,255,255,.85), transparent 38%),
    radial-gradient(circle at 34% 28%, #B5D4FF, #1A73FF 52%, #22d3ee 130%);
  box-shadow:
    0 6px 16px rgba(26, 115, 255,.45),
    0 12px 32px rgba(34,211,238,.30),
    inset 0 2px 6px rgba(255,255,255,.5),
    inset 0 -3px 8px rgba(34,30,80,.35); }
.proc-call .orb-ring { position: absolute; width: 54px; height: 54px; border-radius: 50%; border: 1.5px solid rgba(26, 115, 255,.5); }
.proc-call .orb-ring::after { content: ""; position: absolute; inset: -1.5px; border-radius: 50%; border: 1.5px solid rgba(34,211,238,.4); }
.proc-call .call-transcript { margin-top: 12px; padding: 10px 12px; border-radius: 10px;
  background: #fff; border: 1px solid var(--border); box-shadow: inset 0 1px 2px rgba(40,42,80,.04);
  font-size: 12.5px; color: var(--ink); font-style: normal; line-height: 1.5; }
@keyframes orbPulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.09); } }
@keyframes orbRing { 0% { transform: scale(1); opacity: .6; } 100% { transform: scale(2.3); opacity: 0; } }
@keyframes livePulse {
  0% { box-shadow: 0 0 0 0 rgba(79,208,79,.45); }
  70% { box-shadow: 0 0 0 7px rgba(79,208,79,0); }
  100% { box-shadow: 0 0 0 0 rgba(79,208,79,0); }
}

@media (prefers-reduced-motion: no-preference) {
  /* Animationen laufen nur im gerade aktiven Visual */
  /* V2 · Training: Progressbar zieht hoch */
  .js .proc-visual.is-active .proc-bar-fill { animation: procBarFill 1.4s cubic-bezier(.22,1,.36,1) forwards; }
  /* V3 · Live-Anruf: Orb pulsiert, Live-Dot pulsiert, Transkript tippt sich Wort für Wort */
  .js .proc-visual.is-active .voice-orb .orb-core { animation: orbPulse 1.9s cubic-bezier(.4,0,.2,1) infinite; }
  .js .proc-visual.is-active .voice-orb .orb-ring { animation: orbRing 1.9s ease-out infinite; }
  .js .proc-visual.is-active .call-live .dot { animation: livePulse 1.6s infinite; }
  .js .proc-visual.is-active .call-transcript span { opacity: 0; animation: wordIn .5s cubic-bezier(.22,1,.36,1) forwards; }
  .js .proc-visual.is-active .call-transcript span:nth-child(1) { animation-delay: .15s; }
  .js .proc-visual.is-active .call-transcript span:nth-child(2) { animation-delay: .29s; }
  .js .proc-visual.is-active .call-transcript span:nth-child(3) { animation-delay: .43s; }
  .js .proc-visual.is-active .call-transcript span:nth-child(4) { animation-delay: .57s; }
  .js .proc-visual.is-active .call-transcript span:nth-child(5) { animation-delay: .71s; }
  .js .proc-visual.is-active .call-transcript span:nth-child(6) { animation-delay: .85s; }
  .js .proc-visual.is-active .call-transcript span:nth-child(7) { animation-delay: .99s; }
  /* Atmender Ambient-Glow hinter der Section */
  #process::before { animation: procGlow 17s ease-in-out infinite alternate; }
  /* Hover-Lift auf der aktiven Visual-Karte */
  .proc-visual.is-active:hover {
    transform: translateY(-4px);
    box-shadow:
      0 2px 4px rgba(57,58,77,0.06),
      0 8px 16px rgba(57,58,77,0.07),
      0 18px 36px rgba(57,58,77,0.08),
      0 36px 68px rgba(57,58,77,0.10),
      inset 0 1px 0 #fff;
  }
}
@keyframes procGlow {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to   { transform: translate3d(0, -14px, 0) scale(1.06); }
}
@keyframes procBarFill { from { width: 0; } to { width: 88%; } }

/* ============ WARUM / BRANCHEN-CARDS ============ */
/* „In Zahlen"-Strip — eine durchgehende Karte mit Trennlinien */
.why-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  margin-top: 48px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}
.why-stat { display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; padding: 26px 20px; }
.why-stat + .why-stat { border-left: 1px solid var(--border); }
.why-stat-num { font-size: 40px; font-weight: 700; letter-spacing: -0.02em; line-height: 1; color: var(--ink); }
.why-stat-num.accent { color: var(--accent); }
.why-stat-cap { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }

/* Branchen-Karussell (hochkant-Slider, 3 sichtbar) */
.branchen-carousel { position: relative; margin-top: 40px; }
.bc-viewport { overflow: hidden; }
.bc-track { display: flex; gap: 24px; will-change: transform; }
.bc-track .branche-card {
  flex: 0 0 calc((100% - 48px) / 3); /* 3 sichtbar, 2 Gaps à 24px */
  aspect-ratio: 3 / 4;               /* hochkant */
  min-height: 0;
}
/* Bewegung läuft per requestAnimationFrame (branchen-carousel.js) —
   bewusst KEINE CSS-Transition auf .bc-track (würde den kontinuierlichen Lauf ruckeln lassen). */
/* Pfeile */
.bc-arrow {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 5;
  width: 48px; height: 48px; display: grid; place-items: center;
  border-radius: 50%; cursor: pointer;
  background: #fff; color: var(--ink);
  border: 1px solid var(--border); box-shadow: var(--shadow-pop);
  transition: background 180ms ease, color 180ms ease, border-color 180ms ease;
}
.bc-arrow:hover { background: var(--accent); color: #fff; border-color: var(--accent); }
.bc-arrow:focus-visible { outline: none; box-shadow: 0 0 0 4px var(--accent-soft), var(--shadow-pop); }
.bc-prev { left: -12px; }
.bc-next { right: -12px; }
/* Dots */
.bc-dots { display: flex; justify-content: center; gap: 9px; margin-top: 28px; }
.bc-dot {
  width: 8px; height: 8px; padding: 0; border: none; cursor: pointer;
  border-radius: var(--r-pill); background: var(--border);
  transition: width 220ms ease, background 220ms ease;
}
.bc-dot.is-active { width: 24px; background: var(--accent); }
.bc-dot:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--accent-soft); }

.branche-card {
  position: relative;
  aspect-ratio: 4 / 3;
  min-height: 280px;
  border-radius: var(--r-lg);
  overflow: hidden;
  isolation: isolate;
  border: 1px solid var(--border);
  box-shadow: var(--shadow-card);
  transition: transform 280ms ease, box-shadow 280ms ease;
}
.branche-img { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; object-fit: cover; }
/* dezenter Marken-Tint — eint die 6 Fotos zur Brand */
.branche-card::before { content: ""; position: absolute; inset: 0; z-index: 1; background: var(--accent); mix-blend-mode: multiply; opacity: 0.12; pointer-events: none; }
/* Floor-Fade-Scrim (violett-schwarz von unten) für Textlesbarkeit */
.branche-card::after {
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  background: linear-gradient(to top,
    rgba(14, 12, 38, 0.86) 0%,
    rgba(14, 12, 38, 0.55) 34%,
    rgba(14, 12, 38, 0.00) 70%);
}
.branche-body {
  position: absolute; inset: 0; z-index: 3;
  display: flex; flex-direction: column; align-items: flex-start;
  gap: 12px; padding: 22px; color: #fff;
}
.branche-label {
  font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: #fff;
  padding: 5px 11px; border-radius: var(--r-pill);
  background: rgba(255, 255, 255, 0.16);
  -webkit-backdrop-filter: blur(8px) saturate(1.2);
  backdrop-filter: blur(8px) saturate(1.2);
  border: 1px solid rgba(255, 255, 255, 0.28);
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
}
.branche-quote {
  margin-top: auto; /* schiebt Quote + Stat in die dichte Scrim-Zone unten */
  font-size: 15px; line-height: 1.5; font-weight: 500; color: #fff;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55); max-width: 30ch;
}
.branche-stat {
  display: inline-flex; align-items: baseline; gap: 6px;
  padding: 6px 12px; border-radius: var(--r-pill);
  background: rgba(255, 255, 255, 0.14);
  -webkit-backdrop-filter: blur(8px) saturate(1.2);
  backdrop-filter: blur(8px) saturate(1.2);
  border: 1px solid rgba(255, 255, 255, 0.26);
  font-size: 12.5px; color: rgba(255, 255, 255, 0.9);
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}
.branche-stat b { font-size: 18px; font-weight: 700; color: #fff; letter-spacing: -0.01em; }

/* Hover (nur bei erlaubter Bewegung): Card-Lift + sanfter Bild-Zoom */
@media (prefers-reduced-motion: no-preference) {
  .branche-img { transition: transform 450ms cubic-bezier(0.22, 1, 0.36, 1); }
  .branche-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-pop); }
  .branche-card:hover .branche-img { transform: scale(1.05); }
}

/* ============ FAQ ============ */
.faq { max-width: 760px; margin-inline: auto; margin-top: 40px; }
.faq-item { border-bottom: 1px solid var(--border); }
.faq-q { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 20px;
  text-align: left; padding: 22px 4px; font-size: 17px; font-weight: 500; color: var(--ink); }
.faq-q .plus { flex: none; width: 24px; height: 24px; position: relative; transition: transform .25s ease; }
.faq-q .plus::before, .faq-q .plus::after { content: ""; position: absolute; background: var(--accent); border-radius: 2px; }
.faq-q .plus::before { top: 11px; left: 4px; right: 4px; height: 2px; }
.faq-q .plus::after { left: 11px; top: 4px; bottom: 4px; width: 2px; transition: opacity .25s ease; }
.faq-item.open .plus::after { opacity: 0; }
.faq-item.open .plus { transform: rotate(180deg); }
.faq-a { max-height: 0; overflow: hidden; transition: max-height .3s ease; }
.faq-a p { color: var(--muted); padding: 0 4px 24px; font-size: 15px; line-height: 1.65; }

/* ============ DARK CTA ============ */
.cta-dark { background: var(--dark); color: #fff; border-radius: 24px; padding: 72px 40px; text-align: center; position: relative; overflow: hidden; }
.cta-dark .blob { opacity: .3; }
.cta-dark .h-section { color: #fff; position: relative; z-index: 2; }
.cta-dark p { color: var(--on-dark-muted); max-width: 560px; margin: 18px auto 0; position: relative; z-index: 2; }
.cta-dark .hero-actions { margin-top: 30px; }
/* CTA-Section: 3% links/rechts eingerückt + weiter nach oben + flacher */
#cta.section { padding-block-start: 28px; }
#cta .cta-dark { margin-inline: 3%; padding-block: 52px; }

/* ============ FOOTER ============ */
.footer { border-top: 1px solid var(--border); padding-block: 56px 32px; margin-top: 40px; }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 40px; }
.footer .brand { margin-bottom: 14px; }
.footer .tagline { color: var(--muted); font-size: 15px; max-width: 280px; }
.footer h5 { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin-bottom: 16px; }
.footer ul li { margin-bottom: 10px; }
.footer ul li a { color: var(--ink); font-size: 15px; }
.footer ul li a:hover { color: var(--accent); }
.footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 16px;
  margin-top: 40px; padding-top: 24px; border-top: 1px solid var(--border); flex-wrap: wrap; }
.footer-bottom, .footer-bottom a { color: var(--muted); font-size: 13px; }
.footer-bottom .legal { display: flex; gap: 18px; }
.trust-badges { display: flex; gap: 18px; flex-wrap: wrap; }
.trust-badges span { display: inline-flex; align-items: center; gap: 6px; }
.trust-badges .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--success); }

/* ============ Scroll reveal (nur als Enhancement, wenn JS aktiv) ============ */
.js .reveal { opacity: 0; transform: translateY(18px); transition: opacity .6s ease, transform .6s ease; }
.js .reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .js .reveal { opacity: 1; transform: none; transition: none; }
  /* "Agent in Aktion": ruhiger, vollständiger Endzustand (Bubbles/Wörter/Rows sind per Default sichtbar) */
  .cap-chat .bubble-typing { display: none; } /* Tipp-Platzhalter im Ruhezustand verbergen */
  .voice-bars i { transform: scaleY(.5); }    /* Wave-Silhouette (Process-Section) */
}

/* ============ VS COMPETITOR ============ */

/* Aurora background atmosphere */
@keyframes aurora-drift {
  0%   { transform: translate(0, 0) scale(1); }
  33%  { transform: translate(-3%, 2%) scale(1.05); }
  66%  { transform: translate(3%, -2%) scale(0.96); }
  100% { transform: translate(0, 0) scale(1); }
}
@keyframes vs-label-flicker {
  0%, 88%  { opacity: 1; }
  90%      { opacity: 0.25; }
  91%      { opacity: 1; }
  93%      { opacity: 0.5; }
  94%      { opacity: 1; }
}
@keyframes vs-dot-pop {
  0%   { transform: scale(0); opacity: 0; }
  60%  { transform: scale(1.3); }
  100% { transform: scale(1); opacity: 1; }
}
@keyframes dot-glow-pulse {
  0%, 100% { box-shadow: 0 0 0 3px rgba(26, 115, 255,0.2), 0 0 10px rgba(26, 115, 255,0.45); }
  50%       { box-shadow: 0 0 0 5px rgba(26, 115, 255,0.12), 0 0 24px rgba(26, 115, 255,0.75); }
}

/* ── Section shell ─────────────────────────────── */
.vs-section {
  /* Oben exakt die Endfarbe des Berg-Bands (#0C1430) → kein Sprung an der Bandkante,
     dann sanft in die neutrale Dunkelheit der Section auslaufen. */
  background: linear-gradient(180deg, #0C1430 0px, #0C1430 320px, hsl(240, 12%, 4%) 760px);
  position: relative;
  overflow: hidden;
  /* Kein harter Scaffold-Strich — der Farbverlauf übernimmt den Übergang */
  border-top: none;
  /* Platz oben für das Verlaufs-Band; Content sitzt knapp unter dem Berg (wenig Leerraum) */
  padding-top: clamp(160px, 18vw, 250px);
}

/* ── Bergförmiger Übergang (SVG) ──
   Helle Integrations-Section oben → Bergkurve → dunkle vs-Section.
   Der SVG-Pfad zeichnet die Bergform exakt; der Lila→Dunkel-Verlauf darunter ist KURZ
   (Verlauf endet schon bei 48 % der Layer-Höhe). Minimaler Blur weicht nur die
   Vektorkante auf, ohne den Übergang in die Länge zu ziehen. */
.vs-transition {
  position: absolute;
  top: -110px;
  /* Box ragt seitlich über die Section hinaus, damit die durch blur() ausgedünnten
     Seitenkanten außerhalb des sichtbaren Bereichs liegen (overflow:hidden schneidet ab).
     Sonst scheint der dunkle Section-Hintergrund durch das ausgedünnte Weiß → dunkle Ränder. */
  left: -80px;
  right: -80px;
  height: clamp(360px, 40vw, 470px);
  z-index: 1;
  pointer-events: none;
}
.vs-transition svg {
  display: block;
  width: 100%;
  height: 100%;
  filter: blur(28px);
}

/* Aurora-Glow — EIN bewusster, weicher Lila-Glow rechts der Mitte (Sonelo-Seite),
   vollständig in der Section (nicht an einer Ecke abgeschnitten → kein „Fleck"-Bug).
   Liegt als eigener Layer über dem gleichmäßig dunklen Hintergrund. */
.vs-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 42% 46% at 68% 52%, rgba(108,80,210,0.20) 0%, transparent 64%);
  filter: blur(50px);
  animation: aurora-drift 60s ease-in-out infinite;
  pointer-events: none;
  z-index: 0;
}

/* Grain overlay */
.vs-section::after {
  content: '';
  position: absolute; inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
  opacity: 0.035;
  pointer-events: none;
  z-index: 1;
}

/* ── Header ─────────────────────────────────────── */
.vs-head { max-width: 640px; position: relative; z-index: 2; }
.vs-head.center { margin-inline: auto; text-align: center; }

.vs-eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 13px; color: rgba(255,255,255,0.45);
  font-weight: 400; letter-spacing: 0.06em; text-transform: uppercase;
}
.vs-eyebrow::before {
  content: ''; width: 6px; height: 6px; border-radius: 50%;
  background: var(--accent); box-shadow: 0 0 0 3px rgba(26, 115, 255,0.2);
}
.vs-headline { color: #fff; margin-top: 16px; }
.vs-lead {
  font-size: 17px; color: rgba(255,255,255,0.45);
  line-height: 1.65; margin-top: 16px;
}

/* ── Column headers ──────────────────────────────── */
.vs-col-headers {
  display: grid;
  grid-template-columns: 1fr 160px 1fr;
  max-width: 820px; margin: 48px auto 0;
  position: relative; z-index: 2;
}
.vsch {
  font-size: 11px; font-weight: 500; letter-spacing: 0.18em;
  text-transform: uppercase; padding-bottom: 20px;
}
.vsch-them {
  color: rgba(255, 120, 110, 0.35);
  text-align: right; padding-right: 32px;
  animation: vs-label-flicker 9s steps(1,end) infinite;
}
.vsch-us {
  background: linear-gradient(135deg, #81B3F8, #8BB9FA);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  text-align: left; padding-left: 32px;
}
.vsch-gap { display: block; }

/* ── Center-axis wrapper ─────────────────────────── */
.vs-axis-wrap {
  position: relative;
  max-width: 820px; margin: 0 auto;
  z-index: 2;
}

/* Animated waveform SVG injected by JS */
.vs-wave-axis {
  position: absolute;
  left: 50%; top: 0; bottom: 0;
  translate: -50% 0;
  width: 80px;
  pointer-events: none;
  z-index: 3;
  opacity: 0.18;
}

/* ── Each comparison row ─────────────────────────── */
.vs-arow {
  display: grid;
  grid-template-columns: 1fr 160px 1fr;
  align-items: center;
  padding: 20px 0;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  position: relative; z-index: 4;
}
.vs-arow:last-child { border-bottom: none; }

/* Directional split reveal — them from left, us from right */
.js .vs-arow .vs-side-them,
.js .vs-arow .vs-center-label,
.js .vs-arow .vs-side-us { opacity: 0; }

.js .vs-arow .vs-side-them {
  transform: translateX(-22px);
  transition: opacity 0.6s cubic-bezier(0.22,1,0.36,1), transform 0.65s cubic-bezier(0.22,1,0.36,1);
  transition-delay: calc(var(--ri, 0) * 85ms + 80ms);
}
.js .vs-arow .vs-center-label {
  transform: scale(0.82);
  transition: opacity 0.5s ease, transform 0.55s cubic-bezier(0.34,1.56,0.64,1);
  transition-delay: calc(var(--ri, 0) * 85ms + 150ms);
}
.js .vs-arow .vs-side-us {
  transform: translateX(22px);
  transition: opacity 0.6s cubic-bezier(0.22,1,0.36,1), transform 0.65s cubic-bezier(0.22,1,0.36,1);
  transition-delay: calc(var(--ri, 0) * 85ms + 80ms);
}
.js .vs-axis-wrap.in .vs-arow .vs-side-them,
.js .vs-axis-wrap.in .vs-arow .vs-center-label,
.js .vs-axis-wrap.in .vs-arow .vs-side-us {
  opacity: 1;
  transform: none;
}

/* ── Side cells ──────────────────────────────────── */
.vs-side {
  display: flex; align-items: center; gap: 12px;
}
.vs-side-them {
  justify-content: flex-end;
  padding-right: 32px;
}
.vs-side-us {
  justify-content: flex-start;
  padding-left: 32px;
}

/* ── X-Marker (Konkurrenz) ───────────────────────── */
.vs-x {
  flex: none;
  font-size: 9px;
  font-weight: 700;
  color: rgba(255, 100, 90, 0.45);
  text-shadow: 0 0 8px rgba(255, 70, 60, 0.35);
  line-height: 1;
  letter-spacing: 0;
  align-self: center;
}

/* ── Dot indicators ──────────────────────────────── */
.vs-dot {
  flex: none; width: 10px; height: 10px; border-radius: 50%;
}
.vsd-absent {
  background: transparent;
  border: 1px solid rgba(255,255,255,0.07);
  opacity: 0.4;
}
.vsd-present {
  background: var(--accent);
  box-shadow: 0 0 0 3px rgba(26, 115, 255,0.2), 0 0 14px rgba(26, 115, 255,0.55);
}

/* Pop-in dann Glow-Pulse */
.js .vs-axis-wrap.in .vsd-present {
  opacity: 0;
  animation:
    vs-dot-pop .4s cubic-bezier(.34,1.56,.64,1) calc(var(--ri, 0) * 90ms + 400ms) forwards,
    dot-glow-pulse 2.6s ease-in-out calc(var(--ri, 0) * 90ms + 900ms) infinite;
}

/* ── Text inside each side ───────────────────────── */
.vs-aval {
  display: block;
  font-size: 14px; font-weight: 500; line-height: 1.3;
}
.vs-aval.them {
  color: rgba(255, 120, 110, 0.5);
  text-align: right;
  font-weight: 400;
  font-style: italic;
}
.vs-aval.us {
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: #fff;
}

.vs-adesc {
  display: block;
  font-size: 12px; line-height: 1.5; margin-top: 3px;
}
.vs-adesc.them { color: rgba(255, 120, 110, 0.25); text-align: right; font-size: 11px; }
.vs-adesc.us   { color: rgba(255,255,255,0.5); }

/* ── Center feature label ────────────────────────── */
.vs-center-label {
  text-align: center;
  font-size: 10px; font-weight: 600;
  letter-spacing: 0.20em; text-transform: uppercase;
  color: rgba(255,255,255,0.38);
  padding: 0 8px;
  position: relative; z-index: 5;
}

/* ── Trust strip ─────────────────────────────────── */
.vs-trust {
  display: flex; align-items: center; gap: 28px;
  flex-wrap: wrap;
  max-width: 820px; margin: 44px auto 0;
  padding: 22px 26px;
  border-top: 1px solid rgba(255,255,255,0.07);
  position: relative; z-index: 2;
}
.vs-quote {
  flex: 1; min-width: 200px;
  border-left: 2px solid rgba(26, 115, 255,0.5);
  padding-left: 14px;
}
.vs-quote p {
  font-size: 13.5px; color: rgba(255,255,255,0.55);
  line-height: 1.6; font-style: italic;
}
.vs-quote cite {
  display: block; margin-top: 5px;
  font-size: 12px; color: rgba(255,255,255,0.25);
  font-style: normal;
}
.vs-trust-pills { display: flex; gap: 8px; flex-wrap: wrap; }
.vs-pill {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11.5px; color: rgba(255,255,255,0.35);
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: var(--r-pill);
  padding: 5px 11px;
}
.vs-pill svg { color: rgba(255,255,255,0.25); flex: none; }

/* ── CTA ─────────────────────────────────────────── */
.vs-cta { text-align: center; margin-top: 44px; position: relative; z-index: 2; }
.vs-btn-cta {
  background: #fff; color: var(--ink);
  padding: 14px 28px; border-radius: var(--r-md);
  font-size: 15px; font-weight: 500;
  box-shadow: 0 4px 20px rgba(0,0,0,0.35);
  transition: transform .15s ease, box-shadow .15s ease;
}
.vs-btn-cta:hover { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(0,0,0,0.45); }
.vs-cta-hint { margin-top: 11px; font-size: 12.5px; color: rgba(255,255,255,0.25); }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .vs-section::before { animation: none; }
  .vsch-them { animation: none; }
  .vsd-present { animation: none; }
  .js .vs-arow .vs-side-them,
  .js .vs-arow .vs-center-label,
  .js .vs-arow .vs-side-us { opacity: 1; transform: none; transition: none; }
  .js .vs-axis-wrap.in .vsd-present { opacity: 1; animation: none; }
}

/* =========================================================
   HERO MOTION — Premium-Lebendigkeit
   Default = ruhig/sichtbar (kein Flash, funktioniert ohne JS).
   Alle Bewegung in @media (prefers-reduced-motion: no-preference) gekapselt.
   GPU-freundlich: nur transform/opacity/box-shadow.
   ========================================================= */

/* Text-Scrim: weicher heller Kern hinter dem Hero-Text → Lesbarkeit über der
   zentralen Wave. Liegt zwischen Wave (z0) und Inhalt (z2). */
.hero::before {
  content: "";
  position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: radial-gradient(ellipse 66% 54% at 50% 50%,
    rgba(255,255,255,0.62), rgba(255,255,255,0.30) 46%, rgba(255,255,255,0) 72%);
}

/* Akzentwort als Violett→Teal-Verlauf (Fallback: Volltonfarbe via .accent) */
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .hero .h-hero .accent {
    /* Palindromischer Verlauf (Anfang = Ende = Violett) → nahtloser Endlos-Loop,
       kein sichtbares Zurückspringen am Animations-Ende. */
    background: linear-gradient(90deg, #1A73FF 0%, #5CA0FF 25%, #22d3ee 50%, #5CA0FF 75%, #1A73FF 100%);
    background-size: 200% auto;
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
  }
}

@keyframes heroIn {
  from { opacity: 0; transform: translateY(20px); filter: blur(6px); }
  to   { opacity: 1; transform: none;             filter: blur(0); }
}
@keyframes drift1 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50%      { transform: translate(40px, 30px) scale(1.08); }
}
@keyframes drift2 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50%      { transform: translate(-36px, 24px) scale(1.06); }
}
@keyframes drift3 {
  0%, 100% { transform: translateX(-50%) translateY(0) scale(1); }
  50%      { transform: translateX(-50%) translateY(-26px) scale(1.05); }
}
@keyframes ctaPulse {
  0%, 100% { box-shadow: 0 6px 18px rgba(26, 115, 255,0.28); }
  50%      { box-shadow: 0 6px 30px rgba(26, 115, 255,0.48); }
}
@keyframes accentShimmer {
  to { background-position: 200% center; }
}

@media (prefers-reduced-motion: no-preference) {
  /* Staggered Entrance der Hero-Inhalte (fade-up + blur-in) */
  .hero-inner > * { opacity: 0; animation: heroIn .8s cubic-bezier(0.22, 1, 0.36, 1) both; }
  .hero-inner > *:nth-child(1) { animation-delay: .05s; }
  .hero-inner > *:nth-child(2) { animation-delay: .14s; }
  .hero-inner > *:nth-child(3) { animation-delay: .23s; }
  .hero-inner > *:nth-child(4) { animation-delay: .34s; }
  .hero-inner > *:nth-child(5) { animation-delay: .45s; }
  .hero-inner > *:nth-child(6) { animation-delay: .56s; }

  /* Driftende Aurora-Blobs → sanft strömendes Hintergrundfeld */
  .hero .blob { will-change: transform; }
  .hero .blob-1 { animation: drift1 26s ease-in-out infinite; }
  .hero .blob-2 { animation: drift2 32s ease-in-out infinite; }
  .hero .blob-3 { animation: drift3 30s ease-in-out infinite; }

  /* Dezenter CTA-Puls am Hero-Call-Button */
  #callBtn { animation: ctaPulse 3.2s ease-in-out infinite; }

  /* Sehr langsamer Shimmer über dem Akzentwort */
  .hero .h-hero .accent { animation: accentShimmer 7s linear infinite; }
}


/* ============ DASHBOARD STAGE (Chat-Panel rechts, nach innen geneigt) ============ */
.dash-stage {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 22px;
  /* Dashboard und Panel liegen nebeneinander, beide vertikal mittig in der Bühne */
  padding: 30px;
}
/* Gemeinsame "Bühne" hinter Dashboard + Chat-Panel: abgerundetes Rechteck,
   dezent violett-grau getönter Verlauf, der sich klar vom Section-Hintergrund abhebt. */
.dash-stage::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(140deg, #71ACFF 0%, #1A73FF 46%, #365684 100%);
  border-radius: 26px;
  z-index: 0;
}
#dashboard .split { align-items: center; }
/* Bühne breiter, Textspalte etwas schmaler — Platz für Dashboard + Panel nebeneinander */
#dashboard .split { grid-template-columns: 0.72fr 1.72fr; }
.dash-stage .dash {
  position: relative;
  z-index: 2;
  flex: 1;
  min-width: 0;
}

/* ============ FEATURE-LIST HIGHLIGHT ============ */
.feature-list .feat-highlight {
  background: var(--accent-soft);
  border: 1px solid rgba(26, 115, 255, 0.18);
  border-radius: var(--r-sm);
  padding: 10px 12px;
  margin-inline: -12px;
}

/* ============ CHAT-PANEL (9:16, Dashboard-/Apple-Stil — Briefing per Messenger) ============ */
.wa-phone {
  /* eigenständiges Element neben dem Dashboard (flex-Item), nicht mehr darüber */
  flex: none;
  align-self: center;
  z-index: 6;
  width: 248px;
  /* feste Höhe (hochkant) -> Panel-Größe ändert sich NICHT mit dem Chat-Inhalt */
  aspect-ratio: 9 / 17;
  display: flex;
  flex-direction: column;
  background: #075e54;
  border-radius: var(--r-lg);
  overflow: hidden;
  font-size: 12px;
  /* echter 3D-Tilt nach innen (zur Seitenmitte), leicht verkleinert (~Dashboard-Höhe) */
  transform: none;
  transform-origin: center left;
  box-shadow: 0 2px 6px rgba(16,18,48,0.06), 0 12px 28px rgba(16,18,48,0.12), 0 28px 54px rgba(16,18,48,0.16);
}
/* WhatsApp-getreuer Header: dunkelgrün, zurück-Pfeil, Avatar, online, Video/Telefon */
.wa-header {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 7px 11px 9px;
  background: #075e54;
  color: #fff;
}
.wa-back {
  color: rgba(255,255,255,0.92);
  flex: none;
  display: grid;
  place-items: center;
  margin-right: -3px;
}
.wa-avatar {
  position: relative;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  display: grid;
  place-items: center;
  font-weight: 600;
  font-size: 14px;
  flex: none;
}
.wa-online-dot {
  position: absolute;
  right: -1px;
  bottom: -1px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #25d366;
  border: 2px solid #075e54;
}
.wa-contact {
  flex: 1;
  min-width: 0;
  line-height: 1.3;
}
.wa-contact strong {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: #fff;
}
.wa-contact span {
  font-size: 10.5px;
  color: rgba(255,255,255,0.78);
}
.wa-actions {
  display: flex;
  align-items: center;
  gap: 15px;
  color: rgba(255,255,255,0.92);
  flex: none;
}
/* Chat-Fläche: WhatsApp-Beige mit dezenter Textur */
.wa-chat {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  padding: 13px 10px 14px;
  display: flex;
  flex-direction: column;
  gap: 9px;
  background-color: #efeae2;
  background-image: radial-gradient(circle, rgba(0,0,0,0.022) 1px, transparent 1.4px);
  background-size: 20px 20px;
}
.wa-day {
  align-self: center;
  font-size: 9px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #54656f;
  background: rgba(255,255,255,0.9);
  border-radius: var(--r-sm);
  padding: 3px 10px;
  box-shadow: 0 1px 1px rgba(0,0,0,0.05);
}
.wa-typing {
  display: none;
  gap: 4px;
  align-items: center;
  align-self: flex-start;
  background: #fff;
  border-radius: 0 8px 8px 8px;
  padding: 9px 12px;
  box-shadow: 0 1px 1px rgba(0,0,0,0.13);
}
.wa-typing.wa-active {
  display: flex;
}
.wa-typing span {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #99a3a8;
  opacity: 0.6;
}
/* eingehende Nachricht: weiße Blase mit scharfer oberer-linker Ecke (WhatsApp-Tail) */
.wa-bubble {
  align-self: flex-start;
  max-width: 92%;
  background: #fff;
  border-radius: 0 8px 8px 8px;
  padding: 7px 9px 15px;
  box-shadow: 0 1px 1px rgba(0,0,0,0.13);
  position: relative;
  line-height: 1.4;
  color: #111b21;
}
.wa-title {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: #075e54;
  margin-bottom: 4px;
}
.wa-bubble p {
  font-size: 11px;
  margin: 0;
}
.wa-list {
  margin: 0;
  padding: 0;
  display: grid;
  gap: 3px;
}
.wa-list li {
  position: relative;
  padding-left: 13px;
  font-size: 11px;
  list-style: none;
  color: #3b4a54;
}
.wa-list li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 6px;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: #25d366;
}
.wa-time {
  position: absolute;
  bottom: 4px;
  right: 9px;
  font-size: 9px;
  color: #667781;
}
/* Eingabeleiste im WhatsApp-Stil: helles Feld + grüner Mic-Button */
.wa-input-bar {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 8px 9px;
  background: #f0f2f5;
}
.wa-field {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 7px;
  background: #fff;
  border-radius: var(--r-pill);
  padding: 7px 12px;
  font-size: 10.5px;
  color: #8696a0;
}
.wa-emoji {
  color: #8696a0;
  flex: none;
}
.wa-send {
  width: 30px;
  height: 30px;
  background: #00a884;
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: #fff;
  flex: none;
}

/* WhatsApp-Bubble-Tails + ausgehende (grüne) Nachricht */
.wa-bubble::before {
  content: ""; position: absolute; top: 0; left: -7px; width: 0; height: 0;
  border-top: 7px solid #fff; border-left: 7px solid transparent;
}
.wa-out {
  align-self: flex-end;
  background: #d9fdd3;
  border-radius: 8px 0 8px 8px;
  color: #111b21;
  font-size: 11px;
  padding: 7px 9px 16px;
  box-shadow: 0 1px 1px rgba(0,0,0,0.13);
  position: relative;
  max-width: 88%;
}
.wa-out::before {
  content: ""; position: absolute; top: 0; left: auto; right: -7px; width: 0; height: 0;
  border-top: 7px solid #d9fdd3; border-right: 7px solid transparent; border-left: 0;
}
.wa-out .wa-time { color: #5b7083; }
.wa-ck { color: #53bdeb; letter-spacing: -2px; margin-left: 3px; font-size: 10px; }

/* WhatsApp-Statusleiste + Verschlüsselungs-Hinweis (Realismus, ohne Geräterahmen) */
.wa-status { display: flex; align-items: center; justify-content: space-between; background: #075e54; color: #fff; padding: 6px 13px 1px; font-size: 11px; }
.wa-clock { font-weight: 600; letter-spacing: .2px; }
.wa-sys { display: flex; align-items: center; gap: 5px; }
.wa-sys svg { display: block; }
.wa-enc { align-self: center; max-width: 92%; text-align: center; font-size: 8.5px; line-height: 1.35; color: #7d6f3a; background: #fcf3d2; border-radius: 6px; padding: 4px 9px; margin-bottom: 2px; }

/* Dashboard-Header-Tools: Benachrichtigungs-Glocke mit Badge */
.dash-tools { display: flex; align-items: center; gap: 13px; }
.dash-bell { position: relative; color: var(--muted); display: grid; place-items: center; }
.dash-bell i { position: absolute; top: 0; right: 0; width: 7px; height: 7px; border-radius: 50%; background: #ff4d4f; border: 1.5px solid #fff; }

/* ============ DASHBOARD + CHAT ANIMATIONEN (dezent, einmalig) ============ */
@keyframes typingDotWa {
  0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }
  30%            { transform: translateY(-5px); opacity: 1; }
}
@keyframes kpiGlow {
  0%   { box-shadow: 0 0 0 0 rgba(26, 115, 255,0); }
  50%  { box-shadow: 0 0 0 6px rgba(26, 115, 255,0.15); }
  100% { box-shadow: 0 0 0 0 rgba(26, 115, 255,0); }
}
@keyframes dotBlink {
  0%, 100% { background: #E4E9F1; }
  50%       { background: var(--accent); }
}

.js .wa-phone {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .55s ease, transform .55s cubic-bezier(.22,.9,.3,1);
}
.js .dash-stage.in .wa-phone {
  opacity: 1;
  transform: translateY(0);
  transition-delay: 0.25s;
}
.js .wa-bubble {
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .4s ease, transform .4s ease;
}
.js .wa-phone.wa-live .wa-bubble {
  opacity: 1;
  transform: none;
  transition-delay: calc(var(--wbi, 0) * 220ms);
}
.js .dash-feed .feed-row {
  opacity: 0;
  transform: translateX(-10px);
  transition: opacity .4s ease, transform .4s ease;
  transition-delay: calc(var(--fi, 0) * 90ms + 600ms);
}
.js .dash-stage.in .dash-feed .feed-row {
  opacity: 1;
  transform: none;
}
@media (prefers-reduced-motion: no-preference) {
  .js .wa-typing.wa-active span:nth-child(1) { animation: typingDotWa 1.2s ease-in-out infinite; }
  .js .wa-typing.wa-active span:nth-child(2) { animation: typingDotWa 1.2s ease-in-out 0.2s infinite; }
  .js .wa-typing.wa-active span:nth-child(3) { animation: typingDotWa 1.2s ease-in-out 0.4s infinite; }
  .js .dash-stage.in .dash-bar .dots i:nth-child(1) { animation: dotBlink .3s ease 0.05s 1 forwards; }
  .js .dash-stage.in .dash-bar .dots i:nth-child(2) { animation: dotBlink .3s ease 0.20s 1 forwards; }
  .js .dash-stage.in .dash-bar .dots i:nth-child(3) { animation: dotBlink .3s ease 0.35s 1 forwards; }
}
@media (prefers-reduced-motion: reduce) {
  .js .wa-phone { opacity: 1 !important; transform: none !important; transition: none !important; }
  .js .wa-bubble { opacity: 1 !important; transform: none !important; transition: none !important; }
  .js .dash-feed .feed-row { opacity: 1 !important; transform: none !important; transition: none !important; }
}
@media (max-width: 1080px) {
  .wa-phone { right: 18px; width: 196px; }
}
@media (max-width: 960px) {
  /* Mobile: Bühne stapelt Dashboard + Panel untereinander, mittig */
  .dash-stage {
    flex-direction: column;
    align-items: center;
    min-height: 0;
    padding: 24px;
  }
  .wa-phone {
    position: static;
    width: 100%;
    max-width: 300px;
    aspect-ratio: auto;
    margin: 22px auto 0;
    transform: none;
  }
  .js .wa-phone { transform: translateY(20px) !important; transition: opacity .5s ease, transform .5s ease !important; }
  .js .dash-stage.in .wa-phone { transform: none !important; opacity: 1 !important; }
}


/* ============ RESPONSIVE ============ */
@media (max-width: 960px) {
  :root { --section-y: 72px; }
  /* minmax(0,1fr) statt 1fr: 1fr == minmax(auto,1fr) → ein nicht-schrumpfbares
     Card-Item (z.B. die nowrap-Flow-Labels in Card 3) bläht die GEMEINSAME Spalte
     über den Viewport → alle Cards rutschen nach rechts raus. minmax(0,…) deckelt
     die Spalte auf Container-Breite. iOS Safari trifft das, DevTools oft nicht. */
  .cards-3 { grid-template-columns: minmax(0, 1fr); }
  .cards-3 .card { min-width: 0; }
  .kpis { grid-template-columns: minmax(0, 1fr); }
  /* "Agent in Aktion" über die VOLLE Viewport-Breite (Container-max-width + auto-Margin
     aufheben), Karten mit 10% Randabstand — gilt für Phone UND Tablet (≤960). */
  #capabilities .container { max-width: none; margin-inline: 0; padding-inline: 10%; }
  /* Bauzeichnungs-Overlay (vertikale Rahmenlinien an der Container-Grenze) auf Mobile
     ausblenden — wirkt auf schmalen Screens wie ein störender Kasten um den Inhalt. */
  #top::before { display: none; }
  /* n8n-Flow (Card 3) kompakter, damit die nicht umbrechenden Node-Labels
     ("Angebot schreiben" …) auf schmalen Screens nicht über die Card-Kante ragen */
  .cap-coord .flow-actions { margin-left: 12px; }
  .cap-coord .node { padding: 7px 9px; gap: 7px; }
  .cap-coord .node-ic { width: 24px; height: 24px; }
  /* Process: kein Pin auf Mobile — Text + zugehöriges Visual abwechselnd, an EINER
     durchgehenden Connector-Line, die hinter den Cards weiterläuft (Timeline als Ganzes) */
  .js .process-pin-track { height: auto; }
  .js .process-pin { position: static; min-height: 0; display: block; }
  .process-pin .process-flow { align-items: stretch; }
  .process-flow {
    display: flex; flex-direction: column; gap: 32px; margin-top: 0;
    position: relative; padding-left: 52px;
  }
  /* Spalten auflösen, damit Schritte und Visuals zu einer Sequenz verschmelzen */
  .process-steps, .process-stage, .proc-stage-inner { display: contents; }
  .proc-stage-bar { display: none; } /* mobil keine Progression — Indikator ausblenden */
  .proc-line { display: none; } /* Desktop-Line aus; Mobile nutzt eigene durchgehende Line */

  /* Durchgehende Timeline-Line — liegt hinter allem; Cards überdecken sie */
  .process-flow::before {
    content: ""; position: absolute; left: 22px; top: 22px; bottom: 0; width: 2px;
    background: linear-gradient(180deg, #1A73FF, #22d3ee);
    border-radius: 2px; z-index: 0;
    -webkit-mask: linear-gradient(180deg, #000 0, #000 70%, transparent 100%);
            mask: linear-gradient(180deg, #000 0, #000 70%, transparent 100%);
  }

  /* Reihenfolge: Text 01 -> Visual 1 -> Text 02 -> Visual 2 -> Text 03 -> Visual 3 */
  .proc-step[data-step="1"]    { order: 1; }
  .proc-visual[data-visual="1"]{ order: 2; }
  .proc-step[data-step="2"]    { order: 3; }
  .proc-visual[data-visual="2"]{ order: 4; }
  .proc-step[data-step="3"]    { order: 5; }
  .proc-visual[data-visual="3"]{ order: 6; }

  /* Schritt-Text: eingerückt, Node sitzt auf der Line */
  .proc-step { padding: 0; position: relative; z-index: 1; }
  .proc-node {
    left: -52px; top: 0; width: 46px; height: 46px; z-index: 2;
    border-color: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft);
  }
  .proc-num { font-size: 15px; color: var(--accent); }
  .proc-step.is-active .proc-node { transform: none; box-shadow: 0 0 0 4px var(--accent-soft); }
  .js .proc-content { opacity: 1; } /* mobil kein Dimmen — alle Schritte voll lesbar */

  /* Visual-Card: volle Breite, überdeckt die Line (Line läuft dahinter weiter) */
  .proc-stage-inner { min-height: 0; }
  .proc-visual {
    position: static; opacity: 1; visibility: visible; transform: none;
    margin: 0; margin-left: -52px; z-index: 1;
  }
  .proc-visual::before { display: none; } /* mobil keinen Gradient-Rahmen auf der aktiven Card */
  .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bc-track .branche-card { flex-basis: calc((100% - 24px) / 2); } /* 2 sichtbar */
  .split { grid-template-columns: minmax(0, 1fr); gap: 36px; }
  /* Pro/Contra bleibt auch mobil nebeneinander (them links · Label · us rechts).
     min-width:0 verhindert, dass lange Wörter die 1fr-Spalten über den Viewport
     drücken und das Grid umbricht. */
  .vs-col-headers { grid-template-columns: 1fr 80px 1fr; }
  .vs-arow { grid-template-columns: 1fr 80px 1fr; }
  .vs-center-label { font-size: 9px; letter-spacing: 0.1em; }
  .vs-side { min-width: 0; }
  .vs-side-them { padding-right: 12px; }
  .vs-side-us { padding-left: 12px; }
  .vsch-them { padding-right: 12px; }
  .vsch-us { padding-left: 12px; }
  .vs-aval, .vs-adesc { overflow-wrap: anywhere; }
  .vs-aval.us { font-size: 16px; }
  .vs-trust { flex-direction: column; gap: 16px; }
  .vs-trust-pills { justify-content: center; }
  .nav-toggle { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--border); border-radius: var(--r-sm); }
  /* Mobile-Dropdown: per Default verborgen, öffnet via .nav-open (JS) */
  .nav-links {
    display: flex;
    position: absolute; top: 72px; left: 0; right: 0;
    flex-direction: column; align-items: stretch; gap: 2px;
    background: rgba(255,255,255,0.98); backdrop-filter: saturate(180%) blur(12px);
    padding: 10px 24px 16px;
    border-bottom: 1px solid var(--border); box-shadow: var(--shadow-sm);
    opacity: 0; visibility: hidden; transform: translateY(-8px);
    transition: opacity .2s ease, transform .2s ease, visibility .2s ease;
  }
  .nav.nav-open .nav-links { opacity: 1; visibility: visible; transform: none; }
  .nav-links a { display: block; padding: 12px 4px; font-size: 16px; border-bottom: 1px solid var(--scaffold-line); }
  .nav-links a:last-child { border-bottom: none; }
  /* Mobile-Footer: drei Spalten in einer Linie — Brand | Produkt | Unternehmen */
  .footer-grid { grid-template-columns: 1.6fr 1fr 1fr; gap: 20px; }
  .footer .tagline { max-width: none; font-size: 14px; }
  .footer-bottom { flex-direction: column; align-items: flex-start; gap: 12px; text-align: left; }
  .footer-bottom .legal { flex-wrap: wrap; }
}
@media (max-width: 560px) {
  .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hero-actions .btn { width: 100%; }
  .bc-track .branche-card { flex-basis: 100%; aspect-ratio: 4 / 5; } /* 1 sichtbar */
  .bc-prev { left: 6px; }
  .bc-next { right: 6px; }
  .why-stats { grid-template-columns: 1fr; }
  .why-stat + .why-stat { border-left: none; border-top: 1px solid var(--border); }
}

/* Sehr schmale Screens: Footer-Brand voll, darunter Produkt | Unternehmen */
@media (max-width: 400px) {
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 24px 20px; }
  .footer-grid > div:first-child { grid-column: 1 / -1; }
  .footer .tagline { font-size: 15px; }
}

/* ============ INTEGRATIONS ============ */
.integrations { background: var(--bg); }

.intg-stage {
  position: relative;
  max-width: 920px;
  margin: 56px auto 0;
  height: 380px;
}

/* Connection-Beams — preserveAspectRatio:none → SVG-Koords entsprechen %-Positionen der Kacheln */
.beams { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; z-index: 1; }
.beams .wire { stroke: rgba(26, 115, 255, 0.30); stroke-width: 1.6; stroke-dasharray: 1.5 6; stroke-linecap: round; }
.beams .spark {
  stroke: url(#beamGrad); stroke-width: 2.6;
  stroke-dasharray: 54 600;
  opacity: 0;
}
@media (prefers-reduced-motion: no-preference) {
  .js .intg-stage.in .beams .spark { opacity: 1; animation: intgFlow 1.25s linear var(--d, 0s) infinite; }
}
@keyframes intgFlow { to { stroke-dashoffset: -654; } }

/* Hub */
.intg-hub {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  z-index: 3; width: 84px; height: 84px; display: grid; place-items: center;
}
.intg-hub-mark {
  position: relative; z-index: 2;
  width: 64px; height: 64px; border-radius: var(--r-lg);
  display: block; object-fit: contain;
  box-shadow: 0 10px 30px rgba(26, 115, 255, 0.32);
}
.intg-hub-glow {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: 150px; height: 150px; border-radius: 50%;
  background: conic-gradient(from 0deg, transparent 0 280deg, rgba(26, 115, 255, 0.5) 340deg, transparent 360deg);
  -webkit-mask: radial-gradient(circle, #000 0 38%, transparent 70%);
          mask: radial-gradient(circle, #000 0 38%, transparent 70%);
  filter: blur(6px);
  animation: intgSpin 6s linear infinite;
}
@keyframes intgSpin { to { transform: translate(-50%, -50%) rotate(360deg); } }

/* Logo-Kacheln */
.intg-logos { position: absolute; inset: 0; z-index: 2; }
.intg-logo {
  position: absolute; transform: translate(-50%, -50%);
  width: 62px; height: 62px; display: grid; place-items: center;
  background: var(--surface); border: 1px solid rgba(15, 15, 22, 0.06); border-radius: 14px;
  box-shadow: 0 4px 14px rgba(26, 115, 255, 0.06);
  transition: transform .2s ease, box-shadow .2s ease;
}
.intg-logo svg { width: 26px; height: 26px; fill: var(--bc); filter: grayscale(1) opacity(.55); transition: filter .2s ease; }
.intg-logo:hover { transform: translate(-50%, -50%) translateY(-3px); box-shadow: var(--shadow-pop); }
.intg-logo:hover svg { filter: none; }
.intg-logo:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

/* Positionen — gespiegelt zur SVG-viewBox 900×380 */
.pos-l1 { left: 10%; top: 14.5%; }
.pos-l2 { left: 10%; top: 39%; }
.pos-l3 { left: 10%; top: 61%; }
.pos-l4 { left: 10%; top: 85.5%; }
.pos-r1 { left: 90%; top: 14.5%; }
.pos-r2 { left: 90%; top: 39%; }
.pos-r3 { left: 90%; top: 61%; }
.pos-r4 { left: 90%; top: 85.5%; }

.intg-foot { text-align: center; color: var(--muted); font-size: 15px; margin-top: 40px; }

/* visuell versteckt, für Screenreader sichtbar */
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* Mobile: das Beam-Layout weicht dem Orbit (siehe ORBIT-Block weiter unten).
   Hier nur dem Text links/rechts etwas mehr Luft geben. */
@media (max-width: 700px) {
  .integrations .section-head { padding-inline: 16px; }
  .integrations .intg-foot { padding-inline: 16px; }
}

/* Reduced motion: keine wandernden Funken / rotierender Glow */
@media (prefers-reduced-motion: reduce) {
  .beams .spark { animation: none; opacity: 0; }
  .intg-hub-glow { animation: none; }
}

/* ============ INTEGRATIONS FLUID ============ */
.integrations { position: relative; overflow: hidden; }
.integrations .container { position: relative; z-index: 2; }

/* driftende Hintergrund-Blobs (wie Hero/CTA) für fluiden, atmenden Untergrund */
.intg-blob { position: absolute; border-radius: 50%; filter: blur(72px); opacity: .38; pointer-events: none; z-index: 0; }
.intg-blob-1 { width: 380px; height: 380px; top: -70px; left: 6%;
  background: radial-gradient(circle at 30% 30%, #6EAAFE, #1A73FF 55%, transparent 72%);
  animation: drift1 28s ease-in-out infinite; }
.intg-blob-2 { width: 340px; height: 340px; bottom: -90px; right: 5%;
  background: radial-gradient(circle at 60% 40%, #7de2d1, #6EAAFE 55%, transparent 72%);
  animation: drift2 34s ease-in-out infinite; }

/* sanft schwebende Logo-Kacheln — versetzte Dauern/Delays, nie im Gleichschritt */
.intg-logo { will-change: transform; }
.js .intg-stage .intg-logo { opacity: 0; }
@keyframes intgPop {
  0%   { opacity: 0; transform: translate(-50%, -50%) scale(.2); }
  60%  { opacity: 1; transform: translate(-50%, -50%) scale(1.12); }
  100% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
@media (prefers-reduced-motion: no-preference) {
  /* Node ploppt am Ende der jeweiligen Linie (Delay = spark --d + Laufzeit) */
  .js .intg-stage.in .intg-logo { animation: intgPop .42s cubic-bezier(.34,1.56,.64,1) both; }
  .js .intg-stage.in .intg-logo:nth-child(1) { animation-delay: .5s; }
  .js .intg-stage.in .intg-logo:nth-child(2) { animation-delay: 1.1s; }
  .js .intg-stage.in .intg-logo:nth-child(3) { animation-delay: .8s; }
  .js .intg-stage.in .intg-logo:nth-child(4) { animation-delay: 1.4s; }
  .js .intg-stage.in .intg-logo:nth-child(5) { animation-delay: .95s; }
  .js .intg-stage.in .intg-logo:nth-child(6) { animation-delay: 1.6s; }
  .js .intg-stage.in .intg-logo:nth-child(7) { animation-delay: 1.25s; }
  .js .intg-stage.in .intg-logo:nth-child(8) { animation-delay: .65s; }
}
@media (prefers-reduced-motion: reduce) { .js .intg-stage .intg-logo { opacity: 1; } }
@keyframes intgFloat {
  0%, 100% { transform: translate(-50%, -50%) translateY(0); }
  50%      { transform: translate(-50%, -50%) translateY(-8px); }
}
/* Hover: kein transform-Sprung (Schweben läuft weiter), nur Glow + Farbe */
.intg-logo:hover { box-shadow: var(--shadow-pop); border-color: rgba(26, 115, 255, .4); }

/* atmender Hub + nach außen laufende Wellen-Ringe */
.intg-hub-mark { animation: intgBreath 4.2s ease-in-out infinite; }
@keyframes intgBreath {
  0%, 100% { transform: scale(1);    box-shadow: 0 10px 30px rgba(26, 115, 255, .32); }
  50%      { transform: scale(1.05); box-shadow: 0 16px 42px rgba(26, 115, 255, .5); }
}
.intg-hub-ring {
  position: absolute; left: 50%; top: 50%; width: 64px; height: 64px;
  margin: -32px 0 0 -32px; border-radius: var(--r-lg);
  border: 1.5px solid rgba(26, 115, 255, .45); z-index: 1;
  animation: intgRipple 3.6s ease-out infinite;
}
@keyframes intgRipple {
  0%   { transform: scale(.65); opacity: .55; }
  100% { transform: scale(2.3); opacity: 0; }
}

/* leicht versetzte Beam-Tempi → organischer, asynchroner Fluss */
.beams .spark:nth-child(odd)  { animation-duration: 3.1s; }
.beams .spark:nth-child(even) { animation-duration: 4.3s; }

@media (max-width: 700px) {
  .intg-blob { opacity: .26; }
}

/* ============ INTEGRATIONS ORBIT (Mobile) ============ */
/* Auf Mobile kreisen die Tool-Logos in einem Orbit um das mittige S-Logo.
   Technik: der Ring-Container (.intg-logos) dreht sich, jede Kachel dreht mit
   gleicher Dauer GEGEN den Ring → die Icons bleiben aufrecht, während sie
   um den Hub wandern. Platzierung der Kacheln per top/left-Offset (nicht via
   transform), damit transform frei für die Gegen-Rotation bleibt.
   Dieser Block steht bewusst NACH der intgPop-Definition, um sie zu überschreiben. */
@keyframes intgOrbit        { to { transform: rotate(360deg); } }
@keyframes intgOrbitCounter { to { transform: rotate(-360deg); } }

@media (max-width: 700px) {
  /* Bühne quadratisch → Kreis passt sauber rein; Beams raus */
  .intg-stage { height: 360px; max-width: 360px; }
  .integrations .beams { display: none; }

  /* Hub mittig (wie Desktop), Ring füllt die Bühne, Drehzentrum = Mitte */
  .intg-logos { --r: 128px; position: absolute; inset: 0; transform-origin: 50% 50%; }
  @media (prefers-reduced-motion: no-preference) {
    .js .intg-stage.in .intg-logos { animation: intgOrbit 46s linear infinite; }
  }

  /* Kachel: per margin zentriert, Offset über top/left, Größe kompakt */
  .js .intg-stage .intg-logo,
  .js .intg-stage.in .intg-logo {
    opacity: 1;
    width: 50px; height: 50px; margin: -25px 0 0 -25px;
    transform: none; animation: none;
  }
  @media (prefers-reduced-motion: no-preference) {
    .js .intg-stage.in .intg-logo {
      animation: intgOrbitCounter 46s linear infinite;
    }
  }
  .intg-logo svg { width: 22px; height: 22px; }

  /* 8 Slots im 45°-Raster auf dem Kreis (X=r·sinθ, Y=-r·cosθ) */
  .pos-l1 { left: 50%;                          top: calc(50% - var(--r)); }
  .pos-l2 { left: calc(50% + var(--r) * .7071); top: calc(50% - var(--r) * .7071); }
  .pos-l3 { left: calc(50% + var(--r));         top: 50%; }
  .pos-l4 { left: calc(50% + var(--r) * .7071); top: calc(50% + var(--r) * .7071); }
  .pos-r1 { left: 50%;                          top: calc(50% + var(--r)); }
  .pos-r2 { left: calc(50% - var(--r) * .7071); top: calc(50% + var(--r) * .7071); }
  .pos-r3 { left: calc(50% - var(--r));         top: 50%; }
  .pos-r4 { left: calc(50% - var(--r) * .7071); top: calc(50% - var(--r) * .7071); }

  /* Hover soll die Platzierung nicht zerschießen (Touch ohnehin selten) */
  .intg-logo:hover { transform: none; }
}

/* schmale Phones: kleinerer Radius + Kacheln, damit nichts über den Rand ragt */
@media (max-width: 560px) {
  .intg-stage { height: 320px; max-width: 320px; }
  .intg-logos { --r: 112px; }
  .js .intg-stage .intg-logo,
  .js .intg-stage.in .intg-logo { width: 44px; height: 44px; margin: -22px 0 0 -22px; }
  .intg-logo svg { width: 19px; height: 19px; }
}

/* Reduced motion (nur Mobile): statischer Ring, keine Drehung.
   Bewusst auf max-width gescoped, damit der Desktop seine translate-Zentrierung behält. */
@media (max-width: 700px) and (prefers-reduced-motion: reduce) {
  .intg-logos { animation: none; }
  .js .intg-stage .intg-logo,
  .js .intg-stage.in .intg-logo { animation: none; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .intg-blob, .intg-logo, .intg-hub-mark, .intg-hub-ring { animation: none; }
  .intg-hub-ring { opacity: 0; }
}

/* ============ INTEGRATIONS TRANSITION ============ */
/* Blobs duerfen jetzt ueber die Section-Grenzen wirken; der maskierte Layer
   verschmilzt oben mit dem hellen Dashboard und fadet unten vor der dunklen
   VS-Section weich aus — kein harter Cut mehr. */
.integrations { overflow: visible; }
.intg-bg {
  position: absolute; left: 0; right: 0; top: -150px; bottom: 0;
  z-index: 0; overflow: hidden; pointer-events: none;
  -webkit-mask: linear-gradient(to bottom, transparent 0, #000 130px, #000 calc(100% - 70px), transparent 100%);
          mask: linear-gradient(to bottom, transparent 0, #000 130px, #000 calc(100% - 70px), transparent 100%);
}
.intg-blob-1 { top: 24px; left: 4%; bottom: auto; }
.intg-blob-2 { bottom: 20px; right: 5%; top: auto; }

@media (max-width: 700px) {
  .intg-bg { top: 0; }   /* auf Mobile kein Ueberlauf in die Dashboard-Section */
}
@media (prefers-reduced-motion: reduce) {
  .intg-blob { animation: none; }
}

/* ============ INTEGRATIONS EDGE ============ */
/* Kein Glow scheint nach oben in die Dashboard-Section: Layer bleibt in der
   Section, oberer Blob weit genug nach unten, Oberkante sauber geclippt. */
.integrations { overflow: hidden; }
.intg-bg { top: 0; bottom: 0; }
.intg-blob-1 { top: 120px; left: 4%; bottom: auto; }

/* Blob-Glow global dezenter (vorher .38) */
.integrations .intg-blob { opacity: .24; }


/* =========================================================
   MOBILE RESPONSIVE PASS — konsolidierte Ergänzungen
   Bestehende Breakpoints bleiben Spine (1080/960 = Tablet-Stack,
   560 = Phone). Zusätzlich: 768 für den VS-Umbau, 560 fürs Feintuning
   von Spacing, Typo & Touch-Targets. Desktop bleibt unberührt.
   ========================================================= */

/* ---- Tablet-Feinschliff (≤768) ---- */
@media (max-width: 768px) {
  /* Hero-Deko-Blobs zähmen: kleiner & dezenter, kein Overflow/Übersättigung */
  .blob-1, .blob-2 { width: 280px; height: 280px; opacity: .4; }
  .blob-3 { opacity: .5; }
  .hero { min-height: auto; padding-top: 40px; padding-bottom: 56px; }
  .trust { margin-top: 44px; }

  /* "Agent in Aktion": Karten nutzen die volle Breite — der 5%-Randabstand kommt
     allein vom #capabilities-Container (kein zusätzliches Einrücken mehr). */
  .caps-stage .cards-3 { padding-inline: 0; }
}

/* ---- VS-Vergleich: 3-Spalten-Grid → gestapelte Karten (≤768) ----
   Statt zwei gequetschter Textspalten links/rechts einer schmalen Mitte:
   Kategorie oben, „Andere" und „Sonelo" sauber untereinander, links-bündig. */
@media (max-width: 768px) {
  .vs-section { padding-top: clamp(110px, 22vw, 180px); }
  /* Pro/Contra bleibt nebeneinander wie auf dem Desktop (them links · Kategorie · us rechts),
     nur kompakt zusammengezogen, damit es auch auf schmalen Phones nebeneinander passt.
     min-width:0 + overflow-wrap verhindern, dass lange Wörter die Spalten sprengen. */
  .vs-col-headers { display: none; }            /* globale Spaltenköpfe entfallen — Kategorie steht je Zeile oben */
  .vs-wave-axis { display: none; }              /* Mittel-Waveform nur im 3-Spalten-Layout sinnvoll */

  /* Je Vergleich: Kategorie als Überschrift OBEN (übersteht links), darunter eingerückt
     „Andere" (them) und „Sonelo" (us) nebeneinander. them/us teilen sich die volle Breite
     → keine gequetschte Mitte, keine überlappenden Texte. */
  .vs-arow {
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "label label"
      "them  us";
    column-gap: 14px;
    row-gap: 10px;
    padding: 18px 0;
    align-items: start;
  }
  .vs-center-label {
    grid-area: label;
    justify-self: center;
    text-align: center;
    padding: 0;
    font-size: 11px; letter-spacing: 0.16em;
    color: rgba(255,255,255,0.55);
  }
  .vs-side { min-width: 0; }
  .vs-side-them {
    grid-area: them;
    justify-content: flex-start;
    padding-left: 16px;
    gap: 8px;
  }
  .vs-side-us {
    grid-area: us;
    justify-content: flex-start;
    padding-left: 16px;
    gap: 8px;
  }
  .vs-aval { font-size: 13px; }
  .vs-aval.us { font-size: 14px; }
  .vs-adesc { font-size: 11px; }
  /* them steht jetzt in eigener Spalte → linksbündig statt zur Mitte */
  .vs-aval.them, .vs-adesc.them { text-align: left; }
  .vs-aval, .vs-adesc { overflow-wrap: anywhere; }
  /* Reveal: them von links, us von rechts */
  .js .vs-arow .vs-side-them { transform: translateX(-16px); }
  .js .vs-arow .vs-side-us { transform: translateX(16px); }
  .vs-trust { gap: 18px; padding: 20px 0; }
}

/* ---- Dashboard: auf Mobile Text 50% (lesbar) | Visual rechts angeschnitten ----
   Die Stage bleibt groß und ragt rechts aus dem Viewport (overflow-x:clip schneidet
   sauber ab) → man sieht nur die linke Hälfte und erahnt das Dashboard. */
@media (max-width: 960px) {
  #dashboard .split {
    grid-template-columns: 50% 50%;
    column-gap: 24px;                 /* mehr Luft zwischen Text und Dashboard */
    align-items: center;              /* Text mittig zum kombinierten Block (Dashboard + Phone) */
  }
  /* Text weiter vom linken Rand wegrücken */
  #dashboard .split > div:first-child { padding-left: 14px; }
  /* Dashboard als Fläche (rechts angeschnitten); WhatsApp schwebt als Layer davor.
     Extra padding-bottom = Raum für die nach unten verschobene Phone → der Stage-Block
     umfasst Dashboard + Phone, damit der Text sauber dazu zentriert. */
  #dashboard .dash-stage {
    display: block;
    position: relative;
    padding: 22px 22px 72px;
    width: 420px;                     /* breiter als die 50%-Spalte → Anschnitt rechts */
    min-height: 0;
  }
  /* Dashboard tritt leicht unscharf zurück, damit sich das Phone abhebt */
  #dashboard .dash-stage .dash { width: 360px; }
  #dashboard .wa-phone {
    position: absolute;
    left: 22px; bottom: 14px;        /* linke Kante bündig mit Dashboard-Kante (Stage-Padding) */
    width: 250px; max-width: none;
    aspect-ratio: 9 / 17;
    margin: 0; z-index: 6;
    background: #075e54;
    /* Drop-Shadow nach oben (Richtung Dashboard), dezenter & weniger ausgebreitet */
    box-shadow: 0 -13px 28px rgba(0, 0, 0, 0.28), 0 -4px 10px rgba(0, 0, 0, 0.18);
  }
}

/* ---- Phone-Feintuning (≤560) ---- */
@media (max-width: 560px) {
  :root { --section-y: 52px; }
  .container { padding-inline: 13px; }

  /* Typo eine Stufe kleiner — die Desktop-clamp-Minima (40/30px) wirken auf dem
     Phone gestretched. Greift global in allen Sections. */
  .h-hero { font-size: clamp(30px, 8.4vw, 37px); }
  .h-section { font-size: clamp(24px, 7vw, 29px); }
  .lead { font-size: 16px; line-height: 1.55; }
  .h-card { font-size: 18px; }
  .eyebrow { font-size: 13px; }

  .section-head p { margin-top: 12px; }

  /* ---- "Agent in Aktion": Karten kompakter (kein erzwungenes min-height) UND
     breiter (weniger Polster) — wir haben wenig Platz, also dürfen die Boxen breit
     sein. Koordinator-Flow zusätzlich kompakter, damit die Nodes garantiert in der
     Card bleiben statt rechts übers Bild hinauszuragen. */
  .cards-3 { margin-top: 30px; gap: 18px; }
  .cards-3 .card { padding: 20px 12px; }
  .card .ico-lg { width: 40px; height: 40px; margin-bottom: 14px; }
  .card p { font-size: 14px; }
  .cap-viz { min-height: 0; margin-top: 13px; padding: 10px; }
  /* Chat-Mockup randlos und KOMPLETT sichtbar (kein max-height/Cut) — durch die
     breiteren Cards brauchen die Bubbles weniger Zeilen, der ganze Chat passt. */
  .cap-chat { padding: 0; }
  /* Voice-Card (Telefon): Orb + Transcript kleiner */
  .cap-call .ios-orb { width: 54px; height: 54px; }
  .cap-call .ios-orb::before { width: 80px; height: 80px; }
  .cap-call .ios-blob { width: 50px; height: 50px; }
  .cap-call .ios-orb-ring { width: 50px; height: 50px; }
  .cap-call .ios-name { font-size: 16px; }
  .cap-call .ios-sub { font-size: 11px; }
  .cap-call .ios-caption { margin: 10px 0 2px; padding: 7px 10px; }
  /* Planer-Card (n8n-Flow): noch kompakter */
  .cap-coord .flow { min-height: 104px; }
  .cap-coord .flow-actions { margin-left: 7px; }
  .cap-coord .node { padding: 5px 7px; gap: 5px; }
  .cap-coord .node-ic { width: 20px; height: 20px; }
  .cap-coord .node-ic svg { width: 12px; height: 12px; }
  .cap-coord .node-tx b { font-size: 10.5px; }

  /* ---- Dashboard: Desktop-Look (Browser im Querformat) klein skaliert, WhatsApp
     schräg rechts davor — NICHT untereinander. Text bleibt darüber (split 1 Spalte).
     transform:scale zeigt das echte PC-Arrangement in Mini; feste Bühnenhöhe +
     overflow:hidden geben den sauberen lila Rahmen. #dashboard-Spezifität schlägt
     den 960er-Tablet-Block. */
  #dashboard .split { grid-template-columns: 1fr; column-gap: 0; gap: 22px; }
  #dashboard .split > div:first-child { padding-left: 0; }
  #dashboard .dash-stage {
    display: block; position: relative;
    width: 100%; height: 392px;
    padding: 0; overflow: hidden;
  }
  /* KPIs wieder einreihig → Dashboard wirkt querformat wie auf dem PC */
  #dashboard .kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  /* Dashboard füllt den lila Gradient fast komplett (nur dünner Rand sichtbar),
     läuft unten weich aus dem Rahmen */
  #dashboard .dash-stage .dash {
    position: absolute; top: 15px; left: 16px;
    width: 360px; max-width: none;
    transform: scale(0.88); transform-origin: top left;
    /* kräftiger Schatten gegen den lila Gradient → Dashboard hebt sich realistisch ab */
    box-shadow: 0 8px 22px rgba(12,14,38,0.30), 0 22px 50px rgba(12,14,38,0.32);
  }
  /* Phone bei Desktop-Breite gerendert + runterskaliert → ECHTE WhatsApp-Proportionen.
     Deutlich größer (~⅓ des Dashboards), liegt klar VOR dem Dashboard. */
  #dashboard .wa-phone {
    position: absolute; right: 10px; bottom: 12px; left: auto; top: auto;
    width: 230px; max-width: none; aspect-ratio: 9 / 17;
    margin: 0; z-index: 6;
    transform: scale(0.6) rotate(2deg); transform-origin: bottom right;
    box-shadow: -32px 32px 66px rgba(0,0,0,0.44), 0 12px 30px rgba(0,0,0,0.24);
  }
  /* überschreibt die !important-Reveal-Transforms aus dem 960er-Block — sonst würde
     das Phone unskaliert (= zu groß) dargestellt; Einblendung läuft weiter über opacity */
  .js #dashboard .wa-phone,
  .js #dashboard .dash-stage.in .wa-phone {
    transform: scale(0.6) rotate(2deg) !important;
  }

  /* Dunkle CTA: weniger Polster, kleinere Rundung */
  .cta-dark { padding: 48px 22px; border-radius: 20px; }

  /* FAQ-Fragen: etwas kompakter, Touch-Target bleibt > 44px */
  .faq-q { font-size: 16px; padding: 18px 2px; gap: 14px; }

  /* Branchen-Carousel-Pfeile innerhalb des Viewports halten */
  .bc-arrow { width: 38px; height: 38px; }
}

/* =====================================================================
   v5 OVERRIDES — based on website/ with the requested changes
   (appended last so these win over the base rules)
   ===================================================================== */

/* 1 · Remove the scaffold grid: vertical side lines + section divider lines */
#top::before { display: none !important; }
.section { border-top: none !important; }

/* 2 · Buttons & cards: drop the colored ring/edge → clean v2-style tiles */
#callBtn { animation: none !important; }
.btn-accent { box-shadow: 0 8px 22px -8px rgba(26,115,255,.55) !important; }
.btn-accent:hover { box-shadow: 0 14px 30px -10px rgba(26,115,255,.65) !important; }
.js .cards-3 .card.is-active::after { display: none !important; }      /* gradient energy edge */
.js .cards-3 .card.is-active { border-color: #d7e0ee !important; }      /* neutral, not accent */
.proc-visual::before, .proc-visual.is-active::before { display: none !important; } /* gradient border */

/* 3 · Capabilities: icon BESIDE the headline (v2 tile layout) */
.cap-head { display: flex; align-items: center; gap: 14px; margin-bottom: 12px; }
.cap-head .ico-lg { margin-bottom: 0; }
.cap-head .h-card { margin-bottom: 0; }

/* 4 · Dashboard: no gradient box → colored drop-shadow + overlapping visuals (v2) */
#dashboard .split { grid-template-columns: 0.85fr 1.15fr !important; }
.dash-stage { display: block !important; position: relative; padding: 0 !important; }
.dash-stage::before { display: none !important; }                       /* the gradient box */
.dash-stage .dash {
  position: relative; z-index: 2; flex: none;
  box-shadow:
    0 2px 6px rgba(28,28,64,.06),
    0 18px 36px -12px rgba(28,28,64,.18),
    0 34px 64px -22px rgba(26,115,255,.42) !important;                   /* colored drop-shadow */
}
.dash-stage .wa-phone {
  position: absolute; right: -14px; bottom: -34px; z-index: 6;
  width: 196px; aspect-ratio: 9 / 17;
  border-radius: var(--r-lg);
  box-shadow: 0 18px 44px -12px rgba(16,18,48,.42), 0 0 0 7px rgba(255,255,255,.9);
}
@media (max-width: 960px) {
  .dash-stage .wa-phone {
    position: static; right: auto; bottom: auto; width: 100%; max-width: 300px;
    aspect-ratio: auto; margin: 22px auto 0;
    box-shadow: 0 12px 28px rgba(16,18,48,.16);
  }
}

/* 5 · Warum Sonelo: box every point (v2) + remove the center waveform "Blitz" */
.vs-wave-axis { display: none !important; }
.vs-col-headers { grid-template-columns: 1fr 160px 1fr; gap: 12px; }
.vs-arow {
  grid-template-columns: 1fr 160px 1fr;
  gap: 12px;
  border-bottom: none;
  padding: 8px 0;
}
.vs-side-them, .vs-side-us {
  border-radius: 12px;
  padding: 15px 17px;
  align-items: flex-start;
}
.vs-side-them {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  justify-content: flex-end;
}
.vs-side-us {
  background: rgba(26,115,255,.12);
  border: 1px solid rgba(26,115,255,.30);
  justify-content: flex-start;
}
@media (max-width: 960px) {
  .vs-col-headers { grid-template-columns: 1fr 76px 1fr; gap: 8px; }
  .vs-arow { grid-template-columns: 1fr 76px 1fr; gap: 8px; }
  .vs-side-them, .vs-side-us { padding: 12px 13px; }
}

/* 6 · Bolder, more characterful headlines */
.h-section, .vs-headline { font-weight: 700 !important; letter-spacing: -0.03em; }
.h-section { font-size: clamp(32px, 4.4vw, 46px); line-height: 1.06; }
.h-hero { font-weight: 700; letter-spacing: -0.035em; }
.section-head .h-section { margin-top: 16px; }
.h-section .accent { font-weight: 700; }
